Browse Source

fix: undo for column width

pull/6610/head
mertmit 1 year ago
parent
commit
32b0107bb2
  1. 8
      packages/nc-gui/components/smartsheet/grid/Table.vue
  2. 8
      packages/nc-gui/composables/useGridViewColumn.ts
  3. 1
      packages/nc-gui/plugins/resizeDirective.ts

8
packages/nc-gui/components/smartsheet/grid/Table.vue

@ -885,7 +885,7 @@ const saveOrUpdateRecords = async (args: { metaValue?: TableType; viewMetaValue?
}
// #Grid Resize
const { updateGridViewColumn, gridViewCols } = useGridViewColumnOrThrow()
const { updateGridViewColumn, gridViewCols, resizingColOldWith } = useGridViewColumnOrThrow()
const onresize = (colID: string | undefined, event: any) => {
if (!colID) return
@ -897,6 +897,11 @@ const onXcResizing = (cn: string | undefined, event: any) => {
gridViewCols.value[cn].width = `${event.detail}`
}
const onXcStartResizing = (cn: string | undefined, event: any) => {
if (!cn) return
resizingColOldWith.value = event.detail
}
const loadColumn = (title: string, tp: string, colOptions?: any) => {
preloadColumn.value = {
title,
@ -1235,6 +1240,7 @@ const loaderText = computed(() => {
'max-width': gridViewCols[col.id]?.width || '200px',
'width': gridViewCols[col.id]?.width || '200px',
}"
@xcstartresizing="onXcStartResizing(col.id, $event)"
@xcresize="onresize(col.id, $event)"
@xcresizing="onXcResizing(col.id, $event)"
>

8
packages/nc-gui/composables/useGridViewColumn.ts

@ -13,8 +13,7 @@ const [useProvideGridViewColumn, useGridViewColumn] = useInjectionState(
const { addUndo, defineViewScope } = useUndoRedo()
const gridViewCols = ref<Record<string, GridColumnType>>({})
const resizingCol = ref<string | null>('')
const resizingColWidth = ref('200px')
const resizingColOldWith = ref('200px')
const isPublic = inject(IsPublicInj, ref(statePublic))
const columns = computed<ColumnType[]>(() => metas.value?.[view.value?.fk_model_id as string]?.columns || [])
@ -48,7 +47,8 @@ const [useProvideGridViewColumn, useGridViewColumn] = useInjectionState(
if (!undo) {
const oldProps = Object.keys(props).reduce<Partial<GridColumnReqType>>((o: any, k) => {
if (gridViewCols.value[id][k as keyof GridColumnType]) {
o[k] = gridViewCols.value[id][k as keyof GridColumnType]
if (k === 'width') o[k] = `${resizingColOldWith.value}px`
else o[k] = gridViewCols.value[id][k as keyof GridColumnType]
}
return o
}, {})
@ -83,7 +83,7 @@ const [useProvideGridViewColumn, useGridViewColumn] = useInjectionState(
}
}
return { loadGridViewColumns, updateGridViewColumn, resizingCol, resizingColWidth, gridViewCols }
return { loadGridViewColumns, updateGridViewColumn, gridViewCols, resizingColOldWith }
},
'useGridViewColumn',
)

1
packages/nc-gui/plugins/resizeDirective.ts

@ -36,6 +36,7 @@ export default defineNuxtPlugin((nuxtApp) => {
startWidth = parseInt(document.defaultView?.getComputedStyle(el)?.width || '0', 10)
document.documentElement.addEventListener('mousemove', doDrag, false)
document.documentElement.addEventListener('mouseup', stopDrag, false)
emit('xcstartresizing', startWidth)
}
;(el as any).initDrag = initDrag

Loading…
Cancel
Save