@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":"filterStateToWhereClause.js","names":["assertUnreachable","formatDateForInput","getFilterKey","isCompoundFilter","f","NUMERIC_BOUNDS","byte","min","max","short","integer","long","Number","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","clampToPropertyBounds","value","propertyType","undefined","bounds","Math","formatDateValue","date","toISOString","filterStateToPropertyFilter","state","type","$containsAnyTerm","enabled","conditions","minValue","push","$gte","maxValue","$lte","length","includeNull","$isNull","__compound","buildValueOrNullFilter","values","selectedValues","map","v","Date","startDate","endDate","buildPropertyKeyClause","key","filter","isExcluding","fieldClauses","c","rangeClause","$and","$or","$not","clause","buildWhereClause","definitions","filterStates","propertyTypes","excludeFilterKey","clauses","definition","get","process","env","NODE_ENV","console","warn","linkName","hasLink","$isNotNull","searchTerm","trim","properties","propertiesToSearch","size","info","multiplicity","containsOp","operator","propertySearches","prop","searchClause","customClause","toWhereClause","Object","keys","staticClause","nonEmpty","hasEmpty","valueClause","$in"],"sources":["filterStateToWhereClause.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 { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { formatDateForInput } from \"../../shared/dateUtils.js\";\nimport type { FilterDefinitionUnion } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { getFilterKey } from \"./getFilterKey.js\";\n\ntype PropertyFilter = Record<string, unknown> | boolean | string | number;\n\ninterface CompoundFilter {\n __compound: true;\n conditions: PropertyFilter[];\n includeNull: boolean;\n}\n\nfunction isCompoundFilter(\n f: PropertyFilter | CompoundFilter,\n): f is CompoundFilter {\n return typeof f === \"object\" && f != null && \"__compound\" in f;\n}\n\nconst NUMERIC_BOUNDS: Record<string, { min: number; max: number }> = {\n byte: { min: -128, max: 127 },\n short: { min: -32_768, max: 32_767 },\n integer: { min: -2_147_483_648, max: 2_147_483_647 },\n long: { min: Number.MIN_SAFE_INTEGER, max: Number.MAX_SAFE_INTEGER },\n};\n\nfunction clampToPropertyBounds(\n value: number,\n propertyType: string | undefined,\n): number {\n if (propertyType === undefined) {\n return value;\n }\n const bounds = NUMERIC_BOUNDS[propertyType];\n if (bounds === undefined) {\n return value;\n }\n return Math.max(bounds.min, Math.min(bounds.max, value));\n}\n\nfunction formatDateValue(\n date: Date,\n propertyType: string | undefined,\n): string {\n if (propertyType === \"datetime\") {\n return formatDateForInput(date);\n }\n return date.toISOString();\n}\n\nfunction filterStateToPropertyFilter(\n state: FilterState,\n propertyType?: string,\n): PropertyFilter | CompoundFilter | undefined {\n switch (state.type) {\n case \"CONTAINS_TEXT\": {\n if (!state.value) {\n return undefined;\n }\n return { $containsAnyTerm: state.value };\n }\n\n case \"TOGGLE\": {\n return state.enabled;\n }\n\n case \"DATE_RANGE\": {\n const conditions: PropertyFilter[] = [];\n\n if (state.minValue !== undefined) {\n conditions.push({\n $gte: formatDateValue(state.minValue, propertyType),\n });\n }\n if (state.maxValue !== undefined) {\n conditions.push({\n $lte: formatDateValue(state.maxValue, propertyType),\n });\n }\n\n if (conditions.length === 0 && !state.includeNull) {\n return undefined;\n }\n\n if (conditions.length === 0 && state.includeNull) {\n return { $isNull: true };\n }\n\n if (conditions.length === 1 && !state.includeNull) {\n return conditions[0];\n }\n\n return {\n __compound: true,\n conditions,\n includeNull: state.includeNull ?? false,\n };\n }\n\n case \"NUMBER_RANGE\": {\n const conditions: PropertyFilter[] = [];\n\n if (state.minValue !== undefined) {\n conditions.push({\n $gte: clampToPropertyBounds(state.minValue, propertyType),\n });\n }\n if (state.maxValue !== undefined) {\n conditions.push({\n $lte: clampToPropertyBounds(state.maxValue, propertyType),\n });\n }\n\n if (conditions.length === 0 && !state.includeNull) {\n return undefined;\n }\n\n if (conditions.length === 0 && state.includeNull) {\n return { $isNull: true };\n }\n\n if (conditions.length === 1 && !state.includeNull) {\n return conditions[0];\n }\n\n return {\n __compound: true,\n conditions,\n includeNull: state.includeNull ?? false,\n };\n }\n\n case \"EXACT_MATCH\": {\n return buildValueOrNullFilter(state.values);\n }\n\n case \"SELECT\": {\n if (state.selectedValues.length === 0) {\n return undefined;\n }\n const values: (string | number | boolean)[] = state.selectedValues.map(\n (v) =>\n v instanceof Date\n ? formatDateValue(v, propertyType)\n : v as string | number | boolean,\n );\n return buildValueOrNullFilter(values);\n }\n\n case \"TIMELINE\": {\n const conditions: PropertyFilter[] = [];\n if (state.startDate !== undefined) {\n conditions.push({\n $gte: formatDateValue(state.startDate, propertyType),\n });\n }\n if (state.endDate !== undefined) {\n conditions.push({\n $lte: formatDateValue(state.endDate, propertyType),\n });\n }\n if (conditions.length === 0) {\n return undefined;\n }\n if (conditions.length === 1) {\n return conditions[0];\n }\n return {\n __compound: true,\n conditions,\n includeNull: false,\n };\n }\n\n // These filter types are handled separately in buildWhereClause\n // since they need access to the full definition, not just state\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"custom\":\n return undefined;\n\n default:\n return assertUnreachable(state);\n }\n}\n\n/**\n * Builds a WhereClause from filter definitions and their current states.\n *\n * The filterStates map uses string keys derived from filter definitions via\n * getFilterKey(). This ensures stable state lookups even when filters are\n * reordered or definition object references change.\n *\n * Note: The `as WhereClause<Q>` casts are necessary because we're building\n * clauses dynamically from property keys determined at runtime. TypeScript\n * cannot verify that the constructed clause structure matches the generic Q's\n * expected shape, but the structure is guaranteed to be valid by construction.\n */\n/**\n * Builds a WHERE clause fragment for a single property key from filter state.\n * Shared by PROPERTY and STATIC_VALUES filter types.\n */\nfunction buildPropertyKeyClause(\n key: string,\n state: FilterState,\n propertyType?: string,\n): Record<string, unknown> | undefined {\n const filter = filterStateToPropertyFilter(state, propertyType);\n if (filter === undefined) {\n return undefined;\n }\n const isExcluding = \"isExcluding\" in state && state.isExcluding;\n if (isCompoundFilter(filter)) {\n const fieldClauses = filter.conditions.map(c => ({\n [key]: c,\n }));\n let rangeClause: Record<string, unknown> = fieldClauses.length === 1\n ? fieldClauses[0]\n : { $and: fieldClauses };\n if (filter.includeNull) {\n rangeClause = {\n $or: [rangeClause, { [key]: { $isNull: true } }],\n };\n }\n return isExcluding ? { $not: rangeClause } : rangeClause;\n } else {\n const clause = { [key]: filter };\n return isExcluding ? { $not: clause } : clause;\n }\n}\n\nexport interface PropertyTypeInfo {\n type: string;\n multiplicity: boolean;\n}\n\nexport function buildWhereClause<Q extends ObjectTypeDefinition>(\n definitions: Array<FilterDefinitionUnion<Q>> | undefined,\n filterStates: Map<string, FilterState>,\n propertyTypes?: Map<string, PropertyTypeInfo>,\n excludeFilterKey?: string,\n): WhereClause<Q> {\n if (!definitions || definitions.length === 0) {\n return {} as WhereClause<Q>;\n }\n\n const clauses: Array<Record<string, unknown>> = [];\n\n for (const definition of definitions) {\n const key = getFilterKey(definition);\n if (key === excludeFilterKey) {\n continue;\n }\n const state = filterStates.get(key);\n\n if (!state) {\n continue;\n }\n\n switch (definition.type) {\n case \"PROPERTY\": {\n const propertyType = propertyTypes?.get(definition.key as string)\n ?.type;\n const clause = buildPropertyKeyClause(\n definition.key as string,\n state,\n propertyType,\n );\n if (clause !== undefined) {\n clauses.push(clause);\n }\n break;\n }\n\n case \"HAS_LINK\": {\n if (state.type !== \"hasLink\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\n `[FilterList] State type mismatch for hasLink filter \"${definition.linkName}\": expected hasLink, got ${state.type}`,\n );\n }\n break;\n }\n if (!state.hasLink) {\n break;\n }\n clauses.push({ [definition.linkName]: { $isNotNull: true } });\n break;\n }\n\n case \"LINKED_PROPERTY\": {\n // OSDK WhereClause does not support filtering through links.\n // Link-based filtering requires ObjectSet operations (pivotTo/intersect).\n // LinkedProperty filters render UI for selection but cannot be included\n // in the where clause. Consumers needing linked property filtering must\n // implement it using ObjectSet.pivotTo() and intersect().\n break;\n }\n\n case \"KEYWORD_SEARCH\": {\n if (state.type !== \"keywordSearch\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\n `[FilterList] State type mismatch for keywordSearch filter: expected keywordSearch, got ${state.type}`,\n );\n }\n break;\n }\n if (!state.searchTerm) {\n break;\n }\n // TypeScript narrows state to KeywordSearchFilterState\n const searchTerm = state.searchTerm.trim();\n if (!searchTerm) {\n break;\n }\n\n const properties = definition.properties;\n let propertiesToSearch: string[];\n\n if (properties === \"all\") {\n if (propertyTypes && propertyTypes.size > 0) {\n propertiesToSearch = [];\n for (const [key, info] of propertyTypes) {\n if (info.type === \"string\" && !info.multiplicity) {\n propertiesToSearch.push(key);\n }\n }\n } else {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\n \"[FilterList] Keyword search with properties: 'all' requires propertyTypes to be provided. Filter will be skipped.\",\n );\n }\n break;\n }\n } else {\n propertiesToSearch = properties;\n }\n\n if (propertiesToSearch.length === 0) {\n break;\n }\n\n const containsOp = state.operator === \"AND\"\n ? \"$containsAllTerms\"\n : \"$containsAnyTerm\";\n\n const propertySearches = propertiesToSearch.map((prop) => ({\n [prop]: { [containsOp]: searchTerm },\n }));\n\n let searchClause: Record<string, unknown>;\n if (propertySearches.length === 1) {\n searchClause = propertySearches[0];\n } else {\n searchClause = { $or: propertySearches };\n }\n clauses.push(\n state.isExcluding ? { $not: searchClause } : searchClause,\n );\n break;\n }\n\n case \"CUSTOM\": {\n if (state.type !== \"custom\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\n `[FilterList] State type mismatch for custom filter \"${definition.key}\": expected custom, got ${state.type}`,\n );\n }\n break;\n }\n // TypeScript narrows state to CustomFilterState\n const customClause = definition.toWhereClause(state);\n if (customClause && Object.keys(customClause).length > 0) {\n clauses.push(customClause as Record<string, unknown>);\n }\n break;\n }\n\n case \"STATIC_VALUES\": {\n if (definition.toWhereClause) {\n const staticClause = definition.toWhereClause(state);\n if (staticClause && Object.keys(staticClause).length > 0) {\n clauses.push(staticClause as Record<string, unknown>);\n }\n } else {\n const clause = buildPropertyKeyClause(definition.key, state);\n if (clause !== undefined) {\n clauses.push(clause);\n }\n }\n break;\n }\n\n default:\n assertUnreachable(definition);\n }\n }\n\n if (clauses.length === 0) {\n return {} as WhereClause<Q>;\n }\n\n if (clauses.length === 1) {\n return clauses[0] as WhereClause<Q>;\n }\n\n return { $and: clauses } as WhereClause<Q>;\n}\n\n/** Splits values into non-empty and empty, returning $isNull for empty strings. */\nfunction buildValueOrNullFilter(\n values: (string | number | boolean)[],\n): PropertyFilter | CompoundFilter | undefined {\n if (values.length === 0) {\n return undefined;\n }\n\n const nonEmpty = values.filter((v) => v !== \"\");\n const hasEmpty = nonEmpty.length < values.length;\n\n const valueClause: PropertyFilter | undefined = nonEmpty.length === 0\n ? undefined\n : nonEmpty.length === 1\n ? nonEmpty[0]\n : { $in: nonEmpty };\n\n if (!hasEmpty) {\n return valueClause;\n }\n\n if (valueClause === undefined) {\n return { $isNull: true };\n }\n\n return {\n __compound: true,\n conditions: [valueClause],\n includeNull: true,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"filterStateToWhereClause.js","names":["assertUnreachable","formatDateForInput","getFilterKey","isCompoundFilter","f","NUMERIC_BOUNDS","byte","min","max","short","integer","long","Number","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","clampToPropertyBounds","value","propertyType","undefined","bounds","Math","formatDateValue","date","toISOString","filterStateToPropertyFilter","state","type","$containsAnyTerm","enabled","conditions","minValue","push","$gte","maxValue","$lte","length","includeNull","$isNull","__compound","buildValueOrNullFilter","values","selectedValues","map","v","Date","startDate","endDate","buildPropertyKeyClause","key","filter","isExcluding","fieldClauses","c","rangeClause","$and","$or","$not","clause","buildWhereClause","definitions","filterStates","propertyTypes","excludeFilterKey","clauses","definition","get","process","env","NODE_ENV","console","warn","linkName","hasLink","$isNotNull","searchTerm","trim","properties","propertiesToSearch","size","info","multiplicity","containsOp","operator","propertySearches","prop","searchClause","customClause","toWhereClause","Object","keys","staticClause","buildLinkedInnerWhere","record","linkedPropertyKey","linkedFilterState","getActiveLinkedFilters","result","reverseLinkName","innerWhere","nonEmpty","hasEmpty","valueClause","$in"],"sources":["filterStateToWhereClause.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 WhereClause,\n} from \"@osdk/api\";\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { formatDateForInput } from \"../../shared/dateUtils.js\";\nimport type { FilterDefinitionUnion } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport type {\n LinkedFilter,\n LinkedPropertyFilterDefinition,\n LinkedPropertyFilterState,\n} from \"../types/LinkedFilterTypes.js\";\nimport { getFilterKey } from \"./getFilterKey.js\";\n\ntype PropertyFilter = Record<string, unknown> | boolean | string | number;\n\ninterface CompoundFilter {\n __compound: true;\n conditions: PropertyFilter[];\n includeNull: boolean;\n}\n\nfunction isCompoundFilter(\n f: PropertyFilter | CompoundFilter,\n): f is CompoundFilter {\n return typeof f === \"object\" && f != null && \"__compound\" in f;\n}\n\nconst NUMERIC_BOUNDS: Record<string, { min: number; max: number }> = {\n byte: { min: -128, max: 127 },\n short: { min: -32_768, max: 32_767 },\n integer: { min: -2_147_483_648, max: 2_147_483_647 },\n long: { min: Number.MIN_SAFE_INTEGER, max: Number.MAX_SAFE_INTEGER },\n};\n\nfunction clampToPropertyBounds(\n value: number,\n propertyType: string | undefined,\n): number {\n if (propertyType === undefined) {\n return value;\n }\n const bounds = NUMERIC_BOUNDS[propertyType];\n if (bounds === undefined) {\n return value;\n }\n return Math.max(bounds.min, Math.min(bounds.max, value));\n}\n\nfunction formatDateValue(\n date: Date,\n propertyType: string | undefined,\n): string {\n if (propertyType === \"datetime\") {\n return formatDateForInput(date);\n }\n return date.toISOString();\n}\n\nfunction filterStateToPropertyFilter(\n state: FilterState,\n propertyType?: string,\n): PropertyFilter | CompoundFilter | undefined {\n switch (state.type) {\n case \"CONTAINS_TEXT\": {\n if (!state.value) {\n return undefined;\n }\n return { $containsAnyTerm: state.value };\n }\n\n case \"TOGGLE\": {\n return state.enabled;\n }\n\n case \"DATE_RANGE\": {\n const conditions: PropertyFilter[] = [];\n\n if (state.minValue !== undefined) {\n conditions.push({\n $gte: formatDateValue(state.minValue, propertyType),\n });\n }\n if (state.maxValue !== undefined) {\n conditions.push({\n $lte: formatDateValue(state.maxValue, propertyType),\n });\n }\n\n if (conditions.length === 0 && !state.includeNull) {\n return undefined;\n }\n\n if (conditions.length === 0 && state.includeNull) {\n return { $isNull: true };\n }\n\n if (conditions.length === 1 && !state.includeNull) {\n return conditions[0];\n }\n\n return {\n __compound: true,\n conditions,\n includeNull: state.includeNull ?? false,\n };\n }\n\n case \"NUMBER_RANGE\": {\n const conditions: PropertyFilter[] = [];\n\n if (state.minValue !== undefined) {\n conditions.push({\n $gte: clampToPropertyBounds(state.minValue, propertyType),\n });\n }\n if (state.maxValue !== undefined) {\n conditions.push({\n $lte: clampToPropertyBounds(state.maxValue, propertyType),\n });\n }\n\n if (conditions.length === 0 && !state.includeNull) {\n return undefined;\n }\n\n if (conditions.length === 0 && state.includeNull) {\n return { $isNull: true };\n }\n\n if (conditions.length === 1 && !state.includeNull) {\n return conditions[0];\n }\n\n return {\n __compound: true,\n conditions,\n includeNull: state.includeNull ?? false,\n };\n }\n\n case \"EXACT_MATCH\": {\n return buildValueOrNullFilter(state.values);\n }\n\n case \"SELECT\": {\n if (state.selectedValues.length === 0) {\n return undefined;\n }\n const values: (string | number | boolean)[] = state.selectedValues.map(\n (v) =>\n v instanceof Date\n ? formatDateValue(v, propertyType)\n : v as string | number | boolean,\n );\n return buildValueOrNullFilter(values);\n }\n\n case \"TIMELINE\": {\n const conditions: PropertyFilter[] = [];\n if (state.startDate !== undefined) {\n conditions.push({\n $gte: formatDateValue(state.startDate, propertyType),\n });\n }\n if (state.endDate !== undefined) {\n conditions.push({\n $lte: formatDateValue(state.endDate, propertyType),\n });\n }\n if (conditions.length === 0) {\n return undefined;\n }\n if (conditions.length === 1) {\n return conditions[0];\n }\n return {\n __compound: true,\n conditions,\n includeNull: false,\n };\n }\n\n // These filter types are handled separately in buildWhereClause\n // since they need access to the full definition, not just state\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"custom\":\n return undefined;\n\n default:\n return assertUnreachable(state);\n }\n}\n\n/**\n * Builds a WHERE clause fragment for a single property key from filter state.\n */\nexport function buildPropertyKeyClause(\n key: string | number | symbol,\n state: FilterState,\n propertyType?: string,\n): Record<string, unknown> | undefined {\n const filter = filterStateToPropertyFilter(state, propertyType);\n if (filter === undefined) {\n return undefined;\n }\n const isExcluding = \"isExcluding\" in state && state.isExcluding;\n if (isCompoundFilter(filter)) {\n const fieldClauses = filter.conditions.map(c => ({\n [key]: c,\n }));\n let rangeClause: Record<string, unknown> = fieldClauses.length === 1\n ? fieldClauses[0]\n : { $and: fieldClauses };\n if (filter.includeNull) {\n rangeClause = {\n $or: [rangeClause, { [key]: { $isNull: true } }],\n };\n }\n return isExcluding ? { $not: rangeClause } : rangeClause;\n } else {\n const clause = { [key]: filter };\n return isExcluding ? { $not: clause } : clause;\n }\n}\n\nexport interface PropertyTypeInfo {\n type: string;\n multiplicity: boolean;\n}\n\n/**\n * Builds a `WhereClause<Q>` from direct (non-link-traversing) filter\n * definitions and current states. LINKED_PROPERTY filters are excluded —\n * use `getActiveLinkedFilters` for those and apply via `narrowObjectSet`.\n */\nexport function buildWhereClause<Q extends ObjectTypeDefinition>(\n definitions: Array<FilterDefinitionUnion<Q>> | undefined,\n filterStates: Map<string, FilterState>,\n propertyTypes?: Map<string, PropertyTypeInfo>,\n excludeFilterKey?: string,\n): WhereClause<Q> {\n if (!definitions || definitions.length === 0) {\n return {} as WhereClause<Q>;\n }\n\n const clauses: Array<Record<string, unknown>> = [];\n\n for (const definition of definitions) {\n const key = getFilterKey(definition);\n if (key === excludeFilterKey) {\n continue;\n }\n const state = filterStates.get(key);\n\n if (!state) {\n continue;\n }\n\n switch (definition.type) {\n case \"PROPERTY\": {\n const propertyType = propertyTypes?.get(definition.key as string)\n ?.type;\n const clause = buildPropertyKeyClause(\n definition.key,\n state,\n propertyType,\n );\n if (clause !== undefined) {\n clauses.push(clause);\n }\n break;\n }\n\n case \"HAS_LINK\": {\n if (state.type !== \"hasLink\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\n `[FilterList] State type mismatch for hasLink filter \"${definition.linkName}\": expected hasLink, got ${state.type}`,\n );\n }\n break;\n }\n if (!state.hasLink) {\n break;\n }\n clauses.push({ [definition.linkName]: { $isNotNull: true } });\n break;\n }\n\n case \"LINKED_PROPERTY\":\n // Handled by getActiveLinkedFilters — can't be expressed as a\n // WhereClause<Q>.\n break;\n\n case \"KEYWORD_SEARCH\": {\n if (state.type !== \"keywordSearch\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\n `[FilterList] State type mismatch for keywordSearch filter: expected keywordSearch, got ${state.type}`,\n );\n }\n break;\n }\n if (!state.searchTerm) {\n break;\n }\n // TypeScript narrows state to KeywordSearchFilterState\n const searchTerm = state.searchTerm.trim();\n if (!searchTerm) {\n break;\n }\n\n const properties = definition.properties;\n let propertiesToSearch: string[];\n\n if (properties === \"all\") {\n if (propertyTypes && propertyTypes.size > 0) {\n propertiesToSearch = [];\n for (const [key, info] of propertyTypes) {\n if (info.type === \"string\" && !info.multiplicity) {\n propertiesToSearch.push(key);\n }\n }\n } else {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\n \"[FilterList] Keyword search with properties: 'all' requires propertyTypes to be provided. Filter will be skipped.\",\n );\n }\n break;\n }\n } else {\n propertiesToSearch = properties;\n }\n\n if (propertiesToSearch.length === 0) {\n break;\n }\n\n const containsOp = state.operator === \"AND\"\n ? \"$containsAllTerms\"\n : \"$containsAnyTerm\";\n\n const propertySearches = propertiesToSearch.map((prop) => ({\n [prop]: { [containsOp]: searchTerm },\n }));\n\n let searchClause: Record<string, unknown>;\n if (propertySearches.length === 1) {\n searchClause = propertySearches[0];\n } else {\n searchClause = { $or: propertySearches };\n }\n clauses.push(\n state.isExcluding ? { $not: searchClause } : searchClause,\n );\n break;\n }\n\n case \"CUSTOM\": {\n if (state.type !== \"custom\") {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\n `[FilterList] State type mismatch for custom filter \"${definition.key}\": expected custom, got ${state.type}`,\n );\n }\n break;\n }\n // TypeScript narrows state to CustomFilterState\n const customClause = definition.toWhereClause(state);\n if (customClause && Object.keys(customClause).length > 0) {\n clauses.push(customClause as Record<string, unknown>);\n }\n break;\n }\n\n case \"STATIC_VALUES\": {\n if (definition.toWhereClause) {\n const staticClause = definition.toWhereClause(state);\n if (staticClause && Object.keys(staticClause).length > 0) {\n clauses.push(staticClause as Record<string, unknown>);\n }\n } else {\n const clause = buildPropertyKeyClause(definition.key, state);\n if (clause !== undefined) {\n clauses.push(clause);\n }\n }\n break;\n }\n\n default:\n assertUnreachable(definition);\n }\n }\n\n if (clauses.length === 0) {\n return {} as WhereClause<Q>;\n }\n\n if (clauses.length === 1) {\n return clauses[0] as WhereClause<Q>;\n }\n\n return { $and: clauses } as WhereClause<Q>;\n}\n\n/**\n * Builds the inner `WhereClause` for a linked-property filter, typed against\n * the linked object type. Returns `undefined` when the state doesn't yield a\n * predicate (e.g. empty selection).\n */\nexport function buildLinkedInnerWhere<\n Q extends ObjectTypeDefinition,\n L extends LinkNames<Q>,\n>(\n definition: LinkedPropertyFilterDefinition<Q, L>,\n state: LinkedPropertyFilterState,\n): WhereClause<LinkedType<Q, L>> | undefined {\n const record = buildPropertyKeyClause(\n definition.linkedPropertyKey,\n state.linkedFilterState,\n );\n if (record === undefined) {\n return undefined;\n }\n return record as WhereClause<LinkedType<Q, L>>;\n}\n\n/**\n * Returns the active LINKED_PROPERTY filters as `LinkedFilter<Q>` records.\n */\nexport function getActiveLinkedFilters<Q extends ObjectTypeDefinition>(\n definitions: Array<FilterDefinitionUnion<Q>> | undefined,\n filterStates: Map<string, FilterState>,\n excludeFilterKey?: string,\n): Array<LinkedFilter<Q>> {\n if (!definitions || definitions.length === 0) {\n return [];\n }\n const result: Array<LinkedFilter<Q>> = [];\n for (const definition of definitions) {\n if (definition.type !== \"LINKED_PROPERTY\") {\n continue;\n }\n const key = getFilterKey(definition);\n if (key === excludeFilterKey) {\n continue;\n }\n const state = filterStates.get(key);\n if (!state || state.type !== \"linkedProperty\") {\n continue;\n }\n if (definition.reverseLinkName == null) {\n continue;\n }\n const innerWhere = buildLinkedInnerWhere(definition, state);\n if (innerWhere === undefined) {\n continue;\n }\n result.push({\n linkName: definition.linkName,\n reverseLinkName: definition.reverseLinkName,\n innerWhere,\n } as LinkedFilter<Q>);\n }\n return result;\n}\n\n/** Splits values into non-empty and empty, returning $isNull for empty strings. */\nfunction buildValueOrNullFilter(\n values: (string | number | boolean)[],\n): PropertyFilter | CompoundFilter | undefined {\n if (values.length === 0) {\n return undefined;\n }\n\n const nonEmpty = values.filter((v) => v !== \"\");\n const hasEmpty = nonEmpty.length < values.length;\n\n const valueClause: PropertyFilter | undefined = nonEmpty.length === 0\n ? undefined\n : nonEmpty.length === 1\n ? nonEmpty[0]\n : { $in: nonEmpty };\n\n if (!hasEmpty) {\n return valueClause;\n }\n\n if (valueClause === undefined) {\n return { $isNull: true };\n }\n\n return {\n __compound: true,\n conditions: [valueClause],\n includeNull: true,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,6 +14,18 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Unwraps a `linkedProperty` wrapper one level so callers can reason about the
|
|
19
|
+
* underlying filter state directly (e.g. for header controls that should
|
|
20
|
+
* follow the inner filter's capabilities).
|
|
21
|
+
*/
|
|
22
|
+
export function getEffectiveFilterState(state) {
|
|
23
|
+
if (state?.type === "linkedProperty") {
|
|
24
|
+
return state.linkedFilterState;
|
|
25
|
+
}
|
|
26
|
+
return state;
|
|
27
|
+
}
|
|
28
|
+
|
|
17
29
|
/** Returns true for filter state types that support in-filter search. */
|
|
18
30
|
export function supportsSearch(state) {
|
|
19
31
|
if (!state) {
|
|
@@ -111,14 +123,148 @@ export function dedupeEmptyAggregationRows(values) {
|
|
|
111
123
|
/** Case-insensitive substring filter for search functionality. */
|
|
112
124
|
export function filterValuesBySearch(values, searchValue, getValue) {
|
|
113
125
|
const trimmed = searchValue.trim();
|
|
114
|
-
if (!trimmed)
|
|
126
|
+
if (!trimmed) {
|
|
127
|
+
return values;
|
|
128
|
+
}
|
|
115
129
|
const lowerSearch = trimmed.toLowerCase();
|
|
116
130
|
return values.filter(v => getValue(v).toLowerCase().includes(lowerSearch));
|
|
117
131
|
}
|
|
118
132
|
|
|
133
|
+
/**
|
|
134
|
+
* Returns a "cleared" version of the given filter state, preserving the
|
|
135
|
+
* discriminator and `isExcluding` flag so the UI doesn't snap between filter
|
|
136
|
+
* modes when a user clicks "Clear all selections". Returns `undefined` if no
|
|
137
|
+
* cleared form is meaningful for the state shape.
|
|
138
|
+
*/
|
|
139
|
+
export function clearFilterState(state) {
|
|
140
|
+
if (!state) {
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
switch (state.type) {
|
|
144
|
+
case "SELECT":
|
|
145
|
+
return {
|
|
146
|
+
type: "SELECT",
|
|
147
|
+
selectedValues: [],
|
|
148
|
+
isExcluding: state.isExcluding
|
|
149
|
+
};
|
|
150
|
+
case "EXACT_MATCH":
|
|
151
|
+
return {
|
|
152
|
+
type: "EXACT_MATCH",
|
|
153
|
+
values: [],
|
|
154
|
+
isExcluding: state.isExcluding
|
|
155
|
+
};
|
|
156
|
+
case "CONTAINS_TEXT":
|
|
157
|
+
return {
|
|
158
|
+
type: "CONTAINS_TEXT",
|
|
159
|
+
value: undefined,
|
|
160
|
+
isExcluding: state.isExcluding
|
|
161
|
+
};
|
|
162
|
+
case "NUMBER_RANGE":
|
|
163
|
+
return {
|
|
164
|
+
type: "NUMBER_RANGE",
|
|
165
|
+
minValue: undefined,
|
|
166
|
+
maxValue: undefined,
|
|
167
|
+
includeNull: false
|
|
168
|
+
};
|
|
169
|
+
case "DATE_RANGE":
|
|
170
|
+
return {
|
|
171
|
+
type: "DATE_RANGE",
|
|
172
|
+
minValue: undefined,
|
|
173
|
+
maxValue: undefined,
|
|
174
|
+
includeNull: false
|
|
175
|
+
};
|
|
176
|
+
case "TIMELINE":
|
|
177
|
+
return {
|
|
178
|
+
type: "TIMELINE",
|
|
179
|
+
startDate: undefined,
|
|
180
|
+
endDate: undefined,
|
|
181
|
+
isExcluding: state.isExcluding
|
|
182
|
+
};
|
|
183
|
+
case "TOGGLE":
|
|
184
|
+
return {
|
|
185
|
+
type: "TOGGLE",
|
|
186
|
+
enabled: false
|
|
187
|
+
};
|
|
188
|
+
case "hasLink":
|
|
189
|
+
return {
|
|
190
|
+
type: "hasLink",
|
|
191
|
+
hasLink: false
|
|
192
|
+
};
|
|
193
|
+
case "keywordSearch":
|
|
194
|
+
return {
|
|
195
|
+
type: "keywordSearch",
|
|
196
|
+
searchTerm: "",
|
|
197
|
+
operator: state.operator
|
|
198
|
+
};
|
|
199
|
+
case "linkedProperty":
|
|
200
|
+
{
|
|
201
|
+
const innerCleared = clearFilterState(state.linkedFilterState);
|
|
202
|
+
if (!innerCleared) {
|
|
203
|
+
return undefined;
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
type: "linkedProperty",
|
|
207
|
+
linkedFilterState: innerCleared
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
case "custom":
|
|
211
|
+
return undefined;
|
|
212
|
+
default:
|
|
213
|
+
{
|
|
214
|
+
return undefined;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Returns the state with `isExcluding` flipped, preserving the discriminator
|
|
221
|
+
* and unwrapping/re-wrapping any `linkedProperty` wrapper. Returns `undefined`
|
|
222
|
+
* if the wrapped state is one that does not support excluding.
|
|
223
|
+
*/
|
|
224
|
+
export function toggleIsExcluding(state) {
|
|
225
|
+
if (state.type === "linkedProperty") {
|
|
226
|
+
const inner = state.linkedFilterState;
|
|
227
|
+
return {
|
|
228
|
+
type: "linkedProperty",
|
|
229
|
+
linkedFilterState: {
|
|
230
|
+
...inner,
|
|
231
|
+
isExcluding: !inner.isExcluding
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
if (!supportsExcluding(state)) {
|
|
236
|
+
return undefined;
|
|
237
|
+
}
|
|
238
|
+
return {
|
|
239
|
+
...state,
|
|
240
|
+
isExcluding: !state.isExcluding
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Returns the number of values the user has actively selected for filters
|
|
246
|
+
* whose UI surfaces a selected-of-total count (LISTOGRAM, SINGLE_SELECT,
|
|
247
|
+
* MULTI_SELECT, TEXT_TAGS). Returns 0 for state shapes that don't have a
|
|
248
|
+
* discrete list of selected values.
|
|
249
|
+
*/
|
|
250
|
+
export function getSelectedCount(state) {
|
|
251
|
+
if (!state) {
|
|
252
|
+
return 0;
|
|
253
|
+
}
|
|
254
|
+
if (state.type === "EXACT_MATCH") {
|
|
255
|
+
return state.values.length;
|
|
256
|
+
}
|
|
257
|
+
if (state.type === "SELECT") {
|
|
258
|
+
return state.selectedValues.length;
|
|
259
|
+
}
|
|
260
|
+
return 0;
|
|
261
|
+
}
|
|
262
|
+
|
|
119
263
|
/** Check if a filter state has an active (non-empty) value. */
|
|
120
264
|
export function filterHasActiveState(state) {
|
|
121
|
-
if (!state)
|
|
265
|
+
if (!state) {
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
122
268
|
switch (state.type) {
|
|
123
269
|
case "SELECT":
|
|
124
270
|
return state.selectedValues.length > 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterValues.js","names":["supportsSearch","state","type","supportsExcluding","isEmptyValue","value","dedupeEmptyAggregationRows","values","out","emptyCount","firstEmptyIndex","v","length","count","push","splice","isNull","filterValuesBySearch","searchValue","getValue","trimmed","trim","lowerSearch","toLowerCase","filter","includes","filterHasActiveState","selectedValues","undefined","minValue","maxValue","includeNull","enabled","hasLink","linkedFilterState","searchTerm","startDate","endDate"],"sources":["filterValues.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport type { PropertyAggregationValue } from \"../types/AggregationTypes.js\";\n\n/** Returns true for filter state types that support in-filter search. */\nexport function supportsSearch(state: FilterState | undefined): boolean {\n if (!state) {\n return false;\n }\n switch (state.type) {\n case \"SELECT\":\n case \"EXACT_MATCH\":\n return true;\n case \"CONTAINS_TEXT\":\n case \"NUMBER_RANGE\":\n case \"DATE_RANGE\":\n case \"TOGGLE\":\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"TIMELINE\":\n case \"custom\":\n return false;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n\n/** Returns true for filter state types that support isExcluding. */\nexport function supportsExcluding(state: FilterState | undefined): boolean {\n if (!state) {\n return false;\n }\n switch (state.type) {\n case \"SELECT\":\n case \"EXACT_MATCH\":\n case \"CONTAINS_TEXT\":\n case \"TIMELINE\":\n return true;\n case \"NUMBER_RANGE\":\n case \"DATE_RANGE\":\n case \"TOGGLE\":\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"custom\":\n return false;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n\n/**\n * Returns true if the given value should render as a \"No value\" placeholder\n * in dropdown options, listogram buckets, and tag chips.\n *\n * Whitespace-only strings (e.g. \" \", \"\\t\") are real values and remain\n * distinct from \"No value\".\n */\nexport function isEmptyValue(value: string | null | undefined): boolean {\n return value == null || value === \"\";\n}\n\n/**\n * Merges every null/undefined/empty-string aggregation row into a single\n * \"No value\" bucket placed at the position of the first empty row encountered.\n * Backends sometimes return separate rows for null, undefined, and \"\"; this\n * collapses them so consumers (listogram, dropdown, multi-select) all see one\n * canonical row.\n */\nexport function dedupeEmptyAggregationRows(\n values: PropertyAggregationValue[],\n): PropertyAggregationValue[] {\n const out: PropertyAggregationValue[] = [];\n let emptyCount = 0;\n let firstEmptyIndex = -1;\n for (const v of values) {\n if (isEmptyValue(v.value)) {\n if (firstEmptyIndex === -1) {\n firstEmptyIndex = out.length;\n }\n emptyCount += v.count;\n } else {\n out.push(v);\n }\n }\n if (firstEmptyIndex >= 0 && emptyCount > 0) {\n out.splice(firstEmptyIndex, 0, {\n value: \"\",\n count: emptyCount,\n isNull: true,\n });\n }\n return out;\n}\n\n/** Case-insensitive substring filter for search functionality. */\nexport function filterValuesBySearch<T>(\n values: T[],\n searchValue: string,\n getValue: (item: T) => string,\n): T[] {\n const trimmed = searchValue.trim();\n if (!trimmed) return values;\n const lowerSearch = trimmed.toLowerCase();\n return values.filter((v) => getValue(v).toLowerCase().includes(lowerSearch));\n}\n\n/** Check if a filter state has an active (non-empty) value. */\nexport function filterHasActiveState(state: FilterState | undefined): boolean {\n if (!state) return false;\n\n switch (state.type) {\n case \"SELECT\":\n return state.selectedValues.length > 0;\n case \"EXACT_MATCH\":\n return state.values.length > 0;\n case \"CONTAINS_TEXT\":\n return state.value !== undefined && state.value !== \"\";\n case \"NUMBER_RANGE\":\n return state.minValue !== undefined || state.maxValue !== undefined\n || state.includeNull === true;\n case \"DATE_RANGE\":\n return state.minValue !== undefined || state.maxValue !== undefined\n || state.includeNull === true;\n case \"TOGGLE\":\n return state.enabled;\n case \"hasLink\":\n return state.hasLink;\n case \"linkedProperty\":\n return filterHasActiveState(state.linkedFilterState);\n case \"keywordSearch\":\n return state.searchTerm !== undefined && state.searchTerm !== \"\";\n case \"TIMELINE\":\n return state.startDate !== undefined || state.endDate !== undefined;\n case \"custom\":\n return true;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"filterValues.js","names":["getEffectiveFilterState","state","type","linkedFilterState","supportsSearch","supportsExcluding","isEmptyValue","value","dedupeEmptyAggregationRows","values","out","emptyCount","firstEmptyIndex","v","length","count","push","splice","isNull","filterValuesBySearch","searchValue","getValue","trimmed","trim","lowerSearch","toLowerCase","filter","includes","clearFilterState","undefined","selectedValues","isExcluding","minValue","maxValue","includeNull","startDate","endDate","enabled","hasLink","searchTerm","operator","innerCleared","toggleIsExcluding","inner","getSelectedCount","filterHasActiveState"],"sources":["filterValues.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport type { PropertyAggregationValue } from \"../types/AggregationTypes.js\";\n\n/**\n * Unwraps a `linkedProperty` wrapper one level so callers can reason about the\n * underlying filter state directly (e.g. for header controls that should\n * follow the inner filter's capabilities).\n */\nexport function getEffectiveFilterState(\n state: FilterState | undefined,\n): FilterState | undefined {\n if (state?.type === \"linkedProperty\") {\n return state.linkedFilterState;\n }\n return state;\n}\n\n/** Returns true for filter state types that support in-filter search. */\nexport function supportsSearch(state: FilterState | undefined): boolean {\n if (!state) {\n return false;\n }\n switch (state.type) {\n case \"SELECT\":\n case \"EXACT_MATCH\":\n return true;\n case \"CONTAINS_TEXT\":\n case \"NUMBER_RANGE\":\n case \"DATE_RANGE\":\n case \"TOGGLE\":\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"TIMELINE\":\n case \"custom\":\n return false;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n\n/** Returns true for filter state types that support isExcluding. */\nexport function supportsExcluding(state: FilterState | undefined): boolean {\n if (!state) {\n return false;\n }\n switch (state.type) {\n case \"SELECT\":\n case \"EXACT_MATCH\":\n case \"CONTAINS_TEXT\":\n case \"TIMELINE\":\n return true;\n case \"NUMBER_RANGE\":\n case \"DATE_RANGE\":\n case \"TOGGLE\":\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"custom\":\n return false;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n\n/**\n * Returns true if the given value should render as a \"No value\" placeholder\n * in dropdown options, listogram buckets, and tag chips.\n *\n * Whitespace-only strings (e.g. \" \", \"\\t\") are real values and remain\n * distinct from \"No value\".\n */\nexport function isEmptyValue(value: string | null | undefined): boolean {\n return value == null || value === \"\";\n}\n\n/**\n * Merges every null/undefined/empty-string aggregation row into a single\n * \"No value\" bucket placed at the position of the first empty row encountered.\n * Backends sometimes return separate rows for null, undefined, and \"\"; this\n * collapses them so consumers (listogram, dropdown, multi-select) all see one\n * canonical row.\n */\nexport function dedupeEmptyAggregationRows(\n values: PropertyAggregationValue[],\n): PropertyAggregationValue[] {\n const out: PropertyAggregationValue[] = [];\n let emptyCount = 0;\n let firstEmptyIndex = -1;\n for (const v of values) {\n if (isEmptyValue(v.value)) {\n if (firstEmptyIndex === -1) {\n firstEmptyIndex = out.length;\n }\n emptyCount += v.count;\n } else {\n out.push(v);\n }\n }\n if (firstEmptyIndex >= 0 && emptyCount > 0) {\n out.splice(firstEmptyIndex, 0, {\n value: \"\",\n count: emptyCount,\n isNull: true,\n });\n }\n return out;\n}\n\n/** Case-insensitive substring filter for search functionality. */\nexport function filterValuesBySearch<T>(\n values: T[],\n searchValue: string,\n getValue: (item: T) => string,\n): T[] {\n const trimmed = searchValue.trim();\n if (!trimmed) {\n return values;\n }\n const lowerSearch = trimmed.toLowerCase();\n return values.filter((v) => getValue(v).toLowerCase().includes(lowerSearch));\n}\n\n/**\n * Returns a \"cleared\" version of the given filter state, preserving the\n * discriminator and `isExcluding` flag so the UI doesn't snap between filter\n * modes when a user clicks \"Clear all selections\". Returns `undefined` if no\n * cleared form is meaningful for the state shape.\n */\nexport function clearFilterState(\n state: FilterState | undefined,\n): FilterState | undefined {\n if (!state) {\n return undefined;\n }\n switch (state.type) {\n case \"SELECT\":\n return {\n type: \"SELECT\",\n selectedValues: [],\n isExcluding: state.isExcluding,\n };\n case \"EXACT_MATCH\":\n return {\n type: \"EXACT_MATCH\",\n values: [],\n isExcluding: state.isExcluding,\n };\n case \"CONTAINS_TEXT\":\n return {\n type: \"CONTAINS_TEXT\",\n value: undefined,\n isExcluding: state.isExcluding,\n };\n case \"NUMBER_RANGE\":\n return {\n type: \"NUMBER_RANGE\",\n minValue: undefined,\n maxValue: undefined,\n includeNull: false,\n };\n case \"DATE_RANGE\":\n return {\n type: \"DATE_RANGE\",\n minValue: undefined,\n maxValue: undefined,\n includeNull: false,\n };\n case \"TIMELINE\":\n return {\n type: \"TIMELINE\",\n startDate: undefined,\n endDate: undefined,\n isExcluding: state.isExcluding,\n };\n case \"TOGGLE\":\n return { type: \"TOGGLE\", enabled: false };\n case \"hasLink\":\n return { type: \"hasLink\", hasLink: false };\n case \"keywordSearch\":\n return {\n type: \"keywordSearch\",\n searchTerm: \"\",\n operator: state.operator,\n };\n case \"linkedProperty\": {\n const innerCleared = clearFilterState(state.linkedFilterState);\n if (!innerCleared) {\n return undefined;\n }\n return { type: \"linkedProperty\", linkedFilterState: innerCleared };\n }\n case \"custom\":\n return undefined;\n default: {\n const _exhaustive: never = state;\n return undefined;\n }\n }\n}\n\n/**\n * Returns the state with `isExcluding` flipped, preserving the discriminator\n * and unwrapping/re-wrapping any `linkedProperty` wrapper. Returns `undefined`\n * if the wrapped state is one that does not support excluding.\n */\nexport function toggleIsExcluding(\n state: FilterState,\n): FilterState | undefined {\n if (state.type === \"linkedProperty\") {\n const inner = state.linkedFilterState;\n return {\n type: \"linkedProperty\",\n linkedFilterState: { ...inner, isExcluding: !inner.isExcluding },\n };\n }\n if (!supportsExcluding(state)) {\n return undefined;\n }\n return { ...state, isExcluding: !state.isExcluding };\n}\n\n/**\n * Returns the number of values the user has actively selected for filters\n * whose UI surfaces a selected-of-total count (LISTOGRAM, SINGLE_SELECT,\n * MULTI_SELECT, TEXT_TAGS). Returns 0 for state shapes that don't have a\n * discrete list of selected values.\n */\nexport function getSelectedCount(state: FilterState | undefined): number {\n if (!state) {\n return 0;\n }\n if (state.type === \"EXACT_MATCH\") {\n return state.values.length;\n }\n if (state.type === \"SELECT\") {\n return state.selectedValues.length;\n }\n return 0;\n}\n\n/** Check if a filter state has an active (non-empty) value. */\nexport function filterHasActiveState(state: FilterState | undefined): boolean {\n if (!state) {\n return false;\n }\n\n switch (state.type) {\n case \"SELECT\":\n return state.selectedValues.length > 0;\n case \"EXACT_MATCH\":\n return state.values.length > 0;\n case \"CONTAINS_TEXT\":\n return state.value !== undefined && state.value !== \"\";\n case \"NUMBER_RANGE\":\n return state.minValue !== undefined || state.maxValue !== undefined\n || state.includeNull === true;\n case \"DATE_RANGE\":\n return state.minValue !== undefined || state.maxValue !== undefined\n || state.includeNull === true;\n case \"TOGGLE\":\n return state.enabled;\n case \"hasLink\":\n return state.hasLink;\n case \"linkedProperty\":\n return filterHasActiveState(state.linkedFilterState);\n case \"keywordSearch\":\n return state.searchTerm !== undefined && state.searchTerm !== \"\";\n case \"TIMELINE\":\n return state.startDate !== undefined || state.endDate !== undefined;\n case \"custom\":\n return true;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 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
|
+
export function narrowObjectSet(objectSet, whereClause, linkedFilters) {
|
|
18
|
+
let narrowed = Object.keys(whereClause).length === 0 ? objectSet : objectSet.where(whereClause);
|
|
19
|
+
for (const filter of linkedFilters) {
|
|
20
|
+
narrowed = narrowed.intersect(applyLinkedFilter(narrowed, filter));
|
|
21
|
+
}
|
|
22
|
+
return narrowed;
|
|
23
|
+
}
|
|
24
|
+
function applyLinkedFilter(base, filter) {
|
|
25
|
+
// reverseLinkName's pointing back to Q is a semantic invariant we can't encode
|
|
26
|
+
// in the type system, so the final result is cast to ObjectSet<Q>.
|
|
27
|
+
return base.pivotTo(filter.linkName).where(filter.innerWhere).pivotTo(filter.reverseLinkName);
|
|
28
|
+
}
|
|
29
|
+
export function computeDualScopes(objectSet, whereClause, linkedFilters, showFilteredOutValues) {
|
|
30
|
+
if (objectSet == null) {
|
|
31
|
+
return {
|
|
32
|
+
scoped: undefined,
|
|
33
|
+
emptySource: undefined
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const scoped = narrowObjectSet(objectSet, whereClause, linkedFilters);
|
|
37
|
+
if (!showFilteredOutValues || linkedFilters.length === 0) {
|
|
38
|
+
return {
|
|
39
|
+
scoped,
|
|
40
|
+
emptySource: undefined
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
scoped,
|
|
45
|
+
emptySource: narrowObjectSet(objectSet, whereClause, [])
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=narrowObjectSet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"narrowObjectSet.js","names":["narrowObjectSet","objectSet","whereClause","linkedFilters","narrowed","Object","keys","length","where","filter","intersect","applyLinkedFilter","base","pivotTo","linkName","innerWhere","reverseLinkName","computeDualScopes","showFilteredOutValues","scoped","undefined","emptySource"],"sources":["narrowObjectSet.ts"],"sourcesContent":["/*\n * Copyright 2026 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 { LinkedFilter } from \"../types/LinkedFilterTypes.js\";\n\nexport function narrowObjectSet<Q extends ObjectTypeDefinition>(\n objectSet: ObjectSet<Q>,\n whereClause: WhereClause<Q>,\n linkedFilters: ReadonlyArray<LinkedFilter<Q>>,\n): ObjectSet<Q> {\n let narrowed = Object.keys(whereClause).length === 0\n ? objectSet\n : objectSet.where(whereClause);\n for (const filter of linkedFilters) {\n narrowed = narrowed.intersect(applyLinkedFilter(narrowed, filter));\n }\n return narrowed;\n}\n\nfunction applyLinkedFilter<Q extends ObjectTypeDefinition>(\n base: ObjectSet<Q>,\n filter: LinkedFilter<Q>,\n): ObjectSet<Q> {\n // reverseLinkName's pointing back to Q is a semantic invariant we can't encode\n // in the type system, so the final result is cast to ObjectSet<Q>.\n return base\n .pivotTo(filter.linkName)\n .where(filter.innerWhere)\n .pivotTo(filter.reverseLinkName) as ObjectSet<Q>;\n}\n\nexport function computeDualScopes<Q extends ObjectTypeDefinition>(\n objectSet: ObjectSet<Q> | undefined,\n whereClause: WhereClause<Q>,\n linkedFilters: ReadonlyArray<LinkedFilter<Q>>,\n showFilteredOutValues: boolean | undefined,\n): {\n scoped: ObjectSet<Q> | undefined;\n emptySource: ObjectSet<Q> | undefined;\n} {\n if (objectSet == null) {\n return { scoped: undefined, emptySource: undefined };\n }\n const scoped = narrowObjectSet(objectSet, whereClause, linkedFilters);\n if (!showFilteredOutValues || linkedFilters.length === 0) {\n return { scoped, emptySource: undefined };\n }\n return { scoped, emptySource: narrowObjectSet(objectSet, whereClause, []) };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA,OAAO,SAASA,eAAeA,CAC7BC,SAAuB,EACvBC,WAA2B,EAC3BC,aAA6C,EAC/B;EACd,IAAIC,QAAQ,GAAGC,MAAM,CAACC,IAAI,CAACJ,WAAW,CAAC,CAACK,MAAM,KAAK,CAAC,GAChDN,SAAS,GACTA,SAAS,CAACO,KAAK,CAACN,WAAW,CAAC;EAChC,KAAK,MAAMO,MAAM,IAAIN,aAAa,EAAE;IAClCC,QAAQ,GAAGA,QAAQ,CAACM,SAAS,CAACC,iBAAiB,CAACP,QAAQ,EAAEK,MAAM,CAAC,CAAC;EACpE;EACA,OAAOL,QAAQ;AACjB;AAEA,SAASO,iBAAiBA,CACxBC,IAAkB,EAClBH,MAAuB,EACT;EACd;EACA;EACA,OAAOG,IAAI,CACRC,OAAO,CAACJ,MAAM,CAACK,QAAQ,CAAC,CACxBN,KAAK,CAACC,MAAM,CAACM,UAAU,CAAC,CACxBF,OAAO,CAACJ,MAAM,CAACO,eAAe,CAAC;AACpC;AAEA,OAAO,SAASC,iBAAiBA,CAC/BhB,SAAmC,EACnCC,WAA2B,EAC3BC,aAA6C,EAC7Ce,qBAA0C,EAI1C;EACA,IAAIjB,SAAS,IAAI,IAAI,EAAE;IACrB,OAAO;MAAEkB,MAAM,EAAEC,SAAS;MAAEC,WAAW,EAAED;IAAU,CAAC;EACtD;EACA,MAAMD,MAAM,GAAGnB,eAAe,CAACC,SAAS,EAAEC,WAAW,EAAEC,aAAa,CAAC;EACrE,IAAI,CAACe,qBAAqB,IAAIf,aAAa,CAACI,MAAM,KAAK,CAAC,EAAE;IACxD,OAAO;MAAEY,MAAM;MAAEE,WAAW,EAAED;IAAU,CAAC;EAC3C;EACA,OAAO;IAAED,MAAM;IAAEE,WAAW,EAAErB,eAAe,CAACC,SAAS,EAAEC,WAAW,EAAE,EAAE;EAAE,CAAC;AAC7E","ignoreList":[]}
|
|
@@ -26,4 +26,5 @@ export { filterHasActiveState } from "../../filter-list/utils/filterValues.js";
|
|
|
26
26
|
export { getFilterKey } from "../../filter-list/utils/getFilterKey.js";
|
|
27
27
|
export { getFilterLabel } from "../../filter-list/utils/getFilterLabel.js";
|
|
28
28
|
export { summarizeFilterValue } from "../../filter-list/utils/summarizeFilterValue.js";
|
|
29
|
+
export { narrowObjectSet } from "../../filter-list/utils/narrowObjectSet.js";
|
|
29
30
|
//# sourceMappingURL=filter-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-list.js","names":["BaseFilterList","FilterList","_FilterList","withOsdkMetrics","deserializeFilterStates","serializeFilterStates","FilterPopover","FilterInput","useFilterListState","filterHasActiveState","getFilterKey","getFilterLabel","summarizeFilterValue"],"sources":["filter-list.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\nexport { BaseFilterList } from \"../../filter-list/base/BaseFilterList.js\";\nexport type {\n BaseFilterListProps,\n RenderFilterInput,\n} from \"../../filter-list/base/BaseFilterListApi.js\";\nimport { FilterList as _FilterList } from \"../../filter-list/FilterList.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const FilterList: typeof _FilterList = withOsdkMetrics(\n _FilterList,\n \"FilterList\",\n);\n\nexport type {\n FilterDefinitionUnion,\n FilterListProps,\n} from \"../../filter-list/FilterListApi.js\";\nexport type {\n FilterComponentType,\n FilterListItemProps,\n FilterState,\n PropertyFilterDefinition,\n} from \"../../filter-list/FilterListItemApi.js\";\nexport {\n deserializeFilterStates,\n serializeFilterStates,\n} from \"../../filter-list/utils/filterStateSerialization.js\";\n\nexport { FilterPopover } from \"../../filter-list/base/FilterPopover.js\";\nexport type { FilterPopoverProps } from \"../../filter-list/base/FilterPopover.js\";\n\nexport { FilterInput } from \"../../filter-list/FilterInput.js\";\nexport type { FilterInputProps } from \"../../filter-list/FilterInput.js\";\n\nexport { useFilterListState } from \"../../filter-list/hooks/useFilterListState.js\";\nexport type { UseFilterListStateResult } from \"../../filter-list/hooks/useFilterListState.js\";\n\nexport { filterHasActiveState } from \"../../filter-list/utils/filterValues.js\";\nexport { getFilterKey } from \"../../filter-list/utils/getFilterKey.js\";\nexport { getFilterLabel } from \"../../filter-list/utils/getFilterLabel.js\";\nexport { summarizeFilterValue } from \"../../filter-list/utils/summarizeFilterValue.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,cAAc,QAAQ,0CAA0C;AAKzE,SAASC,UAAU,IAAIC,WAAW,QAAQ,iCAAiC;AAC3E,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,UAA8B,GAAGE,eAAe,CAC3DD,WAAW,EACX,YACF,CAAC;
|
|
1
|
+
{"version":3,"file":"filter-list.js","names":["BaseFilterList","FilterList","_FilterList","withOsdkMetrics","deserializeFilterStates","serializeFilterStates","FilterPopover","FilterInput","useFilterListState","filterHasActiveState","getFilterKey","getFilterLabel","summarizeFilterValue","narrowObjectSet"],"sources":["filter-list.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\nexport { BaseFilterList } from \"../../filter-list/base/BaseFilterList.js\";\nexport type {\n BaseFilterListProps,\n RenderFilterInput,\n} from \"../../filter-list/base/BaseFilterListApi.js\";\nimport { FilterList as _FilterList } from \"../../filter-list/FilterList.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const FilterList: typeof _FilterList = withOsdkMetrics(\n _FilterList,\n \"FilterList\",\n);\n\nexport type {\n FilterDefinitionUnion,\n FilterListProps,\n} from \"../../filter-list/FilterListApi.js\";\nexport type {\n FilterComponentType,\n FilterDefinitionControls,\n FilterListItemProps,\n FilterState,\n PropertyFilterDefinition,\n} from \"../../filter-list/FilterListItemApi.js\";\nexport {\n deserializeFilterStates,\n serializeFilterStates,\n} from \"../../filter-list/utils/filterStateSerialization.js\";\n\nexport { FilterPopover } from \"../../filter-list/base/FilterPopover.js\";\nexport type { FilterPopoverProps } from \"../../filter-list/base/FilterPopover.js\";\n\nexport { FilterInput } from \"../../filter-list/FilterInput.js\";\nexport type { FilterInputProps } from \"../../filter-list/FilterInput.js\";\n\nexport { useFilterListState } from \"../../filter-list/hooks/useFilterListState.js\";\nexport type { UseFilterListStateResult } from \"../../filter-list/hooks/useFilterListState.js\";\n\nexport { filterHasActiveState } from \"../../filter-list/utils/filterValues.js\";\nexport { getFilterKey } from \"../../filter-list/utils/getFilterKey.js\";\nexport { getFilterLabel } from \"../../filter-list/utils/getFilterLabel.js\";\nexport { summarizeFilterValue } from \"../../filter-list/utils/summarizeFilterValue.js\";\n\nexport type { LinkedFilter } from \"../../filter-list/types/LinkedFilterTypes.js\";\nexport { narrowObjectSet } from \"../../filter-list/utils/narrowObjectSet.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,cAAc,QAAQ,0CAA0C;AAKzE,SAASC,UAAU,IAAIC,WAAW,QAAQ,iCAAiC;AAC3E,SAASC,eAAe,QAAQ,+BAA+B;AAC/D,OAAO,MAAMF,UAA8B,GAAGE,eAAe,CAC3DD,WAAW,EACX,YACF,CAAC;AAaD,SACEE,uBAAuB,EACvBC,qBAAqB,QAChB,qDAAqD;AAE5D,SAASC,aAAa,QAAQ,yCAAyC;AAGvE,SAASC,WAAW,QAAQ,kCAAkC;AAG9D,SAASC,kBAAkB,QAAQ,+CAA+C;AAGlF,SAASC,oBAAoB,QAAQ,yCAAyC;AAC9E,SAASC,YAAY,QAAQ,yCAAyC;AACtE,SAASC,cAAc,QAAQ,2CAA2C;AAC1E,SAASC,oBAAoB,QAAQ,iDAAiD;AAGtF,SAASC,eAAe,QAAQ,4CAA4C","ignoreList":[]}
|
|
@@ -22,6 +22,11 @@
|
|
|
22
22
|
--osdk-filter-list-empty-text-color: var(--osdk-typography-color-muted);
|
|
23
23
|
--osdk-filter-list-empty-font-size: var(--osdk-typography-size-body-small);
|
|
24
24
|
|
|
25
|
+
/* Filtered-out entries: values present in the wider scope but absent from
|
|
26
|
+
the narrowed scope. Rendered as count=0 muted rows. */
|
|
27
|
+
--osdk-filter-filtered-out-item-opacity: 0.5;
|
|
28
|
+
--osdk-filter-filtered-out-item-color: var(--osdk-typography-color-muted);
|
|
29
|
+
|
|
25
30
|
/* Filter List Header */
|
|
26
31
|
--osdk-filter-header-padding: calc(var(--osdk-surface-spacing) * 2)
|
|
27
32
|
calc(var(--osdk-surface-spacing) * 3);
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
const PACKAGE_USER_AGENT = `osdk-react-components/${"0.19.0"}`;
|
|
17
|
+
const PACKAGE_USER_AGENT = `osdk-react-components/${"0.19.1-beta.0"}`;
|
|
18
18
|
export function componentUserAgent(componentName) {
|
|
19
19
|
return `${PACKAGE_USER_AGENT}/${componentName}`;
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserAgent.js","names":["PACKAGE_USER_AGENT","componentUserAgent","componentName"],"sources":["UserAgent.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\nconst PACKAGE_USER_AGENT =\n `osdk-react-components/${process.env.PACKAGE_VERSION}`;\n\nexport function componentUserAgent(componentName: string): string {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,kBAAkB,GACtB,
|
|
1
|
+
{"version":3,"file":"UserAgent.js","names":["PACKAGE_USER_AGENT","componentUserAgent","componentName"],"sources":["UserAgent.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\nconst PACKAGE_USER_AGENT =\n `osdk-react-components/${process.env.PACKAGE_VERSION}`;\n\nexport function componentUserAgent(componentName: string): string {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,kBAAkB,GACtB,0CAAsD;AAExD,OAAO,SAASC,kBAAkBA,CAACC,aAAqB,EAAU;EAChE,OAAO,GAAGF,kBAAkB,IAAIE,aAAa,EAAE;AACjD","ignoreList":[]}
|
|
@@ -411,7 +411,7 @@ export type FieldComponent = "DATE_RANGE_INPUT" | "DATETIME_PICKER" | "DROPDOWN"
|
|
|
411
411
|
* Describes the data type of a form field, independent of OSDK.
|
|
412
412
|
* Mirrors ActionMetadata.DataType to keep the rendering layer OSDK-agnostic.
|
|
413
413
|
*/
|
|
414
|
-
export type FieldType = "boolean" | "string" | "integer" | "long" | "double" | "datetime" | "timestamp" | "attachment" | "marking" | "mediaReference" | "objectType" | "geoshape" | "geohash" | {
|
|
414
|
+
export type FieldType = "boolean" | "string" | "integer" | "long" | "double" | "datetime" | "timestamp" | "attachment" | "marking" | "mediaReference" | "objectType" | "geoshape" | "geohash" | "scenarioReference" | {
|
|
415
415
|
type: "object"
|
|
416
416
|
object: string
|
|
417
417
|
} | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","names":["error: ValidationError","value: FieldValueType<Q, K>","item: V","a: V","b: V","query: string","props: BaseFormFieldProps<V>","value: V | null","value: unknown"],"sources":["../../../src/action-form/FormFieldApi.ts"],"version":3,"file":"FormFieldApi.d.ts"}
|
|
1
|
+
{"mappings":"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","names":["error: ValidationError","value: FieldValueType<Q, K>","item: V","a: V","b: V","query: string","props: BaseFormFieldProps<V>","value: V | null","value: unknown"],"sources":["../../../src/action-form/FormFieldApi.ts"],"version":3,"file":"FormFieldApi.d.ts"}
|
|
@@ -3,13 +3,18 @@ import React from "react";
|
|
|
3
3
|
import type { MultiSelectInputLayout } from "./base/inputs/MultiSelectInput.js";
|
|
4
4
|
import type { FilterDefinitionUnion } from "./FilterListApi.js";
|
|
5
5
|
import type { FilterState } from "./FilterListItemApi.js";
|
|
6
|
+
import type { LinkedFilter } from "./types/LinkedFilterTypes.js";
|
|
6
7
|
export interface FilterInputProps<Q extends ObjectTypeDefinition> {
|
|
7
8
|
objectType: Q;
|
|
8
9
|
objectSet?: ObjectSet<Q>;
|
|
9
10
|
definition: FilterDefinitionUnion<Q>;
|
|
10
11
|
filterState: FilterState | undefined;
|
|
11
12
|
onFilterStateChanged: (state: FilterState) => void;
|
|
13
|
+
/** Per-filter excluding-self where clause (direct filters only). */
|
|
12
14
|
whereClause: WhereClause<Q>;
|
|
15
|
+
/** Per-filter excluding-self linked-filter records. */
|
|
16
|
+
linkedFilters?: ReadonlyArray<LinkedFilter<Q>>;
|
|
17
|
+
showFilteredOutValues?: boolean;
|
|
13
18
|
searchQuery?: string;
|
|
14
19
|
excludeRowOpen?: boolean;
|
|
15
20
|
/**
|
|
@@ -21,6 +26,6 @@ export interface FilterInputProps<Q extends ObjectTypeDefinition> {
|
|
|
21
26
|
*/
|
|
22
27
|
layout?: MultiSelectInputLayout;
|
|
23
28
|
}
|
|
24
|
-
declare function FilterInputInner<Q extends ObjectTypeDefinition>({ objectType, objectSet, definition, filterState, onFilterStateChanged, whereClause, searchQuery, excludeRowOpen, layout }: FilterInputProps<Q>): React.ReactElement;
|
|
29
|
+
declare function FilterInputInner<Q extends ObjectTypeDefinition>({ objectType, objectSet, definition, filterState, onFilterStateChanged, whereClause, linkedFilters, showFilteredOutValues, searchQuery, excludeRowOpen, layout }: FilterInputProps<Q>): React.ReactElement;
|
|
25
30
|
export declare const FilterInput: typeof FilterInputInner;
|
|
26
31
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"AAgBA,cAAc,WAAW,sBAAsB,mBAAmB,WAAY;AAC9E,OAAO,WAAkC,OAAQ;AAEjD,cAAc,8BAA8B,mCAAoC;AAEhF,cAAc,6BAA6B,oBAAqB;AAChE,cAAc,mBAAmB,wBAAyB;
|
|
1
|
+
{"mappings":"AAgBA,cAAc,WAAW,sBAAsB,mBAAmB,WAAY;AAC9E,OAAO,WAAkC,OAAQ;AAEjD,cAAc,8BAA8B,mCAAoC;AAEhF,cAAc,6BAA6B,oBAAqB;AAChE,cAAc,mBAAmB,wBAAyB;AAI1D,cAAc,oBAAoB,8BAA+B;AAEjE,iBAAiB,iBAAiB,UAAU,sBAAsB;CAChE,YAAY;CACZ,YAAY,UAAU;CACtB,YAAY,sBAAsB;CAClC,aAAa;CACb,uBAAuBA,OAAO;;CAE9B,aAAa,YAAY;;CAEzB,gBAAgB,cAAc,aAAa;CAC3C;CACA;CACA;;;;;;;;CAQA,SAAS;AACV;AAED,iBAAS,iBAAiB,UAAU,sBAAsB,EACxD,YACA,WACA,YACA,aACA,sBACA,aACA,eACA,uBACA,aACA,gBACA,QACoB,EAAnB,iBAAiB,KAAK,MAAM;AA6F/B,OAAO,cAAM,oBAA+C","names":["state: FilterState"],"sources":["../../../src/filter-list/FilterInput.tsx"],"version":3,"file":"FilterInput.d.ts"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"AAgBA,cAAc,
|
|
1
|
+
{"mappings":"AAgBA,cAAc,4BAA4B,WAAY;AACtD,OAAO,WAAqC,OAAQ;AAKpD,cAGE,uBACK,oBAAqB;AAS5B,OAAO,iBAAS,WAAW,UAAU,sBACnCA,OAAO,gBAAgB,KACtB,MAAM","names":["props: FilterListProps<Q>"],"sources":["../../../src/filter-list/FilterList.tsx"],"version":3,"file":"FilterList.d.ts"}
|
|
@@ -46,12 +46,24 @@ export interface FilterListProps<Q extends ObjectTypeDefinition> {
|
|
|
46
46
|
*/
|
|
47
47
|
objectType: Q;
|
|
48
48
|
/**
|
|
49
|
-
* Optional object set to scope aggregation queries.
|
|
50
|
-
*
|
|
51
|
-
* When omitted, aggregations run against the full object type.
|
|
49
|
+
* Optional object set to scope aggregation queries. When omitted,
|
|
50
|
+
* aggregations run against the full object type.
|
|
52
51
|
*/
|
|
53
52
|
objectSet?: ObjectSet<Q>;
|
|
54
53
|
/**
|
|
54
|
+
* The current where clause to filter the objectSet.
|
|
55
|
+
* If provided, the filter clause is controlled.
|
|
56
|
+
* LINKED_PROPERTY filters are not included; use `onEffectiveObjectSet`.
|
|
57
|
+
*/
|
|
58
|
+
filterClause?: WhereClause<Q>;
|
|
59
|
+
/**
|
|
60
|
+
* Called when the filter clause changes.
|
|
61
|
+
* Required in controlled mode.
|
|
62
|
+
*
|
|
63
|
+
* @param newClause The updated filter clause
|
|
64
|
+
*/
|
|
65
|
+
onFilterClauseChanged?: (newClause: WhereClause<Q>) => void;
|
|
66
|
+
/**
|
|
55
67
|
* Optional title to display in the filter list header
|
|
56
68
|
*/
|
|
57
69
|
title?: ReactNode;
|
|
@@ -65,18 +77,6 @@ export interface FilterListProps<Q extends ObjectTypeDefinition> {
|
|
|
65
77
|
*/
|
|
66
78
|
filterDefinitions?: Array<FilterDefinitionUnion<Q>>;
|
|
67
79
|
/**
|
|
68
|
-
* The current where clause to filter the objectSet.
|
|
69
|
-
* If provided, the filter clause is controlled.
|
|
70
|
-
*/
|
|
71
|
-
filterClause?: WhereClause<Q>;
|
|
72
|
-
/**
|
|
73
|
-
* Called when the filter clause changes.
|
|
74
|
-
* Required in controlled mode.
|
|
75
|
-
*
|
|
76
|
-
* @param newClause The updated filter clause
|
|
77
|
-
*/
|
|
78
|
-
onFilterClauseChanged?: (newClause: WhereClause<Q>) => void;
|
|
79
|
-
/**
|
|
80
80
|
* Called when filter state changes
|
|
81
81
|
*
|
|
82
82
|
* @param definition The filter definition whose state changed
|
|
@@ -84,6 +84,21 @@ export interface FilterListProps<Q extends ObjectTypeDefinition> {
|
|
|
84
84
|
*/
|
|
85
85
|
onFilterStateChanged?: (definition: FilterDefinitionUnion<Q>, newState: FilterStateType) => void;
|
|
86
86
|
/**
|
|
87
|
+
* Called with the narrowed `ObjectSet` whenever filters change. Requires
|
|
88
|
+
* `objectSet` to be set.
|
|
89
|
+
*
|
|
90
|
+
* A linked filter only narrows the set when its definition has
|
|
91
|
+
* `reverseLinkName`. Linked filters without it are skipped here; read their
|
|
92
|
+
* state from `onFilterStateChanged` instead.
|
|
93
|
+
*/
|
|
94
|
+
onEffectiveObjectSet?: (objectSet: ObjectSet<Q>) => void;
|
|
95
|
+
/**
|
|
96
|
+
* When `true`, facets render greyed-out count=0 rows for values present in
|
|
97
|
+
* the unfiltered data but excluded by other active filters.
|
|
98
|
+
* @default false
|
|
99
|
+
*/
|
|
100
|
+
showFilteredOutValues?: boolean;
|
|
101
|
+
/**
|
|
87
102
|
* Controls how filter visibility (add/remove) is managed.
|
|
88
103
|
*
|
|
89
104
|
* - `"uncontrolled"` (default): FilterList manages visibility internally.
|