mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 18:12:04 +00:00
feat(editor): Make focused node props editable (no-changelog) (#16942)
Co-authored-by: Milorad FIlipović <milorad@n8n.io>
This commit is contained in:
@@ -1,10 +1,12 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useFocusPanelStore } from '@/stores/focusPanel.store';
|
import { useFocusPanelStore } from '@/stores/focusPanel.store';
|
||||||
|
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
|
||||||
import { N8nText, N8nInput } from '@n8n/design-system';
|
import { N8nText, N8nInput } from '@n8n/design-system';
|
||||||
import { computed } from 'vue';
|
import { computed } from 'vue';
|
||||||
import { useI18n } from '@n8n/i18n';
|
import { useI18n } from '@n8n/i18n';
|
||||||
import { isValueExpression } from '@/utils/nodeTypesUtils';
|
import { isValueExpression } from '@/utils/nodeTypesUtils';
|
||||||
import { useNodeHelpers } from '@/composables/useNodeHelpers';
|
import { useNodeHelpers } from '@/composables/useNodeHelpers';
|
||||||
|
import { useNodeSettingsParameters } from '@/composables/useNodeSettingsParameters';
|
||||||
|
|
||||||
defineOptions({ name: 'FocusPanel' });
|
defineOptions({ name: 'FocusPanel' });
|
||||||
|
|
||||||
@@ -15,6 +17,8 @@ const props = defineProps<{
|
|||||||
const locale = useI18n();
|
const locale = useI18n();
|
||||||
const nodeHelpers = useNodeHelpers();
|
const nodeHelpers = useNodeHelpers();
|
||||||
const focusPanelStore = useFocusPanelStore();
|
const focusPanelStore = useFocusPanelStore();
|
||||||
|
const nodeTypesStore = useNodeTypesStore();
|
||||||
|
const nodeSettingsParameters = useNodeSettingsParameters();
|
||||||
|
|
||||||
const focusedNodeParameter = computed(() => focusPanelStore.focusedNodeParameters[0]);
|
const focusedNodeParameter = computed(() => focusPanelStore.focusedNodeParameters[0]);
|
||||||
const resolvedParameter = computed(() =>
|
const resolvedParameter = computed(() =>
|
||||||
@@ -38,6 +42,10 @@ const isExecutable = computed(() => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const isToolNode = computed(() =>
|
||||||
|
resolvedParameter.value ? nodeTypesStore.isToolNode(resolvedParameter.value?.node.type) : false,
|
||||||
|
);
|
||||||
|
|
||||||
const expressionModeEnabled = computed(
|
const expressionModeEnabled = computed(
|
||||||
() =>
|
() =>
|
||||||
resolvedParameter.value &&
|
resolvedParameter.value &&
|
||||||
@@ -48,13 +56,22 @@ function optionSelected() {
|
|||||||
// TODO: Handle the option selected (command: string) from the dropdown
|
// TODO: Handle the option selected (command: string) from the dropdown
|
||||||
}
|
}
|
||||||
|
|
||||||
function valueChanged() {
|
function valueChanged(value: string) {
|
||||||
// TODO: Update parameter value
|
if (resolvedParameter.value === undefined) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
nodeSettingsParameters.updateNodeParameter(
|
||||||
|
{ value, name: resolvedParameter.value.parameterPath as `parameters.${string}` },
|
||||||
|
value,
|
||||||
|
resolvedParameter.value.node,
|
||||||
|
isToolNode.value,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div v-if="focusPanelActive" :class="$style.container">
|
<div v-if="focusPanelActive" :class="$style.container" @keydown.stop>
|
||||||
<div :class="$style.header">
|
<div :class="$style.header">
|
||||||
<N8nText size="small" :bold="true">
|
<N8nText size="small" :bold="true">
|
||||||
{{ locale.baseText('nodeView.focusPanel.title') }}
|
{{ locale.baseText('nodeView.focusPanel.title') }}
|
||||||
@@ -105,14 +122,15 @@ function valueChanged() {
|
|||||||
nodeName: resolvedParameter.node.name,
|
nodeName: resolvedParameter.node.name,
|
||||||
parameterPath: resolvedParameter.parameterPath,
|
parameterPath: resolvedParameter.parameterPath,
|
||||||
}"
|
}"
|
||||||
@change="valueChanged"
|
@change="valueChanged($event.value)"
|
||||||
/>
|
/>
|
||||||
<N8nInput
|
<N8nInput
|
||||||
v-else
|
v-else
|
||||||
v-model="resolvedParameter.value"
|
:model-value="resolvedParameter.value"
|
||||||
:class="$style.editor"
|
:class="$style.editor"
|
||||||
type="textarea"
|
type="textarea"
|
||||||
resize="none"
|
resize="none"
|
||||||
|
@update:model-value="valueChanged($event)"
|
||||||
></N8nInput>
|
></N8nInput>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user