@sankhyalabs/sankhyablocks 6.10.0 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/dist/cjs/{ConfigStorage-da2bf3bf.js → ConfigStorage-97468a0f.js} +28 -22
  2. package/dist/cjs/{PersonalizedFilterUtils-cfcd9af2.js → PersonalizedFilterUtils-9848e09b.js} +18 -64
  3. package/dist/cjs/{SnkFormConfigManager-d7cc9118.js → SnkFormConfigManager-bef6e022.js} +1 -1
  4. package/dist/cjs/{SnkMessageBuilder-a5a9b437.js → SnkMessageBuilder-f40df6d4.js} +18 -2
  5. package/dist/cjs/{filter-bar-config-fetcher-58cfc12e.js → filter-bar-config-fetcher-a7747f69.js} +22 -5
  6. package/dist/cjs/index-8d94b7e0.js +7 -0
  7. package/dist/cjs/index-c5771aba.js +44 -0
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  10. package/dist/cjs/snk-application.cjs.entry.js +3 -3
  11. package/dist/cjs/snk-data-exporter.cjs.entry.js +2 -2
  12. package/dist/cjs/{snk-data-unit-9d03800c.js → snk-data-unit-b0cc2d42.js} +1 -1
  13. package/dist/cjs/snk-data-unit.cjs.entry.js +2 -2
  14. package/dist/cjs/snk-detail-view.cjs.entry.js +5 -5
  15. package/dist/cjs/snk-expression-group_2.cjs.entry.js +542 -0
  16. package/dist/cjs/snk-filter-advanced-mode_2.cjs.entry.js +66 -0
  17. package/dist/cjs/snk-filter-bar.cjs.entry.js +14 -14
  18. package/dist/cjs/snk-filter-detail.cjs.entry.js +3 -3
  19. package/dist/cjs/{snk-expression-item_3.cjs.entry.js → snk-filter-field-search_2.cjs.entry.js} +23 -315
  20. package/dist/cjs/snk-filter-modal-item.cjs.entry.js +2 -2
  21. package/dist/cjs/snk-filter-modal.cjs.entry.js +2 -2
  22. package/dist/cjs/snk-form.cjs.entry.js +3 -3
  23. package/dist/cjs/snk-grid-config.cjs.entry.js +2 -2
  24. package/dist/cjs/snk-grid.cjs.entry.js +2 -2
  25. package/dist/cjs/{snk-guides-viewer-36766466.js → snk-guides-viewer-897368ea.js} +1 -1
  26. package/dist/cjs/snk-guides-viewer.cjs.entry.js +4 -4
  27. package/dist/cjs/snk-personalized-filter.cjs.entry.js +122 -31
  28. package/dist/collection/collection-manifest.json +2 -0
  29. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +1 -1
  30. package/dist/collection/components/snk-personalized-filter/snk-personalized-filter.css +5 -1
  31. package/dist/collection/components/snk-personalized-filter/snk-personalized-filter.js +114 -23
  32. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-expression-group/snk-expression-group.js +4 -6
  33. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-expression-item/snk-expression-item.js +2 -1
  34. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-advanced-mode/snk-filter-advanced-mode.css +10 -0
  35. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-advanced-mode/snk-filter-advanced-mode.js +95 -0
  36. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-assistent-mode/snk-filter-assistent-mode.css +66 -0
  37. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-assistent-mode/snk-filter-assistent-mode.js +158 -0
  38. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-param-config/snk-filter-param-config.js +8 -2
  39. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-param-config/utils/PersonalizedFilterUtils.js +14 -23
  40. package/dist/collection/lib/configs/ConfigStorage.js +5 -3
  41. package/dist/collection/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.js +22 -5
  42. package/dist/collection/lib/http/data-fetcher/fetchers/personalized-filter-fetcher.js +22 -18
  43. package/dist/collection/lib/message/resources/snk-personalized-filter.msg.js +18 -2
  44. package/dist/components/ConfigStorage.js +27 -21
  45. package/dist/components/PersonalizedFilterUtils.js +14 -23
  46. package/dist/components/SnkMessageBuilder.js +18 -2
  47. package/dist/components/filter-bar-config-fetcher.js +22 -5
  48. package/dist/components/index.d.ts +2 -0
  49. package/dist/components/index.js +2 -0
  50. package/dist/components/snk-crud.js +34 -22
  51. package/dist/components/snk-detail-view2.js +49 -27
  52. package/dist/components/snk-expression-group2.js +4 -6
  53. package/dist/components/snk-expression-item2.js +2 -1
  54. package/dist/components/snk-filter-advanced-mode.d.ts +11 -0
  55. package/dist/components/snk-filter-advanced-mode.js +6 -0
  56. package/dist/components/snk-filter-advanced-mode2.js +46 -0
  57. package/dist/components/snk-filter-assistent-mode.d.ts +11 -0
  58. package/dist/components/snk-filter-assistent-mode.js +6 -0
  59. package/dist/components/snk-filter-assistent-mode2.js +77 -0
  60. package/dist/components/snk-filter-bar2.js +17 -5
  61. package/dist/components/snk-filter-param-config2.js +6 -0
  62. package/dist/components/snk-grid2.js +22 -10
  63. package/dist/components/snk-personalized-filter2.js +131 -28
  64. package/dist/esm/{ConfigStorage-f1e805a0.js → ConfigStorage-02f17a26.js} +28 -22
  65. package/dist/esm/{PersonalizedFilterUtils-1a167d89.js → PersonalizedFilterUtils-731cae01.js} +16 -62
  66. package/dist/esm/{SnkFormConfigManager-324f6dc7.js → SnkFormConfigManager-cd9e6cab.js} +1 -1
  67. package/dist/esm/{SnkMessageBuilder-76f62087.js → SnkMessageBuilder-5be56185.js} +18 -2
  68. package/dist/esm/{filter-bar-config-fetcher-a358b8e0.js → filter-bar-config-fetcher-790283d8.js} +22 -5
  69. package/dist/esm/index-620ac460.js +7 -0
  70. package/dist/esm/index-ae591a44.js +44 -0
  71. package/dist/esm/loader.js +1 -1
  72. package/dist/esm/sankhyablocks.js +1 -1
  73. package/dist/esm/snk-application.entry.js +3 -3
  74. package/dist/esm/snk-data-exporter.entry.js +2 -2
  75. package/dist/esm/{snk-data-unit-0ff2d644.js → snk-data-unit-b9b4bb5f.js} +1 -1
  76. package/dist/esm/snk-data-unit.entry.js +2 -2
  77. package/dist/esm/snk-detail-view.entry.js +5 -5
  78. package/dist/esm/snk-expression-group_2.entry.js +537 -0
  79. package/dist/esm/snk-filter-advanced-mode_2.entry.js +61 -0
  80. package/dist/esm/snk-filter-bar.entry.js +5 -5
  81. package/dist/esm/snk-filter-detail.entry.js +3 -3
  82. package/dist/esm/{snk-expression-item_3.entry.js → snk-filter-field-search_2.entry.js} +12 -303
  83. package/dist/esm/snk-filter-modal-item.entry.js +2 -2
  84. package/dist/esm/snk-filter-modal.entry.js +2 -2
  85. package/dist/esm/snk-form.entry.js +3 -3
  86. package/dist/esm/snk-grid-config.entry.js +2 -2
  87. package/dist/esm/snk-grid.entry.js +2 -2
  88. package/dist/esm/{snk-guides-viewer-e7209909.js → snk-guides-viewer-579c70cc.js} +1 -1
  89. package/dist/esm/snk-guides-viewer.entry.js +4 -4
  90. package/dist/esm/snk-personalized-filter.entry.js +119 -28
  91. package/dist/sankhyablocks/{p-8f6575c8.entry.js → p-19fdcf88.entry.js} +1 -1
  92. package/dist/sankhyablocks/{p-18b74675.entry.js → p-1fe2976e.entry.js} +1 -1
  93. package/dist/sankhyablocks/p-2227bb94.js +1 -0
  94. package/dist/sankhyablocks/p-386102a7.entry.js +1 -0
  95. package/dist/sankhyablocks/{p-7a075ae6.js → p-3b059f4e.js} +1 -1
  96. package/dist/sankhyablocks/p-4af6cbef.entry.js +1 -0
  97. package/dist/sankhyablocks/p-4bbc7aac.entry.js +1 -0
  98. package/dist/sankhyablocks/{p-3251999f.entry.js → p-4f687570.entry.js} +1 -1
  99. package/dist/sankhyablocks/p-5098f618.js +1 -0
  100. package/dist/sankhyablocks/p-7e636457.entry.js +1 -0
  101. package/dist/sankhyablocks/p-7f1c4687.js +56 -0
  102. package/dist/sankhyablocks/{p-ed9e1e52.entry.js → p-88f4ef73.entry.js} +1 -1
  103. package/dist/sankhyablocks/{p-4f3df9b6.js → p-90a926c7.js} +1 -1
  104. package/dist/sankhyablocks/{p-eef26a01.entry.js → p-90e7c3a2.entry.js} +1 -1
  105. package/dist/sankhyablocks/p-933c0c0b.js +1 -0
  106. package/dist/sankhyablocks/p-9666c0d0.entry.js +1 -0
  107. package/dist/sankhyablocks/p-97720467.entry.js +1 -0
  108. package/dist/sankhyablocks/{p-522172e1.entry.js → p-97c586ab.entry.js} +1 -1
  109. package/dist/sankhyablocks/{p-bd840081.entry.js → p-9fa9331b.entry.js} +1 -1
  110. package/dist/sankhyablocks/{p-652b9081.js → p-acd8b97b.js} +1 -1
  111. package/dist/sankhyablocks/{p-40a5d35e.entry.js → p-ad6673fb.entry.js} +1 -1
  112. package/dist/sankhyablocks/p-bd86c9d3.entry.js +1 -0
  113. package/dist/sankhyablocks/{p-8d583a79.entry.js → p-cdbdcf13.entry.js} +1 -1
  114. package/dist/sankhyablocks/p-f4184ce7.js +1 -0
  115. package/dist/sankhyablocks/{p-56378a3b.js → p-fb1e5b6d.js} +1 -1
  116. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  117. package/dist/types/components/snk-personalized-filter/interfaces/IPersonalizedFilter.d.ts +4 -0
  118. package/dist/types/components/snk-personalized-filter/snk-personalized-filter.d.ts +17 -6
  119. package/dist/types/components/snk-personalized-filter/subcomponents/snk-expression-group/snk-expression-group.d.ts +2 -2
  120. package/dist/types/components/snk-personalized-filter/subcomponents/snk-filter-advanced-mode/snk-filter-advanced-mode.d.ts +20 -0
  121. package/dist/types/components/snk-personalized-filter/subcomponents/snk-filter-assistent-mode/snk-filter-assistent-mode.d.ts +31 -0
  122. package/dist/types/components/snk-personalized-filter/subcomponents/snk-filter-param-config/snk-filter-param-config.d.ts +6 -0
  123. package/dist/types/components/snk-personalized-filter/subcomponents/snk-filter-param-config/utils/PersonalizedFilterUtils.d.ts +2 -2
  124. package/dist/types/components.d.ts +103 -2
  125. package/dist/types/lib/configs/ConfigStorage.d.ts +3 -2
  126. package/dist/types/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.d.ts +2 -1
  127. package/dist/types/lib/http/data-fetcher/fetchers/personalized-filter-fetcher.d.ts +2 -1
  128. package/package.json +1 -1
  129. package/react/components.d.ts +2 -0
  130. package/react/components.js +2 -0
  131. package/react/components.js.map +1 -1
  132. package/dist/cjs/IExpressionItem-0e32ebb7.js +0 -7
  133. package/dist/cjs/snk-expression-group.cjs.entry.js +0 -250
  134. package/dist/esm/IExpressionItem-21f225bf.js +0 -7
  135. package/dist/esm/snk-expression-group.entry.js +0 -246
  136. package/dist/sankhyablocks/p-432a73a8.js +0 -1
  137. package/dist/sankhyablocks/p-63bff2a8.js +0 -1
  138. package/dist/sankhyablocks/p-6490021d.entry.js +0 -1
  139. package/dist/sankhyablocks/p-7d68a43a.js +0 -1
  140. package/dist/sankhyablocks/p-7fd8a0ab.entry.js +0 -1
  141. package/dist/sankhyablocks/p-9f34a127.entry.js +0 -1
  142. package/dist/sankhyablocks/p-d4adf773.js +0 -68
  143. package/dist/sankhyablocks/p-d9586ead.entry.js +0 -1
  144. package/dist/sankhyablocks/p-eb30a52a.entry.js +0 -1
  145. package/dist/sankhyablocks/p-f8ce17d3.entry.js +0 -1
@@ -0,0 +1,46 @@
1
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
+ import { StringUtils } from '@sankhyalabs/core';
3
+
4
+ const snkFilterAdvancedModeCss = ".sc-snk-filter-advanced-mode-h{display:block;--snk-personalized-filter--title--color:var(--title--primary, #2B3A54)}.snk-filter-advanced-mode__title.sc-snk-filter-advanced-mode{color:var(--snk-personalized-filter--title--color)}";
5
+
6
+ const SnkFilterAdvancedMode = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
7
+ constructor() {
8
+ super();
9
+ this.__registerHost();
10
+ this.ezExpressionChange = createEvent(this, "ezExpressionChange", 7);
11
+ this.filterAssistent = undefined;
12
+ this.application = undefined;
13
+ }
14
+ getMessage(key, params) {
15
+ return this.application.messagesBuilder.getMessage(key, params);
16
+ }
17
+ getWarningMessageComponent() {
18
+ var _a;
19
+ if (StringUtils.isEmpty((_a = this.filterAssistent) === null || _a === void 0 ? void 0 : _a.warningMessage))
20
+ return undefined;
21
+ return (h("div", { class: "ez-flex" }, h("ez-alert", { alertType: "warn" }, this.filterAssistent.warningMessage)));
22
+ }
23
+ render() {
24
+ var _a;
25
+ return (h(Host, null, h("span", { class: "ez-title ez-title--small ez-padding-bottom--small snk-filter-advanced-mode__title" }, this.getMessage("snkPersonalizedFilter.info.applyExpression")), h("ez-text-area", { rows: 9, label: this.getMessage("snkPersonalizedFilter.info.labelExpression"), value: (_a = this.filterAssistent) === null || _a === void 0 ? void 0 : _a.expression, onEzChange: (evt) => this.ezExpressionChange.emit(evt.detail) }), this.getWarningMessageComponent()));
26
+ }
27
+ static get style() { return snkFilterAdvancedModeCss; }
28
+ }, [2, "snk-filter-advanced-mode", {
29
+ "filterAssistent": [1040],
30
+ "application": [1040]
31
+ }]);
32
+ function defineCustomElement() {
33
+ if (typeof customElements === "undefined") {
34
+ return;
35
+ }
36
+ const components = ["snk-filter-advanced-mode"];
37
+ components.forEach(tagName => { switch (tagName) {
38
+ case "snk-filter-advanced-mode":
39
+ if (!customElements.get(tagName)) {
40
+ customElements.define(tagName, SnkFilterAdvancedMode);
41
+ }
42
+ break;
43
+ } });
44
+ }
45
+
46
+ export { SnkFilterAdvancedMode as S, defineCustomElement as d };
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface SnkFilterAssistentMode extends Components.SnkFilterAssistentMode, HTMLElement {}
4
+ export const SnkFilterAssistentMode: {
5
+ prototype: SnkFilterAssistentMode;
6
+ new (): SnkFilterAssistentMode;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,6 @@
1
+ import { S as SnkFilterAssistentMode$1, d as defineCustomElement$1 } from './snk-filter-assistent-mode2.js';
2
+
3
+ const SnkFilterAssistentMode = SnkFilterAssistentMode$1;
4
+ const defineCustomElement = defineCustomElement$1;
5
+
6
+ export { SnkFilterAssistentMode, defineCustomElement };
@@ -0,0 +1,77 @@
1
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
+ import { P as PersonalizedFilterUtils } from './PersonalizedFilterUtils.js';
3
+ import { d as defineCustomElement$4 } from './snk-expression-group2.js';
4
+ import { d as defineCustomElement$3 } from './snk-expression-item2.js';
5
+ import { d as defineCustomElement$2 } from './snk-filter-field-search2.js';
6
+ import { d as defineCustomElement$1 } from './snk-filter-param-config2.js';
7
+
8
+ const snkFilterAssistentModeCss = ".sc-snk-filter-assistent-mode-h{display:flex;flex-direction:column;height:100%;--text-area--font-family:var(--font-pattern, Arial);--text-area__label--floating--top:var(--space--small, 6px);--snk-filter-assistent-mode__container--border-radius:var(--border--radius-medium, 12px);--snk-filter-assistent-mode__container--background:var(--background--medium, #f0f3f7);--snk-filter-assistent-mode__container--margin:var(--space--small, 6px) var(--space--medium, 12px)}.ez-box__container--external.sc-snk-filter-assistent-mode{height:100px;width:100%;overflow-y:auto;background-color:var(--snk-filter-assistent-mode__container--background);border-radius:var(--snk-filter-assistent-mode__container--border-radius)}.ez-box__container--internal.sc-snk-filter-assistent-mode{margin:var(--snk-filter-assistent-mode__container--margin)}.ez-box__container--title.sc-snk-filter-assistent-mode{display:block;user-select:none;font-family:var(--text-area--font-family);font-size:var(--text--extra-small);color:var(--title--primary);top:var(--text-area__label--floating--top)}.ez-box__container--expression.sc-snk-filter-assistent-mode{display:block;font-family:var(--text-area--font-family);font-size:var(--text--medium);color:var(--title--primary);top:var(--text-area__label--floating--top)}.snk-personalized-filter__expression-input--line.sc-snk-filter-assistent-mode{width:100%;height:2px;background-color:var(--snk-personalized-filter--background-color-line);margin-top:var(--snk-personalized-filter--margin-line);margin-bottom:var(--snk-personalized-filter--margin-line)}";
9
+
10
+ const SnkFilterAssistentMode = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
11
+ constructor() {
12
+ super();
13
+ this.__registerHost();
14
+ this.ezChangeFilter = createEvent(this, "ezChangeFilter", 7);
15
+ this.filterAssistent = undefined;
16
+ this.messagesBuilder = undefined;
17
+ this.filterId = undefined;
18
+ this.entityUri = undefined;
19
+ this.application = undefined;
20
+ }
21
+ getMessage(key, params) {
22
+ return this.application.messagesBuilder.getMessage(key, params);
23
+ }
24
+ async handleFilterGroupChange() {
25
+ const assistent = await this._mainExpressionGroup.getExpressionGroup();
26
+ this.filterAssistent = Object.assign(Object.assign({}, this.filterAssistent), { assistent });
27
+ this.filterAssistent.parameters = PersonalizedFilterUtils.buildVariableParameters(this.filterAssistent.assistent);
28
+ this.filterAssistent.expression = PersonalizedFilterUtils.buildGroupExpression(this.filterAssistent.assistent);
29
+ this.ezChangeFilter.emit(this.filterAssistent);
30
+ }
31
+ render() {
32
+ var _a, _b;
33
+ return (h(Host, null, h("div", { class: "ez-padding-top--small snk-personalized-filter__group" }, h("snk-expression-group", { ref: (el) => this._mainExpressionGroup = el, group: (_a = this.filterAssistent) === null || _a === void 0 ? void 0 : _a.assistent, messagesBuilder: this.messagesBuilder, onEzFilterGroupChange: this.handleFilterGroupChange.bind(this), filterId: this.filterId, entityURI: this.entityUri })), h("div", { class: "ez-margin-top--auto" }, h("div", { class: "snk-personalized-filter__expression-input--line" }), h("ez-collapsible-box", { label: this.getMessage("snkPersonalizedFilter.info.titleCollapsible"), headerSize: "medium", value: true }, h("div", { class: "ez-box" }, h("div", { class: "ez-box__container--external" }, h("div", { class: "ez-box__container--internal" }, h("span", { class: "ez-box__container--title" }, this.getMessage("snkPersonalizedFilter.info.labelExpression")), h("span", { class: "ez-box__container--expression" }, (_b = this.filterAssistent) === null || _b === void 0 ? void 0 : _b.expression))))))));
34
+ }
35
+ static get style() { return snkFilterAssistentModeCss; }
36
+ }, [2, "snk-filter-assistent-mode", {
37
+ "filterAssistent": [1040],
38
+ "messagesBuilder": [1040],
39
+ "filterId": [1025, "filter-id"],
40
+ "entityUri": [1025, "entity-uri"],
41
+ "application": [1040]
42
+ }]);
43
+ function defineCustomElement() {
44
+ if (typeof customElements === "undefined") {
45
+ return;
46
+ }
47
+ const components = ["snk-filter-assistent-mode", "snk-expression-group", "snk-expression-item", "snk-filter-field-search", "snk-filter-param-config"];
48
+ components.forEach(tagName => { switch (tagName) {
49
+ case "snk-filter-assistent-mode":
50
+ if (!customElements.get(tagName)) {
51
+ customElements.define(tagName, SnkFilterAssistentMode);
52
+ }
53
+ break;
54
+ case "snk-expression-group":
55
+ if (!customElements.get(tagName)) {
56
+ defineCustomElement$4();
57
+ }
58
+ break;
59
+ case "snk-expression-item":
60
+ if (!customElements.get(tagName)) {
61
+ defineCustomElement$3();
62
+ }
63
+ break;
64
+ case "snk-filter-field-search":
65
+ if (!customElements.get(tagName)) {
66
+ defineCustomElement$2();
67
+ }
68
+ break;
69
+ case "snk-filter-param-config":
70
+ if (!customElements.get(tagName)) {
71
+ defineCustomElement$1();
72
+ }
73
+ break;
74
+ } });
75
+ }
76
+
77
+ export { SnkFilterAssistentMode as S, defineCustomElement as d };
@@ -6,8 +6,10 @@ import { toString } from '@sankhyalabs/core/dist/dataunit/metadata/DataType';
6
6
  import { F as FilterItemType } from './filter-item-type.enum.js';
7
7
  import { a as FilterOperand, P as PersonalizedFilterUtils } from './PersonalizedFilterUtils.js';
8
8
  import { ApplicationUtils } from '@sankhyalabs/ezui/dist/collection/utils';
9
- import { d as defineCustomElement$8 } from './snk-expression-group2.js';
10
- import { d as defineCustomElement$7 } from './snk-expression-item2.js';
9
+ import { d as defineCustomElement$a } from './snk-expression-group2.js';
10
+ import { d as defineCustomElement$9 } from './snk-expression-item2.js';
11
+ import { d as defineCustomElement$8 } from './snk-filter-advanced-mode2.js';
12
+ import { d as defineCustomElement$7 } from './snk-filter-assistent-mode2.js';
11
13
  import { d as defineCustomElement$6 } from './snk-filter-detail2.js';
12
14
  import { d as defineCustomElement$5 } from './snk-filter-field-search2.js';
13
15
  import { d as defineCustomElement$4 } from './snk-filter-item2.js';
@@ -402,7 +404,7 @@ const SnkFilterBar = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement
402
404
  loadConfigFromStorage() {
403
405
  return new Promise(accept => {
404
406
  ConfigStorage.get().then(instance => {
405
- instance.loadFilterBarConfig(this.configName)
407
+ instance.loadFilterBarConfig(this.configName, { contextURI: this.dataUnit.name })
406
408
  .then((filters) => {
407
409
  accept();
408
410
  this.filterConfig = filters.map(item => this.normalizeItem(item));
@@ -518,7 +520,7 @@ function defineCustomElement() {
518
520
  if (typeof customElements === "undefined") {
519
521
  return;
520
522
  }
521
- const components = ["snk-filter-bar", "snk-expression-group", "snk-expression-item", "snk-filter-detail", "snk-filter-field-search", "snk-filter-item", "snk-filter-param-config", "snk-personalized-filter", "snk-simple-bar"];
523
+ const components = ["snk-filter-bar", "snk-expression-group", "snk-expression-item", "snk-filter-advanced-mode", "snk-filter-assistent-mode", "snk-filter-detail", "snk-filter-field-search", "snk-filter-item", "snk-filter-param-config", "snk-personalized-filter", "snk-simple-bar"];
522
524
  components.forEach(tagName => { switch (tagName) {
523
525
  case "snk-filter-bar":
524
526
  if (!customElements.get(tagName)) {
@@ -527,10 +529,20 @@ function defineCustomElement() {
527
529
  break;
528
530
  case "snk-expression-group":
529
531
  if (!customElements.get(tagName)) {
530
- defineCustomElement$8();
532
+ defineCustomElement$a();
531
533
  }
532
534
  break;
533
535
  case "snk-expression-item":
536
+ if (!customElements.get(tagName)) {
537
+ defineCustomElement$9();
538
+ }
539
+ break;
540
+ case "snk-filter-advanced-mode":
541
+ if (!customElements.get(tagName)) {
542
+ defineCustomElement$8();
543
+ }
544
+ break;
545
+ case "snk-filter-assistent-mode":
534
546
  if (!customElements.get(tagName)) {
535
547
  defineCustomElement$7();
536
548
  }
@@ -16,6 +16,9 @@ const SnkFilterParamConfig = /*@__PURE__*/ proxyCustomElement(class extends HTML
16
16
  this._canSave = false;
17
17
  this.messagesBuilder = undefined;
18
18
  }
19
+ /**
20
+ * Abre o modal de configuração de valor variável
21
+ */
19
22
  open(expressionItem) {
20
23
  this._opened = true;
21
24
  this._expressionItem = expressionItem;
@@ -24,6 +27,9 @@ const SnkFilterParamConfig = /*@__PURE__*/ proxyCustomElement(class extends HTML
24
27
  this._promiseResolver = accept;
25
28
  });
26
29
  }
30
+ /**
31
+ * Fecha o modal de configuração de valor variável
32
+ */
27
33
  close() {
28
34
  this._opened = false;
29
35
  return new Promise(accept => {
@@ -7,11 +7,13 @@ import { P as PresentationMode } from './index2.js';
7
7
  import { S as SnkMultiSelectionListDataSource, T as TaskbarProcessor } from './SnkMultiSelectionListDataSource.js';
8
8
  import { s as store } from './index3.js';
9
9
  import { SelectionMode } from '@sankhyalabs/core/dist/dataunit/DataUnit';
10
- import { d as defineCustomElement$f } from './snk-actions-button2.js';
11
- import { d as defineCustomElement$e } from './snk-data-exporter2.js';
12
- import { d as defineCustomElement$d } from './snk-exporter-email-sender2.js';
13
- import { d as defineCustomElement$c } from './snk-expression-group2.js';
14
- import { d as defineCustomElement$b } from './snk-expression-item2.js';
10
+ import { d as defineCustomElement$h } from './snk-actions-button2.js';
11
+ import { d as defineCustomElement$g } from './snk-data-exporter2.js';
12
+ import { d as defineCustomElement$f } from './snk-exporter-email-sender2.js';
13
+ import { d as defineCustomElement$e } from './snk-expression-group2.js';
14
+ import { d as defineCustomElement$d } from './snk-expression-item2.js';
15
+ import { d as defineCustomElement$c } from './snk-filter-advanced-mode2.js';
16
+ import { d as defineCustomElement$b } from './snk-filter-assistent-mode2.js';
15
17
  import { d as defineCustomElement$a } from './snk-filter-bar2.js';
16
18
  import { d as defineCustomElement$9 } from './snk-filter-detail2.js';
17
19
  import { d as defineCustomElement$8 } from './snk-filter-field-search2.js';
@@ -345,7 +347,7 @@ function defineCustomElement() {
345
347
  if (typeof customElements === "undefined") {
346
348
  return;
347
349
  }
348
- const components = ["snk-grid", "snk-actions-button", "snk-data-exporter", "snk-exporter-email-sender", "snk-expression-group", "snk-expression-item", "snk-filter-bar", "snk-filter-detail", "snk-filter-field-search", "snk-filter-item", "snk-filter-param-config", "snk-grid-config", "snk-personalized-filter", "snk-select-box", "snk-simple-bar", "snk-taskbar"];
350
+ const components = ["snk-grid", "snk-actions-button", "snk-data-exporter", "snk-exporter-email-sender", "snk-expression-group", "snk-expression-item", "snk-filter-advanced-mode", "snk-filter-assistent-mode", "snk-filter-bar", "snk-filter-detail", "snk-filter-field-search", "snk-filter-item", "snk-filter-param-config", "snk-grid-config", "snk-personalized-filter", "snk-select-box", "snk-simple-bar", "snk-taskbar"];
349
351
  components.forEach(tagName => { switch (tagName) {
350
352
  case "snk-grid":
351
353
  if (!customElements.get(tagName)) {
@@ -354,25 +356,35 @@ function defineCustomElement() {
354
356
  break;
355
357
  case "snk-actions-button":
356
358
  if (!customElements.get(tagName)) {
357
- defineCustomElement$f();
359
+ defineCustomElement$h();
358
360
  }
359
361
  break;
360
362
  case "snk-data-exporter":
361
363
  if (!customElements.get(tagName)) {
362
- defineCustomElement$e();
364
+ defineCustomElement$g();
363
365
  }
364
366
  break;
365
367
  case "snk-exporter-email-sender":
366
368
  if (!customElements.get(tagName)) {
367
- defineCustomElement$d();
369
+ defineCustomElement$f();
368
370
  }
369
371
  break;
370
372
  case "snk-expression-group":
371
373
  if (!customElements.get(tagName)) {
372
- defineCustomElement$c();
374
+ defineCustomElement$e();
373
375
  }
374
376
  break;
375
377
  case "snk-expression-item":
378
+ if (!customElements.get(tagName)) {
379
+ defineCustomElement$d();
380
+ }
381
+ break;
382
+ case "snk-filter-advanced-mode":
383
+ if (!customElements.get(tagName)) {
384
+ defineCustomElement$c();
385
+ }
386
+ break;
387
+ case "snk-filter-assistent-mode":
376
388
  if (!customElements.get(tagName)) {
377
389
  defineCustomElement$b();
378
390
  }
@@ -1,16 +1,18 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Fragment, Host } from '@stencil/core/internal/client';
2
- import { StringUtils, ObjectUtils, ApplicationContext } from '@sankhyalabs/core';
2
+ import { StringUtils, ObjectUtils, ApplicationContext, ElementIDUtils } from '@sankhyalabs/core';
3
3
  import { F as FilterGroupCondition, P as PersonalizedFilterUtils } from './PersonalizedFilterUtils.js';
4
4
  import { P as PersonalizedFilterFetcher, C as ConfigStorage } from './ConfigStorage.js';
5
5
  import { ApplicationUtils } from '@sankhyalabs/ezui/dist/collection/utils';
6
6
  import { s as store } from './index3.js';
7
- import { d as defineCustomElement$5 } from './snk-expression-group2.js';
8
- import { d as defineCustomElement$4 } from './snk-expression-item2.js';
7
+ import { d as defineCustomElement$7 } from './snk-expression-group2.js';
8
+ import { d as defineCustomElement$6 } from './snk-expression-item2.js';
9
+ import { d as defineCustomElement$5 } from './snk-filter-advanced-mode2.js';
10
+ import { d as defineCustomElement$4 } from './snk-filter-assistent-mode2.js';
9
11
  import { d as defineCustomElement$3 } from './snk-filter-field-search2.js';
10
12
  import { d as defineCustomElement$2 } from './snk-filter-param-config2.js';
11
13
  import { d as defineCustomElement$1 } from './snk-simple-bar2.js';
12
14
 
13
- const snkPersonalizedFilterCss = ".sc-snk-personalized-filter-h{display:flex;height:100%;padding:var(--space--large, 24px);--snk-personalized-filter--width:100%;--snk-personalized-filter--height:100%;--snk-personalized-filter--background-color-line:var(--color--disable-secondary);--snk-personalized-filter--margin-line:var(--border--radius-medium, 12px)}.snk-personalized-filter.sc-snk-personalized-filter{height:var(--snk-personalized-filter--width);width:var(--snk-personalized-filter--height)}.snk-personalized-filter__header-actions.sc-snk-personalized-filter{display:flex;gap:var(--space--medium)}.snk-personalized-filter__group.sc-snk-personalized-filter{flex:1}.snk-personalized-filter__expression-input--line.sc-snk-personalized-filter{width:100%;height:2px;background-color:var(--snk-personalized-filter--background-color-line);margin-top:var(--snk-personalized-filter--margin-line);margin-bottom:var(--snk-personalized-filter--margin-line)}.ez-box__main.sc-snk-personalized-filter{height:90%}";
15
+ const snkPersonalizedFilterCss = ".sc-snk-personalized-filter-h{display:flex;height:100%;padding:var(--space--large, 24px);--snk-personalized-filter--width:100%;--snk-personalized-filter--height:100%;--snk-personalized-filter--background-color-line:var(--color--disable-secondary);--snk-personalized-filter--margin-line:var(--border--radius-medium, 12px)}.snk-personalized-filter.sc-snk-personalized-filter{height:var(--snk-personalized-filter--width);width:var(--snk-personalized-filter--height)}.snk-personalized-filter__header-actions.sc-snk-personalized-filter{display:flex;gap:var(--space--medium)}.snk-personalized-filter__group.sc-snk-personalized-filter{flex:1}.snk-personalized-filter__expression-input--line.sc-snk-personalized-filter{width:100%;height:2px;background-color:var(--snk-personalized-filter--background-color-line);margin-top:var(--snk-personalized-filter--margin-line);margin-bottom:var(--snk-personalized-filter--margin-line)}.ez-box__main.sc-snk-personalized-filter{height:90%}.snk-personalized-filter__button-mode.sc-snk-personalized-filter{height:35px}";
14
16
 
15
17
  const SnkPersonalizedFilter = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
16
18
  constructor() {
@@ -99,6 +101,13 @@ const SnkPersonalizedFilter = /*@__PURE__*/ proxyCustomElement(class extends HTM
99
101
  }
100
102
  this.loadFilter(this.filterId, undefined);
101
103
  }
104
+ componentDidRender() {
105
+ var _a;
106
+ (_a = this._viewStackRef) === null || _a === void 0 ? void 0 : _a.show(this._filterAssistentMode ? 0 : 1);
107
+ if (this._elButtonMode) {
108
+ this._elButtonMode.setAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME, ElementIDUtils.getInternalIDInfo(`${this._filterAssistentMode ? "advancedMode_ezButton" : "assistentMode_ezButton"}`));
109
+ }
110
+ }
102
111
  getMessage(key, params) {
103
112
  return this._application.messagesBuilder.getMessage(key, params);
104
113
  }
@@ -116,26 +125,55 @@ const SnkPersonalizedFilter = /*@__PURE__*/ proxyCustomElement(class extends HTM
116
125
  removeFilter() {
117
126
  ConfigStorage.removePersonalizedFilter(this._filterAssistent, this.configName);
118
127
  }
119
- async handleFilterGroupChange() {
120
- const assistent = await this._mainExpressionGroup.getExpressionGroup();
121
- this._filterAssistent = Object.assign(Object.assign({}, this._filterAssistent), { assistent });
122
- this._filterAssistent.parameters = PersonalizedFilterUtils.buildVariableParameters(this._filterAssistent.assistent);
123
- this._elTextAreaExpression.value = PersonalizedFilterUtils.buildGroupExpression(this._filterAssistent.assistent, true);
124
- this._elButtonSave.enabled = !this.hasChangesToSave();
125
- }
126
128
  hasChangesToSave() {
127
129
  return JSON.stringify(this._filterAssistent) === JSON.stringify(this._originalFilterAssistent);
128
130
  }
129
- handleSave() {
131
+ async handleSave() {
132
+ if (this._filterAssistentMode) {
133
+ const isValid = PersonalizedFilterUtils.validateFields(this._filterAssistent.assistent);
134
+ if (!isValid || !this._filterAssistent.name)
135
+ return this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), this.getMessage("snkPersonalizedFilter.error.description"));
136
+ this.saveAssistentMode();
137
+ }
138
+ else {
139
+ if (!this._filterAssistent.expression || !this._filterAssistent.name)
140
+ return this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), this.getMessage("snkPersonalizedFilter.error.description"));
141
+ const isValidExpressionForAdvancedMode = await this.validateExpressionBeforeSaving();
142
+ if (!isValidExpressionForAdvancedMode)
143
+ return;
144
+ this.saveAdvancedMode();
145
+ }
146
+ }
147
+ saveAssistentMode() {
130
148
  const { assistent, expression } = this._filterAssistent;
131
- const isValid = PersonalizedFilterUtils.validateFields(assistent);
132
- if (!isValid || !this._filterAssistent.name)
133
- return this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), this.getMessage("snkPersonalizedFilter.error.description"));
134
149
  const expressionQuery = !!assistent ? PersonalizedFilterUtils.buildGroupExpression(assistent) : expression;
135
150
  this._filterAssistent.expression = expressionQuery;
136
151
  this.ezSave.emit(expressionQuery);
137
152
  this.saveFilter();
138
153
  }
154
+ saveAdvancedMode() {
155
+ if (this._filterAssistent.assistent) {
156
+ ApplicationUtils.confirm(this.getMessage("snkPersonalizedFilter.confirmSaveModeAdvanced.title"), this.getMessage("snkPersonalizedFilter.confirmSaveModeAdvanced.description"))
157
+ .then((confirm) => {
158
+ if (!confirm)
159
+ return;
160
+ this.saveAndTransformToAdvancedMode();
161
+ });
162
+ }
163
+ else {
164
+ this.saveAndTransformToAdvancedMode();
165
+ }
166
+ }
167
+ saveAndTransformToAdvancedMode() {
168
+ this._filterAssistent.assistent = undefined;
169
+ this.ezSave.emit(this._filterAssistent.expression);
170
+ this.saveFilter();
171
+ }
172
+ async validateExpressionBeforeSaving() {
173
+ const { valid, message } = await this._personalizedFilterFetcher.validatePersonalizedFilter(this.entityUri, this._filterAssistent.expression);
174
+ valid || this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), message);
175
+ return valid;
176
+ }
139
177
  handleCancel() {
140
178
  if (this.hasChangesToSave()) {
141
179
  return this.ezCancel.emit();
@@ -169,32 +207,87 @@ const SnkPersonalizedFilter = /*@__PURE__*/ proxyCustomElement(class extends HTM
169
207
  }
170
208
  return resp;
171
209
  }
172
- handleExpressionChange(expression) {
210
+ handleExpressionChangeAdvancedMode(expression) {
173
211
  this._filterAssistent = Object.assign(Object.assign({}, this._filterAssistent), { expression });
174
212
  this._elButtonSave.enabled = !this.hasChangesToSave();
175
213
  }
176
- getWarningMessageComponent() {
177
- var _a;
178
- if (StringUtils.isEmpty((_a = this._filterAssistent) === null || _a === void 0 ? void 0 : _a.warningMessage)) {
179
- return undefined;
214
+ handleChangeFilterAssistentMode(filterAssistent) {
215
+ this._elButtonSave.enabled = !this.hasChangesToSave();
216
+ this._filterAssistent = Object.assign({}, filterAssistent);
217
+ }
218
+ selectField(fieldName) {
219
+ if (!('name' in fieldName))
220
+ return;
221
+ const fieldExpression = this.buildExpression(fieldName.entityName, fieldName.name, fieldName.entityPath);
222
+ const textAreaElement = this._elAdvancedMode.querySelector('ez-text-area');
223
+ textAreaElement.appendTextToSelection(fieldExpression);
224
+ }
225
+ buildExpression(entityName, fieldName, entityPath) {
226
+ if (entityPath.length > 0) {
227
+ entityPath.shift();
180
228
  }
181
- return (h("div", { class: "ez-flex" }, h("ez-alert", { alertType: "warn" }, this._filterAssistent.warningMessage)));
229
+ return entityPath.length > 0 ? `${entityPath.join("->")}->${fieldName}` : `${entityName}.${fieldName}`;
230
+ }
231
+ onAddField(target) {
232
+ const textAreaElement = this._elAdvancedMode.querySelector('ez-text-area');
233
+ const options = { horizontalGap: 0, verticalGap: 12, fromRight: true };
234
+ textAreaElement.setFocus();
235
+ target.setBlur();
236
+ if (this._elFilterFieldSearch)
237
+ this._elFilterFieldSearch.show(target, options);
238
+ }
239
+ renderButtonAddField() {
240
+ if (this._filterAssistentMode)
241
+ return;
242
+ return (h(Fragment, null, h("ez-button", { class: "snk-personalized-filter__button-mode", label: this.getMessage("snkPersonalizedFilter.info.addField"), enabled: true, onClick: (evt) => this.onAddField(evt.target) }, h("ez-icon", { class: "ez-padding-right--small", slot: "leftIcon", iconName: "plus" })), h("snk-filter-field-search", { class: "ez-padding-left--medium", ref: ref => this._elFilterFieldSearch = ref, onEzSelectFilterItem: (evt) => this.selectField(evt.detail), fieldsDataSource: this._dataSourceFetcher })));
182
243
  }
183
244
  buildContainerPersonalizedFilter() {
184
- var _a, _b, _c;
245
+ return (h("ez-view-stack", { ref: (ref) => this._viewStackRef = ref }, h("stack-item", null, this._filterAssistentMode &&
246
+ h("snk-filter-assistent-mode", { filterAssistent: this._filterAssistent, messagesBuilder: this.messagesBuilder, filterId: this.filterId, entityUri: this.entityUri, application: this._application, onEzChangeFilter: (ev) => this.handleChangeFilterAssistentMode(ev.detail) })), h("stack-item", null, h("snk-filter-advanced-mode", { ref: (ref) => this._elAdvancedMode = ref, filterAssistent: this._filterAssistent, application: this._application, onEzExpressionChange: (ev) => this.handleExpressionChangeAdvancedMode(ev.detail) }))));
247
+ }
248
+ handleModeChange() {
249
+ var _a, _b;
185
250
  if (this._filterAssistentMode) {
186
- return (h(Fragment, null, h("div", { class: "ez-padding-top--small snk-personalized-filter__group" }, h("snk-expression-group", { ref: (el) => this._mainExpressionGroup = el, group: (_a = this._filterAssistent) === null || _a === void 0 ? void 0 : _a.assistent, messagesBuilder: this.messagesBuilder, onEzFilterGroupChange: this.handleFilterGroupChange.bind(this), filterId: this.filterId, entityURI: this.entityUri })), h("div", null, h("div", { class: "snk-personalized-filter__expression-input--line" }), h("ez-collapsible-box", { label: this.getMessage("snkPersonalizedFilter.info.titleCollapsible"), headerSize: "medium", value: true }, h("div", { class: "ez-box" }, h("div", { class: "ez-box__container" }, h("ez-text-area", { ref: (el) => this._elTextAreaExpression = el, enabled: false, label: this.getMessage("snkPersonalizedFilter.info.labelExpression"), value: (_b = this._filterAssistent) === null || _b === void 0 ? void 0 : _b.expression })))))));
251
+ ApplicationUtils.confirm(this.getMessage("snkPersonalizedFilter.confirmChangeModeAssistent.title"), this.getMessage("snkPersonalizedFilter.confirmChangeModeAssistent.description"))
252
+ .then((canCancel) => {
253
+ if (!canCancel)
254
+ return;
255
+ this._filterAssistentMode = !this._filterAssistentMode;
256
+ if (!this.hasChangesToSave()) {
257
+ const expression = PersonalizedFilterUtils.buildGroupExpression(this._filterAssistent.assistent);
258
+ this._filterAssistent.expression = expression;
259
+ this._elButtonSave.enabled = !this.hasChangesToSave();
260
+ }
261
+ });
187
262
  }
188
263
  else {
189
- return (h(Fragment, null, h("span", { class: "ez-text ez-text--small ez-text--bold ez-padding-bottom--medium" }, this.getMessage("snkPersonalizedFilter.info.applyExpression")), h("ez-text-area", { label: this.getMessage("snkPersonalizedFilter.info.labelExpression"), value: (_c = this._filterAssistent) === null || _c === void 0 ? void 0 : _c.expression, onEzChange: (evt) => this.handleExpressionChange(evt.detail) }), this.getWarningMessageComponent()));
264
+ if (((_a = this._filterAssistent) === null || _a === void 0 ? void 0 : _a.expression) === ((_b = this._originalFilterAssistent) === null || _b === void 0 ? void 0 : _b.expression)) {
265
+ this._filterAssistentMode = !this._filterAssistentMode;
266
+ }
267
+ else {
268
+ const expressionBefore = this._filterAssistent.expression;
269
+ const expression = PersonalizedFilterUtils.buildGroupExpression(this._filterAssistent.assistent);
270
+ if (expressionBefore !== expression) {
271
+ ApplicationUtils.confirm(this.getMessage("snkPersonalizedFilter.confirmChangeModeAdvanced.title"), this.getMessage("snkPersonalizedFilter.confirmChangeModeAdvanced.description"))
272
+ .then((canCancel) => {
273
+ if (!canCancel)
274
+ return;
275
+ this._filterAssistent = Object.assign(Object.assign({}, this._filterAssistent), { expression });
276
+ this._filterAssistentMode = !this._filterAssistentMode;
277
+ });
278
+ }
279
+ else {
280
+ this._filterAssistentMode = !this._filterAssistentMode;
281
+ }
282
+ }
190
283
  }
191
284
  }
192
285
  render() {
193
- var _a, _b;
286
+ var _a, _b, _c, _d;
194
287
  if (!((_a = this._filterAssistent) === null || _a === void 0 ? void 0 : _a.assistent) && this._filterAssistentMode) {
195
288
  return;
196
289
  }
197
- return (h(Host, null, h("div", { class: "snk-personalized-filter" }, h("div", null, h("snk-simple-bar", { label: this.filterId ? this.getMessage("snkPersonalizedFilter.info.titleEdit") : this.getMessage("snkPersonalizedFilter.info.titleAdd"), onExit: () => this.handleCancel() }, h("div", { class: "snk-personalized-filter__header-actions", slot: "rightSlot" }, h("ez-button", { size: "small", label: this.getMessage("snkPersonalizedFilter.info.labelCancel"), onClick: () => this.handleCancel() }), h("ez-button", { size: "small", ref: (el) => this._elButtonSave = el, enabled: false, class: "ez-button--primary", label: this.getMessage("snkPersonalizedFilter.info.labelSave"), onClick: this.handleSave.bind(this) })))), h("div", { class: "ez-box ez-margin-bottom--medium ez-box__main" }, h("div", { class: "ez-box__container" }, h("div", { class: "ez-flex ez-flex--column ez-size-width--full" }, h("div", { class: "ez-flex" }, h("ez-text-input", { class: "ez-padding-right--medium", label: this.getMessage("snkPersonalizedFilter.info.labelNameFilter"), value: (_b = this._filterAssistent) === null || _b === void 0 ? void 0 : _b.name, onEzChange: (evt) => this.handleTitleChange(evt.detail) })), this.buildContainerPersonalizedFilter()))))));
290
+ return (h(Host, null, h("div", { class: "snk-personalized-filter" }, h("div", null, h("snk-simple-bar", { label: this.filterId ? this.getMessage("snkPersonalizedFilter.info.titleEdit") : this.getMessage("snkPersonalizedFilter.info.titleAdd"), onExit: () => this.handleCancel() }, h("div", { class: "snk-personalized-filter__header-actions", slot: "rightSlot" }, h("ez-button", { size: "small", label: this.getMessage("snkPersonalizedFilter.info.labelCancel"), onClick: () => this.handleCancel() }), h("ez-button", { size: "small", ref: (el) => this._elButtonSave = el, enabled: false, class: "ez-button--primary", label: this.getMessage("snkPersonalizedFilter.info.labelSave"), onClick: this.handleSave.bind(this) })))), h("div", { class: "ez-box ez-margin-bottom--medium ez-box__main" }, h("div", { class: "ez-box__container" }, h("div", { class: "ez-flex ez-flex--column ez-size-width--full" }, h("div", { class: "ez-flex" }, h("ez-text-input", { class: "ez-padding-right--medium", label: this.getMessage("snkPersonalizedFilter.info.labelNameFilter"), value: (_b = this._filterAssistent) === null || _b === void 0 ? void 0 : _b.name, onEzChange: (evt) => this.handleTitleChange(evt.detail) }), this.renderButtonAddField(), h("ez-button", { ref: (el) => this._elButtonMode = el, class: "snk-personalized-filter__button-mode", label: this._filterAssistentMode ? this.getMessage("snkPersonalizedFilter.info.activeModeAdvanced") : this.getMessage("snkPersonalizedFilter.info.activeModeAssistent"), onClick: () => this.handleModeChange(), "data-tooltip": !(this._filterAssistentMode || ((_c = this._filterAssistent) === null || _c === void 0 ? void 0 : _c.assistent)) ? this.getMessage("snkPersonalizedFilter.info.tooltipDisabledAssistentMode") : undefined, "data-flow": "bottom", enabled: (!this._filterAssistent.name || Boolean(this._filterAssistentMode || ((_d = this._filterAssistent) === null || _d === void 0 ? void 0 : _d.assistent))) })), this.buildContainerPersonalizedFilter()))))));
198
291
  }
199
292
  static get watchers() { return {
200
293
  "filterId": ["loadFilter"]
@@ -213,7 +306,7 @@ function defineCustomElement() {
213
306
  if (typeof customElements === "undefined") {
214
307
  return;
215
308
  }
216
- const components = ["snk-personalized-filter", "snk-expression-group", "snk-expression-item", "snk-filter-field-search", "snk-filter-param-config", "snk-simple-bar"];
309
+ const components = ["snk-personalized-filter", "snk-expression-group", "snk-expression-item", "snk-filter-advanced-mode", "snk-filter-assistent-mode", "snk-filter-field-search", "snk-filter-param-config", "snk-simple-bar"];
217
310
  components.forEach(tagName => { switch (tagName) {
218
311
  case "snk-personalized-filter":
219
312
  if (!customElements.get(tagName)) {
@@ -222,10 +315,20 @@ function defineCustomElement() {
222
315
  break;
223
316
  case "snk-expression-group":
224
317
  if (!customElements.get(tagName)) {
225
- defineCustomElement$5();
318
+ defineCustomElement$7();
226
319
  }
227
320
  break;
228
321
  case "snk-expression-item":
322
+ if (!customElements.get(tagName)) {
323
+ defineCustomElement$6();
324
+ }
325
+ break;
326
+ case "snk-filter-advanced-mode":
327
+ if (!customElements.get(tagName)) {
328
+ defineCustomElement$5();
329
+ }
330
+ break;
331
+ case "snk-filter-assistent-mode":
229
332
  if (!customElements.get(tagName)) {
230
333
  defineCustomElement$4();
231
334
  }
@@ -1,7 +1,7 @@
1
1
  import { ApplicationContext } from '@sankhyalabs/core';
2
2
  import { F as FormConfigFetcher } from './form-config-fetcher-533b895e.js';
3
3
  import { R as ResourceFetcher } from './resource-fetcher-0f20a072.js';
4
- import { F as FilterBarConfigFetcher } from './filter-bar-config-fetcher-a358b8e0.js';
4
+ import { F as FilterBarConfigFetcher } from './filter-bar-config-fetcher-790283d8.js';
5
5
  import { d as dist, D as DataFetcher } from './DataFetcher-fddeb917.js';
6
6
 
7
7
  class GridConfigFetcher extends ResourceFetcher {
@@ -93,24 +93,6 @@ class PersonalizedFilterFetcher {
93
93
  active
94
94
  expression
95
95
  warningMessage
96
- parameters {
97
- entityName
98
- fieldName
99
- dataType
100
- description
101
- userInterface
102
- label
103
- searchContext {
104
- entity
105
- entityDescription
106
- searchOptions {
107
- rootEntity
108
- descriptionFieldName
109
- codeFieldName
110
- showInactives
111
- }
112
- }
113
- }
114
96
  assistent
115
97
  }
116
98
  }`);
@@ -128,6 +110,13 @@ class PersonalizedFilterFetcher {
128
110
  name
129
111
  }
130
112
  }`);
113
+ this.templateByQuery.set("validateExpression", dist.gql `
114
+ query($dataUnitName: String!, $expression: String!) {
115
+ $queryAlias$: validateExpression(dataUnitName: $dataUnitName, expression: $expression) {
116
+ valid
117
+ message
118
+ }
119
+ }`);
131
120
  }
132
121
  async loadPersonalizedFilter(resourceID, filterID, configName) {
133
122
  return new Promise((resolve, reject) => {
@@ -177,6 +166,21 @@ class PersonalizedFilterFetcher {
177
166
  });
178
167
  });
179
168
  }
169
+ async validatePersonalizedFilter(dataUnitName, expression) {
170
+ return new Promise((resolve, reject) => {
171
+ DataFetcher.get()
172
+ .callGraphQL({
173
+ values: { dataUnitName: dataUnitName, expression: expression },
174
+ query: this.templateByQuery.get("validateExpression"),
175
+ })
176
+ .then((resp) => {
177
+ resolve(resp);
178
+ })
179
+ .catch((error) => {
180
+ reject(error);
181
+ });
182
+ });
183
+ }
180
184
  loadFields(uri) {
181
185
  return new Promise((resolve, reject) => {
182
186
  DataFetcher.get()
@@ -222,17 +226,16 @@ class ConfigStorage {
222
226
  const resourceID = await application.getResourceID();
223
227
  ConfigStorage.instance = new ConfigStorage();
224
228
  ConfigStorage.resourceID = resourceID;
225
- ConfigStorage.instance.loadFilterBarConfig(configName);
226
229
  ConfigStorage.instance.loadFormConfig(configName);
227
230
  ConfigStorage.instance.loadGridConfig(configName);
228
231
  }
229
232
  }
230
233
  return this.instance;
231
234
  }
232
- async loadFilterBarConfig(name) {
235
+ async loadFilterBarConfig(name, urlParams) {
233
236
  const cacheID = ConfigStorage.buildCacheID(name, CONFIG_SOURCE.filterBar);
234
237
  if (!ConfigStorage.configById.has(cacheID)) {
235
- ConfigStorage.configById.set(cacheID, ConfigStorage.filterBarConfigFetcher.getConfig(ConfigStorage.resourceID, name));
238
+ ConfigStorage.configById.set(cacheID, ConfigStorage.filterBarConfigFetcher.getConfig(ConfigStorage.resourceID, name, urlParams));
236
239
  }
237
240
  return ConfigStorage.configById.get(cacheID);
238
241
  }
@@ -284,6 +287,9 @@ class ConfigStorage {
284
287
  static async removePersonalizedFilter(personalizedFilter, configName) {
285
288
  return this.personalizedFilterFetcher.removePersonalizedFilter(personalizedFilter, this.resourceID, configName);
286
289
  }
290
+ static async validatePersonalizedFilter(dataUnitName, expression) {
291
+ return this.personalizedFilterFetcher.validatePersonalizedFilter(dataUnitName, expression);
292
+ }
287
293
  static buildCacheID(name, source) {
288
294
  if (name == undefined) {
289
295
  return `req_${source}_${this.resourceID}`;