@gooddata/sdk-ui-dashboard 11.29.0-alpha.3 → 11.29.0-alpha.5

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 (79) hide show
  1. package/NOTICE +3 -3
  2. package/esm/__version.d.ts +1 -1
  3. package/esm/__version.js +1 -1
  4. package/esm/model/commandHandlers/dashboard/common/attributeFilterSelectionTypeCompatibility.d.ts +14 -1
  5. package/esm/model/commandHandlers/dashboard/common/attributeFilterSelectionTypeCompatibility.d.ts.map +1 -1
  6. package/esm/model/commandHandlers/dashboard/common/attributeFilterSelectionTypeCompatibility.js +19 -0
  7. package/esm/model/commandHandlers/dashboard/common/attributeFilterSelectionTypeCompatibility.js.map +1 -1
  8. package/esm/model/commandHandlers/drill/resolveDrillToCustomUrl.d.ts +5 -1
  9. package/esm/model/commandHandlers/drill/resolveDrillToCustomUrl.d.ts.map +1 -1
  10. package/esm/model/commandHandlers/drill/resolveDrillToCustomUrl.js +51 -12
  11. package/esm/model/commandHandlers/drill/resolveDrillToCustomUrl.js.map +1 -1
  12. package/esm/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.d.ts.map +1 -1
  13. package/esm/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.js +120 -69
  14. package/esm/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.js.map +1 -1
  15. package/esm/model/commandHandlers/scheduledEmail/initializeAutomationsHandler.d.ts.map +1 -1
  16. package/esm/model/commandHandlers/scheduledEmail/initializeAutomationsHandler.js +49 -8
  17. package/esm/model/commandHandlers/scheduledEmail/initializeAutomationsHandler.js.map +1 -1
  18. package/esm/presentation/alerting/DefaultAlertingDialog/DefaultAlertingDialogNew.d.ts.map +1 -1
  19. package/esm/presentation/alerting/DefaultAlertingDialog/DefaultAlertingDialogNew.js +4 -3
  20. package/esm/presentation/alerting/DefaultAlertingDialog/DefaultAlertingDialogNew.js.map +1 -1
  21. package/esm/presentation/automationFilters/hooks/useValidateExistingAutomationFilters.d.ts +6 -3
  22. package/esm/presentation/automationFilters/hooks/useValidateExistingAutomationFilters.d.ts.map +1 -1
  23. package/esm/presentation/automationFilters/hooks/useValidateExistingAutomationFilters.js +38 -4
  24. package/esm/presentation/automationFilters/hooks/useValidateExistingAutomationFilters.js.map +1 -1
  25. package/esm/presentation/filterBar/attributeFilter/useParentFilters.d.ts.map +1 -1
  26. package/esm/presentation/filterBar/attributeFilter/useParentFilters.js +24 -13
  27. package/esm/presentation/filterBar/attributeFilter/useParentFilters.js.map +1 -1
  28. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts +4 -0
  29. package/esm/presentation/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
  30. package/esm/presentation/localization/bundles/en-US.localization-bundle.js +4 -0
  31. package/esm/presentation/localization/bundles/en-US.localization-bundle.js.map +1 -1
  32. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js +14 -14
  33. package/esm/presentation/localization/bundles/ja-JP.localization-bundle.js.map +1 -1
  34. package/esm/presentation/presentationComponents/DashboardItems/DashboardItem.d.ts +1 -0
  35. package/esm/presentation/presentationComponents/DashboardItems/DashboardItem.d.ts.map +1 -1
  36. package/esm/presentation/presentationComponents/DashboardItems/DashboardItem.js +2 -2
  37. package/esm/presentation/presentationComponents/DashboardItems/DashboardItem.js.map +1 -1
  38. package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/AttachmentsSelect.js +1 -1
  39. package/esm/presentation/scheduledEmail/DefaultScheduledEmailDialog/components/Attachments/AttachmentsSelect.js.map +1 -1
  40. package/esm/presentation/widget/insight/configuration/DrillFilters/TargetDashboardFiltersContext.d.ts +2 -1
  41. package/esm/presentation/widget/insight/configuration/DrillFilters/TargetDashboardFiltersContext.d.ts.map +1 -1
  42. package/esm/presentation/widget/insight/configuration/DrillFilters/TargetDashboardFiltersContext.js +3 -1
  43. package/esm/presentation/widget/insight/configuration/DrillFilters/TargetDashboardFiltersContext.js.map +1 -1
  44. package/esm/presentation/widget/insight/configuration/DrillFilters/drillFiltersConfigUtils.d.ts +31 -1
  45. package/esm/presentation/widget/insight/configuration/DrillFilters/drillFiltersConfigUtils.d.ts.map +1 -1
  46. package/esm/presentation/widget/insight/configuration/DrillFilters/drillFiltersConfigUtils.js +148 -1
  47. package/esm/presentation/widget/insight/configuration/DrillFilters/drillFiltersConfigUtils.js.map +1 -1
  48. package/esm/presentation/widget/insight/configuration/DrillFilters/messages.d.ts +3 -0
  49. package/esm/presentation/widget/insight/configuration/DrillFilters/messages.d.ts.map +1 -1
  50. package/esm/presentation/widget/insight/configuration/DrillFilters/messages.js +3 -0
  51. package/esm/presentation/widget/insight/configuration/DrillFilters/messages.js.map +1 -1
  52. package/esm/presentation/widget/insight/configuration/DrillFilters/optionMappings/mapDashboardFilterToOption.d.ts +3 -2
  53. package/esm/presentation/widget/insight/configuration/DrillFilters/optionMappings/mapDashboardFilterToOption.d.ts.map +1 -1
  54. package/esm/presentation/widget/insight/configuration/DrillFilters/optionMappings/mapDashboardFilterToOption.js +11 -27
  55. package/esm/presentation/widget/insight/configuration/DrillFilters/optionMappings/mapDashboardFilterToOption.js.map +1 -1
  56. package/esm/presentation/widget/insight/configuration/DrillFilters/optionMappings/mapSourceInsightFilterToOption.d.ts +4 -2
  57. package/esm/presentation/widget/insight/configuration/DrillFilters/optionMappings/mapSourceInsightFilterToOption.d.ts.map +1 -1
  58. package/esm/presentation/widget/insight/configuration/DrillFilters/optionMappings/mapSourceInsightFilterToOption.js +6 -5
  59. package/esm/presentation/widget/insight/configuration/DrillFilters/optionMappings/mapSourceInsightFilterToOption.js.map +1 -1
  60. package/esm/presentation/widget/insight/configuration/DrillFilters/optionMappings/mapSourceMeasureFilterToOption.d.ts +4 -2
  61. package/esm/presentation/widget/insight/configuration/DrillFilters/optionMappings/mapSourceMeasureFilterToOption.d.ts.map +1 -1
  62. package/esm/presentation/widget/insight/configuration/DrillFilters/optionMappings/mapSourceMeasureFilterToOption.js +6 -4
  63. package/esm/presentation/widget/insight/configuration/DrillFilters/optionMappings/mapSourceMeasureFilterToOption.js.map +1 -1
  64. package/esm/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.d.ts.map +1 -1
  65. package/esm/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.js +11 -1
  66. package/esm/presentation/widget/insight/configuration/DrillFilters/useDrillFiltersConfig.js.map +1 -1
  67. package/esm/presentation/widget/insight/configuration/DrillFilters/useFetchTargetDashboardFilters.d.ts +2 -1
  68. package/esm/presentation/widget/insight/configuration/DrillFilters/useFetchTargetDashboardFilters.d.ts.map +1 -1
  69. package/esm/presentation/widget/insight/configuration/DrillFilters/useFetchTargetDashboardFilters.js +4 -1
  70. package/esm/presentation/widget/insight/configuration/DrillFilters/useFetchTargetDashboardFilters.js.map +1 -1
  71. package/esm/presentation/widget/visualizationSwitcher/EditModeDashboardVisualizationSwitcher.d.ts.map +1 -1
  72. package/esm/presentation/widget/visualizationSwitcher/EditModeDashboardVisualizationSwitcher.js +1 -1
  73. package/esm/presentation/widget/visualizationSwitcher/EditModeDashboardVisualizationSwitcher.js.map +1 -1
  74. package/esm/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.d.ts.map +1 -1
  75. package/esm/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.js +1 -1
  76. package/esm/presentation/widget/visualizationSwitcher/ViewModeDashboardVisualizationSwitcher.js.map +1 -1
  77. package/package.json +20 -20
  78. package/styles/css/main.css +3 -0
  79. package/styles/css/main.css.map +1 -1
package/NOTICE CHANGED
@@ -7,9 +7,9 @@
7
7
 
8
8
  The following 3rd-party software packages may be used by or distributed with gooddata-ui-sdk. Any information relevant to third-party vendors listed below are collected using common, reasonable means.
9
9
 
10
- Date generated: 2026-4-6
10
+ Date generated: 2026-4-7
11
11
 
12
- Revision ID: 1b37b2565c35b2892cdfb0f3ac871172e5ee7a9a
12
+ Revision ID: e7d92955a4fa5541fb7203054137d5fda4e0c198
13
13
 
14
14
  ================================================================================
15
15
  ================================================================================
@@ -38173,4 +38173,4 @@ POSSIBILITY OF SUCH DAMAGE.
38173
38173
  --------------------------------------------------------------------------------
38174
38174
  --------------------------------------------------------------------------------
38175
38175
 
38176
- Report Generated by FOSSA on 2026-4-6
38176
+ Report Generated by FOSSA on 2026-4-7
@@ -1,4 +1,4 @@
1
- export declare const LIB_VERSION = "11.29.0-alpha.3";
1
+ export declare const LIB_VERSION = "11.29.0-alpha.5";
2
2
  export declare const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
3
3
  export declare const LIB_NAME = "@gooddata/sdk-ui-dashboard";
4
4
  //# sourceMappingURL=__version.d.ts.map
package/esm/__version.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // (C) 2021 GoodData Corporation
2
2
  // DO NOT CHANGE THIS FILE, IT IS RE-GENERATED ON EVERY BUILD
3
- export const LIB_VERSION = "11.29.0-alpha.3";
3
+ export const LIB_VERSION = "11.29.0-alpha.5";
4
4
  export const LIB_DESCRIPTION = "GoodData SDK - Dashboard Component";
5
5
  export const LIB_NAME = "@gooddata/sdk-ui-dashboard";
6
6
  //# sourceMappingURL=__version.js.map
@@ -1,4 +1,4 @@
1
- import { type DashboardAttributeFilterSelectionType } from "@gooddata/sdk-model";
1
+ import { type DashboardAttributeFilterItem, type DashboardAttributeFilterSelectionType } from "@gooddata/sdk-model";
2
2
  /**
3
3
  * Checks if a filter kind ("list" vs "text") is compatible with the dashboard attribute filter config's
4
4
  * {@link DashboardAttributeFilterSelectionType}, using the same defaulting rules as filter context
@@ -9,4 +9,17 @@ import { type DashboardAttributeFilterSelectionType } from "@gooddata/sdk-model"
9
9
  * @param defaultSelectionType - implicit selection type when config omits selectionType
10
10
  */
11
11
  export declare function isFilterTypeCompatibleWithSelectionType(filterType: "list" | "text", configSelectionType: DashboardAttributeFilterSelectionType | undefined, defaultSelectionType?: "list" | "text" | "listOrText"): boolean;
12
+ /**
13
+ * Checks if applying an incoming filter type ("list" or "text") is compatible with the target
14
+ * dashboard filter's selection type config.
15
+ *
16
+ * Encapsulates the default selection type rule:
17
+ * - Single-selection list filters default to "list"
18
+ * - All other filters (non-single list, text) default to "listOrText"
19
+ *
20
+ * @param incomingFilterType - "list" for element selection, "text" for arbitrary/match
21
+ * @param configSelectionType - selectionType from the target filter's attribute filter config, if set
22
+ * @param targetFilter - the target dashboard filter item to check against
23
+ */
24
+ export declare function canApplyFilterTypeToTarget(incomingFilterType: "list" | "text", configSelectionType: DashboardAttributeFilterSelectionType | undefined, targetFilter: DashboardAttributeFilterItem): boolean;
12
25
  //# sourceMappingURL=attributeFilterSelectionTypeCompatibility.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attributeFilterSelectionTypeCompatibility.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/common/attributeFilterSelectionTypeCompatibility.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,qCAAqC,EAAE,MAAM,qBAAqB,CAAC;AAEjF;;;;;;;;GAQG;AACH,wBAAgB,uCAAuC,CACnD,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,mBAAmB,EAAE,qCAAqC,GAAG,SAAS,EACtE,oBAAoB,GAAE,MAAM,GAAG,MAAM,GAAG,YAA2B,GACpE,OAAO,CAMT"}
1
+ {"version":3,"file":"attributeFilterSelectionTypeCompatibility.d.ts","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/common/attributeFilterSelectionTypeCompatibility.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,4BAA4B,EACjC,KAAK,qCAAqC,EAG7C,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;GAQG;AACH,wBAAgB,uCAAuC,CACnD,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,mBAAmB,EAAE,qCAAqC,GAAG,SAAS,EACtE,oBAAoB,GAAE,MAAM,GAAG,MAAM,GAAG,YAA2B,GACpE,OAAO,CAMT;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACtC,kBAAkB,EAAE,MAAM,GAAG,MAAM,EACnC,mBAAmB,EAAE,qCAAqC,GAAG,SAAS,EACtE,YAAY,EAAE,4BAA4B,GAC3C,OAAO,CAMT"}
@@ -1,4 +1,5 @@
1
1
  // (C) 2025-2026 GoodData Corporation
2
+ import { isDashboardAttributeFilter, isSingleSelectionFilter, } from "@gooddata/sdk-model";
2
3
  /**
3
4
  * Checks if a filter kind ("list" vs "text") is compatible with the dashboard attribute filter config's
4
5
  * {@link DashboardAttributeFilterSelectionType}, using the same defaulting rules as filter context
@@ -15,4 +16,22 @@ export function isFilterTypeCompatibleWithSelectionType(filterType, configSelect
15
16
  }
16
17
  return effectiveSelectionType === filterType;
17
18
  }
19
+ /**
20
+ * Checks if applying an incoming filter type ("list" or "text") is compatible with the target
21
+ * dashboard filter's selection type config.
22
+ *
23
+ * Encapsulates the default selection type rule:
24
+ * - Single-selection list filters default to "list"
25
+ * - All other filters (non-single list, text) default to "listOrText"
26
+ *
27
+ * @param incomingFilterType - "list" for element selection, "text" for arbitrary/match
28
+ * @param configSelectionType - selectionType from the target filter's attribute filter config, if set
29
+ * @param targetFilter - the target dashboard filter item to check against
30
+ */
31
+ export function canApplyFilterTypeToTarget(incomingFilterType, configSelectionType, targetFilter) {
32
+ const defaultType = isDashboardAttributeFilter(targetFilter) && isSingleSelectionFilter(targetFilter)
33
+ ? "list"
34
+ : "listOrText";
35
+ return isFilterTypeCompatibleWithSelectionType(incomingFilterType, configSelectionType, defaultType);
36
+ }
18
37
  //# sourceMappingURL=attributeFilterSelectionTypeCompatibility.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attributeFilterSelectionTypeCompatibility.js","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/common/attributeFilterSelectionTypeCompatibility.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAIrC;;;;;;;;GAQG;AACH,MAAM,UAAU,uCAAuC,CACnD,UAA2B,EAC3B,mBAAsE,EACtE,oBAAoB,GAAmC,YAAY,EAC5D;IACP,MAAM,sBAAsB,GAAG,mBAAmB,IAAI,oBAAoB,CAAC;IAC3E,IAAI,sBAAsB,KAAK,YAAY,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,sBAAsB,KAAK,UAAU,CAAC;AAAA,CAChD"}
1
+ {"version":3,"file":"attributeFilterSelectionTypeCompatibility.js","sourceRoot":"","sources":["../../../../../src/model/commandHandlers/dashboard/common/attributeFilterSelectionTypeCompatibility.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,OAAO,EAGH,0BAA0B,EAC1B,uBAAuB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;GAQG;AACH,MAAM,UAAU,uCAAuC,CACnD,UAA2B,EAC3B,mBAAsE,EACtE,oBAAoB,GAAmC,YAAY,EAC5D;IACP,MAAM,sBAAsB,GAAG,mBAAmB,IAAI,oBAAoB,CAAC;IAC3E,IAAI,sBAAsB,KAAK,YAAY,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,sBAAsB,KAAK,UAAU,CAAC;AAAA,CAChD;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,0BAA0B,CACtC,kBAAmC,EACnC,mBAAsE,EACtE,YAA0C,EACnC;IACP,MAAM,WAAW,GACb,0BAA0B,CAAC,YAAY,CAAC,IAAI,uBAAuB,CAAC,YAAY,CAAC;QAC7E,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,YAAY,CAAC;IACvB,OAAO,uCAAuC,CAAC,kBAAkB,EAAE,mBAAmB,EAAE,WAAW,CAAC,CAAC;AAAA,CACxG"}
@@ -1,5 +1,5 @@
1
1
  import { type SagaIterator } from "redux-saga";
2
- import { type IAttributeDisplayFormMetadataObject, type IDrillToCustomUrl as IDrillToCustomUrlModel, type ObjRef } from "@gooddata/sdk-model";
2
+ import { type DashboardTextAttributeFilter, type IAttributeDisplayFormMetadataObject, type IDrillToCustomUrl as IDrillToCustomUrlModel, type ObjRef, type TextAttributeFilter } from "@gooddata/sdk-model";
3
3
  import { type IDrillEvent, type IDrillEventIntersectionElement } from "@gooddata/sdk-ui";
4
4
  import { type IDrillToCustomUrl } from "../../commands/drill.js";
5
5
  import { type DashboardContext } from "../../types/commonTypes.js";
@@ -25,5 +25,9 @@ export declare function getDashboardAttributeFilterReplacements(url: string, ctx
25
25
  export declare function getInsightAttributeFilterReplacements(url: string, widgetRef: ObjRef): SagaIterator<IDrillToUrlPlaceholderReplacement[]>;
26
26
  export declare function getInsightIdentifiersReplacements(customUrl: string, widgetRef: ObjRef, ctx: DashboardContext): SagaIterator<IDrillToUrlPlaceholderReplacement[]>;
27
27
  export declare function resolveDrillToCustomUrl(drillConfig: IDrillToCustomUrlModel, widgetRef: ObjRef, event: IDrillEvent, ctx: DashboardContext, cmd: IDrillToCustomUrl): SagaIterator<string>;
28
+ /**
29
+ * @internal
30
+ */
31
+ export declare function stringifyTextFilterSelection(filter: DashboardTextAttributeFilter | TextAttributeFilter): string;
28
32
  export {};
29
33
  //# sourceMappingURL=resolveDrillToCustomUrl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveDrillToCustomUrl.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/drill/resolveDrillToCustomUrl.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAEH,KAAK,mCAAmC,EACxC,KAAK,iBAAiB,IAAI,sBAAsB,EAGhD,KAAK,MAAM,EAUd,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,8BAA8B,EAEtC,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAajE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAInE,UAAU,iCAAiC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,UAAU,kBAAkB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,wBAAiB,gBAAgB,CAC7B,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,gBAAgB,GACtB,YAAY,CAAC,kBAAkB,CAAC,CAYlC;AAED,wBAAiB,0BAA0B,CACvC,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EACpC,GAAG,EAAE,gBAAgB,GACtB,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CASpC;AAsBD,wBAAiB,0BAA0B,CACvC,sBAAsB,EAAE,mCAAmC,EAAE,EAC7D,GAAG,EAAE,gBAAgB,GACtB,YAAY,CAAC;IACZ,2BAA2B,EAAE,mCAAmC,EAAE,CAAC;IACnE,uBAAuB,EAAE,mCAAmC,EAAE,CAAC;CAClE,CAAC,CAuBD;AAED,wBAAiB,yCAAyC,CACtD,yBAAyB,EAAE,8BAA8B,EAAE,EAC3D,sBAAsB,EAAE,mCAAmC,EAAE,EAC7D,GAAG,EAAE,gBAAgB,GACtB,YAAY,CAAC,kBAAkB,EAAE,CAAC,CA8CpC;AAKD,wBAAgB,wBAAwB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EAAE,EACjB,GAAG,EAAE,gBAAgB,GACtB,OAAO,CAAC,mCAAmC,EAAE,CAAC,CAEhD;AAED,wBAAiB,mCAAmC,CAChD,GAAG,EAAE,MAAM,EACX,yBAAyB,EAAE,8BAA8B,EAAE,EAC3D,GAAG,EAAE,gBAAgB,GACtB,YAAY,CAAC,iCAAiC,EAAE,CAAC,CAkCnD;AAsDD,wBAAiB,uCAAuC,CACpD,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,gBAAgB,GACtB,YAAY,CAAC,iCAAiC,EAAE,CAAC,CA+BnD;AAED,wBAAiB,qCAAqC,CAClD,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAClB,YAAY,CAAC,iCAAiC,EAAE,CAAC,CAsCnD;AAOD,wBAAiB,iCAAiC,CAC9C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,gBAAgB,GACtB,YAAY,CAAC,iCAAiC,EAAE,CAAC,CAwCnD;AAYD,wBAAiB,uBAAuB,CACpC,WAAW,EAAE,sBAAsB,EACnC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,iBAAiB,GACvB,YAAY,CAAC,MAAM,CAAC,CAmDtB"}
1
+ {"version":3,"file":"resolveDrillToCustomUrl.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/drill/resolveDrillToCustomUrl.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAEH,KAAK,4BAA4B,EACjC,KAAK,mCAAmC,EACxC,KAAK,iBAAiB,IAAI,sBAAsB,EAIhD,KAAK,MAAM,EACX,KAAK,mBAAmB,EAe3B,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,8BAA8B,EAEtC,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAajE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAInE,UAAU,iCAAiC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,UAAU,kBAAkB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,wBAAiB,gBAAgB,CAC7B,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,gBAAgB,GACtB,YAAY,CAAC,kBAAkB,CAAC,CAYlC;AAED,wBAAiB,0BAA0B,CACvC,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EACpC,GAAG,EAAE,gBAAgB,GACtB,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CASpC;AAsBD,wBAAiB,0BAA0B,CACvC,sBAAsB,EAAE,mCAAmC,EAAE,EAC7D,GAAG,EAAE,gBAAgB,GACtB,YAAY,CAAC;IACZ,2BAA2B,EAAE,mCAAmC,EAAE,CAAC;IACnE,uBAAuB,EAAE,mCAAmC,EAAE,CAAC;CAClE,CAAC,CAuBD;AAED,wBAAiB,yCAAyC,CACtD,yBAAyB,EAAE,8BAA8B,EAAE,EAC3D,sBAAsB,EAAE,mCAAmC,EAAE,EAC7D,GAAG,EAAE,gBAAgB,GACtB,YAAY,CAAC,kBAAkB,EAAE,CAAC,CA8CpC;AAKD,wBAAgB,wBAAwB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EAAE,EACjB,GAAG,EAAE,gBAAgB,GACtB,OAAO,CAAC,mCAAmC,EAAE,CAAC,CAEhD;AAED,wBAAiB,mCAAmC,CAChD,GAAG,EAAE,MAAM,EACX,yBAAyB,EAAE,8BAA8B,EAAE,EAC3D,GAAG,EAAE,gBAAgB,GACtB,YAAY,CAAC,iCAAiC,EAAE,CAAC,CAkCnD;AAuED,wBAAiB,uCAAuC,CACpD,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,gBAAgB,GACtB,YAAY,CAAC,iCAAiC,EAAE,CAAC,CA8BnD;AAED,wBAAiB,qCAAqC,CAClD,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAClB,YAAY,CAAC,iCAAiC,EAAE,CAAC,CAyCnD;AAOD,wBAAiB,iCAAiC,CAC9C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,gBAAgB,GACtB,YAAY,CAAC,iCAAiC,EAAE,CAAC,CAwCnD;AAYD,wBAAiB,uBAAuB,CACpC,WAAW,EAAE,sBAAsB,EACnC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,iBAAiB,GACvB,YAAY,CAAC,MAAM,CAAC,CAmDtB;AAMD;;GAEG;AACH,wBAAgB,4BAA4B,CACxC,MAAM,EAAE,4BAA4B,GAAG,mBAAmB,GAC3D,MAAM,CAOR"}
@@ -2,7 +2,7 @@
2
2
  import stringify from "json-stable-stringify";
3
3
  import { groupBy } from "lodash-es";
4
4
  import { all, call, select } from "redux-saga/effects";
5
- import { areObjRefsEqual, filterAttributeElements, filterObjRef, idRef, insightId, isAttributeDescriptor, isAttributeElementsByValue, isDashboardAttributeFilter, isNegativeAttributeFilter, } from "@gooddata/sdk-model";
5
+ import { areObjRefsEqual, dashboardAttributeFilterItemDisplayForm, filterAttributeElements, filterObjRef, idRef, insightId, isArbitraryAttributeFilter, isAttributeDescriptor, isAttributeElementsByValue, isDashboardArbitraryAttributeFilter, isDashboardAttributeFilter, isDashboardTextAttributeFilter, isNegativeAttributeFilter, isTextAttributeFilter, } from "@gooddata/sdk-model";
6
6
  import { getAttributeIdentifiersPlaceholdersFromUrl, getDashboardAttributeFilterPlaceholdersFromUrl, getInsightAttributeFilterPlaceholdersFromUrl, } from "@gooddata/sdk-model/internal";
7
7
  import { isDrillIntersectionAttributeItem, } from "@gooddata/sdk-ui";
8
8
  import { getElementTitle, getElementsSecondaryTitles } from "./getElementTitle.js";
@@ -100,8 +100,23 @@ export function* getAttributeIdentifiersReplacements(url, drillIntersectionEleme
100
100
  });
101
101
  }
102
102
  function* resolveDashboardAttributeFilterReplacement({ placeholder: toBeReplaced, ref }, attributeFilters, catalogDisplayForms, attributeFilterConfigs, ctx) {
103
- // URL placeholder resolution only works with standard (element-based) attribute filters.
104
- // Text filters (arbitrary/match) don't have element selections for URL placeholders.
103
+ // Check for text filters (arbitrary/match) first they use different value structures.
104
+ const textFilter = attributeFilters.find((filter) => {
105
+ if (!isDashboardTextAttributeFilter(filter)) {
106
+ return false;
107
+ }
108
+ const df = catalogDisplayForms.get(dashboardAttributeFilterItemDisplayForm(filter));
109
+ return df && areObjRefsEqual(idRef(df.id), ref);
110
+ });
111
+ if (textFilter && isDashboardTextAttributeFilter(textFilter)) {
112
+ const parsedFilter = stringifyTextFilterSelection(textFilter);
113
+ const replacement = encodeParameterIfSet(parsedFilter);
114
+ return {
115
+ toBeReplaced,
116
+ replacement: replacement,
117
+ };
118
+ }
119
+ // Standard (element-based) attribute filters
105
120
  const standardFilters = attributeFilters.filter(isDashboardAttributeFilter);
106
121
  let usedFilter = standardFilters.find((filter) => {
107
122
  const df = catalogDisplayForms.get(filter.attributeFilter.displayForm);
@@ -144,7 +159,6 @@ export function* getDashboardAttributeFilterReplacements(url, ctx) {
144
159
  if (attributeFilterPlaceholders.length === 0) {
145
160
  return [];
146
161
  }
147
- // TODO INE: consider using narrow selector as text filters are ignored in resolveDashboardAttributeFilterReplacement
148
162
  const attributeFilters = yield select(selectFilterContextAttributeFilterItems);
149
163
  const catalogDisplayForms = yield select(selectAllCatalogDisplayFormsMap);
150
164
  const attributeFilterConfigs = yield select(selectAttributeFilterConfigsOverrides);
@@ -163,14 +177,18 @@ export function* getInsightAttributeFilterReplacements(url, widgetRef) {
163
177
  const df = filterRef && catalogDisplayForms.get(filterRef);
164
178
  return df && areObjRefsEqual(idRef(df.id), ref);
165
179
  });
166
- const elements = usedFilter ? filterAttributeElements(usedFilter) : undefined;
167
- const attributeElementsValues = isAttributeElementsByValue(elements)
168
- ? elements.values
169
- : (elements?.uris ?? []);
170
- const isNegative = isNegativeAttributeFilter(usedFilter);
171
- const parsedFilter = usedFilter
172
- ? stringifyAttributeFilterSelection(attributeElementsValues, isNegative)
173
- : undefined;
180
+ let parsedFilter;
181
+ if (usedFilter && isTextAttributeFilter(usedFilter)) {
182
+ parsedFilter = stringifyTextFilterSelection(usedFilter);
183
+ }
184
+ else if (usedFilter) {
185
+ const elements = filterAttributeElements(usedFilter);
186
+ const attributeElementsValues = isAttributeElementsByValue(elements)
187
+ ? elements.values
188
+ : (elements?.uris ?? []);
189
+ const isNegative = isNegativeAttributeFilter(usedFilter);
190
+ parsedFilter = stringifyAttributeFilterSelection(attributeElementsValues, isNegative);
191
+ }
174
192
  const replacement = encodeParameterIfSet(parsedFilter);
175
193
  return {
176
194
  toBeReplaced,
@@ -226,4 +244,25 @@ export function* resolveDrillToCustomUrl(drillConfig, widgetRef, event, ctx, cmd
226
244
  function stringifyAttributeFilterSelection(selection, isNegative) {
227
245
  return `${isNegative ? "NOT_IN" : "IN"}${stringify(selection)}`;
228
246
  }
247
+ /**
248
+ * @internal
249
+ */
250
+ export function stringifyTextFilterSelection(filter) {
251
+ if (isDashboardArbitraryAttributeFilter(filter) || isArbitraryAttributeFilter(filter)) {
252
+ const { values, negativeSelection } = filter.arbitraryAttributeFilter;
253
+ return stringifyAttributeFilterSelection(values, negativeSelection ?? false);
254
+ }
255
+ const { literal, operator, negativeSelection } = filter.matchAttributeFilter;
256
+ return stringifyMatchFilterSelection(literal, operator, negativeSelection ?? false);
257
+ }
258
+ const MATCH_OPERATOR_MAP = {
259
+ contains: "CONTAINS",
260
+ startsWith: "STARTS_WITH",
261
+ endsWith: "ENDS_WITH",
262
+ };
263
+ function stringifyMatchFilterSelection(literal, operator, isNegative) {
264
+ const operatorStr = MATCH_OPERATOR_MAP[operator];
265
+ const prefix = isNegative ? `NOT_${operatorStr}` : operatorStr;
266
+ return `${prefix}${stringify([literal])}`;
267
+ }
229
268
  //# sourceMappingURL=resolveDrillToCustomUrl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveDrillToCustomUrl.js","sourceRoot":"","sources":["../../../../src/model/commandHandlers/drill/resolveDrillToCustomUrl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolveDrillToCustomUrl.js","sourceRoot":"","sources":["../../../../src/model/commandHandlers/drill/resolveDrillToCustomUrl.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"changeFilterContextSelectionHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAqC/C,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAgC9E,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAiFnE,wBAAiB,mCAAmC,CAChD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,4BAA4B,GAClC,YAAY,CAAC,IAAI,CAAC,CA4HpB"}
1
+ {"version":3,"file":"changeFilterContextSelectionHandler.d.ts","sourceRoot":"","sources":["../../../../src/model/commandHandlers/filterContext/changeFilterContextSelectionHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAqC/C,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAkC9E,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AA6FnE,wBAAiB,mCAAmC,CAChD,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE,4BAA4B,GAClC,YAAY,CAAC,IAAI,CAAC,CA4HpB"}
@@ -10,11 +10,12 @@ import { dashboardFilterToFilterContextItem } from "../../../_staging/dashboard/
10
10
  import { invalidArgumentsProvided } from "../../events/general.js";
11
11
  import { dispatchDashboardEvent } from "../../store/_infra/eventDispatcher.js";
12
12
  import { selectAttributeFilterConfigsOverrides, selectAttributeFilterConfigsOverridesByTab, selectAttributeFilterConfigsSelectionTypeMap, selectAttributeFilterConfigsSelectionTypeMapByTab, } from "../../store/tabs/attributeFilterConfigs/attributeFilterConfigsSelectors.js";
13
- import { selectAttributeFilterDisplayFormsMap, selectFilterContextAttributeFilterByDisplayForm, selectFilterContextAttributeFilterByDisplayFormForTab, selectFilterContextAttributeFilterByLocalId, selectFilterContextAttributeFilterByLocalIdForTab, selectFilterContextAttributeFilterItemByLocalId, selectFilterContextAttributeFilterItemByLocalIdForTab, selectFilterContextAttributeFilterItems, selectFilterContextAttributeFilterItemsForTab, selectFilterContextAttributeFilters, selectFilterContextAttributeFiltersForTab, selectFilterContextDateFilterByDataSet, selectFilterContextDateFilterByDataSetForTab, selectFilterContextDateFiltersWithDimension, selectFilterContextDateFiltersWithDimensionForTab, } from "../../store/tabs/filterContext/filterContextSelectors.js";
13
+ import { selectAttributeFilterDisplayFormsMap, selectFilterContextAttributeFilterByDisplayForm, selectFilterContextAttributeFilterByDisplayFormForTab, selectFilterContextAttributeFilterByLocalId, selectFilterContextAttributeFilterByLocalIdForTab, selectFilterContextAttributeFilterItemByDisplayForm, selectFilterContextAttributeFilterItemByDisplayFormForTab, selectFilterContextAttributeFilterItemByLocalId, selectFilterContextAttributeFilterItemByLocalIdForTab, selectFilterContextAttributeFilterItems, selectFilterContextAttributeFilterItemsForTab, selectFilterContextAttributeFilters, selectFilterContextAttributeFiltersForTab, selectFilterContextDateFilterByDataSet, selectFilterContextDateFilterByDataSetForTab, selectFilterContextDateFiltersWithDimension, selectFilterContextDateFiltersWithDimensionForTab, } from "../../store/tabs/filterContext/filterContextSelectors.js";
14
14
  import { tabsActions } from "../../store/tabs/index.js";
15
15
  import { selectTabs } from "../../store/tabs/tabsSelectors.js";
16
16
  import { resolveAttributeMetadata } from "../../utils/attributeResolver.js";
17
17
  import { resolveDisplayFormMetadata, } from "../../utils/displayFormResolver.js";
18
+ import { canApplyFilterTypeToTarget } from "../dashboard/common/attributeFilterSelectionTypeCompatibility.js";
18
19
  // Tab-aware select helpers — encapsulate the "if tab select ForTab else select" pattern.
19
20
  // Named after the base selector they wrap.
20
21
  function* selectFilterContextAttributeFilterByDisplayFormTabAware(displayForm, tabLocalIdentifier) {
@@ -27,6 +28,11 @@ function* selectFilterContextAttributeFilterItemByLocalIdTabAware(localId, tabLo
27
28
  ? yield select(selectFilterContextAttributeFilterItemByLocalIdForTab(localId, tabLocalIdentifier))
28
29
  : yield select(selectFilterContextAttributeFilterItemByLocalId(localId));
29
30
  }
31
+ function* selectFilterContextAttributeFilterItemByDisplayFormTabAware(displayForm, tabLocalIdentifier) {
32
+ return tabLocalIdentifier
33
+ ? yield select(selectFilterContextAttributeFilterItemByDisplayFormForTab(displayForm, tabLocalIdentifier))
34
+ : yield select(selectFilterContextAttributeFilterItemByDisplayForm(displayForm));
35
+ }
30
36
  function* selectFilterContextAttributeFilterByLocalIdTabAware(localId, tabLocalIdentifier) {
31
37
  return tabLocalIdentifier
32
38
  ? yield select(selectFilterContextAttributeFilterByLocalIdForTab(localId, tabLocalIdentifier))
@@ -90,11 +96,11 @@ export function* changeFilterContextSelectionHandler(ctx, cmd) {
90
96
  const supportedFilters = normalizedFilters.filter((filter) => isDashboardAttributeFilter(filter) || isDashboardDateFilter(filter));
91
97
  const uniqueFilters = uniqBy(supportedFilters, (filter) => {
92
98
  const identification = isDashboardAttributeFilter(filter)
93
- ? filter.attributeFilter.displayForm
99
+ ? dashboardAttributeFilterItemDisplayForm(filter)
94
100
  : filter.dateFilter.dataSet;
95
101
  let config;
96
102
  if (isDashboardAttributeFilter(filter)) {
97
- config = attributeFilterConfigs.find((config) => config.localIdentifier === filter.attributeFilter.localIdentifier);
103
+ config = attributeFilterConfigs.find((config) => config.localIdentifier === dashboardAttributeFilterItemLocalIdentifier(filter));
98
104
  }
99
105
  // do not remove duplicates using same primary label, but different display as label
100
106
  const secondaryIdentification = config?.displayAsLabel ? objRefToString(config.displayAsLabel) : "";
@@ -147,8 +153,8 @@ function* getDashboardFilterByDisplayAsLabelMatching(attributeFilter, attributeF
147
153
  let foundByDisplayAsLabel = false;
148
154
  let foundByDashboardFilterDisplayAsLabel = false;
149
155
  let dashboardFilter = undefined;
150
- const filterRef = attributeFilter.attributeFilter.displayForm;
151
- const filterConfig = attributeFilterConfigs.find((config) => config.localIdentifier === attributeFilter.attributeFilter.localIdentifier);
156
+ const filterRef = dashboardAttributeFilterItemDisplayForm(attributeFilter);
157
+ const filterConfig = attributeFilterConfigs.find((config) => config.localIdentifier === dashboardAttributeFilterItemLocalIdentifier(attributeFilter));
152
158
  if (filterConfig?.displayAsLabel) {
153
159
  dashboardFilter = (yield call(selectFilterContextAttributeFilterByDisplayFormTabAware, filterConfig.displayAsLabel, tabLocalIdentifier));
154
160
  foundByDisplayAsLabel = !!dashboardFilter;
@@ -167,13 +173,37 @@ function* getDashboardFilterByDisplayAsLabelMatching(attributeFilter, attributeF
167
173
  }
168
174
  return { foundByDisplayAsLabel, foundByDashboardFilterDisplayAsLabel, dashboardFilter };
169
175
  }
176
+ /**
177
+ * Finds a matching filter item on the target dashboard for a text filter using displayForm-based matching.
178
+ * Tries:
179
+ * 1. Direct displayForm match (works for text→text and text→list by primary displayForm)
180
+ * 2. DisplayAsLabel match (text filter's displayForm matches a list filter's displayAsLabel in config)
181
+ */
182
+ function* findTargetFilterItemByDisplayForm(displayFormRef, tabLocalIdentifier) {
183
+ // Direct displayForm match — covers text→text and text→list (by primary displayForm)
184
+ const directMatch = yield call(selectFilterContextAttributeFilterItemByDisplayFormTabAware, displayFormRef, tabLocalIdentifier);
185
+ if (directMatch) {
186
+ return directMatch;
187
+ }
188
+ // DisplayAsLabel match — text filter's displayForm may match a list filter's displayAsLabel
189
+ const dashboardFiltersConfigsForActiveTab = yield select(selectAttributeFilterConfigsOverrides);
190
+ const dashboardFiltersConfigsByTab = yield select(selectAttributeFilterConfigsOverridesByTab);
191
+ const dashboardFiltersConfigs = tabLocalIdentifier
192
+ ? dashboardFiltersConfigsByTab[tabLocalIdentifier]
193
+ : dashboardFiltersConfigsForActiveTab;
194
+ const matchingConfig = dashboardFiltersConfigs?.find((config) => areObjRefsEqual(config.displayAsLabel, displayFormRef));
195
+ if (matchingConfig) {
196
+ return yield call(selectFilterContextAttributeFilterItemByLocalIdTabAware, matchingConfig.localIdentifier, tabLocalIdentifier);
197
+ }
198
+ return undefined;
199
+ }
170
200
  function* getAttributeFiltersUpdateActions(attributeFilters, textAttributeFilters, attributeFilterConfigs, resetOthers, ctx, tabLocalIdentifier, selectionTypeMap) {
171
201
  const updateActions = [];
172
202
  const displayFormsToResolve = [];
173
203
  const handledLocalIds = new Set();
174
- const resolvedDisplayForms = yield call(resolveDisplayFormMetadata, ctx, attributeFilters.map((af) => af.attributeFilter.displayForm));
204
+ const resolvedDisplayForms = yield call(resolveDisplayFormMetadata, ctx, attributeFilters.map((af) => dashboardAttributeFilterItemDisplayForm(af)));
175
205
  for (const attributeFilter of attributeFilters) {
176
- const filterRef = attributeFilter.attributeFilter.displayForm;
206
+ const filterRef = dashboardAttributeFilterItemDisplayForm(attributeFilter);
177
207
  // only attribute filters with elements are relevant
178
208
  let dashboardFilter = yield call(selectFilterContextAttributeFilterByDisplayFormTabAware, filterRef, tabLocalIdentifier);
179
209
  if (!dashboardFilter && canMapDashboardFilterFromAnotherDisplayForm(ctx)) {
@@ -189,20 +219,22 @@ function* getAttributeFiltersUpdateActions(attributeFilters, textAttributeFilter
189
219
  }
190
220
  const displayFormData = resolvedDisplayForms.resolved.get(filterRef);
191
221
  if (dashboardFilter) {
222
+ const dashboardFilterLocalId = dashboardAttributeFilterItemLocalIdentifier(dashboardFilter);
223
+ const dashboardFilterDisplayForm = dashboardAttributeFilterItemDisplayForm(dashboardFilter);
192
224
  if (foundByDisplayAsLabel && displayFormData) {
193
225
  updateActions.push(
194
226
  // keep the attribute display form field up to date
195
227
  tabsActions.addAttributeFilterDisplayForm(tabLocalIdentifier
196
228
  ? { displayForm: displayFormData, tabLocalIdentifier }
197
229
  : displayFormData), tabsActions.changeAttributeDisplayForm({
198
- filterLocalId: dashboardFilter.attributeFilter.localIdentifier,
230
+ filterLocalId: dashboardFilterLocalId,
199
231
  displayForm: filterRef,
200
232
  tabLocalIdentifier,
201
233
  }),
202
234
  // backup current displayForm to the displayAsLabel
203
235
  tabsActions.changeDisplayAsLabel({
204
- localIdentifier: dashboardFilter.attributeFilter.localIdentifier,
205
- displayAsLabel: dashboardFilter.attributeFilter.displayForm,
236
+ localIdentifier: dashboardFilterLocalId,
237
+ displayAsLabel: dashboardFilterDisplayForm,
206
238
  tabLocalIdentifier,
207
239
  }));
208
240
  }
@@ -212,13 +244,13 @@ function* getAttributeFiltersUpdateActions(attributeFilters, textAttributeFilter
212
244
  tabsActions.addAttributeFilterDisplayForm(tabLocalIdentifier
213
245
  ? { displayForm: displayFormData, tabLocalIdentifier }
214
246
  : displayFormData), tabsActions.changeAttributeDisplayForm({
215
- filterLocalId: dashboardFilter.attributeFilter.localIdentifier,
247
+ filterLocalId: dashboardFilterLocalId,
216
248
  displayForm: filterRef,
217
249
  tabLocalIdentifier,
218
250
  }),
219
251
  // clear displayAsLabel
220
252
  tabsActions.changeDisplayAsLabel({
221
- localIdentifier: dashboardFilter.attributeFilter.localIdentifier,
253
+ localIdentifier: dashboardFilterLocalId,
222
254
  displayAsLabel: undefined,
223
255
  tabLocalIdentifier,
224
256
  }));
@@ -228,84 +260,103 @@ function* getAttributeFiltersUpdateActions(attributeFilters, textAttributeFilter
228
260
  ...getAttributeFilterSelectionPayload(attributeFilter, dashboardFilter),
229
261
  tabLocalIdentifier,
230
262
  }));
231
- handledLocalIds.add(dashboardFilter.attributeFilter.localIdentifier);
263
+ handledLocalIds.add(dashboardFilterLocalId);
232
264
  }
233
265
  else {
234
- // No list filter found by displayForm — check if a text filter exists with the same
235
- // localIdentifier and selectionType config allows list type override
236
- const localId = attributeFilter.attributeFilter.localIdentifier;
237
- if (localId) {
238
- const existingFilterItem = yield call(selectFilterContextAttributeFilterItemByLocalIdTabAware, localId, tabLocalIdentifier);
239
- if (existingFilterItem && isDashboardTextAttributeFilter(existingFilterItem)) {
240
- const configSelectionType = selectionTypeMap?.get(localId);
241
- // Default is "listOrText" only skip if config explicitly restricts to "text"
242
- if (configSelectionType !== "text") {
243
- // Text list: set displayAsLabel to the text filter's displayForm
244
- // so the list filter visually shows the same label
245
- updateActions.push(tabsActions.replaceAttributeFilterItem({
246
- filterLocalId: localId,
247
- filter: attributeFilter,
248
- tabLocalIdentifier,
249
- }), tabsActions.changeDisplayAsLabel({
250
- localIdentifier: localId,
251
- displayAsLabel: dashboardAttributeFilterItemDisplayForm(existingFilterItem),
252
- tabLocalIdentifier,
253
- }));
254
- displayFormsToResolve.push(attributeFilter.attributeFilter.displayForm);
255
- handledLocalIds.add(localId);
266
+ // No list filter found by displayForm — check if a text filter exists
267
+ // that can accept the incoming list filter (list→text migration).
268
+ // Try localId first (same-dashboard), then displayForm fallback (cross-dashboard drill).
269
+ const sourceLocalId = dashboardAttributeFilterItemLocalIdentifier(attributeFilter);
270
+ const sourceDisplayForm = dashboardAttributeFilterItemDisplayForm(attributeFilter);
271
+ let targetTextFilter;
272
+ if (sourceLocalId) {
273
+ targetTextFilter = (yield call(selectFilterContextAttributeFilterItemByLocalIdTabAware, sourceLocalId, tabLocalIdentifier));
274
+ }
275
+ // DisplayForm fallback for cross-dashboard drill where localIds differ
276
+ if (!targetTextFilter) {
277
+ targetTextFilter = (yield call(findTargetFilterItemByDisplayForm, sourceDisplayForm, tabLocalIdentifier));
278
+ // Also try source's displayAsLabel from incoming attributeFilterConfigs
279
+ if (!targetTextFilter) {
280
+ const incomingConfig = attributeFilterConfigs.find((config) => config.localIdentifier === sourceLocalId);
281
+ if (incomingConfig?.displayAsLabel) {
282
+ targetTextFilter = (yield call(findTargetFilterItemByDisplayForm, incomingConfig.displayAsLabel, tabLocalIdentifier));
256
283
  }
257
284
  }
258
285
  }
286
+ if (targetTextFilter && isDashboardTextAttributeFilter(targetTextFilter)) {
287
+ const targetLocalId = dashboardAttributeFilterItemLocalIdentifier(targetTextFilter);
288
+ const configSelectionType = selectionTypeMap?.get(targetLocalId);
289
+ if (canApplyFilterTypeToTarget("list", configSelectionType, targetTextFilter)) {
290
+ // Text → list: set displayAsLabel to the text filter's displayForm
291
+ // so the list filter visually shows the same label
292
+ updateActions.push(tabsActions.replaceAttributeFilterItem({
293
+ filterLocalId: targetLocalId,
294
+ filter: attributeFilter,
295
+ tabLocalIdentifier,
296
+ }), tabsActions.changeDisplayAsLabel({
297
+ localIdentifier: targetLocalId,
298
+ displayAsLabel: dashboardAttributeFilterItemDisplayForm(targetTextFilter),
299
+ tabLocalIdentifier,
300
+ }));
301
+ displayFormsToResolve.push(sourceDisplayForm);
302
+ handledLocalIds.add(targetLocalId);
303
+ }
304
+ }
259
305
  }
260
306
  }
261
307
  // Build replace actions for text filter types (arbitrary, match).
262
308
  for (const textFilter of textAttributeFilters) {
263
309
  const localId = dashboardAttributeFilterItemLocalIdentifier(textFilter);
264
- if (localId) {
265
- const existingFilter = yield call(selectFilterContextAttributeFilterItemByLocalIdTabAware, localId, tabLocalIdentifier);
266
- if (!existingFilter) {
310
+ if (!localId) {
311
+ continue;
312
+ }
313
+ // 1. Try localId match first (same-dashboard scenario)
314
+ let existingFilter = yield call(selectFilterContextAttributeFilterItemByLocalIdTabAware, localId, tabLocalIdentifier);
315
+ // 2. DisplayForm fallback for cross-dashboard drill where localIds differ
316
+ if (!existingFilter) {
317
+ const textDisplayForm = dashboardAttributeFilterItemDisplayForm(textFilter);
318
+ existingFilter = (yield call(findTargetFilterItemByDisplayForm, textDisplayForm, tabLocalIdentifier));
319
+ }
320
+ if (!existingFilter) {
321
+ continue;
322
+ }
323
+ const targetLocalId = dashboardAttributeFilterItemLocalIdentifier(existingFilter);
324
+ if (handledLocalIds.has(targetLocalId)) {
325
+ continue;
326
+ }
327
+ // Check if migration is allowed based on selection type config
328
+ const isExistingText = isDashboardTextAttributeFilter(existingFilter);
329
+ if (!isExistingText) {
330
+ // Text → list migration: check if target's selection type allows text
331
+ const configSelectionType = selectionTypeMap?.get(targetLocalId);
332
+ if (!canApplyFilterTypeToTarget("text", configSelectionType, existingFilter)) {
267
333
  continue;
268
334
  }
269
- // Allow replacement if existing filter is already text type,
270
- // or if selectionType config allows text on a list filter target
271
- const isExistingText = isDashboardTextAttributeFilter(existingFilter);
272
- if (!isExistingText) {
273
- const configSelectionType = selectionTypeMap?.get(localId);
274
- // Default is "listOrText", except single selection list filters → "list"
275
- if (configSelectionType === "list") {
276
- continue;
277
- }
278
- if (configSelectionType === undefined &&
279
- isDashboardAttributeFilter(existingFilter) &&
280
- isSingleSelectionFilter(existingFilter)) {
281
- continue;
282
- }
283
- }
284
- updateActions.push(tabsActions.replaceAttributeFilterItem({
285
- filterLocalId: localId,
286
- filter: textFilter,
335
+ }
336
+ updateActions.push(tabsActions.replaceAttributeFilterItem({
337
+ filterLocalId: targetLocalId,
338
+ filter: textFilter,
339
+ tabLocalIdentifier,
340
+ }));
341
+ // List text: update displayAsLabel to match the text filter's displayForm
342
+ if (!isExistingText) {
343
+ const textDisplayForm = dashboardAttributeFilterItemDisplayForm(textFilter);
344
+ updateActions.push(tabsActions.changeDisplayAsLabel({
345
+ localIdentifier: targetLocalId,
346
+ displayAsLabel: textDisplayForm,
287
347
  tabLocalIdentifier,
288
348
  }));
289
- // List → text: update displayAsLabel to match the text filter's displayForm
290
- if (!isExistingText) {
291
- const textDisplayForm = dashboardAttributeFilterItemDisplayForm(textFilter);
292
- updateActions.push(tabsActions.changeDisplayAsLabel({
293
- localIdentifier: localId,
294
- displayAsLabel: textDisplayForm,
295
- tabLocalIdentifier,
296
- }));
297
- displayFormsToResolve.push(textDisplayForm);
298
- }
299
- handledLocalIds.add(localId);
349
+ displayFormsToResolve.push(textDisplayForm);
300
350
  }
351
+ handledLocalIds.add(targetLocalId);
301
352
  }
302
353
  if (resetOthers) {
303
354
  const currentAttributeFilters = yield call(selectFilterContextAttributeFiltersTabAware, tabLocalIdentifier);
304
355
  // for element-based filters that have not been handled, create clear selection actions
305
- const unhandledFilters = currentAttributeFilters.filter((filter) => !handledLocalIds.has(filter.attributeFilter.localIdentifier));
356
+ const unhandledFilters = currentAttributeFilters.filter((filter) => !handledLocalIds.has(dashboardAttributeFilterItemLocalIdentifier(filter)));
306
357
  if (unhandledFilters.length > 0) {
307
358
  updateActions.push(tabsActions.clearAttributeFiltersSelection({
308
- filterLocalIds: unhandledFilters.map((filter) => filter.attributeFilter.localIdentifier),
359
+ filterLocalIds: unhandledFilters.map((filter) => dashboardAttributeFilterItemLocalIdentifier(filter)),
309
360
  tabLocalIdentifier,
310
361
  }));
311
362
  }