@sankhyalabs/ezui 0.0.0-bugfix-dev-KB-50898.1 → 0.0.0-bugfix-dev-59880.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 (148) hide show
  1. package/dist/cjs/ICustomRender-6fafffce.js +13 -0
  2. package/dist/cjs/ez-actions-button.cjs.entry.js +1 -0
  3. package/dist/cjs/ez-alert-list.cjs.entry.js +11 -1
  4. package/dist/cjs/ez-button.cjs.entry.js +2 -2
  5. package/dist/cjs/ez-collapsible-box.cjs.entry.js +1 -0
  6. package/dist/cjs/ez-combo-box.cjs.entry.js +1 -0
  7. package/dist/cjs/{ez-text-edit.cjs.entry.js → ez-custom-form-input_2.cjs.entry.js} +86 -0
  8. package/dist/cjs/ez-date-input.cjs.entry.js +1 -0
  9. package/dist/cjs/ez-form-view.cjs.entry.js +36 -4
  10. package/dist/cjs/ez-form.cjs.entry.js +51 -2
  11. package/dist/cjs/ez-grid.cjs.entry.js +322 -19
  12. package/dist/cjs/ez-list.cjs.entry.js +1 -1
  13. package/dist/cjs/ez-modal-container.cjs.entry.js +15 -4
  14. package/dist/cjs/ez-modal.cjs.entry.js +7 -8
  15. package/dist/cjs/ez-number-input.cjs.entry.js +9 -2
  16. package/dist/cjs/ez-popup.cjs.entry.js +14 -8
  17. package/dist/cjs/ez-search.cjs.entry.js +6 -2
  18. package/dist/cjs/ez-split-item.cjs.entry.js +3 -2
  19. package/dist/cjs/ezui.cjs.js +1 -1
  20. package/dist/cjs/index-a7b0c73d.js +4 -4
  21. package/dist/cjs/loader.cjs.js +1 -1
  22. package/dist/collection/collection-manifest.json +1 -0
  23. package/dist/collection/components/ez-alert-list/ez-alert-list.js +11 -1
  24. package/dist/collection/components/ez-button/ez-button.css +7 -0
  25. package/dist/collection/components/ez-button/ez-button.js +1 -1
  26. package/dist/collection/components/ez-date-input/ez-date-input.js +1 -0
  27. package/dist/collection/components/ez-form/ez-form.js +130 -4
  28. package/dist/collection/components/ez-form-view/custom-input/ez-custom-form-input.js +245 -0
  29. package/dist/collection/components/ez-form-view/ez-form-view.js +92 -2
  30. package/dist/collection/components/ez-form-view/fieldbuilder/templates/NumberInput.tpl.js +3 -2
  31. package/dist/collection/components/ez-grid/controller/ag-grid/AgGridController.js +62 -4
  32. package/dist/collection/components/ez-grid/controller/ag-grid/GridEditionManager.js +35 -1
  33. package/dist/collection/components/ez-grid/controller/ag-grid/components/EzGridCustomCellEditor.js +58 -0
  34. package/dist/collection/components/ez-grid/controller/ag-grid/components/EzGridCustomCellRender.js +40 -0
  35. package/dist/collection/components/ez-grid/controller/ag-grid/components/test/constants/EzGridCustomCellEditorConstants.js +11 -0
  36. package/dist/collection/components/ez-grid/controller/ag-grid/components/test/constants/EzGridCustomCellRenderConstants.js +11 -0
  37. package/dist/collection/components/ez-grid/controller/ag-grid/editor/EzCellEditor.js +6 -3
  38. package/dist/collection/components/ez-grid/controller/ag-grid/editor/EzCellRender.js +40 -0
  39. package/dist/collection/components/ez-grid/controller/ag-grid/editor/IUICellRender.js +1 -0
  40. package/dist/collection/components/ez-grid/ez-grid.js +206 -2
  41. package/dist/collection/components/ez-grid/interfaces/ICustomFormatter.js +1 -0
  42. package/dist/collection/components/ez-grid/interfaces/index.js +1 -0
  43. package/dist/collection/components/ez-grid/subcomponents/selection-counter.js +3 -11
  44. package/dist/collection/components/ez-grid/subcomponents/utils/selectionCounterUtils.js +22 -0
  45. package/dist/collection/components/ez-grid/test/resources/gridDataUnit.js +19 -0
  46. package/dist/collection/components/ez-list/ez-list.css +6 -2
  47. package/dist/collection/components/ez-modal/ez-modal.js +22 -9
  48. package/dist/collection/components/ez-modal-container/ez-modal-container.css +4 -0
  49. package/dist/collection/components/ez-modal-container/ez-modal-container.js +23 -3
  50. package/dist/collection/components/ez-number-input/ez-number-input.js +12 -1
  51. package/dist/collection/components/ez-popup/ez-popup.js +14 -8
  52. package/dist/collection/components/ez-search/ez-search.js +5 -2
  53. package/dist/collection/components/ez-split-panel/structure/item/ez-split-item.css +0 -7
  54. package/dist/collection/components/ez-split-panel/structure/item/ez-split-item.js +1 -1
  55. package/dist/collection/utils/customEditor/interfaces/ICustomEditor.js +5 -0
  56. package/dist/collection/utils/customEditor/interfaces/ICustomEditorInfo.js +1 -0
  57. package/dist/collection/utils/customRender/interfaces/ICustomRender.js +5 -0
  58. package/dist/collection/utils/customRender/interfaces/ICustomRenderInfo.js +1 -0
  59. package/dist/collection/utils/index.js +2 -0
  60. package/dist/custom-elements/index.d.ts +6 -0
  61. package/dist/custom-elements/index.js +580 -61
  62. package/dist/esm/ICustomRender-875b5a40.js +13 -0
  63. package/dist/esm/ez-actions-button.entry.js +1 -0
  64. package/dist/esm/ez-alert-list.entry.js +11 -1
  65. package/dist/esm/ez-button.entry.js +2 -2
  66. package/dist/esm/ez-collapsible-box.entry.js +1 -0
  67. package/dist/esm/ez-combo-box.entry.js +1 -0
  68. package/dist/esm/{ez-text-edit.entry.js → ez-custom-form-input_2.entry.js} +88 -3
  69. package/dist/esm/ez-date-input.entry.js +1 -0
  70. package/dist/esm/ez-form-view.entry.js +36 -4
  71. package/dist/esm/ez-form.entry.js +51 -2
  72. package/dist/esm/ez-grid.entry.js +322 -19
  73. package/dist/esm/ez-list.entry.js +1 -1
  74. package/dist/esm/ez-modal-container.entry.js +16 -5
  75. package/dist/esm/ez-modal.entry.js +9 -10
  76. package/dist/esm/ez-number-input.entry.js +9 -2
  77. package/dist/esm/ez-popup.entry.js +15 -9
  78. package/dist/esm/ez-search.entry.js +6 -2
  79. package/dist/esm/ez-split-item.entry.js +3 -2
  80. package/dist/esm/ezui.js +1 -1
  81. package/dist/esm/index-baa5e267.js +4 -4
  82. package/dist/esm/loader.js +1 -1
  83. package/dist/ezui/ezui.esm.js +1 -1
  84. package/dist/ezui/p-09de35a2.entry.js +1 -0
  85. package/dist/ezui/p-13d2fe2d.entry.js +1 -0
  86. package/dist/ezui/{p-384247cd.entry.js → p-1f96ba9a.entry.js} +2 -2
  87. package/dist/ezui/p-204b1439.entry.js +1 -0
  88. package/dist/ezui/p-2b8da3a4.entry.js +1 -0
  89. package/dist/ezui/p-30775e7f.entry.js +1 -0
  90. package/dist/ezui/p-4607fb89.js +1 -0
  91. package/dist/ezui/{p-2a1a0e04.entry.js → p-77362d3a.entry.js} +1 -1
  92. package/dist/ezui/{p-8defa6d3.entry.js → p-786559c5.entry.js} +1 -1
  93. package/dist/ezui/p-7922142b.entry.js +1 -0
  94. package/dist/ezui/p-84e439b9.entry.js +1 -0
  95. package/dist/ezui/p-922ac38b.entry.js +1 -0
  96. package/dist/ezui/p-bae4e180.entry.js +1 -0
  97. package/dist/ezui/p-bcb53f27.entry.js +1 -0
  98. package/dist/ezui/p-c942e4a7.entry.js +1 -0
  99. package/dist/ezui/p-d9401ea0.entry.js +1 -0
  100. package/dist/ezui/p-e90dd4eb.entry.js +1 -0
  101. package/dist/ezui/p-f3c526cc.entry.js +1 -0
  102. package/dist/types/components/ez-alert-list/ez-alert-list.d.ts +5 -0
  103. package/dist/types/components/ez-form/ez-form.d.ts +20 -1
  104. package/dist/types/components/ez-form-view/custom-input/ez-custom-form-input.d.ts +41 -0
  105. package/dist/types/components/ez-form-view/ez-form-view.d.ts +11 -0
  106. package/dist/types/components/ez-grid/controller/EzGridController.d.ts +29 -0
  107. package/dist/types/components/ez-grid/controller/ag-grid/AgGridController.d.ts +11 -0
  108. package/dist/types/components/ez-grid/controller/ag-grid/GridEditionManager.d.ts +7 -1
  109. package/dist/types/components/ez-grid/controller/ag-grid/components/EzGridCustomCellEditor.d.ts +19 -0
  110. package/dist/types/components/ez-grid/controller/ag-grid/components/EzGridCustomCellRender.d.ts +14 -0
  111. package/dist/types/components/ez-grid/controller/ag-grid/components/test/constants/EzGridCustomCellEditorConstants.d.ts +11 -0
  112. package/dist/types/components/ez-grid/controller/ag-grid/components/test/constants/EzGridCustomCellRenderConstants.d.ts +11 -0
  113. package/dist/types/components/ez-grid/controller/ag-grid/editor/EzCellEditor.d.ts +3 -0
  114. package/dist/types/components/ez-grid/controller/ag-grid/editor/EzCellRender.d.ts +15 -0
  115. package/dist/types/components/ez-grid/controller/ag-grid/editor/IUICellRender.d.ts +10 -0
  116. package/dist/types/components/ez-grid/ez-grid.d.ts +30 -1
  117. package/dist/types/components/ez-grid/interfaces/ICustomFormatter.d.ts +5 -0
  118. package/dist/types/components/ez-grid/interfaces/index.d.ts +1 -0
  119. package/dist/types/components/ez-grid/subcomponents/utils/selectionCounterUtils.d.ts +4 -0
  120. package/dist/types/components/ez-grid/test/resources/gridDataUnit.d.ts +2 -0
  121. package/dist/types/components/ez-modal/ez-modal.d.ts +9 -1
  122. package/dist/types/components/ez-modal-container/ez-modal-container.d.ts +3 -0
  123. package/dist/types/components/ez-number-input/ez-number-input.d.ts +1 -0
  124. package/dist/types/components/ez-popup/ez-popup.d.ts +3 -3
  125. package/dist/types/components.d.ts +124 -4
  126. package/dist/types/utils/customEditor/interfaces/ICustomEditor.d.ts +29 -0
  127. package/dist/types/utils/customEditor/interfaces/ICustomEditorInfo.d.ts +5 -0
  128. package/dist/types/utils/customRender/interfaces/ICustomRender.d.ts +29 -0
  129. package/dist/types/utils/customRender/interfaces/ICustomRenderInfo.d.ts +5 -0
  130. package/dist/types/utils/index.d.ts +2 -0
  131. package/package.json +1 -1
  132. package/react/components.d.ts +1 -0
  133. package/react/components.js +1 -0
  134. package/react/components.js.map +1 -1
  135. package/dist/ezui/p-0447d17c.entry.js +0 -1
  136. package/dist/ezui/p-20ec22c0.entry.js +0 -1
  137. package/dist/ezui/p-5e1d036e.entry.js +0 -1
  138. package/dist/ezui/p-701231f0.entry.js +0 -1
  139. package/dist/ezui/p-7a636dfc.entry.js +0 -1
  140. package/dist/ezui/p-99ead599.entry.js +0 -1
  141. package/dist/ezui/p-9aefaa52.entry.js +0 -1
  142. package/dist/ezui/p-9f1e89c9.entry.js +0 -1
  143. package/dist/ezui/p-a1ec32ef.entry.js +0 -1
  144. package/dist/ezui/p-b041333c.entry.js +0 -1
  145. package/dist/ezui/p-b567fa8c.entry.js +0 -1
  146. package/dist/ezui/p-bae3d0aa.entry.js +0 -1
  147. package/dist/ezui/p-db77a984.entry.js +0 -1
  148. package/dist/ezui/p-e228ccb9.entry.js +0 -1
@@ -1,6 +1,6 @@
1
1
  import { HTMLElement as HTMLElement$1, createEvent, h, Host, forceUpdate, Fragment, proxyCustomElement } from '@stencil/core/internal/client';
2
2
  export { setAssetPath, setPlatformOptions } from '@stencil/core/internal/client';
3
- import { UserInterface, DateUtils as DateUtils$1, Action, WaitingChangeException, ApplicationContext, DataUnitAction, FloatingManager, ElementIDUtils, ObjectUtils as ObjectUtils$1, JSUtils, StringUtils as StringUtils$1, TimeFormatter, DataUnit, HTMLBuilder, NumberUtils as NumberUtils$1, MaskFormatter, DataType, SortMode, FieldComparator, ArrayUtils as ArrayUtils$1, OverflowWatcher, OVERFLOWED_CLASS_NAME, KeyboardManager } from '@sankhyalabs/core';
3
+ import { UserInterface, DateUtils as DateUtils$1, Action, WaitingChangeException, ApplicationContext, DataUnitAction, FloatingManager, ElementIDUtils, ObjectUtils as ObjectUtils$1, JSUtils, StringUtils as StringUtils$1, HTMLBuilder, TimeFormatter, DataUnit, NumberUtils as NumberUtils$1, MaskFormatter, DataType, SortMode, FieldComparator, ArrayUtils as ArrayUtils$1, OverflowWatcher, OVERFLOWED_CLASS_NAME, KeyboardManager } from '@sankhyalabs/core';
4
4
  import { SelectionMode } from '@sankhyalabs/core/dist/dataunit/DataUnit';
5
5
 
6
6
  // Unique ID creation requires a high quality random # generator. In the browser we therefore
@@ -872,6 +872,18 @@ class Bind {
872
872
  }
873
873
  }
874
874
 
875
+ var CustomEditorSource;
876
+ (function (CustomEditorSource) {
877
+ CustomEditorSource["GRID"] = "GRID";
878
+ CustomEditorSource["FORM"] = "FORM";
879
+ })(CustomEditorSource || (CustomEditorSource = {}));
880
+
881
+ var CustomRenderSource;
882
+ (function (CustomRenderSource) {
883
+ CustomRenderSource["GRID"] = "GRID";
884
+ CustomRenderSource["FORM"] = "FORM";
885
+ })(CustomRenderSource || (CustomRenderSource = {}));
886
+
875
887
  const ezActionsButtonCss = ":host{--ez-actions-button__actions-list--border-radius:var(--border--radius-medium, 12px);--ez-actions-button__actions-list--box-shadow:var(--shadow, 0px 0px 16px 0px #000);--ez-actions-button__actions-list--background-color:var(--background--xlight, #fff);--ez-actions-button__actions-list--padding:var(--space--small, 6px);--ez-actions-button__actions-list--top-margin:var(--space-small, 6px);--ez-actions-button__actions-list--z-index:var(--ez-elevation--8, 8);--ez-actions-button__actions-max-height:415px;--ez-actions-button__btn-action--min-width:'auto';--ez-actions-button__btn-action--background-color:var(--background--xlight, #fff);display:flex;flex-direction:column;height:fit-content;user-select:none}.ez-actions-button__actions-list{display:flex;flex-direction:column;position:fixed;width:fit-content;height:fit-content;overflow-y:auto;scrollbar-width:thin;z-index:var(--ez-actions-button__actions-list--z-index);padding:var(--ez-actions-button__actions-list--padding);margin-top:var(--ez-actions-button__actions-list--top-margin);background-color:var(--ez-actions-button__actions-list--background-color);border-radius:var(--ez-actions-button__actions-list--border-radius);box-shadow:var(--ez-actions-button__actions-list--box-shadow)}.ez-actions-button__actions-list--max-height{max-height:var(--ez-actions-button__actions-max-height)}.ez-actions-button__actions-list--lowered{margin-top:calc(var(--ez-actions-button__actions-list--top-margin) + 6px)}.ez-actions-button__btn-action{--ez-button--justify-content:flex-start;--ez-button--width:100%;--ez-button--min-width:var(--ez-actions-button__btn-action--min-width);--ez-button--background-color:var(--ez-actions-button__btn-action--background-color);--ez-button--font-weight:var(--text-weight--medium, 400);--ez-button--padding-left:var(--space--medium, 12px);--ez-button--padding-right:var(--space--medium, 12px)}.ez-actions-button__btn-action--spaced{--ez-button--padding-left:calc(var(--space--medium, 12px) + 24px)}.ez-actions-button__icon-right{margin-left:var(--space--small, 6px)}.ez-actions-button__icon-check,.ez-actions-button__icon-item{position:absolute;left:var(--space--medium, 12px)}.ez-actions-button__icon-check{color:var(--ez-button--hover-color)}.ez-actions-button__arrow{position:absolute;border-left:10px solid transparent;border-right:10px solid transparent;width:0;height:0;z-index:calc(var(--ez-actions-button__actions-list--z-index) + 1);border-bottom:15px solid var(--ez-actions-button__btn-action--background-color)}.ez-actions-button__arrow--upped{margin-top:calc((var(--ez-actions-button__actions-list--top-margin) + 2px) * -1)}.ez-actions-button__arrow--small{margin-left:6px}.ez-actions-button__arrow--medium{margin-left:11px}.ez-actions-button__arrow--large{margin-left:13px}.ez-actions-button__arrow:only-child{display:none}.ez-actions-button__btn-transparent{--ez-button--background-color:transparent;--ez-button--hover--background-color:transparent;--ez-button--active--background-color:transparent;--ez-button--focus--border:none}.ez-actions-button__btn-label{--ez-button--padding-left:var(--space--medium, 12px);--ez-button--padding-right:var(--space--medium, 12px)}.ez-actions-button__list-container{position:relative}.ez-actions-button--bottom-padding{padding-bottom:var(--space--small, 6px)}";
876
888
 
877
889
  const EzActionsButton$1 = class extends HTMLElement$1 {
@@ -1160,6 +1172,16 @@ const EzAlertList$1 = class extends HTMLElement$1 {
1160
1172
  var _a;
1161
1173
  return (_a = this.alerts.find((alert, index) => this.alertId(alert.title, index) === id)) === null || _a === void 0 ? void 0 : _a.title;
1162
1174
  }
1175
+ /**
1176
+ * Retorna o link para o titulo do alerta a partir do id.
1177
+ */
1178
+ getLinkActionClick(item) {
1179
+ var _a;
1180
+ const action = (_a = this.alerts.find((alert, index) => this.alertId(alert.title, index) === item.id)) === null || _a === void 0 ? void 0 : _a.onClickLink;
1181
+ if (action)
1182
+ return action;
1183
+ return () => { };
1184
+ }
1163
1185
  /**
1164
1186
  * Retorna o texto do título do alerta.
1165
1187
  */
@@ -1250,7 +1272,7 @@ const EzAlertList$1 = class extends HTMLElement$1 {
1250
1272
  (h("div", { ref: elem => (this._overlayRef = elem) }, h("div", { class: `alert-list__container ${this.expanded ? 'expanded' : ''}`, ref: elem => (this._container = elem) }, h("div", { class: "alert-list__content" }, h("div", { class: "alert-list__header" }, h("div", { class: "alert-list__title" }, `Avisos (${this.alerts.length})`), h("div", { class: "alert-list__header__buttons" }, this.enableExpand && (h("ez-button", { mode: "icon", size: "small", iconName: "expand", onClick: () => this.toggleExpandContainer(), "data-element-id": ElementIDUtils.getInternalIDInfo('expandButton'), title: this.expanded ? 'Resumir' : 'Expandir' })), h("ez-button", { mode: "icon", size: "small", iconName: "close", "data-element-id": ElementIDUtils.getInternalIDInfo('closeButton'), onClick: () => {
1251
1273
  this.opened = false;
1252
1274
  }, title: 'Fechar' }))), h("div", { class: "alert-list__expandable-content" }, h("ez-list", { itemSlotBuilder: this.itemRightSlotBuilder, hoverFeedback: true, itemLeftSlotBuilder: item => {
1253
- return (h("a", { href: "#", style: {
1275
+ return (h("a", { onClick: this.getLinkActionClick(item), style: {
1254
1276
  fontFamily: "var(--font-pattern, 'Roboto')",
1255
1277
  fontSize: 'var(--text--medium, 14px)',
1256
1278
  fontWeight: 'var(--text-weight--medium, 400)',
@@ -1689,7 +1711,7 @@ const EzBreadcrumb$1 = class extends HTMLElement$1 {
1689
1711
  static get style() { return ezBreadcrumbCss; }
1690
1712
  };
1691
1713
 
1692
- const ezButtonCss = ":host{--ez-button--min-width:100px;--ez-button--width:'auto';--ez-button--height:42px;--ez-button__icon--width:18px;--ez-button__inline__icon--padding:12px;--ez-button--padding-top:0px;--ez-button--padding-bottom:0px;--ez-button--padding-right:var(--space--large, 24px);--ez-button--padding-left:var(--space--large, 24px);--ez-button--color:var(--title--primary, #FFF);--ez-button--font-size:var(--text--medium, 14px);--ez-button--font-family:var(--font-pattern, Arial);--ez-button--font-weight:var(--text-weight--large);--ez-button--background-color:var(--background--medium, #c0c0c0);--ez-button--border-radius:var(--border--radius-large, 12px);--ez-button--border:none;--ez-button--justify-content:center;--ez-button--hover-color:var(--color--primary-600);--ez-button--hover--background-color:var(--background--medium, var(--ez-button--background-color));--ez-button--disabled-color:var(--text--disable);--ez-button--disabled--background-color:var(--color--disable-secondary);--ez-button--focus--border:var(--border--xlarge, 4px solid) var(--color--primary-300);--ez-button--focus--box-shadow:none;--ez-button--active-color:var(--color--primary-700);--ez-button--active--background-color:var(--background--strong);--ez-button--link-color:var(--color--primary, '#008561');--ez-button--link--hover-color:var(--color--primary-700, '#1C1D22');--ez-button--link--small--font-size:var(--text--small, 12px);--ez-button--link--medium--font-size:var(--text--medium, 14px);--ez-button--link--large--font-size:var(--text--large, 16px)}ez-icon{--ez-icon--color:inherit}button{position:relative;display:flex;align-items:center;margin:0;cursor:pointer;transition:background-color 0.2s linear;white-space:nowrap;min-width:var(--ez-button--min-width);width:var(--ez-button--width);height:var(--ez-button--height);font-family:var(--ez-button--font-family);font-size:var(--ez-button--font-size);font-weight:var(--ez-button--font-weight);padding:var(--ez-button--padding-top) var(--ez-button--padding-right) var(--ez-button--padding-bottom) var(--ez-button--padding-left);border-radius:var(--ez-button--border-radius);background-color:var(--ez-button--background-color);color:var(--ez-button--color);fill:var(--ez-button--color);border:var(--ez-button--border);justify-content:var(--ez-button--justify-content)}button:focus{outline:var(--ez-button--focus--border);box-shadow:var(--ez-button--focus--box-shadow)}button:hover{outline:none;background-color:var(--ez-button--hover--background-color);color:var(--ez-button--hover-color);fill:var(--ez-button--hover-color);--ez-icon--color:var(--ez-button--hover-color)}button:active{outline:none;box-shadow:none;background-color:var(--ez-button--active--background-color);color:var(--ez-button--active-color);fill:var(--ez-button--active-color);--ez-icon--color:var(--ez-button--active-color)}button:disabled{background-color:var(--ez-button--disabled--background-color);color:var(--ez-button--disabled-color);fill:var(--ez-button--disabled-color);border:none;--ez-icon--color:var(--ez-button--disabled-color);cursor:no-drop}.small{height:32px;--ez-button--font-size:var(--text--small, 12px)}.medium{height:42px}.large{height:46px}.btn-icon{padding:0px}.btn-icon--medium{width:42px;min-width:42px;height:42px}.btn-icon--small{width:32px;min-width:32px;height:32px}.btn-icon--large{width:46px;min-width:46px;height:46px}.label-icon{display:flex;flex-direction:column;align-items:center;color:var(--ez-button--color)}.label-icon:hover{color:var(--ez-button--hover-color);fill:var(--ez-button--hover-color);--ez-icon--color:var(--ez-button--hover-color)}.label-icon:active{color:var(--ez-button--active-color);fill:var(--ez-button--active-color);--ez-icon--color:var(--ez-button--active-color)}.label-icon label{max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;font-family:var(--ez-button--font-family);font-size:var(--ez-button--font-size);font-weight:var(--ez-button--font-weight);user-select:none}button:disabled+label{max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;font-family:var(--ez-button--font-family);font-size:var(--ez-button--font-size);font-weight:var(--ez-button--font-weight);color:var(--ez-button--disabled-color);cursor:no-drop}div.label-icon{cursor:pointer}div.label-icon,button:disabled{cursor:no-drop}a{font-family:var(--ez-button--font-family);font-weight:var(--ez-button--font-weight);color:var(--ez-button--link-color);cursor:pointer;display:flex;align-items:center;justify-content:center;}a:hover{color:var(--ez-button--link--hover-color)}a.small{font-size:var(--ez-button--link--small--font-size);line-height:var(--ez-button--link--small--font-size)}a.medium{font-size:var(--ez-button--link--medium--font-size);line-height:var(--ez-button--link--medium--font-size)}a.large{font-size:var(--ez-button--link--large--font-size);line-height:var(--ez-button--link--large--font-size)}";
1714
+ const ezButtonCss = ":host{--ez-button--min-width:100px;--ez-button--width:'auto';--ez-button--height:42px;--ez-button__icon--width:18px;--ez-button__inline__icon--padding:12px;--ez-button--padding-top:0px;--ez-button--padding-bottom:0px;--ez-button--padding-right:var(--space--large, 24px);--ez-button--padding-left:var(--space--large, 24px);--ez-button--color:var(--title--primary, #FFF);--ez-button--font-size:var(--text--medium, 14px);--ez-button--font-family:var(--font-pattern, Arial);--ez-button--font-weight:var(--text-weight--large);--ez-button--background-color:var(--background--medium, #c0c0c0);--ez-button--border-radius:var(--border--radius-large, 12px);--ez-button--border:none;--ez-button--justify-content:center;--ez-button--hover-color:var(--color--primary-600);--ez-button--hover--background-color:var(--background--medium, var(--ez-button--background-color));--ez-button--disabled-color:var(--text--disable);--ez-button--disabled--background-color:var(--color--disable-secondary);--ez-button--focus--border:var(--border--xlarge, 4px solid) var(--color--primary-300);--ez-button--focus--box-shadow:none;--ez-button--active-color:var(--color--primary-700);--ez-button--active--background-color:var(--background--strong);--ez-button--link-color:var(--color--primary, '#008561');--ez-button--link--hover-color:var(--color--primary-700, '#1C1D22');--ez-button--link-disabled-color:var(--color--disable-primary, '#e5eaf0');--ez-button--link--small--font-size:var(--text--small, 12px);--ez-button--link--medium--font-size:var(--text--medium, 14px);--ez-button--link--large--font-size:var(--text--large, 16px)}ez-icon{--ez-icon--color:inherit}button{position:relative;display:flex;align-items:center;margin:0;cursor:pointer;transition:background-color 0.2s linear;white-space:nowrap;min-width:var(--ez-button--min-width);width:var(--ez-button--width);height:var(--ez-button--height);font-family:var(--ez-button--font-family);font-size:var(--ez-button--font-size);font-weight:var(--ez-button--font-weight);padding:var(--ez-button--padding-top) var(--ez-button--padding-right) var(--ez-button--padding-bottom) var(--ez-button--padding-left);border-radius:var(--ez-button--border-radius);background-color:var(--ez-button--background-color);color:var(--ez-button--color);fill:var(--ez-button--color);border:var(--ez-button--border);justify-content:var(--ez-button--justify-content)}button:focus{outline:var(--ez-button--focus--border);box-shadow:var(--ez-button--focus--box-shadow)}button:hover{outline:none;background-color:var(--ez-button--hover--background-color);color:var(--ez-button--hover-color);fill:var(--ez-button--hover-color);--ez-icon--color:var(--ez-button--hover-color)}button:active{outline:none;box-shadow:none;background-color:var(--ez-button--active--background-color);color:var(--ez-button--active-color);fill:var(--ez-button--active-color);--ez-icon--color:var(--ez-button--active-color)}button:disabled{background-color:var(--ez-button--disabled--background-color);color:var(--ez-button--disabled-color);fill:var(--ez-button--disabled-color);border:none;--ez-icon--color:var(--ez-button--disabled-color);cursor:no-drop}.small{height:32px;--ez-button--font-size:var(--text--small, 12px)}.medium{height:42px}.large{height:46px}.btn-icon{padding:0px}.btn-icon--medium{width:42px;min-width:42px;height:42px}.btn-icon--small{width:32px;min-width:32px;height:32px}.btn-icon--large{width:46px;min-width:46px;height:46px}.label-icon{display:flex;flex-direction:column;align-items:center;color:var(--ez-button--color)}.label-icon:hover{color:var(--ez-button--hover-color);fill:var(--ez-button--hover-color);--ez-icon--color:var(--ez-button--hover-color)}.label-icon:active{color:var(--ez-button--active-color);fill:var(--ez-button--active-color);--ez-icon--color:var(--ez-button--active-color)}.label-icon label{max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;font-family:var(--ez-button--font-family);font-size:var(--ez-button--font-size);font-weight:var(--ez-button--font-weight);user-select:none}button:disabled+label{max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;font-family:var(--ez-button--font-family);font-size:var(--ez-button--font-size);font-weight:var(--ez-button--font-weight);color:var(--ez-button--disabled-color);cursor:no-drop}div.label-icon{cursor:pointer}div.label-icon,button:disabled{cursor:no-drop}a{font-family:var(--ez-button--font-family);font-weight:var(--ez-button--font-weight);color:var(--ez-button--link-color);cursor:pointer;display:flex;align-items:center;justify-content:center;}a:hover{color:var(--ez-button--link--hover-color)}a.small{font-size:var(--ez-button--link--small--font-size);line-height:var(--ez-button--link--small--font-size)}a.medium{font-size:var(--ez-button--link--medium--font-size);line-height:var(--ez-button--link--medium--font-size)}a.large{font-size:var(--ez-button--link--large--font-size);line-height:var(--ez-button--link--large--font-size)}a.disabled{color:var(--ez-button--link-disabled-color);cursor:not-allowed}";
1693
1715
 
1694
1716
  const EzButton$1 = class extends HTMLElement$1 {
1695
1717
  constructor() {
@@ -1760,7 +1782,7 @@ const EzButton$1 = class extends HTMLElement$1 {
1760
1782
  return (h("div", { class: "label-icon" }, h("button", { class: "btn-icon " + ((this.getIconSize()) ? `btn-icon--${this.getIconSize()}` : ""), type: "button", disabled: !this.enabled, ref: (el) => this._button = el }, h("ez-icon", { class: "icon", href: this.image, iconName: this.iconName, size: this.getIconSize() })), h("label", { title: this.label }, this.label)));
1761
1783
  }
1762
1784
  else if (this.mode == "link") {
1763
- return (h("a", { class: this.getIconSize(), ref: (el) => this._button = el }, h("slot", { name: "leftIcon", onSlotchange: (ev) => { this.handleSlotChange(ev); } }), this.label, h("slot", { name: "rightIcon", onSlotchange: (ev) => { this.handleSlotChange(ev); } })));
1785
+ return (h("a", { class: `${this.getIconSize()} ${!this.enabled ? "disabled" : ""}`, ref: (el) => this._button = el }, h("slot", { name: "leftIcon", onSlotchange: (ev) => { this.handleSlotChange(ev); } }), this.label, h("slot", { name: "rightIcon", onSlotchange: (ev) => { this.handleSlotChange(ev); } })));
1764
1786
  }
1765
1787
  else {
1766
1788
  return (h("button", { class: this.getIconSize(""), type: "button", disabled: !this.enabled, ref: (el) => this._button = el }, h("slot", { name: "leftIcon", onSlotchange: (ev) => { this.handleSlotChange(ev); } }), this.label, h("slot", { name: "rightIcon", onSlotchange: (ev) => { this.handleSlotChange(ev); } })));
@@ -2908,6 +2930,91 @@ var SearchMode$1;
2908
2930
  SearchMode["PREDICTIVE"] = "PREDICTIVE";
2909
2931
  })(SearchMode$1 || (SearchMode$1 = {}));
2910
2932
 
2933
+ const EzCustomFormInput$1 = class extends HTMLElement$1 {
2934
+ constructor() {
2935
+ super();
2936
+ this.__registerHost();
2937
+ this.gui = undefined;
2938
+ this.customEditor = undefined;
2939
+ this.formViewField = undefined;
2940
+ this.value = undefined;
2941
+ this.detailContext = undefined;
2942
+ this.builderFallback = undefined;
2943
+ }
2944
+ /**
2945
+ * Aplica foco no campo.
2946
+ */
2947
+ async setFocus() {
2948
+ var _a, _b;
2949
+ (_b = (_a = this.gui) === null || _a === void 0 ? void 0 : _a["setFocus"]) === null || _b === void 0 ? void 0 : _b.call(_a);
2950
+ }
2951
+ /**
2952
+ * Remove o foco do campo.
2953
+ */
2954
+ async setBlur() {
2955
+ var _a, _b;
2956
+ (_b = (_a = this.gui) === null || _a === void 0 ? void 0 : _a["setBlur"]) === null || _b === void 0 ? void 0 : _b.call(_a);
2957
+ }
2958
+ /**
2959
+ * Retorna se o conteúdo é inválido.
2960
+ */
2961
+ async isInvalid() {
2962
+ var _a, _b;
2963
+ return ((_b = (_a = this.gui) === null || _a === void 0 ? void 0 : _a["isInvalid"]) === null || _b === void 0 ? void 0 : _b.call(_a)) || false;
2964
+ }
2965
+ getContent() {
2966
+ var _a, _b;
2967
+ const fieldProps = new Map();
2968
+ for (const prop in this.formViewField.props) {
2969
+ fieldProps.set(prop, this.formViewField.props[prop]);
2970
+ }
2971
+ const params = {
2972
+ value: this.value,
2973
+ name: this.formViewField.name,
2974
+ currentEditor: this.builderFallback(this.formViewField),
2975
+ editorMetadata: {
2976
+ label: this.formViewField.label,
2977
+ hidden: ((_a = this.formViewField.props) === null || _a === void 0 ? void 0 : _a.visible) === false,
2978
+ userInterface: this.formViewField.userInterface,
2979
+ options: (_b = this.formViewField.props) === null || _b === void 0 ? void 0 : _b.options,
2980
+ props: this.formViewField.props ? fieldProps : undefined,
2981
+ optionLoader: this.formViewField.optionLoader
2982
+ },
2983
+ source: CustomEditorSource.FORM,
2984
+ detailContext: this.detailContext
2985
+ };
2986
+ let gui = this.customEditor.getEditorElement(params);
2987
+ if (!gui) {
2988
+ gui = this.builderFallback(this.formViewField);
2989
+ this.handleValue(gui);
2990
+ this.gui = gui;
2991
+ return;
2992
+ }
2993
+ if (!(gui instanceof HTMLElement$1) && typeof gui !== 'string') {
2994
+ this.handleValue(gui);
2995
+ this.gui = gui;
2996
+ return;
2997
+ }
2998
+ if (typeof gui === 'string') {
2999
+ gui = HTMLBuilder.parseElement(gui);
3000
+ }
3001
+ gui.setAttribute('value', this.value);
3002
+ this.gui = h("div", { key: StringUtils$1.generateUUID(), ref: el => el && el.appendChild(gui) });
3003
+ }
3004
+ handleValue(gui) {
3005
+ //@ts-ignore
3006
+ gui.$children$.forEach((child) => {
3007
+ child.$attrs$.value = this.value;
3008
+ });
3009
+ }
3010
+ componentWillRender() {
3011
+ this.getContent();
3012
+ }
3013
+ render() {
3014
+ return (h(Host, null, this.gui));
3015
+ }
3016
+ };
3017
+
2911
3018
  const ezDateInputCss = ":host{display:block;width:100%;--ez-date-input__input--background-color:var(--background--medium, #e0e0e0);--ez-date-input__input--border-color:var(--ez-date-input__input--background-color);--ez-date-input__calendar-image:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"16px\" width=\"15px\"><path d=\"M 3.171875,5.25 C 2.6485088,5.25 2.21875,5.6797588 2.21875,6.203125 2.21875,6.7264912 2.6485088,7.15625 3.171875,7.15625 3.6952412,7.15625 4.125,6.7264912 4.125,6.203125 4.125,5.6797588 3.6952412,5.25 3.171875,5.25 Z m 2.875,0 C 5.5235088,5.25 5.09375,5.6797588 5.09375,6.203125 5.09375,6.7264912 5.5235088,7.15625 6.046875,7.15625 6.5702412,7.15625 7,6.7264912 7,6.203125 7,5.6797588 6.5702412,5.25 6.046875,5.25 Z m 2.875,0 c -0.5233662,0 -0.953125,0.4297588 -0.953125,0.953125 0,0.5233662 0.4297588,0.953125 0.953125,0.953125 0.5233662,0 0.9511719,-0.4297588 0.9511719,-0.953125 C 9.8730469,5.6797588 9.4452412,5.25 8.921875,5.25 Z m 2.873047,0 c -0.523366,0 -0.953125,0.4297588 -0.953125,0.953125 0,0.5233662 0.429759,0.953125 0.953125,0.953125 0.523366,0 0.953125,-0.4297588 0.953125,-0.953125 C 12.748047,5.6797588 12.318288,5.25 11.794922,5.25 Z M 3.171875,8.1230469 c -0.5233662,0 -0.953125,0.4297588 -0.953125,0.953125 0,0.5233662 0.4297588,0.9531251 0.953125,0.9531251 0.5233662,0 0.953125,-0.4297589 0.953125,-0.9531251 0,-0.5233662 -0.4297588,-0.953125 -0.953125,-0.953125 z m 2.875,0 c -0.5233662,0 -0.953125,0.4297588 -0.953125,0.953125 0,0.5233662 0.4297588,0.9531251 0.953125,0.9531251 C 6.5702412,10.029297 7,9.5995381 7,9.0761719 7,8.5528057 6.5702412,8.1230469 6.046875,8.1230469 Z m 2.8554688,0 c -0.5233663,0 -0.953125,0.4297588 -0.953125,0.953125 0,0.5233662 0.4297587,0.9531251 0.953125,0.9531251 0.5233661,0 0.9531249,-0.4297589 0.953125,-0.9531251 0,-0.5233662 -0.4297588,-0.953125 -0.953125,-0.953125 z m 2.9003902,0 c -0.523366,0 -0.953125,0.4297588 -0.953125,0.953125 0,0.5233662 0.429759,0.9531251 0.953125,0.9531251 0.523367,0 0.953125,-0.4297589 0.953125,-0.9531251 0,-0.5233662 -0.429758,-0.953125 -0.953125,-0.953125 z M 3.171875,10.998047 c -0.5233662,0 -0.953125,0.429759 -0.953125,0.953125 0,0.523366 0.4297588,0.953125 0.953125,0.953125 0.5233662,0 0.953125,-0.429759 0.953125,-0.953125 0,-0.523366 -0.4297588,-0.953125 -0.953125,-0.953125 z m 2.875,0 c -0.5233662,0 -0.953125,0.429759 -0.953125,0.953125 0,0.523366 0.4297588,0.953125 0.953125,0.953125 C 6.5702412,12.904297 7,12.474538 7,11.951172 7,11.427806 6.5702412,10.998047 6.046875,10.998047 Z m 2.8554688,0 c -0.5233663,0 -0.953125,0.429759 -0.953125,0.953125 0,0.523366 0.4297587,0.953125 0.953125,0.953125 0.5233661,0 0.9531249,-0.429759 0.953125,-0.953125 0,-0.523366 -0.4297588,-0.953125 -0.953125,-0.953125 z m 2.9003902,0 c -0.523366,0 -0.953125,0.429759 -0.953125,0.953125 0,0.523366 0.429759,0.953125 0.953125,0.953125 0.523367,0 0.953125,-0.429759 0.953125,-0.953125 0,-0.523366 -0.429758,-0.953125 -0.953125,-0.953125 z M 3.5,0 c -0.554,0 -1,0.446 -1,1 v 0.050781 C 1.0853217,1.2909766 0,2.5186658 0,4 v 9 c 0,1.652487 1.3475134,3 3,3 h 9 c 1.652487,0 3,-1.347513 3,-3 V 4 C 15,2.5186658 13.914678,1.2909766 12.5,1.0507812 V 1 c 0,-0.554 -0.446,-1 -1,-1 -0.554,0 -1,0.446 -1,1 h -2 c 0,-0.554 -0.446,-1 -1,-1 -0.554,0 -1,0.446 -1,1 h -2 C 4.5,0.446 4.054,0 3.5,0 Z m 1,2.0996094 h 2 v 0.640625 c 0,0.554 0.446,1 1,1 0.554,0 1,-0.446 1,-1 v -0.640625 h 2 v 0.640625 c 0,0.554 0.446,1 1,1 0.554,0 1,-0.446 1,-1 V 2.1738281 C 13.311725,2.3905225 13.900391,3.11278 13.900391,4 v 9 c 0,1.062113 -0.838278,1.900391 -1.900391,1.900391 H 3 C 1.9378864,14.900391 1.0996094,14.062113 1.0996094,13 V 4 C 1.0996094,3.11278 1.6882747,2.3905225 2.5,2.1738281 v 0.5664063 c 0,0.554 0.446,1 1,1 0.554,0 1,-0.446 1,-1 z\"/></svg>')}.btn-open-cal{outline:none;border:none;background-color:unset;cursor:pointer}.btn-open-cal:disabled{cursor:unset}.btn-open-cal::after{content:'';display:flex;background-color:var(--text--primary, #008561);width:15px;height:16px;-webkit-mask-image:var(--ez-date-input__calendar-image);mask-image:var(--ez-date-input__calendar-image)}.btn-open-cal:disabled:after{background-color:var(--text--disable, #AFB6C0)}.btn-open-cal:enabled:hover::after{background-color:var(--color--primary, #4e4e4e)}ez-text-input{--text-input__input--background-color:var(--ez-date-input__input--background-color, #FFFFFF);--text-input__input--border-color:var(--ez-date-input__input--border-color, #DCE0E8)}";
2912
3019
 
2913
3020
  const EzDateInput$1 = class extends HTMLElement$1 {
@@ -3033,6 +3140,7 @@ const EzDateInput$1 = class extends HTMLElement$1 {
3033
3140
  this.ezCancelWaitingChange.emit();
3034
3141
  }
3035
3142
  else {
3143
+ this._focused = false;
3036
3144
  this.changeValue(newValueValidated);
3037
3145
  }
3038
3146
  }
@@ -4604,15 +4712,18 @@ const EzForm$1 = class extends HTMLElement$1 {
4604
4712
  this.ezFormSetFields = createEvent(this, "ezFormSetFields", 7);
4605
4713
  this.ezReady = createEvent(this, "ezReady", 7);
4606
4714
  this.formItemsReady = createEvent(this, "formItemsReady", 7);
4715
+ this._customEditors = new Map();
4607
4716
  this.onDataUnitAction = (action) => {
4608
4717
  if (action.type === Action.METADATA_LOADED) {
4609
4718
  this.processMetadata();
4610
4719
  }
4611
4720
  };
4721
+ this._fieldsProps = new Map();
4612
4722
  this.dataUnit = undefined;
4613
4723
  this.config = undefined;
4614
4724
  this.recordsValidator = undefined;
4615
4725
  this.fieldToFocus = undefined;
4726
+ this.onlyStaticFields = false;
4616
4727
  }
4617
4728
  /**
4618
4729
  * Realiza validação no conteúdo de todos os campos.
@@ -4620,9 +4731,30 @@ const EzForm$1 = class extends HTMLElement$1 {
4620
4731
  validate() {
4621
4732
  return this._dataBinder.validate();
4622
4733
  }
4734
+ /**
4735
+ * Registra um editor customizado para campos da grade e formulário.
4736
+ */
4737
+ async addCustomEditor(fieldName, customEditor, detailContext) {
4738
+ if (this._formView) {
4739
+ this._formView.addCustomEditor(fieldName, customEditor, detailContext);
4740
+ return;
4741
+ }
4742
+ const newCustomEditors = new Map(this._customEditors);
4743
+ newCustomEditors.set(fieldName, { customEditor, detailContext });
4744
+ this._customEditors = newCustomEditors;
4745
+ }
4623
4746
  observeConfig() {
4624
4747
  this.processMetadata();
4625
4748
  }
4749
+ /**
4750
+ * Altera/adiciona uma propriedade nos metadados do campo.
4751
+ */
4752
+ async setFieldProp(fieldName, propName, value) {
4753
+ const newCustomFieldProps = new Map(this._fieldsProps);
4754
+ const currentProps = this._fieldsProps.get(fieldName);
4755
+ newCustomFieldProps.set(fieldName, Object.assign(Object.assign({}, currentProps), { [propName]: value }));
4756
+ this._fieldsProps = newCustomFieldProps;
4757
+ }
4626
4758
  getDynamicContent() {
4627
4759
  var _a;
4628
4760
  const formMD = selectFormMetadata(this._store.getState());
@@ -4649,10 +4781,10 @@ const EzForm$1 = class extends HTMLElement$1 {
4649
4781
  }
4650
4782
  this.ezFormSetFields.emit(fields);
4651
4783
  const idFormSheet = `${StringUtils$1.replaceAccentuatedChars(StringUtils$1.toCamelCase(currentSheet === null || currentSheet === void 0 ? void 0 : currentSheet.label), false)}_selectorContainer`;
4652
- return (h("div", { class: "dynamic-content", "data-element-id": idFormSheet }, h("ez-form-view", { class: "ez-row ez-padding-vertical--small", fields: fields })));
4784
+ return (h("div", { class: "dynamic-content", "data-element-id": idFormSheet }, h("ez-form-view", { ref: (element) => (this._formView = element), class: "ez-row ez-padding-vertical--small", fields: fields })));
4653
4785
  }
4654
4786
  processMetadata() {
4655
- if (!this.isStatic() && this.dataUnit && this._store) {
4787
+ if (this.bindFields() && this.dataUnit && this._store) {
4656
4788
  const metadata = buildFormMetadata(this.config, this.dataUnit);
4657
4789
  this._store.dispatch(loadMetadata(metadata));
4658
4790
  }
@@ -4661,6 +4793,9 @@ const EzForm$1 = class extends HTMLElement$1 {
4661
4793
  var _a;
4662
4794
  return ((_a = this._staticFields) === null || _a === void 0 ? void 0 : _a.length) > 0;
4663
4795
  }
4796
+ bindFields() {
4797
+ return !this.isStatic() || this.onlyStaticFields === false;
4798
+ }
4664
4799
  componentWillLoad() {
4665
4800
  if (this.dataUnit === undefined) {
4666
4801
  this.dataUnit = new DataUnit("ez-form");
@@ -4680,6 +4815,17 @@ const EzForm$1 = class extends HTMLElement$1 {
4680
4815
  this._dataBinder.bind(Array.from(this._element.querySelectorAll("[data-field-name]")), this.dataUnit.dataUnitId, metadata, this.recordsValidator);
4681
4816
  this.ezReady.emit();
4682
4817
  this.handleFieldToFocus();
4818
+ this.setCustomEditors();
4819
+ this.setFieldsProps();
4820
+ }
4821
+ setCustomEditors() {
4822
+ if (!this._formView) {
4823
+ return;
4824
+ }
4825
+ for (const [fieldName, customEditorProps] of this._customEditors) {
4826
+ this._formView.addCustomEditor(fieldName, customEditorProps.customEditor, customEditorProps.detailContext);
4827
+ this._customEditors.delete(fieldName);
4828
+ }
4683
4829
  }
4684
4830
  handleFieldToFocus() {
4685
4831
  var _a;
@@ -4696,6 +4842,17 @@ const EzForm$1 = class extends HTMLElement$1 {
4696
4842
  this.ezFormRequestClearFieldToFocus.emit();
4697
4843
  });
4698
4844
  }
4845
+ setFieldsProps() {
4846
+ if (!this._formView) {
4847
+ return;
4848
+ }
4849
+ for (const [fieldName, props] of this._fieldsProps) {
4850
+ for (const prop in props) {
4851
+ this._formView.setFieldProp(fieldName, prop, props[prop]);
4852
+ }
4853
+ this._fieldsProps.delete(fieldName);
4854
+ }
4855
+ }
4699
4856
  disconnectedCallback() {
4700
4857
  this.dataUnit.unsubscribe(this.onDataUnitAction);
4701
4858
  this._dataBinder.onDisconnectedCallback();
@@ -4772,8 +4929,9 @@ const buildFile = ({ name, label, readOnly, contextName, props }) => {
4772
4929
  };
4773
4930
 
4774
4931
  const buildDecimal$1 = ({ name, label, readOnly, props, contextName, canShowError }) => {
4775
- const precision = Number((props === null || props === void 0 ? void 0 : props.precision) || 2);
4776
- const prettyPrecision = Number((props === null || props === void 0 ? void 0 : props.prettyPrecision) || precision);
4932
+ var _a, _b;
4933
+ const precision = Number((_a = props === null || props === void 0 ? void 0 : props.precision) !== null && _a !== void 0 ? _a : 2);
4934
+ const prettyPrecision = Number((_b = props === null || props === void 0 ? void 0 : props.prettyPrecision) !== null && _b !== void 0 ? _b : precision);
4777
4935
  return buildNumeric$1(name, label, readOnly, precision, prettyPrecision, contextName, canShowError);
4778
4936
  };
4779
4937
  const buildInteger$1 = ({ name, label, readOnly, contextName, canShowError }) => {
@@ -4863,11 +5021,35 @@ const EzFormView$1 = class extends HTMLElement$1 {
4863
5021
  this.__registerHost();
4864
5022
  this.ezContentReady = createEvent(this, "ezContentReady", 7);
4865
5023
  this.formItemsReady = createEvent(this, "formItemsReady", 7);
5024
+ this._customEditors = new Map();
4866
5025
  this.fields = undefined;
4867
5026
  }
4868
5027
  async showUp() {
4869
5028
  this._element.scrollIntoView({ behavior: "smooth", block: "start" });
4870
5029
  }
5030
+ /**
5031
+ * Registra um editor customizado para campos da grade e formulário.
5032
+ */
5033
+ async addCustomEditor(fieldName, customEditor, detailContext) {
5034
+ const newCustomEditors = new Map(this._customEditors);
5035
+ newCustomEditors.set(fieldName, { customEditor, detailContext });
5036
+ this._customEditors = newCustomEditors;
5037
+ }
5038
+ /**
5039
+ * Altera/adiciona uma propriedade nos metados do campo.
5040
+ */
5041
+ async setFieldProp(fieldName, propName, value) {
5042
+ const fields = this.fields.map(field => {
5043
+ if (field.name === fieldName) {
5044
+ field.props = field.props || {};
5045
+ if (value || value === 0) {
5046
+ field.props[propName] = value;
5047
+ }
5048
+ }
5049
+ return field;
5050
+ });
5051
+ this.fields = [...fields];
5052
+ }
4871
5053
  groupFields(fields) {
4872
5054
  const result = new Map();
4873
5055
  fields.forEach(item => {
@@ -4887,8 +5069,9 @@ const EzFormView$1 = class extends HTMLElement$1 {
4887
5069
  return result;
4888
5070
  }
4889
5071
  componentDidRender() {
4890
- this.ezContentReady.emit(Array.from(this._element.querySelectorAll("[data-field-name]")));
4891
- const formItems = new FormItems(Array.from(this._element.querySelectorAll("[data-form-item]")));
5072
+ this._formElements = Array.from(this._element.querySelectorAll("[data-field-name]"));
5073
+ this.ezContentReady.emit(this._formElements);
5074
+ const formItems = new FormItems(this._formElements);
4892
5075
  this.formItemsReady.emit(formItems);
4893
5076
  }
4894
5077
  isItemFullWidth(userInterface) {
@@ -4898,9 +5081,15 @@ const EzFormView$1 = class extends HTMLElement$1 {
4898
5081
  ].includes(userInterface);
4899
5082
  }
4900
5083
  buildFormItemElement(item, classItem = "") {
5084
+ var _a;
4901
5085
  if (this.isItemFullWidth(item.userInterface)) {
4902
5086
  classItem += " input-full_width";
4903
5087
  }
5088
+ if (this._customEditors.has(item.name)) {
5089
+ const value = (_a = this._formElements.map(el => ({ name: el.dataset.fieldName, value: el['value'] })).find(field => field.name === item.name)) === null || _a === void 0 ? void 0 : _a.value;
5090
+ const customEditor = this._customEditors.get(item.name).customEditor;
5091
+ return h("div", { class: classItem }, h("ez-custom-form-input", { "data-field-name": item.name, customEditor: customEditor, formViewField: item, builderFallback: fieldBuilder, value: value }));
5092
+ }
4904
5093
  return h("div", { class: classItem }, fieldBuilder(item));
4905
5094
  }
4906
5095
  render() {
@@ -124329,9 +124518,9 @@ class EzCellEditor {
124329
124518
  init(params) {
124330
124519
  const fieldName = params.column.getColId();
124331
124520
  const dataUnit = params.context.dataUnit;
124332
- const fieldMetadata = buildEditorMetadata(dataUnit.getField(fieldName), params.eGridCell, dataUnit, params.context.editionManager);
124333
- const builder = uiBuilders.get(fieldMetadata.userInterface) || buildTextInput;
124334
- this._gui = builder(fieldMetadata);
124521
+ this._fieldMetadata = buildEditorMetadata(dataUnit.getField(fieldName), params.eGridCell, dataUnit, params.context.editionManager);
124522
+ const builder = uiBuilders.get(this._fieldMetadata.userInterface) || buildTextInput;
124523
+ this._gui = builder(this._fieldMetadata);
124335
124524
  if (this._gui.valueSetter != undefined) {
124336
124525
  this._gui.valueSetter(params.value);
124337
124526
  }
@@ -124355,10 +124544,147 @@ class EzCellEditor {
124355
124544
  isPopup() {
124356
124545
  return this._gui.isPopUp;
124357
124546
  }
124547
+ getFieldMetadata() {
124548
+ return this._fieldMetadata;
124549
+ }
124550
+ }
124551
+
124552
+ class EzGridCustomCellEditor extends EzCellEditor {
124553
+ init(params) {
124554
+ var _a, _b;
124555
+ this._value = params.value;
124556
+ this._fieldName = params.column.getColId();
124557
+ this._customEditorInstance = params.customEditorsInfo.customEditor;
124558
+ super.init(params);
124559
+ this._defaultGui = this.getDefaultGui();
124560
+ const fieldMetadata = super.getFieldMetadata();
124561
+ this._params = {
124562
+ value: params.value,
124563
+ charPress: params.charPress,
124564
+ currentEditor: this._defaultGui,
124565
+ name: this._fieldName,
124566
+ source: CustomEditorSource.GRID,
124567
+ detailContext: params.customEditorsInfo.detailContext,
124568
+ setValue: (value) => this.setValue(value),
124569
+ getValue: () => this.getValue(),
124570
+ editorMetadata: {
124571
+ hidden: ((_a = fieldMetadata.props) === null || _a === void 0 ? void 0 : _a.visible) === false,
124572
+ label: fieldMetadata.label,
124573
+ userInterface: fieldMetadata.userInterface,
124574
+ props: fieldMetadata.props,
124575
+ optionLoader: fieldMetadata.optionLoader,
124576
+ options: ((_b = fieldMetadata.props) === null || _b === void 0 ? void 0 : _b.options) || {},
124577
+ }
124578
+ };
124579
+ }
124580
+ getDefaultGui() {
124581
+ const gui = super.getGui();
124582
+ gui.value = this._value;
124583
+ gui.onkeyup = (event) => {
124584
+ const value = event.target.value;
124585
+ this.setValue(value);
124586
+ };
124587
+ return gui;
124588
+ }
124589
+ getGui() {
124590
+ const editorElement = this._customEditorInstance.getEditorElement(this._params);
124591
+ if (!editorElement) {
124592
+ return this._defaultGui;
124593
+ }
124594
+ if (typeof editorElement === 'string') {
124595
+ const element = HTMLBuilder.parseElement(editorElement);
124596
+ return element;
124597
+ }
124598
+ return editorElement;
124599
+ }
124600
+ setValue(value) {
124601
+ this._value = value;
124602
+ }
124603
+ getValue() {
124604
+ return this._value;
124605
+ }
124606
+ }
124607
+
124608
+ class EzCellRender {
124609
+ init(params) {
124610
+ const span = document.createElement('span');
124611
+ this._currentParams = params;
124612
+ span.textContent = params.value;
124613
+ const fieldName = params.column.getColId();
124614
+ const dataUnit = params.context.dataUnit;
124615
+ this._fieldMetadata = buildEditorMetadata(dataUnit.getField(fieldName), params.eGridCell, dataUnit, params.context.editionManager);
124616
+ this._gui = span;
124617
+ }
124618
+ refresh() {
124619
+ try {
124620
+ this._currentParams.refreshCell();
124621
+ return true;
124622
+ }
124623
+ catch (_a) {
124624
+ return false;
124625
+ }
124626
+ }
124627
+ getGui() {
124628
+ return this._gui;
124629
+ }
124630
+ afterGuiAttached() {
124631
+ this.focusIn();
124632
+ }
124633
+ focusIn() {
124634
+ this._gui.focus();
124635
+ this._gui.setFocus({ selectText: true });
124636
+ }
124637
+ getValue() {
124638
+ return this._currentParams.getValue();
124639
+ }
124640
+ isPopup() {
124641
+ return this._gui.isPopUp;
124642
+ }
124643
+ getFieldMetadata() {
124644
+ return this._fieldMetadata;
124645
+ }
124646
+ }
124647
+
124648
+ class EzGridCustomCellRender extends EzCellRender {
124649
+ init(params) {
124650
+ var _a, _b;
124651
+ this._fieldName = params.column.getColId();
124652
+ this._customRenderInstance = params.customRendersInfo.customRender;
124653
+ super.init(params);
124654
+ const fieldMetadata = super.getFieldMetadata();
124655
+ this._params = {
124656
+ value: params.value,
124657
+ charPress: '',
124658
+ currentRender: super.getGui(),
124659
+ name: this._fieldName,
124660
+ source: CustomRenderSource.GRID,
124661
+ getValue: () => params.getValue(),
124662
+ detailContext: params.customRendersInfo.detailContext,
124663
+ renderMetadata: {
124664
+ hidden: ((_a = fieldMetadata.props) === null || _a === void 0 ? void 0 : _a.visible) === false,
124665
+ label: fieldMetadata.label,
124666
+ userInterface: fieldMetadata.userInterface,
124667
+ props: fieldMetadata.props,
124668
+ optionLoader: fieldMetadata.optionLoader,
124669
+ options: ((_b = fieldMetadata.props) === null || _b === void 0 ? void 0 : _b.options) || {},
124670
+ }
124671
+ };
124672
+ }
124673
+ getGui() {
124674
+ const editorElement = this._customRenderInstance.getRenderElement(this._params);
124675
+ if (!editorElement) {
124676
+ return super.getGui();
124677
+ }
124678
+ if (typeof editorElement === 'string') {
124679
+ const element = HTMLBuilder.parseElement(editorElement);
124680
+ return element;
124681
+ }
124682
+ return editorElement;
124683
+ }
124358
124684
  }
124359
124685
 
124360
124686
  class GridEditionManager {
124361
- constructor(dataUnit, useEnterLikeTab, recordsValidator, editionIsDisabled) {
124687
+ constructor(dataUnit, useEnterLikeTab, recordsValidator, editionIsDisabled, customEditors, customRenders) {
124362
124688
  this._dataUnit = dataUnit;
124363
124689
  this._recordValidationProcessor = new RecordValidationProcessor(this._dataUnit, {
124364
124690
  getRequiredFields: () => this.getRequiredFields(),
@@ -124367,6 +124693,8 @@ class GridEditionManager {
124367
124693
  }, recordsValidator);
124368
124694
  this._useEnterLikeTab = useEnterLikeTab;
124369
124695
  this._editionIsDisabled = editionIsDisabled;
124696
+ this._customEditors = customEditors;
124697
+ this._customRenders = customRenders;
124370
124698
  }
124371
124699
  configureGrid(options) {
124372
124700
  this._gridOptions = options;
@@ -124433,6 +124761,30 @@ class GridEditionManager {
124433
124761
  col.suppressKeyboardEvent = (params) => {
124434
124762
  return params.event.key === KeyCode.ENTER;
124435
124763
  };
124764
+ col.cellEditorSelector = (params) => {
124765
+ var _a;
124766
+ if ((_a = this._customEditors) === null || _a === void 0 ? void 0 : _a.has(params.colDef.field)) {
124767
+ const customEditor = this._customEditors.get(params.colDef.field);
124768
+ return {
124769
+ component: EzGridCustomCellEditor,
124770
+ params: {
124771
+ customEditorsInfo: customEditor,
124772
+ }
124773
+ };
124774
+ }
124775
+ };
124776
+ col.cellRendererSelector = (params) => {
124777
+ var _a;
124778
+ if ((_a = this._customRenders) === null || _a === void 0 ? void 0 : _a.has(params.colDef.field)) {
124779
+ const customRender = this._customRenders.get(params.colDef.field);
124780
+ return {
124781
+ component: EzGridCustomCellRender,
124782
+ params: {
124783
+ customRendersInfo: customRender,
124784
+ }
124785
+ };
124786
+ }
124787
+ };
124436
124788
  return col;
124437
124789
  }
124438
124790
  getRequiredFields() {
@@ -124574,6 +124926,12 @@ class GridEditionManager {
124574
124926
  this._lastCellEdited = { rowIndex: event.rowIndex, column: event.column, rowPinned: undefined };
124575
124927
  }
124576
124928
  }
124929
+ setCellEditors(customEditors) {
124930
+ this._customEditors = customEditors;
124931
+ }
124932
+ setCellRenders(customRenders) {
124933
+ this._customRenders = customRenders;
124934
+ }
124577
124935
  }
124578
124936
  class TargetEdition {
124579
124937
  constructor(rowIndex, column, backwards) {
@@ -124618,6 +124976,7 @@ class AgGridController {
124618
124976
  this._gridConfig = [];
124619
124977
  this._filteredColumns = new Map();
124620
124978
  this._filterColumnleftPosition = 0;
124979
+ this._customFormatters = new Map();
124621
124980
  this._enterprise = enterprise;
124622
124981
  }
124623
124982
  getGridConfig() {
@@ -124701,7 +125060,7 @@ class AgGridController {
124701
125060
  this._doubleClickCallBack = options.onDoubleClick;
124702
125061
  this._multipleSelection = options.allowMultipleSelection;
124703
125062
  this._dataUnit = options.dataUnit;
124704
- this._editionManager = new GridEditionManager(this._dataUnit, options.useEnterLikeTab, options.recordsValidator, options.editionIsDisabled);
125063
+ this._editionManager = new GridEditionManager(this._dataUnit, options.useEnterLikeTab, options.recordsValidator, options.editionIsDisabled, options.customEditors || this._customEditors, options.customRenders || this._customRenders);
124705
125064
  this._statusResolver = options.statusResolver;
124706
125065
  if (this._dataUnit) {
124707
125066
  this._dataUnit.sortingProvider = this;
@@ -124733,6 +125092,13 @@ class AgGridController {
124733
125092
  headerCheckStatusGetter: () => this.getSelectionHeaderStatus(),
124734
125093
  headerCheckStatusSetter: (selectAll) => this.updateSelectionForAll(selectAll),
124735
125094
  },
125095
+ processCellForClipboard: this.processFormatterCellCallback,
125096
+ defaultExcelExportParams: {
125097
+ processCellCallback: this.processFormatterCellCallback
125098
+ },
125099
+ defaultCsvExportParams: {
125100
+ processCellCallback: this.processFormatterCellCallback
125101
+ }
124736
125102
  };
124737
125103
  this.defineRowModelType(this._gridOptions, options);
124738
125104
  this.setOptionsEvents(this._gridOptions);
@@ -124756,7 +125122,25 @@ class AgGridController {
124756
125122
  this.selectRows((selection === null || selection === void 0 ? void 0 : selection.recordIds) || [], true);
124757
125123
  }
124758
125124
  this._gridOptions.api.setHeaderHeight(this.getHeaderRowHeight());
125125
+ this._customFormatters = options.customFormatters;
125126
+ }
125127
+ }
125128
+ processFormatterCellCallback(params) {
125129
+ const column = params.column.getColDef();
125130
+ if (typeof column.valueFormatter === 'function') {
125131
+ const valueParams = {
125132
+ value: params.value,
125133
+ data: params.node.data,
125134
+ node: params.node,
125135
+ colDef: column,
125136
+ column: params.column,
125137
+ api: params.api,
125138
+ columnApi: params.columnApi,
125139
+ context: params.context,
125140
+ };
125141
+ return column.valueFormatter(valueParams);
124759
125142
  }
125143
+ return params.value;
124760
125144
  }
124761
125145
  setFilterColumnLeftPosition({ type, ePopup }) {
124762
125146
  if (type === 'columnMenu') {
@@ -125106,7 +125490,7 @@ class AgGridController {
125106
125490
  //Como vamos reordenar, precisamos considerar o deslocamento provocado por elas.
125107
125491
  const columnsOffset = colDef.length - columns.length;
125108
125492
  let sort = [];
125109
- state.forEach((cfgColumn, index) => {
125493
+ state === null || state === void 0 ? void 0 : state.forEach((cfgColumn, index) => {
125110
125494
  const colWidth = this.getColumnWidth(cfgColumn);
125111
125495
  this._gridOptions.columnApi.moveColumn(cfgColumn.name, index + columnsOffset);
125112
125496
  this._gridOptions.columnApi.setColumnWidth(cfgColumn.name, colWidth);
@@ -125209,6 +125593,13 @@ class AgGridController {
125209
125593
  if (params.value instanceof Promise) {
125210
125594
  return "Carregando...";
125211
125595
  }
125596
+ const customFormatter = this._customFormatters.get(source.name);
125597
+ if (customFormatter) {
125598
+ const formattedValue = customFormatter.format(params.value, source, params.data.__record__id__);
125599
+ if (formattedValue) {
125600
+ return formattedValue;
125601
+ }
125602
+ }
125212
125603
  if (this._dataUnit) {
125213
125604
  return this._dataUnit.getFormattedValue(source.name, params.value);
125214
125605
  }
@@ -125217,6 +125608,13 @@ class AgGridController {
125217
125608
  cellStyle: this.getStyleByColumn(source),
125218
125609
  });
125219
125610
  }
125611
+ setCustomFormatters(customFormatters) {
125612
+ this._customFormatters = customFormatters;
125613
+ }
125614
+ refreshSelectedRows() {
125615
+ const selectedNodes = this._gridOptions.api.getSelectedNodes();
125616
+ this._gridOptions.api.redrawRows({ rowNodes: selectedNodes });
125617
+ }
125220
125618
  getInitCellStyle() {
125221
125619
  return {
125222
125620
  'line-height': this.getRowHeight() - 1 + 'px',
@@ -125392,11 +125790,52 @@ class AgGridController {
125392
125790
  const labelSize = (((_b = field === null || field === void 0 ? void 0 : field.label) === null || _b === void 0 ? void 0 : _b.length) || 0) * this.DEFAULT_FONT_SIZE + this.DEFAULT_ICON_SIZE;
125393
125791
  return labelSize > this.DEFAULT_MAX_SIZE ? this.DEFAULT_MAX_SIZE : labelSize;
125394
125792
  }
125793
+ setCellEditors(customEditors) {
125794
+ var _a;
125795
+ if (!this._editionManager) {
125796
+ this._customEditors = customEditors;
125797
+ return;
125798
+ }
125799
+ this._editionManager.setCellEditors(customEditors);
125800
+ (_a = this._gridOptions) === null || _a === void 0 ? void 0 : _a.api.redrawRows();
125801
+ }
125802
+ setCellRenders(customRenders) {
125803
+ var _a;
125804
+ if (!this._editionManager) {
125805
+ this._customRenders = customRenders;
125806
+ return;
125807
+ }
125808
+ this._editionManager.setCellRenders(customRenders);
125809
+ (_a = this._gridOptions) === null || _a === void 0 ? void 0 : _a.api.redrawRows();
125810
+ }
125811
+ }
125812
+
125813
+ function enableSelectAll(total) {
125814
+ return total !== undefined;
125815
+ }
125816
+ function buildSelectAllLabel(allRecordSelected, count, total) {
125817
+ if (allRecordSelected)
125818
+ return 'Selecionar apenas a página atual';
125819
+ if (total === undefined)
125820
+ return `Carregando todos os ${count} registros`;
125821
+ return `Selecionar todos os ${total} registros`;
125822
+ }
125823
+ function buildSelectAllTitle(total) {
125824
+ if (enableSelectAll(total))
125825
+ return '';
125826
+ return 'Aguarde o carregamento para selecionar o registro de todas as páginas';
125827
+ }
125828
+ function getText(selectionCount, allSelectedRecords) {
125829
+ if (allSelectedRecords) {
125830
+ return `Todos os <strong>${selectionCount} registros</strong> da grade estão selecionados.`;
125831
+ }
125832
+ const pluralCharacter = selectionCount > 1 ? "s" : "";
125833
+ return `Há <strong>${selectionCount} registro${pluralCharacter}</strong> selecionado${pluralCharacter} na grade.`;
125395
125834
  }
125396
125835
 
125397
125836
  const SelectionCounter = (props) => {
125398
125837
  const { selectionCount, currentPageSelected, allRecordSelected, paginationInfo, canSelectAll, onSelectAll, onSelectPage, onClearAll, onClose } = props;
125399
- const { total, hasMore } = paginationInfo || {};
125838
+ const { total, hasMore, count } = paginationInfo || {};
125400
125839
  const shouldRenderSelectionButton = () => {
125401
125840
  if ((!allRecordSelected && selectionCount === total) || (allRecordSelected && !hasMore))
125402
125841
  return false;
@@ -125410,20 +125849,11 @@ const SelectionCounter = (props) => {
125410
125849
  h("label", Object.assign({ innerHTML: getText(selectionCount, allRecordSelected), class: "ez-text ez-text--primary ez-text--medium ez-margin-right--medium ez-margin-top--medium" }, getElementID("ezGridSelectionCounter_label"))),
125411
125850
  h("div", { class: "ez-flex ez-margin-right--medium" },
125412
125851
  shouldRenderSelectionButton() &&
125413
- h("ez-button", Object.assign({ class: "ez-margin-right--medium", label: `Selecionar ${allRecordSelected ? "apenas a página atual" : `todos os ${total} registros`}`, mode: "link", onClick: allRecordSelected ? onSelectPage : onSelectAll }, getElementID(`ezGridSelectionCounter_select${allRecordSelected ? "Page" : "All"}`))),
125414
- h("ez-button", Object.assign({ class: "grid__btn-clear", label: "Limpar", mode: "link", onClick: onClearAll }, getElementID("ezGridSelectionCounter_clearAll"))))),
125852
+ h("ez-button", Object.assign({ title: buildSelectAllTitle(total), enabled: enableSelectAll(total), class: "ez-margin-right--medium", label: buildSelectAllLabel(allRecordSelected, count, total), mode: "link", onClick: allRecordSelected ? onSelectPage : onSelectAll }, getElementID(`ezGridSelectionCounter_select${allRecordSelected ? "Page" : "All"}`))),
125853
+ h("ez-button", Object.assign({ class: "grid__btn-clear", label: "Limpar Sele\u00E7\u00E3o", mode: "link", onClick: onClearAll }, getElementID("ezGridSelectionCounter_clearAll"))))),
125415
125854
  h("button", Object.assign({ class: "grid__btn-close", title: "Fechar", onClick: onClose }, getElementID("ezGridSelectionCounter_close")),
125416
125855
  h("ez-icon", { iconName: "close" })))));
125417
125856
  };
125418
- function getText(selectionCount, allSelectedRecords) {
125419
- if (allSelectedRecords) {
125420
- return `Todos os <strong>${selectionCount} registros</strong> da grade estão selecionados.`;
125421
- }
125422
- else {
125423
- const pluralChar = selectionCount > 1 ? "s" : "";
125424
- return `Há <strong>${selectionCount} registro${pluralChar}</strong> selecionado${pluralChar}.`;
125425
- }
125426
- }
125427
125857
  function getElementID(sufix) {
125428
125858
  return {
125429
125859
  [ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME]: ElementIDUtils.getInternalIDInfo(sufix)
@@ -125604,6 +126034,8 @@ const EzGrid$1 = class extends HTMLElement$1 {
125604
126034
  this.componentReady = createEvent(this, "componentReady", 7);
125605
126035
  this._gridController = new AgGridController(false);
125606
126036
  this._messageFilterAppliedSuccess = 'Filtro de coluna aplicado com sucesso!';
126037
+ this._customEditor = new Map();
126038
+ this._customRenders = new Map();
125607
126039
  this._paginationInfo = undefined;
125608
126040
  this._paginationChangedByKeyboard = true;
125609
126041
  this._showSelectionCounter = false;
@@ -125611,6 +126043,7 @@ const EzGrid$1 = class extends HTMLElement$1 {
125611
126043
  this._currentPageSelected = undefined;
125612
126044
  this._selectionCount = undefined;
125613
126045
  this._hasLeftButtons = false;
126046
+ this._customFormatters = new Map();
125614
126047
  this.multipleSelection = undefined;
125615
126048
  this.config = undefined;
125616
126049
  this.selectionToastConfig = undefined;
@@ -125682,6 +126115,63 @@ const EzGrid$1 = class extends HTMLElement$1 {
125682
126115
  async filterColumns(search) {
125683
126116
  return Promise.resolve(this._gridController.getColumnsState().filter(col => matches(col.label, search)));
125684
126117
  }
126118
+ /**
126119
+ * Registra um editor customizado para campos da grade e formulário.
126120
+ */
126121
+ async addCustomEditor(fieldName, customEditor, detailContext) {
126122
+ const newCustomEditor = new Map(this._customEditor);
126123
+ newCustomEditor.set(fieldName, {
126124
+ customEditor,
126125
+ detailContext,
126126
+ });
126127
+ this._customEditor = newCustomEditor;
126128
+ this._gridController.setCellEditors(newCustomEditor);
126129
+ }
126130
+ /**
126131
+ * Registra um render customizado para colunas da grid.
126132
+ */
126133
+ async addGridCustomRender(fieldName, customRender, detailContext) {
126134
+ const newCustomRenders = new Map(this._customRenders);
126135
+ newCustomRenders.set(fieldName, { customRender, detailContext });
126136
+ this._customRenders = newCustomRenders;
126137
+ this._gridController.setCellRenders(newCustomRenders);
126138
+ }
126139
+ /**
126140
+ * Registra um formatador de valores para uma coluna da grid.
126141
+ */
126142
+ async addCustomValueFormatter(columnName, customFormatter) {
126143
+ if (!columnName || !customFormatter) {
126144
+ return;
126145
+ }
126146
+ const newCustomFormatters = new Map(this._customFormatters);
126147
+ newCustomFormatters.set(columnName, customFormatter);
126148
+ this._customFormatters = newCustomFormatters;
126149
+ this._gridController.setCustomFormatters(newCustomFormatters);
126150
+ }
126151
+ /**
126152
+ * Remove o formatador de valores de uma coluna da grid.
126153
+ */
126154
+ async removeCustomValueFormatter(columnName) {
126155
+ if (!columnName) {
126156
+ return;
126157
+ }
126158
+ const newCustomFormatters = new Map(this._customFormatters);
126159
+ newCustomFormatters.delete(columnName);
126160
+ this._customFormatters = newCustomFormatters;
126161
+ this._gridController.setCustomFormatters(newCustomFormatters);
126162
+ }
126163
+ /**
126164
+ * Atualiza linhas da grade.
126165
+ */
126166
+ async refreshSelectedRows() {
126167
+ this._gridController.refreshSelectedRows();
126168
+ }
126169
+ /**
126170
+ * Retorna o formatador customizado da coluna caso exista.
126171
+ */
126172
+ async getCustomValueFormatter(columnName) {
126173
+ return this._customFormatters.get(columnName);
126174
+ }
125685
126175
  observeConfig(config) {
125686
126176
  this._gridController.setColumnsState(config === null || config === void 0 ? void 0 : config.columns);
125687
126177
  }
@@ -125883,7 +126373,8 @@ const EzGrid$1 = class extends HTMLElement$1 {
125883
126373
  statusResolver: this.statusResolver,
125884
126374
  useEnterLikeTab: this.useEnterLikeTab,
125885
126375
  recordsValidator: this.recordsValidator,
125886
- editionIsDisabled: () => !this.canEdit
126376
+ editionIsDisabled: () => !this.canEdit,
126377
+ customFormatters: this._customFormatters
125887
126378
  });
125888
126379
  if (this.config) {
125889
126380
  this.observeConfig(this.config);
@@ -126131,7 +126622,7 @@ const EzIcon$1 = class extends HTMLElement$1 {
126131
126622
  static get style() { return ezIconCss; }
126132
126623
  };
126133
126624
 
126134
- const ezListCss = ":host {\n /* @doc Define a camada de visibilidae do componente. */\n --ez-list__host--z-index: var(--visible, 1);\n\n /* @doc Define o raio da borda do componente. */\n --ez-list__host--border-radius: var(--border--radius-medium, 12px);\n\n /* @doc Define o espaçamento entre a lista e o componente. */\n --ez-list__host--padding: var(--space--medium, 12px);\n\n /* @doc Define o espaçamento interno do ícone. */\n --ez-list__icon--padding: var(--space--small, 6px);\n\n /* @doc Define a cor do ícone de arrasto do item da lista. */\n --ez-list__icon--color: #AFB6C0;\n\n /* @doc Define o espaçamento externo do item da lista. */\n --ez-list__item--margin: 0 var(--space--small, 6px);\n\n /* @doc Define a cor do texto do item da lista. */\n --ez-list__item--color: var(--title--primary, #2b3a54);\n\n /* @doc Define o estilo borda inferior do item da lista. */\n --ez-list__item--border-bottom;\n\n /* @doc Define a cor da borda inferior do item da lista. */\n --ez-list__item--border-bottom-color;\n\n /* @doc Define o estilo do texto do item da lista. */\n --ez-list__item--font-family: var(--font-pattern, \"Roboto\");\n\n /* @doc Define o tamanho do texto do item da lista. */\n --ez-list__item--font-size: var(--text--medium, 14px);\n \n /* @doc Define o tipo da quebra de linha do item da lista. */\n --ez-list__item--white-space: var(--ez-list__item--white-space, nowrap);\n\n /* @doc Define o espaçamento lateral direito para items selecionados. */\n --ez-list__selectable--padding-right: var(--space--small, 6px);\n \n /* @doc Define o espaçamento lateral esquerdo para items selecionados. */\n --ez-list__selectable--padding-left: var(--space--small, 6px);\n\n /*@doc Define o raio da borda de items selecionados.*/\n --ez-list__selected-item--border-radius: var(--border--radius-small, 6px);\n \n /*@doc Define a cor de fundo de items selecionados.*/\n --ez-list__selected-item--background-color: var(--color--primary-300, #E2F4EF);\n\n /* @doc Define o estilo do texto do grupo da lista. */\n --ez-list__group--font-family: var(--font-pattern, \"Roboto\");\n \n /* @doc Define o tamanho do texto do grupo da lista. */\n --ez-list__group--font-size: var(--text--medium, 14px);\n \n /* @doc Define o peso do texto do grupo da lista. */\n --ez-list__group--font-weight: var(--text-weight--large, 600);\n \n /* @doc Define o espaçamento inferior do grupo da lista. */\n --ez-list__group--padding-bottom: var(--space-small, 6px);\n\n /* @doc Define o estilo do texto da área de transferência de grupos. */\n --ez-list__group-overlay--font-family: var(--font-pattern, \"Roboto\");\n\n /* @doc Define o tamanho do texto da área de transferência de grupos. */\n --ez-list__group-overlay--font-size: var(--text--medium, 14px);\n \n /* @doc Define a cor da borda pontilhada sobre os elementos da lista. */\n --ez-list__over--border--color: var(--color--primary, #008561);\n\n /*@doc Define a altura do container para arrasto para última posição .*/\n --ez-list__last-droppable-space--height: var(--space--small, 6px);\n \n /*@doc Define o espaçamento do container de itens arrastáveis .*/\n --ez-list__draggable-list--padding-bottom: var(--space--small, 6px);\n\n /* @doc Define a imagem do ícone de drag. */\n --ez-list__draggable-icon--image: url('data:image/svg+xml;utf8,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m 6.75,2.25 h 1.5 v 1.5 h -1.5 z m 3,0 h 1.5 v 1.5 h -1.5 z m -3,3 h 1.5 v 1.5 h -1.5 z m 3,0 h 1.5 v 1.5 h -1.5 z m -3,3 h 1.5 v 1.5 h -1.5 z m 3,0 h 1.5 v 1.5 h -1.5 z m -3,3 h 1.5 v 1.5 h -1.5 z m 3,0 h 1.5 v 1.5 h -1.5 z m -3,3 h 1.5 v 1.5 h -1.5 z m 3,0 h 1.5 v 1.5 h -1.5 z\"/></svg>');\n\n /* scrollbar */\n /*@doc Define a cor da barra de rolagem do componente.*/\n --ez-list__scrollbar--color-default: var(--scrollbar--default, #626e82);\n /*@doc Define a cor de fundo da barra de rolagem do componente.*/\n --ez-list__scrollbar--color-background: var(--scrollbar--background, #E5EAF0);\n /*@doc Define a cor do hover na barra de rolagem do componente.*/\n --ez-list__scrollbar--color-hover: var(--scrollbar--hover, #2B3A54);\n /*@doc Define a cor do active na barra de rolagem do componente.*/\n --ez-list__scrollbar--color-clicked: var(--scrollbar--clicked, #a2abb9);\n /*@doc Define o raio da borda da barra de rolagem do componente.*/\n --ez-list__scrollbar--border-radius: var(--border--radius-small, 6px);\n /*@doc Define a largura da barra de rolagem do componente.*/\n --ez-list__scrollbar--width: var(--space--medium, 12px);\n\n max-height: 100%;\n width: 100%;\n background-color: #fff;\n display: flex;\n\n /*public*/\n z-index: var(--ez-list__host--z-index);\n}\n\np {\n margin: 0;\n}\n\n.draggable {\n /* private */\n width: 100%;\n display: grid;\n grid-template-columns: minmax(0px, auto) minmax(0px, auto);\n place-items: center;\n border-top: 1px dashed #fff;\n justify-content: space-between;\n\n /*public*/\n font-family: var(--ez-list__item--font-family);\n font-size: var(--ez-list__item--font-size);\n}\n\n.dragging {\n background: #FFFFFF;\n /* Primary/color--primary */\n\n border: 1px solid #008561;\n box-sizing: border-box;\n box-shadow: 0px 0px 16px rgba(0, 38, 111, 0.122);\n border-radius: 6px;\n}\n\n.selectable {\n cursor: pointer;\n\n /*public*/\n padding-right: var(--ez-list__selectable--padding-right);\n padding-left: var(--ez-list__selectable--padding-left);\n}\n\n.selectable-container {\n margin: 0px !important;\n}\n\n.hover-feedback:hover {\n background-color: var(--background--medium);\n border-radius: var(--border--radius-regular);\n}\n\n.item-content {\n display: flex;\n overflow: hidden;\n justify-content: flex-start;\n width: 100%;\n}\n\n.draggable-list {\n padding: 0;\n margin: 0;\n width: 100%;\n max-height: 100%;\n scrollbar-width: thin;\n \n /*public*/\n color: var(--text-color);\n scrollbar-color: var(--ez-list__scrollbar--color-clicked) var(--ez-list__scrollbar--color-background);\n}\n\n.draggable-list li {\n display: flex;\n \n /*public*/\n padding: var(--space--2xs, 8px) var(--space--3xs, 4px);\n margin: var(--ez-list__item--margin);\n font-family: var(--ez-list__item--font-family);\n font-size: var(--ez-list__item--font-size);\n color: var(--ez-list__item--color);\n border-bottom: var(--ez-list__item--border-bottom, none) var(--ez-list__item--border-bottom-color);\n}\n\n.over {\n /*public*/\n border-top: 1px dashed var(--ez-list__over--border--color);\n}\n\n.last-droppable-space {\n /*public*/\n height: var(--ez-list__last-droppable-space--height);\n}\n\n.draggable-selected {\n /*public*/\n background-color: var(--background--strong) !important;\n}\n\n.draggable-selected div:hover {\n /*public*/\n background-color: var(--background--strong) !important;\n}\n\n.draggable-list::-webkit-scrollbar {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-background);\n width: var(--ez-list__scrollbar--width);\n max-width: var(--ez-list__scrollbar--width);\n min-width: var(--ez-list__scrollbar--width);\n}\n\n.draggable-list::-webkit-scrollbar-track {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-background);\n border-radius: var(--ez-list__scrollbar--border-radius);\n}\n\n.draggable-list::-webkit-scrollbar-thumb {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-default);\n border-radius: var(--ez-list__scrollbar--border-radius);\n}\n\n.draggable-list::-webkit-scrollbar-thumb:vertical:hover,\n.draggable-list::-webkit-scrollbar-thumb:horizontal:hover {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-hover);\n}\n\n.draggable-list::-webkit-scrollbar-thumb:vertical:active,\n.draggable-list::-webkit-scrollbar-thumb:horizontal:active {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-clicked);\n}\n\n.draggable-icon {\n align-items: flex-start;\n display: flex;\n outline: none;\n border: none;\n background-color: unset;\n}\n\n.draggable-icon::after {\n content: '';\n display: flex;\n width: 18px;\n height: 18px;\n\n /*public*/\n background-color: var(--ez-list__icon--color);\n -webkit-mask-image: var(--ez-list__draggable-icon--image);\n mask-image: var(--ez-list__draggable-icon--image);\n}\n\n* {\n box-sizing: border-box;\n}\n\n.checkbox {\n width: fit-content;\n}\n\n.text--ellipsis {\n overflow: hidden;\n text-overflow: ellipsis;\n \n /*public*/\n white-space: var(--ez-list__item--white-space);\n}\n\n.group-container {\n display: flex;\n flex-direction: column;\n max-height: 100%;\n overflow-y: auto;\n outline: none;\n width: 100%;\n scrollbar-width: thin;\n\n /*public*/\n scrollbar-color: var(--ez-list__scrollbar--color-clicked) var(--ez-list__scrollbar--color-background);\n}\n\n.group-name {\n -webkit-user-select: none;\n -moz-user-select: -moz-none;\n -ms-user-select: none;\n user-select: none;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n /*public*/\n color: var(--title--primary);\n font-family: var(--ez-list__group--font-family);\n font-size: var(--ez-list__group--font-size);\n font-weight: var(--ez-list__group--font-weight);\n padding-bottom: var(--ez-list__group--padding-bottom);\n}\n\n.group {\n display: flex;\n flex-direction: column;\n}\n\n.group-container::-webkit-scrollbar {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-background);\n width: var(--ez-list__scrollbar--width);\n max-width: var(--ez-list__scrollbar--width);\n min-width: var(--ez-list__scrollbar--width);\n}\n\n.group-container::-webkit-scrollbar-track {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-background);\n border-radius: var(--ez-list__scrollbar--border-radius);\n}\n\n.group-container::-webkit-scrollbar-thumb {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-default);\n border-radius: var(--ez-list__scrollbar--border-radius);\n}\n\n.group-container::-webkit-scrollbar-thumb:vertical:hover,\n.group-container::-webkit-scrollbar-thumb:horizontal:hover {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-hover);\n}\n\n.group-container::-webkit-scrollbar-thumb:vertical:active,\n.group-container::-webkit-scrollbar-thumb:horizontal:active {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-clicked);\n}\n\n.section-container {\n display: flex;\n position: relative;\n height: 100%;\n}\n\n.items-container {\n width: 100%;\n max-height: 100%;\n outline: none;\n scrollbar-width: thin;\n\n /*public*/\n scrollbar-color: var(--ez-list__scrollbar--color-clicked) var(--ez-list__scrollbar--color-background);\n}\n\n.group-items-container {\n width: 100%;\n max-height: 100%;\n height: 100%;\n outline: none;\n}\n\n.items-container::-webkit-scrollbar {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-background);\n width: var(--ez-list__scrollbar--width);\n max-width: var(--ez-list__scrollbar--width);\n min-width: var(--ez-list__scrollbar--width);\n}\n\n.items-container::-webkit-scrollbar-track {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-background);\n border-radius: var(--ez-list__scrollbar--border-radius);\n}\n\n.items-container::-webkit-scrollbar-thumb {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-default);\n border-radius: var(--ez-list__scrollbar--border-radius);\n}\n\n.items-container::-webkit-scrollbar-thumb:vertical:hover,\n.items-container::-webkit-scrollbar-thumb:horizontal:hover {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-hover);\n}\n\n.items-container::-webkit-scrollbar-thumb:vertical:active,\n.items-container::-webkit-scrollbar-thumb:horizontal:active {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-clicked);\n}\n\n.group-overlay {\n background: rgba(226, 244, 239, 0.8);\n border: 1px solid #008561;\n border-radius: 8px;\n position: absolute;\n display: none;\n place-items: center;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 2;\n margin: 0;\n cursor: pointer;\n\n /*public*/\n font-family: var(--ez-list__group-overlay--font-family);\n font-size: var(--ez-list__group-overlay--font-size);\n}\n\n.presetedHeight {\n min-height: 100px;\n}\n\n.overlay-text {\n position: absolute;\n top: 50%;\n left: 50%;\n font-size: 50px;\n color: white;\n transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n}\n\n.selected-item {\n /*public*/\n background: var(--ez-list__selected-item--background-color);\n border-radius: var(--ez-list__selected-item--border-radius);\n}\n\n.slot-item {\n align-items: flex-end;\n}\n\n.overGroup {\n background: rgba(226, 244, 239, 0.8);\n border: 1px solid #008561;\n box-sizing: border-box;\n border-radius: 8px;\n padding-top: 6px;\n}";
126625
+ const ezListCss = ":host {\n /* @doc Define a camada de visibilidae do componente. */\n --ez-list__host--z-index: var(--visible, 1);\n\n /* @doc Define o raio da borda do componente. */\n --ez-list__host--border-radius: var(--border--radius-medium, 12px);\n\n /* @doc Define o espaçamento entre a lista e o componente. */\n --ez-list__host--padding: var(--space--medium, 12px);\n\n /* @doc Define o espaçamento interno do ícone. */\n --ez-list__icon--padding: var(--space--small, 6px);\n\n /* @doc Define a cor do ícone de arrasto do item da lista. */\n --ez-list__icon--color: #AFB6C0;\n\n /* @doc Define o espaçamento externo do item da lista. */\n --ez-list__item--margin: 0 var(--space--small, 6px);\n\n /* @doc Define a cor do texto do item da lista. */\n --ez-list__item--color: var(--title--primary, #2b3a54);\n\n /* @doc Define o estilo borda inferior do item da lista. */\n --ez-list__item--border-bottom;\n\n /* @doc Define a cor da borda inferior do item da lista. */\n --ez-list__item--border-bottom-color;\n\n /* @doc Define o estilo do texto do item da lista. */\n --ez-list__item--font-family: var(--font-pattern, \"Roboto\");\n\n /* @doc Define o tamanho do texto do item da lista. */\n --ez-list__item--font-size: var(--text--medium, 14px);\n \n /* @doc Define o tipo da quebra de linha do item da lista. */\n --ez-list__item--white-space: var(--ez-list__item--white-space, nowrap);\n\n /* @doc Define o espaçamento lateral direito para items selecionados. */\n --ez-list__selectable--padding-right: var(--space--small, 6px);\n \n /* @doc Define o espaçamento lateral esquerdo para items selecionados. */\n --ez-list__selectable--padding-left: var(--space--small, 6px);\n\n /*@doc Define o raio da borda de items selecionados.*/\n --ez-list__selected-item--border-radius: var(--border--radius-small, 6px);\n \n /*@doc Define a cor de fundo de items selecionados.*/\n --ez-list__selected-item--background-color: var(--color--primary-300, #E2F4EF);\n\n /* @doc Define o estilo do texto do grupo da lista. */\n --ez-list__group--font-family: var(--font-pattern, \"Roboto\");\n \n /* @doc Define o tamanho do texto do grupo da lista. */\n --ez-list__group--font-size: var(--text--medium, 14px);\n \n /* @doc Define o peso do texto do grupo da lista. */\n --ez-list__group--font-weight: var(--text-weight--large, 600);\n \n /* @doc Define o espaçamento inferior do grupo da lista. */\n --ez-list__group--padding-bottom: var(--space-small, 6px);\n\n /* @doc Define o estilo do texto da área de transferência de grupos. */\n --ez-list__group-overlay--font-family: var(--font-pattern, \"Roboto\");\n\n /* @doc Define o tamanho do texto da área de transferência de grupos. */\n --ez-list__group-overlay--font-size: var(--text--medium, 14px);\n \n /* @doc Define a cor da borda pontilhada sobre os elementos da lista. */\n --ez-list__over--border--color: var(--color--primary, #008561);\n\n /*@doc Define a altura do container para arrasto para última posição .*/\n --ez-list__last-droppable-space--height: var(--space--small, 6px);\n \n /*@doc Define o espaçamento do container de itens arrastáveis .*/\n --ez-list__draggable-list--padding-bottom: var(--space--small, 6px);\n\n /* @doc Define a imagem do ícone de drag. */\n --ez-list__draggable-icon--image: url('data:image/svg+xml;utf8,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m 6.75,2.25 h 1.5 v 1.5 h -1.5 z m 3,0 h 1.5 v 1.5 h -1.5 z m -3,3 h 1.5 v 1.5 h -1.5 z m 3,0 h 1.5 v 1.5 h -1.5 z m -3,3 h 1.5 v 1.5 h -1.5 z m 3,0 h 1.5 v 1.5 h -1.5 z m -3,3 h 1.5 v 1.5 h -1.5 z m 3,0 h 1.5 v 1.5 h -1.5 z m -3,3 h 1.5 v 1.5 h -1.5 z m 3,0 h 1.5 v 1.5 h -1.5 z\"/></svg>');\n\n /* scrollbar */\n /*@doc Define a cor da barra de rolagem do componente.*/\n --ez-list__scrollbar--color-default: var(--scrollbar--default, #626e82);\n /*@doc Define a cor de fundo da barra de rolagem do componente.*/\n --ez-list__scrollbar--color-background: var(--scrollbar--background, #E5EAF0);\n /*@doc Define a cor do hover na barra de rolagem do componente.*/\n --ez-list__scrollbar--color-hover: var(--scrollbar--hover, #2B3A54);\n /*@doc Define a cor do active na barra de rolagem do componente.*/\n --ez-list__scrollbar--color-clicked: var(--scrollbar--clicked, #a2abb9);\n /*@doc Define o raio da borda da barra de rolagem do componente.*/\n --ez-list__scrollbar--border-radius: var(--border--radius-small, 6px);\n /*@doc Define a largura da barra de rolagem do componente.*/\n --ez-list__scrollbar--width: var(--space--medium, 12px);\n\n max-height: 100%;\n width: 100%;\n background-color: #fff;\n display: flex;\n\n /*public*/\n z-index: var(--ez-list__host--z-index);\n}\n\np {\n margin: 0;\n}\n\n.draggable {\n /* private */\n width: 100%;\n display: grid;\n grid-template-columns: minmax(0px, auto) minmax(0px, auto);\n place-items: center;\n border-top: 1px dashed #fff;\n justify-content: space-between;\n\n /*public*/\n font-family: var(--ez-list__item--font-family);\n font-size: var(--ez-list__item--font-size);\n}\n\n.dragging {\n background: #FFFFFF;\n /* Primary/color--primary */\n\n border: 1px solid #008561;\n box-sizing: border-box;\n box-shadow: 0px 0px 16px rgba(0, 38, 111, 0.122);\n border-radius: 6px;\n}\n\n.selectable {\n cursor: pointer;\n\n /*public*/\n padding-right: var(--ez-list__selectable--padding-right);\n padding-left: var(--ez-list__selectable--padding-left);\n}\n\n.selectable-container {\n margin: 0px !important;\n}\n\n.hover-feedback:hover {\n background-color: var(--background--medium);\n border-radius: var(--border--radius-regular);\n}\n\n.item-content {\n display: flex;\n overflow: hidden;\n justify-content: flex-start;\n width: 100%;\n}\n\n.draggable-list {\n padding: 0;\n margin: 0;\n width: 100%;\n max-height: 100%;\n scrollbar-width: thin;\n \n /*public*/\n color: var(--text-color);\n scrollbar-color: var(--ez-list__scrollbar--color-clicked) var(--ez-list__scrollbar--color-background);\n}\n\n.draggable-list li {\n display: flex;\n \n /*public*/\n font-family: var(--ez-list__item--font-family);\n font-size: var(--ez-list__item--font-size);\n color: var(--ez-list__item--color);\n border-bottom: var(--ez-list__item--border-bottom, none) var(--ez-list__item--border-bottom-color);\n}\n\n.draggable-list li > div {\n /*public*/\n padding: var(--space--2xs, 8px) var(--space--3xs, 4px);\n margin: var(--ez-list__item--margin);\n}\n\n.over {\n /*public*/\n border-top: 1px dashed var(--ez-list__over--border--color);\n}\n\n.last-droppable-space {\n /*public*/\n height: var(--ez-list__last-droppable-space--height);\n}\n\n.draggable-selected {\n /*public*/\n background-color: var(--background--strong) !important;\n}\n\n.draggable-selected div:hover {\n /*public*/\n background-color: var(--background--strong) !important;\n}\n\n.draggable-list::-webkit-scrollbar {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-background);\n width: var(--ez-list__scrollbar--width);\n max-width: var(--ez-list__scrollbar--width);\n min-width: var(--ez-list__scrollbar--width);\n}\n\n.draggable-list::-webkit-scrollbar-track {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-background);\n border-radius: var(--ez-list__scrollbar--border-radius);\n}\n\n.draggable-list::-webkit-scrollbar-thumb {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-default);\n border-radius: var(--ez-list__scrollbar--border-radius);\n}\n\n.draggable-list::-webkit-scrollbar-thumb:vertical:hover,\n.draggable-list::-webkit-scrollbar-thumb:horizontal:hover {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-hover);\n}\n\n.draggable-list::-webkit-scrollbar-thumb:vertical:active,\n.draggable-list::-webkit-scrollbar-thumb:horizontal:active {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-clicked);\n}\n\n.draggable-icon {\n align-items: flex-start;\n display: flex;\n outline: none;\n border: none;\n background-color: unset;\n}\n\n.draggable-icon::after {\n content: '';\n display: flex;\n width: 18px;\n height: 18px;\n\n /*public*/\n background-color: var(--ez-list__icon--color);\n -webkit-mask-image: var(--ez-list__draggable-icon--image);\n mask-image: var(--ez-list__draggable-icon--image);\n}\n\n* {\n box-sizing: border-box;\n}\n\n.checkbox {\n width: fit-content;\n}\n\n.text--ellipsis {\n overflow: hidden;\n text-overflow: ellipsis;\n \n /*public*/\n white-space: var(--ez-list__item--white-space);\n}\n\n.group-container {\n display: flex;\n flex-direction: column;\n max-height: 100%;\n overflow-y: auto;\n outline: none;\n width: 100%;\n scrollbar-width: thin;\n\n /*public*/\n scrollbar-color: var(--ez-list__scrollbar--color-clicked) var(--ez-list__scrollbar--color-background);\n}\n\n.group-name {\n -webkit-user-select: none;\n -moz-user-select: -moz-none;\n -ms-user-select: none;\n user-select: none;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n /*public*/\n color: var(--title--primary);\n font-family: var(--ez-list__group--font-family);\n font-size: var(--ez-list__group--font-size);\n font-weight: var(--ez-list__group--font-weight);\n padding-bottom: var(--ez-list__group--padding-bottom);\n}\n\n.group {\n display: flex;\n flex-direction: column;\n}\n\n.group-container::-webkit-scrollbar {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-background);\n width: var(--ez-list__scrollbar--width);\n max-width: var(--ez-list__scrollbar--width);\n min-width: var(--ez-list__scrollbar--width);\n}\n\n.group-container::-webkit-scrollbar-track {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-background);\n border-radius: var(--ez-list__scrollbar--border-radius);\n}\n\n.group-container::-webkit-scrollbar-thumb {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-default);\n border-radius: var(--ez-list__scrollbar--border-radius);\n}\n\n.group-container::-webkit-scrollbar-thumb:vertical:hover,\n.group-container::-webkit-scrollbar-thumb:horizontal:hover {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-hover);\n}\n\n.group-container::-webkit-scrollbar-thumb:vertical:active,\n.group-container::-webkit-scrollbar-thumb:horizontal:active {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-clicked);\n}\n\n.section-container {\n display: flex;\n position: relative;\n height: 100%;\n}\n\n.items-container {\n width: 100%;\n max-height: 100%;\n outline: none;\n scrollbar-width: thin;\n\n /*public*/\n scrollbar-color: var(--ez-list__scrollbar--color-clicked) var(--ez-list__scrollbar--color-background);\n}\n\n.group-items-container {\n width: 100%;\n max-height: 100%;\n height: 100%;\n outline: none;\n}\n\n.items-container::-webkit-scrollbar {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-background);\n width: var(--ez-list__scrollbar--width);\n max-width: var(--ez-list__scrollbar--width);\n min-width: var(--ez-list__scrollbar--width);\n}\n\n.items-container::-webkit-scrollbar-track {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-background);\n border-radius: var(--ez-list__scrollbar--border-radius);\n}\n\n.items-container::-webkit-scrollbar-thumb {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-default);\n border-radius: var(--ez-list__scrollbar--border-radius);\n}\n\n.items-container::-webkit-scrollbar-thumb:vertical:hover,\n.items-container::-webkit-scrollbar-thumb:horizontal:hover {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-hover);\n}\n\n.items-container::-webkit-scrollbar-thumb:vertical:active,\n.items-container::-webkit-scrollbar-thumb:horizontal:active {\n /*public*/\n background-color: var(--ez-list__scrollbar--color-clicked);\n}\n\n.group-overlay {\n background: rgba(226, 244, 239, 0.8);\n border: 1px solid #008561;\n border-radius: 8px;\n position: absolute;\n display: none;\n place-items: center;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 2;\n margin: 0;\n cursor: pointer;\n\n /*public*/\n font-family: var(--ez-list__group-overlay--font-family);\n font-size: var(--ez-list__group-overlay--font-size);\n}\n\n.presetedHeight {\n min-height: 100px;\n}\n\n.overlay-text {\n position: absolute;\n top: 50%;\n left: 50%;\n font-size: 50px;\n color: white;\n transform: translate(-50%, -50%);\n -ms-transform: translate(-50%, -50%);\n}\n\n.selected-item {\n /*public*/\n background: var(--ez-list__selected-item--background-color);\n border-radius: var(--ez-list__selected-item--border-radius);\n}\n\n.slot-item {\n align-items: flex-end;\n}\n\n.overGroup {\n background: rgba(226, 244, 239, 0.8);\n border: 1px solid #008561;\n box-sizing: border-box;\n border-radius: 8px;\n padding-top: 6px;\n}";
126135
126626
 
126136
126627
  const EzList$1 = class extends HTMLElement$1 {
126137
126628
  constructor() {
@@ -126721,11 +127212,7 @@ const EzModal$1 = class extends HTMLElement$1 {
126721
127212
  this.__attachShadow();
126722
127213
  this.ezCloseModal = createEvent(this, "ezCloseModal", 7);
126723
127214
  this.ezOpenModal = createEvent(this, "ezOpenModal", 7);
126724
- this.handleKeyboardEvent = (ev) => {
126725
- if ((ev === null || ev === void 0 ? void 0 : ev.key) === "Escape" && this.closeEsc) {
126726
- this.closeModal();
126727
- }
126728
- };
127215
+ this.ezModalAction = createEvent(this, "ezModalAction", 7);
126729
127216
  this.modalSize = undefined;
126730
127217
  this.align = undefined;
126731
127218
  this.heightMode = "regular";
@@ -126737,11 +127224,9 @@ const EzModal$1 = class extends HTMLElement$1 {
126737
127224
  observeOpened() {
126738
127225
  if (this.opened) {
126739
127226
  this._overlayId = FloatingManager.subscribeOverlayControl(this._modalRef);
126740
- document.addEventListener("keydown", this.handleKeyboardEvent);
126741
127227
  }
126742
127228
  else {
126743
127229
  FloatingManager.unsubscribeOverlayControl(this._modalRef || this._overlayId);
126744
- document.removeEventListener("keydown", this.handleKeyboardEvent);
126745
127230
  }
126746
127231
  }
126747
127232
  closeModal() {
@@ -126750,6 +127235,10 @@ const EzModal$1 = class extends HTMLElement$1 {
126750
127235
  }
126751
127236
  componentDidLoad() {
126752
127237
  this.observeOpened();
127238
+ new KeyboardManager({ propagate: false, element: this._element })
127239
+ .bind("Enter", this.ezModalAction.emit.bind("OK"))
127240
+ .bind("Escape", () => this.closeModal())
127241
+ .bind("Esc", () => this.closeModal());
126753
127242
  }
126754
127243
  componentDidRender() {
126755
127244
  if (this.opened) {
@@ -126768,10 +127257,11 @@ const EzModal$1 = class extends HTMLElement$1 {
126768
127257
  const scrimType = `modal__screen-${this.scrim}`;
126769
127258
  return (h(Host, null, this.opened
126770
127259
  ?
126771
- h("div", { ref: ref => this._modalRef = ref, class: `modal ${scrimType} ${regularVerticalPaddingClass}`, onMouseDown: evt => this.onMouseDownHandler(evt) }, h("div", { class: `modal__container modal__container--${positionSufix}`, ref: ref => this._overlay = ref }, h("div", { class: `modal__content ${modalContentHeightMode} ${this.modalSize}` }, h("slot", null))))
127260
+ h("div", { ref: ref => this._modalRef = ref, class: `modal ${scrimType} ${regularVerticalPaddingClass}`, onMouseDown: evt => this.onMouseDownHandler(evt), tabIndex: -1 }, h("div", { class: `modal__container modal__container--${positionSufix}`, ref: ref => this._overlay = ref }, h("div", { class: `modal__content ${modalContentHeightMode} ${this.modalSize}` }, h("slot", null))))
126772
127261
  :
126773
127262
  undefined));
126774
127263
  }
127264
+ get _element() { return this; }
126775
127265
  static get watchers() { return {
126776
127266
  "opened": ["observeOpened"]
126777
127267
  }; }
@@ -126795,7 +127285,7 @@ var ModalButtonStatus;
126795
127285
  })(ModalButtonStatus || (ModalButtonStatus = {}));
126796
127286
  const ModalButtonStatus$1 = ModalButtonStatus;
126797
127287
 
126798
- const ezModalContainerCss = ".sc-ez-modal-container-h{--ez-modal-container-overflow-y:auto;--ez-modal-container-overflow-x:clip;display:grid;grid-template-rows:0 auto 1fr auto 0;width:100%;height:100%}.ez-modal-container__header.sc-ez-modal-container{display:flex;flex-wrap:nowrap;flex-direction:row;justify-content:space-between}.ez-modal-container__content.sc-ez-modal-container{overflow-y:var(--ez-modal-container-overflow-y);overflow-x:var(--ez-modal-container-overflow-x)}.ez-modal-container__content.sc-ez-modal-container::-webkit-scrollbar{width:var(--space--small);min-width:var(--space--small);max-width:var(--space--small)}.ez-modal-container__footer.sc-ez-modal-container{display:flex;flex-direction:row;justify-content:flex-end;gap:var(--space--medium);width:100%;padding-top:var(--space--small, 6px)}.ez-modal-container__title.sc-ez-modal-container{display:grid}.ez-modal-container__close-button.sc-ez-modal-container{cursor:pointer;background-color:transparent;border:none}.ez-modal-container__close-icon.sc-ez-modal-container{--icon--color:var(--title--primary, #2B3A54)}.ez-modal-container__focus-ctrl.sc-ez-modal-container{height:0px;background-color:transparent;border:none}";
127288
+ const ezModalContainerCss = ".sc-ez-modal-container-h{--ez-modal-container-overflow-y:auto;--ez-modal-container-overflow-x:clip;display:grid;grid-template-rows:0 auto 1fr auto 0;width:100%;height:100%}.ez-modal-container__header-container.sc-ez-modal-container{outline:none}.ez-modal-container__header.sc-ez-modal-container{display:flex;flex-wrap:nowrap;flex-direction:row;justify-content:space-between}.ez-modal-container__content.sc-ez-modal-container{overflow-y:var(--ez-modal-container-overflow-y);overflow-x:var(--ez-modal-container-overflow-x)}.ez-modal-container__content.sc-ez-modal-container::-webkit-scrollbar{width:var(--space--small);min-width:var(--space--small);max-width:var(--space--small)}.ez-modal-container__footer.sc-ez-modal-container{display:flex;flex-direction:row;justify-content:flex-end;gap:var(--space--medium);width:100%;padding-top:var(--space--small, 6px)}.ez-modal-container__title.sc-ez-modal-container{display:grid}.ez-modal-container__close-button.sc-ez-modal-container{cursor:pointer;background-color:transparent;border:none}.ez-modal-container__close-icon.sc-ez-modal-container{--icon--color:var(--title--primary, #2B3A54)}.ez-modal-container__focus-ctrl.sc-ez-modal-container{height:0px;background-color:transparent;border:none}";
126799
127289
 
126800
127290
  const EzModalContainer$1 = class extends HTMLElement$1 {
126801
127291
  constructor() {
@@ -126810,6 +127300,12 @@ const EzModalContainer$1 = class extends HTMLElement$1 {
126810
127300
  this.cancelButtonStatus = undefined;
126811
127301
  this.okButtonStatus = undefined;
126812
127302
  }
127303
+ async handleEzModalAction(event) {
127304
+ var _a;
127305
+ if ((event === null || event === void 0 ? void 0 : event.target) && (event === null || event === void 0 ? void 0 : event.target) === ((_a = this._element) === null || _a === void 0 ? void 0 : _a.parentElement)) {
127306
+ this.closeModal();
127307
+ }
127308
+ }
126813
127309
  cancelIsVisible() {
126814
127310
  return (this.cancelButtonStatus !== ModalButtonStatus$1.HIDDEN && this.cancelButtonLabel != undefined);
126815
127311
  }
@@ -126819,11 +127315,15 @@ const EzModalContainer$1 = class extends HTMLElement$1 {
126819
127315
  componentDidLoad() {
126820
127316
  window.requestAnimationFrame(() => {
126821
127317
  this.ezModalAction.emit(ModalAction$1.LOAD);
127318
+ this._modalRef.focus();
126822
127319
  });
126823
127320
  new KeyboardManager({ propagate: false, element: this._element })
126824
127321
  .bind("Enter", this.ezModalAction.emit.bind(ModalAction$1.OK))
126825
- .bind("Escape", this.ezModalAction.emit.bind(ModalAction$1.CANCEL))
126826
- .bind("Esc", this.ezModalAction.emit.bind(ModalAction$1.CANCEL));
127322
+ .bind("Escape", () => this.closeModal())
127323
+ .bind("Esc", () => this.closeModal());
127324
+ }
127325
+ closeModal() {
127326
+ this.ezModalAction.emit("CLOSE");
126827
127327
  }
126828
127328
  focusLast() {
126829
127329
  if (this._okButton == undefined) {
@@ -126835,8 +127335,9 @@ const EzModalContainer$1 = class extends HTMLElement$1 {
126835
127335
  this._closeButton.focus();
126836
127336
  }
126837
127337
  render() {
126838
- return (h(Host, null, h("button", { class: "ez-modal-container__focus-ctrl", onFocusin: () => this.focusLast() }), h("div", null, this.showTitleBar && (h("div", { class: "ez-modal-container__header ez-margin-bottom--large" }, h("div", { class: "ez-col ez-align--middle ez-modal-container__title" }, h("h2", { class: "ez-text ez-title--large ez-title--primary ez-text--bold ez-margin-vertical--extra-small" }, this.modalTitle), this.modalSubTitle && (h("div", { class: "ez-text ez-text--medium ez-text--primary ez-margin-vertical--extra-small" }, this.modalSubTitle))), h("button", { ref: ref => this._closeButton = ref, class: "ez-modal-container__close-button", onClick: () => this.ezModalAction.emit(ModalAction$1.CLOSE) }, h("ez-icon", { class: "ez-modal-container__close-icon", size: "medium", iconName: "close" }))))), h("div", { class: "ez-modal-container__content" }, h("slot", null)), h("div", { class: "ez-modal-container__footer" }, this.cancelIsVisible() && (h("ez-button", { label: this.cancelButtonLabel, enabled: this.cancelButtonStatus !== ModalButtonStatus$1.DISABLED, onClick: () => this.ezModalAction.emit(ModalAction$1.CANCEL) })), this.okIsVisible() && (h("ez-button", { ref: ref => this._okButton = ref, class: "ez-button--primary", label: this.okButtonLabel, enabled: this.okButtonStatus !== ModalButtonStatus$1.DISABLED, onClick: () => this.ezModalAction.emit(ModalAction$1.OK) }))), h("button", { class: "ez-modal-container__focus-ctrl", onFocusin: () => this.focusFirst() })));
127338
+ return (h(Host, null, h("button", { class: "ez-modal-container__focus-ctrl", onFocusin: () => this.focusLast() }), h("div", { ref: ref => this._modalRef = ref, tabIndex: -1, class: "ez-modal-container__header-container" }, this.showTitleBar && (h("div", { class: "ez-modal-container__header ez-margin-bottom--large" }, h("div", { class: "ez-col ez-align--middle ez-modal-container__title" }, h("h2", { class: "ez-text ez-title--large ez-title--primary ez-text--bold ez-margin-vertical--extra-small" }, this.modalTitle), this.modalSubTitle && (h("div", { class: "ez-text ez-text--medium ez-text--primary ez-margin-vertical--extra-small" }, this.modalSubTitle))), h("button", { ref: ref => this._closeButton = ref, class: "ez-modal-container__close-button", onClick: () => this.ezModalAction.emit(ModalAction$1.CLOSE) }, h("ez-icon", { class: "ez-modal-container__close-icon", size: "medium", iconName: "close" }))))), h("div", { class: "ez-modal-container__content" }, h("slot", null)), h("div", { class: "ez-modal-container__footer" }, this.cancelIsVisible() && (h("ez-button", { label: this.cancelButtonLabel, enabled: this.cancelButtonStatus !== ModalButtonStatus$1.DISABLED, onClick: () => this.ezModalAction.emit(ModalAction$1.CANCEL) })), this.okIsVisible() && (h("ez-button", { ref: ref => this._okButton = ref, class: "ez-button--primary", label: this.okButtonLabel, enabled: this.okButtonStatus !== ModalButtonStatus$1.DISABLED, onClick: () => this.ezModalAction.emit(ModalAction$1.OK) }))), h("button", { class: "ez-modal-container__focus-ctrl", onFocusin: () => this.focusFirst() })));
126839
127339
  }
127340
+ get _element() { return this; }
126840
127341
  static get style() { return ezModalContainerCss; }
126841
127342
  };
126842
127343
 
@@ -127108,12 +127609,17 @@ const EzNumberInput$1 = class extends HTMLElement$1 {
127108
127609
  }
127109
127610
  this._changePending = false;
127110
127611
  }
127612
+ observePrecision() {
127613
+ if (this._textInput) {
127614
+ this.setInputValue();
127615
+ }
127616
+ }
127111
127617
  validateValue(value) {
127112
127618
  return isNaN(value) || value === undefined ? null : value;
127113
127619
  }
127114
127620
  getTextValue(value) {
127115
127621
  if (value != undefined) {
127116
- return this.precision > 0 ? NumberUtils$1.format(value.toString(), Number(this.precision), Number(this.prettyPrecision)) : value.toString();
127622
+ return this.precision >= 0 ? NumberUtils$1.format(value.toString(), Number(this.precision), Number(this.prettyPrecision)) : value.toString();
127117
127623
  }
127118
127624
  return undefined;
127119
127625
  }
@@ -127191,7 +127697,9 @@ const EzNumberInput$1 = class extends HTMLElement$1 {
127191
127697
  static get watchers() { return {
127192
127698
  "label": ["observeLabel"],
127193
127699
  "errorMessage": ["observeErrorMessage"],
127194
- "value": ["observeValue"]
127700
+ "value": ["observeValue"],
127701
+ "precision": ["observePrecision"],
127702
+ "prettyPrecision": ["observePrecision"]
127195
127703
  }; }
127196
127704
  static get style() { return ezNumberInputCss; }
127197
127705
  };
@@ -127373,10 +127881,18 @@ const EzPopup$1 = class extends HTMLElement$1 {
127373
127881
  this.manageOverflow();
127374
127882
  }
127375
127883
  componentDidLoad() {
127884
+ if (this.opened && this._popupRef) {
127885
+ this._popupRef.focus();
127886
+ }
127376
127887
  new KeyboardManager({ propagate: false, element: this._element })
127377
127888
  .bind("Enter", this.ezPopupAction.emit.bind("OK"))
127378
- .bind("Escape", () => this.opened = false)
127379
- .bind("Esc", () => this.opened = false);
127889
+ .bind("Escape", () => this.closePopup())
127890
+ .bind("Esc", () => this.closePopup());
127891
+ }
127892
+ closePopup() {
127893
+ this.opened = false;
127894
+ this.manageOverflow();
127895
+ this.ezClosePopup.emit();
127380
127896
  }
127381
127897
  manageOverflow() {
127382
127898
  if (this.opened) {
@@ -127388,25 +127904,23 @@ const EzPopup$1 = class extends HTMLElement$1 {
127388
127904
  }
127389
127905
  manageOverlay() {
127390
127906
  if (this.opened) {
127391
- this._overlayId = FloatingManager.subscribeOverlayControl(this._modalRef);
127907
+ this._overlayId = FloatingManager.subscribeOverlayControl(this._popupRef);
127392
127908
  }
127393
127909
  else {
127394
- FloatingManager.unsubscribeOverlayControl(this._modalRef || this._overlayId);
127910
+ FloatingManager.unsubscribeOverlayControl(this._popupRef || this._overlayId);
127395
127911
  }
127396
127912
  }
127397
127913
  getGridSize() {
127398
127914
  return this._sizeClasses[this.size] || this._sizeClasses["medium"];
127399
127915
  }
127400
127916
  componentDidRender() {
127401
- if (this._container) {
127402
- this._container.focus();
127403
- }
127404
127917
  this.manageOverlay();
127405
127918
  }
127406
127919
  render() {
127407
- return (h(Host, null, this.opened ? (h("div", { class: "overlay", ref: ref => this._modalRef = ref }, h("div", { class: "popup col " + this.getGridSize() }, h("div", { class: "popup__container " + (this.heightMode === "auto" ? "popup__container--auto" : ""), ref: elem => this._container = elem, tabIndex: -1 }, h("div", { class: "popup__content" }, h("div", { class: "popup__header " + (this.useHeader ? "popup__header--padding" : "") }, this.useHeader &&
127920
+ return (h(Host, null, this.opened ? (h("div", { class: "overlay", ref: ref => this._popupRef = ref, tabIndex: -1 }, h("div", { class: "popup col " + this.getGridSize() }, h("div", { class: "popup__container " + (this.heightMode === "auto" ? "popup__container--auto" : "") }, h("div", { class: "popup__content" }, h("div", { class: "popup__header " + (this.useHeader ? "popup__header--padding" : "") }, this.useHeader &&
127408
127921
  h(Fragment, null, !!this.ezTitle && h("div", { class: "popup__title" }, this.ezTitle), h("button", { class: this.ezTitle ? "btn-close" : "btn-close btn-close--solo", onClick: () => { this.opened = false; this.ezClosePopup.emit(); } }))), h("div", { class: "popup__expandable-content" }, h("slot", null))))))) : undefined));
127409
127922
  }
127923
+ get _element() { return this; }
127410
127924
  static get watchers() { return {
127411
127925
  "opened": ["observeConfig"]
127412
127926
  }; }
@@ -127957,9 +128471,12 @@ const EzSearch$1 = class extends HTMLElement$1 {
127957
128471
  }
127958
128472
  scrollToOption(opt) {
127959
128473
  window.requestAnimationFrame(() => {
127960
- const liElem = (opt === null || opt === void 0 ? void 0 : opt.value) ? this._optionsList.querySelector(`div#item_${this.replaceHighlight(opt.value).replace(/[<>\[\]#=]/g, '\\$&').replace(/:/g, '\\:')}`) : undefined;
127961
- if (liElem)
128474
+ const liElem = (opt === null || opt === void 0 ? void 0 : opt.value)
128475
+ ? this._optionsList.querySelector(`div#item_${opt.value.replace(/([ #;&,.+*~':"!^$[\]()=<>|/\\])/g, '\\$1')}`)
128476
+ : undefined;
128477
+ if (liElem) {
127962
128478
  liElem.scrollIntoView({ behavior: "smooth", block: "nearest" });
128479
+ }
127963
128480
  });
127964
128481
  }
127965
128482
  selectCurrentOption() {
@@ -128567,7 +129084,7 @@ const EzSplitButton$1 = class extends HTMLElement$1 {
128567
129084
  static get style() { return ezSplitButtonCss; }
128568
129085
  };
128569
129086
 
128570
- const ezSplitItemCss = "ez-split-item{--snk-grid-min-height:0;--ez-grid--min-height:0}.box_split-item{background-color:var(--background--xlight);width:100%;height:100%;border-radius:var(--border--radius-medium);box-shadow:var(--shadow);flex-direction:column;overflow:hidden;display:flex;padding:var(--space--nano)}.box_split-item>.ez-split-item--content{overflow:auto}.expanded__item{position:absolute;z-index:var(--more-visible);top:0;left:0;width:100%;height:100%}.ez-split-item--header{display:flex;align-items:center;justify-content:space-between}.ez-split-item--header-title{flex:1;white-space:nowrap;overflow:hidden}.ez-split-item--header-title h3{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ez-split-item--header-buttons{display:flex;align-items:center}.ez-split-item--content{display:block;height:100%}h3.ez-margin--small{margin-left:var(--space--small)}";
129087
+ const ezSplitItemCss = ".box_split-item{background-color:var(--background--xlight);width:100%;height:100%;border-radius:var(--border--radius-medium);box-shadow:var(--shadow);flex-direction:column;overflow:hidden;display:flex;padding:var(--space--nano)}.box_split-item>.ez-split-item--content{overflow:auto}.expanded__item{position:absolute;z-index:var(--more-visible);top:0;left:0;width:100%;height:100%}.ez-split-item--header{display:flex;align-items:center;justify-content:space-between}.ez-split-item--header-title{flex:1;white-space:nowrap;overflow:hidden}.ez-split-item--header-title h3{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ez-split-item--header-buttons{display:flex;align-items:center}.ez-split-item--content{display:block;height:100%}h3.ez-margin--small{margin-left:var(--space--small)}";
128571
129088
 
128572
129089
  const SplitItem = class extends HTMLElement$1 {
128573
129090
  constructor() {
@@ -128588,7 +129105,7 @@ const SplitItem = class extends HTMLElement$1 {
128588
129105
  CSSVarsUtils.applyVarsGrid(this._element, this._slot.children[0]);
128589
129106
  }
128590
129107
  render() {
128591
- return (h(Host, { class: `box_split-item ${this._expanded ? 'expanded__item' : ''}`, ref: el => (this._element = el) }, h("div", { class: "ez-split-item--header" }, h("slot", { name: "leftButtons" }), h("div", { class: "ez-split-item--header-title" }, this.label && (h("h3", { class: "ez-text ez-text--primary ez-title ez-title--small ez-margin--small", title: this.label }, this.label))), h("div", { class: "ez-split-item--header-buttons" }, this.enableExpand && (h("ez-button", { size: "small", mode: "icon", iconName: "expand", class: 'ez-button--tertiary', onClick: () => this.toggleExpandItem(), title: this._expanded ? 'Resumir' : 'Expandir' })), h("slot", { name: "rightButtons" }))), h("div", { class: "ez-split-item--content", ref: el => (this._slot = el) }, h("slot", null))));
129108
+ return (h(Host, { class: `box_split-item ${this._expanded ? 'expanded__item' : ''}`, ref: el => (this._element = el) }, h("div", { class: "ez-split-item--header" }, h("slot", { name: "leftButtons" }), h("div", { class: "ez-split-item--header-title" }, this.label && (h("h3", { class: "ez-text ez-text--primary ez-title ez-title--small ez-margin--small", title: this.label }, this.label))), h("div", { class: "ez-split-item--header-buttons" }, h("slot", { name: "rightButtons" }), this.enableExpand && (h("ez-button", { size: "small", mode: "icon", iconName: "expand", class: 'ez-button--tertiary', onClick: () => this.toggleExpandItem(), title: this._expanded ? 'Resumir' : 'Expandir' })))), h("div", { class: "ez-split-item--content grid_height-0", ref: el => (this._slot = el) }, h("slot", null))));
128592
129109
  }
128593
129110
  static get style() { return ezSplitItemCss; }
128594
129111
  };
@@ -131654,21 +132171,22 @@ const EzCheck = /*@__PURE__*/proxyCustomElement(EzCheck$1, [1,"ez-check",{"label
131654
132171
  const EzChip = /*@__PURE__*/proxyCustomElement(EzChip$1, [1,"ez-chip",{"label":[513],"enabled":[516],"removePosition":[513,"remove-position"],"mode":[513],"value":[1540],"showNativeTooltip":[4,"show-native-tooltip"]}]);
131655
132172
  const EzCollapsibleBox = /*@__PURE__*/proxyCustomElement(EzCollapsibleBox$1, [1,"ez-collapsible-box",{"value":[1540],"boxBordered":[4,"box-bordered"],"label":[513],"subtitle":[513],"headerSize":[513,"header-size"],"iconPlacement":[513,"icon-placement"],"headerAlign":[513,"header-align"],"removable":[516],"editable":[516],"conditionalSave":[16],"_activeEditText":[32]}]);
131656
132173
  const EzComboBox = /*@__PURE__*/proxyCustomElement(EzComboBox$1, [1,"ez-combo-box",{"limitCharsToSearch":[2,"limit-chars-to-search"],"value":[1537],"label":[513],"enabled":[516],"options":[1040],"errorMessage":[1537,"error-message"],"showSelectedValue":[4,"show-selected-value"],"showOptionValue":[4,"show-option-value"],"suppressSearch":[4,"suppress-search"],"optionLoader":[16],"suppressEmptyOption":[4,"suppress-empty-option"],"canShowError":[516,"can-show-error"],"mode":[513],"hideErrorOnFocusOut":[4,"hide-error-on-focus-out"],"listOptionsPosition":[16],"isTextSearch":[4,"is-text-search"],"_preSelection":[32],"_visibleOptions":[32],"_startLoading":[32],"_showLoading":[32],"_criteria":[32]},[[11,"scroll","scrollListener"]]]);
132174
+ const EzCustomFormInput = /*@__PURE__*/proxyCustomElement(EzCustomFormInput$1, [2,"ez-custom-form-input",{"customEditor":[16],"formViewField":[16],"value":[8],"detailContext":[1,"detail-context"],"builderFallback":[16],"gui":[32]}]);
131657
132175
  const EzDateInput = /*@__PURE__*/proxyCustomElement(EzDateInput$1, [1,"ez-date-input",{"label":[513],"value":[1040],"enabled":[516],"errorMessage":[1537,"error-message"],"mode":[513],"canShowError":[516,"can-show-error"]}]);
131658
132176
  const EzDateTimeInput = /*@__PURE__*/proxyCustomElement(EzDateTimeInput$1, [1,"ez-date-time-input",{"label":[513],"value":[1040],"enabled":[516],"errorMessage":[1537,"error-message"],"showSeconds":[516,"show-seconds"],"mode":[513],"canShowError":[516,"can-show-error"]}]);
131659
132177
  const EzDialog = /*@__PURE__*/proxyCustomElement(EzDialog$1, [1,"ez-dialog",{"confirm":[1028],"dialogType":[1025,"dialog-type"],"message":[1025],"opened":[1540],"personalizedIconPath":[1025,"personalized-icon-path"],"ezTitle":[1025,"ez-title"],"beforeClose":[1040]},[[8,"keydown","handleKeyDown"]]]);
131660
132178
  const EzDropdown = /*@__PURE__*/proxyCustomElement(EzDropdown$1, [1,"ez-dropdown",{"items":[1040],"value":[1040],"itemBuilder":[16]},[[4,"click","handleClickOutside"]]]);
131661
132179
  const EzFileItem = /*@__PURE__*/proxyCustomElement(EzFileItem$1, [1,"ez-file-item",{"canRemove":[4,"can-remove"],"fileName":[1,"file-name"],"iconName":[1,"icon-name"],"fileSize":[2,"file-size"],"progress":[2]}]);
131662
132180
  const EzFilterInput = /*@__PURE__*/proxyCustomElement(EzFilterInput$1, [1,"ez-filter-input",{"label":[1],"value":[1537],"enabled":[4],"errorMessage":[1537,"error-message"],"restrict":[1],"mode":[513],"asyncSearch":[516,"async-search"],"canShowError":[516,"can-show-error"]}]);
131663
- const EzForm = /*@__PURE__*/proxyCustomElement(EzForm$1, [2,"ez-form",{"dataUnit":[1040],"config":[16],"recordsValidator":[16],"fieldToFocus":[1,"field-to-focus"]}]);
131664
- const EzFormView = /*@__PURE__*/proxyCustomElement(EzFormView$1, [2,"ez-form-view",{"fields":[16]}]);
131665
- const EzGrid = /*@__PURE__*/proxyCustomElement(EzGrid$1, [6,"ez-grid",{"multipleSelection":[4,"multiple-selection"],"config":[1040],"selectionToastConfig":[16],"serverUrl":[1,"server-url"],"dataUnit":[16],"statusResolver":[16],"columnfilterDataSource":[16],"useEnterLikeTab":[4,"use-enter-like-tab"],"recordsValidator":[16],"canEdit":[4,"can-edit"],"_paginationInfo":[32],"_paginationChangedByKeyboard":[32],"_showSelectionCounter":[32],"_isAllSelection":[32],"_currentPageSelected":[32],"_selectionCount":[32],"_hasLeftButtons":[32]},[[0,"ezSelectionChange","onSelectionChange"]]]);
132181
+ const EzForm = /*@__PURE__*/proxyCustomElement(EzForm$1, [2,"ez-form",{"dataUnit":[1040],"config":[16],"recordsValidator":[16],"fieldToFocus":[1,"field-to-focus"],"onlyStaticFields":[4,"only-static-fields"],"_fieldsProps":[32]}]);
132182
+ const EzFormView = /*@__PURE__*/proxyCustomElement(EzFormView$1, [2,"ez-form-view",{"fields":[16],"_customEditors":[32]}]);
132183
+ const EzGrid = /*@__PURE__*/proxyCustomElement(EzGrid$1, [6,"ez-grid",{"multipleSelection":[4,"multiple-selection"],"config":[1040],"selectionToastConfig":[16],"serverUrl":[1,"server-url"],"dataUnit":[16],"statusResolver":[16],"columnfilterDataSource":[16],"useEnterLikeTab":[4,"use-enter-like-tab"],"recordsValidator":[16],"canEdit":[4,"can-edit"],"_paginationInfo":[32],"_paginationChangedByKeyboard":[32],"_showSelectionCounter":[32],"_isAllSelection":[32],"_currentPageSelected":[32],"_selectionCount":[32],"_hasLeftButtons":[32],"_customFormatters":[32]},[[0,"ezSelectionChange","onSelectionChange"]]]);
131666
132184
  const EzGuideNavigator = /*@__PURE__*/proxyCustomElement(EzGuideNavigator$1, [1,"ez-guide-navigator",{"open":[1540],"selectedId":[1537,"selected-id"],"items":[16],"tooltipResolver":[16],"filterText":[32]}]);
131667
132185
  const EzIcon = /*@__PURE__*/proxyCustomElement(EzIcon$1, [1,"ez-icon",{"size":[513],"href":[513],"iconName":[513,"icon-name"]}]);
131668
132186
  const EzList = /*@__PURE__*/proxyCustomElement(EzList$1, [1,"ez-list",{"dataSource":[1040],"listMode":[1,"list-mode"],"useGroups":[1540,"use-groups"],"ezDraggable":[1028,"ez-draggable"],"ezSelectable":[1028,"ez-selectable"],"itemSlotBuilder":[1040],"itemLeftSlotBuilder":[1040],"hoverFeedback":[1028,"hover-feedback"],"_listItems":[32],"_listGroupItems":[32]}]);
131669
132187
  const EzLoadingBar = /*@__PURE__*/proxyCustomElement(EzLoadingBar$1, [1,"ez-loading-bar",{"_showLoading":[32]}]);
131670
132188
  const EzModal = /*@__PURE__*/proxyCustomElement(EzModal$1, [1,"ez-modal",{"modalSize":[1,"modal-size"],"align":[1],"heightMode":[1,"height-mode"],"opened":[1028],"closeEsc":[4,"close-esc"],"closeOutsideClick":[4,"close-outside-click"],"scrim":[1]}]);
131671
- const EzModalContainer = /*@__PURE__*/proxyCustomElement(EzModalContainer$1, [6,"ez-modal-container",{"modalTitle":[1,"modal-title"],"modalSubTitle":[1,"modal-sub-title"],"showTitleBar":[4,"show-title-bar"],"cancelButtonLabel":[1,"cancel-button-label"],"okButtonLabel":[1,"ok-button-label"],"cancelButtonStatus":[1,"cancel-button-status"],"okButtonStatus":[1,"ok-button-status"]}]);
132189
+ const EzModalContainer = /*@__PURE__*/proxyCustomElement(EzModalContainer$1, [6,"ez-modal-container",{"modalTitle":[1,"modal-title"],"modalSubTitle":[1,"modal-sub-title"],"showTitleBar":[4,"show-title-bar"],"cancelButtonLabel":[1,"cancel-button-label"],"okButtonLabel":[1,"ok-button-label"],"cancelButtonStatus":[1,"cancel-button-status"],"okButtonStatus":[1,"ok-button-status"]},[[4,"ezCloseModal","handleEzModalAction"]]]);
131672
132190
  const EzMultiSelectionList = /*@__PURE__*/proxyCustomElement(EzMuiltiSelectionList, [2,"ez-multi-selection-list",{"columnName":[1,"column-name"],"dataSource":[16],"useOptions":[1028,"use-options"],"options":[1040],"isTextSearch":[4,"is-text-search"],"filteredOptions":[32],"displayOptions":[32],"viewScenario":[32],"displayOptionToCheckAllItems":[32]}]);
131673
132191
  const EzNumberInput = /*@__PURE__*/proxyCustomElement(EzNumberInput$1, [1,"ez-number-input",{"label":[1],"value":[1538],"enabled":[4],"canShowError":[516,"can-show-error"],"errorMessage":[1537,"error-message"],"precision":[2],"prettyPrecision":[2,"pretty-precision"],"mode":[513]}]);
131674
132192
  const EzPopover = /*@__PURE__*/proxyCustomElement(EzPopover$1, [1,"ez-popover",{"autoClose":[516,"auto-close"],"boxWidth":[513,"box-width"],"opened":[1540],"innerElement":[1537,"inner-element"],"overlayType":[513,"overlay-type"]}]);
@@ -131708,6 +132226,7 @@ const defineCustomElements = (opts) => {
131708
132226
  EzChip,
131709
132227
  EzCollapsibleBox,
131710
132228
  EzComboBox,
132229
+ EzCustomFormInput,
131711
132230
  EzDateInput,
131712
132231
  EzDateTimeInput,
131713
132232
  EzDialog,
@@ -131754,4 +132273,4 @@ const defineCustomElements = (opts) => {
131754
132273
  }
131755
132274
  };
131756
132275
 
131757
- export { EzActionsButton, EzAlert, EzAlertList, EzApplication, EzBadge, EzBreadcrumb, EzButton, EzCalendar, EzCardItem, EzCheck, EzChip, EzCollapsibleBox, EzComboBox, EzDateInput, EzDateTimeInput, EzDialog, EzDropdown, EzFileItem, EzFilterInput, EzForm, EzFormView, EzGrid, EzGuideNavigator, EzIcon, EzList, EzLoadingBar, EzModal, EzModalContainer, EzMultiSelectionList, EzNumberInput, EzPopover, EzPopup, EzRadioButton, EzScroller, EzSearch, EzSidebarButton, EzSkeleton, EzSplitButton, EzSplitItem, EzSplitPanel, EzTabselector, EzTextArea, EzTextEdit, EzTextInput, EzTimeInput, EzToast, EzTree, EzUpload, EzViewStack, FilterColumn, MultiSelectionBoxMessage, defineCustomElements };
132276
+ export { EzActionsButton, EzAlert, EzAlertList, EzApplication, EzBadge, EzBreadcrumb, EzButton, EzCalendar, EzCardItem, EzCheck, EzChip, EzCollapsibleBox, EzComboBox, EzCustomFormInput, EzDateInput, EzDateTimeInput, EzDialog, EzDropdown, EzFileItem, EzFilterInput, EzForm, EzFormView, EzGrid, EzGuideNavigator, EzIcon, EzList, EzLoadingBar, EzModal, EzModalContainer, EzMultiSelectionList, EzNumberInput, EzPopover, EzPopup, EzRadioButton, EzScroller, EzSearch, EzSidebarButton, EzSkeleton, EzSplitButton, EzSplitItem, EzSplitPanel, EzTabselector, EzTextArea, EzTextEdit, EzTextInput, EzTimeInput, EzToast, EzTree, EzUpload, EzViewStack, FilterColumn, MultiSelectionBoxMessage, defineCustomElements };