@sankhyalabs/sankhyablocks 5.6.0 → 5.7.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 (136) hide show
  1. package/dist/cjs/{SnkMessageBuilder-e64dce7f.js → SnkMessageBuilder-056d1c24.js} +9 -1
  2. package/dist/cjs/{filter-item-type.enum-3daf58d3.js → filter-item-type.enum-aa823a00.js} +1 -0
  3. package/dist/cjs/filter-type.enum-b14ce507.js +11 -0
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/presentationMode-52ec3bdd.js +7 -0
  6. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  7. package/dist/cjs/snk-application.cjs.entry.js +1 -1
  8. package/dist/cjs/snk-data-exporter.cjs.entry.js +2 -2
  9. package/dist/cjs/{snk-data-unit-85d6565e.js → snk-data-unit-289081c4.js} +1 -1
  10. package/dist/cjs/snk-data-unit.cjs.entry.js +2 -2
  11. package/dist/cjs/snk-detail-view.cjs.entry.js +1 -1
  12. package/dist/cjs/snk-filter-bar.cjs.entry.js +52 -140
  13. package/dist/cjs/snk-filter-binary-select.cjs.entry.js +8 -1
  14. package/dist/cjs/snk-filter-detail.cjs.entry.js +1 -1
  15. package/dist/cjs/snk-filter-item.cjs.entry.js +1 -1
  16. package/dist/cjs/snk-filter-modal-item.cjs.entry.js +66 -0
  17. package/dist/cjs/snk-filter-modal.cjs.entry.js +72 -49
  18. package/dist/cjs/snk-filter-multi-select.cjs.entry.js +3 -1
  19. package/dist/cjs/snk-filter-number.cjs.entry.js +3 -1
  20. package/dist/cjs/snk-filter-period.cjs.entry.js +11 -2
  21. package/dist/cjs/snk-filter-personalized.cjs.entry.js +3 -1
  22. package/dist/cjs/snk-filter-search.cjs.entry.js +3 -1
  23. package/dist/cjs/snk-filter-text.cjs.entry.js +2 -0
  24. package/dist/collection/collection-manifest.json +1 -0
  25. package/dist/collection/components/snk-filter-bar/filter-item/editors/enum/presentationMode.js +5 -0
  26. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-binary-select.js +47 -0
  27. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-multi-select.js +19 -0
  28. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-number.js +19 -0
  29. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-period.js +50 -1
  30. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-personalized.js +19 -0
  31. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-search.js +19 -0
  32. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-text.js +19 -0
  33. package/dist/collection/components/snk-filter-bar/filter-item/filter-item-type.enum.js +1 -0
  34. package/dist/collection/components/snk-filter-bar/filter-modal/snk-filter-modal.css +31 -2
  35. package/dist/collection/components/snk-filter-bar/filter-modal/snk-filter-modal.js +116 -156
  36. package/dist/collection/components/snk-filter-bar/filter-modal/subcomponents/snk-filter-modal-item.css +4 -0
  37. package/dist/collection/components/snk-filter-bar/filter-modal/subcomponents/snk-filter-modal-item.js +115 -0
  38. package/dist/collection/components/snk-filter-bar/snk-filter-bar.js +19 -142
  39. package/dist/collection/components/snk-filter-bar/types/filter-type.enum.js +7 -0
  40. package/dist/collection/components/snk-filter-bar/utils/SnkFilterModalFactory.js +36 -0
  41. package/dist/collection/components/snk-filter-bar/utils/filters-mock.js +315 -0
  42. package/dist/collection/lib/message/resources/snk-filter-bar.msg.js +9 -1
  43. package/dist/components/SnkMessageBuilder.js +9 -1
  44. package/dist/components/filter-item-type.enum.js +1 -0
  45. package/dist/components/index.d.ts +1 -0
  46. package/dist/components/index.js +1 -0
  47. package/dist/components/presentationMode.js +7 -0
  48. package/dist/components/snk-crud.js +22 -34
  49. package/dist/components/snk-detail-view2.js +24 -46
  50. package/dist/components/snk-filter-bar2.js +57 -157
  51. package/dist/components/snk-filter-binary-select.js +9 -1
  52. package/dist/components/snk-filter-list.js +171 -1
  53. package/dist/components/snk-filter-modal-item.d.ts +11 -0
  54. package/dist/components/snk-filter-modal-item.js +6 -0
  55. package/dist/components/snk-filter-modal-item2.js +85 -0
  56. package/dist/components/snk-filter-modal.js +118 -1
  57. package/dist/components/snk-filter-multi-select.js +3 -1
  58. package/dist/components/snk-filter-number.js +3 -1
  59. package/dist/components/snk-filter-period.js +12 -2
  60. package/dist/components/snk-filter-personalized.js +3 -1
  61. package/dist/components/snk-filter-search.js +3 -1
  62. package/dist/components/snk-filter-text.js +3 -1
  63. package/dist/components/snk-grid2.js +10 -22
  64. package/dist/esm/{SnkMessageBuilder-f3590f65.js → SnkMessageBuilder-23272e07.js} +9 -1
  65. package/dist/esm/{filter-item-type.enum-a79b2fa8.js → filter-item-type.enum-5028ed3f.js} +1 -0
  66. package/dist/esm/filter-type.enum-a80c1b6b.js +9 -0
  67. package/dist/esm/loader.js +1 -1
  68. package/dist/esm/presentationMode-783bbf9d.js +7 -0
  69. package/dist/esm/sankhyablocks.js +1 -1
  70. package/dist/esm/snk-application.entry.js +1 -1
  71. package/dist/esm/snk-data-exporter.entry.js +2 -2
  72. package/dist/esm/{snk-data-unit-50b1660c.js → snk-data-unit-34dc5371.js} +1 -1
  73. package/dist/esm/snk-data-unit.entry.js +2 -2
  74. package/dist/esm/snk-detail-view.entry.js +1 -1
  75. package/dist/esm/snk-filter-bar.entry.js +53 -141
  76. package/dist/esm/snk-filter-binary-select.entry.js +9 -2
  77. package/dist/esm/snk-filter-detail.entry.js +1 -1
  78. package/dist/esm/snk-filter-item.entry.js +1 -1
  79. package/dist/esm/snk-filter-modal-item.entry.js +62 -0
  80. package/dist/esm/snk-filter-modal.entry.js +73 -50
  81. package/dist/esm/snk-filter-multi-select.entry.js +4 -2
  82. package/dist/esm/snk-filter-number.entry.js +4 -2
  83. package/dist/esm/snk-filter-period.entry.js +12 -3
  84. package/dist/esm/snk-filter-personalized.entry.js +4 -2
  85. package/dist/esm/snk-filter-search.entry.js +4 -2
  86. package/dist/esm/snk-filter-text.entry.js +3 -1
  87. package/dist/sankhyablocks/{p-f344b811.entry.js → p-0110b7da.entry.js} +1 -1
  88. package/dist/sankhyablocks/p-1a68fb59.js +1 -0
  89. package/dist/sankhyablocks/{p-3d3263b4.js → p-3db1d3de.js} +1 -1
  90. package/dist/sankhyablocks/p-45ee8b22.entry.js +1 -0
  91. package/dist/sankhyablocks/p-4ce96831.entry.js +1 -0
  92. package/dist/sankhyablocks/{p-9dd2b8cb.js → p-584d7212.js} +1 -1
  93. package/dist/sankhyablocks/{p-c4417efb.entry.js → p-64b03506.entry.js} +1 -1
  94. package/dist/sankhyablocks/p-7695c404.entry.js +1 -0
  95. package/dist/sankhyablocks/p-786ae316.entry.js +1 -0
  96. package/dist/sankhyablocks/p-82bc97da.entry.js +1 -0
  97. package/dist/sankhyablocks/p-8efb0f47.entry.js +1 -0
  98. package/dist/sankhyablocks/p-9af04fc7.entry.js +1 -0
  99. package/dist/sankhyablocks/{p-3a2ce158.entry.js → p-a1c58536.entry.js} +1 -1
  100. package/dist/sankhyablocks/{p-afba9bbe.entry.js → p-bdbb2672.entry.js} +1 -1
  101. package/dist/sankhyablocks/{p-3fbe2d69.entry.js → p-c1ab16d0.entry.js} +2 -2
  102. package/dist/sankhyablocks/p-d9804798.js +1 -0
  103. package/dist/sankhyablocks/p-e2bb9c9a.entry.js +1 -0
  104. package/dist/sankhyablocks/p-ed3d6ab4.entry.js +1 -0
  105. package/dist/sankhyablocks/p-ee1381f4.entry.js +1 -0
  106. package/dist/sankhyablocks/p-f5f36fbb.js +1 -0
  107. package/dist/sankhyablocks/p-ffac37d5.entry.js +1 -0
  108. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  109. package/dist/types/components/snk-filter-bar/filter-item/editors/enum/presentationMode.d.ts +4 -0
  110. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-personalized.d.ts +5 -0
  111. package/dist/types/components/snk-filter-bar/filter-item/filter-item-type.enum.d.ts +2 -1
  112. package/dist/types/components/snk-filter-bar/filter-item/snk-filter-item.d.ts +3 -0
  113. package/dist/types/components/snk-filter-bar/filter-modal/snk-filter-modal.d.ts +37 -0
  114. package/dist/types/components/snk-filter-bar/filter-modal/subcomponents/snk-filter-modal-item.d.ts +17 -0
  115. package/dist/types/components/snk-filter-bar/snk-filter-bar.d.ts +2 -11
  116. package/dist/types/components/snk-filter-bar/types/filter-type.enum.d.ts +6 -0
  117. package/dist/types/components/snk-filter-bar/utils/SnkFilterModalFactory.d.ts +20 -0
  118. package/dist/types/components/snk-filter-bar/utils/filters-mock.d.ts +186 -0
  119. package/dist/types/components.d.ts +113 -54
  120. package/package.json +1 -1
  121. package/react/components.d.ts +1 -0
  122. package/react/components.js +1 -0
  123. package/react/components.js.map +1 -1
  124. package/dist/components/snk-filter-list2.js +0 -173
  125. package/dist/components/snk-filter-modal2.js +0 -97
  126. package/dist/sankhyablocks/p-1dcfd32a.entry.js +0 -1
  127. package/dist/sankhyablocks/p-5e62a17b.entry.js +0 -1
  128. package/dist/sankhyablocks/p-5fc55684.entry.js +0 -1
  129. package/dist/sankhyablocks/p-73e830cf.entry.js +0 -1
  130. package/dist/sankhyablocks/p-86d29b6f.entry.js +0 -1
  131. package/dist/sankhyablocks/p-ad51bf1c.entry.js +0 -1
  132. package/dist/sankhyablocks/p-c336170d.entry.js +0 -1
  133. package/dist/sankhyablocks/p-c9477950.js +0 -1
  134. package/dist/sankhyablocks/p-d5c9c1f8.entry.js +0 -1
  135. package/dist/sankhyablocks/p-ee82c157.entry.js +0 -1
  136. package/dist/sankhyablocks/p-fac37198.entry.js +0 -1
@@ -1,4 +1,174 @@
1
- import { S as SnkFilterList$1, d as defineCustomElement$1 } from './snk-filter-list2.js';
1
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
+ import { FloatingManager, ElementIDUtils, ArrayUtils } from '@sankhyalabs/core';
3
+
4
+ const SHOW_MORE_ITEM_NAME = "__SHOWMORE__";
5
+ const MAX_FILTERS = 5;
6
+ const SnkFilterList$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
7
+ constructor() {
8
+ super();
9
+ this.__registerHost();
10
+ this.snkItemSelected = createEvent(this, "snkItemSelected", 7);
11
+ this._preselection = -1;
12
+ this.innerClickCheck = (_floatingContainer, node) => {
13
+ if (node.id != FloatingManager.MODAL_ELEMENT_ID) {
14
+ return true;
15
+ }
16
+ this._detailIsVisible = false;
17
+ return false;
18
+ };
19
+ this._filterArgument = undefined;
20
+ this._showAll = undefined;
21
+ this.label = undefined;
22
+ this.iconName = undefined;
23
+ this.items = undefined;
24
+ this.getMessage = undefined;
25
+ this.emptyText = undefined;
26
+ this.findFilterText = undefined;
27
+ this.buttonClass = undefined;
28
+ }
29
+ showDetail() {
30
+ this._preselection = -1;
31
+ this._floatingID = FloatingManager.float(this._popover, this._popoverContainer, {
32
+ autoClose: true,
33
+ innerClickTest: this.innerClickCheck,
34
+ backClickListener: () => this.onListCloseCallback(),
35
+ useOverlay: true
36
+ });
37
+ this._detailIsVisible = true;
38
+ this._showAll = false;
39
+ this._filterArgument = "";
40
+ this._filterInput.setFocus();
41
+ }
42
+ /**
43
+ * Oculta os detalhes do componente snk-filter-list.
44
+ */
45
+ async hideDetail() {
46
+ if (this._floatingID != undefined) {
47
+ FloatingManager.close(this._floatingID);
48
+ }
49
+ }
50
+ onListCloseCallback() {
51
+ this._floatingID = undefined;
52
+ this._detailIsVisible = false;
53
+ }
54
+ buttonClick() {
55
+ if (this._detailIsVisible) {
56
+ this.hideDetail();
57
+ }
58
+ else {
59
+ this.showDetail();
60
+ }
61
+ }
62
+ componentDidLoad() {
63
+ if (this._element) {
64
+ ElementIDUtils.addIDInfo(this._element);
65
+ }
66
+ }
67
+ componentDidRender() {
68
+ if (this._floatingID == undefined) {
69
+ if (this._popover) {
70
+ this._popover.remove();
71
+ }
72
+ }
73
+ }
74
+ buildIdElement(buttonElement, name) {
75
+ if (!buttonElement)
76
+ return;
77
+ const dataElement = { id: name };
78
+ buttonElement.removeAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME);
79
+ ElementIDUtils.addIDInfoIfNotExists(buttonElement, "filterItemList", dataElement);
80
+ }
81
+ buildItemElement(item) {
82
+ const itemId = ++this._selectableItemsCount;
83
+ return (h("button", { ref: elem => elem && this.buildIdElement(elem, item.label), id: `filter-item${itemId}`, onFocusin: () => this._preselection = itemId, class: `ez-col ez-col--sd-12 ez-align--middle ez-padding--small sc-snk-filter-bar snk-filter-bar__filter-list-item`, onClick: () => this.itemSelected(item.name), name: item.label, key: itemId }, item.iconName ? h("ez-icon", { iconName: item.iconName, size: "small", class: `ez-padding-right--extra-small sc-snk-filter-bar snk-filter-bar__filter-list-item__icon ${item.iconClass || ""}` }) : undefined, h("div", { class: `ez-text ez-text--medium ez-text--primary ez-padding--extra-small sc-snk-filter-bar snk-filter-bar__filter-list-item__label ${item.labelClass || ""}` }, item.label)));
84
+ }
85
+ itemSelected(itemName) {
86
+ if (itemName === SHOW_MORE_ITEM_NAME) {
87
+ this._showAll = true;
88
+ }
89
+ else {
90
+ this.hideDetail();
91
+ this.snkItemSelected.emit(itemName);
92
+ }
93
+ }
94
+ getFilterItems() {
95
+ const items = this.items ? ArrayUtils.applyStringFilter(this._filterArgument, this.items.filter(item => item.kind === "FILTER")) : [];
96
+ if (items.length === 0) {
97
+ return h("div", { class: "ez-text ez-text--medium ez-text--primary ez-padding--extra-small sc-snk-filter-bar snk-filter-bar__filter-list-items-container--empty" }, this.emptyText);
98
+ }
99
+ const hideItems = !this._filterArgument && !this._showAll && (items.length > MAX_FILTERS + 1);
100
+ if (hideItems) {
101
+ items.splice(MAX_FILTERS);
102
+ items.push({ kind: "INTERNAL", label: "Mostrar mais", iconName: "dots-horizontal", name: SHOW_MORE_ITEM_NAME, iconClass: "snk-filter-bar__filter-list-item__icon--secondary", labelClass: "snk-filter-bar__filter-list-item__label--secondary" });
103
+ }
104
+ this._selectableItemsCount = 0;
105
+ return h("div", { class: "sc-snk-filter-bar snk-filter-bar__filter-list-items-container" }, items.map(item => this.buildItemElement(item)));
106
+ }
107
+ getFooterItems() {
108
+ return this.items.filter(item => item.kind === "FOOTER");
109
+ }
110
+ keyDownHandler(event) {
111
+ switch (event.key) {
112
+ case "ArrowDown":
113
+ this.changePreselection(this._preselection + 1);
114
+ //Paramos a propagação do evento para evitar scroll indesejado
115
+ event.stopImmediatePropagation();
116
+ event.stopPropagation();
117
+ event.preventDefault();
118
+ break;
119
+ case "ArrowUp":
120
+ this.changePreselection(this._preselection - 1);
121
+ //Paramos a propagação do evento para evitar scroll indesejado
122
+ event.stopImmediatePropagation();
123
+ event.stopPropagation();
124
+ event.preventDefault();
125
+ break;
126
+ }
127
+ }
128
+ changePreselection(newSelection) {
129
+ if (newSelection < 0) {
130
+ newSelection = this._selectableItemsCount;
131
+ }
132
+ this._preselection = newSelection > this._selectableItemsCount ? 0 : newSelection;
133
+ if (this._preselection === 0) {
134
+ this._filterInput.setFocus();
135
+ }
136
+ else {
137
+ const item = this._element.querySelector(`#filter-item${this._preselection}`);
138
+ if (item) {
139
+ item.focus();
140
+ }
141
+ }
142
+ }
143
+ render() {
144
+ return (h(Host, { class: "ez-flex ez-flex--column" }, h("ez-button", { class: this.buttonClass, label: this.label, onClick: () => this.buttonClick(), mode: this.iconName ? "icon" : undefined, iconName: this.iconName, size: "small" }, h("slot", { name: "leftIcon" })), h("section", { class: "ez-margin-top--small sc-snk-filter-bar snk-filter__popover-container", ref: elem => this._popoverContainer = elem }, h("div", { class: "sc-snk-filter-bar snk-filter__popover ez-padding--small", ref: elem => this._popover = elem }, h("ez-filter-input", { ref: ref => this._filterInput = ref, "data-element-id": "serachFilters", mode: "slim", label: this.findFilterText, value: this._filterArgument, onEzChange: (evt) => this._filterArgument = evt.detail, onFocus: () => this._preselection = 0 }), this.getFilterItems(), h("hr", { class: "sc-snk-filter-bar snk-filter__popover-rule" }), this.items ? this.getFooterItems().map(item => this.buildItemElement(item)) : undefined))));
145
+ }
146
+ get _element() { return this; }
147
+ }, [4, "snk-filter-list", {
148
+ "label": [1],
149
+ "iconName": [1, "icon-name"],
150
+ "items": [16],
151
+ "getMessage": [16],
152
+ "emptyText": [1, "empty-text"],
153
+ "findFilterText": [1, "find-filter-text"],
154
+ "buttonClass": [1, "button-class"],
155
+ "_filterArgument": [32],
156
+ "_showAll": [32],
157
+ "hideDetail": [64]
158
+ }, [[2, "keydown", "keyDownHandler"]]]);
159
+ function defineCustomElement$1() {
160
+ if (typeof customElements === "undefined") {
161
+ return;
162
+ }
163
+ const components = ["snk-filter-list"];
164
+ components.forEach(tagName => { switch (tagName) {
165
+ case "snk-filter-list":
166
+ if (!customElements.get(tagName)) {
167
+ customElements.define(tagName, SnkFilterList$1);
168
+ }
169
+ break;
170
+ } });
171
+ }
2
172
 
3
173
  const SnkFilterList = SnkFilterList$1;
4
174
  const defineCustomElement = defineCustomElement$1;
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface SnkFilterModalItem extends Components.SnkFilterModalItem, HTMLElement {}
4
+ export const SnkFilterModalItem: {
5
+ prototype: SnkFilterModalItem;
6
+ new (): SnkFilterModalItem;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,6 @@
1
+ import { S as SnkFilterModalItem$1, d as defineCustomElement$1 } from './snk-filter-modal-item2.js';
2
+
3
+ const SnkFilterModalItem = SnkFilterModalItem$1;
4
+ const defineCustomElement = defineCustomElement$1;
5
+
6
+ export { SnkFilterModalItem, defineCustomElement };
@@ -0,0 +1,85 @@
1
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
+ import { ElementIDUtils } from '@sankhyalabs/core';
3
+ import { F as FilterItemType } from './filter-item-type.enum.js';
4
+ import { E as EPresentationMode } from './presentationMode.js';
5
+
6
+ var FilterType;
7
+ (function (FilterType) {
8
+ FilterType["QUICK_FILTER"] = "QUICK_FILTER";
9
+ FilterType["CUSTOM_FILTER"] = "CUSTOM_FILTER";
10
+ FilterType["OTHER_FILTERS"] = "OTHER_FILTERS";
11
+ })(FilterType || (FilterType = {}));
12
+ const FilterType$1 = FilterType;
13
+
14
+ const snkFilterModalItemCss = ".grow{flex-grow:1}";
15
+
16
+ const SnkFilterModalItem = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
17
+ constructor() {
18
+ super();
19
+ this.__registerHost();
20
+ this.filterChange = createEvent(this, "filterChange", 7);
21
+ this.filterItem = undefined;
22
+ }
23
+ observeFilterItem(newValue) {
24
+ this.filterChange.emit(newValue);
25
+ }
26
+ getContentEditorConfig() {
27
+ const variations = { presentationMode: EPresentationMode.MODAL };
28
+ switch (this.filterItem.type) {
29
+ case FilterItemType.BINARY_SELECT:
30
+ return { tag: "snk-filter-binary-select", variations };
31
+ case FilterItemType.MULTI_SELECT:
32
+ return { tag: "snk-filter-multi-select" };
33
+ case FilterItemType.PERIOD:
34
+ return { tag: "snk-filter-period", variations };
35
+ case FilterItemType.SEARCH:
36
+ return { tag: "snk-filter-search" };
37
+ case FilterItemType.NUMBER:
38
+ return { tag: "snk-filter-number" };
39
+ case FilterItemType.PERSONALIZED:
40
+ return { tag: "snk-filter-personalized" };
41
+ case FilterItemType.MULTI_LIST:
42
+ return { tag: "snk-entity-list" };
43
+ }
44
+ return { tag: "snk-filter-text" };
45
+ }
46
+ updateFilterValue(newValue) {
47
+ this.filterItem = Object.assign(Object.assign({}, this.filterItem), { value: newValue });
48
+ }
49
+ canShowDetailModal() {
50
+ return this.filterItem.filterType !== FilterType$1.OTHER_FILTERS && this.filterItem.type !== FilterItemType.BINARY_SELECT;
51
+ }
52
+ componentDidLoad() {
53
+ if (this._element) {
54
+ ElementIDUtils.addIDInfo(this._element);
55
+ const dataElementIdDoFilterItem = this._element.getAttribute(ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME);
56
+ this._idContentEditor = `${dataElementIdDoFilterItem}_${this.filterItem.id}`;
57
+ }
58
+ }
59
+ render() {
60
+ const { tag: ContentEditor, variations } = this.getContentEditorConfig();
61
+ return (h(Host, null, h("div", { class: "ez-flex ez-flex--column grow" }, this.canShowDetailModal() && (h("div", { class: "col ez-col--sd-12 ez-align--right ez-padding-medium ez-flex--align-items-center" }, h("div", { class: "ez-text ez-title ez-title--small ez-padding--small sc-snk-filter-bar snk-filter-item__editor-header" }, this.filterItem.detailModal))), h(ContentEditor, Object.assign({ config: this.filterItem, value: this.filterItem.value, onValueChanged: (event) => this.updateFilterValue(event.detail), "data-element-id": this._idContentEditor }, variations)))));
62
+ }
63
+ get _element() { return this; }
64
+ static get watchers() { return {
65
+ "filterItem": ["observeFilterItem"]
66
+ }; }
67
+ static get style() { return snkFilterModalItemCss; }
68
+ }, [0, "snk-filter-modal-item", {
69
+ "filterItem": [1040]
70
+ }]);
71
+ function defineCustomElement() {
72
+ if (typeof customElements === "undefined") {
73
+ return;
74
+ }
75
+ const components = ["snk-filter-modal-item"];
76
+ components.forEach(tagName => { switch (tagName) {
77
+ case "snk-filter-modal-item":
78
+ if (!customElements.get(tagName)) {
79
+ customElements.define(tagName, SnkFilterModalItem);
80
+ }
81
+ break;
82
+ } });
83
+ }
84
+
85
+ export { FilterType$1 as F, SnkFilterModalItem as S, defineCustomElement as d };
@@ -1,4 +1,121 @@
1
- import { S as SnkFilterModal$1, d as defineCustomElement$1 } from './snk-filter-modal2.js';
1
+ import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
2
+ import { ModalAction } from '@sankhyalabs/ezui/dist/collection/components/ez-modal-container';
3
+ import { F as FilterType, d as defineCustomElement$2 } from './snk-filter-modal-item2.js';
4
+ import { F as FilterItemType } from './filter-item-type.enum.js';
5
+
6
+ const snkFilterModalCss = "ez-modal{--ez-modal-content-padding:24px 12px}.snk-filter__modal-container{width:344px;max-width:344px;overflow:hidden}.snk-filter__modal-content{display:flex;flex-direction:column;gap:12px;max-height:760px;overflow-x:clip;overflow-y:auto;padding-right:4px}.snk-filter__modal-content::-webkit-scrollbar{width:var(--space--small);min-width:var(--space--small);max-width:var(--space--small)}.snk-filter__modal-collapsible-box{border:1px solid #DCE0E8;border-radius:var(--border--radius-medium)}";
7
+
8
+ const SnkFilterModal$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
9
+ constructor() {
10
+ super();
11
+ this.__registerHost();
12
+ this.getMessage = undefined;
13
+ this.filters = undefined;
14
+ this.applyFilters = undefined;
15
+ this.clearAll = undefined;
16
+ this.closeModal = undefined;
17
+ }
18
+ getCustomMessage(key, params) {
19
+ var _a;
20
+ return (_a = this.getMessage) === null || _a === void 0 ? void 0 : _a.call(this, `snkFilterBar.filterModal.${key}`, params);
21
+ }
22
+ handleClearAll() {
23
+ const cleanedFilters = this.clearAll(this.filters);
24
+ this.filters = cleanedFilters;
25
+ }
26
+ modalActionListener(evt) {
27
+ const modalAction = evt.detail;
28
+ switch (modalAction) {
29
+ case ModalAction.CANCEL:
30
+ this.handleClearAll();
31
+ break;
32
+ case ModalAction.OK:
33
+ this.applyFilters(this.filters);
34
+ case ModalAction.CLOSE:
35
+ this.closeModal();
36
+ }
37
+ }
38
+ handleFilterChange(filterConfig) {
39
+ this.filters = this.filters.map(filter => filter.id === filterConfig.id ? filterConfig : filter);
40
+ }
41
+ handleClearFilters(filterList) {
42
+ this.filters = this.filters.map(filter => filterList.includes(filter) ? (Object.assign(Object.assign({}, filter), { value: undefined })) : filter);
43
+ }
44
+ renderFilterItem(filterItem, fullRow) {
45
+ return (h("snk-filter-modal-item", { class: fullRow ? 'ez-col ez-col--sd-12' : 'ez-col ez-col--sd-6 ez-padding--small', filterItem: filterItem, onFilterChange: (event) => this.handleFilterChange(event.detail) }));
46
+ }
47
+ mountFiltersLines(filters) {
48
+ const MAX_LINE_LENGTH = 2;
49
+ let currentLine = 0;
50
+ let forceAddCurrent = false;
51
+ const filtersLines = {};
52
+ for (let curr = 0; curr < filters.length; curr++) {
53
+ filtersLines[currentLine] = filtersLines[currentLine] || [];
54
+ const item = filters[curr];
55
+ const isLast = curr === filters.length - 1;
56
+ const currentItemMatch = [FilterItemType.TEXT, FilterItemType.NUMBER].includes(item.type);
57
+ const nextItemMatch = isLast ? false : [FilterItemType.TEXT, FilterItemType.NUMBER].includes(filters[curr + 1].type);
58
+ if ((currentItemMatch && nextItemMatch) || forceAddCurrent) {
59
+ filtersLines[currentLine].push(item);
60
+ forceAddCurrent = filtersLines[currentLine].length < MAX_LINE_LENGTH;
61
+ if (filtersLines[currentLine].length === MAX_LINE_LENGTH)
62
+ ++currentLine;
63
+ continue;
64
+ }
65
+ filtersLines[currentLine] = filtersLines[currentLine] || [];
66
+ filtersLines[currentLine].push(item);
67
+ ++currentLine;
68
+ }
69
+ return Object.values(filtersLines);
70
+ }
71
+ renderFilterLine(filters) {
72
+ const fullLine = filters.length === 1;
73
+ return (h("div", { class: "ez-row" }, filters.map((filter) => this.renderFilterItem(filter, fullLine))));
74
+ }
75
+ renderCollapsibleFilterBox(label, listItems) {
76
+ if (!listItems.length)
77
+ return null;
78
+ const appliedFilters = listItems.filter(filterItem => !!filterItem.value).length;
79
+ const lines = this.mountFiltersLines(listItems);
80
+ return (h("ez-collapsible-box", { className: "snk-filter__modal-collapsible-box ez-padding--medium", headerSize: "medium", value: true, label: label }, !!appliedFilters && (h("ez-badge", { className: "ez-badge--primary-subtle", slot: "rightSlot", label: appliedFilters })), lines.map(this.renderFilterLine.bind(this)), h("div", { class: "ez-flex ez-flex--justify-end grow" }, h("ez-button", { className: "ez-button--tertiary", size: "medium", label: "Limpar", onClick: () => this.handleClearFilters(listItems) }))));
81
+ }
82
+ componentWillRender() {
83
+ this._modalTitle = this.getCustomMessage('title');
84
+ this._okButtonLabel = this.getCustomMessage('okButtonLabel');
85
+ this._cancelButtonLabel = this.getCustomMessage('cancelButtonLabel');
86
+ }
87
+ render() {
88
+ const customFilters = this.filters.filter(filter => filter.filterType === FilterType.CUSTOM_FILTER);
89
+ const quickFilters = this.filters.filter(filter => filter.filterType === FilterType.QUICK_FILTER);
90
+ const otherFilters = this.filters.filter(filter => filter.filterType === FilterType.OTHER_FILTERS);
91
+ return (h("ez-modal-container", { class: "snk-filter__modal-container", modalTitle: this._modalTitle, cancelButtonLabel: this._cancelButtonLabel, okButtonLabel: this._okButtonLabel, onEzModalAction: this.modalActionListener.bind(this) }, h("div", { class: "snk-filter__modal-content" }, this.renderCollapsibleFilterBox(this.getCustomMessage('customFilters'), customFilters), this.renderCollapsibleFilterBox(this.getCustomMessage('quickFilters'), quickFilters), otherFilters.map(filter => this.renderCollapsibleFilterBox(filter.label, [filter])))));
92
+ }
93
+ static get style() { return snkFilterModalCss; }
94
+ }, [0, "snk-filter-modal", {
95
+ "getMessage": [16],
96
+ "filters": [1040],
97
+ "applyFilters": [16],
98
+ "clearAll": [16],
99
+ "closeModal": [16]
100
+ }]);
101
+ function defineCustomElement$1() {
102
+ if (typeof customElements === "undefined") {
103
+ return;
104
+ }
105
+ const components = ["snk-filter-modal", "snk-filter-modal-item"];
106
+ components.forEach(tagName => { switch (tagName) {
107
+ case "snk-filter-modal":
108
+ if (!customElements.get(tagName)) {
109
+ customElements.define(tagName, SnkFilterModal$1);
110
+ }
111
+ break;
112
+ case "snk-filter-modal-item":
113
+ if (!customElements.get(tagName)) {
114
+ defineCustomElement$2();
115
+ }
116
+ break;
117
+ } });
118
+ }
2
119
 
3
120
  const SnkFilterModal = SnkFilterModal$1;
4
121
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
1
+ import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
2
  import { ElementIDUtils } from '@sankhyalabs/core';
3
3
  import { F as FilterItemType } from './filter-item-type.enum.js';
4
4
 
@@ -6,6 +6,7 @@ const SnkFilterMultiSelect$1 = /*@__PURE__*/ proxyCustomElement(class extends HT
6
6
  constructor() {
7
7
  super();
8
8
  this.__registerHost();
9
+ this.valueChanged = createEvent(this, "valueChanged", 7);
9
10
  this.value = undefined;
10
11
  this.config = undefined;
11
12
  }
@@ -14,6 +15,7 @@ const SnkFilterMultiSelect$1 = /*@__PURE__*/ proxyCustomElement(class extends HT
14
15
  */
15
16
  ezChangeListener(evt) {
16
17
  this.value = evt.detail.value;
18
+ this.valueChanged.emit(this.value);
17
19
  }
18
20
  /**
19
21
  * Exibe o componente snk-filter-multi-select
@@ -1,4 +1,4 @@
1
- import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
1
+ import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
2
  import { ElementIDUtils } from '@sankhyalabs/core';
3
3
  import { F as FilterItemType } from './filter-item-type.enum.js';
4
4
 
@@ -6,6 +6,7 @@ const SnkFilterPeriod = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
6
6
  constructor() {
7
7
  super();
8
8
  this.__registerHost();
9
+ this.valueChanged = createEvent(this, "valueChanged", 7);
9
10
  this.config = undefined;
10
11
  this.value = undefined;
11
12
  }
@@ -14,6 +15,7 @@ const SnkFilterPeriod = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
14
15
  */
15
16
  ezChangeListener(evt) {
16
17
  this.value = evt.detail;
18
+ this.valueChanged.emit(this.value);
17
19
  }
18
20
  /**
19
21
  * Exibe o componente snk-filter-number
@@ -1,13 +1,16 @@
1
- import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
1
+ import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
2
  import { ElementIDUtils } from '@sankhyalabs/core';
3
3
  import { F as FilterItemType } from './filter-item-type.enum.js';
4
+ import { E as EPresentationMode } from './presentationMode.js';
4
5
 
5
6
  const SnkFilterPeriod$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
6
7
  constructor() {
7
8
  super();
8
9
  this.__registerHost();
10
+ this.valueChanged = createEvent(this, "valueChanged", 7);
9
11
  this.config = undefined;
10
12
  this.value = undefined;
13
+ this.presentationMode = EPresentationMode.CHIP;
11
14
  }
12
15
  /**
13
16
  * Emitido quando acontece a alteração de valor do componente snk-filter-period
@@ -16,6 +19,7 @@ const SnkFilterPeriod$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLEle
16
19
  const start = this._startDate.value;
17
20
  const end = this._endDate.value;
18
21
  this.value = (start || end ? { start, end } : undefined);
22
+ this.valueChanged.emit(this.value);
19
23
  }
20
24
  componentDidLoad() {
21
25
  if (this._element) {
@@ -40,16 +44,22 @@ const SnkFilterPeriod$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLEle
40
44
  async show() {
41
45
  this._startDate.setFocus();
42
46
  }
47
+ buildLabel() {
48
+ if (this.presentationMode === EPresentationMode.CHIP) {
49
+ return h("label", { class: "ez-text ez-text--medium ez-text--primary ez-margin--medium" }, "at\u00E9");
50
+ }
51
+ }
43
52
  render() {
44
53
  if (!this.config || this.config.type !== FilterItemType.PERIOD) {
45
54
  return undefined;
46
55
  }
47
- return (h("div", { class: "ez-col ez-col--nowrap" }, h("ez-date-input", { id: `${this.config.id}_start`, label: this.config.label, ref: ref => this._startDate = ref, value: this.getDate("start") }), h("label", { class: "ez-text ez-text--medium ez-text--primary ez-margin--medium" }, "at\u00E9"), h("ez-date-input", { id: `${this.config.id}_end`, label: this.config.label, ref: ref => this._endDate = ref, value: this.getDate("end") })));
56
+ return (h("div", { class: "ez-col ez-col--nowrap" }, h("ez-date-input", { id: `${this.config.id}_start`, class: this.presentationMode === EPresentationMode.MODAL ? 'ez-padding--small' : '', label: this.config.label, ref: ref => this._startDate = ref, value: this.getDate("start") }), this.buildLabel(), h("ez-date-input", { id: `${this.config.id}_end`, class: this.presentationMode === EPresentationMode.MODAL ? 'ez-padding--small' : '', label: this.config.label, ref: ref => this._endDate = ref, value: this.getDate("end") })));
48
57
  }
49
58
  get _element() { return this; }
50
59
  }, [0, "snk-filter-period", {
51
60
  "config": [16],
52
61
  "value": [8],
62
+ "presentationMode": [2, "presentation-mode"],
53
63
  "show": [64]
54
64
  }, [[0, "ezChange", "ezChangeListener"]]]);
55
65
  function defineCustomElement$1() {
@@ -1,4 +1,4 @@
1
- import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
1
+ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
2
  import { ElementIDUtils, UserInterface, ApplicationContext } from '@sankhyalabs/core';
3
3
  import { convertType } from '@sankhyalabs/core/dist/dataunit/metadata/DataType';
4
4
  import { CheckMode } from '@sankhyalabs/ezui/dist/collection/utils';
@@ -8,6 +8,7 @@ const SnkFilterPersonalized$1 = /*@__PURE__*/ proxyCustomElement(class extends H
8
8
  constructor() {
9
9
  super();
10
10
  this.__registerHost();
11
+ this.valueChanged = createEvent(this, "valueChanged", 7);
11
12
  this.config = undefined;
12
13
  this.value = undefined;
13
14
  this.fix = undefined;
@@ -39,6 +40,7 @@ const SnkFilterPersonalized$1 = /*@__PURE__*/ proxyCustomElement(class extends H
39
40
  if (this.value.filter(item => item != undefined).length == 0) {
40
41
  this.value = null;
41
42
  }
43
+ this.valueChanged.emit(this.value || []);
42
44
  }
43
45
  doSearch(mode, argument, param) {
44
46
  const application = ApplicationContext.getContextValue("__SNK__APPLICATION__");
@@ -1,4 +1,4 @@
1
- import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
1
+ import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
2
  import { ElementIDUtils, ApplicationContext } from '@sankhyalabs/core';
3
3
  import { F as FilterItemType } from './filter-item-type.enum.js';
4
4
 
@@ -6,6 +6,7 @@ const SnkFilterSearch$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLEle
6
6
  constructor() {
7
7
  super();
8
8
  this.__registerHost();
9
+ this.valueChanged = createEvent(this, "valueChanged", 7);
9
10
  this.config = undefined;
10
11
  this.value = undefined;
11
12
  }
@@ -14,6 +15,7 @@ const SnkFilterSearch$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLEle
14
15
  */
15
16
  ezChangeListener(_evt) {
16
17
  this.value = this._searchInput.value;
18
+ this.valueChanged.emit(this.value);
17
19
  }
18
20
  componentDidLoad() {
19
21
  if (this._element) {
@@ -1,10 +1,11 @@
1
- import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
1
+ import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
2
  import { ElementIDUtils } from '@sankhyalabs/core';
3
3
 
4
4
  const SnkFilterText$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
5
5
  constructor() {
6
6
  super();
7
7
  this.__registerHost();
8
+ this.valueChanged = createEvent(this, "valueChanged", 7);
8
9
  this.config = undefined;
9
10
  this.value = undefined;
10
11
  }
@@ -13,6 +14,7 @@ const SnkFilterText$1 = /*@__PURE__*/ proxyCustomElement(class extends HTMLEleme
13
14
  */
14
15
  ezChangeListener(evt) {
15
16
  this.value = evt.detail;
17
+ this.valueChanged.emit(this.value);
16
18
  }
17
19
  componentDidLoad() {
18
20
  if (this._element) {
@@ -6,13 +6,11 @@ import { C as ConfigStorage } from './ConfigStorage.js';
6
6
  import { P as PresentationMode } from './index2.js';
7
7
  import { T as TaskbarProcessor } from './taskbar-processor.js';
8
8
  import { s as store } from './index3.js';
9
- import { d as defineCustomElement$a } from './snk-data-exporter2.js';
10
- import { d as defineCustomElement$9 } from './snk-exporter-email-sender2.js';
11
- import { d as defineCustomElement$8 } from './snk-filter-bar2.js';
12
- import { d as defineCustomElement$7 } from './snk-filter-detail2.js';
13
- import { d as defineCustomElement$6 } from './snk-filter-item2.js';
14
- import { d as defineCustomElement$5 } from './snk-filter-list2.js';
15
- import { d as defineCustomElement$4 } from './snk-filter-modal2.js';
9
+ import { d as defineCustomElement$8 } from './snk-data-exporter2.js';
10
+ import { d as defineCustomElement$7 } from './snk-exporter-email-sender2.js';
11
+ import { d as defineCustomElement$6 } from './snk-filter-bar2.js';
12
+ import { d as defineCustomElement$5 } from './snk-filter-detail2.js';
13
+ import { d as defineCustomElement$4 } from './snk-filter-item2.js';
16
14
  import { d as defineCustomElement$3 } from './snk-grid-config2.js';
17
15
  import { d as defineCustomElement$2 } from './snk-select-box2.js';
18
16
 
@@ -313,7 +311,7 @@ function defineCustomElement() {
313
311
  if (typeof customElements === "undefined") {
314
312
  return;
315
313
  }
316
- const components = ["snk-grid", "snk-data-exporter", "snk-exporter-email-sender", "snk-filter-bar", "snk-filter-detail", "snk-filter-item", "snk-filter-list", "snk-filter-modal", "snk-grid-config", "snk-select-box", "snk-taskbar"];
314
+ const components = ["snk-grid", "snk-data-exporter", "snk-exporter-email-sender", "snk-filter-bar", "snk-filter-detail", "snk-filter-item", "snk-grid-config", "snk-select-box", "snk-taskbar"];
317
315
  components.forEach(tagName => { switch (tagName) {
318
316
  case "snk-grid":
319
317
  if (!customElements.get(tagName)) {
@@ -321,36 +319,26 @@ function defineCustomElement() {
321
319
  }
322
320
  break;
323
321
  case "snk-data-exporter":
324
- if (!customElements.get(tagName)) {
325
- defineCustomElement$a();
326
- }
327
- break;
328
- case "snk-exporter-email-sender":
329
- if (!customElements.get(tagName)) {
330
- defineCustomElement$9();
331
- }
332
- break;
333
- case "snk-filter-bar":
334
322
  if (!customElements.get(tagName)) {
335
323
  defineCustomElement$8();
336
324
  }
337
325
  break;
338
- case "snk-filter-detail":
326
+ case "snk-exporter-email-sender":
339
327
  if (!customElements.get(tagName)) {
340
328
  defineCustomElement$7();
341
329
  }
342
330
  break;
343
- case "snk-filter-item":
331
+ case "snk-filter-bar":
344
332
  if (!customElements.get(tagName)) {
345
333
  defineCustomElement$6();
346
334
  }
347
335
  break;
348
- case "snk-filter-list":
336
+ case "snk-filter-detail":
349
337
  if (!customElements.get(tagName)) {
350
338
  defineCustomElement$5();
351
339
  }
352
340
  break;
353
- case "snk-filter-modal":
341
+ case "snk-filter-item":
354
342
  if (!customElements.get(tagName)) {
355
343
  defineCustomElement$4();
356
344
  }
@@ -56,7 +56,15 @@ const snkFilterBarMessages = {
56
56
  "modalPersonalizedFilterSubTitle": "Gerencie seus filtros",
57
57
  "modalInfoTextCreateEditPersonalized": "Use o layout antigo para criar ou editar filtros, em breve traremos uma nova experiência",
58
58
  "modalOkButtonLabel": "Aplicar",
59
- "modalCancelButtonLabel": "Limpar"
59
+ "modalCancelButtonLabel": "Limpar",
60
+ "filters": "Filtros",
61
+ "filterModal": {
62
+ "title": "Filtros",
63
+ "okButtonLabel": "Aplicar",
64
+ "cancelButtonLabel": "Limpar tudo",
65
+ "customFilters": "Filtros personalizados",
66
+ "quickFilters": "Filtros rápidos"
67
+ }
60
68
  };
61
69
 
62
70
  const snkTaskbarMessages = {
@@ -8,6 +8,7 @@ var FilterItemType;
8
8
  FilterItemType["NUMBER"] = "NUMBER";
9
9
  FilterItemType["DEFAULT_FILTER"] = "DEFAULT_FILTER";
10
10
  FilterItemType["PERSONALIZED"] = "PERSONALIZED";
11
+ FilterItemType["MULTI_LIST"] = "MULTI_LIST";
11
12
  })(FilterItemType || (FilterItemType = {}));
12
13
  const FilterItemType$1 = FilterItemType;
13
14