@osdk/react-components 0.1.0 → 0.2.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +98 -19
- package/README.md +56 -23
- package/build/browser/base-components/action-button/ActionButton.js +31 -0
- package/build/browser/base-components/action-button/ActionButton.js.map +1 -0
- package/build/browser/base-components/action-button/ActionButton.module.css +70 -0
- package/build/browser/base-components/action-button/ActionButton.module.css.js +8 -0
- package/build/browser/base-components/checkbox/Checkbox.js +27 -32
- package/build/browser/base-components/checkbox/Checkbox.module.css +79 -0
- package/build/browser/base-components/checkbox/Checkbox.module.css.js +7 -0
- package/build/browser/base-components/combobox/Combobox.js +124 -0
- package/build/browser/base-components/combobox/Combobox.js.map +1 -0
- package/build/browser/base-components/combobox/Combobox.module.css +177 -0
- package/build/browser/base-components/combobox/Combobox.module.css.js +16 -0
- package/build/browser/base-components/dialog/Dialog.js +52 -0
- package/build/browser/base-components/dialog/Dialog.js.map +1 -0
- package/build/browser/base-components/dialog/Dialog.module.css +101 -0
- package/build/browser/base-components/dialog/Dialog.module.css.js +13 -0
- package/build/browser/base-components/draggable-list/DraggableList.js +155 -0
- package/build/browser/base-components/draggable-list/DraggableList.js.map +1 -0
- package/build/browser/base-components/draggable-list/DraggableList.module.css +108 -0
- package/build/browser/base-components/draggable-list/DraggableList.module.css.js +11 -0
- package/build/browser/base-components/search-bar/SearchBar.js +44 -0
- package/build/browser/base-components/search-bar/SearchBar.js.map +1 -0
- package/build/browser/base-components/search-bar/SearchBar.module.css +53 -0
- package/build/browser/base-components/search-bar/SearchBar.module.css.js +8 -0
- package/build/browser/base-components/select/Select.js +89 -0
- package/build/browser/base-components/select/Select.js.map +1 -0
- package/build/browser/base-components/select/Select.module.css +138 -0
- package/build/browser/base-components/select/Select.module.css.js +11 -0
- package/build/browser/base-components/switch/Switch.js +33 -0
- package/build/browser/base-components/switch/Switch.js.map +1 -0
- package/build/browser/base-components/switch/Switch.module.css +91 -0
- package/build/browser/base-components/switch/Switch.module.css.js +7 -0
- package/build/browser/filter-list/FilterListApi.js.map +1 -1
- package/build/browser/filter-list/FilterListItemApi.js.map +1 -1
- package/build/browser/filter-list/__tests__/LinkedPropertyInput.test.js +202 -0
- package/build/browser/filter-list/__tests__/LinkedPropertyInput.test.js.map +1 -0
- package/build/browser/filter-list/__tests__/dateUtils.test.js +55 -0
- package/build/browser/filter-list/__tests__/dateUtils.test.js.map +1 -0
- package/build/browser/filter-list/__tests__/filterStateToWhereClause.test.js +296 -0
- package/build/browser/filter-list/__tests__/filterStateToWhereClause.test.js.map +1 -0
- package/build/browser/filter-list/__tests__/getFilterKey.test.js +53 -0
- package/build/browser/filter-list/__tests__/getFilterKey.test.js.map +1 -0
- package/build/browser/filter-list/__tests__/testUtils.js +203 -0
- package/build/browser/filter-list/__tests__/testUtils.js.map +1 -0
- package/build/browser/filter-list/base/FilterInput.js +542 -0
- package/build/browser/filter-list/base/FilterInput.js.map +1 -0
- package/build/browser/filter-list/base/FilterList.js +77 -0
- package/build/browser/filter-list/base/FilterList.js.map +1 -0
- package/build/browser/filter-list/base/FilterList.module.css +67 -0
- package/build/browser/filter-list/base/FilterList.module.css.js +8 -0
- package/build/browser/filter-list/base/FilterListContent.js +57 -0
- package/build/browser/filter-list/base/FilterListContent.js.map +1 -0
- package/build/browser/filter-list/base/FilterListContent.module.css +27 -0
- package/build/browser/filter-list/base/FilterListContent.module.css.js +7 -0
- package/build/browser/filter-list/base/FilterListHeader.js +58 -0
- package/build/browser/filter-list/base/FilterListHeader.js.map +1 -0
- package/build/browser/filter-list/base/FilterListHeader.module.css +127 -0
- package/build/browser/filter-list/base/FilterListHeader.module.css.js +13 -0
- package/build/browser/filter-list/base/FilterListItem.js +75 -0
- package/build/browser/filter-list/base/FilterListItem.js.map +1 -0
- package/build/browser/filter-list/base/FilterListItem.module.css +38 -0
- package/build/browser/filter-list/base/FilterListItem.module.css.js +9 -0
- package/build/browser/filter-list/base/index.js +22 -0
- package/build/browser/filter-list/base/index.js.map +1 -0
- package/build/browser/filter-list/base/inputs/CheckboxListInput.js +75 -0
- package/build/browser/filter-list/base/inputs/CheckboxListInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/CheckboxListInput.module.css +42 -0
- package/build/browser/filter-list/base/inputs/CheckboxListInput.module.css.js +9 -0
- package/build/browser/filter-list/base/inputs/ContainsTextInput.js +85 -0
- package/build/browser/filter-list/base/inputs/ContainsTextInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/ContainsTextInput.module.css +91 -0
- package/build/browser/filter-list/base/inputs/ContainsTextInput.module.css.js +10 -0
- package/build/browser/filter-list/base/inputs/DateRangeInput.js +37 -0
- package/build/browser/filter-list/base/inputs/DateRangeInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/LinkedPropertyInput.js +237 -0
- package/build/browser/filter-list/base/inputs/LinkedPropertyInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/LinkedPropertyInput.module.css +20 -0
- package/build/browser/filter-list/base/inputs/LinkedPropertyInput.module.css.js +6 -0
- package/build/browser/filter-list/base/inputs/ListogramInput.js +98 -0
- package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/ListogramInput.module.css +88 -0
- package/build/browser/filter-list/base/inputs/ListogramInput.module.css.js +12 -0
- package/build/browser/filter-list/base/inputs/MultiDateInput.js +82 -0
- package/build/browser/filter-list/base/inputs/MultiDateInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/MultiDateInput.module.css +54 -0
- package/build/browser/filter-list/base/inputs/MultiDateInput.module.css.js +9 -0
- package/build/browser/filter-list/base/inputs/MultiSelectInput.js +100 -0
- package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css +35 -0
- package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css.js +9 -0
- package/build/browser/filter-list/base/inputs/NullValueWrapper.js +76 -0
- package/build/browser/filter-list/base/inputs/NullValueWrapper.js.map +1 -0
- package/build/browser/filter-list/base/inputs/NullValueWrapper.module.css +49 -0
- package/build/browser/filter-list/base/inputs/NullValueWrapper.module.css.js +10 -0
- package/build/browser/filter-list/base/inputs/NumberRangeInput.js +48 -0
- package/build/browser/filter-list/base/inputs/NumberRangeInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/RangeInput.js +187 -0
- package/build/browser/filter-list/base/inputs/RangeInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/RangeInput.module.css +81 -0
- package/build/browser/filter-list/base/inputs/RangeInput.module.css.js +13 -0
- package/build/browser/filter-list/base/inputs/SingleDateInput.js +61 -0
- package/build/browser/filter-list/base/inputs/SingleDateInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/SingleDateInput.module.css +63 -0
- package/build/browser/filter-list/base/inputs/SingleDateInput.module.css.js +9 -0
- package/build/browser/filter-list/base/inputs/SingleSelectInput.js +95 -0
- package/build/browser/filter-list/base/inputs/SingleSelectInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/SingleSelectInput.module.css +55 -0
- package/build/browser/filter-list/base/inputs/SingleSelectInput.module.css.js +8 -0
- package/build/browser/filter-list/base/inputs/TextTagsInput.js +141 -0
- package/build/browser/filter-list/base/inputs/TextTagsInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/TextTagsInput.module.css +25 -0
- package/build/browser/filter-list/base/inputs/TextTagsInput.module.css.js +7 -0
- package/build/browser/filter-list/base/inputs/TimelineInput.js +74 -0
- package/build/browser/filter-list/base/inputs/TimelineInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/TimelineInput.module.css +73 -0
- package/build/browser/filter-list/base/inputs/TimelineInput.module.css.js +10 -0
- package/build/browser/filter-list/base/inputs/ToggleInput.js +43 -0
- package/build/browser/filter-list/base/inputs/ToggleInput.js.map +1 -0
- package/build/browser/filter-list/base/inputs/ToggleInput.module.css +34 -0
- package/build/browser/filter-list/base/inputs/ToggleInput.module.css.js +8 -0
- package/build/browser/filter-list/base/inputs/createHistogramBuckets.js +53 -0
- package/build/browser/filter-list/base/inputs/createHistogramBuckets.js.map +1 -0
- package/build/browser/filter-list/base/inputs/dateUtils.js +57 -0
- package/build/browser/filter-list/base/inputs/dateUtils.js.map +1 -0
- package/build/browser/filter-list/base/inputs/index.js +25 -0
- package/build/browser/filter-list/base/inputs/index.js.map +1 -0
- package/build/browser/filter-list/base/inputs/shared.module.css +79 -0
- package/build/browser/filter-list/base/inputs/shared.module.css.js +11 -0
- package/build/browser/filter-list/hooks/__tests__/useFilterListState.test.js +128 -0
- package/build/browser/filter-list/hooks/__tests__/useFilterListState.test.js.map +1 -0
- package/build/browser/filter-list/hooks/useFilterListState.js +119 -0
- package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -0
- package/build/browser/filter-list/hooks/usePropertyAggregation.js +92 -0
- package/build/browser/filter-list/hooks/usePropertyAggregation.js.map +1 -0
- package/build/browser/filter-list/types/AddFilterMenuTypes.js +2 -0
- package/build/browser/filter-list/types/AddFilterMenuTypes.js.map +1 -0
- package/build/browser/filter-list/types/CustomRendererTypes.js +2 -0
- package/build/browser/filter-list/types/CustomRendererTypes.js.map +1 -0
- package/build/browser/filter-list/types/FilterPanelTypes.js +2 -0
- package/build/browser/filter-list/types/FilterPanelTypes.js.map +1 -0
- package/build/browser/filter-list/types/KeywordSearchTypes.js +2 -0
- package/build/browser/filter-list/types/KeywordSearchTypes.js.map +1 -0
- package/build/browser/filter-list/types/LinkedFilterTypes.js +2 -0
- package/build/browser/filter-list/types/LinkedFilterTypes.js.map +1 -0
- package/build/browser/filter-list/types/index.js +22 -0
- package/build/browser/filter-list/types/index.js.map +1 -0
- package/build/browser/filter-list/utils/aggregationHelpers.js +44 -0
- package/build/browser/filter-list/utils/aggregationHelpers.js.map +1 -0
- package/build/browser/filter-list/utils/assertUnreachable.js +25 -0
- package/build/browser/filter-list/utils/assertUnreachable.js.map +1 -0
- package/build/browser/filter-list/utils/coerceFilterValue.js +33 -0
- package/build/browser/filter-list/utils/coerceFilterValue.js.map +1 -0
- package/build/browser/filter-list/utils/filterStateToWhereClause.js +337 -0
- package/build/browser/filter-list/utils/filterStateToWhereClause.js.map +1 -0
- package/build/browser/filter-list/utils/filterValues.js +55 -0
- package/build/browser/filter-list/utils/filterValues.js.map +1 -0
- package/build/browser/filter-list/utils/getFilterKey.js +34 -0
- package/build/browser/filter-list/utils/getFilterKey.js.map +1 -0
- package/build/browser/object-table/CellContextMenu.js +23 -20
- package/build/browser/object-table/CellContextMenu.module.css +20 -0
- package/build/browser/object-table/CellContextMenu.module.css.js +6 -0
- package/build/browser/object-table/ColumnConfigDialog.js +259 -0
- package/build/browser/object-table/ColumnConfigDialog.js.map +1 -0
- package/build/browser/object-table/ColumnConfigDialog.module.css +247 -0
- package/build/browser/object-table/ColumnConfigDialog.module.css.js +29 -0
- package/build/browser/object-table/DefaultCellRenderer.js +43 -0
- package/build/browser/object-table/DefaultCellRenderer.js.map +1 -0
- package/build/browser/object-table/EditableCell.js +91 -0
- package/build/browser/object-table/EditableCell.js.map +1 -0
- package/build/browser/object-table/EditableCell.module.css +3 -0
- package/build/browser/object-table/EditableCell.module.css.js +6 -0
- package/build/browser/object-table/LoadingCell.js +24 -29
- package/build/browser/object-table/LoadingCell.module.css +48 -0
- package/build/browser/object-table/LoadingCell.module.css.js +8 -0
- package/build/browser/object-table/LoadingRow.js +24 -50
- package/build/browser/object-table/LoadingStateTable.js +49 -343
- package/build/browser/object-table/LoadingStateTable.js.map +1 -1
- package/build/browser/object-table/MultiColumnSortDialog.js +178 -0
- package/build/browser/object-table/MultiColumnSortDialog.js.map +1 -0
- package/build/browser/object-table/MultiColumnSortDialog.module.css +195 -0
- package/build/browser/object-table/MultiColumnSortDialog.module.css.js +22 -0
- package/build/browser/object-table/NonIdealState.js +23 -20
- package/build/browser/object-table/NonIdealState.module.css +27 -0
- package/build/browser/object-table/NonIdealState.module.css.js +7 -0
- package/build/browser/object-table/ObjectTable.js +74 -15
- package/build/browser/object-table/ObjectTable.js.map +1 -1
- package/build/browser/object-table/ObjectTableApi.js.map +1 -1
- package/build/browser/object-table/SelectionCells.js +15 -4
- package/build/browser/object-table/SelectionCells.js.map +1 -1
- package/build/browser/object-table/SortableItemsList.js +35 -0
- package/build/browser/object-table/SortableItemsList.js.map +1 -0
- package/build/browser/object-table/Table.js +70 -935
- package/build/browser/object-table/Table.js.map +1 -1
- package/build/browser/object-table/Table.module.css +45 -0
- package/build/browser/object-table/Table.module.css.js +8 -0
- package/build/browser/object-table/TableBody.js +36 -260
- package/build/browser/object-table/TableBody.module.css +22 -0
- package/build/browser/object-table/TableBody.module.css.js +6 -0
- package/build/browser/object-table/TableCell.js +31 -111
- package/build/browser/object-table/TableCell.module.css +83 -0
- package/build/browser/object-table/TableCell.module.css.js +8 -0
- package/build/browser/object-table/TableHeader.js +126 -216
- package/build/browser/object-table/TableHeader.js.map +1 -1
- package/build/browser/object-table/TableHeader.module.css +108 -0
- package/build/browser/object-table/TableHeader.module.css.js +10 -0
- package/build/browser/object-table/TableHeaderContent.js +21 -18
- package/build/browser/object-table/TableHeaderContent.module.css +30 -0
- package/build/browser/object-table/TableHeaderContent.module.css.js +6 -0
- package/build/browser/object-table/TableHeaderWithPopover.js +110 -93
- package/build/browser/object-table/TableHeaderWithPopover.js.map +1 -1
- package/build/browser/object-table/TableHeaderWithPopover.module.css +141 -0
- package/build/browser/object-table/TableHeaderWithPopover.module.css.js +17 -0
- package/build/browser/object-table/TableRow.js +26 -144
- package/build/browser/object-table/TableRow.module.css +62 -0
- package/build/browser/object-table/TableRow.module.css.js +6 -0
- package/build/browser/object-table/__tests__/useEditableTable.test.js +197 -0
- package/build/browser/object-table/__tests__/useEditableTable.test.js.map +1 -0
- package/build/browser/object-table/hooks/__tests__/useColumnDefs.test.js +14 -2
- package/build/browser/object-table/hooks/__tests__/useColumnDefs.test.js.map +1 -1
- package/build/browser/object-table/hooks/__tests__/useColumnVisibility.test.js +160 -138
- package/build/browser/object-table/hooks/__tests__/useColumnVisibility.test.js.map +1 -1
- package/build/browser/object-table/hooks/__tests__/useObjectTableData.test.js +113 -25
- package/build/browser/object-table/hooks/__tests__/useObjectTableData.test.js.map +1 -1
- package/build/browser/object-table/hooks/__tests__/useRowSelection.test.js +48 -0
- package/build/browser/object-table/hooks/__tests__/useRowSelection.test.js.map +1 -1
- package/build/browser/object-table/hooks/__tests__/useSelectionColumn.test.js +27 -82
- package/build/browser/object-table/hooks/__tests__/useSelectionColumn.test.js.map +1 -1
- package/build/browser/object-table/hooks/__tests__/useTableSorting.test.js +290 -0
- package/build/browser/object-table/hooks/__tests__/useTableSorting.test.js.map +1 -1
- package/build/browser/object-table/hooks/useColumnDefs.js +16 -3
- package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
- package/build/browser/object-table/hooks/useColumnResize.js +45 -0
- package/build/browser/object-table/hooks/useColumnResize.js.map +1 -0
- package/build/browser/object-table/hooks/useColumnVisibility.js +52 -20
- package/build/browser/object-table/hooks/useColumnVisibility.js.map +1 -1
- package/build/browser/object-table/hooks/useEditableTable.js +57 -0
- package/build/browser/object-table/hooks/useEditableTable.js.map +1 -0
- package/build/browser/object-table/hooks/useObjectTableData.js +42 -7
- package/build/browser/object-table/hooks/useObjectTableData.js.map +1 -1
- package/build/browser/object-table/hooks/useRowSelection.js +31 -10
- package/build/browser/object-table/hooks/useRowSelection.js.map +1 -1
- package/build/browser/object-table/hooks/useSelectionColumn.js +15 -6
- package/build/browser/object-table/hooks/useSelectionColumn.js.map +1 -1
- package/build/browser/object-table/utils/getCellId.js +27 -0
- package/build/browser/object-table/utils/getCellId.js.map +1 -0
- package/build/browser/object-table/utils/types.js +2 -0
- package/build/browser/object-table/utils/types.js.map +1 -0
- package/build/browser/public/experimental.js +2 -0
- package/build/browser/public/experimental.js.map +1 -1
- package/build/browser/shared/ErrorBoundary.js +62 -0
- package/build/browser/shared/ErrorBoundary.js.map +1 -0
- package/build/browser/shared/ErrorBoundary.module.css +55 -0
- package/build/browser/shared/ErrorBoundary.module.css.js +8 -0
- package/build/browser/styles.css +3073 -0
- package/build/cjs/public/experimental.cjs +4026 -240
- package/build/cjs/public/experimental.cjs.map +1 -1
- package/build/cjs/public/experimental.css +1834 -154
- package/build/cjs/public/experimental.css.map +1 -1
- package/build/cjs/public/experimental.d.cts +453 -50
- package/build/esm/base-components/action-button/ActionButton.js +31 -0
- package/build/esm/base-components/action-button/ActionButton.js.map +1 -0
- package/build/esm/base-components/action-button/ActionButton.module.css +70 -0
- package/build/esm/base-components/checkbox/Checkbox.module.css +1 -1
- package/build/esm/base-components/combobox/Combobox.js +124 -0
- package/build/esm/base-components/combobox/Combobox.js.map +1 -0
- package/build/esm/base-components/combobox/Combobox.module.css +177 -0
- package/build/esm/base-components/dialog/Dialog.js +52 -0
- package/build/esm/base-components/dialog/Dialog.js.map +1 -0
- package/build/esm/base-components/dialog/Dialog.module.css +101 -0
- package/build/esm/base-components/draggable-list/DraggableList.js +155 -0
- package/build/esm/base-components/draggable-list/DraggableList.js.map +1 -0
- package/build/esm/base-components/draggable-list/DraggableList.module.css +108 -0
- package/build/esm/base-components/search-bar/SearchBar.js +44 -0
- package/build/esm/base-components/search-bar/SearchBar.js.map +1 -0
- package/build/esm/base-components/search-bar/SearchBar.module.css +53 -0
- package/build/esm/base-components/select/Select.js +89 -0
- package/build/esm/base-components/select/Select.js.map +1 -0
- package/build/esm/base-components/select/Select.module.css +138 -0
- package/build/esm/base-components/switch/Switch.js +33 -0
- package/build/esm/base-components/switch/Switch.js.map +1 -0
- package/build/esm/base-components/switch/Switch.module.css +91 -0
- package/build/esm/filter-list/FilterListApi.js.map +1 -1
- package/build/esm/filter-list/FilterListItemApi.js.map +1 -1
- package/build/esm/filter-list/__tests__/LinkedPropertyInput.test.js +202 -0
- package/build/esm/filter-list/__tests__/LinkedPropertyInput.test.js.map +1 -0
- package/build/esm/filter-list/__tests__/dateUtils.test.js +55 -0
- package/build/esm/filter-list/__tests__/dateUtils.test.js.map +1 -0
- package/build/esm/filter-list/__tests__/filterStateToWhereClause.test.js +296 -0
- package/build/esm/filter-list/__tests__/filterStateToWhereClause.test.js.map +1 -0
- package/build/esm/filter-list/__tests__/getFilterKey.test.js +53 -0
- package/build/esm/filter-list/__tests__/getFilterKey.test.js.map +1 -0
- package/build/esm/filter-list/__tests__/testUtils.js +203 -0
- package/build/esm/filter-list/__tests__/testUtils.js.map +1 -0
- package/build/esm/filter-list/base/FilterInput.js +542 -0
- package/build/esm/filter-list/base/FilterInput.js.map +1 -0
- package/build/esm/filter-list/base/FilterList.js +77 -0
- package/build/esm/filter-list/base/FilterList.js.map +1 -0
- package/build/esm/filter-list/base/FilterList.module.css +67 -0
- package/build/esm/filter-list/base/FilterListContent.js +57 -0
- package/build/esm/filter-list/base/FilterListContent.js.map +1 -0
- package/build/esm/filter-list/base/FilterListContent.module.css +27 -0
- package/build/esm/filter-list/base/FilterListHeader.js +58 -0
- package/build/esm/filter-list/base/FilterListHeader.js.map +1 -0
- package/build/esm/filter-list/base/FilterListHeader.module.css +127 -0
- package/build/esm/filter-list/base/FilterListItem.js +75 -0
- package/build/esm/filter-list/base/FilterListItem.js.map +1 -0
- package/build/esm/filter-list/base/FilterListItem.module.css +38 -0
- package/build/esm/filter-list/base/index.js +22 -0
- package/build/esm/filter-list/base/index.js.map +1 -0
- package/build/esm/filter-list/base/inputs/CheckboxListInput.js +75 -0
- package/build/esm/filter-list/base/inputs/CheckboxListInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/CheckboxListInput.module.css +42 -0
- package/build/esm/filter-list/base/inputs/ContainsTextInput.js +85 -0
- package/build/esm/filter-list/base/inputs/ContainsTextInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/ContainsTextInput.module.css +91 -0
- package/build/esm/filter-list/base/inputs/DateRangeInput.js +37 -0
- package/build/esm/filter-list/base/inputs/DateRangeInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/LinkedPropertyInput.js +237 -0
- package/build/esm/filter-list/base/inputs/LinkedPropertyInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/LinkedPropertyInput.module.css +20 -0
- package/build/esm/filter-list/base/inputs/ListogramInput.js +98 -0
- package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/ListogramInput.module.css +88 -0
- package/build/esm/filter-list/base/inputs/MultiDateInput.js +82 -0
- package/build/esm/filter-list/base/inputs/MultiDateInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/MultiDateInput.module.css +54 -0
- package/build/esm/filter-list/base/inputs/MultiSelectInput.js +100 -0
- package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/MultiSelectInput.module.css +35 -0
- package/build/esm/filter-list/base/inputs/NullValueWrapper.js +76 -0
- package/build/esm/filter-list/base/inputs/NullValueWrapper.js.map +1 -0
- package/build/esm/filter-list/base/inputs/NullValueWrapper.module.css +49 -0
- package/build/esm/filter-list/base/inputs/NumberRangeInput.js +48 -0
- package/build/esm/filter-list/base/inputs/NumberRangeInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/RangeInput.js +187 -0
- package/build/esm/filter-list/base/inputs/RangeInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/RangeInput.module.css +81 -0
- package/build/esm/filter-list/base/inputs/SingleDateInput.js +61 -0
- package/build/esm/filter-list/base/inputs/SingleDateInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/SingleDateInput.module.css +63 -0
- package/build/esm/filter-list/base/inputs/SingleSelectInput.js +95 -0
- package/build/esm/filter-list/base/inputs/SingleSelectInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/SingleSelectInput.module.css +55 -0
- package/build/esm/filter-list/base/inputs/TextTagsInput.js +141 -0
- package/build/esm/filter-list/base/inputs/TextTagsInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/TextTagsInput.module.css +25 -0
- package/build/esm/filter-list/base/inputs/TimelineInput.js +74 -0
- package/build/esm/filter-list/base/inputs/TimelineInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/TimelineInput.module.css +73 -0
- package/build/esm/filter-list/base/inputs/ToggleInput.js +43 -0
- package/build/esm/filter-list/base/inputs/ToggleInput.js.map +1 -0
- package/build/esm/filter-list/base/inputs/ToggleInput.module.css +34 -0
- package/build/esm/filter-list/base/inputs/createHistogramBuckets.js +53 -0
- package/build/esm/filter-list/base/inputs/createHistogramBuckets.js.map +1 -0
- package/build/esm/filter-list/base/inputs/dateUtils.js +57 -0
- package/build/esm/filter-list/base/inputs/dateUtils.js.map +1 -0
- package/build/esm/filter-list/base/inputs/index.js +25 -0
- package/build/esm/filter-list/base/inputs/index.js.map +1 -0
- package/build/esm/filter-list/base/inputs/shared.module.css +79 -0
- package/build/esm/filter-list/hooks/__tests__/useFilterListState.test.js +128 -0
- package/build/esm/filter-list/hooks/__tests__/useFilterListState.test.js.map +1 -0
- package/build/esm/filter-list/hooks/useFilterListState.js +119 -0
- package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -0
- package/build/esm/filter-list/hooks/usePropertyAggregation.js +92 -0
- package/build/esm/filter-list/hooks/usePropertyAggregation.js.map +1 -0
- package/build/esm/filter-list/types/AddFilterMenuTypes.js +2 -0
- package/build/esm/filter-list/types/AddFilterMenuTypes.js.map +1 -0
- package/build/esm/filter-list/types/CustomRendererTypes.js +2 -0
- package/build/esm/filter-list/types/CustomRendererTypes.js.map +1 -0
- package/build/esm/filter-list/types/FilterPanelTypes.js +2 -0
- package/build/esm/filter-list/types/FilterPanelTypes.js.map +1 -0
- package/build/esm/filter-list/types/KeywordSearchTypes.js +2 -0
- package/build/esm/filter-list/types/KeywordSearchTypes.js.map +1 -0
- package/build/esm/filter-list/types/LinkedFilterTypes.js +2 -0
- package/build/esm/filter-list/types/LinkedFilterTypes.js.map +1 -0
- package/build/esm/filter-list/types/index.js +22 -0
- package/build/esm/filter-list/types/index.js.map +1 -0
- package/build/esm/filter-list/utils/aggregationHelpers.js +44 -0
- package/build/esm/filter-list/utils/aggregationHelpers.js.map +1 -0
- package/build/esm/filter-list/utils/assertUnreachable.js +25 -0
- package/build/esm/filter-list/utils/assertUnreachable.js.map +1 -0
- package/build/esm/filter-list/utils/coerceFilterValue.js +33 -0
- package/build/esm/filter-list/utils/coerceFilterValue.js.map +1 -0
- package/build/esm/filter-list/utils/filterStateToWhereClause.js +337 -0
- package/build/esm/filter-list/utils/filterStateToWhereClause.js.map +1 -0
- package/build/esm/filter-list/utils/filterValues.js +55 -0
- package/build/esm/filter-list/utils/filterValues.js.map +1 -0
- package/build/esm/filter-list/utils/getFilterKey.js +34 -0
- package/build/esm/filter-list/utils/getFilterKey.js.map +1 -0
- package/build/esm/object-table/ColumnConfigDialog.js +259 -0
- package/build/esm/object-table/ColumnConfigDialog.js.map +1 -0
- package/build/esm/object-table/ColumnConfigDialog.module.css +247 -0
- package/build/esm/object-table/DefaultCellRenderer.js +43 -0
- package/build/esm/object-table/DefaultCellRenderer.js.map +1 -0
- package/build/esm/object-table/EditableCell.js +91 -0
- package/build/esm/object-table/EditableCell.js.map +1 -0
- package/build/esm/object-table/EditableCell.module.css +3 -0
- package/build/esm/object-table/LoadingStateTable.js +4 -4
- package/build/esm/object-table/LoadingStateTable.js.map +1 -1
- package/build/esm/object-table/MultiColumnSortDialog.js +178 -0
- package/build/esm/object-table/MultiColumnSortDialog.js.map +1 -0
- package/build/esm/object-table/MultiColumnSortDialog.module.css +195 -0
- package/build/esm/object-table/NonIdealState.module.css +2 -3
- package/build/esm/object-table/ObjectTable.js +74 -15
- package/build/esm/object-table/ObjectTable.js.map +1 -1
- package/build/esm/object-table/ObjectTableApi.js.map +1 -1
- package/build/esm/object-table/SelectionCells.js +15 -4
- package/build/esm/object-table/SelectionCells.js.map +1 -1
- package/build/esm/object-table/SortableItemsList.js +35 -0
- package/build/esm/object-table/SortableItemsList.js.map +1 -0
- package/build/esm/object-table/Table.js +25 -8
- package/build/esm/object-table/Table.js.map +1 -1
- package/build/esm/object-table/Table.module.css +26 -3
- package/build/esm/object-table/TableBody.module.css +2 -0
- package/build/esm/object-table/TableCell.module.css +22 -1
- package/build/esm/object-table/TableHeader.js +93 -6
- package/build/esm/object-table/TableHeader.js.map +1 -1
- package/build/esm/object-table/TableHeader.module.css +9 -2
- package/build/esm/object-table/TableHeaderWithPopover.js +53 -22
- package/build/esm/object-table/TableHeaderWithPopover.js.map +1 -1
- package/build/esm/object-table/TableHeaderWithPopover.module.css +56 -25
- package/build/esm/object-table/TableRow.module.css +2 -0
- package/build/esm/object-table/__tests__/useEditableTable.test.js +197 -0
- package/build/esm/object-table/__tests__/useEditableTable.test.js.map +1 -0
- package/build/esm/object-table/hooks/__tests__/useColumnDefs.test.js +14 -2
- package/build/esm/object-table/hooks/__tests__/useColumnDefs.test.js.map +1 -1
- package/build/esm/object-table/hooks/__tests__/useColumnVisibility.test.js +160 -138
- package/build/esm/object-table/hooks/__tests__/useColumnVisibility.test.js.map +1 -1
- package/build/esm/object-table/hooks/__tests__/useObjectTableData.test.js +113 -25
- package/build/esm/object-table/hooks/__tests__/useObjectTableData.test.js.map +1 -1
- package/build/esm/object-table/hooks/__tests__/useRowSelection.test.js +48 -0
- package/build/esm/object-table/hooks/__tests__/useRowSelection.test.js.map +1 -1
- package/build/esm/object-table/hooks/__tests__/useSelectionColumn.test.js +27 -82
- package/build/esm/object-table/hooks/__tests__/useSelectionColumn.test.js.map +1 -1
- package/build/esm/object-table/hooks/__tests__/useTableSorting.test.js +290 -0
- package/build/esm/object-table/hooks/__tests__/useTableSorting.test.js.map +1 -1
- package/build/esm/object-table/hooks/useColumnDefs.js +16 -3
- package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
- package/build/esm/object-table/hooks/useColumnResize.js +45 -0
- package/build/esm/object-table/hooks/useColumnResize.js.map +1 -0
- package/build/esm/object-table/hooks/useColumnVisibility.js +52 -20
- package/build/esm/object-table/hooks/useColumnVisibility.js.map +1 -1
- package/build/esm/object-table/hooks/useEditableTable.js +57 -0
- package/build/esm/object-table/hooks/useEditableTable.js.map +1 -0
- package/build/esm/object-table/hooks/useObjectTableData.js +42 -7
- package/build/esm/object-table/hooks/useObjectTableData.js.map +1 -1
- package/build/esm/object-table/hooks/useRowSelection.js +31 -10
- package/build/esm/object-table/hooks/useRowSelection.js.map +1 -1
- package/build/esm/object-table/hooks/useSelectionColumn.js +15 -6
- package/build/esm/object-table/hooks/useSelectionColumn.js.map +1 -1
- package/build/esm/object-table/utils/getCellId.js +27 -0
- package/build/esm/object-table/utils/getCellId.js.map +1 -0
- package/build/esm/object-table/utils/types.js +2 -0
- package/build/esm/object-table/utils/types.js.map +1 -0
- package/build/esm/public/experimental.js +2 -0
- package/build/esm/public/experimental.js.map +1 -1
- package/build/esm/shared/ErrorBoundary.js +62 -0
- package/build/esm/shared/ErrorBoundary.js.map +1 -0
- package/build/esm/shared/ErrorBoundary.module.css +55 -0
- package/build/types/base-components/action-button/ActionButton.d.ts +5 -0
- package/build/types/base-components/action-button/ActionButton.d.ts.map +1 -0
- package/build/types/base-components/combobox/Combobox.d.ts +52 -0
- package/build/types/base-components/combobox/Combobox.d.ts.map +1 -0
- package/build/types/base-components/dialog/Dialog.d.ts +10 -0
- package/build/types/base-components/dialog/Dialog.d.ts.map +1 -0
- package/build/types/base-components/draggable-list/DraggableList.d.ts +17 -0
- package/build/types/base-components/draggable-list/DraggableList.d.ts.map +1 -0
- package/build/types/base-components/search-bar/SearchBar.d.ts +11 -0
- package/build/types/base-components/search-bar/SearchBar.d.ts.map +1 -0
- package/build/types/base-components/select/Select.d.ts +34 -0
- package/build/types/base-components/select/Select.d.ts.map +1 -0
- package/build/types/base-components/switch/Switch.d.ts +10 -0
- package/build/types/base-components/switch/Switch.d.ts.map +1 -0
- package/build/types/filter-list/FilterListApi.d.ts +62 -17
- package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
- package/build/types/filter-list/FilterListItemApi.d.ts +101 -53
- package/build/types/filter-list/FilterListItemApi.d.ts.map +1 -1
- package/build/types/filter-list/__tests__/LinkedPropertyInput.test.d.ts +1 -0
- package/build/types/filter-list/__tests__/LinkedPropertyInput.test.d.ts.map +1 -0
- package/build/types/filter-list/__tests__/dateUtils.test.d.ts +1 -0
- package/build/types/filter-list/__tests__/dateUtils.test.d.ts.map +1 -0
- package/build/types/filter-list/__tests__/filterStateToWhereClause.test.d.ts +1 -0
- package/build/types/filter-list/__tests__/filterStateToWhereClause.test.d.ts.map +1 -0
- package/build/types/filter-list/__tests__/getFilterKey.test.d.ts +1 -0
- package/build/types/filter-list/__tests__/getFilterKey.test.d.ts.map +1 -0
- package/build/types/filter-list/__tests__/testUtils.d.ts +65 -0
- package/build/types/filter-list/__tests__/testUtils.d.ts.map +1 -0
- package/build/types/filter-list/base/FilterInput.d.ts +15 -0
- package/build/types/filter-list/base/FilterInput.d.ts.map +1 -0
- package/build/types/filter-list/base/FilterList.d.ts +4 -0
- package/build/types/filter-list/base/FilterList.d.ts.map +1 -0
- package/build/types/filter-list/base/FilterListContent.d.ts +16 -0
- package/build/types/filter-list/base/FilterListContent.d.ts.map +1 -0
- package/build/types/filter-list/base/FilterListHeader.d.ts +14 -0
- package/build/types/filter-list/base/FilterListHeader.d.ts.map +1 -0
- package/build/types/filter-list/base/FilterListItem.d.ts +18 -0
- package/build/types/filter-list/base/FilterListItem.d.ts.map +1 -0
- package/build/types/filter-list/base/index.d.ts +5 -0
- package/build/types/filter-list/base/index.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts +21 -0
- package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/ContainsTextInput.d.ts +13 -0
- package/build/types/filter-list/base/inputs/ContainsTextInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/DateRangeInput.d.ts +22 -0
- package/build/types/filter-list/base/inputs/DateRangeInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/LinkedPropertyInput.d.ts +21 -0
- package/build/types/filter-list/base/inputs/LinkedPropertyInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/ListogramInput.d.ts +22 -0
- package/build/types/filter-list/base/inputs/ListogramInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/MultiDateInput.d.ts +12 -0
- package/build/types/filter-list/base/inputs/MultiDateInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts +24 -0
- package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts +21 -0
- package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts +22 -0
- package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/RangeInput.d.ts +37 -0
- package/build/types/filter-list/base/inputs/RangeInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/SingleDateInput.d.ts +13 -0
- package/build/types/filter-list/base/inputs/SingleDateInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts +24 -0
- package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/TextTagsInput.d.ts +24 -0
- package/build/types/filter-list/base/inputs/TextTagsInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/TimelineInput.d.ts +11 -0
- package/build/types/filter-list/base/inputs/TimelineInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/ToggleInput.d.ts +10 -0
- package/build/types/filter-list/base/inputs/ToggleInput.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/createHistogramBuckets.d.ts +16 -0
- package/build/types/filter-list/base/inputs/createHistogramBuckets.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/dateUtils.d.ts +17 -0
- package/build/types/filter-list/base/inputs/dateUtils.d.ts.map +1 -0
- package/build/types/filter-list/base/inputs/index.d.ts +8 -0
- package/build/types/filter-list/base/inputs/index.d.ts.map +1 -0
- package/build/types/filter-list/hooks/__tests__/useFilterListState.test.d.ts +1 -0
- package/build/types/filter-list/hooks/__tests__/useFilterListState.test.d.ts.map +1 -0
- package/build/types/filter-list/hooks/useFilterListState.d.ts +11 -0
- package/build/types/filter-list/hooks/useFilterListState.d.ts.map +1 -0
- package/build/types/filter-list/hooks/usePropertyAggregation.d.ts +20 -0
- package/build/types/filter-list/hooks/usePropertyAggregation.d.ts.map +1 -0
- package/build/types/filter-list/types/AddFilterMenuTypes.d.ts +56 -0
- package/build/types/filter-list/types/AddFilterMenuTypes.d.ts.map +1 -0
- package/build/types/filter-list/types/CustomRendererTypes.d.ts +76 -0
- package/build/types/filter-list/types/CustomRendererTypes.d.ts.map +1 -0
- package/build/types/filter-list/types/FilterPanelTypes.d.ts +18 -0
- package/build/types/filter-list/types/FilterPanelTypes.d.ts.map +1 -0
- package/build/types/filter-list/types/KeywordSearchTypes.d.ts +56 -0
- package/build/types/filter-list/types/KeywordSearchTypes.d.ts.map +1 -0
- package/build/types/filter-list/types/LinkedFilterTypes.d.ts +89 -0
- package/build/types/filter-list/types/LinkedFilterTypes.d.ts.map +1 -0
- package/build/types/filter-list/types/index.d.ts +5 -0
- package/build/types/filter-list/types/index.d.ts.map +1 -0
- package/build/types/filter-list/utils/aggregationHelpers.d.ts +9 -0
- package/build/types/filter-list/utils/aggregationHelpers.d.ts.map +1 -0
- package/build/types/filter-list/utils/assertUnreachable.d.ts +6 -0
- package/build/types/filter-list/utils/assertUnreachable.d.ts.map +1 -0
- package/build/types/filter-list/utils/coerceFilterValue.d.ts +11 -0
- package/build/types/filter-list/utils/coerceFilterValue.d.ts.map +1 -0
- package/build/types/filter-list/utils/filterStateToWhereClause.d.ts +16 -0
- package/build/types/filter-list/utils/filterStateToWhereClause.d.ts.map +1 -0
- package/build/types/filter-list/utils/filterValues.d.ts +5 -0
- package/build/types/filter-list/utils/filterValues.d.ts.map +1 -0
- package/build/types/filter-list/utils/getFilterKey.d.ts +3 -0
- package/build/types/filter-list/utils/getFilterKey.d.ts.map +1 -0
- package/build/types/object-table/ColumnConfigDialog.d.ts +18 -0
- package/build/types/object-table/ColumnConfigDialog.d.ts.map +1 -0
- package/build/types/object-table/DefaultCellRenderer.d.ts +3 -0
- package/build/types/object-table/DefaultCellRenderer.d.ts.map +1 -0
- package/build/types/object-table/EditableCell.d.ts +10 -0
- package/build/types/object-table/EditableCell.d.ts.map +1 -0
- package/build/types/object-table/LoadingStateTable.d.ts.map +1 -1
- package/build/types/object-table/MultiColumnSortDialog.d.ts +15 -0
- package/build/types/object-table/MultiColumnSortDialog.d.ts.map +1 -0
- package/build/types/object-table/ObjectTable.d.ts +1 -1
- package/build/types/object-table/ObjectTable.d.ts.map +1 -1
- package/build/types/object-table/ObjectTableApi.d.ts +79 -8
- package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
- package/build/types/object-table/SortableItemsList.d.ts +13 -0
- package/build/types/object-table/SortableItemsList.d.ts.map +1 -0
- package/build/types/object-table/Table.d.ts +26 -1
- package/build/types/object-table/Table.d.ts.map +1 -1
- package/build/types/object-table/TableHeader.d.ts +3 -1
- package/build/types/object-table/TableHeader.d.ts.map +1 -1
- package/build/types/object-table/TableHeaderWithPopover.d.ts +30 -6
- package/build/types/object-table/TableHeaderWithPopover.d.ts.map +1 -1
- package/build/types/object-table/__tests__/useEditableTable.test.d.ts +1 -0
- package/build/types/object-table/__tests__/useEditableTable.test.d.ts.map +1 -0
- package/build/types/object-table/hooks/useColumnDefs.d.ts.map +1 -1
- package/build/types/object-table/hooks/useColumnResize.d.ts +10 -0
- package/build/types/object-table/hooks/useColumnResize.d.ts.map +1 -0
- package/build/types/object-table/hooks/useColumnVisibility.d.ts +18 -7
- package/build/types/object-table/hooks/useColumnVisibility.d.ts.map +1 -1
- package/build/types/object-table/hooks/useEditableTable.d.ts +22 -0
- package/build/types/object-table/hooks/useEditableTable.d.ts.map +1 -0
- package/build/types/object-table/hooks/useObjectTableData.d.ts +6 -5
- package/build/types/object-table/hooks/useObjectTableData.d.ts.map +1 -1
- package/build/types/object-table/hooks/useRowSelection.d.ts +5 -4
- package/build/types/object-table/hooks/useRowSelection.d.ts.map +1 -1
- package/build/types/object-table/utils/getCellId.d.ts +3 -0
- package/build/types/object-table/utils/getCellId.d.ts.map +1 -0
- package/build/types/object-table/utils/types.d.ts +14 -0
- package/build/types/object-table/utils/types.d.ts.map +1 -0
- package/build/types/public/experimental.d.ts +6 -2
- package/build/types/public/experimental.d.ts.map +1 -1
- package/build/types/shared/ErrorBoundary.d.ts +19 -0
- package/build/types/shared/ErrorBoundary.d.ts.map +1 -0
- package/package.json +17 -9
|
@@ -14,19 +14,89 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
import React from "react";
|
|
17
|
+
import React, { useCallback, useMemo, useState } from "react";
|
|
18
|
+
import { ColumnConfigDialog } from "./ColumnConfigDialog.js";
|
|
19
|
+
import { MultiColumnSortDialog } from "./MultiColumnSortDialog.js";
|
|
18
20
|
import styles from "./TableHeader.module.css";
|
|
19
21
|
import { TableHeaderContent } from "./TableHeaderContent.js";
|
|
20
22
|
import { TableHeaderWithPopover } from "./TableHeaderWithPopover.js";
|
|
21
23
|
import { SELECTION_COLUMN_ID } from "./utils/constants.js";
|
|
22
24
|
import { getColumnPinningStyles } from "./utils/getColumnPinningStyles.js";
|
|
25
|
+
const getHeaderName = (column, allHeaders) => {
|
|
26
|
+
const {
|
|
27
|
+
id,
|
|
28
|
+
columnDef
|
|
29
|
+
} = column;
|
|
30
|
+
const header = allHeaders.find(header => header.id === id);
|
|
31
|
+
const headerDef = columnDef.header;
|
|
32
|
+
if (headerDef) {
|
|
33
|
+
if (typeof headerDef === "string") {
|
|
34
|
+
return headerDef;
|
|
35
|
+
}
|
|
36
|
+
// Try to get header name from the renderHeader function
|
|
37
|
+
if (header) {
|
|
38
|
+
const displayedHeader = headerDef(header.getContext());
|
|
39
|
+
if (typeof displayedHeader === "string") return displayedHeader;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Fallback to use the columnName provided by user or id
|
|
43
|
+
const {
|
|
44
|
+
meta
|
|
45
|
+
} = columnDef;
|
|
46
|
+
return meta?.columnName ?? id;
|
|
47
|
+
};
|
|
23
48
|
export function TableHeader({
|
|
24
|
-
table
|
|
49
|
+
table,
|
|
50
|
+
headerMenuFeatureFlags
|
|
25
51
|
}) {
|
|
26
52
|
// TODO: If value is number type, right align header
|
|
27
53
|
|
|
54
|
+
const {
|
|
55
|
+
setColumnOrder,
|
|
56
|
+
setColumnVisibility,
|
|
57
|
+
setSorting
|
|
58
|
+
} = table;
|
|
59
|
+
const currentSorting = table.getState().sorting;
|
|
60
|
+
const currentVisibility = table.getState().columnVisibility;
|
|
61
|
+
const currentColumnOrder = table.getState().columnOrder;
|
|
28
62
|
const isResizing = !!table.getState().columnSizingInfo?.isResizingColumn;
|
|
29
|
-
|
|
63
|
+
const [configDialogOpen, setConfigDialogOpen] = useState(false);
|
|
64
|
+
const [multiSortDialogOpen, setMultiSortDialogOpen] = useState(false);
|
|
65
|
+
const handleOpenColumnConfig = useCallback(() => {
|
|
66
|
+
setConfigDialogOpen(true);
|
|
67
|
+
}, []);
|
|
68
|
+
const handleCloseColumnConfig = useCallback(() => {
|
|
69
|
+
setConfigDialogOpen(false);
|
|
70
|
+
}, []);
|
|
71
|
+
const handleOpenMultiSort = useCallback(() => {
|
|
72
|
+
setMultiSortDialogOpen(true);
|
|
73
|
+
}, []);
|
|
74
|
+
const handleCloseMultiSort = useCallback(() => {
|
|
75
|
+
setMultiSortDialogOpen(false);
|
|
76
|
+
}, []);
|
|
77
|
+
const handleApplyMultiSort = useCallback(sortColumns => {
|
|
78
|
+
setMultiSortDialogOpen(false);
|
|
79
|
+
setSorting?.(sortColumns);
|
|
80
|
+
}, [setSorting]);
|
|
81
|
+
const handleApplyColumnConfig = useCallback(updates => {
|
|
82
|
+
const newVisibilityState = {};
|
|
83
|
+
for (const update of updates) {
|
|
84
|
+
newVisibilityState[update.columnId] = update.isVisible;
|
|
85
|
+
}
|
|
86
|
+
setColumnOrder(updates.map(col => col.columnId));
|
|
87
|
+
setColumnVisibility(newVisibilityState);
|
|
88
|
+
}, [setColumnOrder, setColumnVisibility]);
|
|
89
|
+
const columnOptions = useMemo(() => {
|
|
90
|
+
const allHeaders = table.getHeaderGroups().flatMap(headerGroup => headerGroup.headers);
|
|
91
|
+
return table.getAllColumns().filter(column => column.id !== SELECTION_COLUMN_ID).map(column => {
|
|
92
|
+
return {
|
|
93
|
+
id: column.id,
|
|
94
|
+
name: getHeaderName(column, allHeaders),
|
|
95
|
+
canSort: column.getCanSort()
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
}, [table]);
|
|
99
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("thead", {
|
|
30
100
|
className: styles.osdkTableHeader,
|
|
31
101
|
"data-resizing": isResizing
|
|
32
102
|
}, table.getHeaderGroups().map(headerGroup => /*#__PURE__*/React.createElement("tr", {
|
|
@@ -46,15 +116,32 @@ export function TableHeader({
|
|
|
46
116
|
}, header.isPlaceholder ? null : isSelectColumn ? /*#__PURE__*/React.createElement(TableHeaderContent, {
|
|
47
117
|
header: header
|
|
48
118
|
}) : /*#__PURE__*/React.createElement(TableHeaderWithPopover, {
|
|
119
|
+
table: table,
|
|
49
120
|
header: header,
|
|
50
121
|
isColumnPinned: isColumnPinned,
|
|
51
|
-
|
|
52
|
-
|
|
122
|
+
columnOptions: columnOptions,
|
|
123
|
+
featureFlags: headerMenuFeatureFlags,
|
|
124
|
+
onOpenColumnConfig: handleOpenColumnConfig,
|
|
125
|
+
onOpenMultiSort: handleOpenMultiSort
|
|
126
|
+
}), header.column.getCanResize() && headerMenuFeatureFlags?.showResizeItem !== false && /*#__PURE__*/React.createElement("div", {
|
|
53
127
|
className: styles.osdkTableHeaderResizer,
|
|
54
128
|
onDoubleClick: () => header.column.resetSize(),
|
|
55
129
|
onMouseDown: header.getResizeHandler(),
|
|
56
130
|
onTouchStart: header.getResizeHandler()
|
|
57
131
|
}));
|
|
58
|
-
}))))
|
|
132
|
+
})))), !!columnOptions?.length && /*#__PURE__*/React.createElement(ColumnConfigDialog, {
|
|
133
|
+
isOpen: configDialogOpen,
|
|
134
|
+
onClose: handleCloseColumnConfig,
|
|
135
|
+
columnOptions: columnOptions,
|
|
136
|
+
currentVisibility: currentVisibility,
|
|
137
|
+
currentColumnOrder: currentColumnOrder,
|
|
138
|
+
onApply: handleApplyColumnConfig
|
|
139
|
+
}), columnOptions?.some(col => col.canSort) && /*#__PURE__*/React.createElement(MultiColumnSortDialog, {
|
|
140
|
+
isOpen: multiSortDialogOpen,
|
|
141
|
+
onClose: handleCloseMultiSort,
|
|
142
|
+
columnOptions: columnOptions,
|
|
143
|
+
currentSorting: currentSorting,
|
|
144
|
+
onApply: handleApplyMultiSort
|
|
145
|
+
}));
|
|
59
146
|
}
|
|
60
147
|
//# sourceMappingURL=TableHeader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableHeader.js","names":["React","styles","TableHeaderContent","TableHeaderWithPopover","SELECTION_COLUMN_ID","getColumnPinningStyles","TableHeader","table","isResizing","getState","columnSizingInfo","isResizingColumn","createElement","className","osdkTableHeader","getHeaderGroups","map","headerGroup","key","id","osdkTableHeaderRow","headers","header","columnStyles","column","isColumnPinned","getIsPinned","isSelectColumn","osdkTableHeaderCell","style","isPlaceholder","setColumnPinning","getCanResize","osdkTableHeaderResizer","onDoubleClick","resetSize","onMouseDown","getResizeHandler","onTouchStart"],"sources":["TableHeader.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { RowData, Table } from \"@tanstack/react-table\";\nimport React from \"react\";\nimport styles from \"./TableHeader.module.css\";\nimport { TableHeaderContent } from \"./TableHeaderContent.js\";\nimport { TableHeaderWithPopover } from \"./TableHeaderWithPopover.js\";\nimport { SELECTION_COLUMN_ID } from \"./utils/constants.js\";\nimport { getColumnPinningStyles } from \"./utils/getColumnPinningStyles.js\";\n\ninterface TableHeaderProps<TData extends RowData> {\n table: Table<TData>;\n}\n\nexport function TableHeader<TData extends RowData>({\n table,\n}: TableHeaderProps<TData>): React.ReactElement {\n // TODO: If value is number type, right align header\n\n const isResizing = !!table.getState().columnSizingInfo?.isResizingColumn;\n\n return (\n <thead className={styles.osdkTableHeader} data-resizing={isResizing}>\n {table.getHeaderGroups().map((headerGroup) => (\n <tr\n key={headerGroup.id}\n className={styles.osdkTableHeaderRow}\n >\n {headerGroup.headers.map((header) => {\n const { columnStyles } = getColumnPinningStyles(header.column);\n const isColumnPinned = header.column.getIsPinned();\n const isSelectColumn = header.id === SELECTION_COLUMN_ID;\n return (\n <th\n key={header.id}\n data-pinned={header.column.getIsPinned()}\n className={styles.osdkTableHeaderCell}\n style={columnStyles}\n >\n {header.isPlaceholder\n ? null\n : isSelectColumn\n ? <TableHeaderContent header={header} />\n : (\n <TableHeaderWithPopover\n header={header}\n isColumnPinned={isColumnPinned}\n setColumnPinning={table.setColumnPinning}\n />\n )}\n {header.column.getCanResize() && (\n <div\n className={styles.osdkTableHeaderResizer}\n onDoubleClick={() => header.column.resetSize()}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n />\n )}\n </th>\n );\n })}\n </tr>\n ))}\n </thead>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,MAAM,MAAM,0BAA0B;AAC7C,SAASC,kBAAkB,QAAQ,yBAAyB;AAC5D,SAASC,sBAAsB,QAAQ,6BAA6B;AACpE,SAASC,mBAAmB,QAAQ,sBAAsB;AAC1D,SAASC,sBAAsB,QAAQ,mCAAmC;AAM1E,OAAO,SAASC,WAAWA,CAAwB;EACjDC;AACuB,CAAC,EAAsB;EAC9C;;EAEA,MAAMC,UAAU,GAAG,CAAC,CAACD,KAAK,CAACE,QAAQ,CAAC,CAAC,CAACC,gBAAgB,EAAEC,gBAAgB;EAExE,oBACEX,KAAA,CAAAY,aAAA;IAAOC,SAAS,EAAEZ,MAAM,CAACa,eAAgB;IAAC,iBAAeN;EAAW,GACjED,KAAK,CAACQ,eAAe,CAAC,CAAC,CAACC,GAAG,CAAEC,WAAW,iBACvCjB,KAAA,CAAAY,aAAA;IACEM,GAAG,EAAED,WAAW,CAACE,EAAG;IACpBN,SAAS,EAAEZ,MAAM,CAACmB;EAAmB,GAEpCH,WAAW,CAACI,OAAO,CAACL,GAAG,CAAEM,MAAM,IAAK;IACnC,MAAM;MAAEC;IAAa,CAAC,GAAGlB,sBAAsB,CAACiB,MAAM,CAACE,MAAM,CAAC;IAC9D,MAAMC,cAAc,GAAGH,MAAM,CAACE,MAAM,CAACE,WAAW,CAAC,CAAC;IAClD,MAAMC,cAAc,GAAGL,MAAM,CAACH,EAAE,KAAKf,mBAAmB;IACxD,oBACEJ,KAAA,CAAAY,aAAA;MACEM,GAAG,EAAEI,MAAM,CAACH,EAAG;MACf,eAAaG,MAAM,CAACE,MAAM,CAACE,WAAW,CAAC,CAAE;MACzCb,SAAS,EAAEZ,MAAM,CAAC2B,mBAAoB;MACtCC,KAAK,EAAEN;IAAa,GAEnBD,MAAM,CAACQ,aAAa,GACjB,IAAI,GACJH,cAAc,gBACd3B,KAAA,CAAAY,aAAA,CAACV,kBAAkB;MAACoB,MAAM,EAAEA;IAAO,CAAE,CAAC,gBAEtCtB,KAAA,CAAAY,aAAA,CAACT,sBAAsB;MACrBmB,MAAM,EAAEA,MAAO;MACfG,cAAc,EAAEA,cAAe;MAC/BM,gBAAgB,EAAExB,KAAK,CAACwB;IAAiB,CAC1C,CACF,EACFT,MAAM,CAACE,MAAM,CAACQ,YAAY,CAAC,CAAC,iBAC3BhC,KAAA,CAAAY,aAAA;MACEC,SAAS,EAAEZ,MAAM,CAACgC,sBAAuB;MACzCC,aAAa,EAAEA,CAAA,KAAMZ,MAAM,CAACE,MAAM,CAACW,SAAS,CAAC,CAAE;MAC/CC,WAAW,EAAEd,MAAM,CAACe,gBAAgB,CAAC,CAAE;MACvCC,YAAY,EAAEhB,MAAM,CAACe,gBAAgB,CAAC;IAAE,CACzC,CAED,CAAC;EAET,CAAC,CACC,CACL,CACI,CAAC;AAEZ","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"TableHeader.js","names":["React","useCallback","useMemo","useState","ColumnConfigDialog","MultiColumnSortDialog","styles","TableHeaderContent","TableHeaderWithPopover","SELECTION_COLUMN_ID","getColumnPinningStyles","getHeaderName","column","allHeaders","id","columnDef","header","find","headerDef","displayedHeader","getContext","meta","columnName","TableHeader","table","headerMenuFeatureFlags","setColumnOrder","setColumnVisibility","setSorting","currentSorting","getState","sorting","currentVisibility","columnVisibility","currentColumnOrder","columnOrder","isResizing","columnSizingInfo","isResizingColumn","configDialogOpen","setConfigDialogOpen","multiSortDialogOpen","setMultiSortDialogOpen","handleOpenColumnConfig","handleCloseColumnConfig","handleOpenMultiSort","handleCloseMultiSort","handleApplyMultiSort","sortColumns","handleApplyColumnConfig","updates","newVisibilityState","update","columnId","isVisible","map","col","columnOptions","getHeaderGroups","flatMap","headerGroup","headers","getAllColumns","filter","name","canSort","getCanSort","createElement","Fragment","className","osdkTableHeader","key","osdkTableHeaderRow","columnStyles","isColumnPinned","getIsPinned","isSelectColumn","osdkTableHeaderCell","style","isPlaceholder","featureFlags","onOpenColumnConfig","onOpenMultiSort","getCanResize","showResizeItem","osdkTableHeaderResizer","onDoubleClick","resetSize","onMouseDown","getResizeHandler","onTouchStart","length","isOpen","onClose","onApply","some"],"sources":["TableHeader.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n Column,\n Header,\n RowData,\n SortingState,\n Table,\n VisibilityState,\n} from \"@tanstack/react-table\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport { type ColumnConfig, ColumnConfigDialog } from \"./ColumnConfigDialog.js\";\nimport { MultiColumnSortDialog } from \"./MultiColumnSortDialog.js\";\nimport styles from \"./TableHeader.module.css\";\nimport { TableHeaderContent } from \"./TableHeaderContent.js\";\nimport {\n type HeaderMenuFeatureFlags,\n TableHeaderWithPopover,\n} from \"./TableHeaderWithPopover.js\";\nimport { SELECTION_COLUMN_ID } from \"./utils/constants.js\";\nimport { getColumnPinningStyles } from \"./utils/getColumnPinningStyles.js\";\nimport type { ColumnOption } from \"./utils/types.js\";\n\ninterface TableHeaderProps<\n TData extends RowData,\n> {\n table: Table<TData>;\n headerMenuFeatureFlags?: HeaderMenuFeatureFlags;\n}\n\nconst getHeaderName = <TData,>(\n column: Column<TData, unknown>,\n allHeaders: Header<TData, unknown>[],\n) => {\n const { id, columnDef } = column;\n const header = allHeaders.find(header => header.id === id);\n const headerDef = columnDef.header;\n\n if (headerDef) {\n if (typeof headerDef === \"string\") {\n return headerDef;\n }\n // Try to get header name from the renderHeader function\n if (header) {\n const displayedHeader = headerDef(header.getContext());\n if (typeof displayedHeader === \"string\") return displayedHeader;\n }\n }\n // Fallback to use the columnName provided by user or id\n const { meta } = columnDef;\n return meta?.columnName ?? id;\n};\n\nexport function TableHeader<\n TData extends RowData,\n>({\n table,\n headerMenuFeatureFlags,\n}: TableHeaderProps<TData>): React.ReactElement {\n // TODO: If value is number type, right align header\n\n const {\n setColumnOrder,\n setColumnVisibility,\n setSorting,\n } = table;\n\n const currentSorting = table.getState().sorting;\n const currentVisibility = table.getState().columnVisibility;\n const currentColumnOrder = table.getState().columnOrder;\n\n const isResizing = !!table.getState().columnSizingInfo?.isResizingColumn;\n\n const [configDialogOpen, setConfigDialogOpen] = useState(false);\n const [multiSortDialogOpen, setMultiSortDialogOpen] = useState(false);\n\n const handleOpenColumnConfig = useCallback(() => {\n setConfigDialogOpen(true);\n }, []);\n\n const handleCloseColumnConfig = useCallback(() => {\n setConfigDialogOpen(false);\n }, []);\n\n const handleOpenMultiSort = useCallback(() => {\n setMultiSortDialogOpen(true);\n }, []);\n\n const handleCloseMultiSort = useCallback(() => {\n setMultiSortDialogOpen(false);\n }, []);\n\n const handleApplyMultiSort = useCallback(\n (sortColumns: SortingState) => {\n setMultiSortDialogOpen(false);\n setSorting?.(sortColumns);\n },\n [setSorting],\n );\n\n const handleApplyColumnConfig = useCallback(\n (updates: ColumnConfig[]) => {\n const newVisibilityState: VisibilityState = {};\n for (const update of updates) {\n newVisibilityState[update.columnId] = update.isVisible;\n }\n\n setColumnOrder(updates.map(col => col.columnId));\n setColumnVisibility(newVisibilityState);\n },\n [setColumnOrder, setColumnVisibility],\n );\n\n const columnOptions: ColumnOption[] = useMemo(() => {\n const allHeaders = table.getHeaderGroups().flatMap(headerGroup =>\n headerGroup.headers\n );\n\n return table\n .getAllColumns()\n .filter((column) => column.id !== SELECTION_COLUMN_ID)\n .map((column) => {\n return {\n id: column.id,\n name: getHeaderName(column, allHeaders),\n canSort: column.getCanSort(),\n };\n });\n }, [table]);\n\n return (\n <>\n <thead className={styles.osdkTableHeader} data-resizing={isResizing}>\n {table.getHeaderGroups().map((headerGroup) => (\n <tr\n key={headerGroup.id}\n className={styles.osdkTableHeaderRow}\n >\n {headerGroup.headers.map((header) => {\n const { columnStyles } = getColumnPinningStyles(header.column);\n const isColumnPinned = header.column.getIsPinned();\n const isSelectColumn = header.id === SELECTION_COLUMN_ID;\n return (\n <th\n key={header.id}\n data-pinned={header.column.getIsPinned()}\n className={styles.osdkTableHeaderCell}\n style={columnStyles}\n >\n {header.isPlaceholder\n ? null\n : isSelectColumn\n ? <TableHeaderContent header={header} />\n : (\n <TableHeaderWithPopover\n table={table}\n header={header}\n isColumnPinned={isColumnPinned}\n columnOptions={columnOptions}\n featureFlags={headerMenuFeatureFlags}\n onOpenColumnConfig={handleOpenColumnConfig}\n onOpenMultiSort={handleOpenMultiSort}\n />\n )}\n {header.column.getCanResize()\n && headerMenuFeatureFlags?.showResizeItem !== false && (\n <div\n className={styles.osdkTableHeaderResizer}\n onDoubleClick={() => header.column.resetSize()}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n />\n )}\n </th>\n );\n })}\n </tr>\n ))}\n </thead>\n {!!columnOptions?.length && (\n <ColumnConfigDialog\n isOpen={configDialogOpen}\n onClose={handleCloseColumnConfig}\n columnOptions={columnOptions}\n currentVisibility={currentVisibility}\n currentColumnOrder={currentColumnOrder}\n onApply={handleApplyColumnConfig}\n />\n )}\n {columnOptions?.some(col => col.canSort) && (\n <MultiColumnSortDialog\n isOpen={multiSortDialogOpen}\n onClose={handleCloseMultiSort}\n columnOptions={columnOptions}\n currentSorting={currentSorting}\n onApply={handleApplyMultiSort}\n />\n )}\n </>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -18,6 +18,9 @@
|
|
|
18
18
|
display: grid;
|
|
19
19
|
position: sticky;
|
|
20
20
|
top: 0;
|
|
21
|
+
width: max-content;
|
|
22
|
+
min-width: 100%;
|
|
23
|
+
height: var(--osdk-table-header-height);
|
|
21
24
|
z-index: var(--osdk-surface-z-index-1);
|
|
22
25
|
background-color: var(--osdk-table-header-bg);
|
|
23
26
|
}
|
|
@@ -29,6 +32,9 @@
|
|
|
29
32
|
|
|
30
33
|
.osdkTableHeaderRow {
|
|
31
34
|
display: flex;
|
|
35
|
+
width: max-content;
|
|
36
|
+
min-width: 100%;
|
|
37
|
+
border-bottom: var(--osdk-table-border);
|
|
32
38
|
}
|
|
33
39
|
|
|
34
40
|
.osdkTableHeaderCell {
|
|
@@ -57,6 +63,7 @@
|
|
|
57
63
|
.osdkTableHeaderCell[data-pinned="right"] {
|
|
58
64
|
position: sticky;
|
|
59
65
|
z-index: var(--osdk-surface-z-index-2);
|
|
66
|
+
background-color: var(--osdk-table-header-bg);
|
|
60
67
|
}
|
|
61
68
|
|
|
62
69
|
/* Last left-pinned column - no left-pinned siblings after it */
|
|
@@ -87,11 +94,11 @@
|
|
|
87
94
|
z-index: var(--osdk-surface-z-index-2);
|
|
88
95
|
|
|
89
96
|
&:hover {
|
|
90
|
-
background: var(--osdk-
|
|
97
|
+
background: var(--osdk-table-resizer-color-hover);
|
|
91
98
|
}
|
|
92
99
|
|
|
93
100
|
&:active {
|
|
94
|
-
background: var(--osdk-
|
|
101
|
+
background: var(--osdk-table-resizer-color-active);
|
|
95
102
|
}
|
|
96
103
|
}
|
|
97
104
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import { Menu } from "@base-ui/react/menu";
|
|
18
|
-
import { ChevronDown, Pin, Remove, SortAlphabetical, SortAlphabeticalDesc, Unpin, VerticalDistribution } from "@blueprintjs/icons";
|
|
18
|
+
import { ChevronDown, Pin, Remove, Settings, Sort, SortAlphabetical, SortAlphabeticalDesc, Unpin, VerticalDistribution } from "@blueprintjs/icons";
|
|
19
19
|
import classNames from "classnames";
|
|
20
20
|
import React, { useCallback, useState } from "react";
|
|
21
21
|
import { TableHeaderContent } from "./TableHeaderContent.js";
|
|
@@ -37,11 +37,25 @@ function HeaderMenuItem({
|
|
|
37
37
|
}
|
|
38
38
|
export function TableHeaderWithPopover({
|
|
39
39
|
header,
|
|
40
|
+
table,
|
|
40
41
|
isColumnPinned,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
onResetSize,
|
|
43
|
+
columnOptions,
|
|
44
|
+
featureFlags,
|
|
45
|
+
onOpenColumnConfig,
|
|
46
|
+
onOpenMultiSort
|
|
44
47
|
}) {
|
|
48
|
+
const {
|
|
49
|
+
showSortingItems = false,
|
|
50
|
+
showPinningItems = false,
|
|
51
|
+
showResizeItem = false,
|
|
52
|
+
showConfigItem = false
|
|
53
|
+
} = featureFlags ?? {};
|
|
54
|
+
const {
|
|
55
|
+
setColumnPinning,
|
|
56
|
+
setSorting
|
|
57
|
+
} = table;
|
|
58
|
+
const currentSorting = table.getState().sorting;
|
|
45
59
|
const [isOpen, setIsOpen] = useState(false);
|
|
46
60
|
const handlePinLeft = useCallback(() => {
|
|
47
61
|
setColumnPinning(prev => {
|
|
@@ -61,22 +75,22 @@ export function TableHeaderWithPopover({
|
|
|
61
75
|
}, [header.column.id, setColumnPinning]);
|
|
62
76
|
const handleSortAscending = useCallback(() => {
|
|
63
77
|
header.column.toggleSorting(false);
|
|
64
|
-
|
|
78
|
+
setSorting?.([{
|
|
65
79
|
id: header.column.id,
|
|
66
80
|
desc: false
|
|
67
81
|
}]);
|
|
68
|
-
}, [header.column,
|
|
82
|
+
}, [header.column, setSorting]);
|
|
69
83
|
const handleSortDescending = useCallback(() => {
|
|
70
84
|
header.column.toggleSorting(true);
|
|
71
|
-
|
|
85
|
+
setSorting?.([{
|
|
72
86
|
id: header.column.id,
|
|
73
87
|
desc: true
|
|
74
88
|
}]);
|
|
75
|
-
}, [header.column,
|
|
89
|
+
}, [header.column, setSorting]);
|
|
76
90
|
const handleClearAllSorts = useCallback(() => {
|
|
77
91
|
header.column.clearSorting();
|
|
78
|
-
|
|
79
|
-
}, [header.column,
|
|
92
|
+
setSorting?.([]);
|
|
93
|
+
}, [header.column, setSorting]);
|
|
80
94
|
const handleResetSize = useCallback(() => {
|
|
81
95
|
header.column.resetSize();
|
|
82
96
|
if (onResetSize) {
|
|
@@ -87,9 +101,18 @@ export function TableHeaderWithPopover({
|
|
|
87
101
|
e.preventDefault();
|
|
88
102
|
setIsOpen(prev => !prev);
|
|
89
103
|
}, []);
|
|
104
|
+
const handleOpenColumnConfig = useCallback(() => {
|
|
105
|
+
onOpenColumnConfig?.();
|
|
106
|
+
setIsOpen(false);
|
|
107
|
+
}, [onOpenColumnConfig]);
|
|
108
|
+
const handleOpenMultiSort = useCallback(() => {
|
|
109
|
+
onOpenMultiSort?.();
|
|
110
|
+
setIsOpen(false);
|
|
111
|
+
}, [onOpenMultiSort]);
|
|
90
112
|
const isSorted = header.column.getIsSorted();
|
|
91
113
|
const isSortable = header.column.getCanSort();
|
|
92
|
-
|
|
114
|
+
const sortIndex = currentSorting?.findIndex(s => s.id === header.column.id) ?? -1;
|
|
115
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Menu.Root, {
|
|
93
116
|
open: isOpen,
|
|
94
117
|
onOpenChange: setIsOpen
|
|
95
118
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -107,12 +130,12 @@ export function TableHeaderWithPopover({
|
|
|
107
130
|
}, isSorted && /*#__PURE__*/React.createElement("div", {
|
|
108
131
|
className: styles.osdkCenterContainer
|
|
109
132
|
}, isSorted === "asc" ? /*#__PURE__*/React.createElement(SortAlphabetical, {
|
|
110
|
-
className: styles.osdkHeaderIcon
|
|
111
|
-
color: "currentColor"
|
|
133
|
+
className: styles.osdkHeaderIcon
|
|
112
134
|
}) : /*#__PURE__*/React.createElement(SortAlphabeticalDesc, {
|
|
113
|
-
className: styles.osdkHeaderIcon
|
|
114
|
-
|
|
115
|
-
|
|
135
|
+
className: styles.osdkHeaderIcon
|
|
136
|
+
}), currentSorting.length > 1 && sortIndex >= 0 && /*#__PURE__*/React.createElement("span", {
|
|
137
|
+
className: styles.sortIndex
|
|
138
|
+
}, sortIndex + 1)), (showPinningItems || showSortingItems && isSortable || showResizeItem || showConfigItem) && /*#__PURE__*/React.createElement(Menu.Trigger, {
|
|
116
139
|
"aria-label": `Open header menu for column with id=${header.column.id}`,
|
|
117
140
|
className: classNames(styles.osdkCenterContainer, styles.osdkHeaderPopoverTrigger)
|
|
118
141
|
}, /*#__PURE__*/React.createElement(ChevronDown, {
|
|
@@ -123,16 +146,16 @@ export function TableHeaderWithPopover({
|
|
|
123
146
|
sideOffset: 4
|
|
124
147
|
}, /*#__PURE__*/React.createElement(Menu.Popup, {
|
|
125
148
|
className: styles.osdkHeaderPopup
|
|
126
|
-
}, !isColumnPinned && /*#__PURE__*/React.createElement(HeaderMenuItem, {
|
|
149
|
+
}, showPinningItems && !isColumnPinned && /*#__PURE__*/React.createElement(HeaderMenuItem, {
|
|
127
150
|
onClick: handlePinLeft,
|
|
128
151
|
icon: Pin,
|
|
129
152
|
label: "Pin column"
|
|
130
|
-
}), isColumnPinned && /*#__PURE__*/React.createElement(HeaderMenuItem, {
|
|
153
|
+
}), showPinningItems && isColumnPinned && /*#__PURE__*/React.createElement(HeaderMenuItem, {
|
|
131
154
|
onClick: handleUnpin,
|
|
132
155
|
icon: Unpin,
|
|
133
156
|
label: "Unpin Column",
|
|
134
157
|
active: true
|
|
135
|
-
}), isSortable && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HeaderMenuItem, {
|
|
158
|
+
}), showSortingItems && isSortable && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HeaderMenuItem, {
|
|
136
159
|
onClick: handleSortAscending,
|
|
137
160
|
icon: SortAlphabetical,
|
|
138
161
|
label: "Sort ascending",
|
|
@@ -142,14 +165,22 @@ export function TableHeaderWithPopover({
|
|
|
142
165
|
icon: SortAlphabeticalDesc,
|
|
143
166
|
label: "Sort descending",
|
|
144
167
|
active: isSorted === "desc"
|
|
145
|
-
})
|
|
168
|
+
}), columnOptions?.some(col => col.canSort) && /*#__PURE__*/React.createElement(HeaderMenuItem, {
|
|
169
|
+
onClick: handleOpenMultiSort,
|
|
170
|
+
icon: Sort,
|
|
171
|
+
label: "Sort on multiple columns"
|
|
172
|
+
})), showSortingItems && !!currentSorting?.length && /*#__PURE__*/React.createElement(HeaderMenuItem, {
|
|
146
173
|
onClick: handleClearAllSorts,
|
|
147
174
|
icon: Remove,
|
|
148
175
|
label: "Clear all sorts"
|
|
149
|
-
}), /*#__PURE__*/React.createElement(HeaderMenuItem, {
|
|
176
|
+
}), showResizeItem && /*#__PURE__*/React.createElement(HeaderMenuItem, {
|
|
150
177
|
onClick: handleResetSize,
|
|
151
178
|
icon: VerticalDistribution,
|
|
152
179
|
label: "Reset Column Size"
|
|
153
|
-
})
|
|
180
|
+
}), showConfigItem && /*#__PURE__*/React.createElement(HeaderMenuItem, {
|
|
181
|
+
onClick: handleOpenColumnConfig,
|
|
182
|
+
icon: Settings,
|
|
183
|
+
label: "Configure Columns"
|
|
184
|
+
})))))));
|
|
154
185
|
}
|
|
155
186
|
//# sourceMappingURL=TableHeaderWithPopover.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableHeaderWithPopover.js","names":["Menu","ChevronDown","Pin","Remove","SortAlphabetical","SortAlphabeticalDesc","Unpin","VerticalDistribution","classNames","React","useCallback","useState","TableHeaderContent","styles","HeaderMenuItem","onClick","icon","Icon","label","active","createElement","Item","closeOnClick","className","osdkCenterContainer","osdkContentGap","osdkHeaderMenuItem","osdkHeaderActiveMenuItem","osdkHeaderIcon","color","TableHeaderWithPopover","header","isColumnPinned","setColumnPinning","onSortChange","onResetSize","isOpen","setIsOpen","handlePinLeft","prev","left","column","id","right","filter","handleUnpin","handleSortAscending","toggleSorting","desc","handleSortDescending","handleClearAllSorts","clearSorting","handleResetSize","resetSize","handleInteraction","e","preventDefault","isSorted","getIsSorted","isSortable","getCanSort","Root","open","onOpenChange","osdkHeaderContainer","onContextMenu","osdkHeaderContentLeft","osdkHeaderContentRight","Trigger","osdkHeaderPopoverTrigger","Portal","container","document","body","Positioner","sideOffset","Popup","osdkHeaderPopup","Fragment"],"sources":["TableHeaderWithPopover.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Menu } from \"@base-ui/react/menu\";\nimport {\n ChevronDown,\n Pin,\n Remove,\n SortAlphabetical,\n SortAlphabeticalDesc,\n Unpin,\n VerticalDistribution,\n} from \"@blueprintjs/icons\";\nimport type {\n ColumnPinningState,\n Header,\n RowData,\n SortingState,\n} from \"@tanstack/react-table\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useState } from \"react\";\nimport { TableHeaderContent } from \"./TableHeaderContent.js\";\nimport styles from \"./TableHeaderWithPopover.module.css\";\n\ninterface HeaderMenuItemProps {\n onClick: () => void;\n icon: React.ComponentType<{ className?: string; color?: string }>;\n label: string;\n active?: boolean;\n}\n\nfunction HeaderMenuItem({\n onClick,\n icon: Icon,\n label,\n active = false,\n}: HeaderMenuItemProps): React.ReactElement {\n return (\n <Menu.Item\n closeOnClick\n className={classNames(\n styles.osdkCenterContainer,\n styles.osdkContentGap,\n styles.osdkHeaderMenuItem,\n active && styles.osdkHeaderActiveMenuItem,\n )}\n onClick={onClick}\n >\n <Icon className={styles.osdkHeaderIcon} color=\"currentColor\" />\n <span>{label}</span>\n </Menu.Item>\n );\n}\n\ninterface TableHeaderWithPopoverProps<TData extends RowData> {\n header: Header<TData, unknown>;\n isColumnPinned: false | \"left\" | \"right\";\n setColumnPinning: React.Dispatch<React.SetStateAction<ColumnPinningState>>;\n onSortChange?: (sorting: SortingState) => void;\n onResetSize?: () => void;\n onColumnConfig?: () => void;\n enableColumnPinningRight?: boolean;\n}\n\nexport function TableHeaderWithPopover<TData extends RowData>({\n header,\n isColumnPinned,\n setColumnPinning,\n onSortChange,\n onResetSize,\n}: TableHeaderWithPopoverProps<TData>): React.ReactElement {\n const [isOpen, setIsOpen] = useState(false);\n\n const handlePinLeft = useCallback(() => {\n setColumnPinning((prev) => {\n return {\n left: [...(prev.left || []), header.column.id],\n right: prev.right?.filter((id) => id !== header.column.id) || [],\n };\n });\n }, [header.column.id, setColumnPinning]);\n\n const handleUnpin = useCallback(() => {\n setColumnPinning((prev) => {\n return {\n left: prev.left?.filter((id) => id !== header.column.id) || [],\n right: prev.right?.filter((id) => id !== header.column.id) || [],\n };\n });\n }, [header.column.id, setColumnPinning]);\n\n const handleSortAscending = useCallback(() => {\n header.column.toggleSorting(false);\n onSortChange?.([{ id: header.column.id, desc: false }]);\n }, [header.column, onSortChange]);\n\n const handleSortDescending = useCallback(() => {\n header.column.toggleSorting(true);\n onSortChange?.([{ id: header.column.id, desc: true }]);\n }, [header.column, onSortChange]);\n\n const handleClearAllSorts = useCallback(() => {\n header.column.clearSorting();\n onSortChange?.([]);\n }, [header.column, onSortChange]);\n\n const handleResetSize = useCallback(() => {\n header.column.resetSize();\n if (onResetSize) {\n onResetSize();\n }\n }, [header.column, onResetSize]);\n\n const handleInteraction = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n setIsOpen((prev) => !prev);\n },\n [],\n );\n\n const isSorted = header.column.getIsSorted();\n const isSortable = header.column.getCanSort();\n\n return (\n <Menu.Root open={isOpen} onOpenChange={setIsOpen}>\n <div\n className={classNames(\n styles.osdkCenterContainer,\n styles.osdkContentGap,\n styles.osdkHeaderContainer,\n )}\n onContextMenu={handleInteraction}\n >\n <div\n className={classNames(\n styles.osdkCenterContainer,\n styles.osdkContentGap,\n styles.osdkHeaderContentLeft,\n )}\n >\n {isColumnPinned && (\n <Pin\n className={styles.osdkHeaderIcon}\n color={\"currentColor\"}\n />\n )}\n <TableHeaderContent header={header} />\n </div>\n <div\n className={classNames(\n styles.osdkCenterContainer,\n styles.osdkContentGap,\n styles.osdkHeaderContentRight,\n )}\n >\n {isSorted && (\n <div className={styles.osdkCenterContainer}>\n {isSorted === \"asc\"\n ? (\n <SortAlphabetical\n className={styles.osdkHeaderIcon}\n color={\"currentColor\"}\n />\n )\n : (\n <SortAlphabeticalDesc\n className={styles.osdkHeaderIcon}\n color={\"currentColor\"}\n />\n )}\n </div>\n )}\n <Menu.Trigger\n aria-label={`Open header menu for column with id=${header.column.id}`}\n className={classNames(\n styles.osdkCenterContainer,\n styles.osdkHeaderPopoverTrigger,\n )}\n >\n <ChevronDown\n className={styles.osdkHeaderIcon}\n />\n </Menu.Trigger>\n </div>\n <Menu.Portal container={document.body}>\n <Menu.Positioner sideOffset={4}>\n <Menu.Popup\n className={styles.osdkHeaderPopup}\n >\n {!isColumnPinned && (\n <HeaderMenuItem\n onClick={handlePinLeft}\n icon={Pin}\n label=\"Pin column\"\n />\n )}\n\n {isColumnPinned && (\n <HeaderMenuItem\n onClick={handleUnpin}\n icon={Unpin}\n label=\"Unpin Column\"\n active={true}\n />\n )}\n {isSortable && (\n <>\n <HeaderMenuItem\n onClick={handleSortAscending}\n icon={SortAlphabetical}\n label=\"Sort ascending\"\n active={isSorted === \"asc\"}\n />\n <HeaderMenuItem\n onClick={handleSortDescending}\n icon={SortAlphabeticalDesc}\n label=\"Sort descending\"\n active={isSorted === \"desc\"}\n />\n </>\n )}\n {!!isSorted && (\n <HeaderMenuItem\n onClick={handleClearAllSorts}\n icon={Remove}\n label=\"Clear all sorts\"\n />\n )}\n <HeaderMenuItem\n onClick={handleResetSize}\n icon={VerticalDistribution}\n label=\"Reset Column Size\"\n />\n </Menu.Popup>\n </Menu.Positioner>\n </Menu.Portal>\n </div>\n </Menu.Root>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"TableHeaderWithPopover.js","names":["Menu","ChevronDown","Pin","Remove","Settings","Sort","SortAlphabetical","SortAlphabeticalDesc","Unpin","VerticalDistribution","classNames","React","useCallback","useState","TableHeaderContent","styles","HeaderMenuItem","onClick","icon","Icon","label","active","createElement","Item","closeOnClick","className","osdkCenterContainer","osdkContentGap","osdkHeaderMenuItem","osdkHeaderActiveMenuItem","osdkHeaderIcon","color","TableHeaderWithPopover","header","table","isColumnPinned","onResetSize","columnOptions","featureFlags","onOpenColumnConfig","onOpenMultiSort","showSortingItems","showPinningItems","showResizeItem","showConfigItem","setColumnPinning","setSorting","currentSorting","getState","sorting","isOpen","setIsOpen","handlePinLeft","prev","left","column","id","right","filter","handleUnpin","handleSortAscending","toggleSorting","desc","handleSortDescending","handleClearAllSorts","clearSorting","handleResetSize","resetSize","handleInteraction","e","preventDefault","handleOpenColumnConfig","handleOpenMultiSort","isSorted","getIsSorted","isSortable","getCanSort","sortIndex","findIndex","s","Fragment","Root","open","onOpenChange","osdkHeaderContainer","onContextMenu","osdkHeaderContentLeft","osdkHeaderContentRight","length","Trigger","osdkHeaderPopoverTrigger","Portal","container","document","body","Positioner","sideOffset","Popup","osdkHeaderPopup","some","col","canSort"],"sources":["TableHeaderWithPopover.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Menu } from \"@base-ui/react/menu\";\nimport {\n ChevronDown,\n Pin,\n Remove,\n Settings,\n Sort,\n SortAlphabetical,\n SortAlphabeticalDesc,\n Unpin,\n VerticalDistribution,\n} from \"@blueprintjs/icons\";\nimport type { Header, RowData, Table } from \"@tanstack/react-table\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useState } from \"react\";\nimport { TableHeaderContent } from \"./TableHeaderContent.js\";\nimport styles from \"./TableHeaderWithPopover.module.css\";\nimport type { ColumnOption } from \"./utils/types.js\";\n\ninterface HeaderMenuItemProps {\n onClick: () => void;\n icon: React.ComponentType<{ className?: string; color?: string }>;\n label: string;\n active?: boolean;\n}\n\nfunction HeaderMenuItem({\n onClick,\n icon: Icon,\n label,\n active = false,\n}: HeaderMenuItemProps): React.ReactElement {\n return (\n <Menu.Item\n closeOnClick\n className={classNames(\n styles.osdkCenterContainer,\n styles.osdkContentGap,\n styles.osdkHeaderMenuItem,\n active && styles.osdkHeaderActiveMenuItem,\n )}\n onClick={onClick}\n >\n <Icon className={styles.osdkHeaderIcon} color=\"currentColor\" />\n <span>{label}</span>\n </Menu.Item>\n );\n}\n\nexport interface HeaderMenuFeatureFlags {\n /**\n * Whether sorting menu items should be shown.\n * When false, hides \"Sort ascending\", \"Sort descending\", \"Sort on multiple columns\", and \"Clear all sorts\".\n */\n showSortingItems?: boolean;\n /**\n * Whether pinning menu items should be shown.\n * When false, hides \"Pin column\" and \"Unpin Column\".\n */\n showPinningItems?: boolean;\n /**\n * Whether resize menu item should be shown.\n * When false, hides \"Reset Column Size\".\n */\n showResizeItem?: boolean;\n /**\n * Whether column config menu item should be shown.\n * When false, hides \"Configure Columns\".\n */\n showConfigItem?: boolean;\n}\n\ninterface TableHeaderWithPopoverProps<\n TData extends RowData,\n> {\n table: Table<TData>;\n header: Header<TData, unknown>;\n isColumnPinned: false | \"left\" | \"right\";\n onResetSize?: () => void;\n columnOptions?: ColumnOption[];\n featureFlags?: HeaderMenuFeatureFlags;\n onOpenColumnConfig?: () => void;\n onOpenMultiSort?: () => void;\n}\n\nexport function TableHeaderWithPopover<\n TData extends RowData,\n>({\n header,\n table,\n isColumnPinned,\n onResetSize,\n columnOptions,\n featureFlags,\n onOpenColumnConfig,\n onOpenMultiSort,\n}: TableHeaderWithPopoverProps<TData>): React.ReactElement {\n const {\n showSortingItems = false,\n showPinningItems = false,\n showResizeItem = false,\n showConfigItem = false,\n } = featureFlags ?? {};\n\n const {\n setColumnPinning,\n setSorting,\n } = table;\n\n const currentSorting = table.getState().sorting;\n\n const [isOpen, setIsOpen] = useState(false);\n\n const handlePinLeft = useCallback(() => {\n setColumnPinning((prev) => {\n return {\n left: [...(prev.left || []), header.column.id],\n right: prev.right?.filter((id) => id !== header.column.id) || [],\n };\n });\n }, [header.column.id, setColumnPinning]);\n\n const handleUnpin = useCallback(() => {\n setColumnPinning((prev) => {\n return {\n left: prev.left?.filter((id) => id !== header.column.id) || [],\n right: prev.right?.filter((id) => id !== header.column.id) || [],\n };\n });\n }, [header.column.id, setColumnPinning]);\n\n const handleSortAscending = useCallback(() => {\n header.column.toggleSorting(false);\n setSorting?.([{ id: header.column.id, desc: false }]);\n }, [header.column, setSorting]);\n\n const handleSortDescending = useCallback(() => {\n header.column.toggleSorting(true);\n setSorting?.([{ id: header.column.id, desc: true }]);\n }, [header.column, setSorting]);\n\n const handleClearAllSorts = useCallback(() => {\n header.column.clearSorting();\n setSorting?.([]);\n }, [header.column, setSorting]);\n\n const handleResetSize = useCallback(() => {\n header.column.resetSize();\n if (onResetSize) {\n onResetSize();\n }\n }, [header.column, onResetSize]);\n\n const handleInteraction = useCallback(\n (e: React.MouseEvent) => {\n e.preventDefault();\n setIsOpen((prev) => !prev);\n },\n [],\n );\n\n const handleOpenColumnConfig = useCallback(() => {\n onOpenColumnConfig?.();\n setIsOpen(false);\n }, [onOpenColumnConfig]);\n\n const handleOpenMultiSort = useCallback(() => {\n onOpenMultiSort?.();\n setIsOpen(false);\n }, [onOpenMultiSort]);\n\n const isSorted = header.column.getIsSorted();\n const isSortable = header.column.getCanSort();\n const sortIndex = currentSorting?.findIndex(s => s.id === header.column.id)\n ?? -1;\n\n const hasAnyMenuItems = showPinningItems\n || (showSortingItems && isSortable)\n || showResizeItem\n || showConfigItem;\n\n return (\n <>\n <Menu.Root open={isOpen} onOpenChange={setIsOpen}>\n <div\n className={classNames(\n styles.osdkCenterContainer,\n styles.osdkContentGap,\n styles.osdkHeaderContainer,\n )}\n onContextMenu={handleInteraction}\n >\n <div\n className={classNames(\n styles.osdkCenterContainer,\n styles.osdkContentGap,\n styles.osdkHeaderContentLeft,\n )}\n >\n {isColumnPinned && (\n <Pin\n className={styles.osdkHeaderIcon}\n color={\"currentColor\"}\n />\n )}\n <TableHeaderContent header={header} />\n </div>\n <div\n className={classNames(\n styles.osdkCenterContainer,\n styles.osdkContentGap,\n styles.osdkHeaderContentRight,\n )}\n >\n {isSorted && (\n <div className={styles.osdkCenterContainer}>\n {isSorted === \"asc\"\n ? (\n <SortAlphabetical\n className={styles.osdkHeaderIcon}\n />\n )\n : (\n <SortAlphabeticalDesc\n className={styles.osdkHeaderIcon}\n />\n )}\n {currentSorting.length > 1 && sortIndex >= 0\n && <span className={styles.sortIndex}>{sortIndex + 1}</span>}\n </div>\n )}\n {hasAnyMenuItems && (\n <Menu.Trigger\n aria-label={`Open header menu for column with id=${header.column.id}`}\n className={classNames(\n styles.osdkCenterContainer,\n styles.osdkHeaderPopoverTrigger,\n )}\n >\n <ChevronDown\n className={styles.osdkHeaderIcon}\n />\n </Menu.Trigger>\n )}\n </div>\n <Menu.Portal container={document.body}>\n <Menu.Positioner sideOffset={4}>\n <Menu.Popup\n className={styles.osdkHeaderPopup}\n >\n {showPinningItems && !isColumnPinned && (\n <HeaderMenuItem\n onClick={handlePinLeft}\n icon={Pin}\n label=\"Pin column\"\n />\n )}\n\n {showPinningItems && isColumnPinned && (\n <HeaderMenuItem\n onClick={handleUnpin}\n icon={Unpin}\n label=\"Unpin Column\"\n active={true}\n />\n )}\n {showSortingItems && isSortable && (\n <>\n <HeaderMenuItem\n onClick={handleSortAscending}\n icon={SortAlphabetical}\n label=\"Sort ascending\"\n active={isSorted === \"asc\"}\n />\n <HeaderMenuItem\n onClick={handleSortDescending}\n icon={SortAlphabeticalDesc}\n label=\"Sort descending\"\n active={isSorted === \"desc\"}\n />\n {columnOptions?.some(col => col.canSort) && (\n <HeaderMenuItem\n onClick={handleOpenMultiSort}\n icon={Sort}\n label=\"Sort on multiple columns\"\n />\n )}\n </>\n )}\n {showSortingItems && !!currentSorting?.length\n && (\n <HeaderMenuItem\n onClick={handleClearAllSorts}\n icon={Remove}\n label=\"Clear all sorts\"\n />\n )}\n {showResizeItem && (\n <HeaderMenuItem\n onClick={handleResetSize}\n icon={VerticalDistribution}\n label=\"Reset Column Size\"\n />\n )}\n {showConfigItem && (\n <HeaderMenuItem\n onClick={handleOpenColumnConfig}\n icon={Settings}\n label=\"Configure Columns\"\n />\n )}\n </Menu.Popup>\n </Menu.Positioner>\n </Menu.Portal>\n </div>\n </Menu.Root>\n </>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
.osdkContentGap {
|
|
24
24
|
display: flex;
|
|
25
|
-
gap: var(--osdk-surface-spacing);
|
|
25
|
+
gap: calc(var(--osdk-surface-spacing) * 2);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
.osdkHeaderContainer {
|
|
@@ -41,27 +41,42 @@
|
|
|
41
41
|
flex-shrink: 0;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
+
.osdkHeaderText {
|
|
45
|
+
display: -webkit-box;
|
|
46
|
+
-webkit-box-orient: vertical;
|
|
47
|
+
-webkit-line-clamp: 3;
|
|
48
|
+
line-clamp: 3;
|
|
49
|
+
overflow: hidden;
|
|
50
|
+
text-overflow: ellipsis;
|
|
51
|
+
flex-grow: 1;
|
|
52
|
+
}
|
|
53
|
+
|
|
44
54
|
.osdkHeaderPopoverTrigger {
|
|
45
|
-
padding:
|
|
55
|
+
padding: var(--osdk-table-header-menu-padding);
|
|
46
56
|
flex-shrink: 0;
|
|
47
57
|
flex-grow: 0;
|
|
48
|
-
|
|
49
|
-
|
|
58
|
+
background-color: var(--osdk-table-header-menu-bg);
|
|
59
|
+
border: var(--osdk-table-header-menu-border);
|
|
50
60
|
border-radius: var(--osdk-surface-border-radius);
|
|
51
|
-
color: var(--osdk-
|
|
61
|
+
color: var(--osdk-table-header-menu-color);
|
|
62
|
+
cursor: pointer;
|
|
52
63
|
user-select: none;
|
|
53
|
-
outline: none;
|
|
54
64
|
|
|
55
65
|
&:hover {
|
|
56
|
-
background-color: var(--osdk-
|
|
66
|
+
background-color: var(--osdk-table-header-menu-bg-hover);
|
|
57
67
|
}
|
|
58
68
|
|
|
59
69
|
&[data-popup-open] {
|
|
60
|
-
background-color: var(--osdk-
|
|
70
|
+
background-color: var(--osdk-table-header-menu-bg-active);
|
|
71
|
+
color: var(--osdk-table-header-menu-color-active);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
&:focus {
|
|
75
|
+
outline: none;
|
|
61
76
|
}
|
|
62
77
|
|
|
63
78
|
&:focus-visible {
|
|
64
|
-
outline: var(--osdk-focus-
|
|
79
|
+
outline: var(--osdk-focus-outline);
|
|
65
80
|
outline-offset: var(--osdk-focus-visible-outline-offset);
|
|
66
81
|
}
|
|
67
82
|
}
|
|
@@ -75,36 +90,52 @@
|
|
|
75
90
|
box-sizing: border-box;
|
|
76
91
|
padding: var(--osdk-surface-spacing);
|
|
77
92
|
border-radius: var(--osdk-surface-border-radius);
|
|
78
|
-
border: var(--osdk-surface-border
|
|
79
|
-
|
|
80
|
-
background-color: var(--osdk-surface-background-color-default);
|
|
93
|
+
border: var(--osdk-surface-border);
|
|
94
|
+
background-color: var(--osdk-surface-background-color-default-rest);
|
|
81
95
|
color: var(--osdk-typography-color-default-rest);
|
|
82
96
|
box-shadow: var(--osdk-surface-shadow-2);
|
|
83
97
|
font-size: var(--osdk-typography-size-body-medium);
|
|
84
|
-
|
|
98
|
+
|
|
99
|
+
&:focus {
|
|
100
|
+
outline: none;
|
|
101
|
+
}
|
|
85
102
|
}
|
|
86
103
|
|
|
87
104
|
.osdkHeaderMenuItem {
|
|
88
105
|
justify-content: flex-start;
|
|
89
|
-
padding: var(--osdk-surface-spacing);
|
|
106
|
+
padding: var(--osdk-surface-spacing) calc(var(--osdk-surface-spacing) * 2);
|
|
90
107
|
cursor: pointer;
|
|
91
|
-
}
|
|
92
108
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
109
|
+
&:hover {
|
|
110
|
+
background-color: var(--osdk-surface-background-color-default-hover);
|
|
111
|
+
border-radius: var(--osdk-surface-border-radius);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
&:focus {
|
|
115
|
+
outline: none;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
&:focus-visible {
|
|
119
|
+
outline: var(--osdk-focus-outline);
|
|
120
|
+
outline-offset: var(--osdk-focus-visible-outline-offset);
|
|
121
|
+
}
|
|
97
122
|
}
|
|
98
123
|
|
|
99
|
-
.osdkHeaderActiveMenuItem {
|
|
124
|
+
.osdkHeaderMenuItem .osdkHeaderActiveMenuItem {
|
|
100
125
|
background-color: var(--osdk-intent-primary-rest);
|
|
101
126
|
color: var(--osdk-intent-primary-foreground);
|
|
102
|
-
}
|
|
103
127
|
|
|
104
|
-
|
|
105
|
-
|
|
128
|
+
&:hover {
|
|
129
|
+
background-color: var(--osdk-intent-primary-hover);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
&:active {
|
|
133
|
+
background-color: var(--osdk-intent-primary-active);
|
|
134
|
+
}
|
|
106
135
|
}
|
|
107
136
|
|
|
108
|
-
.
|
|
109
|
-
|
|
137
|
+
.sortIndex {
|
|
138
|
+
font-size: var(--osdk-typography-size-body-x-small);
|
|
139
|
+
margin-left: var(--osdk-surface-spacing);
|
|
140
|
+
color: var(--osdk-typography-color-muted);
|
|
110
141
|
}
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
.osdkTableRow {
|
|
18
18
|
position: absolute;
|
|
19
19
|
display: flex;
|
|
20
|
+
width: max-content;
|
|
21
|
+
min-width: 100%;
|
|
20
22
|
background-color: var(--osdk-table-row-bg-default);
|
|
21
23
|
border-top: var(--osdk-table-row-divider);
|
|
22
24
|
border-bottom: var(--osdk-table-border-width) solid transparent;
|