From 0f673c59735dd7c86fb8216ed335fd988a82a0d2 Mon Sep 17 00:00:00 2001 From: mertmit Date: Tue, 30 Apr 2024 17:12:25 +0000 Subject: [PATCH] fix: allow nested create for new records --- .../components/smartsheet/expanded-form/index.vue | 15 +++++++++++---- .../virtual-cell/components/UnLinkedItems.vue | 4 ++++ .../nc-gui/composables/useExpandedFormStore.ts | 2 +- packages/nc-gui/composables/useLTARStore.ts | 6 +++++- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/expanded-form/index.vue b/packages/nc-gui/components/smartsheet/expanded-form/index.vue index 672c836a20..ca7bf9a692 100644 --- a/packages/nc-gui/components/smartsheet/expanded-form/index.vue +++ b/packages/nc-gui/components/smartsheet/expanded-form/index.vue @@ -213,19 +213,26 @@ const save = async () => { addOrEditStackRow(row, isNewRow) } } + if (isNew.value) { await _save(rowState.value, undefined, { kanbanClbk, }) - reloadTrigger?.trigger() - reloadViewDataTrigger?.trigger() + // reload only if record is created on active view + if (activeView.value?.fk_model_id === meta.value.id) { + reloadTrigger?.trigger() + reloadViewDataTrigger?.trigger() + } } else { await _save(undefined, undefined, { kanbanClbk, }) _loadRow() - reloadTrigger?.trigger() - reloadViewDataTrigger?.trigger() + // reload only if record is created on active view + if (activeView.value?.fk_model_id === meta.value.id) { + reloadTrigger?.trigger() + reloadViewDataTrigger?.trigger() + } } isUnsavedFormExist.value = false diff --git a/packages/nc-gui/components/virtual-cell/components/UnLinkedItems.vue b/packages/nc-gui/components/virtual-cell/components/UnLinkedItems.vue index 7f21cdc8fb..e93ed7ef3e 100644 --- a/packages/nc-gui/components/virtual-cell/components/UnLinkedItems.vue +++ b/packages/nc-gui/components/virtual-cell/components/UnLinkedItems.vue @@ -196,6 +196,8 @@ const addNewRecord = () => { } const onCreatedRecord = (record: any) => { + addLTARRef(record, injectedColumn?.value as ColumnType) + const msgVNode = h( 'div', { @@ -223,6 +225,8 @@ const onCreatedRecord = (record: any) => { ) message.success(msgVNode) + + vModel.value = false } const linkedShortcuts = (e: KeyboardEvent) => { diff --git a/packages/nc-gui/composables/useExpandedFormStore.ts b/packages/nc-gui/composables/useExpandedFormStore.ts index aa43cb6de6..31521f1324 100644 --- a/packages/nc-gui/composables/useExpandedFormStore.ts +++ b/packages/nc-gui/composables/useExpandedFormStore.ts @@ -304,7 +304,7 @@ const [useProvideExpandedFormStore, useExpandedFormStore] = useInjectionState((m } const loadRow = async (rowId?: string, onlyVirtual = false) => { - if (!rowId) return + if (!rowId || row.value.rowMeta.new) return if (isPublic.value || !meta.value?.id) return let record = await $api.dbTableRow.read( diff --git a/packages/nc-gui/composables/useLTARStore.ts b/packages/nc-gui/composables/useLTARStore.ts index 4ece4be094..7dd4cd6365 100644 --- a/packages/nc-gui/composables/useLTARStore.ts +++ b/packages/nc-gui/composables/useLTARStore.ts @@ -266,7 +266,11 @@ const [useProvideLTARStore, useLTARStore] = useInjectionState( // Mark out exact same objects in activeState[column.value.title] as Linked // compare all keys and values childrenExcludedList.value.list.forEach((row: any, index: number) => { - const found = activeState[column.value.title].find((a: any) => { + const found = ( + [RelationTypes.BELONGS_TO, RelationTypes.ONE_TO_ONE].includes(colOptions.value.type) + ? [activeState[column.value.title]] + : activeState[column.value.title] + ).find((a: any) => { let isSame = true for (const key in a) {