diff --git a/packages/hooks/src/use-table.ts b/packages/hooks/src/use-table.ts index 5b038525..3a119df3 100644 --- a/packages/hooks/src/use-table.ts +++ b/packages/hooks/src/use-table.ts @@ -23,6 +23,7 @@ export type TableColumnCheck = { title: TableColumnCheckTitle; checked: boolean; visible: boolean; + fixed: 'left' | 'right' | 'unFixed'; }; export interface UseTableOptions { @@ -78,12 +79,14 @@ export default function useTable [col.key, col.checked])); + const fixedMap = new Map(columnChecks.value.map(col => [col.key, col.fixed])); const defaultChecks = getColumnChecks(columns()); columnChecks.value = defaultChecks.map(col => ({ ...col, - checked: checkMap.get(col.key) ?? col.checked + checked: checkMap.get(col.key) ?? col.checked, + fixed: (fixedMap.get(col.key) !== 'unFixed' ? fixedMap.get(col.key) : undefined) ?? col.fixed })); } diff --git a/src/components/advanced/table-column-setting.vue b/src/components/advanced/table-column-setting.vue index 10bd35ad..aa5e2a81 100644 --- a/src/components/advanced/table-column-setting.vue +++ b/src/components/advanced/table-column-setting.vue @@ -9,6 +9,19 @@ defineOptions({ const columns = defineModel('columns', { required: true }); + +const tooltipRecord: Record = { + left: 'datatable.fixed.right', + right: 'datatable.fixed.unFixed', + unFixed: 'datatable.fixed.left' +}; + +function handleFixed(column: NaiveUI.TableColumnCheck) { + const fixedOptions: NaiveUI.TableColumnFixed[] = ['left', 'right', 'unFixed']; + const index = fixedOptions.findIndex(item => item === column.fixed); + const nextIndex = index === fixedOptions.length - 1 ? 0 : index + 1; + column.fixed = fixedOptions[nextIndex]; +}