Browse Source

fix: allow nested create for new records

pull/8371/head
mertmit 2 months ago
parent
commit
0f673c5973
  1. 15
      packages/nc-gui/components/smartsheet/expanded-form/index.vue
  2. 4
      packages/nc-gui/components/virtual-cell/components/UnLinkedItems.vue
  3. 2
      packages/nc-gui/composables/useExpandedFormStore.ts
  4. 6
      packages/nc-gui/composables/useLTARStore.ts

15
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

4
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) => {

2
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(

6
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) {

Loading…
Cancel
Save