windmill-components 1.84.6 → 1.86.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/AppConnect.svelte +2 -2
- package/components/ArgInfo.svelte +4 -6
- package/components/ArgInput.svelte +12 -12
- package/components/ArgInput.svelte.d.ts +1 -2
- package/components/CenteredModal.svelte +9 -7
- package/components/CronInput.svelte +301 -64
- package/components/CronInput.svelte.d.ts +3 -3
- package/components/DisplayResult.svelte +5 -7
- package/components/Dropdown.svelte +5 -4
- package/components/Editor.svelte +138 -83
- package/components/Editor.svelte.d.ts +10 -4
- package/components/EditorBar.svelte +72 -36
- package/components/EditorBar.svelte.d.ts +1 -1
- package/components/FlowBuilder.svelte +136 -110
- package/components/FlowGraphViewer.svelte +5 -8
- package/components/FlowGraphViewer.svelte.d.ts +1 -0
- package/components/FlowPreviewContent.svelte +14 -11
- package/components/FlowStatusViewer.svelte +54 -44
- package/components/FlowViewer.svelte +1 -1
- package/components/FolderEditor.svelte +2 -10
- package/components/FolderUsageInfo.svelte +1 -1
- package/components/GroupEditor.svelte +6 -15
- package/components/HighlightCode.svelte +1 -1
- package/components/InlineCodeCopy.svelte +2 -1
- package/components/InputTransformForm.svelte +75 -73
- package/components/InputTransformSchemaForm.svelte +1 -1
- package/components/InputTransformsViewer.svelte +1 -1
- package/components/LightweightArgInput.svelte +12 -0
- package/components/LightweightArgInput.svelte.d.ts +1 -0
- package/components/LightweightSchemaForm.svelte +2 -1
- package/components/LightweightSchemaForm.svelte.d.ts +2 -0
- package/components/Modal.svelte +2 -2
- package/components/ModulePreview.svelte +11 -11
- package/components/ModuleStatus.svelte +0 -1
- package/components/Multiselect.svelte +1 -0
- package/components/ObjectResourceInput.svelte +1 -23
- package/components/Path.svelte +56 -94
- package/components/Popover.svelte +7 -19
- package/components/Range.svelte +1 -4
- package/components/ResourceEditor.svelte +6 -6
- package/components/ResourcePicker.svelte +2 -2
- package/components/RunForm.svelte +5 -6
- package/components/ScheduleEditor.svelte +23 -13
- package/components/SchemaModal.svelte +1 -0
- package/components/SchemaModal.svelte.d.ts +1 -1
- package/components/ScriptBuilder.svelte +201 -206
- package/components/ScriptBuilder.svelte.d.ts +2 -0
- package/components/ScriptEditor.svelte +38 -38
- package/components/ScriptEditor.svelte.d.ts +5 -1
- package/components/ScriptSchema.svelte +1 -20
- package/components/ScriptSchema.svelte.d.ts +0 -1
- package/components/SearchItems.svelte +1 -1
- package/components/SharedBadge.svelte +0 -1
- package/components/SimpleEditor.svelte +17 -37
- package/components/SimpleEditor.svelte.d.ts +6 -0
- package/components/Star.svelte +2 -1
- package/components/TemplateEditor.svelte +21 -29
- package/components/TemplateEditor.svelte.d.ts +3 -0
- package/components/Toast.svelte +50 -0
- package/components/Toast.svelte.d.ts +18 -0
- package/components/apps/components/buttons/AppButton.svelte +2 -1
- package/components/apps/components/display/AppBarChart.svelte +5 -5
- package/components/apps/components/display/AppHtml.svelte +9 -6
- package/components/apps/components/display/AppIcon.svelte +3 -0
- package/components/apps/components/display/AppImage.svelte +4 -1
- package/components/apps/components/display/AppMap.svelte +3 -0
- package/components/apps/components/display/AppPdf.svelte +14 -11
- package/components/apps/components/display/AppText.svelte +152 -60
- package/components/apps/components/display/AppText.svelte.d.ts +4 -0
- package/components/apps/components/display/table/AppAggridTable.svelte +25 -12
- package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -1
- package/components/apps/components/display/table/AppTable.svelte +1 -2
- package/components/apps/components/display/table/AppTableFooter.svelte +0 -1
- package/components/apps/components/helpers/AlignWrapper.svelte +1 -20
- package/components/apps/components/helpers/HiddenComponent.svelte +12 -6
- package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +2 -1
- package/components/apps/components/helpers/InitializeComponent.svelte +12 -0
- package/components/apps/components/helpers/InitializeComponent.svelte.d.ts +16 -0
- package/components/apps/components/helpers/InputValue.svelte +6 -0
- package/components/apps/components/helpers/NonRunnableComponent.svelte +4 -3
- package/components/apps/components/helpers/RunnableComponent.svelte +24 -6
- package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
- package/components/apps/components/helpers/RunnableWrapper.svelte +8 -2
- package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -0
- package/components/apps/components/helpers/eval.d.ts +4 -0
- package/components/apps/components/helpers/eval.js +3 -1
- package/components/apps/components/inputs/AppCheckbox.svelte +3 -0
- package/components/apps/components/inputs/AppDateInput.svelte +3 -0
- package/components/apps/components/inputs/AppFileInput.svelte +4 -0
- package/components/apps/components/inputs/AppMultiSelect.svelte +5 -2
- package/components/apps/components/inputs/AppNumberInput.svelte +3 -0
- package/components/apps/components/inputs/AppRangeInput.svelte +8 -5
- package/components/apps/components/inputs/AppSelect.svelte +3 -9
- package/components/apps/components/inputs/AppSliderInputs.svelte +2 -0
- package/components/apps/components/inputs/AppTextInput.svelte +12 -5
- package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +3 -0
- package/components/apps/components/layout/AppContainer.svelte +3 -0
- package/components/apps/components/layout/AppDivider.svelte +3 -0
- package/components/apps/components/layout/AppDrawer.svelte +3 -0
- package/components/apps/components/layout/AppSplitpanes.svelte +3 -0
- package/components/apps/components/layout/AppTabs.svelte +4 -1
- package/components/apps/editor/AppEditor.svelte +42 -35
- package/components/apps/editor/AppEditorHeader.svelte +23 -15
- package/components/apps/editor/AppPreview.svelte +5 -3
- package/components/apps/editor/ComponentHeader.svelte +20 -1
- package/components/apps/editor/ComponentHeader.svelte.d.ts +3 -0
- package/components/apps/editor/GridEditor.svelte +2 -2
- package/components/apps/editor/RecomputeAllComponents.svelte +7 -4
- package/components/apps/editor/SettingsPanel.svelte +1 -0
- package/components/apps/editor/SubGridEditor.svelte +5 -5
- package/components/apps/editor/appUtils.js +13 -3
- package/components/apps/editor/component/Component.svelte +24 -2
- package/components/apps/editor/component/ComponentWrapper.svelte +5 -0
- package/components/apps/editor/component/components.d.ts +39 -39
- package/components/apps/editor/componentsPanel/ComponentList.svelte +12 -26
- package/components/apps/editor/componentsPanel/CssSettings.svelte +1 -3
- package/components/apps/editor/componentsPanel/ListItem.svelte +2 -2
- package/components/apps/editor/componentsPanel/QuickStyleMenu.svelte +2 -2
- package/components/apps/editor/contextPanel/ContextPanel.svelte +1 -2
- package/components/apps/editor/contextPanel/components/IdEditor.svelte +90 -0
- package/components/apps/editor/contextPanel/components/IdEditor.svelte.d.ts +18 -0
- package/components/apps/editor/contextPanel/components/OutputHeader.svelte +92 -21
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +4 -3
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +3 -3
- package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +50 -37
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte +3 -3
- package/components/apps/editor/settingsPanel/SelectedRunnable.svelte +14 -6
- package/components/apps/editor/settingsPanel/TableActions.svelte +1 -1
- package/components/apps/editor/settingsPanel/inputEditor/ConnectedInputEditor.svelte +2 -2
- package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +8 -3
- package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +0 -2
- package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +2 -2
- package/components/apps/editor/settingsPanel/mainInput/WorkspaceFlowList.svelte +2 -5
- package/components/apps/editor/settingsPanel/mainInput/WorkspaceScriptList.svelte +2 -5
- package/components/apps/editor/settingsPanel/triggerLists/BackgroundScriptTriggerList.svelte +15 -7
- package/components/apps/editor/settingsPanel/triggerLists/BackgroundScriptTriggerList.svelte.d.ts +2 -1
- package/components/apps/editor/settingsPanel/triggerLists/ComponentTriggerList.svelte +2 -2
- package/components/apps/editor/settingsPanel/triggerLists/ComponentTriggerList.svelte.d.ts +1 -1
- package/components/apps/editor/settingsPanel/triggerLists/TriggerBadgesList.svelte +6 -5
- package/components/apps/editor/settingsPanel/triggerLists/TriggerBadgesList.svelte.d.ts +1 -1
- package/components/apps/inputType.d.ts +1 -0
- package/components/apps/rx.d.ts +0 -2
- package/components/apps/rx.js +1 -3
- package/components/apps/svelte-grid/utils/helper.js +1 -1
- package/components/apps/types.d.ts +12 -0
- package/components/apps/utils.d.ts +3 -1
- package/components/apps/utils.js +26 -2
- package/components/build_workers.d.ts +14 -0
- package/components/build_workers.js +45 -0
- package/components/common/badge/Badge.svelte +0 -1
- package/components/common/button/Button.svelte +46 -24
- package/components/common/button/Button.svelte.d.ts +7 -1
- package/components/common/button/ButtonDropdown.svelte +25 -0
- package/components/common/button/ButtonDropdown.svelte.d.ts +27 -0
- package/components/common/button/model.d.ts +2 -3
- package/components/common/button/model.js +7 -3
- package/components/common/drawer/Drawer.svelte +2 -3
- package/components/common/drawer/DrawerContent.svelte +2 -6
- package/components/common/fileInput/FileInput.svelte +5 -1
- package/components/common/fileInput/FileInput.svelte.d.ts +1 -0
- package/components/common/index.d.ts +0 -2
- package/components/common/index.js +0 -2
- package/components/common/menu/Menu.svelte.d.ts +1 -1
- package/components/common/popup/Popup.svelte +16 -8
- package/components/common/popup/Popup.svelte.d.ts +6 -0
- package/components/common/table/AppRow.svelte +0 -1
- package/components/common/table/FlowRow.svelte +0 -1
- package/components/common/table/ScriptRow.svelte +2 -3
- package/components/common/tabs/Tab.svelte +10 -5
- package/components/common/tabs/Tabs.svelte +20 -1
- package/components/common/tabs/Tabs.svelte.d.ts +3 -0
- package/components/flows/CreateActionsApp.svelte +14 -9
- package/components/flows/CreateActionsFlow.svelte +11 -10
- package/components/flows/FlowEditor.svelte +2 -2
- package/components/flows/content/CapturePayload.svelte +2 -4
- package/components/flows/content/DynamicInputHelpBox.svelte +1 -0
- package/components/flows/content/FlowBranchesAllWrapper.svelte +2 -2
- package/components/flows/content/FlowBranchesOneWrapper.svelte +2 -2
- package/components/flows/content/FlowInputsFlow.svelte +1 -1
- package/components/flows/content/FlowInputsFlow.svelte.d.ts +1 -3
- package/components/flows/content/FlowModuleComponent.svelte +27 -28
- package/components/flows/content/FlowModuleWrapper.svelte +0 -1
- package/components/flows/content/FlowRetries.svelte +1 -2
- package/components/flows/content/FlowSchedules.svelte +3 -1
- package/components/flows/content/ScriptEditorDrawer.svelte +1 -1
- package/components/flows/flowStateUtils.d.ts +0 -3
- package/components/flows/flowStateUtils.js +3 -23
- package/components/flows/header/FlowImportExportMenu.svelte +10 -12
- package/components/flows/header/FlowPreviewButtons.svelte +21 -24
- package/components/flows/idUtils.d.ts +4 -0
- package/components/flows/idUtils.js +47 -0
- package/components/flows/map/FlowModuleSchemaItem.svelte +6 -6
- package/components/flows/map/MapItem.svelte +9 -9
- package/components/flows/map/MapItem.svelte.d.ts +0 -1
- package/components/flows/scheduleUtils.d.ts +1 -0
- package/components/flows/scheduleUtils.js +2 -1
- package/components/flows/utils.d.ts +0 -2
- package/components/flows/utils.js +3 -35
- package/components/graph/FlowGraph.svelte +22 -8
- package/components/graph/FlowGraph.svelte.d.ts +2 -0
- package/components/graph/svelvet/collapsible/controllers/util.js +3 -14
- package/components/graph/svelvet/container/views/GraphView.svelte +25 -42
- package/components/graph/svelvet/container/views/GraphView.svelte.d.ts +2 -0
- package/components/graph/svelvet/container/views/Svelvet.svelte +5 -3
- package/components/graph/svelvet/container/views/Svelvet.svelte.d.ts +3 -0
- package/components/graph/svelvet/edges/controllers/anchorCbDev.js +5 -5
- package/components/graph/svelvet/edges/controllers/util.js +1 -1
- package/components/graph/svelvet/edges/models/Edge.js +2 -2
- package/components/graph/svelvet/edges/views/Edges/SimpleBezierEdge.svelte +1 -1
- package/components/graph/svelvet/nodes/models/Node.js +0 -1
- package/components/graph/svelvet/nodes/views/Node.svelte +0 -1
- package/components/graph/svelvet/nodes/views/Node.svelte.d.ts +0 -1
- package/components/graph/svelvet/store/controllers/util.d.ts +1 -1
- package/components/graph/svelvet/store/controllers/util.js +3 -3
- package/components/home/ItemsList.svelte +11 -11
- package/components/icons/WindmillIcon.svelte +4 -0
- package/components/icons/WindmillIcon.svelte.d.ts +1 -0
- package/components/propertyPicker/ObjectViewer.svelte +0 -5
- package/components/propertyPicker/ObjectViewer.svelte.d.ts +0 -1
- package/components/propertyPicker/PropPicker.svelte +2 -2
- package/components/scripts/CreateActionsScript.svelte +4 -22
- package/components/sidebar/WorkspaceMenu.svelte +8 -4
- package/editorUtils.d.ts +3 -0
- package/editorUtils.js +7 -2
- package/gen/core/OpenAPI.js +1 -1
- package/gen/index.d.ts +7 -1
- package/gen/index.js +3 -0
- package/gen/models/CreateInput.d.ts +5 -0
- package/gen/models/CreateInput.js +4 -0
- package/gen/models/EditSchedule.d.ts +1 -0
- package/gen/models/Input.d.ts +6 -0
- package/gen/models/Input.js +4 -0
- package/gen/models/MainArgSignature.d.ts +8 -0
- package/gen/models/MainArgSignature.js +8 -1
- package/gen/models/NewSchedule.d.ts +1 -1
- package/gen/models/NewTokenImpersonate.d.ts +5 -0
- package/gen/models/NewTokenImpersonate.js +4 -0
- package/gen/models/RunnableType.d.ts +5 -0
- package/gen/models/RunnableType.js +9 -0
- package/gen/models/Schedule.d.ts +1 -1
- package/gen/models/UpdateInput.d.ts +4 -0
- package/gen/models/UpdateInput.js +4 -0
- package/gen/services/FlowService.d.ts +18 -0
- package/gen/services/FlowService.js +19 -0
- package/gen/services/InputService.d.ts +78 -0
- package/gen/services/InputService.js +95 -0
- package/gen/services/JobService.d.ts +35 -15
- package/gen/services/JobService.js +25 -7
- package/gen/services/ScheduleService.d.ts +2 -2
- package/gen/services/ScheduleService.js +1 -1
- package/gen/services/ScriptService.d.ts +10 -0
- package/gen/services/ScriptService.js +16 -0
- package/gen/services/UserService.d.ts +12 -0
- package/gen/services/UserService.js +13 -0
- package/infer.js +3 -0
- package/init_scripts/python_init_code.d.ts +1 -1
- package/init_scripts/python_init_code.js +2 -2
- package/package.json +684 -673
- package/script_helpers.d.ts +1 -1
- package/script_helpers.js +7 -5
- package/stores.js +14 -1
- package/user.d.ts +1 -1
- package/user.js +6 -6
- package/utils.d.ts +2 -2
- package/utils.js +21 -11
- package/components/common/button/ButtonPopup.svelte +0 -75
- package/components/common/button/ButtonPopup.svelte.d.ts +0 -39
- package/components/common/button/ButtonPopupItem.svelte +0 -48
- package/components/common/button/ButtonPopupItem.svelte.d.ts +0 -28
- package/components/graph/svelvet/editEdges/views/EditEdge.svelte +0 -151
- package/components/graph/svelvet/editEdges/views/EditEdge.svelte.d.ts +0 -20
|
@@ -339,7 +339,7 @@ let filteredConnectsManual = [];
|
|
|
339
339
|
<h2 class="mt-8 mb-4">Non OAuth APIs & Resources</h2>
|
|
340
340
|
<div class="grid sm:grid-cols-2 md:grid-cols-3 gap-x-2 gap-y-1 items-center mb-2">
|
|
341
341
|
{#if filteredConnectsManual}
|
|
342
|
-
{#each filteredConnectsManual as [key,
|
|
342
|
+
{#each filteredConnectsManual as [key, _]}
|
|
343
343
|
<Button
|
|
344
344
|
size="sm"
|
|
345
345
|
variant="border"
|
|
@@ -383,7 +383,7 @@ let filteredConnectsManual = [];
|
|
|
383
383
|
</div>
|
|
384
384
|
{#if apiTokenApps[resource_type].img}
|
|
385
385
|
<div class="mt-4 w-full overflow-hidden">
|
|
386
|
-
<img class="m-auto
|
|
386
|
+
<img class="m-auto max-h-60" alt="connect" src={apiTokenApps[resource_type].img} />
|
|
387
387
|
</div>
|
|
388
388
|
{/if}
|
|
389
389
|
{/if}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
<script>import {
|
|
2
|
-
import Tooltip from './Tooltip.svelte';
|
|
3
|
-
import json from 'svelte-highlight/languages/json';
|
|
4
|
-
import { Highlight } from 'svelte-highlight';
|
|
5
|
-
import { ResourceService } from '../gen';
|
|
1
|
+
<script>import { ResourceService } from '../gen';
|
|
6
2
|
import { workspaceStore } from '../stores';
|
|
7
|
-
import
|
|
3
|
+
import { truncate } from '../utils';
|
|
8
4
|
import { DrawerContent } from './common';
|
|
5
|
+
import Drawer from './common/drawer/Drawer.svelte';
|
|
9
6
|
import ObjectViewer from './propertyPicker/ObjectViewer.svelte';
|
|
7
|
+
import Tooltip from './Tooltip.svelte';
|
|
10
8
|
export let value;
|
|
11
9
|
let jsonViewer;
|
|
12
10
|
let jsonViewerContent;
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
<script>import { faChevronDown, faChevronUp, faDollarSign,
|
|
1
|
+
<script>import { faChevronDown, faChevronUp, faDollarSign, faPlus } from '@fortawesome/free-solid-svg-icons';
|
|
2
2
|
import { setInputCat as computeInputCat } from '../utils';
|
|
3
|
-
import {
|
|
3
|
+
import { X } from 'lucide-svelte';
|
|
4
4
|
import { createEventDispatcher } from 'svelte';
|
|
5
|
+
import autosize from 'svelte-autosize';
|
|
5
6
|
import Icon from 'svelte-awesome';
|
|
7
|
+
import { fade } from 'svelte/transition';
|
|
8
|
+
import JsonEditor from './apps/editor/settingsPanel/inputEditor/JsonEditor.svelte';
|
|
9
|
+
import { Badge, Button } from './common';
|
|
6
10
|
import FieldHeader from './FieldHeader.svelte';
|
|
11
|
+
import NumberTypeNarrowing from './NumberTypeNarrowing.svelte';
|
|
7
12
|
import ObjectResourceInput from './ObjectResourceInput.svelte';
|
|
8
13
|
import ObjectTypeNarrowing from './ObjectTypeNarrowing.svelte';
|
|
14
|
+
import Password from './Password.svelte';
|
|
15
|
+
import Range from './Range.svelte';
|
|
9
16
|
import ResourcePicker from './ResourcePicker.svelte';
|
|
10
|
-
import StringTypeNarrowing from './StringTypeNarrowing.svelte';
|
|
11
17
|
import SchemaForm from './SchemaForm.svelte';
|
|
12
18
|
import SimpleEditor from './SimpleEditor.svelte';
|
|
13
|
-
import
|
|
19
|
+
import StringTypeNarrowing from './StringTypeNarrowing.svelte';
|
|
14
20
|
import Toggle from './Toggle.svelte';
|
|
15
|
-
import Password from './Password.svelte';
|
|
16
|
-
import NumberTypeNarrowing from './NumberTypeNarrowing.svelte';
|
|
17
|
-
import Range from './Range.svelte';
|
|
18
|
-
import JsonEditor from './apps/editor/settingsPanel/inputEditor/JsonEditor.svelte';
|
|
19
|
-
import { fade } from 'svelte/transition';
|
|
20
|
-
import { X } from 'lucide-svelte';
|
|
21
21
|
export let label = '';
|
|
22
22
|
export let value;
|
|
23
23
|
export let defaultValue = undefined;
|
|
@@ -28,7 +28,6 @@ export let type = undefined;
|
|
|
28
28
|
export let required = false;
|
|
29
29
|
export let pattern = undefined;
|
|
30
30
|
export let valid = required ? false : true;
|
|
31
|
-
export let maxRows = 10;
|
|
32
31
|
export let enum_ = undefined;
|
|
33
32
|
export let disabled = false;
|
|
34
33
|
export let editableSchema = false;
|
|
@@ -45,7 +44,6 @@ export let noMargin = false;
|
|
|
45
44
|
export let extra = {};
|
|
46
45
|
let seeEditable = enum_ != undefined || pattern != undefined;
|
|
47
46
|
const dispatch = createEventDispatcher();
|
|
48
|
-
$: maxHeight = maxRows ? `${1 + maxRows * 1.2}em` : `auto`;
|
|
49
47
|
$: validateInput(pattern, value);
|
|
50
48
|
let error = '';
|
|
51
49
|
let el = undefined;
|
|
@@ -143,6 +141,7 @@ let redraw = 0;
|
|
|
143
141
|
let itemsLimit = 50;
|
|
144
142
|
</script>
|
|
145
143
|
|
|
144
|
+
<!-- svelte-ignore a11y-autofocus -->
|
|
146
145
|
<div class="flex flex-col w-full min-w-[250px]">
|
|
147
146
|
<div>
|
|
148
147
|
{#if displayHeader}
|
|
@@ -150,6 +149,7 @@ let itemsLimit = 50;
|
|
|
150
149
|
{/if}
|
|
151
150
|
{#if editableSchema}
|
|
152
151
|
<div class="p-2 my-1 text-xs border-solid border border-gray-400">
|
|
152
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
153
153
|
<span
|
|
154
154
|
class="underline"
|
|
155
155
|
on:click={() => {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
2
|
import type { SchemaProperty } from '../common';
|
|
3
|
+
import type ItemPicker from './ItemPicker.svelte';
|
|
3
4
|
import SimpleEditor from './SimpleEditor.svelte';
|
|
4
5
|
import type VariableEditor from './VariableEditor.svelte';
|
|
5
|
-
import type ItemPicker from './ItemPicker.svelte';
|
|
6
6
|
declare const __propDef: {
|
|
7
7
|
props: {
|
|
8
8
|
label?: string | undefined;
|
|
@@ -15,7 +15,6 @@ declare const __propDef: {
|
|
|
15
15
|
required?: boolean | undefined;
|
|
16
16
|
pattern?: undefined | string;
|
|
17
17
|
valid?: boolean | undefined;
|
|
18
|
-
maxRows?: number | undefined;
|
|
19
18
|
enum_?: string[] | undefined;
|
|
20
19
|
disabled?: boolean | undefined;
|
|
21
20
|
editableSchema?: boolean | undefined;
|
|
@@ -10,9 +10,11 @@ onMount(async () => {
|
|
|
10
10
|
});
|
|
11
11
|
</script>
|
|
12
12
|
|
|
13
|
-
<div class="center-center min-h-screen p-4 relative bg-
|
|
14
|
-
<div
|
|
15
|
-
|
|
13
|
+
<div class="center-center min-h-screen p-4 relative bg-gray-50">
|
|
14
|
+
<div
|
|
15
|
+
class="border rounded-md shadow-md bg-white w-full max-w-[640px]
|
|
16
|
+
p-4 sm:py-8 sm:px-10 mb-6 md:mb-20 z-10"
|
|
17
|
+
>
|
|
16
18
|
<div class="mb-10">
|
|
17
19
|
<h1 class="text-center">
|
|
18
20
|
{title}
|
|
@@ -27,13 +29,13 @@ onMount(async () => {
|
|
|
27
29
|
</div>
|
|
28
30
|
{#if !disableLogo}
|
|
29
31
|
<div class="hidden lg:block absolute top-10 right-50">
|
|
30
|
-
<div
|
|
31
|
-
<WindmillIcon
|
|
32
|
+
<div>
|
|
33
|
+
<WindmillIcon height="100px" width="100px" spin="slow" />
|
|
32
34
|
</div>
|
|
33
|
-
<h2 class="text-center pt-2 text-gray-
|
|
35
|
+
<h2 class="text-center pt-2 text-gray-800">Windmill</h2>
|
|
34
36
|
</div>
|
|
35
37
|
{/if}
|
|
36
|
-
<div class="absolute top-0 right-0 text-2xs text-gray-
|
|
38
|
+
<div class="absolute top-0 right-0 text-2xs text-gray-800 italic px-3 py-1">
|
|
37
39
|
<span class="font-mono">{version}</span>
|
|
38
40
|
</div>
|
|
39
41
|
</div>
|
|
@@ -1,28 +1,61 @@
|
|
|
1
|
-
<script context="module">
|
|
2
|
-
export const OFFSET = new Date().getTimezoneOffset()
|
|
3
|
-
</script>
|
|
4
|
-
|
|
5
1
|
<script>import { ScheduleService } from '../gen';
|
|
6
|
-
import {
|
|
2
|
+
import { emptyString, formatCron } from '../utils';
|
|
3
|
+
import Badge from './Badge.svelte';
|
|
4
|
+
// @ts-ignore
|
|
5
|
+
import Multiselect from 'svelte-multiselect';
|
|
6
|
+
import TimezonePicker from 'svelte-timezone-picker';
|
|
7
7
|
import CollapseLink from './CollapseLink.svelte';
|
|
8
|
+
import { Button } from './common';
|
|
9
|
+
export let schedule;
|
|
10
|
+
// export let offset: number = -60 * Math.floor(new Date().getTimezoneOffset() / 60)
|
|
11
|
+
export let timezone; // = Intl.DateTimeFormat().resolvedOptions().timeZone
|
|
12
|
+
export let disabled = false;
|
|
8
13
|
export let validCRON = true;
|
|
9
14
|
let preview = [];
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
let
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
// If the user has already entered a cron string, switching to the basic tab will override it.
|
|
16
|
+
let executeEvery = 'minute';
|
|
17
|
+
let seconds = 30;
|
|
18
|
+
let minutes = 30;
|
|
19
|
+
let hours = 1;
|
|
20
|
+
const daysOfMonthOptions = Array.from(Array(31).keys()).map((i) => i + 1);
|
|
21
|
+
let daysOfMonth = [];
|
|
22
|
+
// let lastDayOfMonth = false
|
|
23
|
+
const monthsOfYearOptions = [
|
|
24
|
+
'January',
|
|
25
|
+
'February',
|
|
26
|
+
'March',
|
|
27
|
+
'April',
|
|
28
|
+
'May',
|
|
29
|
+
'June',
|
|
30
|
+
'July',
|
|
31
|
+
'August',
|
|
32
|
+
'September',
|
|
33
|
+
'October',
|
|
34
|
+
'November',
|
|
35
|
+
'December'
|
|
36
|
+
];
|
|
37
|
+
let monthsOfYear = [];
|
|
38
|
+
const daysOfWeekOptions = [
|
|
39
|
+
'Sunday',
|
|
40
|
+
'Monday',
|
|
41
|
+
'Tuesday',
|
|
42
|
+
'Wednesday',
|
|
43
|
+
'Thursday',
|
|
44
|
+
'Friday',
|
|
45
|
+
'Saturday'
|
|
46
|
+
];
|
|
47
|
+
let daysOfWeek = [];
|
|
48
|
+
let UTCTime = '';
|
|
49
|
+
$: !emptyString(schedule) && handleScheduleInput(schedule, timezone);
|
|
50
|
+
async function handleScheduleInput(input, timezone) {
|
|
16
51
|
try {
|
|
17
52
|
preview = await ScheduleService.previewSchedule({
|
|
18
|
-
requestBody: { schedule: formatCron(input),
|
|
53
|
+
requestBody: { schedule: formatCron(input), timezone }
|
|
19
54
|
});
|
|
20
|
-
cronError = '';
|
|
21
55
|
validCRON = true;
|
|
22
56
|
}
|
|
23
57
|
catch (err) {
|
|
24
58
|
if (err.status == 400 && err.body.includes('cron')) {
|
|
25
|
-
cronError = `Invalid cron expression`;
|
|
26
59
|
validCRON = false;
|
|
27
60
|
}
|
|
28
61
|
else {
|
|
@@ -30,60 +63,264 @@ async function handleScheduleInput(input) {
|
|
|
30
63
|
}
|
|
31
64
|
}
|
|
32
65
|
}
|
|
66
|
+
let nschedule = '';
|
|
67
|
+
$: {
|
|
68
|
+
// CRON string format
|
|
69
|
+
// sec min hour day of month month day of week year
|
|
70
|
+
// 0 30 9,12,15 1,15 May-Aug Mon,Wed,Fri 2018/2
|
|
71
|
+
let s_daysOfMonth = '';
|
|
72
|
+
// if (lastDayOfMonth) {
|
|
73
|
+
// s_daysOfMonth = 'L'
|
|
74
|
+
// } else
|
|
75
|
+
if (daysOfMonth.length > 0) {
|
|
76
|
+
s_daysOfMonth = daysOfMonth.join(',');
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
s_daysOfMonth = '*';
|
|
80
|
+
}
|
|
81
|
+
let s_months = '';
|
|
82
|
+
if (monthsOfYear.length > 0) {
|
|
83
|
+
s_months = monthsOfYear.map((m) => m.slice(0, 3).toLowerCase()).join(',');
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
s_months = '*';
|
|
87
|
+
}
|
|
88
|
+
let s_daysOfWeek = '';
|
|
89
|
+
if (daysOfWeek.length > 0) {
|
|
90
|
+
s_daysOfWeek = daysOfWeek.map((d) => d.slice(0, 3).toLowerCase()).join(',');
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
s_daysOfWeek = '*';
|
|
94
|
+
}
|
|
95
|
+
const s_AtUTCHours = parseInt(UTCTime.split(':')[0]) || '0';
|
|
96
|
+
const s_AtUTCMinutes = parseInt(UTCTime.split(':')[1]) || '0';
|
|
97
|
+
// If using the basic editor, set the cron string based on the selected options
|
|
98
|
+
if (executeEvery === 'second') {
|
|
99
|
+
if (seconds > 0) {
|
|
100
|
+
nschedule = `*/${seconds} * * * *`;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
nschedule = `* * * * *`;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else if (executeEvery === 'minute') {
|
|
107
|
+
if (minutes > 0) {
|
|
108
|
+
nschedule = `0 */${minutes} * * *`;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
nschedule = `* * * * *`;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else if (executeEvery === 'hour') {
|
|
115
|
+
if (hours > 0) {
|
|
116
|
+
nschedule = `0 0 */${hours} * *`;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
nschedule = `* * * * *`;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else if (executeEvery === 'day-month') {
|
|
123
|
+
nschedule = `0 ${s_AtUTCMinutes} ${s_AtUTCHours} ${s_daysOfMonth} *`;
|
|
124
|
+
}
|
|
125
|
+
else if (executeEvery === 'month') {
|
|
126
|
+
nschedule = `0 ${s_AtUTCMinutes} ${s_AtUTCHours} ${s_daysOfMonth} ${s_months}`;
|
|
127
|
+
}
|
|
128
|
+
else if (executeEvery === 'day-week') {
|
|
129
|
+
nschedule = `0 ${s_AtUTCMinutes} ${s_AtUTCHours} * * ${s_daysOfWeek}`;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
$: dateFormatter = new Intl.DateTimeFormat('en-GB', {
|
|
133
|
+
weekday: 'short',
|
|
134
|
+
day: '2-digit',
|
|
135
|
+
month: 'short',
|
|
136
|
+
year: 'numeric',
|
|
137
|
+
hour: 'numeric',
|
|
138
|
+
minute: 'numeric',
|
|
139
|
+
second: 'numeric',
|
|
140
|
+
timeZone: timezone,
|
|
141
|
+
timeZoneName: 'short'
|
|
142
|
+
}).format;
|
|
33
143
|
</script>
|
|
34
144
|
|
|
35
|
-
<div class="
|
|
36
|
-
<div class="w-full
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
on:click={() => {
|
|
52
|
-
schedule = '0 */15 * * *'
|
|
53
|
-
cronError = ''
|
|
54
|
-
}}>every 15 min</button
|
|
55
|
-
>
|
|
56
|
-
<button
|
|
57
|
-
on:click={() => {
|
|
58
|
-
schedule = '0 0 * * * *'
|
|
59
|
-
cronError = ''
|
|
60
|
-
}}>every hour</button
|
|
61
|
-
>
|
|
62
|
-
<button
|
|
63
|
-
on:click={() => {
|
|
64
|
-
schedule = '0 0 8 * * *'
|
|
65
|
-
cronError = ''
|
|
66
|
-
}}>once a day at 8AM</button
|
|
67
|
-
>
|
|
145
|
+
<div class="w-full flex space-x-16 p-4">
|
|
146
|
+
<div class="w-full flex flex-col space-y-2">
|
|
147
|
+
<div class="w-full flex flex-col gap-1">
|
|
148
|
+
<small class="font-bold">Cron</small>
|
|
149
|
+
<input
|
|
150
|
+
class="inline-block"
|
|
151
|
+
type="text"
|
|
152
|
+
id="cron-schedule"
|
|
153
|
+
name="cron-schedule"
|
|
154
|
+
placeholder="*/30 * * * *"
|
|
155
|
+
bind:value={schedule}
|
|
156
|
+
{disabled}
|
|
157
|
+
/>
|
|
158
|
+
{#if !validCRON}
|
|
159
|
+
<small class="text-red-600"> Invalid cron syntax </small>
|
|
160
|
+
{/if}
|
|
68
161
|
</div>
|
|
69
|
-
{/if}
|
|
70
162
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
<
|
|
76
|
-
{
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
163
|
+
<div class="w-full flex flex-col gap-1">
|
|
164
|
+
<small class="font-bold">Timezone</small>
|
|
165
|
+
|
|
166
|
+
{#if disabled}
|
|
167
|
+
<div>
|
|
168
|
+
<Badge>{timezone}</Badge>
|
|
169
|
+
</div>
|
|
170
|
+
{:else}
|
|
171
|
+
<TimezonePicker {timezone} on:update={(e) => (timezone = e.detail.timezone)} />
|
|
172
|
+
{/if}
|
|
173
|
+
</div>
|
|
174
|
+
|
|
175
|
+
{#if !disabled}
|
|
176
|
+
<div class="w-full">
|
|
177
|
+
<CollapseLink text="Use simplified builder">
|
|
178
|
+
<div class="w-full flex flex-col gap-4 mt-4">
|
|
179
|
+
<div class="w-full flex flex-col gap-1">
|
|
180
|
+
<small class="font-bold">Execute schedule every</small>
|
|
181
|
+
|
|
182
|
+
<div class="w-full flex gap-4">
|
|
183
|
+
<div class="w-full flex flex-col gap-1">
|
|
184
|
+
<select
|
|
185
|
+
{disabled}
|
|
186
|
+
name="execute_every"
|
|
187
|
+
id="execute_every"
|
|
188
|
+
bind:value={executeEvery}
|
|
189
|
+
>
|
|
190
|
+
<option value="second">Second(s)</option>
|
|
191
|
+
<option value="minute">Minute(s)</option>
|
|
192
|
+
<option value="hour">Hour(s)</option>
|
|
193
|
+
<option value="day-month">Day of the month</option>
|
|
194
|
+
<option value="month">Month(s)</option>
|
|
195
|
+
<option value="day-week">Day of the week</option>
|
|
196
|
+
</select>
|
|
197
|
+
</div>
|
|
198
|
+
|
|
199
|
+
<div class="w-full flex flex-col gap-1 justify-center">
|
|
200
|
+
{#if executeEvery == 'second'}
|
|
201
|
+
<input {disabled} type="number" min="0" max="59" bind:value={seconds} />
|
|
202
|
+
<small>Valid range 0-59</small>
|
|
203
|
+
{:else if executeEvery == 'minute'}
|
|
204
|
+
<input {disabled} type="number" min="0" max="59" bind:value={minutes} />
|
|
205
|
+
<small>Valid range 0-59</small>
|
|
206
|
+
{:else if executeEvery == 'hour'}
|
|
207
|
+
<input {disabled} type="number" min="0" max="23" bind:value={hours} />
|
|
208
|
+
<small>Valid range 0-23</small>
|
|
209
|
+
{:else if executeEvery == 'day-month'}
|
|
210
|
+
<!-- <div class="w-full flex">
|
|
211
|
+
<label for="lastDayOfMonth" class="w-full flex items-center gap-2">
|
|
212
|
+
<div class="flex">
|
|
213
|
+
<input type="checkbox" id="lastDayOfMonth" bind:checked={lastDayOfMonth} />
|
|
214
|
+
</div>
|
|
215
|
+
<small> Last day of the month </small>
|
|
216
|
+
</label>
|
|
217
|
+
</div> -->
|
|
218
|
+
{/if}
|
|
219
|
+
</div>
|
|
220
|
+
</div>
|
|
221
|
+
</div>
|
|
222
|
+
|
|
223
|
+
<div class="w-full flex flex-col gap-4">
|
|
224
|
+
{#if executeEvery == 'month'}
|
|
225
|
+
<div class="w-full flex flex-col">
|
|
226
|
+
<Multiselect
|
|
227
|
+
{disabled}
|
|
228
|
+
bind:selected={monthsOfYear}
|
|
229
|
+
options={monthsOfYearOptions}
|
|
230
|
+
selectedOptionsDraggable={false}
|
|
231
|
+
placeholder="Every month"
|
|
232
|
+
/>
|
|
233
|
+
</div>
|
|
234
|
+
{/if}
|
|
235
|
+
|
|
236
|
+
{#if executeEvery == 'day-week'}
|
|
237
|
+
<div class="w-full flex flex-col">
|
|
238
|
+
<Multiselect
|
|
239
|
+
{disabled}
|
|
240
|
+
bind:selected={daysOfWeek}
|
|
241
|
+
options={daysOfWeekOptions}
|
|
242
|
+
selectedOptionsDraggable={false}
|
|
243
|
+
placeholder="Every day"
|
|
244
|
+
/>
|
|
245
|
+
</div>
|
|
246
|
+
{/if}
|
|
247
|
+
|
|
248
|
+
{#if executeEvery == 'day-month' || executeEvery == 'month'}
|
|
249
|
+
<div class="w-full flex flex-col gap-1">
|
|
250
|
+
{#if executeEvery == 'month'}
|
|
251
|
+
<small class="font-bold">On day of the month</small>
|
|
252
|
+
{/if}
|
|
253
|
+
<div class="w-full flex gap-4">
|
|
254
|
+
<div class="w-full flex">
|
|
255
|
+
<Multiselect
|
|
256
|
+
{disabled}
|
|
257
|
+
bind:selected={daysOfMonth}
|
|
258
|
+
options={daysOfMonthOptions}
|
|
259
|
+
selectedOptionsDraggable={false}
|
|
260
|
+
placeholder="Every day"
|
|
261
|
+
/>
|
|
262
|
+
</div>
|
|
263
|
+
|
|
264
|
+
<!-- {#if executeEvery == 'month'}
|
|
265
|
+
<div class="w-full flex">
|
|
266
|
+
<label for="lastDayOfMonth" class="w-full flex items-center gap-2">
|
|
267
|
+
<div class="flex">
|
|
268
|
+
<input type="checkbox" id="lastDayOfMonth" bind:checked={lastDayOfMonth} />
|
|
269
|
+
</div>
|
|
270
|
+
<small> Last day of the month </small>
|
|
271
|
+
</label>
|
|
272
|
+
</div>
|
|
273
|
+
{/if} -->
|
|
274
|
+
</div>
|
|
275
|
+
<small>Schedule will only execute on valid calendar days</small>
|
|
276
|
+
</div>
|
|
277
|
+
{/if}
|
|
278
|
+
|
|
279
|
+
{#if executeEvery == 'day-month' || executeEvery == 'month' || executeEvery == 'day-week'}
|
|
280
|
+
<div class="w-full flex flex-col gap-1">
|
|
281
|
+
<small class="font-bold">At UTC Time</small>
|
|
282
|
+
<input
|
|
283
|
+
{disabled}
|
|
284
|
+
type="time"
|
|
285
|
+
name="atUTCTime"
|
|
286
|
+
id="atUTCTime"
|
|
287
|
+
bind:value={UTCTime}
|
|
288
|
+
/>
|
|
289
|
+
</div>
|
|
290
|
+
{/if}
|
|
291
|
+
</div>
|
|
292
|
+
|
|
293
|
+
<div class="w-full flex flex-col gap-1">
|
|
294
|
+
<small class="font-bold">Preview New Cron</small>
|
|
295
|
+
|
|
296
|
+
<div class="flex p-2 px-4 rounded-md bg-gray-100">
|
|
297
|
+
<span>{nschedule}</span>
|
|
298
|
+
</div>
|
|
299
|
+
</div>
|
|
300
|
+
</div>
|
|
301
|
+
|
|
302
|
+
<div class="mt-4">
|
|
303
|
+
<Button variant="border" color="dark" size="xs" on:click={() => (schedule = nschedule)}
|
|
304
|
+
>Set Schedule</Button
|
|
305
|
+
>
|
|
306
|
+
</div>
|
|
307
|
+
</CollapseLink>
|
|
86
308
|
</div>
|
|
87
309
|
{/if}
|
|
88
|
-
</
|
|
310
|
+
</div>
|
|
311
|
+
|
|
312
|
+
<div class="w-full flex flex-col space-y-2">
|
|
313
|
+
<h3>Execution summary</h3>
|
|
314
|
+
<hr />
|
|
315
|
+
<div class="flex flex-col space-y-2">
|
|
316
|
+
<small>Estimated upcoming events ({timezone})</small>
|
|
317
|
+
<div class="flex flex-col rounded-md p-4 border text-gray-600">
|
|
318
|
+
{#each preview as date}
|
|
319
|
+
<div class="flex items-center space-x-2">
|
|
320
|
+
<span>{dateFormatter(new Date(date))}</span>
|
|
321
|
+
</div>
|
|
322
|
+
{/each}
|
|
323
|
+
</div>
|
|
324
|
+
</div>
|
|
325
|
+
</div>
|
|
89
326
|
</div>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
|
-
export declare const OFFSET: number;
|
|
3
2
|
declare const __propDef: {
|
|
4
3
|
props: {
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
schedule: string;
|
|
5
|
+
timezone: string;
|
|
7
6
|
disabled?: boolean | undefined;
|
|
7
|
+
validCRON?: boolean | undefined;
|
|
8
8
|
};
|
|
9
9
|
events: {
|
|
10
10
|
[evt: string]: CustomEvent<any>;
|
|
@@ -82,19 +82,17 @@ let jsonViewer;
|
|
|
82
82
|
<div class="mb-2 text-gray-500 text-sm bg-gray-50/20">
|
|
83
83
|
as JSON <input class="windmillapp" type="checkbox" bind:checked={forceJson} /></div
|
|
84
84
|
>{/if}{#if typeof result == 'object' && Object.keys(result).length > 0}<div
|
|
85
|
-
class="mb-2
|
|
85
|
+
class="mb-2 w-full text-sm text-gray-700 relative"
|
|
86
86
|
>The result keys are: <b>{truncate(Object.keys(result).join(', '), 50)}</b>
|
|
87
|
-
<div class="text-gray-500 text-sm
|
|
87
|
+
<div class="text-gray-500 text-sm absolute top-6 right-0">
|
|
88
88
|
<button on:click={jsonViewer.openDrawer}>Expand JSON</button>
|
|
89
89
|
</div></div
|
|
90
90
|
>{/if}{#if !forceJson && resultKind == 'table-col'}<div
|
|
91
|
-
class="grid grid-flow-col-dense border border-gray-200 rounded-md
|
|
91
|
+
class="grid grid-flow-col-dense border border-gray-200 rounded-md"
|
|
92
92
|
>
|
|
93
93
|
{#each Object.keys(result) as col}
|
|
94
94
|
<div class="flex flex-col max-h-40 min-w-full">
|
|
95
|
-
<div
|
|
96
|
-
class="px-12 text-left uppercase border-b bg-gray-50 overflow-hidden rounded-t-md "
|
|
97
|
-
>
|
|
95
|
+
<div class="px-12 text-left uppercase border-b bg-gray-50 overflow-hidden rounded-t-md">
|
|
98
96
|
{col}
|
|
99
97
|
</div>
|
|
100
98
|
{#if Array.isArray(result[col])}
|
|
@@ -108,7 +106,7 @@ let jsonViewer;
|
|
|
108
106
|
{/each}
|
|
109
107
|
</div>
|
|
110
108
|
{:else if !forceJson && resultKind == 'table-row'}<div
|
|
111
|
-
class="grid grid-flow-col-dense border border-gray-200
|
|
109
|
+
class="grid grid-flow-col-dense border border-gray-200"
|
|
112
110
|
>
|
|
113
111
|
<TableCustom>
|
|
114
112
|
<tbody slot="body">
|
|
@@ -39,8 +39,8 @@ const dispatch = createEventDispatcher();
|
|
|
39
39
|
dispatch('click', { item: item?.eventName })
|
|
40
40
|
}
|
|
41
41
|
}}
|
|
42
|
-
class="block w-full
|
|
43
|
-
px-4 py-2 text-sm text-gray-700 text-left
|
|
42
|
+
class="block w-full whitespace-nowrap hover:drop-shadow-sm hover:bg-gray-50 hover:bg-opacity-30
|
|
43
|
+
px-4 py-2 text-sm text-gray-700 text-left
|
|
44
44
|
{item.disabled ? 'bg-gray-200' : ''}
|
|
45
45
|
{item.separatorTop ? 'border-t' : ''} {item.separatorBottom ? 'border-b' : ''} {item.type ==
|
|
46
46
|
'delete'
|
|
@@ -64,7 +64,7 @@ const dispatch = createEventDispatcher();
|
|
|
64
64
|
<a
|
|
65
65
|
href={item.href}
|
|
66
66
|
on:click|stopPropagation|preventDefault={() => goto(item.href ?? '')}
|
|
67
|
-
class="block w-full px-4 font-semibold text-left
|
|
67
|
+
class="block w-full px-4 font-semibold text-left py-2 text-sm text-gray-700 hover:drop-shadow-sm hover:bg-gray-50 hover:bg-opacity-30
|
|
68
68
|
{item.disabled ? 'bg-gray-200' : ''}"
|
|
69
69
|
role="menuitem"
|
|
70
70
|
tabindex="-1"
|
|
@@ -81,9 +81,10 @@ const dispatch = createEventDispatcher();
|
|
|
81
81
|
{item.displayName}
|
|
82
82
|
</a>
|
|
83
83
|
{:else}
|
|
84
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
84
85
|
<span
|
|
85
86
|
class:bg-gray-50={item.disabled}
|
|
86
|
-
class="block
|
|
87
|
+
class="block text-left px-4 py-2 text-sm text-gray-700 cursor-auto"
|
|
87
88
|
role="menuitem"
|
|
88
89
|
tabindex="-1"
|
|
89
90
|
id="user-menu-item-{name}-{i}}"
|