(nextColumns: FuTableColumnConfig[])
| 88 | }; |
| 89 | |
| 90 | const syncColumns = (nextColumns: FuTableColumnConfig[]) => { |
| 91 | if (!props.columns) { |
| 92 | return; |
| 93 | } |
| 94 | ensureStoredColumns(); |
| 95 | const currentColumns = props.columns as FuTableColumnConfig[]; |
| 96 | const sourceColumns = currentColumns.length > 0 ? currentColumns : storedColumns.value; |
| 97 | const sourceByKey = new Map(sourceColumns.map((column) => [column.key, column])); |
| 98 | const sourceOrder = new Map(sourceColumns.map((column, index) => [column.key, index])); |
| 99 | |
| 100 | const mergedColumns = nextColumns |
| 101 | .map((column, index) => ({ |
| 102 | ...column, |
| 103 | show: sourceByKey.get(column.key)?.show ?? true, |
| 104 | fixed: sourceByKey.get(column.key)?.fixed ?? column.fixed, |
| 105 | __order: sourceOrder.get(column.key) ?? index, |
| 106 | })) |
| 107 | .sort((a, b) => a.__order - b.__order) |
| 108 | .map((column) => { |
| 109 | const normalizedColumn = { ...column }; |
| 110 | delete (normalizedColumn as Partial<typeof normalizedColumn> & { __order?: number }).__order; |
| 111 | return normalizedColumn; |
| 112 | }); |
| 113 | |
| 114 | updateArrayInPlace(currentColumns, mergedColumns); |
| 115 | }; |
| 116 | |
| 117 | const resolvedColumns = computed(() => { |
| 118 | if (props.columns && props.columns.length > 0) { |
no test coverage detected