diff --git a/packages/web/src/buttons/DropDownButton.svelte b/packages/web/src/buttons/DropDownButton.svelte index 260d9a7a6..02094f8bf 100644 --- a/packages/web/src/buttons/DropDownButton.svelte +++ b/packages/web/src/buttons/DropDownButton.svelte @@ -11,6 +11,7 @@ export let narrow = false; export let square = true; export let disabled = false; + export let title = undefined; let domButton; let isLoading = false; @@ -40,6 +41,7 @@ bind:this={domButton} {disabled} data-testid={$$props['data-testid']} + {title} > diff --git a/packages/web/src/modals/SaveFileModal.svelte b/packages/web/src/modals/SaveFileModal.svelte index 15ebd67e1..bc9bf0d77 100644 --- a/packages/web/src/modals/SaveFileModal.svelte +++ b/packages/web/src/modals/SaveFileModal.svelte @@ -22,6 +22,7 @@ export let filePath; export let onSave = undefined; export let folid; + export let skipLocal = false; // export let cntid; const values = writable({ name, cloudFolder: folid ?? '__local' }); @@ -59,7 +60,7 @@ savedFolder: folder, savedFilePath: null, savedCloudFolderId: cloudFolder, - // savedCloudContentId: resp.cntid, + savedCloudContentId: resp.cntid, }); } } @@ -96,12 +97,14 @@ name="cloudFolder" isNative requiredRoleVariants={['write', 'admin']} - prependFolders={[ - { - folid: '__local', - name: "Local folder (don't store on cloud)", - }, - ]} + prependFolders={skipLocal + ? [] + : [ + { + folid: '__local', + name: "Local folder (don't store on cloud)", + }, + ]} /> {/if} diff --git a/packages/web/src/widgets/PrivateCloudWidget.svelte b/packages/web/src/widgets/PrivateCloudWidget.svelte index f870403b4..726741bac 100644 --- a/packages/web/src/widgets/PrivateCloudWidget.svelte +++ b/packages/web/src/widgets/PrivateCloudWidget.svelte @@ -38,6 +38,9 @@ import ErrorInfo from '../elements/ErrorInfo.svelte'; import FormStyledButton from '../buttons/FormStyledButton.svelte'; import runCommand from '../commands/runCommand'; + import SaveFileModal from '../modals/SaveFileModal.svelte'; + import newQuery from '../query/newQuery'; + import openNewTab from '../utility/openNewTab'; let filter = ''; let domSqlObjectList = null; @@ -68,6 +71,7 @@ 'name' ); $: contentGroupMap = _.keyBy($cloudContentList || [], x => x.folid); + $: privateFolderId = $cloudContentList?.find(x => x.isPrivate)?.folid; // $: console.log('cloudContentFlat', cloudContentFlat); // $: console.log('contentGroupMap', contentGroupMap); @@ -110,6 +114,35 @@ { command: 'new.connectionOnCloud', }, + { + text: 'New SQL file', + onClick: () => { + const data = ''; + showModal(SaveFileModal, { + data, + skipLocal: true, + folid: privateFolderId, + folder: 'sql', + onSave: (name, { savedFile, savedFolder, savedFilePath, savedCloudFolderId, savedCloudContentId }) => { + openNewTab( + { + title: name, + icon: 'img sql-file', + tabComponent: 'QueryTab', + props: { + savedFolder: 'sql', + savedFormat: 'text', + savedFile, + savedCloudFolderId, + savedCloudContentId, + }, + }, + { editor: data } + ); + }, + }); + }, + }, ]; }