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 + +
+
+
Existing table
+ + +
+ +
+
New table
+ + +
+ +
+
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 @@