windmill-components 1.352.8 → 1.362.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/package/assets/app.css +8 -45
- package/package/components/ApiConnectForm.svelte +1 -0
- package/package/components/ArgInput.svelte +5 -1
- package/package/components/ChangeInstanceUsername.svelte +20 -12
- package/package/components/ContentSearchInner.svelte +359 -0
- package/package/components/{ContentSearch.svelte.d.ts → ContentSearchInner.svelte.d.ts} +9 -5
- package/package/components/CustomPopover.svelte +73 -0
- package/package/components/CustomPopover.svelte.d.ts +29 -0
- package/package/components/DateTimeInput.svelte +29 -3
- package/package/components/DateTimeInput.svelte.d.ts +4 -0
- package/package/components/Dev.svelte +8 -3
- package/package/components/DurationMs.svelte +2 -2
- package/package/components/FlowBuilder.svelte +122 -24
- package/package/components/FlowBuilder.svelte.d.ts +1 -0
- package/package/components/FlowGraphViewerStep.svelte +2 -2
- package/package/components/FlowJobResult.svelte +5 -3
- package/package/components/FlowStatusViewer.svelte +4 -3
- package/package/components/FlowStatusViewerInner.svelte +265 -160
- package/package/components/FlowStatusViewerInner.svelte.d.ts +15 -2
- package/package/components/HighlightTheme.svelte +75 -77
- package/package/components/InputTransformForm.svelte +2 -0
- package/package/components/JobArgs.svelte +59 -44
- package/package/components/JobArgs.svelte.d.ts +2 -0
- package/package/components/LightweightArgInput.svelte +27 -2
- package/package/components/Path.svelte +3 -8
- package/package/components/Popover.svelte +1 -1
- package/package/components/ResourceEditor.svelte +6 -3
- package/package/components/ResourceEditor.svelte.d.ts +2 -0
- package/package/components/ResourceEditorDrawer.svelte +4 -1
- package/package/components/ResourcePicker.svelte +1 -0
- package/package/components/RunChart.svelte +6 -3
- package/package/components/RunChart.svelte.d.ts +1 -0
- package/package/components/RunForm.svelte +24 -23
- package/package/components/RunForm.svelte.d.ts +0 -2
- package/package/components/SavedInputs.svelte +50 -39
- package/package/components/ScheduleEditorInner.svelte +26 -4
- package/package/components/ScriptBuilder.svelte +47 -22
- package/package/components/ScriptBuilder.svelte.d.ts +1 -0
- package/package/components/SearchItems.svelte +5 -4
- package/package/components/Summary.svelte +74 -0
- package/package/components/Summary.svelte.d.ts +16 -0
- package/package/components/apps/components/display/AppMarkdown.svelte +3 -2
- package/package/components/apps/components/display/AppMenu.svelte +2 -2
- package/package/components/apps/components/display/AppNavbar.svelte +94 -0
- package/package/components/apps/components/display/AppNavbar.svelte.d.ts +24 -0
- package/package/components/apps/components/display/AppNavbarItem.svelte +146 -0
- package/package/components/apps/components/display/AppNavbarItem.svelte.d.ts +27 -0
- package/package/components/apps/components/display/ResolveNavbarItemPath.svelte +21 -0
- package/package/components/apps/components/display/ResolveNavbarItemPath.svelte.d.ts +20 -0
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +16 -0
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +12 -16
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +5 -0
- package/package/components/apps/components/display/table/AppAggridTable.svelte +28 -6
- package/package/components/apps/components/display/table/AppAggridTableActions.svelte +68 -43
- package/package/components/apps/components/inputs/AppDateSelect.svelte +284 -0
- package/package/components/apps/components/inputs/AppDateSelect.svelte.d.ts +21 -0
- package/package/components/apps/components/inputs/AppDateTimeInput.svelte +2 -0
- package/package/components/apps/components/inputs/AppFileInput.svelte +22 -27
- package/package/components/apps/components/inputs/AppFileInput.svelte.d.ts +1 -0
- package/package/components/apps/components/inputs/AppTextInput.svelte +1 -1
- package/package/components/apps/components/layout/AppDecisionTree.svelte +32 -30
- package/package/components/apps/components/layout/AppModal.svelte +17 -6
- package/package/components/apps/editor/AppDeploymentHistory.svelte +2 -3
- package/package/components/apps/editor/AppDeploymentHistory.svelte.d.ts +3 -2
- package/package/components/apps/editor/AppEditor.svelte +9 -2
- package/package/components/apps/editor/AppEditorHeader.svelte +7 -10
- package/package/components/apps/editor/AppPreview.svelte +12 -3
- package/package/components/apps/editor/AppPreview.svelte.d.ts +2 -0
- package/package/components/apps/editor/DecisionTreeDebug.svelte +92 -68
- package/package/components/apps/editor/DeploymentHistory.svelte +0 -2
- package/package/components/apps/editor/appUtils.d.ts +1 -0
- package/package/components/apps/editor/appUtils.js +17 -0
- package/package/components/apps/editor/component/Component.svelte +23 -0
- package/package/components/apps/editor/component/components.d.ts +205 -3
- package/package/components/apps/editor/component/components.js +160 -1
- package/package/components/apps/editor/component/default-codes.js +13 -13
- package/package/components/apps/editor/component/sets.js +4 -2
- package/package/components/apps/editor/componentsPanel/ComponentList.svelte +12 -12
- package/package/components/apps/editor/componentsPanel/cssUtils.js +39 -3
- package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +6 -0
- package/package/components/apps/editor/contextPanel/ComponentOutput.svelte +2 -2
- package/package/components/apps/editor/contextPanel/ContextPanel.svelte +6 -0
- package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +11 -0
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +4 -0
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +21 -8
- package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +64 -20
- package/package/components/apps/editor/settingsPanel/ContextVariables.svelte +48 -15
- package/package/components/apps/editor/settingsPanel/ContextVariables.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +25 -5
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte +2 -1
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphNode.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/DocLink.svelte +33 -0
- package/package/components/apps/editor/settingsPanel/DocLink.svelte.d.ts +19 -0
- package/package/components/apps/editor/settingsPanel/GridNavbar.svelte +192 -0
- package/package/components/apps/editor/settingsPanel/GridNavbar.svelte.d.ts +18 -0
- package/package/components/apps/editor/settingsPanel/GridTab.svelte +2 -2
- package/package/components/apps/editor/settingsPanel/RefreshDatabaseStudioTable.svelte +17 -0
- package/package/components/apps/editor/settingsPanel/RefreshDatabaseStudioTable.svelte.d.ts +16 -0
- package/package/components/apps/editor/settingsPanel/TableActions.svelte +81 -38
- package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +12 -5
- package/package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +11 -12
- package/package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +4 -2
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +4 -1
- package/package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +7 -1
- package/package/components/apps/inputType.d.ts +2 -2
- package/package/components/apps/svelte-select/lib/Select.svelte +2 -3
- package/package/components/apps/types.d.ts +3 -0
- package/package/components/auditLogs/AuditLogsTable.svelte +2 -2
- package/package/components/common/CloseButton.svelte +10 -10
- package/package/components/common/CloseButton.svelte.d.ts +6 -14
- package/package/components/common/calendarPicker/CalendarPicker.svelte +5 -0
- package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +2 -0
- package/package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +7 -1
- package/package/components/common/fileInput/FileInput.svelte +2 -0
- package/package/components/common/fileInput/FileInput.svelte.d.ts +1 -0
- package/package/components/common/popup/Popup.svelte +4 -3
- package/package/components/common/popup/Popup.svelte.d.ts +1 -0
- package/package/components/common/table/AppRow.svelte +3 -10
- package/package/components/common/table/FlowRow.svelte +12 -1
- package/package/components/copilot/IteratorGen.svelte +1 -1
- package/package/components/copilot/PredicateGen.svelte +1 -1
- package/package/components/copilot/StepInputGen.svelte +8 -3
- package/package/components/copilot/StepInputsGen.svelte +5 -2
- package/package/components/details/WebhooksPanel.svelte +32 -1
- package/package/components/details/WebhooksPanel.svelte.d.ts +2 -11
- package/package/components/flows/FlowHistory.svelte +208 -0
- package/package/components/flows/FlowHistory.svelte.d.ts +21 -0
- package/package/components/flows/content/FlowBranchesAllWrapper.svelte +1 -1
- package/package/components/flows/content/FlowBranchesOneWrapper.svelte +1 -1
- package/package/components/flows/content/FlowEditorPanel.svelte +1 -1
- package/package/components/flows/content/FlowLoop.svelte +23 -26
- package/package/components/flows/content/FlowModuleComponent.svelte +2 -18
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +10 -4
- package/package/components/flows/content/FlowModuleHeader.svelte +3 -4
- package/package/components/flows/content/FlowModuleScript.svelte +1 -1
- package/package/components/flows/content/FlowModuleSleep.svelte +1 -0
- package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
- package/package/components/flows/content/SuspendDrawer.svelte +7 -7
- package/package/components/flows/flowStateUtils.js +2 -1
- package/package/components/flows/flowStore.js +1 -1
- package/package/components/flows/header/FlowImportExportMenu.svelte +3 -16
- package/package/components/flows/header/FlowImportExportMenu.svelte.d.ts +4 -1
- package/package/components/flows/map/FlowJobsMenu.svelte +69 -0
- package/package/components/flows/map/FlowJobsMenu.svelte.d.ts +22 -0
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +7 -4
- package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
- package/package/components/flows/map/MapItem.svelte +20 -0
- package/package/components/flows/map/MapItem.svelte.d.ts +9 -0
- package/package/components/flows/map/VirtualItem.svelte +4 -2
- package/package/components/flows/map/VirtualItem.svelte.d.ts +1 -0
- package/package/components/flows/previousResults.d.ts +9 -0
- package/package/components/flows/previousResults.js +42 -8
- package/package/components/flows/propPicker/PropPickerWrapper.svelte +2 -0
- package/package/components/flows/propPicker/PropPickerWrapper.svelte.d.ts +1 -0
- package/package/components/flows/types.d.ts +1 -1
- package/package/components/graph/FlowGraph.svelte +80 -42
- package/package/components/graph/FlowGraph.svelte.d.ts +1 -0
- package/package/components/graph/model.d.ts +6 -1
- package/package/components/graph/svelvet/container/controllers/middleware.js +4 -4
- package/package/components/graph/svelvet/container/views/GraphView.svelte +2 -0
- package/package/components/graph/svelvet/edges/views/Edges/EdgeText.svelte +24 -25
- package/package/components/graph/util.d.ts +1 -1
- package/package/components/graph/util.js +1 -2
- package/package/components/home/ItemsList.svelte +22 -19
- package/package/components/jobs/JobPreview.svelte +11 -2
- package/package/components/propertyPicker/PropPicker.svelte +30 -0
- package/package/components/propertyPicker/PropPickerResult.svelte +14 -1
- package/package/components/propertyPicker/PropPickerResult.svelte.d.ts +1 -0
- package/package/components/runs/JobLoader.svelte +21 -8
- package/package/components/runs/JobLoader.svelte.d.ts +2 -0
- package/package/components/runs/JobPreview.svelte +5 -1
- package/package/components/runs/RunRow.svelte +12 -8
- package/package/components/runs/RunsFilter.svelte +2 -4
- package/package/components/runs/RunsFilter.svelte.d.ts +0 -1
- package/package/components/runs/RunsTable.svelte +63 -29
- package/package/components/runs/RunsTable.svelte.d.ts +1 -0
- package/package/components/schema/EditableSchemaWrapper.svelte +12 -0
- package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +3 -0
- package/package/components/schema/PropertyEditor.svelte +1 -1
- package/package/components/search/GlobalSearchModal.svelte +559 -0
- package/package/components/search/GlobalSearchModal.svelte.d.ts +17 -0
- package/package/components/search/QuickMenuItem.svelte +76 -0
- package/package/components/search/QuickMenuItem.svelte.d.ts +27 -0
- package/package/components/sidebar/MenuButton.svelte +11 -0
- package/package/components/sidebar/MenuButton.svelte.d.ts +4 -0
- package/package/components/sidebar/changelogs.js +35 -0
- package/package/components/wizards/AppPicker.svelte +68 -0
- package/package/components/wizards/AppPicker.svelte.d.ts +17 -0
- package/package/components/wizards/NavbarWizard.svelte +131 -0
- package/package/components/wizards/NavbarWizard.svelte.d.ts +19 -0
- package/package/defaults.d.ts +1 -1
- package/package/defaults.js +1 -1
- package/package/es6.d.ts.txt +370 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +42 -3
- package/package/gen/schemas.gen.js +42 -3
- package/package/gen/services.gen.d.ts +80 -5
- package/package/gen/services.gen.js +149 -8
- package/package/gen/types.gen.d.ts +265 -11
- package/package/inferArgSig.js +4 -0
- package/package/script_helpers.d.ts +3 -3
- package/package/script_helpers.js +46 -22
- package/package/stores.d.ts +1 -1
- package/package/stores.js +1 -1
- package/package/utils.d.ts +7 -23
- package/package/utils.js +54 -33
- package/package/windmill_fetch.d.ts.txt +6 -6
- package/package.json +3 -11
- package/package/components/ContentSearch.svelte +0 -355
package/package/assets/app.css
CHANGED
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
list-style-type: '- ';
|
|
29
29
|
padding-left: 3rem;
|
|
30
30
|
}
|
|
31
|
+
|
|
31
32
|
.autocomplete-list-item-create {
|
|
32
33
|
@apply !text-primary-inverse !bg-surface-inverse;
|
|
33
34
|
}
|
|
@@ -47,32 +48,8 @@
|
|
|
47
48
|
.autocomplete-list {
|
|
48
49
|
@apply !bg-surface;
|
|
49
50
|
}
|
|
50
|
-
|
|
51
|
-
.ol-overlaycontainer-stopevent {
|
|
52
|
-
@apply flex flex-col justify-start items-end;
|
|
53
|
-
}
|
|
54
|
-
.ol-control button {
|
|
55
|
-
@apply w-7 h-7 center-center bg-surface border text-secondary
|
|
56
|
-
rounded mt-1 mr-1 shadow duration-200 hover:bg-surface-hover focus:bg-surface-hover;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/* Components */
|
|
60
|
-
.component-wrapper {
|
|
61
|
-
@apply rounded-component border overflow-hidden border-gray-300 dark:border-gray-600;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
.app-editor-input {
|
|
65
|
-
@apply rounded-component border border-gray-300 dark:border-gray-500 focus:border-gray-300 focus:dark:border-gray-500 focus:!ring-1 focus:!ring-blue-300;
|
|
66
|
-
@apply placeholder:text-gray-400 dark:placeholder:text-gray-600;
|
|
67
|
-
}
|
|
68
51
|
}
|
|
69
52
|
|
|
70
|
-
@layer components {
|
|
71
|
-
/* Flow graph viewer -> Svelvet library internal class overwrite */
|
|
72
|
-
.Node {
|
|
73
|
-
display: flex !important;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
53
|
@layer utilities {
|
|
77
54
|
@variants responsive {
|
|
78
55
|
/* Hide scrollbar for Chrome, Safari and Opera */
|
|
@@ -104,14 +81,6 @@
|
|
|
104
81
|
z-index: 10001 !important;
|
|
105
82
|
}
|
|
106
83
|
|
|
107
|
-
.z5000 {
|
|
108
|
-
z-index: 5000 !important;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
.foo {
|
|
112
|
-
color: red !important;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
84
|
svelte-virtual-list-row {
|
|
116
85
|
overflow: visible !important;
|
|
117
86
|
}
|
|
@@ -125,19 +94,13 @@ svelte-virtual-list-contents > * + * {
|
|
|
125
94
|
box-shadow: none !important;
|
|
126
95
|
}
|
|
127
96
|
|
|
128
|
-
.
|
|
129
|
-
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
.grid-cell-centered {
|
|
133
|
-
display: flex;
|
|
134
|
-
align-items: center;
|
|
135
|
-
justify-content: center;
|
|
136
|
-
}
|
|
137
|
-
.grid-cell-centered .svelte-select {
|
|
138
|
-
height: 32px !important;
|
|
97
|
+
.component-wrapper {
|
|
98
|
+
@apply rounded-component border overflow-hidden border-gray-300 dark:border-gray-600;
|
|
139
99
|
}
|
|
140
100
|
|
|
141
|
-
.
|
|
142
|
-
|
|
101
|
+
.app-editor-input {
|
|
102
|
+
@apply rounded-component border border-gray-300 dark:border-gray-500 focus:border-gray-300 focus:dark:border-gray-500 focus:!ring-1 focus:!ring-blue-300;
|
|
103
|
+
@apply placeholder:text-gray-400 dark:placeholder:text-gray-200;
|
|
104
|
+
@apply bg-surface;
|
|
105
|
+
@apply disabled:placeholder:text-gray-200 disabled:placeholder:dark:text-gray-500 disabled:text-gray-200 disabled:dark:text-gray-500 disabled:border-gray-200 disabled:dark:border-gray-600;
|
|
143
106
|
}
|
|
@@ -683,7 +683,11 @@ $: shouldDispatchChanges && debounced(value);
|
|
|
683
683
|
multiple={false}
|
|
684
684
|
/>
|
|
685
685
|
{#if value?.length}
|
|
686
|
-
<div class="text-2xs text-tertiary mt-1"
|
|
686
|
+
<div class="text-2xs text-tertiary mt-1"
|
|
687
|
+
>File length: {value.length} base64 chars ({(value.length / 1024 / 1024).toFixed(
|
|
688
|
+
2
|
|
689
|
+
)}MB)</div
|
|
690
|
+
>
|
|
687
691
|
{/if}
|
|
688
692
|
</div>
|
|
689
693
|
{:else if inputCat == 'resource-string'}
|
|
@@ -7,6 +7,7 @@ import { createEventDispatcher } from 'svelte';
|
|
|
7
7
|
export let email;
|
|
8
8
|
export let username;
|
|
9
9
|
export let isConflict = false;
|
|
10
|
+
let loading = false;
|
|
10
11
|
let usernameInfo = undefined;
|
|
11
12
|
function handleKeyUp(event) {
|
|
12
13
|
const key = event.key;
|
|
@@ -26,19 +27,25 @@ async function getUsernameInfo() {
|
|
|
26
27
|
getUsernameInfo();
|
|
27
28
|
const dispatch = createEventDispatcher();
|
|
28
29
|
async function renameUser() {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
email,
|
|
36
|
-
requestBody: {
|
|
37
|
-
new_username: username
|
|
30
|
+
loading = true;
|
|
31
|
+
try {
|
|
32
|
+
const automateUsernameCreation = (await SettingService.getGlobal({ key: 'automate_username_creation' })) ?? false;
|
|
33
|
+
if (!automateUsernameCreation) {
|
|
34
|
+
sendUserToast('Modifying the username is only possible when the creation of usernames is automated and defined at instance level..');
|
|
35
|
+
return;
|
|
38
36
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
await UserService.globalUserRename({
|
|
38
|
+
email,
|
|
39
|
+
requestBody: {
|
|
40
|
+
new_username: username
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
sendUserToast(`Renamed user ${email} to ${username}`);
|
|
44
|
+
dispatch('renamed');
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
loading = false;
|
|
48
|
+
}
|
|
42
49
|
}
|
|
43
50
|
</script>
|
|
44
51
|
|
|
@@ -116,6 +123,7 @@ async function renameUser() {
|
|
|
116
123
|
})
|
|
117
124
|
}}
|
|
118
125
|
disabled={email === undefined || !username}
|
|
126
|
+
{loading}
|
|
119
127
|
>
|
|
120
128
|
Confirm username change
|
|
121
129
|
</Button>
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
<script>import { AppService, FlowService, ResourceService, ScriptService } from '../gen';
|
|
2
|
+
import { enterpriseLicense, workspaceStore } from '../stores';
|
|
3
|
+
import { Boxes, Code2, Edit, LayoutDashboard, Loader2 } from 'lucide-svelte';
|
|
4
|
+
import SearchItems from './SearchItems.svelte';
|
|
5
|
+
import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
6
|
+
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
|
|
7
|
+
import FlowIcon from './home/FlowIcon.svelte';
|
|
8
|
+
import { Alert, Button } from './common';
|
|
9
|
+
import YAML from 'yaml';
|
|
10
|
+
export let search = '';
|
|
11
|
+
export let classNameInner = 'max-h-[80vh]';
|
|
12
|
+
export async function open(nsearch) {
|
|
13
|
+
await Promise.all([loadScripts(), loadResources(), loadApps(), loadFlows()]);
|
|
14
|
+
if (nsearch) {
|
|
15
|
+
search = nsearch;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export async function loadScripts() {
|
|
19
|
+
scripts = await ScriptService.listSearchScript({ workspace: $workspaceStore ?? '' });
|
|
20
|
+
}
|
|
21
|
+
export async function loadResources() {
|
|
22
|
+
resources = await ResourceService.listSearchResource({ workspace: $workspaceStore ?? '' });
|
|
23
|
+
}
|
|
24
|
+
export async function loadApps() {
|
|
25
|
+
apps = await AppService.listSearchApp({ workspace: $workspaceStore ?? '' });
|
|
26
|
+
}
|
|
27
|
+
export async function loadFlows() {
|
|
28
|
+
flows = await FlowService.listSearchFlow({ workspace: $workspaceStore ?? '' });
|
|
29
|
+
}
|
|
30
|
+
let searchKind = 'all';
|
|
31
|
+
let scripts = undefined;
|
|
32
|
+
let filteredScriptItems = [];
|
|
33
|
+
let resources = undefined;
|
|
34
|
+
let filteredResourceItems = [];
|
|
35
|
+
let flows = undefined;
|
|
36
|
+
let filteredFlowItems = [];
|
|
37
|
+
let apps = undefined;
|
|
38
|
+
let filteredAppItems = [];
|
|
39
|
+
function getCounts(n) {
|
|
40
|
+
return ` (${n})`;
|
|
41
|
+
}
|
|
42
|
+
function escape(htmlStr) {
|
|
43
|
+
return htmlStr
|
|
44
|
+
.replace(/&/g, '&')
|
|
45
|
+
.replace(/</g, '<')
|
|
46
|
+
.replace(/>/g, '>')
|
|
47
|
+
.replace(/"/g, '"')
|
|
48
|
+
.replace(/'/g, ''');
|
|
49
|
+
}
|
|
50
|
+
$: counts =
|
|
51
|
+
search == '' ||
|
|
52
|
+
!scripts ||
|
|
53
|
+
!resources ||
|
|
54
|
+
!flows ||
|
|
55
|
+
!apps ||
|
|
56
|
+
!filteredAppItems ||
|
|
57
|
+
!filteredFlowItems ||
|
|
58
|
+
!filteredResourceItems ||
|
|
59
|
+
!filteredScriptItems
|
|
60
|
+
? {
|
|
61
|
+
all: '',
|
|
62
|
+
apps: '',
|
|
63
|
+
flows: '',
|
|
64
|
+
resources: '',
|
|
65
|
+
scripts: ''
|
|
66
|
+
}
|
|
67
|
+
: {
|
|
68
|
+
all: getCounts(filteredAppItems.length +
|
|
69
|
+
filteredFlowItems.length +
|
|
70
|
+
filteredResourceItems.length +
|
|
71
|
+
filteredScriptItems.length),
|
|
72
|
+
apps: getCounts(filteredAppItems.length),
|
|
73
|
+
resources: getCounts(filteredResourceItems.length),
|
|
74
|
+
flows: getCounts(filteredFlowItems.length),
|
|
75
|
+
scripts: getCounts(filteredScriptItems.length)
|
|
76
|
+
};
|
|
77
|
+
let showNbScripts = 10;
|
|
78
|
+
let showNbApps = 10;
|
|
79
|
+
let showNbResources = 10;
|
|
80
|
+
let showNbFlows = 10;
|
|
81
|
+
$: search && resetShows();
|
|
82
|
+
function resetShows() {
|
|
83
|
+
showNbScripts = 10;
|
|
84
|
+
showNbApps = 10;
|
|
85
|
+
showNbResources = 10;
|
|
86
|
+
showNbFlows = 10;
|
|
87
|
+
}
|
|
88
|
+
</script>
|
|
89
|
+
|
|
90
|
+
<SearchItems
|
|
91
|
+
filter={search}
|
|
92
|
+
items={scripts}
|
|
93
|
+
f={(s) => {
|
|
94
|
+
return escape(s.content)
|
|
95
|
+
}}
|
|
96
|
+
bind:filteredItems={filteredScriptItems}
|
|
97
|
+
/>
|
|
98
|
+
|
|
99
|
+
<SearchItems
|
|
100
|
+
filter={search}
|
|
101
|
+
items={resources}
|
|
102
|
+
f={(s) => {
|
|
103
|
+
return escape(YAML.stringify(s.value))
|
|
104
|
+
}}
|
|
105
|
+
bind:filteredItems={filteredResourceItems}
|
|
106
|
+
/>
|
|
107
|
+
|
|
108
|
+
<SearchItems
|
|
109
|
+
filter={search}
|
|
110
|
+
items={flows}
|
|
111
|
+
f={(s) => {
|
|
112
|
+
return escape(YAML.stringify(s.value, null, 4))
|
|
113
|
+
}}
|
|
114
|
+
bind:filteredItems={filteredFlowItems}
|
|
115
|
+
/>
|
|
116
|
+
|
|
117
|
+
<SearchItems
|
|
118
|
+
filter={search}
|
|
119
|
+
items={apps}
|
|
120
|
+
f={(s) => {
|
|
121
|
+
return escape(YAML.stringify(s.value, null, 4))
|
|
122
|
+
}}
|
|
123
|
+
bind:filteredItems={filteredAppItems}
|
|
124
|
+
/>
|
|
125
|
+
|
|
126
|
+
<div class="px-2 py-2 overflow-auto">
|
|
127
|
+
<div class="flex gap-2 flex-wrap">
|
|
128
|
+
<div class="flex justify-start">
|
|
129
|
+
<ToggleButtonGroup bind:selected={searchKind} class="h-10">
|
|
130
|
+
<ToggleButton small light value="all" label={'All' + counts.all} />
|
|
131
|
+
<ToggleButton small light value="scripts" icon={Code2} label={'Scripts' + counts.scripts} />
|
|
132
|
+
<ToggleButton
|
|
133
|
+
small
|
|
134
|
+
light
|
|
135
|
+
value="resources"
|
|
136
|
+
icon={Boxes}
|
|
137
|
+
label={'Resources' + counts.resources}
|
|
138
|
+
/>
|
|
139
|
+
<ToggleButton
|
|
140
|
+
small
|
|
141
|
+
light
|
|
142
|
+
value="flows"
|
|
143
|
+
label={'Flows' + counts.flows}
|
|
144
|
+
icon={FlowIcon}
|
|
145
|
+
selectedColor="#14b8a6"
|
|
146
|
+
/>
|
|
147
|
+
<ToggleButton
|
|
148
|
+
small
|
|
149
|
+
light
|
|
150
|
+
value="apps"
|
|
151
|
+
label={'Apps' + counts.apps}
|
|
152
|
+
icon={LayoutDashboard}
|
|
153
|
+
selectedColor="#fb923c"
|
|
154
|
+
/>
|
|
155
|
+
</ToggleButtonGroup>
|
|
156
|
+
</div>
|
|
157
|
+
<div class="relative text-tertiary grow min-w-[100px]">
|
|
158
|
+
<slot name="input-slot" />
|
|
159
|
+
<button type="submit" class="absolute right-0 top-0 mt-3 mr-4">
|
|
160
|
+
<svg
|
|
161
|
+
class="h-4 w-4 fill-current"
|
|
162
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
163
|
+
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
164
|
+
version="1.1"
|
|
165
|
+
id="Capa_1"
|
|
166
|
+
x="0px"
|
|
167
|
+
y="0px"
|
|
168
|
+
viewBox="0 0 56.966 56.966"
|
|
169
|
+
style="enable-background:new 0 0 56.966 56.966;"
|
|
170
|
+
xml:space="preserve"
|
|
171
|
+
width="512px"
|
|
172
|
+
height="512px"
|
|
173
|
+
>
|
|
174
|
+
<path
|
|
175
|
+
d="M55.146,51.887L41.588,37.786c3.486-4.144,5.396-9.358,5.396-14.786c0-12.682-10.318-23-23-23s-23,10.318-23,23 s10.318,23,23,23c4.761,0,9.298-1.436,13.177-4.162l13.661,14.208c0.571,0.593,1.339,0.92,2.162,0.92 c0.779,0,1.518-0.297,2.079-0.837C56.255,54.982,56.293,53.08,55.146,51.887z M23.984,6c9.374,0,17,7.626,17,17s-7.626,17-17,17 s-17-7.626-17-17S14.61,6,23.984,6z"
|
|
176
|
+
/>
|
|
177
|
+
</svg>
|
|
178
|
+
</button>
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
<div class="mt-1">
|
|
182
|
+
<div class="text-xs text-secondary"
|
|
183
|
+
>Searching among <div class="inline-flex"
|
|
184
|
+
>{#if scripts}{scripts?.length}{:else}
|
|
185
|
+
<Loader2 size={10} class="animate-spin " />
|
|
186
|
+
{/if}</div
|
|
187
|
+
>
|
|
188
|
+
scripts,
|
|
189
|
+
<div class="inline-flex"
|
|
190
|
+
>{#if resources}{resources?.length}{:else}
|
|
191
|
+
<Loader2 size={10} class="animate-spin " />
|
|
192
|
+
{/if}</div
|
|
193
|
+
>
|
|
194
|
+
resources,
|
|
195
|
+
<div class="inline-flex"
|
|
196
|
+
>{#if flows}{flows?.length}{:else}
|
|
197
|
+
<Loader2 size={10} class="animate-spin " />
|
|
198
|
+
{/if}</div
|
|
199
|
+
>
|
|
200
|
+
flows,
|
|
201
|
+
<div class="inline-flex"
|
|
202
|
+
>{#if apps}{apps?.length}{:else}
|
|
203
|
+
<Loader2 size={10} class="animate-spin " />
|
|
204
|
+
{/if}</div
|
|
205
|
+
>
|
|
206
|
+
apps</div
|
|
207
|
+
>
|
|
208
|
+
</div>
|
|
209
|
+
|
|
210
|
+
<div class="mt-1 overflow-auto {classNameInner}">
|
|
211
|
+
{#if !$enterpriseLicense}
|
|
212
|
+
<div class="py-1" />
|
|
213
|
+
|
|
214
|
+
<Alert title="Content Search is an EE feature" type="warning">
|
|
215
|
+
Without EE, content search will only search among 10 scripts, 3 flows, 3 apps and 3
|
|
216
|
+
resources.
|
|
217
|
+
</Alert>
|
|
218
|
+
<div class="py-1" />
|
|
219
|
+
{/if}
|
|
220
|
+
|
|
221
|
+
{#if search.trim().length > 0}
|
|
222
|
+
<div class="flex flex-col gap-4">
|
|
223
|
+
{#if (searchKind == 'all' || searchKind == 'scripts') && filteredScriptItems?.length > 0}
|
|
224
|
+
{#each filteredScriptItems.slice(0, showNbScripts) ?? [] as item}
|
|
225
|
+
<div>
|
|
226
|
+
<div class="text-sm font-semibold"
|
|
227
|
+
><a href="/scripts/get/{item.path}">Script: {item.path}</a></div
|
|
228
|
+
>
|
|
229
|
+
<div class="flex gap-2 justify-between">
|
|
230
|
+
<pre class="text-xs border p-2 overflow-auto max-h-40 w-full max-w-2xl"
|
|
231
|
+
><code>{@html item.marked}</code></pre
|
|
232
|
+
>
|
|
233
|
+
<div>
|
|
234
|
+
<div class="flex gap-2">
|
|
235
|
+
<Button
|
|
236
|
+
on:click|once={() => {
|
|
237
|
+
window.open(`/scripts/edit/${item.path}?no_draft=true`, '_blank')?.focus()
|
|
238
|
+
}}
|
|
239
|
+
color="light"
|
|
240
|
+
size="sm"
|
|
241
|
+
startIcon={{ icon: Edit }}
|
|
242
|
+
>
|
|
243
|
+
Edit
|
|
244
|
+
</Button>
|
|
245
|
+
</div>
|
|
246
|
+
</div>
|
|
247
|
+
</div>
|
|
248
|
+
</div>
|
|
249
|
+
{/each}
|
|
250
|
+
{#if filteredScriptItems.length > showNbScripts}
|
|
251
|
+
<a
|
|
252
|
+
href="#"
|
|
253
|
+
class="text-center font-semibold cursor-pointer pb-40"
|
|
254
|
+
on:click={() => {
|
|
255
|
+
showNbScripts += 30
|
|
256
|
+
}}
|
|
257
|
+
>
|
|
258
|
+
({showNbScripts} of {filteredScriptItems.length}) Show more scripts
|
|
259
|
+
</a>
|
|
260
|
+
{/if}
|
|
261
|
+
{/if}
|
|
262
|
+
{#if (searchKind == 'all' || searchKind == 'resources') && filteredResourceItems?.length > 0}
|
|
263
|
+
{#each filteredResourceItems.slice(0, showNbResources) ?? [] as item}
|
|
264
|
+
<div>
|
|
265
|
+
<div class="text-sm font-semibold">Resource: {item.path}</div>
|
|
266
|
+
<div class="flex gap-2 justify-between">
|
|
267
|
+
<pre class="text-xs border p-2 overflow-auto max-h-40 w-full max-w-2xl"
|
|
268
|
+
><code>{@html item.marked}</code></pre
|
|
269
|
+
>
|
|
270
|
+
</div>
|
|
271
|
+
</div>
|
|
272
|
+
{/each}
|
|
273
|
+
{#if filteredResourceItems.length > showNbResources}
|
|
274
|
+
<a
|
|
275
|
+
href="#"
|
|
276
|
+
class="text-center font-semibold cursor-pointer pb-40"
|
|
277
|
+
on:click={() => {
|
|
278
|
+
showNbResources += 30
|
|
279
|
+
}}
|
|
280
|
+
>
|
|
281
|
+
({showNbResources} of {filteredResourceItems.length}) Show more resources
|
|
282
|
+
</a>
|
|
283
|
+
{/if}
|
|
284
|
+
{/if}
|
|
285
|
+
{#if (searchKind == 'all' || searchKind == 'flows') && filteredFlowItems?.length > 0}
|
|
286
|
+
{#each filteredFlowItems.slice(0, showNbFlows) ?? [] as item}
|
|
287
|
+
<div>
|
|
288
|
+
<div class="text-sm font-semibold"
|
|
289
|
+
><a href="/flows/get/{item.path}">Flow: {item.path}</a></div
|
|
290
|
+
>
|
|
291
|
+
<div class="flex gap-2 justify-between">
|
|
292
|
+
<pre class="text-xs border p-2 overflow-auto max-h-40 w-full max-w-2xl"
|
|
293
|
+
><code>{@html item.marked}</code></pre
|
|
294
|
+
>
|
|
295
|
+
<div>
|
|
296
|
+
<div class="flex gap-2">
|
|
297
|
+
<Button
|
|
298
|
+
on:click|once={() => {
|
|
299
|
+
window.open(`/flows/edit/${item.path}?no_draft=true`, '_blank')?.focus()
|
|
300
|
+
}}
|
|
301
|
+
color="light"
|
|
302
|
+
size="sm"
|
|
303
|
+
startIcon={{ icon: Edit }}>Edit</Button
|
|
304
|
+
>
|
|
305
|
+
</div>
|
|
306
|
+
</div>
|
|
307
|
+
</div>
|
|
308
|
+
</div>
|
|
309
|
+
{/each}
|
|
310
|
+
{#if filteredFlowItems.length > showNbFlows}
|
|
311
|
+
<a
|
|
312
|
+
href="#"
|
|
313
|
+
class="text-center font-semibold cursor-pointer pb-40"
|
|
314
|
+
on:click={() => {
|
|
315
|
+
showNbScripts += 30
|
|
316
|
+
}}
|
|
317
|
+
>
|
|
318
|
+
({showNbFlows} of {filteredFlowItems.length}) Show more flows
|
|
319
|
+
</a>
|
|
320
|
+
{/if}
|
|
321
|
+
{/if}
|
|
322
|
+
{#if (searchKind == 'all' || searchKind == 'apps') && filteredAppItems?.length > 0}
|
|
323
|
+
{#each filteredAppItems.slice(0, showNbApps) ?? [] as item}
|
|
324
|
+
<div>
|
|
325
|
+
<div class="text-sm font-semibold"
|
|
326
|
+
><a href="/apps/get/{item.path}">App: {item.path}</a></div
|
|
327
|
+
>
|
|
328
|
+
<div class="flex gap-2 justify-between">
|
|
329
|
+
<pre class="text-xs border p-2 overflow-auto max-h-40 w-full max-w-2xl"
|
|
330
|
+
><code>{@html item.marked}</code></pre
|
|
331
|
+
>
|
|
332
|
+
</div>
|
|
333
|
+
</div>
|
|
334
|
+
{/each}
|
|
335
|
+
{#if filteredAppItems.length > showNbApps}
|
|
336
|
+
<a
|
|
337
|
+
href="#"
|
|
338
|
+
class="text-center font-semibold cursor-pointer pb-40"
|
|
339
|
+
on:click={() => {
|
|
340
|
+
showNbApps += 30
|
|
341
|
+
}}
|
|
342
|
+
>
|
|
343
|
+
({showNbApps} of {filteredAppItems.length}) Show more apps
|
|
344
|
+
</a>
|
|
345
|
+
{/if}
|
|
346
|
+
{/if}
|
|
347
|
+
</div>
|
|
348
|
+
{:else}
|
|
349
|
+
<div class="flex justify-center items-center h-48">
|
|
350
|
+
<div class="text-tertiary text-center">
|
|
351
|
+
<div class="text-2xl font-bold">Empty Search Filter</div>
|
|
352
|
+
<div class="text-sm"
|
|
353
|
+
>Start writing, search everywhere a path is referenced for instance</div
|
|
354
|
+
>
|
|
355
|
+
</div>
|
|
356
|
+
</div>
|
|
357
|
+
{/if}
|
|
358
|
+
</div>
|
|
359
|
+
</div>
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { SvelteComponent } from "svelte";
|
|
2
2
|
declare const __propDef: {
|
|
3
3
|
props: {
|
|
4
|
+
search?: string | undefined;
|
|
5
|
+
classNameInner?: string | undefined;
|
|
4
6
|
open?: ((nsearch?: string) => Promise<void>) | undefined;
|
|
5
7
|
loadScripts?: (() => Promise<void>) | undefined;
|
|
6
8
|
loadResources?: (() => Promise<void>) | undefined;
|
|
@@ -10,12 +12,14 @@ declare const __propDef: {
|
|
|
10
12
|
events: {
|
|
11
13
|
[evt: string]: CustomEvent<any>;
|
|
12
14
|
};
|
|
13
|
-
slots: {
|
|
15
|
+
slots: {
|
|
16
|
+
'input-slot': {};
|
|
17
|
+
};
|
|
14
18
|
};
|
|
15
|
-
export type
|
|
16
|
-
export type
|
|
17
|
-
export type
|
|
18
|
-
export default class
|
|
19
|
+
export type ContentSearchInnerProps = typeof __propDef.props;
|
|
20
|
+
export type ContentSearchInnerEvents = typeof __propDef.events;
|
|
21
|
+
export type ContentSearchInnerSlots = typeof __propDef.slots;
|
|
22
|
+
export default class ContentSearchInner extends SvelteComponent<ContentSearchInnerProps, ContentSearchInnerEvents, ContentSearchInnerSlots> {
|
|
19
23
|
get open(): (nsearch?: string | undefined) => Promise<void>;
|
|
20
24
|
get loadScripts(): () => Promise<void>;
|
|
21
25
|
get loadResources(): () => Promise<void>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
<script>import { createPopperActions } from 'svelte-popperjs';
|
|
2
|
+
import Portal from 'svelte-portal';
|
|
3
|
+
export let placement = 'bottom-end';
|
|
4
|
+
export let notClickable = false;
|
|
5
|
+
export let disablePopup = false;
|
|
6
|
+
export let disappearTimeout = 100;
|
|
7
|
+
export let appearTimeout = 300;
|
|
8
|
+
export let style = undefined;
|
|
9
|
+
export let focusEl = undefined;
|
|
10
|
+
const [popperRef, popperContent] = createPopperActions({ placement });
|
|
11
|
+
const popperOptions = {
|
|
12
|
+
placement,
|
|
13
|
+
strategy: 'fixed',
|
|
14
|
+
modifiers: [
|
|
15
|
+
{ name: 'offset', options: { offset: [8, 8] } },
|
|
16
|
+
{
|
|
17
|
+
name: 'arrow',
|
|
18
|
+
options: {
|
|
19
|
+
padding: 10
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
};
|
|
24
|
+
let showTooltip = false;
|
|
25
|
+
let timeout = undefined;
|
|
26
|
+
let inTimeout = undefined;
|
|
27
|
+
function open() {
|
|
28
|
+
clearTimeout(timeout);
|
|
29
|
+
if (appearTimeout == 0) {
|
|
30
|
+
showTooltip = true;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
inTimeout = setTimeout(() => (showTooltip = true), appearTimeout);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function close() {
|
|
37
|
+
inTimeout && clearTimeout(inTimeout);
|
|
38
|
+
inTimeout = undefined;
|
|
39
|
+
timeout = setTimeout(() => (showTooltip = false), disappearTimeout);
|
|
40
|
+
}
|
|
41
|
+
$: focusEl && focusEl?.focus();
|
|
42
|
+
</script>
|
|
43
|
+
|
|
44
|
+
{#if notClickable}
|
|
45
|
+
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
46
|
+
<span {style} use:popperRef on:mouseenter={open} on:mouseleave={close} class={$$props.class}>
|
|
47
|
+
<slot />
|
|
48
|
+
</span>
|
|
49
|
+
{:else}
|
|
50
|
+
<button
|
|
51
|
+
{style}
|
|
52
|
+
use:popperRef
|
|
53
|
+
on:mouseenter={open}
|
|
54
|
+
on:mouseleave={close}
|
|
55
|
+
on:click
|
|
56
|
+
class={$$props.class}
|
|
57
|
+
>
|
|
58
|
+
<slot />
|
|
59
|
+
</button>
|
|
60
|
+
{/if}
|
|
61
|
+
{#if showTooltip && !disablePopup}
|
|
62
|
+
<Portal>
|
|
63
|
+
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
64
|
+
<div
|
|
65
|
+
use:popperContent={popperOptions}
|
|
66
|
+
on:mouseenter={open}
|
|
67
|
+
on:mouseleave={close}
|
|
68
|
+
class="z-[5001] border rounded-lg shadow-lg p-4 bg-surface"
|
|
69
|
+
>
|
|
70
|
+
<slot name="overlay" />
|
|
71
|
+
</div>
|
|
72
|
+
</Portal>
|
|
73
|
+
{/if}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
import type { PopoverPlacement } from './Popover.model';
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
[x: string]: any;
|
|
6
|
+
placement?: PopoverPlacement | undefined;
|
|
7
|
+
notClickable?: boolean | undefined;
|
|
8
|
+
disablePopup?: boolean | undefined;
|
|
9
|
+
disappearTimeout?: number | undefined;
|
|
10
|
+
appearTimeout?: number | undefined;
|
|
11
|
+
style?: string | undefined;
|
|
12
|
+
focusEl?: HTMLElement | undefined;
|
|
13
|
+
};
|
|
14
|
+
events: {
|
|
15
|
+
click: MouseEvent;
|
|
16
|
+
} & {
|
|
17
|
+
[evt: string]: CustomEvent<any>;
|
|
18
|
+
};
|
|
19
|
+
slots: {
|
|
20
|
+
default: {};
|
|
21
|
+
overlay: {};
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export type CustomPopoverProps = typeof __propDef.props;
|
|
25
|
+
export type CustomPopoverEvents = typeof __propDef.events;
|
|
26
|
+
export type CustomPopoverSlots = typeof __propDef.slots;
|
|
27
|
+
export default class CustomPopover extends SvelteComponent<CustomPopoverProps, CustomPopoverEvents, CustomPopoverSlots> {
|
|
28
|
+
}
|
|
29
|
+
export {};
|