diff --git a/packages/web/src/buttons/NewObjectButton.svelte b/packages/web/src/buttons/NewObjectButton.svelte new file mode 100644 index 000000000..70c718f0b --- /dev/null +++ b/packages/web/src/buttons/NewObjectButton.svelte @@ -0,0 +1,51 @@ + + +
+
+ +
+ {title} + {#if description} +
{description}
+ {/if} +
+ + diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index 911a8aa85..c7afd9674 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -5,6 +5,7 @@ import { emptyConnectionGroupNames, extensions, getAppUpdaterActive, + getCloudSigninTokenHolder, getExtensions, getVisibleToolbar, visibleToolbar, @@ -132,7 +133,8 @@ registerCommand({ category: 'New', toolbarOrder: 1, name: 'Connection on Cloud', - testEnabled: () => !getCurrentConfig()?.runAsPortal && !getCurrentConfig()?.storageDatabase, + testEnabled: () => + !getCurrentConfig()?.runAsPortal && !getCurrentConfig()?.storageDatabase && !!getCloudSigninTokenHolder(), onClick: () => { openNewTab({ title: 'New Connection on Cloud', diff --git a/packages/web/src/elements/Chip.svelte b/packages/web/src/elements/Chip.svelte index aba8217c6..8a8764256 100644 --- a/packages/web/src/elements/Chip.svelte +++ b/packages/web/src/elements/Chip.svelte @@ -17,14 +17,14 @@ padding: 0.25em 0.5em; border-radius: 1em; background-color: var(--theme-bg-2); - color: var(--theme-text-1); + color: var(--theme-font-1); font-size: 0.875em; cursor: pointer; margin: 2px; } .chip .close { margin-left: 0.2em; - color: var(--theme-text-2); + color: var(--theme-font-2); cursor: pointer; } .chip .close:hover { diff --git a/packages/web/src/icons/FontIcon.svelte b/packages/web/src/icons/FontIcon.svelte index 06918d8f3..c38c4434c 100644 --- a/packages/web/src/icons/FontIcon.svelte +++ b/packages/web/src/icons/FontIcon.svelte @@ -334,6 +334,9 @@ 'img db-restore': 'mdi mdi-database-import color-icon-red', 'img settings': 'mdi mdi-cog color-icon-blue', 'img data-deploy': 'mdi mdi-database-settings color-icon-green', + + 'img new-sql-file': 'mdi mdi-file color-icon-blue', + 'img new-connection': 'mdi mdi-connection color-icon-yellow', }; diff --git a/packages/web/src/modals/ModalBase.svelte b/packages/web/src/modals/ModalBase.svelte index 1e41bdb74..7228f8541 100644 --- a/packages/web/src/modals/ModalBase.svelte +++ b/packages/web/src/modals/ModalBase.svelte @@ -9,6 +9,7 @@ export let fullScreen = false; export let noPadding = false; export let simple = false; + export let simplefix = false; export let modalId; function handleCloseModal() { @@ -43,6 +44,7 @@ class="window" class:fullScreen class:simple + class:simplefix use:clickOutside on:clickOutside={handleClickOutside} data-testid="ModalBase_window" @@ -92,7 +94,7 @@ flex-direction: column; } - .window:not(.fullScreen):not(.simple) { + .window:not(.fullScreen):not(.simple):not(.simplefix) { border-radius: 10px; margin: auto; margin-top: 15vh; @@ -114,6 +116,12 @@ width: 30%; } + .window.simplefix { + margin: auto; + max-width: 600px; + margin-top: 10vh; + } + .close { font-size: 12pt; padding: 5px 10px; diff --git a/packages/web/src/modals/NewObjectModal.svelte b/packages/web/src/modals/NewObjectModal.svelte index 7c3af96c8..a0f2439e7 100644 --- a/packages/web/src/modals/NewObjectModal.svelte +++ b/packages/web/src/modals/NewObjectModal.svelte @@ -1,18 +1,109 @@ - - { - newQuery({ multiTabIndex }); - closeCurrentModal(); - }} - /> + +
Create new
+
+ { + newQuery({ multiTabIndex }); + closeCurrentModal(); + }} + /> + {#if $commandsCustomized['new.connection']?.enabled} + { + $selectedWidget = 'database'; + runCommand('new.connection'); + closeCurrentModal(); + }} + /> + {/if} + {#if $commandsCustomized['new.connectionOnCloud']?.enabled} + { + $selectedWidget = 'cloud-private'; + runCommand('new.connectionOnCloud'); + closeCurrentModal(); + }} + /> + {/if} + {#if $commandsCustomized['new.queryDesign']?.enabled} + { + runCommand('new.queryDesign'); + closeCurrentModal(); + }} + /> + {/if} + {#if $commandsCustomized['new.diagram']?.enabled} + { + runCommand('new.diagram'); + closeCurrentModal(); + }} + /> + {/if} + {#if $commandsCustomized['new.perspective']?.enabled} + { + runCommand('new.perspective'); + closeCurrentModal(); + }} + /> + {/if} + {#if $commandsCustomized['new.table']?.enabled} + { + runCommand('new.table'); + closeCurrentModal(); + }} + /> + {/if} +
+ + diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts index c2ff2c159..badfa1ce7 100644 --- a/packages/web/src/stores.ts +++ b/packages/web/src/stores.ts @@ -485,4 +485,10 @@ export const currentActiveCloudTags = derived(currentDatabase, $currentDatabase return res; }); +let cloudSigninTokenHolderValue = null; +cloudSigninTokenHolder.subscribe(value => { + cloudSigninTokenHolderValue = value; +}); +export const getCloudSigninTokenHolder = () => cloudSigninTokenHolderValue; + window['__changeCurrentTheme'] = theme => currentTheme.set(theme);