From ee07ac4c4bc88a07c6bd5e5d1037034a4d531902 Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Wed, 24 May 2023 20:11:18 +0800 Subject: [PATCH 01/13] feat(nc-gui): pass hasManyColumn to VirtualCellComponentsItemChip --- packages/nc-gui/components/virtual-cell/HasMany.vue | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/nc-gui/components/virtual-cell/HasMany.vue b/packages/nc-gui/components/virtual-cell/HasMany.vue index fe43c2b03f..e033bf5854 100644 --- a/packages/nc-gui/components/virtual-cell/HasMany.vue +++ b/packages/nc-gui/components/virtual-cell/HasMany.vue @@ -40,7 +40,7 @@ const { isUIAllowed } = useUIPermission() const { state, isNew, removeLTARRef } = useSmartsheetRowStoreOrThrow() -const { loadRelatedTableMeta, relatedTableDisplayValueProp, unlink } = useProvideLTARStore( +const { relatedTableMeta, loadRelatedTableMeta, relatedTableDisplayValueProp, unlink } = useProvideLTARStore( column as Ref>, row, isNew, @@ -78,6 +78,11 @@ const unlinkRef = async (rec: Record) => { } } +const hasManyColumn = computed( + () => + relatedTableMeta.value?.columns?.find((c: any) => c.title === relatedTableDisplayValueProp.value) as ColumnType | undefined, +) + const onAttachRecord = () => { childListDlg.value = false listItemsDlg.value = true @@ -103,6 +108,7 @@ useSelectedCellKeyupListener(inject(ActiveCellInj, ref(false)), (e: KeyboardEven :key="i" :item="cell.item" :value="cell.value" + :column="hasManyColumn" @unlink="unlinkRef(cell.item)" /> From 864627252ca6c4c652d5224cae049d504e02360f Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Wed, 24 May 2023 20:12:03 +0800 Subject: [PATCH 02/13] feat(nc-gui): render virtual and normal cell using cell components --- .../virtual-cell/components/ItemChip.vue | 36 +++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/packages/nc-gui/components/virtual-cell/components/ItemChip.vue b/packages/nc-gui/components/virtual-cell/components/ItemChip.vue index ebe49c6b16..adcfa0af2a 100644 --- a/packages/nc-gui/components/virtual-cell/components/ItemChip.vue +++ b/packages/nc-gui/components/virtual-cell/components/ItemChip.vue @@ -1,4 +1,5 @@ From c3649b8eb6be614eb15558f0c68d291c48531312 Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Sat, 27 May 2023 16:15:19 +0800 Subject: [PATCH 07/13] feat(nc-gui): pass m2mColumn to ItemChip & ListItems --- .../nc-gui/components/virtual-cell/ManyToMany.vue | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/nc-gui/components/virtual-cell/ManyToMany.vue b/packages/nc-gui/components/virtual-cell/ManyToMany.vue index b1ae3d9f76..8cfb905b65 100644 --- a/packages/nc-gui/components/virtual-cell/ManyToMany.vue +++ b/packages/nc-gui/components/virtual-cell/ManyToMany.vue @@ -42,7 +42,7 @@ const { isUIAllowed } = useUIPermission() const { state, isNew, removeLTARRef } = useSmartsheetRowStoreOrThrow() -const { loadRelatedTableMeta, relatedTableDisplayValueProp, unlink } = useProvideLTARStore( +const { relatedTableMeta, loadRelatedTableMeta, relatedTableDisplayValueProp, unlink } = useProvideLTARStore( column as Ref>, row, isNew, @@ -93,6 +93,11 @@ useSelectedCellKeyupListener(inject(ActiveCellInj, ref(false)), (e: KeyboardEven break } }) + +const m2mColumn = computed( + () => + relatedTableMeta.value?.columns?.find((c: any) => c.title === relatedTableDisplayValueProp.value) as ColumnType | undefined, +) - + From 4b173c0064a141e5b2357389611a69fd25650c9a Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Sat, 27 May 2023 17:47:09 +0800 Subject: [PATCH 08/13] feat(nc-gui): pass showUnlinkButton --- packages/nc-gui/components/virtual-cell/BelongsTo.vue | 1 + packages/nc-gui/components/virtual-cell/HasMany.vue | 1 + packages/nc-gui/components/virtual-cell/ManyToMany.vue | 1 + .../nc-gui/components/virtual-cell/components/ListItems.vue | 6 +++++- 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/nc-gui/components/virtual-cell/BelongsTo.vue b/packages/nc-gui/components/virtual-cell/BelongsTo.vue index aa4b068639..b5eb182d3c 100644 --- a/packages/nc-gui/components/virtual-cell/BelongsTo.vue +++ b/packages/nc-gui/components/virtual-cell/BelongsTo.vue @@ -93,6 +93,7 @@ const belongsToColumn = computed( :item="value" :value="value[relatedTableDisplayValueProp]" :column="belongsToColumn" + :show-unlink-button="true" @unlink="unlinkRef(value)" /> diff --git a/packages/nc-gui/components/virtual-cell/HasMany.vue b/packages/nc-gui/components/virtual-cell/HasMany.vue index 82caa3f80c..1d069279cf 100644 --- a/packages/nc-gui/components/virtual-cell/HasMany.vue +++ b/packages/nc-gui/components/virtual-cell/HasMany.vue @@ -109,6 +109,7 @@ useSelectedCellKeyupListener(inject(ActiveCellInj, ref(false)), (e: KeyboardEven :item="cell.item" :value="cell.value" :column="hasManyColumn" + :show-unlink-button="true" @unlink="unlinkRef(cell.item)" /> diff --git a/packages/nc-gui/components/virtual-cell/ManyToMany.vue b/packages/nc-gui/components/virtual-cell/ManyToMany.vue index 8cfb905b65..1cd1c05dd4 100644 --- a/packages/nc-gui/components/virtual-cell/ManyToMany.vue +++ b/packages/nc-gui/components/virtual-cell/ManyToMany.vue @@ -111,6 +111,7 @@ const m2mColumn = computed( :item="cell.item" :value="cell.value" :column="m2mColumn" + :show-unlink-button="true" @unlink="unlinkRef(cell.item)" /> diff --git a/packages/nc-gui/components/virtual-cell/components/ListItems.vue b/packages/nc-gui/components/virtual-cell/components/ListItems.vue index b8e688a97e..16b3fff692 100644 --- a/packages/nc-gui/components/virtual-cell/components/ListItems.vue +++ b/packages/nc-gui/components/virtual-cell/components/ListItems.vue @@ -229,7 +229,11 @@ watch(vModel, (nextVal) => { :class="{ 'nc-selected-row': selectedRowIndex === i }" @click="linkRow(refRow)" > - + From 6b0c221522cde5860fff24c1ec1dce7ce3479f15 Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Sat, 27 May 2023 17:47:34 +0800 Subject: [PATCH 09/13] feat(nc-gui): conditionally show unlink button & revise style --- .../components/virtual-cell/components/ItemChip.vue | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/nc-gui/components/virtual-cell/components/ItemChip.vue b/packages/nc-gui/components/virtual-cell/components/ItemChip.vue index 7737d81ab5..9704152787 100644 --- a/packages/nc-gui/components/virtual-cell/components/ItemChip.vue +++ b/packages/nc-gui/components/virtual-cell/components/ItemChip.vue @@ -18,9 +18,10 @@ interface Props { value?: string | number | boolean item?: any column: any + showUnlinkButton: boolean } -const { value, item, column } = defineProps() +const { value, item, column, showUnlinkButton } = defineProps() const emit = defineEmits(['unlink']) @@ -59,7 +60,7 @@ export default { -
+
Date: Sat, 27 May 2023 18:50:55 +0800 Subject: [PATCH 10/13] fix(nc-gui): revise item chip style --- .../nc-gui/components/virtual-cell/components/ItemChip.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/nc-gui/components/virtual-cell/components/ItemChip.vue b/packages/nc-gui/components/virtual-cell/components/ItemChip.vue index 9704152787..cd890add7d 100644 --- a/packages/nc-gui/components/virtual-cell/components/ItemChip.vue +++ b/packages/nc-gui/components/virtual-cell/components/ItemChip.vue @@ -60,8 +60,8 @@ export default {