@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
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { useOsdkAggregation } from "@osdk/react/experimental";
|
|
18
|
+
import classnames from "classnames";
|
|
19
|
+
import React, { memo, useCallback, useMemo } from "react";
|
|
20
|
+
import { Checkbox } from "../../../base-components/checkbox/Checkbox.js";
|
|
21
|
+
import { createNullCountAggregateOptions, createNullWhereClause } from "../../utils/aggregationHelpers.js";
|
|
22
|
+
import styles from "./NullValueWrapper.module.css.js";
|
|
23
|
+
import sharedStyles from "./shared.module.css.js";
|
|
24
|
+
function NullValueWrapperInner({
|
|
25
|
+
objectType,
|
|
26
|
+
propertyKey,
|
|
27
|
+
includeNull = false,
|
|
28
|
+
onIncludeNullChange,
|
|
29
|
+
showNullCount = true,
|
|
30
|
+
children,
|
|
31
|
+
className,
|
|
32
|
+
style
|
|
33
|
+
}) {
|
|
34
|
+
const nullCountAggregateOptions = useMemo(() => createNullCountAggregateOptions(), []);
|
|
35
|
+
const nullWhereClause = useMemo(() => createNullWhereClause(propertyKey), [propertyKey]);
|
|
36
|
+
const {
|
|
37
|
+
data: nullCountData,
|
|
38
|
+
isLoading,
|
|
39
|
+
error
|
|
40
|
+
} = useOsdkAggregation(objectType, {
|
|
41
|
+
where: nullWhereClause,
|
|
42
|
+
aggregate: nullCountAggregateOptions
|
|
43
|
+
});
|
|
44
|
+
const nullCount = useMemo(() => {
|
|
45
|
+
if (!nullCountData) return 0;
|
|
46
|
+
const result = nullCountData;
|
|
47
|
+
if ("$count" in result && typeof result.$count === "number") {
|
|
48
|
+
return result.$count;
|
|
49
|
+
}
|
|
50
|
+
return 0;
|
|
51
|
+
}, [nullCountData]);
|
|
52
|
+
const handleToggle = useCallback(() => {
|
|
53
|
+
onIncludeNullChange(!includeNull);
|
|
54
|
+
}, [includeNull, onIncludeNullChange]);
|
|
55
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
56
|
+
className: classnames(styles.nullWrapper, className),
|
|
57
|
+
style: style
|
|
58
|
+
}, children, /*#__PURE__*/React.createElement("div", {
|
|
59
|
+
className: styles.nullValueRow,
|
|
60
|
+
"data-checked": includeNull,
|
|
61
|
+
"data-loading": isLoading
|
|
62
|
+
}, /*#__PURE__*/React.createElement("label", {
|
|
63
|
+
className: styles.nullLabel
|
|
64
|
+
}, /*#__PURE__*/React.createElement(Checkbox, {
|
|
65
|
+
checked: includeNull,
|
|
66
|
+
onCheckedChange: handleToggle
|
|
67
|
+
}), /*#__PURE__*/React.createElement("span", {
|
|
68
|
+
className: styles.nullLabelText
|
|
69
|
+
}, "No value")), showNullCount && !error && nullCount > 0 && /*#__PURE__*/React.createElement("span", {
|
|
70
|
+
className: styles.count
|
|
71
|
+
}, nullCount.toLocaleString())), error && /*#__PURE__*/React.createElement("div", {
|
|
72
|
+
className: sharedStyles.errorMessage
|
|
73
|
+
}, "Failed to load null count"));
|
|
74
|
+
}
|
|
75
|
+
export const NullValueWrapper = /*#__PURE__*/memo(NullValueWrapperInner);
|
|
76
|
+
//# sourceMappingURL=NullValueWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NullValueWrapper.js","names":["useOsdkAggregation","classnames","React","memo","useCallback","useMemo","Checkbox","createNullCountAggregateOptions","createNullWhereClause","styles","sharedStyles","NullValueWrapperInner","objectType","propertyKey","includeNull","onIncludeNullChange","showNullCount","children","className","style","nullCountAggregateOptions","nullWhereClause","data","nullCountData","isLoading","error","where","aggregate","nullCount","result","$count","handleToggle","createElement","nullWrapper","nullValueRow","nullLabel","checked","onCheckedChange","nullLabelText","count","toLocaleString","errorMessage","NullValueWrapper"],"sources":["NullValueWrapper.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectTypeDefinition, PropertyKeys } from \"@osdk/api\";\nimport { useOsdkAggregation } from \"@osdk/react/experimental\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { Checkbox } from \"../../../base-components/checkbox/Checkbox.js\";\nimport {\n createNullCountAggregateOptions,\n createNullWhereClause,\n} from \"../../utils/aggregationHelpers.js\";\nimport styles from \"./NullValueWrapper.module.css\";\nimport sharedStyles from \"./shared.module.css\";\n\ninterface NullValueWrapperProps<\n Q extends ObjectTypeDefinition,\n K extends PropertyKeys<Q>,\n> {\n objectType: Q;\n propertyKey: K;\n includeNull?: boolean;\n onIncludeNullChange: (include: boolean) => void;\n showNullCount?: boolean;\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\nfunction NullValueWrapperInner<\n Q extends ObjectTypeDefinition,\n K extends PropertyKeys<Q>,\n>({\n objectType,\n propertyKey,\n includeNull = false,\n onIncludeNullChange,\n showNullCount = true,\n children,\n className,\n style,\n}: NullValueWrapperProps<Q, K>): React.ReactElement {\n const nullCountAggregateOptions = useMemo(\n () => createNullCountAggregateOptions<Q>(),\n [],\n );\n\n const nullWhereClause = useMemo(\n () => createNullWhereClause<Q>(propertyKey as string),\n [propertyKey],\n );\n\n const { data: nullCountData, isLoading, error } = useOsdkAggregation(\n objectType,\n {\n where: nullWhereClause,\n aggregate: nullCountAggregateOptions,\n },\n );\n\n const nullCount = useMemo(() => {\n if (!nullCountData) return 0;\n const result = nullCountData as { $count?: number } | Iterable<unknown>;\n if (\"$count\" in result && typeof result.$count === \"number\") {\n return result.$count;\n }\n return 0;\n }, [nullCountData]);\n\n const handleToggle = useCallback(() => {\n onIncludeNullChange(!includeNull);\n }, [includeNull, onIncludeNullChange]);\n\n return (\n <div className={classnames(styles.nullWrapper, className)} style={style}>\n {children}\n\n <div\n className={styles.nullValueRow}\n data-checked={includeNull}\n data-loading={isLoading}\n >\n <label className={styles.nullLabel}>\n <Checkbox checked={includeNull} onCheckedChange={handleToggle} />\n <span className={styles.nullLabelText}>No value</span>\n </label>\n {showNullCount && !error && nullCount > 0 && (\n <span className={styles.count}>\n {nullCount.toLocaleString()}\n </span>\n )}\n </div>\n {error && (\n <div className={sharedStyles.errorMessage}>\n Failed to load null count\n </div>\n )}\n </div>\n );\n}\n\nexport const NullValueWrapper = memo(\n NullValueWrapperInner,\n) as typeof NullValueWrapperInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,kBAAkB,QAAQ,0BAA0B;AAC7D,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,QAAQ,QAAQ,+CAA+C;AACxE,SACEC,+BAA+B,EAC/BC,qBAAqB,QAChB,mCAAmC;AAC1C,OAAOC,MAAM,MAAM,+BAA+B;AAClD,OAAOC,YAAY,MAAM,qBAAqB;AAgB9C,SAASC,qBAAqBA,CAG5B;EACAC,UAAU;EACVC,WAAW;EACXC,WAAW,GAAG,KAAK;EACnBC,mBAAmB;EACnBC,aAAa,GAAG,IAAI;EACpBC,QAAQ;EACRC,SAAS;EACTC;AAC2B,CAAC,EAAsB;EAClD,MAAMC,yBAAyB,GAAGf,OAAO,CACvC,MAAME,+BAA+B,CAAI,CAAC,EAC1C,EACF,CAAC;EAED,MAAMc,eAAe,GAAGhB,OAAO,CAC7B,MAAMG,qBAAqB,CAAIK,WAAqB,CAAC,EACrD,CAACA,WAAW,CACd,CAAC;EAED,MAAM;IAAES,IAAI,EAAEC,aAAa;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAGzB,kBAAkB,CAClEY,UAAU,EACV;IACEc,KAAK,EAAEL,eAAe;IACtBM,SAAS,EAAEP;EACb,CACF,CAAC;EAED,MAAMQ,SAAS,GAAGvB,OAAO,CAAC,MAAM;IAC9B,IAAI,CAACkB,aAAa,EAAE,OAAO,CAAC;IAC5B,MAAMM,MAAM,GAAGN,aAAwD;IACvE,IAAI,QAAQ,IAAIM,MAAM,IAAI,OAAOA,MAAM,CAACC,MAAM,KAAK,QAAQ,EAAE;MAC3D,OAAOD,MAAM,CAACC,MAAM;IACtB;IACA,OAAO,CAAC;EACV,CAAC,EAAE,CAACP,aAAa,CAAC,CAAC;EAEnB,MAAMQ,YAAY,GAAG3B,WAAW,CAAC,MAAM;IACrCW,mBAAmB,CAAC,CAACD,WAAW,CAAC;EACnC,CAAC,EAAE,CAACA,WAAW,EAAEC,mBAAmB,CAAC,CAAC;EAEtC,oBACEb,KAAA,CAAA8B,aAAA;IAAKd,SAAS,EAAEjB,UAAU,CAACQ,MAAM,CAACwB,WAAW,EAAEf,SAAS,CAAE;IAACC,KAAK,EAAEA;EAAM,GACrEF,QAAQ,eAETf,KAAA,CAAA8B,aAAA;IACEd,SAAS,EAAET,MAAM,CAACyB,YAAa;IAC/B,gBAAcpB,WAAY;IAC1B,gBAAcU;EAAU,gBAExBtB,KAAA,CAAA8B,aAAA;IAAOd,SAAS,EAAET,MAAM,CAAC0B;EAAU,gBACjCjC,KAAA,CAAA8B,aAAA,CAAC1B,QAAQ;IAAC8B,OAAO,EAAEtB,WAAY;IAACuB,eAAe,EAAEN;EAAa,CAAE,CAAC,eACjE7B,KAAA,CAAA8B,aAAA;IAAMd,SAAS,EAAET,MAAM,CAAC6B;EAAc,GAAC,UAAc,CAChD,CAAC,EACPtB,aAAa,IAAI,CAACS,KAAK,IAAIG,SAAS,GAAG,CAAC,iBACvC1B,KAAA,CAAA8B,aAAA;IAAMd,SAAS,EAAET,MAAM,CAAC8B;EAAM,GAC3BX,SAAS,CAACY,cAAc,CAAC,CACtB,CAEL,CAAC,EACLf,KAAK,iBACJvB,KAAA,CAAA8B,aAAA;IAAKd,SAAS,EAAER,YAAY,CAAC+B;EAAa,GAAC,2BAEtC,CAEJ,CAAC;AAEV;AAEA,OAAO,MAAMC,gBAAgB,gBAAGvC,IAAI,CAClCQ,qBACF,CAAiC","ignoreList":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
.nullWrapper {
|
|
18
|
+
display: flex;
|
|
19
|
+
flex-direction: column;
|
|
20
|
+
gap: var(--osdk-filter-null-wrapper-gap);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.nullValueRow {
|
|
24
|
+
display: flex;
|
|
25
|
+
align-items: center;
|
|
26
|
+
justify-content: space-between;
|
|
27
|
+
padding: var(--osdk-filter-null-row-padding);
|
|
28
|
+
border-top: var(--osdk-filter-null-row-border-top);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.nullLabel {
|
|
32
|
+
display: flex;
|
|
33
|
+
align-items: center;
|
|
34
|
+
gap: var(--osdk-filter-null-label-gap);
|
|
35
|
+
cursor: pointer;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.nullLabelText {
|
|
39
|
+
font-family: var(--osdk-filter-null-label-font-family);
|
|
40
|
+
font-size: var(--osdk-filter-null-label-font-size);
|
|
41
|
+
line-height: var(--osdk-filter-null-label-line-height);
|
|
42
|
+
color: var(--osdk-filter-null-label-color);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.count {
|
|
46
|
+
font-size: var(--osdk-typography-size-body-small);
|
|
47
|
+
font-variant-numeric: tabular-nums;
|
|
48
|
+
color: var(--osdk-typography-color-muted);
|
|
49
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// CSS Module proxy for NullValueWrapper.module.css
|
|
2
|
+
const styles = {
|
|
3
|
+
"nullWrapper": "NullValueWrapper-module__nullWrapper___hfIurJcX",
|
|
4
|
+
"nullValueRow": "NullValueWrapper-module__nullValueRow___sHIqcE89",
|
|
5
|
+
"nullLabel": "NullValueWrapper-module__nullLabel___D-f1K2Aq",
|
|
6
|
+
"nullLabelText": "NullValueWrapper-module__nullLabelText___jzAptlbZ",
|
|
7
|
+
"count": "NullValueWrapper-module__count___-Rsq7EuS"
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export default styles;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2025 Palantir Technologies, Inc. All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import React, { memo } from "react";
|
|
19
|
+
import { RangeInput } from "./RangeInput.js";
|
|
20
|
+
function formatNumber(value) {
|
|
21
|
+
return value !== undefined ? String(value) : "";
|
|
22
|
+
}
|
|
23
|
+
function parseNumber(value) {
|
|
24
|
+
if (value === "") return undefined;
|
|
25
|
+
const parsed = parseFloat(value);
|
|
26
|
+
return isNaN(parsed) ? undefined : parsed;
|
|
27
|
+
}
|
|
28
|
+
const numberConfig = {
|
|
29
|
+
inputType: "number",
|
|
30
|
+
formatValue: formatNumber,
|
|
31
|
+
parseValue: parseNumber,
|
|
32
|
+
toNumber: v => v,
|
|
33
|
+
fromNumber: v => v,
|
|
34
|
+
minLabel: "Min",
|
|
35
|
+
maxLabel: "Max",
|
|
36
|
+
formatTooltip: (min, max, count) => `${min.toFixed(1)} - ${max.toFixed(1)}: ${count.toLocaleString()}`,
|
|
37
|
+
formatPlaceholder: value => value.toFixed(0),
|
|
38
|
+
inputProps: {
|
|
39
|
+
step: "any"
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
function NumberRangeInputInner(props) {
|
|
43
|
+
return /*#__PURE__*/React.createElement(RangeInput, _extends({}, props, {
|
|
44
|
+
config: numberConfig
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
export const NumberRangeInput = /*#__PURE__*/memo(NumberRangeInputInner);
|
|
48
|
+
//# sourceMappingURL=NumberRangeInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumberRangeInput.js","names":["React","memo","RangeInput","formatNumber","value","undefined","String","parseNumber","parsed","parseFloat","isNaN","numberConfig","inputType","formatValue","parseValue","toNumber","v","fromNumber","minLabel","maxLabel","formatTooltip","min","max","count","toFixed","toLocaleString","formatPlaceholder","inputProps","step","NumberRangeInputInner","props","createElement","_extends","config","NumberRangeInput"],"sources":["NumberRangeInput.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 { ObjectSet, ObjectTypeDefinition, PropertyKeys } from \"@osdk/api\";\nimport React, { memo } from \"react\";\nimport { RangeInput, type RangeInputConfig } from \"./RangeInput.js\";\n\nfunction formatNumber(value: number | undefined): string {\n return value !== undefined ? String(value) : \"\";\n}\n\nfunction parseNumber(value: string): number | undefined {\n if (value === \"\") return undefined;\n const parsed = parseFloat(value);\n return isNaN(parsed) ? undefined : parsed;\n}\n\nconst numberConfig: RangeInputConfig<number> = {\n inputType: \"number\",\n formatValue: formatNumber,\n parseValue: parseNumber,\n toNumber: (v) => v,\n fromNumber: (v) => v,\n minLabel: \"Min\",\n maxLabel: \"Max\",\n formatTooltip: (min, max, count) =>\n `${min.toFixed(1)} - ${max.toFixed(1)}: ${count.toLocaleString()}`,\n formatPlaceholder: (value) => value.toFixed(0),\n inputProps: { step: \"any\" },\n};\n\ninterface NumberRangeInputProps<\n Q extends ObjectTypeDefinition,\n K extends PropertyKeys<Q>,\n> {\n objectType: Q;\n propertyKey: K;\n minValue: number | undefined;\n maxValue: number | undefined;\n onChange: (min: number | undefined, max: number | undefined) => void;\n objectSet?: ObjectSet<Q>;\n showHistogram?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nfunction NumberRangeInputInner<\n Q extends ObjectTypeDefinition,\n K extends PropertyKeys<Q>,\n>(props: NumberRangeInputProps<Q, K>): React.ReactElement {\n return <RangeInput {...props} config={numberConfig} />;\n}\n\nexport const NumberRangeInput = memo(\n NumberRangeInputInner,\n) as typeof NumberRangeInputInner;\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,SAASC,UAAU,QAA+B,iBAAiB;AAEnE,SAASC,YAAYA,CAACC,KAAyB,EAAU;EACvD,OAAOA,KAAK,KAAKC,SAAS,GAAGC,MAAM,CAACF,KAAK,CAAC,GAAG,EAAE;AACjD;AAEA,SAASG,WAAWA,CAACH,KAAa,EAAsB;EACtD,IAAIA,KAAK,KAAK,EAAE,EAAE,OAAOC,SAAS;EAClC,MAAMG,MAAM,GAAGC,UAAU,CAACL,KAAK,CAAC;EAChC,OAAOM,KAAK,CAACF,MAAM,CAAC,GAAGH,SAAS,GAAGG,MAAM;AAC3C;AAEA,MAAMG,YAAsC,GAAG;EAC7CC,SAAS,EAAE,QAAQ;EACnBC,WAAW,EAAEV,YAAY;EACzBW,UAAU,EAAEP,WAAW;EACvBQ,QAAQ,EAAGC,CAAC,IAAKA,CAAC;EAClBC,UAAU,EAAGD,CAAC,IAAKA,CAAC;EACpBE,QAAQ,EAAE,KAAK;EACfC,QAAQ,EAAE,KAAK;EACfC,aAAa,EAAEA,CAACC,GAAG,EAAEC,GAAG,EAAEC,KAAK,KAC7B,GAAGF,GAAG,CAACG,OAAO,CAAC,CAAC,CAAC,MAAMF,GAAG,CAACE,OAAO,CAAC,CAAC,CAAC,KAAKD,KAAK,CAACE,cAAc,CAAC,CAAC,EAAE;EACpEC,iBAAiB,EAAGtB,KAAK,IAAKA,KAAK,CAACoB,OAAO,CAAC,CAAC,CAAC;EAC9CG,UAAU,EAAE;IAAEC,IAAI,EAAE;EAAM;AAC5B,CAAC;AAiBD,SAASC,qBAAqBA,CAG5BC,KAAkC,EAAsB;EACxD,oBAAO9B,KAAA,CAAA+B,aAAA,CAAC7B,UAAU,EAAA8B,QAAA,KAAKF,KAAK;IAAEG,MAAM,EAAEtB;EAAa,EAAE,CAAC;AACxD;AAEA,OAAO,MAAMuB,gBAAgB,gBAAGjC,IAAI,CAClC4B,qBACF,CAAiC","ignoreList":[]}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2025 Palantir Technologies, Inc. All rights reserved.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { Input } from "@base-ui/react/input";
|
|
19
|
+
import { useOsdkAggregation } from "@osdk/react/experimental";
|
|
20
|
+
import classnames from "classnames";
|
|
21
|
+
import { debounce } from "lodash-es";
|
|
22
|
+
import React, { memo, useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
|
|
23
|
+
import { createGroupByAggregateOptions } from "../../utils/aggregationHelpers.js";
|
|
24
|
+
import { createHistogramBuckets, getMaxBucketCount } from "./createHistogramBuckets.js";
|
|
25
|
+
import styles from "./RangeInput.module.css.js";
|
|
26
|
+
import sharedStyles from "./shared.module.css.js";
|
|
27
|
+
const DEBOUNCE_MS = 300;
|
|
28
|
+
function RangeInputInner({
|
|
29
|
+
objectType,
|
|
30
|
+
propertyKey,
|
|
31
|
+
minValue,
|
|
32
|
+
maxValue,
|
|
33
|
+
onChange,
|
|
34
|
+
objectSet,
|
|
35
|
+
showHistogram = true,
|
|
36
|
+
className,
|
|
37
|
+
style,
|
|
38
|
+
config
|
|
39
|
+
}) {
|
|
40
|
+
const minInputId = useId();
|
|
41
|
+
const maxInputId = useId();
|
|
42
|
+
const [localMin, setLocalMin] = useState(config.formatValue(minValue));
|
|
43
|
+
const [localMax, setLocalMax] = useState(config.formatValue(maxValue));
|
|
44
|
+
const onChangeRef = useRef(onChange);
|
|
45
|
+
onChangeRef.current = onChange;
|
|
46
|
+
const minValueRef = useRef(minValue);
|
|
47
|
+
minValueRef.current = minValue;
|
|
48
|
+
const maxValueRef = useRef(maxValue);
|
|
49
|
+
maxValueRef.current = maxValue;
|
|
50
|
+
const debouncedMinChange = useMemo(() => debounce(newValue => {
|
|
51
|
+
const parsed = config.parseValue(newValue);
|
|
52
|
+
onChangeRef.current(parsed, maxValueRef.current);
|
|
53
|
+
}, DEBOUNCE_MS), [config]);
|
|
54
|
+
const debouncedMaxChange = useMemo(() => debounce(newValue => {
|
|
55
|
+
const parsed = config.parseValue(newValue);
|
|
56
|
+
onChangeRef.current(minValueRef.current, parsed);
|
|
57
|
+
}, DEBOUNCE_MS), [config]);
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
setLocalMin(config.formatValue(minValue));
|
|
60
|
+
debouncedMinChange.cancel();
|
|
61
|
+
}, [minValue, config, debouncedMinChange]);
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
setLocalMax(config.formatValue(maxValue));
|
|
64
|
+
debouncedMaxChange.cancel();
|
|
65
|
+
}, [maxValue, config, debouncedMaxChange]);
|
|
66
|
+
useEffect(() => {
|
|
67
|
+
return () => {
|
|
68
|
+
debouncedMinChange.cancel();
|
|
69
|
+
debouncedMaxChange.cancel();
|
|
70
|
+
};
|
|
71
|
+
}, [debouncedMinChange, debouncedMaxChange]);
|
|
72
|
+
const aggregateOptions = useMemo(() => createGroupByAggregateOptions(propertyKey), [propertyKey]);
|
|
73
|
+
const {
|
|
74
|
+
data: aggregateData,
|
|
75
|
+
isLoading
|
|
76
|
+
} = useOsdkAggregation(objectType, {
|
|
77
|
+
aggregate: aggregateOptions
|
|
78
|
+
});
|
|
79
|
+
const valueCountPairs = useMemo(() => {
|
|
80
|
+
if (!aggregateData) return [];
|
|
81
|
+
|
|
82
|
+
// Same dynamic $groupBy + $count pattern as usePropertyAggregation
|
|
83
|
+
|
|
84
|
+
const pairs = [];
|
|
85
|
+
for (const item of aggregateData) {
|
|
86
|
+
const rawValue = item.$group[propertyKey];
|
|
87
|
+
if (rawValue != null) {
|
|
88
|
+
const parsed = config.parseValue(String(rawValue));
|
|
89
|
+
if (parsed !== undefined) {
|
|
90
|
+
pairs.push({
|
|
91
|
+
value: parsed,
|
|
92
|
+
count: item.$count ?? 0
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return pairs;
|
|
98
|
+
}, [aggregateData, propertyKey, config]);
|
|
99
|
+
const computedRange = useMemo(() => {
|
|
100
|
+
if (valueCountPairs.length === 0) return {
|
|
101
|
+
min: undefined,
|
|
102
|
+
max: undefined
|
|
103
|
+
};
|
|
104
|
+
const min = valueCountPairs.reduce((acc, p) => Math.min(acc, config.toNumber(p.value)), Infinity);
|
|
105
|
+
const max = valueCountPairs.reduce((acc, p) => Math.max(acc, config.toNumber(p.value)), -Infinity);
|
|
106
|
+
return {
|
|
107
|
+
min: config.fromNumber(min),
|
|
108
|
+
max: config.fromNumber(max)
|
|
109
|
+
};
|
|
110
|
+
}, [valueCountPairs, config]);
|
|
111
|
+
const dataRange = useMemo(() => ({
|
|
112
|
+
dataMin: computedRange.min,
|
|
113
|
+
dataMax: computedRange.max
|
|
114
|
+
}), [computedRange.min, computedRange.max]);
|
|
115
|
+
const buckets = useMemo(() => {
|
|
116
|
+
if (!showHistogram || valueCountPairs.length === 0 || computedRange.min === undefined || computedRange.max === undefined) {
|
|
117
|
+
return [];
|
|
118
|
+
}
|
|
119
|
+
return createHistogramBuckets(valueCountPairs, {
|
|
120
|
+
min: computedRange.min,
|
|
121
|
+
max: computedRange.max
|
|
122
|
+
}, config.toNumber, config.fromNumber);
|
|
123
|
+
}, [showHistogram, valueCountPairs, computedRange, config]);
|
|
124
|
+
const maxBucketCount = useMemo(() => getMaxBucketCount(buckets), [buckets]);
|
|
125
|
+
const handleMinChange = useCallback(e => {
|
|
126
|
+
const newValue = e.target.value;
|
|
127
|
+
setLocalMin(newValue);
|
|
128
|
+
debouncedMinChange(newValue);
|
|
129
|
+
}, [debouncedMinChange]);
|
|
130
|
+
const handleMaxChange = useCallback(e => {
|
|
131
|
+
const newValue = e.target.value;
|
|
132
|
+
setLocalMax(newValue);
|
|
133
|
+
debouncedMaxChange(newValue);
|
|
134
|
+
}, [debouncedMaxChange]);
|
|
135
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
136
|
+
className: classnames(styles.rangeInput, className),
|
|
137
|
+
style: style,
|
|
138
|
+
"data-loading": isLoading
|
|
139
|
+
}, showHistogram && buckets.length > 0 && /*#__PURE__*/React.createElement("div", {
|
|
140
|
+
className: styles.histogramContainer
|
|
141
|
+
}, buckets.map((bucket, index) => {
|
|
142
|
+
const height = bucket.count / maxBucketCount * 100;
|
|
143
|
+
const isInRange = (minValue === undefined || config.toNumber(bucket.max) >= config.toNumber(minValue)) && (maxValue === undefined || config.toNumber(bucket.min) <= config.toNumber(maxValue));
|
|
144
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
145
|
+
key: index,
|
|
146
|
+
className: styles.histogramBar,
|
|
147
|
+
"data-in-range": isInRange,
|
|
148
|
+
style: {
|
|
149
|
+
height: `${Math.max(height, 2)}%`
|
|
150
|
+
},
|
|
151
|
+
title: config.formatTooltip(bucket.min, bucket.max, bucket.count)
|
|
152
|
+
});
|
|
153
|
+
})), /*#__PURE__*/React.createElement("div", {
|
|
154
|
+
className: styles.rangeInputs
|
|
155
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
156
|
+
className: styles.inputWrapper
|
|
157
|
+
}, /*#__PURE__*/React.createElement("label", {
|
|
158
|
+
htmlFor: minInputId,
|
|
159
|
+
className: styles.inputLabel
|
|
160
|
+
}, config.minLabel), /*#__PURE__*/React.createElement(Input, _extends({
|
|
161
|
+
id: minInputId,
|
|
162
|
+
type: config.inputType,
|
|
163
|
+
className: styles.input,
|
|
164
|
+
value: localMin,
|
|
165
|
+
onChange: handleMinChange,
|
|
166
|
+
placeholder: dataRange.dataMin !== undefined && config.formatPlaceholder ? config.formatPlaceholder(dataRange.dataMin) : undefined
|
|
167
|
+
}, config.inputProps))), /*#__PURE__*/React.createElement("span", {
|
|
168
|
+
className: styles.separator,
|
|
169
|
+
"aria-hidden": "true"
|
|
170
|
+
}, "\u2013"), /*#__PURE__*/React.createElement("div", {
|
|
171
|
+
className: styles.inputWrapper
|
|
172
|
+
}, /*#__PURE__*/React.createElement("label", {
|
|
173
|
+
htmlFor: maxInputId,
|
|
174
|
+
className: styles.inputLabel
|
|
175
|
+
}, config.maxLabel), /*#__PURE__*/React.createElement(Input, _extends({
|
|
176
|
+
id: maxInputId,
|
|
177
|
+
type: config.inputType,
|
|
178
|
+
className: styles.input,
|
|
179
|
+
value: localMax,
|
|
180
|
+
onChange: handleMaxChange,
|
|
181
|
+
placeholder: dataRange.dataMax !== undefined && config.formatPlaceholder ? config.formatPlaceholder(dataRange.dataMax) : undefined
|
|
182
|
+
}, config.inputProps)))), isLoading && /*#__PURE__*/React.createElement("div", {
|
|
183
|
+
className: sharedStyles.loadingMessage
|
|
184
|
+
}, "Loading..."));
|
|
185
|
+
}
|
|
186
|
+
export const RangeInput = /*#__PURE__*/memo(RangeInputInner);
|
|
187
|
+
//# sourceMappingURL=RangeInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RangeInput.js","names":["Input","useOsdkAggregation","classnames","debounce","React","memo","useCallback","useEffect","useId","useMemo","useRef","useState","createGroupByAggregateOptions","createHistogramBuckets","getMaxBucketCount","styles","sharedStyles","DEBOUNCE_MS","RangeInputInner","objectType","propertyKey","minValue","maxValue","onChange","objectSet","showHistogram","className","style","config","minInputId","maxInputId","localMin","setLocalMin","formatValue","localMax","setLocalMax","onChangeRef","current","minValueRef","maxValueRef","debouncedMinChange","newValue","parsed","parseValue","debouncedMaxChange","cancel","aggregateOptions","data","aggregateData","isLoading","aggregate","valueCountPairs","pairs","item","rawValue","$group","String","undefined","push","value","count","$count","computedRange","length","min","max","reduce","acc","p","Math","toNumber","Infinity","fromNumber","dataRange","dataMin","dataMax","buckets","maxBucketCount","handleMinChange","e","target","handleMaxChange","createElement","rangeInput","histogramContainer","map","bucket","index","height","isInRange","key","histogramBar","title","formatTooltip","rangeInputs","inputWrapper","htmlFor","inputLabel","minLabel","_extends","id","type","inputType","input","placeholder","formatPlaceholder","inputProps","separator","maxLabel","loadingMessage","RangeInput"],"sources":["RangeInput.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 { Input } from \"@base-ui/react/input\";\nimport type { ObjectSet, ObjectTypeDefinition, PropertyKeys } from \"@osdk/api\";\nimport { useOsdkAggregation } from \"@osdk/react/experimental\";\nimport classnames from \"classnames\";\nimport { debounce } from \"lodash-es\";\nimport React, {\n memo,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n type AggregationGroupResult,\n createGroupByAggregateOptions,\n} from \"../../utils/aggregationHelpers.js\";\nimport {\n createHistogramBuckets,\n getMaxBucketCount,\n type HistogramBucket,\n} from \"./createHistogramBuckets.js\";\nimport styles from \"./RangeInput.module.css\";\nimport sharedStyles from \"./shared.module.css\";\n\nconst DEBOUNCE_MS = 300;\n\nexport interface RangeInputConfig<T> {\n inputType: \"number\" | \"date\";\n formatValue: (value: T | undefined) => string;\n parseValue: (value: string) => T | undefined;\n toNumber: (value: T) => number;\n fromNumber: (value: number) => T;\n minLabel: string;\n maxLabel: string;\n formatTooltip: (min: T, max: T, count: number) => string;\n formatPlaceholder?: (value: T) => string;\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n}\n\nexport interface RangeInputProps<\n Q extends ObjectTypeDefinition,\n K extends PropertyKeys<Q>,\n T,\n> {\n objectType: Q;\n propertyKey: K;\n minValue: T | undefined;\n maxValue: T | undefined;\n onChange: (min: T | undefined, max: T | undefined) => void;\n objectSet?: ObjectSet<Q>;\n showHistogram?: boolean;\n className?: string;\n style?: React.CSSProperties;\n config: RangeInputConfig<T>;\n}\n\nfunction RangeInputInner<\n Q extends ObjectTypeDefinition,\n K extends PropertyKeys<Q>,\n T,\n>({\n objectType,\n propertyKey,\n minValue,\n maxValue,\n onChange,\n objectSet,\n showHistogram = true,\n className,\n style,\n config,\n}: RangeInputProps<Q, K, T>): React.ReactElement {\n const minInputId = useId();\n const maxInputId = useId();\n\n const [localMin, setLocalMin] = useState<string>(\n config.formatValue(minValue),\n );\n const [localMax, setLocalMax] = useState<string>(\n config.formatValue(maxValue),\n );\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n const minValueRef = useRef(minValue);\n minValueRef.current = minValue;\n const maxValueRef = useRef(maxValue);\n maxValueRef.current = maxValue;\n\n const debouncedMinChange = useMemo(\n () =>\n debounce((newValue: string) => {\n const parsed = config.parseValue(newValue);\n onChangeRef.current(parsed, maxValueRef.current);\n }, DEBOUNCE_MS),\n [config],\n );\n\n const debouncedMaxChange = useMemo(\n () =>\n debounce((newValue: string) => {\n const parsed = config.parseValue(newValue);\n onChangeRef.current(minValueRef.current, parsed);\n }, DEBOUNCE_MS),\n [config],\n );\n\n useEffect(() => {\n setLocalMin(config.formatValue(minValue));\n debouncedMinChange.cancel();\n }, [minValue, config, debouncedMinChange]);\n\n useEffect(() => {\n setLocalMax(config.formatValue(maxValue));\n debouncedMaxChange.cancel();\n }, [maxValue, config, debouncedMaxChange]);\n\n useEffect(() => {\n return () => {\n debouncedMinChange.cancel();\n debouncedMaxChange.cancel();\n };\n }, [debouncedMinChange, debouncedMaxChange]);\n\n const aggregateOptions = useMemo(\n () => createGroupByAggregateOptions<Q>(propertyKey as string),\n [propertyKey],\n );\n\n const { data: aggregateData, isLoading } = useOsdkAggregation(objectType, {\n aggregate: aggregateOptions,\n });\n\n const valueCountPairs = useMemo<Array<{ value: T; count: number }>>(() => {\n if (!aggregateData) return [];\n\n // Same dynamic $groupBy + $count pattern as usePropertyAggregation\n const dataArray = aggregateData as AggregationGroupResult;\n\n const pairs: Array<{ value: T; count: number }> = [];\n for (const item of dataArray) {\n const rawValue = item.$group[propertyKey as string];\n if (rawValue != null) {\n const parsed = config.parseValue(String(rawValue));\n if (parsed !== undefined) {\n pairs.push({ value: parsed, count: item.$count ?? 0 });\n }\n }\n }\n\n return pairs;\n }, [aggregateData, propertyKey, config]);\n\n const computedRange = useMemo(() => {\n if (valueCountPairs.length === 0) return { min: undefined, max: undefined };\n const min = valueCountPairs.reduce(\n (acc, p) => Math.min(acc, config.toNumber(p.value)),\n Infinity,\n );\n const max = valueCountPairs.reduce(\n (acc, p) => Math.max(acc, config.toNumber(p.value)),\n -Infinity,\n );\n return {\n min: config.fromNumber(min),\n max: config.fromNumber(max),\n };\n }, [valueCountPairs, config]);\n\n const dataRange = useMemo(() => ({\n dataMin: computedRange.min,\n dataMax: computedRange.max,\n }), [computedRange.min, computedRange.max]);\n\n const buckets = useMemo<Array<HistogramBucket<T>>>(() => {\n if (\n !showHistogram\n || valueCountPairs.length === 0\n || computedRange.min === undefined\n || computedRange.max === undefined\n ) {\n return [];\n }\n\n return createHistogramBuckets(\n valueCountPairs,\n { min: computedRange.min, max: computedRange.max },\n config.toNumber,\n config.fromNumber,\n );\n }, [showHistogram, valueCountPairs, computedRange, config]);\n\n const maxBucketCount = useMemo(() => getMaxBucketCount(buckets), [buckets]);\n\n const handleMinChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setLocalMin(newValue);\n debouncedMinChange(newValue);\n },\n [debouncedMinChange],\n );\n\n const handleMaxChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setLocalMax(newValue);\n debouncedMaxChange(newValue);\n },\n [debouncedMaxChange],\n );\n\n return (\n <div\n className={classnames(styles.rangeInput, className)}\n style={style}\n data-loading={isLoading}\n >\n {showHistogram && buckets.length > 0 && (\n <div className={styles.histogramContainer}>\n {buckets.map((bucket, index) => {\n const height = (bucket.count / maxBucketCount) * 100;\n const isInRange = (minValue === undefined\n || config.toNumber(bucket.max) >= config.toNumber(minValue))\n && (maxValue === undefined\n || config.toNumber(bucket.min) <= config.toNumber(maxValue));\n\n return (\n <div\n key={index}\n className={styles.histogramBar}\n data-in-range={isInRange}\n style={{ height: `${Math.max(height, 2)}%` }}\n title={config.formatTooltip(\n bucket.min,\n bucket.max,\n bucket.count,\n )}\n />\n );\n })}\n </div>\n )}\n\n <div className={styles.rangeInputs}>\n <div className={styles.inputWrapper}>\n <label htmlFor={minInputId} className={styles.inputLabel}>\n {config.minLabel}\n </label>\n <Input\n id={minInputId}\n type={config.inputType}\n className={styles.input}\n value={localMin}\n onChange={handleMinChange}\n placeholder={dataRange.dataMin !== undefined\n && config.formatPlaceholder\n ? config.formatPlaceholder(dataRange.dataMin)\n : undefined}\n {...config.inputProps}\n />\n </div>\n\n <span className={styles.separator} aria-hidden=\"true\">\n –\n </span>\n\n <div className={styles.inputWrapper}>\n <label htmlFor={maxInputId} className={styles.inputLabel}>\n {config.maxLabel}\n </label>\n <Input\n id={maxInputId}\n type={config.inputType}\n className={styles.input}\n value={localMax}\n onChange={handleMaxChange}\n placeholder={dataRange.dataMax !== undefined\n && config.formatPlaceholder\n ? config.formatPlaceholder(dataRange.dataMax)\n : undefined}\n {...config.inputProps}\n />\n </div>\n </div>\n\n {isLoading && (\n <div className={sharedStyles.loadingMessage}>\n Loading...\n </div>\n )}\n </div>\n );\n}\n\nexport const RangeInput = memo(RangeInputInner) as typeof RangeInputInner;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
.rangeInput {
|
|
18
|
+
display: flex;
|
|
19
|
+
flex-direction: column;
|
|
20
|
+
gap: var(--osdk-filter-range-gap, calc(var(--osdk-surface-spacing) * 2));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.histogramContainer {
|
|
24
|
+
display: flex;
|
|
25
|
+
align-items: flex-end;
|
|
26
|
+
height: var(--osdk-filter-range-histogram-height, 60px);
|
|
27
|
+
gap: var(--osdk-filter-range-histogram-bar-gap, 2px);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.histogramBar {
|
|
31
|
+
flex: 1;
|
|
32
|
+
background: var(--osdk-filter-range-histogram-bar-color, var(--osdk-custom-color-gray-3));
|
|
33
|
+
min-width: var(--osdk-filter-range-histogram-bar-min-width, 4px);
|
|
34
|
+
transition: background-color var(--osdk-emphasis-transition-duration) var(--osdk-emphasis-ease-default);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.histogramBar[data-in-range="true"] {
|
|
38
|
+
background: var(--osdk-filter-range-histogram-bar-active-color, var(--osdk-intent-primary-rest));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.rangeInputs {
|
|
42
|
+
display: flex;
|
|
43
|
+
align-items: flex-end;
|
|
44
|
+
gap: var(--osdk-filter-range-inputs-gap, calc(var(--osdk-surface-spacing) * 2));
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.inputWrapper {
|
|
48
|
+
flex: 1;
|
|
49
|
+
display: flex;
|
|
50
|
+
flex-direction: column;
|
|
51
|
+
gap: var(--osdk-filter-range-input-wrapper-gap, calc(var(--osdk-surface-spacing) * 1));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.inputLabel {
|
|
55
|
+
font-size: var(--osdk-typography-size-body-small);
|
|
56
|
+
color: var(--osdk-typography-color-muted);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.input {
|
|
60
|
+
font-size: var(--osdk-typography-size-body-small);
|
|
61
|
+
padding: var(--osdk-filter-input-padding);
|
|
62
|
+
border: var(--osdk-filter-input-border);
|
|
63
|
+
border-radius: var(--osdk-filter-input-border-radius);
|
|
64
|
+
background: var(--osdk-filter-input-bg);
|
|
65
|
+
color: var(--osdk-filter-input-color);
|
|
66
|
+
|
|
67
|
+
&:focus {
|
|
68
|
+
border-color: var(--osdk-filter-input-focus-border);
|
|
69
|
+
outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);
|
|
70
|
+
outline-offset: var(--osdk-filter-input-focus-outline-offset);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
&::placeholder {
|
|
74
|
+
color: var(--osdk-filter-input-placeholder-color);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.separator {
|
|
79
|
+
padding-bottom: calc(var(--osdk-surface-spacing) * 1.5);
|
|
80
|
+
color: var(--osdk-typography-color-muted);
|
|
81
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// CSS Module proxy for RangeInput.module.css
|
|
2
|
+
const styles = {
|
|
3
|
+
"rangeInput": "RangeInput-module__rangeInput___5IlnpUfs",
|
|
4
|
+
"histogramContainer": "RangeInput-module__histogramContainer___suD4IT5D",
|
|
5
|
+
"histogramBar": "RangeInput-module__histogramBar___togsImv0",
|
|
6
|
+
"rangeInputs": "RangeInput-module__rangeInputs___6f6mnjwL",
|
|
7
|
+
"inputWrapper": "RangeInput-module__inputWrapper___1sk8iEjt",
|
|
8
|
+
"inputLabel": "RangeInput-module__inputLabel___-fR6-r3z",
|
|
9
|
+
"input": "RangeInput-module__input___e4XWn2rB",
|
|
10
|
+
"separator": "RangeInput-module__separator___ml1GvZvm"
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export default styles;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { Button } from "@base-ui/react/button";
|
|
18
|
+
import { Input } from "@base-ui/react/input";
|
|
19
|
+
import classnames from "classnames";
|
|
20
|
+
import React, { memo, useCallback } from "react";
|
|
21
|
+
import { formatDateForInput, parseDateFromInput } from "./dateUtils.js";
|
|
22
|
+
import styles from "./SingleDateInput.module.css.js";
|
|
23
|
+
function SingleDateInputInner({
|
|
24
|
+
selectedDate,
|
|
25
|
+
onChange,
|
|
26
|
+
className,
|
|
27
|
+
style,
|
|
28
|
+
minDate,
|
|
29
|
+
maxDate,
|
|
30
|
+
placeholder = "Select a date...",
|
|
31
|
+
showClearButton = true
|
|
32
|
+
}) {
|
|
33
|
+
const handleChange = useCallback(e => {
|
|
34
|
+
const date = parseDateFromInput(e.target.value);
|
|
35
|
+
onChange(date);
|
|
36
|
+
}, [onChange]);
|
|
37
|
+
const handleClear = useCallback(() => {
|
|
38
|
+
onChange(undefined);
|
|
39
|
+
}, [onChange]);
|
|
40
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
41
|
+
className: classnames(styles.singleDate, className),
|
|
42
|
+
style: style
|
|
43
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
44
|
+
className: styles.dateContainer
|
|
45
|
+
}, /*#__PURE__*/React.createElement(Input, {
|
|
46
|
+
type: "date",
|
|
47
|
+
className: styles.input,
|
|
48
|
+
value: formatDateForInput(selectedDate),
|
|
49
|
+
onChange: handleChange,
|
|
50
|
+
min: minDate ? formatDateForInput(minDate) : undefined,
|
|
51
|
+
max: maxDate ? formatDateForInput(maxDate) : undefined,
|
|
52
|
+
placeholder: placeholder,
|
|
53
|
+
"aria-label": "Select date"
|
|
54
|
+
}), showClearButton && selectedDate !== undefined && /*#__PURE__*/React.createElement(Button, {
|
|
55
|
+
className: styles.clearButton,
|
|
56
|
+
onClick: handleClear,
|
|
57
|
+
"aria-label": "Clear date"
|
|
58
|
+
}, "\xD7")));
|
|
59
|
+
}
|
|
60
|
+
export const SingleDateInput = /*#__PURE__*/memo(SingleDateInputInner);
|
|
61
|
+
//# sourceMappingURL=SingleDateInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SingleDateInput.js","names":["Button","Input","classnames","React","memo","useCallback","formatDateForInput","parseDateFromInput","styles","SingleDateInputInner","selectedDate","onChange","className","style","minDate","maxDate","placeholder","showClearButton","handleChange","e","date","target","value","handleClear","undefined","createElement","singleDate","dateContainer","type","input","min","max","clearButton","onClick","SingleDateInput"],"sources":["SingleDateInput.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Input } from \"@base-ui/react/input\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback } from \"react\";\nimport { formatDateForInput, parseDateFromInput } from \"./dateUtils.js\";\nimport styles from \"./SingleDateInput.module.css\";\n\ninterface SingleDateInputProps {\n selectedDate: Date | undefined;\n onChange: (date: Date | undefined) => void;\n className?: string;\n style?: React.CSSProperties;\n minDate?: Date;\n maxDate?: Date;\n placeholder?: string;\n showClearButton?: boolean;\n}\n\nfunction SingleDateInputInner({\n selectedDate,\n onChange,\n className,\n style,\n minDate,\n maxDate,\n placeholder = \"Select a date...\",\n showClearButton = true,\n}: SingleDateInputProps): React.ReactElement {\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const date = parseDateFromInput(e.target.value);\n onChange(date);\n },\n [onChange],\n );\n\n const handleClear = useCallback(() => {\n onChange(undefined);\n }, [onChange]);\n\n return (\n <div className={classnames(styles.singleDate, className)} style={style}>\n <div className={styles.dateContainer}>\n <Input\n type=\"date\"\n className={styles.input}\n value={formatDateForInput(selectedDate)}\n onChange={handleChange}\n min={minDate ? formatDateForInput(minDate) : undefined}\n max={maxDate ? formatDateForInput(maxDate) : undefined}\n placeholder={placeholder}\n aria-label=\"Select date\"\n />\n {showClearButton && selectedDate !== undefined && (\n <Button\n className={styles.clearButton}\n onClick={handleClear}\n aria-label=\"Clear date\"\n >\n ×\n </Button>\n )}\n </div>\n </div>\n );\n}\n\nexport const SingleDateInput: React.NamedExoticComponent<SingleDateInputProps> =\n memo(SingleDateInputInner);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,KAAK,QAAQ,sBAAsB;AAC5C,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,IAAIC,IAAI,EAAEC,WAAW,QAAQ,OAAO;AAChD,SAASC,kBAAkB,EAAEC,kBAAkB,QAAQ,gBAAgB;AACvE,OAAOC,MAAM,MAAM,8BAA8B;AAajD,SAASC,oBAAoBA,CAAC;EAC5BC,YAAY;EACZC,QAAQ;EACRC,SAAS;EACTC,KAAK;EACLC,OAAO;EACPC,OAAO;EACPC,WAAW,GAAG,kBAAkB;EAChCC,eAAe,GAAG;AACE,CAAC,EAAsB;EAC3C,MAAMC,YAAY,GAAGb,WAAW,CAC7Bc,CAAsC,IAAK;IAC1C,MAAMC,IAAI,GAAGb,kBAAkB,CAACY,CAAC,CAACE,MAAM,CAACC,KAAK,CAAC;IAC/CX,QAAQ,CAACS,IAAI,CAAC;EAChB,CAAC,EACD,CAACT,QAAQ,CACX,CAAC;EAED,MAAMY,WAAW,GAAGlB,WAAW,CAAC,MAAM;IACpCM,QAAQ,CAACa,SAAS,CAAC;EACrB,CAAC,EAAE,CAACb,QAAQ,CAAC,CAAC;EAEd,oBACER,KAAA,CAAAsB,aAAA;IAAKb,SAAS,EAAEV,UAAU,CAACM,MAAM,CAACkB,UAAU,EAAEd,SAAS,CAAE;IAACC,KAAK,EAAEA;EAAM,gBACrEV,KAAA,CAAAsB,aAAA;IAAKb,SAAS,EAAEJ,MAAM,CAACmB;EAAc,gBACnCxB,KAAA,CAAAsB,aAAA,CAACxB,KAAK;IACJ2B,IAAI,EAAC,MAAM;IACXhB,SAAS,EAAEJ,MAAM,CAACqB,KAAM;IACxBP,KAAK,EAAEhB,kBAAkB,CAACI,YAAY,CAAE;IACxCC,QAAQ,EAAEO,YAAa;IACvBY,GAAG,EAAEhB,OAAO,GAAGR,kBAAkB,CAACQ,OAAO,CAAC,GAAGU,SAAU;IACvDO,GAAG,EAAEhB,OAAO,GAAGT,kBAAkB,CAACS,OAAO,CAAC,GAAGS,SAAU;IACvDR,WAAW,EAAEA,WAAY;IACzB,cAAW;EAAa,CACzB,CAAC,EACDC,eAAe,IAAIP,YAAY,KAAKc,SAAS,iBAC5CrB,KAAA,CAAAsB,aAAA,CAACzB,MAAM;IACLY,SAAS,EAAEJ,MAAM,CAACwB,WAAY;IAC9BC,OAAO,EAAEV,WAAY;IACrB,cAAW;EAAY,GACxB,MAEO,CAEP,CACF,CAAC;AAEV;AAEA,OAAO,MAAMW,eAAiE,gBAC5E9B,IAAI,CAACK,oBAAoB,CAAC","ignoreList":[]}
|