@vuu-ui/vuu-table 0.13.73-beta.1 → 0.13.73
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/useTableModel.js +9 -1
- package/cjs/useTableModel.js.map +1 -1
- package/esm/useTableModel.js +9 -1
- package/esm/useTableModel.js.map +1 -1
- package/package.json +10 -10
package/cjs/useTableModel.js
CHANGED
|
@@ -32,6 +32,10 @@ const checkboxColumnDescriptor = {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
};
|
|
35
|
+
const pinnedCheckboxColumnDescriptor = {
|
|
36
|
+
...checkboxColumnDescriptor,
|
|
37
|
+
pin: "left"
|
|
38
|
+
};
|
|
35
39
|
const numericTypes = ["int", "long", "double"];
|
|
36
40
|
const getDefaultAlignment = (serverDataType) => serverDataType === void 0 ? void 0 : numericTypes.includes(serverDataType) ? "right" : "left";
|
|
37
41
|
const tableModelReducer = (state, action) => {
|
|
@@ -115,10 +119,14 @@ function init({ availableWidth, dataSource, selectionModel, tableConfig }, previ
|
|
|
115
119
|
}
|
|
116
120
|
}
|
|
117
121
|
if (selectionModel === "checkbox") {
|
|
122
|
+
const somePinnedLeft = runtimeColumns.some((col) => col.pin === "left");
|
|
118
123
|
runtimeColumns.splice(
|
|
119
124
|
0,
|
|
120
125
|
0,
|
|
121
|
-
toRuntimeColumnDescriptor(
|
|
126
|
+
toRuntimeColumnDescriptor(
|
|
127
|
+
somePinnedLeft ? pinnedCheckboxColumnDescriptor : checkboxColumnDescriptor,
|
|
128
|
+
-1
|
|
129
|
+
)
|
|
122
130
|
);
|
|
123
131
|
}
|
|
124
132
|
const { columnLayout = "static" } = tableConfig;
|
package/cjs/useTableModel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableModel.js","sources":["../../../packages/vuu-table/src/useTableModel.ts"],"sourcesContent":["import {\n ColumnDescriptor,\n ColumnLayout,\n PinLocation,\n ResizePhase,\n RuntimeColumnDescriptor,\n TableAttributes,\n TableConfig,\n TableHeadings,\n TableSelectionModel,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n applyFilterToColumns,\n applyGroupByToColumns,\n applyRuntimeColumnWidthsToConfig,\n applySortToColumns,\n applyWidthToColumns,\n assertAllColumnsAreIncludedInSubscription,\n checkConfirmationPending,\n existingSort,\n flattenColumnGroup,\n getCellRenderer,\n getColumnHeaderContentRenderer,\n getColumnHeaderLabelRenderer,\n getColumnLabel,\n getTableHeadings,\n getValueFormatter,\n hasValidationRules,\n isFilteredColumn,\n isGroupColumn,\n isPinned,\n logger,\n removeSort,\n replaceColumn,\n sortPinnedColumns,\n stripFilterFromColumns,\n} from \"@vuu-ui/vuu-utils\";\n\nimport {\n DataSource,\n TableSchema,\n WithBaseFilter,\n WithFullConfig,\n} from \"@vuu-ui/vuu-data-types\";\nimport { VuuColumnDataType } from \"@vuu-ui/vuu-protocol-types\";\nimport { Reducer, useReducer } from \"react\";\nimport { buildValidationChecker } from \"@vuu-ui/vuu-data-react\";\n\nconst { info } = logger(\"useTableModel\");\n\nconst DEFAULT_COLUMN_WIDTH = 100;\n\nconst columnWithoutDataType = ({ serverDataType }: ColumnDescriptor) =>\n serverDataType === undefined;\n\nconst getDataType = (\n column: ColumnDescriptor,\n tableSchema?: TableSchema,\n): VuuColumnDataType | undefined => {\n const schemaColumn = tableSchema?.columns.find(\n ({ name }) => name === column.name,\n );\n if (schemaColumn) {\n return schemaColumn.serverDataType;\n } else {\n return column.serverDataType;\n }\n};\n\nconst checkboxColumnDescriptor: ColumnDescriptor = {\n allowColumnHeaderMenu: false,\n label: \"\",\n name: \"\",\n width: 25,\n resizeable: false,\n sortable: false,\n isSystemColumn: true,\n type: {\n name: \"checkbox\",\n renderer: {\n name: \"checkbox-row-selector-cell\",\n },\n },\n};\n\n/**\n * TableModel represents state used internally to manage Table. It is\n * derived initially from the TableConfig provided by user, along with the\n * data-related config from DataSource.\n */\nexport interface TableModel extends TableAttributes {\n columns: RuntimeColumnDescriptor[];\n headings: TableHeadings;\n}\n\n/**\n * InternalTableModel describes the state managed within the TableModel\n * reducer. It is the same as TableModel but with the addition of a\n * readonly copy of the original TableConfig.\n */\ninterface InternalTableModel extends TableModel {\n availableWidth: number;\n tableConfig: Readonly<TableConfig>;\n}\n\nconst numericTypes = [\"int\", \"long\", \"double\"];\nconst getDefaultAlignment = (serverDataType?: VuuColumnDataType) =>\n serverDataType === undefined\n ? undefined\n : numericTypes.includes(serverDataType)\n ? \"right\"\n : \"left\";\n\nexport interface ColumnActionInit {\n availableWidth: number;\n selectionModel?: TableSelectionModel;\n type: \"init\";\n tableConfig: TableConfig;\n dataSource: DataSource;\n}\n\nexport interface ColumnActionHide {\n type: \"hideColumns\";\n columns: ColumnDescriptor[];\n}\nexport interface ColumnActionRemove {\n type: \"removeColumn\";\n column: ColumnDescriptor;\n}\n\nexport interface ColumnActionShow {\n type: \"showColumns\";\n columns: RuntimeColumnDescriptor[];\n}\nexport interface ColumnActionMove {\n type: \"moveColumn\";\n column: RuntimeColumnDescriptor;\n moveBy?: 1 | -1;\n}\n\nexport interface ColumnActionPin {\n type: \"pinColumn\";\n column: ColumnDescriptor;\n pin: PinLocation | false;\n}\n\nexport interface ColumnActionResize {\n type: \"resizeColumn\";\n column: RuntimeColumnDescriptor;\n phase: ResizePhase;\n width?: number;\n}\n\nexport interface ColumnActionSetTableSchema {\n type: \"setTableSchema\";\n tableSchema: TableSchema;\n}\n\nexport interface ColumnActionUpdate {\n type: \"updateColumn\";\n column: ColumnDescriptor;\n}\n\nexport interface ColumnActionUpdateProp {\n align?: ColumnDescriptor[\"align\"];\n column: ColumnDescriptor;\n hidden?: ColumnDescriptor[\"hidden\"];\n label?: ColumnDescriptor[\"label\"];\n resizing?: RuntimeColumnDescriptor[\"resizing\"];\n type: \"updateColumnProp\";\n width?: ColumnDescriptor[\"width\"];\n}\n\nexport interface ColumnActionTableConfig\n extends WithBaseFilter<WithFullConfig> {\n confirmed?: boolean;\n type: \"tableConfig\";\n}\n\nexport type TableModelAction =\n | ColumnActionHide\n | ColumnActionInit\n | ColumnActionMove\n | ColumnActionPin\n | ColumnActionResize\n | ColumnActionSetTableSchema\n | ColumnActionShow\n | ColumnActionUpdate\n | ColumnActionUpdateProp\n | ColumnActionTableConfig;\n\ntype TableModelReducer = Reducer<InternalTableModel, TableModelAction>;\n\nexport type TableModelActionDispatch = (action: TableModelAction) => void;\n\nconst tableModelReducer: TableModelReducer = (state, action) => {\n info?.(`TableModelReducer ${action.type}`);\n switch (action.type) {\n case \"init\": {\n if (\n state.tableConfig.columnLayout === \"manual\" &&\n action.tableConfig.columnLayout === \"fit\"\n ) {\n //TODO we're jumping through hoops here when we should just make config a controlled prop\n\n // Manual columnLayout has been assigned because user has resized one or more columns.\n // It happened during current session so tableConfig still reflects original value.\n return init({\n ...action,\n tableConfig: applyRuntimeColumnWidthsToConfig(\n action.tableConfig,\n state.columns,\n ),\n });\n } else {\n return init(action, state);\n }\n }\n case \"moveColumn\":\n return moveColumn(state, action);\n case \"resizeColumn\":\n return resizeColumn(state, action);\n case \"setTableSchema\":\n return setTableSchema(state, action);\n case \"hideColumns\":\n return hideColumns(state, action);\n case \"showColumns\":\n return showColumns(state, action);\n case \"pinColumn\":\n return pinColumn(state, action);\n case \"updateColumnProp\":\n return updateColumnProp(state, action);\n case \"tableConfig\":\n return updateTableConfig(state, action);\n default:\n console.log(`unhandled action ${action.type}`);\n return state;\n }\n};\n\nexport interface TableModelHookProps {\n config: TableConfig;\n dataSource: DataSource;\n selectionModel: TableSelectionModel;\n availableWidth: number;\n}\n\nexport const useTableModel = ({\n config: tableConfigProp,\n dataSource,\n selectionModel,\n availableWidth,\n}: TableModelHookProps) => {\n const [state, dispatchTableModelAction] = useReducer(\n tableModelReducer,\n {\n availableWidth,\n tableConfig: tableConfigProp,\n dataSource,\n selectionModel,\n },\n init,\n );\n\n const { columns, headings, tableConfig, ...tableAttributes } = state;\n\n return {\n columns,\n dispatchTableModelAction,\n headings,\n tableAttributes,\n tableConfig,\n };\n};\n\ntype InitialConfig = {\n availableWidth: number;\n columnLayout?: ColumnLayout;\n dataSource: DataSource;\n selectionModel?: TableSelectionModel;\n tableConfig: TableConfig;\n};\n\nfunction init(\n { availableWidth, dataSource, selectionModel, tableConfig }: InitialConfig,\n previousConfig?: InternalTableModel,\n): InternalTableModel {\n const { columns, ...tableAttributes } = tableConfig;\n const { config: dataSourceConfig, tableSchema } = dataSource;\n const toRuntimeColumnDescriptor = columnDescriptorToRuntimeColumDescriptor(\n tableAttributes,\n tableSchema,\n );\n\n const runtimeColumns: RuntimeColumnDescriptor[] = [];\n let colIndex = 1;\n assertAllColumnsAreIncludedInSubscription(columns, dataSourceConfig.columns);\n for (const column of columns) {\n runtimeColumns.push(\n toRuntimeColumnDescriptor(column, column.hidden ? -1 : colIndex),\n );\n if (!column.hidden) {\n colIndex += 1;\n }\n }\n\n if (selectionModel === \"checkbox\") {\n runtimeColumns.splice(\n 0,\n 0,\n toRuntimeColumnDescriptor(checkboxColumnDescriptor, -1),\n );\n }\n\n const { columnLayout = \"static\" } = tableConfig;\n const runtimeColumnsWithLayout = applyWidthToColumns(runtimeColumns, {\n availableWidth,\n columnLayout,\n });\n\n const columnsInRenderOrder = runtimeColumnsWithLayout.some(isPinned)\n ? sortPinnedColumns(runtimeColumnsWithLayout)\n : runtimeColumnsWithLayout;\n\n let state: InternalTableModel = {\n availableWidth,\n columns: columnsInRenderOrder,\n headings: getTableHeadings(columnsInRenderOrder),\n tableConfig,\n ...tableAttributes,\n };\n if (dataSourceConfig) {\n const { columns: _, ...rest } = dataSourceConfig;\n state = updateTableConfig(state, {\n type: \"tableConfig\",\n ...rest,\n confirmed: checkConfirmationPending(previousConfig),\n });\n }\n return state;\n}\n\nconst getLabel = (\n label: string,\n columnFormatHeader?: \"uppercase\" | \"capitalize\",\n): string => {\n if (columnFormatHeader === \"uppercase\") {\n return label.toUpperCase();\n } else if (columnFormatHeader === \"capitalize\") {\n return label[0].toUpperCase() + label.slice(1).toLowerCase();\n }\n return label;\n};\n\nconst columnDescriptorToRuntimeColumDescriptor =\n (tableAttributes: TableAttributes, tableSchema?: TableSchema) =>\n (column: ColumnDescriptor, ariaColIndex: number): RuntimeColumnDescriptor => {\n const { columnDefaultWidth = DEFAULT_COLUMN_WIDTH, columnFormatHeader } =\n tableAttributes;\n const serverDataType = getDataType(column, tableSchema);\n const {\n align = getDefaultAlignment(serverDataType),\n name,\n label = getColumnLabel(column),\n source = \"server\",\n width = columnDefaultWidth,\n ...rest\n } = column;\n\n const runtimeColumnWithDefaults: RuntimeColumnDescriptor = {\n ...rest,\n align,\n ariaColIndex,\n CellRenderer: getCellRenderer(column),\n HeaderCellContentRenderer: getColumnHeaderContentRenderer(column),\n HeaderCellLabelRenderer: getColumnHeaderLabelRenderer(column),\n clientSideEditValidationCheck: hasValidationRules(column.type)\n ? buildValidationChecker(column.type.rules)\n : undefined,\n label: getLabel(label, columnFormatHeader),\n name,\n originalIdx: ariaColIndex,\n serverDataType,\n source,\n valueFormatter: getValueFormatter(column, serverDataType),\n width,\n };\n\n if (isGroupColumn(runtimeColumnWithDefaults)) {\n runtimeColumnWithDefaults.columns = runtimeColumnWithDefaults.columns.map(\n (col) =>\n columnDescriptorToRuntimeColumDescriptor(tableAttributes)(col, -1),\n );\n }\n\n return runtimeColumnWithDefaults;\n };\n\nfunction moveColumn(\n state: InternalTableModel,\n // TODO do we ever use this ?\n { column, moveBy }: ColumnActionMove,\n) {\n const { columns } = state;\n if (typeof moveBy === \"number\") {\n const idx = columns.indexOf(column);\n const newColumns = columns.slice();\n const [movedColumns] = newColumns.splice(idx, 1);\n newColumns.splice(idx + moveBy, 0, movedColumns);\n return {\n ...state,\n columns: newColumns,\n };\n }\n return state;\n}\n\nfunction hideColumns(state: InternalTableModel, { columns }: ColumnActionHide) {\n if (columns.some((col) => col.hidden !== true)) {\n return columns.reduce<InternalTableModel>((s, c) => {\n if (c.hidden !== true) {\n return updateColumnProp(s, {\n type: \"updateColumnProp\",\n column: c,\n hidden: true,\n });\n } else {\n return s;\n }\n }, state);\n } else {\n return state;\n }\n}\nfunction showColumns(state: InternalTableModel, { columns }: ColumnActionShow) {\n if (columns.some((col) => col.hidden)) {\n return columns.reduce<InternalTableModel>((s, c) => {\n if (c.hidden) {\n return updateColumnProp(s, {\n type: \"updateColumnProp\",\n column: c,\n hidden: false,\n });\n } else {\n return s;\n }\n }, state);\n } else {\n return state;\n }\n}\n\nfunction resizeColumn(\n state: InternalTableModel,\n { column, phase, width }: ColumnActionResize,\n) {\n const type = \"updateColumnProp\";\n const resizing = phase !== \"end\";\n switch (phase) {\n case \"begin\":\n return updateColumnProp(state, { type, column, resizing });\n case \"end\": {\n const { tableConfig } = state;\n const isFit = tableConfig.columnLayout === \"fit\";\n const newState: InternalTableModel = isFit\n ? {\n ...state,\n tableConfig: applyRuntimeColumnWidthsToConfig(\n tableConfig,\n state.columns,\n ),\n }\n : state;\n return updateColumnProp(newState, { type, column, resizing, width });\n }\n case \"resize\":\n return updateColumnProp(state, { type, column, width });\n default:\n throw Error(`useTableModel.resizeColumn, invalid resizePhase ${phase}`);\n }\n}\n\nfunction setTableSchema(\n state: InternalTableModel,\n { tableSchema }: ColumnActionSetTableSchema,\n) {\n const { columns } = state;\n if (columns.some(columnWithoutDataType)) {\n const cols = columns.map((column) => {\n const serverDataType = getDataType(column, tableSchema);\n return {\n ...column,\n align: column.align ?? getDefaultAlignment(serverDataType),\n serverDataType,\n };\n });\n\n return {\n ...state,\n columns: cols,\n };\n } else {\n return state;\n }\n}\n\nfunction pinColumn(state: InternalTableModel, action: ColumnActionPin) {\n let { columns } = state;\n const { column, pin } = action;\n const targetColumn = columns.find((col) => col.name === column.name);\n if (targetColumn) {\n columns = replaceColumn(columns, { ...targetColumn, pin });\n columns = sortPinnedColumns(columns);\n return {\n ...state,\n columns,\n };\n } else {\n return state;\n }\n}\nfunction updateColumnProp(\n state: InternalTableModel,\n action: ColumnActionUpdateProp,\n) {\n let { columns, tableConfig } = state;\n const { align, column, hidden, label, resizing, width } = action;\n const targetColumn = columns.find((col) => col.name === column.name);\n if (targetColumn) {\n if (align === \"left\" || align === \"right\") {\n columns = replaceColumn(columns, { ...targetColumn, align });\n }\n if (typeof label === \"string\") {\n columns = replaceColumn(columns, { ...targetColumn, label });\n }\n if (typeof resizing === \"boolean\") {\n columns = replaceColumn(columns, { ...targetColumn, resizing });\n }\n if (typeof hidden === \"boolean\") {\n columns = replaceColumn(columns, { ...targetColumn, hidden });\n }\n if (typeof width === \"number\") {\n columns = replaceColumn(columns, { ...targetColumn, width });\n\n const targetConfigColumn = tableConfig.columns.find(\n (col) => col.name === column.name,\n );\n if (targetConfigColumn) {\n tableConfig = {\n ...tableConfig,\n columns: replaceColumn<ColumnDescriptor>(tableConfig.columns, {\n ...targetConfigColumn,\n width,\n }),\n };\n }\n }\n }\n return {\n ...state,\n columns,\n tableConfig,\n } as InternalTableModel;\n}\n\n// TODO rename to make clear its dataSOurce config\nfunction updateTableConfig(\n state: InternalTableModel,\n {\n confirmed,\n filterSpec,\n groupBy,\n sort,\n }: Omit<ColumnActionTableConfig, \"columns\">,\n) {\n let result = state;\n\n const { availableWidth, columnLayout = \"static\" } = state;\n\n if (groupBy.length > 0) {\n const groupedColumns = applyGroupByToColumns({\n columns: result.columns,\n groupBy,\n confirmed,\n availableWidth,\n });\n const columns = applyWidthToColumns(groupedColumns, {\n availableWidth,\n columnLayout,\n });\n\n result = {\n ...state,\n columns,\n };\n } else if (\n result.columns.length > 0 &&\n isGroupColumn(result.columns[0]) &&\n confirmed\n ) {\n result = {\n ...state,\n columns: flattenColumnGroup(result.columns),\n };\n }\n\n if (sort.sortDefs.length > 0) {\n result = {\n ...state,\n columns: applySortToColumns(result.columns, sort),\n };\n } else if (existingSort(result.columns)) {\n result = {\n ...state,\n columns: removeSort(result.columns),\n };\n }\n\n if (filterSpec.filter.length > 0) {\n result = {\n ...state,\n columns: applyFilterToColumns(result.columns, filterSpec),\n };\n } else if (result.columns.some(isFilteredColumn)) {\n result = {\n ...state,\n columns: stripFilterFromColumns(result.columns),\n };\n }\n\n return result;\n}\n"],"names":["logger","applyRuntimeColumnWidthsToConfig","useReducer","assertAllColumnsAreIncludedInSubscription","applyWidthToColumns","isPinned","sortPinnedColumns","getTableHeadings","checkConfirmationPending","getColumnLabel","getCellRenderer","getColumnHeaderContentRenderer","getColumnHeaderLabelRenderer","hasValidationRules","buildValidationChecker","getValueFormatter","isGroupColumn","replaceColumn","applyGroupByToColumns","flattenColumnGroup","applySortToColumns","existingSort","removeSort","applyFilterToColumns","isFilteredColumn","stripFilterFromColumns"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useTableModel.js","sources":["../../../packages/vuu-table/src/useTableModel.ts"],"sourcesContent":["import {\n ColumnDescriptor,\n ColumnLayout,\n PinLocation,\n ResizePhase,\n RuntimeColumnDescriptor,\n TableAttributes,\n TableConfig,\n TableHeadings,\n TableSelectionModel,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n applyFilterToColumns,\n applyGroupByToColumns,\n applyRuntimeColumnWidthsToConfig,\n applySortToColumns,\n applyWidthToColumns,\n assertAllColumnsAreIncludedInSubscription,\n checkConfirmationPending,\n existingSort,\n flattenColumnGroup,\n getCellRenderer,\n getColumnHeaderContentRenderer,\n getColumnHeaderLabelRenderer,\n getColumnLabel,\n getTableHeadings,\n getValueFormatter,\n hasValidationRules,\n isFilteredColumn,\n isGroupColumn,\n isPinned,\n logger,\n removeSort,\n replaceColumn,\n sortPinnedColumns,\n stripFilterFromColumns,\n} from \"@vuu-ui/vuu-utils\";\n\nimport {\n DataSource,\n TableSchema,\n WithBaseFilter,\n WithFullConfig,\n} from \"@vuu-ui/vuu-data-types\";\nimport { VuuColumnDataType } from \"@vuu-ui/vuu-protocol-types\";\nimport { Reducer, useReducer } from \"react\";\nimport { buildValidationChecker } from \"@vuu-ui/vuu-data-react\";\n\nconst { info } = logger(\"useTableModel\");\n\nconst DEFAULT_COLUMN_WIDTH = 100;\n\nconst columnWithoutDataType = ({ serverDataType }: ColumnDescriptor) =>\n serverDataType === undefined;\n\nconst getDataType = (\n column: ColumnDescriptor,\n tableSchema?: TableSchema,\n): VuuColumnDataType | undefined => {\n const schemaColumn = tableSchema?.columns.find(\n ({ name }) => name === column.name,\n );\n if (schemaColumn) {\n return schemaColumn.serverDataType;\n } else {\n return column.serverDataType;\n }\n};\n\nconst checkboxColumnDescriptor: ColumnDescriptor = {\n allowColumnHeaderMenu: false,\n label: \"\",\n name: \"\",\n width: 25,\n resizeable: false,\n sortable: false,\n isSystemColumn: true,\n type: {\n name: \"checkbox\",\n renderer: {\n name: \"checkbox-row-selector-cell\",\n },\n },\n};\n\nconst pinnedCheckboxColumnDescriptor: ColumnDescriptor = {\n ...checkboxColumnDescriptor,\n pin: \"left\",\n};\n\n/**\n * TableModel represents state used internally to manage Table. It is\n * derived initially from the TableConfig provided by user, along with the\n * data-related config from DataSource.\n */\nexport interface TableModel extends TableAttributes {\n columns: RuntimeColumnDescriptor[];\n headings: TableHeadings;\n}\n\n/**\n * InternalTableModel describes the state managed within the TableModel\n * reducer. It is the same as TableModel but with the addition of a\n * readonly copy of the original TableConfig.\n */\ninterface InternalTableModel extends TableModel {\n availableWidth: number;\n tableConfig: Readonly<TableConfig>;\n}\n\nconst numericTypes = [\"int\", \"long\", \"double\"];\nconst getDefaultAlignment = (serverDataType?: VuuColumnDataType) =>\n serverDataType === undefined\n ? undefined\n : numericTypes.includes(serverDataType)\n ? \"right\"\n : \"left\";\n\nexport interface ColumnActionInit {\n availableWidth: number;\n selectionModel?: TableSelectionModel;\n type: \"init\";\n tableConfig: TableConfig;\n dataSource: DataSource;\n}\n\nexport interface ColumnActionHide {\n type: \"hideColumns\";\n columns: ColumnDescriptor[];\n}\nexport interface ColumnActionRemove {\n type: \"removeColumn\";\n column: ColumnDescriptor;\n}\n\nexport interface ColumnActionShow {\n type: \"showColumns\";\n columns: RuntimeColumnDescriptor[];\n}\nexport interface ColumnActionMove {\n type: \"moveColumn\";\n column: RuntimeColumnDescriptor;\n moveBy?: 1 | -1;\n}\n\nexport interface ColumnActionPin {\n type: \"pinColumn\";\n column: ColumnDescriptor;\n pin: PinLocation | false;\n}\n\nexport interface ColumnActionResize {\n type: \"resizeColumn\";\n column: RuntimeColumnDescriptor;\n phase: ResizePhase;\n width?: number;\n}\n\nexport interface ColumnActionSetTableSchema {\n type: \"setTableSchema\";\n tableSchema: TableSchema;\n}\n\nexport interface ColumnActionUpdate {\n type: \"updateColumn\";\n column: ColumnDescriptor;\n}\n\nexport interface ColumnActionUpdateProp {\n align?: ColumnDescriptor[\"align\"];\n column: ColumnDescriptor;\n hidden?: ColumnDescriptor[\"hidden\"];\n label?: ColumnDescriptor[\"label\"];\n resizing?: RuntimeColumnDescriptor[\"resizing\"];\n type: \"updateColumnProp\";\n width?: ColumnDescriptor[\"width\"];\n}\n\nexport interface ColumnActionTableConfig\n extends WithBaseFilter<WithFullConfig> {\n confirmed?: boolean;\n type: \"tableConfig\";\n}\n\nexport type TableModelAction =\n | ColumnActionHide\n | ColumnActionInit\n | ColumnActionMove\n | ColumnActionPin\n | ColumnActionResize\n | ColumnActionSetTableSchema\n | ColumnActionShow\n | ColumnActionUpdate\n | ColumnActionUpdateProp\n | ColumnActionTableConfig;\n\ntype TableModelReducer = Reducer<InternalTableModel, TableModelAction>;\n\nexport type TableModelActionDispatch = (action: TableModelAction) => void;\n\nconst tableModelReducer: TableModelReducer = (state, action) => {\n info?.(`TableModelReducer ${action.type}`);\n switch (action.type) {\n case \"init\": {\n if (\n state.tableConfig.columnLayout === \"manual\" &&\n action.tableConfig.columnLayout === \"fit\"\n ) {\n //TODO we're jumping through hoops here when we should just make config a controlled prop\n\n // Manual columnLayout has been assigned because user has resized one or more columns.\n // It happened during current session so tableConfig still reflects original value.\n return init({\n ...action,\n tableConfig: applyRuntimeColumnWidthsToConfig(\n action.tableConfig,\n state.columns,\n ),\n });\n } else {\n return init(action, state);\n }\n }\n case \"moveColumn\":\n return moveColumn(state, action);\n case \"resizeColumn\":\n return resizeColumn(state, action);\n case \"setTableSchema\":\n return setTableSchema(state, action);\n case \"hideColumns\":\n return hideColumns(state, action);\n case \"showColumns\":\n return showColumns(state, action);\n case \"pinColumn\":\n return pinColumn(state, action);\n case \"updateColumnProp\":\n return updateColumnProp(state, action);\n case \"tableConfig\":\n return updateTableConfig(state, action);\n default:\n console.log(`unhandled action ${action.type}`);\n return state;\n }\n};\n\nexport interface TableModelHookProps {\n config: TableConfig;\n dataSource: DataSource;\n selectionModel: TableSelectionModel;\n availableWidth: number;\n}\n\nexport const useTableModel = ({\n config: tableConfigProp,\n dataSource,\n selectionModel,\n availableWidth,\n}: TableModelHookProps) => {\n const [state, dispatchTableModelAction] = useReducer(\n tableModelReducer,\n {\n availableWidth,\n tableConfig: tableConfigProp,\n dataSource,\n selectionModel,\n },\n init,\n );\n\n const { columns, headings, tableConfig, ...tableAttributes } = state;\n\n return {\n columns,\n dispatchTableModelAction,\n headings,\n tableAttributes,\n tableConfig,\n };\n};\n\ntype InitialConfig = {\n availableWidth: number;\n columnLayout?: ColumnLayout;\n dataSource: DataSource;\n selectionModel?: TableSelectionModel;\n tableConfig: TableConfig;\n};\n\nfunction init(\n { availableWidth, dataSource, selectionModel, tableConfig }: InitialConfig,\n previousConfig?: InternalTableModel,\n): InternalTableModel {\n const { columns, ...tableAttributes } = tableConfig;\n const { config: dataSourceConfig, tableSchema } = dataSource;\n const toRuntimeColumnDescriptor = columnDescriptorToRuntimeColumDescriptor(\n tableAttributes,\n tableSchema,\n );\n\n const runtimeColumns: RuntimeColumnDescriptor[] = [];\n let colIndex = 1;\n assertAllColumnsAreIncludedInSubscription(columns, dataSourceConfig.columns);\n for (const column of columns) {\n runtimeColumns.push(\n toRuntimeColumnDescriptor(column, column.hidden ? -1 : colIndex),\n );\n if (!column.hidden) {\n colIndex += 1;\n }\n }\n\n if (selectionModel === \"checkbox\") {\n const somePinnedLeft = runtimeColumns.some((col) => col.pin === \"left\");\n runtimeColumns.splice(\n 0,\n 0,\n toRuntimeColumnDescriptor(\n somePinnedLeft\n ? pinnedCheckboxColumnDescriptor\n : checkboxColumnDescriptor,\n -1,\n ),\n );\n }\n\n const { columnLayout = \"static\" } = tableConfig;\n const runtimeColumnsWithLayout = applyWidthToColumns(runtimeColumns, {\n availableWidth,\n columnLayout,\n });\n\n const columnsInRenderOrder = runtimeColumnsWithLayout.some(isPinned)\n ? sortPinnedColumns(runtimeColumnsWithLayout)\n : runtimeColumnsWithLayout;\n\n let state: InternalTableModel = {\n availableWidth,\n columns: columnsInRenderOrder,\n headings: getTableHeadings(columnsInRenderOrder),\n tableConfig,\n ...tableAttributes,\n };\n if (dataSourceConfig) {\n const { columns: _, ...rest } = dataSourceConfig;\n state = updateTableConfig(state, {\n type: \"tableConfig\",\n ...rest,\n confirmed: checkConfirmationPending(previousConfig),\n });\n }\n return state;\n}\n\nconst getLabel = (\n label: string,\n columnFormatHeader?: \"uppercase\" | \"capitalize\",\n): string => {\n if (columnFormatHeader === \"uppercase\") {\n return label.toUpperCase();\n } else if (columnFormatHeader === \"capitalize\") {\n return label[0].toUpperCase() + label.slice(1).toLowerCase();\n }\n return label;\n};\n\nconst columnDescriptorToRuntimeColumDescriptor =\n (tableAttributes: TableAttributes, tableSchema?: TableSchema) =>\n (column: ColumnDescriptor, ariaColIndex: number): RuntimeColumnDescriptor => {\n const { columnDefaultWidth = DEFAULT_COLUMN_WIDTH, columnFormatHeader } =\n tableAttributes;\n const serverDataType = getDataType(column, tableSchema);\n const {\n align = getDefaultAlignment(serverDataType),\n name,\n label = getColumnLabel(column),\n source = \"server\",\n width = columnDefaultWidth,\n ...rest\n } = column;\n\n const runtimeColumnWithDefaults: RuntimeColumnDescriptor = {\n ...rest,\n align,\n ariaColIndex,\n CellRenderer: getCellRenderer(column),\n HeaderCellContentRenderer: getColumnHeaderContentRenderer(column),\n HeaderCellLabelRenderer: getColumnHeaderLabelRenderer(column),\n clientSideEditValidationCheck: hasValidationRules(column.type)\n ? buildValidationChecker(column.type.rules)\n : undefined,\n label: getLabel(label, columnFormatHeader),\n name,\n originalIdx: ariaColIndex,\n serverDataType,\n source,\n valueFormatter: getValueFormatter(column, serverDataType),\n width,\n };\n\n if (isGroupColumn(runtimeColumnWithDefaults)) {\n runtimeColumnWithDefaults.columns = runtimeColumnWithDefaults.columns.map(\n (col) =>\n columnDescriptorToRuntimeColumDescriptor(tableAttributes)(col, -1),\n );\n }\n\n return runtimeColumnWithDefaults;\n };\n\nfunction moveColumn(\n state: InternalTableModel,\n // TODO do we ever use this ?\n { column, moveBy }: ColumnActionMove,\n) {\n const { columns } = state;\n if (typeof moveBy === \"number\") {\n const idx = columns.indexOf(column);\n const newColumns = columns.slice();\n const [movedColumns] = newColumns.splice(idx, 1);\n newColumns.splice(idx + moveBy, 0, movedColumns);\n return {\n ...state,\n columns: newColumns,\n };\n }\n return state;\n}\n\nfunction hideColumns(state: InternalTableModel, { columns }: ColumnActionHide) {\n if (columns.some((col) => col.hidden !== true)) {\n return columns.reduce<InternalTableModel>((s, c) => {\n if (c.hidden !== true) {\n return updateColumnProp(s, {\n type: \"updateColumnProp\",\n column: c,\n hidden: true,\n });\n } else {\n return s;\n }\n }, state);\n } else {\n return state;\n }\n}\nfunction showColumns(state: InternalTableModel, { columns }: ColumnActionShow) {\n if (columns.some((col) => col.hidden)) {\n return columns.reduce<InternalTableModel>((s, c) => {\n if (c.hidden) {\n return updateColumnProp(s, {\n type: \"updateColumnProp\",\n column: c,\n hidden: false,\n });\n } else {\n return s;\n }\n }, state);\n } else {\n return state;\n }\n}\n\nfunction resizeColumn(\n state: InternalTableModel,\n { column, phase, width }: ColumnActionResize,\n) {\n const type = \"updateColumnProp\";\n const resizing = phase !== \"end\";\n switch (phase) {\n case \"begin\":\n return updateColumnProp(state, { type, column, resizing });\n case \"end\": {\n const { tableConfig } = state;\n const isFit = tableConfig.columnLayout === \"fit\";\n const newState: InternalTableModel = isFit\n ? {\n ...state,\n tableConfig: applyRuntimeColumnWidthsToConfig(\n tableConfig,\n state.columns,\n ),\n }\n : state;\n return updateColumnProp(newState, { type, column, resizing, width });\n }\n case \"resize\":\n return updateColumnProp(state, { type, column, width });\n default:\n throw Error(`useTableModel.resizeColumn, invalid resizePhase ${phase}`);\n }\n}\n\nfunction setTableSchema(\n state: InternalTableModel,\n { tableSchema }: ColumnActionSetTableSchema,\n) {\n const { columns } = state;\n if (columns.some(columnWithoutDataType)) {\n const cols = columns.map((column) => {\n const serverDataType = getDataType(column, tableSchema);\n return {\n ...column,\n align: column.align ?? getDefaultAlignment(serverDataType),\n serverDataType,\n };\n });\n\n return {\n ...state,\n columns: cols,\n };\n } else {\n return state;\n }\n}\n\nfunction pinColumn(state: InternalTableModel, action: ColumnActionPin) {\n let { columns } = state;\n const { column, pin } = action;\n const targetColumn = columns.find((col) => col.name === column.name);\n if (targetColumn) {\n columns = replaceColumn(columns, { ...targetColumn, pin });\n columns = sortPinnedColumns(columns);\n return {\n ...state,\n columns,\n };\n } else {\n return state;\n }\n}\nfunction updateColumnProp(\n state: InternalTableModel,\n action: ColumnActionUpdateProp,\n) {\n let { columns, tableConfig } = state;\n const { align, column, hidden, label, resizing, width } = action;\n const targetColumn = columns.find((col) => col.name === column.name);\n if (targetColumn) {\n if (align === \"left\" || align === \"right\") {\n columns = replaceColumn(columns, { ...targetColumn, align });\n }\n if (typeof label === \"string\") {\n columns = replaceColumn(columns, { ...targetColumn, label });\n }\n if (typeof resizing === \"boolean\") {\n columns = replaceColumn(columns, { ...targetColumn, resizing });\n }\n if (typeof hidden === \"boolean\") {\n columns = replaceColumn(columns, { ...targetColumn, hidden });\n }\n if (typeof width === \"number\") {\n columns = replaceColumn(columns, { ...targetColumn, width });\n\n const targetConfigColumn = tableConfig.columns.find(\n (col) => col.name === column.name,\n );\n if (targetConfigColumn) {\n tableConfig = {\n ...tableConfig,\n columns: replaceColumn<ColumnDescriptor>(tableConfig.columns, {\n ...targetConfigColumn,\n width,\n }),\n };\n }\n }\n }\n return {\n ...state,\n columns,\n tableConfig,\n } as InternalTableModel;\n}\n\n// TODO rename to make clear its dataSOurce config\nfunction updateTableConfig(\n state: InternalTableModel,\n {\n confirmed,\n filterSpec,\n groupBy,\n sort,\n }: Omit<ColumnActionTableConfig, \"columns\">,\n) {\n let result = state;\n\n const { availableWidth, columnLayout = \"static\" } = state;\n\n if (groupBy.length > 0) {\n const groupedColumns = applyGroupByToColumns({\n columns: result.columns,\n groupBy,\n confirmed,\n availableWidth,\n });\n const columns = applyWidthToColumns(groupedColumns, {\n availableWidth,\n columnLayout,\n });\n\n result = {\n ...state,\n columns,\n };\n } else if (\n result.columns.length > 0 &&\n isGroupColumn(result.columns[0]) &&\n confirmed\n ) {\n result = {\n ...state,\n columns: flattenColumnGroup(result.columns),\n };\n }\n\n if (sort.sortDefs.length > 0) {\n result = {\n ...state,\n columns: applySortToColumns(result.columns, sort),\n };\n } else if (existingSort(result.columns)) {\n result = {\n ...state,\n columns: removeSort(result.columns),\n };\n }\n\n if (filterSpec.filter.length > 0) {\n result = {\n ...state,\n columns: applyFilterToColumns(result.columns, filterSpec),\n };\n } else if (result.columns.some(isFilteredColumn)) {\n result = {\n ...state,\n columns: stripFilterFromColumns(result.columns),\n };\n }\n\n return result;\n}\n"],"names":["logger","applyRuntimeColumnWidthsToConfig","useReducer","assertAllColumnsAreIncludedInSubscription","applyWidthToColumns","isPinned","sortPinnedColumns","getTableHeadings","checkConfirmationPending","getColumnLabel","getCellRenderer","getColumnHeaderContentRenderer","getColumnHeaderLabelRenderer","hasValidationRules","buildValidationChecker","getValueFormatter","isGroupColumn","replaceColumn","applyGroupByToColumns","flattenColumnGroup","applySortToColumns","existingSort","removeSort","applyFilterToColumns","isFilteredColumn","stripFilterFromColumns"],"mappings":"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"}
|
package/esm/useTableModel.js
CHANGED
|
@@ -30,6 +30,10 @@ const checkboxColumnDescriptor = {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
|
+
const pinnedCheckboxColumnDescriptor = {
|
|
34
|
+
...checkboxColumnDescriptor,
|
|
35
|
+
pin: "left"
|
|
36
|
+
};
|
|
33
37
|
const numericTypes = ["int", "long", "double"];
|
|
34
38
|
const getDefaultAlignment = (serverDataType) => serverDataType === void 0 ? void 0 : numericTypes.includes(serverDataType) ? "right" : "left";
|
|
35
39
|
const tableModelReducer = (state, action) => {
|
|
@@ -113,10 +117,14 @@ function init({ availableWidth, dataSource, selectionModel, tableConfig }, previ
|
|
|
113
117
|
}
|
|
114
118
|
}
|
|
115
119
|
if (selectionModel === "checkbox") {
|
|
120
|
+
const somePinnedLeft = runtimeColumns.some((col) => col.pin === "left");
|
|
116
121
|
runtimeColumns.splice(
|
|
117
122
|
0,
|
|
118
123
|
0,
|
|
119
|
-
toRuntimeColumnDescriptor(
|
|
124
|
+
toRuntimeColumnDescriptor(
|
|
125
|
+
somePinnedLeft ? pinnedCheckboxColumnDescriptor : checkboxColumnDescriptor,
|
|
126
|
+
-1
|
|
127
|
+
)
|
|
120
128
|
);
|
|
121
129
|
}
|
|
122
130
|
const { columnLayout = "static" } = tableConfig;
|
package/esm/useTableModel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableModel.js","sources":["../../../packages/vuu-table/src/useTableModel.ts"],"sourcesContent":["import {\n ColumnDescriptor,\n ColumnLayout,\n PinLocation,\n ResizePhase,\n RuntimeColumnDescriptor,\n TableAttributes,\n TableConfig,\n TableHeadings,\n TableSelectionModel,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n applyFilterToColumns,\n applyGroupByToColumns,\n applyRuntimeColumnWidthsToConfig,\n applySortToColumns,\n applyWidthToColumns,\n assertAllColumnsAreIncludedInSubscription,\n checkConfirmationPending,\n existingSort,\n flattenColumnGroup,\n getCellRenderer,\n getColumnHeaderContentRenderer,\n getColumnHeaderLabelRenderer,\n getColumnLabel,\n getTableHeadings,\n getValueFormatter,\n hasValidationRules,\n isFilteredColumn,\n isGroupColumn,\n isPinned,\n logger,\n removeSort,\n replaceColumn,\n sortPinnedColumns,\n stripFilterFromColumns,\n} from \"@vuu-ui/vuu-utils\";\n\nimport {\n DataSource,\n TableSchema,\n WithBaseFilter,\n WithFullConfig,\n} from \"@vuu-ui/vuu-data-types\";\nimport { VuuColumnDataType } from \"@vuu-ui/vuu-protocol-types\";\nimport { Reducer, useReducer } from \"react\";\nimport { buildValidationChecker } from \"@vuu-ui/vuu-data-react\";\n\nconst { info } = logger(\"useTableModel\");\n\nconst DEFAULT_COLUMN_WIDTH = 100;\n\nconst columnWithoutDataType = ({ serverDataType }: ColumnDescriptor) =>\n serverDataType === undefined;\n\nconst getDataType = (\n column: ColumnDescriptor,\n tableSchema?: TableSchema,\n): VuuColumnDataType | undefined => {\n const schemaColumn = tableSchema?.columns.find(\n ({ name }) => name === column.name,\n );\n if (schemaColumn) {\n return schemaColumn.serverDataType;\n } else {\n return column.serverDataType;\n }\n};\n\nconst checkboxColumnDescriptor: ColumnDescriptor = {\n allowColumnHeaderMenu: false,\n label: \"\",\n name: \"\",\n width: 25,\n resizeable: false,\n sortable: false,\n isSystemColumn: true,\n type: {\n name: \"checkbox\",\n renderer: {\n name: \"checkbox-row-selector-cell\",\n },\n },\n};\n\n/**\n * TableModel represents state used internally to manage Table. It is\n * derived initially from the TableConfig provided by user, along with the\n * data-related config from DataSource.\n */\nexport interface TableModel extends TableAttributes {\n columns: RuntimeColumnDescriptor[];\n headings: TableHeadings;\n}\n\n/**\n * InternalTableModel describes the state managed within the TableModel\n * reducer. It is the same as TableModel but with the addition of a\n * readonly copy of the original TableConfig.\n */\ninterface InternalTableModel extends TableModel {\n availableWidth: number;\n tableConfig: Readonly<TableConfig>;\n}\n\nconst numericTypes = [\"int\", \"long\", \"double\"];\nconst getDefaultAlignment = (serverDataType?: VuuColumnDataType) =>\n serverDataType === undefined\n ? undefined\n : numericTypes.includes(serverDataType)\n ? \"right\"\n : \"left\";\n\nexport interface ColumnActionInit {\n availableWidth: number;\n selectionModel?: TableSelectionModel;\n type: \"init\";\n tableConfig: TableConfig;\n dataSource: DataSource;\n}\n\nexport interface ColumnActionHide {\n type: \"hideColumns\";\n columns: ColumnDescriptor[];\n}\nexport interface ColumnActionRemove {\n type: \"removeColumn\";\n column: ColumnDescriptor;\n}\n\nexport interface ColumnActionShow {\n type: \"showColumns\";\n columns: RuntimeColumnDescriptor[];\n}\nexport interface ColumnActionMove {\n type: \"moveColumn\";\n column: RuntimeColumnDescriptor;\n moveBy?: 1 | -1;\n}\n\nexport interface ColumnActionPin {\n type: \"pinColumn\";\n column: ColumnDescriptor;\n pin: PinLocation | false;\n}\n\nexport interface ColumnActionResize {\n type: \"resizeColumn\";\n column: RuntimeColumnDescriptor;\n phase: ResizePhase;\n width?: number;\n}\n\nexport interface ColumnActionSetTableSchema {\n type: \"setTableSchema\";\n tableSchema: TableSchema;\n}\n\nexport interface ColumnActionUpdate {\n type: \"updateColumn\";\n column: ColumnDescriptor;\n}\n\nexport interface ColumnActionUpdateProp {\n align?: ColumnDescriptor[\"align\"];\n column: ColumnDescriptor;\n hidden?: ColumnDescriptor[\"hidden\"];\n label?: ColumnDescriptor[\"label\"];\n resizing?: RuntimeColumnDescriptor[\"resizing\"];\n type: \"updateColumnProp\";\n width?: ColumnDescriptor[\"width\"];\n}\n\nexport interface ColumnActionTableConfig\n extends WithBaseFilter<WithFullConfig> {\n confirmed?: boolean;\n type: \"tableConfig\";\n}\n\nexport type TableModelAction =\n | ColumnActionHide\n | ColumnActionInit\n | ColumnActionMove\n | ColumnActionPin\n | ColumnActionResize\n | ColumnActionSetTableSchema\n | ColumnActionShow\n | ColumnActionUpdate\n | ColumnActionUpdateProp\n | ColumnActionTableConfig;\n\ntype TableModelReducer = Reducer<InternalTableModel, TableModelAction>;\n\nexport type TableModelActionDispatch = (action: TableModelAction) => void;\n\nconst tableModelReducer: TableModelReducer = (state, action) => {\n info?.(`TableModelReducer ${action.type}`);\n switch (action.type) {\n case \"init\": {\n if (\n state.tableConfig.columnLayout === \"manual\" &&\n action.tableConfig.columnLayout === \"fit\"\n ) {\n //TODO we're jumping through hoops here when we should just make config a controlled prop\n\n // Manual columnLayout has been assigned because user has resized one or more columns.\n // It happened during current session so tableConfig still reflects original value.\n return init({\n ...action,\n tableConfig: applyRuntimeColumnWidthsToConfig(\n action.tableConfig,\n state.columns,\n ),\n });\n } else {\n return init(action, state);\n }\n }\n case \"moveColumn\":\n return moveColumn(state, action);\n case \"resizeColumn\":\n return resizeColumn(state, action);\n case \"setTableSchema\":\n return setTableSchema(state, action);\n case \"hideColumns\":\n return hideColumns(state, action);\n case \"showColumns\":\n return showColumns(state, action);\n case \"pinColumn\":\n return pinColumn(state, action);\n case \"updateColumnProp\":\n return updateColumnProp(state, action);\n case \"tableConfig\":\n return updateTableConfig(state, action);\n default:\n console.log(`unhandled action ${action.type}`);\n return state;\n }\n};\n\nexport interface TableModelHookProps {\n config: TableConfig;\n dataSource: DataSource;\n selectionModel: TableSelectionModel;\n availableWidth: number;\n}\n\nexport const useTableModel = ({\n config: tableConfigProp,\n dataSource,\n selectionModel,\n availableWidth,\n}: TableModelHookProps) => {\n const [state, dispatchTableModelAction] = useReducer(\n tableModelReducer,\n {\n availableWidth,\n tableConfig: tableConfigProp,\n dataSource,\n selectionModel,\n },\n init,\n );\n\n const { columns, headings, tableConfig, ...tableAttributes } = state;\n\n return {\n columns,\n dispatchTableModelAction,\n headings,\n tableAttributes,\n tableConfig,\n };\n};\n\ntype InitialConfig = {\n availableWidth: number;\n columnLayout?: ColumnLayout;\n dataSource: DataSource;\n selectionModel?: TableSelectionModel;\n tableConfig: TableConfig;\n};\n\nfunction init(\n { availableWidth, dataSource, selectionModel, tableConfig }: InitialConfig,\n previousConfig?: InternalTableModel,\n): InternalTableModel {\n const { columns, ...tableAttributes } = tableConfig;\n const { config: dataSourceConfig, tableSchema } = dataSource;\n const toRuntimeColumnDescriptor = columnDescriptorToRuntimeColumDescriptor(\n tableAttributes,\n tableSchema,\n );\n\n const runtimeColumns: RuntimeColumnDescriptor[] = [];\n let colIndex = 1;\n assertAllColumnsAreIncludedInSubscription(columns, dataSourceConfig.columns);\n for (const column of columns) {\n runtimeColumns.push(\n toRuntimeColumnDescriptor(column, column.hidden ? -1 : colIndex),\n );\n if (!column.hidden) {\n colIndex += 1;\n }\n }\n\n if (selectionModel === \"checkbox\") {\n runtimeColumns.splice(\n 0,\n 0,\n toRuntimeColumnDescriptor(checkboxColumnDescriptor, -1),\n );\n }\n\n const { columnLayout = \"static\" } = tableConfig;\n const runtimeColumnsWithLayout = applyWidthToColumns(runtimeColumns, {\n availableWidth,\n columnLayout,\n });\n\n const columnsInRenderOrder = runtimeColumnsWithLayout.some(isPinned)\n ? sortPinnedColumns(runtimeColumnsWithLayout)\n : runtimeColumnsWithLayout;\n\n let state: InternalTableModel = {\n availableWidth,\n columns: columnsInRenderOrder,\n headings: getTableHeadings(columnsInRenderOrder),\n tableConfig,\n ...tableAttributes,\n };\n if (dataSourceConfig) {\n const { columns: _, ...rest } = dataSourceConfig;\n state = updateTableConfig(state, {\n type: \"tableConfig\",\n ...rest,\n confirmed: checkConfirmationPending(previousConfig),\n });\n }\n return state;\n}\n\nconst getLabel = (\n label: string,\n columnFormatHeader?: \"uppercase\" | \"capitalize\",\n): string => {\n if (columnFormatHeader === \"uppercase\") {\n return label.toUpperCase();\n } else if (columnFormatHeader === \"capitalize\") {\n return label[0].toUpperCase() + label.slice(1).toLowerCase();\n }\n return label;\n};\n\nconst columnDescriptorToRuntimeColumDescriptor =\n (tableAttributes: TableAttributes, tableSchema?: TableSchema) =>\n (column: ColumnDescriptor, ariaColIndex: number): RuntimeColumnDescriptor => {\n const { columnDefaultWidth = DEFAULT_COLUMN_WIDTH, columnFormatHeader } =\n tableAttributes;\n const serverDataType = getDataType(column, tableSchema);\n const {\n align = getDefaultAlignment(serverDataType),\n name,\n label = getColumnLabel(column),\n source = \"server\",\n width = columnDefaultWidth,\n ...rest\n } = column;\n\n const runtimeColumnWithDefaults: RuntimeColumnDescriptor = {\n ...rest,\n align,\n ariaColIndex,\n CellRenderer: getCellRenderer(column),\n HeaderCellContentRenderer: getColumnHeaderContentRenderer(column),\n HeaderCellLabelRenderer: getColumnHeaderLabelRenderer(column),\n clientSideEditValidationCheck: hasValidationRules(column.type)\n ? buildValidationChecker(column.type.rules)\n : undefined,\n label: getLabel(label, columnFormatHeader),\n name,\n originalIdx: ariaColIndex,\n serverDataType,\n source,\n valueFormatter: getValueFormatter(column, serverDataType),\n width,\n };\n\n if (isGroupColumn(runtimeColumnWithDefaults)) {\n runtimeColumnWithDefaults.columns = runtimeColumnWithDefaults.columns.map(\n (col) =>\n columnDescriptorToRuntimeColumDescriptor(tableAttributes)(col, -1),\n );\n }\n\n return runtimeColumnWithDefaults;\n };\n\nfunction moveColumn(\n state: InternalTableModel,\n // TODO do we ever use this ?\n { column, moveBy }: ColumnActionMove,\n) {\n const { columns } = state;\n if (typeof moveBy === \"number\") {\n const idx = columns.indexOf(column);\n const newColumns = columns.slice();\n const [movedColumns] = newColumns.splice(idx, 1);\n newColumns.splice(idx + moveBy, 0, movedColumns);\n return {\n ...state,\n columns: newColumns,\n };\n }\n return state;\n}\n\nfunction hideColumns(state: InternalTableModel, { columns }: ColumnActionHide) {\n if (columns.some((col) => col.hidden !== true)) {\n return columns.reduce<InternalTableModel>((s, c) => {\n if (c.hidden !== true) {\n return updateColumnProp(s, {\n type: \"updateColumnProp\",\n column: c,\n hidden: true,\n });\n } else {\n return s;\n }\n }, state);\n } else {\n return state;\n }\n}\nfunction showColumns(state: InternalTableModel, { columns }: ColumnActionShow) {\n if (columns.some((col) => col.hidden)) {\n return columns.reduce<InternalTableModel>((s, c) => {\n if (c.hidden) {\n return updateColumnProp(s, {\n type: \"updateColumnProp\",\n column: c,\n hidden: false,\n });\n } else {\n return s;\n }\n }, state);\n } else {\n return state;\n }\n}\n\nfunction resizeColumn(\n state: InternalTableModel,\n { column, phase, width }: ColumnActionResize,\n) {\n const type = \"updateColumnProp\";\n const resizing = phase !== \"end\";\n switch (phase) {\n case \"begin\":\n return updateColumnProp(state, { type, column, resizing });\n case \"end\": {\n const { tableConfig } = state;\n const isFit = tableConfig.columnLayout === \"fit\";\n const newState: InternalTableModel = isFit\n ? {\n ...state,\n tableConfig: applyRuntimeColumnWidthsToConfig(\n tableConfig,\n state.columns,\n ),\n }\n : state;\n return updateColumnProp(newState, { type, column, resizing, width });\n }\n case \"resize\":\n return updateColumnProp(state, { type, column, width });\n default:\n throw Error(`useTableModel.resizeColumn, invalid resizePhase ${phase}`);\n }\n}\n\nfunction setTableSchema(\n state: InternalTableModel,\n { tableSchema }: ColumnActionSetTableSchema,\n) {\n const { columns } = state;\n if (columns.some(columnWithoutDataType)) {\n const cols = columns.map((column) => {\n const serverDataType = getDataType(column, tableSchema);\n return {\n ...column,\n align: column.align ?? getDefaultAlignment(serverDataType),\n serverDataType,\n };\n });\n\n return {\n ...state,\n columns: cols,\n };\n } else {\n return state;\n }\n}\n\nfunction pinColumn(state: InternalTableModel, action: ColumnActionPin) {\n let { columns } = state;\n const { column, pin } = action;\n const targetColumn = columns.find((col) => col.name === column.name);\n if (targetColumn) {\n columns = replaceColumn(columns, { ...targetColumn, pin });\n columns = sortPinnedColumns(columns);\n return {\n ...state,\n columns,\n };\n } else {\n return state;\n }\n}\nfunction updateColumnProp(\n state: InternalTableModel,\n action: ColumnActionUpdateProp,\n) {\n let { columns, tableConfig } = state;\n const { align, column, hidden, label, resizing, width } = action;\n const targetColumn = columns.find((col) => col.name === column.name);\n if (targetColumn) {\n if (align === \"left\" || align === \"right\") {\n columns = replaceColumn(columns, { ...targetColumn, align });\n }\n if (typeof label === \"string\") {\n columns = replaceColumn(columns, { ...targetColumn, label });\n }\n if (typeof resizing === \"boolean\") {\n columns = replaceColumn(columns, { ...targetColumn, resizing });\n }\n if (typeof hidden === \"boolean\") {\n columns = replaceColumn(columns, { ...targetColumn, hidden });\n }\n if (typeof width === \"number\") {\n columns = replaceColumn(columns, { ...targetColumn, width });\n\n const targetConfigColumn = tableConfig.columns.find(\n (col) => col.name === column.name,\n );\n if (targetConfigColumn) {\n tableConfig = {\n ...tableConfig,\n columns: replaceColumn<ColumnDescriptor>(tableConfig.columns, {\n ...targetConfigColumn,\n width,\n }),\n };\n }\n }\n }\n return {\n ...state,\n columns,\n tableConfig,\n } as InternalTableModel;\n}\n\n// TODO rename to make clear its dataSOurce config\nfunction updateTableConfig(\n state: InternalTableModel,\n {\n confirmed,\n filterSpec,\n groupBy,\n sort,\n }: Omit<ColumnActionTableConfig, \"columns\">,\n) {\n let result = state;\n\n const { availableWidth, columnLayout = \"static\" } = state;\n\n if (groupBy.length > 0) {\n const groupedColumns = applyGroupByToColumns({\n columns: result.columns,\n groupBy,\n confirmed,\n availableWidth,\n });\n const columns = applyWidthToColumns(groupedColumns, {\n availableWidth,\n columnLayout,\n });\n\n result = {\n ...state,\n columns,\n };\n } else if (\n result.columns.length > 0 &&\n isGroupColumn(result.columns[0]) &&\n confirmed\n ) {\n result = {\n ...state,\n columns: flattenColumnGroup(result.columns),\n };\n }\n\n if (sort.sortDefs.length > 0) {\n result = {\n ...state,\n columns: applySortToColumns(result.columns, sort),\n };\n } else if (existingSort(result.columns)) {\n result = {\n ...state,\n columns: removeSort(result.columns),\n };\n }\n\n if (filterSpec.filter.length > 0) {\n result = {\n ...state,\n columns: applyFilterToColumns(result.columns, filterSpec),\n };\n } else if (result.columns.some(isFilteredColumn)) {\n result = {\n ...state,\n columns: stripFilterFromColumns(result.columns),\n };\n }\n\n return result;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useTableModel.js","sources":["../../../packages/vuu-table/src/useTableModel.ts"],"sourcesContent":["import {\n ColumnDescriptor,\n ColumnLayout,\n PinLocation,\n ResizePhase,\n RuntimeColumnDescriptor,\n TableAttributes,\n TableConfig,\n TableHeadings,\n TableSelectionModel,\n} from \"@vuu-ui/vuu-table-types\";\nimport {\n applyFilterToColumns,\n applyGroupByToColumns,\n applyRuntimeColumnWidthsToConfig,\n applySortToColumns,\n applyWidthToColumns,\n assertAllColumnsAreIncludedInSubscription,\n checkConfirmationPending,\n existingSort,\n flattenColumnGroup,\n getCellRenderer,\n getColumnHeaderContentRenderer,\n getColumnHeaderLabelRenderer,\n getColumnLabel,\n getTableHeadings,\n getValueFormatter,\n hasValidationRules,\n isFilteredColumn,\n isGroupColumn,\n isPinned,\n logger,\n removeSort,\n replaceColumn,\n sortPinnedColumns,\n stripFilterFromColumns,\n} from \"@vuu-ui/vuu-utils\";\n\nimport {\n DataSource,\n TableSchema,\n WithBaseFilter,\n WithFullConfig,\n} from \"@vuu-ui/vuu-data-types\";\nimport { VuuColumnDataType } from \"@vuu-ui/vuu-protocol-types\";\nimport { Reducer, useReducer } from \"react\";\nimport { buildValidationChecker } from \"@vuu-ui/vuu-data-react\";\n\nconst { info } = logger(\"useTableModel\");\n\nconst DEFAULT_COLUMN_WIDTH = 100;\n\nconst columnWithoutDataType = ({ serverDataType }: ColumnDescriptor) =>\n serverDataType === undefined;\n\nconst getDataType = (\n column: ColumnDescriptor,\n tableSchema?: TableSchema,\n): VuuColumnDataType | undefined => {\n const schemaColumn = tableSchema?.columns.find(\n ({ name }) => name === column.name,\n );\n if (schemaColumn) {\n return schemaColumn.serverDataType;\n } else {\n return column.serverDataType;\n }\n};\n\nconst checkboxColumnDescriptor: ColumnDescriptor = {\n allowColumnHeaderMenu: false,\n label: \"\",\n name: \"\",\n width: 25,\n resizeable: false,\n sortable: false,\n isSystemColumn: true,\n type: {\n name: \"checkbox\",\n renderer: {\n name: \"checkbox-row-selector-cell\",\n },\n },\n};\n\nconst pinnedCheckboxColumnDescriptor: ColumnDescriptor = {\n ...checkboxColumnDescriptor,\n pin: \"left\",\n};\n\n/**\n * TableModel represents state used internally to manage Table. It is\n * derived initially from the TableConfig provided by user, along with the\n * data-related config from DataSource.\n */\nexport interface TableModel extends TableAttributes {\n columns: RuntimeColumnDescriptor[];\n headings: TableHeadings;\n}\n\n/**\n * InternalTableModel describes the state managed within the TableModel\n * reducer. It is the same as TableModel but with the addition of a\n * readonly copy of the original TableConfig.\n */\ninterface InternalTableModel extends TableModel {\n availableWidth: number;\n tableConfig: Readonly<TableConfig>;\n}\n\nconst numericTypes = [\"int\", \"long\", \"double\"];\nconst getDefaultAlignment = (serverDataType?: VuuColumnDataType) =>\n serverDataType === undefined\n ? undefined\n : numericTypes.includes(serverDataType)\n ? \"right\"\n : \"left\";\n\nexport interface ColumnActionInit {\n availableWidth: number;\n selectionModel?: TableSelectionModel;\n type: \"init\";\n tableConfig: TableConfig;\n dataSource: DataSource;\n}\n\nexport interface ColumnActionHide {\n type: \"hideColumns\";\n columns: ColumnDescriptor[];\n}\nexport interface ColumnActionRemove {\n type: \"removeColumn\";\n column: ColumnDescriptor;\n}\n\nexport interface ColumnActionShow {\n type: \"showColumns\";\n columns: RuntimeColumnDescriptor[];\n}\nexport interface ColumnActionMove {\n type: \"moveColumn\";\n column: RuntimeColumnDescriptor;\n moveBy?: 1 | -1;\n}\n\nexport interface ColumnActionPin {\n type: \"pinColumn\";\n column: ColumnDescriptor;\n pin: PinLocation | false;\n}\n\nexport interface ColumnActionResize {\n type: \"resizeColumn\";\n column: RuntimeColumnDescriptor;\n phase: ResizePhase;\n width?: number;\n}\n\nexport interface ColumnActionSetTableSchema {\n type: \"setTableSchema\";\n tableSchema: TableSchema;\n}\n\nexport interface ColumnActionUpdate {\n type: \"updateColumn\";\n column: ColumnDescriptor;\n}\n\nexport interface ColumnActionUpdateProp {\n align?: ColumnDescriptor[\"align\"];\n column: ColumnDescriptor;\n hidden?: ColumnDescriptor[\"hidden\"];\n label?: ColumnDescriptor[\"label\"];\n resizing?: RuntimeColumnDescriptor[\"resizing\"];\n type: \"updateColumnProp\";\n width?: ColumnDescriptor[\"width\"];\n}\n\nexport interface ColumnActionTableConfig\n extends WithBaseFilter<WithFullConfig> {\n confirmed?: boolean;\n type: \"tableConfig\";\n}\n\nexport type TableModelAction =\n | ColumnActionHide\n | ColumnActionInit\n | ColumnActionMove\n | ColumnActionPin\n | ColumnActionResize\n | ColumnActionSetTableSchema\n | ColumnActionShow\n | ColumnActionUpdate\n | ColumnActionUpdateProp\n | ColumnActionTableConfig;\n\ntype TableModelReducer = Reducer<InternalTableModel, TableModelAction>;\n\nexport type TableModelActionDispatch = (action: TableModelAction) => void;\n\nconst tableModelReducer: TableModelReducer = (state, action) => {\n info?.(`TableModelReducer ${action.type}`);\n switch (action.type) {\n case \"init\": {\n if (\n state.tableConfig.columnLayout === \"manual\" &&\n action.tableConfig.columnLayout === \"fit\"\n ) {\n //TODO we're jumping through hoops here when we should just make config a controlled prop\n\n // Manual columnLayout has been assigned because user has resized one or more columns.\n // It happened during current session so tableConfig still reflects original value.\n return init({\n ...action,\n tableConfig: applyRuntimeColumnWidthsToConfig(\n action.tableConfig,\n state.columns,\n ),\n });\n } else {\n return init(action, state);\n }\n }\n case \"moveColumn\":\n return moveColumn(state, action);\n case \"resizeColumn\":\n return resizeColumn(state, action);\n case \"setTableSchema\":\n return setTableSchema(state, action);\n case \"hideColumns\":\n return hideColumns(state, action);\n case \"showColumns\":\n return showColumns(state, action);\n case \"pinColumn\":\n return pinColumn(state, action);\n case \"updateColumnProp\":\n return updateColumnProp(state, action);\n case \"tableConfig\":\n return updateTableConfig(state, action);\n default:\n console.log(`unhandled action ${action.type}`);\n return state;\n }\n};\n\nexport interface TableModelHookProps {\n config: TableConfig;\n dataSource: DataSource;\n selectionModel: TableSelectionModel;\n availableWidth: number;\n}\n\nexport const useTableModel = ({\n config: tableConfigProp,\n dataSource,\n selectionModel,\n availableWidth,\n}: TableModelHookProps) => {\n const [state, dispatchTableModelAction] = useReducer(\n tableModelReducer,\n {\n availableWidth,\n tableConfig: tableConfigProp,\n dataSource,\n selectionModel,\n },\n init,\n );\n\n const { columns, headings, tableConfig, ...tableAttributes } = state;\n\n return {\n columns,\n dispatchTableModelAction,\n headings,\n tableAttributes,\n tableConfig,\n };\n};\n\ntype InitialConfig = {\n availableWidth: number;\n columnLayout?: ColumnLayout;\n dataSource: DataSource;\n selectionModel?: TableSelectionModel;\n tableConfig: TableConfig;\n};\n\nfunction init(\n { availableWidth, dataSource, selectionModel, tableConfig }: InitialConfig,\n previousConfig?: InternalTableModel,\n): InternalTableModel {\n const { columns, ...tableAttributes } = tableConfig;\n const { config: dataSourceConfig, tableSchema } = dataSource;\n const toRuntimeColumnDescriptor = columnDescriptorToRuntimeColumDescriptor(\n tableAttributes,\n tableSchema,\n );\n\n const runtimeColumns: RuntimeColumnDescriptor[] = [];\n let colIndex = 1;\n assertAllColumnsAreIncludedInSubscription(columns, dataSourceConfig.columns);\n for (const column of columns) {\n runtimeColumns.push(\n toRuntimeColumnDescriptor(column, column.hidden ? -1 : colIndex),\n );\n if (!column.hidden) {\n colIndex += 1;\n }\n }\n\n if (selectionModel === \"checkbox\") {\n const somePinnedLeft = runtimeColumns.some((col) => col.pin === \"left\");\n runtimeColumns.splice(\n 0,\n 0,\n toRuntimeColumnDescriptor(\n somePinnedLeft\n ? pinnedCheckboxColumnDescriptor\n : checkboxColumnDescriptor,\n -1,\n ),\n );\n }\n\n const { columnLayout = \"static\" } = tableConfig;\n const runtimeColumnsWithLayout = applyWidthToColumns(runtimeColumns, {\n availableWidth,\n columnLayout,\n });\n\n const columnsInRenderOrder = runtimeColumnsWithLayout.some(isPinned)\n ? sortPinnedColumns(runtimeColumnsWithLayout)\n : runtimeColumnsWithLayout;\n\n let state: InternalTableModel = {\n availableWidth,\n columns: columnsInRenderOrder,\n headings: getTableHeadings(columnsInRenderOrder),\n tableConfig,\n ...tableAttributes,\n };\n if (dataSourceConfig) {\n const { columns: _, ...rest } = dataSourceConfig;\n state = updateTableConfig(state, {\n type: \"tableConfig\",\n ...rest,\n confirmed: checkConfirmationPending(previousConfig),\n });\n }\n return state;\n}\n\nconst getLabel = (\n label: string,\n columnFormatHeader?: \"uppercase\" | \"capitalize\",\n): string => {\n if (columnFormatHeader === \"uppercase\") {\n return label.toUpperCase();\n } else if (columnFormatHeader === \"capitalize\") {\n return label[0].toUpperCase() + label.slice(1).toLowerCase();\n }\n return label;\n};\n\nconst columnDescriptorToRuntimeColumDescriptor =\n (tableAttributes: TableAttributes, tableSchema?: TableSchema) =>\n (column: ColumnDescriptor, ariaColIndex: number): RuntimeColumnDescriptor => {\n const { columnDefaultWidth = DEFAULT_COLUMN_WIDTH, columnFormatHeader } =\n tableAttributes;\n const serverDataType = getDataType(column, tableSchema);\n const {\n align = getDefaultAlignment(serverDataType),\n name,\n label = getColumnLabel(column),\n source = \"server\",\n width = columnDefaultWidth,\n ...rest\n } = column;\n\n const runtimeColumnWithDefaults: RuntimeColumnDescriptor = {\n ...rest,\n align,\n ariaColIndex,\n CellRenderer: getCellRenderer(column),\n HeaderCellContentRenderer: getColumnHeaderContentRenderer(column),\n HeaderCellLabelRenderer: getColumnHeaderLabelRenderer(column),\n clientSideEditValidationCheck: hasValidationRules(column.type)\n ? buildValidationChecker(column.type.rules)\n : undefined,\n label: getLabel(label, columnFormatHeader),\n name,\n originalIdx: ariaColIndex,\n serverDataType,\n source,\n valueFormatter: getValueFormatter(column, serverDataType),\n width,\n };\n\n if (isGroupColumn(runtimeColumnWithDefaults)) {\n runtimeColumnWithDefaults.columns = runtimeColumnWithDefaults.columns.map(\n (col) =>\n columnDescriptorToRuntimeColumDescriptor(tableAttributes)(col, -1),\n );\n }\n\n return runtimeColumnWithDefaults;\n };\n\nfunction moveColumn(\n state: InternalTableModel,\n // TODO do we ever use this ?\n { column, moveBy }: ColumnActionMove,\n) {\n const { columns } = state;\n if (typeof moveBy === \"number\") {\n const idx = columns.indexOf(column);\n const newColumns = columns.slice();\n const [movedColumns] = newColumns.splice(idx, 1);\n newColumns.splice(idx + moveBy, 0, movedColumns);\n return {\n ...state,\n columns: newColumns,\n };\n }\n return state;\n}\n\nfunction hideColumns(state: InternalTableModel, { columns }: ColumnActionHide) {\n if (columns.some((col) => col.hidden !== true)) {\n return columns.reduce<InternalTableModel>((s, c) => {\n if (c.hidden !== true) {\n return updateColumnProp(s, {\n type: \"updateColumnProp\",\n column: c,\n hidden: true,\n });\n } else {\n return s;\n }\n }, state);\n } else {\n return state;\n }\n}\nfunction showColumns(state: InternalTableModel, { columns }: ColumnActionShow) {\n if (columns.some((col) => col.hidden)) {\n return columns.reduce<InternalTableModel>((s, c) => {\n if (c.hidden) {\n return updateColumnProp(s, {\n type: \"updateColumnProp\",\n column: c,\n hidden: false,\n });\n } else {\n return s;\n }\n }, state);\n } else {\n return state;\n }\n}\n\nfunction resizeColumn(\n state: InternalTableModel,\n { column, phase, width }: ColumnActionResize,\n) {\n const type = \"updateColumnProp\";\n const resizing = phase !== \"end\";\n switch (phase) {\n case \"begin\":\n return updateColumnProp(state, { type, column, resizing });\n case \"end\": {\n const { tableConfig } = state;\n const isFit = tableConfig.columnLayout === \"fit\";\n const newState: InternalTableModel = isFit\n ? {\n ...state,\n tableConfig: applyRuntimeColumnWidthsToConfig(\n tableConfig,\n state.columns,\n ),\n }\n : state;\n return updateColumnProp(newState, { type, column, resizing, width });\n }\n case \"resize\":\n return updateColumnProp(state, { type, column, width });\n default:\n throw Error(`useTableModel.resizeColumn, invalid resizePhase ${phase}`);\n }\n}\n\nfunction setTableSchema(\n state: InternalTableModel,\n { tableSchema }: ColumnActionSetTableSchema,\n) {\n const { columns } = state;\n if (columns.some(columnWithoutDataType)) {\n const cols = columns.map((column) => {\n const serverDataType = getDataType(column, tableSchema);\n return {\n ...column,\n align: column.align ?? getDefaultAlignment(serverDataType),\n serverDataType,\n };\n });\n\n return {\n ...state,\n columns: cols,\n };\n } else {\n return state;\n }\n}\n\nfunction pinColumn(state: InternalTableModel, action: ColumnActionPin) {\n let { columns } = state;\n const { column, pin } = action;\n const targetColumn = columns.find((col) => col.name === column.name);\n if (targetColumn) {\n columns = replaceColumn(columns, { ...targetColumn, pin });\n columns = sortPinnedColumns(columns);\n return {\n ...state,\n columns,\n };\n } else {\n return state;\n }\n}\nfunction updateColumnProp(\n state: InternalTableModel,\n action: ColumnActionUpdateProp,\n) {\n let { columns, tableConfig } = state;\n const { align, column, hidden, label, resizing, width } = action;\n const targetColumn = columns.find((col) => col.name === column.name);\n if (targetColumn) {\n if (align === \"left\" || align === \"right\") {\n columns = replaceColumn(columns, { ...targetColumn, align });\n }\n if (typeof label === \"string\") {\n columns = replaceColumn(columns, { ...targetColumn, label });\n }\n if (typeof resizing === \"boolean\") {\n columns = replaceColumn(columns, { ...targetColumn, resizing });\n }\n if (typeof hidden === \"boolean\") {\n columns = replaceColumn(columns, { ...targetColumn, hidden });\n }\n if (typeof width === \"number\") {\n columns = replaceColumn(columns, { ...targetColumn, width });\n\n const targetConfigColumn = tableConfig.columns.find(\n (col) => col.name === column.name,\n );\n if (targetConfigColumn) {\n tableConfig = {\n ...tableConfig,\n columns: replaceColumn<ColumnDescriptor>(tableConfig.columns, {\n ...targetConfigColumn,\n width,\n }),\n };\n }\n }\n }\n return {\n ...state,\n columns,\n tableConfig,\n } as InternalTableModel;\n}\n\n// TODO rename to make clear its dataSOurce config\nfunction updateTableConfig(\n state: InternalTableModel,\n {\n confirmed,\n filterSpec,\n groupBy,\n sort,\n }: Omit<ColumnActionTableConfig, \"columns\">,\n) {\n let result = state;\n\n const { availableWidth, columnLayout = \"static\" } = state;\n\n if (groupBy.length > 0) {\n const groupedColumns = applyGroupByToColumns({\n columns: result.columns,\n groupBy,\n confirmed,\n availableWidth,\n });\n const columns = applyWidthToColumns(groupedColumns, {\n availableWidth,\n columnLayout,\n });\n\n result = {\n ...state,\n columns,\n };\n } else if (\n result.columns.length > 0 &&\n isGroupColumn(result.columns[0]) &&\n confirmed\n ) {\n result = {\n ...state,\n columns: flattenColumnGroup(result.columns),\n };\n }\n\n if (sort.sortDefs.length > 0) {\n result = {\n ...state,\n columns: applySortToColumns(result.columns, sort),\n };\n } else if (existingSort(result.columns)) {\n result = {\n ...state,\n columns: removeSort(result.columns),\n };\n }\n\n if (filterSpec.filter.length > 0) {\n result = {\n ...state,\n columns: applyFilterToColumns(result.columns, filterSpec),\n };\n } else if (result.columns.some(isFilteredColumn)) {\n result = {\n ...state,\n columns: stripFilterFromColumns(result.columns),\n };\n }\n\n return result;\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.13.73
|
|
2
|
+
"version": "0.13.73",
|
|
3
3
|
"author": "heswell",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"devDependencies": {
|
|
6
|
-
"@vuu-ui/vuu-data-types": "0.13.73
|
|
7
|
-
"@vuu-ui/vuu-table-types": "0.13.73
|
|
8
|
-
"@vuu-ui/vuu-protocol-types": "0.13.73
|
|
6
|
+
"@vuu-ui/vuu-data-types": "0.13.73",
|
|
7
|
+
"@vuu-ui/vuu-table-types": "0.13.73",
|
|
8
|
+
"@vuu-ui/vuu-protocol-types": "0.13.73"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@salt-ds/core": "1.48.0",
|
|
12
12
|
"@salt-ds/styles": "0.2.1",
|
|
13
13
|
"@salt-ds/window": "0.1.1",
|
|
14
|
-
"@vuu-ui/vuu-context-menu": "0.13.73
|
|
15
|
-
"@vuu-ui/vuu-data-react": "0.13.73
|
|
16
|
-
"@vuu-ui/vuu-popups": "0.13.73
|
|
17
|
-
"@vuu-ui/vuu-table-extras": "0.13.73
|
|
18
|
-
"@vuu-ui/vuu-ui-controls": "0.13.73
|
|
19
|
-
"@vuu-ui/vuu-utils": "0.13.73
|
|
14
|
+
"@vuu-ui/vuu-context-menu": "0.13.73",
|
|
15
|
+
"@vuu-ui/vuu-data-react": "0.13.73",
|
|
16
|
+
"@vuu-ui/vuu-popups": "0.13.73",
|
|
17
|
+
"@vuu-ui/vuu-table-extras": "0.13.73",
|
|
18
|
+
"@vuu-ui/vuu-ui-controls": "0.13.73",
|
|
19
|
+
"@vuu-ui/vuu-utils": "0.13.73"
|
|
20
20
|
},
|
|
21
21
|
"peerDependencies": {
|
|
22
22
|
"clsx": "^2.0.0",
|