@osdk/react-components 0.1.0 → 0.2.0-beta.10
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/CHANGELOG.md +98 -19
- package/README.md +56 -23
- package/build/browser/base-components/action-button/ActionButton.js +31 -0
- package/build/browser/base-components/action-button/ActionButton.js.map +1 -0
- package/build/browser/base-components/action-button/ActionButton.module.css +70 -0
- package/build/browser/base-components/action-button/ActionButton.module.css.js +8 -0
- package/build/browser/base-components/checkbox/Checkbox.js +27 -32
- package/build/browser/base-components/checkbox/Checkbox.module.css +79 -0
- package/build/browser/base-components/checkbox/Checkbox.module.css.js +7 -0
- package/build/browser/base-components/combobox/Combobox.js +124 -0
- package/build/browser/base-components/combobox/Combobox.js.map +1 -0
- package/build/browser/base-components/combobox/Combobox.module.css +177 -0
- package/build/browser/base-components/combobox/Combobox.module.css.js +16 -0
- package/build/browser/base-components/dialog/Dialog.js +52 -0
- package/build/browser/base-components/dialog/Dialog.js.map +1 -0
- package/build/browser/base-components/dialog/Dialog.module.css +101 -0
- package/build/browser/base-components/dialog/Dialog.module.css.js +13 -0
- package/build/browser/base-components/draggable-list/DraggableList.js +155 -0
- package/build/browser/base-components/draggable-list/DraggableList.js.map +1 -0
- package/build/browser/base-components/draggable-list/DraggableList.module.css +108 -0
- package/build/browser/base-components/draggable-list/DraggableList.module.css.js +11 -0
- package/build/browser/base-components/search-bar/SearchBar.js +44 -0
- package/build/browser/base-components/search-bar/SearchBar.js.map +1 -0
- package/build/browser/base-components/search-bar/SearchBar.module.css +53 -0
- package/build/browser/base-components/search-bar/SearchBar.module.css.js +8 -0
- package/build/browser/base-components/select/Select.js +89 -0
- package/build/browser/base-components/select/Select.js.map +1 -0
- package/build/browser/base-components/select/Select.module.css +138 -0
- package/build/browser/base-components/select/Select.module.css.js +11 -0
- package/build/browser/base-components/switch/Switch.js +33 -0
- package/build/browser/base-components/switch/Switch.js.map +1 -0
- package/build/browser/base-components/switch/Switch.module.css +91 -0
- package/build/browser/base-components/switch/Switch.module.css.js +7 -0
- package/build/browser/filter-list/FilterListApi.js.map +1 -1
- package/build/browser/filter-list/FilterListItemApi.js.map +1 -1
- package/build/browser/filter-list/__tests__/LinkedPropertyInput.test.js +202 -0
- package/build/browser/filter-list/__tests__/LinkedPropertyInput.test.js.map +1 -0
- package/build/browser/filter-list/__tests__/dateUtils.test.js +55 -0
- package/build/browser/filter-list/__tests__/dateUtils.test.js.map +1 -0
- package/build/browser/filter-list/__tests__/filterStateToWhereClause.test.js +296 -0
- package/build/browser/filter-list/__tests__/filterStateToWhereClause.test.js.map +1 -0
- package/build/browser/filter-list/__tests__/getFilterKey.test.js +53 -0
- package/build/browser/filter-list/__tests__/getFilterKey.test.js.map +1 -0
- package/build/browser/filter-list/__tests__/testUtils.js +203 -0
- package/build/browser/filter-list/__tests__/testUtils.js.map +1 -0
- package/build/browser/filter-list/base/FilterInput.js +542 -0
- package/build/browser/filter-list/base/FilterInput.js.map +1 -0
- package/build/browser/filter-list/base/FilterList.js +77 -0
- package/build/browser/filter-list/base/FilterList.js.map +1 -0
- package/build/browser/filter-list/base/FilterList.module.css +67 -0
- package/build/browser/filter-list/base/FilterList.module.css.js +8 -0
- package/build/browser/filter-list/base/FilterListContent.js +57 -0
- package/build/browser/filter-list/base/FilterListContent.js.map +1 -0
- package/build/browser/filter-list/base/FilterListContent.module.css +27 -0
- package/build/browser/filter-list/base/FilterListContent.module.css.js +7 -0
- package/build/browser/filter-list/base/FilterListHeader.js +58 -0
- package/build/browser/filter-list/base/FilterListHeader.js.map +1 -0
- package/build/browser/filter-list/base/FilterListHeader.module.css +127 -0
- package/build/browser/filter-list/base/FilterListHeader.module.css.js +13 -0
- package/build/browser/filter-list/base/FilterListItem.js +75 -0
- package/build/browser/filter-list/base/FilterListItem.js.map +1 -0
- package/build/browser/filter-list/base/FilterListItem.module.css +38 -0
- package/build/browser/filter-list/base/FilterListItem.module.css.js +9 -0
- package/build/browser/filter-list/base/index.js +22 -0
- package/build/browser/filter-list/base/index.js.map +1 -0
- package/build/browser/filter-list/base/inputs/CheckboxListInput.js +75 -0
- package/build/browser/filter-list/base/inputs/CheckboxListInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/CheckboxListInput.module.css +42 -0
- package/build/browser/filter-list/base/inputs/CheckboxListInput.module.css.js +9 -0
- package/build/browser/filter-list/base/inputs/ContainsTextInput.js +85 -0
- package/build/browser/filter-list/base/inputs/ContainsTextInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/ContainsTextInput.module.css +91 -0
- package/build/browser/filter-list/base/inputs/ContainsTextInput.module.css.js +10 -0
- package/build/browser/filter-list/base/inputs/DateRangeInput.js +37 -0
- package/build/browser/filter-list/base/inputs/DateRangeInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/LinkedPropertyInput.js +237 -0
- package/build/browser/filter-list/base/inputs/LinkedPropertyInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/LinkedPropertyInput.module.css +20 -0
- package/build/browser/filter-list/base/inputs/LinkedPropertyInput.module.css.js +6 -0
- package/build/browser/filter-list/base/inputs/ListogramInput.js +98 -0
- package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/ListogramInput.module.css +88 -0
- package/build/browser/filter-list/base/inputs/ListogramInput.module.css.js +12 -0
- package/build/browser/filter-list/base/inputs/MultiDateInput.js +82 -0
- package/build/browser/filter-list/base/inputs/MultiDateInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/MultiDateInput.module.css +54 -0
- package/build/browser/filter-list/base/inputs/MultiDateInput.module.css.js +9 -0
- package/build/browser/filter-list/base/inputs/MultiSelectInput.js +100 -0
- package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css +35 -0
- package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css.js +9 -0
- package/build/browser/filter-list/base/inputs/NullValueWrapper.js +76 -0
- package/build/browser/filter-list/base/inputs/NullValueWrapper.js.map +1 -0
- package/build/browser/filter-list/base/inputs/NullValueWrapper.module.css +49 -0
- package/build/browser/filter-list/base/inputs/NullValueWrapper.module.css.js +10 -0
- package/build/browser/filter-list/base/inputs/NumberRangeInput.js +48 -0
- package/build/browser/filter-list/base/inputs/NumberRangeInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/RangeInput.js +187 -0
- package/build/browser/filter-list/base/inputs/RangeInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/RangeInput.module.css +81 -0
- package/build/browser/filter-list/base/inputs/RangeInput.module.css.js +13 -0
- package/build/browser/filter-list/base/inputs/SingleDateInput.js +61 -0
- package/build/browser/filter-list/base/inputs/SingleDateInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/SingleDateInput.module.css +63 -0
- package/build/browser/filter-list/base/inputs/SingleDateInput.module.css.js +9 -0
- package/build/browser/filter-list/base/inputs/SingleSelectInput.js +95 -0
- package/build/browser/filter-list/base/inputs/SingleSelectInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/SingleSelectInput.module.css +55 -0
- package/build/browser/filter-list/base/inputs/SingleSelectInput.module.css.js +8 -0
- package/build/browser/filter-list/base/inputs/TextTagsInput.js +141 -0
- package/build/browser/filter-list/base/inputs/TextTagsInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/TextTagsInput.module.css +25 -0
- package/build/browser/filter-list/base/inputs/TextTagsInput.module.css.js +7 -0
- package/build/browser/filter-list/base/inputs/TimelineInput.js +74 -0
- package/build/browser/filter-list/base/inputs/TimelineInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/TimelineInput.module.css +73 -0
- package/build/browser/filter-list/base/inputs/TimelineInput.module.css.js +10 -0
- package/build/browser/filter-list/base/inputs/ToggleInput.js +43 -0
- package/build/browser/filter-list/base/inputs/ToggleInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/ToggleInput.module.css +34 -0
- package/build/browser/filter-list/base/inputs/ToggleInput.module.css.js +8 -0
- package/build/browser/filter-list/base/inputs/createHistogramBuckets.js +53 -0
- package/build/browser/filter-list/base/inputs/createHistogramBuckets.js.map +1 -0
- package/build/browser/filter-list/base/inputs/dateUtils.js +57 -0
- package/build/browser/filter-list/base/inputs/dateUtils.js.map +1 -0
- package/build/browser/filter-list/base/inputs/index.js +25 -0
- package/build/browser/filter-list/base/inputs/index.js.map +1 -0
- package/build/browser/filter-list/base/inputs/shared.module.css +79 -0
- package/build/browser/filter-list/base/inputs/shared.module.css.js +11 -0
- package/build/browser/filter-list/hooks/__tests__/useFilterListState.test.js +128 -0
- package/build/browser/filter-list/hooks/__tests__/useFilterListState.test.js.map +1 -0
- package/build/browser/filter-list/hooks/useFilterListState.js +119 -0
- package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -0
- package/build/browser/filter-list/hooks/usePropertyAggregation.js +92 -0
- package/build/browser/filter-list/hooks/usePropertyAggregation.js.map +1 -0
- package/build/browser/filter-list/types/AddFilterMenuTypes.js +2 -0
- package/build/browser/filter-list/types/AddFilterMenuTypes.js.map +1 -0
- package/build/browser/filter-list/types/CustomRendererTypes.js +2 -0
- package/build/browser/filter-list/types/CustomRendererTypes.js.map +1 -0
- package/build/browser/filter-list/types/FilterPanelTypes.js +2 -0
- package/build/browser/filter-list/types/FilterPanelTypes.js.map +1 -0
- package/build/browser/filter-list/types/KeywordSearchTypes.js +2 -0
- package/build/browser/filter-list/types/KeywordSearchTypes.js.map +1 -0
- package/build/browser/filter-list/types/LinkedFilterTypes.js +2 -0
- package/build/browser/filter-list/types/LinkedFilterTypes.js.map +1 -0
- package/build/browser/filter-list/types/index.js +22 -0
- package/build/browser/filter-list/types/index.js.map +1 -0
- package/build/browser/filter-list/utils/aggregationHelpers.js +44 -0
- package/build/browser/filter-list/utils/aggregationHelpers.js.map +1 -0
- package/build/browser/filter-list/utils/assertUnreachable.js +25 -0
- package/build/browser/filter-list/utils/assertUnreachable.js.map +1 -0
- package/build/browser/filter-list/utils/coerceFilterValue.js +33 -0
- package/build/browser/filter-list/utils/coerceFilterValue.js.map +1 -0
- package/build/browser/filter-list/utils/filterStateToWhereClause.js +337 -0
- package/build/browser/filter-list/utils/filterStateToWhereClause.js.map +1 -0
- package/build/browser/filter-list/utils/filterValues.js +55 -0
- package/build/browser/filter-list/utils/filterValues.js.map +1 -0
- package/build/browser/filter-list/utils/getFilterKey.js +34 -0
- package/build/browser/filter-list/utils/getFilterKey.js.map +1 -0
- package/build/browser/object-table/CellContextMenu.js +23 -20
- package/build/browser/object-table/CellContextMenu.module.css +20 -0
- package/build/browser/object-table/CellContextMenu.module.css.js +6 -0
- package/build/browser/object-table/ColumnConfigDialog.js +259 -0
- package/build/browser/object-table/ColumnConfigDialog.js.map +1 -0
- package/build/browser/object-table/ColumnConfigDialog.module.css +247 -0
- package/build/browser/object-table/ColumnConfigDialog.module.css.js +29 -0
- package/build/browser/object-table/DefaultCellRenderer.js +43 -0
- package/build/browser/object-table/DefaultCellRenderer.js.map +1 -0
- package/build/browser/object-table/EditableCell.js +91 -0
- package/build/browser/object-table/EditableCell.js.map +1 -0
- package/build/browser/object-table/EditableCell.module.css +3 -0
- package/build/browser/object-table/EditableCell.module.css.js +6 -0
- package/build/browser/object-table/LoadingCell.js +24 -29
- package/build/browser/object-table/LoadingCell.module.css +48 -0
- package/build/browser/object-table/LoadingCell.module.css.js +8 -0
- package/build/browser/object-table/LoadingRow.js +24 -50
- package/build/browser/object-table/LoadingStateTable.js +49 -343
- package/build/browser/object-table/LoadingStateTable.js.map +1 -1
- package/build/browser/object-table/MultiColumnSortDialog.js +178 -0
- package/build/browser/object-table/MultiColumnSortDialog.js.map +1 -0
- package/build/browser/object-table/MultiColumnSortDialog.module.css +195 -0
- package/build/browser/object-table/MultiColumnSortDialog.module.css.js +22 -0
- package/build/browser/object-table/NonIdealState.js +23 -20
- package/build/browser/object-table/NonIdealState.module.css +27 -0
- package/build/browser/object-table/NonIdealState.module.css.js +7 -0
- package/build/browser/object-table/ObjectTable.js +74 -15
- package/build/browser/object-table/ObjectTable.js.map +1 -1
- package/build/browser/object-table/ObjectTableApi.js.map +1 -1
- package/build/browser/object-table/SelectionCells.js +15 -4
- package/build/browser/object-table/SelectionCells.js.map +1 -1
- package/build/browser/object-table/SortableItemsList.js +35 -0
- package/build/browser/object-table/SortableItemsList.js.map +1 -0
- package/build/browser/object-table/Table.js +70 -935
- package/build/browser/object-table/Table.js.map +1 -1
- package/build/browser/object-table/Table.module.css +45 -0
- package/build/browser/object-table/Table.module.css.js +8 -0
- package/build/browser/object-table/TableBody.js +36 -260
- package/build/browser/object-table/TableBody.module.css +22 -0
- package/build/browser/object-table/TableBody.module.css.js +6 -0
- package/build/browser/object-table/TableCell.js +31 -111
- package/build/browser/object-table/TableCell.module.css +83 -0
- package/build/browser/object-table/TableCell.module.css.js +8 -0
- package/build/browser/object-table/TableHeader.js +126 -216
- package/build/browser/object-table/TableHeader.js.map +1 -1
- package/build/browser/object-table/TableHeader.module.css +108 -0
- package/build/browser/object-table/TableHeader.module.css.js +10 -0
- package/build/browser/object-table/TableHeaderContent.js +21 -18
- package/build/browser/object-table/TableHeaderContent.module.css +30 -0
- package/build/browser/object-table/TableHeaderContent.module.css.js +6 -0
- package/build/browser/object-table/TableHeaderWithPopover.js +110 -93
- package/build/browser/object-table/TableHeaderWithPopover.js.map +1 -1
- package/build/browser/object-table/TableHeaderWithPopover.module.css +141 -0
- package/build/browser/object-table/TableHeaderWithPopover.module.css.js +17 -0
- package/build/browser/object-table/TableRow.js +26 -144
- package/build/browser/object-table/TableRow.module.css +62 -0
- package/build/browser/object-table/TableRow.module.css.js +6 -0
- package/build/browser/object-table/__tests__/useEditableTable.test.js +197 -0
- package/build/browser/object-table/__tests__/useEditableTable.test.js.map +1 -0
- package/build/browser/object-table/hooks/__tests__/useColumnDefs.test.js +14 -2
- package/build/browser/object-table/hooks/__tests__/useColumnDefs.test.js.map +1 -1
- package/build/browser/object-table/hooks/__tests__/useColumnVisibility.test.js +160 -138
- package/build/browser/object-table/hooks/__tests__/useColumnVisibility.test.js.map +1 -1
- package/build/browser/object-table/hooks/__tests__/useObjectTableData.test.js +113 -25
- package/build/browser/object-table/hooks/__tests__/useObjectTableData.test.js.map +1 -1
- package/build/browser/object-table/hooks/__tests__/useRowSelection.test.js +48 -0
- package/build/browser/object-table/hooks/__tests__/useRowSelection.test.js.map +1 -1
- package/build/browser/object-table/hooks/__tests__/useSelectionColumn.test.js +27 -82
- package/build/browser/object-table/hooks/__tests__/useSelectionColumn.test.js.map +1 -1
- package/build/browser/object-table/hooks/__tests__/useTableSorting.test.js +290 -0
- package/build/browser/object-table/hooks/__tests__/useTableSorting.test.js.map +1 -1
- package/build/browser/object-table/hooks/useColumnDefs.js +16 -3
- package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
- package/build/browser/object-table/hooks/useColumnResize.js +45 -0
- package/build/browser/object-table/hooks/useColumnResize.js.map +1 -0
- package/build/browser/object-table/hooks/useColumnVisibility.js +52 -20
- package/build/browser/object-table/hooks/useColumnVisibility.js.map +1 -1
- package/build/browser/object-table/hooks/useEditableTable.js +57 -0
- package/build/browser/object-table/hooks/useEditableTable.js.map +1 -0
- package/build/browser/object-table/hooks/useObjectTableData.js +42 -7
- package/build/browser/object-table/hooks/useObjectTableData.js.map +1 -1
- package/build/browser/object-table/hooks/useRowSelection.js +31 -10
- package/build/browser/object-table/hooks/useRowSelection.js.map +1 -1
- package/build/browser/object-table/hooks/useSelectionColumn.js +15 -6
- package/build/browser/object-table/hooks/useSelectionColumn.js.map +1 -1
- package/build/browser/object-table/utils/getCellId.js +27 -0
- package/build/browser/object-table/utils/getCellId.js.map +1 -0
- package/build/browser/object-table/utils/types.js +2 -0
- package/build/browser/object-table/utils/types.js.map +1 -0
- package/build/browser/public/experimental.js +2 -0
- package/build/browser/public/experimental.js.map +1 -1
- package/build/browser/shared/ErrorBoundary.js +62 -0
- package/build/browser/shared/ErrorBoundary.js.map +1 -0
- package/build/browser/shared/ErrorBoundary.module.css +55 -0
- package/build/browser/shared/ErrorBoundary.module.css.js +8 -0
- package/build/browser/styles.css +3073 -0
- package/build/cjs/public/experimental.cjs +4026 -240
- package/build/cjs/public/experimental.cjs.map +1 -1
- package/build/cjs/public/experimental.css +1834 -154
- package/build/cjs/public/experimental.css.map +1 -1
- package/build/cjs/public/experimental.d.cts +453 -50
- package/build/esm/base-components/action-button/ActionButton.js +31 -0
- package/build/esm/base-components/action-button/ActionButton.js.map +1 -0
- package/build/esm/base-components/action-button/ActionButton.module.css +70 -0
- package/build/esm/base-components/checkbox/Checkbox.module.css +1 -1
- package/build/esm/base-components/combobox/Combobox.js +124 -0
- package/build/esm/base-components/combobox/Combobox.js.map +1 -0
- package/build/esm/base-components/combobox/Combobox.module.css +177 -0
- package/build/esm/base-components/dialog/Dialog.js +52 -0
- package/build/esm/base-components/dialog/Dialog.js.map +1 -0
- package/build/esm/base-components/dialog/Dialog.module.css +101 -0
- package/build/esm/base-components/draggable-list/DraggableList.js +155 -0
- package/build/esm/base-components/draggable-list/DraggableList.js.map +1 -0
- package/build/esm/base-components/draggable-list/DraggableList.module.css +108 -0
- package/build/esm/base-components/search-bar/SearchBar.js +44 -0
- package/build/esm/base-components/search-bar/SearchBar.js.map +1 -0
- package/build/esm/base-components/search-bar/SearchBar.module.css +53 -0
- package/build/esm/base-components/select/Select.js +89 -0
- package/build/esm/base-components/select/Select.js.map +1 -0
- package/build/esm/base-components/select/Select.module.css +138 -0
- package/build/esm/base-components/switch/Switch.js +33 -0
- package/build/esm/base-components/switch/Switch.js.map +1 -0
- package/build/esm/base-components/switch/Switch.module.css +91 -0
- package/build/esm/filter-list/FilterListApi.js.map +1 -1
- package/build/esm/filter-list/FilterListItemApi.js.map +1 -1
- package/build/esm/filter-list/__tests__/LinkedPropertyInput.test.js +202 -0
- package/build/esm/filter-list/__tests__/LinkedPropertyInput.test.js.map +1 -0
- package/build/esm/filter-list/__tests__/dateUtils.test.js +55 -0
- package/build/esm/filter-list/__tests__/dateUtils.test.js.map +1 -0
- package/build/esm/filter-list/__tests__/filterStateToWhereClause.test.js +296 -0
- package/build/esm/filter-list/__tests__/filterStateToWhereClause.test.js.map +1 -0
- package/build/esm/filter-list/__tests__/getFilterKey.test.js +53 -0
- package/build/esm/filter-list/__tests__/getFilterKey.test.js.map +1 -0
- package/build/esm/filter-list/__tests__/testUtils.js +203 -0
- package/build/esm/filter-list/__tests__/testUtils.js.map +1 -0
- package/build/esm/filter-list/base/FilterInput.js +542 -0
- package/build/esm/filter-list/base/FilterInput.js.map +1 -0
- package/build/esm/filter-list/base/FilterList.js +77 -0
- package/build/esm/filter-list/base/FilterList.js.map +1 -0
- package/build/esm/filter-list/base/FilterList.module.css +67 -0
- package/build/esm/filter-list/base/FilterListContent.js +57 -0
- package/build/esm/filter-list/base/FilterListContent.js.map +1 -0
- package/build/esm/filter-list/base/FilterListContent.module.css +27 -0
- package/build/esm/filter-list/base/FilterListHeader.js +58 -0
- package/build/esm/filter-list/base/FilterListHeader.js.map +1 -0
- package/build/esm/filter-list/base/FilterListHeader.module.css +127 -0
- package/build/esm/filter-list/base/FilterListItem.js +75 -0
- package/build/esm/filter-list/base/FilterListItem.js.map +1 -0
- package/build/esm/filter-list/base/FilterListItem.module.css +38 -0
- package/build/esm/filter-list/base/index.js +22 -0
- package/build/esm/filter-list/base/index.js.map +1 -0
- package/build/esm/filter-list/base/inputs/CheckboxListInput.js +75 -0
- package/build/esm/filter-list/base/inputs/CheckboxListInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/CheckboxListInput.module.css +42 -0
- package/build/esm/filter-list/base/inputs/ContainsTextInput.js +85 -0
- package/build/esm/filter-list/base/inputs/ContainsTextInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/ContainsTextInput.module.css +91 -0
- package/build/esm/filter-list/base/inputs/DateRangeInput.js +37 -0
- package/build/esm/filter-list/base/inputs/DateRangeInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/LinkedPropertyInput.js +237 -0
- package/build/esm/filter-list/base/inputs/LinkedPropertyInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/LinkedPropertyInput.module.css +20 -0
- package/build/esm/filter-list/base/inputs/ListogramInput.js +98 -0
- package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/ListogramInput.module.css +88 -0
- package/build/esm/filter-list/base/inputs/MultiDateInput.js +82 -0
- package/build/esm/filter-list/base/inputs/MultiDateInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/MultiDateInput.module.css +54 -0
- package/build/esm/filter-list/base/inputs/MultiSelectInput.js +100 -0
- package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/MultiSelectInput.module.css +35 -0
- package/build/esm/filter-list/base/inputs/NullValueWrapper.js +76 -0
- package/build/esm/filter-list/base/inputs/NullValueWrapper.js.map +1 -0
- package/build/esm/filter-list/base/inputs/NullValueWrapper.module.css +49 -0
- package/build/esm/filter-list/base/inputs/NumberRangeInput.js +48 -0
- package/build/esm/filter-list/base/inputs/NumberRangeInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/RangeInput.js +187 -0
- package/build/esm/filter-list/base/inputs/RangeInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/RangeInput.module.css +81 -0
- package/build/esm/filter-list/base/inputs/SingleDateInput.js +61 -0
- package/build/esm/filter-list/base/inputs/SingleDateInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/SingleDateInput.module.css +63 -0
- package/build/esm/filter-list/base/inputs/SingleSelectInput.js +95 -0
- package/build/esm/filter-list/base/inputs/SingleSelectInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/SingleSelectInput.module.css +55 -0
- package/build/esm/filter-list/base/inputs/TextTagsInput.js +141 -0
- package/build/esm/filter-list/base/inputs/TextTagsInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/TextTagsInput.module.css +25 -0
- package/build/esm/filter-list/base/inputs/TimelineInput.js +74 -0
- package/build/esm/filter-list/base/inputs/TimelineInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/TimelineInput.module.css +73 -0
- package/build/esm/filter-list/base/inputs/ToggleInput.js +43 -0
- package/build/esm/filter-list/base/inputs/ToggleInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/ToggleInput.module.css +34 -0
- package/build/esm/filter-list/base/inputs/createHistogramBuckets.js +53 -0
- package/build/esm/filter-list/base/inputs/createHistogramBuckets.js.map +1 -0
- package/build/esm/filter-list/base/inputs/dateUtils.js +57 -0
- package/build/esm/filter-list/base/inputs/dateUtils.js.map +1 -0
- package/build/esm/filter-list/base/inputs/index.js +25 -0
- package/build/esm/filter-list/base/inputs/index.js.map +1 -0
- package/build/esm/filter-list/base/inputs/shared.module.css +79 -0
- package/build/esm/filter-list/hooks/__tests__/useFilterListState.test.js +128 -0
- package/build/esm/filter-list/hooks/__tests__/useFilterListState.test.js.map +1 -0
- package/build/esm/filter-list/hooks/useFilterListState.js +119 -0
- package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -0
- package/build/esm/filter-list/hooks/usePropertyAggregation.js +92 -0
- package/build/esm/filter-list/hooks/usePropertyAggregation.js.map +1 -0
- package/build/esm/filter-list/types/AddFilterMenuTypes.js +2 -0
- package/build/esm/filter-list/types/AddFilterMenuTypes.js.map +1 -0
- package/build/esm/filter-list/types/CustomRendererTypes.js +2 -0
- package/build/esm/filter-list/types/CustomRendererTypes.js.map +1 -0
- package/build/esm/filter-list/types/FilterPanelTypes.js +2 -0
- package/build/esm/filter-list/types/FilterPanelTypes.js.map +1 -0
- package/build/esm/filter-list/types/KeywordSearchTypes.js +2 -0
- package/build/esm/filter-list/types/KeywordSearchTypes.js.map +1 -0
- package/build/esm/filter-list/types/LinkedFilterTypes.js +2 -0
- package/build/esm/filter-list/types/LinkedFilterTypes.js.map +1 -0
- package/build/esm/filter-list/types/index.js +22 -0
- package/build/esm/filter-list/types/index.js.map +1 -0
- package/build/esm/filter-list/utils/aggregationHelpers.js +44 -0
- package/build/esm/filter-list/utils/aggregationHelpers.js.map +1 -0
- package/build/esm/filter-list/utils/assertUnreachable.js +25 -0
- package/build/esm/filter-list/utils/assertUnreachable.js.map +1 -0
- package/build/esm/filter-list/utils/coerceFilterValue.js +33 -0
- package/build/esm/filter-list/utils/coerceFilterValue.js.map +1 -0
- package/build/esm/filter-list/utils/filterStateToWhereClause.js +337 -0
- package/build/esm/filter-list/utils/filterStateToWhereClause.js.map +1 -0
- package/build/esm/filter-list/utils/filterValues.js +55 -0
- package/build/esm/filter-list/utils/filterValues.js.map +1 -0
- package/build/esm/filter-list/utils/getFilterKey.js +34 -0
- package/build/esm/filter-list/utils/getFilterKey.js.map +1 -0
- package/build/esm/object-table/ColumnConfigDialog.js +259 -0
- package/build/esm/object-table/ColumnConfigDialog.js.map +1 -0
- package/build/esm/object-table/ColumnConfigDialog.module.css +247 -0
- package/build/esm/object-table/DefaultCellRenderer.js +43 -0
- package/build/esm/object-table/DefaultCellRenderer.js.map +1 -0
- package/build/esm/object-table/EditableCell.js +91 -0
- package/build/esm/object-table/EditableCell.js.map +1 -0
- package/build/esm/object-table/EditableCell.module.css +3 -0
- package/build/esm/object-table/LoadingStateTable.js +4 -4
- package/build/esm/object-table/LoadingStateTable.js.map +1 -1
- package/build/esm/object-table/MultiColumnSortDialog.js +178 -0
- package/build/esm/object-table/MultiColumnSortDialog.js.map +1 -0
- package/build/esm/object-table/MultiColumnSortDialog.module.css +195 -0
- package/build/esm/object-table/NonIdealState.module.css +2 -3
- package/build/esm/object-table/ObjectTable.js +74 -15
- package/build/esm/object-table/ObjectTable.js.map +1 -1
- package/build/esm/object-table/ObjectTableApi.js.map +1 -1
- package/build/esm/object-table/SelectionCells.js +15 -4
- package/build/esm/object-table/SelectionCells.js.map +1 -1
- package/build/esm/object-table/SortableItemsList.js +35 -0
- package/build/esm/object-table/SortableItemsList.js.map +1 -0
- package/build/esm/object-table/Table.js +25 -8
- package/build/esm/object-table/Table.js.map +1 -1
- package/build/esm/object-table/Table.module.css +26 -3
- package/build/esm/object-table/TableBody.module.css +2 -0
- package/build/esm/object-table/TableCell.module.css +22 -1
- package/build/esm/object-table/TableHeader.js +93 -6
- package/build/esm/object-table/TableHeader.js.map +1 -1
- package/build/esm/object-table/TableHeader.module.css +9 -2
- package/build/esm/object-table/TableHeaderWithPopover.js +53 -22
- package/build/esm/object-table/TableHeaderWithPopover.js.map +1 -1
- package/build/esm/object-table/TableHeaderWithPopover.module.css +56 -25
- package/build/esm/object-table/TableRow.module.css +2 -0
- package/build/esm/object-table/__tests__/useEditableTable.test.js +197 -0
- package/build/esm/object-table/__tests__/useEditableTable.test.js.map +1 -0
- package/build/esm/object-table/hooks/__tests__/useColumnDefs.test.js +14 -2
- package/build/esm/object-table/hooks/__tests__/useColumnDefs.test.js.map +1 -1
- package/build/esm/object-table/hooks/__tests__/useColumnVisibility.test.js +160 -138
- package/build/esm/object-table/hooks/__tests__/useColumnVisibility.test.js.map +1 -1
- package/build/esm/object-table/hooks/__tests__/useObjectTableData.test.js +113 -25
- package/build/esm/object-table/hooks/__tests__/useObjectTableData.test.js.map +1 -1
- package/build/esm/object-table/hooks/__tests__/useRowSelection.test.js +48 -0
- package/build/esm/object-table/hooks/__tests__/useRowSelection.test.js.map +1 -1
- package/build/esm/object-table/hooks/__tests__/useSelectionColumn.test.js +27 -82
- package/build/esm/object-table/hooks/__tests__/useSelectionColumn.test.js.map +1 -1
- package/build/esm/object-table/hooks/__tests__/useTableSorting.test.js +290 -0
- package/build/esm/object-table/hooks/__tests__/useTableSorting.test.js.map +1 -1
- package/build/esm/object-table/hooks/useColumnDefs.js +16 -3
- package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
- package/build/esm/object-table/hooks/useColumnResize.js +45 -0
- package/build/esm/object-table/hooks/useColumnResize.js.map +1 -0
- package/build/esm/object-table/hooks/useColumnVisibility.js +52 -20
- package/build/esm/object-table/hooks/useColumnVisibility.js.map +1 -1
- package/build/esm/object-table/hooks/useEditableTable.js +57 -0
- package/build/esm/object-table/hooks/useEditableTable.js.map +1 -0
- package/build/esm/object-table/hooks/useObjectTableData.js +42 -7
- package/build/esm/object-table/hooks/useObjectTableData.js.map +1 -1
- package/build/esm/object-table/hooks/useRowSelection.js +31 -10
- package/build/esm/object-table/hooks/useRowSelection.js.map +1 -1
- package/build/esm/object-table/hooks/useSelectionColumn.js +15 -6
- package/build/esm/object-table/hooks/useSelectionColumn.js.map +1 -1
- package/build/esm/object-table/utils/getCellId.js +27 -0
- package/build/esm/object-table/utils/getCellId.js.map +1 -0
- package/build/esm/object-table/utils/types.js +2 -0
- package/build/esm/object-table/utils/types.js.map +1 -0
- package/build/esm/public/experimental.js +2 -0
- package/build/esm/public/experimental.js.map +1 -1
- package/build/esm/shared/ErrorBoundary.js +62 -0
- package/build/esm/shared/ErrorBoundary.js.map +1 -0
- package/build/esm/shared/ErrorBoundary.module.css +55 -0
- package/build/types/base-components/action-button/ActionButton.d.ts +5 -0
- package/build/types/base-components/action-button/ActionButton.d.ts.map +1 -0
- package/build/types/base-components/combobox/Combobox.d.ts +52 -0
- package/build/types/base-components/combobox/Combobox.d.ts.map +1 -0
- package/build/types/base-components/dialog/Dialog.d.ts +10 -0
- package/build/types/base-components/dialog/Dialog.d.ts.map +1 -0
- package/build/types/base-components/draggable-list/DraggableList.d.ts +17 -0
- package/build/types/base-components/draggable-list/DraggableList.d.ts.map +1 -0
- package/build/types/base-components/search-bar/SearchBar.d.ts +11 -0
- package/build/types/base-components/search-bar/SearchBar.d.ts.map +1 -0
- package/build/types/base-components/select/Select.d.ts +34 -0
- package/build/types/base-components/select/Select.d.ts.map +1 -0
- package/build/types/base-components/switch/Switch.d.ts +10 -0
- package/build/types/base-components/switch/Switch.d.ts.map +1 -0
- package/build/types/filter-list/FilterListApi.d.ts +62 -17
- package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
- package/build/types/filter-list/FilterListItemApi.d.ts +101 -53
- package/build/types/filter-list/FilterListItemApi.d.ts.map +1 -1
- package/build/types/filter-list/__tests__/LinkedPropertyInput.test.d.ts +1 -0
- package/build/types/filter-list/__tests__/LinkedPropertyInput.test.d.ts.map +1 -0
- package/build/types/filter-list/__tests__/dateUtils.test.d.ts +1 -0
- package/build/types/filter-list/__tests__/dateUtils.test.d.ts.map +1 -0
- package/build/types/filter-list/__tests__/filterStateToWhereClause.test.d.ts +1 -0
- package/build/types/filter-list/__tests__/filterStateToWhereClause.test.d.ts.map +1 -0
- package/build/types/filter-list/__tests__/getFilterKey.test.d.ts +1 -0
- package/build/types/filter-list/__tests__/getFilterKey.test.d.ts.map +1 -0
- package/build/types/filter-list/__tests__/testUtils.d.ts +65 -0
- package/build/types/filter-list/__tests__/testUtils.d.ts.map +1 -0
- package/build/types/filter-list/base/FilterInput.d.ts +15 -0
- package/build/types/filter-list/base/FilterInput.d.ts.map +1 -0
- package/build/types/filter-list/base/FilterList.d.ts +4 -0
- package/build/types/filter-list/base/FilterList.d.ts.map +1 -0
- package/build/types/filter-list/base/FilterListContent.d.ts +16 -0
- package/build/types/filter-list/base/FilterListContent.d.ts.map +1 -0
- package/build/types/filter-list/base/FilterListHeader.d.ts +14 -0
- package/build/types/filter-list/base/FilterListHeader.d.ts.map +1 -0
- package/build/types/filter-list/base/FilterListItem.d.ts +18 -0
- package/build/types/filter-list/base/FilterListItem.d.ts.map +1 -0
- package/build/types/filter-list/base/index.d.ts +5 -0
- package/build/types/filter-list/base/index.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts +21 -0
- package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/ContainsTextInput.d.ts +13 -0
- package/build/types/filter-list/base/inputs/ContainsTextInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/DateRangeInput.d.ts +22 -0
- package/build/types/filter-list/base/inputs/DateRangeInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/LinkedPropertyInput.d.ts +21 -0
- package/build/types/filter-list/base/inputs/LinkedPropertyInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/ListogramInput.d.ts +22 -0
- package/build/types/filter-list/base/inputs/ListogramInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/MultiDateInput.d.ts +12 -0
- package/build/types/filter-list/base/inputs/MultiDateInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts +24 -0
- package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts +21 -0
- package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts +22 -0
- package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/RangeInput.d.ts +37 -0
- package/build/types/filter-list/base/inputs/RangeInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/SingleDateInput.d.ts +13 -0
- package/build/types/filter-list/base/inputs/SingleDateInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts +24 -0
- package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/TextTagsInput.d.ts +24 -0
- package/build/types/filter-list/base/inputs/TextTagsInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/TimelineInput.d.ts +11 -0
- package/build/types/filter-list/base/inputs/TimelineInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/ToggleInput.d.ts +10 -0
- package/build/types/filter-list/base/inputs/ToggleInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/createHistogramBuckets.d.ts +16 -0
- package/build/types/filter-list/base/inputs/createHistogramBuckets.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/dateUtils.d.ts +17 -0
- package/build/types/filter-list/base/inputs/dateUtils.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/index.d.ts +8 -0
- package/build/types/filter-list/base/inputs/index.d.ts.map +1 -0
- package/build/types/filter-list/hooks/__tests__/useFilterListState.test.d.ts +1 -0
- package/build/types/filter-list/hooks/__tests__/useFilterListState.test.d.ts.map +1 -0
- package/build/types/filter-list/hooks/useFilterListState.d.ts +11 -0
- package/build/types/filter-list/hooks/useFilterListState.d.ts.map +1 -0
- package/build/types/filter-list/hooks/usePropertyAggregation.d.ts +20 -0
- package/build/types/filter-list/hooks/usePropertyAggregation.d.ts.map +1 -0
- package/build/types/filter-list/types/AddFilterMenuTypes.d.ts +56 -0
- package/build/types/filter-list/types/AddFilterMenuTypes.d.ts.map +1 -0
- package/build/types/filter-list/types/CustomRendererTypes.d.ts +76 -0
- package/build/types/filter-list/types/CustomRendererTypes.d.ts.map +1 -0
- package/build/types/filter-list/types/FilterPanelTypes.d.ts +18 -0
- package/build/types/filter-list/types/FilterPanelTypes.d.ts.map +1 -0
- package/build/types/filter-list/types/KeywordSearchTypes.d.ts +56 -0
- package/build/types/filter-list/types/KeywordSearchTypes.d.ts.map +1 -0
- package/build/types/filter-list/types/LinkedFilterTypes.d.ts +89 -0
- package/build/types/filter-list/types/LinkedFilterTypes.d.ts.map +1 -0
- package/build/types/filter-list/types/index.d.ts +5 -0
- package/build/types/filter-list/types/index.d.ts.map +1 -0
- package/build/types/filter-list/utils/aggregationHelpers.d.ts +9 -0
- package/build/types/filter-list/utils/aggregationHelpers.d.ts.map +1 -0
- package/build/types/filter-list/utils/assertUnreachable.d.ts +6 -0
- package/build/types/filter-list/utils/assertUnreachable.d.ts.map +1 -0
- package/build/types/filter-list/utils/coerceFilterValue.d.ts +11 -0
- package/build/types/filter-list/utils/coerceFilterValue.d.ts.map +1 -0
- package/build/types/filter-list/utils/filterStateToWhereClause.d.ts +16 -0
- package/build/types/filter-list/utils/filterStateToWhereClause.d.ts.map +1 -0
- package/build/types/filter-list/utils/filterValues.d.ts +5 -0
- package/build/types/filter-list/utils/filterValues.d.ts.map +1 -0
- package/build/types/filter-list/utils/getFilterKey.d.ts +3 -0
- package/build/types/filter-list/utils/getFilterKey.d.ts.map +1 -0
- package/build/types/object-table/ColumnConfigDialog.d.ts +18 -0
- package/build/types/object-table/ColumnConfigDialog.d.ts.map +1 -0
- package/build/types/object-table/DefaultCellRenderer.d.ts +3 -0
- package/build/types/object-table/DefaultCellRenderer.d.ts.map +1 -0
- package/build/types/object-table/EditableCell.d.ts +10 -0
- package/build/types/object-table/EditableCell.d.ts.map +1 -0
- package/build/types/object-table/LoadingStateTable.d.ts.map +1 -1
- package/build/types/object-table/MultiColumnSortDialog.d.ts +15 -0
- package/build/types/object-table/MultiColumnSortDialog.d.ts.map +1 -0
- package/build/types/object-table/ObjectTable.d.ts +1 -1
- package/build/types/object-table/ObjectTable.d.ts.map +1 -1
- package/build/types/object-table/ObjectTableApi.d.ts +79 -8
- package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
- package/build/types/object-table/SortableItemsList.d.ts +13 -0
- package/build/types/object-table/SortableItemsList.d.ts.map +1 -0
- package/build/types/object-table/Table.d.ts +26 -1
- package/build/types/object-table/Table.d.ts.map +1 -1
- package/build/types/object-table/TableHeader.d.ts +3 -1
- package/build/types/object-table/TableHeader.d.ts.map +1 -1
- package/build/types/object-table/TableHeaderWithPopover.d.ts +30 -6
- package/build/types/object-table/TableHeaderWithPopover.d.ts.map +1 -1
- package/build/types/object-table/__tests__/useEditableTable.test.d.ts +1 -0
- package/build/types/object-table/__tests__/useEditableTable.test.d.ts.map +1 -0
- package/build/types/object-table/hooks/useColumnDefs.d.ts.map +1 -1
- package/build/types/object-table/hooks/useColumnResize.d.ts +10 -0
- package/build/types/object-table/hooks/useColumnResize.d.ts.map +1 -0
- package/build/types/object-table/hooks/useColumnVisibility.d.ts +18 -7
- package/build/types/object-table/hooks/useColumnVisibility.d.ts.map +1 -1
- package/build/types/object-table/hooks/useEditableTable.d.ts +22 -0
- package/build/types/object-table/hooks/useEditableTable.d.ts.map +1 -0
- package/build/types/object-table/hooks/useObjectTableData.d.ts +6 -5
- package/build/types/object-table/hooks/useObjectTableData.d.ts.map +1 -1
- package/build/types/object-table/hooks/useRowSelection.d.ts +5 -4
- package/build/types/object-table/hooks/useRowSelection.d.ts.map +1 -1
- package/build/types/object-table/utils/getCellId.d.ts +3 -0
- package/build/types/object-table/utils/getCellId.d.ts.map +1 -0
- package/build/types/object-table/utils/types.d.ts +14 -0
- package/build/types/object-table/utils/types.d.ts.map +1 -0
- package/build/types/public/experimental.d.ts +6 -2
- package/build/types/public/experimental.d.ts.map +1 -1
- package/build/types/shared/ErrorBoundary.d.ts +19 -0
- package/build/types/shared/ErrorBoundary.d.ts.map +1 -0
- package/package.json +17 -9
|
@@ -128,6 +128,19 @@ describe("useTableSorting", () => {
|
|
|
128
128
|
desc: false
|
|
129
129
|
}]);
|
|
130
130
|
});
|
|
131
|
+
it("enables sorting when orderBy is provided with onOrderByChanged", () => {
|
|
132
|
+
const orderBy = [{
|
|
133
|
+
property: "name",
|
|
134
|
+
direction: "asc"
|
|
135
|
+
}];
|
|
136
|
+
const onOrderByChanged = vi.fn();
|
|
137
|
+
const {
|
|
138
|
+
result
|
|
139
|
+
} = renderHook(() => useTableSorting({
|
|
140
|
+
orderBy,
|
|
141
|
+
onOrderByChanged
|
|
142
|
+
}));
|
|
143
|
+
});
|
|
131
144
|
it("when both orderBy and defaultOrderBy are provided, orderBy takes precedence", () => {
|
|
132
145
|
const orderBy = [{
|
|
133
146
|
property: "name",
|
|
@@ -207,5 +220,282 @@ describe("useTableSorting", () => {
|
|
|
207
220
|
}]);
|
|
208
221
|
});
|
|
209
222
|
});
|
|
223
|
+
describe("multisort scenarios", () => {
|
|
224
|
+
it("supports sorting by multiple columns simultaneously", () => {
|
|
225
|
+
const onOrderByChanged = vi.fn();
|
|
226
|
+
const {
|
|
227
|
+
result
|
|
228
|
+
} = renderHook(() => useTableSorting({
|
|
229
|
+
onOrderByChanged
|
|
230
|
+
}));
|
|
231
|
+
act(() => {
|
|
232
|
+
result.current.onSortingChange([{
|
|
233
|
+
id: "name",
|
|
234
|
+
desc: false
|
|
235
|
+
}, {
|
|
236
|
+
id: "age",
|
|
237
|
+
desc: true
|
|
238
|
+
}, {
|
|
239
|
+
id: "email",
|
|
240
|
+
desc: false
|
|
241
|
+
}]);
|
|
242
|
+
});
|
|
243
|
+
expect(result.current.sorting).toEqual([{
|
|
244
|
+
id: "name",
|
|
245
|
+
desc: false
|
|
246
|
+
}, {
|
|
247
|
+
id: "age",
|
|
248
|
+
desc: true
|
|
249
|
+
}, {
|
|
250
|
+
id: "email",
|
|
251
|
+
desc: false
|
|
252
|
+
}]);
|
|
253
|
+
expect(onOrderByChanged).toHaveBeenCalledWith([{
|
|
254
|
+
property: "name",
|
|
255
|
+
direction: "asc"
|
|
256
|
+
}, {
|
|
257
|
+
property: "age",
|
|
258
|
+
direction: "desc"
|
|
259
|
+
}, {
|
|
260
|
+
property: "email",
|
|
261
|
+
direction: "asc"
|
|
262
|
+
}]);
|
|
263
|
+
});
|
|
264
|
+
it("initializes with multiple columns in defaultOrderBy", () => {
|
|
265
|
+
const defaultOrderBy = [{
|
|
266
|
+
property: "name",
|
|
267
|
+
direction: "asc"
|
|
268
|
+
}, {
|
|
269
|
+
property: "age",
|
|
270
|
+
direction: "desc"
|
|
271
|
+
}, {
|
|
272
|
+
property: "email",
|
|
273
|
+
direction: "asc"
|
|
274
|
+
}];
|
|
275
|
+
const {
|
|
276
|
+
result
|
|
277
|
+
} = renderHook(() => useTableSorting({
|
|
278
|
+
defaultOrderBy
|
|
279
|
+
}));
|
|
280
|
+
expect(result.current.sorting).toEqual([{
|
|
281
|
+
id: "name",
|
|
282
|
+
desc: false
|
|
283
|
+
}, {
|
|
284
|
+
id: "age",
|
|
285
|
+
desc: true
|
|
286
|
+
}, {
|
|
287
|
+
id: "email",
|
|
288
|
+
desc: false
|
|
289
|
+
}]);
|
|
290
|
+
});
|
|
291
|
+
it("preserves order of sort columns when adding a new sort", () => {
|
|
292
|
+
const onOrderByChanged = vi.fn();
|
|
293
|
+
const {
|
|
294
|
+
result
|
|
295
|
+
} = renderHook(() => useTableSorting({
|
|
296
|
+
defaultOrderBy: [{
|
|
297
|
+
property: "name",
|
|
298
|
+
direction: "asc"
|
|
299
|
+
}],
|
|
300
|
+
onOrderByChanged
|
|
301
|
+
}));
|
|
302
|
+
|
|
303
|
+
// Add a second sort column
|
|
304
|
+
act(() => {
|
|
305
|
+
result.current.onSortingChange([{
|
|
306
|
+
id: "name",
|
|
307
|
+
desc: false
|
|
308
|
+
}, {
|
|
309
|
+
id: "age",
|
|
310
|
+
desc: true
|
|
311
|
+
}]);
|
|
312
|
+
});
|
|
313
|
+
expect(result.current.sorting).toEqual([{
|
|
314
|
+
id: "name",
|
|
315
|
+
desc: false
|
|
316
|
+
}, {
|
|
317
|
+
id: "age",
|
|
318
|
+
desc: true
|
|
319
|
+
}]);
|
|
320
|
+
expect(onOrderByChanged).toHaveBeenCalledWith([{
|
|
321
|
+
property: "name",
|
|
322
|
+
direction: "asc"
|
|
323
|
+
}, {
|
|
324
|
+
property: "age",
|
|
325
|
+
direction: "desc"
|
|
326
|
+
}]);
|
|
327
|
+
});
|
|
328
|
+
it("supports removing a column from multisort", () => {
|
|
329
|
+
const onOrderByChanged = vi.fn();
|
|
330
|
+
const {
|
|
331
|
+
result
|
|
332
|
+
} = renderHook(() => useTableSorting({
|
|
333
|
+
defaultOrderBy: [{
|
|
334
|
+
property: "name",
|
|
335
|
+
direction: "asc"
|
|
336
|
+
}, {
|
|
337
|
+
property: "age",
|
|
338
|
+
direction: "desc"
|
|
339
|
+
}, {
|
|
340
|
+
property: "email",
|
|
341
|
+
direction: "asc"
|
|
342
|
+
}],
|
|
343
|
+
onOrderByChanged
|
|
344
|
+
}));
|
|
345
|
+
|
|
346
|
+
// Remove the middle sort column
|
|
347
|
+
act(() => {
|
|
348
|
+
result.current.onSortingChange([{
|
|
349
|
+
id: "name",
|
|
350
|
+
desc: false
|
|
351
|
+
}, {
|
|
352
|
+
id: "email",
|
|
353
|
+
desc: false
|
|
354
|
+
}]);
|
|
355
|
+
});
|
|
356
|
+
expect(result.current.sorting).toEqual([{
|
|
357
|
+
id: "name",
|
|
358
|
+
desc: false
|
|
359
|
+
}, {
|
|
360
|
+
id: "email",
|
|
361
|
+
desc: false
|
|
362
|
+
}]);
|
|
363
|
+
expect(onOrderByChanged).toHaveBeenCalledWith([{
|
|
364
|
+
property: "name",
|
|
365
|
+
direction: "asc"
|
|
366
|
+
}, {
|
|
367
|
+
property: "email",
|
|
368
|
+
direction: "asc"
|
|
369
|
+
}]);
|
|
370
|
+
});
|
|
371
|
+
it("supports changing direction of one column in multisort", () => {
|
|
372
|
+
const onOrderByChanged = vi.fn();
|
|
373
|
+
const {
|
|
374
|
+
result
|
|
375
|
+
} = renderHook(() => useTableSorting({
|
|
376
|
+
defaultOrderBy: [{
|
|
377
|
+
property: "name",
|
|
378
|
+
direction: "asc"
|
|
379
|
+
}, {
|
|
380
|
+
property: "age",
|
|
381
|
+
direction: "asc"
|
|
382
|
+
}],
|
|
383
|
+
onOrderByChanged
|
|
384
|
+
}));
|
|
385
|
+
|
|
386
|
+
// Change direction of second column
|
|
387
|
+
act(() => {
|
|
388
|
+
result.current.onSortingChange([{
|
|
389
|
+
id: "name",
|
|
390
|
+
desc: false
|
|
391
|
+
}, {
|
|
392
|
+
id: "age",
|
|
393
|
+
desc: true
|
|
394
|
+
}]);
|
|
395
|
+
});
|
|
396
|
+
expect(result.current.sorting).toEqual([{
|
|
397
|
+
id: "name",
|
|
398
|
+
desc: false
|
|
399
|
+
}, {
|
|
400
|
+
id: "age",
|
|
401
|
+
desc: true
|
|
402
|
+
}]);
|
|
403
|
+
expect(onOrderByChanged).toHaveBeenCalledWith([{
|
|
404
|
+
property: "name",
|
|
405
|
+
direction: "asc"
|
|
406
|
+
}, {
|
|
407
|
+
property: "age",
|
|
408
|
+
direction: "desc"
|
|
409
|
+
}]);
|
|
410
|
+
});
|
|
411
|
+
it("supports reordering sort columns", () => {
|
|
412
|
+
const onOrderByChanged = vi.fn();
|
|
413
|
+
const {
|
|
414
|
+
result
|
|
415
|
+
} = renderHook(() => useTableSorting({
|
|
416
|
+
defaultOrderBy: [{
|
|
417
|
+
property: "name",
|
|
418
|
+
direction: "asc"
|
|
419
|
+
}, {
|
|
420
|
+
property: "age",
|
|
421
|
+
direction: "desc"
|
|
422
|
+
}],
|
|
423
|
+
onOrderByChanged
|
|
424
|
+
}));
|
|
425
|
+
|
|
426
|
+
// Reorder: age becomes primary, name becomes secondary
|
|
427
|
+
act(() => {
|
|
428
|
+
result.current.onSortingChange([{
|
|
429
|
+
id: "age",
|
|
430
|
+
desc: true
|
|
431
|
+
}, {
|
|
432
|
+
id: "name",
|
|
433
|
+
desc: false
|
|
434
|
+
}]);
|
|
435
|
+
});
|
|
436
|
+
expect(result.current.sorting).toEqual([{
|
|
437
|
+
id: "age",
|
|
438
|
+
desc: true
|
|
439
|
+
}, {
|
|
440
|
+
id: "name",
|
|
441
|
+
desc: false
|
|
442
|
+
}]);
|
|
443
|
+
expect(onOrderByChanged).toHaveBeenCalledWith([{
|
|
444
|
+
property: "age",
|
|
445
|
+
direction: "desc"
|
|
446
|
+
}, {
|
|
447
|
+
property: "name",
|
|
448
|
+
direction: "asc"
|
|
449
|
+
}]);
|
|
450
|
+
});
|
|
451
|
+
it("controlled mode with multisort reflects orderBy changes", () => {
|
|
452
|
+
const onOrderByChanged = vi.fn();
|
|
453
|
+
const {
|
|
454
|
+
result,
|
|
455
|
+
rerender
|
|
456
|
+
} = renderHook(({
|
|
457
|
+
orderBy
|
|
458
|
+
}) => useTableSorting({
|
|
459
|
+
orderBy,
|
|
460
|
+
onOrderByChanged
|
|
461
|
+
}), {
|
|
462
|
+
initialProps: {
|
|
463
|
+
orderBy: [{
|
|
464
|
+
property: "name",
|
|
465
|
+
direction: "asc"
|
|
466
|
+
}]
|
|
467
|
+
}
|
|
468
|
+
});
|
|
469
|
+
expect(result.current.sorting).toEqual([{
|
|
470
|
+
id: "name",
|
|
471
|
+
desc: false
|
|
472
|
+
}]);
|
|
473
|
+
|
|
474
|
+
// Parent adds more sort columns
|
|
475
|
+
|
|
476
|
+
rerender({
|
|
477
|
+
orderBy: [{
|
|
478
|
+
property: "name",
|
|
479
|
+
direction: "asc"
|
|
480
|
+
}, {
|
|
481
|
+
property: "age",
|
|
482
|
+
direction: "desc"
|
|
483
|
+
}, {
|
|
484
|
+
property: "email",
|
|
485
|
+
direction: "asc"
|
|
486
|
+
}]
|
|
487
|
+
});
|
|
488
|
+
expect(result.current.sorting).toEqual([{
|
|
489
|
+
id: "name",
|
|
490
|
+
desc: false
|
|
491
|
+
}, {
|
|
492
|
+
id: "age",
|
|
493
|
+
desc: true
|
|
494
|
+
}, {
|
|
495
|
+
id: "email",
|
|
496
|
+
desc: false
|
|
497
|
+
}]);
|
|
498
|
+
});
|
|
499
|
+
});
|
|
210
500
|
});
|
|
211
501
|
//# sourceMappingURL=useTableSorting.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableSorting.test.js","names":["act","renderHook","describe","expect","it","vi","useTableSorting","TestObjectType","type","apiName","result","current","sorting","toEqual","defaultOrderBy","property","direction","id","desc","onSortingChange","onOrderByChanged","fn","toHaveBeenCalledWith","orderBy","rerender","initialProps"],"sources":["useTableSorting.test.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectTypeDefinition, PropertyKeys } from \"@osdk/api\";\nimport { act, renderHook } from \"@testing-library/react\";\nimport { describe, expect, it, vi } from \"vitest\";\nimport { useTableSorting } from \"../useTableSorting.js\";\n\nconst TestObjectType = {\n type: \"object\",\n apiName: \"TestObject\",\n} as const satisfies ObjectTypeDefinition;\n\ntype TestObject = typeof TestObjectType;\n\ndescribe(\"useTableSorting\", () => {\n describe(\"uncontrolled mode\", () => {\n it(\"initializes with empty sorting state when no defaultOrderBy provided\", () => {\n const { result } = renderHook(() => useTableSorting({}));\n\n expect(result.current.sorting).toEqual([]);\n });\n\n it(\"initializes with defaultOrderBy when provided\", () => {\n const defaultOrderBy: Array<{\n property: PropertyKeys<TestObject>;\n direction: \"asc\" | \"desc\";\n }> = [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n { property: \"age\" as PropertyKeys<TestObject>, direction: \"desc\" },\n ];\n\n const { result } = renderHook(() =>\n useTableSorting<TestObject>({\n defaultOrderBy,\n })\n );\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n { id: \"age\", desc: true },\n ]);\n });\n\n it(\"updates internal sorting state when onSortingChange is called\", () => {\n const { result } = renderHook(() => useTableSorting<TestObject>({}));\n\n expect(result.current.sorting).toEqual([]);\n\n act(() => {\n result.current.onSortingChange([\n { id: \"name\", desc: false },\n ]);\n });\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n ]);\n });\n\n it(\"calls onOrderByChanged with converted format when sorting changes\", () => {\n const onOrderByChanged = vi.fn();\n const { result } = renderHook(() =>\n useTableSorting<TestObject>({\n onOrderByChanged,\n })\n );\n\n act(() => {\n result.current.onSortingChange([\n { id: \"name\", desc: false },\n { id: \"age\", desc: true },\n ]);\n });\n\n expect(onOrderByChanged).toHaveBeenCalledWith([\n { property: \"name\", direction: \"asc\" },\n { property: \"age\", direction: \"desc\" },\n ]);\n });\n\n it(\"handles clearing sorting\", () => {\n const onOrderByChanged = vi.fn();\n const { result } = renderHook(() =>\n useTableSorting<TestObject>({\n defaultOrderBy: [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n ],\n onOrderByChanged,\n })\n );\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n ]);\n\n act(() => {\n result.current.onSortingChange([]);\n });\n\n expect(result.current.sorting).toEqual([]);\n expect(onOrderByChanged).toHaveBeenCalledWith([]);\n });\n });\n\n describe(\"controlled mode\", () => {\n it(\"uses orderBy prop for sorting state\", () => {\n const orderBy: Array<{\n property: PropertyKeys<TestObject>;\n direction: \"asc\" | \"desc\";\n }> = [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n ];\n\n const { result } = renderHook(() =>\n useTableSorting<TestObject>({\n orderBy,\n })\n );\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n ]);\n });\n\n it(\"when both orderBy and defaultOrderBy are provided, orderBy takes precedence\", () => {\n const orderBy: Array<{\n property: PropertyKeys<TestObject>;\n direction: \"asc\" | \"desc\";\n }> = [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n ];\n\n const defaultOrderBy: Array<{\n property: PropertyKeys<TestObject>;\n direction: \"asc\" | \"desc\";\n }> = [\n { property: \"age\" as PropertyKeys<TestObject>, direction: \"asc\" },\n ];\n\n const { result } = renderHook(() =>\n useTableSorting<TestObject>({\n orderBy,\n defaultOrderBy,\n })\n );\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n ]);\n });\n\n it(\"calls onOrderByChanged when sorting changes but does not update internal state\", () => {\n const onOrderByChanged = vi.fn();\n const orderBy: Array<{\n property: PropertyKeys<TestObject>;\n direction: \"asc\" | \"desc\";\n }> = [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n ];\n\n const { result, rerender } = renderHook(\n ({ orderBy }) =>\n useTableSorting<TestObject>({\n orderBy,\n onOrderByChanged,\n }),\n {\n initialProps: { orderBy },\n },\n );\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n ]);\n\n // Change sorting\n act(() => {\n result.current.onSortingChange([\n { id: \"age\", desc: true },\n ]);\n });\n\n // Callback is called\n expect(onOrderByChanged).toHaveBeenCalledWith([\n { property: \"age\", direction: \"desc\" },\n ]);\n\n // State doesn't change (controlled)\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n ]);\n\n // Parent updates prop\n const newOrderBy: Array<{\n property: PropertyKeys<TestObject>;\n direction: \"asc\" | \"desc\";\n }> = [\n { property: \"age\" as PropertyKeys<TestObject>, direction: \"desc\" },\n ];\n rerender({ orderBy: newOrderBy });\n\n // Now state reflects the prop\n expect(result.current.sorting).toEqual([\n { id: \"age\", desc: true },\n ]);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useTableSorting.test.js","names":["act","renderHook","describe","expect","it","vi","useTableSorting","TestObjectType","type","apiName","result","current","sorting","toEqual","defaultOrderBy","property","direction","id","desc","onSortingChange","onOrderByChanged","fn","toHaveBeenCalledWith","orderBy","rerender","initialProps"],"sources":["useTableSorting.test.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectTypeDefinition, PropertyKeys } from \"@osdk/api\";\nimport { act, renderHook } from \"@testing-library/react\";\nimport { describe, expect, it, vi } from \"vitest\";\nimport { useTableSorting } from \"../useTableSorting.js\";\n\nconst TestObjectType = {\n type: \"object\",\n apiName: \"TestObject\",\n} as const satisfies ObjectTypeDefinition;\n\ntype TestObject = typeof TestObjectType;\n\ndescribe(\"useTableSorting\", () => {\n describe(\"uncontrolled mode\", () => {\n it(\"initializes with empty sorting state when no defaultOrderBy provided\", () => {\n const { result } = renderHook(() => useTableSorting({}));\n\n expect(result.current.sorting).toEqual([]);\n });\n\n it(\"initializes with defaultOrderBy when provided\", () => {\n const defaultOrderBy: Array<{\n property: PropertyKeys<TestObject>;\n direction: \"asc\" | \"desc\";\n }> = [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n { property: \"age\" as PropertyKeys<TestObject>, direction: \"desc\" },\n ];\n\n const { result } = renderHook(() =>\n useTableSorting<TestObject>({\n defaultOrderBy,\n })\n );\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n { id: \"age\", desc: true },\n ]);\n });\n\n it(\"updates internal sorting state when onSortingChange is called\", () => {\n const { result } = renderHook(() => useTableSorting<TestObject>({}));\n\n expect(result.current.sorting).toEqual([]);\n\n act(() => {\n result.current.onSortingChange([\n { id: \"name\", desc: false },\n ]);\n });\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n ]);\n });\n\n it(\"calls onOrderByChanged with converted format when sorting changes\", () => {\n const onOrderByChanged = vi.fn();\n const { result } = renderHook(() =>\n useTableSorting<TestObject>({\n onOrderByChanged,\n })\n );\n\n act(() => {\n result.current.onSortingChange([\n { id: \"name\", desc: false },\n { id: \"age\", desc: true },\n ]);\n });\n\n expect(onOrderByChanged).toHaveBeenCalledWith([\n { property: \"name\", direction: \"asc\" },\n { property: \"age\", direction: \"desc\" },\n ]);\n });\n\n it(\"handles clearing sorting\", () => {\n const onOrderByChanged = vi.fn();\n const { result } = renderHook(() =>\n useTableSorting<TestObject>({\n defaultOrderBy: [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n ],\n onOrderByChanged,\n })\n );\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n ]);\n\n act(() => {\n result.current.onSortingChange([]);\n });\n\n expect(result.current.sorting).toEqual([]);\n expect(onOrderByChanged).toHaveBeenCalledWith([]);\n });\n });\n\n describe(\"controlled mode\", () => {\n it(\"uses orderBy prop for sorting state\", () => {\n const orderBy: Array<{\n property: PropertyKeys<TestObject>;\n direction: \"asc\" | \"desc\";\n }> = [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n ];\n\n const { result } = renderHook(() =>\n useTableSorting<TestObject>({\n orderBy,\n })\n );\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n ]);\n });\n\n it(\"enables sorting when orderBy is provided with onOrderByChanged\", () => {\n const orderBy: Array<{\n property: PropertyKeys<TestObject>;\n direction: \"asc\" | \"desc\";\n }> = [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n ];\n const onOrderByChanged = vi.fn();\n\n const { result } = renderHook(() =>\n useTableSorting<TestObject>({\n orderBy,\n onOrderByChanged,\n })\n );\n });\n\n it(\"when both orderBy and defaultOrderBy are provided, orderBy takes precedence\", () => {\n const orderBy: Array<{\n property: PropertyKeys<TestObject>;\n direction: \"asc\" | \"desc\";\n }> = [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n ];\n\n const defaultOrderBy: Array<{\n property: PropertyKeys<TestObject>;\n direction: \"asc\" | \"desc\";\n }> = [\n { property: \"age\" as PropertyKeys<TestObject>, direction: \"asc\" },\n ];\n\n const { result } = renderHook(() =>\n useTableSorting<TestObject>({\n orderBy,\n defaultOrderBy,\n })\n );\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n ]);\n });\n\n it(\"calls onOrderByChanged when sorting changes but does not update internal state\", () => {\n const onOrderByChanged = vi.fn();\n const orderBy: Array<{\n property: PropertyKeys<TestObject>;\n direction: \"asc\" | \"desc\";\n }> = [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n ];\n\n const { result, rerender } = renderHook(\n ({ orderBy }) =>\n useTableSorting<TestObject>({\n orderBy,\n onOrderByChanged,\n }),\n {\n initialProps: { orderBy },\n },\n );\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n ]);\n\n // Change sorting\n act(() => {\n result.current.onSortingChange([\n { id: \"age\", desc: true },\n ]);\n });\n\n // Callback is called\n expect(onOrderByChanged).toHaveBeenCalledWith([\n { property: \"age\", direction: \"desc\" },\n ]);\n\n // State doesn't change (controlled)\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n ]);\n\n // Parent updates prop\n const newOrderBy: Array<{\n property: PropertyKeys<TestObject>;\n direction: \"asc\" | \"desc\";\n }> = [\n { property: \"age\" as PropertyKeys<TestObject>, direction: \"desc\" },\n ];\n rerender({ orderBy: newOrderBy });\n\n // Now state reflects the prop\n expect(result.current.sorting).toEqual([\n { id: \"age\", desc: true },\n ]);\n });\n });\n\n describe(\"multisort scenarios\", () => {\n it(\"supports sorting by multiple columns simultaneously\", () => {\n const onOrderByChanged = vi.fn();\n const { result } = renderHook(() =>\n useTableSorting<TestObject>({\n onOrderByChanged,\n })\n );\n\n act(() => {\n result.current.onSortingChange([\n { id: \"name\", desc: false },\n { id: \"age\", desc: true },\n { id: \"email\", desc: false },\n ]);\n });\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n { id: \"age\", desc: true },\n { id: \"email\", desc: false },\n ]);\n\n expect(onOrderByChanged).toHaveBeenCalledWith([\n { property: \"name\", direction: \"asc\" },\n { property: \"age\", direction: \"desc\" },\n { property: \"email\", direction: \"asc\" },\n ]);\n });\n\n it(\"initializes with multiple columns in defaultOrderBy\", () => {\n const defaultOrderBy: Array<{\n property: PropertyKeys<TestObject>;\n direction: \"asc\" | \"desc\";\n }> = [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n { property: \"age\" as PropertyKeys<TestObject>, direction: \"desc\" },\n { property: \"email\" as PropertyKeys<TestObject>, direction: \"asc\" },\n ];\n\n const { result } = renderHook(() =>\n useTableSorting<TestObject>({\n defaultOrderBy,\n })\n );\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n { id: \"age\", desc: true },\n { id: \"email\", desc: false },\n ]);\n });\n\n it(\"preserves order of sort columns when adding a new sort\", () => {\n const onOrderByChanged = vi.fn();\n const { result } = renderHook(() =>\n useTableSorting<TestObject>({\n defaultOrderBy: [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n ],\n onOrderByChanged,\n })\n );\n\n // Add a second sort column\n act(() => {\n result.current.onSortingChange([\n { id: \"name\", desc: false },\n { id: \"age\", desc: true },\n ]);\n });\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n { id: \"age\", desc: true },\n ]);\n\n expect(onOrderByChanged).toHaveBeenCalledWith([\n { property: \"name\", direction: \"asc\" },\n { property: \"age\", direction: \"desc\" },\n ]);\n });\n\n it(\"supports removing a column from multisort\", () => {\n const onOrderByChanged = vi.fn();\n const { result } = renderHook(() =>\n useTableSorting<TestObject>({\n defaultOrderBy: [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n { property: \"age\" as PropertyKeys<TestObject>, direction: \"desc\" },\n { property: \"email\" as PropertyKeys<TestObject>, direction: \"asc\" },\n ],\n onOrderByChanged,\n })\n );\n\n // Remove the middle sort column\n act(() => {\n result.current.onSortingChange([\n { id: \"name\", desc: false },\n { id: \"email\", desc: false },\n ]);\n });\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n { id: \"email\", desc: false },\n ]);\n\n expect(onOrderByChanged).toHaveBeenCalledWith([\n { property: \"name\", direction: \"asc\" },\n { property: \"email\", direction: \"asc\" },\n ]);\n });\n\n it(\"supports changing direction of one column in multisort\", () => {\n const onOrderByChanged = vi.fn();\n const { result } = renderHook(() =>\n useTableSorting<TestObject>({\n defaultOrderBy: [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n { property: \"age\" as PropertyKeys<TestObject>, direction: \"asc\" },\n ],\n onOrderByChanged,\n })\n );\n\n // Change direction of second column\n act(() => {\n result.current.onSortingChange([\n { id: \"name\", desc: false },\n { id: \"age\", desc: true },\n ]);\n });\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n { id: \"age\", desc: true },\n ]);\n\n expect(onOrderByChanged).toHaveBeenCalledWith([\n { property: \"name\", direction: \"asc\" },\n { property: \"age\", direction: \"desc\" },\n ]);\n });\n\n it(\"supports reordering sort columns\", () => {\n const onOrderByChanged = vi.fn();\n const { result } = renderHook(() =>\n useTableSorting<TestObject>({\n defaultOrderBy: [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n { property: \"age\" as PropertyKeys<TestObject>, direction: \"desc\" },\n ],\n onOrderByChanged,\n })\n );\n\n // Reorder: age becomes primary, name becomes secondary\n act(() => {\n result.current.onSortingChange([\n { id: \"age\", desc: true },\n { id: \"name\", desc: false },\n ]);\n });\n\n expect(result.current.sorting).toEqual([\n { id: \"age\", desc: true },\n { id: \"name\", desc: false },\n ]);\n\n expect(onOrderByChanged).toHaveBeenCalledWith([\n { property: \"age\", direction: \"desc\" },\n { property: \"name\", direction: \"asc\" },\n ]);\n });\n\n it(\"controlled mode with multisort reflects orderBy changes\", () => {\n const onOrderByChanged = vi.fn();\n const initialOrderBy: Array<{\n property: PropertyKeys<TestObject>;\n direction: \"asc\" | \"desc\";\n }> = [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n ];\n\n const { result, rerender } = renderHook(\n ({ orderBy }) =>\n useTableSorting<TestObject>({\n orderBy,\n onOrderByChanged,\n }),\n {\n initialProps: { orderBy: initialOrderBy },\n },\n );\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n ]);\n\n // Parent adds more sort columns\n const newOrderBy: Array<{\n property: PropertyKeys<TestObject>;\n direction: \"asc\" | \"desc\";\n }> = [\n { property: \"name\" as PropertyKeys<TestObject>, direction: \"asc\" },\n { property: \"age\" as PropertyKeys<TestObject>, direction: \"desc\" },\n { property: \"email\" as PropertyKeys<TestObject>, direction: \"asc\" },\n ];\n rerender({ orderBy: newOrderBy });\n\n expect(result.current.sorting).toEqual([\n { id: \"name\", desc: false },\n { id: \"age\", desc: true },\n { id: \"email\", desc: false },\n ]);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
import { useOsdkMetadata } from "@osdk/react";
|
|
18
18
|
import { useMemo } from "react";
|
|
19
|
+
import { renderDefaultCell } from "../DefaultCellRenderer.js";
|
|
19
20
|
/**
|
|
20
21
|
* Hook which builds column definitions for tanstack-table given the objectSet
|
|
21
22
|
*/
|
|
@@ -51,15 +52,24 @@ function getColumnsFromColumnDefinitions(columnDefinitions, objectProperties) {
|
|
|
51
52
|
resizable,
|
|
52
53
|
orderable,
|
|
53
54
|
filterable,
|
|
55
|
+
editable,
|
|
54
56
|
renderCell,
|
|
55
|
-
renderHeader
|
|
57
|
+
renderHeader,
|
|
58
|
+
columnName
|
|
56
59
|
} = col;
|
|
57
60
|
const propertyMetadata = locator.type === "property" ? objectProperties?.[locator.id] : undefined;
|
|
58
61
|
const colKey = locator.id;
|
|
62
|
+
const dataType = propertyMetadata?.type && typeof propertyMetadata.type === "string" ? propertyMetadata.type : undefined;
|
|
59
63
|
const colDef = {
|
|
60
64
|
id: colKey,
|
|
61
65
|
accessorKey: colKey,
|
|
62
|
-
header: renderHeader ?? propertyMetadata?.displayName,
|
|
66
|
+
header: renderHeader ?? (columnName || propertyMetadata?.displayName),
|
|
67
|
+
meta: {
|
|
68
|
+
columnName: columnName || propertyMetadata?.displayName,
|
|
69
|
+
isVisible: col.isVisible !== false,
|
|
70
|
+
editable,
|
|
71
|
+
dataType
|
|
72
|
+
},
|
|
63
73
|
size: width,
|
|
64
74
|
...(minWidth ? {
|
|
65
75
|
minSize: minWidth
|
|
@@ -72,7 +82,10 @@ function getColumnsFromColumnDefinitions(columnDefinitions, objectProperties) {
|
|
|
72
82
|
enableColumnFilter: filterable,
|
|
73
83
|
cell: cellContext => {
|
|
74
84
|
const object = cellContext.row.original;
|
|
75
|
-
|
|
85
|
+
if (renderCell) {
|
|
86
|
+
return renderCell(object, locator);
|
|
87
|
+
}
|
|
88
|
+
return renderDefaultCell(cellContext);
|
|
76
89
|
}
|
|
77
90
|
};
|
|
78
91
|
return colDef;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useColumnDefs.js","names":["useOsdkMetadata","useMemo","useColumnDefs","objectType","columnDefinitions","metadata","loading","error","columns","objectProperties","properties","getColumnsFromColumnDefinitions","getDefaultColumns","map","col","locator","width","minWidth","maxWidth","resizable","orderable","filterable","renderCell","renderHeader","propertyMetadata","type","id","undefined","colKey","colDef","accessorKey","header","displayName","size","minSize","maxSize","enableResizing","enableSorting","enableColumnFilter","cell","cellContext","object","row","original","
|
|
1
|
+
{"version":3,"file":"useColumnDefs.js","names":["useOsdkMetadata","useMemo","renderDefaultCell","useColumnDefs","objectType","columnDefinitions","metadata","loading","error","columns","objectProperties","properties","getColumnsFromColumnDefinitions","getDefaultColumns","map","col","locator","width","minWidth","maxWidth","resizable","orderable","filterable","editable","renderCell","renderHeader","columnName","propertyMetadata","type","id","undefined","colKey","dataType","colDef","accessorKey","header","displayName","meta","isVisible","size","minSize","maxSize","enableResizing","enableSorting","enableColumnFilter","cell","cellContext","object","row","original","Object","entries","key","property"],"sources":["useColumnDefs.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectMetadata,\n ObjectOrInterfaceDefinition,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport { useOsdkMetadata } from \"@osdk/react\";\nimport type { AccessorColumnDef } from \"@tanstack/react-table\";\nimport { useMemo } from \"react\";\nimport { renderDefaultCell } from \"../DefaultCellRenderer.js\";\nimport type { ColumnDefinition } from \"../ObjectTableApi.js\";\n\ninterface UseColumnDefsResult<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[];\n\n loading: boolean;\n\n error: string | undefined;\n}\n\n/**\n * Hook which builds column definitions for tanstack-table given the objectSet\n */\nexport function useColumnDefs<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n objectType: Q,\n columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n): UseColumnDefsResult<Q, RDPs> {\n const { metadata, loading, error } = useOsdkMetadata(objectType);\n\n const columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[] = useMemo(() => {\n const objectProperties = metadata?.properties;\n // If columnDefinitions is provided, construct colDefs with it\n if (columnDefinitions) {\n return getColumnsFromColumnDefinitions<Q, RDPs, FunctionColumns>(\n columnDefinitions,\n objectProperties,\n );\n }\n\n // If not, return the default columns from the object properties\n return getDefaultColumns<Q, RDPs>(objectProperties);\n }, [columnDefinitions, metadata?.properties]);\n\n return { columns, loading, error };\n}\n\nfunction getColumnsFromColumnDefinitions<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n columnDefinitions: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n objectProperties?: Record<any, ObjectMetadata.Property>,\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n return columnDefinitions.map((col) => {\n const {\n locator,\n width,\n minWidth,\n maxWidth,\n resizable,\n orderable,\n filterable,\n editable,\n renderCell,\n renderHeader,\n columnName,\n } = col;\n\n const propertyMetadata = locator.type === \"property\"\n ? objectProperties?.[locator.id]\n : undefined;\n\n const colKey = locator.id as string;\n\n const dataType =\n propertyMetadata?.type && typeof propertyMetadata.type === \"string\"\n ? propertyMetadata.type\n : undefined;\n\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n id: colKey,\n accessorKey: colKey,\n header: renderHeader ?? (columnName || propertyMetadata?.displayName),\n meta: {\n columnName: columnName || propertyMetadata?.displayName,\n isVisible: col.isVisible !== false,\n editable,\n dataType,\n },\n size: width,\n ...(minWidth ? { minSize: minWidth } : {}),\n ...(maxWidth ? { maxSize: maxWidth } : {}),\n enableResizing: resizable,\n enableSorting: orderable,\n enableColumnFilter: filterable,\n cell: (cellContext) => {\n const object: Osdk.Instance<\n Q,\n \"$allBaseProperties\",\n PropertyKeys<Q>,\n RDPs\n > = cellContext.row.original;\n\n if (renderCell) {\n return renderCell(object, locator);\n }\n\n return renderDefaultCell(cellContext);\n },\n };\n\n return colDef;\n });\n}\n\nfunction getDefaultColumns<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n>(\n objectProperties?: Record<any, ObjectMetadata.Property>,\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n if (!objectProperties) return [];\n\n return Object.entries(objectProperties).map(([key, property]) => {\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n accessorKey: key,\n header: property.displayName ?? key,\n };\n return colDef;\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { useCallback, useState } from "react";
|
|
18
|
+
export const useColumnResize = ({
|
|
19
|
+
onColumnResize
|
|
20
|
+
}) => {
|
|
21
|
+
const [columnSizing, setColumnSizing] = useState({});
|
|
22
|
+
const onColumnSizingChange = useCallback(updater => {
|
|
23
|
+
setColumnSizing(prev => {
|
|
24
|
+
const newState = typeof updater === "function" ? updater(prev) : updater;
|
|
25
|
+
if (onColumnResize) {
|
|
26
|
+
for (const columnId of Object.keys(newState)) {
|
|
27
|
+
if (newState[columnId] !== prev[columnId]) {
|
|
28
|
+
onColumnResize(columnId, newState[columnId]);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
for (const columnId of Object.keys(prev)) {
|
|
32
|
+
if (!(columnId in newState)) {
|
|
33
|
+
onColumnResize(columnId, null);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return newState;
|
|
38
|
+
});
|
|
39
|
+
}, [onColumnResize]);
|
|
40
|
+
return {
|
|
41
|
+
columnSizing,
|
|
42
|
+
onColumnSizingChange
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=useColumnResize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useColumnResize.js","names":["useCallback","useState","useColumnResize","onColumnResize","columnSizing","setColumnSizing","onColumnSizingChange","updater","prev","newState","columnId","Object","keys"],"sources":["useColumnResize.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ColumnSizingState, OnChangeFn } from \"@tanstack/react-table\";\nimport { useCallback, useState } from \"react\";\n\ninterface UseColumnResizeProps {\n onColumnResize?: (columnId: string, newWidth: number | null) => void;\n}\n\ninterface UseColumnResizeResults {\n columnSizing: ColumnSizingState;\n onColumnSizingChange: OnChangeFn<ColumnSizingState>;\n}\n\nexport const useColumnResize = ({\n onColumnResize,\n}: UseColumnResizeProps): UseColumnResizeResults => {\n const [columnSizing, setColumnSizing] = useState<ColumnSizingState>({});\n\n const onColumnSizingChange: OnChangeFn<ColumnSizingState> = useCallback(\n (updater) => {\n setColumnSizing((prev) => {\n const newState = typeof updater === \"function\"\n ? updater(prev)\n : updater;\n\n if (onColumnResize) {\n for (const columnId of Object.keys(newState)) {\n if (newState[columnId] !== prev[columnId]) {\n onColumnResize(columnId, newState[columnId]);\n }\n }\n for (const columnId of Object.keys(prev)) {\n if (!(columnId in newState)) {\n onColumnResize(columnId, null);\n }\n }\n }\n\n return newState;\n });\n },\n [onColumnResize],\n );\n\n return { columnSizing, onColumnSizingChange };\n};\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,WAAW,EAAEC,QAAQ,QAAQ,OAAO;AAW7C,OAAO,MAAMC,eAAe,GAAGA,CAAC;EAC9BC;AACoB,CAAC,KAA6B;EAClD,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAGJ,QAAQ,CAAoB,CAAC,CAAC,CAAC;EAEvE,MAAMK,oBAAmD,GAAGN,WAAW,CACpEO,OAAO,IAAK;IACXF,eAAe,CAAEG,IAAI,IAAK;MACxB,MAAMC,QAAQ,GAAG,OAAOF,OAAO,KAAK,UAAU,GAC1CA,OAAO,CAACC,IAAI,CAAC,GACbD,OAAO;MAEX,IAAIJ,cAAc,EAAE;QAClB,KAAK,MAAMO,QAAQ,IAAIC,MAAM,CAACC,IAAI,CAACH,QAAQ,CAAC,EAAE;UAC5C,IAAIA,QAAQ,CAACC,QAAQ,CAAC,KAAKF,IAAI,CAACE,QAAQ,CAAC,EAAE;YACzCP,cAAc,CAACO,QAAQ,EAAED,QAAQ,CAACC,QAAQ,CAAC,CAAC;UAC9C;QACF;QACA,KAAK,MAAMA,QAAQ,IAAIC,MAAM,CAACC,IAAI,CAACJ,IAAI,CAAC,EAAE;UACxC,IAAI,EAAEE,QAAQ,IAAID,QAAQ,CAAC,EAAE;YAC3BN,cAAc,CAACO,QAAQ,EAAE,IAAI,CAAC;UAChC;QACF;MACF;MAEA,OAAOD,QAAQ;IACjB,CAAC,CAAC;EACJ,CAAC,EACD,CAACN,cAAc,CACjB,CAAC;EAED,OAAO;IAAEC,YAAY;IAAEE;EAAqB,CAAC;AAC/C,CAAC","ignoreList":[]}
|
|
@@ -14,28 +14,60 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import {
|
|
17
|
+
import { useCallback, useEffect, useState } from "react";
|
|
18
18
|
export const useColumnVisibility = ({
|
|
19
|
-
|
|
19
|
+
allColumns,
|
|
20
|
+
onColumnVisibilityChanged
|
|
20
21
|
}) => {
|
|
21
|
-
const columnVisibility =
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
22
|
+
const [columnVisibility, setColumnVisibility] = useState(() => getColumnVisibilityState(allColumns));
|
|
23
|
+
const [columnOrder, setColumnOrder] = useState(() => getColumnOrder(allColumns));
|
|
24
|
+
|
|
25
|
+
// TODO: Explore other ways to respond to props changes for controlled mode
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
setColumnVisibility(getColumnVisibilityState(allColumns));
|
|
28
|
+
}, [allColumns]);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
setColumnOrder(getColumnOrder(allColumns));
|
|
31
|
+
}, [allColumns]);
|
|
32
|
+
const onColumnVisibilityChange = useCallback(updaterOrValue => {
|
|
33
|
+
setColumnVisibility(prev => {
|
|
34
|
+
const newState = typeof updaterOrValue === "function" ? updaterOrValue(prev) : updaterOrValue;
|
|
35
|
+
if (onColumnVisibilityChanged) {
|
|
36
|
+
const changes = Object.entries(newState).map(([columnId, isVisible]) => ({
|
|
37
|
+
columnId,
|
|
38
|
+
isVisible
|
|
39
|
+
}));
|
|
40
|
+
onColumnVisibilityChanged(changes);
|
|
41
|
+
}
|
|
42
|
+
return newState;
|
|
43
|
+
});
|
|
44
|
+
}, [onColumnVisibilityChanged]);
|
|
45
|
+
const onColumnOrderChange = useCallback(updaterOrValue => {
|
|
46
|
+
setColumnOrder(prev => {
|
|
47
|
+
const newState = typeof updaterOrValue === "function" ? updaterOrValue(prev) : updaterOrValue;
|
|
48
|
+
return newState;
|
|
49
|
+
});
|
|
50
|
+
}, []);
|
|
51
|
+
return {
|
|
52
|
+
columnVisibility,
|
|
53
|
+
onColumnVisibilityChange,
|
|
54
|
+
columnOrder,
|
|
55
|
+
onColumnOrderChange
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
const getColumnVisibilityState = allColumns => {
|
|
59
|
+
return allColumns.reduce((acc, col) => {
|
|
60
|
+
const colId = col.id ?? col.accessorKey;
|
|
61
|
+
if (colId) {
|
|
62
|
+
return {
|
|
63
|
+
...acc,
|
|
64
|
+
[colId]: col.meta?.isVisible !== false
|
|
65
|
+
};
|
|
37
66
|
}
|
|
38
|
-
|
|
39
|
-
|
|
67
|
+
return acc;
|
|
68
|
+
}, {});
|
|
69
|
+
};
|
|
70
|
+
const getColumnOrder = allColumns => {
|
|
71
|
+
return allColumns.map(col => col.id ?? col.accessorKey).filter(id => id != null);
|
|
40
72
|
};
|
|
41
73
|
//# sourceMappingURL=useColumnVisibility.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useColumnVisibility.js","names":["
|
|
1
|
+
{"version":3,"file":"useColumnVisibility.js","names":["useCallback","useEffect","useState","useColumnVisibility","allColumns","onColumnVisibilityChanged","columnVisibility","setColumnVisibility","getColumnVisibilityState","columnOrder","setColumnOrder","getColumnOrder","onColumnVisibilityChange","updaterOrValue","prev","newState","changes","Object","entries","map","columnId","isVisible","onColumnOrderChange","reduce","acc","col","colId","id","accessorKey","meta","filter"],"sources":["useColumnVisibility.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectOrInterfaceDefinition,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport type {\n ColumnDef,\n ColumnOrderState,\n OnChangeFn,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport { useCallback, useEffect, useState } from \"react\";\n\ninterface UseColumnVisibilityProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n TData = unknown,\n> {\n allColumns: ColumnDef<TData>[];\n onColumnVisibilityChanged?: (\n newStates: Array<{\n columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns;\n isVisible: boolean;\n }>,\n ) => void;\n}\n\ninterface UseColumnVisibilityResult {\n columnVisibility: VisibilityState;\n onColumnVisibilityChange: OnChangeFn<VisibilityState>;\n columnOrder: ColumnOrderState;\n onColumnOrderChange: OnChangeFn<ColumnOrderState>;\n}\n\nexport const useColumnVisibility = <\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = {},\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n TData = unknown,\n>(\n {\n allColumns,\n onColumnVisibilityChanged,\n }: UseColumnVisibilityProps<Q, RDPs, FunctionColumns, TData>,\n): UseColumnVisibilityResult => {\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>(\n () => getColumnVisibilityState<TData>(allColumns),\n );\n\n const [columnOrder, setColumnOrder] = useState<ColumnOrderState>(\n () => getColumnOrder(allColumns),\n );\n\n // TODO: Explore other ways to respond to props changes for controlled mode\n useEffect(() => {\n setColumnVisibility(getColumnVisibilityState<TData>(allColumns));\n }, [allColumns]);\n\n useEffect(() => {\n setColumnOrder(getColumnOrder(allColumns));\n }, [allColumns]);\n\n const onColumnVisibilityChange: OnChangeFn<VisibilityState> = useCallback(\n (updaterOrValue) => {\n setColumnVisibility((prev) => {\n const newState = typeof updaterOrValue === \"function\"\n ? updaterOrValue(prev)\n : updaterOrValue;\n\n if (onColumnVisibilityChanged) {\n const changes = Object.entries(newState).map(\n ([columnId, isVisible]) => ({\n columnId,\n isVisible,\n }),\n );\n onColumnVisibilityChanged(changes);\n }\n\n return newState;\n });\n },\n [onColumnVisibilityChanged],\n );\n\n const onColumnOrderChange: OnChangeFn<ColumnOrderState> = useCallback(\n (updaterOrValue) => {\n setColumnOrder((prev) => {\n const newState = typeof updaterOrValue === \"function\"\n ? updaterOrValue(prev)\n : updaterOrValue;\n return newState;\n });\n },\n [],\n );\n\n return {\n columnVisibility,\n onColumnVisibilityChange,\n columnOrder,\n onColumnOrderChange,\n };\n};\n\nconst getColumnVisibilityState = <TData>(\n allColumns: ColumnDef<TData>[],\n): VisibilityState => {\n return allColumns.reduce(\n (acc, col) => {\n const colId = col.id ?? (col as { accessorKey?: string }).accessorKey;\n if (colId) {\n return {\n ...acc,\n [colId]: col.meta?.isVisible !== false,\n };\n }\n return acc;\n },\n {},\n );\n};\n\nconst getColumnOrder = <TData>(\n allColumns: ColumnDef<TData>[],\n): ColumnOrderState => {\n return allColumns\n .map(col => col.id ?? (col as { accessorKey?: string }).accessorKey)\n .filter((id): id is string => id != null);\n};\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAcA,SAASA,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AA2BxD,OAAO,MAAMC,mBAAmB,GAAGA,CASjC;EACEC,UAAU;EACVC;AACyD,CAAC,KAC9B;EAC9B,MAAM,CAACC,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGL,QAAQ,CACtD,MAAMM,wBAAwB,CAAQJ,UAAU,CAClD,CAAC;EAED,MAAM,CAACK,WAAW,EAAEC,cAAc,CAAC,GAAGR,QAAQ,CAC5C,MAAMS,cAAc,CAACP,UAAU,CACjC,CAAC;;EAED;EACAH,SAAS,CAAC,MAAM;IACdM,mBAAmB,CAACC,wBAAwB,CAAQJ,UAAU,CAAC,CAAC;EAClE,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;EAEhBH,SAAS,CAAC,MAAM;IACdS,cAAc,CAACC,cAAc,CAACP,UAAU,CAAC,CAAC;EAC5C,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;EAEhB,MAAMQ,wBAAqD,GAAGZ,WAAW,CACtEa,cAAc,IAAK;IAClBN,mBAAmB,CAAEO,IAAI,IAAK;MAC5B,MAAMC,QAAQ,GAAG,OAAOF,cAAc,KAAK,UAAU,GACjDA,cAAc,CAACC,IAAI,CAAC,GACpBD,cAAc;MAElB,IAAIR,yBAAyB,EAAE;QAC7B,MAAMW,OAAO,GAAGC,MAAM,CAACC,OAAO,CAACH,QAAQ,CAAC,CAACI,GAAG,CAC1C,CAAC,CAACC,QAAQ,EAAEC,SAAS,CAAC,MAAM;UAC1BD,QAAQ;UACRC;QACF,CAAC,CACH,CAAC;QACDhB,yBAAyB,CAACW,OAAO,CAAC;MACpC;MAEA,OAAOD,QAAQ;IACjB,CAAC,CAAC;EACJ,CAAC,EACD,CAACV,yBAAyB,CAC5B,CAAC;EAED,MAAMiB,mBAAiD,GAAGtB,WAAW,CAClEa,cAAc,IAAK;IAClBH,cAAc,CAAEI,IAAI,IAAK;MACvB,MAAMC,QAAQ,GAAG,OAAOF,cAAc,KAAK,UAAU,GACjDA,cAAc,CAACC,IAAI,CAAC,GACpBD,cAAc;MAClB,OAAOE,QAAQ;IACjB,CAAC,CAAC;EACJ,CAAC,EACD,EACF,CAAC;EAED,OAAO;IACLT,gBAAgB;IAChBM,wBAAwB;IACxBH,WAAW;IACXa;EACF,CAAC;AACH,CAAC;AAED,MAAMd,wBAAwB,GAC5BJ,UAA8B,IACV;EACpB,OAAOA,UAAU,CAACmB,MAAM,CACtB,CAACC,GAAG,EAAEC,GAAG,KAAK;IACZ,MAAMC,KAAK,GAAGD,GAAG,CAACE,EAAE,IAAKF,GAAG,CAA8BG,WAAW;IACrE,IAAIF,KAAK,EAAE;MACT,OAAO;QACL,GAAGF,GAAG;QACN,CAACE,KAAK,GAAGD,GAAG,CAACI,IAAI,EAAER,SAAS,KAAK;MACnC,CAAC;IACH;IACA,OAAOG,GAAG;EACZ,CAAC,EACD,CAAC,CACH,CAAC;AACH,CAAC;AAED,MAAMb,cAAc,GAClBP,UAA8B,IACT;EACrB,OAAOA,UAAU,CACde,GAAG,CAACM,GAAG,IAAIA,GAAG,CAACE,EAAE,IAAKF,GAAG,CAA8BG,WAAW,CAAC,CACnEE,MAAM,CAAEH,EAAE,IAAmBA,EAAE,IAAI,IAAI,CAAC;AAC7C,CAAC","ignoreList":[]}
|