@sankhyalabs/sankhyablocks 6.10.0 → 7.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) 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-b14563fc.js} +4 -2
  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 +8 -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/cjs/snk-simple-crud.cjs.entry.js +12 -2
  29. package/dist/collection/collection-manifest.json +2 -0
  30. package/dist/collection/components/snk-data-unit/snk-data-unit.js +3 -1
  31. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +1 -1
  32. package/dist/collection/components/snk-grid/snk-grid.js +6 -0
  33. package/dist/collection/components/snk-personalized-filter/snk-personalized-filter.css +5 -1
  34. package/dist/collection/components/snk-personalized-filter/snk-personalized-filter.js +114 -23
  35. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-expression-group/snk-expression-group.js +4 -6
  36. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-expression-item/snk-expression-item.js +2 -1
  37. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-advanced-mode/snk-filter-advanced-mode.css +10 -0
  38. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-advanced-mode/snk-filter-advanced-mode.js +95 -0
  39. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-assistent-mode/snk-filter-assistent-mode.css +66 -0
  40. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-assistent-mode/snk-filter-assistent-mode.js +158 -0
  41. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-param-config/snk-filter-param-config.js +8 -2
  42. package/dist/collection/components/snk-personalized-filter/subcomponents/snk-filter-param-config/utils/PersonalizedFilterUtils.js +14 -23
  43. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +14 -4
  44. package/dist/collection/lib/configs/ConfigStorage.js +5 -3
  45. package/dist/collection/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.js +22 -5
  46. package/dist/collection/lib/http/data-fetcher/fetchers/personalized-filter-fetcher.js +22 -18
  47. package/dist/collection/lib/message/resources/snk-personalized-filter.msg.js +18 -2
  48. package/dist/components/ConfigStorage.js +27 -21
  49. package/dist/components/PersonalizedFilterUtils.js +14 -23
  50. package/dist/components/SnkMessageBuilder.js +18 -2
  51. package/dist/components/filter-bar-config-fetcher.js +22 -5
  52. package/dist/components/index.d.ts +2 -0
  53. package/dist/components/index.js +2 -0
  54. package/dist/components/snk-crud.js +34 -22
  55. package/dist/components/snk-data-unit2.js +3 -1
  56. package/dist/components/snk-detail-view2.js +49 -27
  57. package/dist/components/snk-expression-group2.js +4 -6
  58. package/dist/components/snk-expression-item2.js +2 -1
  59. package/dist/components/snk-filter-advanced-mode.d.ts +11 -0
  60. package/dist/components/snk-filter-advanced-mode.js +6 -0
  61. package/dist/components/snk-filter-advanced-mode2.js +46 -0
  62. package/dist/components/snk-filter-assistent-mode.d.ts +11 -0
  63. package/dist/components/snk-filter-assistent-mode.js +6 -0
  64. package/dist/components/snk-filter-assistent-mode2.js +77 -0
  65. package/dist/components/snk-filter-bar2.js +17 -5
  66. package/dist/components/snk-filter-param-config2.js +6 -0
  67. package/dist/components/snk-grid2.js +28 -10
  68. package/dist/components/snk-personalized-filter2.js +131 -28
  69. package/dist/components/snk-simple-crud2.js +12 -2
  70. package/dist/esm/{ConfigStorage-f1e805a0.js → ConfigStorage-02f17a26.js} +28 -22
  71. package/dist/esm/{PersonalizedFilterUtils-1a167d89.js → PersonalizedFilterUtils-731cae01.js} +16 -62
  72. package/dist/esm/{SnkFormConfigManager-324f6dc7.js → SnkFormConfigManager-cd9e6cab.js} +1 -1
  73. package/dist/esm/{SnkMessageBuilder-76f62087.js → SnkMessageBuilder-5be56185.js} +18 -2
  74. package/dist/esm/{filter-bar-config-fetcher-a358b8e0.js → filter-bar-config-fetcher-790283d8.js} +22 -5
  75. package/dist/esm/index-620ac460.js +7 -0
  76. package/dist/esm/index-ae591a44.js +44 -0
  77. package/dist/esm/loader.js +1 -1
  78. package/dist/esm/sankhyablocks.js +1 -1
  79. package/dist/esm/snk-application.entry.js +3 -3
  80. package/dist/esm/snk-data-exporter.entry.js +2 -2
  81. package/dist/esm/{snk-data-unit-0ff2d644.js → snk-data-unit-d44b6bc0.js} +4 -2
  82. package/dist/esm/snk-data-unit.entry.js +2 -2
  83. package/dist/esm/snk-detail-view.entry.js +5 -5
  84. package/dist/esm/snk-expression-group_2.entry.js +537 -0
  85. package/dist/esm/snk-filter-advanced-mode_2.entry.js +61 -0
  86. package/dist/esm/snk-filter-bar.entry.js +5 -5
  87. package/dist/esm/snk-filter-detail.entry.js +3 -3
  88. package/dist/esm/{snk-expression-item_3.entry.js → snk-filter-field-search_2.entry.js} +12 -303
  89. package/dist/esm/snk-filter-modal-item.entry.js +2 -2
  90. package/dist/esm/snk-filter-modal.entry.js +2 -2
  91. package/dist/esm/snk-form.entry.js +3 -3
  92. package/dist/esm/snk-grid-config.entry.js +2 -2
  93. package/dist/esm/snk-grid.entry.js +8 -2
  94. package/dist/esm/{snk-guides-viewer-e7209909.js → snk-guides-viewer-579c70cc.js} +1 -1
  95. package/dist/esm/snk-guides-viewer.entry.js +4 -4
  96. package/dist/esm/snk-personalized-filter.entry.js +119 -28
  97. package/dist/esm/snk-simple-crud.entry.js +12 -2
  98. package/dist/sankhyablocks/{p-522172e1.entry.js → p-1005cf8e.entry.js} +1 -1
  99. package/dist/sankhyablocks/{p-8f6575c8.entry.js → p-19fdcf88.entry.js} +1 -1
  100. package/dist/sankhyablocks/{p-18b74675.entry.js → p-1fe2976e.entry.js} +1 -1
  101. package/dist/sankhyablocks/p-2227bb94.js +1 -0
  102. package/dist/sankhyablocks/p-386102a7.entry.js +1 -0
  103. package/dist/sankhyablocks/{p-7a075ae6.js → p-3b059f4e.js} +1 -1
  104. package/dist/sankhyablocks/p-48156672.entry.js +1 -0
  105. package/dist/sankhyablocks/p-4af6cbef.entry.js +1 -0
  106. package/dist/sankhyablocks/p-4bbc7aac.entry.js +1 -0
  107. package/dist/sankhyablocks/{p-3251999f.entry.js → p-4f687570.entry.js} +1 -1
  108. package/dist/sankhyablocks/p-5098f618.js +1 -0
  109. package/dist/sankhyablocks/{p-652b9081.js → p-7e486ac9.js} +1 -1
  110. package/dist/sankhyablocks/p-7e636457.entry.js +1 -0
  111. package/dist/sankhyablocks/p-7f1c4687.js +56 -0
  112. package/dist/sankhyablocks/{p-ed9e1e52.entry.js → p-88f4ef73.entry.js} +1 -1
  113. package/dist/sankhyablocks/{p-4f3df9b6.js → p-90a926c7.js} +1 -1
  114. package/dist/sankhyablocks/{p-eef26a01.entry.js → p-90e7c3a2.entry.js} +1 -1
  115. package/dist/sankhyablocks/p-933c0c0b.js +1 -0
  116. package/dist/sankhyablocks/p-97720467.entry.js +1 -0
  117. package/dist/sankhyablocks/{p-bd840081.entry.js → p-9fa9331b.entry.js} +1 -1
  118. package/dist/sankhyablocks/{p-40a5d35e.entry.js → p-ad6673fb.entry.js} +1 -1
  119. package/dist/sankhyablocks/p-bd86c9d3.entry.js +1 -0
  120. package/dist/sankhyablocks/{p-8d583a79.entry.js → p-c39b27a3.entry.js} +1 -1
  121. package/dist/sankhyablocks/p-f4184ce7.js +1 -0
  122. package/dist/sankhyablocks/{p-56378a3b.js → p-fb1e5b6d.js} +1 -1
  123. package/dist/sankhyablocks/p-fcc487ea.entry.js +1 -0
  124. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  125. package/dist/types/components/snk-data-unit/snk-data-unit.d.ts +1 -0
  126. package/dist/types/components/snk-personalized-filter/interfaces/IPersonalizedFilter.d.ts +4 -0
  127. package/dist/types/components/snk-personalized-filter/snk-personalized-filter.d.ts +17 -6
  128. package/dist/types/components/snk-personalized-filter/subcomponents/snk-expression-group/snk-expression-group.d.ts +2 -2
  129. package/dist/types/components/snk-personalized-filter/subcomponents/snk-filter-advanced-mode/snk-filter-advanced-mode.d.ts +20 -0
  130. package/dist/types/components/snk-personalized-filter/subcomponents/snk-filter-assistent-mode/snk-filter-assistent-mode.d.ts +31 -0
  131. package/dist/types/components/snk-personalized-filter/subcomponents/snk-filter-param-config/snk-filter-param-config.d.ts +6 -0
  132. package/dist/types/components/snk-personalized-filter/subcomponents/snk-filter-param-config/utils/PersonalizedFilterUtils.d.ts +2 -2
  133. package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +2 -1
  134. package/dist/types/components.d.ts +103 -2
  135. package/dist/types/lib/configs/ConfigStorage.d.ts +3 -2
  136. package/dist/types/lib/http/data-fetcher/fetchers/filter-bar-config-fetcher.d.ts +2 -1
  137. package/dist/types/lib/http/data-fetcher/fetchers/personalized-filter-fetcher.d.ts +2 -1
  138. package/package.json +1 -1
  139. package/react/components.d.ts +2 -0
  140. package/react/components.js +2 -0
  141. package/react/components.js.map +1 -1
  142. package/dist/cjs/IExpressionItem-0e32ebb7.js +0 -7
  143. package/dist/cjs/snk-expression-group.cjs.entry.js +0 -250
  144. package/dist/esm/IExpressionItem-21f225bf.js +0 -7
  145. package/dist/esm/snk-expression-group.entry.js +0 -246
  146. package/dist/sankhyablocks/p-432a73a8.js +0 -1
  147. package/dist/sankhyablocks/p-63bff2a8.js +0 -1
  148. package/dist/sankhyablocks/p-6490021d.entry.js +0 -1
  149. package/dist/sankhyablocks/p-7d68a43a.js +0 -1
  150. package/dist/sankhyablocks/p-7fd8a0ab.entry.js +0 -1
  151. package/dist/sankhyablocks/p-9f34a127.entry.js +0 -1
  152. package/dist/sankhyablocks/p-a357d13c.entry.js +0 -1
  153. package/dist/sankhyablocks/p-d4adf773.js +0 -68
  154. package/dist/sankhyablocks/p-d9586ead.entry.js +0 -1
  155. package/dist/sankhyablocks/p-eb30a52a.entry.js +0 -1
  156. package/dist/sankhyablocks/p-f8ce17d3.entry.js +0 -1
@@ -1,250 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- const index = require('./index-f9e81701.js');
6
- const IExpressionItem = require('./IExpressionItem-0e32ebb7.js');
7
- const utils = require('@sankhyalabs/ezui/dist/collection/utils');
8
- const core = require('@sankhyalabs/core');
9
-
10
- const snkExpressionGroupCss = ".sc-snk-expression-group-h{display:block;--snk-expression-group--container-condition--width:184px;--snk-expression-group--container-condition--height:38px;--snk-expression-group--container-condition--border-radius:var(--border--radius-medium, 12px);--snk-expression-group--container-option--width:85px;--snk-expression-group__container-condition--background-and:#66B6A0;--snk-expression-group__container-condition--background-or:#EBC65E;--snk-expression-group__container-expression--padding-left:26px;--snk-expression-group__background-color-dashed:var(--background--body, #fafcff)}.snk-expression-group__container-condition.sc-snk-expression-group{width:var(--snk-expression-group--container-condition--width);height:var(--snk-expression-group--container-condition--height);border-radius:var(--snk-expression-group--container-condition--border-radius);z-index:var(--more-visible--2x, 3)}.snk-expression-group__container-option.sc-snk-expression-group{width:var(--snk-expression-group--container-option--width)}.snk-expression-group__container-condition[data-condition=\"AND\"].sc-snk-expression-group{background-color:var(--snk-expression-group__container-condition--background-and)}.snk-expression-group__container-condition[data-condition=\"OR\"].sc-snk-expression-group{background-color:var(--snk-expression-group__container-condition--background-or)}.snk-expression-group__container-expression.sc-snk-expression-group{padding-left:var(--snk-expression-group__container-expression--padding-left)}.dashes.sc-snk-expression-group{z-index:var(--visible, 1);background:var(--snk-expression-group__background-color-dashed);border-left:2px dashed var(--text-secondary, #A2ABB9);position:absolute;width:15px;height:58px;margin-left:-15px;margin-top:-36.5px}.horizontal-dashes.sc-snk-expression-group{z-index:var(--more-visible, 2);border-bottom:2px dashed var(--text-secondary, #A2ABB9);position:absolute;width:15px;height:54px;margin-left:-15px;margin-top:-33.5px}.hidden.sc-snk-expression-group{display:none}";
11
-
12
- const SnkExpressionGroup = class {
13
- constructor(hostRef) {
14
- index.registerInstance(this, hostRef);
15
- this.ezFilterGroupChange = index.createEvent(this, "ezFilterGroupChange", 7);
16
- this.ezFilterGroupRemove = index.createEvent(this, "ezFilterGroupRemove", 7);
17
- this.ezExpressionGroupLayoutChanged = index.createEvent(this, "ezExpressionLayoutChanged", 7);
18
- this.FIRST_LEVEL = "0";
19
- this.LIMIT_GROUP_LEVEL = 4;
20
- this.application = core.ApplicationContext.getContextValue("__SNK__APPLICATION__");
21
- this._conditionOperator = IExpressionItem.FilterGroupCondition.AND;
22
- this._group = undefined;
23
- this._selfTop = 0;
24
- this.canAddExpression = true;
25
- this._showDashes = true;
26
- this.parentTop = 0;
27
- this.group = undefined;
28
- this.messagesBuilder = undefined;
29
- this.filterId = undefined;
30
- this.entityURI = undefined;
31
- }
32
- /**
33
- * Listener para capturar adição e remoção de grupos e items de expressão.
34
- */
35
- todoCompletedHandler(_) {
36
- this.updateDashes();
37
- }
38
- /*
39
- * Retorna o grupo da expressão.
40
- */
41
- async getExpressionGroup() {
42
- return this._group;
43
- }
44
- watchGroup(newValue) {
45
- this._group = newValue;
46
- this._conditionOperator = this.getOperand();
47
- }
48
- componentWillLoad() {
49
- this._group = this.group;
50
- this._conditionOperator = this.getOperand();
51
- if (!this.getDataGroupLevel()) {
52
- this._element.setAttribute('data-group-level', this.FIRST_LEVEL);
53
- }
54
- if (!this.filterId) {
55
- this.canAddExpression = false;
56
- }
57
- }
58
- componentDidRender() {
59
- this.setSelfTop();
60
- }
61
- changeHandler() {
62
- this.ezExpressionGroupLayoutChanged.emit();
63
- }
64
- /**
65
- * Função que define o valor atualizado da propriedade top do elemento em tela para calcular o tamanho do tracejado.
66
- */
67
- setSelfTop() {
68
- this._selfTop = this._element.getBoundingClientRect().top;
69
- }
70
- /**
71
- * Função que calcula o tamanho que deve ter o tracejado.
72
- */
73
- getDashedHeight() {
74
- return this._selfTop - this.parentTop;
75
- }
76
- getOperand() {
77
- return !this._group.operand ? IExpressionItem.FilterGroupCondition.AND : this._group.operand;
78
- }
79
- getMessage(key, params) {
80
- return this.application.messagesBuilder.getMessage(key, params);
81
- }
82
- updateDashes() {
83
- this._showDashes = false;
84
- this.setSelfTop();
85
- this._showDashes = true;
86
- }
87
- renderExpressionItems() {
88
- var _a;
89
- return (_a = this._group.items) === null || _a === void 0 ? void 0 : _a.map((item) => (index.h("snk-expression-item", { key: item.id, class: "ez-padding-top--small snk-expression-group__item", expression: item, canRemove: this._group.items.length > 1, onEzFilterItemChange: () => this.handleFilterItemChange(), onEzFilterItemRemove: (evt) => this.handleFilterItemRemove(evt, item.id), messagesBuilder: this.messagesBuilder, entityURI: this.entityURI })));
90
- }
91
- renderGroups() {
92
- var _a;
93
- const currentLevel = parseInt(this.getDataGroupLevel() || '0');
94
- const newLevel = currentLevel + 1;
95
- return (_a = this._group.childrenGroups) === null || _a === void 0 ? void 0 : _a.map((group) => (index.h("snk-expression-group", { key: group.id, group: group, messagesBuilder: this.messagesBuilder, parentTop: this._selfTop, "data-group-level": newLevel, onEzFilterGroupRemove: (evt) => this.handleFilterGroupRemove(evt, group.id), entityURI: this.entityURI })));
96
- }
97
- handleFilterGroupRemove(evt, groupId) {
98
- this.onStopPropagation(evt);
99
- this._group.childrenGroups = this._group.childrenGroups.filter(group => group.id !== groupId);
100
- index.forceUpdate(this);
101
- this.ezFilterGroupChange.emit(this._group);
102
- this.changeHandler();
103
- }
104
- handleFilterItemRemove(evt, itemId) {
105
- this.onStopPropagation(evt);
106
- this._group.items = this._group.items.filter(item => item.id !== itemId);
107
- index.forceUpdate(this);
108
- this.ezFilterGroupChange.emit(this._group);
109
- this.changeHandler();
110
- this.canAddExpression = true;
111
- }
112
- isFilledItem(item) {
113
- if (!item.fieldName || !item.operand)
114
- return false;
115
- if (item.operand === 'NULL' || item.operand === 'NOT_NULL') {
116
- return true;
117
- }
118
- else {
119
- return item.paramVariable || (item.userInterface === 'SWITCH') ? true : !!item.value;
120
- }
121
- }
122
- handleFilterItemChange() {
123
- this.ezFilterGroupChange.emit(this._group);
124
- this.canAddExpression = this.group.items.every(this.isFilledItem);
125
- }
126
- handleAddExpression() {
127
- const newItem = {
128
- id: core.StringUtils.generateUUID(),
129
- entityName: "",
130
- fieldName: "",
131
- description: "",
132
- label: "Valor",
133
- type: undefined,
134
- expression: undefined,
135
- operand: undefined,
136
- paramVariable: false,
137
- value: undefined,
138
- systemConfig: null,
139
- userConfig: null
140
- };
141
- this._group.items.push(newItem);
142
- index.forceUpdate(this);
143
- this.ezFilterGroupChange.emit(this.group);
144
- this.changeHandler();
145
- this.canAddExpression = false;
146
- }
147
- handleAddGroup() {
148
- var _a;
149
- const newGroup = {
150
- id: core.StringUtils.generateUUID(),
151
- items: [
152
- {
153
- id: core.StringUtils.generateUUID(),
154
- entityName: "",
155
- fieldName: "",
156
- description: "",
157
- label: "Valor",
158
- type: undefined,
159
- expression: undefined,
160
- operand: undefined,
161
- paramVariable: false,
162
- value: undefined,
163
- systemConfig: null,
164
- userConfig: null
165
- }
166
- ],
167
- childrenGroups: [],
168
- operand: IExpressionItem.FilterGroupCondition.AND
169
- };
170
- this._group.childrenGroups = (_a = this._group.childrenGroups) !== null && _a !== void 0 ? _a : [];
171
- this._group.childrenGroups.push(newGroup);
172
- index.forceUpdate(this);
173
- this.ezFilterGroupChange.emit(this.group);
174
- this.changeHandler();
175
- }
176
- buildGroupStyle() {
177
- return {
178
- height: `${this.getDashedHeight()}px`,
179
- marginTop: `${-(this.getDashedHeight()) + 20}px`,
180
- };
181
- }
182
- handleConditionOperatorChange(newOperator) {
183
- this._conditionOperator = newOperator;
184
- this._group.operand = IExpressionItem.FilterGroupCondition[newOperator];
185
- this.ezFilterGroupChange.emit(this._group);
186
- }
187
- confirmRemoveGroup(evt) {
188
- this.onStopPropagation(evt);
189
- utils.ApplicationUtils.confirm(this.getMessage("snkPersonalizedFilter.confirmGroup.title"), this.getMessage("snkPersonalizedFilter.confirmGroup.description"))
190
- .then((canRemove) => {
191
- if (canRemove) {
192
- this.ezFilterGroupRemove.emit(this._group);
193
- }
194
- });
195
- }
196
- getTooltipMessageForOperator() {
197
- const groupLevel = this.getDataGroupLevel();
198
- if (groupLevel === this.FIRST_LEVEL && this._group.items.length === 1) {
199
- return this.getMessage("snkPersonalizedFilter.operador.firstLevel");
200
- }
201
- if (this._conditionOperator === IExpressionItem.FilterGroupCondition.AND) {
202
- return this.getMessage("snkPersonalizedFilter.operador.and");
203
- }
204
- else if (this._conditionOperator === IExpressionItem.FilterGroupCondition.OR) {
205
- return this.getMessage("snkPersonalizedFilter.operador.or");
206
- }
207
- }
208
- getDataGroupLevel() {
209
- return this._element.getAttribute('data-group-level');
210
- }
211
- canAddGroup() {
212
- const dataGroupLevel = Number(this.getDataGroupLevel() || this.FIRST_LEVEL);
213
- return dataGroupLevel < this.LIMIT_GROUP_LEVEL;
214
- }
215
- isFirstLevel() {
216
- return Boolean(this.getDataGroupLevel() === this.FIRST_LEVEL);
217
- }
218
- onStopPropagation(evt) {
219
- evt.preventDefault();
220
- evt.stopPropagation();
221
- }
222
- getMessageAddTooltip() {
223
- if (this.isFirstLevel()) {
224
- const allValidItems = this.group.items.every(item => {
225
- if (!item.fieldName || !item.operand)
226
- return false;
227
- return item.paramVariable || !!item.value;
228
- });
229
- return allValidItems ? this.getMessage("snkPersonalizedFilter.info.labelAddNewExpression") : this.getMessage("snkPersonalizedFilter.info.labelDisabledAddExpressionButton");
230
- }
231
- else {
232
- return this.canAddExpression ? this.getMessage("snkPersonalizedFilter.info.labelAddNewExpression") : this.getMessage("snkPersonalizedFilter.info.labelDisabledAddExpressionButton");
233
- }
234
- }
235
- canChangeGroupCondition() {
236
- const membersCount = this._group.items.length + this._group.childrenGroups.length;
237
- return membersCount > 1;
238
- }
239
- render() {
240
- const canAddGroup = this.canAddGroup();
241
- return (index.h(index.Host, null, index.h("div", { class: !this.isFirstLevel() && this._showDashes ? 'dashes' : 'hidden', style: this.buildGroupStyle() }), index.h("div", { class: !this.isFirstLevel() && this._showDashes ? 'horizontal-dashes' : 'hidden' }), index.h("div", { class: 'ez-flex ez-flex--align-items-center' }, index.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() }, index.h("label", { class: "ez-label ez-padding-right--medium ez-padding-left--medium ez-title--primary" }, this.getMessage("snkPersonalizedFilter.info.condition")), index.h("div", null, index.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) }, { [core.ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: `comboBoxConditions_level_${this.getDataGroupLevel()}` }), index.h("option", { value: IExpressionItem.FilterGroupCondition.AND }, "E"), index.h("option", { value: IExpressionItem.FilterGroupCondition.OR }, "OU")))), index.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() }), index.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() }, index.h("ez-icon", { slot: "leftIcon", iconName: "plus" })), !this.isFirstLevel() && index.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) })), index.h("div", { class: "ez-padding-top--small snk-expression-group__container-expression" }, index.h("div", { class: "ez-padding-top--small" }, this.renderExpressionItems())), index.h("div", { class: "ez-padding-top--small snk-expression-group__container-expression" }, index.h("div", { class: "ez-padding-top--small" }, this.renderGroups()))));
242
- }
243
- get _element() { return index.getElement(this); }
244
- static get watchers() { return {
245
- "group": ["watchGroup"]
246
- }; }
247
- };
248
- SnkExpressionGroup.style = snkExpressionGroupCss;
249
-
250
- exports.snk_expression_group = SnkExpressionGroup;
@@ -1,7 +0,0 @@
1
- var FilterGroupCondition;
2
- (function (FilterGroupCondition) {
3
- FilterGroupCondition["AND"] = "AND";
4
- FilterGroupCondition["OR"] = "OR";
5
- })(FilterGroupCondition || (FilterGroupCondition = {}));
6
-
7
- export { FilterGroupCondition as F };
@@ -1,246 +0,0 @@
1
- import { r as registerInstance, c as createEvent, h, f as forceUpdate, H as Host, g as getElement } from './index-a7d3d3f1.js';
2
- import { F as FilterGroupCondition } from './IExpressionItem-21f225bf.js';
3
- import { ApplicationUtils } from '@sankhyalabs/ezui/dist/collection/utils';
4
- import { ApplicationContext, StringUtils, ElementIDUtils } from '@sankhyalabs/core';
5
-
6
- const snkExpressionGroupCss = ".sc-snk-expression-group-h{display:block;--snk-expression-group--container-condition--width:184px;--snk-expression-group--container-condition--height:38px;--snk-expression-group--container-condition--border-radius:var(--border--radius-medium, 12px);--snk-expression-group--container-option--width:85px;--snk-expression-group__container-condition--background-and:#66B6A0;--snk-expression-group__container-condition--background-or:#EBC65E;--snk-expression-group__container-expression--padding-left:26px;--snk-expression-group__background-color-dashed:var(--background--body, #fafcff)}.snk-expression-group__container-condition.sc-snk-expression-group{width:var(--snk-expression-group--container-condition--width);height:var(--snk-expression-group--container-condition--height);border-radius:var(--snk-expression-group--container-condition--border-radius);z-index:var(--more-visible--2x, 3)}.snk-expression-group__container-option.sc-snk-expression-group{width:var(--snk-expression-group--container-option--width)}.snk-expression-group__container-condition[data-condition=\"AND\"].sc-snk-expression-group{background-color:var(--snk-expression-group__container-condition--background-and)}.snk-expression-group__container-condition[data-condition=\"OR\"].sc-snk-expression-group{background-color:var(--snk-expression-group__container-condition--background-or)}.snk-expression-group__container-expression.sc-snk-expression-group{padding-left:var(--snk-expression-group__container-expression--padding-left)}.dashes.sc-snk-expression-group{z-index:var(--visible, 1);background:var(--snk-expression-group__background-color-dashed);border-left:2px dashed var(--text-secondary, #A2ABB9);position:absolute;width:15px;height:58px;margin-left:-15px;margin-top:-36.5px}.horizontal-dashes.sc-snk-expression-group{z-index:var(--more-visible, 2);border-bottom:2px dashed var(--text-secondary, #A2ABB9);position:absolute;width:15px;height:54px;margin-left:-15px;margin-top:-33.5px}.hidden.sc-snk-expression-group{display:none}";
7
-
8
- const SnkExpressionGroup = class {
9
- constructor(hostRef) {
10
- registerInstance(this, hostRef);
11
- this.ezFilterGroupChange = createEvent(this, "ezFilterGroupChange", 7);
12
- this.ezFilterGroupRemove = createEvent(this, "ezFilterGroupRemove", 7);
13
- this.ezExpressionGroupLayoutChanged = createEvent(this, "ezExpressionLayoutChanged", 7);
14
- this.FIRST_LEVEL = "0";
15
- this.LIMIT_GROUP_LEVEL = 4;
16
- this.application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
17
- this._conditionOperator = FilterGroupCondition.AND;
18
- this._group = undefined;
19
- this._selfTop = 0;
20
- this.canAddExpression = true;
21
- this._showDashes = true;
22
- this.parentTop = 0;
23
- this.group = undefined;
24
- this.messagesBuilder = undefined;
25
- this.filterId = undefined;
26
- this.entityURI = undefined;
27
- }
28
- /**
29
- * Listener para capturar adição e remoção de grupos e items de expressão.
30
- */
31
- todoCompletedHandler(_) {
32
- this.updateDashes();
33
- }
34
- /*
35
- * Retorna o grupo da expressão.
36
- */
37
- async getExpressionGroup() {
38
- return this._group;
39
- }
40
- watchGroup(newValue) {
41
- this._group = newValue;
42
- this._conditionOperator = this.getOperand();
43
- }
44
- componentWillLoad() {
45
- this._group = this.group;
46
- this._conditionOperator = this.getOperand();
47
- if (!this.getDataGroupLevel()) {
48
- this._element.setAttribute('data-group-level', this.FIRST_LEVEL);
49
- }
50
- if (!this.filterId) {
51
- this.canAddExpression = false;
52
- }
53
- }
54
- componentDidRender() {
55
- this.setSelfTop();
56
- }
57
- changeHandler() {
58
- this.ezExpressionGroupLayoutChanged.emit();
59
- }
60
- /**
61
- * Função que define o valor atualizado da propriedade top do elemento em tela para calcular o tamanho do tracejado.
62
- */
63
- setSelfTop() {
64
- this._selfTop = this._element.getBoundingClientRect().top;
65
- }
66
- /**
67
- * Função que calcula o tamanho que deve ter o tracejado.
68
- */
69
- getDashedHeight() {
70
- return this._selfTop - this.parentTop;
71
- }
72
- getOperand() {
73
- return !this._group.operand ? FilterGroupCondition.AND : this._group.operand;
74
- }
75
- getMessage(key, params) {
76
- return this.application.messagesBuilder.getMessage(key, params);
77
- }
78
- updateDashes() {
79
- this._showDashes = false;
80
- this.setSelfTop();
81
- this._showDashes = true;
82
- }
83
- renderExpressionItems() {
84
- var _a;
85
- return (_a = this._group.items) === null || _a === void 0 ? void 0 : _a.map((item) => (h("snk-expression-item", { key: item.id, class: "ez-padding-top--small snk-expression-group__item", expression: item, canRemove: this._group.items.length > 1, onEzFilterItemChange: () => this.handleFilterItemChange(), onEzFilterItemRemove: (evt) => this.handleFilterItemRemove(evt, item.id), messagesBuilder: this.messagesBuilder, entityURI: this.entityURI })));
86
- }
87
- renderGroups() {
88
- var _a;
89
- const currentLevel = parseInt(this.getDataGroupLevel() || '0');
90
- const newLevel = currentLevel + 1;
91
- return (_a = this._group.childrenGroups) === null || _a === void 0 ? void 0 : _a.map((group) => (h("snk-expression-group", { key: group.id, group: group, messagesBuilder: this.messagesBuilder, parentTop: this._selfTop, "data-group-level": newLevel, onEzFilterGroupRemove: (evt) => this.handleFilterGroupRemove(evt, group.id), entityURI: this.entityURI })));
92
- }
93
- handleFilterGroupRemove(evt, groupId) {
94
- this.onStopPropagation(evt);
95
- this._group.childrenGroups = this._group.childrenGroups.filter(group => group.id !== groupId);
96
- forceUpdate(this);
97
- this.ezFilterGroupChange.emit(this._group);
98
- this.changeHandler();
99
- }
100
- handleFilterItemRemove(evt, itemId) {
101
- this.onStopPropagation(evt);
102
- this._group.items = this._group.items.filter(item => item.id !== itemId);
103
- forceUpdate(this);
104
- this.ezFilterGroupChange.emit(this._group);
105
- this.changeHandler();
106
- this.canAddExpression = true;
107
- }
108
- isFilledItem(item) {
109
- if (!item.fieldName || !item.operand)
110
- return false;
111
- if (item.operand === 'NULL' || item.operand === 'NOT_NULL') {
112
- return true;
113
- }
114
- else {
115
- return item.paramVariable || (item.userInterface === 'SWITCH') ? true : !!item.value;
116
- }
117
- }
118
- handleFilterItemChange() {
119
- this.ezFilterGroupChange.emit(this._group);
120
- this.canAddExpression = this.group.items.every(this.isFilledItem);
121
- }
122
- handleAddExpression() {
123
- const newItem = {
124
- id: StringUtils.generateUUID(),
125
- entityName: "",
126
- fieldName: "",
127
- description: "",
128
- label: "Valor",
129
- type: undefined,
130
- expression: undefined,
131
- operand: undefined,
132
- paramVariable: false,
133
- value: undefined,
134
- systemConfig: null,
135
- userConfig: null
136
- };
137
- this._group.items.push(newItem);
138
- forceUpdate(this);
139
- this.ezFilterGroupChange.emit(this.group);
140
- this.changeHandler();
141
- this.canAddExpression = false;
142
- }
143
- handleAddGroup() {
144
- var _a;
145
- const newGroup = {
146
- id: StringUtils.generateUUID(),
147
- items: [
148
- {
149
- id: StringUtils.generateUUID(),
150
- entityName: "",
151
- fieldName: "",
152
- description: "",
153
- label: "Valor",
154
- type: undefined,
155
- expression: undefined,
156
- operand: undefined,
157
- paramVariable: false,
158
- value: undefined,
159
- systemConfig: null,
160
- userConfig: null
161
- }
162
- ],
163
- childrenGroups: [],
164
- operand: FilterGroupCondition.AND
165
- };
166
- this._group.childrenGroups = (_a = this._group.childrenGroups) !== null && _a !== void 0 ? _a : [];
167
- this._group.childrenGroups.push(newGroup);
168
- forceUpdate(this);
169
- this.ezFilterGroupChange.emit(this.group);
170
- this.changeHandler();
171
- }
172
- buildGroupStyle() {
173
- return {
174
- height: `${this.getDashedHeight()}px`,
175
- marginTop: `${-(this.getDashedHeight()) + 20}px`,
176
- };
177
- }
178
- handleConditionOperatorChange(newOperator) {
179
- this._conditionOperator = newOperator;
180
- this._group.operand = FilterGroupCondition[newOperator];
181
- this.ezFilterGroupChange.emit(this._group);
182
- }
183
- confirmRemoveGroup(evt) {
184
- this.onStopPropagation(evt);
185
- ApplicationUtils.confirm(this.getMessage("snkPersonalizedFilter.confirmGroup.title"), this.getMessage("snkPersonalizedFilter.confirmGroup.description"))
186
- .then((canRemove) => {
187
- if (canRemove) {
188
- this.ezFilterGroupRemove.emit(this._group);
189
- }
190
- });
191
- }
192
- getTooltipMessageForOperator() {
193
- const groupLevel = this.getDataGroupLevel();
194
- if (groupLevel === this.FIRST_LEVEL && this._group.items.length === 1) {
195
- return this.getMessage("snkPersonalizedFilter.operador.firstLevel");
196
- }
197
- if (this._conditionOperator === FilterGroupCondition.AND) {
198
- return this.getMessage("snkPersonalizedFilter.operador.and");
199
- }
200
- else if (this._conditionOperator === FilterGroupCondition.OR) {
201
- return this.getMessage("snkPersonalizedFilter.operador.or");
202
- }
203
- }
204
- getDataGroupLevel() {
205
- return this._element.getAttribute('data-group-level');
206
- }
207
- canAddGroup() {
208
- const dataGroupLevel = Number(this.getDataGroupLevel() || this.FIRST_LEVEL);
209
- return dataGroupLevel < this.LIMIT_GROUP_LEVEL;
210
- }
211
- isFirstLevel() {
212
- return Boolean(this.getDataGroupLevel() === this.FIRST_LEVEL);
213
- }
214
- onStopPropagation(evt) {
215
- evt.preventDefault();
216
- evt.stopPropagation();
217
- }
218
- getMessageAddTooltip() {
219
- if (this.isFirstLevel()) {
220
- const allValidItems = this.group.items.every(item => {
221
- if (!item.fieldName || !item.operand)
222
- return false;
223
- return item.paramVariable || !!item.value;
224
- });
225
- return allValidItems ? this.getMessage("snkPersonalizedFilter.info.labelAddNewExpression") : this.getMessage("snkPersonalizedFilter.info.labelDisabledAddExpressionButton");
226
- }
227
- else {
228
- return this.canAddExpression ? this.getMessage("snkPersonalizedFilter.info.labelAddNewExpression") : this.getMessage("snkPersonalizedFilter.info.labelDisabledAddExpressionButton");
229
- }
230
- }
231
- canChangeGroupCondition() {
232
- const membersCount = this._group.items.length + this._group.childrenGroups.length;
233
- return membersCount > 1;
234
- }
235
- render() {
236
- const canAddGroup = this.canAddGroup();
237
- 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()))));
238
- }
239
- get _element() { return getElement(this); }
240
- static get watchers() { return {
241
- "group": ["watchGroup"]
242
- }; }
243
- };
244
- SnkExpressionGroup.style = snkExpressionGroupCss;
245
-
246
- export { SnkExpressionGroup as snk_expression_group };
@@ -1 +0,0 @@
1
- import{F as e}from"./p-584d7212.js";import{R as t}from"./p-f034254e.js";function i(t,r){if(null==t)return t;if(t instanceof Date)return t.toISOString();if("object"==typeof t){if(t instanceof Array)return t.map((t=>i(e.MULTI_LIST===r?function(e,t){var i={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(i[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(r=Object.getOwnPropertySymbols(e);n<r.length;n++)t.indexOf(r[n])<0&&Object.prototype.propertyIsEnumerable.call(e,r[n])&&(i[r[n]]=e[r[n]])}return i}(t,["label"]):t)));{const e=Object.assign({},t);return Object.keys(t).forEach((n=>{t[n]?e[n]=i(t[n],r):delete e[n]})),e}}return t}class r extends t{normalize(e){return e.map((e=>{const{id:t,value:r,fixed:n,visible:s,type:l,groupedItems:o}=e,u={id:t};if(r&&(u.value=i(r,l)),n&&(u.fixed=n),o){if(0===o.length)return;o.filter((e=>e.visible)).length>0&&(u.visible=!0),u.groupedItems=this.normalize(o)}else s&&(u.visible=!0);return u})).filter((e=>null!=e))}saveConfig(e,t,i){return this.saveResource(this.normalize(e),this.getPath(t,i))}getConfig(e,t){return new Promise(((i,r)=>{this.loadResource(this.getPath(e,t)).then((e=>{let t;if(e){const i=JSON.parse(e);t=this.buildFieldList(i.items)}i(t||[])})).catch((e=>{r(e)}))}))}saveEntityListConfig(e,t,r){return new Promise(((n,s)=>{this.getConfig(t,r).then((l=>{const o=l.map((({id:e,value:t,fixed:r,visible:n,type:s,groupedItems:l})=>Object.assign(Object.assign(Object.assign(Object.assign({id:e},t&&{value:i(t,s)}),r&&{fixed:r}),n&&{visible:!0}),{groupedItems:l}))),u=o.findIndex((({id:t})=>t===e.id)),f={id:e.id,value:i(e.value,e.type),fixed:e.fixed,visible:!0};u>-1?o[u]=f:o.push(f),this.saveResource(o,this.getPath(t,r)).then((e=>{n(e)})).catch((e=>{s(e)}))})).catch((e=>{s(e)}))}))}buildFieldList(t){return t.map((t=>{var i,r;if(t.type===e.MULTI_LIST){const e=t.value;t.value=null!==(r=null!==(i=null==e?void 0:e.elements)&&void 0!==i?i:null==e?void 0:e.members)&&void 0!==r?r:e}return t}))}getPath(e,t){return t?`cfg://filter/FilterBarState:${e}.${t}`:`cfg://filter/FilterBarState:${e}`}}export{r as F}
@@ -1 +0,0 @@
1
- var a;!function(a){a.AND="AND",a.OR="OR"}(a||(a={}));export{a as F}
@@ -1 +0,0 @@
1
- import{r as t,h as i,H as e,g as r}from"./p-d2d301a6.js";import{DataType as s,ObjectUtils as a,ElementIDUtils as l,ErrorException as n,ApplicationContext as o}from"@sankhyalabs/core";import{EzScrollDirection as d}from"@sankhyalabs/ezui/dist/collection/components/ez-scroller/EzScrollDirection";import{C as c}from"./p-d4adf773.js";import{toString as h}from"@sankhyalabs/core/dist/dataunit/metadata/DataType";import{F as f}from"./p-584d7212.js";import{F as u,P as p}from"./p-7d68a43a.js";import{ApplicationUtils as m}from"@sankhyalabs/ezui/dist/collection/utils";import"./p-982107dc.js";import"./p-4f550a1a.js";import"./p-112455b1.js";import"./p-f034254e.js";import"./p-432a73a8.js";import"./p-63bff2a8.js";class b{constructor({filterConfig:t,configName:i,onComplete:e,getMessage:r,onAddPersonalizedFilter:s,onEditPersonalizedFilter:a}){this._filterConfig=t,this._configName=i,this._onComplete=e,this._getMessage=r,this._addPersonalizedFilterFn=s,this._editPersonalizedFilterFn=a}applyFilters(t){this._onComplete(t),this._closeModal()}buildFilterModal(){const t=document.createElement("snk-filter-modal");return t.className="ez-size-height--full",t.filters=this._filterConfig,t.configName=this._configName,t.getMessage=this._getMessage.bind(this),t.applyFilters=this.applyFilters.bind(this),t.closeModal=()=>this._closeModal(),t.addPersonalizedFilter=()=>this._addPersonalizedFilterFn(),t.editPersonalizedFilter=t=>this._editPersonalizedFilterFn(t),t}async showModal(){const t={content:this.buildFilterModal(),position:"left",heightMode:"full",closeOutsideClick:!1,useScrimLight:!0};this._closeModal=await m.showModal(t)}async closeModal(){this._closeModal()}}const k=class{constructor(i){t(this,i),this._updateSequence=[],this._loadingPending=!1,this._configUpdated=!1,this._pendingVariables=!1,this._customfiltersToBeUpdated=[],this._calculateSortIndex=t=>{let i=t.hardFixed?1e6:0;return t.hardFixed||(i+=t.fixed?1e5:0,i+=null==t.value?0:1e4,i+=this._updateSequence.lastIndexOf(t.id)+1),i},this._filtersComparator=(t,i)=>this._calculateSortIndex(i)-this._calculateSortIndex(t),this.dataUnit=void 0,this.configName=void 0,this.filterConfig=void 0,this.messagesBuilder=void 0,this.allowDefault=void 0,this.scrollerLocked=!1,this.showPersonalizedFilter=!1,this.personalizedFilterId=void 0}observeFilterConfig(t,i){if(null!=i&&null==t)this._loadingPending=!0,this._configUpdated=!0;else{const e=new Map(i?i.map((t=>[t.id,t])):void 0);0===e.size&&t.length>0?(this._loadingPending=!0,this._configUpdated=!1):t.forEach((t=>{const i=e.get(t.id);if(null!=i){if(this._configUpdated=this._configUpdated||a.objectToString(i)!=a.objectToString(t),this._loadingPending=this._loadingPending||a.objectToString(i.value)!==a.objectToString(t.value),!this._loadingPending){const e=a.objectToString(i.groupedItems)!=a.objectToString(t.groupedItems);this._configUpdated=this._configUpdated||e,this._loadingPending=this._loadingPending||e}}else this._configUpdated=!0,this._loadingPending=this._loadingPending||null!=t.value}))}this.processAfterUpdateConfig()}async reload(){this.loadConfigFromStorage()}componentDidLoad(){this._element&&l.addIDInfo(this._element,null,{dataUnit:this.dataUnit})}processPendingFilter(){if(this._pendingVariables){const t=this._element.querySelector("#filter-PERSONALIZED_FILTER_GROUP");t&&t.showUp(!0).then((()=>{this.processAfterUpdateConfig()}))}else this.processAfterUpdateConfig()}getPersonalizedFilterItem(){return this.filterConfig.find((t=>t.type===f.PERSONALIZED))}async processAfterUpdateConfig(){if(this._loadingPending){const t=this.getPersonalizedFilterItem();if(this._pendingVariables=!p.validateVariableValues(t),this._pendingVariables)return;this._loadingPending=!1,this.dataUnit.loadData()}this._configUpdated&&(this._configUpdated=!1,c.saveFilterBarConfig(this.filterConfig,this.configName))}getMessage(t,i,e){var r;return(null===(r=this.messagesBuilder)||void 0===r?void 0:r.getMessage(t,i))||e}getFilter(t){var i;const e=[];return null===(i=this.filterConfig)||void 0===i||i.filter((t=>this.isActiveFilter(t))).forEach((t=>{const i=(t=>{switch(t.type){case f.DEFAULT_FILTER:return function(t){return{name:t.id,expression:t.props.expression,params:[]}}(t);case f.BINARY_SELECT:return function(t){const{id:i,value:e,props:r}=t;return{name:i,expression:r.options.find((t=>t.name===e)).expression,params:[]}}(t);case f.MULTI_SELECT:return function(t){const{id:i,value:e,props:r}=t;return{name:i,expression:r.expression,params:[{name:i,dataType:s.TEXT,value:e}]}}(t);case f.MULTI_LIST:return function(t){const{id:i,value:e,props:r}=t,a=(null!==(o=null!==(n=null==(l=e)?void 0:l.elements)&&void 0!==n?n:null==l?void 0:l.members)&&void 0!==o?o:l).filter((t=>null==t?void 0:t.check)).map((({id:t})=>Number.isNaN(+t)?String(t):Number(t)));var l,n,o;if(a.length>0)return{name:i,expression:r.expression,params:[{name:i,dataType:s.TEXT,value:JSON.stringify(a)}]}}(t);case f.PERIOD:return function(t){const{id:i,value:e,props:r}=t;let{end:a,start:l}=e;"string"==typeof a&&(a=new Date(a)),"string"==typeof l&&(l=new Date(l));const n=[];let o;return a&&l?(o=r.expression.fullfill,n.push({name:`${i}.START`,dataType:s.DATE,value:h(s.DATE,l)},{name:`${i}.END`,dataType:s.DATE,value:h(s.DATE,a)})):l?(o=r.expression.onlystart,n.push({name:i,dataType:s.DATE,value:h(s.DATE,l)})):(o=r.expression.onlyend,n.push({name:i,dataType:s.DATE,value:h(s.DATE,a)})),{name:i,expression:o,params:n}}(t);case f.SEARCH:return function(t){const{id:i,value:e,props:r}=t;return{name:i,expression:r.expression,params:[{name:i,dataType:s.TEXT,value:h(s.TEXT,e.value)}]}}(t);case f.TEXT:return function(t){const{id:i,value:e,props:r}=t;return{name:i,expression:r.expression,params:[{name:i,dataType:s.TEXT,value:h(s.TEXT,e)}]}}(t);case f.NUMBER:return function(t){const{id:i,value:e,props:r}=t;return{name:i,expression:r.expression,params:[{name:i,dataType:s.NUMBER,value:h(s.NUMBER,e)}]}}(t);case f.PERSONALIZED:return function(t){const{id:i,groupedItems:e=[]}=t,r=e.filter((t=>!!t.visible)).map((t=>{var i;const e=t.props.expression,r=((null===(i=t.props.personalizedFilter)||void 0===i?void 0:i.parameters)||[]).map(((i,e)=>{const r=Array.from(t.value||0),a=i.dataType;let l=e>=0&&e<r.length?r[e]:null;return null!=l&&"object"==typeof l&&"value"in l&&(l=l.value),null==l&&a===s.BOOLEAN&&(l=!1),{name:i.name,dataType:a,value:"string"==typeof l?l:h(a,l)}}));return{expression:e,name:t.id,params:r}}));return{name:i,expression:r.map((t=>`(${t.expression})`)).join(` ${u.AND} `),params:r.flatMap((t=>t.params))}}(t);default:return}})(t);i&&e.push(i)})),e}isActiveFilter(t){return t.type===f.DEFAULT_FILTER||this.filterActiveFilter(t)&&(t.groupedItems||null!=t.value)}registryFilterProvider(){this.dataUnit.addFilterProvider(this),this.filterConfig&&this.dataUnit.loadData()}itemFocused(t){this._element.querySelectorAll("snk-filter-item,snk-filter-list").forEach((i=>{i.id===t?"snk-filter-item"===i.tagName.toLowerCase()&&i.getClientRects()[0].x<0&&i.scrollIntoView({behavior:"auto",inline:"nearest"}):i.hideDetail()}))}filterActiveFilter(t){return t.visible||t.removalBlocked}getFilterItems(){const t=[],e=[];this.filterConfig.filter(this.filterActiveFilter).forEach(((r,s)=>{const l=`filter-${(r=a.copy(r)).id}`,n=i("snk-filter-item",{onVisibleChanged:t=>this.scrollerLocked=t.detail,onFilterChange:t=>this.updateFilter(t.detail),onFocusin:()=>this.itemFocused(l),id:l,config:r,class:s>0?"ez-padding-left--medium":"",getMessage:(t,i)=>this.getMessage(t,i),key:r.id});return r.fixed||r.hardFixed?t.push(n):e.push(n),n}));const r=[];return r.push(...t),t.length>0&&e.length>0&&r.push(i("hr",{class:"ez-divider-vertical ez-divider--dark ez-margin-left--medium snk-filter-bar__divider"})),r.push(...e),r}calculateUpdateSequence(t){t&&(this._updateSequence=this._updateSequence.filter((i=>t.id!==i)),this._updateSequence.push(t.id))}normalizeItem(t){const i=Object.assign({},t);return["props","value","hardFixed","fixed"].forEach((t=>{null==i[t]&&delete i[t]})),""===t.value&&delete t.value,i}updateFilter(t){this.filterConfig=this.filterConfig.map((i=>(t=this.normalizeItem(t),i.id===t.id?(a.objectToString(i)!=a.objectToString(t)&&this.calculateUpdateSequence(t),t):i))).sort(((t,i)=>this._filtersComparator(t,i)))}loadPermitions(){this._application.isUserSup().then((t=>this.allowDefault=t))}loadConfigFromStorage(){return new Promise((t=>{c.get().then((i=>{i.loadFilterBarConfig(this.configName).then((i=>{t(),this.filterConfig=i.map((t=>this.normalizeItem(t)))})).catch((t=>{throw new n(this.getMessage("snkFilterBar.failToLoadConfig"),t)}))}))}))}attachDataUnit(){if(null==this.dataUnit){let t=this._element.parentElement;for(;t;)if("SNK-DATA-UNIT"===t.tagName.toUpperCase()){const i=t;this.dataUnit=i.dataUnit,this.dataUnit?this.registryFilterProvider():i.addEventListener("dataUnitReady",(t=>{this.dataUnit=t.detail,this.registryFilterProvider()}));break}t=t.parentElement}else this.registryFilterProvider()}filterChangeListener(t){this.updateFilter(t.detail)}async showFilterModal(){const t={filterConfig:a.copy(this.filterConfig),configName:this.configName,onComplete:t=>{this.filterConfig=t.map(this.normalizeItem).sort(((t,i)=>this._filtersComparator(t,i)))},getMessage:(t,i)=>this.getMessage(t,i),onAddPersonalizedFilter:()=>this.addPersonalizedFilter(),onEditPersonalizedFilter:t=>this.editPersonalizedFilter(t)};this._filterModalFactory=new b(t),await this._filterModalFactory.showModal()}addPersonalizedFilter(){this._filterModalFactory.closeModal(),this.personalizedFilterId=void 0,this.showPersonalizedFilter=!0,window.requestAnimationFrame((()=>{this._elPersonalizedFilter.createPersonalizedFilter()}))}editPersonalizedFilter(t){this._filterModalFactory.closeModal(),this.showPersonalizedFilter=!0,this.personalizedFilterId=t}hidePersonalizedFilter(){this.loadConfigFromStorage().then((()=>{this.personalizedFilterId=void 0,this.showPersonalizedFilter=!1}))}componentWillLoad(){this._application=o.getContextValue("__SNK__APPLICATION__"),this._application&&(this.loadPermitions(),this.loadConfigFromStorage()),this.attachDataUnit()}componentDidRender(){this.processPendingFilter()}render(){if(this.dataUnit&&this.filterConfig&&0!==this.filterConfig.length)return this.showPersonalizedFilter?i("snk-personalized-filter",{class:"filter-bar__personalized-filter",filterId:this.personalizedFilterId,ref:t=>this._elPersonalizedFilter=t,onEzCancel:()=>this.hidePersonalizedFilter(),entityUri:this.dataUnit.name,configName:this.configName}):i(e,null,i("ez-scroller",{class:"snk-filter-bar__scroller",direction:d.HORIZONTAL,activeShadow:!0,locked:this.scrollerLocked},i("section",{class:"snk-filter-bar__filter-item-container"},this.getFilterItems())),i("ez-button",{class:"ez-padding-left--medium",size:"small",label:this.getMessage("snkFilterBar.filters",void 0,"Filtros"),onClick:this.showFilterModal.bind(this)},i("ez-icon",{slot:"leftIcon",iconName:"plus",class:"ez-padding-right--small"})))}get _element(){return r(this)}static get watchers(){return{filterConfig:["observeFilterConfig"]}}};k.style='.sc-snk-filter-bar-h{display:grid;grid-template-columns:minmax(100px, 100%) 1fr 1fr;--snk-personalized-filter--z-index:var(--more-visible, 2);--snk-personalized-filter--background-color:var(--background--xlight, #fff)}.snk-filter__popover-container.sc-snk-filter-bar{display:flex;cursor:auto}.filter-bar__personalized-filter.sc-snk-filter-bar{display:flex;flex-direction:column;position:fixed;top:0;left:0;width:100%;height:100%;overflow:auto;z-index:var(--snk-personalized-filter--z-index);background-color:var(--snk-personalized-filter--background-color)}.snk-filter__popover.sc-snk-filter-bar{display:flex;flex-direction:column;position:absolute;width:fit-content;height:fit-content;min-width:265px;z-index:var(--most-visible, 3);background-color:var(--background--xlight, #fff);border-radius:var(--border--radius-medium, 12px);box-shadow:var(--shadow, 0px 0px 16px 0px #000)}.snk-filter-item__editor-header.sc-snk-filter-bar{flex-grow:1;font-weight:var(--text-weight--medium, 400);color:var(--color--title-primary, #2B3A54)}.snk-filter__popover-rule.sc-snk-filter-bar{border-style:solid;border-color:var(--color--disable-secondary, #F2F5F8);border-radius:1px;border-width:1px;width:100%}.editor__ez-check.sc-snk-filter-bar{--ez-check__label--padding-left:0}.snk-filter-item__editor-header-button.sc-snk-filter-bar{cursor:pointer;background-color:transparent;border:none;padding:3px;outline-color:var(--color--primary)}.snk-filter-bar__divider.sc-snk-filter-bar{margin-bottom:var(--space--small)}.snk-filter-bar__scroller.sc-snk-filter-bar{height:calc(100% + var(--space-extra-small, 3px))}.snk-filter-bar__filter-item-container.sc-snk-filter-bar{display:flex;align-self:center}.snk-filter-bar__scroller.sc-snk-filter-bar .sc-snk-filter-bar:first-child{margin-left:var(--space-extra-small, 3px)}.snk-filter-bar__filter-list-items-container.sc-snk-filter-bar{overflow-y:auto;max-height:360px;margin-top:var(--space--small, 6px)}.snk-filter-bar__filter-list-item.sc-snk-filter-bar{cursor:pointer;border-radius:var(--border--radius-small, 6px);border:none;background-color:transparent}.snk-filter-bar__filter-list-item__label.sc-snk-filter-bar{color:var(--title--primary)}.snk-filter-bar__filter-list-item__label--secondary.sc-snk-filter-bar{color:var(--text--primary)}.snk-filter-bar__filter-list-item__icon.sc-snk-filter-bar{--ez-icon--color:var(--title--primary)}.snk-filter-bar__filter-list-item__icon--secondary.sc-snk-filter-bar{--ez-icon--color:var(--text--secondary)}.snk-filter-bar__filter-list-item.sc-snk-filter-bar:focus-visible{outline:none;background-color:var(--background--medium)}.snk-filter-bar__filter-list-item.sc-snk-filter-bar:hover{background-color:var(--background--medium)}.snk-filter-bar__filter-list-items-container--empty.sc-snk-filter-bar{width:100%;height:100px;display:flex;justify-content:center;align-self:center;align-items:center}.snk-filter-bar__filter-list-items-button--active.sc-snk-filter-bar{position:relative}.snk-filter-bar__filter-list-items-button--active.sc-snk-filter-bar::after{display:flex;position:absolute;content:"";width:8px;height:8px;top:7px;left:17px;background-color:var(--icon--alert--color, #008561);border-radius:50%}.snk-filter-bar__filter-modal-item.sc-snk-filter-bar{--modal-item-border-width:2px;display:flex;flex-direction:row;margin-left:var(--modal-item-border-width);border-radius:var(--border--radius-medium, 12px);background-color:var(--background--medium, #f0f3f7);border:none;width:100%}.snk-filter-bar__filter-modal-item.sc-snk-filter-bar:focus-visible{outline:var(--color--primary) solid var(--modal-item-border-width)}.snk-filter-bar__filter-modal-item__check.sc-snk-filter-bar{width:auto}.snk-filter-bar__filter-modal-item__label.sc-snk-filter-bar{font-weight:var(--text-weight--medium)}.snk-filter-bar__filter-modal-content.sc-snk-filter-bar{display:grid;grid-template-rows:auto auto 1fr auto;width:99%;height:100%}';export{k as snk_filter_bar}
@@ -1 +0,0 @@
1
- import{DataType as t,NumberUtils as i,DateUtils as r,UserInterface as e}from"@sankhyalabs/core";import"./p-63bff2a8.js";import{F as n}from"./p-584d7212.js";var a,s,l,o;!function(t){t.SYSTEM_CONFIG="S",t.USER_CONFIG="E"}(a||(a={})),function(t){t.DATE="D",t.HORA="H",t.TEXT="S",t.INTEGER="I",t.DECIMAL="F",t.NUMBER="NUMBER"}(s||(s={})),function(t){t.AND="AND",t.OR="OR",t.IN="IN",t.DIFFERENT="<>",t.LIKE="LIKE",t.START_WITH="LIKE_START",t.FINISHED_WITH="LIKE_END",t.NULL="NULL",t.NOT_NULL="NOT NULL",t.EQUAL="=",t.LARGER=">",t.LARGER_EQUAL=">=",t.SMALLER="<",t.SMALLER_EQUAL="<="}(l||(l={})),function(t){t.FIELD="Campo",t.INSTANCE="Instancia"}(o||(o={}));class u{static buildFilterExpression(t,i=!1){if(null==t)return;if(!this.validateExpressionItem(t)&&i)return"";let r=this.buildVariableParameterValue(t),e=t.expression||"",n="'";switch(t.paramVariable&&(n=""),t.operand){case"IN":e+=` ${l[t.operand]} (${r})`;break;case"NULL":case"NOT_NULL":e+=` IS ${l[t.operand]}`;break;case"LIKE":e+=` LIKE '%${r}%'`;break;case"START_WITH":e+=` LIKE '${r}%'`;break;case"FINISHED_WITH":e+=` LIKE '%${r}'`;break;default:r="string"==typeof r?`${n}${r}${n}`:r,e+=` ${l[t.operand]} ${r}`}return e}static buildVariableParameterValue(r){var n;if(null!=r){if(r.paramVariable)return this.proccessVarialbeParameter(r);if(r.operand!==l.NULL&&"NOT_NULL"!==r.operand){let a=r.value;const s=r.type;return e.SEARCH!==r.userInterface&&t.OBJECT!=s||(a=null!==(n=null==a?void 0:a.value)&&void 0!==n?n:a),t.NUMBER==s&&null!=a?(a=i.stringToNumber(a),this.checkIsValidNumber(a)):t.DATE==s?a=this.convertDataValue(a):t.BOOLEAN==s&&(a=a?"S":"N"),a}return r.operand}}static checkIsValidNumber(t){if(isNaN(t))throw new Error("O valor informado não é um número válido.")}static proccessVarialbeParameter(t){if(null!=t.systemConfig){const i=t.systemConfig;return`?:{entidade=${i.entity||""};campo=${i.fieldName||""}}`}if(null!=t.userConfig){const i=t.userConfig;return`?:{desc=${i.description||""};tipo=${i.type||""}}`}return`?:{entidade=${t.entityName||""};campo=${t.fieldName||""}}`}static convertDataValue(t){return"string"==typeof t&&(t=new Date(t)),r.formatDate(t)}static buildGroupExpression(t,i=!1){var r,e;if(!(null===(r=null==t?void 0:t.items)||void 0===r?void 0:r.length))return"";const n=t.items.map((t=>this.buildFilterExpression(t,i))).join(` ${t.operand} `);if((null===(e=null==t?void 0:t.childrenGroups)||void 0===e?void 0:e.length)>0){const i=t.childrenGroups.map((t=>this.buildGroupExpression(t))).join(` ${t.operand} `);return`(${n} ${t.operand} (${i}))`}return`(${n})`}static validateFields(t){const i=this.buildPlainExpressionItems(t);for(const t of i)if(!this.validateExpressionItem(t))return!1;return!0}static buildPlainExpressionItems(t){const{items:i=[],childrenGroups:r=[]}=t||{},e=t=>t.reduce(((t,i)=>{var r;return i.items&&(t=t.concat(i.items)),(null===(r=i.childrenGroups)||void 0===r?void 0:r.length)&&(t=t.concat(e(i.childrenGroups))),t}),[]);return i.concat(e(r))}static validateExpressionItem(t){return Object.entries({fieldName:t=>!!t,value:(t,i)=>!!i||null!=t,operand:t=>!!t}).every((i=>{const[r,e]=i,n=t.paramVariable||"SWITCH"===t.userInterface||["NULL","NOT_NULL"].includes(t.operand);return e(t[r],n)}))}static getNormalizedValue(i,r){return i.reduce(((i,r,e)=>(r.dataType!==t.BOOLEAN||null!=i&&null!=i[e]||((i=i&&!Array.isArray(i)?[i]:i||[])[e]=!1),i)),r)}static validateVariableValues(i,r){if(!i)return!0;let e=r||i.value,a=!0;if(i.type===n.PERSONALIZED){const r=(i.groupedItems||[]).filter((t=>t.visible)).filter((t=>{var i,r,e;return!!(null===(e=null===(r=null===(i=t.props)||void 0===i?void 0:i.personalizedFilter)||void 0===r?void 0:r.parameters)||void 0===e?void 0:e.length)})),n=r.flatMap((t=>{var i;return null===(i=t.props.personalizedFilter)||void 0===i?void 0:i.parameters})),s=r.flatMap((i=>!(i.props.personalizedFilter.parameters[0].dataType===t.BOOLEAN)&&i.value));e=this.getNormalizedValue(n,e),a=n.length===s.length&&s.every((t=>null!=t))}return a}static buildVariableParameters(t){var i,r,e,n;const a=this.buildPlainExpressionItems(t),s=[];for(const t of a)t.paramVariable&&s.push({entityName:t.entityName,fieldName:t.fieldName,dataType:t.type,description:t.description,userInterface:t.userInterface,label:t.fieldLabel,searchContext:{entity:null===(r=null===(i=t.props)||void 0===i?void 0:i.find((t=>"ENTITYNAME"==t.name)))||void 0===r?void 0:r.value,entityDescription:null===(n=null===(e=t.props)||void 0===e?void 0:e.find((t=>"DESCRIPTIONENTITY"==t.name)))||void 0===n?void 0:n.value,searchOptions:{showInactives:!1}}});return s}}export{l as F,u as P,a,o as b,s as c}
@@ -1 +0,0 @@
1
- export{S as snk_data_unit}from"./p-652b9081.js";import"./p-d2d301a6.js";import"@sankhyalabs/core";import"@sankhyalabs/ezui/dist/collection/utils";import"./p-4f3df9b6.js";
@@ -1 +0,0 @@
1
- import{r as i,c as e,h as s,F as t,H as l}from"./p-d2d301a6.js";import{StringUtils as n,ObjectUtils as r,ApplicationContext as a}from"@sankhyalabs/core";import{P as o}from"./p-7d68a43a.js";import{P as h,C as d}from"./p-d4adf773.js";import{ApplicationUtils as p}from"@sankhyalabs/ezui/dist/collection/utils";import{F as c}from"./p-63bff2a8.js";import{s as z}from"./p-6dc031de.js";import"./p-584d7212.js";import"./p-982107dc.js";import"./p-4f550a1a.js";import"./p-112455b1.js";import"./p-f034254e.js";import"./p-432a73a8.js";const f=class{constructor(s){i(this,s),this.ezCancel=e(this,"ezCancel",7),this.ezSave=e(this,"ezSave",7),this._personalizedFilterFetcher=new h,this._filterMetadataStorage=new Map,this._dataSourceFetcher={fetchData:async i=>{let e=null==i?void 0:i.uri;if(n.isEmpty(e)&&(e=this.entityUri),!this._filterMetadataStorage.has(e)){const i=await this._personalizedFilterFetcher.loadFields(e);this._filterMetadataStorage.set(e,i)}return this._filterMetadataStorage.get(e)}},this._filterAssistentMode=!0,this._filterAssistent=void 0,this.messagesBuilder=void 0,this.entityUri=void 0,this.filterId=void 0,this.configName=void 0}async createPersonalizedFilter(){const i={name:"",active:!0,expression:"",parameters:[],assistent:{id:n.generateUUID(),items:[{id:n.generateUUID(),entityName:"",fieldName:"",description:"",fieldLabel:"Valor",type:void 0,expression:void 0,operand:void 0,paramVariable:!1,value:void 0,systemConfig:null,userConfig:null}],childrenGroups:[],operand:c.AND}};this._originalFilterAssistent=r.copy(i),this._filterAssistent=r.copy(i)}loadFilter(i,e){null!=i&&e!=i&&d.get().then((()=>{d.loadPersonalizedFilter(i,this.configName).then((i=>{const e=this.addLabelToItems(i);this._filterAssistent=e,this._originalFilterAssistent=r.copy(e),this._filterAssistentMode=this._filterAssistent.hasOwnProperty("assistent")&&null!=this._filterAssistent.assistent}))}))}componentWillLoad(){var i;null==z.get(`filterFieldsDataSource.${this.entityUri}`)&&z.set(`filterFieldsDataSource.${this.entityUri}`,this._dataSourceFetcher),this.messagesBuilder||(this._application=a.getContextValue("__SNK__APPLICATION__"),this.messagesBuilder=null===(i=this._application)||void 0===i?void 0:i.messagesBuilder),this.loadFilter(this.filterId,void 0)}getMessage(i,e){return this._application.messagesBuilder.getMessage(i,e)}saveFilter(){d.savePersonalizedFilter(this._filterAssistent,this.configName).then((i=>{this._elButtonSave.enabled=!1,p.info(this.getMessage(`snkPersonalizedFilter.${this._filterAssistent.id?"confirmEdit":"confirmSave"}.title`),{iconName:"check"});const e=Object.assign(Object.assign({},i),this._filterAssistent);e.parameters=o.buildVariableParameters(this._filterAssistent.assistent),this._originalFilterAssistent=r.copy(e),this._filterAssistent=r.copy(e)}))}removeFilter(){d.removePersonalizedFilter(this._filterAssistent,this.configName)}async handleFilterGroupChange(){const i=await this._mainExpressionGroup.getExpressionGroup();this._filterAssistent=Object.assign(Object.assign({},this._filterAssistent),{assistent:i}),this._filterAssistent.parameters=o.buildVariableParameters(this._filterAssistent.assistent),this._elTextAreaExpression.value=o.buildGroupExpression(this._filterAssistent.assistent,!0),this._elButtonSave.enabled=!this.hasChangesToSave()}hasChangesToSave(){return JSON.stringify(this._filterAssistent)===JSON.stringify(this._originalFilterAssistent)}handleSave(){const{assistent:i,expression:e}=this._filterAssistent;if(!o.validateFields(i)||!this._filterAssistent.name)return this._application.error(this.getMessage("snkPersonalizedFilter.error.title"),this.getMessage("snkPersonalizedFilter.error.description"));const s=i?o.buildGroupExpression(i):e;this._filterAssistent.expression=s,this.ezSave.emit(s),this.saveFilter()}handleCancel(){if(this.hasChangesToSave())return this.ezCancel.emit();p.confirm(this.getMessage("snkPersonalizedFilter.confirmCancel.title"),this.getMessage("snkPersonalizedFilter.confirmCancel.description")).then((i=>{var e;i&&(this._filterAssistent=r.copy(null!==(e=this._originalFilterAssistent)&&void 0!==e?e:{}),this.ezCancel.emit(),this._elButtonSave.enabled=!1)}))}handleTitleChange(i){this._filterAssistent=Object.assign(Object.assign({},this._filterAssistent),{name:i}),this._elButtonSave.enabled=!this.hasChangesToSave()}addLabelToItems(i){return i.assistent&&i.assistent.items&&i.assistent.items.length>0&&i.assistent.items.forEach((e=>{if(null==e.fieldLabel){const s=(i.parameters||[]).find((i=>i.fieldName===e.fieldName));s&&(e.fieldLabel=s.label)}})),i}handleExpressionChange(i){this._filterAssistent=Object.assign(Object.assign({},this._filterAssistent),{expression:i}),this._elButtonSave.enabled=!this.hasChangesToSave()}getWarningMessageComponent(){var i;if(!n.isEmpty(null===(i=this._filterAssistent)||void 0===i?void 0:i.warningMessage))return s("div",{class:"ez-flex"},s("ez-alert",{alertType:"warn"},this._filterAssistent.warningMessage))}buildContainerPersonalizedFilter(){var i,e,l;return this._filterAssistentMode?s(t,null,s("div",{class:"ez-padding-top--small snk-personalized-filter__group"},s("snk-expression-group",{ref:i=>this._mainExpressionGroup=i,group:null===(i=this._filterAssistent)||void 0===i?void 0:i.assistent,messagesBuilder:this.messagesBuilder,onEzFilterGroupChange:this.handleFilterGroupChange.bind(this),filterId:this.filterId,entityURI:this.entityUri})),s("div",null,s("div",{class:"snk-personalized-filter__expression-input--line"}),s("ez-collapsible-box",{label:this.getMessage("snkPersonalizedFilter.info.titleCollapsible"),headerSize:"medium",value:!0},s("div",{class:"ez-box"},s("div",{class:"ez-box__container"},s("ez-text-area",{ref:i=>this._elTextAreaExpression=i,enabled:!1,label:this.getMessage("snkPersonalizedFilter.info.labelExpression"),value:null===(e=this._filterAssistent)||void 0===e?void 0:e.expression})))))):s(t,null,s("span",{class:"ez-text ez-text--small ez-text--bold ez-padding-bottom--medium"},this.getMessage("snkPersonalizedFilter.info.applyExpression")),s("ez-text-area",{label:this.getMessage("snkPersonalizedFilter.info.labelExpression"),value:null===(l=this._filterAssistent)||void 0===l?void 0:l.expression,onEzChange:i=>this.handleExpressionChange(i.detail)}),this.getWarningMessageComponent())}render(){var i,e;if((null===(i=this._filterAssistent)||void 0===i?void 0:i.assistent)||!this._filterAssistentMode)return s(l,null,s("div",{class:"snk-personalized-filter"},s("div",null,s("snk-simple-bar",{label:this.getMessage(this.filterId?"snkPersonalizedFilter.info.titleEdit":"snkPersonalizedFilter.info.titleAdd"),onExit:()=>this.handleCancel()},s("div",{class:"snk-personalized-filter__header-actions",slot:"rightSlot"},s("ez-button",{size:"small",label:this.getMessage("snkPersonalizedFilter.info.labelCancel"),onClick:()=>this.handleCancel()}),s("ez-button",{size:"small",ref:i=>this._elButtonSave=i,enabled:!1,class:"ez-button--primary",label:this.getMessage("snkPersonalizedFilter.info.labelSave"),onClick:this.handleSave.bind(this)})))),s("div",{class:"ez-box ez-margin-bottom--medium ez-box__main"},s("div",{class:"ez-box__container"},s("div",{class:"ez-flex ez-flex--column ez-size-width--full"},s("div",{class:"ez-flex"},s("ez-text-input",{class:"ez-padding-right--medium",label:this.getMessage("snkPersonalizedFilter.info.labelNameFilter"),value:null===(e=this._filterAssistent)||void 0===e?void 0:e.name,onEzChange:i=>this.handleTitleChange(i.detail)})),this.buildContainerPersonalizedFilter())))))}static get watchers(){return{filterId:["loadFilter"]}}};f.style=".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%}";export{f as snk_personalized_filter}
@@ -1 +0,0 @@
1
- import{r as t,c as s,h as i,g as e}from"./p-d2d301a6.js";import{DataUnit as r,StringUtils as a,SortMode as n,DataType as o,ChangeOperation as h,ObjectUtils as d,ApplicationContext as l,UserInterface as u}from"@sankhyalabs/core";import{c as m,S as c}from"./p-4a78e118.js";import{T as p}from"./p-a2493d11.js";import"./p-4f550a1a.js";import"./p-d97eb781.js";import{P as v}from"./p-5534e08c.js";import{T as g}from"./p-c2beb95c.js";import{DISTINCT_FILTER_NAME_PREFIX as b}from"@sankhyalabs/ezui/dist/collection/utils/constants";import{S as f}from"./p-fa9d3f73.js";import"./p-6dc031de.js";import"./p-112455b1.js";class k{constructor(t,s){this.records=s||[],this.metadata=t,this._dataUnit=new r("InMemoryDataUnit"),this._dataUnit.metadataLoader=()=>this.metadaLoader(),this._dataUnit.dataLoader=(t,s)=>this.dataLoader(t,s),this._dataUnit.saveLoader=(t,s)=>this.saveLoader(t,s),this._dataUnit.removeLoader=(t,s)=>this.removeLoader(t,s),this.dataUnit.loadMetadata().then((()=>this.dataUnit.loadData()))}get dataUnit(){return this._dataUnit}get records(){return this._records}set records(t){this._records=null==t?void 0:t.map((t=>(t.__record__id__||(t.__record__id__=this.generateUniqueId()),t))),this._dataUnit&&(this._dataUnit.records=[...this._records])}get metadata(){return this._metadata}set metadata(t){this._metadata=t,this._dataUnit&&(this._dataUnit.metadata=this._metadata)}generateUniqueId(){return a.generateUUID()}metadaLoader(){return Promise.resolve(this._metadata)}dataLoader(t,s){const i=this.getColumnFilters(t);let e=this.applyFilters(i);return s.sort&&s.sort.forEach((t=>{e=e.sort(((s,i)=>{const e=s[t.field],r=i[t.field];return this.getSortFn(t.dataType)(e,r)*(t.mode==n.ASC?1:-1)}))})),Promise.resolve({records:e})}applyFilters(t){let s=[...this._records];return t.forEach((t=>{s=s.filter((s=>{var i;return t.values.includes(null===(i=s[t.column])||void 0===i?void 0:i.toString())}))})),s}getColumnFilters(t){var s,i;const e=null!==(i=(null!==(s=t.getFilters())&&void 0!==s?s:[]).filter((t=>{var s;return null===(s=t.name)||void 0===s?void 0:s.includes(b)})))&&void 0!==i?i:[];return e.map((t=>{var s,i;return{column:null!==(i=null===(s=t.name)||void 0===s?void 0:s.replace(b,""))&&void 0!==i?i:"",values:t.params.map((t=>t.value))}}))}getSortFn(t){switch(t){case o.NUMBER:return this.sortNumber;case o.DATE:return this.sortDate;case o.OBJECT:return this.sortObject;default:return a.compare}}sortObject(t,s){return a.compare(t.label,s.label)}sortNumber(t,s){return t-s}sortDate(t,s){let i=t.getTime(),e=s.getTime();return i===e?0:i<e?-1:1}saveLoader(t,s){return new Promise((t=>{let i=[];s.forEach((t=>{let{record:s,updatingFields:e,operation:r}=t,a=!1;r!==h.INSERT&&r!==h.COPY||(s.__old__id__=s.__record__id__,s.__record__id__=this.generateUniqueId(),a=!0);const n=Object.assign(Object.assign({},s),e);if(a)this.records.push(n);else{const t=this.records.findIndex((t=>t.__record__id__==n.__record__id__));this.records[t]=n}i.push(n)})),t(i)}))}removeLoader(t,s){return new Promise((t=>{this._records=this._records.filter((t=>!s.includes(t.__record__id__))),t(s)}))}}const S=class{constructor(i){t(this,i),this.dataStateChange=s(this,"dataStateChange",3),this.dataUnitReady=s(this,"dataUnitReady",3),this.actionClick=s(this,"actionClick",7),this.REGULAR_DEFAULT_BTNS=["INSERT","REFRESH","PREVIOUS","NEXT","DIVIDER"],this.REGULAR_SELECTED_BTNS=["INSERT","REFRESH","PREVIOUS","NEXT","DIVIDER","CLONE","REMOVE","DIVIDER"],this._multiSelectionListDataSource=new f,this._taskbarProcessor=new g({"snkSimpleCrudTaskbar.form_regular":this.resolveInMemoryBtns(this.REGULAR_DEFAULT_BTNS).concat(p.GRID_MODE),"snkSimpleCrudTaskbar.grid_regular":this.resolveInMemoryBtns(this.REGULAR_DEFAULT_BTNS).concat(p.FORM_MODE),"snkSimpleCrudTaskbar.form_selected":this.resolveInMemoryBtns(this.REGULAR_SELECTED_BTNS).concat(p.GRID_MODE),"snkSimpleCrudTaskbar.grid_selected":this.resolveInMemoryBtns(this.REGULAR_SELECTED_BTNS).concat(p.FORM_MODE),"snkSimpleCrudTaskbar.finish_edition":["CANCEL","SAVE"]}),this._currentViewMode=m.GRID,this._config=void 0,this.dataState=void 0,this.dataUnit=void 0,this.mode=c.SERVER,this.gridConfig=void 0,this.formConfig=void 0,this.multipleSelection=void 0,this.useCancelConfirm=!0,this.taskbarManager=void 0,this.messagesBuilder=void 0}resolveInMemoryBtns(t){const s=[...t];return this.mode===c.IN_MEMORY&&s.splice(1,1),s}async goToView(t){this._currentViewMode=t,this._viewStack&&this._viewStack.show(t)}actionClickListener(t){const s=t.detail;s===p.GRID_MODE?this.goToView(m.GRID):s===p.FORM_MODE&&this.goToView(m.FORM),t.stopPropagation()}onModeChange(){this.mode==c.IN_MEMORY&&this.initInMemoryDataUnit()}observeDataState(t,s){d.objectToString(s)!=d.objectToString(t)&&this.dataStateChange.emit(t)}componentWillRender(){this._taskbarProcessor.process(this.getTaskBarId(),this.taskbarManager,this.dataState,this.getTaskBarDisabledButtons())}componentWillLoad(){this.processMetadata(),this.onModeChange(),this.configDatasource()}configDatasource(){const t=l.getContextValue("__SNK__APPLICATION__");this._multiSelectionListDataSource.setApplication(t),this._multiSelectionListDataSource.setDataUnit(this.dataUnit)}getTaskBarId(){var t,s,i;return(null===(t=this.dataState)||void 0===t?void 0:t.isDirty)?"snkSimpleCrudTaskbar.finish_edition":(null===(s=this.dataState)||void 0===s?void 0:s.selectionInfo)&&!this.dataState.selectionInfo.isAllRecords()&&(null===(i=this.dataState.selectionInfo.records)||void 0===i?void 0:i.length)>0?this._currentViewMode===m.GRID?"snkSimpleCrudTaskbar.grid_selected":"snkSimpleCrudTaskbar.form_selected":this._currentViewMode===m.GRID?"snkSimpleCrudTaskbar.grid_regular":"snkSimpleCrudTaskbar.form_regular"}initInMemoryDataUnit(){this._inMemoryLoader=new k(this._metadata),this.dataUnit=this._inMemoryLoader.dataUnit,this.dataUnitReady.emit(this.dataUnit)}setMetadata(t){return this._inMemoryLoader?this._inMemoryLoader.metadata=t:this.dataUnit&&(this.dataUnit.metadata=t),Promise.resolve()}setRecords(t){return this._inMemoryLoader?this._inMemoryLoader.records=t:this.dataUnit&&(this.dataUnit.records=t),Promise.resolve()}getRecords(){return Promise.resolve(this.dataUnit.records)}processMetadata(){const t=this._element.querySelectorAll("snk-field-metadata"),s=[],i={fields:[],emptyConfig:!1};t.forEach((t=>{const e={name:t.getAttribute("name")||t.getAttribute("label"),label:t.getAttribute("label"),dataType:o[t.getAttribute("dataType")]||o.TEXT,userInterface:u[t.getAttribute("userInterface")]||u.SHORTTEXT,readOnly:"true"==t.getAttribute("readOnly"),required:"true"==t.getAttribute("required"),tab:t.getAttribute("tab")||void 0,visible:"false"!=t.getAttribute("visible")};i.fields.push({name:e.name,tab:e.tab,visible:e.visible}),s.push(e)})),s.length>0&&(this.formConfig||(this.formConfig=i),this._metadata={name:"SimpleCrud",label:"SimpleCrud",fields:s})}onDataStateChange(t){this.dataState=Object.assign({},t.detail)}getTaskBarDisabledButtons(){var t,s;const i=[];return(null===(t=this.dataState)||void 0===t?void 0:t.hasNext)||i.push(p.NEXT),(null===(s=this.dataState)||void 0===s?void 0:s.hasPrevious)||i.push(p.PREVIOUS),i}render(){var t;return i("snk-data-unit",{class:"simple-crud__container",dataUnit:this.dataUnit,useCancelConfirm:this.useCancelConfirm,onDataStateChange:t=>this.onDataStateChange(t),onInsertionMode:()=>this.goToView(m.FORM),onDataUnitReady:t=>this.dataUnitReady.emit(t.detail),onMessagesBuilderUpdated:t=>this.messagesBuilder=t.detail},i("header",null,i("slot",{name:"snkSimpleCrudHeader"})),i("section",{class:"ez-flex ez-box ez-box--shadow"},i("snk-taskbar",{class:"ez-box ez-box--shadow ez-padding--medium ez-margin-bottom--large",dataUnit:this.dataUnit,primaryButton:(null===(t=this.dataState)||void 0===t?void 0:t.isDirty)?"SAVE":"INSERT","data-element-id":"grid_left",messagesBuilder:this.messagesBuilder,buttons:this._taskbarProcessor.buttons,disabledButtons:this._taskbarProcessor.disabledButtons,customButtons:this._taskbarProcessor.customButtons,slot:"leftButtons",presentationMode:v.SECONDARY}),i("ez-view-stack",{class:"ez-flex ez-flex--column",ref:t=>this._viewStack=t,"data-element-id":"simple-crud"},i("stack-item",null,i("ez-grid",{dataUnit:this.dataUnit,config:this.gridConfig,"no-header":!0,multipleSelection:this.multipleSelection,onEzDoubleClick:()=>this.goToView(m.FORM),columnfilterDataSource:this._multiSelectionListDataSource},i("div",{slot:"footer"},i("slot",{name:"snkSimpleCrudFooter"})))),i("stack-item",null,i("ez-form",{dataUnit:this.dataUnit,config:this.formConfig})))))}get _element(){return e(this)}static get watchers(){return{mode:["onModeChange"],dataState:["observeDataState"]}}};S.style=".sc-snk-simple-crud-h{display:flex;height:100%;width:100%}.simple-crud__container.sc-snk-simple-crud{display:grid;grid-template-rows:auto;row-gap:12px;height:100%;width:100%}ez-grid.sc-snk-simple-crud{--ez-grid__container--shadow:none;min-height:300px}ez-form.sc-snk-simple-crud{min-height:300px}";export{S as snk_simple_crud}