@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
|
@@ -6,7 +6,7 @@ var chunk4KC5U44T_cjs = require('./chunk-4KC5U44T.cjs');
|
|
|
6
6
|
var chunkJBRNNWYC_cjs = require('./chunk-JBRNNWYC.cjs');
|
|
7
7
|
var chunk7LXS66DW_cjs = require('./chunk-7LXS66DW.cjs');
|
|
8
8
|
var chunkUCTQICPR_cjs = require('./chunk-UCTQICPR.cjs');
|
|
9
|
-
var
|
|
9
|
+
var chunkNOONKE5X_cjs = require('./chunk-NOONKE5X.cjs');
|
|
10
10
|
var button = require('@base-ui/react/button');
|
|
11
11
|
var classnames3 = require('classnames');
|
|
12
12
|
var React13 = require('react');
|
|
@@ -133,6 +133,12 @@ var ErrorBoundary = class extends React13.Component {
|
|
|
133
133
|
};
|
|
134
134
|
|
|
135
135
|
// src/filter-list/utils/filterValues.ts
|
|
136
|
+
function getEffectiveFilterState(state) {
|
|
137
|
+
if (state?.type === "linkedProperty") {
|
|
138
|
+
return state.linkedFilterState;
|
|
139
|
+
}
|
|
140
|
+
return state;
|
|
141
|
+
}
|
|
136
142
|
function supportsSearch(state) {
|
|
137
143
|
if (!state) {
|
|
138
144
|
return false;
|
|
@@ -207,12 +213,47 @@ function dedupeEmptyAggregationRows(values) {
|
|
|
207
213
|
}
|
|
208
214
|
function filterValuesBySearch(values, searchValue, getValue) {
|
|
209
215
|
const trimmed = searchValue.trim();
|
|
210
|
-
if (!trimmed)
|
|
216
|
+
if (!trimmed) {
|
|
217
|
+
return values;
|
|
218
|
+
}
|
|
211
219
|
const lowerSearch = trimmed.toLowerCase();
|
|
212
220
|
return values.filter((v) => getValue(v).toLowerCase().includes(lowerSearch));
|
|
213
221
|
}
|
|
222
|
+
function toggleIsExcluding(state) {
|
|
223
|
+
if (state.type === "linkedProperty") {
|
|
224
|
+
const inner = state.linkedFilterState;
|
|
225
|
+
return {
|
|
226
|
+
type: "linkedProperty",
|
|
227
|
+
linkedFilterState: {
|
|
228
|
+
...inner,
|
|
229
|
+
isExcluding: !inner.isExcluding
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
if (!supportsExcluding(state)) {
|
|
234
|
+
return void 0;
|
|
235
|
+
}
|
|
236
|
+
return {
|
|
237
|
+
...state,
|
|
238
|
+
isExcluding: !state.isExcluding
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
function getSelectedCount(state) {
|
|
242
|
+
if (!state) {
|
|
243
|
+
return 0;
|
|
244
|
+
}
|
|
245
|
+
if (state.type === "EXACT_MATCH") {
|
|
246
|
+
return state.values.length;
|
|
247
|
+
}
|
|
248
|
+
if (state.type === "SELECT") {
|
|
249
|
+
return state.selectedValues.length;
|
|
250
|
+
}
|
|
251
|
+
return 0;
|
|
252
|
+
}
|
|
214
253
|
function filterHasActiveState(state) {
|
|
215
|
-
if (!state)
|
|
254
|
+
if (!state) {
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
216
257
|
switch (state.type) {
|
|
217
258
|
case "SELECT":
|
|
218
259
|
return state.selectedValues.length > 0;
|
|
@@ -288,37 +329,6 @@ function _extends() {
|
|
|
288
329
|
return n;
|
|
289
330
|
}, _extends.apply(null, arguments);
|
|
290
331
|
}
|
|
291
|
-
function hasActiveSelection(filterState) {
|
|
292
|
-
if (filterState == null) {
|
|
293
|
-
return false;
|
|
294
|
-
}
|
|
295
|
-
switch (filterState.type) {
|
|
296
|
-
case "EXACT_MATCH":
|
|
297
|
-
return filterState.values.length > 0;
|
|
298
|
-
case "SELECT":
|
|
299
|
-
return filterState.selectedValues.length > 0;
|
|
300
|
-
case "CONTAINS_TEXT":
|
|
301
|
-
return filterState.value != null && filterState.value.length > 0;
|
|
302
|
-
case "NUMBER_RANGE":
|
|
303
|
-
return filterState.minValue != null || filterState.maxValue != null;
|
|
304
|
-
case "DATE_RANGE":
|
|
305
|
-
return filterState.minValue != null || filterState.maxValue != null;
|
|
306
|
-
case "TIMELINE":
|
|
307
|
-
return filterState.startDate != null || filterState.endDate != null;
|
|
308
|
-
case "TOGGLE":
|
|
309
|
-
return filterState.enabled;
|
|
310
|
-
case "keywordSearch":
|
|
311
|
-
return filterState.searchTerm.length > 0;
|
|
312
|
-
case "hasLink":
|
|
313
|
-
return filterState.hasLink;
|
|
314
|
-
case "linkedProperty":
|
|
315
|
-
return hasActiveSelection(filterState.linkedFilterState);
|
|
316
|
-
case "custom":
|
|
317
|
-
return true;
|
|
318
|
-
default:
|
|
319
|
-
return false;
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
332
|
function FilterListItemInner({
|
|
323
333
|
definition,
|
|
324
334
|
filterKey,
|
|
@@ -327,6 +337,7 @@ function FilterListItemInner({
|
|
|
327
337
|
onFilterStateChanged,
|
|
328
338
|
onFilterRemoved,
|
|
329
339
|
renderInput,
|
|
340
|
+
searchField,
|
|
330
341
|
dragHandleAttributes,
|
|
331
342
|
dragHandleListeners,
|
|
332
343
|
className,
|
|
@@ -370,16 +381,18 @@ function FilterListItemInner({
|
|
|
370
381
|
preventScroll: true
|
|
371
382
|
});
|
|
372
383
|
}, []);
|
|
373
|
-
const
|
|
374
|
-
const
|
|
384
|
+
const effectiveState = React13.useMemo(() => getEffectiveFilterState(filterState), [filterState]);
|
|
385
|
+
const showExcludeDropdown = supportsExcluding(effectiveState);
|
|
386
|
+
const showSearch = supportsSearch(effectiveState) && searchField !== false;
|
|
375
387
|
const hasOverflowActions = showExcludeDropdown;
|
|
388
|
+
const hasSelection = filterHasActiveState(filterState);
|
|
376
389
|
const searchOpen = searchState.type === "open";
|
|
377
390
|
const searchQuery = searchState.type === "open" ? searchState.query : "";
|
|
378
391
|
const searchQueryForInput = searchState.type === "open" ? searchState.query : void 0;
|
|
379
392
|
return /* @__PURE__ */ React13__default.default.createElement("div", {
|
|
380
393
|
className: classnames3__default.default(FilterListItem_default.filterItem, className),
|
|
381
394
|
style,
|
|
382
|
-
"data-has-selection":
|
|
395
|
+
"data-has-selection": hasSelection || void 0
|
|
383
396
|
}, /* @__PURE__ */ React13__default.default.createElement("div", {
|
|
384
397
|
className: FilterListItem_default.itemHeader
|
|
385
398
|
}, dragHandleAttributes && /* @__PURE__ */ React13__default.default.createElement(button.Button, _extends({
|
|
@@ -438,7 +451,8 @@ function SortableFilterListItemInner({
|
|
|
438
451
|
filterState,
|
|
439
452
|
onFilterStateChanged,
|
|
440
453
|
onFilterRemoved,
|
|
441
|
-
renderInput
|
|
454
|
+
renderInput,
|
|
455
|
+
searchField
|
|
442
456
|
}) {
|
|
443
457
|
const {
|
|
444
458
|
attributes,
|
|
@@ -466,6 +480,7 @@ function SortableFilterListItemInner({
|
|
|
466
480
|
onFilterStateChanged,
|
|
467
481
|
onFilterRemoved,
|
|
468
482
|
renderInput,
|
|
483
|
+
searchField,
|
|
469
484
|
dragHandleAttributes: attributes,
|
|
470
485
|
dragHandleListeners: listeners
|
|
471
486
|
}));
|
|
@@ -538,46 +553,45 @@ function FilterListContent({
|
|
|
538
553
|
const handleDragCancel = React13.useCallback(() => {
|
|
539
554
|
setActiveId(null);
|
|
540
555
|
}, []);
|
|
541
|
-
const announcements = React13.useMemo(() =>
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
}
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
onDragEnd({
|
|
560
|
-
active,
|
|
561
|
-
over
|
|
562
|
-
}) {
|
|
563
|
-
const idx = sortableIds.indexOf(String(active.id));
|
|
564
|
-
const def = idx >= 0 && filterDefinitions ? filterDefinitions[idx] : void 0;
|
|
565
|
-
const label = def ? getFilterLabel2(def) : "filter";
|
|
566
|
-
if (over && active.id !== over.id) {
|
|
556
|
+
const announcements = React13.useMemo(() => {
|
|
557
|
+
const labelForId = (id) => {
|
|
558
|
+
const idx = sortableIds.indexOf(String(id));
|
|
559
|
+
const def = idx >= 0 ? filterDefinitions?.[idx] : void 0;
|
|
560
|
+
return def ? getFilterLabel2(def) : "filter";
|
|
561
|
+
};
|
|
562
|
+
return {
|
|
563
|
+
onDragStart({
|
|
564
|
+
active
|
|
565
|
+
}) {
|
|
566
|
+
return `Picked up ${labelForId(active.id)} filter`;
|
|
567
|
+
},
|
|
568
|
+
onDragOver({
|
|
569
|
+
over
|
|
570
|
+
}) {
|
|
571
|
+
if (!over) {
|
|
572
|
+
return "Not over a droppable area";
|
|
573
|
+
}
|
|
567
574
|
const overIdx = sortableIds.indexOf(String(over.id));
|
|
568
|
-
return `
|
|
575
|
+
return `Moved to position ${overIdx + 1} of ${sortableIds.length}`;
|
|
576
|
+
},
|
|
577
|
+
onDragEnd({
|
|
578
|
+
active,
|
|
579
|
+
over
|
|
580
|
+
}) {
|
|
581
|
+
const label = labelForId(active.id);
|
|
582
|
+
if (over && active.id !== over.id) {
|
|
583
|
+
const overIdx = sortableIds.indexOf(String(over.id));
|
|
584
|
+
return `Dropped ${label} filter at position ${overIdx + 1}`;
|
|
585
|
+
}
|
|
586
|
+
return `Dropped ${label} filter back in its original position`;
|
|
587
|
+
},
|
|
588
|
+
onDragCancel({
|
|
589
|
+
active
|
|
590
|
+
}) {
|
|
591
|
+
return `Cancelled dragging ${labelForId(active.id)} filter`;
|
|
569
592
|
}
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
onDragCancel({
|
|
573
|
-
active
|
|
574
|
-
}) {
|
|
575
|
-
const idx = sortableIds.indexOf(String(active.id));
|
|
576
|
-
const def = idx >= 0 && filterDefinitions ? filterDefinitions[idx] : void 0;
|
|
577
|
-
const label = def ? getFilterLabel2(def) : "filter";
|
|
578
|
-
return `Cancelled dragging ${label} filter`;
|
|
579
|
-
}
|
|
580
|
-
}), [filterDefinitions, sortableIds, getFilterLabel2]);
|
|
593
|
+
};
|
|
594
|
+
}, [filterDefinitions, sortableIds, getFilterLabel2]);
|
|
581
595
|
const accessibility = React13.useMemo(() => ({
|
|
582
596
|
announcements
|
|
583
597
|
}), [announcements]);
|
|
@@ -617,7 +631,8 @@ function FilterListContent({
|
|
|
617
631
|
filterState: state,
|
|
618
632
|
onFilterStateChanged,
|
|
619
633
|
onFilterRemoved,
|
|
620
|
-
renderInput
|
|
634
|
+
renderInput,
|
|
635
|
+
searchField: definition.searchField
|
|
621
636
|
});
|
|
622
637
|
})), /* @__PURE__ */ React13__default.default.createElement(core.DragOverlay, {
|
|
623
638
|
dropAnimation: null,
|
|
@@ -630,6 +645,7 @@ function FilterListContent({
|
|
|
630
645
|
onFilterStateChanged,
|
|
631
646
|
onFilterRemoved,
|
|
632
647
|
renderInput,
|
|
648
|
+
searchField: activeDefinition.searchField,
|
|
633
649
|
dragHandleAttributes: DRAG_OVERLAY_HANDLE_ATTRIBUTES
|
|
634
650
|
}))));
|
|
635
651
|
}
|
|
@@ -647,7 +663,8 @@ function FilterListContent({
|
|
|
647
663
|
filterState: state,
|
|
648
664
|
onFilterStateChanged,
|
|
649
665
|
onFilterRemoved,
|
|
650
|
-
renderInput
|
|
666
|
+
renderInput,
|
|
667
|
+
searchField: definition.searchField
|
|
651
668
|
});
|
|
652
669
|
}));
|
|
653
670
|
}
|
|
@@ -1936,10 +1953,12 @@ function ListogramInputInner({
|
|
|
1936
1953
|
const percentage = maxCount > 0 ? count / maxCount * 100 : 0;
|
|
1937
1954
|
const perRowColor = colorMap?.[value];
|
|
1938
1955
|
const isEmpty = isEmptyValue(value);
|
|
1956
|
+
const isFilteredOut = count === 0 && !selectedSet.has(value);
|
|
1939
1957
|
return /* @__PURE__ */ React13__default.default.createElement(button.Button, {
|
|
1940
1958
|
key: value,
|
|
1941
1959
|
className: ListogramInput_default.row,
|
|
1942
1960
|
"data-empty": isEmpty || void 0,
|
|
1961
|
+
"data-filtered-out": isFilteredOut || void 0,
|
|
1943
1962
|
onClick: () => toggleValue(value),
|
|
1944
1963
|
"aria-pressed": selectedSet.has(value),
|
|
1945
1964
|
style: perRowColor || percentage > 0 ? {
|
|
@@ -2027,7 +2046,8 @@ function MultiDateInputInner({
|
|
|
2027
2046
|
min: minDate,
|
|
2028
2047
|
max: maxDate,
|
|
2029
2048
|
ariaLabel: "Add date",
|
|
2030
|
-
modal: false
|
|
2049
|
+
modal: false,
|
|
2050
|
+
formatDate
|
|
2031
2051
|
})));
|
|
2032
2052
|
}
|
|
2033
2053
|
var MultiDateInput = /* @__PURE__ */ React13.memo(MultiDateInputInner);
|
|
@@ -2122,18 +2142,22 @@ function MultiSelectInputInner({
|
|
|
2122
2142
|
value,
|
|
2123
2143
|
count
|
|
2124
2144
|
}) => [value, count])), [stableValues]);
|
|
2145
|
+
const selectedSet = React13.useMemo(() => new Set(selectedValues), [selectedValues]);
|
|
2125
2146
|
const comboboxFilter = React13.useMemo(() => renderValue ? createRenderValueFilter(renderValue) : void 0, [renderValue]);
|
|
2126
2147
|
const renderItem = React13.useCallback((value) => {
|
|
2127
2148
|
const isEmpty = isEmptyValue(value);
|
|
2149
|
+
const count = countByValue.get(value) ?? 0;
|
|
2150
|
+
const isFilteredOut = count === 0 && !selectedSet.has(value);
|
|
2128
2151
|
return /* @__PURE__ */ React13__default.default.createElement(chunk4KC5U44T_cjs.Combobox.Item, {
|
|
2129
2152
|
key: value,
|
|
2130
|
-
value
|
|
2153
|
+
value,
|
|
2154
|
+
className: isFilteredOut ? MultiSelectInput_default.filteredOutItem : void 0
|
|
2131
2155
|
}, /* @__PURE__ */ React13__default.default.createElement(chunk4KC5U44T_cjs.Combobox.ItemIndicator, null), /* @__PURE__ */ React13__default.default.createElement("span", {
|
|
2132
2156
|
className: MultiSelectInput_default.itemLabel
|
|
2133
2157
|
}, isEmpty ? /* @__PURE__ */ React13__default.default.createElement(NoValueLabel, null) : renderValue ? renderValue(value) : value), showCounts && /* @__PURE__ */ React13__default.default.createElement("span", {
|
|
2134
2158
|
className: MultiSelectInput_default.itemCount
|
|
2135
|
-
}, "(",
|
|
2136
|
-
}, [countByValue, showCounts, renderValue]);
|
|
2159
|
+
}, "(", count.toLocaleString(), ")"));
|
|
2160
|
+
}, [countByValue, selectedSet, showCounts, renderValue]);
|
|
2137
2161
|
const renderChips = React13.useCallback((selectedItems) => /* @__PURE__ */ React13__default.default.createElement(React13__default.default.Fragment, null, selectedItems.map((value) => {
|
|
2138
2162
|
const isEmpty = isEmptyValue(value);
|
|
2139
2163
|
return /* @__PURE__ */ React13__default.default.createElement(chunk4KC5U44T_cjs.Combobox.Chip, {
|
|
@@ -2265,7 +2289,8 @@ function SingleDateInputInner({
|
|
|
2265
2289
|
minDate,
|
|
2266
2290
|
maxDate,
|
|
2267
2291
|
placeholder,
|
|
2268
|
-
showClearButton = true
|
|
2292
|
+
showClearButton = true,
|
|
2293
|
+
formatDate
|
|
2269
2294
|
}) {
|
|
2270
2295
|
const handleClear = React13.useCallback(() => {
|
|
2271
2296
|
onChange(void 0);
|
|
@@ -2285,7 +2310,8 @@ function SingleDateInputInner({
|
|
|
2285
2310
|
max: maxDate,
|
|
2286
2311
|
placeholder,
|
|
2287
2312
|
ariaLabel: "Select date",
|
|
2288
|
-
modal: false
|
|
2313
|
+
modal: false,
|
|
2314
|
+
formatDate
|
|
2289
2315
|
}), showClearButton && selectedDate !== void 0 && /* @__PURE__ */ React13__default.default.createElement(button.Button, {
|
|
2290
2316
|
className: SingleDateInput_default.clearButton,
|
|
2291
2317
|
onClick: handleClear,
|
|
@@ -2585,13 +2611,13 @@ function usePropertyAggregation(objectType, propertyKey, objectSet, options) {
|
|
|
2585
2611
|
const raw = item.$group[propertyKey];
|
|
2586
2612
|
existingValues.add(raw == null ? "" : String(raw));
|
|
2587
2613
|
}
|
|
2588
|
-
const
|
|
2614
|
+
const filteredOutEntries = activeValues.flatMap((v) => existingValues.has(v) ? [] : [{
|
|
2589
2615
|
$group: {
|
|
2590
2616
|
[propertyKey]: v
|
|
2591
2617
|
},
|
|
2592
2618
|
$count: 0
|
|
2593
2619
|
}]);
|
|
2594
|
-
for (const item of [...dataArray, ...
|
|
2620
|
+
for (const item of [...dataArray, ...filteredOutEntries]) {
|
|
2595
2621
|
const rawValue = item.$group[propertyKey];
|
|
2596
2622
|
const count = item.$count ?? 0;
|
|
2597
2623
|
if (rawValue == null) {
|
|
@@ -2634,6 +2660,41 @@ function usePropertyAggregation(objectType, propertyKey, objectSet, options) {
|
|
|
2634
2660
|
};
|
|
2635
2661
|
}
|
|
2636
2662
|
|
|
2663
|
+
// src/filter-list/hooks/useDualScopeAggregation.ts
|
|
2664
|
+
var EMPTY_VALUES = [];
|
|
2665
|
+
function useDualScopeAggregation(objectType, propertyKey, scopedObjectSet, emptySourceObjectSet, options = {}) {
|
|
2666
|
+
const {
|
|
2667
|
+
sortBy,
|
|
2668
|
+
selectedValues = EMPTY_VALUES,
|
|
2669
|
+
limit
|
|
2670
|
+
} = options;
|
|
2671
|
+
const isDualScope = emptySourceObjectSet !== void 0;
|
|
2672
|
+
const emptySourceAggregation = usePropertyAggregation(objectType, propertyKey, emptySourceObjectSet);
|
|
2673
|
+
const activeValues = React13.useMemo(() => {
|
|
2674
|
+
const merged = new Set(selectedValues);
|
|
2675
|
+
if (isDualScope && emptySourceAggregation.error == null) {
|
|
2676
|
+
for (const d of emptySourceAggregation.data) {
|
|
2677
|
+
merged.add(d.value);
|
|
2678
|
+
}
|
|
2679
|
+
}
|
|
2680
|
+
return merged.size === 0 ? void 0 : Array.from(merged);
|
|
2681
|
+
}, [isDualScope, emptySourceAggregation.data, emptySourceAggregation.error, selectedValues]);
|
|
2682
|
+
const primary = usePropertyAggregation(objectType, propertyKey, scopedObjectSet, {
|
|
2683
|
+
sortBy,
|
|
2684
|
+
activeValues,
|
|
2685
|
+
limit
|
|
2686
|
+
});
|
|
2687
|
+
return {
|
|
2688
|
+
data: primary.data,
|
|
2689
|
+
maxCount: primary.maxCount,
|
|
2690
|
+
isLoading: primary.isLoading || isDualScope && emptySourceAggregation.isLoading,
|
|
2691
|
+
error: primary.error
|
|
2692
|
+
};
|
|
2693
|
+
}
|
|
2694
|
+
|
|
2695
|
+
// src/filter-list/types/LinkedFilterTypes.ts
|
|
2696
|
+
var EMPTY_LINKED_FILTERS = [];
|
|
2697
|
+
|
|
2637
2698
|
// src/filter-list/utils/aggregationHelpers.ts
|
|
2638
2699
|
function createGroupByAggregateOptions(propertyKey) {
|
|
2639
2700
|
return {
|
|
@@ -2670,18 +2731,54 @@ function coerceToStringArray(values) {
|
|
|
2670
2731
|
return values.map((v) => String(v));
|
|
2671
2732
|
}
|
|
2672
2733
|
|
|
2734
|
+
// src/filter-list/utils/narrowObjectSet.ts
|
|
2735
|
+
function narrowObjectSet(objectSet, whereClause, linkedFilters) {
|
|
2736
|
+
let narrowed = Object.keys(whereClause).length === 0 ? objectSet : objectSet.where(whereClause);
|
|
2737
|
+
for (const filter of linkedFilters) {
|
|
2738
|
+
narrowed = narrowed.intersect(applyLinkedFilter(narrowed, filter));
|
|
2739
|
+
}
|
|
2740
|
+
return narrowed;
|
|
2741
|
+
}
|
|
2742
|
+
function applyLinkedFilter(base, filter) {
|
|
2743
|
+
return base.pivotTo(filter.linkName).where(filter.innerWhere).pivotTo(filter.reverseLinkName);
|
|
2744
|
+
}
|
|
2745
|
+
function computeDualScopes(objectSet, whereClause, linkedFilters, showFilteredOutValues) {
|
|
2746
|
+
if (objectSet == null) {
|
|
2747
|
+
return {
|
|
2748
|
+
scoped: void 0,
|
|
2749
|
+
emptySource: void 0
|
|
2750
|
+
};
|
|
2751
|
+
}
|
|
2752
|
+
const scoped = narrowObjectSet(objectSet, whereClause, linkedFilters);
|
|
2753
|
+
if (!showFilteredOutValues || linkedFilters.length === 0) {
|
|
2754
|
+
return {
|
|
2755
|
+
scoped,
|
|
2756
|
+
emptySource: void 0
|
|
2757
|
+
};
|
|
2758
|
+
}
|
|
2759
|
+
return {
|
|
2760
|
+
scoped,
|
|
2761
|
+
emptySource: narrowObjectSet(objectSet, whereClause, [])
|
|
2762
|
+
};
|
|
2763
|
+
}
|
|
2764
|
+
|
|
2673
2765
|
// src/filter-list/inputs/LinkedPropertyInput.tsx
|
|
2674
2766
|
function LinkedPropertyInputInner({
|
|
2675
2767
|
objectSet,
|
|
2768
|
+
whereClause,
|
|
2769
|
+
linkedFilters = EMPTY_LINKED_FILTERS,
|
|
2676
2770
|
definition,
|
|
2677
2771
|
filterState,
|
|
2678
2772
|
onFilterStateChanged,
|
|
2773
|
+
showFilteredOutValues,
|
|
2679
2774
|
searchQuery,
|
|
2680
2775
|
className,
|
|
2681
2776
|
style,
|
|
2682
2777
|
layout
|
|
2683
2778
|
}) {
|
|
2684
|
-
const
|
|
2779
|
+
const scoped = React13.useMemo(() => narrowObjectSet(objectSet, whereClause, linkedFilters), [objectSet, whereClause, linkedFilters]);
|
|
2780
|
+
const linkedObjectSet = React13.useMemo(() => scoped.pivotTo(definition.linkName), [scoped, definition.linkName]);
|
|
2781
|
+
const emptySourceLinkedObjectSet = React13.useMemo(() => showFilteredOutValues ? objectSet.pivotTo(definition.linkName) : void 0, [showFilteredOutValues, objectSet, definition.linkName]);
|
|
2685
2782
|
const linkedObjectType = linkedObjectSet.$objectSetInternals.def;
|
|
2686
2783
|
const linkedPropertyKey = definition.linkedPropertyKey;
|
|
2687
2784
|
const innerState = filterState?.type === "linkedProperty" ? filterState.linkedFilterState : void 0;
|
|
@@ -2790,10 +2887,12 @@ function LinkedPropertyInputInner({
|
|
|
2790
2887
|
return /* @__PURE__ */ React13__default.default.createElement(LinkedMultiSelectInput, {
|
|
2791
2888
|
objectType: linkedObjectType,
|
|
2792
2889
|
objectSet: linkedObjectSet,
|
|
2890
|
+
emptySourceObjectSet: emptySourceLinkedObjectSet,
|
|
2793
2891
|
propertyKey: linkedPropertyKey,
|
|
2794
2892
|
selectedValues: values,
|
|
2795
2893
|
onChange: onSelectChange,
|
|
2796
2894
|
showCount: definition.showCount,
|
|
2895
|
+
renderValue: definition.renderValue,
|
|
2797
2896
|
layout
|
|
2798
2897
|
});
|
|
2799
2898
|
}
|
|
@@ -2802,10 +2901,12 @@ function LinkedPropertyInputInner({
|
|
|
2802
2901
|
return /* @__PURE__ */ React13__default.default.createElement(LinkedSingleSelectInput, {
|
|
2803
2902
|
objectType: linkedObjectType,
|
|
2804
2903
|
objectSet: linkedObjectSet,
|
|
2904
|
+
emptySourceObjectSet: emptySourceLinkedObjectSet,
|
|
2805
2905
|
propertyKey: linkedPropertyKey,
|
|
2806
2906
|
selectedValue: value,
|
|
2807
2907
|
onChange: onSingleSelectChange,
|
|
2808
|
-
showCount: definition.showCount
|
|
2908
|
+
showCount: definition.showCount,
|
|
2909
|
+
renderValue: definition.renderValue
|
|
2809
2910
|
});
|
|
2810
2911
|
}
|
|
2811
2912
|
case "CONTAINS_TEXT": {
|
|
@@ -2855,11 +2956,13 @@ function LinkedPropertyInputInner({
|
|
|
2855
2956
|
return /* @__PURE__ */ React13__default.default.createElement(LinkedListogramInput, {
|
|
2856
2957
|
objectType: linkedObjectType,
|
|
2857
2958
|
objectSet: linkedObjectSet,
|
|
2959
|
+
emptySourceObjectSet: emptySourceLinkedObjectSet,
|
|
2858
2960
|
propertyKey: linkedPropertyKey,
|
|
2859
2961
|
selectedValues,
|
|
2860
2962
|
onChange: onExactMatchChange,
|
|
2861
2963
|
searchQuery,
|
|
2862
|
-
showCount: definition.showCount
|
|
2964
|
+
showCount: definition.showCount,
|
|
2965
|
+
renderValue: definition.renderValue
|
|
2863
2966
|
});
|
|
2864
2967
|
}
|
|
2865
2968
|
case "TEXT_TAGS": {
|
|
@@ -2910,20 +3013,21 @@ var LinkedPropertyInput = /* @__PURE__ */ React13.memo(LinkedPropertyInputInner)
|
|
|
2910
3013
|
function LinkedMultiSelectInput({
|
|
2911
3014
|
objectType,
|
|
2912
3015
|
objectSet,
|
|
3016
|
+
emptySourceObjectSet,
|
|
2913
3017
|
propertyKey,
|
|
2914
3018
|
selectedValues,
|
|
2915
3019
|
onChange,
|
|
2916
3020
|
showCount,
|
|
3021
|
+
renderValue,
|
|
2917
3022
|
layout
|
|
2918
3023
|
}) {
|
|
2919
|
-
const aggregationOptions = React13.useMemo(() => ({
|
|
2920
|
-
activeValues: selectedValues
|
|
2921
|
-
}), [selectedValues]);
|
|
2922
3024
|
const {
|
|
2923
3025
|
data,
|
|
2924
3026
|
isLoading,
|
|
2925
3027
|
error
|
|
2926
|
-
} =
|
|
3028
|
+
} = useDualScopeAggregation(objectType, propertyKey, objectSet, emptySourceObjectSet, {
|
|
3029
|
+
selectedValues
|
|
3030
|
+
});
|
|
2927
3031
|
return /* @__PURE__ */ React13__default.default.createElement(MultiSelectInput, {
|
|
2928
3032
|
values: data,
|
|
2929
3033
|
isLoading,
|
|
@@ -2931,25 +3035,28 @@ function LinkedMultiSelectInput({
|
|
|
2931
3035
|
selectedValues,
|
|
2932
3036
|
onChange,
|
|
2933
3037
|
showCounts: showCount,
|
|
3038
|
+
renderValue,
|
|
2934
3039
|
layout
|
|
2935
3040
|
});
|
|
2936
3041
|
}
|
|
2937
3042
|
function LinkedSingleSelectInput({
|
|
2938
3043
|
objectType,
|
|
2939
3044
|
objectSet,
|
|
3045
|
+
emptySourceObjectSet,
|
|
2940
3046
|
propertyKey,
|
|
2941
3047
|
selectedValue,
|
|
2942
3048
|
onChange,
|
|
2943
|
-
showCount
|
|
3049
|
+
showCount,
|
|
3050
|
+
renderValue
|
|
2944
3051
|
}) {
|
|
2945
|
-
const
|
|
2946
|
-
activeValues: selectedValue != null ? [selectedValue] : void 0
|
|
2947
|
-
}), [selectedValue]);
|
|
3052
|
+
const selectedValues = React13.useMemo(() => selectedValue != null ? [selectedValue] : [], [selectedValue]);
|
|
2948
3053
|
const {
|
|
2949
3054
|
data,
|
|
2950
3055
|
isLoading,
|
|
2951
3056
|
error
|
|
2952
|
-
} =
|
|
3057
|
+
} = useDualScopeAggregation(objectType, propertyKey, objectSet, emptySourceObjectSet, {
|
|
3058
|
+
selectedValues
|
|
3059
|
+
});
|
|
2953
3060
|
return /* @__PURE__ */ React13__default.default.createElement(SingleSelectInput, {
|
|
2954
3061
|
values: data,
|
|
2955
3062
|
isLoading,
|
|
@@ -2957,27 +3064,29 @@ function LinkedSingleSelectInput({
|
|
|
2957
3064
|
selectedValue,
|
|
2958
3065
|
onChange,
|
|
2959
3066
|
showCounts: showCount,
|
|
3067
|
+
renderValue,
|
|
2960
3068
|
ariaLabel: `Select ${propertyKey}`
|
|
2961
3069
|
});
|
|
2962
3070
|
}
|
|
2963
3071
|
function LinkedListogramInput({
|
|
2964
3072
|
objectType,
|
|
2965
3073
|
objectSet,
|
|
3074
|
+
emptySourceObjectSet,
|
|
2966
3075
|
propertyKey,
|
|
2967
3076
|
selectedValues,
|
|
2968
3077
|
onChange,
|
|
2969
3078
|
searchQuery,
|
|
2970
|
-
showCount
|
|
3079
|
+
showCount,
|
|
3080
|
+
renderValue
|
|
2971
3081
|
}) {
|
|
2972
|
-
const aggregationOptions = React13.useMemo(() => ({
|
|
2973
|
-
activeValues: selectedValues
|
|
2974
|
-
}), [selectedValues]);
|
|
2975
3082
|
const {
|
|
2976
3083
|
data,
|
|
2977
3084
|
maxCount,
|
|
2978
3085
|
isLoading,
|
|
2979
3086
|
error
|
|
2980
|
-
} =
|
|
3087
|
+
} = useDualScopeAggregation(objectType, propertyKey, objectSet, emptySourceObjectSet, {
|
|
3088
|
+
selectedValues
|
|
3089
|
+
});
|
|
2981
3090
|
return /* @__PURE__ */ React13__default.default.createElement(ListogramInput, {
|
|
2982
3091
|
values: data,
|
|
2983
3092
|
maxCount,
|
|
@@ -2986,9 +3095,13 @@ function LinkedListogramInput({
|
|
|
2986
3095
|
selectedValues,
|
|
2987
3096
|
onChange,
|
|
2988
3097
|
searchQuery,
|
|
2989
|
-
showCount
|
|
3098
|
+
showCount,
|
|
3099
|
+
renderValue
|
|
2990
3100
|
});
|
|
2991
3101
|
}
|
|
3102
|
+
var TEXT_TAGS_OPTIONS = {
|
|
3103
|
+
limit: 50
|
|
3104
|
+
};
|
|
2992
3105
|
function LinkedTextTagsInput({
|
|
2993
3106
|
objectType,
|
|
2994
3107
|
objectSet,
|
|
@@ -2996,14 +3109,11 @@ function LinkedTextTagsInput({
|
|
|
2996
3109
|
tags,
|
|
2997
3110
|
onChange
|
|
2998
3111
|
}) {
|
|
2999
|
-
const aggregationOptions = React13.useMemo(() => ({
|
|
3000
|
-
limit: 50
|
|
3001
|
-
}), []);
|
|
3002
3112
|
const {
|
|
3003
3113
|
data,
|
|
3004
3114
|
isLoading,
|
|
3005
3115
|
error
|
|
3006
|
-
} = usePropertyAggregation(objectType, propertyKey, objectSet,
|
|
3116
|
+
} = usePropertyAggregation(objectType, propertyKey, objectSet, TEXT_TAGS_OPTIONS);
|
|
3007
3117
|
return /* @__PURE__ */ React13__default.default.createElement(TextTagsInput, {
|
|
3008
3118
|
suggestions: data,
|
|
3009
3119
|
isLoading,
|
|
@@ -3193,12 +3303,6 @@ function ExcludeDropdownInner({
|
|
|
3193
3303
|
var ExcludeDropdown = /* @__PURE__ */ React13.memo(ExcludeDropdownInner);
|
|
3194
3304
|
|
|
3195
3305
|
// src/filter-list/base/FilterInputExcludeRow.tsx
|
|
3196
|
-
function getSelectedCount(filterState) {
|
|
3197
|
-
if (!filterState) return 0;
|
|
3198
|
-
if (filterState.type === "EXACT_MATCH") return filterState.values.length;
|
|
3199
|
-
if (filterState.type === "SELECT") return filterState.selectedValues.length;
|
|
3200
|
-
return 0;
|
|
3201
|
-
}
|
|
3202
3306
|
function FilterInputExcludeRowInner({
|
|
3203
3307
|
excludeRowOpen,
|
|
3204
3308
|
filterState,
|
|
@@ -3208,17 +3312,19 @@ function FilterInputExcludeRowInner({
|
|
|
3208
3312
|
children
|
|
3209
3313
|
}) {
|
|
3210
3314
|
const handleToggleExclude = React13.useCallback(() => {
|
|
3211
|
-
if (filterState) {
|
|
3212
|
-
|
|
3213
|
-
|
|
3214
|
-
|
|
3215
|
-
|
|
3315
|
+
if (filterState == null) {
|
|
3316
|
+
return;
|
|
3317
|
+
}
|
|
3318
|
+
const next = toggleIsExcluding(filterState);
|
|
3319
|
+
if (next != null) {
|
|
3320
|
+
onFilterStateChanged(next);
|
|
3216
3321
|
}
|
|
3217
3322
|
}, [filterState, onFilterStateChanged]);
|
|
3218
|
-
const
|
|
3323
|
+
const effectiveState = getEffectiveFilterState(filterState);
|
|
3324
|
+
const isExcluding = effectiveState?.isExcluding ?? false;
|
|
3219
3325
|
const isOpen = excludeRowOpen ?? false;
|
|
3220
|
-
const selectedCount =
|
|
3221
|
-
if (!supportsExcluding(
|
|
3326
|
+
const selectedCount = getSelectedCount(effectiveState);
|
|
3327
|
+
if (!supportsExcluding(effectiveState)) {
|
|
3222
3328
|
return /* @__PURE__ */ React13__default.default.createElement(React13__default.default.Fragment, null, children);
|
|
3223
3329
|
}
|
|
3224
3330
|
return /* @__PURE__ */ React13__default.default.createElement(React13__default.default.Fragment, null, /* @__PURE__ */ React13__default.default.createElement("div", {
|
|
@@ -3353,6 +3459,25 @@ function DateRangeFilterInputInner({
|
|
|
3353
3459
|
}));
|
|
3354
3460
|
}
|
|
3355
3461
|
var DateRangeFilterInput = /* @__PURE__ */ React13.memo(DateRangeFilterInputInner);
|
|
3462
|
+
function useFilterPropertyAggregation(objectType, propertyKey, objectSet, whereClause, linkedFilters, options = {}) {
|
|
3463
|
+
const {
|
|
3464
|
+
sortBy,
|
|
3465
|
+
selectedValues,
|
|
3466
|
+
limit,
|
|
3467
|
+
showFilteredOutValues
|
|
3468
|
+
} = options;
|
|
3469
|
+
const {
|
|
3470
|
+
scoped,
|
|
3471
|
+
emptySource
|
|
3472
|
+
} = React13.useMemo(() => computeDualScopes(objectSet, whereClause, linkedFilters, showFilteredOutValues), [objectSet, whereClause, linkedFilters, showFilteredOutValues]);
|
|
3473
|
+
return useDualScopeAggregation(objectType, propertyKey, scoped, emptySource, {
|
|
3474
|
+
sortBy,
|
|
3475
|
+
selectedValues,
|
|
3476
|
+
limit
|
|
3477
|
+
});
|
|
3478
|
+
}
|
|
3479
|
+
|
|
3480
|
+
// src/filter-list/inputs/ListogramFilterInput.tsx
|
|
3356
3481
|
function ListogramFilterInputInner({
|
|
3357
3482
|
objectType,
|
|
3358
3483
|
objectSet,
|
|
@@ -3360,6 +3485,8 @@ function ListogramFilterInputInner({
|
|
|
3360
3485
|
filterState,
|
|
3361
3486
|
onFilterStateChanged,
|
|
3362
3487
|
whereClause,
|
|
3488
|
+
linkedFilters = EMPTY_LINKED_FILTERS,
|
|
3489
|
+
showFilteredOutValues,
|
|
3363
3490
|
colorMap,
|
|
3364
3491
|
displayMode,
|
|
3365
3492
|
showCount,
|
|
@@ -3385,17 +3512,16 @@ function ListogramFilterInputInner({
|
|
|
3385
3512
|
});
|
|
3386
3513
|
}, [onFilterStateChanged, isExcluding]);
|
|
3387
3514
|
const sortBy = displayMode === "minimal" ? "value" : "count";
|
|
3388
|
-
const aggregationOptions = React13.useMemo(() => ({
|
|
3389
|
-
where: whereClause,
|
|
3390
|
-
sortBy,
|
|
3391
|
-
activeValues: selectedValues
|
|
3392
|
-
}), [whereClause, sortBy, selectedValues]);
|
|
3393
3515
|
const {
|
|
3394
3516
|
data,
|
|
3395
3517
|
maxCount,
|
|
3396
3518
|
isLoading,
|
|
3397
3519
|
error
|
|
3398
|
-
} =
|
|
3520
|
+
} = useFilterPropertyAggregation(objectType, propertyKey, objectSet, whereClause, linkedFilters, {
|
|
3521
|
+
sortBy,
|
|
3522
|
+
selectedValues,
|
|
3523
|
+
showFilteredOutValues
|
|
3524
|
+
});
|
|
3399
3525
|
return /* @__PURE__ */ React13__default.default.createElement(FilterInputExcludeRow, {
|
|
3400
3526
|
excludeRowOpen,
|
|
3401
3527
|
filterState,
|
|
@@ -3447,6 +3573,8 @@ function MultiSelectFilterInputInner({
|
|
|
3447
3573
|
filterState,
|
|
3448
3574
|
onFilterStateChanged,
|
|
3449
3575
|
whereClause,
|
|
3576
|
+
linkedFilters = EMPTY_LINKED_FILTERS,
|
|
3577
|
+
showFilteredOutValues,
|
|
3450
3578
|
excludeRowOpen,
|
|
3451
3579
|
renderValue,
|
|
3452
3580
|
showCount,
|
|
@@ -3468,15 +3596,14 @@ function MultiSelectFilterInputInner({
|
|
|
3468
3596
|
isExcluding
|
|
3469
3597
|
});
|
|
3470
3598
|
}, [onFilterStateChanged, isExcluding]);
|
|
3471
|
-
const aggregationOptions = React13.useMemo(() => ({
|
|
3472
|
-
where: whereClause,
|
|
3473
|
-
activeValues: selectedValues
|
|
3474
|
-
}), [whereClause, selectedValues]);
|
|
3475
3599
|
const {
|
|
3476
3600
|
data,
|
|
3477
3601
|
isLoading,
|
|
3478
3602
|
error
|
|
3479
|
-
} =
|
|
3603
|
+
} = useFilterPropertyAggregation(objectType, propertyKey, objectSet, whereClause, linkedFilters, {
|
|
3604
|
+
selectedValues,
|
|
3605
|
+
showFilteredOutValues
|
|
3606
|
+
});
|
|
3480
3607
|
return /* @__PURE__ */ React13__default.default.createElement(FilterInputExcludeRow, {
|
|
3481
3608
|
excludeRowOpen,
|
|
3482
3609
|
filterState,
|
|
@@ -3599,7 +3726,8 @@ function NumberRangeFilterInputInner({
|
|
|
3599
3726
|
var NumberRangeFilterInput = /* @__PURE__ */ React13.memo(NumberRangeFilterInputInner);
|
|
3600
3727
|
function SingleDateFilterInputInner({
|
|
3601
3728
|
filterState,
|
|
3602
|
-
onFilterStateChanged
|
|
3729
|
+
onFilterStateChanged,
|
|
3730
|
+
formatDate
|
|
3603
3731
|
}) {
|
|
3604
3732
|
const selectedDate = React13.useMemo(() => filterState?.type === "SELECT" ? filterState.selectedValues[0] instanceof Date ? filterState.selectedValues[0] : void 0 : void 0, [filterState]);
|
|
3605
3733
|
const isExcluding = filterState?.isExcluding ?? false;
|
|
@@ -3612,7 +3740,8 @@ function SingleDateFilterInputInner({
|
|
|
3612
3740
|
}, [onFilterStateChanged, isExcluding]);
|
|
3613
3741
|
return /* @__PURE__ */ React13__default.default.createElement(SingleDateInput, {
|
|
3614
3742
|
selectedDate,
|
|
3615
|
-
onChange: handleChange
|
|
3743
|
+
onChange: handleChange,
|
|
3744
|
+
formatDate
|
|
3616
3745
|
});
|
|
3617
3746
|
}
|
|
3618
3747
|
var SingleDateFilterInput = /* @__PURE__ */ React13.memo(SingleDateFilterInputInner);
|
|
@@ -3623,6 +3752,8 @@ function SingleSelectFilterInputInner({
|
|
|
3623
3752
|
filterState,
|
|
3624
3753
|
onFilterStateChanged,
|
|
3625
3754
|
whereClause,
|
|
3755
|
+
linkedFilters = EMPTY_LINKED_FILTERS,
|
|
3756
|
+
showFilteredOutValues,
|
|
3626
3757
|
excludeRowOpen,
|
|
3627
3758
|
renderValue,
|
|
3628
3759
|
showCount
|
|
@@ -3643,15 +3774,15 @@ function SingleSelectFilterInputInner({
|
|
|
3643
3774
|
isExcluding
|
|
3644
3775
|
});
|
|
3645
3776
|
}, [onFilterStateChanged, isExcluding]);
|
|
3646
|
-
const
|
|
3647
|
-
where: whereClause,
|
|
3648
|
-
activeValues: selectedValue != null ? [selectedValue] : void 0
|
|
3649
|
-
}), [whereClause, selectedValue]);
|
|
3777
|
+
const selectedValues = React13.useMemo(() => selectedValue != null ? [selectedValue] : [], [selectedValue]);
|
|
3650
3778
|
const {
|
|
3651
3779
|
data,
|
|
3652
3780
|
isLoading,
|
|
3653
3781
|
error
|
|
3654
|
-
} =
|
|
3782
|
+
} = useFilterPropertyAggregation(objectType, propertyKey, objectSet, whereClause, linkedFilters, {
|
|
3783
|
+
selectedValues,
|
|
3784
|
+
showFilteredOutValues
|
|
3785
|
+
});
|
|
3655
3786
|
return /* @__PURE__ */ React13__default.default.createElement(FilterInputExcludeRow, {
|
|
3656
3787
|
excludeRowOpen,
|
|
3657
3788
|
filterState,
|
|
@@ -3776,6 +3907,8 @@ function PropertyFilterInputInner({
|
|
|
3776
3907
|
filterState,
|
|
3777
3908
|
onFilterStateChanged,
|
|
3778
3909
|
whereClause,
|
|
3910
|
+
linkedFilters,
|
|
3911
|
+
showFilteredOutValues,
|
|
3779
3912
|
searchQuery,
|
|
3780
3913
|
excludeRowOpen,
|
|
3781
3914
|
layout
|
|
@@ -3825,6 +3958,8 @@ function PropertyFilterInputInner({
|
|
|
3825
3958
|
filterState,
|
|
3826
3959
|
onFilterStateChanged,
|
|
3827
3960
|
whereClause,
|
|
3961
|
+
linkedFilters,
|
|
3962
|
+
showFilteredOutValues,
|
|
3828
3963
|
excludeRowOpen,
|
|
3829
3964
|
renderValue: definition.renderValue,
|
|
3830
3965
|
showCount: definition.showCount
|
|
@@ -3837,6 +3972,8 @@ function PropertyFilterInputInner({
|
|
|
3837
3972
|
filterState,
|
|
3838
3973
|
onFilterStateChanged,
|
|
3839
3974
|
whereClause,
|
|
3975
|
+
linkedFilters,
|
|
3976
|
+
showFilteredOutValues,
|
|
3840
3977
|
excludeRowOpen,
|
|
3841
3978
|
renderValue: definition.renderValue,
|
|
3842
3979
|
showCount: definition.showCount,
|
|
@@ -3845,7 +3982,8 @@ function PropertyFilterInputInner({
|
|
|
3845
3982
|
case "SINGLE_DATE":
|
|
3846
3983
|
return /* @__PURE__ */ React13__default.default.createElement(SingleDateFilterInput, {
|
|
3847
3984
|
filterState,
|
|
3848
|
-
onFilterStateChanged
|
|
3985
|
+
onFilterStateChanged,
|
|
3986
|
+
formatDate: definition.formatDate
|
|
3849
3987
|
});
|
|
3850
3988
|
case "MULTI_DATE":
|
|
3851
3989
|
return /* @__PURE__ */ React13__default.default.createElement(MultiDateFilterInput, {
|
|
@@ -3861,6 +3999,8 @@ function PropertyFilterInputInner({
|
|
|
3861
3999
|
filterState,
|
|
3862
4000
|
onFilterStateChanged,
|
|
3863
4001
|
whereClause,
|
|
4002
|
+
linkedFilters,
|
|
4003
|
+
showFilteredOutValues,
|
|
3864
4004
|
colorMap: definition.colorMap,
|
|
3865
4005
|
displayMode: definition.listogramConfig?.displayMode,
|
|
3866
4006
|
showCount: definition.showCount,
|
|
@@ -4051,6 +4191,8 @@ function FilterInputInner({
|
|
|
4051
4191
|
filterState,
|
|
4052
4192
|
onFilterStateChanged,
|
|
4053
4193
|
whereClause,
|
|
4194
|
+
linkedFilters,
|
|
4195
|
+
showFilteredOutValues,
|
|
4054
4196
|
searchQuery,
|
|
4055
4197
|
excludeRowOpen,
|
|
4056
4198
|
layout
|
|
@@ -4070,6 +4212,9 @@ function FilterInputInner({
|
|
|
4070
4212
|
definition,
|
|
4071
4213
|
filterState,
|
|
4072
4214
|
onFilterStateChanged,
|
|
4215
|
+
whereClause,
|
|
4216
|
+
linkedFilters,
|
|
4217
|
+
showFilteredOutValues,
|
|
4073
4218
|
searchQuery,
|
|
4074
4219
|
layout
|
|
4075
4220
|
});
|
|
@@ -4102,6 +4247,8 @@ function FilterInputInner({
|
|
|
4102
4247
|
filterState,
|
|
4103
4248
|
onFilterStateChanged,
|
|
4104
4249
|
whereClause,
|
|
4250
|
+
linkedFilters,
|
|
4251
|
+
showFilteredOutValues,
|
|
4105
4252
|
searchQuery,
|
|
4106
4253
|
excludeRowOpen,
|
|
4107
4254
|
layout
|
|
@@ -4407,9 +4554,8 @@ function buildWhereClause(definitions, filterStates, propertyTypes, excludeFilte
|
|
|
4407
4554
|
});
|
|
4408
4555
|
break;
|
|
4409
4556
|
}
|
|
4410
|
-
case "LINKED_PROPERTY":
|
|
4557
|
+
case "LINKED_PROPERTY":
|
|
4411
4558
|
break;
|
|
4412
|
-
}
|
|
4413
4559
|
case "KEYWORD_SEARCH": {
|
|
4414
4560
|
if (state.type !== "keywordSearch") {
|
|
4415
4561
|
if (process.env.NODE_ENV !== "production") {
|
|
@@ -4506,6 +4652,45 @@ function buildWhereClause(definitions, filterStates, propertyTypes, excludeFilte
|
|
|
4506
4652
|
$and: clauses
|
|
4507
4653
|
};
|
|
4508
4654
|
}
|
|
4655
|
+
function buildLinkedInnerWhere(definition, state) {
|
|
4656
|
+
const record = buildPropertyKeyClause(definition.linkedPropertyKey, state.linkedFilterState);
|
|
4657
|
+
if (record === void 0) {
|
|
4658
|
+
return void 0;
|
|
4659
|
+
}
|
|
4660
|
+
return record;
|
|
4661
|
+
}
|
|
4662
|
+
function getActiveLinkedFilters(definitions, filterStates, excludeFilterKey) {
|
|
4663
|
+
if (!definitions || definitions.length === 0) {
|
|
4664
|
+
return [];
|
|
4665
|
+
}
|
|
4666
|
+
const result = [];
|
|
4667
|
+
for (const definition of definitions) {
|
|
4668
|
+
if (definition.type !== "LINKED_PROPERTY") {
|
|
4669
|
+
continue;
|
|
4670
|
+
}
|
|
4671
|
+
const key = getFilterKey(definition);
|
|
4672
|
+
if (key === excludeFilterKey) {
|
|
4673
|
+
continue;
|
|
4674
|
+
}
|
|
4675
|
+
const state = filterStates.get(key);
|
|
4676
|
+
if (!state || state.type !== "linkedProperty") {
|
|
4677
|
+
continue;
|
|
4678
|
+
}
|
|
4679
|
+
if (definition.reverseLinkName == null) {
|
|
4680
|
+
continue;
|
|
4681
|
+
}
|
|
4682
|
+
const innerWhere = buildLinkedInnerWhere(definition, state);
|
|
4683
|
+
if (innerWhere === void 0) {
|
|
4684
|
+
continue;
|
|
4685
|
+
}
|
|
4686
|
+
result.push({
|
|
4687
|
+
linkName: definition.linkName,
|
|
4688
|
+
reverseLinkName: definition.reverseLinkName,
|
|
4689
|
+
innerWhere
|
|
4690
|
+
});
|
|
4691
|
+
}
|
|
4692
|
+
return result;
|
|
4693
|
+
}
|
|
4509
4694
|
function buildValueOrNullFilter(values) {
|
|
4510
4695
|
if (values.length === 0) {
|
|
4511
4696
|
return void 0;
|
|
@@ -4592,9 +4777,11 @@ function buildInitialStates(definitions) {
|
|
|
4592
4777
|
function useFilterListState(props) {
|
|
4593
4778
|
const {
|
|
4594
4779
|
objectType,
|
|
4780
|
+
objectSet,
|
|
4595
4781
|
filterDefinitions,
|
|
4596
4782
|
onFilterStateChanged,
|
|
4597
4783
|
onFilterClauseChanged,
|
|
4784
|
+
onEffectiveObjectSet,
|
|
4598
4785
|
initialFilterStates
|
|
4599
4786
|
} = props;
|
|
4600
4787
|
const {
|
|
@@ -4602,6 +4789,10 @@ function useFilterListState(props) {
|
|
|
4602
4789
|
} = react.useOsdkMetadata(objectType);
|
|
4603
4790
|
const onFilterClauseChangedRef = React13.useRef(onFilterClauseChanged);
|
|
4604
4791
|
onFilterClauseChangedRef.current = onFilterClauseChanged;
|
|
4792
|
+
const onEffectiveObjectSetRef = React13.useRef(onEffectiveObjectSet);
|
|
4793
|
+
onEffectiveObjectSetRef.current = onEffectiveObjectSet;
|
|
4794
|
+
const filterDefinitionsRef = React13.useRef(filterDefinitions);
|
|
4795
|
+
filterDefinitionsRef.current = filterDefinitions;
|
|
4605
4796
|
const propertyTypes = React13.useMemo(() => {
|
|
4606
4797
|
const map = /* @__PURE__ */ new Map();
|
|
4607
4798
|
if (metadata?.properties) {
|
|
@@ -4617,13 +4808,13 @@ function useFilterListState(props) {
|
|
|
4617
4808
|
return map;
|
|
4618
4809
|
}, [metadata?.properties]);
|
|
4619
4810
|
const [filterStates, setFilterStates] = React13.useState(() => {
|
|
4620
|
-
const
|
|
4811
|
+
const initial = buildInitialStates(filterDefinitions);
|
|
4621
4812
|
if (initialFilterStates) {
|
|
4622
4813
|
for (const [key, state] of initialFilterStates) {
|
|
4623
|
-
|
|
4814
|
+
initial.set(key, state);
|
|
4624
4815
|
}
|
|
4625
4816
|
}
|
|
4626
|
-
return
|
|
4817
|
+
return initial;
|
|
4627
4818
|
});
|
|
4628
4819
|
const setFilterState = React13.useCallback((filterKey, state) => {
|
|
4629
4820
|
setFilterStates((prev) => {
|
|
@@ -4631,11 +4822,11 @@ function useFilterListState(props) {
|
|
|
4631
4822
|
next.set(filterKey, state);
|
|
4632
4823
|
return next;
|
|
4633
4824
|
});
|
|
4634
|
-
const definition =
|
|
4825
|
+
const definition = filterDefinitionsRef.current?.find((d) => getFilterKey(d) === filterKey);
|
|
4635
4826
|
if (definition) {
|
|
4636
4827
|
onFilterStateChanged?.(definition, state);
|
|
4637
4828
|
}
|
|
4638
|
-
}, [
|
|
4829
|
+
}, [onFilterStateChanged]);
|
|
4639
4830
|
const clearFilterState = React13.useCallback((filterKey) => {
|
|
4640
4831
|
setFilterStates((prev) => {
|
|
4641
4832
|
const next = new Map(prev);
|
|
@@ -4643,10 +4834,21 @@ function useFilterListState(props) {
|
|
|
4643
4834
|
return next;
|
|
4644
4835
|
});
|
|
4645
4836
|
}, []);
|
|
4837
|
+
const reset = React13.useCallback(() => {
|
|
4838
|
+
setFilterStates(buildInitialStates(filterDefinitionsRef.current));
|
|
4839
|
+
}, []);
|
|
4646
4840
|
const whereClause = React13.useMemo(() => buildWhereClause(filterDefinitions, filterStates, propertyTypes), [filterDefinitions, filterStates, propertyTypes]);
|
|
4841
|
+
const linkedFilters = React13.useMemo(() => getActiveLinkedFilters(filterDefinitions, filterStates), [filterDefinitions, filterStates]);
|
|
4842
|
+
const effectiveObjectSet = React13.useMemo(() => objectSet == null ? void 0 : narrowObjectSet(objectSet, whereClause, linkedFilters), [objectSet, whereClause, linkedFilters]);
|
|
4647
4843
|
React13.useEffect(() => {
|
|
4648
4844
|
onFilterClauseChangedRef.current?.(whereClause);
|
|
4649
4845
|
}, [whereClause]);
|
|
4846
|
+
React13.useEffect(() => {
|
|
4847
|
+
if (effectiveObjectSet == null) {
|
|
4848
|
+
return;
|
|
4849
|
+
}
|
|
4850
|
+
onEffectiveObjectSetRef.current?.(effectiveObjectSet);
|
|
4851
|
+
}, [effectiveObjectSet]);
|
|
4650
4852
|
const perFilterWhereClauses = useStableMapEntries(React13.useMemo(() => {
|
|
4651
4853
|
const map = /* @__PURE__ */ new Map();
|
|
4652
4854
|
for (const definition of filterDefinitions ?? []) {
|
|
@@ -4655,6 +4857,14 @@ function useFilterListState(props) {
|
|
|
4655
4857
|
}
|
|
4656
4858
|
return map;
|
|
4657
4859
|
}, [filterDefinitions, filterStates, propertyTypes]));
|
|
4860
|
+
const perFilterLinkedFilters = useStableMapEntries(React13.useMemo(() => {
|
|
4861
|
+
const map = /* @__PURE__ */ new Map();
|
|
4862
|
+
for (const definition of filterDefinitions ?? []) {
|
|
4863
|
+
const key = getFilterKey(definition);
|
|
4864
|
+
map.set(key, getActiveLinkedFilters(filterDefinitions, filterStates, key));
|
|
4865
|
+
}
|
|
4866
|
+
return map;
|
|
4867
|
+
}, [filterDefinitions, filterStates]));
|
|
4658
4868
|
const activeFilterCount = React13.useMemo(() => {
|
|
4659
4869
|
let count = 0;
|
|
4660
4870
|
for (const state of filterStates.values()) {
|
|
@@ -4664,18 +4874,17 @@ function useFilterListState(props) {
|
|
|
4664
4874
|
}
|
|
4665
4875
|
return count;
|
|
4666
4876
|
}, [filterStates]);
|
|
4667
|
-
const reset = React13.useCallback(() => {
|
|
4668
|
-
setFilterStates(buildInitialStates(filterDefinitions));
|
|
4669
|
-
}, [filterDefinitions]);
|
|
4670
4877
|
return React13.useMemo(() => ({
|
|
4671
4878
|
filterStates,
|
|
4672
4879
|
setFilterState,
|
|
4673
4880
|
clearFilterState,
|
|
4674
4881
|
whereClause,
|
|
4882
|
+
linkedFilters,
|
|
4675
4883
|
perFilterWhereClauses,
|
|
4884
|
+
perFilterLinkedFilters,
|
|
4676
4885
|
activeFilterCount,
|
|
4677
4886
|
reset
|
|
4678
|
-
}), [filterStates, setFilterState, clearFilterState, whereClause, perFilterWhereClauses, activeFilterCount, reset]);
|
|
4887
|
+
}), [filterStates, setFilterState, clearFilterState, whereClause, linkedFilters, perFilterWhereClauses, perFilterLinkedFilters, activeFilterCount, reset]);
|
|
4679
4888
|
}
|
|
4680
4889
|
function useFilterVisibility(filterDefinitions, onVisibilityChange) {
|
|
4681
4890
|
const allKeys = React13.useMemo(() => filterDefinitions?.map(getFilterKey) ?? [], [filterDefinitions]);
|
|
@@ -4805,6 +5014,7 @@ function getFilterLabel(definition) {
|
|
|
4805
5014
|
}
|
|
4806
5015
|
|
|
4807
5016
|
// src/filter-list/FilterList.tsx
|
|
5017
|
+
var EMPTY_WHERE = {};
|
|
4808
5018
|
function FilterList(props) {
|
|
4809
5019
|
const {
|
|
4810
5020
|
objectType,
|
|
@@ -4818,6 +5028,7 @@ function FilterList(props) {
|
|
|
4818
5028
|
showResetButton = false,
|
|
4819
5029
|
onReset,
|
|
4820
5030
|
showActiveFilterCount = false,
|
|
5031
|
+
showFilteredOutValues = false,
|
|
4821
5032
|
className,
|
|
4822
5033
|
enableSorting,
|
|
4823
5034
|
onFilterAdded,
|
|
@@ -4830,6 +5041,7 @@ function FilterList(props) {
|
|
|
4830
5041
|
setFilterState,
|
|
4831
5042
|
clearFilterState,
|
|
4832
5043
|
perFilterWhereClauses,
|
|
5044
|
+
perFilterLinkedFilters,
|
|
4833
5045
|
activeFilterCount,
|
|
4834
5046
|
reset
|
|
4835
5047
|
} = useFilterListState(props);
|
|
@@ -4913,10 +5125,12 @@ function FilterList(props) {
|
|
|
4913
5125
|
definition,
|
|
4914
5126
|
filterState,
|
|
4915
5127
|
onFilterStateChanged,
|
|
4916
|
-
whereClause: perFilterWhereClauses.get(filterKey) ??
|
|
5128
|
+
whereClause: perFilterWhereClauses.get(filterKey) ?? EMPTY_WHERE,
|
|
5129
|
+
linkedFilters: perFilterLinkedFilters.get(filterKey) ?? EMPTY_LINKED_FILTERS,
|
|
5130
|
+
showFilteredOutValues,
|
|
4917
5131
|
searchQuery,
|
|
4918
5132
|
excludeRowOpen
|
|
4919
|
-
}), [objectType, objectSet, perFilterWhereClauses]);
|
|
5133
|
+
}), [objectType, objectSet, perFilterWhereClauses, perFilterLinkedFilters, showFilteredOutValues]);
|
|
4920
5134
|
return /* @__PURE__ */ React13__default.default.createElement(BaseFilterList, {
|
|
4921
5135
|
title,
|
|
4922
5136
|
titleIcon,
|
|
@@ -5105,7 +5319,7 @@ function summarizeFilterValue(definition, state) {
|
|
|
5105
5319
|
}
|
|
5106
5320
|
|
|
5107
5321
|
// src/public/experimental/filter-list.ts
|
|
5108
|
-
var FilterList2 =
|
|
5322
|
+
var FilterList2 = chunkNOONKE5X_cjs.withOsdkMetrics(FilterList, "FilterList");
|
|
5109
5323
|
|
|
5110
5324
|
exports.BaseFilterList = BaseFilterList;
|
|
5111
5325
|
exports.FilterInput = FilterInput;
|
|
@@ -5115,8 +5329,9 @@ exports.deserializeFilterStates = deserializeFilterStates;
|
|
|
5115
5329
|
exports.filterHasActiveState = filterHasActiveState;
|
|
5116
5330
|
exports.getFilterKey = getFilterKey;
|
|
5117
5331
|
exports.getFilterLabel = getFilterLabel;
|
|
5332
|
+
exports.narrowObjectSet = narrowObjectSet;
|
|
5118
5333
|
exports.serializeFilterStates = serializeFilterStates;
|
|
5119
5334
|
exports.summarizeFilterValue = summarizeFilterValue;
|
|
5120
5335
|
exports.useFilterListState = useFilterListState;
|
|
5121
|
-
//# sourceMappingURL=chunk-
|
|
5122
|
-
//# sourceMappingURL=chunk-
|
|
5336
|
+
//# sourceMappingURL=chunk-PUZZZTC7.cjs.map
|
|
5337
|
+
//# sourceMappingURL=chunk-PUZZZTC7.cjs.map
|