@gooddata/sdk-ui-filters 11.15.0 → 11.16.0-alpha.1

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.
Files changed (90) hide show
  1. package/esm/AttributeFilter/AttributeFilterProviders.d.ts.map +1 -1
  2. package/esm/AttributeFilter/AttributeFilterProviders.js +2 -2
  3. package/esm/AttributeFilter/AttributeFilterProviders.js.map +1 -1
  4. package/esm/AttributeFilter/Components/Dropdown/AttributeFilterDropdown.d.ts.map +1 -1
  5. package/esm/AttributeFilter/Components/Dropdown/AttributeFilterDropdown.js +2 -2
  6. package/esm/AttributeFilter/Components/Dropdown/AttributeFilterDropdown.js.map +1 -1
  7. package/esm/AttributeFilter/Components/DropdownButton/AttributeFilterDropdownButton.d.ts +7 -1
  8. package/esm/AttributeFilter/Components/DropdownButton/AttributeFilterDropdownButton.d.ts.map +1 -1
  9. package/esm/AttributeFilter/Components/DropdownButton/AttributeFilterDropdownButton.js +13 -3
  10. package/esm/AttributeFilter/Components/DropdownButton/AttributeFilterDropdownButton.js.map +1 -1
  11. package/esm/AttributeFilter/Context/AttributeFilterContext.d.ts +1 -1
  12. package/esm/AttributeFilter/Context/AttributeFilterContext.d.ts.map +1 -1
  13. package/esm/AttributeFilter/Context/AttributeFilterContext.js +2 -1
  14. package/esm/AttributeFilter/Context/AttributeFilterContext.js.map +1 -1
  15. package/esm/AttributeFilter/hooks/useAttributeFilterController.d.ts.map +1 -1
  16. package/esm/AttributeFilter/hooks/useAttributeFilterController.js +28 -2
  17. package/esm/AttributeFilter/hooks/useAttributeFilterController.js.map +1 -1
  18. package/esm/AttributeFilter/types.d.ts +14 -2
  19. package/esm/AttributeFilter/types.d.ts.map +1 -1
  20. package/esm/DateFilter/DateFilter.d.ts +16 -1
  21. package/esm/DateFilter/DateFilter.d.ts.map +1 -1
  22. package/esm/DateFilter/DateFilter.js +4 -4
  23. package/esm/DateFilter/DateFilter.js.map +1 -1
  24. package/esm/DateFilter/DateFilterBody/DateFilterBody.d.ts +6 -1
  25. package/esm/DateFilter/DateFilterBody/DateFilterBody.d.ts.map +1 -1
  26. package/esm/DateFilter/DateFilterBody/DateFilterBody.js +3 -3
  27. package/esm/DateFilter/DateFilterBody/DateFilterBody.js.map +1 -1
  28. package/esm/DateFilter/DateFilterBody/DateFilterBodyContent.d.ts +6 -2
  29. package/esm/DateFilter/DateFilterBody/DateFilterBodyContent.d.ts.map +1 -1
  30. package/esm/DateFilter/DateFilterBody/DateFilterBodyContent.js +5 -5
  31. package/esm/DateFilter/DateFilterBody/DateFilterBodyContent.js.map +1 -1
  32. package/esm/DateFilter/DateFilterBody/DateFilterBodyMobileContent.d.ts +6 -2
  33. package/esm/DateFilter/DateFilterBody/DateFilterBodyMobileContent.d.ts.map +1 -1
  34. package/esm/DateFilter/DateFilterBody/DateFilterBodyMobileContent.js +6 -6
  35. package/esm/DateFilter/DateFilterBody/DateFilterBodyMobileContent.js.map +1 -1
  36. package/esm/DateFilter/DateFilterBody/DateFilterBodyRedesigned.d.ts.map +1 -1
  37. package/esm/DateFilter/DateFilterBody/DateFilterBodyRedesigned.js +5 -5
  38. package/esm/DateFilter/DateFilterBody/DateFilterBodyRedesigned.js.map +1 -1
  39. package/esm/DateFilter/DateFilterCore.d.ts +8 -1
  40. package/esm/DateFilter/DateFilterCore.d.ts.map +1 -1
  41. package/esm/DateFilter/DateFilterCore.js +1 -1
  42. package/esm/DateFilter/DateFilterCore.js.map +1 -1
  43. package/esm/DateFilter/index.d.ts +8 -8
  44. package/esm/DateFilter/index.d.ts.map +1 -1
  45. package/esm/DateFilter/index.js +2 -2
  46. package/esm/DateFilter/index.js.map +1 -1
  47. package/esm/DateFilter/utils/presetFilterUtils.d.ts +29 -3
  48. package/esm/DateFilter/utils/presetFilterUtils.d.ts.map +1 -1
  49. package/esm/DateFilter/utils/presetFilterUtils.js +45 -5
  50. package/esm/DateFilter/utils/presetFilterUtils.js.map +1 -1
  51. package/esm/FilterGroup/FilterGroup.d.ts +15 -0
  52. package/esm/FilterGroup/FilterGroup.d.ts.map +1 -0
  53. package/esm/FilterGroup/FilterGroup.js +101 -0
  54. package/esm/FilterGroup/FilterGroup.js.map +1 -0
  55. package/esm/FilterGroup/index.d.ts +2 -0
  56. package/esm/FilterGroup/index.d.ts.map +1 -0
  57. package/esm/FilterGroup/index.js +3 -0
  58. package/esm/FilterGroup/index.js.map +1 -0
  59. package/esm/FilterGroup/useFilterGroupStatus.d.ts +25 -0
  60. package/esm/FilterGroup/useFilterGroupStatus.d.ts.map +1 -0
  61. package/esm/FilterGroup/useFilterGroupStatus.js +69 -0
  62. package/esm/FilterGroup/useFilterGroupStatus.js.map +1 -0
  63. package/esm/MeasureValueFilter/DateDatasetPickerItem.d.ts.map +1 -1
  64. package/esm/MeasureValueFilter/DateDatasetPickerItem.js +20 -14
  65. package/esm/MeasureValueFilter/DateDatasetPickerItem.js.map +1 -1
  66. package/esm/MeasureValueFilter/DropdownBody.d.ts.map +1 -1
  67. package/esm/MeasureValueFilter/DropdownBody.js +3 -66
  68. package/esm/MeasureValueFilter/DropdownBody.js.map +1 -1
  69. package/esm/MeasureValueFilter/PreviewSection.d.ts +16 -0
  70. package/esm/MeasureValueFilter/PreviewSection.d.ts.map +1 -0
  71. package/esm/MeasureValueFilter/PreviewSection.js +98 -0
  72. package/esm/MeasureValueFilter/PreviewSection.js.map +1 -0
  73. package/esm/MeasureValueFilter/useAttributePickerItemsData.d.ts.map +1 -1
  74. package/esm/MeasureValueFilter/useAttributePickerItemsData.js +66 -59
  75. package/esm/MeasureValueFilter/useAttributePickerItemsData.js.map +1 -1
  76. package/esm/index.d.ts +2 -1
  77. package/esm/index.d.ts.map +1 -1
  78. package/esm/index.js +3 -2
  79. package/esm/index.js.map +1 -1
  80. package/esm/sdk-ui-filters.d.ts +87 -11
  81. package/package.json +10 -10
  82. package/styles/css/filterGroup.css +27 -0
  83. package/styles/css/filterGroup.css.map +1 -0
  84. package/styles/css/main.css +38 -12
  85. package/styles/css/main.css.map +1 -1
  86. package/styles/css/measureValueFilter.css +12 -12
  87. package/styles/css/measureValueFilter.css.map +1 -1
  88. package/styles/scss/filterGroup.scss +34 -0
  89. package/styles/scss/main.scss +1 -0
  90. package/styles/scss/measureValueFilter.scss +14 -14
@@ -0,0 +1,98 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // (C) 2019-2026 GoodData Corporation
3
+ import { memo, useMemo } from "react";
4
+ import { useIntl } from "react-intl";
5
+ import { isComparisonConditionOperator, isRangeConditionOperator, } from "@gooddata/sdk-model";
6
+ import { messages } from "@gooddata/sdk-ui";
7
+ import { UiTooltip, formatNumberWithSeparators } from "@gooddata/sdk-ui-kit";
8
+ import { getOperatorWithValueTranslationKey } from "./helpers/measureValueFilterOperator.js";
9
+ /**
10
+ * Threshold for shortening dimensionality titles.
11
+ * When there are more items than this, the list is shortened with a count indicator.
12
+ */
13
+ const DIMENSIONALITY_SHORTEN_THRESHOLD = 3;
14
+ /**
15
+ * Builds shortened dimensionality display with count indicator.
16
+ * Returns shortened text for display and full text for tooltip when there are more items than the threshold.
17
+ */
18
+ const buildShortenedDimensionality = (items) => {
19
+ const titles = items.map((item) => item.title).filter(Boolean);
20
+ if (titles.length === 0) {
21
+ return { shortenedText: "", fullText: undefined, additionalCount: undefined };
22
+ }
23
+ const fullText = titles.join(", ");
24
+ if (titles.length <= DIMENSIONALITY_SHORTEN_THRESHOLD) {
25
+ return { shortenedText: fullText, fullText: undefined, additionalCount: undefined };
26
+ }
27
+ // Shorten to first 3 items with count indicator
28
+ const shortenedTitles = titles.slice(0, DIMENSIONALITY_SHORTEN_THRESHOLD);
29
+ const additionalCount = titles.length - DIMENSIONALITY_SHORTEN_THRESHOLD;
30
+ const shortenedText = `${shortenedTitles.join(", ")}...`;
31
+ return { shortenedText, fullText, additionalCount };
32
+ };
33
+ const formatNumberForPreview = (value, separators, suffix) => {
34
+ if (value === null || value === undefined || isNaN(value)) {
35
+ return undefined;
36
+ }
37
+ const formattedNumber = formatNumberWithSeparators(value, separators);
38
+ return `${formattedNumber}${suffix}`;
39
+ };
40
+ const getConditionLabel = (operator, value, from, to, separators, suffix, intl) => {
41
+ if (isComparisonConditionOperator(operator)) {
42
+ const formattedValue = formatNumberForPreview(value, separators, suffix);
43
+ return formattedValue == undefined
44
+ ? undefined
45
+ : intl.formatMessage({ id: getOperatorWithValueTranslationKey(operator) }, { value: formattedValue });
46
+ }
47
+ if (isRangeConditionOperator(operator)) {
48
+ const formattedFrom = formatNumberForPreview(from, separators, suffix);
49
+ const formattedTo = formatNumberForPreview(to, separators, suffix);
50
+ return formattedFrom === undefined || formattedTo === undefined
51
+ ? undefined
52
+ : intl.formatMessage({ id: getOperatorWithValueTranslationKey(operator) }, {
53
+ from: formattedFrom,
54
+ to: formattedTo,
55
+ });
56
+ }
57
+ return undefined;
58
+ };
59
+ export const PreviewSection = memo(function PreviewSection({ operator, measureTitle, usePercentage, separators, dimensionality, value, from, to, }) {
60
+ const intl = useIntl();
61
+ const textPreview = useMemo(() => {
62
+ if (operator === "ALL") {
63
+ return null;
64
+ }
65
+ const suffix = usePercentage ? "%" : "";
66
+ const condition = getConditionLabel(operator, value, from, to, separators, suffix, intl);
67
+ if (!condition) {
68
+ return null;
69
+ }
70
+ if (!measureTitle) {
71
+ return null;
72
+ }
73
+ const { shortenedText, fullText, additionalCount } = buildShortenedDimensionality(dimensionality);
74
+ const placeholderValues = {
75
+ metric: measureTitle,
76
+ condition,
77
+ dimensionality: shortenedText || undefined,
78
+ count: additionalCount,
79
+ b: (chunk) => _jsx("b", { children: chunk }),
80
+ };
81
+ if (dimensionality.length > 0 && shortenedText) {
82
+ // Use shortened variant when there are hidden items
83
+ const message = additionalCount === undefined
84
+ ? messages["mvfPreviewFilterWithDimensionality"]
85
+ : messages["mvfPreviewFilterWithDimensionalityShortened"];
86
+ return { content: intl.formatMessage(message, placeholderValues), tooltip: fullText };
87
+ }
88
+ return {
89
+ content: intl.formatMessage(messages["mvfPreviewFilterWithoutDimensionality"], placeholderValues),
90
+ tooltip: fullText,
91
+ };
92
+ }, [operator, dimensionality, separators, usePercentage, measureTitle, intl, value, from, to]);
93
+ if (!textPreview) {
94
+ return null;
95
+ }
96
+ return (_jsxs("div", { className: "gd-mvf-preview", children: [_jsx("div", { className: "gd-mvf-preview-header", children: intl.formatMessage(messages["mvfPreviewTitle"]) }), textPreview.tooltip ? (_jsx(UiTooltip, { anchor: _jsx("div", { className: "gd-mvf-preview-content", "data-testid": "mvf-preview-text", children: textPreview.content }), content: textPreview.tooltip, arrowPlacement: "left", triggerBy: ["hover"], width: "same-as-anchor", optimalPlacement: true })) : (_jsx("div", { className: "gd-mvf-preview-content", "data-testid": "mvf-preview-text", children: textPreview.content }))] }));
97
+ });
98
+ //# sourceMappingURL=PreviewSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PreviewSection.js","sourceRoot":"","sources":["../../src/MeasureValueFilter/PreviewSection.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAttributePickerItemsData.d.ts","sourceRoot":"","sources":["../../src/MeasureValueFilter/useAttributePickerItemsData.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,eAAO,MAAM,wBAAwB,GAAI,MAAM,mBAAmB,YACE,CAAC;AAErE,MAAM,MAAM,qBAAqB,GAAG,GAAG,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,mBAAmB,EAAE,CAAA;CAAE,CAAC,CAAC;AAEjG,UAAU,kCAAkC;IACxC,qBAAqB,EAAE,mBAAmB,EAAE,CAAC;IAC7C,qBAAqB,EAAE,mBAAmB,EAAE,CAAC;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,WAAW,GAAG,MAAM,CAAC;IAC1C,+BAA+B,EAAE,MAAM,GAAG,SAAS,CAAC;CACvD;AAED,UAAU,kCAAkC;IACxC,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,qBAAqB,EAAE,qBAAqB,CAAC;CAChD;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,EACxC,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,EACnB,+BAA+B,GAClC,EAAE,kCAAkC,GAAG,kCAAkC,CAuFzE"}
1
+ {"version":3,"file":"useAttributePickerItemsData.d.ts","sourceRoot":"","sources":["../../src/MeasureValueFilter/useAttributePickerItemsData.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,eAAO,MAAM,wBAAwB,GAAI,MAAM,mBAAmB,YACE,CAAC;AAErE,MAAM,MAAM,qBAAqB,GAAG,GAAG,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,mBAAmB,EAAE,CAAA;CAAE,CAAC,CAAC;AA6EjG,UAAU,kCAAkC;IACxC,qBAAqB,EAAE,mBAAmB,EAAE,CAAC;IAC7C,qBAAqB,EAAE,mBAAmB,EAAE,CAAC;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,WAAW,GAAG,MAAM,CAAC;IAC1C,+BAA+B,EAAE,MAAM,GAAG,SAAS,CAAC;CACvD;AAED,UAAU,kCAAkC;IACxC,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,qBAAqB,EAAE,qBAAqB,CAAC;CAChD;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,EACxC,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,EACnB,+BAA+B,GAClC,EAAE,kCAAkC,GAAG,kCAAkC,CAqCzE"}
@@ -1,7 +1,61 @@
1
- // (C) 2025 GoodData Corporation
1
+ // (C) 2025-2026 GoodData Corporation
2
2
  import { useMemo } from "react";
3
3
  import { objRefToString } from "@gooddata/sdk-model";
4
4
  export const isDateDimensionalityItem = (item) => item.type === "chronologicalDate" || item.type === "genericDate";
5
+ function filterItemsByType(items, effectiveTypeFilter) {
6
+ const filterByType = (item) => effectiveTypeFilter === "date" ? isDateDimensionalityItem(item) : !isDateDimensionalityItem(item);
7
+ return items.filter(filterByType);
8
+ }
9
+ function dedupeCatalogAgainstInsight(insightItems, catalogItems) {
10
+ // Remove duplicates: items that are already present in "From visualization" should not appear in catalog.
11
+ // Prefer ref-based dedupe when bucket items provide `ref` (display form ObjRef); fallback to title otherwise.
12
+ const insightRefKeys = new Set(insightItems.map((i) => (i.ref ? objRefToString(i.ref) : undefined)).filter((x) => !!x));
13
+ const insightTitlesWithoutRef = new Set(insightItems.filter((i) => !i.ref).map((i) => i.title));
14
+ return catalogItems.filter((item) => {
15
+ const itemKey = objRefToString(item.identifier);
16
+ if (insightRefKeys.has(itemKey)) {
17
+ return false;
18
+ }
19
+ return !insightTitlesWithoutRef.has(item.title);
20
+ });
21
+ }
22
+ function filterCatalogBySelectedDateDataset(catalogItems, effectiveTypeFilter, effectiveSelectedDateDatasetKey) {
23
+ // If we are in the Date tab, filter date items by selected date dataset
24
+ if (effectiveTypeFilter !== "date" || !effectiveSelectedDateDatasetKey) {
25
+ return catalogItems;
26
+ }
27
+ const matchesSelectedDataset = (item) => {
28
+ if (!item.dataset) {
29
+ // Should not happen once the app provides dataset for all date items; keep as fallback.
30
+ return true;
31
+ }
32
+ return objRefToString(item.dataset.identifier) === effectiveSelectedDateDatasetKey;
33
+ };
34
+ // Insight ("From visualization") date items should always remain visible. (This only filters catalog items.)
35
+ return catalogItems.filter(matchesSelectedDataset);
36
+ }
37
+ function filterItemsBySearch(items, searchString) {
38
+ // Apply search filter
39
+ if (!searchString.trim()) {
40
+ return items;
41
+ }
42
+ const lowerSearch = searchString.toLowerCase();
43
+ return items.filter((item) => item.title.toLowerCase().includes(lowerSearch));
44
+ }
45
+ function groupCatalogItemsByDataset(catalogItems) {
46
+ // Group catalog items by dataset (Attribute tab)
47
+ const grouped = new Map();
48
+ catalogItems.forEach((item) => {
49
+ if (item.dataset) {
50
+ const datasetKey = objRefToString(item.dataset.identifier);
51
+ if (!grouped.has(datasetKey)) {
52
+ grouped.set(datasetKey, { title: item.dataset.title, items: [] });
53
+ }
54
+ grouped.get(datasetKey).items.push(item);
55
+ }
56
+ });
57
+ return grouped;
58
+ }
5
59
  /**
6
60
  * @internal
7
61
  * Hook that filters and groups attribute picker items based on type filter, search, and date dataset selection.
@@ -9,71 +63,24 @@ export const isDateDimensionalityItem = (item) => item.type === "chronologicalDa
9
63
  export function useAttributePickerItemsData({ availableInsightItems, availableCatalogItems, searchString, effectiveTypeFilter, effectiveSelectedDateDatasetKey, }) {
10
64
  return useMemo(() => {
11
65
  // Start from explicit sources so the separation logic cannot drift.
12
- let insightItemsList = availableInsightItems;
13
- let catalogItemsList = availableCatalogItems;
14
- // Apply type filter
15
- const filterByType = (item) => {
16
- return effectiveTypeFilter === "date"
17
- ? isDateDimensionalityItem(item)
18
- : !isDateDimensionalityItem(item);
19
- };
20
- insightItemsList = insightItemsList.filter(filterByType);
21
- catalogItemsList = catalogItemsList.filter(filterByType);
22
- // Remove duplicates: items that are already present in "From visualization" should not appear in catalog.
23
- // Prefer ref-based dedupe when bucket items provide `ref` (display form ObjRef); fallback to title otherwise.
24
- const insightRefKeys = new Set(insightItemsList
25
- .map((i) => (i.ref ? objRefToString(i.ref) : undefined))
26
- .filter((x) => !!x));
27
- const insightTitlesWithoutRef = new Set(insightItemsList.filter((i) => !i.ref).map((i) => i.title));
28
- catalogItemsList = catalogItemsList.filter((item) => {
29
- const itemKey = objRefToString(item.identifier);
30
- if (insightRefKeys.has(itemKey)) {
31
- return false;
32
- }
33
- return !insightTitlesWithoutRef.has(item.title);
34
- });
35
- // If we are in the Date tab, filter date items by selected date dataset
36
- if (effectiveTypeFilter === "date" && effectiveSelectedDateDatasetKey) {
37
- const matchesSelectedDataset = (item) => {
38
- if (!item.dataset) {
39
- // Should not happen once the app provides dataset for all date items; keep as fallback.
40
- return true;
41
- }
42
- return objRefToString(item.dataset.identifier) === effectiveSelectedDateDatasetKey;
43
- };
44
- // Insight ("From visualization") date items should always remain visible.
45
- catalogItemsList = catalogItemsList.filter(matchesSelectedDataset);
46
- }
47
- // Apply search filter
48
- if (searchString.trim()) {
49
- const lowerSearch = searchString.toLowerCase();
50
- const filterBySearch = (item) => item.title.toLowerCase().includes(lowerSearch);
51
- insightItemsList = insightItemsList.filter(filterBySearch);
52
- catalogItemsList = catalogItemsList.filter(filterBySearch);
53
- }
66
+ const insightItemsAfterType = filterItemsByType(availableInsightItems, effectiveTypeFilter);
67
+ const catalogItemsAfterType = filterItemsByType(availableCatalogItems, effectiveTypeFilter);
68
+ const dedupedCatalog = dedupeCatalogAgainstInsight(insightItemsAfterType, catalogItemsAfterType);
69
+ const dateDatasetFilteredCatalog = filterCatalogBySelectedDateDataset(dedupedCatalog, effectiveTypeFilter, effectiveSelectedDateDatasetKey);
70
+ const filteredInsightItems = filterItemsBySearch(insightItemsAfterType, searchString);
71
+ const filteredCatalogItems = filterItemsBySearch(dateDatasetFilteredCatalog, searchString);
54
72
  // For Date tab, we do not render dataset headers in the list (dataset is selected via "Date as").
55
73
  if (effectiveTypeFilter === "date") {
56
74
  return {
57
- filteredInsightItems: insightItemsList,
58
- filteredCatalogItems: catalogItemsList,
75
+ filteredInsightItems,
76
+ filteredCatalogItems,
59
77
  catalogItemsByDataset: new Map(),
60
78
  };
61
79
  }
62
- // Group catalog items by dataset (Attribute tab)
63
- const grouped = new Map();
64
- catalogItemsList.forEach((item) => {
65
- if (item.dataset) {
66
- const datasetKey = objRefToString(item.dataset.identifier);
67
- if (!grouped.has(datasetKey)) {
68
- grouped.set(datasetKey, { title: item.dataset.title, items: [] });
69
- }
70
- grouped.get(datasetKey).items.push(item);
71
- }
72
- });
73
80
  return {
74
- filteredInsightItems: insightItemsList,
75
- catalogItemsByDataset: grouped,
76
- filteredCatalogItems: catalogItemsList,
81
+ filteredInsightItems,
82
+ catalogItemsByDataset: groupCatalogItemsByDataset(filteredCatalogItems),
83
+ filteredCatalogItems,
77
84
  };
78
85
  }, [
79
86
  availableInsightItems,
@@ -1 +1 @@
1
- {"version":3,"file":"useAttributePickerItemsData.js","sourceRoot":"","sources":["../../src/MeasureValueFilter/useAttributePickerItemsData.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useAttributePickerItemsData.js","sourceRoot":"","sources":["../../src/MeasureValueFilter/useAttributePickerItemsData.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAAyB,EAAE,EAAE,CAClE,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC;AAIrE,SAAS,iBAAiB,CACtB,KAA4B,EAC5B,mBAAyC;IAEzC,MAAM,YAAY,GAAG,CAAC,IAAyB,EAAE,EAAE,CAC/C,mBAAmB,KAAK,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACtG,OAAO,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,2BAA2B,CAChC,YAAmC,EACnC,YAAmC;IAEnC,0GAA0G;IAC1G,8GAA8G;IAC9G,MAAM,cAAc,GAAG,IAAI,GAAG,CAC1B,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACvG,CAAC;IACF,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAEhG,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,kCAAkC,CACvC,YAAmC,EACnC,mBAAyC,EACzC,+BAAmD;IAEnD,wEAAwE;IACxE,IAAI,mBAAmB,KAAK,MAAM,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACrE,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,MAAM,sBAAsB,GAAG,CAAC,IAAyB,EAAE,EAAE;QACzD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,wFAAwF;YACxF,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,+BAA+B,CAAC;IACvF,CAAC,CAAC;IAEF,6GAA6G;IAC7G,OAAO,YAAY,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,mBAAmB,CAAC,KAA4B,EAAE,YAAoB;IAC3E,sBAAsB;IACtB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAC/C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,0BAA0B,CAAC,YAAmC;IACnE,iDAAiD;IACjD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2D,CAAC;IACnF,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACnB,CAAC;AAgBD;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,EACxC,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,EACnB,+BAA+B,GACE;IACjC,OAAO,OAAO,CAAC,GAAG,EAAE;QAChB,oEAAoE;QACpE,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAC;QAC5F,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAC;QAE5F,MAAM,cAAc,GAAG,2BAA2B,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAC;QACjG,MAAM,0BAA0B,GAAG,kCAAkC,CACjE,cAAc,EACd,mBAAmB,EACnB,+BAA+B,CAClC,CAAC;QAEF,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;QACtF,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAC;QAE3F,kGAAkG;QAClG,IAAI,mBAAmB,KAAK,MAAM,EAAE,CAAC;YACjC,OAAO;gBACH,oBAAoB;gBACpB,oBAAoB;gBACpB,qBAAqB,EAAE,IAAI,GAAG,EAA2D;aAC5F,CAAC;QACN,CAAC;QAED,OAAO;YACH,oBAAoB;YACpB,qBAAqB,EAAE,0BAA0B,CAAC,oBAAoB,CAAC;YACvE,oBAAoB;SACvB,CAAC;IACN,CAAC,EAAE;QACC,qBAAqB;QACrB,qBAAqB;QACrB,YAAY;QACZ,mBAAmB;QACnB,+BAA+B;KAClC,CAAC,CAAC;AACP,CAAC"}
package/esm/index.d.ts CHANGED
@@ -8,7 +8,7 @@
8
8
  * @packageDocumentation
9
9
  */
10
10
  export type { IDateFilterCallbackProps, IDateFilterOwnProps, IDateFilterProps, IDateFilterState, IDateFilterStatePropsIntersection, AbsoluteDateFilterOption, DateFilterOption, DateFilterRelativeOptionGroup, IDateFilterOptionsByType, IExtendedDateFilterErrors, IDateFilterRelativeFormErrors, RelativeDateFilterOption, IUiAbsoluteDateFilterForm, IUiRelativeDateFilterForm, GranularityIntlKey, DateFilterLabelMode, IDateAndMessageTranslator, IDateTranslator, IMessageTranslator, IFilterConfigurationProps, IDateFilterAbsoluteDateTimeFormErrors, DateRangePosition, CalendarTabType, IFiscalTabsConfig, IUiRelativeDateFilterFormLike, } from "./DateFilter/index.js";
11
- export { DateFilter, DateFilterHelpers, defaultDateFilterOptions, isAbsoluteDateFilterOption, isRelativeDateFilterOption, isRelativeDateFilterWithBoundOption, filterVisibleDateFilterOptions, isUiRelativeDateFilterForm, getLocalizedIcuDateFormatPattern, getFiscalTabsConfig, hasFiscalPresets, hasStandardPresets, filterStandardPresets, filterFiscalPresets, filterStandardGranularities, filterFiscalGranularities, getTabForPreset, isFiscalGranularity, ensureCompatibleGranularity, } from "./DateFilter/index.js";
11
+ export { DateFilter, DateFilterHelpers, defaultDateFilterOptions, isAbsoluteDateFilterOption, isRelativeDateFilterOption, isRelativeDateFilterWithBoundOption, filterVisibleDateFilterOptions, isUiRelativeDateFilterForm, getLocalizedIcuDateFormatPattern, getFiscalTabsConfig, getDefaultCalendarTab, hasFiscalPresets, hasStandardPresets, filterStandardPresets, filterFiscalPresets, filterStandardGranularities, filterFiscalGranularities, getTabForPreset, isFiscalGranularity, ensureCompatibleGranularity, } from "./DateFilter/index.js";
12
12
  export type { IMeasureValueFilterProps, IMeasureValueFilterState, } from "./MeasureValueFilter/MeasureValueFilter.js";
13
13
  export { MeasureValueFilter } from "./MeasureValueFilter/MeasureValueFilter.js";
14
14
  export type { IMeasureValueFilterDropdownProps } from "./MeasureValueFilter/MeasureValueFilterDropdown.js";
@@ -26,6 +26,7 @@ export type { Correlation, CallbackRegistration, Callback, CallbackPayloadWithCo
26
26
  export { newAttributeFilterHandler } from "./AttributeFilterHandler/index.js";
27
27
  export type { IAttributeFilterProps, IAttributeFilterButtonProps, IAttributeFilterBaseProps, IAttributeFilterErrorProps, IAttributeFilterLoadingProps, IAttributeFilterDropdownButtonProps, IAttributeFilterDropdownBodyProps, IAttributeFilterDropdownActionsProps, IAttributeFilterElementsSearchBarProps, IAttributeFilterElementsActionsProps, IAttributeFilterElementsSelectProps, IAttributeFilterElementsSelectItemProps, IAttributeFilterElementsSelectErrorProps, IAttributeFilterElementsSelectLoadingProps, IAttributeFilterEmptyResultProps, IAttributeFilterStatusBarProps, OnApplyCallbackType, OnSelectCallbackType, ParentFilterOverAttributeType, IAttributeFilterCoreProps, IAttributeFilterCustomComponentProps, IUseAttributeFilterControllerProps, IUseAttributeFilterHandlerProps, IAttributeFilterContext, IAttributeDatasetInfoProps, IAttributeDisplayFormSelectProps, IAttributeFilterAllValuesFilteredResultProps, IAttributeFilterConfigurationButtonProps, IAttributeFilterDeleteButtonProps, IAttributeFilterFilteredStatusProps, IAttributeFilterSelectionStatusProps, IUseAttributeFilterSearchProps, AttributeFilterController, AttributeFilterControllerData, AttributeFilterControllerCallbacks, IAttributeFilterDependencyTooltipProps, } from "./AttributeFilter/index.js";
28
28
  export { AttributeFilter, AttributeFilterButton, useAttributeFilterController, useAttributeFilterHandler, useAttributeFilterContext, AttributeDisplayFormSelect, AttributeFilterAllValuesFilteredResult, AttributeFilterConfigurationButton, AttributeFilterDeleteButton, AttributeFilterDropdownActions, AttributeFilterDropdownBody, AttributeFilterDropdownButton, AttributeFilterElementsActions, AttributeFilterElementsSearchBar, AttributeFilterElementsSelect, AttributeFilterElementsSelectError, AttributeFilterElementsSelectItem, SingleSelectionAttributeFilterElementsSelectItem, AttributeFilterElementsSelectLoading, AttributeFilterEmptyAttributeResult, AttributeFilterEmptyResult, AttributeFilterEmptySearchResult, AttributeFilterError, AttributeFilterFilteredStatus, AttributeFilterLoading, AttributeFilterSelectionStatus, AttributeFilterSimpleDropdownButton, AttributeFilterSimpleDropdownButtonWithSelection, AttributeFilterStatusBar, SingleSelectionAttributeFilterStatusBar, AttributeDatasetInfo, AttributeFilterButtonTooltip, EmptyElementsSearchBar, useAutoOpenAttributeFilterDropdownButton, useOnCloseAttributeFilterDropdownButton, useAttributeFilterSearch, AttributeFilterDependencyTooltip, getAttributeFilterSubtitle, } from "./AttributeFilter/index.js";
29
+ export { FilterGroup, type IFilterGroupProps } from "./FilterGroup/index.js";
29
30
  export type { IFilterButtonCustomIcon, VisibilityMode } from "./shared/index.js";
30
31
  export type { IDateFilterButtonProps } from "./DateFilter/DateFilterButton/DateFilterButton.js";
31
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
- // (C) 2019-2025 GoodData Corporation
2
- export { DateFilter, DateFilterHelpers, defaultDateFilterOptions, isAbsoluteDateFilterOption, isRelativeDateFilterOption, isRelativeDateFilterWithBoundOption, filterVisibleDateFilterOptions, isUiRelativeDateFilterForm, getLocalizedIcuDateFormatPattern, getFiscalTabsConfig, hasFiscalPresets, hasStandardPresets, filterStandardPresets, filterFiscalPresets, filterStandardGranularities, filterFiscalGranularities, getTabForPreset, isFiscalGranularity, ensureCompatibleGranularity, } from "./DateFilter/index.js";
1
+ // (C) 2019-2026 GoodData Corporation
2
+ export { DateFilter, DateFilterHelpers, defaultDateFilterOptions, isAbsoluteDateFilterOption, isRelativeDateFilterOption, isRelativeDateFilterWithBoundOption, filterVisibleDateFilterOptions, isUiRelativeDateFilterForm, getLocalizedIcuDateFormatPattern, getFiscalTabsConfig, getDefaultCalendarTab, hasFiscalPresets, hasStandardPresets, filterStandardPresets, filterFiscalPresets, filterStandardGranularities, filterFiscalGranularities, getTabForPreset, isFiscalGranularity, ensureCompatibleGranularity, } from "./DateFilter/index.js";
3
3
  export { MeasureValueFilter } from "./MeasureValueFilter/MeasureValueFilter.js";
4
4
  export { MeasureValueFilterDropdown } from "./MeasureValueFilter/MeasureValueFilterDropdown.js";
5
5
  export { isWarningMessage } from "./MeasureValueFilter/typings.js";
@@ -8,4 +8,5 @@ export { RankingFilter } from "./RankingFilter/RankingFilter.js";
8
8
  export { RankingFilterDropdown } from "./RankingFilter/RankingFilterDropdown.js";
9
9
  export { newAttributeFilterHandler } from "./AttributeFilterHandler/index.js";
10
10
  export { AttributeFilter, AttributeFilterButton, useAttributeFilterController, useAttributeFilterHandler, useAttributeFilterContext, AttributeDisplayFormSelect, AttributeFilterAllValuesFilteredResult, AttributeFilterConfigurationButton, AttributeFilterDeleteButton, AttributeFilterDropdownActions, AttributeFilterDropdownBody, AttributeFilterDropdownButton, AttributeFilterElementsActions, AttributeFilterElementsSearchBar, AttributeFilterElementsSelect, AttributeFilterElementsSelectError, AttributeFilterElementsSelectItem, SingleSelectionAttributeFilterElementsSelectItem, AttributeFilterElementsSelectLoading, AttributeFilterEmptyAttributeResult, AttributeFilterEmptyResult, AttributeFilterEmptySearchResult, AttributeFilterError, AttributeFilterFilteredStatus, AttributeFilterLoading, AttributeFilterSelectionStatus, AttributeFilterSimpleDropdownButton, AttributeFilterSimpleDropdownButtonWithSelection, AttributeFilterStatusBar, SingleSelectionAttributeFilterStatusBar, AttributeDatasetInfo, AttributeFilterButtonTooltip, EmptyElementsSearchBar, useAutoOpenAttributeFilterDropdownButton, useOnCloseAttributeFilterDropdownButton, useAttributeFilterSearch, AttributeFilterDependencyTooltip, getAttributeFilterSubtitle, } from "./AttributeFilter/index.js";
11
+ export { FilterGroup } from "./FilterGroup/index.js";
11
12
  //# sourceMappingURL=index.js.map
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAuCrC,OAAO,EACH,UAAU,EACV,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,mCAAmC,EACnC,8BAA8B,EAC9B,0BAA0B,EAC1B,gCAAgC,EAChC,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,2BAA2B,EAC3B,yBAAyB,EACzB,eAAe,EACf,mBAAmB,EACnB,2BAA2B,GAC9B,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAEhF,OAAO,EAAE,0BAA0B,EAAE,MAAM,oDAAoD,CAAC;AAQhG,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAE5F,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAiEjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAwC9E,OAAO,EACH,eAAe,EACf,qBAAqB,EACrB,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,EAC1B,sCAAsC,EACtC,kCAAkC,EAClC,2BAA2B,EAC3B,8BAA8B,EAC9B,2BAA2B,EAC3B,6BAA6B,EAC7B,8BAA8B,EAC9B,gCAAgC,EAChC,6BAA6B,EAC7B,kCAAkC,EAClC,iCAAiC,EACjC,gDAAgD,EAChD,oCAAoC,EACpC,mCAAmC,EACnC,0BAA0B,EAC1B,gCAAgC,EAChC,oBAAoB,EACpB,6BAA6B,EAC7B,sBAAsB,EACtB,8BAA8B,EAC9B,mCAAmC,EACnC,gDAAgD,EAChD,wBAAwB,EACxB,uCAAuC,EACvC,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,EACtB,wCAAwC,EACxC,uCAAuC,EACvC,wBAAwB,EACxB,gCAAgC,EAChC,0BAA0B,GAC7B,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAuCrC,OAAO,EACH,UAAU,EACV,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,mCAAmC,EACnC,8BAA8B,EAC9B,0BAA0B,EAC1B,gCAAgC,EAChC,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,2BAA2B,EAC3B,yBAAyB,EACzB,eAAe,EACf,mBAAmB,EACnB,2BAA2B,GAC9B,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAEhF,OAAO,EAAE,0BAA0B,EAAE,MAAM,oDAAoD,CAAC;AAQhG,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAE5F,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAiEjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAwC9E,OAAO,EACH,eAAe,EACf,qBAAqB,EACrB,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,EACzB,0BAA0B,EAC1B,sCAAsC,EACtC,kCAAkC,EAClC,2BAA2B,EAC3B,8BAA8B,EAC9B,2BAA2B,EAC3B,6BAA6B,EAC7B,8BAA8B,EAC9B,gCAAgC,EAChC,6BAA6B,EAC7B,kCAAkC,EAClC,iCAAiC,EACjC,gDAAgD,EAChD,oCAAoC,EACpC,mCAAmC,EACnC,0BAA0B,EAC1B,gCAAgC,EAChC,oBAAoB,EACpB,6BAA6B,EAC7B,sBAAsB,EACtB,8BAA8B,EAC9B,mCAAmC,EACnC,gDAAgD,EAChD,wBAAwB,EACxB,uCAAuC,EACvC,oBAAoB,EACpB,4BAA4B,EAC5B,sBAAsB,EACtB,wCAAwC,EACxC,uCAAuC,EACvC,wBAAwB,EACxB,gCAAgC,EAChC,0BAA0B,GAC7B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,WAAW,EAA0B,MAAM,wBAAwB,CAAC"}
@@ -19,6 +19,7 @@ import { GoodDataSdkError } from '@gooddata/sdk-ui';
19
19
  import { IAbsoluteDateFilter } from '@gooddata/sdk-model';
20
20
  import { IAbsoluteDateFilterForm } from '@gooddata/sdk-model';
21
21
  import { IAbsoluteDateFilterPreset } from '@gooddata/sdk-model';
22
+ import { IActiveCalendars } from '@gooddata/sdk-model';
22
23
  import { IAlignPoint } from '@gooddata/sdk-ui-kit';
23
24
  import { IAllTimeDateFilterOption } from '@gooddata/sdk-model';
24
25
  import { IAnalyticalBackend } from '@gooddata/sdk-backend-spi';
@@ -360,7 +361,7 @@ export declare function AttributeFilterDropdownBody({ onApplyButtonClick, onCanc
360
361
  *
361
362
  * @beta
362
363
  */
363
- export declare function AttributeFilterDropdownButton({ isOpen, title, selectedItemsCount, showSelectionCount, subtitle, disabled, customIcon, isFiltering, isLoading, isLoaded, isError, isDraggable, icon, TooltipContentComponent, titleExtension, onClick, className, buttonRef, dropdownId, }: IAttributeFilterDropdownButtonProps): JSX.Element;
364
+ export declare function AttributeFilterDropdownButton({ isOpen, title, selectedItemsCount, totalItemsCount, showSelectionCount, subtitle, disabled, customIcon, isFiltering, isLoading, isLoaded, isError, isDraggable, icon, TooltipContentComponent, titleExtension, onClick, className, buttonRef, dropdownId, }: IAttributeFilterDropdownButtonProps): JSX.Element;
364
365
 
365
366
  /**
366
367
  * It displays three state a checkbox and allow select all or none elements that respect current search criteria.
@@ -549,16 +550,16 @@ export declare const DateFilterHelpers: {
549
550
  getDateFilterTitleUsingTranslator: (filter: DateFilterOption, translator: IDateAndMessageTranslator, dateFormat?: string, labelMode?: DateFilterLabelMode) => string;
550
551
  getDateFilterRepresentation: (filter: DateFilterOption, locale: ILocale, messages: ITranslations, dateFormat?: string, labelMode?: DateFilterLabelMode) => string;
551
552
  granularityIntlCodes: {
552
- "GDC.time.year": GranularityIntlKey;
553
- "GDC.time.fiscal_year": GranularityIntlKey;
553
+ "GDC.time.minute": GranularityIntlKey;
554
+ "GDC.time.hour": GranularityIntlKey;
555
+ "GDC.time.date": GranularityIntlKey;
554
556
  "GDC.time.week_us": GranularityIntlKey;
555
- "GDC.time.quarter": GranularityIntlKey;
556
- "GDC.time.fiscal_quarter": GranularityIntlKey;
557
557
  "GDC.time.month": GranularityIntlKey;
558
558
  "GDC.time.fiscal_month": GranularityIntlKey;
559
- "GDC.time.date": GranularityIntlKey;
560
- "GDC.time.hour": GranularityIntlKey;
561
- "GDC.time.minute": GranularityIntlKey;
559
+ "GDC.time.quarter": GranularityIntlKey;
560
+ "GDC.time.fiscal_quarter": GranularityIntlKey;
561
+ "GDC.time.year": GranularityIntlKey;
562
+ "GDC.time.fiscal_year": GranularityIntlKey;
562
563
  };
563
564
  applyExcludeCurrentPeriod: (dateFilterOption: DateFilterOption | undefined, excludeCurrentPeriod: boolean) => DateFilterOption | undefined;
564
565
  defaultDateFilterOptions: IDateFilterOptionsByType;
@@ -643,6 +644,13 @@ export declare function filterFiscalGranularities(granularities: DateFilterGranu
643
644
  */
644
645
  export declare function filterFiscalPresets(presets: DateFilterRelativeOptionGroup): DateFilterRelativeOptionGroup;
645
646
 
647
+ /**
648
+ * FilterGroup is a component that renders a dropdown button with multiple attribute filters
649
+ *
650
+ * @public
651
+ */
652
+ export declare function FilterGroup(props: IFilterGroupProps): JSX.Element;
653
+
646
654
  /**
647
655
  * Filter granularities for the standard tab view.
648
656
  * Excludes all fiscal granularities.
@@ -674,12 +682,39 @@ export declare function filterVisibleDateFilterOptions(dateFilterOptions: IDateF
674
682
  export declare function getAttributeFilterSubtitle(isCommittedSelectionInverted: boolean, committedSelectionElements: IAttributeElement[], intl: IntlShape): string;
675
683
 
676
684
  /**
677
- * Get fiscal tabs configuration based on available presets.
685
+ * Determine the default calendar tab based on active calendars configuration.
686
+ *
687
+ * @remarks
688
+ * Priority:
689
+ * 1. If current preset is fiscal, stay on fiscal tab (respect user's current selection)
690
+ * 2. Otherwise, use the default from activeCalendars settings
691
+ * 3. Fall back to "standard" if no configuration
692
+ *
693
+ * @param activeCalendars - Optional active calendars configuration from workspace settings
694
+ * @param currentPreset - The currently selected date filter option
695
+ * @returns The tab that should be selected by default
696
+ * @alpha
697
+ */
698
+ export declare function getDefaultCalendarTab(activeCalendars?: IActiveCalendars, currentPreset?: DateFilterOption): CalendarTabType;
699
+
700
+ /**
701
+ * Get fiscal tabs configuration based on available presets and active calendars settings.
702
+ *
703
+ * @remarks
704
+ * When `activeCalendars` is provided, it controls which calendar types are enabled:
705
+ * - `activeCalendars.standard === true` enables standard calendar
706
+ * - `activeCalendars.fiscal === true` enables fiscal calendar
707
+ * - Both enabled → show tabs for switching between calendars
708
+ * - Only one enabled → no tabs, show only that calendar type
709
+ *
710
+ * When `activeCalendars` is undefined (not configured), defaults to standard only.
711
+ *
678
712
  * @param presets - The relative presets option group to check, or undefined
713
+ * @param activeCalendars - Optional active calendars configuration from workspace settings
679
714
  * @returns Configuration object with hasFiscal, hasStandard, and showTabs flags
680
715
  * @alpha
681
716
  */
682
- export declare function getFiscalTabsConfig(presets: DateFilterRelativeOptionGroup | undefined): IFiscalTabsConfig;
717
+ export declare function getFiscalTabsConfig(presets: DateFilterRelativeOptionGroup | undefined, activeCalendars?: IActiveCalendars): IFiscalTabsConfig;
683
718
 
684
719
  /**
685
720
  * Returns localized date format pattern for DAY granularity according to ICU. Unsupported locales default to en-US.
@@ -1230,7 +1265,7 @@ export declare interface IAttributeFilterConfigurationButtonProps {
1230
1265
  * The return type of {@link useAttributeFilterContext}.
1231
1266
  * @beta
1232
1267
  */
1233
- export declare type IAttributeFilterContext = AttributeFilterController & Pick<IAttributeFilterCoreProps, "fullscreenOnMobile" | "title" | "selectionMode" | "selectFirst" | "disabled" | "customIcon" | "withoutApply" | "workingFilter" | "overlayPositionType">;
1268
+ export declare type IAttributeFilterContext = AttributeFilterController & Pick<IAttributeFilterCoreProps, "fullscreenOnMobile" | "title" | "selectionMode" | "selectFirst" | "disabled" | "customIcon" | "withoutApply" | "workingFilter" | "overlayPositionType" | "alignPoints">;
1234
1269
 
1235
1270
  /**
1236
1271
  * @public
@@ -1434,6 +1469,13 @@ export declare interface IAttributeFilterCoreProps {
1434
1469
  * Callback that will be triggered when error is thrown.
1435
1470
  */
1436
1471
  onError?: (error: GoodDataSdkError) => void;
1472
+ /**
1473
+ * Callback that will be triggered when initialization loading state changes.
1474
+ *
1475
+ * @param loading - true if loading, false if not loading
1476
+ * @param attribute - attribute metadata object when it is a success event, undefined otherwise
1477
+ */
1478
+ onInitLoadingChanged?: (loading: boolean, attribute?: IAttributeMetadataObject) => void;
1437
1479
  /**
1438
1480
  * Enables the migration of displayAsLabel to be immediately reported to the parent app.
1439
1481
  */
@@ -1442,6 +1484,11 @@ export declare interface IAttributeFilterCoreProps {
1442
1484
  * Specifies the overlay position type for the attribute filter dropdown.
1443
1485
  */
1444
1486
  overlayPositionType?: OverlayPositionType;
1487
+ /**
1488
+ * Specifies the align points for the attribute filter dropdown body.
1489
+ * In other words where the dropdown body should be placed.
1490
+ */
1491
+ alignPoints?: IAlignPoint[];
1445
1492
  }
1446
1493
 
1447
1494
  /**
@@ -1676,6 +1723,12 @@ export declare interface IAttributeFilterDropdownButtonProps {
1676
1723
  * @beta
1677
1724
  */
1678
1725
  selectedItemsCount?: number;
1726
+ /**
1727
+ * Total items count. Shown beside the selected items count if showSelectionCount is true.
1728
+ *
1729
+ * @beta
1730
+ */
1731
+ totalItemsCount?: number;
1679
1732
  /**
1680
1733
  *
1681
1734
  * @beta
@@ -2713,6 +2766,21 @@ export declare interface IDateFilterOwnProps extends IDateFilterStatePropsInters
2713
2766
  * @alpha
2714
2767
  */
2715
2768
  improveAccessibility?: boolean;
2769
+ /**
2770
+ * Active calendars configuration from workspace settings.
2771
+ * Controls which calendar types (standard/fiscal) are available in the filter.
2772
+ *
2773
+ * @remarks
2774
+ * When provided:
2775
+ * - `standard: true` enables standard calendar presets
2776
+ * - `fiscal: true` enables fiscal calendar presets
2777
+ * - `default` determines which tab is selected by default ("STANDARD" or "FISCAL")
2778
+ *
2779
+ * When undefined, defaults to standard calendar only.
2780
+ *
2781
+ * @alpha
2782
+ */
2783
+ activeCalendars?: IActiveCalendars;
2716
2784
  }
2717
2785
 
2718
2786
  /**
@@ -2864,6 +2932,14 @@ export declare interface IFilterConfigurationProps {
2864
2932
  onCancelButtonClick: () => void;
2865
2933
  }
2866
2934
 
2935
+ /**
2936
+ * @public
2937
+ */
2938
+ export declare interface IFilterGroupProps {
2939
+ title: string;
2940
+ filters: IAttributeFilterButtonProps[];
2941
+ }
2942
+
2867
2943
  /**
2868
2944
  * Configuration for fiscal calendar tabs.
2869
2945
  * @alpha
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-filters",
3
- "version": "11.15.0",
3
+ "version": "11.16.0-alpha.1",
4
4
  "description": "GoodData.UI SDK - Filter Components",
5
5
  "repository": {
6
6
  "type": "git",
@@ -47,11 +47,11 @@
47
47
  "ts-invariant": "^0.7.5",
48
48
  "tslib": "2.8.1",
49
49
  "uuid": "^11.1.0",
50
- "@gooddata/sdk-backend-spi": "11.15.0",
51
- "@gooddata/sdk-model": "11.15.0",
52
- "@gooddata/sdk-ui-kit": "11.15.0",
53
- "@gooddata/sdk-ui": "11.15.0",
54
- "@gooddata/util": "11.15.0"
50
+ "@gooddata/sdk-backend-spi": "11.16.0-alpha.1",
51
+ "@gooddata/sdk-ui": "11.16.0-alpha.1",
52
+ "@gooddata/sdk-model": "11.16.0-alpha.1",
53
+ "@gooddata/util": "11.16.0-alpha.1",
54
+ "@gooddata/sdk-ui-kit": "11.16.0-alpha.1"
55
55
  },
56
56
  "devDependencies": {
57
57
  "@gooddata/stylelint-config": "^5.0.0",
@@ -94,10 +94,10 @@
94
94
  "typescript": "5.9.3",
95
95
  "vitest": "3.2.4",
96
96
  "vitest-dom": "0.1.1",
97
- "@gooddata/eslint-config": "11.15.0",
98
- "@gooddata/reference-workspace": "11.15.0",
99
- "@gooddata/sdk-ui-theme-provider": "11.15.0",
100
- "@gooddata/sdk-backend-mockingbird": "11.15.0"
97
+ "@gooddata/reference-workspace": "11.16.0-alpha.1",
98
+ "@gooddata/sdk-ui-theme-provider": "11.16.0-alpha.1",
99
+ "@gooddata/sdk-backend-mockingbird": "11.16.0-alpha.1",
100
+ "@gooddata/eslint-config": "11.16.0-alpha.1"
101
101
  },
102
102
  "peerDependencies": {
103
103
  "react": "^18.0.0 || ^19.0.0",
@@ -0,0 +1,27 @@
1
+ .dropdown-body .gd-list.gd-filter-group-body {
2
+ display: flex;
3
+ flex-direction: column;
4
+ border: 1px solid var(--gd-palette-complementary-3, #dde4eb);
5
+ border-radius: 3px;
6
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
7
+ overflow: hidden;
8
+ min-width: 150px;
9
+ max-width: 300px;
10
+ max-height: 450px;
11
+ overflow-y: auto;
12
+ margin: 0;
13
+ }
14
+ .dropdown-body .gd-list.gd-filter-group-body .fixedDataTableRowLayout_rowWrapper .gd-filter-group-item {
15
+ border-bottom: 1px solid var(--gd-palette-complementary-3, #dde4eb);
16
+ }
17
+ .dropdown-body .gd-list.gd-filter-group-body .fixedDataTableRowLayout_rowWrapper:last-child .gd-filter-group-item {
18
+ border-bottom: none;
19
+ }
20
+ .dropdown-body .gd-list.gd-filter-group-body .gd-attribute-filter__next {
21
+ display: block;
22
+ }
23
+ .dropdown-body .gd-list.gd-filter-group-body .fixedDataTableLayout_main {
24
+ height: auto;
25
+ }
26
+
27
+ /*# sourceMappingURL=filterGroup.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../scss/filterGroup.scss"],"names":[],"mappings":"AAGA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGI;EACI;;AAGJ;EACI;;AAIR;EACI;;AAGJ;EACI","file":"filterGroup.css"}