UNPKG

n8n-editor-ui

Version:

Workflow Editor UI for n8n

352 lines (351 loc) 28.9 kB
; (function () { System.register(["./chunk-legacy-Re9CbdfL.js", "./vue.runtime.esm-bundler-legacy--Sn1h8On.js", "./_MapCache-legacy-DlYNX_X1.js", "./src-legacy-uZTNWMC0.js", "./en-legacy-DJK4SpPN.js", "./preload-helper-legacy-CXRjoQ0T.js", "./_plugin-vue_export-helper-legacy-DZMI5HPp.js", "./truncate-legacy-BGje52Or.js", "./icon-legacy-CqVXaCIS.js", "./date-picker-legacy-Dwa5h_c8.js", "./overlay-legacy-o1gtoD8p.js", "./ParameterInputList-legacy-s9Bhch5Q.js", "./empty-legacy-CA9D6itE.js", "./useMessage-legacy-M2m6s8Ce.js", "./dialog-legacy-Bm1i_4WP.js", "./useTelemetry-legacy-B3pzzkAE.js", "./useToast-legacy-C4Vu5mt9.js", "./sanitize-html-legacy-DLqXJu-U.js", "./CalendarDate-legacy-BUvNgcoo.js", "./path-browserify-legacy-C6ml8BkF.js", "./constants-legacy-TKxWCqvM.js", "./merge-legacy-8xjIc_ts.js", "./assistant.store-legacy-Bo4ZVN6u.js", "./_baseOrderBy-legacy-CB2Dh5d_.js", "./dateformat-legacy-C4HUJTCr.js", "./useDebounce-legacy-CqZ-fJEm.js", "./useExternalHooks-legacy-8pg6K3ln.js", "./useStyles-legacy-E8NPEyeD.js", "./chatPanel.store-legacy-6e-l0_Mt.js", "./npsSurvey.store-legacy-mkSIzcGP.js", "./cloudPlan.store-legacy-U_Bztyyz.js", "./templates.store-legacy-BBcmaAs_.js", "./focusPanel.store-legacy-DdqLHRV1.js", "./useWorkflowSaving-legacy-B3LVQV33.js", "./retry-legacy-CTwsGM7o.js", "./executions.store-legacy-COqSks8S.js", "./useRunWorkflow-legacy-BClq6Sr5.js", "./usePinnedData-legacy-CfMMmXZ8.js", "./nodeCreator.store-legacy-BeEd3d8s.js", "./nodeIcon-legacy-D1wFvzkX.js", "./useClipboard-legacy-DEPZr2pv.js", "./useCanvasOperations-legacy-CXe_JeOj.js", "./folders.store-legacy-DbpbLgJq.js", "./NodeIcon-legacy-D0j2KPV5.js", "./isEmpty-legacy-SNiUTa-Q.js", "./NDVEmptyState-legacy-jxrI30cG.js", "./exports-legacy-COvxY4M6.js", "./externalSecrets.ee.store-legacy-7f0X4y9E.js", "./uniqBy-legacy-C7T-xRJq.js", "./RunDataHtml-legacy-BuMmN5Mb.js", "./VueMarkdown-legacy-S1Fd0hmV.js", "./Draggable-legacy-CWLBcAt-.js", "./VirtualSchema-legacy-BpSC2T1v.js", "./TextWithHighlights-legacy-BkMBE92Y.js", "./useTelemetryContext-legacy-Ck4DfXMq.js", "./schemaPreview.store-legacy-DaPvEjFt.js", "./nodeTransforms-legacy-BTRUclS4.js", "./FileSaver.min-legacy-D7uxxng5.js", "./vue-json-pretty-legacy-DXTjoBRT.js", "./dateFormatter-legacy-V7YuOSR6.js", "./useExecutionHelpers-legacy-DORjcnBO.js", "./vue-legacy-DYOFx85F.js"], function (_export, _context) { "use strict"; var __toESM, computed, toDisplayString, createElementBlock, createCommentVNode, unref, ref, createVNode, defineComponent, createBlock, Fragment, watch, withCtx, openBlock, withModifiers, renderList, createTextVNode, onBeforeMount, normalizeClass, createBaseVNode, Suspense, useI18n, N8nSelect_default, N8nButton_default, N8nOption_default, N8nText_default, N8nInputLabel_default, N8nIconButton_default, __plugin_vue_export_helper_default, require_get, require_vuedraggable_umd, ParameterInputList_default, useNDVStore, useWorkflowsStore, telemetry, deepCopy, isINodePropertyCollectionList, storeToRefs, __vite_style__, import_get, import_vuedraggable_umd, _hoisted_1, _hoisted_2, _hoisted_3, _hoisted_4, _hoisted_5, _hoisted_6, _hoisted_7, _hoisted_8, _hoisted_9, _hoisted_10, FixedCollectionParameter_vue_vue_type_script_setup_true_lang_default, FixedCollectionParameter_default; return { setters: [function (_chunkLegacy001Js) { __toESM = _chunkLegacy001Js.o; }, function (_vueRuntimeEsmBundlerLegacy003Js) { computed = _vueRuntimeEsmBundlerLegacy003Js.C; toDisplayString = _vueRuntimeEsmBundlerLegacy003Js.Cn; createElementBlock = _vueRuntimeEsmBundlerLegacy003Js.D; createCommentVNode = _vueRuntimeEsmBundlerLegacy003Js.E; unref = _vueRuntimeEsmBundlerLegacy003Js.Gt; ref = _vueRuntimeEsmBundlerLegacy003Js.It; createVNode = _vueRuntimeEsmBundlerLegacy003Js.M; defineComponent = _vueRuntimeEsmBundlerLegacy003Js.P; createBlock = _vueRuntimeEsmBundlerLegacy003Js.T; Fragment = _vueRuntimeEsmBundlerLegacy003Js._; watch = _vueRuntimeEsmBundlerLegacy003Js._t; withCtx = _vueRuntimeEsmBundlerLegacy003Js.bt; openBlock = _vueRuntimeEsmBundlerLegacy003Js.et; withModifiers = _vueRuntimeEsmBundlerLegacy003Js.h; renderList = _vueRuntimeEsmBundlerLegacy003Js.it; createTextVNode = _vueRuntimeEsmBundlerLegacy003Js.j; onBeforeMount = _vueRuntimeEsmBundlerLegacy003Js.q; normalizeClass = _vueRuntimeEsmBundlerLegacy003Js.vn; createBaseVNode = _vueRuntimeEsmBundlerLegacy003Js.w; Suspense = _vueRuntimeEsmBundlerLegacy003Js.y; }, function (_MapCacheLegacy005Js) { useI18n = _MapCacheLegacy005Js.gt; }, function (_srcLegacy007Js) { N8nSelect_default = _srcLegacy007Js.G; N8nButton_default = _srcLegacy007Js.Hn; N8nOption_default = _srcLegacy007Js.K; N8nText_default = _srcLegacy007Js.Vn; N8nInputLabel_default = _srcLegacy007Js.X; N8nIconButton_default = _srcLegacy007Js.xt; }, function (_enLegacy00bJs) {}, function (_preloadHelperLegacy00dJs) {}, function (_pluginVue_exportHelperLegacy00fJs) { __plugin_vue_export_helper_default = _pluginVue_exportHelperLegacy00fJs.t; }, function (_truncateLegacy00hJs) { require_get = _truncateLegacy00hJs.r; }, function (_iconLegacy00nJs) {}, function (_datePickerLegacy00pJs) {}, function (_overlayLegacy00rJs) {}, function (_ParameterInputListLegacy00tJs) { require_vuedraggable_umd = _ParameterInputListLegacy00tJs.r; ParameterInputList_default = _ParameterInputListLegacy00tJs.t; }, function (_emptyLegacy00vJs) {}, function (_useMessageLegacy00xJs) {}, function (_dialogLegacy00DJs) {}, function (_useTelemetryLegacy00HJs) { useNDVStore = _useTelemetryLegacy00HJs.a; useWorkflowsStore = _useTelemetryLegacy00HJs.o; telemetry = _useTelemetryLegacy00HJs.r; }, function (_useToastLegacy00JJs) {}, function (_sanitizeHtmlLegacy00LJs) {}, function (_CalendarDateLegacy00NJs) {}, function (_pathBrowserifyLegacy00RJs) {}, function (_constantsLegacy00TJs) { deepCopy = _constantsLegacy00TJs.Da; isINodePropertyCollectionList = _constantsLegacy00TJs.ba; }, function (_mergeLegacy00VJs) {}, function (_assistantStoreLegacy00XJs) {}, function (_baseOrderByLegacy00ZJs) { storeToRefs = _baseOrderByLegacy00ZJs.A; }, function (_dateformatLegacy00$Js) {}, function (_useDebounceLegacy011Js) {}, function (_useExternalHooksLegacy013Js) {}, function (_useStylesLegacy015Js) {}, function (_chatPanelStoreLegacy017Js) {}, function (_npsSurveyStoreLegacy01bJs) {}, function (_cloudPlanStoreLegacy01dJs) {}, function (_templatesStoreLegacy01fJs) {}, function (_focusPanelStoreLegacy01hJs) {}, function (_useWorkflowSavingLegacy01jJs) {}, function (_retryLegacy01lJs) {}, function (_executionsStoreLegacy01nJs) {}, function (_useRunWorkflowLegacy01pJs) {}, function (_usePinnedDataLegacy01rJs) {}, function (_nodeCreatorStoreLegacy01tJs) {}, function (_nodeIconLegacy01vJs) {}, function (_useClipboardLegacy01xJs) {}, function (_useCanvasOperationsLegacy01zJs) {}, function (_foldersStoreLegacy01DJs) {}, function (_NodeIconLegacy01FJs) {}, function (_isEmptyLegacy021Js) {}, function (_NDVEmptyStateLegacy023Js) {}, function (_exportsLegacy025Js) {}, function (_externalSecretsEeStoreLegacy027Js) {}, function (_uniqByLegacy029Js) {}, function (_RunDataHtmlLegacy02nJs) {}, function (_VueMarkdownLegacy02rJs) {}, function (_DraggableLegacy02tJs) {}, function (_VirtualSchemaLegacy02vJs) {}, function (_TextWithHighlightsLegacy02xJs) {}, function (_useTelemetryContextLegacy02zJs) {}, function (_schemaPreviewStoreLegacy02BJs) {}, function (_nodeTransformsLegacy02DJs) {}, function (_FileSaverMinLegacy02HJs) {}, function (_vueJsonPrettyLegacy02JJs) {}, function (_dateFormatterLegacy02LJs) {}, function (_useExecutionHelpersLegacy02NJs) {}, function (_vueLegacy03xJs) {}], execute: function () { __vite_style__ = document.createElement('style'); __vite_style__.textContent = "/* BEM support Func\n -------------------------- */\n/* Transition\n-------------------------- */\n/* Color\n-------------------------- */\n/* Link\n-------------------------- */\n/* Border\n-------------------------- */\n/* Outline\n-------------------------- */\n/* Box shadow\n-------------------------- */\n/* Fill\n-------------------------- */\n/* Typography\n-------------------------- */\n/* z-index\n-------------------------- */\n/* Disable base\n-------------------------- */\n/* Icon\n-------------------------- */\n/* Checkbox\n-------------------------- */\n/* Radio\n-------------------------- */\n/* Select\n-------------------------- */\n/* Alert\n-------------------------- */\n/* MessageBox\n-------------------------- */\n/* Message\n-------------------------- */\n/* Notification\n-------------------------- */\n/* Input\n-------------------------- */\n/* Cascader\n-------------------------- */\n/* Group\n-------------------------- */\n/* Tab\n-------------------------- */\n/* Button\n-------------------------- */\n/* cascader\n-------------------------- */\n/* Switch\n-------------------------- */\n/* Dialog\n-------------------------- */\n/* Table\n-------------------------- */\n/* Pagination\n-------------------------- */\n/* Popup\n-------------------------- */\n/* Popover\n-------------------------- */\n/* Tooltip\n-------------------------- */\n/* Tag\n-------------------------- */\n/* Tree\n-------------------------- */\n/* Dropdown\n-------------------------- */\n/* Badge\n-------------------------- */\n/* Card\n--------------------------*/\n/* Slider\n--------------------------*/\n/* Steps\n--------------------------*/\n/* Menu\n--------------------------*/\n/* Rate\n--------------------------*/\n/* DatePicker\n--------------------------*/\n/* Loading\n--------------------------*/\n/* Scrollbar\n--------------------------*/\n/* Carousel\n--------------------------*/\n/* Collapse\n--------------------------*/\n/* Transfer\n--------------------------*/\n/* Header\n --------------------------*/\n/* Footer\n--------------------------*/\n/* Main\n--------------------------*/\n/* Timeline\n--------------------------*/\n/* Backtop\n--------------------------*/\n/* Link\n--------------------------*/\n/* Calendar\n--------------------------*/\n/* Form\n-------------------------- */\n/* Avatar\n--------------------------*/\n/* Break-point\n--------------------------*/\n/* Break-points\n -------------------------- */\n/* Scrollbar\n -------------------------- */\n/* Placeholder\n -------------------------- */\n/* BEM\n -------------------------- */\n.fixed-collection-parameter[data-v-fc67ef85] {\n padding-left: var(--spacing--sm);\n}\n.fixed-collection-parameter .icon-button[data-v-fc67ef85] {\n display: flex;\n flex-direction: column;\n}\n.fixed-collection-parameter .controls[data-v-fc67ef85] .button {\n font-weight: var(--font-weight--regular);\n --button--color--text: var(--color--text--shade-1);\n --button--border-color: var(--color--foreground);\n --button--color--background: var(--color--background);\n --button--color--text--hover: var(--color--text--shade-1);\n --button--border-color--hover: var(--color--foreground);\n --button--color--background--hover: var(--color--background);\n --button--color--text--active: var(--color--text--shade-1);\n --button--border-color--active: var(--color--foreground);\n --button--color--background--active: var(--color--background);\n --button--color--text--focus: var(--color--text--shade-1);\n --button--border-color--focus: var(--color--foreground);\n --button--color--background--focus: var(--color--background);\n}\n.fixed-collection-parameter .controls[data-v-fc67ef85] .button:active, .fixed-collection-parameter .controls[data-v-fc67ef85] .button.active, .fixed-collection-parameter .controls[data-v-fc67ef85] .button:focus {\n outline: none;\n}\n.fixed-collection-parameter-property[data-v-fc67ef85] {\n margin: var(--spacing--xs) 0;\n margin-bottom: 0;\n}\n.parameter-item:hover > .parameter-item-wrapper > .icon-button[data-v-fc67ef85] {\n opacity: 1;\n}\n.parameter-item[data-v-fc67ef85] {\n position: relative;\n padding: 0 0 var(--spacing--sm) var(--spacing--sm);\n}\n.parameter-item + .parameter-item .parameter-item-wrapper .default-top-padding[data-v-fc67ef85] {\n top: calc(1.2 * var(--spacing--sm));\n}\n.parameter-item + .parameter-item .parameter-item-wrapper .extra-top-padding[data-v-fc67ef85] {\n top: calc(2.2 * var(--spacing--sm));\n}\n.parameter-item:first-of-type .parameter-item-wrapper .default-top-padding[data-v-fc67ef85] {\n top: var(--spacing--3xs);\n}\n.parameter-item:first-of-type .parameter-item-wrapper .extra-top-padding[data-v-fc67ef85] {\n top: var(--spacing--lg);\n}\n.border-top-dashed[data-v-fc67ef85] {\n border-top: 1px dashed #999;\n}\n.no-items-exist[data-v-fc67ef85] {\n margin: var(--spacing--xs) 0;\n}\n.ghost[data-v-fc67ef85],\n.dragging[data-v-fc67ef85] {\n border-radius: var(--radius);\n padding-right: var(--spacing--xs);\n}\n.ghost[data-v-fc67ef85] {\n background-color: var(--color--background);\n opacity: 0.5;\n}\n.dragging[data-v-fc67ef85] {\n background-color: var(--color--background--light-3);\n opacity: 0.7;\n}\n.dragging .parameter-item-wrapper[data-v-fc67ef85] {\n border: none;\n}/*$vite$:1*/"; document.head.appendChild(__vite_style__); //#region src/features/ndv/parameters/components/FixedCollectionParameter.vue?vue&type=script&setup=true&lang.ts import_get = /* @__PURE__ */__toESM(require_get()); import_vuedraggable_umd = /* @__PURE__ */__toESM(require_vuedraggable_umd()); _hoisted_1 = ["data-test-id"]; _hoisted_2 = { key: 0, class: "no-items-exist" }; _hoisted_3 = { key: 1 }; _hoisted_4 = { key: 0, class: "icon-button default-top-padding" }; _hoisted_5 = { key: 1, class: "icon-button extra-top-padding" }; _hoisted_6 = { key: 2, class: "parameter-item" }; _hoisted_7 = { class: "parameter-item-wrapper" }; _hoisted_8 = { key: 0, class: "icon-button" }; _hoisted_9 = { key: 1, class: "controls" }; _hoisted_10 = { key: 1, class: "add-option" }; FixedCollectionParameter_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */defineComponent({ __name: "FixedCollectionParameter", props: { nodeValues: {}, parameter: {}, path: {}, values: { default: () => ({}) }, isReadOnly: { type: Boolean, default: false }, hiddenIssuesInputs: { default: () => [] } }, emits: ["valueChanged"], setup(__props, { emit: __emit }) { const locale = useI18n(); const props = __props; const emit = __emit; const workflowsStore = useWorkflowsStore(); const ndvStore = useNDVStore(); const { activeNode } = storeToRefs(ndvStore); const getPlaceholderText = computed(() => { const placeholder = locale.nodeText(activeNode.value?.type).placeholder(props.parameter, props.path); return placeholder ? placeholder : locale.baseText("fixedCollectionParameter.choose"); }); const mutableValues = ref({}); const selectedOption = ref(null); const propertyNames = computed(() => { return new Set(Object.keys(mutableValues.value || {})); }); const getProperties = computed(() => { const returnProperties = []; let tempProperties; for (const name of propertyNames.value) { tempProperties = getOptionProperties(name); if (tempProperties !== void 0) returnProperties.push(tempProperties); } return returnProperties; }); const multipleValues = computed(() => { return !!props.parameter.typeOptions?.multipleValues; }); const parameterOptions = computed(() => { if (!isINodePropertyCollectionList(props.parameter.options)) return []; if (multipleValues.value) return props.parameter.options; return (props.parameter.options ?? []).filter(option => { return !propertyNames.value.has(option.name); }); }); const sortable = computed(() => { return !!props.parameter.typeOptions?.sortable; }); watch(() => props.values, newValues => { mutableValues.value = deepCopy(newValues); }, { deep: true }); onBeforeMount(() => { mutableValues.value = deepCopy(props.values); }); const deleteOption = (optionName, index) => { const currentOptionsOfSameType = mutableValues.value[optionName]; if (!currentOptionsOfSameType || currentOptionsOfSameType.length > 1) emit("valueChanged", { name: getPropertyPath(optionName, index), value: void 0 });else emit("valueChanged", { name: getPropertyPath(optionName), value: void 0 }); }; const getPropertyPath = (name, index) => { return `${props.path}.${name}` + (index !== void 0 ? `[${index}]` : ""); }; const getOptionProperties = optionName => { if (isINodePropertyCollectionList(props.parameter.options)) { for (const option of props.parameter.options) if (option.name === optionName) return option; } }; const onAddButtonClick = optionName => { optionSelected(optionName); if (props.parameter.name === "workflowInputs") trackWorkflowInputFieldAdded(); }; const optionSelected = optionName => { const option = getOptionProperties(optionName); if (option === void 0) return; const name = `${props.path}.${option.name}`; const newParameterValue = {}; for (const optionParameter of option.values) if (optionParameter.type === "fixedCollection" && optionParameter.typeOptions !== void 0 && optionParameter.typeOptions.multipleValues === true) newParameterValue[optionParameter.name] = {};else if (optionParameter.typeOptions !== void 0 && optionParameter.typeOptions.multipleValues === true) { const multiValue = (0, import_get.default)(props.nodeValues, [props.path, optionParameter.name], []); if (Array.isArray(optionParameter.default)) multiValue.push(...deepCopy(optionParameter.default));else if (optionParameter.default !== "" && typeof optionParameter.default !== "object") multiValue.push(deepCopy(optionParameter.default)); newParameterValue[optionParameter.name] = multiValue; } else newParameterValue[optionParameter.name] = deepCopy(optionParameter.default); let newValue; if (multipleValues.value) { newValue = (0, import_get.default)(props.nodeValues, name, []); newValue.push(newParameterValue); } else newValue = newParameterValue; emit("valueChanged", { name, value: newValue }); selectedOption.value = void 0; }; const valueChanged = parameterData => { emit("valueChanged", parameterData); if (props.parameter.name === "workflowInputs") trackWorkflowInputFieldTypeChange(parameterData); }; const onDragChange = optionName => { emit("valueChanged", { name: getPropertyPath(optionName), value: mutableValues.value[optionName], type: "optionsOrderChanged" }); }; const trackWorkflowInputFieldTypeChange = parameterData => { telemetry.track("User changed workflow input field type", { type: parameterData.value, workflow_id: workflowsStore.workflow.id, node_id: ndvStore.activeNode?.id }); }; const trackWorkflowInputFieldAdded = () => { telemetry.track("User added workflow input field", { workflow_id: workflowsStore.workflow.id, node_id: ndvStore.activeNode?.id }); }; function getItemKey(item, property) { return mutableValues.value[property.name]?.indexOf(item) ?? -1; } return (_ctx, _cache) => { return openBlock(), createElementBlock("div", { class: "fixed-collection-parameter", "data-test-id": `fixed-collection-${props.parameter?.name}`, onKeydown: _cache[2] || (_cache[2] = withModifiers(() => {}, ["stop"])) }, [getProperties.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_2, [createVNode(unref(N8nText_default), { size: "small" }, { default: withCtx(() => [createTextVNode(toDisplayString(unref(locale).baseText("fixedCollectionParameter.currentlyNoItemsExist")), 1)]), _: 1 })])) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(getProperties.value, property => { return openBlock(), createElementBlock("div", { key: property.name, class: "fixed-collection-parameter-property" }, [property.displayName !== "" && _ctx.parameter.options && _ctx.parameter.options.length !== 1 ? (openBlock(), createBlock(unref(N8nInputLabel_default), { key: 0, label: unref(locale).nodeText(unref(activeNode)?.type).inputLabelDisplayName(property, _ctx.path), underline: true, size: "small", color: "text-dark" }, null, 8, ["label"])) : createCommentVNode("", true), multipleValues.value ? (openBlock(), createElementBlock("div", _hoisted_3, [createVNode(unref(import_vuedraggable_umd.default), { modelValue: mutableValues.value[property.name], "onUpdate:modelValue": $event => mutableValues.value[property.name] = $event, "item-key": item => getItemKey(item, property), handle: ".drag-handle", "drag-class": "dragging", "ghost-class": "ghost", "chosen-class": "chosen", onChange: $event => onDragChange(property.name) }, { item: withCtx(({ index }) => [(openBlock(), createElementBlock("div", { key: property.name + "-" + index, class: "parameter-item" }, [createBaseVNode("div", { class: normalizeClass(index ? "border-top-dashed parameter-item-wrapper " : "parameter-item-wrapper") }, [!_ctx.isReadOnly ? (openBlock(), createElementBlock("div", _hoisted_4, [sortable.value ? (openBlock(), createBlock(unref(N8nIconButton_default), { key: 0, type: "tertiary", text: "", size: "small", icon: "grip-vertical", title: unref(locale).baseText("fixedCollectionParameter.dragItem"), class: "drag-handle" }, null, 8, ["title"])) : createCommentVNode("", true)])) : createCommentVNode("", true), !_ctx.isReadOnly ? (openBlock(), createElementBlock("div", _hoisted_5, [createVNode(unref(N8nIconButton_default), { type: "tertiary", text: "", size: "small", icon: "trash-2", "data-test-id": "fixed-collection-delete", title: unref(locale).baseText("fixedCollectionParameter.deleteItem"), onClick: $event => deleteOption(property.name, index) }, null, 8, ["title", "onClick"])])) : createCommentVNode("", true), (openBlock(), createBlock(Suspense, null, { default: withCtx(() => [createVNode(ParameterInputList_default, { parameters: property.values, "node-values": _ctx.nodeValues, path: getPropertyPath(property.name, index), "hide-delete": true, "is-read-only": _ctx.isReadOnly, "hidden-issues-inputs": _ctx.hiddenIssuesInputs, onValueChanged: valueChanged }, null, 8, ["parameters", "node-values", "path", "is-read-only", "hidden-issues-inputs"])]), _: 2 }, 1024))], 2)]))]), _: 2 }, 1032, ["modelValue", "onUpdate:modelValue", "item-key", "onChange"])])) : (openBlock(), createElementBlock("div", _hoisted_6, [createBaseVNode("div", _hoisted_7, [!_ctx.isReadOnly ? (openBlock(), createElementBlock("div", _hoisted_8, [createVNode(unref(N8nIconButton_default), { type: "tertiary", text: "", size: "small", icon: "trash-2", "data-test-id": "fixed-collection-delete", title: unref(locale).baseText("fixedCollectionParameter.deleteItem"), onClick: $event => deleteOption(property.name) }, null, 8, ["title", "onClick"])])) : createCommentVNode("", true), createVNode(ParameterInputList_default, { parameters: property.values, "node-values": _ctx.nodeValues, path: getPropertyPath(property.name), "is-read-only": _ctx.isReadOnly, class: "parameter-item", "hide-delete": true, "hidden-issues-inputs": _ctx.hiddenIssuesInputs, onValueChanged: valueChanged }, null, 8, ["parameters", "node-values", "path", "is-read-only", "hidden-issues-inputs"])])]))]); }), 128)), parameterOptions.value.length > 0 && !_ctx.isReadOnly ? (openBlock(), createElementBlock("div", _hoisted_9, [_ctx.parameter.options && _ctx.parameter.options.length === 1 ? (openBlock(), createBlock(unref(N8nButton_default), { key: 0, type: "tertiary", block: "", "data-test-id": "fixed-collection-add", label: getPlaceholderText.value, onClick: _cache[0] || (_cache[0] = $event => onAddButtonClick(_ctx.parameter.options[0].name)) }, null, 8, ["label"])) : (openBlock(), createElementBlock("div", _hoisted_10, [createVNode(unref(N8nSelect_default), { modelValue: selectedOption.value, "onUpdate:modelValue": [_cache[1] || (_cache[1] = $event => selectedOption.value = $event), optionSelected], placeholder: getPlaceholderText.value, size: "small", filterable: "" }, { default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(parameterOptions.value, item => { return openBlock(), createBlock(unref(N8nOption_default), { key: item.name, label: unref(locale).nodeText(unref(activeNode)?.type).collectionOptionDisplayName(_ctx.parameter, item, _ctx.path), value: item.name }, null, 8, ["label", "value"]); }), 128))]), _: 1 }, 8, ["modelValue", "placeholder"])]))])) : createCommentVNode("", true)], 40, _hoisted_1); }; } }); //#endregion //#region src/features/ndv/parameters/components/FixedCollectionParameter.vue _export("default", FixedCollectionParameter_default = /* @__PURE__ */__plugin_vue_export_helper_default(FixedCollectionParameter_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-fc67ef85"]])); //#endregion } }; }); })();