@sankhyalabs/ezui 5.22.0-dev.4 → 5.22.0-dev.40

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 (229) hide show
  1. package/dist/cjs/DataBinder-aff1dcc7.js +445 -0
  2. package/dist/cjs/FocusResolver-885f2173.js +35 -0
  3. package/dist/cjs/ez-button.cjs.entry.js +11 -5
  4. package/dist/cjs/ez-card-item_3.cjs.entry.js +21 -6
  5. package/dist/cjs/ez-chart.cjs.entry.js +1 -1
  6. package/dist/cjs/ez-check.cjs.entry.js +1 -1
  7. package/dist/cjs/ez-collapsible-box.cjs.entry.js +1 -1
  8. package/dist/cjs/ez-combo-box.cjs.entry.js +64 -11
  9. package/dist/cjs/ez-custom-form-input_2.cjs.entry.js +33 -4
  10. package/dist/cjs/ez-date-input.cjs.entry.js +12 -3
  11. package/dist/cjs/ez-date-time-input.cjs.entry.js +9 -3
  12. package/dist/cjs/ez-dialog.cjs.entry.js +9 -1
  13. package/dist/cjs/{ez-dropdown.cjs.entry.js → ez-dropdown_2.cjs.entry.js} +75 -8
  14. package/dist/cjs/ez-form-view.cjs.entry.js +3 -2
  15. package/dist/cjs/ez-form.cjs.entry.js +4 -324
  16. package/dist/cjs/ez-grid.cjs.entry.js +14742 -70307
  17. package/dist/cjs/ez-list.cjs.entry.js +6 -7
  18. package/dist/cjs/ez-modal-container.cjs.entry.js +2 -1
  19. package/dist/cjs/ez-modal.cjs.entry.js +19 -4
  20. package/dist/cjs/ez-multi-selection-list.cjs.entry.js +1 -1
  21. package/dist/cjs/ez-number-input.cjs.entry.js +13 -1
  22. package/dist/cjs/ez-popup.cjs.entry.js +21 -2
  23. package/dist/cjs/ez-scroller_2.cjs.entry.js +3 -3
  24. package/dist/cjs/ez-search.cjs.entry.js +66 -33
  25. package/dist/cjs/ez-sidebar-navigator.cjs.entry.js +1 -1
  26. package/dist/cjs/ez-split-button.cjs.entry.js +2 -2
  27. package/dist/cjs/ez-split-item.cjs.entry.js +1 -1
  28. package/dist/cjs/ez-text-area.cjs.entry.js +67 -5
  29. package/dist/cjs/ez-text-input.cjs.entry.js +10 -1
  30. package/dist/cjs/ez-time-input.cjs.entry.js +6 -0
  31. package/dist/cjs/ezui.cjs.js +1 -1
  32. package/dist/cjs/index-9e5554cb.js +2 -6
  33. package/dist/cjs/loader.cjs.js +1 -1
  34. package/dist/collection/collection-manifest.json +1 -1
  35. package/dist/collection/components/ez-button/ez-button.css +21 -11
  36. package/dist/collection/components/ez-button/ez-button.js +12 -6
  37. package/dist/collection/components/ez-card-item/ez-card-item.css +60 -10
  38. package/dist/collection/components/ez-card-item/ez-card-item.js +30 -3
  39. package/dist/collection/components/ez-check/ez-check.css +1 -6
  40. package/dist/collection/components/ez-collapsible-box/ez-collapsible-box.css +2 -2
  41. package/dist/collection/components/ez-combo-box/ez-combo-box.css +1 -1
  42. package/dist/collection/components/ez-combo-box/ez-combo-box.js +109 -13
  43. package/dist/collection/components/ez-date-input/ez-date-input.css +1 -1
  44. package/dist/collection/components/ez-date-input/ez-date-input.js +38 -4
  45. package/dist/collection/components/ez-date-time-input/ez-date-time-input.css +1 -1
  46. package/dist/collection/components/ez-date-time-input/ez-date-time-input.js +35 -4
  47. package/dist/collection/components/ez-dialog/ez-dialog.js +9 -1
  48. package/dist/collection/components/ez-dropdown/ez-dropdown.js +33 -8
  49. package/dist/collection/components/ez-filter-input/ez-filter-input.js +35 -4
  50. package/dist/collection/components/ez-form/ez-form.js +1 -0
  51. package/dist/collection/components/ez-form-view/custom-input/ez-custom-form-input.js +47 -5
  52. package/dist/collection/components/ez-form-view/fieldbuilder/templates/SearchInput.tpl.js +3 -2
  53. package/dist/collection/components/ez-grid/controller/ag-grid/AgGridController.js +238 -55
  54. package/dist/collection/components/ez-grid/controller/ag-grid/DataSource.js +107 -5
  55. package/dist/collection/components/ez-grid/controller/ag-grid/GridEditionManager.js +222 -42
  56. package/dist/collection/components/ez-grid/controller/ag-grid/components/EzGridCustomCellEditor.js +16 -0
  57. package/dist/collection/components/ez-grid/controller/ag-grid/editor/EzCellEditor.js +8 -0
  58. package/dist/collection/components/ez-grid/controller/ag-grid/editor/templates/ComboBox.tpl.js +2 -0
  59. package/dist/collection/components/ez-grid/controller/ag-grid/editor/templates/DateInput.tpl.js +1 -0
  60. package/dist/collection/components/ez-grid/controller/ag-grid/editor/templates/NumberInput.tpl.js +1 -0
  61. package/dist/collection/components/ez-grid/controller/ag-grid/editor/templates/Search.tpl.js +4 -0
  62. package/dist/collection/components/ez-grid/controller/ag-grid/editor/templates/TextInput.tpl.js +4 -1
  63. package/dist/collection/components/ez-grid/controller/ag-grid/test/constants/GridEditionMock.js +2 -0
  64. package/dist/collection/components/ez-grid/ez-grid.css +17 -7
  65. package/dist/collection/components/ez-grid/ez-grid.js +181 -7
  66. package/dist/collection/components/ez-list/ez-list.css +2 -1
  67. package/dist/collection/components/ez-list/ez-list.js +6 -7
  68. package/dist/collection/components/ez-modal/ez-modal.css +1 -1
  69. package/dist/collection/components/ez-modal/ez-modal.js +36 -3
  70. package/dist/collection/components/ez-modal-container/ez-modal-container.js +20 -1
  71. package/dist/collection/components/ez-multi-selection-list/ez-multi-selection-list.js +1 -1
  72. package/dist/collection/components/ez-number-input/ez-number-input.js +49 -1
  73. package/dist/collection/components/ez-popup/ez-popup.css +5 -1
  74. package/dist/collection/components/ez-popup/ez-popup.js +38 -1
  75. package/dist/collection/components/ez-scroller/ez-scroller.css +1 -0
  76. package/dist/collection/components/ez-search/ez-search.css +21 -10
  77. package/dist/collection/components/ez-search/ez-search.js +147 -34
  78. package/dist/collection/components/ez-sidebar-button/ez-sidebar-button.css +3 -0
  79. package/dist/collection/components/ez-sidebar-button/ez-sidebar-button.js +1 -1
  80. package/dist/collection/components/ez-sidebar-navigator/ez-sidebar-navigator.css +3 -1
  81. package/dist/collection/components/ez-split-button/ez-split-button.css +48 -12
  82. package/dist/collection/components/ez-split-button/ez-split-button.js +3 -3
  83. package/dist/collection/components/ez-split-panel/structure/item/ez-split-item.css +1 -0
  84. package/dist/collection/components/ez-text-area/ez-text-area.css +73 -28
  85. package/dist/collection/components/ez-text-area/ez-text-area.js +103 -3
  86. package/dist/collection/components/ez-text-input/ez-text-input.css +41 -71
  87. package/dist/collection/components/ez-text-input/ez-text-input.js +27 -0
  88. package/dist/collection/components/ez-time-input/ez-time-input.js +24 -0
  89. package/dist/collection/sw.js +46 -0
  90. package/dist/collection/utils/FocusResolver.js +31 -0
  91. package/dist/collection/utils/form/DataBinder.js +20 -5
  92. package/dist/collection/utils/validators/recordvalidator/IInvalidCells.js +1 -0
  93. package/dist/collection/utils/validators/recordvalidator/RecordValidationProcessor.js +7 -1
  94. package/dist/custom-elements/index.js +15584 -70809
  95. package/dist/esm/DataBinder-bd240826.js +441 -0
  96. package/dist/esm/FocusResolver-1ccbf850.js +33 -0
  97. package/dist/esm/ez-button.entry.js +11 -5
  98. package/dist/esm/ez-card-item_3.entry.js +21 -6
  99. package/dist/esm/ez-chart.entry.js +1 -1
  100. package/dist/esm/ez-check.entry.js +1 -1
  101. package/dist/esm/ez-collapsible-box.entry.js +1 -1
  102. package/dist/esm/ez-combo-box.entry.js +65 -12
  103. package/dist/esm/ez-custom-form-input_2.entry.js +34 -5
  104. package/dist/esm/ez-date-input.entry.js +12 -3
  105. package/dist/esm/ez-date-time-input.entry.js +9 -3
  106. package/dist/esm/ez-dialog.entry.js +9 -1
  107. package/dist/esm/{ez-dropdown.entry.js → ez-dropdown_2.entry.js} +75 -9
  108. package/dist/esm/ez-form-view.entry.js +3 -2
  109. package/dist/esm/ez-form.entry.js +3 -323
  110. package/dist/esm/ez-grid.entry.js +14685 -70250
  111. package/dist/esm/ez-list.entry.js +6 -7
  112. package/dist/esm/ez-modal-container.entry.js +2 -1
  113. package/dist/esm/ez-modal.entry.js +19 -4
  114. package/dist/esm/ez-multi-selection-list.entry.js +1 -1
  115. package/dist/esm/ez-number-input.entry.js +13 -1
  116. package/dist/esm/ez-popup.entry.js +21 -2
  117. package/dist/esm/ez-scroller_2.entry.js +3 -3
  118. package/dist/esm/ez-search.entry.js +66 -33
  119. package/dist/esm/ez-sidebar-navigator.entry.js +1 -1
  120. package/dist/esm/ez-split-button.entry.js +2 -2
  121. package/dist/esm/ez-split-item.entry.js +1 -1
  122. package/dist/esm/ez-text-area.entry.js +67 -5
  123. package/dist/esm/ez-text-input.entry.js +10 -1
  124. package/dist/esm/ez-time-input.entry.js +6 -0
  125. package/dist/esm/ezui.js +1 -1
  126. package/dist/esm/index-5a720e56.js +2 -6
  127. package/dist/esm/loader.js +1 -1
  128. package/dist/ezui/ezui.esm.js +1 -1
  129. package/dist/ezui/p-076e868b.entry.js +1 -0
  130. package/dist/ezui/p-0e1cc2d1.entry.js +1 -0
  131. package/dist/ezui/p-0ff1a92d.entry.js +309 -0
  132. package/dist/ezui/p-16e21a40.entry.js +1 -0
  133. package/dist/ezui/p-2de9f0aa.entry.js +1 -0
  134. package/dist/ezui/p-3b546374.entry.js +1 -0
  135. package/dist/ezui/p-3cc9b84a.entry.js +1 -0
  136. package/dist/ezui/p-3d38bfea.entry.js +1 -0
  137. package/dist/ezui/p-52100a6e.entry.js +1 -0
  138. package/dist/ezui/p-550cd812.entry.js +1 -0
  139. package/dist/ezui/p-554522db.entry.js +1 -0
  140. package/dist/ezui/p-6bc25bc8.entry.js +1 -0
  141. package/dist/ezui/p-70f1c812.entry.js +1 -0
  142. package/dist/ezui/p-7f5afb1f.entry.js +1 -0
  143. package/dist/ezui/p-802dc63e.entry.js +1 -0
  144. package/dist/ezui/p-81f06699.js +1 -0
  145. package/dist/ezui/p-8f026744.entry.js +1 -0
  146. package/dist/ezui/p-940760bf.entry.js +1 -0
  147. package/dist/ezui/{p-82ac8b06.entry.js → p-a563df31.entry.js} +1 -1
  148. package/dist/ezui/p-a921e3e7.entry.js +1 -0
  149. package/dist/ezui/p-b858fc6e.entry.js +1 -0
  150. package/dist/ezui/p-be34c77f.entry.js +1 -0
  151. package/dist/ezui/{p-9aa27e69.entry.js → p-bef7daac.entry.js} +1 -1
  152. package/dist/ezui/p-bfc30e61.entry.js +1 -0
  153. package/dist/ezui/p-bfc59380.entry.js +1 -0
  154. package/dist/ezui/p-dc628ed3.js +1 -0
  155. package/dist/ezui/{p-33792b2b.entry.js → p-e18d9e6a.entry.js} +1 -1
  156. package/dist/ezui/p-e3ec7422.entry.js +1 -0
  157. package/dist/ezui/{p-31674f8e.entry.js → p-e7395eae.entry.js} +1 -1
  158. package/dist/ezui/p-fe10f986.entry.js +1 -0
  159. package/dist/types/components/ez-button/ez-button.d.ts +2 -1
  160. package/dist/types/components/ez-card-item/ez-card-item.d.ts +5 -0
  161. package/dist/types/components/ez-combo-box/ez-combo-box.d.ts +12 -1
  162. package/dist/types/components/ez-date-input/ez-date-input.d.ts +6 -1
  163. package/dist/types/components/ez-date-time-input/ez-date-time-input.d.ts +6 -1
  164. package/dist/types/components/ez-dialog/ez-dialog.d.ts +2 -0
  165. package/dist/types/components/ez-dropdown/ez-dropdown.d.ts +4 -0
  166. package/dist/types/components/ez-dropdown/structure/DropdownItem.d.ts +1 -1
  167. package/dist/types/components/ez-filter-input/ez-filter-input.d.ts +6 -1
  168. package/dist/types/components/ez-form-view/custom-input/ez-custom-form-input.d.ts +7 -1
  169. package/dist/types/components/ez-form-view/fieldbuilder/templates/SearchInput.tpl.d.ts +1 -1
  170. package/dist/types/components/ez-grid/controller/EzGridController.d.ts +56 -4
  171. package/dist/types/components/ez-grid/controller/ag-grid/AgGridController.d.ts +32 -4
  172. package/dist/types/components/ez-grid/controller/ag-grid/DataSource.d.ts +23 -1
  173. package/dist/types/components/ez-grid/controller/ag-grid/GridEditionManager.d.ts +33 -7
  174. package/dist/types/components/ez-grid/controller/ag-grid/components/EzGridCustomCellEditor.d.ts +4 -1
  175. package/dist/types/components/ez-grid/controller/ag-grid/components/EzGridCustomCellRender.d.ts +1 -1
  176. package/dist/types/components/ez-grid/controller/ag-grid/components/EzGridCustomHeader.d.ts +1 -1
  177. package/dist/types/components/ez-grid/controller/ag-grid/components/cellRendererStatus.d.ts +1 -1
  178. package/dist/types/components/ez-grid/controller/ag-grid/components/selectionHeader.d.ts +1 -1
  179. package/dist/types/components/ez-grid/controller/ag-grid/editor/EzCellEditor.d.ts +2 -1
  180. package/dist/types/components/ez-grid/controller/ag-grid/editor/EzCellRender.d.ts +1 -1
  181. package/dist/types/components/ez-grid/controller/ag-grid/editor/IUICellEditor.d.ts +1 -0
  182. package/dist/types/components/ez-grid/controller/ag-grid/mock/Server.d.ts +1 -1
  183. package/dist/types/components/ez-grid/ez-grid.d.ts +27 -1
  184. package/dist/types/components/ez-modal/ez-modal.d.ts +6 -0
  185. package/dist/types/components/ez-modal-container/ez-modal-container.d.ts +4 -0
  186. package/dist/types/components/ez-number-input/ez-number-input.d.ts +8 -0
  187. package/dist/types/components/ez-popup/ez-popup.d.ts +7 -0
  188. package/dist/types/components/ez-search/ez-search.d.ts +23 -2
  189. package/dist/types/components/ez-split-button/ez-split-button.d.ts +1 -1
  190. package/dist/types/components/ez-text-area/ez-text-area.d.ts +17 -0
  191. package/dist/types/components/ez-text-input/ez-text-input.d.ts +4 -0
  192. package/dist/types/components/ez-time-input/ez-time-input.d.ts +4 -0
  193. package/dist/types/components.d.ts +203 -10
  194. package/dist/types/utils/FocusResolver.d.ts +5 -0
  195. package/dist/types/utils/customEditor/interfaces/ICustomEditor.d.ts +2 -0
  196. package/dist/types/utils/form/DataBinder.d.ts +3 -0
  197. package/dist/types/utils/validators/recordvalidator/IInvalidCells.d.ts +5 -0
  198. package/dist/types/utils/validators/recordvalidator/RecordValidationProcessor.d.ts +1 -1
  199. package/package.json +12 -4
  200. package/dist/cjs/RecordValidationProcessor-4c893e04.js +0 -102
  201. package/dist/cjs/ez-skeleton.cjs.entry.js +0 -67
  202. package/dist/esm/RecordValidationProcessor-b00b8b77.js +0 -99
  203. package/dist/esm/ez-skeleton.entry.js +0 -63
  204. package/dist/ezui/p-034e21ca.entry.js +0 -1
  205. package/dist/ezui/p-044d46d5.entry.js +0 -1
  206. package/dist/ezui/p-04f24913.js +0 -1
  207. package/dist/ezui/p-24ca32a3.entry.js +0 -1
  208. package/dist/ezui/p-2af4e2de.entry.js +0 -1
  209. package/dist/ezui/p-36180f4d.entry.js +0 -1
  210. package/dist/ezui/p-5fefcdc9.entry.js +0 -1
  211. package/dist/ezui/p-752c4069.entry.js +0 -1
  212. package/dist/ezui/p-81cffa53.entry.js +0 -1
  213. package/dist/ezui/p-81f99ace.entry.js +0 -1
  214. package/dist/ezui/p-8eef0f70.entry.js +0 -1
  215. package/dist/ezui/p-9634631d.entry.js +0 -1
  216. package/dist/ezui/p-9a11e223.entry.js +0 -1
  217. package/dist/ezui/p-9a23d513.entry.js +0 -1
  218. package/dist/ezui/p-9c2e2d68.entry.js +0 -1
  219. package/dist/ezui/p-a35b41e6.entry.js +0 -1
  220. package/dist/ezui/p-b0e71d23.entry.js +0 -1
  221. package/dist/ezui/p-b150ccd3.entry.js +0 -304
  222. package/dist/ezui/p-c3b7a23e.entry.js +0 -1
  223. package/dist/ezui/p-cd1a2e6b.entry.js +0 -1
  224. package/dist/ezui/p-dbeee5aa.entry.js +0 -1
  225. package/dist/ezui/p-de870657.entry.js +0 -1
  226. package/dist/ezui/p-e151e795.entry.js +0 -1
  227. package/dist/ezui/p-ee9315ff.entry.js +0 -1
  228. package/dist/ezui/p-f1c3f85d.entry.js +0 -1
  229. package/dist/ezui/p-f291db18.entry.js +0 -1
@@ -129,11 +129,6 @@ input.regular-mode {
129
129
  cursor: pointer;
130
130
  border-radius: 50%;
131
131
  position: relative;
132
-
133
-
134
- /*public*/
135
- width: var(--ez-check--width);
136
- height: var(--ez-check--height);
137
132
  }
138
133
 
139
134
  input.compact{
@@ -363,5 +358,5 @@ input.switch-mode:checked:disabled::after {
363
358
  }
364
359
 
365
360
  .label--padding {
366
- padding-left: var(--space--small);
361
+ padding-left: var(--space--extra-small);
367
362
  }
@@ -73,7 +73,7 @@ ez-icon {
73
73
  .collapsible-box__title {
74
74
  /*private*/
75
75
  position: relative;
76
- width: auto;
76
+ width: 100%;
77
77
  display: flex;
78
78
  box-sizing: border-box;
79
79
  align-items: center;
@@ -98,7 +98,7 @@ ez-icon {
98
98
 
99
99
  .collapsible-box__label {
100
100
  /*private*/
101
- display: flex;
101
+ display: block;
102
102
  white-space: nowrap;
103
103
  overflow: hidden;
104
104
  cursor: pointer;
@@ -303,7 +303,7 @@ li:hover {
303
303
  }
304
304
 
305
305
  .btn:disabled:hover {
306
- cursor: unset;
306
+ cursor: not-allowed;
307
307
 
308
308
  /*public*/
309
309
  color: var(--ez-combo-box__btn-disabled--color);
@@ -1,4 +1,4 @@
1
- import { ElementIDUtils, FloatingManager, ObjectUtils } from "@sankhyalabs/core";
1
+ import { ElementIDUtils, FloatingManager, ObjectUtils, StringUtils } from "@sankhyalabs/core";
2
2
  import { h, Host } from "@stencil/core";
3
3
  import { CSSVarsUtils } from "../../utils";
4
4
  export class EzComboBox {
@@ -25,11 +25,13 @@ export class EzComboBox {
25
25
  this.suppressSearch = false;
26
26
  this.optionLoader = undefined;
27
27
  this.suppressEmptyOption = false;
28
+ this.stopPropagateEnterKeyEvent = true;
28
29
  this.canShowError = true;
29
30
  this.mode = "regular";
30
31
  this.hideErrorOnFocusOut = true;
31
32
  this.listOptionsPosition = undefined;
32
33
  this.isTextSearch = false;
34
+ this.autoFocus = false;
33
35
  }
34
36
  observeErrorMessage() {
35
37
  var _a;
@@ -92,9 +94,9 @@ export class EzComboBox {
92
94
  /**
93
95
  * Aplica o foco no campo.
94
96
  */
95
- async setFocus() {
97
+ async setFocus(options) {
96
98
  if (this._textInput) {
97
- this._textInput.setFocus();
99
+ this._textInput.setFocus(options);
98
100
  }
99
101
  }
100
102
  /**
@@ -254,11 +256,15 @@ export class EzComboBox {
254
256
  : undefined, h("span", { class: "item__label " + (this.showOptionValue ? "item__label--bold" : ""), title: opt.label }, opt.label));
255
257
  }
256
258
  showOptions() {
259
+ var _a, _b;
257
260
  if (!this.enabled)
258
261
  return;
259
262
  if (this.isOptionsVisible()) {
260
263
  return;
261
264
  }
265
+ const valueString = (_b = (_a = this.value) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : this.value;
266
+ const indexValue = this._visibleOptions.findIndex(option => option.value === valueString);
267
+ this._preSelection = indexValue === -1 ? 0 : indexValue;
262
268
  if (!!this._resizeObserver)
263
269
  this._resizeObserver.observe(this._textInput);
264
270
  this._floatingID = FloatingManager.float(this._listWrapper, this._listContainer, { autoClose: true, isFixed: true, backClickListener: () => this.hideOptions() });
@@ -300,11 +306,26 @@ export class EzComboBox {
300
306
  liElem.scrollIntoView({ behavior: "smooth", block: "nearest" });
301
307
  });
302
308
  }
303
- selectCurrentOption() {
309
+ selectCurrentOption(focusOnInput = true) {
304
310
  if (this._preSelection !== undefined) {
305
- this.selectOption(this._visibleOptions[this._preSelection]);
311
+ this.selectOption(this._visibleOptions[this._preSelection], focusOnInput);
306
312
  this._preSelection = undefined;
307
313
  }
314
+ else {
315
+ this.controlListWithOnlyOne(focusOnInput);
316
+ }
317
+ }
318
+ controlListWithOnlyOne(focusOnInput = true) {
319
+ var _a;
320
+ const source = (_a = this._visibleOptions) === null || _a === void 0 ? void 0 : _a.filter((opt) => opt.label !== "" && opt.value != undefined);
321
+ if ((source === null || source === void 0 ? void 0 : source.length) > 0) {
322
+ let title = StringUtils.decodeHtmlEntities(source[0].label);
323
+ const option = {
324
+ value: source[0].value,
325
+ label: title,
326
+ };
327
+ this.selectOption(option, focusOnInput);
328
+ }
308
329
  }
309
330
  updateSource(source) {
310
331
  this._startLoading = false;
@@ -330,7 +351,7 @@ export class EzComboBox {
330
351
  }
331
352
  }
332
353
  }
333
- selectOption(newOption) {
354
+ selectOption(newOption, focusOnInput = true) {
334
355
  var _a, _b;
335
356
  const currentValue = this.getSelectedOption(this.value);
336
357
  if ((((_a = currentValue === null || currentValue === void 0 ? void 0 : currentValue.value) === null || _a === void 0 ? void 0 : _a.toString()) !== ((_b = newOption === null || newOption === void 0 ? void 0 : newOption.value) === null || _b === void 0 ? void 0 : _b.toString()))
@@ -341,6 +362,11 @@ export class EzComboBox {
341
362
  else {
342
363
  this.resetOptions();
343
364
  }
365
+ if (focusOnInput) {
366
+ setTimeout(() => {
367
+ this.setFocus();
368
+ }, 0);
369
+ }
344
370
  }
345
371
  loadOptions(mode, argument = "") {
346
372
  this._criteria = argument;
@@ -362,7 +388,6 @@ export class EzComboBox {
362
388
  this.setInputValue(false);
363
389
  }, this._deboucingTime);
364
390
  }
365
- this.resetOptions();
366
391
  }
367
392
  setInputValue(clearError = true) {
368
393
  const textValue = this.getText();
@@ -425,6 +450,11 @@ export class EzComboBox {
425
450
  }
426
451
  });
427
452
  });
453
+ if (this.autoFocus) {
454
+ requestAnimationFrame(() => {
455
+ this.setFocus({ selectText: true });
456
+ });
457
+ }
428
458
  }
429
459
  //---------------------------------------------
430
460
  // Event handlers
@@ -451,7 +481,7 @@ export class EzComboBox {
451
481
  this.showOptions();
452
482
  }
453
483
  else {
454
- this.hideOptions();
484
+ this._preSelection = undefined;
455
485
  this.updateVisibleOptions();
456
486
  }
457
487
  }
@@ -479,21 +509,38 @@ export class EzComboBox {
479
509
  }
480
510
  switch (event.key) {
481
511
  case "ArrowDown":
482
- this.nextOption();
483
512
  event.stopPropagation();
513
+ if (this.canShowListOptions())
514
+ event.preventDefault();
515
+ this.showOptions();
516
+ this.nextOption();
484
517
  break;
485
518
  case "ArrowUp":
486
- this.previousOption();
487
519
  event.stopPropagation();
520
+ if (this.canShowListOptions())
521
+ event.preventDefault();
522
+ this.showOptions();
523
+ this.previousOption();
488
524
  break;
489
525
  case "Enter":
490
- this.selectCurrentOption();
526
+ this.handleEventPropagation(event);
527
+ if (this.isOptionsVisible()) {
528
+ this.selectCurrentOption();
529
+ }
491
530
  break;
492
531
  case "Escape":
532
+ if (this.isOptionsVisible()) {
533
+ event.stopPropagation();
534
+ }
493
535
  this.cancelPreselection();
536
+ this.resetOptions();
494
537
  break;
495
538
  case "Tab":
496
539
  this._tabPressed = true;
540
+ if (this.isOptionsVisible()) {
541
+ this.selectCurrentOption(false);
542
+ }
543
+ this.resetOptions();
497
544
  break;
498
545
  }
499
546
  //ATENÇÃO: Existe a necessidade de propagar o evento de teclado.
@@ -502,6 +549,12 @@ export class EzComboBox {
502
549
  //e o contexto pode reagir (fechar um popup por exemplo).
503
550
  //event.stopPropagation();
504
551
  }
552
+ //O evento deve ter sua propagação interrompida, apenas se a lista de opções estiver sendo exibida.
553
+ handleEventPropagation(event) {
554
+ if (this._listContainer.hasChildNodes() && this.stopPropagateEnterKeyEvent) {
555
+ event.stopPropagation();
556
+ }
557
+ }
505
558
  onTextInputFocusOutHandler() {
506
559
  if (this.hideErrorOnFocusOut)
507
560
  this.cancelPreselection();
@@ -745,6 +798,24 @@ export class EzComboBox {
745
798
  "reflect": false,
746
799
  "defaultValue": "false"
747
800
  },
801
+ "stopPropagateEnterKeyEvent": {
802
+ "type": "boolean",
803
+ "mutable": false,
804
+ "complexType": {
805
+ "original": "boolean",
806
+ "resolved": "boolean",
807
+ "references": {}
808
+ },
809
+ "required": false,
810
+ "optional": false,
811
+ "docs": {
812
+ "tags": [],
813
+ "text": "Se true, ineterrompe a propaga\u00E7\u00E3o do evento de KeyDown da tecla enter"
814
+ },
815
+ "attribute": "stop-propagate-enter-key-event",
816
+ "reflect": false,
817
+ "defaultValue": "true"
818
+ },
748
819
  "canShowError": {
749
820
  "type": "boolean",
750
821
  "mutable": false,
@@ -835,6 +906,24 @@ export class EzComboBox {
835
906
  "attribute": "is-text-search",
836
907
  "reflect": false,
837
908
  "defaultValue": "false"
909
+ },
910
+ "autoFocus": {
911
+ "type": "boolean",
912
+ "mutable": false,
913
+ "complexType": {
914
+ "original": "boolean",
915
+ "resolved": "boolean",
916
+ "references": {}
917
+ },
918
+ "required": false,
919
+ "optional": false,
920
+ "docs": {
921
+ "tags": [],
922
+ "text": "Se true o campo de texto receber\u00E1 o foco ao ser renderizado."
923
+ },
924
+ "attribute": "auto-focus",
925
+ "reflect": false,
926
+ "defaultValue": "false"
838
927
  }
839
928
  };
840
929
  }
@@ -889,11 +978,18 @@ export class EzComboBox {
889
978
  },
890
979
  "setFocus": {
891
980
  "complexType": {
892
- "signature": "() => Promise<void>",
893
- "parameters": [],
981
+ "signature": "(options?: TFocusOptions) => Promise<void>",
982
+ "parameters": [{
983
+ "tags": [],
984
+ "text": ""
985
+ }],
894
986
  "references": {
895
987
  "Promise": {
896
988
  "location": "global"
989
+ },
990
+ "TFocusOptions": {
991
+ "location": "import",
992
+ "path": "../ez-text-input/ez-text-input"
897
993
  }
898
994
  },
899
995
  "return": "Promise<void>"
@@ -22,7 +22,7 @@
22
22
  }
23
23
 
24
24
  .btn-open-cal:disabled {
25
- cursor: unset;
25
+ cursor: not-allowed;
26
26
  }
27
27
 
28
28
  .btn-open-cal::after {
@@ -12,6 +12,7 @@ export class EzDateInput {
12
12
  this.errorMessage = undefined;
13
13
  this.mode = "regular";
14
14
  this.canShowError = true;
15
+ this.autoFocus = false;
15
16
  }
16
17
  observeLabel() {
17
18
  if (this._textInput) {
@@ -48,8 +49,8 @@ export class EzDateInput {
48
49
  /**
49
50
  * Aplica o foco no campo.
50
51
  */
51
- async setFocus() {
52
- this._textInput.setFocus();
52
+ async setFocus(options) {
53
+ this._textInput.setFocus(options);
53
54
  }
54
55
  /**
55
56
  * Remove o foco do campo.
@@ -81,6 +82,9 @@ export class EzDateInput {
81
82
  if ((currentValue === null || currentValue === void 0 ? void 0 : currentValue.getTime()) !== (newValueValidated === null || newValueValidated === void 0 ? void 0 : newValueValidated.getTime())) {
82
83
  this.value = newValueValidated;
83
84
  }
85
+ else {
86
+ this._changePending = false;
87
+ }
84
88
  }
85
89
  showCalendar() {
86
90
  this.handleBlur();
@@ -164,6 +168,11 @@ export class EzDateInput {
164
168
  componentDidLoad() {
165
169
  CSSVarsUtils.applyVarsTextInput(this._elem, this._textInput);
166
170
  this.setInputValue();
171
+ if (this.autoFocus) {
172
+ requestAnimationFrame(() => {
173
+ this.setFocus({ selectText: true });
174
+ });
175
+ }
167
176
  }
168
177
  render() {
169
178
  ElementIDUtils.addIDInfoIfNotExists(this._elem, 'input');
@@ -289,6 +298,24 @@ export class EzDateInput {
289
298
  "attribute": "can-show-error",
290
299
  "reflect": true,
291
300
  "defaultValue": "true"
301
+ },
302
+ "autoFocus": {
303
+ "type": "boolean",
304
+ "mutable": false,
305
+ "complexType": {
306
+ "original": "boolean",
307
+ "resolved": "boolean",
308
+ "references": {}
309
+ },
310
+ "required": false,
311
+ "optional": false,
312
+ "docs": {
313
+ "tags": [],
314
+ "text": "Se true o campo de texto receber\u00E1 o foco ao ser renderizado."
315
+ },
316
+ "attribute": "auto-focus",
317
+ "reflect": false,
318
+ "defaultValue": "false"
292
319
  }
293
320
  };
294
321
  }
@@ -353,11 +380,18 @@ export class EzDateInput {
353
380
  return {
354
381
  "setFocus": {
355
382
  "complexType": {
356
- "signature": "() => Promise<void>",
357
- "parameters": [],
383
+ "signature": "(options?: TFocusOptions) => Promise<void>",
384
+ "parameters": [{
385
+ "tags": [],
386
+ "text": ""
387
+ }],
358
388
  "references": {
359
389
  "Promise": {
360
390
  "location": "global"
391
+ },
392
+ "TFocusOptions": {
393
+ "location": "import",
394
+ "path": "../ez-text-input/ez-text-input"
361
395
  }
362
396
  },
363
397
  "return": "Promise<void>"
@@ -17,7 +17,7 @@
17
17
  }
18
18
 
19
19
  .btn-open-cal:disabled {
20
- cursor: unset;
20
+ cursor: not-allowed;
21
21
  }
22
22
 
23
23
  .btn-open-cal::after {
@@ -13,6 +13,7 @@ export class EzDateTimeInput {
13
13
  this.showSeconds = false;
14
14
  this.mode = "regular";
15
15
  this.canShowError = true;
16
+ this.autoFocus = false;
16
17
  }
17
18
  observeLabel() {
18
19
  if (this._textInput) {
@@ -49,8 +50,8 @@ export class EzDateTimeInput {
49
50
  /**
50
51
  * Aplica o foco no campo.
51
52
  */
52
- async setFocus() {
53
- this._textInput.setFocus();
53
+ async setFocus(options) {
54
+ this._textInput.setFocus(options);
54
55
  }
55
56
  /**
56
57
  * Remove o foco do campo.
@@ -217,6 +218,11 @@ export class EzDateTimeInput {
217
218
  componentDidLoad() {
218
219
  CSSVarsUtils.applyVarsTextInput(this._elem, this._textInput);
219
220
  this.setInputValue();
221
+ if (this.autoFocus) {
222
+ requestAnimationFrame(() => {
223
+ this.setFocus({ selectText: true });
224
+ });
225
+ }
220
226
  }
221
227
  render() {
222
228
  ElementIDUtils.addIDInfoIfNotExists(this._elem, 'input');
@@ -360,6 +366,24 @@ export class EzDateTimeInput {
360
366
  "attribute": "can-show-error",
361
367
  "reflect": true,
362
368
  "defaultValue": "true"
369
+ },
370
+ "autoFocus": {
371
+ "type": "boolean",
372
+ "mutable": false,
373
+ "complexType": {
374
+ "original": "boolean",
375
+ "resolved": "boolean",
376
+ "references": {}
377
+ },
378
+ "required": false,
379
+ "optional": false,
380
+ "docs": {
381
+ "tags": [],
382
+ "text": "Se true o campo de texto receber\u00E1 o foco ao ser renderizado."
383
+ },
384
+ "attribute": "auto-focus",
385
+ "reflect": false,
386
+ "defaultValue": "false"
363
387
  }
364
388
  };
365
389
  }
@@ -424,11 +448,18 @@ export class EzDateTimeInput {
424
448
  return {
425
449
  "setFocus": {
426
450
  "complexType": {
427
- "signature": "() => Promise<void>",
428
- "parameters": [],
451
+ "signature": "(options?: TFocusOptions) => Promise<void>",
452
+ "parameters": [{
453
+ "tags": [],
454
+ "text": ""
455
+ }],
429
456
  "references": {
430
457
  "Promise": {
431
458
  "location": "global"
459
+ },
460
+ "TFocusOptions": {
461
+ "location": "import",
462
+ "path": "../ez-text-input/ez-text-input"
432
463
  }
433
464
  },
434
465
  "return": "Promise<void>"
@@ -1,6 +1,7 @@
1
1
  import { h, forceUpdate, } from '@stencil/core';
2
2
  import { DialogType } from "./DialogType";
3
3
  import { ElementIDUtils, FloatingManager } from "@sankhyalabs/core";
4
+ import FocusResolver from '../../utils/FocusResolver';
4
5
  class Message {
5
6
  constructor(title, message, dialogType, confirm, icon, labelCancel, labelConfirm, btnConfirmDanger, callBack, beforeClose) {
6
7
  this.title = title;
@@ -164,6 +165,7 @@ export class EzDialog {
164
165
  const dialog = this._element.shadowRoot.querySelector('.overlay .dialog');
165
166
  if (dialog instanceof HTMLDivElement) {
166
167
  dialog.style.outline = 'none';
168
+ this._lastActiveElement = document.activeElement;
167
169
  dialog.focus();
168
170
  }
169
171
  }
@@ -176,7 +178,13 @@ export class EzDialog {
176
178
  focusOnPrimaryButton() {
177
179
  const btnConfirm = this._element.shadowRoot.querySelector(`#${this.PRIMARY_BUTTON_ID}`);
178
180
  const buttonElement = btnConfirm === null || btnConfirm === void 0 ? void 0 : btnConfirm.shadowRoot.querySelector('button');
179
- buttonElement === null || buttonElement === void 0 ? void 0 : buttonElement.focus();
181
+ requestAnimationFrame(() => {
182
+ buttonElement === null || buttonElement === void 0 ? void 0 : buttonElement.focus();
183
+ });
184
+ }
185
+ disconnectedCallback() {
186
+ FocusResolver.resolveFocus(this._lastActiveElement);
187
+ this._lastActiveElement = undefined;
180
188
  }
181
189
  render() {
182
190
  if (this.opened && this._currentMessage) {
@@ -124,14 +124,19 @@ export class EzDropdown {
124
124
  }
125
125
  return groupItems.map((item) => {
126
126
  var _a;
127
- return (item.type !== "divider"
128
- ? h("div", Object.assign({ ref: (ref) => this._itemList[item.id] = ref, class: "ez-dropdown__item", "data-level": level }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: ElementIDUtils.getInternalIDInfo(`${item.id}_ezDropdownItem`) }), h("div", { class: "ez-dropdown__item-content", onClick: (evt) => this.onItemClick(evt, item), onMouseOver: (evt) => this.onShowSubmenu(evt, item) }, this.itemBuilder
129
- ? this.getContainerItemBuilder(item, level, isLockedLevels, hasIcon, hasChildren)
130
- : this.defaultItemBuilder(item, isLockedLevels, hasIcon, hasChildren)), ((_a = item.children) === null || _a === void 0 ? void 0 : _a.length) > 0 &&
131
- !isLockedLevels &&
132
- hasChildren &&
133
- h("div", { ref: (ref) => this._submenuList.push(ref), class: "ez-dropdown__submenu ez-dropdown__submenu--hide" }, this.renderDropdown(item.children, counterLevel)))
134
- : h("hr", Object.assign({ class: "ez-dropdown__divider" }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: ElementIDUtils.getInternalIDInfo(`${item.id}_ezDropdownDivider`) })));
127
+ switch (item.type) {
128
+ case "loading":
129
+ return (h("div", { class: "ez-dropdown__item" }, h("ez-skeleton", { width: '200px' })));
130
+ case "divider":
131
+ return (h("hr", Object.assign({ class: "ez-dropdown__divider" }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: ElementIDUtils.getInternalIDInfo(`${item.id}_ezDropdownDivider`) })));
132
+ case "item":
133
+ return (h("div", Object.assign({ ref: (ref) => this._itemList[item.id] = ref, class: "ez-dropdown__item", "data-level": level }, { [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: ElementIDUtils.getInternalIDInfo(`${item.id}_ezDropdownItem`) }), h("div", { class: "ez-dropdown__item-content", onClick: (evt) => this.onItemClick(evt, item), onMouseOver: (evt) => this.onShowSubmenu(evt, item), onMouseEnter: () => this.ezHover.emit(item) }, this.itemBuilder
134
+ ? this.getContainerItemBuilder(item, level, isLockedLevels, hasIcon, hasChildren)
135
+ : this.defaultItemBuilder(item, isLockedLevels, hasIcon, hasChildren)), ((_a = item.children) === null || _a === void 0 ? void 0 : _a.length) > 0 &&
136
+ !isLockedLevels &&
137
+ hasChildren &&
138
+ h("div", { ref: (ref) => this._submenuList.push(ref), class: "ez-dropdown__submenu ez-dropdown__submenu--hide" }, this.renderDropdown(item.children, counterLevel))));
139
+ }
135
140
  });
136
141
  }
137
142
  renderDropdown(branchItems = this.items, level = 1) {
@@ -370,6 +375,26 @@ export class EzDropdown {
370
375
  "resolved": "void",
371
376
  "references": {}
372
377
  }
378
+ }, {
379
+ "method": "ezHover",
380
+ "name": "ezHover",
381
+ "bubbles": true,
382
+ "cancelable": true,
383
+ "composed": true,
384
+ "docs": {
385
+ "tags": [],
386
+ "text": "Emitido quando ocorrer o ponteiro do mouse \u00E9 colocado sobre um item."
387
+ },
388
+ "complexType": {
389
+ "original": "IDropdownItem",
390
+ "resolved": "IDropdownItem",
391
+ "references": {
392
+ "IDropdownItem": {
393
+ "location": "import",
394
+ "path": "./structure/DropdownItem"
395
+ }
396
+ }
397
+ }
373
398
  }];
374
399
  }
375
400
  static get elementRef() { return "_element"; }
@@ -21,6 +21,7 @@ export class EzFilterInput {
21
21
  this.mode = "regular";
22
22
  this.asyncSearch = false;
23
23
  this.canShowError = true;
24
+ this.autoFocus = false;
24
25
  }
25
26
  observeLabel() {
26
27
  if (this._textInput) {
@@ -41,8 +42,8 @@ export class EzFilterInput {
41
42
  /**
42
43
  * Aplica o foco no campo.
43
44
  */
44
- async setFocus() {
45
- this._textInput.setFocus();
45
+ async setFocus(options) {
46
+ this._textInput.setFocus(options);
46
47
  }
47
48
  /**
48
49
  * Remove o foco do campo.
@@ -95,6 +96,11 @@ export class EzFilterInput {
95
96
  }
96
97
  componentDidLoad() {
97
98
  CSSVarsUtils.applyVarsTextInput(this._elem, this._textInput);
99
+ if (this.autoFocus) {
100
+ requestAnimationFrame(() => {
101
+ this.setFocus({ selectText: true });
102
+ });
103
+ }
98
104
  }
99
105
  render() {
100
106
  ElementIDUtils.addIDInfoIfNotExists(this._elem, 'input');
@@ -253,6 +259,24 @@ export class EzFilterInput {
253
259
  "attribute": "can-show-error",
254
260
  "reflect": true,
255
261
  "defaultValue": "true"
262
+ },
263
+ "autoFocus": {
264
+ "type": "boolean",
265
+ "mutable": false,
266
+ "complexType": {
267
+ "original": "boolean",
268
+ "resolved": "boolean",
269
+ "references": {}
270
+ },
271
+ "required": false,
272
+ "optional": false,
273
+ "docs": {
274
+ "tags": [],
275
+ "text": "Se true o campo de texto receber\u00E1 o foco ao ser renderizado."
276
+ },
277
+ "attribute": "auto-focus",
278
+ "reflect": false,
279
+ "defaultValue": "false"
256
280
  }
257
281
  };
258
282
  }
@@ -308,11 +332,18 @@ export class EzFilterInput {
308
332
  return {
309
333
  "setFocus": {
310
334
  "complexType": {
311
- "signature": "() => Promise<void>",
312
- "parameters": [],
335
+ "signature": "(options?: TFocusOptions) => Promise<void>",
336
+ "parameters": [{
337
+ "tags": [],
338
+ "text": ""
339
+ }],
313
340
  "references": {
314
341
  "Promise": {
315
342
  "location": "global"
343
+ },
344
+ "TFocusOptions": {
345
+ "location": "import",
346
+ "path": "../ez-text-input/ez-text-input"
316
347
  }
317
348
  },
318
349
  "return": "Promise<void>"
@@ -94,6 +94,7 @@ export class EzForm {
94
94
  if (this.dataUnit === undefined) {
95
95
  this.dataUnit = new DataUnit("ez-form");
96
96
  }
97
+ this.dataUnit.unsubscribe(this.onDataUnitAction);
97
98
  this.dataUnit.subscribe(this.onDataUnitAction);
98
99
  this._dataBinder = new DataBinder(this.dataUnit);
99
100
  this._store = createStore(formReducer);