@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
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var reactTable = require('@tanstack/react-table');
|
|
4
|
-
var
|
|
4
|
+
var React10 = require('react');
|
|
5
5
|
var react = require('@osdk/react');
|
|
6
6
|
var experimental = require('@osdk/react/experimental');
|
|
7
7
|
var checkbox = require('@base-ui/react/checkbox');
|
|
8
8
|
var icons = require('@blueprintjs/icons');
|
|
9
|
-
var
|
|
9
|
+
var classNames7 = require('classnames');
|
|
10
|
+
var button = require('@base-ui/react/button');
|
|
11
|
+
var collapsible = require('@base-ui/react/collapsible');
|
|
12
|
+
var sortable = require('@dnd-kit/sortable');
|
|
13
|
+
var dialog = require('@base-ui/react/dialog');
|
|
14
|
+
var core = require('@dnd-kit/core');
|
|
15
|
+
var utilities = require('@dnd-kit/utilities');
|
|
16
|
+
var input = require('@base-ui/react/input');
|
|
10
17
|
var menu = require('@base-ui/react/menu');
|
|
11
18
|
var reactVirtual = require('@tanstack/react-virtual');
|
|
12
19
|
var reactDom = require('react-dom');
|
|
13
20
|
|
|
14
21
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
22
|
|
|
16
|
-
var
|
|
17
|
-
var
|
|
23
|
+
var React10__default = /*#__PURE__*/_interopDefault(React10);
|
|
24
|
+
var classNames7__default = /*#__PURE__*/_interopDefault(classNames7);
|
|
18
25
|
|
|
19
26
|
// src/object-table/ObjectTable.tsx
|
|
20
27
|
function useColumnDefs(objectType, columnDefinitions) {
|
|
@@ -23,7 +30,7 @@ function useColumnDefs(objectType, columnDefinitions) {
|
|
|
23
30
|
loading,
|
|
24
31
|
error
|
|
25
32
|
} = react.useOsdkMetadata(objectType);
|
|
26
|
-
const columns =
|
|
33
|
+
const columns = React10.useMemo(() => {
|
|
27
34
|
const objectProperties = metadata?.properties;
|
|
28
35
|
if (columnDefinitions) {
|
|
29
36
|
return getColumnsFromColumnDefinitions(columnDefinitions, objectProperties);
|
|
@@ -47,14 +54,19 @@ function getColumnsFromColumnDefinitions(columnDefinitions, objectProperties) {
|
|
|
47
54
|
orderable,
|
|
48
55
|
filterable,
|
|
49
56
|
renderCell,
|
|
50
|
-
renderHeader
|
|
57
|
+
renderHeader,
|
|
58
|
+
columnName
|
|
51
59
|
} = col;
|
|
52
60
|
const propertyMetadata = locator.type === "property" ? objectProperties?.[locator.id] : void 0;
|
|
53
61
|
const colKey = locator.id;
|
|
54
62
|
const colDef = {
|
|
55
63
|
id: colKey,
|
|
56
64
|
accessorKey: colKey,
|
|
57
|
-
header: renderHeader ?? propertyMetadata?.displayName,
|
|
65
|
+
header: renderHeader ?? (columnName || propertyMetadata?.displayName),
|
|
66
|
+
meta: {
|
|
67
|
+
columnName: columnName || propertyMetadata?.displayName,
|
|
68
|
+
isVisible: col.isVisible !== false
|
|
69
|
+
},
|
|
58
70
|
size: width,
|
|
59
71
|
...minWidth ? {
|
|
60
72
|
minSize: minWidth
|
|
@@ -93,11 +105,11 @@ var useColumnPinning = ({
|
|
|
93
105
|
hasSelectionColumn,
|
|
94
106
|
onColumnsPinnedChanged
|
|
95
107
|
}) => {
|
|
96
|
-
const [columnPinning, setColumnPinning] =
|
|
108
|
+
const [columnPinning, setColumnPinning] = React10.useState({
|
|
97
109
|
left: [],
|
|
98
110
|
right: []
|
|
99
111
|
});
|
|
100
|
-
|
|
112
|
+
React10.useEffect(() => {
|
|
101
113
|
const defaultState = getColumnPinningStateFromColumnDefs(columnDefinitions);
|
|
102
114
|
const selectionCol = hasSelectionColumn ? [SELECTION_COLUMN_ID] : [];
|
|
103
115
|
setColumnPinning({
|
|
@@ -105,7 +117,7 @@ var useColumnPinning = ({
|
|
|
105
117
|
right: [...defaultState.right ?? []]
|
|
106
118
|
});
|
|
107
119
|
}, [columnDefinitions, hasSelectionColumn]);
|
|
108
|
-
const onColumnPinningChange =
|
|
120
|
+
const onColumnPinningChange = React10.useCallback((updater) => {
|
|
109
121
|
setColumnPinning((prev) => {
|
|
110
122
|
const newPinning = typeof updater === "function" ? updater(prev) : updater;
|
|
111
123
|
if (onColumnsPinnedChanged) {
|
|
@@ -159,32 +171,89 @@ function convertColumnPinningStateToArray(pinningState) {
|
|
|
159
171
|
pinned: "right"
|
|
160
172
|
}))];
|
|
161
173
|
}
|
|
162
|
-
var
|
|
163
|
-
|
|
174
|
+
var useColumnResize = ({
|
|
175
|
+
onColumnResize
|
|
164
176
|
}) => {
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
+
const [columnSizing, setColumnSizing] = React10.useState({});
|
|
178
|
+
const onColumnSizingChange = React10.useCallback((updater) => {
|
|
179
|
+
setColumnSizing((prev) => {
|
|
180
|
+
const newState = typeof updater === "function" ? updater(prev) : updater;
|
|
181
|
+
if (onColumnResize) {
|
|
182
|
+
for (const columnId of Object.keys(newState)) {
|
|
183
|
+
if (newState[columnId] !== prev[columnId]) {
|
|
184
|
+
onColumnResize(columnId, newState[columnId]);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
for (const columnId of Object.keys(prev)) {
|
|
188
|
+
if (!(columnId in newState)) {
|
|
189
|
+
onColumnResize(columnId, null);
|
|
190
|
+
}
|
|
177
191
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
192
|
+
}
|
|
193
|
+
return newState;
|
|
194
|
+
});
|
|
195
|
+
}, [onColumnResize]);
|
|
196
|
+
return {
|
|
197
|
+
columnSizing,
|
|
198
|
+
onColumnSizingChange
|
|
199
|
+
};
|
|
200
|
+
};
|
|
201
|
+
var useColumnVisibility = ({
|
|
202
|
+
allColumns,
|
|
203
|
+
onColumnVisibilityChanged
|
|
204
|
+
}) => {
|
|
205
|
+
const [columnVisibility, setColumnVisibility] = React10.useState(() => getColumnVisibilityState(allColumns));
|
|
206
|
+
const [columnOrder, setColumnOrder] = React10.useState(() => getColumnOrder(allColumns));
|
|
207
|
+
React10.useEffect(() => {
|
|
208
|
+
setColumnVisibility(getColumnVisibilityState(allColumns));
|
|
209
|
+
}, [allColumns]);
|
|
210
|
+
React10.useEffect(() => {
|
|
211
|
+
setColumnOrder(getColumnOrder(allColumns));
|
|
212
|
+
}, [allColumns]);
|
|
213
|
+
const onColumnVisibilityChange = React10.useCallback((updaterOrValue) => {
|
|
214
|
+
setColumnVisibility((prev) => {
|
|
215
|
+
const newState = typeof updaterOrValue === "function" ? updaterOrValue(prev) : updaterOrValue;
|
|
216
|
+
if (onColumnVisibilityChanged) {
|
|
217
|
+
const changes = Object.entries(newState).map(([columnId, isVisible]) => ({
|
|
218
|
+
columnId,
|
|
219
|
+
isVisible
|
|
220
|
+
}));
|
|
221
|
+
onColumnVisibilityChanged(changes);
|
|
222
|
+
}
|
|
223
|
+
return newState;
|
|
224
|
+
});
|
|
225
|
+
}, [onColumnVisibilityChanged]);
|
|
226
|
+
const onColumnOrderChange = React10.useCallback((updaterOrValue) => {
|
|
227
|
+
setColumnOrder((prev) => {
|
|
228
|
+
const newState = typeof updaterOrValue === "function" ? updaterOrValue(prev) : updaterOrValue;
|
|
229
|
+
return newState;
|
|
230
|
+
});
|
|
231
|
+
}, []);
|
|
232
|
+
return {
|
|
233
|
+
columnVisibility,
|
|
234
|
+
onColumnVisibilityChange,
|
|
235
|
+
columnOrder,
|
|
236
|
+
onColumnOrderChange
|
|
237
|
+
};
|
|
238
|
+
};
|
|
239
|
+
var getColumnVisibilityState = (allColumns) => {
|
|
240
|
+
return allColumns.reduce((acc, col) => {
|
|
241
|
+
const colId = col.id ?? col.accessorKey;
|
|
242
|
+
if (colId) {
|
|
243
|
+
return {
|
|
244
|
+
...acc,
|
|
245
|
+
[colId]: col.meta?.isVisible !== false
|
|
246
|
+
};
|
|
181
247
|
}
|
|
182
|
-
|
|
183
|
-
|
|
248
|
+
return acc;
|
|
249
|
+
}, {});
|
|
250
|
+
};
|
|
251
|
+
var getColumnOrder = (allColumns) => {
|
|
252
|
+
return allColumns.map((col) => col.id ?? col.accessorKey).filter((id) => id != null);
|
|
184
253
|
};
|
|
185
254
|
var PAGE_SIZE = 50;
|
|
186
255
|
function useObjectTableData(objectOrInterfaceType, columnDefinitions, filter, sorting) {
|
|
187
|
-
const orderBy =
|
|
256
|
+
const orderBy = React10.useMemo(() => {
|
|
188
257
|
if (!sorting || sorting.length === 0) {
|
|
189
258
|
return void 0;
|
|
190
259
|
}
|
|
@@ -193,7 +262,7 @@ function useObjectTableData(objectOrInterfaceType, columnDefinitions, filter, so
|
|
|
193
262
|
return acc;
|
|
194
263
|
}, {});
|
|
195
264
|
}, [sorting]);
|
|
196
|
-
const withProperties =
|
|
265
|
+
const withProperties = React10.useMemo(() => {
|
|
197
266
|
if (!columnDefinitions) {
|
|
198
267
|
return;
|
|
199
268
|
}
|
|
@@ -231,31 +300,31 @@ function useRowSelection({
|
|
|
231
300
|
onRowSelection,
|
|
232
301
|
data
|
|
233
302
|
}) {
|
|
234
|
-
const [internalRowSelection, setInternalRowSelection] =
|
|
235
|
-
const [lastSelectedRowIndex, setLastSelectedRowIndex] =
|
|
303
|
+
const [internalRowSelection, setInternalRowSelection] = React10.useState({});
|
|
304
|
+
const [lastSelectedRowIndex, setLastSelectedRowIndex] = React10.useState(null);
|
|
236
305
|
const isControlled = selectedRows !== void 0;
|
|
237
|
-
const
|
|
238
|
-
const rowSelectionState =
|
|
239
|
-
if (!
|
|
306
|
+
const enableRowSelection = selectionMode !== "none";
|
|
307
|
+
const rowSelectionState = React10.useMemo(() => {
|
|
308
|
+
if (!enableRowSelection) return {};
|
|
240
309
|
if (isControlled && selectedRows) {
|
|
241
310
|
return getRowSelectionState(selectedRows);
|
|
242
311
|
}
|
|
243
312
|
return internalRowSelection;
|
|
244
|
-
}, [
|
|
313
|
+
}, [enableRowSelection, isControlled, selectedRows, internalRowSelection]);
|
|
245
314
|
const selectedCount = Object.values(rowSelectionState).filter(Boolean).length;
|
|
246
315
|
const totalCount = data?.length ?? 0;
|
|
247
316
|
const isAllSelected = totalCount > 0 && selectedCount === totalCount;
|
|
248
317
|
const hasSelection = selectedCount > 0;
|
|
249
|
-
const onToggleAll =
|
|
250
|
-
if (!
|
|
318
|
+
const onToggleAll = React10.useCallback(() => {
|
|
319
|
+
if (!enableRowSelection || !data) return;
|
|
251
320
|
const newSelectedRows = isAllSelected ? [] : data.map((item) => item.$primaryKey);
|
|
252
321
|
if (!isControlled) {
|
|
253
322
|
setInternalRowSelection(getRowSelectionState(newSelectedRows));
|
|
254
323
|
}
|
|
255
324
|
onRowSelection?.(newSelectedRows);
|
|
256
|
-
}, [
|
|
257
|
-
const onToggleRow =
|
|
258
|
-
if (!
|
|
325
|
+
}, [enableRowSelection, data, isAllSelected, isControlled, onRowSelection]);
|
|
326
|
+
const onToggleRow = React10.useCallback((rowId, rowIndex, isShiftClick = false) => {
|
|
327
|
+
if (!enableRowSelection || !data) return;
|
|
259
328
|
let newSelectedRows = [];
|
|
260
329
|
if (selectionMode === "single") {
|
|
261
330
|
newSelectedRows = getSingleSelectionRows({
|
|
@@ -286,10 +355,11 @@ function useRowSelection({
|
|
|
286
355
|
setInternalRowSelection(getRowSelectionState(newSelectedRows));
|
|
287
356
|
}
|
|
288
357
|
onRowSelection?.(newSelectedRows);
|
|
289
|
-
}, [
|
|
358
|
+
}, [enableRowSelection, data, selectionMode, lastSelectedRowIndex, isControlled, rowSelectionState, onRowSelection]);
|
|
290
359
|
return {
|
|
291
360
|
rowSelection: rowSelectionState,
|
|
292
361
|
isAllSelected,
|
|
362
|
+
enableRowSelection,
|
|
293
363
|
hasSelection,
|
|
294
364
|
onToggleAll,
|
|
295
365
|
onToggleRow
|
|
@@ -376,14 +446,14 @@ function Checkbox({
|
|
|
376
446
|
indicatorProps,
|
|
377
447
|
...rest
|
|
378
448
|
}) {
|
|
379
|
-
return /* @__PURE__ */
|
|
380
|
-
className:
|
|
449
|
+
return /* @__PURE__ */ React10__default.default.createElement(checkbox.Checkbox.Root, _extends({
|
|
450
|
+
className: classNames7__default.default(Checkbox_default.osdkCheckboxRoot, className),
|
|
381
451
|
indeterminate
|
|
382
|
-
}, rest), /* @__PURE__ */
|
|
383
|
-
className:
|
|
384
|
-
}), indeterminate ? /* @__PURE__ */
|
|
452
|
+
}, rest), /* @__PURE__ */ React10__default.default.createElement(checkbox.Checkbox.Indicator, _extends({}, indicatorProps, {
|
|
453
|
+
className: classNames7__default.default(Checkbox_default.osdkCheckboxIndicator, indicatorProps?.className)
|
|
454
|
+
}), indeterminate ? /* @__PURE__ */ React10__default.default.createElement(icons.Minus, {
|
|
385
455
|
color: "currentColor"
|
|
386
|
-
}) : /* @__PURE__ */
|
|
456
|
+
}) : /* @__PURE__ */ React10__default.default.createElement(icons.Tick, {
|
|
387
457
|
color: "currentColor"
|
|
388
458
|
})));
|
|
389
459
|
}
|
|
@@ -394,7 +464,7 @@ function SelectionHeaderCell({
|
|
|
394
464
|
hasSelection,
|
|
395
465
|
onToggleAll
|
|
396
466
|
}) {
|
|
397
|
-
return /* @__PURE__ */
|
|
467
|
+
return /* @__PURE__ */ React10__default.default.createElement(Checkbox, {
|
|
398
468
|
indeterminate: hasSelection && !isAllSelected,
|
|
399
469
|
checked: isAllSelected,
|
|
400
470
|
onCheckedChange: onToggleAll,
|
|
@@ -405,11 +475,11 @@ function SelectionCell({
|
|
|
405
475
|
row,
|
|
406
476
|
onToggleRow
|
|
407
477
|
}) {
|
|
408
|
-
const handleClick =
|
|
478
|
+
const handleClick = React10.useCallback((event) => {
|
|
409
479
|
const isShiftClick = event.shiftKey;
|
|
410
480
|
onToggleRow(row.id, row.index, isShiftClick);
|
|
411
481
|
}, [row, onToggleRow]);
|
|
412
|
-
return /* @__PURE__ */
|
|
482
|
+
return /* @__PURE__ */ React10__default.default.createElement(Checkbox, {
|
|
413
483
|
checked: row.getIsSelected(),
|
|
414
484
|
onClick: handleClick,
|
|
415
485
|
"aria-label": `Select row ${row.index + 1}`
|
|
@@ -424,20 +494,28 @@ var useSelectionColumn = ({
|
|
|
424
494
|
onToggleAll,
|
|
425
495
|
onToggleRow
|
|
426
496
|
}) => {
|
|
427
|
-
const
|
|
497
|
+
const isAllSelectedRef = React10.useRef(isAllSelected);
|
|
498
|
+
isAllSelectedRef.current = isAllSelected;
|
|
499
|
+
const hasSelectionRef = React10.useRef(hasSelection);
|
|
500
|
+
hasSelectionRef.current = hasSelection;
|
|
501
|
+
const onToggleAllRef = React10.useRef(onToggleAll);
|
|
502
|
+
onToggleAllRef.current = onToggleAll;
|
|
503
|
+
const onToggleRowRef = React10.useRef(onToggleRow);
|
|
504
|
+
onToggleRowRef.current = onToggleRow;
|
|
505
|
+
const selectionColumn = React10.useMemo(() => {
|
|
428
506
|
if (selectionMode === "none") return null;
|
|
429
507
|
const colDef = {
|
|
430
508
|
id: SELECTION_COLUMN_ID,
|
|
431
|
-
header: () => selectionMode === "multiple" ? /* @__PURE__ */
|
|
432
|
-
isAllSelected,
|
|
433
|
-
hasSelection,
|
|
434
|
-
onToggleAll
|
|
509
|
+
header: () => selectionMode === "multiple" ? /* @__PURE__ */ React10__default.default.createElement(SelectionHeaderCell, {
|
|
510
|
+
isAllSelected: isAllSelectedRef.current,
|
|
511
|
+
hasSelection: hasSelectionRef.current,
|
|
512
|
+
onToggleAll: onToggleAllRef.current
|
|
435
513
|
}) : null,
|
|
436
514
|
cell: ({
|
|
437
515
|
row
|
|
438
|
-
}) => /* @__PURE__ */
|
|
516
|
+
}) => /* @__PURE__ */ React10__default.default.createElement(SelectionCell, {
|
|
439
517
|
row,
|
|
440
|
-
onToggleRow
|
|
518
|
+
onToggleRow: onToggleRowRef.current
|
|
441
519
|
}),
|
|
442
520
|
size: 50,
|
|
443
521
|
minSize: 50,
|
|
@@ -447,7 +525,7 @@ var useSelectionColumn = ({
|
|
|
447
525
|
enablePinning: false
|
|
448
526
|
};
|
|
449
527
|
return colDef;
|
|
450
|
-
}, [selectionMode
|
|
528
|
+
}, [selectionMode]);
|
|
451
529
|
return selectionColumn;
|
|
452
530
|
};
|
|
453
531
|
var useTableSorting = ({
|
|
@@ -455,10 +533,10 @@ var useTableSorting = ({
|
|
|
455
533
|
defaultOrderBy,
|
|
456
534
|
onOrderByChanged
|
|
457
535
|
}) => {
|
|
458
|
-
const [internalSorting, setInternalSorting] =
|
|
536
|
+
const [internalSorting, setInternalSorting] = React10.useState(() => defaultOrderBy ? convertOrderByToSortingState(defaultOrderBy) : []);
|
|
459
537
|
const isControlled = orderBy !== void 0;
|
|
460
|
-
const sortingState =
|
|
461
|
-
const onSortingChange =
|
|
538
|
+
const sortingState = React10.useMemo(() => orderBy ? convertOrderByToSortingState(orderBy) : internalSorting, [orderBy, internalSorting]);
|
|
539
|
+
const onSortingChange = React10.useCallback((updater) => {
|
|
462
540
|
const newSorting = typeof updater === "function" ? updater(sortingState) : updater;
|
|
463
541
|
if (!isControlled) {
|
|
464
542
|
setInternalSorting(newSorting);
|
|
@@ -502,13 +580,13 @@ var TableCell_default = {};
|
|
|
502
580
|
function LoadingCell({
|
|
503
581
|
width
|
|
504
582
|
}) {
|
|
505
|
-
return /* @__PURE__ */
|
|
583
|
+
return /* @__PURE__ */ React10__default.default.createElement("td", {
|
|
506
584
|
className: TableCell_default.osdkTableCell,
|
|
507
585
|
style: {
|
|
508
586
|
width
|
|
509
587
|
}
|
|
510
|
-
}, /* @__PURE__ */
|
|
511
|
-
className:
|
|
588
|
+
}, /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
589
|
+
className: classNames7__default.default(LoadingCell_default.osdkLoadingCell, LoadingCell_default.osdkCellSkeleton)
|
|
512
590
|
}));
|
|
513
591
|
}
|
|
514
592
|
|
|
@@ -523,17 +601,17 @@ function LoadingRow({
|
|
|
523
601
|
rowHeight = 40,
|
|
524
602
|
columnWidth = 80
|
|
525
603
|
}) {
|
|
526
|
-
return /* @__PURE__ */
|
|
604
|
+
return /* @__PURE__ */ React10__default.default.createElement("tr", {
|
|
527
605
|
className: TableRow_default.osdkTableRow,
|
|
528
606
|
style: {
|
|
529
607
|
height: `${rowHeight}px`,
|
|
530
608
|
transform: `translateY(${translateY}px)`
|
|
531
609
|
}
|
|
532
|
-
}, /* @__PURE__ */
|
|
610
|
+
}, /* @__PURE__ */ React10__default.default.createElement(React10__default.default.Fragment, null, Array.from({
|
|
533
611
|
length: columnCount
|
|
534
612
|
}).map((_, index) => {
|
|
535
613
|
const width = headers.length > index ? headers[index].getSize() : columnWidth;
|
|
536
|
-
return /* @__PURE__ */
|
|
614
|
+
return /* @__PURE__ */ React10__default.default.createElement(LoadingCell, {
|
|
537
615
|
key: `loading-cell-${index}`,
|
|
538
616
|
width
|
|
539
617
|
});
|
|
@@ -543,6 +621,620 @@ function LoadingRow({
|
|
|
543
621
|
// src/object-table/TableBody.module.css
|
|
544
622
|
var TableBody_default = {};
|
|
545
623
|
|
|
624
|
+
// src/base-components/action-button/ActionButton.module.css
|
|
625
|
+
var ActionButton_default = {};
|
|
626
|
+
|
|
627
|
+
// src/base-components/action-button/ActionButton.tsx
|
|
628
|
+
function _extends2() {
|
|
629
|
+
return _extends2 = Object.assign ? Object.assign.bind() : function(n) {
|
|
630
|
+
for (var e = 1; e < arguments.length; e++) {
|
|
631
|
+
var t = arguments[e];
|
|
632
|
+
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
|
633
|
+
}
|
|
634
|
+
return n;
|
|
635
|
+
}, _extends2.apply(null, arguments);
|
|
636
|
+
}
|
|
637
|
+
function ActionButton({
|
|
638
|
+
variant = "secondary",
|
|
639
|
+
className,
|
|
640
|
+
...rest
|
|
641
|
+
}) {
|
|
642
|
+
return /* @__PURE__ */ React10__default.default.createElement(button.Button, _extends2({
|
|
643
|
+
className: classNames7__default.default(ActionButton_default.button, variant === "primary" ? ActionButton_default.primaryButton : ActionButton_default.secondaryButton, className)
|
|
644
|
+
}, rest));
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
// src/base-components/dialog/Dialog.module.css
|
|
648
|
+
var Dialog_default = {};
|
|
649
|
+
|
|
650
|
+
// src/base-components/dialog/Dialog.tsx
|
|
651
|
+
function Dialog({
|
|
652
|
+
isOpen,
|
|
653
|
+
onOpenChange,
|
|
654
|
+
title,
|
|
655
|
+
children,
|
|
656
|
+
footer,
|
|
657
|
+
className
|
|
658
|
+
}) {
|
|
659
|
+
return /* @__PURE__ */ React10__default.default.createElement(dialog.Dialog.Root, {
|
|
660
|
+
open: isOpen,
|
|
661
|
+
onOpenChange
|
|
662
|
+
}, /* @__PURE__ */ React10__default.default.createElement(dialog.Dialog.Portal, null, /* @__PURE__ */ React10__default.default.createElement(dialog.Dialog.Backdrop, {
|
|
663
|
+
className: Dialog_default.backdrop
|
|
664
|
+
}), /* @__PURE__ */ React10__default.default.createElement(dialog.Dialog.Popup, {
|
|
665
|
+
className: classNames7__default.default(Dialog_default.popup, className)
|
|
666
|
+
}, /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
667
|
+
className: Dialog_default.header
|
|
668
|
+
}, /* @__PURE__ */ React10__default.default.createElement(dialog.Dialog.Title, {
|
|
669
|
+
className: Dialog_default.title
|
|
670
|
+
}, title), /* @__PURE__ */ React10__default.default.createElement(dialog.Dialog.Close, {
|
|
671
|
+
className: Dialog_default.closeButton,
|
|
672
|
+
"aria-label": "Close dialog"
|
|
673
|
+
}, /* @__PURE__ */ React10__default.default.createElement(icons.Cross, {
|
|
674
|
+
className: Dialog_default.closeIcon
|
|
675
|
+
}))), /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
676
|
+
className: Dialog_default.body
|
|
677
|
+
}, children), footer != null && /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
678
|
+
className: Dialog_default.footer
|
|
679
|
+
}, footer))));
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
// src/base-components/draggable-list/DraggableList.module.css
|
|
683
|
+
var DraggableList_default = {};
|
|
684
|
+
|
|
685
|
+
// src/base-components/draggable-list/DraggableList.tsx
|
|
686
|
+
function _extends3() {
|
|
687
|
+
return _extends3 = Object.assign ? Object.assign.bind() : function(n) {
|
|
688
|
+
for (var e = 1; e < arguments.length; e++) {
|
|
689
|
+
var t = arguments[e];
|
|
690
|
+
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
|
691
|
+
}
|
|
692
|
+
return n;
|
|
693
|
+
}, _extends3.apply(null, arguments);
|
|
694
|
+
}
|
|
695
|
+
function DraggableListItem({
|
|
696
|
+
item,
|
|
697
|
+
onRemove,
|
|
698
|
+
removeIconVariant = "trash",
|
|
699
|
+
renderContent
|
|
700
|
+
}) {
|
|
701
|
+
const {
|
|
702
|
+
attributes,
|
|
703
|
+
listeners,
|
|
704
|
+
setNodeRef,
|
|
705
|
+
transform,
|
|
706
|
+
transition,
|
|
707
|
+
isDragging
|
|
708
|
+
} = sortable.useSortable({
|
|
709
|
+
id: item.id
|
|
710
|
+
});
|
|
711
|
+
const style = {
|
|
712
|
+
transform: utilities.CSS.Transform.toString(transform),
|
|
713
|
+
transition
|
|
714
|
+
};
|
|
715
|
+
const handleRemove = React10.useCallback(() => {
|
|
716
|
+
onRemove?.(item.id);
|
|
717
|
+
}, [item.id, onRemove]);
|
|
718
|
+
const RemoveIcon = removeIconVariant === "trash" ? icons.Trash : icons.SmallCross;
|
|
719
|
+
return /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
720
|
+
ref: setNodeRef,
|
|
721
|
+
style,
|
|
722
|
+
className: DraggableList_default.draggableItem,
|
|
723
|
+
"data-dragging": isDragging
|
|
724
|
+
}, /* @__PURE__ */ React10__default.default.createElement("div", _extends3({
|
|
725
|
+
className: DraggableList_default.dragHandle,
|
|
726
|
+
"aria-label": `Reorder ${item.label}`
|
|
727
|
+
}, attributes, listeners), /* @__PURE__ */ React10__default.default.createElement(icons.DragHandleVertical, {
|
|
728
|
+
className: DraggableList_default.icon
|
|
729
|
+
})), /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
730
|
+
className: DraggableList_default.itemContent
|
|
731
|
+
}, renderContent ? renderContent(item) : item.label), onRemove && /* @__PURE__ */ React10__default.default.createElement(button.Button, {
|
|
732
|
+
className: DraggableList_default.removeButton,
|
|
733
|
+
onClick: handleRemove,
|
|
734
|
+
"aria-label": `Remove ${item.label}`
|
|
735
|
+
}, /* @__PURE__ */ React10__default.default.createElement(RemoveIcon, {
|
|
736
|
+
className: DraggableList_default.icon
|
|
737
|
+
})));
|
|
738
|
+
}
|
|
739
|
+
function DraggableList({
|
|
740
|
+
items,
|
|
741
|
+
onReorder,
|
|
742
|
+
onRemove,
|
|
743
|
+
removeIconVariant = "cross",
|
|
744
|
+
renderContent,
|
|
745
|
+
emptyMessage,
|
|
746
|
+
className
|
|
747
|
+
}) {
|
|
748
|
+
const itemIds = React10.useMemo(() => items.map((item) => item.id), [items]);
|
|
749
|
+
const sensors = core.useSensors(core.useSensor(core.PointerSensor, {
|
|
750
|
+
activationConstraint: {
|
|
751
|
+
distance: 5
|
|
752
|
+
}
|
|
753
|
+
}), core.useSensor(core.KeyboardSensor, {
|
|
754
|
+
coordinateGetter: sortable.sortableKeyboardCoordinates
|
|
755
|
+
}));
|
|
756
|
+
const handleDragEnd = React10.useCallback((event) => {
|
|
757
|
+
const {
|
|
758
|
+
active,
|
|
759
|
+
over
|
|
760
|
+
} = event;
|
|
761
|
+
if (over && active.id !== over.id) {
|
|
762
|
+
const oldIndex = items.findIndex((item) => item.id === active.id);
|
|
763
|
+
const newIndex = items.findIndex((item) => item.id === over.id);
|
|
764
|
+
onReorder(oldIndex, newIndex);
|
|
765
|
+
}
|
|
766
|
+
}, [items, onReorder]);
|
|
767
|
+
const containerRef = React10.useRef(null);
|
|
768
|
+
useKeyboardEvents(containerRef);
|
|
769
|
+
const DndContext = core.DndContext;
|
|
770
|
+
return /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
771
|
+
ref: containerRef,
|
|
772
|
+
className: classNames7__default.default(DraggableList_default.draggableListContainer, className)
|
|
773
|
+
}, /* @__PURE__ */ React10__default.default.createElement(DndContext, {
|
|
774
|
+
sensors,
|
|
775
|
+
collisionDetection: core.closestCenter,
|
|
776
|
+
onDragEnd: handleDragEnd
|
|
777
|
+
}, /* @__PURE__ */ React10__default.default.createElement(sortable.SortableContext, {
|
|
778
|
+
items: itemIds,
|
|
779
|
+
strategy: sortable.verticalListSortingStrategy
|
|
780
|
+
}, items.map((item) => /* @__PURE__ */ React10__default.default.createElement(DraggableListItem, {
|
|
781
|
+
key: item.id,
|
|
782
|
+
item,
|
|
783
|
+
onRemove,
|
|
784
|
+
removeIconVariant,
|
|
785
|
+
renderContent
|
|
786
|
+
})))), items.length === 0 && emptyMessage && /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
787
|
+
className: DraggableList_default.emptyState
|
|
788
|
+
}, emptyMessage));
|
|
789
|
+
}
|
|
790
|
+
var useKeyboardEvents = (containerRef) => {
|
|
791
|
+
React10.useEffect(() => {
|
|
792
|
+
const el = containerRef.current;
|
|
793
|
+
if (el == null) {
|
|
794
|
+
return;
|
|
795
|
+
}
|
|
796
|
+
const ARROW_KEYS = /* @__PURE__ */ new Set(["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"]);
|
|
797
|
+
function handleCapture(event) {
|
|
798
|
+
if (!ARROW_KEYS.has(event.key)) {
|
|
799
|
+
return;
|
|
800
|
+
}
|
|
801
|
+
if (el.querySelector('[data-dragging="true"]') == null) {
|
|
802
|
+
return;
|
|
803
|
+
}
|
|
804
|
+
event.stopPropagation();
|
|
805
|
+
document.dispatchEvent(new KeyboardEvent("keydown", {
|
|
806
|
+
key: event.key,
|
|
807
|
+
code: event.code,
|
|
808
|
+
bubbles: true
|
|
809
|
+
}));
|
|
810
|
+
}
|
|
811
|
+
el.addEventListener("keydown", handleCapture, true);
|
|
812
|
+
return () => el.removeEventListener("keydown", handleCapture, true);
|
|
813
|
+
}, [containerRef]);
|
|
814
|
+
};
|
|
815
|
+
|
|
816
|
+
// src/base-components/search-bar/SearchBar.module.css
|
|
817
|
+
var SearchBar_default = {};
|
|
818
|
+
|
|
819
|
+
// src/base-components/search-bar/SearchBar.tsx
|
|
820
|
+
function SearchBar({
|
|
821
|
+
value,
|
|
822
|
+
onChange,
|
|
823
|
+
placeholder = "Search",
|
|
824
|
+
"aria-label": ariaLabel,
|
|
825
|
+
className,
|
|
826
|
+
onKeyDown
|
|
827
|
+
}) {
|
|
828
|
+
return /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
829
|
+
className: classNames7__default.default(SearchBar_default.searchBar, className)
|
|
830
|
+
}, /* @__PURE__ */ React10__default.default.createElement(icons.Search, {
|
|
831
|
+
className: SearchBar_default.searchIcon
|
|
832
|
+
}), /* @__PURE__ */ React10__default.default.createElement(input.Input, {
|
|
833
|
+
type: "text",
|
|
834
|
+
placeholder,
|
|
835
|
+
"aria-label": ariaLabel ?? placeholder,
|
|
836
|
+
value,
|
|
837
|
+
onChange,
|
|
838
|
+
className: SearchBar_default.searchInput,
|
|
839
|
+
onKeyDown
|
|
840
|
+
}));
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
// src/object-table/ColumnConfigDialog.module.css
|
|
844
|
+
var ColumnConfigDialog_default = {};
|
|
845
|
+
|
|
846
|
+
// src/object-table/ColumnConfigDialog.tsx
|
|
847
|
+
function ColumnConfigDialog({
|
|
848
|
+
isOpen,
|
|
849
|
+
onClose,
|
|
850
|
+
columnOptions,
|
|
851
|
+
currentVisibility,
|
|
852
|
+
currentColumnOrder,
|
|
853
|
+
onApply,
|
|
854
|
+
isValidConfig
|
|
855
|
+
}) {
|
|
856
|
+
const [visibleColumns, setVisibleColumns] = React10.useState([]);
|
|
857
|
+
const [searchQuery, setSearchQuery] = React10.useState("");
|
|
858
|
+
const allColumns = React10.useMemo(() => {
|
|
859
|
+
return columnOptions.map((opt) => {
|
|
860
|
+
const isVisible = currentVisibility ? currentVisibility[opt.id] : false;
|
|
861
|
+
return {
|
|
862
|
+
id: opt.id,
|
|
863
|
+
label: opt.name,
|
|
864
|
+
isVisible
|
|
865
|
+
};
|
|
866
|
+
});
|
|
867
|
+
}, [columnOptions, currentVisibility]);
|
|
868
|
+
React10.useEffect(() => {
|
|
869
|
+
if (isOpen) {
|
|
870
|
+
const visibleCols = allColumns.filter((col) => col.isVisible);
|
|
871
|
+
if (!!currentColumnOrder?.length) {
|
|
872
|
+
visibleCols.sort((a, b) => {
|
|
873
|
+
const indexA = currentColumnOrder.indexOf(a.id);
|
|
874
|
+
const indexB = currentColumnOrder.indexOf(b.id);
|
|
875
|
+
const orderA = indexA === -1 ? Infinity : indexA;
|
|
876
|
+
const orderB = indexB === -1 ? Infinity : indexB;
|
|
877
|
+
return orderA - orderB;
|
|
878
|
+
});
|
|
879
|
+
}
|
|
880
|
+
setVisibleColumns(visibleCols);
|
|
881
|
+
setSearchQuery("");
|
|
882
|
+
}
|
|
883
|
+
}, [isOpen, allColumns, currentColumnOrder]);
|
|
884
|
+
const handleApply = React10.useCallback(() => {
|
|
885
|
+
onApply(getColumnConfig(allColumns, visibleColumns));
|
|
886
|
+
onClose();
|
|
887
|
+
}, [allColumns, visibleColumns, onApply, onClose]);
|
|
888
|
+
const isValid = isValidConfig ? isValidConfig(getColumnConfig(allColumns, visibleColumns)) : true;
|
|
889
|
+
const isApplyDisabled = visibleColumns.length === 0 || !isValid;
|
|
890
|
+
const handleReorderColumns = React10.useCallback((fromIndex, toIndex) => {
|
|
891
|
+
setVisibleColumns((items) => sortable.arrayMove(items, fromIndex, toIndex));
|
|
892
|
+
}, []);
|
|
893
|
+
const handleRemoveColumn = React10.useCallback((columnId) => {
|
|
894
|
+
setVisibleColumns((prev) => prev.filter((col) => col.id !== columnId));
|
|
895
|
+
}, []);
|
|
896
|
+
const handleToggleColumn = React10.useCallback((column) => {
|
|
897
|
+
setVisibleColumns((prev) => {
|
|
898
|
+
const isCurrentlyVisible = prev.some((col) => col.id === column.id);
|
|
899
|
+
if (isCurrentlyVisible) {
|
|
900
|
+
return prev.filter((col) => col.id !== column.id);
|
|
901
|
+
} else {
|
|
902
|
+
return [...prev, column];
|
|
903
|
+
}
|
|
904
|
+
});
|
|
905
|
+
}, []);
|
|
906
|
+
const handleSearchChange = React10.useCallback((event) => {
|
|
907
|
+
setSearchQuery(event.target.value);
|
|
908
|
+
}, []);
|
|
909
|
+
const handleSelectAll = React10.useCallback((columns) => {
|
|
910
|
+
setVisibleColumns((prev) => {
|
|
911
|
+
const allSelected = columns.every((col) => prev.some((v) => v.id === col.id));
|
|
912
|
+
if (allSelected) {
|
|
913
|
+
return prev.filter((v) => !columns.some((col) => col.id === v.id));
|
|
914
|
+
} else {
|
|
915
|
+
const newColumns = columns.filter((col) => !prev.some((v) => v.id === col.id));
|
|
916
|
+
return [...prev, ...newColumns];
|
|
917
|
+
}
|
|
918
|
+
});
|
|
919
|
+
}, []);
|
|
920
|
+
const filteredAvailableColumns = React10.useMemo(() => {
|
|
921
|
+
const query = searchQuery.toLowerCase().trim();
|
|
922
|
+
if (!query) {
|
|
923
|
+
return allColumns;
|
|
924
|
+
}
|
|
925
|
+
return allColumns.filter((col) => (col.label?.toLowerCase().includes(query) ?? false) || col.id.toLowerCase().includes(query));
|
|
926
|
+
}, [allColumns, searchQuery]);
|
|
927
|
+
const footer = React10.useMemo(() => /* @__PURE__ */ React10__default.default.createElement(React10__default.default.Fragment, null, /* @__PURE__ */ React10__default.default.createElement(ActionButton, {
|
|
928
|
+
onClick: onClose
|
|
929
|
+
}, "Cancel"), /* @__PURE__ */ React10__default.default.createElement(ActionButton, {
|
|
930
|
+
variant: "primary",
|
|
931
|
+
onClick: handleApply,
|
|
932
|
+
disabled: isApplyDisabled
|
|
933
|
+
}, "Apply")), [onClose, handleApply, isApplyDisabled]);
|
|
934
|
+
return /* @__PURE__ */ React10__default.default.createElement(Dialog, {
|
|
935
|
+
isOpen,
|
|
936
|
+
onOpenChange: onClose,
|
|
937
|
+
title: DialogTitle,
|
|
938
|
+
footer,
|
|
939
|
+
className: ColumnConfigDialog_default.columnConfigDialog
|
|
940
|
+
}, /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
941
|
+
className: ColumnConfigDialog_default.dialogLayout
|
|
942
|
+
}, /* @__PURE__ */ React10__default.default.createElement(VisibleColumnsList, {
|
|
943
|
+
columns: visibleColumns,
|
|
944
|
+
onReorder: handleReorderColumns,
|
|
945
|
+
onRemove: handleRemoveColumn
|
|
946
|
+
}), /* @__PURE__ */ React10__default.default.createElement(AvailableColumnsList, {
|
|
947
|
+
visibleColumns,
|
|
948
|
+
searchQuery,
|
|
949
|
+
onSearchChange: handleSearchChange,
|
|
950
|
+
onToggleColumn: handleToggleColumn,
|
|
951
|
+
onSelectAll: handleSelectAll,
|
|
952
|
+
filteredColumns: filteredAvailableColumns
|
|
953
|
+
})));
|
|
954
|
+
}
|
|
955
|
+
var DialogTitle = /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
956
|
+
className: ColumnConfigDialog_default.title
|
|
957
|
+
}, /* @__PURE__ */ React10__default.default.createElement(icons.Cog, null), "Configure Table Columns");
|
|
958
|
+
var getColumnConfig = (allColumns, visibleColumns) => {
|
|
959
|
+
const hiddenColumns = allColumns.filter((col) => !visibleColumns.some((v) => v.id === col.id));
|
|
960
|
+
return [...visibleColumns.map((col) => ({
|
|
961
|
+
columnId: col.id,
|
|
962
|
+
isVisible: true
|
|
963
|
+
})), ...hiddenColumns.map((col) => ({
|
|
964
|
+
columnId: col.id,
|
|
965
|
+
isVisible: false
|
|
966
|
+
}))];
|
|
967
|
+
};
|
|
968
|
+
function VisibleColumnsList({
|
|
969
|
+
columns,
|
|
970
|
+
onReorder,
|
|
971
|
+
onRemove
|
|
972
|
+
}) {
|
|
973
|
+
return /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
974
|
+
className: ColumnConfigDialog_default.visibleColumnsContainer
|
|
975
|
+
}, /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
976
|
+
className: ColumnConfigDialog_default.sectionHeader
|
|
977
|
+
}, /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
978
|
+
className: ColumnConfigDialog_default.sectionTitle
|
|
979
|
+
}, /* @__PURE__ */ React10__default.default.createElement("span", null, "Visible Columns"), /* @__PURE__ */ React10__default.default.createElement("span", {
|
|
980
|
+
className: ColumnConfigDialog_default.countTag
|
|
981
|
+
}, columns.length)), /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
982
|
+
className: ColumnConfigDialog_default.sectionHint
|
|
983
|
+
}, "Drag to reorder")), /* @__PURE__ */ React10__default.default.createElement(DraggableList, {
|
|
984
|
+
items: columns,
|
|
985
|
+
onReorder,
|
|
986
|
+
onRemove,
|
|
987
|
+
removeIconVariant: "trash",
|
|
988
|
+
emptyMessage: "No visible columns",
|
|
989
|
+
className: ColumnConfigDialog_default.columnList
|
|
990
|
+
}));
|
|
991
|
+
}
|
|
992
|
+
function AvailableColumnsList({
|
|
993
|
+
visibleColumns,
|
|
994
|
+
searchQuery,
|
|
995
|
+
onSearchChange,
|
|
996
|
+
onToggleColumn,
|
|
997
|
+
onSelectAll,
|
|
998
|
+
filteredColumns
|
|
999
|
+
}) {
|
|
1000
|
+
const selectedCount = visibleColumns.length;
|
|
1001
|
+
const totalCount = filteredColumns.length;
|
|
1002
|
+
const allFilteredSelected = filteredColumns.every((col) => visibleColumns.some((v) => v.id === col.id));
|
|
1003
|
+
const someFilteredSelected = filteredColumns.some((col) => visibleColumns.some((v) => v.id === col.id));
|
|
1004
|
+
const handleSelectAllClick = React10.useCallback(() => {
|
|
1005
|
+
onSelectAll(filteredColumns);
|
|
1006
|
+
}, [filteredColumns, onSelectAll]);
|
|
1007
|
+
return /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
1008
|
+
className: ColumnConfigDialog_default.availableColumnsContainer
|
|
1009
|
+
}, /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
1010
|
+
className: classNames7__default.default(ColumnConfigDialog_default.sectionHeader, ColumnConfigDialog_default.sectionTitle)
|
|
1011
|
+
}, "Add or Remove Columns"), /* @__PURE__ */ React10__default.default.createElement(SearchBar, {
|
|
1012
|
+
value: searchQuery,
|
|
1013
|
+
onChange: onSearchChange,
|
|
1014
|
+
placeholder: "Search...",
|
|
1015
|
+
"aria-label": "Search available columns",
|
|
1016
|
+
className: ColumnConfigDialog_default.searchContainer
|
|
1017
|
+
}), /* @__PURE__ */ React10__default.default.createElement(collapsible.Collapsible.Root, {
|
|
1018
|
+
defaultOpen: true,
|
|
1019
|
+
className: ColumnConfigDialog_default.propertiesList
|
|
1020
|
+
}, /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
1021
|
+
className: ColumnConfigDialog_default.categoryHeader
|
|
1022
|
+
}, /* @__PURE__ */ React10__default.default.createElement(Checkbox, {
|
|
1023
|
+
checked: allFilteredSelected,
|
|
1024
|
+
indeterminate: someFilteredSelected && !allFilteredSelected,
|
|
1025
|
+
onCheckedChange: handleSelectAllClick,
|
|
1026
|
+
className: ColumnConfigDialog_default.checkbox
|
|
1027
|
+
}), /* @__PURE__ */ React10__default.default.createElement(collapsible.Collapsible.Trigger, {
|
|
1028
|
+
className: ColumnConfigDialog_default.categoryTrigger
|
|
1029
|
+
}, /* @__PURE__ */ React10__default.default.createElement("span", {
|
|
1030
|
+
className: ColumnConfigDialog_default.categoryTitle
|
|
1031
|
+
}, "All Columns"), /* @__PURE__ */ React10__default.default.createElement("span", {
|
|
1032
|
+
className: ColumnConfigDialog_default.categoryCount
|
|
1033
|
+
}, selectedCount, "/", totalCount), /* @__PURE__ */ React10__default.default.createElement(icons.CaretDown, {
|
|
1034
|
+
className: ColumnConfigDialog_default.caretIcon
|
|
1035
|
+
}))), /* @__PURE__ */ React10__default.default.createElement(collapsible.Collapsible.Panel, {
|
|
1036
|
+
className: ColumnConfigDialog_default.propertyList
|
|
1037
|
+
}, filteredColumns.length === 0 ? /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
1038
|
+
className: ColumnConfigDialog_default.emptyState
|
|
1039
|
+
}, "No matching columns found") : filteredColumns.map((column) => /* @__PURE__ */ React10__default.default.createElement(PropertyItem, {
|
|
1040
|
+
key: column.id,
|
|
1041
|
+
column,
|
|
1042
|
+
isSelected: visibleColumns.some((v) => v.id === column.id),
|
|
1043
|
+
onToggle: onToggleColumn
|
|
1044
|
+
})))));
|
|
1045
|
+
}
|
|
1046
|
+
function PropertyItem({
|
|
1047
|
+
column,
|
|
1048
|
+
isSelected,
|
|
1049
|
+
onToggle,
|
|
1050
|
+
showInfoIcon = false
|
|
1051
|
+
}) {
|
|
1052
|
+
const handleClick = React10.useCallback(() => {
|
|
1053
|
+
onToggle(column);
|
|
1054
|
+
}, [onToggle, column]);
|
|
1055
|
+
return /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
1056
|
+
className: ColumnConfigDialog_default.propertyItem
|
|
1057
|
+
}, /* @__PURE__ */ React10__default.default.createElement(Checkbox, {
|
|
1058
|
+
checked: isSelected,
|
|
1059
|
+
onCheckedChange: handleClick,
|
|
1060
|
+
className: ColumnConfigDialog_default.checkbox
|
|
1061
|
+
}), /* @__PURE__ */ React10__default.default.createElement(button.Button, {
|
|
1062
|
+
onClick: handleClick,
|
|
1063
|
+
className: ColumnConfigDialog_default.propertyName
|
|
1064
|
+
}, column.label), showInfoIcon && /* @__PURE__ */ React10__default.default.createElement(icons.SmallInfoSign, {
|
|
1065
|
+
className: ColumnConfigDialog_default.infoIcon
|
|
1066
|
+
}));
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
// src/object-table/MultiColumnSortDialog.module.css
|
|
1070
|
+
var MultiColumnSortDialog_default = {};
|
|
1071
|
+
function SortableItemsList({
|
|
1072
|
+
items,
|
|
1073
|
+
onReorder,
|
|
1074
|
+
onRemove,
|
|
1075
|
+
className
|
|
1076
|
+
}) {
|
|
1077
|
+
const renderContent = React10.useCallback((item) => item.content, []);
|
|
1078
|
+
return /* @__PURE__ */ React10__default.default.createElement(DraggableList, {
|
|
1079
|
+
items,
|
|
1080
|
+
onReorder,
|
|
1081
|
+
onRemove,
|
|
1082
|
+
removeIconVariant: "cross",
|
|
1083
|
+
renderContent,
|
|
1084
|
+
className
|
|
1085
|
+
});
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
// src/object-table/MultiColumnSortDialog.tsx
|
|
1089
|
+
function MultiColumnSortDialog({
|
|
1090
|
+
isOpen,
|
|
1091
|
+
onClose,
|
|
1092
|
+
onApply,
|
|
1093
|
+
currentSorting,
|
|
1094
|
+
columnOptions
|
|
1095
|
+
}) {
|
|
1096
|
+
const [selectedSortColumns, setSelectedSortColumns] = React10.useState([]);
|
|
1097
|
+
const [menuSearchQuery, setMenuSearchQuery] = React10.useState("");
|
|
1098
|
+
React10.useEffect(() => {
|
|
1099
|
+
if (isOpen) {
|
|
1100
|
+
const selectedColumns = [];
|
|
1101
|
+
for (const sort of currentSorting) {
|
|
1102
|
+
const column = columnOptions.find((col) => col.id === sort.id);
|
|
1103
|
+
if (column) {
|
|
1104
|
+
selectedColumns.push({
|
|
1105
|
+
...column,
|
|
1106
|
+
direction: sort.desc ? "desc" : "asc"
|
|
1107
|
+
});
|
|
1108
|
+
}
|
|
1109
|
+
}
|
|
1110
|
+
setSelectedSortColumns(selectedColumns);
|
|
1111
|
+
}
|
|
1112
|
+
}, [isOpen, currentSorting, columnOptions]);
|
|
1113
|
+
const handleAddColumn = React10.useCallback((column) => {
|
|
1114
|
+
setSelectedSortColumns((prev) => [...prev, {
|
|
1115
|
+
...column,
|
|
1116
|
+
direction: "asc"
|
|
1117
|
+
}]);
|
|
1118
|
+
}, []);
|
|
1119
|
+
const handleRemoveSortColumn = React10.useCallback((id) => {
|
|
1120
|
+
setSelectedSortColumns((prev) => prev.filter((item) => item.id !== id));
|
|
1121
|
+
}, []);
|
|
1122
|
+
const handleReorderSortColumns = React10.useCallback((fromIndex, toIndex) => {
|
|
1123
|
+
setSelectedSortColumns((items) => sortable.arrayMove(items, fromIndex, toIndex));
|
|
1124
|
+
}, []);
|
|
1125
|
+
const handleToggleSortDirection = React10.useCallback((id) => {
|
|
1126
|
+
setSelectedSortColumns((prev) => prev.map((item) => item.id === id ? {
|
|
1127
|
+
...item,
|
|
1128
|
+
direction: item.direction === "asc" ? "desc" : "asc"
|
|
1129
|
+
} : item));
|
|
1130
|
+
}, []);
|
|
1131
|
+
const handleApply = React10.useCallback(() => {
|
|
1132
|
+
const sortingState = selectedSortColumns.map((col) => ({
|
|
1133
|
+
id: col.id,
|
|
1134
|
+
desc: col.direction === "desc"
|
|
1135
|
+
}));
|
|
1136
|
+
onApply(sortingState);
|
|
1137
|
+
onClose();
|
|
1138
|
+
}, [selectedSortColumns, onApply, onClose]);
|
|
1139
|
+
const availableColumns = React10.useMemo(() => columnOptions.filter((col) => col.canSort && !selectedSortColumns.some((selected) => selected.id === col.id)), [columnOptions, selectedSortColumns]);
|
|
1140
|
+
const filteredAvailableColumns = React10.useMemo(() => {
|
|
1141
|
+
const query = menuSearchQuery.toLowerCase().trim();
|
|
1142
|
+
if (!query) {
|
|
1143
|
+
return availableColumns;
|
|
1144
|
+
}
|
|
1145
|
+
return availableColumns.filter((col) => col.name.toLowerCase().includes(query));
|
|
1146
|
+
}, [availableColumns, menuSearchQuery]);
|
|
1147
|
+
const handleMenuSearchChange = React10.useCallback((event) => {
|
|
1148
|
+
setMenuSearchQuery(event.target.value);
|
|
1149
|
+
}, []);
|
|
1150
|
+
const handleMenuOpenChange = React10.useCallback((open) => {
|
|
1151
|
+
if (open) {
|
|
1152
|
+
setMenuSearchQuery("");
|
|
1153
|
+
}
|
|
1154
|
+
}, []);
|
|
1155
|
+
const sortableItems = React10.useMemo(() => {
|
|
1156
|
+
return selectedSortColumns.map((item) => ({
|
|
1157
|
+
id: item.id,
|
|
1158
|
+
label: item.name,
|
|
1159
|
+
content: /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
1160
|
+
className: MultiColumnSortDialog_default.sortColumnItem
|
|
1161
|
+
}, /* @__PURE__ */ React10__default.default.createElement("span", {
|
|
1162
|
+
className: classNames7__default.default(MultiColumnSortDialog_default.sortColumnName, MultiColumnSortDialog_default.truncate)
|
|
1163
|
+
}, item.name), /* @__PURE__ */ React10__default.default.createElement(button.Button, {
|
|
1164
|
+
className: MultiColumnSortDialog_default.sortDirectionButton,
|
|
1165
|
+
onClick: () => handleToggleSortDirection(item.id),
|
|
1166
|
+
"aria-label": `Toggle sort direction for ${item.name}`
|
|
1167
|
+
}, item.direction === "asc" ? /* @__PURE__ */ React10__default.default.createElement(icons.SortAlphabetical, {
|
|
1168
|
+
className: MultiColumnSortDialog_default.sortIcon
|
|
1169
|
+
}) : /* @__PURE__ */ React10__default.default.createElement(icons.SortAlphabeticalDesc, {
|
|
1170
|
+
className: MultiColumnSortDialog_default.sortIcon
|
|
1171
|
+
})))
|
|
1172
|
+
}));
|
|
1173
|
+
}, [selectedSortColumns, handleToggleSortDirection]);
|
|
1174
|
+
const footer = React10.useMemo(() => /* @__PURE__ */ React10__default.default.createElement(React10__default.default.Fragment, null, /* @__PURE__ */ React10__default.default.createElement(ActionButton, {
|
|
1175
|
+
onClick: onClose
|
|
1176
|
+
}, "Cancel"), /* @__PURE__ */ React10__default.default.createElement(ActionButton, {
|
|
1177
|
+
variant: "primary",
|
|
1178
|
+
onClick: handleApply
|
|
1179
|
+
}, "Apply")), [handleApply, onClose]);
|
|
1180
|
+
return /* @__PURE__ */ React10__default.default.createElement(Dialog, {
|
|
1181
|
+
isOpen,
|
|
1182
|
+
onOpenChange: onClose,
|
|
1183
|
+
title: DialogTitle2,
|
|
1184
|
+
footer
|
|
1185
|
+
}, /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
1186
|
+
className: MultiColumnSortDialog_default.sortColumnsList
|
|
1187
|
+
}, /* @__PURE__ */ React10__default.default.createElement(SortableItemsList, {
|
|
1188
|
+
items: sortableItems,
|
|
1189
|
+
onReorder: handleReorderSortColumns,
|
|
1190
|
+
onRemove: handleRemoveSortColumn,
|
|
1191
|
+
className: MultiColumnSortDialog_default.sortableList
|
|
1192
|
+
}), /* @__PURE__ */ React10__default.default.createElement(menu.Menu.Root, {
|
|
1193
|
+
onOpenChange: handleMenuOpenChange
|
|
1194
|
+
}, /* @__PURE__ */ React10__default.default.createElement(menu.Menu.Trigger, {
|
|
1195
|
+
className: MultiColumnSortDialog_default.addColumnButton,
|
|
1196
|
+
disabled: availableColumns.length === 0,
|
|
1197
|
+
"aria-label": "Add column to sort"
|
|
1198
|
+
}, /* @__PURE__ */ React10__default.default.createElement(icons.Add, {
|
|
1199
|
+
className: MultiColumnSortDialog_default.addIcon
|
|
1200
|
+
}), /* @__PURE__ */ React10__default.default.createElement("span", {
|
|
1201
|
+
className: MultiColumnSortDialog_default.addColumnText
|
|
1202
|
+
}, "Add Column to Sort"), /* @__PURE__ */ React10__default.default.createElement(icons.CaretDown, {
|
|
1203
|
+
color: "currentColor"
|
|
1204
|
+
})), /* @__PURE__ */ React10__default.default.createElement(menu.Menu.Portal, null, /* @__PURE__ */ React10__default.default.createElement(menu.Menu.Positioner, {
|
|
1205
|
+
className: MultiColumnSortDialog_default.menuPositioner,
|
|
1206
|
+
sideOffset: 4
|
|
1207
|
+
}, /* @__PURE__ */ React10__default.default.createElement(menu.Menu.Popup, {
|
|
1208
|
+
className: MultiColumnSortDialog_default.dropdownMenu
|
|
1209
|
+
}, /* @__PURE__ */ React10__default.default.createElement(SearchBar, {
|
|
1210
|
+
value: menuSearchQuery,
|
|
1211
|
+
onChange: handleMenuSearchChange,
|
|
1212
|
+
placeholder: "Search columns",
|
|
1213
|
+
"aria-label": "Search columns to sort",
|
|
1214
|
+
className: MultiColumnSortDialog_default.menuSearchContainer,
|
|
1215
|
+
onKeyDown: (e) => e.stopPropagation()
|
|
1216
|
+
}), filteredAvailableColumns.map((column) => /* @__PURE__ */ React10__default.default.createElement(AvailableColumnMenuItem, {
|
|
1217
|
+
key: column.id,
|
|
1218
|
+
column,
|
|
1219
|
+
onAddColumn: handleAddColumn
|
|
1220
|
+
})), filteredAvailableColumns.length === 0 && /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
1221
|
+
className: MultiColumnSortDialog_default.menuEmptyState
|
|
1222
|
+
}, "No matching columns")))))));
|
|
1223
|
+
}
|
|
1224
|
+
var DialogTitle2 = /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
1225
|
+
className: MultiColumnSortDialog_default.title
|
|
1226
|
+
}, /* @__PURE__ */ React10__default.default.createElement(icons.Cog, null), "Sort on Multiple Columns");
|
|
1227
|
+
function AvailableColumnMenuItem({
|
|
1228
|
+
column,
|
|
1229
|
+
onAddColumn
|
|
1230
|
+
}) {
|
|
1231
|
+
const onClick = React10.useCallback(() => onAddColumn(column), [onAddColumn, column]);
|
|
1232
|
+
return /* @__PURE__ */ React10__default.default.createElement(menu.Menu.Item, {
|
|
1233
|
+
className: classNames7__default.default(MultiColumnSortDialog_default.dropdownItem, MultiColumnSortDialog_default.truncate),
|
|
1234
|
+
onClick
|
|
1235
|
+
}, column.name);
|
|
1236
|
+
}
|
|
1237
|
+
|
|
546
1238
|
// src/object-table/TableHeader.module.css
|
|
547
1239
|
var TableHeader_default = {};
|
|
548
1240
|
|
|
@@ -553,7 +1245,7 @@ var TableHeaderContent_default = {};
|
|
|
553
1245
|
function TableHeaderContent({
|
|
554
1246
|
header
|
|
555
1247
|
}) {
|
|
556
|
-
return /* @__PURE__ */
|
|
1248
|
+
return /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
557
1249
|
className: TableHeaderContent_default.osdkHeaderContent
|
|
558
1250
|
}, reactTable.flexRender(header.column.columnDef.header, header.getContext()));
|
|
559
1251
|
}
|
|
@@ -568,24 +1260,38 @@ function HeaderMenuItem({
|
|
|
568
1260
|
label,
|
|
569
1261
|
active = false
|
|
570
1262
|
}) {
|
|
571
|
-
return /* @__PURE__ */
|
|
1263
|
+
return /* @__PURE__ */ React10__default.default.createElement(menu.Menu.Item, {
|
|
572
1264
|
closeOnClick: true,
|
|
573
|
-
className:
|
|
1265
|
+
className: classNames7__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderMenuItem, active && TableHeaderWithPopover_default.osdkHeaderActiveMenuItem),
|
|
574
1266
|
onClick
|
|
575
|
-
}, /* @__PURE__ */
|
|
1267
|
+
}, /* @__PURE__ */ React10__default.default.createElement(Icon, {
|
|
576
1268
|
className: TableHeaderWithPopover_default.osdkHeaderIcon,
|
|
577
1269
|
color: "currentColor"
|
|
578
|
-
}), /* @__PURE__ */
|
|
1270
|
+
}), /* @__PURE__ */ React10__default.default.createElement("span", null, label));
|
|
579
1271
|
}
|
|
580
1272
|
function TableHeaderWithPopover({
|
|
581
1273
|
header,
|
|
1274
|
+
table,
|
|
582
1275
|
isColumnPinned,
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
1276
|
+
onResetSize,
|
|
1277
|
+
columnOptions,
|
|
1278
|
+
featureFlags,
|
|
1279
|
+
onOpenColumnConfig,
|
|
1280
|
+
onOpenMultiSort
|
|
586
1281
|
}) {
|
|
587
|
-
const
|
|
588
|
-
|
|
1282
|
+
const {
|
|
1283
|
+
showSortingItems = false,
|
|
1284
|
+
showPinningItems = false,
|
|
1285
|
+
showResizeItem = false,
|
|
1286
|
+
showConfigItem = false
|
|
1287
|
+
} = featureFlags ?? {};
|
|
1288
|
+
const {
|
|
1289
|
+
setColumnPinning,
|
|
1290
|
+
setSorting
|
|
1291
|
+
} = table;
|
|
1292
|
+
const currentSorting = table.getState().sorting;
|
|
1293
|
+
const [isOpen, setIsOpen] = React10.useState(false);
|
|
1294
|
+
const handlePinLeft = React10.useCallback(() => {
|
|
589
1295
|
setColumnPinning((prev) => {
|
|
590
1296
|
return {
|
|
591
1297
|
left: [...prev.left || [], header.column.id],
|
|
@@ -593,7 +1299,7 @@ function TableHeaderWithPopover({
|
|
|
593
1299
|
};
|
|
594
1300
|
});
|
|
595
1301
|
}, [header.column.id, setColumnPinning]);
|
|
596
|
-
const handleUnpin =
|
|
1302
|
+
const handleUnpin = React10.useCallback(() => {
|
|
597
1303
|
setColumnPinning((prev) => {
|
|
598
1304
|
return {
|
|
599
1305
|
left: prev.left?.filter((id) => id !== header.column.id) || [],
|
|
@@ -601,98 +1307,116 @@ function TableHeaderWithPopover({
|
|
|
601
1307
|
};
|
|
602
1308
|
});
|
|
603
1309
|
}, [header.column.id, setColumnPinning]);
|
|
604
|
-
const handleSortAscending =
|
|
1310
|
+
const handleSortAscending = React10.useCallback(() => {
|
|
605
1311
|
header.column.toggleSorting(false);
|
|
606
|
-
|
|
1312
|
+
setSorting?.([{
|
|
607
1313
|
id: header.column.id,
|
|
608
1314
|
desc: false
|
|
609
1315
|
}]);
|
|
610
|
-
}, [header.column,
|
|
611
|
-
const handleSortDescending =
|
|
1316
|
+
}, [header.column, setSorting]);
|
|
1317
|
+
const handleSortDescending = React10.useCallback(() => {
|
|
612
1318
|
header.column.toggleSorting(true);
|
|
613
|
-
|
|
1319
|
+
setSorting?.([{
|
|
614
1320
|
id: header.column.id,
|
|
615
1321
|
desc: true
|
|
616
1322
|
}]);
|
|
617
|
-
}, [header.column,
|
|
618
|
-
const handleClearAllSorts =
|
|
1323
|
+
}, [header.column, setSorting]);
|
|
1324
|
+
const handleClearAllSorts = React10.useCallback(() => {
|
|
619
1325
|
header.column.clearSorting();
|
|
620
|
-
|
|
621
|
-
}, [header.column,
|
|
622
|
-
const handleResetSize =
|
|
1326
|
+
setSorting?.([]);
|
|
1327
|
+
}, [header.column, setSorting]);
|
|
1328
|
+
const handleResetSize = React10.useCallback(() => {
|
|
623
1329
|
header.column.resetSize();
|
|
624
1330
|
if (onResetSize) {
|
|
625
1331
|
onResetSize();
|
|
626
1332
|
}
|
|
627
1333
|
}, [header.column, onResetSize]);
|
|
628
|
-
const handleInteraction =
|
|
1334
|
+
const handleInteraction = React10.useCallback((e) => {
|
|
629
1335
|
e.preventDefault();
|
|
630
1336
|
setIsOpen((prev) => !prev);
|
|
631
1337
|
}, []);
|
|
1338
|
+
const handleOpenColumnConfig = React10.useCallback(() => {
|
|
1339
|
+
onOpenColumnConfig?.();
|
|
1340
|
+
setIsOpen(false);
|
|
1341
|
+
}, [onOpenColumnConfig]);
|
|
1342
|
+
const handleOpenMultiSort = React10.useCallback(() => {
|
|
1343
|
+
onOpenMultiSort?.();
|
|
1344
|
+
setIsOpen(false);
|
|
1345
|
+
}, [onOpenMultiSort]);
|
|
632
1346
|
const isSorted = header.column.getIsSorted();
|
|
633
1347
|
const isSortable = header.column.getCanSort();
|
|
634
|
-
|
|
1348
|
+
const sortIndex = currentSorting?.findIndex((s) => s.id === header.column.id) ?? -1;
|
|
1349
|
+
const hasAnyMenuItems = showPinningItems || showSortingItems && isSortable || showResizeItem || showConfigItem;
|
|
1350
|
+
return /* @__PURE__ */ React10__default.default.createElement(React10__default.default.Fragment, null, /* @__PURE__ */ React10__default.default.createElement(menu.Menu.Root, {
|
|
635
1351
|
open: isOpen,
|
|
636
1352
|
onOpenChange: setIsOpen
|
|
637
|
-
}, /* @__PURE__ */
|
|
638
|
-
className:
|
|
1353
|
+
}, /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
1354
|
+
className: classNames7__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContainer),
|
|
639
1355
|
onContextMenu: handleInteraction
|
|
640
|
-
}, /* @__PURE__ */
|
|
641
|
-
className:
|
|
642
|
-
}, isColumnPinned && /* @__PURE__ */
|
|
1356
|
+
}, /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
1357
|
+
className: classNames7__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContentLeft)
|
|
1358
|
+
}, isColumnPinned && /* @__PURE__ */ React10__default.default.createElement(icons.Pin, {
|
|
643
1359
|
className: TableHeaderWithPopover_default.osdkHeaderIcon,
|
|
644
1360
|
color: "currentColor"
|
|
645
|
-
}), /* @__PURE__ */
|
|
1361
|
+
}), /* @__PURE__ */ React10__default.default.createElement(TableHeaderContent, {
|
|
646
1362
|
header
|
|
647
|
-
})), /* @__PURE__ */
|
|
648
|
-
className:
|
|
649
|
-
}, isSorted && /* @__PURE__ */
|
|
1363
|
+
})), /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
1364
|
+
className: classNames7__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkContentGap, TableHeaderWithPopover_default.osdkHeaderContentRight)
|
|
1365
|
+
}, isSorted && /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
650
1366
|
className: TableHeaderWithPopover_default.osdkCenterContainer
|
|
651
|
-
}, isSorted === "asc" ? /* @__PURE__ */
|
|
652
|
-
className: TableHeaderWithPopover_default.osdkHeaderIcon
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
})), /* @__PURE__ */
|
|
1367
|
+
}, isSorted === "asc" ? /* @__PURE__ */ React10__default.default.createElement(icons.SortAlphabetical, {
|
|
1368
|
+
className: TableHeaderWithPopover_default.osdkHeaderIcon
|
|
1369
|
+
}) : /* @__PURE__ */ React10__default.default.createElement(icons.SortAlphabeticalDesc, {
|
|
1370
|
+
className: TableHeaderWithPopover_default.osdkHeaderIcon
|
|
1371
|
+
}), currentSorting.length > 1 && sortIndex >= 0 && /* @__PURE__ */ React10__default.default.createElement("span", {
|
|
1372
|
+
className: TableHeaderWithPopover_default.sortIndex
|
|
1373
|
+
}, sortIndex + 1)), hasAnyMenuItems && /* @__PURE__ */ React10__default.default.createElement(menu.Menu.Trigger, {
|
|
658
1374
|
"aria-label": `Open header menu for column with id=${header.column.id}`,
|
|
659
|
-
className:
|
|
660
|
-
}, /* @__PURE__ */
|
|
1375
|
+
className: classNames7__default.default(TableHeaderWithPopover_default.osdkCenterContainer, TableHeaderWithPopover_default.osdkHeaderPopoverTrigger)
|
|
1376
|
+
}, /* @__PURE__ */ React10__default.default.createElement(icons.ChevronDown, {
|
|
661
1377
|
className: TableHeaderWithPopover_default.osdkHeaderIcon
|
|
662
|
-
}))), /* @__PURE__ */
|
|
1378
|
+
}))), /* @__PURE__ */ React10__default.default.createElement(menu.Menu.Portal, {
|
|
663
1379
|
container: document.body
|
|
664
|
-
}, /* @__PURE__ */
|
|
1380
|
+
}, /* @__PURE__ */ React10__default.default.createElement(menu.Menu.Positioner, {
|
|
665
1381
|
sideOffset: 4
|
|
666
|
-
}, /* @__PURE__ */
|
|
1382
|
+
}, /* @__PURE__ */ React10__default.default.createElement(menu.Menu.Popup, {
|
|
667
1383
|
className: TableHeaderWithPopover_default.osdkHeaderPopup
|
|
668
|
-
}, !isColumnPinned && /* @__PURE__ */
|
|
1384
|
+
}, showPinningItems && !isColumnPinned && /* @__PURE__ */ React10__default.default.createElement(HeaderMenuItem, {
|
|
669
1385
|
onClick: handlePinLeft,
|
|
670
1386
|
icon: icons.Pin,
|
|
671
1387
|
label: "Pin column"
|
|
672
|
-
}), isColumnPinned && /* @__PURE__ */
|
|
1388
|
+
}), showPinningItems && isColumnPinned && /* @__PURE__ */ React10__default.default.createElement(HeaderMenuItem, {
|
|
673
1389
|
onClick: handleUnpin,
|
|
674
1390
|
icon: icons.Unpin,
|
|
675
1391
|
label: "Unpin Column",
|
|
676
1392
|
active: true
|
|
677
|
-
}), isSortable && /* @__PURE__ */
|
|
1393
|
+
}), showSortingItems && isSortable && /* @__PURE__ */ React10__default.default.createElement(React10__default.default.Fragment, null, /* @__PURE__ */ React10__default.default.createElement(HeaderMenuItem, {
|
|
678
1394
|
onClick: handleSortAscending,
|
|
679
1395
|
icon: icons.SortAlphabetical,
|
|
680
1396
|
label: "Sort ascending",
|
|
681
1397
|
active: isSorted === "asc"
|
|
682
|
-
}), /* @__PURE__ */
|
|
1398
|
+
}), /* @__PURE__ */ React10__default.default.createElement(HeaderMenuItem, {
|
|
683
1399
|
onClick: handleSortDescending,
|
|
684
1400
|
icon: icons.SortAlphabeticalDesc,
|
|
685
1401
|
label: "Sort descending",
|
|
686
1402
|
active: isSorted === "desc"
|
|
687
|
-
})
|
|
1403
|
+
}), columnOptions?.some((col) => col.canSort) && /* @__PURE__ */ React10__default.default.createElement(HeaderMenuItem, {
|
|
1404
|
+
onClick: handleOpenMultiSort,
|
|
1405
|
+
icon: icons.Sort,
|
|
1406
|
+
label: "Sort on multiple columns"
|
|
1407
|
+
})), showSortingItems && !!currentSorting?.length && /* @__PURE__ */ React10__default.default.createElement(HeaderMenuItem, {
|
|
688
1408
|
onClick: handleClearAllSorts,
|
|
689
1409
|
icon: icons.Remove,
|
|
690
1410
|
label: "Clear all sorts"
|
|
691
|
-
}), /* @__PURE__ */
|
|
1411
|
+
}), showResizeItem && /* @__PURE__ */ React10__default.default.createElement(HeaderMenuItem, {
|
|
692
1412
|
onClick: handleResetSize,
|
|
693
1413
|
icon: icons.VerticalDistribution,
|
|
694
1414
|
label: "Reset Column Size"
|
|
695
|
-
})
|
|
1415
|
+
}), showConfigItem && /* @__PURE__ */ React10__default.default.createElement(HeaderMenuItem, {
|
|
1416
|
+
onClick: handleOpenColumnConfig,
|
|
1417
|
+
icon: icons.Settings,
|
|
1418
|
+
label: "Configure Columns"
|
|
1419
|
+
})))))));
|
|
696
1420
|
}
|
|
697
1421
|
|
|
698
1422
|
// src/object-table/utils/getColumnPinningStyles.ts
|
|
@@ -708,14 +1432,80 @@ function getColumnPinningStyles(column) {
|
|
|
708
1432
|
}
|
|
709
1433
|
|
|
710
1434
|
// src/object-table/TableHeader.tsx
|
|
1435
|
+
var getHeaderName = (column, allHeaders) => {
|
|
1436
|
+
const {
|
|
1437
|
+
id,
|
|
1438
|
+
columnDef
|
|
1439
|
+
} = column;
|
|
1440
|
+
const header = allHeaders.find((header2) => header2.id === id);
|
|
1441
|
+
const headerDef = columnDef.header;
|
|
1442
|
+
if (headerDef) {
|
|
1443
|
+
if (typeof headerDef === "string") {
|
|
1444
|
+
return headerDef;
|
|
1445
|
+
}
|
|
1446
|
+
if (header) {
|
|
1447
|
+
const displayedHeader = headerDef(header.getContext());
|
|
1448
|
+
if (typeof displayedHeader === "string") return displayedHeader;
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
const {
|
|
1452
|
+
meta
|
|
1453
|
+
} = columnDef;
|
|
1454
|
+
return meta?.columnName ?? id;
|
|
1455
|
+
};
|
|
711
1456
|
function TableHeader({
|
|
712
|
-
table
|
|
1457
|
+
table,
|
|
1458
|
+
headerMenuFeatureFlags
|
|
713
1459
|
}) {
|
|
1460
|
+
const {
|
|
1461
|
+
setColumnOrder,
|
|
1462
|
+
setColumnVisibility,
|
|
1463
|
+
setSorting
|
|
1464
|
+
} = table;
|
|
1465
|
+
const currentSorting = table.getState().sorting;
|
|
1466
|
+
const currentVisibility = table.getState().columnVisibility;
|
|
1467
|
+
const currentColumnOrder = table.getState().columnOrder;
|
|
714
1468
|
const isResizing = !!table.getState().columnSizingInfo?.isResizingColumn;
|
|
715
|
-
|
|
1469
|
+
const [configDialogOpen, setConfigDialogOpen] = React10.useState(false);
|
|
1470
|
+
const [multiSortDialogOpen, setMultiSortDialogOpen] = React10.useState(false);
|
|
1471
|
+
const handleOpenColumnConfig = React10.useCallback(() => {
|
|
1472
|
+
setConfigDialogOpen(true);
|
|
1473
|
+
}, []);
|
|
1474
|
+
const handleCloseColumnConfig = React10.useCallback(() => {
|
|
1475
|
+
setConfigDialogOpen(false);
|
|
1476
|
+
}, []);
|
|
1477
|
+
const handleOpenMultiSort = React10.useCallback(() => {
|
|
1478
|
+
setMultiSortDialogOpen(true);
|
|
1479
|
+
}, []);
|
|
1480
|
+
const handleCloseMultiSort = React10.useCallback(() => {
|
|
1481
|
+
setMultiSortDialogOpen(false);
|
|
1482
|
+
}, []);
|
|
1483
|
+
const handleApplyMultiSort = React10.useCallback((sortColumns) => {
|
|
1484
|
+
setMultiSortDialogOpen(false);
|
|
1485
|
+
setSorting?.(sortColumns);
|
|
1486
|
+
}, [setSorting]);
|
|
1487
|
+
const handleApplyColumnConfig = React10.useCallback((updates) => {
|
|
1488
|
+
const newVisibilityState = {};
|
|
1489
|
+
for (const update of updates) {
|
|
1490
|
+
newVisibilityState[update.columnId] = update.isVisible;
|
|
1491
|
+
}
|
|
1492
|
+
setColumnOrder(updates.map((col) => col.columnId));
|
|
1493
|
+
setColumnVisibility(newVisibilityState);
|
|
1494
|
+
}, [setColumnOrder, setColumnVisibility]);
|
|
1495
|
+
const columnOptions = React10.useMemo(() => {
|
|
1496
|
+
const allHeaders = table.getHeaderGroups().flatMap((headerGroup) => headerGroup.headers);
|
|
1497
|
+
return table.getAllColumns().filter((column) => column.id !== SELECTION_COLUMN_ID).map((column) => {
|
|
1498
|
+
return {
|
|
1499
|
+
id: column.id,
|
|
1500
|
+
name: getHeaderName(column, allHeaders),
|
|
1501
|
+
canSort: column.getCanSort()
|
|
1502
|
+
};
|
|
1503
|
+
});
|
|
1504
|
+
}, [table]);
|
|
1505
|
+
return /* @__PURE__ */ React10__default.default.createElement(React10__default.default.Fragment, null, /* @__PURE__ */ React10__default.default.createElement("thead", {
|
|
716
1506
|
className: TableHeader_default.osdkTableHeader,
|
|
717
1507
|
"data-resizing": isResizing
|
|
718
|
-
}, table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */
|
|
1508
|
+
}, table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ React10__default.default.createElement("tr", {
|
|
719
1509
|
key: headerGroup.id,
|
|
720
1510
|
className: TableHeader_default.osdkTableHeaderRow
|
|
721
1511
|
}, headerGroup.headers.map((header) => {
|
|
@@ -724,24 +1514,41 @@ function TableHeader({
|
|
|
724
1514
|
} = getColumnPinningStyles(header.column);
|
|
725
1515
|
const isColumnPinned = header.column.getIsPinned();
|
|
726
1516
|
const isSelectColumn = header.id === SELECTION_COLUMN_ID;
|
|
727
|
-
return /* @__PURE__ */
|
|
1517
|
+
return /* @__PURE__ */ React10__default.default.createElement("th", {
|
|
728
1518
|
key: header.id,
|
|
729
1519
|
"data-pinned": header.column.getIsPinned(),
|
|
730
1520
|
className: TableHeader_default.osdkTableHeaderCell,
|
|
731
1521
|
style: columnStyles
|
|
732
|
-
}, header.isPlaceholder ? null : isSelectColumn ? /* @__PURE__ */
|
|
1522
|
+
}, header.isPlaceholder ? null : isSelectColumn ? /* @__PURE__ */ React10__default.default.createElement(TableHeaderContent, {
|
|
733
1523
|
header
|
|
734
|
-
}) : /* @__PURE__ */
|
|
1524
|
+
}) : /* @__PURE__ */ React10__default.default.createElement(TableHeaderWithPopover, {
|
|
1525
|
+
table,
|
|
735
1526
|
header,
|
|
736
1527
|
isColumnPinned,
|
|
737
|
-
|
|
738
|
-
|
|
1528
|
+
columnOptions,
|
|
1529
|
+
featureFlags: headerMenuFeatureFlags,
|
|
1530
|
+
onOpenColumnConfig: handleOpenColumnConfig,
|
|
1531
|
+
onOpenMultiSort: handleOpenMultiSort
|
|
1532
|
+
}), header.column.getCanResize() && headerMenuFeatureFlags?.showResizeItem !== false && /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
739
1533
|
className: TableHeader_default.osdkTableHeaderResizer,
|
|
740
1534
|
onDoubleClick: () => header.column.resetSize(),
|
|
741
1535
|
onMouseDown: header.getResizeHandler(),
|
|
742
1536
|
onTouchStart: header.getResizeHandler()
|
|
743
1537
|
}));
|
|
744
|
-
}))))
|
|
1538
|
+
})))), !!columnOptions?.length && /* @__PURE__ */ React10__default.default.createElement(ColumnConfigDialog, {
|
|
1539
|
+
isOpen: configDialogOpen,
|
|
1540
|
+
onClose: handleCloseColumnConfig,
|
|
1541
|
+
columnOptions,
|
|
1542
|
+
currentVisibility,
|
|
1543
|
+
currentColumnOrder,
|
|
1544
|
+
onApply: handleApplyColumnConfig
|
|
1545
|
+
}), columnOptions?.some((col) => col.canSort) && /* @__PURE__ */ React10__default.default.createElement(MultiColumnSortDialog, {
|
|
1546
|
+
isOpen: multiSortDialogOpen,
|
|
1547
|
+
onClose: handleCloseMultiSort,
|
|
1548
|
+
columnOptions,
|
|
1549
|
+
currentSorting,
|
|
1550
|
+
onApply: handleApplyMultiSort
|
|
1551
|
+
}));
|
|
745
1552
|
}
|
|
746
1553
|
|
|
747
1554
|
// src/object-table/LoadingStateTable.tsx
|
|
@@ -753,15 +1560,15 @@ function LoadingStateTable({
|
|
|
753
1560
|
rowHeight = 40,
|
|
754
1561
|
columnWidth = 120
|
|
755
1562
|
}) {
|
|
756
|
-
const
|
|
757
|
-
const minHeaderCount =
|
|
758
|
-
const headers = headerGroups[0]
|
|
1563
|
+
const enableRowSelection = table.options.enableRowSelection;
|
|
1564
|
+
const minHeaderCount = enableRowSelection ? 1 : 0;
|
|
1565
|
+
const headers = React10.useMemo(() => headerGroups.length > 0 ? headerGroups[0].headers : [], [headerGroups]);
|
|
759
1566
|
const hasHeadersLoaded = headers.length > minHeaderCount;
|
|
760
|
-
const headerRef =
|
|
761
|
-
const bodyRef =
|
|
762
|
-
const [loadingRowCount, setLoadingRowCount] =
|
|
763
|
-
const [loadingColumnCount, setLoadingColumnCount] =
|
|
764
|
-
|
|
1567
|
+
const headerRef = React10.useRef(null);
|
|
1568
|
+
const bodyRef = React10.useRef(null);
|
|
1569
|
+
const [loadingRowCount, setLoadingRowCount] = React10.useState(MIN_ROWS);
|
|
1570
|
+
const [loadingColumnCount, setLoadingColumnCount] = React10.useState(headers.length);
|
|
1571
|
+
React10.useEffect(() => {
|
|
765
1572
|
if (hasHeadersLoaded) {
|
|
766
1573
|
setLoadingColumnCount(headers.length);
|
|
767
1574
|
} else {
|
|
@@ -774,7 +1581,7 @@ function LoadingStateTable({
|
|
|
774
1581
|
}
|
|
775
1582
|
}
|
|
776
1583
|
}, [columnWidth, hasHeadersLoaded, headers, tableContainerRef]);
|
|
777
|
-
|
|
1584
|
+
React10.useEffect(() => {
|
|
778
1585
|
if (tableContainerRef.current) {
|
|
779
1586
|
const containerHeight = tableContainerRef.current.clientHeight;
|
|
780
1587
|
const availableHeight = containerHeight - rowHeight;
|
|
@@ -784,32 +1591,32 @@ function LoadingStateTable({
|
|
|
784
1591
|
}
|
|
785
1592
|
}
|
|
786
1593
|
}, [tableContainerRef, rowHeight]);
|
|
787
|
-
return /* @__PURE__ */
|
|
1594
|
+
return /* @__PURE__ */ React10__default.default.createElement(React10__default.default.Fragment, null, hasHeadersLoaded ? /* @__PURE__ */ React10__default.default.createElement(TableHeader, {
|
|
788
1595
|
table
|
|
789
|
-
}) : /* @__PURE__ */
|
|
1596
|
+
}) : /* @__PURE__ */ React10__default.default.createElement("thead", {
|
|
790
1597
|
className: TableHeader_default.osdkTableHeader,
|
|
791
1598
|
ref: headerRef
|
|
792
|
-
}, /* @__PURE__ */
|
|
1599
|
+
}, /* @__PURE__ */ React10__default.default.createElement("tr", {
|
|
793
1600
|
className: TableHeader_default.osdkTableHeaderRow
|
|
794
1601
|
}, Array.from({
|
|
795
1602
|
length: loadingColumnCount
|
|
796
1603
|
}).map((_, index) => {
|
|
797
1604
|
const width = headers.length > index ? headers[index].getSize() : columnWidth;
|
|
798
|
-
return /* @__PURE__ */
|
|
1605
|
+
return /* @__PURE__ */ React10__default.default.createElement("th", {
|
|
799
1606
|
key: `loading-header-${index}`,
|
|
800
1607
|
className: TableHeader_default.osdkTableHeaderCell,
|
|
801
1608
|
style: {
|
|
802
1609
|
width
|
|
803
1610
|
}
|
|
804
|
-
}, /* @__PURE__ */
|
|
805
|
-
className:
|
|
1611
|
+
}, /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
1612
|
+
className: classNames7__default.default(TableHeader_default.osdkLoadingHeaderCell, LoadingCell_default.osdkCellSkeleton)
|
|
806
1613
|
}));
|
|
807
|
-
}))), /* @__PURE__ */
|
|
1614
|
+
}))), /* @__PURE__ */ React10__default.default.createElement("tbody", {
|
|
808
1615
|
className: TableBody_default.osdkTableBody,
|
|
809
1616
|
ref: bodyRef
|
|
810
1617
|
}, Array.from({
|
|
811
1618
|
length: loadingRowCount
|
|
812
|
-
}).map((_, index) => /* @__PURE__ */
|
|
1619
|
+
}).map((_, index) => /* @__PURE__ */ React10__default.default.createElement(LoadingRow, {
|
|
813
1620
|
key: `skeleton-${index}`,
|
|
814
1621
|
columnCount: loadingColumnCount,
|
|
815
1622
|
headers,
|
|
@@ -826,9 +1633,9 @@ var NonIdealState_default = {};
|
|
|
826
1633
|
function NonIdealState({
|
|
827
1634
|
message
|
|
828
1635
|
}) {
|
|
829
|
-
return /* @__PURE__ */
|
|
1636
|
+
return /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
830
1637
|
className: NonIdealState_default.container
|
|
831
|
-
}, /* @__PURE__ */
|
|
1638
|
+
}, /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
832
1639
|
className: NonIdealState_default.message
|
|
833
1640
|
}, message));
|
|
834
1641
|
}
|
|
@@ -846,8 +1653,8 @@ function CellContextMenu({
|
|
|
846
1653
|
onClose,
|
|
847
1654
|
renderContent
|
|
848
1655
|
}) {
|
|
849
|
-
const ref =
|
|
850
|
-
|
|
1656
|
+
const ref = React10.useRef(null);
|
|
1657
|
+
React10.useEffect(() => {
|
|
851
1658
|
const handleClickOutside = (event) => {
|
|
852
1659
|
if (ref.current && !ref.current.contains(event.target)) {
|
|
853
1660
|
onClose();
|
|
@@ -858,7 +1665,7 @@ function CellContextMenu({
|
|
|
858
1665
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
859
1666
|
};
|
|
860
1667
|
}, [onClose]);
|
|
861
|
-
return /* @__PURE__ */ reactDom.createPortal(/* @__PURE__ */
|
|
1668
|
+
return /* @__PURE__ */ reactDom.createPortal(/* @__PURE__ */ React10__default.default.createElement("div", {
|
|
862
1669
|
ref,
|
|
863
1670
|
className: CellContextMenu_default.osdkCellContextMenu,
|
|
864
1671
|
style: {
|
|
@@ -871,9 +1678,9 @@ function CellContextMenu({
|
|
|
871
1678
|
var useCellContextMenu = ({
|
|
872
1679
|
tdRef
|
|
873
1680
|
}) => {
|
|
874
|
-
const [popoverPosition, setPopoverPosition] =
|
|
875
|
-
const [isContextMenuOpen, setIsContextMenuOpen] =
|
|
876
|
-
const handleOpenContextMenu =
|
|
1681
|
+
const [popoverPosition, setPopoverPosition] = React10.useState(null);
|
|
1682
|
+
const [isContextMenuOpen, setIsContextMenuOpen] = React10.useState(false);
|
|
1683
|
+
const handleOpenContextMenu = React10.useCallback((event) => {
|
|
877
1684
|
event.preventDefault();
|
|
878
1685
|
event.stopPropagation();
|
|
879
1686
|
if (tdRef.current) {
|
|
@@ -887,7 +1694,7 @@ var useCellContextMenu = ({
|
|
|
887
1694
|
setIsContextMenuOpen(true);
|
|
888
1695
|
}
|
|
889
1696
|
}, [tdRef]);
|
|
890
|
-
const handleCloseContextMenu =
|
|
1697
|
+
const handleCloseContextMenu = React10.useCallback(() => {
|
|
891
1698
|
setIsContextMenuOpen(false);
|
|
892
1699
|
setPopoverPosition(null);
|
|
893
1700
|
}, []);
|
|
@@ -904,7 +1711,7 @@ function TableCell({
|
|
|
904
1711
|
cell,
|
|
905
1712
|
renderCellContextMenu
|
|
906
1713
|
}) {
|
|
907
|
-
const tdRef =
|
|
1714
|
+
const tdRef = React10.useRef(null);
|
|
908
1715
|
const isSelectColumn = cell.column.id === SELECTION_COLUMN_ID;
|
|
909
1716
|
const {
|
|
910
1717
|
isContextMenuOpen,
|
|
@@ -918,15 +1725,15 @@ function TableCell({
|
|
|
918
1725
|
const {
|
|
919
1726
|
columnStyles
|
|
920
1727
|
} = getColumnPinningStyles(cell.column);
|
|
921
|
-
return /* @__PURE__ */
|
|
1728
|
+
return /* @__PURE__ */ React10__default.default.createElement(React10__default.default.Fragment, null, /* @__PURE__ */ React10__default.default.createElement("td", {
|
|
922
1729
|
ref: tdRef,
|
|
923
1730
|
"data-pinned": cell.column.getIsPinned(),
|
|
924
1731
|
className: TableCell_default.osdkTableCell,
|
|
925
1732
|
style: columnStyles,
|
|
926
1733
|
onContextMenu: handleOpenContextMenu
|
|
927
|
-
}, /* @__PURE__ */
|
|
1734
|
+
}, /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
928
1735
|
className: TableCell_default.osdkTableCellContent
|
|
929
|
-
}, reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()))), shouldRenderContextMenu && /* @__PURE__ */
|
|
1736
|
+
}, reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()))), shouldRenderContextMenu && /* @__PURE__ */ React10__default.default.createElement(CellContextMenu, {
|
|
930
1737
|
cell,
|
|
931
1738
|
position: popoverPosition,
|
|
932
1739
|
onClose: handleCloseContextMenu,
|
|
@@ -941,10 +1748,10 @@ function TableRow({
|
|
|
941
1748
|
onRowClick,
|
|
942
1749
|
renderCellContextMenu
|
|
943
1750
|
}) {
|
|
944
|
-
const handleClick =
|
|
1751
|
+
const handleClick = React10.useCallback(() => {
|
|
945
1752
|
onRowClick?.(row.original);
|
|
946
1753
|
}, [onRowClick, row.original]);
|
|
947
|
-
return /* @__PURE__ */
|
|
1754
|
+
return /* @__PURE__ */ React10__default.default.createElement("tr", {
|
|
948
1755
|
"data-selected": row.getIsSelected(),
|
|
949
1756
|
className: TableRow_default.osdkTableRow,
|
|
950
1757
|
style: {
|
|
@@ -952,7 +1759,7 @@ function TableRow({
|
|
|
952
1759
|
transform: `translateY(${virtualRow.start}px)`
|
|
953
1760
|
},
|
|
954
1761
|
onClick: handleClick
|
|
955
|
-
}, row.getVisibleCells().map((cell) => /* @__PURE__ */
|
|
1762
|
+
}, row.getVisibleCells().map((cell) => /* @__PURE__ */ React10__default.default.createElement(TableCell, {
|
|
956
1763
|
key: cell.id,
|
|
957
1764
|
cell,
|
|
958
1765
|
renderCellContextMenu
|
|
@@ -975,27 +1782,27 @@ function TableBody({
|
|
|
975
1782
|
getScrollElement: () => tableContainerRef.current,
|
|
976
1783
|
overscan: 5
|
|
977
1784
|
});
|
|
978
|
-
|
|
1785
|
+
React10.useLayoutEffect(() => {
|
|
979
1786
|
rowVirtualizer.measure();
|
|
980
1787
|
}, [rowVirtualizer, rows.length]);
|
|
981
1788
|
const totalSize = rowVirtualizer.getTotalSize();
|
|
982
1789
|
const bodyHeight = isLoadingMore ? totalSize + rowHeight : totalSize;
|
|
983
1790
|
const headers = headerGroups[0]?.headers ?? [];
|
|
984
|
-
return /* @__PURE__ */
|
|
1791
|
+
return /* @__PURE__ */ React10__default.default.createElement("tbody", {
|
|
985
1792
|
className: TableBody_default.osdkTableBody,
|
|
986
1793
|
style: {
|
|
987
1794
|
height: `${bodyHeight}px`
|
|
988
1795
|
}
|
|
989
1796
|
}, rowVirtualizer.getVirtualItems().map((virtualRow) => {
|
|
990
1797
|
const row = rows[virtualRow.index];
|
|
991
|
-
return /* @__PURE__ */
|
|
1798
|
+
return /* @__PURE__ */ React10__default.default.createElement(TableRow, {
|
|
992
1799
|
key: row.id,
|
|
993
1800
|
row,
|
|
994
1801
|
virtualRow,
|
|
995
1802
|
onRowClick,
|
|
996
1803
|
renderCellContextMenu
|
|
997
1804
|
});
|
|
998
|
-
}), isLoadingMore && /* @__PURE__ */
|
|
1805
|
+
}), isLoadingMore && /* @__PURE__ */ React10__default.default.createElement(LoadingRow, {
|
|
999
1806
|
headers,
|
|
1000
1807
|
translateY: totalSize,
|
|
1001
1808
|
rowHeight,
|
|
@@ -1012,17 +1819,18 @@ function BaseTable({
|
|
|
1012
1819
|
rowHeight,
|
|
1013
1820
|
renderCellContextMenu,
|
|
1014
1821
|
className,
|
|
1015
|
-
error
|
|
1822
|
+
error,
|
|
1823
|
+
headerMenuFeatureFlags
|
|
1016
1824
|
}) {
|
|
1017
|
-
const tableContainerRef =
|
|
1018
|
-
const [isLoadingMore, setIsLoadingMore] =
|
|
1019
|
-
const fetchingRef =
|
|
1020
|
-
|
|
1825
|
+
const tableContainerRef = React10.useRef(null);
|
|
1826
|
+
const [isLoadingMore, setIsLoadingMore] = React10.useState(false);
|
|
1827
|
+
const fetchingRef = React10.useRef(false);
|
|
1828
|
+
React10.useEffect(() => {
|
|
1021
1829
|
if (!isLoading || fetchNextPage == null) {
|
|
1022
1830
|
setIsLoadingMore(false);
|
|
1023
1831
|
}
|
|
1024
1832
|
}, [isLoading, fetchNextPage]);
|
|
1025
|
-
const fetchMoreOnEndReached =
|
|
1833
|
+
const fetchMoreOnEndReached = React10.useCallback(async (containerRefElement) => {
|
|
1026
1834
|
if (containerRefElement && !fetchingRef.current && !isLoadingMore) {
|
|
1027
1835
|
const {
|
|
1028
1836
|
scrollHeight,
|
|
@@ -1040,26 +1848,25 @@ function BaseTable({
|
|
|
1040
1848
|
}
|
|
1041
1849
|
}
|
|
1042
1850
|
}, [fetchNextPage, isLoading, isLoadingMore]);
|
|
1043
|
-
const handleScroll =
|
|
1851
|
+
const handleScroll = React10.useCallback(async (e) => {
|
|
1044
1852
|
await fetchMoreOnEndReached(e.currentTarget);
|
|
1045
1853
|
}, [fetchMoreOnEndReached]);
|
|
1046
1854
|
const rows = table.getRowModel().rows;
|
|
1047
1855
|
const headerGroups = table.getHeaderGroups();
|
|
1048
1856
|
const hasData = rows.length > 0;
|
|
1049
|
-
return /* @__PURE__ */
|
|
1857
|
+
return /* @__PURE__ */ React10__default.default.createElement("div", {
|
|
1050
1858
|
ref: tableContainerRef,
|
|
1051
|
-
className:
|
|
1859
|
+
className: classNames7__default.default(Table_default.osdkTableContainer, className),
|
|
1052
1860
|
onScroll: handleScroll
|
|
1053
|
-
}, /* @__PURE__ */
|
|
1861
|
+
}, /* @__PURE__ */ React10__default.default.createElement("table", null, isLoading && !hasData ? /* @__PURE__ */ React10__default.default.createElement(LoadingStateTable, {
|
|
1054
1862
|
table,
|
|
1055
1863
|
headerGroups,
|
|
1056
1864
|
rowHeight,
|
|
1057
1865
|
tableContainerRef
|
|
1058
|
-
}) : /* @__PURE__ */
|
|
1059
|
-
table
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
}) : /* @__PURE__ */ React7__default.default.createElement(TableBody, {
|
|
1866
|
+
}) : /* @__PURE__ */ React10__default.default.createElement(React10__default.default.Fragment, null, /* @__PURE__ */ React10__default.default.createElement(TableHeader, {
|
|
1867
|
+
table,
|
|
1868
|
+
headerMenuFeatureFlags
|
|
1869
|
+
}), /* @__PURE__ */ React10__default.default.createElement(TableBody, {
|
|
1063
1870
|
rows,
|
|
1064
1871
|
tableContainerRef,
|
|
1065
1872
|
onRowClick,
|
|
@@ -1067,9 +1874,11 @@ function BaseTable({
|
|
|
1067
1874
|
renderCellContextMenu,
|
|
1068
1875
|
isLoadingMore,
|
|
1069
1876
|
headerGroups
|
|
1070
|
-
})), error
|
|
1877
|
+
}))), !hasData && error == null && /* @__PURE__ */ React10__default.default.createElement(NonIdealState, {
|
|
1878
|
+
message: "No Data"
|
|
1879
|
+
}), error != null && /* @__PURE__ */ React10__default.default.createElement(NonIdealState, {
|
|
1071
1880
|
message: `Error Loading Data: ${error.message}`
|
|
1072
|
-
}))
|
|
1881
|
+
}));
|
|
1073
1882
|
}
|
|
1074
1883
|
|
|
1075
1884
|
// src/object-table/ObjectTable.tsx
|
|
@@ -1081,13 +1890,24 @@ function ObjectTable({
|
|
|
1081
1890
|
defaultOrderBy,
|
|
1082
1891
|
onOrderByChanged,
|
|
1083
1892
|
onColumnsPinnedChanged,
|
|
1893
|
+
onColumnResize,
|
|
1084
1894
|
onRowSelection,
|
|
1085
1895
|
renderCellContextMenu,
|
|
1086
1896
|
selectionMode = "none",
|
|
1087
1897
|
selectedRows,
|
|
1898
|
+
onColumnVisibilityChanged,
|
|
1899
|
+
enableOrdering = true,
|
|
1900
|
+
enableColumnPinning = true,
|
|
1901
|
+
enableColumnResizing = true,
|
|
1902
|
+
enableColumnConfig = true,
|
|
1088
1903
|
...props
|
|
1089
1904
|
}) {
|
|
1090
|
-
const
|
|
1905
|
+
const {
|
|
1906
|
+
columnSizing,
|
|
1907
|
+
onColumnSizingChange
|
|
1908
|
+
} = useColumnResize({
|
|
1909
|
+
onColumnResize
|
|
1910
|
+
});
|
|
1091
1911
|
const {
|
|
1092
1912
|
sorting,
|
|
1093
1913
|
onSortingChange
|
|
@@ -1106,15 +1926,13 @@ function ObjectTable({
|
|
|
1106
1926
|
columns,
|
|
1107
1927
|
loading: isColumnsLoading
|
|
1108
1928
|
} = useColumnDefs(objectType, columnDefinitions);
|
|
1109
|
-
const columnVisibility = useColumnVisibility({
|
|
1110
|
-
columnDefinitions
|
|
1111
|
-
});
|
|
1112
1929
|
const {
|
|
1113
1930
|
rowSelection,
|
|
1114
1931
|
isAllSelected,
|
|
1115
1932
|
hasSelection,
|
|
1116
1933
|
onToggleAll,
|
|
1117
|
-
onToggleRow
|
|
1934
|
+
onToggleRow,
|
|
1935
|
+
enableRowSelection
|
|
1118
1936
|
} = useRowSelection({
|
|
1119
1937
|
selectionMode,
|
|
1120
1938
|
selectedRows,
|
|
@@ -1128,32 +1946,45 @@ function ObjectTable({
|
|
|
1128
1946
|
onToggleAll,
|
|
1129
1947
|
onToggleRow
|
|
1130
1948
|
});
|
|
1131
|
-
const
|
|
1132
|
-
|
|
1133
|
-
|
|
1949
|
+
const {
|
|
1950
|
+
columnVisibility,
|
|
1951
|
+
onColumnVisibilityChange,
|
|
1952
|
+
columnOrder,
|
|
1953
|
+
onColumnOrderChange
|
|
1954
|
+
} = useColumnVisibility({
|
|
1955
|
+
allColumns: columns,
|
|
1956
|
+
onColumnVisibilityChanged
|
|
1957
|
+
});
|
|
1134
1958
|
const {
|
|
1135
1959
|
columnPinning,
|
|
1136
1960
|
onColumnPinningChange
|
|
1137
1961
|
} = useColumnPinning({
|
|
1138
1962
|
columnDefinitions,
|
|
1139
|
-
hasSelectionColumn:
|
|
1963
|
+
hasSelectionColumn: enableRowSelection,
|
|
1140
1964
|
onColumnsPinnedChanged
|
|
1141
1965
|
});
|
|
1966
|
+
const allColumns = React10.useMemo(() => {
|
|
1967
|
+
return selectionColumn ? [selectionColumn, ...columns] : columns;
|
|
1968
|
+
}, [selectionColumn, columns]);
|
|
1142
1969
|
const table = reactTable.useReactTable({
|
|
1143
1970
|
data: data ?? [],
|
|
1144
1971
|
columns: allColumns,
|
|
1145
1972
|
getCoreRowModel: reactTable.getCoreRowModel(),
|
|
1146
1973
|
state: {
|
|
1147
1974
|
columnVisibility,
|
|
1975
|
+
columnOrder,
|
|
1148
1976
|
rowSelection,
|
|
1149
1977
|
sorting,
|
|
1150
1978
|
columnSizing,
|
|
1151
1979
|
columnPinning
|
|
1152
1980
|
},
|
|
1153
1981
|
onSortingChange,
|
|
1154
|
-
onColumnSizingChange
|
|
1982
|
+
onColumnSizingChange,
|
|
1155
1983
|
onColumnPinningChange,
|
|
1156
|
-
|
|
1984
|
+
onColumnVisibilityChange,
|
|
1985
|
+
onColumnOrderChange,
|
|
1986
|
+
enableRowSelection,
|
|
1987
|
+
enableSorting: enableOrdering,
|
|
1157
1988
|
columnResizeMode: "onChange",
|
|
1158
1989
|
columnResizeDirection: "ltr",
|
|
1159
1990
|
manualSorting: true,
|
|
@@ -1163,11 +1994,17 @@ function ObjectTable({
|
|
|
1163
1994
|
},
|
|
1164
1995
|
getRowId
|
|
1165
1996
|
});
|
|
1166
|
-
const onRenderCellContextMenu =
|
|
1997
|
+
const onRenderCellContextMenu = React10.useCallback((row, cell) => {
|
|
1167
1998
|
return renderCellContextMenu?.(row, cell.getValue());
|
|
1168
1999
|
}, [renderCellContextMenu]);
|
|
1169
2000
|
const isTableLoading = isLoading || isColumnsLoading;
|
|
1170
|
-
|
|
2001
|
+
const headerMenuFeatureFlags = React10.useMemo(() => ({
|
|
2002
|
+
showSortingItems: enableOrdering,
|
|
2003
|
+
showPinningItems: enableColumnPinning,
|
|
2004
|
+
showResizeItem: enableColumnResizing,
|
|
2005
|
+
showConfigItem: enableColumnConfig
|
|
2006
|
+
}), [enableOrdering, enableColumnPinning, enableColumnResizing, enableColumnConfig]);
|
|
2007
|
+
return /* @__PURE__ */ React10__default.default.createElement(BaseTable, {
|
|
1171
2008
|
table,
|
|
1172
2009
|
isLoading: isTableLoading,
|
|
1173
2010
|
fetchNextPage: fetchMore,
|
|
@@ -1175,11 +2012,13 @@ function ObjectTable({
|
|
|
1175
2012
|
rowHeight: props.rowHeight,
|
|
1176
2013
|
renderCellContextMenu: onRenderCellContextMenu,
|
|
1177
2014
|
className: props.className,
|
|
1178
|
-
error
|
|
2015
|
+
error,
|
|
2016
|
+
headerMenuFeatureFlags
|
|
1179
2017
|
});
|
|
1180
2018
|
}
|
|
1181
2019
|
|
|
1182
2020
|
exports.BaseTable = BaseTable;
|
|
2021
|
+
exports.ColumnConfigDialog = ColumnConfigDialog;
|
|
1183
2022
|
exports.ObjectTable = ObjectTable;
|
|
1184
2023
|
//# sourceMappingURL=experimental.cjs.map
|
|
1185
2024
|
//# sourceMappingURL=experimental.cjs.map
|