@osdk/react-components 0.19.0 → 0.19.1-beta.0
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 +39 -0
- package/build/browser/action-form/FormFieldApi.js.map +1 -1
- package/build/browser/action-form/utils/getDefaultFieldDefinitions.js +1 -0
- package/build/browser/action-form/utils/getDefaultFieldDefinitions.js.map +1 -1
- package/build/browser/filter-list/FilterInput.js +7 -0
- package/build/browser/filter-list/FilterInput.js.map +1 -1
- package/build/browser/filter-list/FilterList.js +8 -2
- 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/FilterListItemApi.js.map +1 -1
- package/build/browser/filter-list/__tests__/aggregationMocks.js +50 -0
- package/build/browser/filter-list/__tests__/aggregationMocks.js.map +1 -0
- package/build/browser/filter-list/base/BaseFilterList.js.map +1 -1
- package/build/browser/filter-list/base/BaseFilterListApi.js.map +1 -1
- package/build/browser/filter-list/base/FilterInputExcludeRow.js +12 -16
- package/build/browser/filter-list/base/FilterInputExcludeRow.js.map +1 -1
- package/build/browser/filter-list/base/FilterListContent.js +42 -40
- package/build/browser/filter-list/base/FilterListContent.js.map +1 -1
- package/build/browser/filter-list/base/FilterListItem.js +8 -36
- package/build/browser/filter-list/base/FilterListItem.js.map +1 -1
- package/build/browser/filter-list/base/SortableFilterListItem.js +3 -1
- package/build/browser/filter-list/base/SortableFilterListItem.js.map +1 -1
- package/build/browser/filter-list/base/inputs/ListogramInput.js +3 -1
- package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/ListogramInput.module.css +6 -0
- package/build/browser/filter-list/base/inputs/MultiDateInput.js +2 -1
- package/build/browser/filter-list/base/inputs/MultiDateInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/MultiSelectInput.js +7 -3
- package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
- package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css +6 -0
- package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css.js +1 -0
- package/build/browser/filter-list/base/inputs/SingleDateInput.js +4 -2
- package/build/browser/filter-list/base/inputs/SingleDateInput.js.map +1 -1
- package/build/browser/filter-list/hooks/useDualScopeAggregation.js +70 -0
- package/build/browser/filter-list/hooks/useDualScopeAggregation.js.map +1 -0
- package/build/browser/filter-list/hooks/useFilterListState.js +35 -17
- package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -1
- package/build/browser/filter-list/hooks/useFilterPropertyAggregation.js +37 -0
- package/build/browser/filter-list/hooks/useFilterPropertyAggregation.js.map +1 -0
- package/build/browser/filter-list/hooks/usePropertyAggregation.js +7 -6
- package/build/browser/filter-list/hooks/usePropertyAggregation.js.map +1 -1
- package/build/browser/filter-list/inputs/LinkedPropertyInput.js +45 -22
- package/build/browser/filter-list/inputs/LinkedPropertyInput.js.map +1 -1
- package/build/browser/filter-list/inputs/ListogramFilterInput.js +9 -7
- package/build/browser/filter-list/inputs/ListogramFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/MultiSelectFilterInput.js +8 -6
- package/build/browser/filter-list/inputs/MultiSelectFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/PropertyFilterInput.js +10 -1
- package/build/browser/filter-list/inputs/PropertyFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/SingleDateFilterInput.js +4 -2
- package/build/browser/filter-list/inputs/SingleDateFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/SingleSelectFilterInput.js +9 -6
- package/build/browser/filter-list/inputs/SingleSelectFilterInput.js.map +1 -1
- package/build/browser/filter-list/inputs/StaticValuesFilterInput.js.map +1 -1
- package/build/browser/filter-list/types/CustomRendererTypes.js.map +1 -1
- package/build/browser/filter-list/types/KeywordSearchTypes.js.map +1 -1
- package/build/browser/filter-list/types/LinkedFilterTypes.js +42 -1
- package/build/browser/filter-list/types/LinkedFilterTypes.js.map +1 -1
- package/build/browser/filter-list/types/StaticValuesTypes.js.map +1 -1
- package/build/browser/filter-list/utils/filterStateToWhereClause.js +58 -22
- package/build/browser/filter-list/utils/filterStateToWhereClause.js.map +1 -1
- package/build/browser/filter-list/utils/filterValues.js +148 -2
- package/build/browser/filter-list/utils/filterValues.js.map +1 -1
- package/build/browser/filter-list/utils/narrowObjectSet.js +48 -0
- package/build/browser/filter-list/utils/narrowObjectSet.js.map +1 -0
- package/build/browser/public/experimental/filter-list.js +1 -0
- package/build/browser/public/experimental/filter-list.js.map +1 -1
- package/build/browser/styles.css +17 -0
- package/build/browser/tokens/component-tokens/filter-list.css +5 -0
- package/build/browser/util/UserAgent.js +1 -1
- package/build/browser/util/UserAgent.js.map +1 -1
- package/build/cjs/{chunk-6XRF4IAL.cjs → chunk-2AK24MNP.cjs} +4 -4
- package/build/cjs/{chunk-6XRF4IAL.cjs.map → chunk-2AK24MNP.cjs.map} +1 -1
- package/build/cjs/chunk-3DIODTDY.cjs +11 -0
- package/build/cjs/{chunk-774FGQHO.cjs.map → chunk-3DIODTDY.cjs.map} +1 -1
- package/build/cjs/{chunk-P7R4RWMU.cjs → chunk-3RKGMRPD.cjs} +4 -4
- package/build/cjs/{chunk-P7R4RWMU.cjs.map → chunk-3RKGMRPD.cjs.map} +1 -1
- package/build/cjs/chunk-ACIIYYEL.cjs +11 -0
- package/build/cjs/{chunk-62DGPKOC.cjs.map → chunk-ACIIYYEL.cjs.map} +1 -1
- package/build/cjs/{chunk-3OUALM3K.cjs → chunk-COLGW56W.cjs} +4 -4
- package/build/cjs/{chunk-3OUALM3K.cjs.map → chunk-COLGW56W.cjs.map} +1 -1
- package/build/cjs/{chunk-DKPG7O4B.cjs → chunk-GTFPQHZL.cjs} +5 -4
- package/build/cjs/chunk-GTFPQHZL.cjs.map +1 -0
- package/build/cjs/{chunk-L6QDNMMG.cjs → chunk-K3IJA7WZ.cjs} +4 -4
- package/build/cjs/{chunk-L6QDNMMG.cjs.map → chunk-K3IJA7WZ.cjs.map} +1 -1
- package/build/cjs/chunk-MAQSZDRT.cjs +11 -0
- package/build/cjs/{chunk-S25XCKOA.cjs.map → chunk-MAQSZDRT.cjs.map} +1 -1
- package/build/cjs/chunk-MHMRIDIM.cjs +11 -0
- package/build/cjs/{chunk-SLHKSOQC.cjs.map → chunk-MHMRIDIM.cjs.map} +1 -1
- package/build/cjs/{chunk-BXCHISUQ.cjs → chunk-NOONKE5X.cjs} +3 -3
- package/build/cjs/{chunk-BXCHISUQ.cjs.map → chunk-NOONKE5X.cjs.map} +1 -1
- package/build/cjs/chunk-OEESYGT4.cjs +11 -0
- package/build/cjs/{chunk-3Y4W37E3.cjs.map → chunk-OEESYGT4.cjs.map} +1 -1
- package/build/cjs/{chunk-QOI2FQSL.cjs → chunk-PUZZZTC7.cjs} +372 -157
- package/build/cjs/chunk-PUZZZTC7.cjs.map +1 -0
- package/build/cjs/{chunk-FIAYYZHY.cjs → chunk-QWKUCBXE.cjs} +4 -4
- package/build/cjs/{chunk-FIAYYZHY.cjs.map → chunk-QWKUCBXE.cjs.map} +1 -1
- package/build/cjs/public/experimental/action-form.cjs +4 -4
- package/build/cjs/public/experimental/action-form.d.cts +1 -1
- package/build/cjs/public/experimental/document-viewer.cjs +4 -4
- package/build/cjs/public/experimental/email-viewer.cjs +3 -3
- package/build/cjs/public/experimental/excel-viewer.cjs +3 -3
- package/build/cjs/public/experimental/filter-list.cjs +17 -13
- package/build/cjs/public/experimental/filter-list.css +8 -0
- package/build/cjs/public/experimental/filter-list.css.map +1 -1
- package/build/cjs/public/experimental/filter-list.d.cts +95 -25
- package/build/cjs/public/experimental/image-viewer.cjs +3 -3
- package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
- package/build/cjs/public/experimental/object-table.cjs +8 -8
- package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
- package/build/cjs/public/experimental/tiff-renderer.cjs +3 -3
- package/build/cjs/public/experimental/video-viewer.cjs +3 -3
- package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
- package/build/cjs/public/experimental.cjs +50 -46
- package/build/cjs/public/experimental.css +8 -0
- package/build/cjs/public/experimental.css.map +1 -1
- package/build/cjs/public/experimental.d.cts +1 -1
- package/build/esm/action-form/FormFieldApi.js.map +1 -1
- package/build/esm/action-form/utils/getDefaultFieldDefinitions.js +1 -0
- package/build/esm/action-form/utils/getDefaultFieldDefinitions.js.map +1 -1
- package/build/esm/filter-list/FilterInput.js +7 -0
- package/build/esm/filter-list/FilterInput.js.map +1 -1
- package/build/esm/filter-list/FilterList.js +8 -2
- 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/FilterListItemApi.js.map +1 -1
- package/build/esm/filter-list/__tests__/aggregationMocks.js +50 -0
- package/build/esm/filter-list/__tests__/aggregationMocks.js.map +1 -0
- package/build/esm/filter-list/base/BaseFilterList.js.map +1 -1
- package/build/esm/filter-list/base/BaseFilterListApi.js.map +1 -1
- package/build/esm/filter-list/base/FilterInputExcludeRow.js +12 -16
- package/build/esm/filter-list/base/FilterInputExcludeRow.js.map +1 -1
- package/build/esm/filter-list/base/FilterListContent.js +42 -40
- package/build/esm/filter-list/base/FilterListContent.js.map +1 -1
- package/build/esm/filter-list/base/FilterListItem.js +8 -36
- package/build/esm/filter-list/base/FilterListItem.js.map +1 -1
- package/build/esm/filter-list/base/SortableFilterListItem.js +3 -1
- package/build/esm/filter-list/base/SortableFilterListItem.js.map +1 -1
- package/build/esm/filter-list/base/inputs/ListogramInput.js +3 -1
- package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/ListogramInput.module.css +6 -0
- package/build/esm/filter-list/base/inputs/MultiDateInput.js +2 -1
- package/build/esm/filter-list/base/inputs/MultiDateInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/MultiSelectInput.js +7 -3
- package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
- package/build/esm/filter-list/base/inputs/MultiSelectInput.module.css +6 -0
- package/build/esm/filter-list/base/inputs/SingleDateInput.js +4 -2
- package/build/esm/filter-list/base/inputs/SingleDateInput.js.map +1 -1
- package/build/esm/filter-list/hooks/useDualScopeAggregation.js +70 -0
- package/build/esm/filter-list/hooks/useDualScopeAggregation.js.map +1 -0
- package/build/esm/filter-list/hooks/useFilterListState.js +35 -17
- package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -1
- package/build/esm/filter-list/hooks/useFilterPropertyAggregation.js +37 -0
- package/build/esm/filter-list/hooks/useFilterPropertyAggregation.js.map +1 -0
- package/build/esm/filter-list/hooks/usePropertyAggregation.js +7 -6
- package/build/esm/filter-list/hooks/usePropertyAggregation.js.map +1 -1
- package/build/esm/filter-list/inputs/LinkedPropertyInput.js +45 -22
- package/build/esm/filter-list/inputs/LinkedPropertyInput.js.map +1 -1
- package/build/esm/filter-list/inputs/ListogramFilterInput.js +9 -7
- package/build/esm/filter-list/inputs/ListogramFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/MultiSelectFilterInput.js +8 -6
- package/build/esm/filter-list/inputs/MultiSelectFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/PropertyFilterInput.js +10 -1
- package/build/esm/filter-list/inputs/PropertyFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/SingleDateFilterInput.js +4 -2
- package/build/esm/filter-list/inputs/SingleDateFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/SingleSelectFilterInput.js +9 -6
- package/build/esm/filter-list/inputs/SingleSelectFilterInput.js.map +1 -1
- package/build/esm/filter-list/inputs/StaticValuesFilterInput.js.map +1 -1
- package/build/esm/filter-list/types/CustomRendererTypes.js.map +1 -1
- package/build/esm/filter-list/types/KeywordSearchTypes.js.map +1 -1
- package/build/esm/filter-list/types/LinkedFilterTypes.js +42 -1
- package/build/esm/filter-list/types/LinkedFilterTypes.js.map +1 -1
- package/build/esm/filter-list/types/StaticValuesTypes.js.map +1 -1
- package/build/esm/filter-list/utils/filterStateToWhereClause.js +58 -22
- package/build/esm/filter-list/utils/filterStateToWhereClause.js.map +1 -1
- package/build/esm/filter-list/utils/filterValues.js +148 -2
- package/build/esm/filter-list/utils/filterValues.js.map +1 -1
- package/build/esm/filter-list/utils/narrowObjectSet.js +48 -0
- package/build/esm/filter-list/utils/narrowObjectSet.js.map +1 -0
- package/build/esm/public/experimental/filter-list.js +1 -0
- package/build/esm/public/experimental/filter-list.js.map +1 -1
- package/build/esm/tokens/component-tokens/filter-list.css +5 -0
- package/build/esm/util/UserAgent.js +1 -1
- package/build/esm/util/UserAgent.js.map +1 -1
- package/build/types/action-form/FormFieldApi.d.ts +1 -1
- package/build/types/action-form/FormFieldApi.d.ts.map +1 -1
- package/build/types/filter-list/FilterInput.d.ts +6 -1
- package/build/types/filter-list/FilterInput.d.ts.map +1 -1
- package/build/types/filter-list/FilterList.d.ts.map +1 -1
- package/build/types/filter-list/FilterListApi.d.ts +30 -15
- package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
- package/build/types/filter-list/FilterListItemApi.d.ts +15 -1
- package/build/types/filter-list/FilterListItemApi.d.ts.map +1 -1
- package/build/types/filter-list/__tests__/aggregationMocks.d.ts +11 -0
- package/build/types/filter-list/__tests__/aggregationMocks.d.ts.map +1 -0
- package/build/types/filter-list/base/BaseFilterList.d.ts +2 -1
- package/build/types/filter-list/base/BaseFilterList.d.ts.map +1 -1
- package/build/types/filter-list/base/BaseFilterListApi.d.ts +2 -2
- package/build/types/filter-list/base/BaseFilterListApi.d.ts.map +1 -1
- package/build/types/filter-list/base/FilterInputExcludeRow.d.ts.map +1 -1
- package/build/types/filter-list/base/FilterListContent.d.ts +3 -3
- package/build/types/filter-list/base/FilterListContent.d.ts.map +1 -1
- package/build/types/filter-list/base/FilterListItem.d.ts +2 -1
- package/build/types/filter-list/base/FilterListItem.d.ts.map +1 -1
- package/build/types/filter-list/base/SortableFilterListItem.d.ts +2 -1
- package/build/types/filter-list/base/SortableFilterListItem.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/ListogramInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/MultiDateInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -1
- package/build/types/filter-list/base/inputs/SingleDateInput.d.ts +2 -0
- package/build/types/filter-list/base/inputs/SingleDateInput.d.ts.map +1 -1
- package/build/types/filter-list/hooks/useDualScopeAggregation.d.ts +32 -0
- package/build/types/filter-list/hooks/useDualScopeAggregation.d.ts.map +1 -0
- package/build/types/filter-list/hooks/useFilterListState.d.ts +7 -0
- package/build/types/filter-list/hooks/useFilterListState.d.ts.map +1 -1
- package/build/types/filter-list/hooks/useFilterPropertyAggregation.d.ts +13 -0
- package/build/types/filter-list/hooks/useFilterPropertyAggregation.d.ts.map +1 -0
- package/build/types/filter-list/inputs/LinkedPropertyInput.d.ts +6 -4
- package/build/types/filter-list/inputs/LinkedPropertyInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/ListogramFilterInput.d.ts +4 -1
- package/build/types/filter-list/inputs/ListogramFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts +4 -1
- package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/PropertyFilterInput.d.ts +4 -1
- package/build/types/filter-list/inputs/PropertyFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/SingleDateFilterInput.d.ts +7 -1
- package/build/types/filter-list/inputs/SingleDateFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts +4 -1
- package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts.map +1 -1
- package/build/types/filter-list/inputs/StaticValuesFilterInput.d.ts +1 -1
- package/build/types/filter-list/types/CustomRendererTypes.d.ts +2 -2
- package/build/types/filter-list/types/CustomRendererTypes.d.ts.map +1 -1
- package/build/types/filter-list/types/KeywordSearchTypes.d.ts +2 -2
- package/build/types/filter-list/types/KeywordSearchTypes.d.ts.map +1 -1
- package/build/types/filter-list/types/LinkedFilterTypes.d.ts +34 -4
- package/build/types/filter-list/types/LinkedFilterTypes.d.ts.map +1 -1
- package/build/types/filter-list/types/StaticValuesTypes.d.ts +2 -2
- package/build/types/filter-list/types/StaticValuesTypes.d.ts.map +1 -1
- package/build/types/filter-list/utils/filterStateToWhereClause.d.ts +24 -1
- package/build/types/filter-list/utils/filterStateToWhereClause.d.ts.map +1 -1
- package/build/types/filter-list/utils/filterValues.d.ts +26 -0
- package/build/types/filter-list/utils/filterValues.d.ts.map +1 -1
- package/build/types/filter-list/utils/narrowObjectSet.d.ts +7 -0
- package/build/types/filter-list/utils/narrowObjectSet.d.ts.map +1 -0
- package/build/types/public/experimental/filter-list.d.ts +3 -1
- package/build/types/public/experimental/filter-list.d.ts.map +1 -1
- package/docs/CSSVariables.md +78 -17
- package/docs/FilterList.md +52 -6
- package/package.json +9 -9
- package/build/cjs/chunk-3Y4W37E3.cjs +0 -11
- package/build/cjs/chunk-62DGPKOC.cjs +0 -11
- package/build/cjs/chunk-774FGQHO.cjs +0 -11
- package/build/cjs/chunk-DKPG7O4B.cjs.map +0 -1
- package/build/cjs/chunk-QOI2FQSL.cjs.map +0 -1
- package/build/cjs/chunk-S25XCKOA.cjs +0 -11
- package/build/cjs/chunk-SLHKSOQC.cjs +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropertyFilterInput.js","names":["React","memo","FilterInputExcludeRow","ContainsTextFilterInput","DateRangeFilterInput","ListogramFilterInput","MultiDateFilterInput","MultiSelectFilterInput","NumberRangeFilterInput","SingleDateFilterInput","SingleSelectFilterInput","TextTagsFilterInput","TimelineFilterInput","ToggleFilterInput","PropertyFilterInputInner","objectType","objectSet","definition","filterState","onFilterStateChanged","whereClause","searchQuery","excludeRowOpen","layout","filterComponent","createElement","propertyKey","key","clickToFilter","formatDate","renderValue","showCount","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 { MultiSelectInputLayout } from \"../base/inputs/MultiSelectInput.js\";\nimport type {\n FilterState,\n PropertyFilterDefinition,\n} from \"../FilterListItemApi.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: PropertyFilterDefinition<Q>;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n searchQuery?: string;\n excludeRowOpen?: boolean;\n layout?: MultiSelectInputLayout;\n}\n\nfunction PropertyFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n whereClause,\n searchQuery,\n excludeRowOpen,\n layout,\n}: PropertyFilterInputProps<Q>): React.ReactElement {\n switch (definition.filterComponent) {\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 whereClause={whereClause}\n clickToFilter={definition.clickToFilter}\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 whereClause={whereClause}\n formatDate={definition.formatDate}\n clickToFilter={definition.clickToFilter}\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 renderValue={definition.renderValue}\n showCount={definition.showCount}\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 renderValue={definition.renderValue}\n showCount={definition.showCount}\n layout={layout}\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 formatDate={definition.formatDate}\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 showCount={definition.showCount}\n maxVisibleItems={definition.listogramConfig?.maxVisibleItems ?? 5}\n searchQuery={searchQuery}\n excludeRowOpen={excludeRowOpen}\n renderValue={definition.renderValue}\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 formatDate={definition.formatDate}\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":[]}
|
|
1
|
+
{"version":3,"file":"PropertyFilterInput.js","names":["React","memo","FilterInputExcludeRow","ContainsTextFilterInput","DateRangeFilterInput","ListogramFilterInput","MultiDateFilterInput","MultiSelectFilterInput","NumberRangeFilterInput","SingleDateFilterInput","SingleSelectFilterInput","TextTagsFilterInput","TimelineFilterInput","ToggleFilterInput","PropertyFilterInputInner","objectType","objectSet","definition","filterState","onFilterStateChanged","whereClause","linkedFilters","showFilteredOutValues","searchQuery","excludeRowOpen","layout","filterComponent","createElement","propertyKey","key","clickToFilter","formatDate","renderValue","showCount","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 { MultiSelectInputLayout } from \"../base/inputs/MultiSelectInput.js\";\nimport type {\n FilterState,\n PropertyFilterDefinition,\n} from \"../FilterListItemApi.js\";\nimport type { LinkedFilter } from \"../types/LinkedFilterTypes.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: PropertyFilterDefinition<Q>;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n linkedFilters?: ReadonlyArray<LinkedFilter<Q>>;\n showFilteredOutValues?: boolean;\n searchQuery?: string;\n excludeRowOpen?: boolean;\n layout?: MultiSelectInputLayout;\n}\n\nfunction PropertyFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n whereClause,\n linkedFilters,\n showFilteredOutValues,\n searchQuery,\n excludeRowOpen,\n layout,\n}: PropertyFilterInputProps<Q>): React.ReactElement {\n switch (definition.filterComponent) {\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 whereClause={whereClause}\n clickToFilter={definition.clickToFilter}\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 whereClause={whereClause}\n formatDate={definition.formatDate}\n clickToFilter={definition.clickToFilter}\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 linkedFilters={linkedFilters}\n showFilteredOutValues={showFilteredOutValues}\n excludeRowOpen={excludeRowOpen}\n renderValue={definition.renderValue}\n showCount={definition.showCount}\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 linkedFilters={linkedFilters}\n showFilteredOutValues={showFilteredOutValues}\n excludeRowOpen={excludeRowOpen}\n renderValue={definition.renderValue}\n showCount={definition.showCount}\n layout={layout}\n />\n );\n\n case \"SINGLE_DATE\":\n return (\n <SingleDateFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n formatDate={definition.formatDate}\n />\n );\n\n case \"MULTI_DATE\":\n return (\n <MultiDateFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n formatDate={definition.formatDate}\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 linkedFilters={linkedFilters}\n showFilteredOutValues={showFilteredOutValues}\n colorMap={definition.colorMap}\n displayMode={definition.listogramConfig?.displayMode}\n showCount={definition.showCount}\n maxVisibleItems={definition.listogramConfig?.maxVisibleItems ?? 5}\n searchQuery={searchQuery}\n excludeRowOpen={excludeRowOpen}\n renderValue={definition.renderValue}\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 formatDate={definition.formatDate}\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":[]}
|
|
@@ -18,7 +18,8 @@ import React, { memo, useCallback, useMemo } from "react";
|
|
|
18
18
|
import { SingleDateInput } from "../base/inputs/SingleDateInput.js";
|
|
19
19
|
function SingleDateFilterInputInner({
|
|
20
20
|
filterState,
|
|
21
|
-
onFilterStateChanged
|
|
21
|
+
onFilterStateChanged,
|
|
22
|
+
formatDate
|
|
22
23
|
}) {
|
|
23
24
|
const selectedDate = useMemo(() => filterState?.type === "SELECT" ? filterState.selectedValues[0] instanceof Date ? filterState.selectedValues[0] : undefined : undefined, [filterState]);
|
|
24
25
|
const isExcluding = filterState?.isExcluding ?? false;
|
|
@@ -31,7 +32,8 @@ function SingleDateFilterInputInner({
|
|
|
31
32
|
}, [onFilterStateChanged, isExcluding]);
|
|
32
33
|
return /*#__PURE__*/React.createElement(SingleDateInput, {
|
|
33
34
|
selectedDate: selectedDate,
|
|
34
|
-
onChange: handleChange
|
|
35
|
+
onChange: handleChange,
|
|
36
|
+
formatDate: formatDate
|
|
35
37
|
});
|
|
36
38
|
}
|
|
37
39
|
export const SingleDateFilterInput = /*#__PURE__*/memo(SingleDateFilterInputInner);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingleDateFilterInput.js","names":["React","memo","useCallback","useMemo","SingleDateInput","SingleDateFilterInputInner","filterState","onFilterStateChanged","selectedDate","type","selectedValues","Date","undefined","isExcluding","handleChange","createElement","onChange","SingleDateFilterInput"],"sources":["SingleDateFilterInput.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 React, { memo, useCallback, useMemo } from \"react\";\nimport { SingleDateInput } from \"../base/inputs/SingleDateInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\n\ninterface SingleDateFilterInputProps {\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n}\n\nfunction SingleDateFilterInputInner({\n filterState,\n onFilterStateChanged,\n}: SingleDateFilterInputProps): React.ReactElement {\n const selectedDate = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? (filterState.selectedValues[0] instanceof Date\n ? filterState.selectedValues[0]\n : undefined)\n : undefined,\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleChange = useCallback(\n (selectedDate: Date | undefined) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: selectedDate !== undefined ? [selectedDate] : [],\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n return (\n <SingleDateInput\n selectedDate={selectedDate}\n onChange={handleChange}\n />\n );\n}\n\nexport const SingleDateFilterInput: React.MemoExoticComponent<\n typeof SingleDateFilterInputInner\n> = memo(SingleDateFilterInputInner);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,eAAe,QAAQ,mCAAmC;
|
|
1
|
+
{"version":3,"file":"SingleDateFilterInput.js","names":["React","memo","useCallback","useMemo","SingleDateInput","SingleDateFilterInputInner","filterState","onFilterStateChanged","formatDate","selectedDate","type","selectedValues","Date","undefined","isExcluding","handleChange","createElement","onChange","SingleDateFilterInput"],"sources":["SingleDateFilterInput.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 React, { memo, useCallback, useMemo } from \"react\";\nimport { SingleDateInput } from \"../base/inputs/SingleDateInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\n\ninterface SingleDateFilterInputProps {\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n /**\n * Consumer-provided display formatter forwarded to the underlying\n * `SingleDateInput` / `DatePicker`. Falls back to ISO `YYYY-MM-DD` when\n * omitted.\n */\n formatDate?: (date: Date) => string;\n}\n\nfunction SingleDateFilterInputInner({\n filterState,\n onFilterStateChanged,\n formatDate,\n}: SingleDateFilterInputProps): React.ReactElement {\n const selectedDate = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? (filterState.selectedValues[0] instanceof Date\n ? filterState.selectedValues[0]\n : undefined)\n : undefined,\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleChange = useCallback(\n (selectedDate: Date | undefined) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: selectedDate !== undefined ? [selectedDate] : [],\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n return (\n <SingleDateInput\n selectedDate={selectedDate}\n onChange={handleChange}\n formatDate={formatDate}\n />\n );\n}\n\nexport const SingleDateFilterInput: React.MemoExoticComponent<\n typeof SingleDateFilterInputInner\n> = memo(SingleDateFilterInputInner);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,eAAe,QAAQ,mCAAmC;AAcnE,SAASC,0BAA0BA,CAAC;EAClCC,WAAW;EACXC,oBAAoB;EACpBC;AAC0B,CAAC,EAAsB;EACjD,MAAMC,YAAY,GAAGN,OAAO,CAC1B,MACEG,WAAW,EAAEI,IAAI,KAAK,QAAQ,GACzBJ,WAAW,CAACK,cAAc,CAAC,CAAC,CAAC,YAAYC,IAAI,GAC5CN,WAAW,CAACK,cAAc,CAAC,CAAC,CAAC,GAC7BE,SAAS,GACXA,SAAS,EACf,CAACP,WAAW,CACd,CAAC;EACD,MAAMQ,WAAW,GAAGR,WAAW,EAAEQ,WAAW,IAAI,KAAK;EAErD,MAAMC,YAAY,GAAGb,WAAW,CAC7BO,YAA8B,IAAK;IAClCF,oBAAoB,CAAC;MACnBG,IAAI,EAAE,QAAQ;MACdC,cAAc,EAAEF,YAAY,KAAKI,SAAS,GAAG,CAACJ,YAAY,CAAC,GAAG,EAAE;MAChEK;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACP,oBAAoB,EAAEO,WAAW,CACpC,CAAC;EAED,oBACEd,KAAA,CAAAgB,aAAA,CAACZ,eAAe;IACdK,YAAY,EAAEA,YAAa;IAC3BQ,QAAQ,EAAEF,YAAa;IACvBP,UAAU,EAAEA;EAAW,CACxB,CAAC;AAEN;AAEA,OAAO,MAAMU,qBAEZ,gBAAGjB,IAAI,CAACI,0BAA0B,CAAC","ignoreList":[]}
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
import React, { memo, useCallback, useMemo } from "react";
|
|
18
18
|
import { FilterInputExcludeRow } from "../base/FilterInputExcludeRow.js";
|
|
19
19
|
import { SingleSelectInput } from "../base/inputs/SingleSelectInput.js";
|
|
20
|
-
import {
|
|
20
|
+
import { useFilterPropertyAggregation } from "../hooks/useFilterPropertyAggregation.js";
|
|
21
|
+
import { EMPTY_LINKED_FILTERS } from "../types/LinkedFilterTypes.js";
|
|
21
22
|
import { coerceToString } from "../utils/coerceFilterValue.js";
|
|
22
23
|
function SingleSelectFilterInputInner({
|
|
23
24
|
objectType,
|
|
@@ -26,6 +27,8 @@ function SingleSelectFilterInputInner({
|
|
|
26
27
|
filterState,
|
|
27
28
|
onFilterStateChanged,
|
|
28
29
|
whereClause,
|
|
30
|
+
linkedFilters = EMPTY_LINKED_FILTERS,
|
|
31
|
+
showFilteredOutValues,
|
|
29
32
|
excludeRowOpen,
|
|
30
33
|
renderValue,
|
|
31
34
|
showCount
|
|
@@ -46,15 +49,15 @@ function SingleSelectFilterInputInner({
|
|
|
46
49
|
isExcluding
|
|
47
50
|
});
|
|
48
51
|
}, [onFilterStateChanged, isExcluding]);
|
|
49
|
-
const
|
|
50
|
-
where: whereClause,
|
|
51
|
-
activeValues: selectedValue != null ? [selectedValue] : undefined
|
|
52
|
-
}), [whereClause, selectedValue]);
|
|
52
|
+
const selectedValues = useMemo(() => selectedValue != null ? [selectedValue] : [], [selectedValue]);
|
|
53
53
|
const {
|
|
54
54
|
data,
|
|
55
55
|
isLoading,
|
|
56
56
|
error
|
|
57
|
-
} =
|
|
57
|
+
} = useFilterPropertyAggregation(objectType, propertyKey, objectSet, whereClause, linkedFilters, {
|
|
58
|
+
selectedValues,
|
|
59
|
+
showFilteredOutValues
|
|
60
|
+
});
|
|
58
61
|
return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {
|
|
59
62
|
excludeRowOpen: excludeRowOpen,
|
|
60
63
|
filterState: filterState,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingleSelectFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","SingleSelectInput","
|
|
1
|
+
{"version":3,"file":"SingleSelectFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","SingleSelectInput","useFilterPropertyAggregation","EMPTY_LINKED_FILTERS","coerceToString","SingleSelectFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","linkedFilters","showFilteredOutValues","excludeRowOpen","renderValue","showCount","selectedValue","type","selectedValues","undefined","isExcluding","handleClearAll","handleChange","value","data","isLoading","error","createElement","totalValueCount","length","onClearAll","values","onChange","showCounts","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 { useFilterPropertyAggregation } from \"../hooks/useFilterPropertyAggregation.js\";\nimport {\n EMPTY_LINKED_FILTERS,\n type LinkedFilter,\n} from \"../types/LinkedFilterTypes.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 linkedFilters?: ReadonlyArray<LinkedFilter<Q>>;\n showFilteredOutValues?: boolean;\n excludeRowOpen?: boolean;\n renderValue?: (value: string) => React.ReactNode;\n showCount?: boolean;\n}\n\nfunction SingleSelectFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n linkedFilters = EMPTY_LINKED_FILTERS,\n showFilteredOutValues,\n excludeRowOpen,\n renderValue,\n showCount,\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 handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: [],\n isExcluding,\n });\n }, [onFilterStateChanged, isExcluding]);\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 selectedValues = useMemo(\n () => selectedValue != null ? [selectedValue] : [],\n [selectedValue],\n );\n\n const { data, isLoading, error } = useFilterPropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n objectSet,\n whereClause,\n linkedFilters,\n { selectedValues, showFilteredOutValues },\n );\n\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={data.length}\n onClearAll={handleClearAll}\n >\n <SingleSelectInput\n values={data}\n isLoading={isLoading}\n error={error}\n selectedValue={selectedValue}\n onChange={handleChange}\n showCounts={showCount}\n ariaLabel={`Select ${propertyKey}`}\n renderValue={renderValue}\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,4BAA4B,QAAQ,0CAA0C;AACvF,SACEC,oBAAoB,QAEf,+BAA+B;AACtC,SAASC,cAAc,QAAQ,+BAA+B;AAgB9D,SAASC,4BAA4BA,CAAiC;EACpEC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC,aAAa,GAAGT,oBAAoB;EACpCU,qBAAqB;EACrBC,cAAc;EACdC,WAAW;EACXC;AAC+B,CAAC,EAAsB;EACtD,MAAMC,aAAa,GAAGlB,OAAO,CAC3B,MACEU,WAAW,EAAES,IAAI,KAAK,QAAQ,GAC1Bd,cAAc,CAACK,WAAW,CAACU,cAAc,CAAC,CAAC,CAAC,CAAC,GAC7CC,SAAS,EACf,CAACX,WAAW,CACd,CAAC;EACD,MAAMY,WAAW,GAAGZ,WAAW,EAAEY,WAAW,IAAI,KAAK;EAErD,MAAMC,cAAc,GAAGxB,WAAW,CAAC,MAAM;IACvCY,oBAAoB,CAAC;MACnBQ,IAAI,EAAE,QAAQ;MACdC,cAAc,EAAE,EAAE;MAClBE;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACX,oBAAoB,EAAEW,WAAW,CAAC,CAAC;EAEvC,MAAME,YAAY,GAAGzB,WAAW,CAC7B0B,KAAyB,IAAK;IAC7Bd,oBAAoB,CAAC;MACnBQ,IAAI,EAAE,QAAQ;MACdC,cAAc,EAAEK,KAAK,KAAKJ,SAAS,GAAG,CAACI,KAAK,CAAC,GAAG,EAAE;MAClDH;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACX,oBAAoB,EAAEW,WAAW,CACpC,CAAC;EAED,MAAMF,cAAc,GAAGpB,OAAO,CAC5B,MAAMkB,aAAa,IAAI,IAAI,GAAG,CAACA,aAAa,CAAC,GAAG,EAAE,EAClD,CAACA,aAAa,CAChB,CAAC;EAED,MAAM;IAAEQ,IAAI;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAGzB,4BAA4B,CAC7DI,UAAU,EACVE,WAAW,EACXD,SAAS,EACTI,WAAW,EACXC,aAAa,EACb;IAAEO,cAAc;IAAEN;EAAsB,CAC1C,CAAC;EAED,oBACEjB,KAAA,CAAAgC,aAAA,CAAC5B,qBAAqB;IACpBc,cAAc,EAAEA,cAAe;IAC/BL,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEA,oBAAqB;IAC3CmB,eAAe,EAAEJ,IAAI,CAACK,MAAO;IAC7BC,UAAU,EAAET;EAAe,gBAE3B1B,KAAA,CAAAgC,aAAA,CAAC3B,iBAAiB;IAChB+B,MAAM,EAAEP,IAAK;IACbC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbV,aAAa,EAAEA,aAAc;IAC7BgB,QAAQ,EAAEV,YAAa;IACvBW,UAAU,EAAElB,SAAU;IACtBmB,SAAS,EAAE,UAAU3B,WAAW,EAAG;IACnCO,WAAW,EAAEA;EAAY,CAC1B,CACoB,CAAC;AAE5B;AAEA,OAAO,MAAMqB,uBAA4D,gBACvEvC,IAAI,CACFQ,4BACF,CAAwC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticValuesFilterInput.js","names":["React","memo","useCallback","useMemo","assertUnreachable","FilterInputExcludeRow","ListogramInput","MultiSelectInput","SingleSelectInput","TextTagsInput","coerceToString","coerceToStringArray","useExactMatchState","filterState","onFilterStateChanged","isExcluding","selectedValues","type","values","handleClearAll","handleChange","useSelectState","selectedValue","undefined","handleSingleChange","value","handleMultiChange","StaticValuesFilterInputInner","definition","searchQuery","excludeRowOpen","layout","aggregationValues","map","count","exactMatch","select","filterComponent","createElement","totalValueCount","length","onClearAll","maxCount","isLoading","error","onChange","colorMap","displayMode","listogramConfig","showCount","maxVisibleItems","renderValue","showCounts","ariaLabel","key","suggestions","tags","StaticValuesFilterInput"],"sources":["StaticValuesFilterInput.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 React, { memo, useCallback, useMemo } from \"react\";\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { ListogramInput } from \"../base/inputs/ListogramInput.js\";\nimport {\n MultiSelectInput,\n type MultiSelectInputLayout,\n} from \"../base/inputs/MultiSelectInput.js\";\nimport { SingleSelectInput } from \"../base/inputs/SingleSelectInput.js\";\nimport { TextTagsInput } from \"../base/inputs/TextTagsInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport type { PropertyAggregationValue } from \"../types/AggregationTypes.js\";\nimport type { StaticValuesFilterDefinition } from \"../types/StaticValuesTypes.js\";\nimport {\n coerceToString,\n coerceToStringArray,\n} from \"../utils/coerceFilterValue.js\";\n\ninterface StaticValuesFilterInputProps<Q extends ObjectTypeDefinition> {\n /** The static values filter definition containing values and component config */\n definition: StaticValuesFilterDefinition<Q>;\n /** Current filter state, or undefined if no selection has been made */\n filterState: FilterState | undefined;\n /** Callback fired when the user changes the filter selection */\n onFilterStateChanged: (state: FilterState) => void;\n /** Search term for filtering displayed values within the filter input */\n searchQuery?: string;\n /** Whether the exclude/include toggle row is expanded */\n excludeRowOpen?: boolean;\n /** Layout for `MULTI_SELECT` rendering. Forwarded to `MultiSelectInput`. */\n layout?: MultiSelectInputLayout;\n}\n\n/**\n * Hooks for EXACT_MATCH state management (used by LISTOGRAM and TEXT_TAGS).\n */\nfunction useExactMatchState(\n filterState: FilterState | undefined,\n onFilterStateChanged: (state: FilterState) => void,\n isExcluding: boolean,\n) {\n const selectedValues = useMemo(\n () =>\n filterState?.type === \"EXACT_MATCH\"\n ? coerceToStringArray(filterState.values)\n : [],\n [filterState],\n );\n\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values: [],\n isExcluding,\n });\n }, [onFilterStateChanged, isExcluding]);\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 return { selectedValues, handleClearAll, handleChange };\n}\n\n/**\n * Hooks for SELECT state management (used by SINGLE_SELECT and MULTI_SELECT).\n */\nfunction useSelectState(\n filterState: FilterState | undefined,\n onFilterStateChanged: (state: FilterState) => void,\n isExcluding: boolean,\n) {\n const selectedValue = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToString(filterState.selectedValues[0])\n : undefined,\n [filterState],\n );\n\n const selectedValues = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToStringArray(filterState.selectedValues)\n : [],\n [filterState],\n );\n\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: [],\n isExcluding,\n });\n }, [onFilterStateChanged, isExcluding]);\n\n const handleSingleChange = 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 handleMultiChange = useCallback(\n (selectedValues: string[]) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n return {\n selectedValue,\n selectedValues,\n handleClearAll,\n handleSingleChange,\n handleMultiChange,\n };\n}\n\nfunction StaticValuesFilterInputInner<Q extends ObjectTypeDefinition>({\n definition,\n filterState,\n onFilterStateChanged,\n searchQuery,\n excludeRowOpen,\n layout,\n}: StaticValuesFilterInputProps<Q>): React.ReactElement {\n const aggregationValues: PropertyAggregationValue[] = useMemo(\n () => definition.values.map((value) => ({ value, count: 0 })),\n [definition.values],\n );\n\n const isExcluding = filterState?.isExcluding ?? false;\n\n const exactMatch = useExactMatchState(\n filterState,\n onFilterStateChanged,\n isExcluding,\n );\n const select = useSelectState(\n filterState,\n onFilterStateChanged,\n isExcluding,\n );\n\n switch (definition.filterComponent) {\n case \"LISTOGRAM\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={aggregationValues.length}\n onClearAll={exactMatch.handleClearAll}\n >\n <ListogramInput\n values={aggregationValues}\n maxCount={0}\n isLoading={false}\n error={null}\n selectedValues={exactMatch.selectedValues}\n onChange={exactMatch.handleChange}\n colorMap={definition.colorMap}\n displayMode={definition.listogramConfig?.displayMode}\n showCount={definition.showCount}\n isExcluding={isExcluding}\n maxVisibleItems={definition.listogramConfig?.maxVisibleItems ?? 5}\n searchQuery={searchQuery}\n renderValue={definition.renderValue}\n />\n </FilterInputExcludeRow>\n );\n\n case \"SINGLE_SELECT\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={aggregationValues.length}\n onClearAll={select.handleClearAll}\n >\n <SingleSelectInput\n values={aggregationValues}\n isLoading={false}\n error={null}\n selectedValue={select.selectedValue}\n onChange={select.handleSingleChange}\n showCounts={definition.showCount}\n ariaLabel={`Select ${definition.key}`}\n renderValue={definition.renderValue}\n />\n </FilterInputExcludeRow>\n );\n\n case \"MULTI_SELECT\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={aggregationValues.length}\n onClearAll={select.handleClearAll}\n >\n <MultiSelectInput\n values={aggregationValues}\n isLoading={false}\n error={null}\n selectedValues={select.selectedValues}\n onChange={select.handleMultiChange}\n showCounts={definition.showCount}\n ariaLabel={`Search ${definition.key} values`}\n renderValue={definition.renderValue}\n layout={layout}\n />\n </FilterInputExcludeRow>\n );\n\n case \"TEXT_TAGS\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={aggregationValues.length}\n onClearAll={exactMatch.handleClearAll}\n >\n <TextTagsInput\n suggestions={aggregationValues}\n isLoading={false}\n error={null}\n tags={exactMatch.selectedValues}\n onChange={exactMatch.handleChange}\n />\n </FilterInputExcludeRow>\n );\n\n default:\n return assertUnreachable(definition.filterComponent);\n }\n}\n\nexport const StaticValuesFilterInput: typeof StaticValuesFilterInputInner =\n memo(\n StaticValuesFilterInputInner,\n ) as typeof StaticValuesFilterInputInner;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"StaticValuesFilterInput.js","names":["React","memo","useCallback","useMemo","assertUnreachable","FilterInputExcludeRow","ListogramInput","MultiSelectInput","SingleSelectInput","TextTagsInput","coerceToString","coerceToStringArray","useExactMatchState","filterState","onFilterStateChanged","isExcluding","selectedValues","type","values","handleClearAll","handleChange","useSelectState","selectedValue","undefined","handleSingleChange","value","handleMultiChange","StaticValuesFilterInputInner","definition","searchQuery","excludeRowOpen","layout","aggregationValues","map","count","exactMatch","select","filterComponent","createElement","totalValueCount","length","onClearAll","maxCount","isLoading","error","onChange","colorMap","displayMode","listogramConfig","showCount","maxVisibleItems","renderValue","showCounts","ariaLabel","key","suggestions","tags","StaticValuesFilterInput"],"sources":["StaticValuesFilterInput.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 React, { memo, useCallback, useMemo } from \"react\";\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { ListogramInput } from \"../base/inputs/ListogramInput.js\";\nimport {\n MultiSelectInput,\n type MultiSelectInputLayout,\n} from \"../base/inputs/MultiSelectInput.js\";\nimport { SingleSelectInput } from \"../base/inputs/SingleSelectInput.js\";\nimport { TextTagsInput } from \"../base/inputs/TextTagsInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport type { PropertyAggregationValue } from \"../types/AggregationTypes.js\";\nimport type { StaticValuesFilterDefinition } from \"../types/StaticValuesTypes.js\";\nimport {\n coerceToString,\n coerceToStringArray,\n} from \"../utils/coerceFilterValue.js\";\n\ninterface StaticValuesFilterInputProps<Q extends ObjectTypeDefinition> {\n /** The static values filter definition containing values and component config */\n definition: StaticValuesFilterDefinition<Q>;\n /** Current filter state, or undefined if no selection has been made */\n filterState: FilterState | undefined;\n /** Callback fired when the user changes the filter selection */\n onFilterStateChanged: (state: FilterState) => void;\n /** Search term for filtering displayed values within the filter input */\n searchQuery?: string;\n /** Whether the inline exclude row is currently open */\n excludeRowOpen?: boolean;\n /** Layout for `MULTI_SELECT` rendering. Forwarded to `MultiSelectInput`. */\n layout?: MultiSelectInputLayout;\n}\n\n/**\n * Hooks for EXACT_MATCH state management (used by LISTOGRAM and TEXT_TAGS).\n */\nfunction useExactMatchState(\n filterState: FilterState | undefined,\n onFilterStateChanged: (state: FilterState) => void,\n isExcluding: boolean,\n) {\n const selectedValues = useMemo(\n () =>\n filterState?.type === \"EXACT_MATCH\"\n ? coerceToStringArray(filterState.values)\n : [],\n [filterState],\n );\n\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values: [],\n isExcluding,\n });\n }, [onFilterStateChanged, isExcluding]);\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 return { selectedValues, handleClearAll, handleChange };\n}\n\n/**\n * Hooks for SELECT state management (used by SINGLE_SELECT and MULTI_SELECT).\n */\nfunction useSelectState(\n filterState: FilterState | undefined,\n onFilterStateChanged: (state: FilterState) => void,\n isExcluding: boolean,\n) {\n const selectedValue = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToString(filterState.selectedValues[0])\n : undefined,\n [filterState],\n );\n\n const selectedValues = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToStringArray(filterState.selectedValues)\n : [],\n [filterState],\n );\n\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: [],\n isExcluding,\n });\n }, [onFilterStateChanged, isExcluding]);\n\n const handleSingleChange = 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 handleMultiChange = useCallback(\n (selectedValues: string[]) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n return {\n selectedValue,\n selectedValues,\n handleClearAll,\n handleSingleChange,\n handleMultiChange,\n };\n}\n\nfunction StaticValuesFilterInputInner<Q extends ObjectTypeDefinition>({\n definition,\n filterState,\n onFilterStateChanged,\n searchQuery,\n excludeRowOpen,\n layout,\n}: StaticValuesFilterInputProps<Q>): React.ReactElement {\n const aggregationValues: PropertyAggregationValue[] = useMemo(\n () => definition.values.map((value) => ({ value, count: 0 })),\n [definition.values],\n );\n\n const isExcluding = filterState?.isExcluding ?? false;\n\n const exactMatch = useExactMatchState(\n filterState,\n onFilterStateChanged,\n isExcluding,\n );\n const select = useSelectState(\n filterState,\n onFilterStateChanged,\n isExcluding,\n );\n\n switch (definition.filterComponent) {\n case \"LISTOGRAM\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={aggregationValues.length}\n onClearAll={exactMatch.handleClearAll}\n >\n <ListogramInput\n values={aggregationValues}\n maxCount={0}\n isLoading={false}\n error={null}\n selectedValues={exactMatch.selectedValues}\n onChange={exactMatch.handleChange}\n colorMap={definition.colorMap}\n displayMode={definition.listogramConfig?.displayMode}\n showCount={definition.showCount}\n isExcluding={isExcluding}\n maxVisibleItems={definition.listogramConfig?.maxVisibleItems ?? 5}\n searchQuery={searchQuery}\n renderValue={definition.renderValue}\n />\n </FilterInputExcludeRow>\n );\n\n case \"SINGLE_SELECT\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={aggregationValues.length}\n onClearAll={select.handleClearAll}\n >\n <SingleSelectInput\n values={aggregationValues}\n isLoading={false}\n error={null}\n selectedValue={select.selectedValue}\n onChange={select.handleSingleChange}\n showCounts={definition.showCount}\n ariaLabel={`Select ${definition.key}`}\n renderValue={definition.renderValue}\n />\n </FilterInputExcludeRow>\n );\n\n case \"MULTI_SELECT\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={aggregationValues.length}\n onClearAll={select.handleClearAll}\n >\n <MultiSelectInput\n values={aggregationValues}\n isLoading={false}\n error={null}\n selectedValues={select.selectedValues}\n onChange={select.handleMultiChange}\n showCounts={definition.showCount}\n ariaLabel={`Search ${definition.key} values`}\n renderValue={definition.renderValue}\n layout={layout}\n />\n </FilterInputExcludeRow>\n );\n\n case \"TEXT_TAGS\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={aggregationValues.length}\n onClearAll={exactMatch.handleClearAll}\n >\n <TextTagsInput\n suggestions={aggregationValues}\n isLoading={false}\n error={null}\n tags={exactMatch.selectedValues}\n onChange={exactMatch.handleChange}\n />\n </FilterInputExcludeRow>\n );\n\n default:\n return assertUnreachable(definition.filterComponent);\n }\n}\n\nexport const StaticValuesFilterInput: typeof StaticValuesFilterInputInner =\n memo(\n StaticValuesFilterInputInner,\n ) as typeof StaticValuesFilterInputInner;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomRendererTypes.js","names":[],"sources":["CustomRendererTypes.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 { ObjectSet, ObjectTypeDefinition, WhereClause } from \"@osdk/api\";\nimport type { ReactNode } from \"react\";\nimport type {
|
|
1
|
+
{"version":3,"file":"CustomRendererTypes.js","names":[],"sources":["CustomRendererTypes.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 { ObjectSet, ObjectTypeDefinition, WhereClause } from \"@osdk/api\";\nimport type { ReactNode } from \"react\";\nimport type {\n BaseFilterState,\n FilterDefinitionControls,\n} from \"../FilterListItemApi.js\";\n\n/**\n * State for custom filter\n */\nexport interface CustomFilterState<T = Record<string, unknown>>\n extends BaseFilterState\n{\n type: \"custom\";\n customState: T;\n}\n\n/**\n * Props passed to custom filter input renderer\n */\nexport interface CustomFilterInputRendererProps<\n Q extends ObjectTypeDefinition,\n State extends BaseFilterState,\n> {\n objectType: Q;\n objectSet?: ObjectSet<Q>;\n filterState: State;\n onFilterStateChanged: (newState: State) => void;\n}\n\n/**\n * Props passed to custom filter item renderer\n * Includes full item context in addition to input renderer props\n */\nexport interface CustomFilterItemRendererProps<\n Q extends ObjectTypeDefinition,\n State extends BaseFilterState,\n> extends CustomFilterInputRendererProps<Q, State> {\n label: string;\n onRemove?: () => void;\n}\n\n/**\n * Filter definition for custom filters\n * Provides full control over rendering and filter logic\n */\nexport interface CustomFilterDefinition<\n Q extends ObjectTypeDefinition,\n State extends BaseFilterState = CustomFilterState,\n> extends FilterDefinitionControls {\n type: \"CUSTOM\";\n /**\n * Optional unique identifier for stable keying across filter reorders.\n * If provided, takes precedence over `key` for state keying.\n */\n id?: string;\n /**\n * Unique key for this custom filter\n */\n key: string;\n label?: string;\n filterComponent: \"CUSTOM\";\n filterState: State;\n defaultFilterState?: State;\n /**\n * Render the input portion of the filter\n * Used when rendering within a filter item wrapper\n */\n renderInput?: (\n props: CustomFilterInputRendererProps<Q, State>,\n ) => ReactNode;\n /**\n * Render the complete filter item\n * Used when you need full control over the item appearance\n */\n renderItem?: (\n props: CustomFilterItemRendererProps<Q, State>,\n ) => ReactNode;\n /**\n * Convert filter state to a WhereClause for filtering\n * Required for the filter to affect the object set\n */\n toWhereClause: (state: State) => WhereClause<Q> | undefined;\n /**\n * Controls whether this filter is rendered.\n * When false, the filter is hidden but its state is preserved.\n * @default true\n */\n isVisible?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeywordSearchTypes.js","names":[],"sources":["KeywordSearchTypes.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 { ObjectTypeDefinition, PropertyKeys } from \"@osdk/api\";\nimport type {
|
|
1
|
+
{"version":3,"file":"KeywordSearchTypes.js","names":[],"sources":["KeywordSearchTypes.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 { ObjectTypeDefinition, PropertyKeys } from \"@osdk/api\";\nimport type {\n BaseFilterState,\n FilterDefinitionControls,\n} from \"../FilterListItemApi.js\";\n\n/**\n * Keys of string properties on an object type\n */\nexport type StringPropertyKeys<Q extends ObjectTypeDefinition> =\n PropertyKeys.Filtered<Q, \"string\">;\n\n/**\n * State for keyword search filter\n */\nexport interface KeywordSearchFilterState extends BaseFilterState {\n type: \"keywordSearch\";\n searchTerm: string;\n /**\n * How multiple terms are combined\n * - \"AND\": All terms must match\n * - \"OR\": Any term must match\n */\n operator: \"AND\" | \"OR\";\n}\n\n/**\n * Filter definition for keyword search across string properties\n */\nexport interface KeywordSearchFilterDefinition<\n Q extends ObjectTypeDefinition,\n K extends StringPropertyKeys<Q> = StringPropertyKeys<Q>,\n> extends FilterDefinitionControls {\n type: \"KEYWORD_SEARCH\";\n /**\n * Optional unique identifier for stable keying across filter reorders.\n */\n id?: string;\n /**\n * Properties to search within\n * - \"all\": Search all string properties\n * - K[]: Search specific string properties\n */\n properties: \"all\" | K[];\n label?: string;\n /**\n * Controlled state for the filter.\n * When provided, the filter becomes controlled and changes should be\n * handled via onFilterStateChanged callback.\n */\n filterState?: KeywordSearchFilterState;\n /**\n * Default state for uncontrolled mode.\n * Used when filterState is not provided.\n */\n defaultFilterState?: KeywordSearchFilterState;\n /**\n * Controls whether this filter is rendered.\n * When false, the filter is hidden but its state is preserved.\n * @default true\n */\n isVisible?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,2 +1,43 @@
|
|
|
1
|
-
|
|
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
|
+
/**
|
|
18
|
+
* Runtime representation of an active linked-property filter. Each entry
|
|
19
|
+
* binds a `linkName` to its `reverseLinkName` and an `innerWhere` typed
|
|
20
|
+
* against the linked object type, so `narrowObjectSet` can pivot type-safely.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/** Shared empty default for `LinkedFilter` arrays — avoids new-array-per-render. */
|
|
24
|
+
export const EMPTY_LINKED_FILTERS = [];
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* State for "has link" filter
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* State for linked property filter
|
|
32
|
+
* Wraps the filter state of the linked property
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Filter definition for "Has Link" filter
|
|
37
|
+
* Filters objects based on whether they have any linked objects of the specified type
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Filter definition for filtering on a property of linked objects
|
|
42
|
+
*/
|
|
2
43
|
//# sourceMappingURL=LinkedFilterTypes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkedFilterTypes.js","names":[],"sources":["LinkedFilterTypes.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n LinkedType,\n LinkNames,\n ObjectTypeDefinition,\n PropertyKeys,\n} from \"@osdk/api\";\nimport type {\n BaseFilterState,\n FilterState,\n FilterStateByComponentType,\n PropertyTypeFromKey,\n ValidComponentsForPropertyType,\n} from \"../FilterListItemApi.js\";\n\n/**\n * State for \"has link\" filter\n */\nexport interface HasLinkFilterState extends BaseFilterState {\n type: \"hasLink\";\n hasLink: boolean;\n}\n\n/**\n * State for linked property filter\n * Wraps the filter state of the linked property\n */\nexport interface LinkedPropertyFilterState<S extends FilterState = FilterState>\n extends BaseFilterState\n{\n type: \"linkedProperty\";\n linkedFilterState: S;\n}\n\n/**\n * Filter definition for \"Has Link\" filter\n * Filters objects based on whether they have any linked objects of the specified type\n */\nexport interface HasLinkFilterDefinition<\n Q extends ObjectTypeDefinition,\n L extends LinkNames<Q> = LinkNames<Q>,\n> {\n type: \"HAS_LINK\";\n /**\n * Optional unique identifier for stable keying across filter reorders.\n */\n id?: string;\n linkName: L;\n label?: string;\n filterState: HasLinkFilterState;\n defaultFilterState?: HasLinkFilterState;\n /**\n * Controls whether this filter is rendered.\n * When false, the filter is hidden but its state is preserved.\n * @default true\n */\n isVisible?: boolean;\n}\n\n/**\n * Filter definition for filtering on a property of linked objects\n */\nexport interface LinkedPropertyFilterDefinition<\n Q extends ObjectTypeDefinition,\n L extends LinkNames<Q>,\n LinkedQ extends ObjectTypeDefinition = LinkedType<Q, L>,\n LinkedK extends PropertyKeys<LinkedQ> = PropertyKeys<LinkedQ>,\n LinkedC extends ValidComponentsForPropertyType<\n PropertyTypeFromKey<LinkedQ, LinkedK>\n > = ValidComponentsForPropertyType<PropertyTypeFromKey<LinkedQ, LinkedK>>,\n> {\n type: \"LINKED_PROPERTY\";\n /**\n * Optional unique identifier for stable keying across filter reorders.\n */\n id?: string;\n linkName: L;\n linkedPropertyKey: LinkedK;\n linkedFilterComponent: LinkedC;\n linkedFilterState: FilterStateByComponentType[LinkedC];\n defaultLinkedFilterState?: FilterStateByComponentType[LinkedC];\n filterState: LinkedPropertyFilterState<FilterStateByComponentType[LinkedC]>;\n label?: string;\n\n /**\n * Show aggregation counts next to filter option values.\n * Applies to LISTOGRAM, SINGLE_SELECT, and MULTI_SELECT linked components.\n * @default true for LISTOGRAM and MULTI_SELECT, false for SINGLE_SELECT\n */\n showCount?: boolean;\n\n /**\n * Controls whether this filter is rendered.\n * When false, the filter is hidden but its state is preserved.\n * @default true\n */\n isVisible?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"LinkedFilterTypes.js","names":["EMPTY_LINKED_FILTERS"],"sources":["LinkedFilterTypes.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n LinkedType,\n LinkNames,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport type { ReactNode } from \"react\";\nimport type {\n BaseFilterState,\n FilterDefinitionControls,\n FilterState,\n FilterStateByComponentType,\n PropertyTypeFromKey,\n ValidComponentsForPropertyType,\n} from \"../FilterListItemApi.js\";\n\n/**\n * Runtime representation of an active linked-property filter. Each entry\n * binds a `linkName` to its `reverseLinkName` and an `innerWhere` typed\n * against the linked object type, so `narrowObjectSet` can pivot type-safely.\n */\nexport type LinkedFilter<Q extends ObjectTypeDefinition> = {\n [L in LinkNames<Q>]: {\n linkName: L;\n reverseLinkName: LinkNames<LinkedType<Q, L>>;\n innerWhere: WhereClause<LinkedType<Q, L>>;\n };\n}[LinkNames<Q>];\n\n/** Shared empty default for `LinkedFilter` arrays — avoids new-array-per-render. */\nexport const EMPTY_LINKED_FILTERS: readonly never[] = [];\n\n/**\n * State for \"has link\" filter\n */\nexport interface HasLinkFilterState extends BaseFilterState {\n type: \"hasLink\";\n hasLink: boolean;\n}\n\n/**\n * State for linked property filter\n * Wraps the filter state of the linked property\n */\nexport interface LinkedPropertyFilterState<S extends FilterState = FilterState>\n extends BaseFilterState\n{\n type: \"linkedProperty\";\n linkedFilterState: S;\n}\n\n/**\n * Filter definition for \"Has Link\" filter\n * Filters objects based on whether they have any linked objects of the specified type\n */\nexport interface HasLinkFilterDefinition<\n Q extends ObjectTypeDefinition,\n L extends LinkNames<Q> = LinkNames<Q>,\n> extends FilterDefinitionControls {\n type: \"HAS_LINK\";\n /**\n * Optional unique identifier for stable keying across filter reorders.\n */\n id?: string;\n linkName: L;\n label?: string;\n filterState: HasLinkFilterState;\n defaultFilterState?: HasLinkFilterState;\n /**\n * Controls whether this filter is rendered.\n * When false, the filter is hidden but its state is preserved.\n * @default true\n */\n isVisible?: boolean;\n}\n\n/**\n * Filter definition for filtering on a property of linked objects\n */\nexport interface LinkedPropertyFilterDefinition<\n Q extends ObjectTypeDefinition,\n L extends LinkNames<Q>,\n LinkedQ extends ObjectTypeDefinition = LinkedType<Q, L>,\n LinkedK extends PropertyKeys<LinkedQ> = PropertyKeys<LinkedQ>,\n LinkedC extends ValidComponentsForPropertyType<\n PropertyTypeFromKey<LinkedQ, LinkedK>\n > = ValidComponentsForPropertyType<PropertyTypeFromKey<LinkedQ, LinkedK>>,\n> extends FilterDefinitionControls {\n type: \"LINKED_PROPERTY\";\n /**\n * Optional unique identifier for stable keying across filter reorders.\n */\n id?: string;\n linkName: L;\n /**\n * Set this to make the filter narrow `objectSet`; the result is emitted\n * via `onEffectiveObjectSet`. The value names the link on the linked\n * object type that points back to `Q` (the inverse of `linkName`).\n *\n * Leave unset to keep the filter UI-only. It still renders and fires\n * `onFilterStateChanged`, but FilterList won't narrow on it.\n */\n reverseLinkName?: LinkNames<LinkedQ>;\n linkedPropertyKey: LinkedK;\n linkedFilterComponent: LinkedC;\n linkedFilterState: FilterStateByComponentType[LinkedC];\n defaultLinkedFilterState?: FilterStateByComponentType[LinkedC];\n filterState: LinkedPropertyFilterState<FilterStateByComponentType[LinkedC]>;\n label?: string;\n\n /**\n * Show aggregation counts next to filter option values.\n * Applies to LISTOGRAM, SINGLE_SELECT, and MULTI_SELECT linked components.\n * @default true for LISTOGRAM and MULTI_SELECT, false for SINGLE_SELECT\n */\n showCount?: boolean;\n\n /**\n * Custom display function for filter values.\n * Replaces the default string display in dropdown items, chips, and listogram rows.\n * When the function returns a string, that string is also used for search matching\n * within filter dropdowns. When it returns a non-string `ReactNode`, search falls\n * back to the raw value.\n */\n renderValue?: (value: string) => ReactNode;\n\n /**\n * Controls whether this filter is rendered.\n * When false, the filter is hidden but its state is preserved.\n * @default true\n */\n isVisible?: boolean;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAmBA;AACA;AACA;AACA;AACA;;AASA;AACA,OAAO,MAAMA,oBAAsC,GAAG,EAAE;;AAExD;AACA;AACA;;AAMA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;;AAsBA;AACA;AACA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticValuesTypes.js","names":[],"sources":["StaticValuesTypes.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 { ObjectTypeDefinition, WhereClause } from \"@osdk/api\";\nimport type { ReactNode } from \"react\";\nimport type {\n FilterState,\n FilterStateByComponentType,\n} from \"../FilterListItemApi.js\";\n\n/**\n * Component types that support static values.\n * These components can display a fixed list of string values without OSDK aggregation.\n */\nexport type StaticValuesComponentType =\n | \"LISTOGRAM\"\n | \"SINGLE_SELECT\"\n | \"MULTI_SELECT\"\n | \"TEXT_TAGS\";\n\n/**\n * Filter definition for static (non-OSDK) value lists.\n * Renders built-in filter components with user-provided values instead of\n * fetching values via OSDK aggregation queries.\n */\nexport interface StaticValuesFilterDefinition<\n Q extends ObjectTypeDefinition,\n C extends StaticValuesComponentType = StaticValuesComponentType,\n> {\n type: \"STATIC_VALUES\";\n\n /**\n * Optional unique identifier for stable keying across filter reorders.\n * If provided, takes precedence over `key` for state keying.\n */\n id?: string;\n\n /**\n * Key used for state management and auto WHERE clause generation.\n * When `toWhereClause` is not provided, this is used as the property key\n * in the generated WHERE clause.\n */\n key: string;\n\n /**\n * Display label for the filter\n */\n label?: string;\n\n /**\n * The filter component type to render\n */\n filterComponent: C;\n\n /**\n * The current state of the filter\n */\n filterState: FilterStateByComponentType[C];\n\n /**\n * The static list of values to display in the filter component.\n * These are rendered directly without OSDK aggregation.\n */\n values: string[];\n\n /**\n * Custom display function for filter values.\n * Replaces the default string display in dropdown items, chips, and listogram rows.\n * When the function returns a string, that string is also used for search matching\n * within filter dropdowns. When it returns a non-string `ReactNode`, search falls\n * back to the raw value.\n */\n renderValue?: (value: string) => ReactNode;\n\n /**\n * Show aggregation counts next to filter option values.\n * Applies to LISTOGRAM, SINGLE_SELECT, and MULTI_SELECT components.\n * @default true for LISTOGRAM and MULTI_SELECT, false for SINGLE_SELECT\n */\n showCount?: boolean;\n\n /**\n * Maps filter values to colors for visual differentiation.\n * Used by LISTOGRAM (per-row bar colors).\n */\n colorMap?: Record<string, string>;\n\n /**\n * Configuration for LISTOGRAM display mode.\n * Only applies when filterComponent is \"LISTOGRAM\".\n */\n listogramConfig?: {\n displayMode?: \"full\" | \"count\" | \"minimal\";\n /**\n * Number of items shown before \"View all\" link appears\n * @default 5\n */\n maxVisibleItems?: number;\n };\n\n /**\n * Optional custom WHERE clause generator.\n * When provided, this is used instead of auto-generating a WHERE clause\n * from the `key` and filter state.\n */\n toWhereClause?: (state: FilterState) => WhereClause<Q> | undefined;\n\n /**\n * Controls whether this filter is rendered.\n * When false, the filter is hidden but its state is preserved.\n * @default true\n */\n isVisible?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"StaticValuesTypes.js","names":[],"sources":["StaticValuesTypes.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 { ObjectTypeDefinition, WhereClause } from \"@osdk/api\";\nimport type { ReactNode } from \"react\";\nimport type {\n FilterDefinitionControls,\n FilterState,\n FilterStateByComponentType,\n} from \"../FilterListItemApi.js\";\n\n/**\n * Component types that support static values.\n * These components can display a fixed list of string values without OSDK aggregation.\n */\nexport type StaticValuesComponentType =\n | \"LISTOGRAM\"\n | \"SINGLE_SELECT\"\n | \"MULTI_SELECT\"\n | \"TEXT_TAGS\";\n\n/**\n * Filter definition for static (non-OSDK) value lists.\n * Renders built-in filter components with user-provided values instead of\n * fetching values via OSDK aggregation queries.\n */\nexport interface StaticValuesFilterDefinition<\n Q extends ObjectTypeDefinition,\n C extends StaticValuesComponentType = StaticValuesComponentType,\n> extends FilterDefinitionControls {\n type: \"STATIC_VALUES\";\n\n /**\n * Optional unique identifier for stable keying across filter reorders.\n * If provided, takes precedence over `key` for state keying.\n */\n id?: string;\n\n /**\n * Key used for state management and auto WHERE clause generation.\n * When `toWhereClause` is not provided, this is used as the property key\n * in the generated WHERE clause.\n */\n key: string;\n\n /**\n * Display label for the filter\n */\n label?: string;\n\n /**\n * The filter component type to render\n */\n filterComponent: C;\n\n /**\n * The current state of the filter\n */\n filterState: FilterStateByComponentType[C];\n\n /**\n * The static list of values to display in the filter component.\n * These are rendered directly without OSDK aggregation.\n */\n values: string[];\n\n /**\n * Custom display function for filter values.\n * Replaces the default string display in dropdown items, chips, and listogram rows.\n * When the function returns a string, that string is also used for search matching\n * within filter dropdowns. When it returns a non-string `ReactNode`, search falls\n * back to the raw value.\n */\n renderValue?: (value: string) => ReactNode;\n\n /**\n * Show aggregation counts next to filter option values.\n * Applies to LISTOGRAM, SINGLE_SELECT, and MULTI_SELECT components.\n * @default true for LISTOGRAM and MULTI_SELECT, false for SINGLE_SELECT\n */\n showCount?: boolean;\n\n /**\n * Maps filter values to colors for visual differentiation.\n * Used by LISTOGRAM (per-row bar colors).\n */\n colorMap?: Record<string, string>;\n\n /**\n * Configuration for LISTOGRAM display mode.\n * Only applies when filterComponent is \"LISTOGRAM\".\n */\n listogramConfig?: {\n displayMode?: \"full\" | \"count\" | \"minimal\";\n /**\n * Number of items shown before \"View all\" link appears\n * @default 5\n */\n maxVisibleItems?: number;\n };\n\n /**\n * Optional custom WHERE clause generator.\n * When provided, this is used instead of auto-generating a WHERE clause\n * from the `key` and filter state.\n */\n toWhereClause?: (state: FilterState) => WhereClause<Q> | undefined;\n\n /**\n * Controls whether this filter is rendered.\n * When false, the filter is hidden but its state is preserved.\n * @default true\n */\n isVisible?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -179,23 +179,10 @@ function filterStateToPropertyFilter(state, propertyType) {
|
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
-
/**
|
|
183
|
-
* Builds a WhereClause from filter definitions and their current states.
|
|
184
|
-
*
|
|
185
|
-
* The filterStates map uses string keys derived from filter definitions via
|
|
186
|
-
* getFilterKey(). This ensures stable state lookups even when filters are
|
|
187
|
-
* reordered or definition object references change.
|
|
188
|
-
*
|
|
189
|
-
* Note: The `as WhereClause<Q>` casts are necessary because we're building
|
|
190
|
-
* clauses dynamically from property keys determined at runtime. TypeScript
|
|
191
|
-
* cannot verify that the constructed clause structure matches the generic Q's
|
|
192
|
-
* expected shape, but the structure is guaranteed to be valid by construction.
|
|
193
|
-
*/
|
|
194
182
|
/**
|
|
195
183
|
* Builds a WHERE clause fragment for a single property key from filter state.
|
|
196
|
-
* Shared by PROPERTY and STATIC_VALUES filter types.
|
|
197
184
|
*/
|
|
198
|
-
function buildPropertyKeyClause(key, state, propertyType) {
|
|
185
|
+
export function buildPropertyKeyClause(key, state, propertyType) {
|
|
199
186
|
const filter = filterStateToPropertyFilter(state, propertyType);
|
|
200
187
|
if (filter === undefined) {
|
|
201
188
|
return undefined;
|
|
@@ -229,6 +216,11 @@ function buildPropertyKeyClause(key, state, propertyType) {
|
|
|
229
216
|
} : clause;
|
|
230
217
|
}
|
|
231
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* Builds a `WhereClause<Q>` from direct (non-link-traversing) filter
|
|
221
|
+
* definitions and current states. LINKED_PROPERTY filters are excluded —
|
|
222
|
+
* use `getActiveLinkedFilters` for those and apply via `narrowObjectSet`.
|
|
223
|
+
*/
|
|
232
224
|
export function buildWhereClause(definitions, filterStates, propertyTypes, excludeFilterKey) {
|
|
233
225
|
if (!definitions || definitions.length === 0) {
|
|
234
226
|
return {};
|
|
@@ -273,14 +265,9 @@ export function buildWhereClause(definitions, filterStates, propertyTypes, exclu
|
|
|
273
265
|
break;
|
|
274
266
|
}
|
|
275
267
|
case "LINKED_PROPERTY":
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
// LinkedProperty filters render UI for selection but cannot be included
|
|
280
|
-
// in the where clause. Consumers needing linked property filtering must
|
|
281
|
-
// implement it using ObjectSet.pivotTo() and intersect().
|
|
282
|
-
break;
|
|
283
|
-
}
|
|
268
|
+
// Handled by getActiveLinkedFilters — can't be expressed as a
|
|
269
|
+
// WhereClause<Q>.
|
|
270
|
+
break;
|
|
284
271
|
case "KEYWORD_SEARCH":
|
|
285
272
|
{
|
|
286
273
|
if (state.type !== "keywordSearch") {
|
|
@@ -386,6 +373,55 @@ export function buildWhereClause(definitions, filterStates, propertyTypes, exclu
|
|
|
386
373
|
};
|
|
387
374
|
}
|
|
388
375
|
|
|
376
|
+
/**
|
|
377
|
+
* Builds the inner `WhereClause` for a linked-property filter, typed against
|
|
378
|
+
* the linked object type. Returns `undefined` when the state doesn't yield a
|
|
379
|
+
* predicate (e.g. empty selection).
|
|
380
|
+
*/
|
|
381
|
+
export function buildLinkedInnerWhere(definition, state) {
|
|
382
|
+
const record = buildPropertyKeyClause(definition.linkedPropertyKey, state.linkedFilterState);
|
|
383
|
+
if (record === undefined) {
|
|
384
|
+
return undefined;
|
|
385
|
+
}
|
|
386
|
+
return record;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/**
|
|
390
|
+
* Returns the active LINKED_PROPERTY filters as `LinkedFilter<Q>` records.
|
|
391
|
+
*/
|
|
392
|
+
export function getActiveLinkedFilters(definitions, filterStates, excludeFilterKey) {
|
|
393
|
+
if (!definitions || definitions.length === 0) {
|
|
394
|
+
return [];
|
|
395
|
+
}
|
|
396
|
+
const result = [];
|
|
397
|
+
for (const definition of definitions) {
|
|
398
|
+
if (definition.type !== "LINKED_PROPERTY") {
|
|
399
|
+
continue;
|
|
400
|
+
}
|
|
401
|
+
const key = getFilterKey(definition);
|
|
402
|
+
if (key === excludeFilterKey) {
|
|
403
|
+
continue;
|
|
404
|
+
}
|
|
405
|
+
const state = filterStates.get(key);
|
|
406
|
+
if (!state || state.type !== "linkedProperty") {
|
|
407
|
+
continue;
|
|
408
|
+
}
|
|
409
|
+
if (definition.reverseLinkName == null) {
|
|
410
|
+
continue;
|
|
411
|
+
}
|
|
412
|
+
const innerWhere = buildLinkedInnerWhere(definition, state);
|
|
413
|
+
if (innerWhere === undefined) {
|
|
414
|
+
continue;
|
|
415
|
+
}
|
|
416
|
+
result.push({
|
|
417
|
+
linkName: definition.linkName,
|
|
418
|
+
reverseLinkName: definition.reverseLinkName,
|
|
419
|
+
innerWhere
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
return result;
|
|
423
|
+
}
|
|
424
|
+
|
|
389
425
|
/** Splits values into non-empty and empty, returning $isNull for empty strings. */
|
|
390
426
|
function buildValueOrNullFilter(values) {
|
|
391
427
|
if (values.length === 0) {
|