@osdk/react-components 0.2.0-beta.21 → 0.2.0-beta.22
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/AGENTS.md +14 -97
- package/CHANGELOG.md +19 -0
- package/README.md +1 -1
- package/build/browser/action-form/ActionFormApi.js.map +1 -1
- package/build/browser/action-form/BaseForm.js +18 -5
- package/build/browser/action-form/BaseForm.js.map +1 -1
- package/build/browser/action-form/BaseForm.module.css +38 -0
- package/build/browser/action-form/BaseForm.module.css.js +8 -0
- package/build/browser/action-form/FormField.js +42 -0
- package/build/browser/action-form/FormField.js.map +1 -0
- package/build/browser/action-form/FormField.module.css +41 -0
- package/build/browser/action-form/FormField.module.css.js +10 -0
- package/build/browser/action-form/FormFieldApi.js.map +1 -1
- package/build/browser/action-form/FormHeader.js +26 -0
- package/build/browser/action-form/FormHeader.js.map +1 -0
- package/build/browser/action-form/FormHeader.module.css +26 -0
- package/build/browser/action-form/FormHeader.module.css.js +6 -0
- package/build/browser/action-form/fields/FormFieldRenderer.js +7 -5
- package/build/browser/action-form/fields/FormFieldRenderer.js.map +1 -1
- package/build/browser/action-form/fields/TextInputField.js +2 -0
- package/build/browser/action-form/fields/TextInputField.js.map +1 -1
- package/build/browser/action-form/fields/TextInputField.module.css +56 -0
- package/build/browser/action-form/fields/TextInputField.module.css.js +6 -0
- package/build/browser/base-components/checkbox/Checkbox.js +2 -2
- package/build/browser/base-components/checkbox/Checkbox.js.map +1 -1
- package/build/browser/base-components/checkbox/Checkbox.module.css +0 -4
- package/build/browser/base-components/combobox/Combobox.js +3 -8
- package/build/browser/base-components/combobox/Combobox.js.map +1 -1
- package/build/browser/base-components/combobox/Combobox.module.css +0 -3
- package/build/browser/base-components/draggable-list/DraggableList.js +2 -4
- package/build/browser/base-components/draggable-list/DraggableList.js.map +1 -1
- package/build/browser/base-components/search-bar/SearchBar.module.css +2 -2
- package/build/browser/base-components/select/Select.js +1 -3
- package/build/browser/base-components/select/Select.js.map +1 -1
- package/build/browser/base-components/select/Select.module.css +0 -2
- package/build/browser/base-components/switch/Switch.module.css +0 -1
- package/build/browser/filter-list/FilterInput.js +14 -5
- package/build/browser/filter-list/FilterInput.js.map +1 -1
- package/build/browser/filter-list/FilterList.js +13 -5
- package/build/browser/filter-list/FilterList.js.map +1 -1
- package/build/browser/filter-list/FilterListApi.js.map +1 -1
- package/build/browser/filter-list/base/AddFilterPopover.js +4 -3
- package/build/browser/filter-list/base/AddFilterPopover.js.map +1 -1
- package/build/browser/filter-list/base/BaseFilterListApi.js.map +1 -1
- package/build/browser/filter-list/base/ExcludeDropdown.js +61 -0
- package/build/browser/filter-list/base/ExcludeDropdown.js.map +1 -0
- package/build/browser/filter-list/base/ExcludeDropdown.module.css +94 -0
- package/build/browser/filter-list/base/ExcludeDropdown.module.css.js +12 -0
- package/build/browser/filter-list/base/FilterIcons.js +0 -39
- package/build/browser/filter-list/base/FilterIcons.js.map +1 -1
- package/build/browser/filter-list/base/FilterInputExcludeRow.js +55 -0
- package/build/browser/filter-list/base/FilterInputExcludeRow.js.map +1 -0
- package/build/browser/filter-list/base/FilterListItem.js +72 -23
- package/build/browser/filter-list/base/FilterListItem.js.map +1 -1
- package/build/browser/filter-list/base/FilterListItem.module.css +96 -20
- package/build/browser/filter-list/base/FilterListItem.module.css.js +7 -2
- package/build/browser/filter-list/base/inputs/CheckboxListInput.js +2 -2
- package/build/browser/filter-list/base/inputs/CheckboxListInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/ContainsTextInput.js +2 -6
- package/build/browser/filter-list/base/inputs/ContainsTextInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/ListogramInput.js +2 -2
- package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/RangeInput.js +2 -2
- package/build/browser/filter-list/base/inputs/RangeInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/SingleSelectInput.js +1 -3
- package/build/browser/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/{useStaleData.js → useStableData.js} +5 -5
- package/build/browser/filter-list/base/inputs/useStableData.js.map +1 -0
- package/build/browser/filter-list/hooks/usePropertyAggregation.js +3 -2
- package/build/browser/filter-list/hooks/usePropertyAggregation.js.map +1 -1
- package/build/browser/filter-list/inputs/CheckboxListFilterInput.js +15 -5
- package/build/browser/filter-list/inputs/CheckboxListFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/DateRangeFilterInput.js +10 -6
- package/build/browser/filter-list/inputs/DateRangeFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/LinkedPropertyInput.js +41 -18
- package/build/browser/filter-list/inputs/LinkedPropertyInput.js.map +1 -1
- package/build/browser/filter-list/inputs/ListogramFilterInput.js +15 -5
- package/build/browser/filter-list/inputs/ListogramFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/MultiSelectFilterInput.js +12 -4
- package/build/browser/filter-list/inputs/MultiSelectFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/NumberRangeFilterInput.js +10 -6
- package/build/browser/filter-list/inputs/NumberRangeFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/PropertyFilterInput.js +36 -10
- package/build/browser/filter-list/inputs/PropertyFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/SingleSelectFilterInput.js +12 -4
- package/build/browser/filter-list/inputs/SingleSelectFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/TextTagsFilterInput.js +12 -4
- package/build/browser/filter-list/inputs/TextTagsFilterInput.js.map +1 -1
- package/build/browser/filter-list/utils/filterValues.js +29 -1
- package/build/browser/filter-list/utils/filterValues.js.map +1 -1
- package/build/browser/object-table/LoadingCell.module.css +0 -1
- package/build/browser/object-table/MultiColumnSortDialog.js +1 -3
- package/build/browser/object-table/MultiColumnSortDialog.js.map +1 -1
- package/build/browser/object-table/MultiColumnSortDialog.module.css +0 -1
- package/build/browser/object-table/TableCell.module.css +1 -1
- package/build/browser/object-table/TableHeader.module.css +2 -2
- package/build/browser/object-table/TableHeaderWithPopover.js +2 -4
- package/build/browser/object-table/TableHeaderWithPopover.js.map +1 -1
- package/build/browser/object-table/TableHeaderWithPopover.module.css +1 -0
- package/build/browser/pdf-viewer/PdfViewerAnnotationLayer.module.css +0 -1
- package/build/browser/public/experimental.js +2 -0
- package/build/browser/public/experimental.js.map +1 -1
- package/build/browser/styles.css +372 -38
- package/build/cjs/public/experimental.cjs +1882 -1068
- package/build/cjs/public/experimental.cjs.map +1 -1
- package/build/cjs/public/experimental.css +244 -38
- package/build/cjs/public/experimental.css.map +1 -1
- package/build/cjs/public/experimental.d.cts +420 -11
- package/build/esm/action-form/ActionFormApi.js.map +1 -1
- package/build/esm/action-form/BaseForm.js +18 -5
- package/build/esm/action-form/BaseForm.js.map +1 -1
- package/build/esm/action-form/BaseForm.module.css +38 -0
- package/build/esm/action-form/FormField.js +42 -0
- package/build/esm/action-form/FormField.js.map +1 -0
- package/build/esm/action-form/FormField.module.css +41 -0
- package/build/esm/action-form/FormFieldApi.js.map +1 -1
- package/build/esm/action-form/FormHeader.js +26 -0
- package/build/esm/action-form/FormHeader.js.map +1 -0
- package/build/esm/action-form/FormHeader.module.css +26 -0
- package/build/esm/action-form/fields/FormFieldRenderer.js +7 -5
- package/build/esm/action-form/fields/FormFieldRenderer.js.map +1 -1
- package/build/esm/action-form/fields/TextInputField.js +2 -0
- package/build/esm/action-form/fields/TextInputField.js.map +1 -1
- package/build/esm/action-form/fields/TextInputField.module.css +56 -0
- package/build/esm/base-components/checkbox/Checkbox.js +2 -2
- package/build/esm/base-components/checkbox/Checkbox.js.map +1 -1
- package/build/esm/base-components/checkbox/Checkbox.module.css +0 -4
- package/build/esm/base-components/combobox/Combobox.js +3 -8
- package/build/esm/base-components/combobox/Combobox.js.map +1 -1
- package/build/esm/base-components/combobox/Combobox.module.css +0 -3
- package/build/esm/base-components/draggable-list/DraggableList.js +2 -4
- package/build/esm/base-components/draggable-list/DraggableList.js.map +1 -1
- package/build/esm/base-components/search-bar/SearchBar.module.css +2 -2
- package/build/esm/base-components/select/Select.js +1 -3
- package/build/esm/base-components/select/Select.js.map +1 -1
- package/build/esm/base-components/select/Select.module.css +0 -2
- package/build/esm/base-components/switch/Switch.module.css +0 -1
- package/build/esm/filter-list/FilterInput.js +14 -5
- package/build/esm/filter-list/FilterInput.js.map +1 -1
- package/build/esm/filter-list/FilterList.js +13 -5
- package/build/esm/filter-list/FilterList.js.map +1 -1
- package/build/esm/filter-list/FilterListApi.js.map +1 -1
- package/build/esm/filter-list/base/AddFilterPopover.js +4 -3
- package/build/esm/filter-list/base/AddFilterPopover.js.map +1 -1
- package/build/esm/filter-list/base/BaseFilterListApi.js.map +1 -1
- package/build/esm/filter-list/base/ExcludeDropdown.js +61 -0
- package/build/esm/filter-list/base/ExcludeDropdown.js.map +1 -0
- package/build/esm/filter-list/base/ExcludeDropdown.module.css +94 -0
- package/build/esm/filter-list/base/FilterIcons.js +0 -39
- package/build/esm/filter-list/base/FilterIcons.js.map +1 -1
- package/build/esm/filter-list/base/FilterInputExcludeRow.js +55 -0
- package/build/esm/filter-list/base/FilterInputExcludeRow.js.map +1 -0
- package/build/esm/filter-list/base/FilterListItem.js +72 -23
- package/build/esm/filter-list/base/FilterListItem.js.map +1 -1
- package/build/esm/filter-list/base/FilterListItem.module.css +96 -20
- package/build/esm/filter-list/base/inputs/CheckboxListInput.js +2 -2
- package/build/esm/filter-list/base/inputs/CheckboxListInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/ContainsTextInput.js +2 -6
- package/build/esm/filter-list/base/inputs/ContainsTextInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/ListogramInput.js +2 -2
- package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/RangeInput.js +2 -2
- package/build/esm/filter-list/base/inputs/RangeInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/SingleSelectInput.js +1 -3
- package/build/esm/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/{useStaleData.js → useStableData.js} +5 -5
- package/build/esm/filter-list/base/inputs/useStableData.js.map +1 -0
- package/build/esm/filter-list/hooks/usePropertyAggregation.js +3 -2
- package/build/esm/filter-list/hooks/usePropertyAggregation.js.map +1 -1
- package/build/esm/filter-list/inputs/CheckboxListFilterInput.js +15 -5
- package/build/esm/filter-list/inputs/CheckboxListFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/DateRangeFilterInput.js +10 -6
- package/build/esm/filter-list/inputs/DateRangeFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/LinkedPropertyInput.js +41 -18
- package/build/esm/filter-list/inputs/LinkedPropertyInput.js.map +1 -1
- package/build/esm/filter-list/inputs/ListogramFilterInput.js +15 -5
- package/build/esm/filter-list/inputs/ListogramFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/MultiSelectFilterInput.js +12 -4
- package/build/esm/filter-list/inputs/MultiSelectFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/NumberRangeFilterInput.js +10 -6
- package/build/esm/filter-list/inputs/NumberRangeFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/PropertyFilterInput.js +36 -10
- package/build/esm/filter-list/inputs/PropertyFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/SingleSelectFilterInput.js +12 -4
- package/build/esm/filter-list/inputs/SingleSelectFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/TextTagsFilterInput.js +12 -4
- package/build/esm/filter-list/inputs/TextTagsFilterInput.js.map +1 -1
- package/build/esm/filter-list/utils/filterValues.js +29 -1
- package/build/esm/filter-list/utils/filterValues.js.map +1 -1
- package/build/esm/object-table/LoadingCell.module.css +0 -1
- package/build/esm/object-table/MultiColumnSortDialog.js +1 -3
- package/build/esm/object-table/MultiColumnSortDialog.js.map +1 -1
- package/build/esm/object-table/MultiColumnSortDialog.module.css +0 -1
- package/build/esm/object-table/TableCell.module.css +1 -1
- package/build/esm/object-table/TableHeader.module.css +2 -2
- package/build/esm/object-table/TableHeaderWithPopover.js +2 -4
- package/build/esm/object-table/TableHeaderWithPopover.js.map +1 -1
- package/build/esm/object-table/TableHeaderWithPopover.module.css +1 -0
- package/build/esm/pdf-viewer/PdfViewerAnnotationLayer.module.css +0 -1
- package/build/esm/public/experimental.js +2 -0
- package/build/esm/public/experimental.js.map +1 -1
- package/build/types/action-form/ActionFormApi.d.ts +1 -0
- package/build/types/action-form/ActionFormApi.d.ts.map +1 -1
- package/build/types/action-form/BaseForm.d.ts.map +1 -1
- package/build/types/action-form/FormField.d.ts +11 -0
- package/build/types/action-form/FormField.d.ts.map +1 -0
- package/build/types/action-form/FormFieldApi.d.ts +1 -1
- package/build/types/action-form/FormHeader.d.ts +6 -0
- package/build/types/action-form/FormHeader.d.ts.map +1 -0
- package/build/types/action-form/fields/FormFieldRenderer.d.ts.map +1 -1
- package/build/types/action-form/fields/TextInputField.d.ts.map +1 -1
- package/build/types/filter-list/FilterInput.d.ts +3 -1
- package/build/types/filter-list/FilterInput.d.ts.map +1 -1
- package/build/types/filter-list/FilterListApi.d.ts +12 -9
- package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
- package/build/types/filter-list/base/AddFilterPopover.d.ts +2 -1
- package/build/types/filter-list/base/AddFilterPopover.d.ts.map +1 -1
- package/build/types/filter-list/base/BaseFilterListApi.d.ts +2 -0
- package/build/types/filter-list/base/BaseFilterListApi.d.ts.map +1 -1
- package/build/types/filter-list/base/ExcludeDropdown.d.ts +8 -0
- package/build/types/filter-list/base/ExcludeDropdown.d.ts.map +1 -0
- package/build/types/filter-list/base/FilterIcons.d.ts +0 -2
- package/build/types/filter-list/base/FilterIcons.d.ts.map +1 -1
- package/build/types/filter-list/base/FilterInputExcludeRow.d.ts +12 -0
- package/build/types/filter-list/base/FilterInputExcludeRow.d.ts.map +1 -0
- package/build/types/filter-list/base/FilterListItem.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/useStableData.d.ts +1 -0
- package/build/types/filter-list/base/inputs/useStableData.d.ts.map +1 -0
- package/build/types/filter-list/hooks/usePropertyAggregation.d.ts +2 -2
- package/build/types/filter-list/hooks/usePropertyAggregation.d.ts.map +1 -1
- package/build/types/filter-list/inputs/CheckboxListFilterInput.d.ts +5 -2
- package/build/types/filter-list/inputs/CheckboxListFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/DateRangeFilterInput.d.ts +3 -2
- package/build/types/filter-list/inputs/DateRangeFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/LinkedPropertyInput.d.ts +2 -1
- package/build/types/filter-list/inputs/LinkedPropertyInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/ListogramFilterInput.d.ts +5 -2
- package/build/types/filter-list/inputs/ListogramFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts +4 -2
- package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/NumberRangeFilterInput.d.ts +3 -2
- package/build/types/filter-list/inputs/NumberRangeFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/PropertyFilterInput.d.ts +3 -1
- package/build/types/filter-list/inputs/PropertyFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts +4 -2
- package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/TextTagsFilterInput.d.ts +4 -2
- package/build/types/filter-list/inputs/TextTagsFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/utils/filterValues.d.ts +2 -0
- package/build/types/filter-list/utils/filterValues.d.ts.map +1 -1
- package/build/types/public/experimental.d.ts +4 -0
- package/build/types/public/experimental.d.ts.map +1 -1
- package/package.json +4 -4
- package/build/browser/filter-list/base/inputs/useStaleData.js.map +0 -1
- package/build/esm/filter-list/base/inputs/useStaleData.js.map +0 -1
- package/build/types/filter-list/base/inputs/useStaleData.d.ts +0 -1
- package/build/types/filter-list/base/inputs/useStaleData.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberRangeFilterInput.js","names":["useOsdkAggregation","React","memo","useCallback","useMemo","NullValueWrapper","NumberRangeInput","createGroupByAggregateOptions","createNullCountAggregateOptions","createNullWhereClause","NumberRangeFilterInputInner","objectType","propertyKey","filterState","onFilterStateChanged","numberRangeState","type","undefined","includeNull","handleNullChange","minValue","maxValue","handleRangeChange","aggregateOptions","histogramArgs","aggregate","data","aggregateData","isLoading","histLoading","valueCountPairs","pairs","item","rawValue","$group","parsed","parseFloat","String","isNaN","push","value","count","$count","nullCountAggregateOptions","nullWhereClause","nullCountArgs","where","nullCountData","nullLoading","error","nullError","nullCount","result","createElement","onIncludeNullChange","onChange","NumberRangeFilterInput"],"sources":["NumberRangeFilterInput.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 } from \"@osdk/api\";\nimport { useOsdkAggregation } from \"@osdk/react/experimental\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { NullValueWrapper } from \"../base/inputs/NullValueWrapper.js\";\nimport { NumberRangeInput } from \"../base/inputs/NumberRangeInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport {\n createGroupByAggregateOptions,\n createNullCountAggregateOptions,\n createNullWhereClause,\n} from \"../utils/aggregationHelpers.js\";\n\ninterface NumberRangeFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n}\n\nfunction NumberRangeFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n propertyKey,\n filterState,\n onFilterStateChanged,\n}: NumberRangeFilterInputProps<Q>): React.ReactElement {\n const numberRangeState = filterState?.type === \"NUMBER_RANGE\"\n ? filterState\n : undefined;\n const includeNull = filterState?.includeNull;\n\n const handleNullChange = useCallback(\n (includeNull: boolean) => {\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue: numberRangeState?.minValue,\n maxValue: numberRangeState?.maxValue,\n includeNull,\n });\n },\n [\n onFilterStateChanged,\n numberRangeState?.minValue,\n numberRangeState?.maxValue,\n ],\n );\n\n const handleRangeChange = useCallback(\n (minValue: number | undefined, maxValue: number | undefined) => {\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue,\n maxValue,\n includeNull,\n });\n },\n [onFilterStateChanged, includeNull],\n );\n\n const aggregateOptions = useMemo(\n () => createGroupByAggregateOptions<Q>(propertyKey),\n [propertyKey],\n );\n\n const histogramArgs = useMemo(\n () => ({ aggregate: aggregateOptions }),\n [aggregateOptions],\n );\n\n const { data: aggregateData, isLoading: histLoading } = useOsdkAggregation(\n objectType,\n histogramArgs,\n );\n\n const valueCountPairs = useMemo<Array<{ value: number; count: number }>>(\n () => {\n if (!aggregateData) return [];\n const dataArray = aggregateData as Iterable<{\n $group: Record<string, unknown>;\n $count?: number;\n }>;\n const pairs: Array<{ value: number; count: number }> = [];\n for (const item of dataArray) {\n const rawValue = item.$group[propertyKey];\n if (rawValue != null) {\n const parsed = parseFloat(String(rawValue));\n if (!isNaN(parsed)) {\n pairs.push({ value: parsed, count: item.$count ?? 0 });\n }\n }\n }\n return pairs;\n },\n [aggregateData, propertyKey],\n );\n\n const nullCountAggregateOptions = useMemo(\n () => createNullCountAggregateOptions<Q>(),\n [],\n );\n\n const nullWhereClause = useMemo(\n () => createNullWhereClause<Q>(propertyKey),\n [propertyKey],\n );\n\n const nullCountArgs = useMemo(\n () => ({
|
|
1
|
+
{"version":3,"file":"NumberRangeFilterInput.js","names":["useOsdkAggregation","React","memo","useCallback","useMemo","NullValueWrapper","NumberRangeInput","createGroupByAggregateOptions","createNullCountAggregateOptions","createNullWhereClause","NumberRangeFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","numberRangeState","type","undefined","includeNull","handleNullChange","minValue","maxValue","handleRangeChange","aggregateOptions","histogramArgs","aggregate","data","aggregateData","isLoading","histLoading","valueCountPairs","pairs","item","rawValue","$group","parsed","parseFloat","String","isNaN","push","value","count","$count","nullCountAggregateOptions","nullWhereClause","nullCountArgs","where","nullCountData","nullLoading","error","nullError","nullCount","result","createElement","onIncludeNullChange","onChange","NumberRangeFilterInput"],"sources":["NumberRangeFilterInput.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 } from \"@osdk/api\";\nimport { useOsdkAggregation } from \"@osdk/react/experimental\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { NullValueWrapper } from \"../base/inputs/NullValueWrapper.js\";\nimport { NumberRangeInput } from \"../base/inputs/NumberRangeInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport {\n createGroupByAggregateOptions,\n createNullCountAggregateOptions,\n createNullWhereClause,\n} from \"../utils/aggregationHelpers.js\";\n\ninterface NumberRangeFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n}\n\nfunction NumberRangeFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n}: NumberRangeFilterInputProps<Q>): React.ReactElement {\n const numberRangeState = filterState?.type === \"NUMBER_RANGE\"\n ? filterState\n : undefined;\n const includeNull = filterState?.includeNull;\n\n const handleNullChange = useCallback(\n (includeNull: boolean) => {\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue: numberRangeState?.minValue,\n maxValue: numberRangeState?.maxValue,\n includeNull,\n });\n },\n [\n onFilterStateChanged,\n numberRangeState?.minValue,\n numberRangeState?.maxValue,\n ],\n );\n\n const handleRangeChange = useCallback(\n (minValue: number | undefined, maxValue: number | undefined) => {\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue,\n maxValue,\n includeNull,\n });\n },\n [onFilterStateChanged, includeNull],\n );\n\n const aggregateOptions = useMemo(\n () => createGroupByAggregateOptions<Q>(propertyKey),\n [propertyKey],\n );\n\n const histogramArgs = useMemo(\n () => ({ aggregate: aggregateOptions, objectSet }),\n [aggregateOptions, objectSet],\n );\n\n const { data: aggregateData, isLoading: histLoading } = useOsdkAggregation(\n objectType,\n histogramArgs,\n );\n\n const valueCountPairs = useMemo<Array<{ value: number; count: number }>>(\n () => {\n if (!aggregateData) return [];\n const dataArray = aggregateData as Iterable<{\n $group: Record<string, unknown>;\n $count?: number;\n }>;\n const pairs: Array<{ value: number; count: number }> = [];\n for (const item of dataArray) {\n const rawValue = item.$group[propertyKey];\n if (rawValue != null) {\n const parsed = parseFloat(String(rawValue));\n if (!isNaN(parsed)) {\n pairs.push({ value: parsed, count: item.$count ?? 0 });\n }\n }\n }\n return pairs;\n },\n [aggregateData, propertyKey],\n );\n\n const nullCountAggregateOptions = useMemo(\n () => createNullCountAggregateOptions<Q>(),\n [],\n );\n\n const nullWhereClause = useMemo(\n () => createNullWhereClause<Q>(propertyKey),\n [propertyKey],\n );\n\n const nullCountArgs = useMemo(\n () => ({\n where: nullWhereClause,\n aggregate: nullCountAggregateOptions,\n objectSet,\n }),\n [nullWhereClause, nullCountAggregateOptions, objectSet],\n );\n\n const {\n data: nullCountData,\n isLoading: nullLoading,\n error: nullError,\n } = useOsdkAggregation(\n objectType,\n nullCountArgs,\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 isLoading = histLoading || nullLoading;\n\n return (\n <NullValueWrapper\n nullCount={nullCount}\n isLoading={isLoading}\n error={nullError}\n includeNull={includeNull}\n onIncludeNullChange={handleNullChange}\n >\n <NumberRangeInput\n valueCountPairs={valueCountPairs}\n isLoading={isLoading}\n minValue={numberRangeState?.minValue}\n maxValue={numberRangeState?.maxValue}\n onChange={handleRangeChange}\n />\n </NullValueWrapper>\n );\n}\n\nexport const NumberRangeFilterInput: typeof NumberRangeFilterInputInner = memo(\n NumberRangeFilterInputInner,\n) as typeof NumberRangeFilterInputInner;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import React, { memo } from "react";
|
|
18
|
+
import { FilterInputExcludeRow } from "../base/FilterInputExcludeRow.js";
|
|
18
19
|
import { CheckboxListFilterInput } from "./CheckboxListFilterInput.js";
|
|
19
20
|
import { ContainsTextFilterInput } from "./ContainsTextFilterInput.js";
|
|
20
21
|
import { DateRangeFilterInput } from "./DateRangeFilterInput.js";
|
|
@@ -29,27 +30,37 @@ import { TimelineFilterInput } from "./TimelineFilterInput.js";
|
|
|
29
30
|
import { ToggleFilterInput } from "./ToggleFilterInput.js";
|
|
30
31
|
function PropertyFilterInputInner({
|
|
31
32
|
objectType,
|
|
33
|
+
objectSet,
|
|
32
34
|
definition,
|
|
33
35
|
filterState,
|
|
34
36
|
onFilterStateChanged,
|
|
35
|
-
whereClause
|
|
37
|
+
whereClause,
|
|
38
|
+
searchQuery,
|
|
39
|
+
excludeRowOpen
|
|
36
40
|
}) {
|
|
37
41
|
switch (definition.filterComponent) {
|
|
38
42
|
case "CHECKBOX_LIST":
|
|
39
43
|
return /*#__PURE__*/React.createElement(CheckboxListFilterInput, {
|
|
40
44
|
objectType: objectType,
|
|
45
|
+
objectSet: objectSet,
|
|
41
46
|
propertyKey: definition.key,
|
|
42
47
|
filterState: filterState,
|
|
43
48
|
onFilterStateChanged: onFilterStateChanged,
|
|
44
49
|
whereClause: whereClause,
|
|
45
|
-
colorMap: definition.colorMap
|
|
50
|
+
colorMap: definition.colorMap,
|
|
51
|
+
searchQuery: searchQuery,
|
|
52
|
+
excludeRowOpen: excludeRowOpen
|
|
46
53
|
});
|
|
47
54
|
case "CONTAINS_TEXT":
|
|
48
|
-
return /*#__PURE__*/React.createElement(
|
|
55
|
+
return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {
|
|
56
|
+
excludeRowOpen: excludeRowOpen,
|
|
57
|
+
filterState: filterState,
|
|
58
|
+
onFilterStateChanged: onFilterStateChanged
|
|
59
|
+
}, /*#__PURE__*/React.createElement(ContainsTextFilterInput, {
|
|
49
60
|
propertyKey: definition.key,
|
|
50
61
|
filterState: filterState,
|
|
51
62
|
onFilterStateChanged: onFilterStateChanged
|
|
52
|
-
});
|
|
63
|
+
}));
|
|
53
64
|
case "TOGGLE":
|
|
54
65
|
return /*#__PURE__*/React.createElement(ToggleFilterInput, {
|
|
55
66
|
filterState: filterState,
|
|
@@ -58,6 +69,7 @@ function PropertyFilterInputInner({
|
|
|
58
69
|
case "NUMBER_RANGE":
|
|
59
70
|
return /*#__PURE__*/React.createElement(NumberRangeFilterInput, {
|
|
60
71
|
objectType: objectType,
|
|
72
|
+
objectSet: objectSet,
|
|
61
73
|
propertyKey: definition.key,
|
|
62
74
|
filterState: filterState,
|
|
63
75
|
onFilterStateChanged: onFilterStateChanged
|
|
@@ -65,6 +77,7 @@ function PropertyFilterInputInner({
|
|
|
65
77
|
case "DATE_RANGE":
|
|
66
78
|
return /*#__PURE__*/React.createElement(DateRangeFilterInput, {
|
|
67
79
|
objectType: objectType,
|
|
80
|
+
objectSet: objectSet,
|
|
68
81
|
propertyKey: definition.key,
|
|
69
82
|
filterState: filterState,
|
|
70
83
|
onFilterStateChanged: onFilterStateChanged
|
|
@@ -72,18 +85,22 @@ function PropertyFilterInputInner({
|
|
|
72
85
|
case "SINGLE_SELECT":
|
|
73
86
|
return /*#__PURE__*/React.createElement(SingleSelectFilterInput, {
|
|
74
87
|
objectType: objectType,
|
|
88
|
+
objectSet: objectSet,
|
|
75
89
|
propertyKey: definition.key,
|
|
76
90
|
filterState: filterState,
|
|
77
91
|
onFilterStateChanged: onFilterStateChanged,
|
|
78
|
-
whereClause: whereClause
|
|
92
|
+
whereClause: whereClause,
|
|
93
|
+
excludeRowOpen: excludeRowOpen
|
|
79
94
|
});
|
|
80
95
|
case "MULTI_SELECT":
|
|
81
96
|
return /*#__PURE__*/React.createElement(MultiSelectFilterInput, {
|
|
82
97
|
objectType: objectType,
|
|
98
|
+
objectSet: objectSet,
|
|
83
99
|
propertyKey: definition.key,
|
|
84
100
|
filterState: filterState,
|
|
85
101
|
onFilterStateChanged: onFilterStateChanged,
|
|
86
|
-
whereClause: whereClause
|
|
102
|
+
whereClause: whereClause,
|
|
103
|
+
excludeRowOpen: excludeRowOpen
|
|
87
104
|
});
|
|
88
105
|
case "SINGLE_DATE":
|
|
89
106
|
return /*#__PURE__*/React.createElement(SingleDateFilterInput, {
|
|
@@ -98,27 +115,36 @@ function PropertyFilterInputInner({
|
|
|
98
115
|
case "LISTOGRAM":
|
|
99
116
|
return /*#__PURE__*/React.createElement(ListogramFilterInput, {
|
|
100
117
|
objectType: objectType,
|
|
118
|
+
objectSet: objectSet,
|
|
101
119
|
propertyKey: definition.key,
|
|
102
120
|
filterState: filterState,
|
|
103
121
|
onFilterStateChanged: onFilterStateChanged,
|
|
104
122
|
whereClause: whereClause,
|
|
105
123
|
colorMap: definition.colorMap,
|
|
106
124
|
displayMode: definition.listogramConfig?.displayMode,
|
|
107
|
-
maxVisibleItems: definition.listogramConfig?.maxVisibleItems
|
|
125
|
+
maxVisibleItems: definition.listogramConfig?.maxVisibleItems,
|
|
126
|
+
searchQuery: searchQuery,
|
|
127
|
+
excludeRowOpen: excludeRowOpen
|
|
108
128
|
});
|
|
109
129
|
case "TEXT_TAGS":
|
|
110
130
|
return /*#__PURE__*/React.createElement(TextTagsFilterInput, {
|
|
111
131
|
objectType: objectType,
|
|
132
|
+
objectSet: objectSet,
|
|
112
133
|
propertyKey: definition.key,
|
|
113
134
|
filterState: filterState,
|
|
114
135
|
onFilterStateChanged: onFilterStateChanged,
|
|
115
|
-
whereClause: whereClause
|
|
136
|
+
whereClause: whereClause,
|
|
137
|
+
excludeRowOpen: excludeRowOpen
|
|
116
138
|
});
|
|
117
139
|
case "TIMELINE":
|
|
118
|
-
return /*#__PURE__*/React.createElement(
|
|
140
|
+
return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {
|
|
141
|
+
excludeRowOpen: excludeRowOpen,
|
|
119
142
|
filterState: filterState,
|
|
120
143
|
onFilterStateChanged: onFilterStateChanged
|
|
121
|
-
}
|
|
144
|
+
}, /*#__PURE__*/React.createElement(TimelineFilterInput, {
|
|
145
|
+
filterState: filterState,
|
|
146
|
+
onFilterStateChanged: onFilterStateChanged
|
|
147
|
+
}));
|
|
122
148
|
default:
|
|
123
149
|
return /*#__PURE__*/React.createElement("div", {
|
|
124
150
|
"data-unsupported": "true"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropertyFilterInput.js","names":["React","memo","CheckboxListFilterInput","ContainsTextFilterInput","DateRangeFilterInput","ListogramFilterInput","MultiDateFilterInput","MultiSelectFilterInput","NumberRangeFilterInput","SingleDateFilterInput","SingleSelectFilterInput","TextTagsFilterInput","TimelineFilterInput","ToggleFilterInput","PropertyFilterInputInner","objectType","definition","filterState","onFilterStateChanged","whereClause","filterComponent","createElement","propertyKey","key","colorMap","displayMode","listogramConfig","maxVisibleItems","PropertyFilterInput"],"sources":["PropertyFilterInput.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, WhereClause } from \"@osdk/api\";\nimport React, { memo } from \"react\";\nimport type { FilterDefinitionUnion } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { CheckboxListFilterInput } from \"./CheckboxListFilterInput.js\";\nimport { ContainsTextFilterInput } from \"./ContainsTextFilterInput.js\";\nimport { DateRangeFilterInput } from \"./DateRangeFilterInput.js\";\nimport { ListogramFilterInput } from \"./ListogramFilterInput.js\";\nimport { MultiDateFilterInput } from \"./MultiDateFilterInput.js\";\nimport { MultiSelectFilterInput } from \"./MultiSelectFilterInput.js\";\nimport { NumberRangeFilterInput } from \"./NumberRangeFilterInput.js\";\nimport { SingleDateFilterInput } from \"./SingleDateFilterInput.js\";\nimport { SingleSelectFilterInput } from \"./SingleSelectFilterInput.js\";\nimport { TextTagsFilterInput } from \"./TextTagsFilterInput.js\";\nimport { TimelineFilterInput } from \"./TimelineFilterInput.js\";\nimport { ToggleFilterInput } from \"./ToggleFilterInput.js\";\n\ninterface PropertyFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n definition: Extract<FilterDefinitionUnion<Q>, { type: \"PROPERTY\" }>;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n}\n\nfunction PropertyFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n definition,\n filterState,\n onFilterStateChanged,\n whereClause,\n}: PropertyFilterInputProps<Q>): React.ReactElement {\n switch (definition.filterComponent) {\n case \"CHECKBOX_LIST\":\n return (\n <CheckboxListFilterInput\n objectType={objectType}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n colorMap={definition.colorMap}\n />\n );\n\n case \"CONTAINS_TEXT\":\n return (\n <ContainsTextFilterInput\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"TOGGLE\":\n return (\n <ToggleFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"NUMBER_RANGE\":\n return (\n <NumberRangeFilterInput\n objectType={objectType}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"DATE_RANGE\":\n return (\n <DateRangeFilterInput\n objectType={objectType}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"SINGLE_SELECT\":\n return (\n <SingleSelectFilterInput\n objectType={objectType}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n />\n );\n\n case \"MULTI_SELECT\":\n return (\n <MultiSelectFilterInput\n objectType={objectType}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n />\n );\n\n case \"SINGLE_DATE\":\n return (\n <SingleDateFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"MULTI_DATE\":\n return (\n <MultiDateFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"LISTOGRAM\":\n return (\n <ListogramFilterInput\n objectType={objectType}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n colorMap={definition.colorMap}\n displayMode={definition.listogramConfig?.displayMode}\n maxVisibleItems={definition.listogramConfig?.maxVisibleItems}\n />\n );\n\n case \"TEXT_TAGS\":\n return (\n <TextTagsFilterInput\n objectType={objectType}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n />\n );\n\n case \"TIMELINE\":\n return (\n <TimelineFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n default:\n return (\n <div data-unsupported=\"true\">\n Unsupported filter component: {definition.filterComponent}\n </div>\n );\n }\n}\n\nexport const PropertyFilterInput: typeof PropertyFilterInputInner = memo(\n PropertyFilterInputInner,\n) as typeof PropertyFilterInputInner;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"PropertyFilterInput.js","names":["React","memo","FilterInputExcludeRow","CheckboxListFilterInput","ContainsTextFilterInput","DateRangeFilterInput","ListogramFilterInput","MultiDateFilterInput","MultiSelectFilterInput","NumberRangeFilterInput","SingleDateFilterInput","SingleSelectFilterInput","TextTagsFilterInput","TimelineFilterInput","ToggleFilterInput","PropertyFilterInputInner","objectType","objectSet","definition","filterState","onFilterStateChanged","whereClause","searchQuery","excludeRowOpen","filterComponent","createElement","propertyKey","key","colorMap","displayMode","listogramConfig","maxVisibleItems","PropertyFilterInput"],"sources":["PropertyFilterInput.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, WhereClause } from \"@osdk/api\";\nimport React, { memo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport type { FilterDefinitionUnion } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { CheckboxListFilterInput } from \"./CheckboxListFilterInput.js\";\nimport { ContainsTextFilterInput } from \"./ContainsTextFilterInput.js\";\nimport { DateRangeFilterInput } from \"./DateRangeFilterInput.js\";\nimport { ListogramFilterInput } from \"./ListogramFilterInput.js\";\nimport { MultiDateFilterInput } from \"./MultiDateFilterInput.js\";\nimport { MultiSelectFilterInput } from \"./MultiSelectFilterInput.js\";\nimport { NumberRangeFilterInput } from \"./NumberRangeFilterInput.js\";\nimport { SingleDateFilterInput } from \"./SingleDateFilterInput.js\";\nimport { SingleSelectFilterInput } from \"./SingleSelectFilterInput.js\";\nimport { TextTagsFilterInput } from \"./TextTagsFilterInput.js\";\nimport { TimelineFilterInput } from \"./TimelineFilterInput.js\";\nimport { ToggleFilterInput } from \"./ToggleFilterInput.js\";\n\ninterface PropertyFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n definition: Extract<FilterDefinitionUnion<Q>, { type: \"PROPERTY\" }>;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n searchQuery?: string;\n excludeRowOpen?: boolean;\n}\n\nfunction PropertyFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n whereClause,\n searchQuery,\n excludeRowOpen,\n}: PropertyFilterInputProps<Q>): React.ReactElement {\n switch (definition.filterComponent) {\n case \"CHECKBOX_LIST\":\n return (\n <CheckboxListFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n colorMap={definition.colorMap}\n searchQuery={searchQuery}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"CONTAINS_TEXT\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n >\n <ContainsTextFilterInput\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n </FilterInputExcludeRow>\n );\n\n case \"TOGGLE\":\n return (\n <ToggleFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"NUMBER_RANGE\":\n return (\n <NumberRangeFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"DATE_RANGE\":\n return (\n <DateRangeFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"SINGLE_SELECT\":\n return (\n <SingleSelectFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"MULTI_SELECT\":\n return (\n <MultiSelectFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"SINGLE_DATE\":\n return (\n <SingleDateFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"MULTI_DATE\":\n return (\n <MultiDateFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"LISTOGRAM\":\n return (\n <ListogramFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n colorMap={definition.colorMap}\n displayMode={definition.listogramConfig?.displayMode}\n maxVisibleItems={definition.listogramConfig?.maxVisibleItems}\n searchQuery={searchQuery}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"TEXT_TAGS\":\n return (\n <TextTagsFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"TIMELINE\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n >\n <TimelineFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n </FilterInputExcludeRow>\n );\n\n default:\n return (\n <div data-unsupported=\"true\">\n Unsupported filter component: {definition.filterComponent}\n </div>\n );\n }\n}\n\nexport const PropertyFilterInput: typeof PropertyFilterInputInner = memo(\n PropertyFilterInputInner,\n) as typeof PropertyFilterInputInner;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -15,15 +15,18 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import React, { memo, useCallback, useMemo } from "react";
|
|
18
|
+
import { FilterInputExcludeRow } from "../base/FilterInputExcludeRow.js";
|
|
18
19
|
import { SingleSelectInput } from "../base/inputs/SingleSelectInput.js";
|
|
19
20
|
import { usePropertyAggregation } from "../hooks/usePropertyAggregation.js";
|
|
20
21
|
import { coerceToString } from "../utils/coerceFilterValue.js";
|
|
21
22
|
function SingleSelectFilterInputInner({
|
|
22
23
|
objectType,
|
|
24
|
+
objectSet,
|
|
23
25
|
propertyKey,
|
|
24
26
|
filterState,
|
|
25
27
|
onFilterStateChanged,
|
|
26
|
-
whereClause
|
|
28
|
+
whereClause,
|
|
29
|
+
excludeRowOpen
|
|
27
30
|
}) {
|
|
28
31
|
const selectedValue = useMemo(() => filterState?.type === "SELECT" ? coerceToString(filterState.selectedValues[0]) : undefined, [filterState]);
|
|
29
32
|
const isExcluding = filterState?.isExcluding ?? false;
|
|
@@ -41,15 +44,20 @@ function SingleSelectFilterInputInner({
|
|
|
41
44
|
data,
|
|
42
45
|
isLoading,
|
|
43
46
|
error
|
|
44
|
-
} = usePropertyAggregation(objectType, propertyKey, aggregationOptions);
|
|
45
|
-
return /*#__PURE__*/React.createElement(
|
|
47
|
+
} = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);
|
|
48
|
+
return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {
|
|
49
|
+
excludeRowOpen: excludeRowOpen,
|
|
50
|
+
filterState: filterState,
|
|
51
|
+
onFilterStateChanged: onFilterStateChanged,
|
|
52
|
+
totalValueCount: data.length
|
|
53
|
+
}, /*#__PURE__*/React.createElement(SingleSelectInput, {
|
|
46
54
|
values: data,
|
|
47
55
|
isLoading: isLoading,
|
|
48
56
|
error: error,
|
|
49
57
|
selectedValue: selectedValue,
|
|
50
58
|
onChange: handleChange,
|
|
51
59
|
ariaLabel: `Select ${propertyKey}`
|
|
52
|
-
});
|
|
60
|
+
}));
|
|
53
61
|
}
|
|
54
62
|
export const SingleSelectFilterInput = /*#__PURE__*/memo(SingleSelectFilterInputInner);
|
|
55
63
|
//# sourceMappingURL=SingleSelectFilterInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingleSelectFilterInput.js","names":["React","memo","useCallback","useMemo","SingleSelectInput","usePropertyAggregation","coerceToString","SingleSelectFilterInputInner","objectType","propertyKey","filterState","onFilterStateChanged","whereClause","selectedValue","type","selectedValues","undefined","isExcluding","handleChange","value","aggregationOptions","where","data","isLoading","error","createElement","values","onChange","ariaLabel","SingleSelectFilterInput"],"sources":["SingleSelectFilterInput.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 ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { SingleSelectInput } from \"../base/inputs/SingleSelectInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToString } from \"../utils/coerceFilterValue.js\";\n\ninterface SingleSelectFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n}\n\nfunction SingleSelectFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n}: SingleSelectFilterInputProps<Q>): React.ReactElement {\n const selectedValue = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToString(filterState.selectedValues[0])\n : undefined,\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleChange = useCallback(\n (value: string | undefined) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: value !== undefined ? [value] : [],\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const aggregationOptions = useMemo(\n () => ({ where: whereClause }),\n [whereClause],\n );\n\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n aggregationOptions,\n );\n\n return (\n <SingleSelectInput\n
|
|
1
|
+
{"version":3,"file":"SingleSelectFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","SingleSelectInput","usePropertyAggregation","coerceToString","SingleSelectFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","excludeRowOpen","selectedValue","type","selectedValues","undefined","isExcluding","handleChange","value","aggregationOptions","where","data","isLoading","error","createElement","totalValueCount","length","values","onChange","ariaLabel","SingleSelectFilterInput"],"sources":["SingleSelectFilterInput.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 ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { SingleSelectInput } from \"../base/inputs/SingleSelectInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToString } from \"../utils/coerceFilterValue.js\";\n\ninterface SingleSelectFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n excludeRowOpen?: boolean;\n}\n\nfunction SingleSelectFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n excludeRowOpen,\n}: SingleSelectFilterInputProps<Q>): React.ReactElement {\n const selectedValue = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToString(filterState.selectedValues[0])\n : undefined,\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleChange = useCallback(\n (value: string | undefined) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: value !== undefined ? [value] : [],\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const aggregationOptions = useMemo(\n () => ({ where: whereClause }),\n [whereClause],\n );\n\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n objectSet,\n aggregationOptions,\n );\n\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={data.length}\n >\n <SingleSelectInput\n values={data}\n isLoading={isLoading}\n error={error}\n selectedValue={selectedValue}\n onChange={handleChange}\n ariaLabel={`Select ${propertyKey}`}\n />\n </FilterInputExcludeRow>\n );\n}\n\nexport const SingleSelectFilterInput: typeof SingleSelectFilterInputInner =\n memo(\n SingleSelectFilterInputInner,\n ) as typeof SingleSelectFilterInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,iBAAiB,QAAQ,qCAAqC;AAEvE,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,cAAc,QAAQ,+BAA+B;AAY9D,SAASC,4BAA4BA,CAAiC;EACpEC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC;AAC+B,CAAC,EAAsB;EACtD,MAAMC,aAAa,GAAGb,OAAO,CAC3B,MACES,WAAW,EAAEK,IAAI,KAAK,QAAQ,GAC1BV,cAAc,CAACK,WAAW,CAACM,cAAc,CAAC,CAAC,CAAC,CAAC,GAC7CC,SAAS,EACf,CAACP,WAAW,CACd,CAAC;EACD,MAAMQ,WAAW,GAAGR,WAAW,EAAEQ,WAAW,IAAI,KAAK;EAErD,MAAMC,YAAY,GAAGnB,WAAW,CAC7BoB,KAAyB,IAAK;IAC7BT,oBAAoB,CAAC;MACnBI,IAAI,EAAE,QAAQ;MACdC,cAAc,EAAEI,KAAK,KAAKH,SAAS,GAAG,CAACG,KAAK,CAAC,GAAG,EAAE;MAClDF;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACP,oBAAoB,EAAEO,WAAW,CACpC,CAAC;EAED,MAAMG,kBAAkB,GAAGpB,OAAO,CAChC,OAAO;IAAEqB,KAAK,EAAEV;EAAY,CAAC,CAAC,EAC9B,CAACA,WAAW,CACd,CAAC;EAED,MAAM;IAAEW,IAAI;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAGrB,sBAAsB,CACvDG,UAAU,EACVE,WAAW,EACXD,SAAS,EACTa,kBACF,CAAC;EAED,oBACEvB,KAAA,CAAA4B,aAAA,CAACxB,qBAAqB;IACpBW,cAAc,EAAEA,cAAe;IAC/BH,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEA,oBAAqB;IAC3CgB,eAAe,EAAEJ,IAAI,CAACK;EAAO,gBAE7B9B,KAAA,CAAA4B,aAAA,CAACvB,iBAAiB;IAChB0B,MAAM,EAAEN,IAAK;IACbC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbX,aAAa,EAAEA,aAAc;IAC7BgB,QAAQ,EAAEX,YAAa;IACvBY,SAAS,EAAE,UAAUtB,WAAW;EAAG,CACpC,CACoB,CAAC;AAE5B;AAEA,OAAO,MAAMuB,uBAA4D,gBACvEjC,IAAI,CACFO,4BACF,CAAwC","ignoreList":[]}
|
|
@@ -15,15 +15,18 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import React, { memo, useCallback, useMemo } from "react";
|
|
18
|
+
import { FilterInputExcludeRow } from "../base/FilterInputExcludeRow.js";
|
|
18
19
|
import { TextTagsInput } from "../base/inputs/TextTagsInput.js";
|
|
19
20
|
import { usePropertyAggregation } from "../hooks/usePropertyAggregation.js";
|
|
20
21
|
import { coerceToStringArray } from "../utils/coerceFilterValue.js";
|
|
21
22
|
function TextTagsFilterInputInner({
|
|
22
23
|
objectType,
|
|
24
|
+
objectSet,
|
|
23
25
|
propertyKey,
|
|
24
26
|
filterState,
|
|
25
27
|
onFilterStateChanged,
|
|
26
|
-
whereClause
|
|
28
|
+
whereClause,
|
|
29
|
+
excludeRowOpen
|
|
27
30
|
}) {
|
|
28
31
|
const tags = useMemo(() => filterState?.type === "EXACT_MATCH" ? coerceToStringArray(filterState.values) : [], [filterState]);
|
|
29
32
|
const isExcluding = filterState?.isExcluding ?? false;
|
|
@@ -41,14 +44,19 @@ function TextTagsFilterInputInner({
|
|
|
41
44
|
data,
|
|
42
45
|
isLoading,
|
|
43
46
|
error
|
|
44
|
-
} = usePropertyAggregation(objectType, propertyKey, aggregationOptions);
|
|
45
|
-
return /*#__PURE__*/React.createElement(
|
|
47
|
+
} = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);
|
|
48
|
+
return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {
|
|
49
|
+
excludeRowOpen: excludeRowOpen,
|
|
50
|
+
filterState: filterState,
|
|
51
|
+
onFilterStateChanged: onFilterStateChanged,
|
|
52
|
+
totalValueCount: data.length
|
|
53
|
+
}, /*#__PURE__*/React.createElement(TextTagsInput, {
|
|
46
54
|
suggestions: data,
|
|
47
55
|
isLoading: isLoading,
|
|
48
56
|
error: error,
|
|
49
57
|
tags: tags,
|
|
50
58
|
onChange: handleChange
|
|
51
|
-
});
|
|
59
|
+
}));
|
|
52
60
|
}
|
|
53
61
|
export const TextTagsFilterInput = /*#__PURE__*/memo(TextTagsFilterInputInner);
|
|
54
62
|
//# sourceMappingURL=TextTagsFilterInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextTagsFilterInput.js","names":["React","memo","useCallback","useMemo","TextTagsInput","usePropertyAggregation","coerceToStringArray","TextTagsFilterInputInner","objectType","propertyKey","filterState","onFilterStateChanged","whereClause","tags","type","values","isExcluding","handleChange","aggregationOptions","where","data","isLoading","error","createElement","suggestions","onChange","TextTagsFilterInput"],"sources":["TextTagsFilterInput.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 ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { TextTagsInput } from \"../base/inputs/TextTagsInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\n\ninterface TextTagsFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n}\n\nfunction TextTagsFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n}: TextTagsFilterInputProps<Q>): React.ReactElement {\n const tags = useMemo(\n () =>\n filterState?.type === \"EXACT_MATCH\"\n ? coerceToStringArray(filterState.values)\n : [],\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleChange = useCallback(\n (values: string[]) => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const aggregationOptions = useMemo(\n () => ({ where: whereClause }),\n [whereClause],\n );\n\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n aggregationOptions,\n );\n\n return (\n <TextTagsInput\n
|
|
1
|
+
{"version":3,"file":"TextTagsFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","TextTagsInput","usePropertyAggregation","coerceToStringArray","TextTagsFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","excludeRowOpen","tags","type","values","isExcluding","handleChange","aggregationOptions","where","data","isLoading","error","createElement","totalValueCount","length","suggestions","onChange","TextTagsFilterInput"],"sources":["TextTagsFilterInput.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 ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { TextTagsInput } from \"../base/inputs/TextTagsInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\n\ninterface TextTagsFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n excludeRowOpen?: boolean;\n}\n\nfunction TextTagsFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n excludeRowOpen,\n}: TextTagsFilterInputProps<Q>): React.ReactElement {\n const tags = useMemo(\n () =>\n filterState?.type === \"EXACT_MATCH\"\n ? coerceToStringArray(filterState.values)\n : [],\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleChange = useCallback(\n (values: string[]) => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const aggregationOptions = useMemo(\n () => ({ where: whereClause }),\n [whereClause],\n );\n\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n objectSet,\n aggregationOptions,\n );\n\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={data.length}\n >\n <TextTagsInput\n suggestions={data}\n isLoading={isLoading}\n error={error}\n tags={tags}\n onChange={handleChange}\n />\n </FilterInputExcludeRow>\n );\n}\n\nexport const TextTagsFilterInput: typeof TextTagsFilterInputInner = memo(\n TextTagsFilterInputInner,\n) as typeof TextTagsFilterInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,aAAa,QAAQ,iCAAiC;AAE/D,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,mBAAmB,QAAQ,+BAA+B;AAYnE,SAASC,wBAAwBA,CAAiC;EAChEC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC;AAC2B,CAAC,EAAsB;EAClD,MAAMC,IAAI,GAAGb,OAAO,CAClB,MACES,WAAW,EAAEK,IAAI,KAAK,aAAa,GAC/BV,mBAAmB,CAACK,WAAW,CAACM,MAAM,CAAC,GACvC,EAAE,EACR,CAACN,WAAW,CACd,CAAC;EACD,MAAMO,WAAW,GAAGP,WAAW,EAAEO,WAAW,IAAI,KAAK;EAErD,MAAMC,YAAY,GAAGlB,WAAW,CAC7BgB,MAAgB,IAAK;IACpBL,oBAAoB,CAAC;MACnBI,IAAI,EAAE,aAAa;MACnBC,MAAM;MACNC;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACN,oBAAoB,EAAEM,WAAW,CACpC,CAAC;EAED,MAAME,kBAAkB,GAAGlB,OAAO,CAChC,OAAO;IAAEmB,KAAK,EAAER;EAAY,CAAC,CAAC,EAC9B,CAACA,WAAW,CACd,CAAC;EAED,MAAM;IAAES,IAAI;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAGnB,sBAAsB,CACvDG,UAAU,EACVE,WAAW,EACXD,SAAS,EACTW,kBACF,CAAC;EAED,oBACErB,KAAA,CAAA0B,aAAA,CAACtB,qBAAqB;IACpBW,cAAc,EAAEA,cAAe;IAC/BH,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEA,oBAAqB;IAC3Cc,eAAe,EAAEJ,IAAI,CAACK;EAAO,gBAE7B5B,KAAA,CAAA0B,aAAA,CAACrB,aAAa;IACZwB,WAAW,EAAEN,IAAK;IAClBC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbT,IAAI,EAAEA,IAAK;IACXc,QAAQ,EAAEV;EAAa,CACxB,CACoB,CAAC;AAE5B;AAEA,OAAO,MAAMW,mBAAoD,gBAAG9B,IAAI,CACtEO,wBACF,CAAoC","ignoreList":[]}
|
|
@@ -14,6 +14,32 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
/** Returns true for filter state types that support in-filter search. */
|
|
18
|
+
export function supportsSearch(state) {
|
|
19
|
+
if (!state) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
switch (state.type) {
|
|
23
|
+
case "SELECT":
|
|
24
|
+
case "EXACT_MATCH":
|
|
25
|
+
return true;
|
|
26
|
+
case "CONTAINS_TEXT":
|
|
27
|
+
case "NUMBER_RANGE":
|
|
28
|
+
case "DATE_RANGE":
|
|
29
|
+
case "TOGGLE":
|
|
30
|
+
case "hasLink":
|
|
31
|
+
case "linkedProperty":
|
|
32
|
+
case "keywordSearch":
|
|
33
|
+
case "TIMELINE":
|
|
34
|
+
case "custom":
|
|
35
|
+
return false;
|
|
36
|
+
default:
|
|
37
|
+
{
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
17
43
|
/** Returns true for filter state types that support isExcluding. */
|
|
18
44
|
export function supportsExcluding(state) {
|
|
19
45
|
if (!state) {
|
|
@@ -75,7 +101,9 @@ export function filterHasActiveState(state) {
|
|
|
75
101
|
case "custom":
|
|
76
102
|
return true;
|
|
77
103
|
default:
|
|
78
|
-
|
|
104
|
+
{
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
79
107
|
}
|
|
80
108
|
}
|
|
81
109
|
//# sourceMappingURL=filterValues.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterValues.js","names":["
|
|
1
|
+
{"version":3,"file":"filterValues.js","names":["supportsSearch","state","type","supportsExcluding","filterValuesBySearch","values","searchValue","getValue","trimmed","trim","lowerSearch","toLowerCase","filter","v","includes","filterHasActiveState","selectedValues","length","value","undefined","minValue","maxValue","includeNull","enabled","hasLink","linkedFilterState","searchTerm","startDate","endDate"],"sources":["filterValues.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { FilterState } from \"../FilterListItemApi.js\";\n\n/** Returns true for filter state types that support in-filter search. */\nexport function supportsSearch(state: FilterState | undefined): boolean {\n if (!state) {\n return false;\n }\n switch (state.type) {\n case \"SELECT\":\n case \"EXACT_MATCH\":\n return true;\n case \"CONTAINS_TEXT\":\n case \"NUMBER_RANGE\":\n case \"DATE_RANGE\":\n case \"TOGGLE\":\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"TIMELINE\":\n case \"custom\":\n return false;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n\n/** Returns true for filter state types that support isExcluding. */\nexport function supportsExcluding(state: FilterState | undefined): boolean {\n if (!state) {\n return false;\n }\n switch (state.type) {\n case \"SELECT\":\n case \"EXACT_MATCH\":\n case \"CONTAINS_TEXT\":\n case \"TIMELINE\":\n return true;\n case \"NUMBER_RANGE\":\n case \"DATE_RANGE\":\n case \"TOGGLE\":\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"custom\":\n return false;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n\n/** Case-insensitive substring filter for search functionality. */\nexport function filterValuesBySearch<T>(\n values: T[],\n searchValue: string,\n getValue: (item: T) => string,\n): T[] {\n const trimmed = searchValue.trim();\n if (!trimmed) return values;\n const lowerSearch = trimmed.toLowerCase();\n return values.filter((v) => getValue(v).toLowerCase().includes(lowerSearch));\n}\n\n/** Check if a filter state has an active (non-empty) value. */\nexport function filterHasActiveState(state: FilterState | undefined): boolean {\n if (!state) return false;\n\n switch (state.type) {\n case \"SELECT\":\n return state.selectedValues.length > 0;\n case \"EXACT_MATCH\":\n return state.values.length > 0;\n case \"CONTAINS_TEXT\":\n return state.value !== undefined && state.value !== \"\";\n case \"NUMBER_RANGE\":\n return state.minValue !== undefined || state.maxValue !== undefined\n || state.includeNull === true;\n case \"DATE_RANGE\":\n return state.minValue !== undefined || state.maxValue !== undefined\n || state.includeNull === true;\n case \"TOGGLE\":\n return state.enabled;\n case \"hasLink\":\n return state.hasLink;\n case \"linkedProperty\":\n return filterHasActiveState(state.linkedFilterState);\n case \"keywordSearch\":\n return state.searchTerm !== undefined && state.searchTerm !== \"\";\n case \"TIMELINE\":\n return state.startDate !== undefined || state.endDate !== undefined;\n case \"custom\":\n return true;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -39,7 +39,6 @@
|
|
|
39
39
|
background-clip: padding-box;
|
|
40
40
|
border-color: var(--osdk-table-skeleton-color-from);
|
|
41
41
|
border-radius: calc(var(--osdk-surface-border-radius) * 0.5);
|
|
42
|
-
border: 1px solid var(--osdk-table-skeleton-border-color);
|
|
43
42
|
box-shadow: none;
|
|
44
43
|
color: transparent;
|
|
45
44
|
cursor: default;
|
|
@@ -143,9 +143,7 @@ export function MultiColumnSortDialog({
|
|
|
143
143
|
className: styles.addIcon
|
|
144
144
|
}), /*#__PURE__*/React.createElement("span", {
|
|
145
145
|
className: styles.addColumnText
|
|
146
|
-
}, "Add Column to Sort"), /*#__PURE__*/React.createElement(CaretDown, {
|
|
147
|
-
color: "currentColor"
|
|
148
|
-
})), /*#__PURE__*/React.createElement(Menu.Portal, null, /*#__PURE__*/React.createElement(Menu.Positioner, {
|
|
146
|
+
}, "Add Column to Sort"), /*#__PURE__*/React.createElement(CaretDown, null)), /*#__PURE__*/React.createElement(Menu.Portal, null, /*#__PURE__*/React.createElement(Menu.Positioner, {
|
|
149
147
|
className: styles.menuPositioner,
|
|
150
148
|
sideOffset: 4
|
|
151
149
|
}, /*#__PURE__*/React.createElement(Menu.Popup, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiColumnSortDialog.js","names":["Button","Menu","Add","CaretDown","Cog","SortAlphabetical","SortAlphabeticalDesc","arrayMove","classNames","React","useCallback","useEffect","useMemo","useState","ActionButton","Dialog","SearchBar","styles","SortableItemsList","MultiColumnSortDialog","isOpen","onClose","onApply","currentSorting","columnOptions","selectedSortColumns","setSelectedSortColumns","menuSearchQuery","setMenuSearchQuery","selectedColumns","sort","column","find","col","id","push","direction","desc","handleAddColumn","prev","handleRemoveSortColumn","filter","item","handleReorderSortColumns","fromIndex","toIndex","items","handleToggleSortDirection","map","handleApply","sortingState","availableColumns","canSort","some","selected","filteredAvailableColumns","query","toLowerCase","trim","name","includes","handleMenuSearchChange","event","target","value","handleMenuOpenChange","open","sortableItems","label","content","createElement","className","sortColumnItem","sortColumnName","truncate","sortDirectionButton","onClick","sortIcon","footer","Fragment","variant","handleKeyDown","stopPropagation","onOpenChange","title","DialogTitle","sortColumnsList","onReorder","onRemove","sortableList","Root","Trigger","addColumnButton","disabled","length","addIcon","addColumnText","color","Portal","Positioner","menuPositioner","sideOffset","Popup","dropdownMenu","onChange","placeholder","menuSearchContainer","onKeyDown","AvailableColumnMenuItem","key","onAddColumn","menuEmptyState","Item","dropdownItem"],"sources":["MultiColumnSortDialog.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Menu } from \"@base-ui/react/menu\";\nimport {\n Add,\n CaretDown,\n Cog,\n SortAlphabetical,\n SortAlphabeticalDesc,\n} from \"@blueprintjs/icons\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport type { SortingState } from \"@tanstack/react-table\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { Dialog } from \"../base-components/dialog/Dialog.js\";\nimport { SearchBar } from \"../base-components/search-bar/SearchBar.js\";\nimport styles from \"./MultiColumnSortDialog.module.css\";\nimport { type SortableItem, SortableItemsList } from \"./SortableItemsList.js\";\nimport type { ColumnOption } from \"./utils/types.js\";\n\nexport interface SortColumnItem extends ColumnOption {\n direction: \"asc\" | \"desc\";\n}\n\ninterface MultiColumnSortDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onApply: (sortColumns: SortingState) => void;\n currentSorting: SortingState;\n columnOptions: ColumnOption[];\n}\n\nexport function MultiColumnSortDialog({\n isOpen,\n onClose,\n onApply,\n currentSorting,\n columnOptions,\n}: MultiColumnSortDialogProps): React.ReactElement {\n const [selectedSortColumns, setSelectedSortColumns] = useState<\n SortColumnItem[]\n >([]);\n const [menuSearchQuery, setMenuSearchQuery] = useState(\"\");\n\n // Initialize selected sort columns from current sorting\n useEffect(() => {\n if (isOpen) {\n const selectedColumns: SortColumnItem[] = [];\n for (const sort of currentSorting) {\n const column = columnOptions.find((col) => col.id === sort.id);\n if (column) {\n selectedColumns.push({\n ...column,\n direction: sort.desc ? \"desc\" : \"asc\",\n });\n }\n }\n setSelectedSortColumns(selectedColumns);\n }\n }, [isOpen, currentSorting, columnOptions]);\n\n const handleAddColumn = useCallback((column: ColumnOption) => {\n setSelectedSortColumns((prev) => [\n ...prev,\n { ...column, direction: \"asc\" },\n ]);\n }, []);\n\n const handleRemoveSortColumn = useCallback((id: string) => {\n setSelectedSortColumns((prev) => prev.filter((item) => item.id !== id));\n }, []);\n\n const handleReorderSortColumns = useCallback(\n (fromIndex: number, toIndex: number) => {\n setSelectedSortColumns((items) => arrayMove(items, fromIndex, toIndex));\n },\n [],\n );\n\n const handleToggleSortDirection = useCallback((id: string) => {\n setSelectedSortColumns((prev) =>\n prev.map((item) =>\n item.id === id\n ? { ...item, direction: item.direction === \"asc\" ? \"desc\" : \"asc\" }\n : item\n )\n );\n }, []);\n\n const handleApply = useCallback(() => {\n const sortingState: SortingState = selectedSortColumns.map((col) => ({\n id: col.id,\n desc: col.direction === \"desc\",\n }));\n onApply(sortingState);\n onClose();\n }, [selectedSortColumns, onApply, onClose]);\n\n const availableColumns = useMemo(\n () =>\n columnOptions.filter(\n (col) =>\n col.canSort\n && !selectedSortColumns.some((selected) => selected.id === col.id),\n ),\n [columnOptions, selectedSortColumns],\n );\n\n const filteredAvailableColumns = useMemo(() => {\n const query = menuSearchQuery.toLowerCase().trim();\n if (!query) {\n return availableColumns;\n }\n return availableColumns.filter((col) =>\n col.name.toLowerCase().includes(query)\n );\n }, [availableColumns, menuSearchQuery]);\n\n const handleMenuSearchChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setMenuSearchQuery(event.target.value);\n },\n [],\n );\n\n const handleMenuOpenChange = useCallback((open: boolean) => {\n if (open) {\n setMenuSearchQuery(\"\");\n }\n }, []);\n\n const sortableItems: SortableItem[] = useMemo(() => {\n return selectedSortColumns.map((item) => ({\n id: item.id,\n label: item.name,\n content: (\n <div className={styles.sortColumnItem}>\n <span className={classNames(styles.sortColumnName, styles.truncate)}>\n {item.name}\n </span>\n <Button\n className={styles.sortDirectionButton}\n onClick={() => handleToggleSortDirection(item.id)}\n aria-label={`Toggle sort direction for ${item.name}`}\n >\n {item.direction === \"asc\"\n ? <SortAlphabetical className={styles.sortIcon} />\n : <SortAlphabeticalDesc className={styles.sortIcon} />}\n </Button>\n </div>\n ),\n }));\n }, [selectedSortColumns, handleToggleSortDirection]);\n\n const footer = useMemo(() => (\n <>\n <ActionButton onClick={onClose}>Cancel</ActionButton>\n <ActionButton variant=\"primary\" onClick={handleApply}>\n Apply\n </ActionButton>\n </>\n ), [handleApply, onClose]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n event.stopPropagation();\n },\n [],\n );\n\n return (\n <Dialog\n isOpen={isOpen}\n onOpenChange={onClose}\n title={DialogTitle}\n footer={footer}\n >\n <div className={styles.sortColumnsList}>\n <SortableItemsList\n items={sortableItems}\n onReorder={handleReorderSortColumns}\n onRemove={handleRemoveSortColumn}\n className={styles.sortableList}\n />\n <Menu.Root onOpenChange={handleMenuOpenChange}>\n <Menu.Trigger\n className={styles.addColumnButton}\n disabled={availableColumns.length === 0}\n aria-label=\"Add column to sort\"\n >\n <Add className={styles.addIcon} />\n <span className={styles.addColumnText}>\n Add Column to Sort\n </span>\n <CaretDown color={\"currentColor\"} />\n </Menu.Trigger>\n <Menu.Portal>\n <Menu.Positioner className={styles.menuPositioner} sideOffset={4}>\n <Menu.Popup className={styles.dropdownMenu}>\n <SearchBar\n value={menuSearchQuery}\n onChange={handleMenuSearchChange}\n placeholder=\"Search columns\"\n aria-label=\"Search columns to sort\"\n className={styles.menuSearchContainer}\n onKeyDown={handleKeyDown}\n />\n {filteredAvailableColumns.map((column) => (\n <AvailableColumnMenuItem\n key={column.id}\n column={column}\n onAddColumn={handleAddColumn}\n />\n ))}\n {filteredAvailableColumns.length === 0 && (\n <div className={styles.menuEmptyState}>\n No matching columns\n </div>\n )}\n </Menu.Popup>\n </Menu.Positioner>\n </Menu.Portal>\n </Menu.Root>\n </div>\n </Dialog>\n );\n}\n\nconst DialogTitle = (\n <div className={styles.title}>\n <Cog />Sort on Multiple Columns\n </div>\n);\nfunction AvailableColumnMenuItem(\n { column, onAddColumn }: {\n column: ColumnOption;\n onAddColumn: (column: ColumnOption) => void;\n },\n) {\n const onClick = useCallback(() => onAddColumn(column), [onAddColumn, column]);\n\n return (\n <Menu.Item\n className={classNames(styles.dropdownItem, styles.truncate)}\n onClick={onClick}\n >\n {column.name}\n </Menu.Item>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"MultiColumnSortDialog.js","names":["Button","Menu","Add","CaretDown","Cog","SortAlphabetical","SortAlphabeticalDesc","arrayMove","classNames","React","useCallback","useEffect","useMemo","useState","ActionButton","Dialog","SearchBar","styles","SortableItemsList","MultiColumnSortDialog","isOpen","onClose","onApply","currentSorting","columnOptions","selectedSortColumns","setSelectedSortColumns","menuSearchQuery","setMenuSearchQuery","selectedColumns","sort","column","find","col","id","push","direction","desc","handleAddColumn","prev","handleRemoveSortColumn","filter","item","handleReorderSortColumns","fromIndex","toIndex","items","handleToggleSortDirection","map","handleApply","sortingState","availableColumns","canSort","some","selected","filteredAvailableColumns","query","toLowerCase","trim","name","includes","handleMenuSearchChange","event","target","value","handleMenuOpenChange","open","sortableItems","label","content","createElement","className","sortColumnItem","sortColumnName","truncate","sortDirectionButton","onClick","sortIcon","footer","Fragment","variant","handleKeyDown","stopPropagation","onOpenChange","title","DialogTitle","sortColumnsList","onReorder","onRemove","sortableList","Root","Trigger","addColumnButton","disabled","length","addIcon","addColumnText","Portal","Positioner","menuPositioner","sideOffset","Popup","dropdownMenu","onChange","placeholder","menuSearchContainer","onKeyDown","AvailableColumnMenuItem","key","onAddColumn","menuEmptyState","Item","dropdownItem"],"sources":["MultiColumnSortDialog.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Menu } from \"@base-ui/react/menu\";\nimport {\n Add,\n CaretDown,\n Cog,\n SortAlphabetical,\n SortAlphabeticalDesc,\n} from \"@blueprintjs/icons\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport type { SortingState } from \"@tanstack/react-table\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { Dialog } from \"../base-components/dialog/Dialog.js\";\nimport { SearchBar } from \"../base-components/search-bar/SearchBar.js\";\nimport styles from \"./MultiColumnSortDialog.module.css\";\nimport { type SortableItem, SortableItemsList } from \"./SortableItemsList.js\";\nimport type { ColumnOption } from \"./utils/types.js\";\n\nexport interface SortColumnItem extends ColumnOption {\n direction: \"asc\" | \"desc\";\n}\n\ninterface MultiColumnSortDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onApply: (sortColumns: SortingState) => void;\n currentSorting: SortingState;\n columnOptions: ColumnOption[];\n}\n\nexport function MultiColumnSortDialog({\n isOpen,\n onClose,\n onApply,\n currentSorting,\n columnOptions,\n}: MultiColumnSortDialogProps): React.ReactElement {\n const [selectedSortColumns, setSelectedSortColumns] = useState<\n SortColumnItem[]\n >([]);\n const [menuSearchQuery, setMenuSearchQuery] = useState(\"\");\n\n // Initialize selected sort columns from current sorting\n useEffect(() => {\n if (isOpen) {\n const selectedColumns: SortColumnItem[] = [];\n for (const sort of currentSorting) {\n const column = columnOptions.find((col) => col.id === sort.id);\n if (column) {\n selectedColumns.push({\n ...column,\n direction: sort.desc ? \"desc\" : \"asc\",\n });\n }\n }\n setSelectedSortColumns(selectedColumns);\n }\n }, [isOpen, currentSorting, columnOptions]);\n\n const handleAddColumn = useCallback((column: ColumnOption) => {\n setSelectedSortColumns((prev) => [\n ...prev,\n { ...column, direction: \"asc\" },\n ]);\n }, []);\n\n const handleRemoveSortColumn = useCallback((id: string) => {\n setSelectedSortColumns((prev) => prev.filter((item) => item.id !== id));\n }, []);\n\n const handleReorderSortColumns = useCallback(\n (fromIndex: number, toIndex: number) => {\n setSelectedSortColumns((items) => arrayMove(items, fromIndex, toIndex));\n },\n [],\n );\n\n const handleToggleSortDirection = useCallback((id: string) => {\n setSelectedSortColumns((prev) =>\n prev.map((item) =>\n item.id === id\n ? { ...item, direction: item.direction === \"asc\" ? \"desc\" : \"asc\" }\n : item\n )\n );\n }, []);\n\n const handleApply = useCallback(() => {\n const sortingState: SortingState = selectedSortColumns.map((col) => ({\n id: col.id,\n desc: col.direction === \"desc\",\n }));\n onApply(sortingState);\n onClose();\n }, [selectedSortColumns, onApply, onClose]);\n\n const availableColumns = useMemo(\n () =>\n columnOptions.filter(\n (col) =>\n col.canSort\n && !selectedSortColumns.some((selected) => selected.id === col.id),\n ),\n [columnOptions, selectedSortColumns],\n );\n\n const filteredAvailableColumns = useMemo(() => {\n const query = menuSearchQuery.toLowerCase().trim();\n if (!query) {\n return availableColumns;\n }\n return availableColumns.filter((col) =>\n col.name.toLowerCase().includes(query)\n );\n }, [availableColumns, menuSearchQuery]);\n\n const handleMenuSearchChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setMenuSearchQuery(event.target.value);\n },\n [],\n );\n\n const handleMenuOpenChange = useCallback((open: boolean) => {\n if (open) {\n setMenuSearchQuery(\"\");\n }\n }, []);\n\n const sortableItems: SortableItem[] = useMemo(() => {\n return selectedSortColumns.map((item) => ({\n id: item.id,\n label: item.name,\n content: (\n <div className={styles.sortColumnItem}>\n <span className={classNames(styles.sortColumnName, styles.truncate)}>\n {item.name}\n </span>\n <Button\n className={styles.sortDirectionButton}\n onClick={() => handleToggleSortDirection(item.id)}\n aria-label={`Toggle sort direction for ${item.name}`}\n >\n {item.direction === \"asc\"\n ? (\n <SortAlphabetical\n className={styles.sortIcon}\n />\n )\n : (\n <SortAlphabeticalDesc\n className={styles.sortIcon}\n />\n )}\n </Button>\n </div>\n ),\n }));\n }, [selectedSortColumns, handleToggleSortDirection]);\n\n const footer = useMemo(() => (\n <>\n <ActionButton onClick={onClose}>Cancel</ActionButton>\n <ActionButton variant=\"primary\" onClick={handleApply}>\n Apply\n </ActionButton>\n </>\n ), [handleApply, onClose]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n event.stopPropagation();\n },\n [],\n );\n\n return (\n <Dialog\n isOpen={isOpen}\n onOpenChange={onClose}\n title={DialogTitle}\n footer={footer}\n >\n <div className={styles.sortColumnsList}>\n <SortableItemsList\n items={sortableItems}\n onReorder={handleReorderSortColumns}\n onRemove={handleRemoveSortColumn}\n className={styles.sortableList}\n />\n <Menu.Root onOpenChange={handleMenuOpenChange}>\n <Menu.Trigger\n className={styles.addColumnButton}\n disabled={availableColumns.length === 0}\n aria-label=\"Add column to sort\"\n >\n <Add className={styles.addIcon} />\n <span className={styles.addColumnText}>\n Add Column to Sort\n </span>\n <CaretDown />\n </Menu.Trigger>\n <Menu.Portal>\n <Menu.Positioner className={styles.menuPositioner} sideOffset={4}>\n <Menu.Popup className={styles.dropdownMenu}>\n <SearchBar\n value={menuSearchQuery}\n onChange={handleMenuSearchChange}\n placeholder=\"Search columns\"\n aria-label=\"Search columns to sort\"\n className={styles.menuSearchContainer}\n onKeyDown={handleKeyDown}\n />\n {filteredAvailableColumns.map((column) => (\n <AvailableColumnMenuItem\n key={column.id}\n column={column}\n onAddColumn={handleAddColumn}\n />\n ))}\n {filteredAvailableColumns.length === 0 && (\n <div className={styles.menuEmptyState}>\n No matching columns\n </div>\n )}\n </Menu.Popup>\n </Menu.Positioner>\n </Menu.Portal>\n </Menu.Root>\n </div>\n </Dialog>\n );\n}\n\nconst DialogTitle = (\n <div className={styles.title}>\n <Cog />Sort on Multiple Columns\n </div>\n);\nfunction AvailableColumnMenuItem(\n { column, onAddColumn }: {\n column: ColumnOption;\n onAddColumn: (column: ColumnOption) => void;\n },\n) {\n const onClick = useCallback(() => onAddColumn(column), [onAddColumn, column]);\n\n return (\n <Menu.Item\n className={classNames(styles.dropdownItem, styles.truncate)}\n onClick={onClick}\n >\n {column.name}\n </Menu.Item>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
display: flex;
|
|
35
35
|
width: max-content;
|
|
36
36
|
min-width: 100%;
|
|
37
|
+
border-top: var(--osdk-table-border);
|
|
37
38
|
border-bottom: var(--osdk-table-border);
|
|
38
39
|
}
|
|
39
40
|
|
|
@@ -46,7 +47,6 @@
|
|
|
46
47
|
font-weight: var(--osdk-table-header-fontWeight);
|
|
47
48
|
font-size: var(--osdk-table-header-fontSize);
|
|
48
49
|
color: var(--osdk-table-header-color);
|
|
49
|
-
border-top: var(--osdk-table-border);
|
|
50
50
|
border-right: var(--osdk-table-header-divider);
|
|
51
51
|
background-color: inherit;
|
|
52
52
|
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
&:last-child {
|
|
58
|
-
border-right:
|
|
58
|
+
border-right: none;
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
|