@gooddata/sdk-ui-filters 11.65.0-alpha.0 → 11.65.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 (71) hide show
  1. package/esm/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelect.d.ts.map +1 -1
  2. package/esm/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelect.js +5 -2
  3. package/esm/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelectItem.d.ts +1 -1
  4. package/esm/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelectItem.d.ts.map +1 -1
  5. package/esm/AttributeFilter/Components/ElementsSelect/AttributeFilterElementsSelectItem.js +3 -2
  6. package/esm/AttributeFilter/Components/ElementsSelect/SingleSelectionAttributeFilterElementsSelectItem.d.ts +1 -1
  7. package/esm/AttributeFilter/Components/ElementsSelect/SingleSelectionAttributeFilterElementsSelectItem.d.ts.map +1 -1
  8. package/esm/AttributeFilter/Components/ElementsSelect/SingleSelectionAttributeFilterElementsSelectItem.js +3 -2
  9. package/esm/AttributeFilter/Components/ElementsSelect/types.d.ts +7 -0
  10. package/esm/AttributeFilter/Components/ElementsSelect/types.d.ts.map +1 -1
  11. package/esm/AttributeFilter/hooks/types.d.ts +13 -1
  12. package/esm/AttributeFilter/hooks/types.d.ts.map +1 -1
  13. package/esm/AttributeFilter/hooks/useAttributeFilterController.d.ts.map +1 -1
  14. package/esm/AttributeFilter/hooks/useAttributeFilterController.js +2 -1
  15. package/esm/AttributeFilter/hooks/useAttributeFilterControllerData.d.ts +2 -1
  16. package/esm/AttributeFilter/hooks/useAttributeFilterControllerData.d.ts.map +1 -1
  17. package/esm/AttributeFilter/hooks/useAttributeFilterControllerData.js +4 -1
  18. package/esm/AttributeFilter/hooks/useAttributeFilterHandler.d.ts +2 -1
  19. package/esm/AttributeFilter/hooks/useAttributeFilterHandler.d.ts.map +1 -1
  20. package/esm/AttributeFilter/hooks/useAttributeFilterHandler.js +25 -4
  21. package/esm/AttributeFilter/hooks/useAttributeFilterHandlerState.d.ts +1 -0
  22. package/esm/AttributeFilter/hooks/useAttributeFilterHandlerState.d.ts.map +1 -1
  23. package/esm/AttributeFilter/hooks/useAttributeFilterHandlerState.js +1 -0
  24. package/esm/AttributeFilter/hooks/useElementsFilterController.d.ts +2 -1
  25. package/esm/AttributeFilter/hooks/useElementsFilterController.d.ts.map +1 -1
  26. package/esm/AttributeFilter/hooks/useElementsFilterController.js +3 -2
  27. package/esm/AttributeFilter/types.d.ts +9 -1
  28. package/esm/AttributeFilter/types.d.ts.map +1 -1
  29. package/esm/AttributeFilterHandler/factory.d.ts +9 -1
  30. package/esm/AttributeFilterHandler/factory.d.ts.map +1 -1
  31. package/esm/AttributeFilterHandler/factory.js +3 -1
  32. package/esm/AttributeFilterHandler/internal/bridge.d.ts +1 -0
  33. package/esm/AttributeFilterHandler/internal/bridge.d.ts.map +1 -1
  34. package/esm/AttributeFilterHandler/internal/bridge.js +4 -1
  35. package/esm/AttributeFilterHandler/internal/loader.d.ts +1 -0
  36. package/esm/AttributeFilterHandler/internal/loader.d.ts.map +1 -1
  37. package/esm/AttributeFilterHandler/internal/loader.js +3 -0
  38. package/esm/AttributeFilterHandler/internal/redux/displayForms/displayFormsReducers.d.ts.map +1 -1
  39. package/esm/AttributeFilterHandler/internal/redux/displayForms/displayFormsReducers.js +1 -0
  40. package/esm/AttributeFilterHandler/internal/redux/elements/InMemoryPaging.d.ts +2 -1
  41. package/esm/AttributeFilterHandler/internal/redux/elements/InMemoryPaging.d.ts.map +1 -1
  42. package/esm/AttributeFilterHandler/internal/redux/elements/InMemoryPaging.js +5 -3
  43. package/esm/AttributeFilterHandler/internal/redux/elements/elementsSaga.d.ts.map +1 -1
  44. package/esm/AttributeFilterHandler/internal/redux/elements/elementsSaga.js +3 -0
  45. package/esm/AttributeFilterHandler/internal/redux/elements/elementsSelectors.d.ts +8 -2
  46. package/esm/AttributeFilterHandler/internal/redux/elements/elementsSelectors.d.ts.map +1 -1
  47. package/esm/AttributeFilterHandler/internal/redux/elements/elementsSelectors.js +16 -3
  48. package/esm/AttributeFilterHandler/internal/redux/elements/formatElementTitles.d.ts +13 -0
  49. package/esm/AttributeFilterHandler/internal/redux/elements/formatElementTitles.d.ts.map +1 -0
  50. package/esm/AttributeFilterHandler/internal/redux/elements/formatElementTitles.js +36 -0
  51. package/esm/AttributeFilterHandler/internal/redux/elements/loadElementsFromBackend.d.ts.map +1 -1
  52. package/esm/AttributeFilterHandler/internal/redux/elements/loadElementsFromBackend.js +11 -7
  53. package/esm/AttributeFilterHandler/internal/redux/elements/numericElementValues.d.ts +41 -0
  54. package/esm/AttributeFilterHandler/internal/redux/elements/numericElementValues.d.ts.map +1 -0
  55. package/esm/AttributeFilterHandler/internal/redux/elements/numericElementValues.js +103 -0
  56. package/esm/AttributeFilterHandler/internal/redux/loadCustomElements/loadCustomElementsReducers.d.ts.map +1 -1
  57. package/esm/AttributeFilterHandler/internal/redux/loadCustomElements/loadCustomElementsReducers.js +5 -0
  58. package/esm/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageReducers.d.ts.map +1 -1
  59. package/esm/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageReducers.js +4 -0
  60. package/esm/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageReducers.d.ts.map +1 -1
  61. package/esm/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageReducers.js +3 -0
  62. package/esm/AttributeFilterHandler/internal/redux/store/createStore.d.ts.map +1 -1
  63. package/esm/AttributeFilterHandler/internal/redux/store/createStore.js +1 -0
  64. package/esm/AttributeFilterHandler/internal/redux/store/state.d.ts +10 -1
  65. package/esm/AttributeFilterHandler/internal/redux/store/state.d.ts.map +1 -1
  66. package/esm/AttributeFilterHandler/internal/redux/store/types.d.ts +5 -1
  67. package/esm/AttributeFilterHandler/internal/redux/store/types.d.ts.map +1 -1
  68. package/esm/AttributeFilterHandler/types/elementsLoader.d.ts +15 -0
  69. package/esm/AttributeFilterHandler/types/elementsLoader.d.ts.map +1 -1
  70. package/esm/sdk-ui-filters.d.ts +53 -2
  71. package/package.json +12 -12
@@ -72,6 +72,7 @@ export declare class AttributeFilterLoader implements IAttributeFilterLoader {
72
72
  getOffset: () => number;
73
73
  setSearch: (search: string) => void;
74
74
  getSearch: () => string;
75
+ getElementsNumberFormat: () => string | undefined;
75
76
  setLimit: (limit: number) => void;
76
77
  getLimit: () => number;
77
78
  setOrder: (order: SortDirection) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/AttributeFilterHandler/internal/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/AttributeFilterHandler/internal/loader.ts"],"names":[],"mappings":"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"}
@@ -222,6 +222,9 @@ export class AttributeFilterLoader {
222
222
  getSearch = () => {
223
223
  return this.bridge.getSearch();
224
224
  };
225
+ getElementsNumberFormat = () => {
226
+ return this.bridge.getElementsNumberFormat();
227
+ };
225
228
  setLimit = (limit) => {
226
229
  this.bridge.setLimit(limit);
227
230
  };
@@ -1 +1 @@
1
- {"version":3,"file":"displayFormsReducers.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/displayForms/displayFormsReducers.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAAmB,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AA4BhE;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;6BA5BI,MAAM;+BAAqB,MAAM;yBAAe,WAAW;;;;;;4BAW5D,MAAM;0BAAgB,WAAW;;;;;;yBASpC,MAAM;0BAAgB,WAAW;;;;CAYjE,CAAC"}
1
+ {"version":3,"file":"displayFormsReducers.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/displayForms/displayFormsReducers.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,MAAM,EAAmB,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AA6BhE;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;6BA7BI,MAAM;+BAAqB,MAAM;yBAAe,WAAW;;;;;;4BAW5D,MAAM;0BAAgB,WAAW;;;;;;yBAUpC,MAAM;0BAAgB,WAAW;;;;CAYjE,CAAC"}
@@ -11,6 +11,7 @@ const transformFilterToPrimaryLabel = (state, action) => {
11
11
  const setDisplayAsLabel = (state, action) => {
12
12
  if (!areObjRefsEqual(state.displayAsLabelRef, action.payload.displayAsLabel)) {
13
13
  state.elements.cache = {};
14
+ state.elements.numberFormat = undefined;
14
15
  }
15
16
  state.displayAsLabelRef = action.payload.displayAsLabel;
16
17
  };
@@ -2,11 +2,12 @@ import { type IElementsQueryResult } from "@gooddata/sdk-backend-spi";
2
2
  import { type IAttributeElement } from "@gooddata/sdk-model";
3
3
  export declare class InMemoryPaging implements IElementsQueryResult {
4
4
  protected readonly allItems: IAttributeElement[];
5
+ readonly numberFormat?: string | undefined;
5
6
  readonly items: IAttributeElement[];
6
7
  readonly limit: number;
7
8
  readonly offset: number;
8
9
  readonly totalCount: number;
9
- constructor(allItems: IAttributeElement[], limit?: number, offset?: number);
10
+ constructor(allItems: IAttributeElement[], limit?: number, offset?: number, numberFormat?: string | undefined);
10
11
  next(): Promise<IElementsQueryResult>;
11
12
  goTo(pageIndex: number): Promise<IElementsQueryResult>;
12
13
  all(): Promise<IAttributeElement[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"InMemoryPaging.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/elements/InMemoryPaging.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,qBAAa,cAAe,YAAW,oBAAoB;IAOnD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,EAAE;IANpD,SAAgB,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3C,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,UAAU,EAAE,MAAM,CAAC;IAEnC,YACuB,QAAQ,EAAE,iBAAiB,EAAE,EAChD,KAAK,SAAK,EACV,MAAM,SAAI,EAab;IAEY,IAAI,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAQjD;IAEY,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAMlE;IAEY,GAAG,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAE/C;IAEY,SAAS,CAClB,SAAS,EAAE,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,KAAK,MAAM,GAClE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAE9B;CACJ"}
1
+ {"version":3,"file":"InMemoryPaging.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/elements/InMemoryPaging.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,qBAAa,cAAe,YAAW,oBAAoB;IAOnD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,EAAE;aAGhC,YAAY,CAAC,EAAE,MAAM;IATzC,SAAgB,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3C,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,UAAU,EAAE,MAAM,CAAC;IAEnC,YACuB,QAAQ,EAAE,iBAAiB,EAAE,EAChD,KAAK,SAAK,EACV,MAAM,SAAI,EACM,YAAY,CAAC,EAAE,MAAM,YAAA,EAaxC;IAEY,IAAI,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAQjD;IAEY,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAQlE;IAEY,GAAG,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAE/C;IAEY,SAAS,CAClB,SAAS,EAAE,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,KAAK,MAAM,GAClE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAE9B;CACJ"}
@@ -3,12 +3,14 @@ import { invariant } from "ts-invariant";
3
3
  // inspired by the same thing in sdk-backend-base, copied here to avoid the dependency
4
4
  export class InMemoryPaging {
5
5
  allItems;
6
+ numberFormat;
6
7
  items;
7
8
  limit;
8
9
  offset;
9
10
  totalCount;
10
- constructor(allItems, limit = 50, offset = 0) {
11
+ constructor(allItems, limit = 50, offset = 0, numberFormat) {
11
12
  this.allItems = allItems;
13
+ this.numberFormat = numberFormat;
12
14
  invariant(offset >= 0, `paging offset must be non-negative, got: ${offset}`);
13
15
  invariant(limit > 0, `limit must be a positive number, got: ${limit}`);
14
16
  // this will naturally return empty items if at the end of data; limit will always be positive
@@ -23,13 +25,13 @@ export class InMemoryPaging {
23
25
  if (this.items.length === 0) {
24
26
  return this;
25
27
  }
26
- return Promise.resolve(new InMemoryPaging(this.allItems, this.limit, this.offset + this.items.length));
28
+ return Promise.resolve(new InMemoryPaging(this.allItems, this.limit, this.offset + this.items.length, this.numberFormat));
27
29
  }
28
30
  async goTo(pageIndex) {
29
31
  if (this.items.length === 0) {
30
32
  return this;
31
33
  }
32
- return Promise.resolve(new InMemoryPaging(this.allItems, this.limit, pageIndex * this.items.length));
34
+ return Promise.resolve(new InMemoryPaging(this.allItems, this.limit, pageIndex * this.limit, this.numberFormat));
33
35
  }
34
36
  async all() {
35
37
  return Promise.resolve([...this.allItems]);
@@ -1 +1 @@
1
- {"version":3,"file":"elementsSaga.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/elements/elementsSaga.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAYvG;;GAEG;AACH,wBAAiB,YAAY,CACzB,OAAO,EAAE,oBAAoB,GAAG,iBAAiB,EACjD,OAAO,CAAC,EAAE,MAAM,GACjB,YAAY,CAAC,mBAAmB,CAAC,CA0DnC"}
1
+ {"version":3,"file":"elementsSaga.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/elements/elementsSaga.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAYvG;;GAEG;AACH,wBAAiB,YAAY,CACzB,OAAO,EAAE,oBAAoB,GAAG,iBAAiB,EACjD,OAAO,CAAC,EAAE,MAAM,GACjB,YAAY,CAAC,mBAAmB,CAAC,CA6DnC"}
@@ -35,5 +35,8 @@ export function* elementsSaga(options, cacheId) {
35
35
  totalCount: elementsQueryResult.totalCount,
36
36
  options: omit(allOptions, "signal"),
37
37
  cacheId: elementsQueryResult.cacheId,
38
+ ...(elementsQueryResult.numberFormat === undefined
39
+ ? {}
40
+ : { numberFormat: elementsQueryResult.numberFormat }),
38
41
  };
39
42
  }
@@ -1,5 +1,5 @@
1
1
  import { type IElementsQueryAttributeFilter } from "@gooddata/sdk-backend-spi";
2
- import { type IAbsoluteDateFilter, type IAttributeElement, type IAttributeMetadataObject, type IMeasure, type IMeasureDefinitionType, type IRelativeDateFilter, type ObjRef, type SortDirection } from "@gooddata/sdk-model";
2
+ import { type IAbsoluteDateFilter, type IAttributeElement, type IAttributeMetadataObject, type IMeasure, type IMeasureDefinitionType, type IRelativeDateFilter, type ISeparators, type ObjRef, type SortDirection } from "@gooddata/sdk-model";
3
3
  import { type GoodDataSdkError } from "@gooddata/sdk-ui";
4
4
  import { type AsyncOperationStatus, type AttributeElementKey } from "../../../types/common.js";
5
5
  import { type ILoadElementsOptions } from "../../../types/elementsLoader.js";
@@ -19,8 +19,14 @@ export declare const getElementsByKeys: (keys: AttributeElementKey[], elementsMa
19
19
  * @internal
20
20
  */
21
21
  export declare const selectElementKeys: FilterSelector<AttributeElementKey[]>;
22
+ export declare const selectElementsSeparators: FilterSelector<ISeparators | undefined>;
23
+ export declare const selectElementsNumberFormat: FilterSelector<string | undefined>;
22
24
  /**
23
- * @internal
25
+ * Loaded elements, with a formatted title added to the values of a numeric computed attribute.
26
+ *
27
+ * @remarks
28
+ * The number format comes with the loaded elements; the titles are formatted when read so that the raw
29
+ * titles in the cache stay untouched for selection and filter definitions.
24
30
  */
25
31
  export declare const selectElementsCache: FilterSelector<Record<string, IAttributeElement>>;
26
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"elementsSelectors.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/elements/elementsSelectors.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EACH,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,QAAQ,EACb,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,MAAM,EACX,KAAK,aAAa,EACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,SACpB,mBAAmB,EAAE,eACd,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,wBAGjD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,mBAAmB,EAAE,CAGnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAGjF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,iBAAiB,EAAE,CAI9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,cAAc,CAAC,MAAM,GAAG,SAAS,CAGvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,cAAc,CAAC,oBAAoB,CAG3E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,gBAAgB,GAAG,SAAS,CAGlF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2CAA2C,EAAE,cAAc,CAAC,MAAM,GAAG,SAAS,CAG1F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAAC,iBAAiB,EAAE,CAGpE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,MAAM,CAG/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,cAAc,CAAC,aAAa,GAAG,SAAS,CAGjE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,cAAc,CAAC,MAAM,CAG9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,MAAM,CAG/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,8BAA8B,EAAE,cAAc,CAAC,6BAA6B,EAAE,CAG1F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,cAAc,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAGrF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B,EAAE,cAAc,CAAC,MAAM,EAAE,CAGlE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CACD,CAAC;AAEpG;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,cAAc,CAAC,MAAM,GAAG,SAAS,CAG5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,oBAAoB,CA8B1E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,+BAA+B,EAAE,cAAc,CAAC,oBAAoB,CAKhF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wCAAwC,EAAE,cAAc,CAAC,wBAAwB,EAAE,CACH,CAAC"}
1
+ {"version":3,"file":"elementsSelectors.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/elements/elementsSelectors.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EACH,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,QAAQ,EACb,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,aAAa,EACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKzD;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,SACpB,mBAAmB,EAAE,eACd,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,wBAGjD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,cAAc,CAAC,mBAAmB,EAAE,CAGnE,CAAC;AAUF,eAAO,MAAM,wBAAwB,EAAE,cAAc,CAAC,WAAW,GAAG,SAAS,CAG5E,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,cAAc,CAAC,MAAM,GAAG,SAAS,CAGzE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAKjF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,iBAAiB,EAAE,CAI9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,cAAc,CAAC,MAAM,GAAG,SAAS,CAGvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,cAAc,CAAC,oBAAoB,CAG3E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,gBAAgB,GAAG,SAAS,CAGlF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2CAA2C,EAAE,cAAc,CAAC,MAAM,GAAG,SAAS,CAG1F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAAC,iBAAiB,EAAE,CAGpE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,MAAM,CAG/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,cAAc,CAAC,aAAa,GAAG,SAAS,CAGjE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,cAAc,CAAC,MAAM,CAG9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,MAAM,CAG/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,8BAA8B,EAAE,cAAc,CAAC,6BAA6B,EAAE,CAG1F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,cAAc,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAGrF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B,EAAE,cAAc,CAAC,MAAM,EAAE,CAGlE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CACD,CAAC;AAEpG;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,cAAc,CAAC,MAAM,GAAG,SAAS,CAG5D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,oBAAoB,CAmC1E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,+BAA+B,EAAE,cAAc,CAAC,oBAAoB,CAKhF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wCAAwC,EAAE,cAAc,CAAC,wBAAwB,EAAE,CACH,CAAC"}
@@ -2,6 +2,8 @@
2
2
  import { createSelector } from "@reduxjs/toolkit";
3
3
  import { compact } from "lodash-es";
4
4
  import { selectState, toCacheKey } from "../common/selectors.js";
5
+ import { formatElementTitlesMap } from "./formatElementTitles.js";
6
+ import { toRawValueSearch } from "./numericElementValues.js";
5
7
  /**
6
8
  * Get the elements specified by the keys.
7
9
  *
@@ -22,7 +24,17 @@ export const selectElementKeys = createSelector(selectState, (state) => state.el
22
24
  /**
23
25
  * @internal
24
26
  */
25
- export const selectElementsCache = createSelector(selectState, (state) => state.elements.cache);
27
+ const selectRawElementsCache = createSelector(selectState, (state) => state.elements.cache);
28
+ export const selectElementsSeparators = createSelector(selectState, (state) => state.config.separators);
29
+ export const selectElementsNumberFormat = createSelector(selectState, (state) => state.elements.numberFormat);
30
+ /**
31
+ * Loaded elements, with a formatted title added to the values of a numeric computed attribute.
32
+ *
33
+ * @remarks
34
+ * The number format comes with the loaded elements; the titles are formatted when read so that the raw
35
+ * titles in the cache stay untouched for selection and filter definitions.
36
+ */
37
+ export const selectElementsCache = createSelector(selectRawElementsCache, selectElementsNumberFormat, selectElementsSeparators, formatElementTitlesMap);
26
38
  /**
27
39
  * @internal
28
40
  */
@@ -86,7 +98,7 @@ export const selectCacheId = createSelector(selectState, (state) => state.elemen
86
98
  /**
87
99
  * @internal
88
100
  */
89
- export const selectLoadElementsOptions = createSelector(selectOffset, selectLimit, selectOrder, selectSearch, selectLimitingAttributeFilters, selectLimitingMeasures, selectLimitingDateFilters, selectLimitingValidationItems, (offset, limit, order, search, limitingAttributeFilters, limitingMeasures, limitingDateFilters, limitingValidationItems) => {
101
+ export const selectLoadElementsOptions = createSelector(selectOffset, selectLimit, selectOrder, selectSearch, selectLimitingAttributeFilters, selectLimitingMeasures, selectLimitingDateFilters, selectLimitingValidationItems, selectElementsNumberFormat, selectElementsSeparators, (offset, limit, order, search, limitingAttributeFilters, limitingMeasures, limitingDateFilters, limitingValidationItems, numberFormat, separators) => {
90
102
  return {
91
103
  limit,
92
104
  limitingAttributeFilters,
@@ -95,7 +107,8 @@ export const selectLoadElementsOptions = createSelector(selectOffset, selectLimi
95
107
  limitingValidationItems,
96
108
  offset,
97
109
  order,
98
- search,
110
+ // number-formatted values are matched by their raw value, see toRawValueSearch
111
+ search: toRawValueSearch(search, numberFormat, separators),
99
112
  };
100
113
  });
101
114
  /**
@@ -0,0 +1,13 @@
1
+ import { type IAttributeElement, type ISeparators } from "@gooddata/sdk-model";
2
+ /**
3
+ * Gives the cached elements, keyed by element key, a formatted title according to the number format of
4
+ * their values.
5
+ *
6
+ * @remarks
7
+ * Returns the very same map when nothing gets formatted, so that nothing downstream sees a new reference
8
+ * for an unchanged cache.
9
+ *
10
+ * @internal
11
+ */
12
+ export declare function formatElementTitlesMap(elements: Record<string, IAttributeElement>, numberFormat: string | undefined, separators: ISeparators | undefined): Record<string, IAttributeElement>;
13
+ //# sourceMappingURL=formatElementTitles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatElementTitles.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/elements/formatElementTitles.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAwB/E;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAC3C,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,UAAU,EAAE,WAAW,GAAG,SAAS,GACpC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAcnC"}
@@ -0,0 +1,36 @@
1
+ // (C) 2026 GoodData Corporation
2
+ import { createNumberFormatter, formatAttributeValue } from "@gooddata/sdk-ui";
3
+ /**
4
+ * Gives an element of a numeric computed attribute a formatted title, the same way measure values are
5
+ * formatted. Elements that already have a formatted title (dates) and titles that are not numbers are
6
+ * returned unchanged; the raw title and the uri always stay as they are.
7
+ */
8
+ function formatElementTitle(element, numberFormat, formatter) {
9
+ const { title, formattedTitle } = element;
10
+ if (formattedTitle !== undefined) {
11
+ return element;
12
+ }
13
+ const formatted = formatAttributeValue(title, numberFormat, formatter);
14
+ return formatted === null || formatted === title ? element : { ...element, formattedTitle: formatted };
15
+ }
16
+ /**
17
+ * Gives the cached elements, keyed by element key, a formatted title according to the number format of
18
+ * their values.
19
+ *
20
+ * @remarks
21
+ * Returns the very same map when nothing gets formatted, so that nothing downstream sees a new reference
22
+ * for an unchanged cache.
23
+ *
24
+ * @internal
25
+ */
26
+ export function formatElementTitlesMap(elements, numberFormat, separators) {
27
+ if (!numberFormat) {
28
+ return elements;
29
+ }
30
+ const formatter = createNumberFormatter(separators);
31
+ const entries = Object.entries(elements);
32
+ const formatted = entries.map(([key, element]) => [key, formatElementTitle(element, numberFormat, formatter)]);
33
+ return formatted.every(([, element], index) => element === entries[index][1])
34
+ ? elements
35
+ : Object.fromEntries(formatted);
36
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"loadElementsFromBackend.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/elements/loadElementsFromBackend.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAIvB,KAAK,oBAAoB,EAG5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAKH,KAAK,MAAM,EAKd,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,KAAK,mCAAmC,EAAE,MAAM,mBAAmB,CAAC;AAG7E,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAuCtD;;GAEG;AACH,wBAAsB,uBAAuB,CACzC,OAAO,EAAE,mCAAmC,EAC5C,OAAO,EAAE,oBAAoB,GAAG,iBAAiB,GAAG;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,EAC9E,kBAAkB,EAAE,mBAAmB,EACvC,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,oBAAoB,CAAC,CAsH/B;AAED,eAAO,MAAM,sBAAsB,YAAa,kBAAkB,YACpB,CAAC"}
1
+ {"version":3,"file":"loadElementsFromBackend.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/elements/loadElementsFromBackend.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAIvB,KAAK,oBAAoB,EAG5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAKH,KAAK,MAAM,EAKd,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,KAAK,mCAAmC,EAAE,MAAM,mBAAmB,CAAC;AAG7E,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AA2CtD;;GAEG;AACH,wBAAsB,uBAAuB,CACzC,OAAO,EAAE,mCAAmC,EAC5C,OAAO,EAAE,oBAAoB,GAAG,iBAAiB,GAAG;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,EAC9E,kBAAkB,EAAE,mBAAmB,EACvC,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,oBAAoB,CAAC,CAsH/B;AAED,eAAO,MAAM,sBAAsB,YAAa,kBAAkB,YACpB,CAAC"}
@@ -23,12 +23,16 @@ async function loadElementsAsExecution(backend, workspace, displayFormRef, eleme
23
23
  });
24
24
  const dataViewFacade = DataViewFacade.for(executionDataView);
25
25
  const [headers] = dataViewFacade.meta().attributeHeaders();
26
- return headers.map(([header]) => {
27
- return {
28
- title: header.attributeHeaderItem.name,
29
- uri: header.attributeHeaderItem.uri,
30
- };
31
- });
26
+ const [descriptor] = dataViewFacade.meta().attributeDescriptors();
27
+ return {
28
+ elements: headers.map(([header]) => {
29
+ return {
30
+ title: header.attributeHeaderItem.name,
31
+ uri: header.attributeHeaderItem.uri,
32
+ };
33
+ }),
34
+ numberFormat: descriptor?.attributeHeader.numberFormat,
35
+ };
32
36
  }
33
37
  /**
34
38
  * @internal
@@ -50,7 +54,7 @@ export async function loadElementsFromBackend(context, options, hiddenElementsIn
50
54
  isElementsQueryOptionsElementsByValue(elements) &&
51
55
  isInitialSelectionRequest) {
52
56
  const resolvedElements = await loadElementsAsExecution(backend, workspace, displayFormRef, elements, hiddenElementsInfo);
53
- return new InMemoryPaging(resolvedElements, limit, offset);
57
+ return new InMemoryPaging(resolvedElements.elements, limit, offset, resolvedElements.numberFormat);
54
58
  }
55
59
  let loader = backend.workspace(workspace).attributes().elements().forDisplayForm(displayFormRef);
56
60
  const loaderOptions = {
@@ -0,0 +1,41 @@
1
+ import { type IAttributeElement, type ISeparators } from "@gooddata/sdk-model";
2
+ /**
3
+ * Reads text written with the given separators as a number in plain notation, e.g. "1 234,5" with a space
4
+ * for grouping and a decimal comma becomes "1234.5".
5
+ *
6
+ * @remarks
7
+ * Only the separators are understood: grouping separators in thousands positions are dropped and the
8
+ * decimal separator becomes a dot. Anything else a number format may add (units, scaling, percent) makes the text not a number.
9
+ * An unfinished number, such as "12," while typing, is still read ("12.").
10
+ *
11
+ * @param text - text to read
12
+ * @param separators - separators the text is written with; defaults to "," for grouping and "." for decimals
13
+ * @returns the number in plain notation, or undefined when the text is not a number
14
+ * @internal
15
+ */
16
+ export declare function toPlainNumberText(text: string, separators: ISeparators | undefined): string | undefined;
17
+ /**
18
+ * Turns the search a user typed into the search for the raw element values of a number-formatted attribute.
19
+ *
20
+ * @remarks
21
+ * Elements are matched by their raw value, so a number typed with the separators the user reads, such as
22
+ * "1 234,5", is searched as "1234.5". Anything that is not such a number is searched as typed.
23
+ *
24
+ * @param search - search as typed by the user
25
+ * @param numberFormat - number format of the element values; without one the search is kept as typed
26
+ * @param separators - separators the formatted values are displayed with
27
+ * @internal
28
+ */
29
+ export declare function toRawValueSearch(search: string, numberFormat: string | undefined, separators: ISeparators | undefined): string;
30
+ /**
31
+ * Gets the raw value of a number-formatted element when its displayed value says more than the raw value
32
+ * with separators, e.g. a rounded "1.23" for "1.2349" or a scaled "1.2 K" for "1234". Returns undefined
33
+ * when the displayed value differs only in separators or padding ("1 234,50" for "1234.5"), and for
34
+ * elements without a formatted value.
35
+ *
36
+ * @param element - element of an attribute with a number format
37
+ * @param separators - separators the formatted value is displayed with
38
+ * @internal
39
+ */
40
+ export declare function getNumberFormattedElementRawTitle(element: IAttributeElement, separators: ISeparators | undefined): string | undefined;
41
+ //# sourceMappingURL=numericElementValues.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numericElementValues.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/elements/numericElementValues.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AA2B/E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CA0BvG;AAgBD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC5B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,UAAU,EAAE,WAAW,GAAG,SAAS,GACpC,MAAM,CASR;AAED;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAC7C,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,WAAW,GAAG,SAAS,GACpC,MAAM,GAAG,SAAS,CAUpB"}
@@ -0,0 +1,103 @@
1
+ // (C) 2026 GoodData Corporation
2
+ const DEFAULT_SEPARATORS = { thousand: ",", decimal: "." };
3
+ /**
4
+ * Removes grouping separators from the integer part of a number, or returns undefined when they do not
5
+ * sit in thousands positions ("1.234" for a dot, but not "1234.5" or "1.23"), so that text which is not
6
+ * grouped, such as a raw value with a dot where the dot groups thousands, is not misread.
7
+ */
8
+ function removeGrouping(text, thousand) {
9
+ if (!thousand) {
10
+ return text;
11
+ }
12
+ // a space-like grouping separator (e.g. a non-breaking space) is typed as a plain space too
13
+ const groups = /^\s$/.test(thousand) ? text.split(/\s/) : text.split(thousand);
14
+ if (groups.length === 1) {
15
+ return text;
16
+ }
17
+ const [first, ...rest] = groups;
18
+ const isGrouped = /^\d{1,3}$/.test(first) && rest.every((group) => /^\d{3}$/.test(group));
19
+ return isGrouped ? groups.join("") : undefined;
20
+ }
21
+ /**
22
+ * Reads text written with the given separators as a number in plain notation, e.g. "1 234,5" with a space
23
+ * for grouping and a decimal comma becomes "1234.5".
24
+ *
25
+ * @remarks
26
+ * Only the separators are understood: grouping separators in thousands positions are dropped and the
27
+ * decimal separator becomes a dot. Anything else a number format may add (units, scaling, percent) makes the text not a number.
28
+ * An unfinished number, such as "12," while typing, is still read ("12.").
29
+ *
30
+ * @param text - text to read
31
+ * @param separators - separators the text is written with; defaults to "," for grouping and "." for decimals
32
+ * @returns the number in plain notation, or undefined when the text is not a number
33
+ * @internal
34
+ */
35
+ export function toPlainNumberText(text, separators) {
36
+ const thousand = separators?.thousand ?? DEFAULT_SEPARATORS.thousand;
37
+ const decimal = separators?.decimal ?? DEFAULT_SEPARATORS.decimal;
38
+ const trimmed = text.trim();
39
+ const sign = trimmed.startsWith("-") ? "-" : "";
40
+ const unsigned = trimmed.slice(sign.length);
41
+ const [integerPart, fractionPart, ...rest] = decimal ? unsigned.split(decimal) : [unsigned];
42
+ if (rest.length > 0) {
43
+ return undefined;
44
+ }
45
+ const integerDigits = removeGrouping(integerPart, thousand);
46
+ if (integerDigits === undefined) {
47
+ return undefined;
48
+ }
49
+ const isDigitsOnly = /^\d*$/.test(integerDigits) && (fractionPart === undefined || /^\d*$/.test(fractionPart));
50
+ if (!isDigitsOnly || !/\d/.test(`${integerDigits}${fractionPart ?? ""}`)) {
51
+ return undefined;
52
+ }
53
+ return fractionPart === undefined ? `${sign}${integerDigits}` : `${sign}${integerDigits}.${fractionPart}`;
54
+ }
55
+ /**
56
+ * Drops trailing zeros of the decimal part, and the decimal point with them when nothing is left ("1.50"
57
+ * becomes "1.5", "1.0" becomes "1"). An unfinished "12." stays as it is. This only widens a substring match.
58
+ */
59
+ function withoutTrailingDecimalZeros(plainNumber) {
60
+ if (!plainNumber.includes(".")) {
61
+ return plainNumber;
62
+ }
63
+ const trimmed = plainNumber.replace(/0+$/, "");
64
+ return trimmed !== plainNumber && trimmed.endsWith(".") ? trimmed.slice(0, -1) : trimmed;
65
+ }
66
+ /**
67
+ * Turns the search a user typed into the search for the raw element values of a number-formatted attribute.
68
+ *
69
+ * @remarks
70
+ * Elements are matched by their raw value, so a number typed with the separators the user reads, such as
71
+ * "1 234,5", is searched as "1234.5". Anything that is not such a number is searched as typed.
72
+ *
73
+ * @param search - search as typed by the user
74
+ * @param numberFormat - number format of the element values; without one the search is kept as typed
75
+ * @param separators - separators the formatted values are displayed with
76
+ * @internal
77
+ */
78
+ export function toRawValueSearch(search, numberFormat, separators) {
79
+ if (!numberFormat || !search) {
80
+ return search;
81
+ }
82
+ const plainNumber = toPlainNumberText(search, separators);
83
+ // Raw values carry no padding, so "1 234,50" read from a "#,##0.00" value must find "1234.5".
84
+ return plainNumber === undefined ? search : withoutTrailingDecimalZeros(plainNumber);
85
+ }
86
+ /**
87
+ * Gets the raw value of a number-formatted element when its displayed value says more than the raw value
88
+ * with separators, e.g. a rounded "1.23" for "1.2349" or a scaled "1.2 K" for "1234". Returns undefined
89
+ * when the displayed value differs only in separators or padding ("1 234,50" for "1234.5"), and for
90
+ * elements without a formatted value.
91
+ *
92
+ * @param element - element of an attribute with a number format
93
+ * @param separators - separators the formatted value is displayed with
94
+ * @internal
95
+ */
96
+ export function getNumberFormattedElementRawTitle(element, separators) {
97
+ const { title, formattedTitle } = element;
98
+ if (!title || !formattedTitle || formattedTitle === title) {
99
+ return undefined;
100
+ }
101
+ const displayedNumber = toPlainNumberText(formattedTitle, separators);
102
+ return displayedNumber !== undefined && Number(displayedNumber) === Number(title) ? undefined : title;
103
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"loadCustomElementsReducers.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/loadCustomElements/loadCustomElementsReducers.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACtF,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvG,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAsFhE;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;qBAtFV,oBAAoB;yBAAe,WAAW,GAAG,SAAS;;;;;;yBAItD,WAAW,GAAG,SAAS;;;;;;0BAmB9B,WAAW;;;;;;mBAiDV,gBAAgB;yBAAe,WAAW,GAAG,SAAS;;;;;;yBAIhD,WAAW,GAAG,SAAS;;;;;;yBAIvB,WAAW,GAAG,SAAS;;;;CAavD,CAAC"}
1
+ {"version":3,"file":"loadCustomElementsReducers.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/loadCustomElements/loadCustomElementsReducers.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACtF,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvG,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AA2FhE;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;qBA3FV,oBAAoB;yBAAe,WAAW,GAAG,SAAS;;;;;;yBAItD,WAAW,GAAG,SAAS;;;;;;0BAmB9B,WAAW;;;;;;mBAsDV,gBAAgB;yBAAe,WAAW,GAAG,SAAS;;;;;;yBAIhD,WAAW,GAAG,SAAS;;;;;;yBAIvB,WAAW,GAAG,SAAS;;;;CAavD,CAAC"}
@@ -20,6 +20,11 @@ const loadCustomElementsSuccess = (state, action) => {
20
20
  const keys = [];
21
21
  const { options: { elements, filterByPrimaryLabel }, correlation, } = action.payload;
22
22
  const shouldOverrideKeys = state.initialization.status === "loading" && correlation?.startsWith(INIT_SELECTION_PREFIX);
23
+ // Both the selected elements resolved at init and any other custom load carry the format, so the
24
+ // selection is formatted even when the initial page load fails or comes without one.
25
+ if (action.payload.numberFormat !== undefined) {
26
+ state.elements.numberFormat = action.payload.numberFormat;
27
+ }
23
28
  if (elements) {
24
29
  const originalElements = getElementValues(elements);
25
30
  // iterate over original elements to keep the order in selection,
@@ -1 +1 @@
1
- {"version":3,"file":"loadInitialElementsPageReducers.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageReducers.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAoDhE;;GAEG;AACH,eAAO,MAAM,+BAA+B;;;yBArD8C,WAAW;;;;;;yBAIb,WAAW;;;;;;yBAe1E,WAAW;;;;;;mBAiBT,gBAAgB;yBAAe,WAAW;;;;;;;yBAQoB,WAAW;;;;CAgBnG,CAAC"}
1
+ {"version":3,"file":"loadInitialElementsPageReducers.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/loadInitialElementsPage/loadInitialElementsPageReducers.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAwDhE;;GAEG;AACH,eAAO,MAAM,+BAA+B;;;yBAzD8C,WAAW;;;;;;yBAIb,WAAW;;;;;;yBAe1E,WAAW;;;;;;mBAqBT,gBAAgB;yBAAe,WAAW;;;;;;;yBAQoB,WAAW;;;;CAgBnG,CAAC"}
@@ -13,6 +13,10 @@ const loadInitialElementsPageStart = (state) => {
13
13
  const loadInitialElementsPageSuccess = (state, action) => {
14
14
  state.elements.initialPageLoad.status = "success";
15
15
  state.elements.totalCountWithCurrentSettings = action.payload.totalCount;
16
+ // a source without a format (static elements) must not drop the one already known
17
+ if (action.payload.numberFormat !== undefined) {
18
+ state.elements.numberFormat = action.payload.numberFormat;
19
+ }
16
20
  action.payload.elements.forEach((el) => {
17
21
  const cacheKey = getElementCacheKey(el);
18
22
  if (!state.elements.cache[cacheKey]) {
@@ -1 +1 @@
1
- {"version":3,"file":"loadNextElementsPageReducers.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageReducers.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAiDhE;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;yBAlD8C,WAAW;;;;;;yBAIb,WAAW;;;;;;yBAUvE,WAAW;;;;;;mBAmBT,gBAAgB;yBAAe,WAAW;;;;;;;yBAQiB,WAAW;;;;CAgBhG,CAAC"}
1
+ {"version":3,"file":"loadNextElementsPageReducers.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/loadNextElementsPage/loadNextElementsPageReducers.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAoDhE;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;yBArD8C,WAAW;;;;;;yBAIb,WAAW;;;;;;yBAUvE,WAAW;;;;;;mBAsBT,gBAAgB;yBAAe,WAAW;;;;;;;yBAQiB,WAAW;;;;CAgBhG,CAAC"}
@@ -7,6 +7,9 @@ const loadNextElementsPageStart = (state) => {
7
7
  };
8
8
  const loadNextElementsPageSuccess = (state, action) => {
9
9
  state.elements.nextPageLoad.status = "success";
10
+ if (action.payload.numberFormat !== undefined) {
11
+ state.elements.numberFormat = action.payload.numberFormat;
12
+ }
10
13
  action.payload.elements.forEach((el) => {
11
14
  const cacheKey = getElementCacheKey(el);
12
15
  if (!state.elements.cache[cacheKey]) {
@@ -1 +1 @@
1
- {"version":3,"file":"createStore.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/store/createStore.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,KAAK,4BAA4B,EAAE,KAAK,mCAAmC,EAAE,MAAM,YAAY,CAAC;AAkCzG;;GAEG;AACH,wBAAgB,iCAAiC,CAC7C,OAAO,EAAE,mCAAmC,GAC7C,4BAA4B,CAmF9B"}
1
+ {"version":3,"file":"createStore.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/store/createStore.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,KAAK,4BAA4B,EAAE,KAAK,mCAAmC,EAAE,MAAM,YAAY,CAAC;AAkCzG;;GAEG;AACH,wBAAgB,iCAAiC,CAC7C,OAAO,EAAE,mCAAmC,GAC7C,4BAA4B,CAoF9B"}
@@ -69,6 +69,7 @@ export function createAttributeFilterHandlerStore(context) {
69
69
  hiddenElements: context.hiddenElements,
70
70
  staticElements: context.staticElements,
71
71
  withoutApply: context.withoutApply,
72
+ separators: context.separators,
72
73
  },
73
74
  originalFilter: context.attributeFilter,
74
75
  },
@@ -1,5 +1,5 @@
1
1
  import { type AnyAction, type CaseReducer } from "@reduxjs/toolkit";
2
- import { type IAttributeElement, type IAttributeFilter, type IAttributeMetadataObject, type ObjRef } from "@gooddata/sdk-model";
2
+ import { type IAttributeElement, type IAttributeFilter, type IAttributeMetadataObject, type ISeparators, type ObjRef } from "@gooddata/sdk-model";
3
3
  import { type GoodDataSdkError } from "@gooddata/sdk-ui";
4
4
  import { type AsyncOperationStatus, type AttributeElementKey } from "../../../types/common.js";
5
5
  import { type ILoadElementsOptions } from "../../../types/elementsLoader.js";
@@ -29,6 +29,11 @@ export interface IAttributeFilterState {
29
29
  };
30
30
  totalCountWithCurrentSettings?: number;
31
31
  cache: Record<string, IAttributeElement>;
32
+ /**
33
+ * Number format of the loaded element values (numeric computed attributes); the element titles
34
+ * are formatted with it and the separators when read from the cache.
35
+ */
36
+ numberFormat?: string;
32
37
  initialPageLoad: {
33
38
  status: AsyncOperationStatus;
34
39
  error?: GoodDataSdkError;
@@ -58,6 +63,10 @@ export interface IAttributeFilterState {
58
63
  hiddenElements?: string[];
59
64
  staticElements?: IAttributeElement[];
60
65
  withoutApply?: boolean;
66
+ /**
67
+ * Number separators used when formatting element values of numeric computed attributes.
68
+ */
69
+ separators?: ISeparators;
61
70
  };
62
71
  originalFilter?: IAttributeFilter;
63
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/store/state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,MAAM,EACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,QAAQ,CAAC;IAChC,cAAc,EAAE;QACZ,MAAM,EAAE,oBAAoB,CAAC;QAC7B,KAAK,CAAC,EAAE,gBAAgB,CAAC;KAC5B,CAAC;IACF,SAAS,EAAE;QACP,IAAI,CAAC,EAAE,wBAAwB,CAAC;QAChC,MAAM,EAAE,oBAAoB,CAAC;QAC7B,KAAK,CAAC,EAAE,gBAAgB,CAAC;KAC5B,CAAC;IACF,QAAQ,EAAE;QACN,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAC;QAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,wBAAwB,EAAE;YACtB,MAAM,EAAE,oBAAoB,CAAC;YAC7B,KAAK,CAAC,EAAE,gBAAgB,CAAC;SAC5B,CAAC;QACF,6BAA6B,CAAC,EAAE,MAAM,CAAC;QACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACzC,eAAe,EAAE;YACb,MAAM,EAAE,oBAAoB,CAAC;YAC7B,KAAK,CAAC,EAAE,gBAAgB,CAAC;SAC5B,CAAC;QACF,YAAY,EAAE;YACV,MAAM,EAAE,oBAAoB,CAAC;YAC7B,KAAK,CAAC,EAAE,gBAAgB,CAAC;SAC5B,CAAC;QACF,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;QACzC,cAAc,EAAE,oBAAoB,CAAC;QACrC,kCAAkC,EAAE,wBAAwB,EAAE,CAAC;QAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,SAAS,EAAE;QACP,QAAQ,EAAE;YACN,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAC;YAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;YACrB,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;SAC1C,CAAC;QACF,OAAO,EAAE;YACL,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAC;YAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;YACrB,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;SAC1C,CAAC;KACL,CAAC;IACF,MAAM,EAAE;QACJ,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;QACrC,YAAY,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;IACF,cAAc,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,GAAG,cAAc,CAmCvF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,IAAI,WAAW,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/store/state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,WAAW,EAChB,KAAK,MAAM,EACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,GAAG,QAAQ,CAAC;IAChC,cAAc,EAAE;QACZ,MAAM,EAAE,oBAAoB,CAAC;QAC7B,KAAK,CAAC,EAAE,gBAAgB,CAAC;KAC5B,CAAC;IACF,SAAS,EAAE;QACP,IAAI,CAAC,EAAE,wBAAwB,CAAC;QAChC,MAAM,EAAE,oBAAoB,CAAC;QAC7B,KAAK,CAAC,EAAE,gBAAgB,CAAC;KAC5B,CAAC;IACF,QAAQ,EAAE;QACN,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAC;QAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,wBAAwB,EAAE;YACtB,MAAM,EAAE,oBAAoB,CAAC;YAC7B,KAAK,CAAC,EAAE,gBAAgB,CAAC;SAC5B,CAAC;QACF,6BAA6B,CAAC,EAAE,MAAM,CAAC;QACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACzC;;;WAGG;QACH,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE;YACb,MAAM,EAAE,oBAAoB,CAAC;YAC7B,KAAK,CAAC,EAAE,gBAAgB,CAAC;SAC5B,CAAC;QACF,YAAY,EAAE;YACV,MAAM,EAAE,oBAAoB,CAAC;YAC7B,KAAK,CAAC,EAAE,gBAAgB,CAAC;SAC5B,CAAC;QACF,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;QACzC,cAAc,EAAE,oBAAoB,CAAC;QACrC,kCAAkC,EAAE,wBAAwB,EAAE,CAAC;QAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,SAAS,EAAE;QACP,QAAQ,EAAE;YACN,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAC;YAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;YACrB,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;SAC1C,CAAC;QACF,OAAO,EAAE;YACL,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAC;YAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;YACrB,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;SAC1C,CAAC;KACL,CAAC;IACF,MAAM,EAAE;QACJ,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;QACrC,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB;;WAEG;QACH,UAAU,CAAC,EAAE,WAAW,CAAC;KAC5B,CAAC;IACF,cAAc,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,GAAG,cAAc,CAmCvF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,IAAI,WAAW,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { type Action, type AnyAction } from "@reduxjs/toolkit";
2
2
  import { type IAnalyticalBackend } from "@gooddata/sdk-backend-spi";
3
- import { type IAttributeElement, type IAttributeFilter, type ObjRef } from "@gooddata/sdk-model";
3
+ import { type IAttributeElement, type IAttributeFilter, type ISeparators, type ObjRef } from "@gooddata/sdk-model";
4
4
  import { type IAttributeFilterState } from "./state.js";
5
5
  /**
6
6
  * Event listener that can be used to listen dispatched AttributeFilterHandlerStore actions.
@@ -34,5 +34,9 @@ export interface IAttributeFilterHandlerStoreContext {
34
34
  staticElements?: IAttributeElement[];
35
35
  eventListener: AttributeFilterHandlerEventListener;
36
36
  withoutApply?: boolean;
37
+ /**
38
+ * Number separators used when formatting element values of numeric computed attributes.
39
+ */
40
+ separators?: ISeparators;
37
41
  }
38
42
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/store/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAEjG,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;;;GAIG;AACH,MAAM,MAAM,mCAAmC,GAAG,CAC9C,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,CAAC,KAAK,CAAC,KAC3E,IAAI,CAAC;AAEV;;;;;GAKG;AACH,MAAM,WAAW,4BAA4B;IACzC,OAAO,EAAE,mCAAmC,CAAC;IAC7C,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,CAAC,KAAK,CAAC,CAAC;CACnE;AAED;;;;GAIG;AACH,MAAM,WAAW,mCAAmC;IAChD,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,gBAAgB,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACrC,aAAa,EAAE,mCAAmC,CAAC;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/AttributeFilterHandler/internal/redux/store/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,MAAM,EACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD;;;;GAIG;AACH,MAAM,MAAM,mCAAmC,GAAG,CAC9C,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,CAAC,KAAK,CAAC,KAC3E,IAAI,CAAC;AAEV;;;;;GAKG;AACH,MAAM,WAAW,4BAA4B;IACzC,OAAO,EAAE,mCAAmC,CAAC;IAC7C,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,CAAC,KAAK,CAAC,CAAC;CACnE;AAED;;;;GAIG;AACH,MAAM,WAAW,mCAAmC;IAChD,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,gBAAgB,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACrC,aAAa,EAAE,mCAAmC,CAAC;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC;CAC5B"}