@osdk/react-components 0.2.0-beta.1 → 0.2.0-beta.3
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 +35 -0
- package/README.md +21 -5
- 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__/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 +192 -0
- package/build/browser/filter-list/__tests__/testUtils.js.map +1 -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/useDebouncedValue.js +52 -0
- package/build/browser/filter-list/hooks/useDebouncedValue.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/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 +21 -0
- package/build/browser/filter-list/types/index.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/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 +43 -13
- 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/SortableItemsList.js +35 -0
- package/build/browser/object-table/SortableItemsList.js.map +1 -0
- package/build/browser/object-table/Table.js +54 -934
- package/build/browser/object-table/Table.js.map +1 -1
- package/build/browser/object-table/Table.module.css +29 -0
- package/build/browser/object-table/Table.module.css.js +6 -0
- package/build/browser/object-table/TableBody.js +36 -260
- package/build/browser/object-table/TableBody.module.css +20 -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 +73 -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 +106 -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 +60 -0
- package/build/browser/object-table/TableRow.module.css.js +6 -0
- 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__/useRowSelection.test.js +3 -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 +7 -2
- 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/useRowSelection.js +8 -7
- 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/types.js +2 -0
- package/build/browser/object-table/utils/types.js.map +1 -0
- package/build/browser/public/experimental.js +1 -0
- package/build/browser/public/experimental.js.map +1 -1
- package/build/browser/styles.css +1875 -0
- package/build/cjs/public/experimental.cjs +1036 -197
- package/build/cjs/public/experimental.cjs.map +1 -1
- package/build/cjs/public/experimental.css +659 -29
- package/build/cjs/public/experimental.css.map +1 -1
- package/build/cjs/public/experimental.d.cts +435 -44
- 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__/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 +192 -0
- package/build/esm/filter-list/__tests__/testUtils.js.map +1 -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/useDebouncedValue.js +52 -0
- package/build/esm/filter-list/hooks/useDebouncedValue.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/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 +21 -0
- package/build/esm/filter-list/types/index.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/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 +43 -13
- 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/SortableItemsList.js +35 -0
- package/build/esm/object-table/SortableItemsList.js.map +1 -0
- package/build/esm/object-table/Table.js +9 -7
- package/build/esm/object-table/Table.js.map +1 -1
- package/build/esm/object-table/Table.module.css +9 -2
- package/build/esm/object-table/TableCell.module.css +11 -0
- 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 +7 -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 +54 -23
- 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__/useRowSelection.test.js +3 -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 +7 -2
- 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/useRowSelection.js +8 -7
- 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/types.js +2 -0
- package/build/esm/object-table/utils/types.js.map +1 -0
- package/build/esm/public/experimental.js +1 -0
- package/build/esm/public/experimental.js.map +1 -1
- 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 +63 -12
- 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__/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 +59 -0
- package/build/types/filter-list/__tests__/testUtils.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/useDebouncedValue.d.ts +11 -0
- package/build/types/filter-list/hooks/useDebouncedValue.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 +61 -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/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 +70 -0
- package/build/types/filter-list/types/LinkedFilterTypes.d.ts.map +1 -0
- package/build/types/filter-list/types/index.d.ts +4 -0
- package/build/types/filter-list/types/index.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/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 +41 -6
- 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 +12 -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/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/useRowSelection.d.ts +5 -4
- package/build/types/object-table/hooks/useRowSelection.d.ts.map +1 -1
- package/build/types/object-table/utils/types.d.ts +5 -0
- package/build/types/object-table/utils/types.d.ts.map +1 -0
- package/build/types/public/experimental.d.ts +2 -0
- package/build/types/public/experimental.d.ts.map +1 -1
- package/package.json +16 -8
|
@@ -0,0 +1,178 @@
|
|
|
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 { Button } from "@base-ui/react/button";
|
|
18
|
+
import { Menu } from "@base-ui/react/menu";
|
|
19
|
+
import { Add, CaretDown, Cog, SortAlphabetical, SortAlphabeticalDesc } from "@blueprintjs/icons";
|
|
20
|
+
import { arrayMove } from "@dnd-kit/sortable";
|
|
21
|
+
import classNames from "classnames";
|
|
22
|
+
import React, { useCallback, useEffect, useMemo, useState } from "react";
|
|
23
|
+
import { ActionButton } from "../base-components/action-button/ActionButton.js";
|
|
24
|
+
import { Dialog } from "../base-components/dialog/Dialog.js";
|
|
25
|
+
import { SearchBar } from "../base-components/search-bar/SearchBar.js";
|
|
26
|
+
import styles from "./MultiColumnSortDialog.module.css";
|
|
27
|
+
import { SortableItemsList } from "./SortableItemsList.js";
|
|
28
|
+
export function MultiColumnSortDialog({
|
|
29
|
+
isOpen,
|
|
30
|
+
onClose,
|
|
31
|
+
onApply,
|
|
32
|
+
currentSorting,
|
|
33
|
+
columnOptions
|
|
34
|
+
}) {
|
|
35
|
+
const [selectedSortColumns, setSelectedSortColumns] = useState([]);
|
|
36
|
+
const [menuSearchQuery, setMenuSearchQuery] = useState("");
|
|
37
|
+
|
|
38
|
+
// Initialize selected sort columns from current sorting
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (isOpen) {
|
|
41
|
+
const selectedColumns = [];
|
|
42
|
+
for (const sort of currentSorting) {
|
|
43
|
+
const column = columnOptions.find(col => col.id === sort.id);
|
|
44
|
+
if (column) {
|
|
45
|
+
selectedColumns.push({
|
|
46
|
+
...column,
|
|
47
|
+
direction: sort.desc ? "desc" : "asc"
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
setSelectedSortColumns(selectedColumns);
|
|
52
|
+
}
|
|
53
|
+
}, [isOpen, currentSorting, columnOptions]);
|
|
54
|
+
const handleAddColumn = useCallback(column => {
|
|
55
|
+
setSelectedSortColumns(prev => [...prev, {
|
|
56
|
+
...column,
|
|
57
|
+
direction: "asc"
|
|
58
|
+
}]);
|
|
59
|
+
}, []);
|
|
60
|
+
const handleRemoveSortColumn = useCallback(id => {
|
|
61
|
+
setSelectedSortColumns(prev => prev.filter(item => item.id !== id));
|
|
62
|
+
}, []);
|
|
63
|
+
const handleReorderSortColumns = useCallback((fromIndex, toIndex) => {
|
|
64
|
+
setSelectedSortColumns(items => arrayMove(items, fromIndex, toIndex));
|
|
65
|
+
}, []);
|
|
66
|
+
const handleToggleSortDirection = useCallback(id => {
|
|
67
|
+
setSelectedSortColumns(prev => prev.map(item => item.id === id ? {
|
|
68
|
+
...item,
|
|
69
|
+
direction: item.direction === "asc" ? "desc" : "asc"
|
|
70
|
+
} : item));
|
|
71
|
+
}, []);
|
|
72
|
+
const handleApply = useCallback(() => {
|
|
73
|
+
const sortingState = selectedSortColumns.map(col => ({
|
|
74
|
+
id: col.id,
|
|
75
|
+
desc: col.direction === "desc"
|
|
76
|
+
}));
|
|
77
|
+
onApply(sortingState);
|
|
78
|
+
onClose();
|
|
79
|
+
}, [selectedSortColumns, onApply, onClose]);
|
|
80
|
+
const availableColumns = useMemo(() => columnOptions.filter(col => col.canSort && !selectedSortColumns.some(selected => selected.id === col.id)), [columnOptions, selectedSortColumns]);
|
|
81
|
+
const filteredAvailableColumns = useMemo(() => {
|
|
82
|
+
const query = menuSearchQuery.toLowerCase().trim();
|
|
83
|
+
if (!query) {
|
|
84
|
+
return availableColumns;
|
|
85
|
+
}
|
|
86
|
+
return availableColumns.filter(col => col.name.toLowerCase().includes(query));
|
|
87
|
+
}, [availableColumns, menuSearchQuery]);
|
|
88
|
+
const handleMenuSearchChange = useCallback(event => {
|
|
89
|
+
setMenuSearchQuery(event.target.value);
|
|
90
|
+
}, []);
|
|
91
|
+
const handleMenuOpenChange = useCallback(open => {
|
|
92
|
+
if (open) {
|
|
93
|
+
setMenuSearchQuery("");
|
|
94
|
+
}
|
|
95
|
+
}, []);
|
|
96
|
+
const sortableItems = useMemo(() => {
|
|
97
|
+
return selectedSortColumns.map(item => ({
|
|
98
|
+
id: item.id,
|
|
99
|
+
label: item.name,
|
|
100
|
+
content: /*#__PURE__*/React.createElement("div", {
|
|
101
|
+
className: styles.sortColumnItem
|
|
102
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
103
|
+
className: classNames(styles.sortColumnName, styles.truncate)
|
|
104
|
+
}, item.name), /*#__PURE__*/React.createElement(Button, {
|
|
105
|
+
className: styles.sortDirectionButton,
|
|
106
|
+
onClick: () => handleToggleSortDirection(item.id),
|
|
107
|
+
"aria-label": `Toggle sort direction for ${item.name}`
|
|
108
|
+
}, item.direction === "asc" ? /*#__PURE__*/React.createElement(SortAlphabetical, {
|
|
109
|
+
className: styles.sortIcon
|
|
110
|
+
}) : /*#__PURE__*/React.createElement(SortAlphabeticalDesc, {
|
|
111
|
+
className: styles.sortIcon
|
|
112
|
+
})))
|
|
113
|
+
}));
|
|
114
|
+
}, [selectedSortColumns, handleToggleSortDirection]);
|
|
115
|
+
const footer = useMemo(() => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ActionButton, {
|
|
116
|
+
onClick: onClose
|
|
117
|
+
}, "Cancel"), /*#__PURE__*/React.createElement(ActionButton, {
|
|
118
|
+
variant: "primary",
|
|
119
|
+
onClick: handleApply
|
|
120
|
+
}, "Apply")), [handleApply, onClose]);
|
|
121
|
+
return /*#__PURE__*/React.createElement(Dialog, {
|
|
122
|
+
isOpen: isOpen,
|
|
123
|
+
onOpenChange: onClose,
|
|
124
|
+
title: DialogTitle,
|
|
125
|
+
footer: footer
|
|
126
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
127
|
+
className: styles.sortColumnsList
|
|
128
|
+
}, /*#__PURE__*/React.createElement(SortableItemsList, {
|
|
129
|
+
items: sortableItems,
|
|
130
|
+
onReorder: handleReorderSortColumns,
|
|
131
|
+
onRemove: handleRemoveSortColumn,
|
|
132
|
+
className: styles.sortableList
|
|
133
|
+
}), /*#__PURE__*/React.createElement(Menu.Root, {
|
|
134
|
+
onOpenChange: handleMenuOpenChange
|
|
135
|
+
}, /*#__PURE__*/React.createElement(Menu.Trigger, {
|
|
136
|
+
className: styles.addColumnButton,
|
|
137
|
+
disabled: availableColumns.length === 0,
|
|
138
|
+
"aria-label": "Add column to sort"
|
|
139
|
+
}, /*#__PURE__*/React.createElement(Add, {
|
|
140
|
+
className: styles.addIcon
|
|
141
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
142
|
+
className: styles.addColumnText
|
|
143
|
+
}, "Add Column to Sort"), /*#__PURE__*/React.createElement(CaretDown, {
|
|
144
|
+
color: "currentColor"
|
|
145
|
+
})), /*#__PURE__*/React.createElement(Menu.Portal, null, /*#__PURE__*/React.createElement(Menu.Positioner, {
|
|
146
|
+
className: styles.menuPositioner,
|
|
147
|
+
sideOffset: 4
|
|
148
|
+
}, /*#__PURE__*/React.createElement(Menu.Popup, {
|
|
149
|
+
className: styles.dropdownMenu
|
|
150
|
+
}, /*#__PURE__*/React.createElement(SearchBar, {
|
|
151
|
+
value: menuSearchQuery,
|
|
152
|
+
onChange: handleMenuSearchChange,
|
|
153
|
+
placeholder: "Search columns",
|
|
154
|
+
"aria-label": "Search columns to sort",
|
|
155
|
+
className: styles.menuSearchContainer,
|
|
156
|
+
onKeyDown: e => e.stopPropagation()
|
|
157
|
+
}), filteredAvailableColumns.map(column => /*#__PURE__*/React.createElement(AvailableColumnMenuItem, {
|
|
158
|
+
key: column.id,
|
|
159
|
+
column: column,
|
|
160
|
+
onAddColumn: handleAddColumn
|
|
161
|
+
})), filteredAvailableColumns.length === 0 && /*#__PURE__*/React.createElement("div", {
|
|
162
|
+
className: styles.menuEmptyState
|
|
163
|
+
}, "No matching columns")))))));
|
|
164
|
+
}
|
|
165
|
+
const DialogTitle = /*#__PURE__*/React.createElement("div", {
|
|
166
|
+
className: styles.title
|
|
167
|
+
}, /*#__PURE__*/React.createElement(Cog, null), "Sort on Multiple Columns");
|
|
168
|
+
function AvailableColumnMenuItem({
|
|
169
|
+
column,
|
|
170
|
+
onAddColumn
|
|
171
|
+
}) {
|
|
172
|
+
const onClick = useCallback(() => onAddColumn(column), [onAddColumn, column]);
|
|
173
|
+
return /*#__PURE__*/React.createElement(Menu.Item, {
|
|
174
|
+
className: classNames(styles.dropdownItem, styles.truncate),
|
|
175
|
+
onClick: onClick
|
|
176
|
+
}, column.name);
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=MultiColumnSortDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiColumnSortDialog.js","names":["Button","Menu","Add","CaretDown","Cog","SortAlphabetical","SortAlphabeticalDesc","arrayMove","classNames","React","useCallback","useEffect","useMemo","useState","ActionButton","Dialog","SearchBar","styles","SortableItemsList","MultiColumnSortDialog","isOpen","onClose","onApply","currentSorting","columnOptions","selectedSortColumns","setSelectedSortColumns","menuSearchQuery","setMenuSearchQuery","selectedColumns","sort","column","find","col","id","push","direction","desc","handleAddColumn","prev","handleRemoveSortColumn","filter","item","handleReorderSortColumns","fromIndex","toIndex","items","handleToggleSortDirection","map","handleApply","sortingState","availableColumns","canSort","some","selected","filteredAvailableColumns","query","toLowerCase","trim","name","includes","handleMenuSearchChange","event","target","value","handleMenuOpenChange","open","sortableItems","label","content","createElement","className","sortColumnItem","sortColumnName","truncate","sortDirectionButton","onClick","sortIcon","footer","Fragment","variant","onOpenChange","title","DialogTitle","sortColumnsList","onReorder","onRemove","sortableList","Root","Trigger","addColumnButton","disabled","length","addIcon","addColumnText","color","Portal","Positioner","menuPositioner","sideOffset","Popup","dropdownMenu","onChange","placeholder","menuSearchContainer","onKeyDown","e","stopPropagation","AvailableColumnMenuItem","key","onAddColumn","menuEmptyState","Item","dropdownItem"],"sources":["MultiColumnSortDialog.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 { Button } from \"@base-ui/react/button\";\nimport { Menu } from \"@base-ui/react/menu\";\nimport {\n Add,\n CaretDown,\n Cog,\n SortAlphabetical,\n SortAlphabeticalDesc,\n} from \"@blueprintjs/icons\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport type { SortingState } from \"@tanstack/react-table\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { Dialog } from \"../base-components/dialog/Dialog.js\";\nimport { SearchBar } from \"../base-components/search-bar/SearchBar.js\";\nimport styles from \"./MultiColumnSortDialog.module.css\";\nimport { type SortableItem, SortableItemsList } from \"./SortableItemsList.js\";\nimport type { ColumnOption } from \"./utils/types.js\";\n\nexport interface SortColumnItem extends ColumnOption {\n direction: \"asc\" | \"desc\";\n}\n\ninterface MultiColumnSortDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onApply: (sortColumns: SortingState) => void;\n currentSorting: SortingState;\n columnOptions: ColumnOption[];\n}\n\nexport function MultiColumnSortDialog({\n isOpen,\n onClose,\n onApply,\n currentSorting,\n columnOptions,\n}: MultiColumnSortDialogProps): React.ReactElement {\n const [selectedSortColumns, setSelectedSortColumns] = useState<\n SortColumnItem[]\n >([]);\n const [menuSearchQuery, setMenuSearchQuery] = useState(\"\");\n\n // Initialize selected sort columns from current sorting\n useEffect(() => {\n if (isOpen) {\n const selectedColumns: SortColumnItem[] = [];\n for (const sort of currentSorting) {\n const column = columnOptions.find((col) => col.id === sort.id);\n if (column) {\n selectedColumns.push({\n ...column,\n direction: sort.desc ? \"desc\" : \"asc\",\n });\n }\n }\n setSelectedSortColumns(selectedColumns);\n }\n }, [isOpen, currentSorting, columnOptions]);\n\n const handleAddColumn = useCallback((column: ColumnOption) => {\n setSelectedSortColumns((prev) => [\n ...prev,\n { ...column, direction: \"asc\" },\n ]);\n }, []);\n\n const handleRemoveSortColumn = useCallback((id: string) => {\n setSelectedSortColumns((prev) => prev.filter((item) => item.id !== id));\n }, []);\n\n const handleReorderSortColumns = useCallback(\n (fromIndex: number, toIndex: number) => {\n setSelectedSortColumns((items) => arrayMove(items, fromIndex, toIndex));\n },\n [],\n );\n\n const handleToggleSortDirection = useCallback((id: string) => {\n setSelectedSortColumns((prev) =>\n prev.map((item) =>\n item.id === id\n ? { ...item, direction: item.direction === \"asc\" ? \"desc\" : \"asc\" }\n : item\n )\n );\n }, []);\n\n const handleApply = useCallback(() => {\n const sortingState: SortingState = selectedSortColumns.map((col) => ({\n id: col.id,\n desc: col.direction === \"desc\",\n }));\n onApply(sortingState);\n onClose();\n }, [selectedSortColumns, onApply, onClose]);\n\n const availableColumns = useMemo(\n () =>\n columnOptions.filter(\n (col) =>\n col.canSort\n && !selectedSortColumns.some((selected) => selected.id === col.id),\n ),\n [columnOptions, selectedSortColumns],\n );\n\n const filteredAvailableColumns = useMemo(() => {\n const query = menuSearchQuery.toLowerCase().trim();\n if (!query) {\n return availableColumns;\n }\n return availableColumns.filter((col) =>\n col.name.toLowerCase().includes(query)\n );\n }, [availableColumns, menuSearchQuery]);\n\n const handleMenuSearchChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setMenuSearchQuery(event.target.value);\n },\n [],\n );\n\n const handleMenuOpenChange = useCallback((open: boolean) => {\n if (open) {\n setMenuSearchQuery(\"\");\n }\n }, []);\n\n const sortableItems: SortableItem[] = useMemo(() => {\n return selectedSortColumns.map((item) => ({\n id: item.id,\n label: item.name,\n content: (\n <div className={styles.sortColumnItem}>\n <span className={classNames(styles.sortColumnName, styles.truncate)}>\n {item.name}\n </span>\n <Button\n className={styles.sortDirectionButton}\n onClick={() => handleToggleSortDirection(item.id)}\n aria-label={`Toggle sort direction for ${item.name}`}\n >\n {item.direction === \"asc\"\n ? <SortAlphabetical className={styles.sortIcon} />\n : <SortAlphabeticalDesc className={styles.sortIcon} />}\n </Button>\n </div>\n ),\n }));\n }, [selectedSortColumns, handleToggleSortDirection]);\n\n const footer = useMemo(() => (\n <>\n <ActionButton onClick={onClose}>Cancel</ActionButton>\n <ActionButton variant=\"primary\" onClick={handleApply}>\n Apply\n </ActionButton>\n </>\n ), [handleApply, onClose]);\n\n return (\n <Dialog\n isOpen={isOpen}\n onOpenChange={onClose}\n title={DialogTitle}\n footer={footer}\n >\n <div className={styles.sortColumnsList}>\n <SortableItemsList\n items={sortableItems}\n onReorder={handleReorderSortColumns}\n onRemove={handleRemoveSortColumn}\n className={styles.sortableList}\n />\n <Menu.Root onOpenChange={handleMenuOpenChange}>\n <Menu.Trigger\n className={styles.addColumnButton}\n disabled={availableColumns.length === 0}\n aria-label=\"Add column to sort\"\n >\n <Add className={styles.addIcon} />\n <span className={styles.addColumnText}>\n Add Column to Sort\n </span>\n <CaretDown color={\"currentColor\"} />\n </Menu.Trigger>\n <Menu.Portal>\n <Menu.Positioner className={styles.menuPositioner} sideOffset={4}>\n <Menu.Popup className={styles.dropdownMenu}>\n <SearchBar\n value={menuSearchQuery}\n onChange={handleMenuSearchChange}\n placeholder=\"Search columns\"\n aria-label=\"Search columns to sort\"\n className={styles.menuSearchContainer}\n onKeyDown={(e) => e.stopPropagation()}\n />\n {filteredAvailableColumns.map((column) => (\n <AvailableColumnMenuItem\n key={column.id}\n column={column}\n onAddColumn={handleAddColumn}\n />\n ))}\n {filteredAvailableColumns.length === 0 && (\n <div className={styles.menuEmptyState}>\n No matching columns\n </div>\n )}\n </Menu.Popup>\n </Menu.Positioner>\n </Menu.Portal>\n </Menu.Root>\n </div>\n </Dialog>\n );\n}\n\nconst DialogTitle = (\n <div className={styles.title}>\n <Cog />Sort on Multiple Columns\n </div>\n);\nfunction AvailableColumnMenuItem(\n { column, onAddColumn }: {\n column: ColumnOption;\n onAddColumn: (column: ColumnOption) => void;\n },\n) {\n const onClick = useCallback(() => onAddColumn(column), [onAddColumn, column]);\n\n return (\n <Menu.Item\n className={classNames(styles.dropdownItem, styles.truncate)}\n onClick={onClick}\n >\n {column.name}\n </Menu.Item>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,195 @@
|
|
|
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
|
+
.title {
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
gap: var(--osdk-surface-spacing);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.sortColumnsList {
|
|
24
|
+
display: flex;
|
|
25
|
+
flex-direction: column;
|
|
26
|
+
gap: var(--osdk-surface-spacing);
|
|
27
|
+
flex: 1;
|
|
28
|
+
justify-content: space-between;
|
|
29
|
+
overflow-x: hidden;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.sortableList {
|
|
33
|
+
flex: 1;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.selectedColumnsContainer {
|
|
37
|
+
margin-bottom: calc(var(--osdk-surface-spacing) * 2);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.sortColumnItem {
|
|
41
|
+
display: flex;
|
|
42
|
+
align-items: center;
|
|
43
|
+
justify-content: space-between;
|
|
44
|
+
min-width: 0;
|
|
45
|
+
width: 100%;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.sortColumnName {
|
|
49
|
+
min-width: 0;
|
|
50
|
+
flex-shrink: 1;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.sortDirectionButton {
|
|
54
|
+
flex-shrink: 0;
|
|
55
|
+
background: none;
|
|
56
|
+
border: none;
|
|
57
|
+
padding: var(--osdk-surface-spacing);
|
|
58
|
+
cursor: pointer;
|
|
59
|
+
display: flex;
|
|
60
|
+
align-items: center;
|
|
61
|
+
justify-content: center;
|
|
62
|
+
border-radius: var(--osdk-surface-border-radius);
|
|
63
|
+
|
|
64
|
+
&:hover {
|
|
65
|
+
background-color: var(--osdk-button-secondary-bg-hover);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
&:focus {
|
|
69
|
+
outline: none;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
&:focus-visible {
|
|
73
|
+
outline: var(--osdk-focus-outline);
|
|
74
|
+
outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.sortIcon {
|
|
79
|
+
color: var(--osdk-typography-color-muted);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.addColumnButton {
|
|
83
|
+
display: flex;
|
|
84
|
+
align-items: center;
|
|
85
|
+
gap: calc(var(--osdk-surface-spacing) * 2);
|
|
86
|
+
width: 100%;
|
|
87
|
+
padding: calc(var(--osdk-surface-spacing) * 2)
|
|
88
|
+
calc(var(--osdk-surface-spacing) * 3);
|
|
89
|
+
background-color: var(--osdk-button-secondary-bg);
|
|
90
|
+
border: var(--osdk-surface-border);
|
|
91
|
+
border-radius: var(--osdk-surface-border-radius);
|
|
92
|
+
cursor: pointer;
|
|
93
|
+
color: var(--osdk-button-secondary-color);
|
|
94
|
+
margin-top: calc(var(--osdk-surface-spacing) * 2);
|
|
95
|
+
|
|
96
|
+
&:hover:not(:disabled) {
|
|
97
|
+
background-color: var(--osdk-button-secondary-bg-hover);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
&:disabled {
|
|
101
|
+
opacity: 0.5;
|
|
102
|
+
cursor: not-allowed;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
&:focus {
|
|
106
|
+
outline: none;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
&:focus-visible {
|
|
110
|
+
outline: var(--osdk-focus-outline);
|
|
111
|
+
outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.addIcon {
|
|
116
|
+
width: var(--osdk-iconography-size-small);
|
|
117
|
+
height: var(--osdk-iconography-size-small);
|
|
118
|
+
color: currentColor;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.addColumnText {
|
|
122
|
+
flex: 1;
|
|
123
|
+
text-align: left;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.menuPositioner {
|
|
127
|
+
z-index: var(--osdk-surface-z-index-2);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.dropdownMenu {
|
|
131
|
+
background-color: var(--osdk-surface-background-color-default-rest);
|
|
132
|
+
border: var(--osdk-surface-border);
|
|
133
|
+
border-radius: var(--osdk-surface-border-radius);
|
|
134
|
+
box-shadow: var(--osdk-surface-shadow-2);
|
|
135
|
+
max-height: calc(var(--osdk-dialog-max-height) * 0.5);
|
|
136
|
+
overflow-y: auto;
|
|
137
|
+
width: var(--anchor-width);
|
|
138
|
+
|
|
139
|
+
&:focus {
|
|
140
|
+
outline: none;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
&:focus-visible {
|
|
144
|
+
outline: var(--osdk-focus-outline);
|
|
145
|
+
outline-offset: var(--osdk-focus-visible-outline-offset);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.menuSearchContainer {
|
|
150
|
+
border: none;
|
|
151
|
+
border-bottom: var(--osdk-surface-border);
|
|
152
|
+
border-radius: 0;
|
|
153
|
+
position: sticky;
|
|
154
|
+
top: 0;
|
|
155
|
+
background-color: var(--osdk-surface-background-color-default-rest);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.menuEmptyState {
|
|
159
|
+
padding: calc(var(--osdk-surface-spacing) * 3);
|
|
160
|
+
text-align: center;
|
|
161
|
+
color: var(--osdk-typography-color-muted);
|
|
162
|
+
font-size: var(--osdk-typography-size-body-medium);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.dropdownItem {
|
|
166
|
+
display: block;
|
|
167
|
+
width: 100%;
|
|
168
|
+
text-align: left;
|
|
169
|
+
padding: calc(var(--osdk-surface-spacing) * 2)
|
|
170
|
+
calc(var(--osdk-surface-spacing) * 3);
|
|
171
|
+
background: none;
|
|
172
|
+
border: none;
|
|
173
|
+
cursor: pointer;
|
|
174
|
+
font-size: var(--osdk-typography-size-body-medium);
|
|
175
|
+
color: var(--osdk-typography-color-default-rest);
|
|
176
|
+
|
|
177
|
+
&:hover {
|
|
178
|
+
background-color: var(--osdk-surface-background-color-default-hover);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
&:focus {
|
|
182
|
+
outline: none;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
&:focus-visible {
|
|
186
|
+
outline: var(--osdk-focus-outline);
|
|
187
|
+
outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.truncate {
|
|
192
|
+
overflow: hidden;
|
|
193
|
+
text-overflow: ellipsis;
|
|
194
|
+
white-space: nowrap;
|
|
195
|
+
}
|
|
@@ -18,11 +18,10 @@
|
|
|
18
18
|
display: flex;
|
|
19
19
|
align-items: center;
|
|
20
20
|
justify-content: center;
|
|
21
|
-
width: 100%;
|
|
22
|
-
height: 100%;
|
|
23
|
-
min-height: 80px;
|
|
24
21
|
}
|
|
25
22
|
|
|
26
23
|
.message {
|
|
24
|
+
padding: calc(var(--osdk-surface-spacing) * 5);
|
|
27
25
|
color: var(--osdk-typography-color-muted);
|
|
26
|
+
font-style: italic;
|
|
28
27
|
}
|
|
@@ -15,9 +15,10 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import { getCoreRowModel, useReactTable } from "@tanstack/react-table";
|
|
18
|
-
import React, { useCallback, useMemo
|
|
18
|
+
import React, { useCallback, useMemo } from "react";
|
|
19
19
|
import { useColumnDefs } from "./hooks/useColumnDefs.js";
|
|
20
20
|
import { useColumnPinning } from "./hooks/useColumnPinning.js";
|
|
21
|
+
import { useColumnResize } from "./hooks/useColumnResize.js";
|
|
21
22
|
import { useColumnVisibility } from "./hooks/useColumnVisibility.js";
|
|
22
23
|
import { useObjectTableData } from "./hooks/useObjectTableData.js";
|
|
23
24
|
import { useRowSelection } from "./hooks/useRowSelection.js";
|
|
@@ -43,13 +44,24 @@ export function ObjectTable({
|
|
|
43
44
|
defaultOrderBy,
|
|
44
45
|
onOrderByChanged,
|
|
45
46
|
onColumnsPinnedChanged,
|
|
47
|
+
onColumnResize,
|
|
46
48
|
onRowSelection,
|
|
47
49
|
renderCellContextMenu,
|
|
48
50
|
selectionMode = "none",
|
|
49
51
|
selectedRows,
|
|
52
|
+
onColumnVisibilityChanged,
|
|
53
|
+
enableOrdering = true,
|
|
54
|
+
enableColumnPinning = true,
|
|
55
|
+
enableColumnResizing = true,
|
|
56
|
+
enableColumnConfig = true,
|
|
50
57
|
...props
|
|
51
58
|
}) {
|
|
52
|
-
const
|
|
59
|
+
const {
|
|
60
|
+
columnSizing,
|
|
61
|
+
onColumnSizingChange
|
|
62
|
+
} = useColumnResize({
|
|
63
|
+
onColumnResize
|
|
64
|
+
});
|
|
53
65
|
const {
|
|
54
66
|
sorting,
|
|
55
67
|
onSortingChange
|
|
@@ -68,15 +80,13 @@ export function ObjectTable({
|
|
|
68
80
|
columns,
|
|
69
81
|
loading: isColumnsLoading
|
|
70
82
|
} = useColumnDefs(objectType, columnDefinitions);
|
|
71
|
-
const columnVisibility = useColumnVisibility({
|
|
72
|
-
columnDefinitions
|
|
73
|
-
});
|
|
74
83
|
const {
|
|
75
84
|
rowSelection,
|
|
76
85
|
isAllSelected,
|
|
77
86
|
hasSelection,
|
|
78
87
|
onToggleAll,
|
|
79
|
-
onToggleRow
|
|
88
|
+
onToggleRow,
|
|
89
|
+
enableRowSelection
|
|
80
90
|
} = useRowSelection({
|
|
81
91
|
selectionMode,
|
|
82
92
|
selectedRows,
|
|
@@ -90,32 +100,45 @@ export function ObjectTable({
|
|
|
90
100
|
onToggleAll,
|
|
91
101
|
onToggleRow
|
|
92
102
|
});
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
103
|
+
const {
|
|
104
|
+
columnVisibility,
|
|
105
|
+
onColumnVisibilityChange,
|
|
106
|
+
columnOrder,
|
|
107
|
+
onColumnOrderChange
|
|
108
|
+
} = useColumnVisibility({
|
|
109
|
+
allColumns: columns,
|
|
110
|
+
onColumnVisibilityChanged
|
|
111
|
+
});
|
|
96
112
|
const {
|
|
97
113
|
columnPinning,
|
|
98
114
|
onColumnPinningChange
|
|
99
115
|
} = useColumnPinning({
|
|
100
116
|
columnDefinitions,
|
|
101
|
-
hasSelectionColumn:
|
|
117
|
+
hasSelectionColumn: enableRowSelection,
|
|
102
118
|
onColumnsPinnedChanged
|
|
103
119
|
});
|
|
120
|
+
const allColumns = useMemo(() => {
|
|
121
|
+
return selectionColumn ? [selectionColumn, ...columns] : columns;
|
|
122
|
+
}, [selectionColumn, columns]);
|
|
104
123
|
const table = useReactTable({
|
|
105
124
|
data: data ?? [],
|
|
106
125
|
columns: allColumns,
|
|
107
126
|
getCoreRowModel: getCoreRowModel(),
|
|
108
127
|
state: {
|
|
109
128
|
columnVisibility,
|
|
129
|
+
columnOrder,
|
|
110
130
|
rowSelection,
|
|
111
131
|
sorting,
|
|
112
132
|
columnSizing,
|
|
113
133
|
columnPinning
|
|
114
134
|
},
|
|
115
135
|
onSortingChange,
|
|
116
|
-
onColumnSizingChange
|
|
136
|
+
onColumnSizingChange,
|
|
117
137
|
onColumnPinningChange,
|
|
118
|
-
|
|
138
|
+
onColumnVisibilityChange,
|
|
139
|
+
onColumnOrderChange,
|
|
140
|
+
enableRowSelection,
|
|
141
|
+
enableSorting: enableOrdering,
|
|
119
142
|
columnResizeMode: "onChange",
|
|
120
143
|
columnResizeDirection: "ltr",
|
|
121
144
|
manualSorting: true,
|
|
@@ -128,6 +151,12 @@ export function ObjectTable({
|
|
|
128
151
|
const onRenderCellContextMenu = useCallback((row, cell) => {
|
|
129
152
|
return renderCellContextMenu?.(row, cell.getValue());
|
|
130
153
|
}, [renderCellContextMenu]);
|
|
154
|
+
const headerMenuFeatureFlags = useMemo(() => ({
|
|
155
|
+
showSortingItems: enableOrdering,
|
|
156
|
+
showPinningItems: enableColumnPinning,
|
|
157
|
+
showResizeItem: enableColumnResizing,
|
|
158
|
+
showConfigItem: enableColumnConfig
|
|
159
|
+
}), [enableOrdering, enableColumnPinning, enableColumnResizing, enableColumnConfig]);
|
|
131
160
|
return /*#__PURE__*/React.createElement(BaseTable, {
|
|
132
161
|
table: table,
|
|
133
162
|
isLoading: isLoading || isColumnsLoading,
|
|
@@ -136,7 +165,8 @@ export function ObjectTable({
|
|
|
136
165
|
rowHeight: props.rowHeight,
|
|
137
166
|
renderCellContextMenu: onRenderCellContextMenu,
|
|
138
167
|
className: props.className,
|
|
139
|
-
error: error
|
|
168
|
+
error: error,
|
|
169
|
+
headerMenuFeatureFlags: headerMenuFeatureFlags
|
|
140
170
|
});
|
|
141
171
|
}
|
|
142
172
|
//# sourceMappingURL=ObjectTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectTable.js","names":["getCoreRowModel","useReactTable","React","useCallback","useMemo","useState","useColumnDefs","useColumnPinning","useColumnVisibility","useObjectTableData","useRowSelection","useSelectionColumn","useTableSorting","BaseTable","getRowId","ObjectTable","objectType","columnDefinitions","filter","orderBy","defaultOrderBy","onOrderByChanged","onColumnsPinnedChanged","onRowSelection","renderCellContextMenu","selectionMode","selectedRows","props","columnSizing","setColumnSizing","sorting","onSortingChange","data","fetchMore","isLoading","error","columns","loading","isColumnsLoading","columnVisibility","rowSelection","isAllSelected","hasSelection","onToggleAll","onToggleRow","selectionColumn","allColumns","columnPinning","onColumnPinningChange","hasSelectionColumn","table","state","onColumnSizingChange","enableRowSelection","columnResizeMode","columnResizeDirection","manualSorting","defaultColumn","minSize","onRenderCellContextMenu","row","cell","getValue","createElement","fetchNextPage","onRowClick","rowHeight","className"],"sources":["ObjectTable.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 {\n ObjectOrInterfaceDefinition,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport type { Cell, ColumnSizingState } from \"@tanstack/react-table\";\nimport { getCoreRowModel, useReactTable } from \"@tanstack/react-table\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport { useColumnDefs } from \"./hooks/useColumnDefs.js\";\nimport { useColumnPinning } from \"./hooks/useColumnPinning.js\";\nimport { useColumnVisibility } from \"./hooks/useColumnVisibility.js\";\nimport { useObjectTableData } from \"./hooks/useObjectTableData.js\";\nimport { useRowSelection } from \"./hooks/useRowSelection.js\";\nimport { useSelectionColumn } from \"./hooks/useSelectionColumn.js\";\nimport { useTableSorting } from \"./hooks/useTableSorting.js\";\nimport type { ObjectTableProps } from \"./ObjectTableApi.js\";\nimport { BaseTable } from \"./Table.js\";\nimport { getRowId } from \"./utils/getRowId.js\";\n\n/**\n * ObjectTable - A headless table component for displaying OSDK object sets\n *\n * @example\n * ```tsx\n * <ObjectTable objectType={MyObjectType} />\n * ```\n */\n\nexport function ObjectTable<\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,\n columnDefinitions,\n filter,\n orderBy,\n defaultOrderBy,\n onOrderByChanged,\n onColumnsPinnedChanged,\n onRowSelection,\n renderCellContextMenu,\n selectionMode = \"none\",\n selectedRows,\n ...props\n}: ObjectTableProps<Q, RDPs, FunctionColumns>): React.ReactElement {\n const [columnSizing, setColumnSizing] = useState<ColumnSizingState>({});\n\n const { sorting, onSortingChange } = useTableSorting<\n Q,\n RDPs,\n FunctionColumns\n >(\n {\n orderBy,\n defaultOrderBy,\n onOrderByChanged,\n },\n );\n\n const { data, fetchMore, isLoading, error } = useObjectTableData<\n Q,\n RDPs,\n FunctionColumns\n >(\n objectType,\n columnDefinitions,\n filter,\n sorting,\n );\n\n const { columns, loading: isColumnsLoading } = useColumnDefs<\n Q,\n RDPs,\n FunctionColumns\n >(\n objectType,\n columnDefinitions,\n );\n\n const columnVisibility = useColumnVisibility({ columnDefinitions });\n\n const {\n rowSelection,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow,\n } = useRowSelection<Q, RDPs>({\n selectionMode,\n selectedRows,\n onRowSelection,\n data,\n });\n\n const selectionColumn = useSelectionColumn<Q, RDPs>(\n { selectionMode, isAllSelected, hasSelection, onToggleAll, onToggleRow },\n );\n\n const allColumns = useMemo(() => {\n return selectionColumn ? [selectionColumn, ...columns] : columns;\n }, [selectionColumn, columns]);\n\n const { columnPinning, onColumnPinningChange } = useColumnPinning({\n columnDefinitions,\n hasSelectionColumn: selectionColumn != null,\n onColumnsPinnedChanged,\n });\n\n const table = useReactTable<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >({\n data: data ?? [],\n columns: allColumns,\n getCoreRowModel: getCoreRowModel(),\n state: {\n columnVisibility,\n rowSelection,\n sorting,\n columnSizing,\n columnPinning,\n },\n onSortingChange,\n onColumnSizingChange: setColumnSizing,\n onColumnPinningChange,\n enableRowSelection: selectionMode !== \"none\",\n columnResizeMode: \"onChange\",\n columnResizeDirection: \"ltr\",\n manualSorting: true, // Enable manual sorting to indicate server-side sorting\n defaultColumn: {\n minSize: 80,\n },\n getRowId,\n });\n\n const onRenderCellContextMenu = useCallback(\n (\n row: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n cell: Cell<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n >,\n ) => {\n return renderCellContextMenu?.(row, cell.getValue());\n },\n [renderCellContextMenu],\n );\n\n const isTableLoading = isLoading || isColumnsLoading;\n\n return (\n <BaseTable\n table={table}\n isLoading={isTableLoading}\n fetchNextPage={fetchMore}\n onRowClick={props.onRowClick}\n rowHeight={props.rowHeight}\n renderCellContextMenu={onRenderCellContextMenu}\n className={props.className}\n error={error}\n />\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ObjectTable.js","names":["getCoreRowModel","useReactTable","React","useCallback","useMemo","useColumnDefs","useColumnPinning","useColumnResize","useColumnVisibility","useObjectTableData","useRowSelection","useSelectionColumn","useTableSorting","BaseTable","getRowId","ObjectTable","objectType","columnDefinitions","filter","orderBy","defaultOrderBy","onOrderByChanged","onColumnsPinnedChanged","onColumnResize","onRowSelection","renderCellContextMenu","selectionMode","selectedRows","onColumnVisibilityChanged","enableOrdering","enableColumnPinning","enableColumnResizing","enableColumnConfig","props","columnSizing","onColumnSizingChange","sorting","onSortingChange","data","fetchMore","isLoading","error","columns","loading","isColumnsLoading","rowSelection","isAllSelected","hasSelection","onToggleAll","onToggleRow","enableRowSelection","selectionColumn","columnVisibility","onColumnVisibilityChange","columnOrder","onColumnOrderChange","allColumns","columnPinning","onColumnPinningChange","hasSelectionColumn","table","state","enableSorting","columnResizeMode","columnResizeDirection","manualSorting","defaultColumn","minSize","onRenderCellContextMenu","row","cell","getValue","headerMenuFeatureFlags","showSortingItems","showPinningItems","showResizeItem","showConfigItem","createElement","fetchNextPage","onRowClick","rowHeight","className"],"sources":["ObjectTable.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 {\n ObjectOrInterfaceDefinition,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport type { Cell } from \"@tanstack/react-table\";\nimport { getCoreRowModel, useReactTable } from \"@tanstack/react-table\";\nimport React, { useCallback, useMemo } from \"react\";\nimport { useColumnDefs } from \"./hooks/useColumnDefs.js\";\nimport { useColumnPinning } from \"./hooks/useColumnPinning.js\";\nimport { useColumnResize } from \"./hooks/useColumnResize.js\";\nimport { useColumnVisibility } from \"./hooks/useColumnVisibility.js\";\nimport { useObjectTableData } from \"./hooks/useObjectTableData.js\";\nimport { useRowSelection } from \"./hooks/useRowSelection.js\";\nimport { useSelectionColumn } from \"./hooks/useSelectionColumn.js\";\nimport { useTableSorting } from \"./hooks/useTableSorting.js\";\nimport type { ObjectTableProps } from \"./ObjectTableApi.js\";\nimport { BaseTable } from \"./Table.js\";\nimport type { HeaderMenuFeatureFlags } from \"./TableHeaderWithPopover.js\";\nimport { getRowId } from \"./utils/getRowId.js\";\n\n/**\n * ObjectTable - A headless table component for displaying OSDK object sets\n *\n * @example\n * ```tsx\n * <ObjectTable objectType={MyObjectType} />\n * ```\n */\n\nexport function ObjectTable<\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,\n columnDefinitions,\n filter,\n orderBy,\n defaultOrderBy,\n onOrderByChanged,\n onColumnsPinnedChanged,\n onColumnResize,\n onRowSelection,\n renderCellContextMenu,\n selectionMode = \"none\",\n selectedRows,\n onColumnVisibilityChanged,\n enableOrdering = true,\n enableColumnPinning = true,\n enableColumnResizing = true,\n enableColumnConfig = true,\n ...props\n}: ObjectTableProps<Q, RDPs, FunctionColumns>): React.ReactElement {\n const { columnSizing, onColumnSizingChange } = useColumnResize({\n onColumnResize,\n });\n\n const { sorting, onSortingChange } = useTableSorting<\n Q,\n RDPs,\n FunctionColumns\n >(\n {\n orderBy,\n defaultOrderBy,\n onOrderByChanged,\n },\n );\n\n const { data, fetchMore, isLoading, error } = useObjectTableData<\n Q,\n RDPs,\n FunctionColumns\n >(\n objectType,\n columnDefinitions,\n filter,\n sorting,\n );\n\n const { columns, loading: isColumnsLoading } = useColumnDefs<\n Q,\n RDPs,\n FunctionColumns\n >(\n objectType,\n columnDefinitions,\n );\n\n const {\n rowSelection,\n isAllSelected,\n hasSelection,\n onToggleAll,\n onToggleRow,\n enableRowSelection,\n } = useRowSelection<Q, RDPs>({\n selectionMode,\n selectedRows,\n onRowSelection,\n data,\n });\n\n const selectionColumn = useSelectionColumn<Q, RDPs>(\n { selectionMode, isAllSelected, hasSelection, onToggleAll, onToggleRow },\n );\n\n const {\n columnVisibility,\n onColumnVisibilityChange,\n columnOrder,\n onColumnOrderChange,\n } = useColumnVisibility({\n allColumns: columns,\n onColumnVisibilityChanged,\n });\n\n const { columnPinning, onColumnPinningChange } = useColumnPinning({\n columnDefinitions,\n hasSelectionColumn: enableRowSelection,\n onColumnsPinnedChanged,\n });\n\n const allColumns = useMemo(() => {\n return selectionColumn ? [selectionColumn, ...columns] : columns;\n }, [selectionColumn, columns]);\n\n const table = useReactTable<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >({\n data: data ?? [],\n columns: allColumns,\n getCoreRowModel: getCoreRowModel(),\n state: {\n columnVisibility,\n columnOrder,\n rowSelection,\n sorting,\n columnSizing,\n columnPinning,\n },\n onSortingChange,\n onColumnSizingChange,\n onColumnPinningChange,\n onColumnVisibilityChange,\n onColumnOrderChange,\n enableRowSelection,\n enableSorting: enableOrdering,\n columnResizeMode: \"onChange\",\n columnResizeDirection: \"ltr\",\n manualSorting: true, // Enable manual sorting to indicate server-side sorting\n defaultColumn: {\n minSize: 80,\n },\n getRowId,\n });\n\n const onRenderCellContextMenu = useCallback(\n (\n row: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n cell: Cell<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n >,\n ) => {\n return renderCellContextMenu?.(row, cell.getValue());\n },\n [renderCellContextMenu],\n );\n\n const isTableLoading = isLoading || isColumnsLoading;\n\n const headerMenuFeatureFlags: HeaderMenuFeatureFlags = useMemo(() => ({\n showSortingItems: enableOrdering,\n showPinningItems: enableColumnPinning,\n showResizeItem: enableColumnResizing,\n showConfigItem: enableColumnConfig,\n }), [\n enableOrdering,\n enableColumnPinning,\n enableColumnResizing,\n enableColumnConfig,\n ]);\n\n return (\n <BaseTable<Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>>\n table={table}\n isLoading={isTableLoading}\n fetchNextPage={fetchMore}\n onRowClick={props.onRowClick}\n rowHeight={props.rowHeight}\n renderCellContextMenu={onRenderCellContextMenu}\n className={props.className}\n error={error}\n headerMenuFeatureFlags={headerMenuFeatureFlags}\n />\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectTableApi.js","names":[],"sources":["ObjectTableApi.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 DerivedProperty,\n ObjectOrInterfaceDefinition,\n Osdk,\n PrimaryKeyType,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\nimport type * as React from \"react\";\n\nexport type ColumnDefinition<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> = {\n locator: ColumnDefinitionLocator<Q, RDPs, FunctionColumns>;\n\n /**\n * @default true\n */\n isVisible?: boolean;\n\n /**\n * @default none\n */\n pinned?: \"left\" | \"right\" | \"none\";\n width?: number;\n minWidth?: number;\n maxWidth?: number;\n resizable?: boolean;\n orderable?: boolean;\n filterable?: boolean;\n renderCell?: (\n object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n locator: ColumnDefinitionLocator<Q, RDPs, FunctionColumns>,\n ) => React.ReactNode;\n renderHeader?: () => React.ReactNode;\n};\n\nexport type ColumnDefinitionLocator<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> =\n | {\n type: \"property\";\n id: PropertyKeys<Q>;\n }\n | {\n type: \"function\";\n id: keyof FunctionColumns;\n }\n | {\n type: \"rdp\";\n id: keyof RDPs;\n creator: DerivedProperty.Creator<Q, RDPs[keyof RDPs]>;\n };\n\nexport interface ObjectTableProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> {\n /**\n * The object type of the object\n */\n objectType: Q;\n\n /**\n * Ordered list of column definitions to show in the table\n *\n * If not provided, all of the properties of the object type will be shown in default order.\n */\n columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>;\n\n /**\n * Whether the table is filterable by the user.\n *\n * @default true\n */\n
|
|
1
|
+
{"version":3,"file":"ObjectTableApi.js","names":[],"sources":["ObjectTableApi.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 DerivedProperty,\n ObjectOrInterfaceDefinition,\n Osdk,\n PrimaryKeyType,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\nimport type * as React from \"react\";\n\nexport type ColumnDefinition<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> = {\n locator: ColumnDefinitionLocator<Q, RDPs, FunctionColumns>;\n\n /**\n * @default true\n */\n isVisible?: boolean;\n\n /**\n * @default none\n */\n pinned?: \"left\" | \"right\" | \"none\";\n width?: number;\n minWidth?: number;\n maxWidth?: number;\n resizable?: boolean;\n orderable?: boolean;\n filterable?: boolean;\n renderCell?: (\n object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n locator: ColumnDefinitionLocator<Q, RDPs, FunctionColumns>,\n ) => React.ReactNode;\n\n /**\n * If provided, this will be used in the column header.\n * If both columnName and renderHeader are provided, renderHeader will take precedence in the table header.\n * columnName will still be used in other parts where the column name is displayed.\n *\n * If not provided,\n * for a property column, the property displayName will be used\n * for other columns, the id will be used.\n */\n columnName?: string;\n\n /**\n * If provided, this will be used to render the header component.\n * When both columnName and renderHeader are provided, renderHeader will take precedence in the table header.\n */\n renderHeader?: () => React.ReactNode;\n};\n\nexport type ColumnDefinitionLocator<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> =\n | {\n type: \"property\";\n id: PropertyKeys<Q>;\n }\n | {\n type: \"function\";\n id: keyof FunctionColumns;\n }\n | {\n type: \"rdp\";\n id: keyof RDPs;\n creator: DerivedProperty.Creator<Q, RDPs[keyof RDPs]>;\n }\n | {\n type: \"custom\";\n id: string;\n };\n\nexport interface ObjectTableProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> {\n /**\n * The object type of the object\n */\n objectType: Q;\n\n /**\n * Ordered list of column definitions to show in the table\n *\n * If not provided, all of the properties of the object type will be shown in default order.\n */\n columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>;\n\n /**\n * Whether the table is filterable by the user.\n *\n * @default true\n */\n enableFiltering?: boolean;\n\n /**\n * The current where clause to filter the objects in the table.\n * If provided, the filter is controlled.\n */\n filter?: WhereClause<Q, RDPs>;\n\n /**\n * Called when the where clause is changed.\n * Required when filter is controlled.\n *\n * @param newWhere The new where clause\n */\n onFilterChanged?: (newWhere: WhereClause<Q, RDPs>) => void;\n\n /**\n * Whether the table is sortable by the user.\n *\n * @default true\n */\n enableOrdering?: boolean;\n\n /**\n * Whether columns can be pinned by the user.\n *\n * @default true\n */\n enableColumnPinning?: boolean;\n\n /**\n * Whether columns can be resized by the user.\n *\n * @default true\n */\n enableColumnResizing?: boolean;\n\n /**\n * Whether the column configuration dialog for column visibility and ordering is available to the user.\n *\n * @default true\n */\n enableColumnConfig?: boolean;\n\n /**\n * The default order by clause to sort the objects in the table.\n * If provided without orderBy prop, the sorting is uncontrolled.\n * If both orderBy and defaultOrderBy are provided, orderBy takes precedence.\n */\n defaultOrderBy?: Array<{\n property: PropertyKeys<Q>;\n direction: \"asc\" | \"desc\";\n }>;\n\n /**\n * The current order by clause to sort the objects in the table.\n * If provided, the sorting is controlled.\n * If both orderBy and defaultOrderBy are provided, orderBy takes precedence.\n */\n orderBy?: Array<{\n property: PropertyKeys<Q>;\n direction: \"asc\" | \"desc\";\n }>;\n\n /**\n * Called when the order by clause is changed.\n * Required when sorting is controlled.\n *\n * @param newOrderBy The new order by clause\n */\n onOrderByChanged?: (\n newOrderBy: Array<{\n property: PropertyKeys<Q>;\n direction: \"asc\" | \"desc\";\n }>,\n ) => void;\n\n /**\n * Called when the column visibility or ordering changed.\n *\n * If provided, the table will allow the user to show/hide columns.\n *\n * @param newStates The columns sorted in their display order in the table and their visibility state.\n */\n onColumnVisibilityChanged?: (\n newStates: Array<{\n columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns;\n isVisible: boolean;\n }>,\n ) => void;\n\n /**\n * Called when the pinned columns change.\n *\n * If provided, the table will allow the user to pin/unpin columns.\n *\n * @param newStates The new list of column pin states\n */\n onColumnsPinnedChanged?: (\n newStates: Array<{\n columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns;\n pinned: \"left\" | \"right\" | \"none\";\n }>,\n ) => void;\n\n /**\n * Called when a column is resized.\n *\n * @param columnId The ID of the resized column\n * @param newWidth The new width of the column. When newWidth = null, the column size is reset.\n */\n onColumnResize?: (\n columnId: PropertyKeys<Q> | keyof RDPs | keyof FunctionColumns,\n newWidth: number | null,\n ) => void;\n\n /**\n * Called when a row is clicked.\n *\n * @param object The object representing the clicked row\n */\n onRowClick?: (\n object: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n ) => void;\n\n /**\n * Selection mode for the table rows.\n *\n * If multiple, a checkbox will be shown for each row to allow selecting multiple rows\n * as well as a top-level checkbox in the header to select all rows.\n *\n * @default \"none\"\n */\n selectionMode?: \"single\" | \"multiple\" | \"none\";\n\n /**\n * The currently selected rows in the table.\n * If provided, the row selection is controlled.\n */\n selectedRows?: PrimaryKeyType<Q>[];\n\n /**\n * Called when the row selection changes.\n * Required when row selection is controlled.\n *\n * @param selectedRowIds The primary keys of currently selected rows\n */\n\n onRowSelection?: (selectedRowIds: PrimaryKeyType<Q>[]) => void;\n\n /**\n * If provided, will render this context menu when right clicking on a cell\n */\n renderCellContextMenu?: (\n row: Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n cellValue: unknown,\n ) => React.ReactNode;\n\n /**\n * The height of each row in pixels.\n *\n * @default 40\n */\n rowHeight?: number;\n\n className?: string;\n}\n"],"mappings":"","ignoreList":[]}
|