diff --git a/packages/web/src/appobj/DatabaseObjectAppObject.svelte b/packages/web/src/appobj/DatabaseObjectAppObject.svelte index ac0196715..9578e9db2 100644 --- a/packages/web/src/appobj/DatabaseObjectAppObject.svelte +++ b/packages/web/src/appobj/DatabaseObjectAppObject.svelte @@ -47,15 +47,15 @@ { divider: true, }, + electron && { + label: 'Quick export', + isQuickExport: true, + functionName: 'tableReader', + }, { label: 'Export', isExport: true, }, - // electron && - { - label: 'Quick export', - isQuickExport: true, - }, { label: 'Open in free table editor', isOpenFreeTable: true, @@ -114,14 +114,14 @@ { divider: true, }, - { - label: 'Export', - isExport: true, - }, electron && { label: 'Quick export', isQuickExport: true, }, + { + label: 'Export', + isExport: true, + }, { label: 'Open in free table editor', isOpenFreeTable: true, @@ -175,14 +175,14 @@ { divider: true, }, - { - label: 'Export', - isExport: true, - }, electron && { label: 'Quick export', isQuickExport: true, }, + { + label: 'Export', + isExport: true, + }, { label: 'Open in free table editor', isOpenFreeTable: true, @@ -275,14 +275,14 @@ }, }, }, - { - label: 'Export', - isExport: true, - }, electron && { label: 'Quick export', isQuickExport: true, }, + { + label: 'Export', + isExport: true, + }, { divider: true, }, @@ -399,16 +399,26 @@ if (menu.isQuickExport) { return { text: menu.label, - submenu: [ - { - text: 'CSV file', - isQuickExport: true, + submenu: $extensions.quickExports.map(fmt => ({ + text: fmt.label, + onClick: async () => { + const coninfo = await getConnectionInfo(data); + exportElectronFile( + data.pureName, + { + functionName: menu.functionName, + props: { + connection: { + ..._.omit(coninfo, ['_id', 'displayName']), + ..._.pick(data, ['database']), + }, + ..._.pick(data, ['pureName', 'schemaName']), + }, + }, + fmt + ); }, - { - text: 'Excel', - isQuickExport: true, - }, - ], + })), }; } @@ -425,8 +435,6 @@ sourceList: [data.pureName], }, }); - } else if (menu.isQuickExport) { - exportElectronFile(data); } else if (menu.isOpenFreeTable) { const coninfo = await getConnectionInfo(data); openNewTab({ @@ -511,6 +519,7 @@ mapItem(x, $commandsCustomized))); $: filtered = compacted.filter(x => !x.disabled || !x.hideDisabled); + const handleClickOutside = event => { + // if (element && !element.contains(event.target) && !event.defaultPrevented) { + if (event.target.closest('ul.dropDownMenuMarker')) return; + + dispatch('close'); + }; + + onMount(() => { + document.addEventListener('mousedown', handleClickOutside, true); + return () => { + document.removeEventListener('mousedown', handleClickOutside, true); + }; + }); + -