@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
@@ -6,7 +6,7 @@ const index = require('./index-f9e81701.js');
6
6
  const core = require('@sankhyalabs/core');
7
7
  const UnitMetadata = require('@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata');
8
8
  const taskbarElements = require('./taskbar-elements-b98dd6e9.js');
9
- const ConfigStorage = require('./ConfigStorage-da2bf3bf.js');
9
+ const ConfigStorage = require('./ConfigStorage-97468a0f.js');
10
10
  const index$1 = require('./index-0e663819.js');
11
11
  const taskbarProcessor = require('./taskbar-processor-bce3f499.js');
12
12
  const index$2 = require('./index-102ba62d.js');
@@ -16,7 +16,7 @@ require('./form-config-fetcher-56442594.js');
16
16
  require('./DataFetcher-04c70ba9.js');
17
17
  require('./_commonjsHelpers-537d719a.js');
18
18
  require('./resource-fetcher-260e98a4.js');
19
- require('./filter-bar-config-fetcher-58cfc12e.js');
19
+ require('./filter-bar-config-fetcher-a7747f69.js');
20
20
  require('./filter-item-type.enum-aa823a00.js');
21
21
 
22
22
  const snkGridCss = ".snk-grid__container.sc-snk-grid{display:flex;height:100%;width:100%}.snk-grid__header.sc-snk-grid{display:flex;flex-wrap:nowrap;width:100%}.snk-grid__filter-bar.sc-snk-grid{width:100%}.snk-grid__header-divider.sc-snk-grid{margin-bottom:var(--space--medium)}.snk-grid__table.sc-snk-grid{min-height:300px}.snk-grid-container__without-shadow.sc-snk-grid{--ezgrid__container--shadow:unset}";
@@ -2,7 +2,7 @@
2
2
 
3
3
  const index = require('./index-f9e81701.js');
4
4
  const core = require('@sankhyalabs/core');
5
- const SnkFormConfigManager = require('./SnkFormConfigManager-d7cc9118.js');
5
+ const SnkFormConfigManager = require('./SnkFormConfigManager-bef6e022.js');
6
6
  const form = require('@sankhyalabs/ezui/dist/collection/utils/form');
7
7
  const taskbarProcessor = require('./taskbar-processor-bce3f499.js');
8
8
  const taskbarElements = require('./taskbar-elements-b98dd6e9.js');
@@ -2,16 +2,16 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const snkGuidesViewer = require('./snk-guides-viewer-36766466.js');
5
+ const snkGuidesViewer = require('./snk-guides-viewer-897368ea.js');
6
6
  require('./index-f9e81701.js');
7
7
  require('@sankhyalabs/core');
8
- require('./SnkFormConfigManager-d7cc9118.js');
9
- require('./ConfigStorage-da2bf3bf.js');
8
+ require('./SnkFormConfigManager-bef6e022.js');
9
+ require('./ConfigStorage-97468a0f.js');
10
10
  require('./form-config-fetcher-56442594.js');
11
11
  require('./DataFetcher-04c70ba9.js');
12
12
  require('./_commonjsHelpers-537d719a.js');
13
13
  require('./resource-fetcher-260e98a4.js');
14
- require('./filter-bar-config-fetcher-58cfc12e.js');
14
+ require('./filter-bar-config-fetcher-a7747f69.js');
15
15
  require('./filter-item-type.enum-aa823a00.js');
16
16
  require('@sankhyalabs/ezui/dist/collection/utils/form');
17
17
  require('./taskbar-processor-bce3f499.js');
@@ -4,19 +4,19 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-f9e81701.js');
6
6
  const core = require('@sankhyalabs/core');
7
- const PersonalizedFilterUtils = require('./PersonalizedFilterUtils-cfcd9af2.js');
8
- const ConfigStorage = require('./ConfigStorage-da2bf3bf.js');
7
+ const PersonalizedFilterUtils = require('./PersonalizedFilterUtils-9848e09b.js');
8
+ const ConfigStorage = require('./ConfigStorage-97468a0f.js');
9
9
  const utils = require('@sankhyalabs/ezui/dist/collection/utils');
10
- const IExpressionItem = require('./IExpressionItem-0e32ebb7.js');
11
- const index$1 = require('./index-102ba62d.js');
10
+ const index$1 = require('./index-c5771aba.js');
11
+ const index$2 = require('./index-102ba62d.js');
12
12
  require('./filter-item-type.enum-aa823a00.js');
13
13
  require('./form-config-fetcher-56442594.js');
14
14
  require('./DataFetcher-04c70ba9.js');
15
15
  require('./_commonjsHelpers-537d719a.js');
16
16
  require('./resource-fetcher-260e98a4.js');
17
- require('./filter-bar-config-fetcher-58cfc12e.js');
17
+ require('./filter-bar-config-fetcher-a7747f69.js');
18
18
 
19
- 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%}";
19
+ 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}";
20
20
 
21
21
  const SnkPersonalizedFilter = class {
22
22
  constructor(hostRef) {
@@ -73,7 +73,7 @@ const SnkPersonalizedFilter = class {
73
73
  }
74
74
  ],
75
75
  childrenGroups: [],
76
- operand: IExpressionItem.FilterGroupCondition.AND
76
+ operand: index$1.FilterGroupCondition.AND
77
77
  }
78
78
  };
79
79
  this._originalFilterAssistent = core.ObjectUtils.copy(newPersonalizedFilter);
@@ -95,8 +95,8 @@ const SnkPersonalizedFilter = class {
95
95
  }
96
96
  componentWillLoad() {
97
97
  var _a;
98
- if (index$1.store.get(`filterFieldsDataSource.${this.entityUri}`) == undefined) {
99
- index$1.store.set(`filterFieldsDataSource.${this.entityUri}`, this._dataSourceFetcher);
98
+ if (index$2.store.get(`filterFieldsDataSource.${this.entityUri}`) == undefined) {
99
+ index$2.store.set(`filterFieldsDataSource.${this.entityUri}`, this._dataSourceFetcher);
100
100
  }
101
101
  if (!this.messagesBuilder) {
102
102
  this._application = core.ApplicationContext.getContextValue("__SNK__APPLICATION__");
@@ -104,6 +104,13 @@ const SnkPersonalizedFilter = class {
104
104
  }
105
105
  this.loadFilter(this.filterId, undefined);
106
106
  }
107
+ componentDidRender() {
108
+ var _a;
109
+ (_a = this._viewStackRef) === null || _a === void 0 ? void 0 : _a.show(this._filterAssistentMode ? 0 : 1);
110
+ if (this._elButtonMode) {
111
+ this._elButtonMode.setAttribute(core.ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME, core.ElementIDUtils.getInternalIDInfo(`${this._filterAssistentMode ? "advancedMode_ezButton" : "assistentMode_ezButton"}`));
112
+ }
113
+ }
107
114
  getMessage(key, params) {
108
115
  return this._application.messagesBuilder.getMessage(key, params);
109
116
  }
@@ -121,26 +128,55 @@ const SnkPersonalizedFilter = class {
121
128
  removeFilter() {
122
129
  ConfigStorage.ConfigStorage.removePersonalizedFilter(this._filterAssistent, this.configName);
123
130
  }
124
- async handleFilterGroupChange() {
125
- const assistent = await this._mainExpressionGroup.getExpressionGroup();
126
- this._filterAssistent = Object.assign(Object.assign({}, this._filterAssistent), { assistent });
127
- this._filterAssistent.parameters = PersonalizedFilterUtils.PersonalizedFilterUtils.buildVariableParameters(this._filterAssistent.assistent);
128
- this._elTextAreaExpression.value = PersonalizedFilterUtils.PersonalizedFilterUtils.buildGroupExpression(this._filterAssistent.assistent, true);
129
- this._elButtonSave.enabled = !this.hasChangesToSave();
130
- }
131
131
  hasChangesToSave() {
132
132
  return JSON.stringify(this._filterAssistent) === JSON.stringify(this._originalFilterAssistent);
133
133
  }
134
- handleSave() {
134
+ async handleSave() {
135
+ if (this._filterAssistentMode) {
136
+ const isValid = PersonalizedFilterUtils.PersonalizedFilterUtils.validateFields(this._filterAssistent.assistent);
137
+ if (!isValid || !this._filterAssistent.name)
138
+ return this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), this.getMessage("snkPersonalizedFilter.error.description"));
139
+ this.saveAssistentMode();
140
+ }
141
+ else {
142
+ if (!this._filterAssistent.expression || !this._filterAssistent.name)
143
+ return this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), this.getMessage("snkPersonalizedFilter.error.description"));
144
+ const isValidExpressionForAdvancedMode = await this.validateExpressionBeforeSaving();
145
+ if (!isValidExpressionForAdvancedMode)
146
+ return;
147
+ this.saveAdvancedMode();
148
+ }
149
+ }
150
+ saveAssistentMode() {
135
151
  const { assistent, expression } = this._filterAssistent;
136
- const isValid = PersonalizedFilterUtils.PersonalizedFilterUtils.validateFields(assistent);
137
- if (!isValid || !this._filterAssistent.name)
138
- return this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), this.getMessage("snkPersonalizedFilter.error.description"));
139
152
  const expressionQuery = !!assistent ? PersonalizedFilterUtils.PersonalizedFilterUtils.buildGroupExpression(assistent) : expression;
140
153
  this._filterAssistent.expression = expressionQuery;
141
154
  this.ezSave.emit(expressionQuery);
142
155
  this.saveFilter();
143
156
  }
157
+ saveAdvancedMode() {
158
+ if (this._filterAssistent.assistent) {
159
+ utils.ApplicationUtils.confirm(this.getMessage("snkPersonalizedFilter.confirmSaveModeAdvanced.title"), this.getMessage("snkPersonalizedFilter.confirmSaveModeAdvanced.description"))
160
+ .then((confirm) => {
161
+ if (!confirm)
162
+ return;
163
+ this.saveAndTransformToAdvancedMode();
164
+ });
165
+ }
166
+ else {
167
+ this.saveAndTransformToAdvancedMode();
168
+ }
169
+ }
170
+ saveAndTransformToAdvancedMode() {
171
+ this._filterAssistent.assistent = undefined;
172
+ this.ezSave.emit(this._filterAssistent.expression);
173
+ this.saveFilter();
174
+ }
175
+ async validateExpressionBeforeSaving() {
176
+ const { valid, message } = await this._personalizedFilterFetcher.validatePersonalizedFilter(this.entityUri, this._filterAssistent.expression);
177
+ valid || this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), message);
178
+ return valid;
179
+ }
144
180
  handleCancel() {
145
181
  if (this.hasChangesToSave()) {
146
182
  return this.ezCancel.emit();
@@ -174,32 +210,87 @@ const SnkPersonalizedFilter = class {
174
210
  }
175
211
  return resp;
176
212
  }
177
- handleExpressionChange(expression) {
213
+ handleExpressionChangeAdvancedMode(expression) {
178
214
  this._filterAssistent = Object.assign(Object.assign({}, this._filterAssistent), { expression });
179
215
  this._elButtonSave.enabled = !this.hasChangesToSave();
180
216
  }
181
- getWarningMessageComponent() {
182
- var _a;
183
- if (core.StringUtils.isEmpty((_a = this._filterAssistent) === null || _a === void 0 ? void 0 : _a.warningMessage)) {
184
- return undefined;
217
+ handleChangeFilterAssistentMode(filterAssistent) {
218
+ this._elButtonSave.enabled = !this.hasChangesToSave();
219
+ this._filterAssistent = Object.assign({}, filterAssistent);
220
+ }
221
+ selectField(fieldName) {
222
+ if (!('name' in fieldName))
223
+ return;
224
+ const fieldExpression = this.buildExpression(fieldName.entityName, fieldName.name, fieldName.entityPath);
225
+ const textAreaElement = this._elAdvancedMode.querySelector('ez-text-area');
226
+ textAreaElement.appendTextToSelection(fieldExpression);
227
+ }
228
+ buildExpression(entityName, fieldName, entityPath) {
229
+ if (entityPath.length > 0) {
230
+ entityPath.shift();
185
231
  }
186
- return (index.h("div", { class: "ez-flex" }, index.h("ez-alert", { alertType: "warn" }, this._filterAssistent.warningMessage)));
232
+ return entityPath.length > 0 ? `${entityPath.join("->")}->${fieldName}` : `${entityName}.${fieldName}`;
233
+ }
234
+ onAddField(target) {
235
+ const textAreaElement = this._elAdvancedMode.querySelector('ez-text-area');
236
+ const options = { horizontalGap: 0, verticalGap: 12, fromRight: true };
237
+ textAreaElement.setFocus();
238
+ target.setBlur();
239
+ if (this._elFilterFieldSearch)
240
+ this._elFilterFieldSearch.show(target, options);
241
+ }
242
+ renderButtonAddField() {
243
+ if (this._filterAssistentMode)
244
+ return;
245
+ return (index.h(index.Fragment, null, index.h("ez-button", { class: "snk-personalized-filter__button-mode", label: this.getMessage("snkPersonalizedFilter.info.addField"), enabled: true, onClick: (evt) => this.onAddField(evt.target) }, index.h("ez-icon", { class: "ez-padding-right--small", slot: "leftIcon", iconName: "plus" })), index.h("snk-filter-field-search", { class: "ez-padding-left--medium", ref: ref => this._elFilterFieldSearch = ref, onEzSelectFilterItem: (evt) => this.selectField(evt.detail), fieldsDataSource: this._dataSourceFetcher })));
187
246
  }
188
247
  buildContainerPersonalizedFilter() {
189
- var _a, _b, _c;
248
+ return (index.h("ez-view-stack", { ref: (ref) => this._viewStackRef = ref }, index.h("stack-item", null, this._filterAssistentMode &&
249
+ index.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) })), index.h("stack-item", null, index.h("snk-filter-advanced-mode", { ref: (ref) => this._elAdvancedMode = ref, filterAssistent: this._filterAssistent, application: this._application, onEzExpressionChange: (ev) => this.handleExpressionChangeAdvancedMode(ev.detail) }))));
250
+ }
251
+ handleModeChange() {
252
+ var _a, _b;
190
253
  if (this._filterAssistentMode) {
191
- return (index.h(index.Fragment, null, index.h("div", { class: "ez-padding-top--small snk-personalized-filter__group" }, index.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 })), index.h("div", null, index.h("div", { class: "snk-personalized-filter__expression-input--line" }), index.h("ez-collapsible-box", { label: this.getMessage("snkPersonalizedFilter.info.titleCollapsible"), headerSize: "medium", value: true }, index.h("div", { class: "ez-box" }, index.h("div", { class: "ez-box__container" }, index.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 })))))));
254
+ utils.ApplicationUtils.confirm(this.getMessage("snkPersonalizedFilter.confirmChangeModeAssistent.title"), this.getMessage("snkPersonalizedFilter.confirmChangeModeAssistent.description"))
255
+ .then((canCancel) => {
256
+ if (!canCancel)
257
+ return;
258
+ this._filterAssistentMode = !this._filterAssistentMode;
259
+ if (!this.hasChangesToSave()) {
260
+ const expression = PersonalizedFilterUtils.PersonalizedFilterUtils.buildGroupExpression(this._filterAssistent.assistent);
261
+ this._filterAssistent.expression = expression;
262
+ this._elButtonSave.enabled = !this.hasChangesToSave();
263
+ }
264
+ });
192
265
  }
193
266
  else {
194
- return (index.h(index.Fragment, null, index.h("span", { class: "ez-text ez-text--small ez-text--bold ez-padding-bottom--medium" }, this.getMessage("snkPersonalizedFilter.info.applyExpression")), index.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()));
267
+ if (((_a = this._filterAssistent) === null || _a === void 0 ? void 0 : _a.expression) === ((_b = this._originalFilterAssistent) === null || _b === void 0 ? void 0 : _b.expression)) {
268
+ this._filterAssistentMode = !this._filterAssistentMode;
269
+ }
270
+ else {
271
+ const expressionBefore = this._filterAssistent.expression;
272
+ const expression = PersonalizedFilterUtils.PersonalizedFilterUtils.buildGroupExpression(this._filterAssistent.assistent);
273
+ if (expressionBefore !== expression) {
274
+ utils.ApplicationUtils.confirm(this.getMessage("snkPersonalizedFilter.confirmChangeModeAdvanced.title"), this.getMessage("snkPersonalizedFilter.confirmChangeModeAdvanced.description"))
275
+ .then((canCancel) => {
276
+ if (!canCancel)
277
+ return;
278
+ this._filterAssistent = Object.assign(Object.assign({}, this._filterAssistent), { expression });
279
+ this._filterAssistentMode = !this._filterAssistentMode;
280
+ });
281
+ }
282
+ else {
283
+ this._filterAssistentMode = !this._filterAssistentMode;
284
+ }
285
+ }
195
286
  }
196
287
  }
197
288
  render() {
198
- var _a, _b;
289
+ var _a, _b, _c, _d;
199
290
  if (!((_a = this._filterAssistent) === null || _a === void 0 ? void 0 : _a.assistent) && this._filterAssistentMode) {
200
291
  return;
201
292
  }
202
- return (index.h(index.Host, null, index.h("div", { class: "snk-personalized-filter" }, index.h("div", null, index.h("snk-simple-bar", { label: this.filterId ? this.getMessage("snkPersonalizedFilter.info.titleEdit") : this.getMessage("snkPersonalizedFilter.info.titleAdd"), onExit: () => this.handleCancel() }, index.h("div", { class: "snk-personalized-filter__header-actions", slot: "rightSlot" }, index.h("ez-button", { size: "small", label: this.getMessage("snkPersonalizedFilter.info.labelCancel"), onClick: () => this.handleCancel() }), index.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) })))), index.h("div", { class: "ez-box ez-margin-bottom--medium ez-box__main" }, index.h("div", { class: "ez-box__container" }, index.h("div", { class: "ez-flex ez-flex--column ez-size-width--full" }, index.h("div", { class: "ez-flex" }, index.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()))))));
293
+ return (index.h(index.Host, null, index.h("div", { class: "snk-personalized-filter" }, index.h("div", null, index.h("snk-simple-bar", { label: this.filterId ? this.getMessage("snkPersonalizedFilter.info.titleEdit") : this.getMessage("snkPersonalizedFilter.info.titleAdd"), onExit: () => this.handleCancel() }, index.h("div", { class: "snk-personalized-filter__header-actions", slot: "rightSlot" }, index.h("ez-button", { size: "small", label: this.getMessage("snkPersonalizedFilter.info.labelCancel"), onClick: () => this.handleCancel() }), index.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) })))), index.h("div", { class: "ez-box ez-margin-bottom--medium ez-box__main" }, index.h("div", { class: "ez-box__container" }, index.h("div", { class: "ez-flex ez-flex--column ez-size-width--full" }, index.h("div", { class: "ez-flex" }, index.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(), index.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()))))));
203
294
  }
204
295
  static get watchers() { return {
205
296
  "filterId": ["loadFilter"]
@@ -41,6 +41,8 @@
41
41
  "./components/snk-personalized-filter/snk-personalized-filter.js",
42
42
  "./components/snk-personalized-filter/subcomponents/snk-expression-group/snk-expression-group.js",
43
43
  "./components/snk-personalized-filter/subcomponents/snk-expression-item/snk-expression-item.js",
44
+ "./components/snk-personalized-filter/subcomponents/snk-filter-advanced-mode/snk-filter-advanced-mode.js",
45
+ "./components/snk-personalized-filter/subcomponents/snk-filter-assistent-mode/snk-filter-assistent-mode.js",
44
46
  "./components/snk-personalized-filter/subcomponents/snk-filter-param-config/snk-filter-param-config.js",
45
47
  "./components/snk-pesquisa/snk-pesquisa.js",
46
48
  "./components/snk-print-selector/snk-print-selector.js",
@@ -224,7 +224,7 @@ export class SnkFilterBar {
224
224
  loadConfigFromStorage() {
225
225
  return new Promise(accept => {
226
226
  ConfigStorage.get().then(instance => {
227
- instance.loadFilterBarConfig(this.configName)
227
+ instance.loadFilterBarConfig(this.configName, { contextURI: this.dataUnit.name })
228
228
  .then((filters) => {
229
229
  accept();
230
230
  this.filterConfig = filters.map(item => this.normalizeItem(item));
@@ -38,4 +38,8 @@
38
38
 
39
39
  .ez-box__main {
40
40
  height: 90%;
41
- }
41
+ }
42
+
43
+ .snk-personalized-filter__button-mode{
44
+ height: 35px;
45
+ }
@@ -3,7 +3,7 @@ import { ApplicationContext, StringUtils } from '@sankhyalabs/core';
3
3
  import { PersonalizedFilterUtils } from './subcomponents/snk-filter-param-config/utils/PersonalizedFilterUtils';
4
4
  import { ConfigStorage } from "../../lib/configs/ConfigStorage";
5
5
  import { ApplicationUtils } from "@sankhyalabs/ezui/dist/collection/utils";
6
- import { ObjectUtils } from "@sankhyalabs/core";
6
+ import { ObjectUtils, ElementIDUtils } from "@sankhyalabs/core";
7
7
  import { FilterGroupCondition } from './interfaces/IExpressionItem';
8
8
  import store from '../../lib/store';
9
9
  import PersonalizedFilterFetcher from "../../lib/http/data-fetcher/fetchers/personalized-filter-fetcher";
@@ -90,6 +90,13 @@ export class SnkPersonalizedFilter {
90
90
  }
91
91
  this.loadFilter(this.filterId, undefined);
92
92
  }
93
+ componentDidRender() {
94
+ var _a;
95
+ (_a = this._viewStackRef) === null || _a === void 0 ? void 0 : _a.show(this._filterAssistentMode ? 0 : 1);
96
+ if (this._elButtonMode) {
97
+ this._elButtonMode.setAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME, ElementIDUtils.getInternalIDInfo(`${this._filterAssistentMode ? "advancedMode_ezButton" : "assistentMode_ezButton"}`));
98
+ }
99
+ }
93
100
  getMessage(key, params) {
94
101
  return this._application.messagesBuilder.getMessage(key, params);
95
102
  }
@@ -107,26 +114,55 @@ export class SnkPersonalizedFilter {
107
114
  removeFilter() {
108
115
  ConfigStorage.removePersonalizedFilter(this._filterAssistent, this.configName);
109
116
  }
110
- async handleFilterGroupChange() {
111
- const assistent = await this._mainExpressionGroup.getExpressionGroup();
112
- this._filterAssistent = Object.assign(Object.assign({}, this._filterAssistent), { assistent });
113
- this._filterAssistent.parameters = PersonalizedFilterUtils.buildVariableParameters(this._filterAssistent.assistent);
114
- this._elTextAreaExpression.value = PersonalizedFilterUtils.buildGroupExpression(this._filterAssistent.assistent, true);
115
- this._elButtonSave.enabled = !this.hasChangesToSave();
116
- }
117
117
  hasChangesToSave() {
118
118
  return JSON.stringify(this._filterAssistent) === JSON.stringify(this._originalFilterAssistent);
119
119
  }
120
- handleSave() {
120
+ async handleSave() {
121
+ if (this._filterAssistentMode) {
122
+ const isValid = PersonalizedFilterUtils.validateFields(this._filterAssistent.assistent);
123
+ if (!isValid || !this._filterAssistent.name)
124
+ return this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), this.getMessage("snkPersonalizedFilter.error.description"));
125
+ this.saveAssistentMode();
126
+ }
127
+ else {
128
+ if (!this._filterAssistent.expression || !this._filterAssistent.name)
129
+ return this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), this.getMessage("snkPersonalizedFilter.error.description"));
130
+ const isValidExpressionForAdvancedMode = await this.validateExpressionBeforeSaving();
131
+ if (!isValidExpressionForAdvancedMode)
132
+ return;
133
+ this.saveAdvancedMode();
134
+ }
135
+ }
136
+ saveAssistentMode() {
121
137
  const { assistent, expression } = this._filterAssistent;
122
- const isValid = PersonalizedFilterUtils.validateFields(assistent);
123
- if (!isValid || !this._filterAssistent.name)
124
- return this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), this.getMessage("snkPersonalizedFilter.error.description"));
125
138
  const expressionQuery = !!assistent ? PersonalizedFilterUtils.buildGroupExpression(assistent) : expression;
126
139
  this._filterAssistent.expression = expressionQuery;
127
140
  this.ezSave.emit(expressionQuery);
128
141
  this.saveFilter();
129
142
  }
143
+ saveAdvancedMode() {
144
+ if (this._filterAssistent.assistent) {
145
+ ApplicationUtils.confirm(this.getMessage("snkPersonalizedFilter.confirmSaveModeAdvanced.title"), this.getMessage("snkPersonalizedFilter.confirmSaveModeAdvanced.description"))
146
+ .then((confirm) => {
147
+ if (!confirm)
148
+ return;
149
+ this.saveAndTransformToAdvancedMode();
150
+ });
151
+ }
152
+ else {
153
+ this.saveAndTransformToAdvancedMode();
154
+ }
155
+ }
156
+ saveAndTransformToAdvancedMode() {
157
+ this._filterAssistent.assistent = undefined;
158
+ this.ezSave.emit(this._filterAssistent.expression);
159
+ this.saveFilter();
160
+ }
161
+ async validateExpressionBeforeSaving() {
162
+ const { valid, message } = await this._personalizedFilterFetcher.validatePersonalizedFilter(this.entityUri, this._filterAssistent.expression);
163
+ valid || this._application.error(this.getMessage("snkPersonalizedFilter.error.title"), message);
164
+ return valid;
165
+ }
130
166
  handleCancel() {
131
167
  if (this.hasChangesToSave()) {
132
168
  return this.ezCancel.emit();
@@ -160,32 +196,87 @@ export class SnkPersonalizedFilter {
160
196
  }
161
197
  return resp;
162
198
  }
163
- handleExpressionChange(expression) {
199
+ handleExpressionChangeAdvancedMode(expression) {
164
200
  this._filterAssistent = Object.assign(Object.assign({}, this._filterAssistent), { expression });
165
201
  this._elButtonSave.enabled = !this.hasChangesToSave();
166
202
  }
167
- getWarningMessageComponent() {
168
- var _a;
169
- if (StringUtils.isEmpty((_a = this._filterAssistent) === null || _a === void 0 ? void 0 : _a.warningMessage)) {
170
- return undefined;
203
+ handleChangeFilterAssistentMode(filterAssistent) {
204
+ this._elButtonSave.enabled = !this.hasChangesToSave();
205
+ this._filterAssistent = Object.assign({}, filterAssistent);
206
+ }
207
+ selectField(fieldName) {
208
+ if (!('name' in fieldName))
209
+ return;
210
+ const fieldExpression = this.buildExpression(fieldName.entityName, fieldName.name, fieldName.entityPath);
211
+ const textAreaElement = this._elAdvancedMode.querySelector('ez-text-area');
212
+ textAreaElement.appendTextToSelection(fieldExpression);
213
+ }
214
+ buildExpression(entityName, fieldName, entityPath) {
215
+ if (entityPath.length > 0) {
216
+ entityPath.shift();
171
217
  }
172
- return (h("div", { class: "ez-flex" }, h("ez-alert", { alertType: "warn" }, this._filterAssistent.warningMessage)));
218
+ return entityPath.length > 0 ? `${entityPath.join("->")}->${fieldName}` : `${entityName}.${fieldName}`;
219
+ }
220
+ onAddField(target) {
221
+ const textAreaElement = this._elAdvancedMode.querySelector('ez-text-area');
222
+ const options = { horizontalGap: 0, verticalGap: 12, fromRight: true };
223
+ textAreaElement.setFocus();
224
+ target.setBlur();
225
+ if (this._elFilterFieldSearch)
226
+ this._elFilterFieldSearch.show(target, options);
227
+ }
228
+ renderButtonAddField() {
229
+ if (this._filterAssistentMode)
230
+ return;
231
+ 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 })));
173
232
  }
174
233
  buildContainerPersonalizedFilter() {
175
- var _a, _b, _c;
234
+ return (h("ez-view-stack", { ref: (ref) => this._viewStackRef = ref }, h("stack-item", null, this._filterAssistentMode &&
235
+ 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) }))));
236
+ }
237
+ handleModeChange() {
238
+ var _a, _b;
176
239
  if (this._filterAssistentMode) {
177
- 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 })))))));
240
+ ApplicationUtils.confirm(this.getMessage("snkPersonalizedFilter.confirmChangeModeAssistent.title"), this.getMessage("snkPersonalizedFilter.confirmChangeModeAssistent.description"))
241
+ .then((canCancel) => {
242
+ if (!canCancel)
243
+ return;
244
+ this._filterAssistentMode = !this._filterAssistentMode;
245
+ if (!this.hasChangesToSave()) {
246
+ const expression = PersonalizedFilterUtils.buildGroupExpression(this._filterAssistent.assistent);
247
+ this._filterAssistent.expression = expression;
248
+ this._elButtonSave.enabled = !this.hasChangesToSave();
249
+ }
250
+ });
178
251
  }
179
252
  else {
180
- 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()));
253
+ if (((_a = this._filterAssistent) === null || _a === void 0 ? void 0 : _a.expression) === ((_b = this._originalFilterAssistent) === null || _b === void 0 ? void 0 : _b.expression)) {
254
+ this._filterAssistentMode = !this._filterAssistentMode;
255
+ }
256
+ else {
257
+ const expressionBefore = this._filterAssistent.expression;
258
+ const expression = PersonalizedFilterUtils.buildGroupExpression(this._filterAssistent.assistent);
259
+ if (expressionBefore !== expression) {
260
+ ApplicationUtils.confirm(this.getMessage("snkPersonalizedFilter.confirmChangeModeAdvanced.title"), this.getMessage("snkPersonalizedFilter.confirmChangeModeAdvanced.description"))
261
+ .then((canCancel) => {
262
+ if (!canCancel)
263
+ return;
264
+ this._filterAssistent = Object.assign(Object.assign({}, this._filterAssistent), { expression });
265
+ this._filterAssistentMode = !this._filterAssistentMode;
266
+ });
267
+ }
268
+ else {
269
+ this._filterAssistentMode = !this._filterAssistentMode;
270
+ }
271
+ }
181
272
  }
182
273
  }
183
274
  render() {
184
- var _a, _b;
275
+ var _a, _b, _c, _d;
185
276
  if (!((_a = this._filterAssistent) === null || _a === void 0 ? void 0 : _a.assistent) && this._filterAssistentMode) {
186
277
  return;
187
278
  }
188
- 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()))))));
279
+ 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()))))));
189
280
  }
190
281
  static get is() { return "snk-personalized-filter"; }
191
282
  static get encapsulation() { return "scoped"; }
@@ -25,8 +25,8 @@ export class SnkExpressionGroup {
25
25
  this.updateDashes();
26
26
  }
27
27
  /*
28
- * Retorna o grupo da expressão.
29
- */
28
+ * Retorna o grupo da expressão.
29
+ */
30
30
  async getExpressionGroup() {
31
31
  return this._group;
32
32
  }
@@ -40,9 +40,7 @@ export class SnkExpressionGroup {
40
40
  if (!this.getDataGroupLevel()) {
41
41
  this._element.setAttribute('data-group-level', this.FIRST_LEVEL);
42
42
  }
43
- if (!this.filterId) {
44
- this.canAddExpression = false;
45
- }
43
+ this.canAddExpression = this.group.items.every(this.isFilledItem);
46
44
  }
47
45
  componentDidRender() {
48
46
  this.setSelfTop();
@@ -227,7 +225,7 @@ export class SnkExpressionGroup {
227
225
  }
228
226
  render() {
229
227
  const canAddGroup = this.canAddGroup();
230
- return (h(Host, null, h("div", { class: !this.isFirstLevel() && this._showDashes ? 'dashes' : 'hidden', style: this.buildGroupStyle() }), h("div", { class: !this.isFirstLevel() && this._showDashes ? 'horizontal-dashes' : 'hidden' }), h("div", { class: 'ez-flex ez-flex--align-items-center' }, h("div", { class: 'snk-expression-group__container-condition ez-flex ez-flex-item--align-center ez-flex--align-items-center', "data-condition": this._conditionOperator, title: this.getTooltipMessageForOperator() }, h("label", { class: "ez-label ez-padding-right--medium ez-padding-left--medium ez-title--primary" }, this.getMessage("snkPersonalizedFilter.info.condition")), h("div", null, h("ez-combo-box", Object.assign({ class: "snk-expression-group__container-option", canShowError: false, mode: "slim", suppressEmptyOption: true, enabled: this.canChangeGroupCondition(), value: this._conditionOperator, onEzChange: (evt) => this.handleConditionOperatorChange(evt.detail.value) }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `comboBoxConditions_level_${this.getDataGroupLevel()}` }), h("option", { value: FilterGroupCondition.AND }, "E"), h("option", { value: FilterGroupCondition.OR }, "OU")))), h("ez-button", { class: "ez-padding-right--medium ez-padding-left--medium", mode: "icon", iconName: "plus", size: "small", enabled: this.canAddExpression, title: this.getMessageAddTooltip(), onClick: () => this.handleAddExpression() }), h("ez-button", { label: this.getMessage("snkPersonalizedFilter.info.addGroup"), size: "small", enabled: canAddGroup, title: !canAddGroup ? this.getMessage('snkPersonalizedFilter.info.labelDisabledAddGroupButton', { LIMIT_GROUP_LEVEL: this.LIMIT_GROUP_LEVEL + 1 }) : '', onClick: () => this.handleAddGroup() }, h("ez-icon", { slot: "leftIcon", iconName: "plus" })), !this.isFirstLevel() && h("ez-button", { title: this.getMessage("snkPersonalizedFilter.info.labelDeleteExpression"), class: "ez-padding-left--medium", mode: "icon", iconName: "delete", size: "small", onClick: (evt) => this.confirmRemoveGroup(evt) })), h("div", { class: "ez-padding-top--small snk-expression-group__container-expression" }, h("div", { class: "ez-padding-top--small" }, this.renderExpressionItems())), h("div", { class: "ez-padding-top--small snk-expression-group__container-expression" }, h("div", { class: "ez-padding-top--small" }, this.renderGroups()))));
228
+ return (h(Host, null, h("div", { class: !this.isFirstLevel() && this._showDashes ? 'dashes' : 'hidden', style: this.buildGroupStyle() }), h("div", { class: !this.isFirstLevel() && this._showDashes ? 'horizontal-dashes' : 'hidden' }), h("div", { class: 'ez-flex ez-flex--align-items-center' }, h("div", { class: 'snk-expression-group__container-condition ez-flex ez-flex-item--align-center ez-flex--align-items-center', "data-condition": this._conditionOperator, title: this.getTooltipMessageForOperator() }, h("label", { class: "ez-label ez-padding-right--medium ez-padding-left--medium ez-title--primary" }, this.getMessage("snkPersonalizedFilter.info.condition")), h("div", null, h("ez-combo-box", Object.assign({ class: "snk-expression-group__container-option", canShowError: false, mode: "slim", suppressEmptyOption: true, enabled: this.canChangeGroupCondition(), value: this._conditionOperator, onEzChange: (evt) => this.handleConditionOperatorChange(evt.detail.value) }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `comboBoxConditions_level_${this.getDataGroupLevel()}` }), h("option", { value: FilterGroupCondition.AND }, "E"), h("option", { value: FilterGroupCondition.OR }, "OU")))), h("ez-button", { class: "ez-padding-right--medium ez-padding-left--medium", mode: "icon", iconName: "plus", size: "small", enabled: this.canAddExpression, title: this.getMessageAddTooltip(), onClick: () => this.handleAddExpression() }), h("ez-button", { label: this.getMessage("snkPersonalizedFilter.info.addGroup"), size: "small", enabled: canAddGroup, title: !canAddGroup ? this.getMessage('snkPersonalizedFilter.info.labelDisabledAddGroupButton', { LIMIT_GROUP_LEVEL: this.LIMIT_GROUP_LEVEL + 1 }) : '', onClick: () => this.handleAddGroup() }, h("ez-icon", { class: "ez-padding-right--small", slot: "leftIcon", iconName: "plus" })), !this.isFirstLevel() && h("ez-button", { title: this.getMessage("snkPersonalizedFilter.info.labelDeleteExpression"), class: "ez-padding-left--medium", mode: "icon", iconName: "delete", size: "small", onClick: (evt) => this.confirmRemoveGroup(evt) })), h("div", { class: "ez-padding-top--small snk-expression-group__container-expression" }, h("div", { class: "ez-padding-top--small" }, this.renderExpressionItems())), h("div", { class: "ez-padding-top--small snk-expression-group__container-expression" }, h("div", { class: "ez-padding-top--small" }, this.renderGroups()))));
231
229
  }
232
230
  static get is() { return "snk-expression-group"; }
233
231
  static get encapsulation() { return "scoped"; }
@@ -38,7 +38,8 @@ export class SnkExpressionItem {
38
38
  }
39
39
  }
40
40
  componentDidRender() {
41
- this._showValueVariable = this._elValueVariable.value;
41
+ var _a;
42
+ this._showValueVariable = (_a = this._elValueVariable) === null || _a === void 0 ? void 0 : _a.value;
42
43
  }
43
44
  updateFieldSelected() {
44
45
  const field = {
@@ -0,0 +1,10 @@
1
+ :host {
2
+ display: block;
3
+
4
+ /*@doc Define a cor da fonte do título.*/
5
+ --snk-personalized-filter--title--color: var(--title--primary, #2B3A54);
6
+ }
7
+
8
+ .snk-filter-advanced-mode__title {
9
+ color: var(--snk-personalized-filter--title--color);
10
+ }