diff --git a/packages/web/src/elements/TableControl.svelte b/packages/web/src/elements/TableControl.svelte
index f46e3f919..a9691fc5a 100644
--- a/packages/web/src/elements/TableControl.svelte
+++ b/packages/web/src/elements/TableControl.svelte
@@ -14,6 +14,7 @@
import { compact } from 'lodash';
import { onMount } from 'svelte';
+ import keycodes from '../utility/keycodes';
export let columns: TableControlColumn[];
export let rows;
@@ -21,16 +22,31 @@
export let selectable = false;
export let selectedIndex = 0;
- $: columnList = _.compact(_.flatten(columns));
+ export let domTable;
- let domTable;
+ $: columnList = _.compact(_.flatten(columns));
onMount(() => {
if (focusOnCreate) domTable.focus();
});
+
+ const handleKeyDown = event => {
+ if (event.keyCode == keycodes.downArrow) {
+ selectedIndex = Math.min(selectedIndex + 1, rows.length - 1);
+ }
+ if (event.keyCode == keycodes.upArrow) {
+ selectedIndex = Math.max(0, selectedIndex - 1);
+ }
+ };
-
+
{#each columnList as col}
diff --git a/packages/web/src/forms/TextField.svelte b/packages/web/src/forms/TextField.svelte
index 86e15492e..ac6e51e25 100644
--- a/packages/web/src/forms/TextField.svelte
+++ b/packages/web/src/forms/TextField.svelte
@@ -3,10 +3,9 @@
export let value;
export let focused;
-
- let domEditor;
+ export let domEditor;
if (focused) onMount(() => domEditor.focus());
-
+
diff --git a/packages/web/src/modals/InsertJoinModal.svelte b/packages/web/src/modals/InsertJoinModal.svelte
new file mode 100644
index 000000000..465b67fb1
--- /dev/null
+++ b/packages/web/src/modals/InsertJoinModal.svelte
@@ -0,0 +1,187 @@
+
+
+
+ Insert join
+
+
+
+
+
+
+
+
Join
+
+
({ name }))}
+ bind:selectedIndex={joinIndex}
+ bind:domTable={domJoin}
+ selectable
+ on:keydown={joinKeyDown}
+ columns={[{ fieldName: 'name', header: 'Join type' }]}
+ />
+
+ Alias
+ {
+ // @ts-ignore
+ alias = e.target.value;
+ }}
+ bind:domEditor={domAlias}
+ on:keydown={aliasKeyDown}
+ />
+
+
+
+
+
+
+
+ {
+ closeCurrentModal();
+ onInsert(sqlPreview);
+ }}
+ />
+
+
+
+
+
diff --git a/packages/web/src/tabs/QueryTab.svelte b/packages/web/src/tabs/QueryTab.svelte
index eaf0e69ef..fd5894735 100644
--- a/packages/web/src/tabs/QueryTab.svelte
+++ b/packages/web/src/tabs/QueryTab.svelte
@@ -10,6 +10,14 @@
testEnabled: () => getCurrentEditor() != null,
onClick: () => getCurrentEditor().formatCode(),
});
+ registerCommand({
+ id: 'query.insertSqlJoin',
+ category: 'Query',
+ name: 'Insert SQL Join',
+ keyText: 'Ctrl+J',
+ testEnabled: () => getCurrentEditor() != null,
+ onClick: () => getCurrentEditor().insertSqlJoin(),
+ });
registerFileCommands({
idPrefix: 'query',
category: 'Query',
@@ -25,7 +33,7 @@