@sankhyalabs/ezui 7.1.0-dev.20 → 7.1.0-dev.21

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 (162) hide show
  1. package/dist/cjs/{ApplicationUtils-d04f5c94.js → ApplicationUtils-4fb87a9e.js} +1 -1
  2. package/dist/cjs/{app-globals-c128c97e.js → app-globals-cb31a206.js} +1 -1
  3. package/dist/cjs/ez-actions-button.cjs.entry.js +2 -2
  4. package/dist/cjs/ez-alert-list.cjs.entry.js +1 -1
  5. package/dist/cjs/ez-avatar.cjs.entry.js +1 -1
  6. package/dist/cjs/ez-calendar.cjs.entry.js +1 -1
  7. package/dist/cjs/ez-collapsible-box.cjs.entry.js +2 -2
  8. package/dist/cjs/{ez-combo-box-list_4.cjs.entry.js → ez-combo-box-list_5.cjs.entry.js} +149 -2
  9. package/dist/cjs/ez-combo-box.cjs.entry.js +2 -2
  10. package/dist/cjs/ez-date-input.cjs.entry.js +1 -1
  11. package/dist/cjs/ez-date-time-input.cjs.entry.js +1 -1
  12. package/dist/cjs/ez-dialog.cjs.entry.js +1 -1
  13. package/dist/cjs/ez-double-list.cjs.entry.js +1 -1
  14. package/dist/cjs/ez-file-item.cjs.entry.js +1 -1
  15. package/dist/cjs/ez-form-view.cjs.entry.js +12 -5
  16. package/dist/cjs/ez-form.cjs.entry.js +5 -4
  17. package/dist/cjs/ez-grid.cjs.entry.js +6 -3
  18. package/dist/cjs/ez-guide-navigator.cjs.entry.js +1 -1
  19. package/dist/cjs/ez-link-builder_6.cjs.entry.js +1 -1
  20. package/dist/cjs/ez-list.cjs.entry.js +1 -1
  21. package/dist/cjs/ez-modal-container.cjs.entry.js +1 -1
  22. package/dist/cjs/ez-modal.cjs.entry.js +1 -1
  23. package/dist/cjs/ez-multi-selection-list.cjs.entry.js +1 -1
  24. package/dist/cjs/ez-number-input.cjs.entry.js +1 -1
  25. package/dist/cjs/ez-pagination.cjs.entry.js +1 -1
  26. package/dist/cjs/ez-popup.cjs.entry.js +1 -1
  27. package/dist/cjs/ez-search-plus.cjs.entry.js +2 -2
  28. package/dist/cjs/ez-search-result-list.cjs.entry.js +1 -1
  29. package/dist/cjs/ez-search.cjs.entry.js +2 -2
  30. package/dist/cjs/ez-sidebar-navigator.cjs.entry.js +1 -1
  31. package/dist/cjs/ez-skeleton.cjs.entry.js +1 -1
  32. package/dist/cjs/ez-sortable-list.cjs.entry.js +1 -1
  33. package/dist/cjs/ez-spinner.cjs.entry.js +1 -1
  34. package/dist/cjs/ez-split-button.cjs.entry.js +1 -1
  35. package/dist/cjs/ez-split-item.cjs.entry.js +2 -2
  36. package/dist/cjs/ez-time-input.cjs.entry.js +1 -1
  37. package/dist/cjs/ez-tree.cjs.entry.js +1 -1
  38. package/dist/cjs/ez-upload.cjs.entry.js +2 -2
  39. package/dist/cjs/ezui.cjs.js +3 -3
  40. package/dist/cjs/filter-column.cjs.entry.js +1 -1
  41. package/dist/cjs/index-a7b0c73d.js +2 -2
  42. package/dist/cjs/{index-00d0166b.js → index-e61642ff.js} +24 -0
  43. package/dist/cjs/loader.cjs.js +3 -3
  44. package/dist/cjs/{search-column-8bfee733.js → search-column-51e50b59.js} +2 -2
  45. package/dist/collection/collection-manifest.json +1 -0
  46. package/dist/collection/components/ez-form/ez-form.js +23 -1
  47. package/dist/collection/components/ez-form-view/ez-form-view.js +24 -2
  48. package/dist/collection/components/ez-form-view/fieldbuilder/FieldBuilder.js +4 -2
  49. package/dist/collection/components/ez-form-view/fieldbuilder/templates/ImageInput.tpl.js +4 -0
  50. package/dist/collection/components/ez-grid/controller/ag-grid/DataSource.js +3 -0
  51. package/dist/collection/components/ez-image-input/ez-image-input.css +173 -0
  52. package/dist/collection/components/ez-image-input/ez-image-input.js +324 -0
  53. package/dist/collection/utils/i18n/locales/en-us.js +8 -0
  54. package/dist/collection/utils/i18n/locales/es-es.js +8 -0
  55. package/dist/collection/utils/i18n/locales/pt-br.js +8 -0
  56. package/dist/custom-elements/index.d.ts +6 -0
  57. package/dist/custom-elements/index.js +193 -8
  58. package/dist/esm/{ApplicationUtils-12768f5a.js → ApplicationUtils-985c24ae.js} +1 -1
  59. package/dist/esm/{app-globals-9507c20e.js → app-globals-75f8a758.js} +1 -1
  60. package/dist/esm/ez-actions-button.entry.js +2 -2
  61. package/dist/esm/ez-alert-list.entry.js +1 -1
  62. package/dist/esm/ez-avatar.entry.js +1 -1
  63. package/dist/esm/ez-calendar.entry.js +1 -1
  64. package/dist/esm/ez-collapsible-box.entry.js +2 -2
  65. package/dist/esm/{ez-combo-box-list_4.entry.js → ez-combo-box-list_5.entry.js} +149 -3
  66. package/dist/esm/ez-combo-box.entry.js +2 -2
  67. package/dist/esm/ez-date-input.entry.js +1 -1
  68. package/dist/esm/ez-date-time-input.entry.js +1 -1
  69. package/dist/esm/ez-dialog.entry.js +1 -1
  70. package/dist/esm/ez-double-list.entry.js +1 -1
  71. package/dist/esm/ez-file-item.entry.js +1 -1
  72. package/dist/esm/ez-form-view.entry.js +12 -5
  73. package/dist/esm/ez-form.entry.js +5 -4
  74. package/dist/esm/ez-grid.entry.js +6 -3
  75. package/dist/esm/ez-guide-navigator.entry.js +1 -1
  76. package/dist/esm/ez-link-builder_6.entry.js +1 -1
  77. package/dist/esm/ez-list.entry.js +1 -1
  78. package/dist/esm/ez-modal-container.entry.js +1 -1
  79. package/dist/esm/ez-modal.entry.js +1 -1
  80. package/dist/esm/ez-multi-selection-list.entry.js +1 -1
  81. package/dist/esm/ez-number-input.entry.js +1 -1
  82. package/dist/esm/ez-pagination.entry.js +1 -1
  83. package/dist/esm/ez-popup.entry.js +1 -1
  84. package/dist/esm/ez-search-plus.entry.js +2 -2
  85. package/dist/esm/ez-search-result-list.entry.js +1 -1
  86. package/dist/esm/ez-search.entry.js +2 -2
  87. package/dist/esm/ez-sidebar-navigator.entry.js +1 -1
  88. package/dist/esm/ez-skeleton.entry.js +1 -1
  89. package/dist/esm/ez-sortable-list.entry.js +1 -1
  90. package/dist/esm/ez-spinner.entry.js +1 -1
  91. package/dist/esm/ez-split-button.entry.js +1 -1
  92. package/dist/esm/ez-split-item.entry.js +2 -2
  93. package/dist/esm/ez-time-input.entry.js +1 -1
  94. package/dist/esm/ez-tree.entry.js +1 -1
  95. package/dist/esm/ez-upload.entry.js +2 -2
  96. package/dist/esm/ezui.js +3 -3
  97. package/dist/esm/filter-column.entry.js +1 -1
  98. package/dist/esm/{index-62fc771e.js → index-a3b24b5d.js} +24 -0
  99. package/dist/esm/index-baa5e267.js +2 -2
  100. package/dist/esm/loader.js +3 -3
  101. package/dist/esm/{search-column-c00119ae.js → search-column-0c42248b.js} +2 -2
  102. package/dist/ezui/ezui.esm.js +1 -1
  103. package/dist/ezui/{p-e882635e.entry.js → p-0aafbc30.entry.js} +1 -1
  104. package/dist/ezui/{p-0c0eb410.entry.js → p-0e325699.entry.js} +1 -1
  105. package/dist/ezui/{p-5a11cf56.js → p-0ec5c128.js} +1 -1
  106. package/dist/ezui/{p-ff4bde07.entry.js → p-1bf40959.entry.js} +1 -1
  107. package/dist/ezui/{p-7b999377.entry.js → p-1c3f43e8.entry.js} +1 -1
  108. package/dist/ezui/{p-1cde96f9.entry.js → p-2676e2a3.entry.js} +1 -1
  109. package/dist/ezui/{p-e27d7dc2.entry.js → p-28af6826.entry.js} +1 -1
  110. package/dist/ezui/{p-1adf7139.entry.js → p-2b23906a.entry.js} +1 -1
  111. package/dist/ezui/{p-1730ee24.entry.js → p-2e5de2a7.entry.js} +1 -1
  112. package/dist/ezui/{p-5ab08b60.entry.js → p-2fd16ff2.entry.js} +1 -1
  113. package/dist/ezui/{p-377768bd.entry.js → p-3d71e8e1.entry.js} +2 -2
  114. package/dist/ezui/{p-6f119d5f.entry.js → p-3fcf79c7.entry.js} +1 -1
  115. package/dist/ezui/{p-4f0632b4.js → p-474076b3.js} +1 -1
  116. package/dist/ezui/{p-a401041c.entry.js → p-47d9256e.entry.js} +1 -1
  117. package/dist/ezui/{p-124699e0.entry.js → p-4ea5c8a7.entry.js} +1 -1
  118. package/dist/ezui/{p-da585ff3.entry.js → p-582c3f90.entry.js} +1 -1
  119. package/dist/ezui/{p-6a9a20a0.entry.js → p-5e6de2c1.entry.js} +1 -1
  120. package/dist/ezui/{p-2a70f094.entry.js → p-6570ca10.entry.js} +1 -1
  121. package/dist/ezui/{p-e99cbb51.entry.js → p-67f9fadb.entry.js} +1 -1
  122. package/dist/ezui/p-6a982147.js +1 -0
  123. package/dist/ezui/{p-2854f087.entry.js → p-6c484770.entry.js} +1 -1
  124. package/dist/ezui/{p-1266fe78.entry.js → p-6d7f2fdc.entry.js} +1 -1
  125. package/dist/ezui/{p-df316d40.entry.js → p-6f466aec.entry.js} +1 -1
  126. package/dist/ezui/{p-3fe05d6b.entry.js → p-714452c7.entry.js} +1 -1
  127. package/dist/ezui/{p-957d08cd.entry.js → p-7624767b.entry.js} +1 -1
  128. package/dist/ezui/{p-294f54fe.entry.js → p-782fe2e3.entry.js} +1 -1
  129. package/dist/ezui/p-8709c4f6.entry.js +1 -0
  130. package/dist/ezui/{p-8dc267ff.entry.js → p-8a8006e6.entry.js} +1 -1
  131. package/dist/ezui/{p-79277e43.entry.js → p-9568a93d.entry.js} +1 -1
  132. package/dist/ezui/{p-19cf13bc.entry.js → p-9771ea3c.entry.js} +1 -1
  133. package/dist/ezui/p-98218fbc.js +1 -0
  134. package/dist/ezui/p-9d004e22.entry.js +1 -0
  135. package/dist/ezui/{p-eee3c7ff.entry.js → p-a13e65a4.entry.js} +1 -1
  136. package/dist/ezui/{p-e8c6c973.entry.js → p-a1a63294.entry.js} +1 -1
  137. package/dist/ezui/{p-eca050b4.entry.js → p-c711900a.entry.js} +1 -1
  138. package/dist/ezui/{p-a7eab406.entry.js → p-dc192d01.entry.js} +1 -1
  139. package/dist/ezui/{p-59a98e31.entry.js → p-e2e0dd76.entry.js} +1 -1
  140. package/dist/ezui/{p-44ad16df.entry.js → p-e4a579f2.entry.js} +1 -1
  141. package/dist/ezui/{p-59092a66.entry.js → p-e82a12c6.entry.js} +1 -1
  142. package/dist/ezui/p-f1bbf23f.entry.js +1 -0
  143. package/dist/ezui/{p-cd6f5783.entry.js → p-f45ddc1f.entry.js} +1 -1
  144. package/dist/types/components/ez-form/ez-form.d.ts +5 -0
  145. package/dist/types/components/ez-form-view/ez-form-view.d.ts +4 -0
  146. package/dist/types/components/ez-form-view/fieldbuilder/FieldBuilder.d.ts +3 -1
  147. package/dist/types/components/ez-form-view/fieldbuilder/templates/ImageInput.tpl.d.ts +2 -0
  148. package/dist/types/components/ez-image-input/ez-image-input.d.ts +42 -0
  149. package/dist/types/components.d.ts +98 -0
  150. package/dist/types/utils/i18n/locales/en-us.d.ts +8 -0
  151. package/dist/types/utils/i18n/locales/es-es.d.ts +8 -0
  152. package/dist/types/utils/i18n/locales/pt-br.d.ts +8 -0
  153. package/dist/types/utils/i18n/translations.d.ts +24 -0
  154. package/package.json +1 -1
  155. package/react/components.d.ts +1 -0
  156. package/react/components.js +1 -0
  157. package/react/components.js.map +1 -1
  158. package/dist/ezui/p-14807f4e.js +0 -1
  159. package/dist/ezui/p-641ee538.js +0 -1
  160. package/dist/ezui/p-96b33264.entry.js +0 -1
  161. package/dist/ezui/p-adaa2a81.entry.js +0 -1
  162. package/dist/ezui/p-c82acfc6.entry.js +0 -1
@@ -2820,6 +2820,14 @@ const ptBrTranslations = {
2820
2820
  uploadErrorTitle: "Enviando arquivo",
2821
2821
  uploadingMessage: "Há arquivos sendo enviados. Por favor aguarde a conclusão ou cancele o envio.",
2822
2822
  },
2823
+ "ez-image-input": {
2824
+ defaultLabel: "Enviar Imagem",
2825
+ imageAlt: "Imagem carregada",
2826
+ removeImage: "Remover imagem",
2827
+ invalidFileType: "O arquivo selecionado não é uma imagem válida.",
2828
+ fileTooLarge: "A imagem deve ter menos de {{maxSize}}.",
2829
+ imagePreview: "Visualizar Imagem",
2830
+ },
2823
2831
  "ez-calendar": {
2824
2832
  month: {
2825
2833
  0: "Janeiro",
@@ -3115,6 +3123,14 @@ const enUsTranslations = {
3115
3123
  uploadErrorTitle: "Uploading file",
3116
3124
  uploadingMessage: "Files are being uploaded. Please wait for completion or cancel the upload."
3117
3125
  },
3126
+ "ez-image-input": {
3127
+ defaultLabel: "Upload Image",
3128
+ imageAlt: "Uploaded image",
3129
+ removeImage: "Remove image",
3130
+ invalidFileType: "The selected file is not a valid image.",
3131
+ fileTooLarge: "The image must be less than {{maxSize}}.",
3132
+ imagePreview: "Image Preview",
3133
+ },
3118
3134
  "ez-calendar": {
3119
3135
  month: {
3120
3136
  0: "January",
@@ -3410,6 +3426,14 @@ const esEsTranslations = {
3410
3426
  uploadErrorTitle: "Subiendo archivo",
3411
3427
  uploadingMessage: "Se están subiendo archivos. Por favor, espere a que se complete o cancele la subida.",
3412
3428
  },
3429
+ "ez-image-input": {
3430
+ defaultLabel: "Subir Imagen",
3431
+ imageAlt: "Imagen cargada",
3432
+ removeImage: "Eliminar imagen",
3433
+ invalidFileType: "El archivo seleccionado no es una imagen válida.",
3434
+ fileTooLarge: "La imagen debe tener menos de {{maxSize}}.",
3435
+ imagePreview: "Vista Previa de Imagen",
3436
+ },
3413
3437
  "ez-calendar": {
3414
3438
  month: {
3415
3439
  0: "Enero",
@@ -10671,6 +10695,7 @@ const EzForm$1 = class extends HTMLElement$1 {
10671
10695
  this.onlyStaticFields = false;
10672
10696
  this.useSearchField = true;
10673
10697
  this.elementFocusSearchField = undefined;
10698
+ this.customUiBuilders = new Map();
10674
10699
  }
10675
10700
  /**
10676
10701
  * Realiza validação no conteúdo de todos os campos.
@@ -10728,7 +10753,7 @@ const EzForm$1 = class extends HTMLElement$1 {
10728
10753
  }
10729
10754
  this.ezFormSetFields.emit(fields);
10730
10755
  const idFormSheet = `${StringUtils$1.replaceAccentuatedChars(StringUtils$1.toCamelCase(currentSheet === null || currentSheet === void 0 ? void 0 : currentSheet.label), false)}_selectorContainer`;
10731
- return (h("div", { class: "dynamic-content ez-box--no-outline", "data-element-id": idFormSheet, ref: elem => (this._container = elem), tabindex: "0" }, h("ez-popover", { ref: elem => (this._ezPopoverSearchField = elem), overlayType: "none" }, this.renderFieldColumn()), h("ez-form-view", { ref: (element) => (this._formView = element), class: "ez-row ez-padding-vertical--small", fields: fields, singleColumn: this._singleColumn, selectedRecord: this.dataUnit.getSelectedRecord() })));
10756
+ return (h("div", { class: "dynamic-content ez-box--no-outline", "data-element-id": idFormSheet, ref: elem => (this._container = elem), tabindex: "0" }, h("ez-popover", { ref: elem => (this._ezPopoverSearchField = elem), overlayType: "none" }, this.renderFieldColumn()), h("ez-form-view", { ref: (element) => (this._formView = element), class: "ez-row ez-padding-vertical--small", fields: fields, singleColumn: this._singleColumn, selectedRecord: this.dataUnit.getSelectedRecord(), customUiBuilders: this.customUiBuilders })));
10732
10757
  }
10733
10758
  renderFieldColumn() {
10734
10759
  if (this._fieldSearch != undefined) {
@@ -10991,6 +11016,11 @@ const buildRichText = ({ name, label, readOnly, contextName, rows, canShowError
10991
11016
  h("ez-rich-text", { key: name, enabled: !readOnly, label: label, "data-field-name": name, "data-context-name": contextName, rows: rows, canShowError: canShowError })));
10992
11017
  };
10993
11018
 
11019
+ const buildImage = ({ name, label, readOnly, contextName, props }) => {
11020
+ return (h("div", { class: "ez-col ez-col--sd-12" },
11021
+ h("ez-image-input", Object.assign({ enabled: !readOnly, label: label, "data-field-name": name, "data-context-name": contextName, key: name, maxFileSize: Infinity }, props))));
11022
+ };
11023
+
10994
11024
  const uiBuilders$1 = new Map();
10995
11025
  uiBuilders$1.set(UserInterface.CHECKBOX, buildCheckBox);
10996
11026
  uiBuilders$1.set(UserInterface.SWITCH, buildSwitch$1);
@@ -11006,9 +11036,10 @@ uiBuilders$1.set(UserInterface.SEARCH, buildSearch$1);
11006
11036
  uiBuilders$1.set(UserInterface.SEARCHPLUS, buildSearchPlus$1);
11007
11037
  uiBuilders$1.set(UserInterface.LONGTEXT, buildTextArea);
11008
11038
  uiBuilders$1.set(UserInterface.HTML, buildRichText);
11009
- const fieldBuilder = (field) => {
11039
+ uiBuilders$1.set(UserInterface.IMAGE, buildImage);
11040
+ const fieldBuilder = (field, customUiBuilders = new Map()) => {
11010
11041
  const i18n = getI18n();
11011
- const builder = uiBuilders$1.get(field.userInterface) || buildTextInput$1;
11042
+ const builder = (customUiBuilders.get(field.userInterface) || uiBuilders$1.get(field.userInterface)) || buildTextInput$1;
11012
11043
  const label = field.required ? `${field.label}${i18n("app.requiredInfo")}` : field.label;
11013
11044
  const builtElement = builder(Object.assign(Object.assign({}, field), { label }));
11014
11045
  //@ts-ignore
@@ -11063,6 +11094,7 @@ const EzFormView$1 = class extends HTMLElement$1 {
11063
11094
  this.fields = undefined;
11064
11095
  this.selectedRecord = undefined;
11065
11096
  this.singleColumn = false;
11097
+ this.customUiBuilders = new Map();
11066
11098
  }
11067
11099
  async showUp() {
11068
11100
  if (this.singleColumn)
@@ -11129,9 +11161,9 @@ const EzFormView$1 = class extends HTMLElement$1 {
11129
11161
  if (this._customEditors.has(item.name)) {
11130
11162
  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;
11131
11163
  const customEditor = this._customEditors.get(item.name).customEditor;
11132
- return h("div", { class: classItem }, h("ez-custom-form-input", { "data-field-name": item.name, customEditor: customEditor, formViewField: item, builderFallback: fieldBuilder, value: value, selectedRecord: this.selectedRecord }));
11164
+ return h("div", { class: classItem }, h("ez-custom-form-input", { "data-field-name": item.name, customEditor: customEditor, formViewField: item, builderFallback: (field) => fieldBuilder(field, this.customUiBuilders), value: value, selectedRecord: this.selectedRecord }));
11133
11165
  }
11134
- return h("div", { class: classItem }, fieldBuilder(item));
11166
+ return h("div", { class: classItem }, fieldBuilder(item, this.customUiBuilders));
11135
11167
  }
11136
11168
  render() {
11137
11169
  ElementIDUtils.addIDInfoIfNotExists(this._element, 'ezFormView');
@@ -61403,6 +61435,9 @@ class DataSource {
61403
61435
  });
61404
61436
  this._dataUnit.metadata.fields.forEach(f => {
61405
61437
  var _a, _b, _c, _d, _e, _f;
61438
+ if (f.userInterface === UserInterface.IMAGE) {
61439
+ return;
61440
+ }
61406
61441
  if (f.visible !== false && f.name !== this.RECORD_ARCHIVE) {
61407
61442
  const props = new Map();
61408
61443
  const properties = this._dataUnit.getField(f.name).properties;
@@ -79882,6 +79917,154 @@ const EzIcon$1 = class extends HTMLElement$1 {
79882
79917
  static get style() { return ezIconCss; }
79883
79918
  };
79884
79919
 
79920
+ const ezImageInputCss = ":host{display:block;--ez-image-input--container-height:200px;--ez-image-input--container-width:280px;--ez-image-input--background-color:var(--color--gray-80);--ez-image-input--border-color:var(--color--gray-200);--ez-image-input--border-color-hover:var(--color--ocean-green-600);--ez-image-input--border-color-dragging:var(--color--ocean-green-500);--ez-image-input--border-color-disabled:var(--color--gray-200);--ez-image-input--label-color:var(--color--petroleum-900);--ez-image-input--icon-color:var(--color--gray-400);--ez-image-input--border-radius:var(--border--radius-24);--ez-image-input--border-width:2px;--ez-image-input--remove-button-bg:var(--color--red-600);--ez-image-input--remove-button-bg-hover:var(--color--red-700);--ez-image-input--remove-button-color:var(--color--gray-70);--ez-image-input--remove-button-border:1px solid var(--color--red-700)}.image-input__container{display:flex;align-items:center;justify-content:center;position:relative;height:var(--ez-image-input--container-height);width:var(--ez-image-input--container-width);border:var(--ez-image-input--border-width) dashed var(--ez-image-input--border-color);border-radius:var(--ez-image-input--border-radius);background-color:var(--ez-image-input--background-color);cursor:pointer;transition:all 0.3s ease;overflow:hidden}.image-input__container:hover:not(.image-input__container--disabled){border-color:var(--ez-image-input--border-color-hover)}.image-input__container--dragging{border-color:var(--ez-image-input--border-color-dragging);background-color:var(--color--ocean-green-90)}.image-input__container--disabled{cursor:not-allowed;opacity:0.6;border-color:var(--ez-image-input--border-color-disabled)}.image-input__container--has-image{border-style:solid;padding:var(--space--0)}.image-input__file-input{display:none}.image-input__dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space--16);padding:var(--space--24);text-align:center}.image-input__dropzone ez-icon{color:var(--ez-image-input--icon-color)}.image-input__label{font-family:var(--font--pattern);font-size:var(--font-size--default);font-weight:var(--font-weight--medium);color:var(--ez-image-input--label-color);line-height:var(--line-height--20)}.image-input__preview{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.image-input__image{height:100%;object-fit:cover;border-radius:calc(var(--ez-image-input--border-radius) - var(--ez-image-input--border-width))}ez-button{--ez-button--background-color:var(--ez-image-input--remove-button-bg);--ez-button--hover--background-color:var(--ez-image-input--remove-button-bg-hover);--ez-button--color:var(--ez-image-input--remove-button-color);--ez-button--border:var(--ez-image-input--remove-button-border);--ez-button--hover--border:var(--ez-image-input--remove-button-border)}.image-input__remove-button{position:absolute;top:var(--space--8);right:var(--space--8);display:flex;align-items:center;justify-content:center}.image-input__popup-content{display:flex;align-items:center;justify-content:center;padding:var(--space--16);height:100%}.image-input__popup-image{max-width:100%;max-height:70vh;object-fit:contain;border-radius:var(--border--radius-8)}.image-input__image{height:100%;object-fit:cover;border-radius:calc(var(--ez-image-input--border-radius) - var(--ez-image-input--border-width));cursor:pointer;transition:transform 0.2s ease}.image-input__image:hover{transform:scale(1.02)}ez-skeleton{--skeleton-width:var(--ez-image-input--container-width);--skeleton-height:var(--ez-image-input--container-height)}";
79921
+
79922
+ const EzImageInput$1 = class extends HTMLElement$1 {
79923
+ constructor() {
79924
+ super();
79925
+ this.__registerHost();
79926
+ this.__attachShadow();
79927
+ this.ezChange = createEvent(this, "ezChange", 7);
79928
+ this.ezError = createEvent(this, "ezError", 7);
79929
+ this.handleFileSelect = (event) => {
79930
+ const input = event.target;
79931
+ if (input.files && input.files[0]) {
79932
+ this.processFile(input.files[0]);
79933
+ }
79934
+ };
79935
+ this.handleDrop = (event) => {
79936
+ var _a;
79937
+ event.preventDefault();
79938
+ event.stopPropagation();
79939
+ this._isDragging = false;
79940
+ if (!this.enabled)
79941
+ return;
79942
+ const files = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.files;
79943
+ if (files && files[0]) {
79944
+ this.processFile(files[0]);
79945
+ }
79946
+ };
79947
+ this.handleDragOver = (event) => {
79948
+ event.preventDefault();
79949
+ event.stopPropagation();
79950
+ if (this.enabled) {
79951
+ this._isDragging = true;
79952
+ }
79953
+ };
79954
+ this.handleDragLeave = (event) => {
79955
+ event.preventDefault();
79956
+ event.stopPropagation();
79957
+ this._isDragging = false;
79958
+ };
79959
+ this.handleRemoveImage = (event) => {
79960
+ event.stopPropagation();
79961
+ this.value = undefined;
79962
+ this._hasImage = false;
79963
+ if (this._inputElem) {
79964
+ this._inputElem.value = '';
79965
+ }
79966
+ this.ezChange.emit('');
79967
+ };
79968
+ this.handleClickDropZone = () => {
79969
+ var _a;
79970
+ if (this.enabled && !this._hasImage) {
79971
+ (_a = this._inputElem) === null || _a === void 0 ? void 0 : _a.click();
79972
+ }
79973
+ };
79974
+ this.handleImageClick = (event) => {
79975
+ event.stopPropagation();
79976
+ if (this._hasImage && this.value) {
79977
+ this._showImagePopup = true;
79978
+ }
79979
+ };
79980
+ this.handlePopupAction = (event) => {
79981
+ const action = event.detail;
79982
+ if (action === 'CANCEL' || action === 'OK') {
79983
+ this.handleClosePopup();
79984
+ }
79985
+ };
79986
+ this.handleClosePopup = () => {
79987
+ this._showImagePopup = false;
79988
+ };
79989
+ this.enabled = true;
79990
+ this.label = undefined;
79991
+ this.name = undefined;
79992
+ this.value = undefined;
79993
+ this.maxFileSize = 20 * 1024 * 1024;
79994
+ this.accept = 'image/*';
79995
+ this.loading = false;
79996
+ this._hasImage = false;
79997
+ this._isDragging = false;
79998
+ this._showImagePopup = false;
79999
+ }
80000
+ onValueChange(newValue, oldValue) {
80001
+ if (newValue !== oldValue) {
80002
+ this._hasImage = !!newValue;
80003
+ }
80004
+ if (!newValue && this._inputElem) {
80005
+ this._inputElem.value = '';
80006
+ }
80007
+ }
80008
+ addInfoId() {
80009
+ if (this._element) {
80010
+ ElementIDUtils.addIDInfo(this._element);
80011
+ }
80012
+ if (this._inputElem) {
80013
+ const dataInfo = { id: 'embedded' };
80014
+ ElementIDUtils.addIDInfo(this._inputElem, 'image-input', dataInfo);
80015
+ }
80016
+ }
80017
+ processFile(file) {
80018
+ // Validar tipo de arquivo
80019
+ if (!file.type.startsWith('image/')) {
80020
+ const errorMsg = this.i18n('ez-image-input.invalidFileType');
80021
+ this.ezError.emit(errorMsg);
80022
+ return;
80023
+ }
80024
+ // Validar tamanho do arquivo
80025
+ if (this.maxFileSize && file.size > this.maxFileSize) {
80026
+ const maxSizeMB = (this.maxFileSize / (1024 * 1024)).toFixed(2);
80027
+ const errorMsg = this.i18n('ez-image-input.fileTooLarge', { maxSize: `${maxSizeMB}MB` });
80028
+ this.ezError.emit(errorMsg);
80029
+ return;
80030
+ }
80031
+ // Converter para base64
80032
+ const reader = new FileReader();
80033
+ reader.onload = (e) => {
80034
+ var _a;
80035
+ const base64 = (_a = e.target) === null || _a === void 0 ? void 0 : _a.result;
80036
+ this.value = base64;
80037
+ this._hasImage = true;
80038
+ this.ezChange.emit(base64);
80039
+ };
80040
+ reader.readAsDataURL(file);
80041
+ }
80042
+ async componentWillLoad() {
80043
+ this.i18n = await initI18n();
80044
+ this._hasImage = !!this.value;
80045
+ }
80046
+ componentDidLoad() {
80047
+ this.addInfoId();
80048
+ }
80049
+ render() {
80050
+ if (this.loading) {
80051
+ return (h(Host, null, h("ez-skeleton", { width: "280px", height: '200px' })));
80052
+ }
80053
+ const dropZoneLabel = this.label || this.i18n('ez-image-input.defaultLabel');
80054
+ return (h(Host, null, h("div", { class: {
80055
+ 'image-input__container': true,
80056
+ 'image-input__container--disabled': !this.enabled,
80057
+ 'image-input__container--dragging': this._isDragging,
80058
+ 'image-input__container--has-image': this._hasImage
80059
+ }, "data-enabled": this.enabled.toString(), "data-has-image": this._hasImage.toString(), onClick: this.handleClickDropZone, onDrop: this.handleDrop, onDragOver: this.handleDragOver, onDragLeave: this.handleDragLeave, role: "button", "aria-label": dropZoneLabel, tabindex: this.enabled ? 0 : -1 }, h("input", { ref: (el) => (this._inputElem = el), type: "file", accept: this.accept, name: this.name, disabled: !this.enabled, onChange: this.handleFileSelect, class: "image-input__file-input", "aria-hidden": "true" }), this._hasImage && this.value ? (h("div", { class: "image-input__preview" }, h("img", { src: this.value, alt: this.i18n('ez-image-input.imageAlt'), class: "image-input__image", onClick: this.handleImageClick }), this.enabled && (h("ez-button", { class: "image-input__remove-button", variant: "primary", type: "button", mode: "icon", size: "small", iconName: "trash-alt", onClick: this.handleRemoveImage, "aria-label": this.i18n('ez-image-input.removeImage'), title: this.i18n('ez-image-input.removeImage') })))) : (h("div", { class: "image-input__dropzone" }, h("ez-icon", { iconName: "image", size: "x-large" }), h("span", { class: "image-input__label" }, dropZoneLabel)))), h("ez-popup", { opened: this._showImagePopup, ezTitle: this.i18n('ez-image-input.imagePreview'), size: "large", heightMode: "auto", onEzPopupAction: this.handlePopupAction, onEzClosePopup: this.handleClosePopup }, h("div", { class: "image-input__popup-content" }, h("img", { src: this.value, alt: this.i18n('ez-image-input.imageAlt'), class: "image-input__popup-image" })))));
80060
+ }
80061
+ get _element() { return this; }
80062
+ static get watchers() { return {
80063
+ "value": ["onValueChange"]
80064
+ }; }
80065
+ static get style() { return ezImageInputCss; }
80066
+ };
80067
+
79885
80068
  const RICH_TOOLBAR_COMMANDS = {
79886
80069
  PREVIEW: 'preview',
79887
80070
  UNDO: 'undo',
@@ -93944,12 +94127,13 @@ const EzDropdown = /*@__PURE__*/proxyCustomElement(EzDropdown$1, [1,"ez-dropdown
93944
94127
  const EzEmptyCard = /*@__PURE__*/proxyCustomElement(EzEmptyCard$1, [1,"ez-empty-card",{"color":[513],"height":[514],"width":[514]}]);
93945
94128
  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]}]);
93946
94129
  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"],"autoFocus":[4,"auto-focus"]}]);
93947
- 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"],"useSearchField":[4,"use-search-field"],"elementFocusSearchField":[16],"_fieldsProps":[32],"_singleColumn":[32]}]);
93948
- const EzFormView = /*@__PURE__*/proxyCustomElement(EzFormView$1, [2,"ez-form-view",{"fields":[16],"selectedRecord":[16],"singleColumn":[4,"single-column"],"_customEditors":[32]}]);
94130
+ 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"],"useSearchField":[4,"use-search-field"],"elementFocusSearchField":[16],"customUiBuilders":[16],"_fieldsProps":[32],"_singleColumn":[32]}]);
94131
+ const EzFormView = /*@__PURE__*/proxyCustomElement(EzFormView$1, [2,"ez-form-view",{"fields":[16],"selectedRecord":[16],"singleColumn":[4,"single-column"],"customUiBuilders":[16],"_customEditors":[32]}]);
93949
94132
  const EzGrid = /*@__PURE__*/proxyCustomElement(EzGrid$1, [6,"ez-grid",{"enableLockManagerLoadingComp":[1028,"enable-lock-manager-loading-comp"],"enableLockManagerTaskbarClick":[4,"enable-lock-manager-taskbar-click"],"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":[1028,"can-edit"],"autoFocus":[4,"auto-focus"],"paginationCounterMode":[1,"pagination-counter-mode"],"enableGridInsert":[4,"enable-grid-insert"],"enableContinuousInsert":[4,"enable-continuous-insert"],"suppressCheckboxColumn":[1028,"suppress-checkbox-column"],"suppressFilterColumn":[1028,"suppress-filter-column"],"outlineMode":[4,"outline-mode"],"enableRowTableStriped":[4,"enable-row-table-striped"],"compact":[1028],"useSearchColumn":[4,"use-search-column"],"suppressHorizontalScroll":[4,"suppress-horizontal-scroll"],"mode":[513],"_paginationInfo":[32],"_paginationChangedByKeyboard":[32],"_showSelectionCounter":[32],"_isAllSelection":[32],"_currentPageSelected":[32],"_selectionCount":[32],"_hasLeftButtons":[32],"_customFormatters":[32]},[[0,"applyFilterColumnOptions","handleApplyFilterColumn"],[0,"ezSelectionChange","onSelectionChange"],[2,"click","handleClick"]]]);
93950
94133
  const EzGridView = /*@__PURE__*/proxyCustomElement(EzGridView$1, [6,"ez-grid-view",{"metadata":[16],"records":[16],"columnsConfig":[1040],"pageSize":[2,"page-size"],"recordDateFormat":[1,"record-date-format"],"multipleSelection":[4,"multiple-selection"],"autoFocus":[4,"auto-focus"],"paginationCounterMode":[1,"pagination-counter-mode"],"suppressCheckboxColumn":[1028,"suppress-checkbox-column"],"suppressFilterColumn":[4,"suppress-filter-column"],"outlineMode":[4,"outline-mode"],"enableRowTableStriped":[4,"enable-row-table-striped"],"compact":[1028],"useSearchColumn":[4,"use-search-column"],"suppressHorizontalScroll":[4,"suppress-horizontal-scroll"],"inMemoryLoader":[32]}]);
93951
94134
  const EzGuideNavigator = /*@__PURE__*/proxyCustomElement(EzGuideNavigator$1, [1,"ez-guide-navigator",{"open":[1540],"selectedId":[1537,"selected-id"],"items":[16],"tooltipResolver":[16],"filterText":[32]}]);
93952
94135
  const EzIcon = /*@__PURE__*/proxyCustomElement(EzIcon$1, [1,"ez-icon",{"size":[513],"fontSize":[520,"font-size"],"href":[513],"iconName":[513,"icon-name"]}]);
94136
+ const EzImageInput = /*@__PURE__*/proxyCustomElement(EzImageInput$1, [1,"ez-image-input",{"enabled":[4],"label":[1],"name":[1],"value":[1025],"maxFileSize":[2,"max-file-size"],"accept":[1],"loading":[4],"_hasImage":[32],"_isDragging":[32],"_showImagePopup":[32]}]);
93953
94137
  const EzLinkBuilder = /*@__PURE__*/proxyCustomElement(EzLinkBuilder$1, [2,"ez-link-builder",{"textToShow":[32],"link":[32],"openInNewGuide":[32]}]);
93954
94138
  const EzList = /*@__PURE__*/proxyCustomElement(EzList$1, [2,"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"],"enableMultipleSelection":[4,"enable-multiple-selection"],"enabled":[4],"_listItems":[32],"_listGroupItems":[32]}]);
93955
94139
  const EzListItem = /*@__PURE__*/proxyCustomElement(EzListItem$1, [2,"ez-list-item",{"titleText":[513,"title-text"],"text":[513],"iconName":[513,"icon-name"]}]);
@@ -94039,6 +94223,7 @@ const defineCustomElements = (opts) => {
94039
94223
  EzGridView,
94040
94224
  EzGuideNavigator,
94041
94225
  EzIcon,
94226
+ EzImageInput,
94042
94227
  EzLinkBuilder,
94043
94228
  EzList,
94044
94229
  EzListItem,
@@ -94099,4 +94284,4 @@ const defineCustomElements = (opts) => {
94099
94284
  }
94100
94285
  };
94101
94286
 
94102
- export { EzActionsButton, EzAlert, EzAlertList, EzApplication, EzAvatar, EzBadge, EzBreadcrumb, EzButton, EzCalendar, EzCardItem, EzChart, EzCheck, EzChip, EzClassicComboBox, EzClassicInput, EzClassicTextArea, EzCollapsibleBox, EzComboBox, EzComboBoxList, EzCustomFormInput, EzDateInput, EzDateTimeInput, EzDialog, EzDoubleList, EzDropdown, EzEmptyCard, EzFileItem, EzFilterInput, EzForm, EzFormView, EzGrid, EzGridView, EzGuideNavigator, EzIcon, EzLinkBuilder, EzList, EzListItem, EzLoadingBar, EzModal, EzModalContainer, EzMultiSelectionList, EzNumberInput, EzPagination, EzPopover, EzPopoverCore, EzPopoverPlus, EzPopup, EzProgressBar, EzRadioButton, EzRichText, EzRichToolbar, EzRichToolbarArrows, EzRichToolbarConfigs, EzRichToolbarItem, EzRichToolbarLetters, EzScroller, EzSearch, EzSearchPlus, EzSearchResultList, EzSidebarButton, EzSidebarNavigator, EzSimpleImageUploader, EzSkeleton, EzSortableList, EzSpinner, EzSplitButton, EzSplitItem, EzSplitPanel, EzTabselector, EzTag, EzTagInput, EzTextArea, EzTextEdit, EzTextInput, EzTile, EzTileMedium, EzTimeInput, EzToast, EzTooltip, EzTree, EzUnderface, EzUpload, EzViewStack, FilterColumn, MultiSelectionBoxMessage, SearchList, defineCustomElements };
94287
+ export { EzActionsButton, EzAlert, EzAlertList, EzApplication, EzAvatar, EzBadge, EzBreadcrumb, EzButton, EzCalendar, EzCardItem, EzChart, EzCheck, EzChip, EzClassicComboBox, EzClassicInput, EzClassicTextArea, EzCollapsibleBox, EzComboBox, EzComboBoxList, EzCustomFormInput, EzDateInput, EzDateTimeInput, EzDialog, EzDoubleList, EzDropdown, EzEmptyCard, EzFileItem, EzFilterInput, EzForm, EzFormView, EzGrid, EzGridView, EzGuideNavigator, EzIcon, EzImageInput, EzLinkBuilder, EzList, EzListItem, EzLoadingBar, EzModal, EzModalContainer, EzMultiSelectionList, EzNumberInput, EzPagination, EzPopover, EzPopoverCore, EzPopoverPlus, EzPopup, EzProgressBar, EzRadioButton, EzRichText, EzRichToolbar, EzRichToolbarArrows, EzRichToolbarConfigs, EzRichToolbarItem, EzRichToolbarLetters, EzScroller, EzSearch, EzSearchPlus, EzSearchResultList, EzSidebarButton, EzSidebarNavigator, EzSimpleImageUploader, EzSkeleton, EzSortableList, EzSpinner, EzSplitButton, EzSplitItem, EzSplitPanel, EzTabselector, EzTag, EzTagInput, EzTextArea, EzTextEdit, EzTextInput, EzTile, EzTileMedium, EzTimeInput, EzToast, EzTooltip, EzTree, EzUnderface, EzUpload, EzViewStack, FilterColumn, MultiSelectionBoxMessage, SearchList, defineCustomElements };
@@ -1,5 +1,5 @@
1
1
  import { D as DialogType } from './DialogType-54a62731.js';
2
- import { i as initI18n } from './index-62fc771e.js';
2
+ import { i as initI18n } from './index-a3b24b5d.js';
3
3
 
4
4
  // Unique ID creation requires a high quality random # generator. In the browser we therefore
5
5
  // require the crypto API and do not support built-in fallback to lower quality random number
@@ -1,4 +1,4 @@
1
- import { i as initI18n } from './index-62fc771e.js';
1
+ import { i as initI18n } from './index-a3b24b5d.js';
2
2
 
3
3
  async function initializeApp() {
4
4
  await initI18n();
@@ -1,10 +1,10 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-baa5e267.js';
2
2
  import { FloatingManager, ElementIDUtils } from '@sankhyalabs/core';
3
- import './ApplicationUtils-12768f5a.js';
3
+ import './ApplicationUtils-985c24ae.js';
4
4
  import { C as CSSVarsUtils } from './CSSVarsUtils-acba92d7.js';
5
5
  import './DialogType-54a62731.js';
6
6
  import './CheckMode-bdb2ec19.js';
7
- import './index-62fc771e.js';
7
+ import './index-a3b24b5d.js';
8
8
  import './FormLayout-071d324c.js';
9
9
 
10
10
  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-button--border:none}.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-button--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)}";
@@ -1,6 +1,6 @@
1
1
  import { r as registerInstance, h, H as Host, g as getElement } from './index-baa5e267.js';
2
2
  import { FloatingManager, ElementIDUtils } from '@sankhyalabs/core';
3
- import { i as initI18n } from './index-62fc771e.js';
3
+ import { i as initI18n } from './index-a3b24b5d.js';
4
4
 
5
5
  const ezAlertListCss = ":host {\n display: flex;\n\n /* Alert List */\n \n /*@doc Define a largura da lista minimizado */\n --ez-alert-list__container--width: 680px;\n /*@doc Define a altura da lista minimizado */\n --ez-alert-list__container--height: 220px;\n \n /*@doc Define a largura da lista maximizada */\n --ez-alert-list__container--width--expanded: 920px;\n /*@doc Define a altura da lista maximizada */\n --ez-alert-list__container--height--expanded: 540px;\n\n /* Title */\n /*@doc Define a fonte do título do componente */\n --ez-alert-list__title--font-family: var(--font-pattern, \"Roboto\");\n /*@doc Define o tamanho da fonte do título do popup.*/\n --ez-alert-list__title--font-size: var(--title--large, 20px);\n /*@doc Define a cor da fonte do título do popup.*/\n --ez-alert-list__title--color: var(--title--primary, #2b3a54);\n /*@doc Define o peso da fonte do título do popup.*/\n --ez-alert-list__title--font-weight: var(--text-weight--extra-large, 700);\n\n /* @doc Define a borda inferior do item da lista. */\n --ez-list__item--border-bottom: var(--border--small, 1px solid);\n\n /* @doc Define a cor da borda inferior do item da lista. */\n --ez-list__item--border-bottom-color: var(--color--strokes, #DCE0E8);\n\n /* @doc Define o tipo da quebra de linha do item da lista. */\n --ez-list__item--white-space: break-space;\n}\n\n.alert-list__content {\n display: flex;\n flex-direction: column;\n \n gap: var(--space--xs);\n margin: var(--space--large, 24px);\n width: 100%;\n}\n\n.alert-list__container {\n z-index: var(--ez-elevation--8, 8);\n display: flex;\n height: var(--ez-alert-list__container--height);\n width: var(--ez-alert-list__container--width);\n border-radius: var(--border--radius-medium);\n background-color: var(--background--xlight);\n box-shadow: var(--shadow--medium);\n\n &.expanded {\n height: var(--ez-alert-list__container--height--expanded);\n width: var(--ez-alert-list__container--width--expanded);\n }\n\n @media (max-height: 640px) {\n max-height: calc(100vh - var(--space--3xl));\n } \n}\n\n.alert-list__header {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.alert-list__title {\n font-family: var(--ez-alert-list__title--font-family);\n font-size: var(--ez-alert-list__title--font-size);\n font-weight: var(--ez-alert-list__title--font-weight);\n color: var(--ez-alert-list__title--color);\n}\n\n.alert-list__header__buttons {\n display: flex;\n gap: var(--space--xs);\n}\n\n.alert-list__expandable-content {\n overflow-y: auto;\n scrollbar-width: thin;\n}\n\n";
6
6
 
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, h } from './index-baa5e267.js';
2
- import { i as initI18n } from './index-62fc771e.js';
2
+ import { i as initI18n } from './index-a3b24b5d.js';
3
3
  import '@sankhyalabs/core';
4
4
 
5
5
  const ezAvatarCss = ":host{--ez-avatar--background-color:var(--color--ocean-green-600, #008561);--ez-avatar--color:var(--color--gray-70, #fff);--ez-avatar--border-radius-circle:50%;--ez-avatar--border-radius-square:25%;--ez-avatar--background-color-hover:var(--color--ocean-green-700, #00684C)}button,figure{display:flex;align-items:center;justify-content:center;border:var(--ez-avatar--border);background-color:var(--ez-avatar--background-color);color:var(--ez-avatar--color);font-weight:var(--font-weight--medium, 500);font-family:var(--font-pattern, 'Roboto');transition:background-color 0.2s linear, color 0.2s linear;margin:0;padding:0}button:hover{cursor:pointer;background-color:var(--ez-avatar--background-color-hover)}.avatar--320{--avatar-size:320px;width:20rem;height:20rem}.avatar--300{--avatar-size:300px;width:18.75rem;height:18.75rem}.avatar--280{--avatar-size:280px;width:17.5rem;height:17.5rem}.avatar--260{--avatar-size:260px;width:16.25rem;height:16.25rem}.avatar--240{--avatar-size:240px;width:15rem;height:15rem}.avatar--220{--avatar-size:220px;width:13.75rem;height:13.75rem}.avatar--200{--avatar-size:200px;width:12.5rem;height:12.5rem}.avatar--180{--avatar-size:180px;width:11.25rem;height:11.25rem}.avatar--160{--avatar-size:160px;width:10rem;height:10rem}.avatar--140{--avatar-size:140px;width:8.75rem;height:8.75rem}.avatar--120{--avatar-size:120px;width:7.5rem;height:7.5rem}.avatar--100{--avatar-size:100px;width:6.25rem;height:6.25rem}.avatar--80{--avatar-size:80px;width:5rem;height:5rem}.avatar--60{--avatar-size:60px;width:3.75rem;height:3.75rem}.avatar-initial{font-size:calc(0.375 * var(--avatar-size));}.avatar--circle{border-radius:var(--ez-avatar--border-radius-circle)}.avatar--square{border-radius:var(--ez-avatar--border-radius-square)}.avatar-image{width:100%;height:100%;object-fit:cover;border-radius:inherit}.avatar--has-image{background-color:transparent}ez-icon{--ez-icon--color:var(--color--gray-70, #fff);font-weight:var(--font-weight--medium, 500)}";
@@ -1,6 +1,6 @@
1
1
  import { r as registerInstance, c as createEvent, f as forceUpdate, h, g as getElement } from './index-baa5e267.js';
2
2
  import { FloatingManager } from '@sankhyalabs/core';
3
- import { i as initI18n } from './index-62fc771e.js';
3
+ import { i as initI18n } from './index-a3b24b5d.js';
4
4
 
5
5
  const ezCalendarCss = ":host{--ez-calendar--font-family:var(--font-pattern, Arial);--ez-calendar--color:var(--title--primary, #626e82);--ez-calendar--text-shadow:var(--text-shadow, 0 0 0 #353535, 0 0 1px transparent);--ez-calendar__body--background-color:var(--background--xlight, #FFF);--ez-calendar__time--background-color:var(--background--xlight, #FAFAFA);--ez-calendar__body--padding:var(--space--medium, 12px) var(--space--small, 6px);--ez-calendar__body--border-radius:var(--border--radius-medium, 12px);--ez-calendar__body--shadow:var(--shadow, 0px 0px 16px 0px #000);--ez-container--z-index:var(--more-visible, 2);--ez-calendar__header-line--stroke:1px;--ez-calendar__header-line--color:var(--color--strokes, #C0C0C0);--ez-calendar__nav-btn--fill:var(--text--primary, #008561);--ez-calendar__nav-btn--hover--fill:var(--color--primary, #350404);--ez-calendar__nav-btn--width:10px;--ez-calendar__nav-btn--height:16px;--ez-calendar__nav-btn--previous-image:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"16px\" width=\"10px\"><path d=\"M 9.7808475,13.860393 3.9204526,8.0000004 9.7808475,2.0624965 7.9301965,0.28895552 0.21915255,8.0000004 7.9301965,15.711044 Z\"/></svg>');--ez-calendar__nav-btn--next-image:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" height=\"16px\" width=\"10px\"><path d=\"M 0.21915251,13.860393 6.0795475,8.0000007 0.21915251,2.0624968 2.0698036,0.28895588 9.7808475,8.0000007 2.0698036,15.711044 Z\"/></svg>');--ez-calendar__cell--margin:0px 1.5px;--ez-calendar__cell--width:var(--space--large, 24px);--ez-calendar__cell--padding:1.5px 0px;--ez-calendar__cell--border-radius:var(--border--radius-small, 6px);--ez-calendar__cell--over--background-color:var(--color--primary, #E2F4EF);--ez-calendar__cell--over--color:var(--color--primary-300, #008561);--ez-calendar__cell--outset--color:var(--color--disable-primary, #E5EAF0);--ez-calendar__cell--selected--background-color:var(--color--primary, #008561);--ez-calendar__cell--selected--color:var(--color--inverted, #FFF);--ez-calendar__btn-today--color:var(--color--primary);--ez-calendar__btn-today--hover--background-color:var(--color--primary-300, #E2F4EF);--ez-calendar__btn-today--border-radius:var(--border--radius-small, 6px);position:relative;display:flex;user-select:none}.calendar__container{display:flex;z-index:var(--more-visible, 2)}.calendar{display:flex;flex-direction:column;z-index:var(--more-visible, 2);background-color:var(--ez-calendar__body--background-color);padding:var(--ez-calendar__body--padding);border-radius:var(--ez-calendar__body--border-radius);box-shadow:var(--ez-calendar__body--shadow)}.calendar__header{display:flex;justify-content:space-between;padding-bottom:var(--space--small, 6px);margin:0px var(--space--, 12px) var(--space--small, 6px) var(--space--, 12px);font-family:var(--ez-calendar--font-family);color:var(--ez-calendar--color);text-shadow:var(--ez-calendar--text-shadow);border-bottom:solid var(--ez-calendar__header-line--stroke) var(--ez-calendar__header-line--color)}.calendar__btn-next,.calendar__btn-previous{outline:none;border:none;background-color:unset;cursor:pointer;padding:0px}.calendar__btn-next::after,.calendar__btn-previous::after{content:'';display:flex;background-color:var(--ez-calendar__nav-btn--fill);width:var(--ez-calendar__nav-btn--width);height:var(--ez-calendar__nav-btn--height)}.calendar__btn-previous::after{-webkit-mask-image:var(--ez-calendar__nav-btn--previous-image);mask-image:var(--ez-calendar__nav-btn--previous-image)}.calendar__btn-next::after{-webkit-mask-image:var(--ez-calendar__nav-btn--next-image);mask-image:var(--ez-calendar__nav-btn--next-image)}.calendar__btn-next:hover::after,.calendar__btn-previous:hover::after{background-color:var(--ez-calendar__nav-btn--hover--fill)}.calendar__lbl-month{font-weight:var(--text-weight--extra-large, 700);font-size:var(--title--small, 14px);font-family:var(--ez-calendar--font-family);color:var(--ez-calendar--color);text-shadow:var(--ez-calendar--text-shadow)}.calendar__line{display:flex;padding:0px;margin:0px}.calendar__cell{display:flex;justify-content:center;align-content:center;cursor:pointer;font-size:var(--text--extra-small, 10px);font-family:var(--ez-calendar--font-family);color:var(--ez-calendar--color);text-shadow:var(--ez-calendar--text-shadow);padding:var(--ez-calendar__cell--padding);margin:var(--ez-calendar__cell--margin);min-width:var(--ez-calendar__cell--width);border-radius:var(--ez-calendar__cell--border-radius)}.calendar__cell:hover{background-color:var(--ez-calendar__cell--over--background-color);color:var(--ez-calendar__cell--over--color)}.calendar__cell--secondary{color:var(--ez-calendar__cell--outset--color)}.calendar__cell--unselectable:hover{background-color:unset;border-radius:unset;cursor:unset;color:var(--ez-calendar--color)}.calendar__cell--unselectable{font-weight:var(--text-weight--large, 600);font-family:var(--ez-calendar--font-family);color:var(--ez-calendar--color);text-shadow:var(--ez-calendar--text-shadow)}.calendar__cell--selected,.calendar__cell--selected:hover{background-color:var(--ez-calendar__cell--selected--background-color);color:var(--ez-calendar__cell--selected--color)}.calendar__footer{display:flex;flex-direction:column}.calendar__btn-today{border:none;background-color:unset;cursor:pointer;padding:0px;font-weight:var(--text-weight--large, 600);font-size:var(--title--extra-small, 12px);font-family:var(--ez-calendar--font-family);text-shadow:var(--ez-calendar--text-shadow);color:var(--ez-calendar__btn-today--color);border-radius:var(--ez-calendar__btn-today--border-radius)}.calendar__btn-today:hover{background-color:var(--ez-calendar__btn-today--hover--background-color)}section{display:flex}.calendar-time{margin-left:-10px;display:flex;flex-direction:column;padding:12px 0px 0px 10px;background-color:var(--ez-calendar__time--background-color);border-top-right-radius:var(--ez-calendar__body--border-radius);border-bottom-right-radius:var(--ez-calendar__body--border-radius);box-shadow:var(--ez-calendar__body--shadow)}.calendar__column{height:136px;padding:0px;margin:0px;overflow:auto;scrollbar-width:none}.calendar__column::-webkit-scrollbar{width:0px;max-width:0px;min-width:0px}.calendar-time__header{display:flex;justify-content:space-between;padding-left:var(--space--small, 6px);padding-right:var(--space--small, 6px);padding-bottom:var(--space--small, 6px);margin:0px var(--space--, 12px) var(--space--small, 6px) var(--space--, 12px);font-weight:var(--text-weight--extra-large, 700);font-size:var(--title--small, 14px);text-shadow:var(--ez-calendar--text-shadow);border-bottom:solid var(--ez-calendar__header-line--stroke) var(--ez-calendar__header-line--color);font-family:var(--ez-calendar--font-family);color:var(--ez-calendar--color);text-shadow:var(--ez-calendar--text-shadow)}.separatorTime{color:#A2ABB9;padding:0px 1px;line-height:16px;font-size:17px;font-weight:normal}.endHidden{-webkit-mask-image:linear-gradient(180deg, #000 calc(100% - 48px), transparent 100%)}.calendar__column .calendar__cell{margin:0px;padding:1.5px 1.5px}";
6
6
 
@@ -1,9 +1,9 @@
1
1
  import { r as registerInstance, c as createEvent, h, g as getElement } from './index-baa5e267.js';
2
2
  import { ElementIDUtils } from '@sankhyalabs/core';
3
- import { A as ApplicationUtils } from './ApplicationUtils-12768f5a.js';
3
+ import { A as ApplicationUtils } from './ApplicationUtils-985c24ae.js';
4
4
  import './DialogType-54a62731.js';
5
5
  import './CheckMode-bdb2ec19.js';
6
- import { i as initI18n } from './index-62fc771e.js';
6
+ import { i as initI18n } from './index-a3b24b5d.js';
7
7
  import './FormLayout-071d324c.js';
8
8
 
9
9
  const ezCollapsibleBoxCss = ":host{--ez-collapsible-box--font-size:var(--title--medium, 14px);--ez-collapsible-box--font-family:var(--font-pattern, Arial);--ez-collapsible-box--font-weight:var(--text-weight--large, 600);--ez-collapsible-box--color:var(--title--primary);--ez-collapsible-box--subtitle--font-size:var(--text--medium, 14px);--ez-collapsible-box--subtitle--font-family:var(--font-pattern, 'Roboto');--ez-collapsible-box--subtitle--font-weight:var(--text-weight--medium, 400);--ez-collapsible-box--subtitle--color:var(--text--primary);--ez-collapsible-box--subtitle--margin-bottom:var(--space--medium, 12px);--ez-collapsible-box--focus--color:var(--color--primary-600);--ez-collapsible-box__icon--color:var(--ez-collapsible-box--color);--ez-collapsible-box__header--padding-top:0px;--ez-collapsible-box__header--padding-bottom:0px;--ez-collapsible-box__header--padding-right:0px;--ez-collapsible-box__header--padding-left:0px;display:flex;flex-wrap:wrap;width:100%}ez-icon{--ez-icon--color:inherit}.collapsible-box{display:flex;flex-direction:column;width:100%;overflow:hidden}.collapsable-box--bordered{border:var(--border--small);border-color:var(--color--strokes);border-radius:var(--border--radius-medium);padding:var(--space--xs)}.collapsible-box__header{display:flex;box-sizing:border-box;padding-top:var(--ez-collapsible-box__header--padding-top);padding-bottom:var(--ez-collapsible-box__header--padding-bottom);padding-right:var(--ez-collapsible-box__header--padding-right);padding-left:var(--ez-collapsible-box__header--padding-left)}.collapsible-box__title{position:relative;width:100%;display:flex;box-sizing:border-box;align-items:center;outline:none;border:none;background-color:unset;cursor:pointer;padding:0px;text-align:left;color:var(--ez-collapsible-box--color);--ez-icon--color:var(--ez-collapsible-box__icon--color);margin-bottom:var(--space--medium, 12px)}.collapsible-box__title:focus{color:var(--ez-collapsible-box--focus--color);--ez-icon--color:var(--ez-collapsible-box--focus--color)}.collapsible-box__label{display:flex;white-space:nowrap;overflow:hidden;cursor:pointer;text-overflow:ellipsis;box-sizing:border-box;margin-left:6px;gap:6px;font-family:var(--ez-collapsible-box--font-family);font-size:var(--ez-collapsible-box--font-size);font-weight:var(--ez-collapsible-box--font-weight)}.subtitle-box__label{display:flex;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;font-family:var(--ez-collapsible-box--subtitle--font-family);font-size:var(--ez-collapsible-box--subtitle--font-size);font-weight:var(--ez-collapsible-box--subtitle--font-weight);color:var(--ez-collapsible-box--subtitle--color);margin-bottom:var(--ez-collapsible-box--subtitle--margin-bottom)}.subtitle-box__content{width:100%}.collapsible-box__label ez-icon{visibility:hidden;transition:2s all ease-in-out}.collapsible-box__label:hover ez-icon{visibility:visible}.collapsible-box__text-edit{margin-left:6px}.collapsible-box__icon{transform:rotate(90deg) translate(0px, 14%);transition:transform var(--transition)}.collapsible-box__icon--collapsed{transform:rotate(0deg) translate(-14%, 0px)}.collapsible-box__title--icon-right{flex-direction:row-reverse}.collapsible-box__title--icon-right .collapsible-box__icon{transform:rotate(90deg) translate(0px, -14%)}.collapsible-box__title--icon-right .collapsible-box__icon--collapsed{transform:rotate(0deg) translate(14%, 0px)}.collapsible-box__title--icon-right .collapsible-box__label{margin-left:0px;margin-right:6px}.collapsible-box__title--left{margin-right:auto}.collapsible-box__title--right{margin-left:auto}.collapsible-box__title--center{margin-left:auto;margin-right:auto}.collapsible-box__title--stretch{justify-content:space-between;width:100%}.collapsible-box__title--no-margin{margin-bottom:0}.collapsible-box__content{display:flex;flex-wrap:wrap;width:100%;height:0px;max-height:0px;opacity:0;overflow:hidden;transition:all var(--transition, 0.5s)}.collapsible-box__content--show{height:100%;max-height:none;opacity:1;overflow:visible;transition:all var(--transition, 0.5s)}.font--x-small{font-size:10px}.font--small{font-size:12px}.font--medium{font-size:14px}.font--large{font-size:16px}.font--x-large{font-size:20px}";
@@ -1,10 +1,10 @@
1
1
  import { r as registerInstance, h, H as Host, c as createEvent, g as getElement } from './index-baa5e267.js';
2
2
  import { ElementIDUtils, ObjectUtils, HTMLBuilder, StringUtils, KeyboardManager } from '@sankhyalabs/core';
3
- import { i as initI18n } from './index-62fc771e.js';
3
+ import { i as initI18n } from './index-a3b24b5d.js';
4
4
  import { C as CustomEditorSource } from './FormLayout-071d324c.js';
5
5
  import { R as RICH_TOOLBAR_FORMAT_TAGS, a as RICH_TOOLBAR_COMMANDS } from './RichToolbarHelper-f3a149c4.js';
6
6
  import { p as purify } from './purify-9357603c.js';
7
- import { A as ApplicationUtils } from './ApplicationUtils-12768f5a.js';
7
+ import { A as ApplicationUtils } from './ApplicationUtils-985c24ae.js';
8
8
  import './DialogType-54a62731.js';
9
9
  import './CheckMode-bdb2ec19.js';
10
10
  import './_commonjsHelpers-9943807e.js';
@@ -289,6 +289,152 @@ const EzCustomFormInput = class {
289
289
  }; }
290
290
  };
291
291
 
292
+ const ezImageInputCss = ":host{display:block;--ez-image-input--container-height:200px;--ez-image-input--container-width:280px;--ez-image-input--background-color:var(--color--gray-80);--ez-image-input--border-color:var(--color--gray-200);--ez-image-input--border-color-hover:var(--color--ocean-green-600);--ez-image-input--border-color-dragging:var(--color--ocean-green-500);--ez-image-input--border-color-disabled:var(--color--gray-200);--ez-image-input--label-color:var(--color--petroleum-900);--ez-image-input--icon-color:var(--color--gray-400);--ez-image-input--border-radius:var(--border--radius-24);--ez-image-input--border-width:2px;--ez-image-input--remove-button-bg:var(--color--red-600);--ez-image-input--remove-button-bg-hover:var(--color--red-700);--ez-image-input--remove-button-color:var(--color--gray-70);--ez-image-input--remove-button-border:1px solid var(--color--red-700)}.image-input__container{display:flex;align-items:center;justify-content:center;position:relative;height:var(--ez-image-input--container-height);width:var(--ez-image-input--container-width);border:var(--ez-image-input--border-width) dashed var(--ez-image-input--border-color);border-radius:var(--ez-image-input--border-radius);background-color:var(--ez-image-input--background-color);cursor:pointer;transition:all 0.3s ease;overflow:hidden}.image-input__container:hover:not(.image-input__container--disabled){border-color:var(--ez-image-input--border-color-hover)}.image-input__container--dragging{border-color:var(--ez-image-input--border-color-dragging);background-color:var(--color--ocean-green-90)}.image-input__container--disabled{cursor:not-allowed;opacity:0.6;border-color:var(--ez-image-input--border-color-disabled)}.image-input__container--has-image{border-style:solid;padding:var(--space--0)}.image-input__file-input{display:none}.image-input__dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space--16);padding:var(--space--24);text-align:center}.image-input__dropzone ez-icon{color:var(--ez-image-input--icon-color)}.image-input__label{font-family:var(--font--pattern);font-size:var(--font-size--default);font-weight:var(--font-weight--medium);color:var(--ez-image-input--label-color);line-height:var(--line-height--20)}.image-input__preview{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.image-input__image{height:100%;object-fit:cover;border-radius:calc(var(--ez-image-input--border-radius) - var(--ez-image-input--border-width))}ez-button{--ez-button--background-color:var(--ez-image-input--remove-button-bg);--ez-button--hover--background-color:var(--ez-image-input--remove-button-bg-hover);--ez-button--color:var(--ez-image-input--remove-button-color);--ez-button--border:var(--ez-image-input--remove-button-border);--ez-button--hover--border:var(--ez-image-input--remove-button-border)}.image-input__remove-button{position:absolute;top:var(--space--8);right:var(--space--8);display:flex;align-items:center;justify-content:center}.image-input__popup-content{display:flex;align-items:center;justify-content:center;padding:var(--space--16);height:100%}.image-input__popup-image{max-width:100%;max-height:70vh;object-fit:contain;border-radius:var(--border--radius-8)}.image-input__image{height:100%;object-fit:cover;border-radius:calc(var(--ez-image-input--border-radius) - var(--ez-image-input--border-width));cursor:pointer;transition:transform 0.2s ease}.image-input__image:hover{transform:scale(1.02)}ez-skeleton{--skeleton-width:var(--ez-image-input--container-width);--skeleton-height:var(--ez-image-input--container-height)}";
293
+
294
+ const EzImageInput = class {
295
+ constructor(hostRef) {
296
+ registerInstance(this, hostRef);
297
+ this.ezChange = createEvent(this, "ezChange", 7);
298
+ this.ezError = createEvent(this, "ezError", 7);
299
+ this.handleFileSelect = (event) => {
300
+ const input = event.target;
301
+ if (input.files && input.files[0]) {
302
+ this.processFile(input.files[0]);
303
+ }
304
+ };
305
+ this.handleDrop = (event) => {
306
+ var _a;
307
+ event.preventDefault();
308
+ event.stopPropagation();
309
+ this._isDragging = false;
310
+ if (!this.enabled)
311
+ return;
312
+ const files = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.files;
313
+ if (files && files[0]) {
314
+ this.processFile(files[0]);
315
+ }
316
+ };
317
+ this.handleDragOver = (event) => {
318
+ event.preventDefault();
319
+ event.stopPropagation();
320
+ if (this.enabled) {
321
+ this._isDragging = true;
322
+ }
323
+ };
324
+ this.handleDragLeave = (event) => {
325
+ event.preventDefault();
326
+ event.stopPropagation();
327
+ this._isDragging = false;
328
+ };
329
+ this.handleRemoveImage = (event) => {
330
+ event.stopPropagation();
331
+ this.value = undefined;
332
+ this._hasImage = false;
333
+ if (this._inputElem) {
334
+ this._inputElem.value = '';
335
+ }
336
+ this.ezChange.emit('');
337
+ };
338
+ this.handleClickDropZone = () => {
339
+ var _a;
340
+ if (this.enabled && !this._hasImage) {
341
+ (_a = this._inputElem) === null || _a === void 0 ? void 0 : _a.click();
342
+ }
343
+ };
344
+ this.handleImageClick = (event) => {
345
+ event.stopPropagation();
346
+ if (this._hasImage && this.value) {
347
+ this._showImagePopup = true;
348
+ }
349
+ };
350
+ this.handlePopupAction = (event) => {
351
+ const action = event.detail;
352
+ if (action === 'CANCEL' || action === 'OK') {
353
+ this.handleClosePopup();
354
+ }
355
+ };
356
+ this.handleClosePopup = () => {
357
+ this._showImagePopup = false;
358
+ };
359
+ this.enabled = true;
360
+ this.label = undefined;
361
+ this.name = undefined;
362
+ this.value = undefined;
363
+ this.maxFileSize = 20 * 1024 * 1024;
364
+ this.accept = 'image/*';
365
+ this.loading = false;
366
+ this._hasImage = false;
367
+ this._isDragging = false;
368
+ this._showImagePopup = false;
369
+ }
370
+ onValueChange(newValue, oldValue) {
371
+ if (newValue !== oldValue) {
372
+ this._hasImage = !!newValue;
373
+ }
374
+ if (!newValue && this._inputElem) {
375
+ this._inputElem.value = '';
376
+ }
377
+ }
378
+ addInfoId() {
379
+ if (this._element) {
380
+ ElementIDUtils.addIDInfo(this._element);
381
+ }
382
+ if (this._inputElem) {
383
+ const dataInfo = { id: 'embedded' };
384
+ ElementIDUtils.addIDInfo(this._inputElem, 'image-input', dataInfo);
385
+ }
386
+ }
387
+ processFile(file) {
388
+ // Validar tipo de arquivo
389
+ if (!file.type.startsWith('image/')) {
390
+ const errorMsg = this.i18n('ez-image-input.invalidFileType');
391
+ this.ezError.emit(errorMsg);
392
+ return;
393
+ }
394
+ // Validar tamanho do arquivo
395
+ if (this.maxFileSize && file.size > this.maxFileSize) {
396
+ const maxSizeMB = (this.maxFileSize / (1024 * 1024)).toFixed(2);
397
+ const errorMsg = this.i18n('ez-image-input.fileTooLarge', { maxSize: `${maxSizeMB}MB` });
398
+ this.ezError.emit(errorMsg);
399
+ return;
400
+ }
401
+ // Converter para base64
402
+ const reader = new FileReader();
403
+ reader.onload = (e) => {
404
+ var _a;
405
+ const base64 = (_a = e.target) === null || _a === void 0 ? void 0 : _a.result;
406
+ this.value = base64;
407
+ this._hasImage = true;
408
+ this.ezChange.emit(base64);
409
+ };
410
+ reader.readAsDataURL(file);
411
+ }
412
+ async componentWillLoad() {
413
+ this.i18n = await initI18n();
414
+ this._hasImage = !!this.value;
415
+ }
416
+ componentDidLoad() {
417
+ this.addInfoId();
418
+ }
419
+ render() {
420
+ if (this.loading) {
421
+ return (h(Host, null, h("ez-skeleton", { width: "280px", height: '200px' })));
422
+ }
423
+ const dropZoneLabel = this.label || this.i18n('ez-image-input.defaultLabel');
424
+ return (h(Host, null, h("div", { class: {
425
+ 'image-input__container': true,
426
+ 'image-input__container--disabled': !this.enabled,
427
+ 'image-input__container--dragging': this._isDragging,
428
+ 'image-input__container--has-image': this._hasImage
429
+ }, "data-enabled": this.enabled.toString(), "data-has-image": this._hasImage.toString(), onClick: this.handleClickDropZone, onDrop: this.handleDrop, onDragOver: this.handleDragOver, onDragLeave: this.handleDragLeave, role: "button", "aria-label": dropZoneLabel, tabindex: this.enabled ? 0 : -1 }, h("input", { ref: (el) => (this._inputElem = el), type: "file", accept: this.accept, name: this.name, disabled: !this.enabled, onChange: this.handleFileSelect, class: "image-input__file-input", "aria-hidden": "true" }), this._hasImage && this.value ? (h("div", { class: "image-input__preview" }, h("img", { src: this.value, alt: this.i18n('ez-image-input.imageAlt'), class: "image-input__image", onClick: this.handleImageClick }), this.enabled && (h("ez-button", { class: "image-input__remove-button", variant: "primary", type: "button", mode: "icon", size: "small", iconName: "trash-alt", onClick: this.handleRemoveImage, "aria-label": this.i18n('ez-image-input.removeImage'), title: this.i18n('ez-image-input.removeImage') })))) : (h("div", { class: "image-input__dropzone" }, h("ez-icon", { iconName: "image", size: "x-large" }), h("span", { class: "image-input__label" }, dropZoneLabel)))), h("ez-popup", { opened: this._showImagePopup, ezTitle: this.i18n('ez-image-input.imagePreview'), size: "large", heightMode: "auto", onEzPopupAction: this.handlePopupAction, onEzClosePopup: this.handleClosePopup }, h("div", { class: "image-input__popup-content" }, h("img", { src: this.value, alt: this.i18n('ez-image-input.imageAlt'), class: "image-input__popup-image" })))));
430
+ }
431
+ get _element() { return getElement(this); }
432
+ static get watchers() { return {
433
+ "value": ["onValueChange"]
434
+ }; }
435
+ };
436
+ EzImageInput.style = ezImageInputCss;
437
+
292
438
  const ezRichTextCss = ".sc-ez-rich-text-h{display:block;width:100%;font-family:Roboto;--ez-rich-text--box-shadow:0 0 3px 0 #DCE0E8;--ez-rich-text--shadow--outline:var(--shadow--outline) var(--color--strokes)}.editor-container.sc-ez-rich-text{width:100%;overflow:hidden;border-radius:12px;border:1px solid #DCE0E8}ez-text-area.sc-ez-rich-text{--text-area__input--border:1px solid}.preview.sc-ez-rich-text{min-height:20px;padding:12px;resize:both;overflow:auto;max-width:100%;border-top:1px solid #DCE0E8}";
293
439
 
294
440
  const EzRichText = class {
@@ -663,4 +809,4 @@ const EzTextEdit = class {
663
809
  };
664
810
  EzTextEdit.style = ezTextEditCss;
665
811
 
666
- export { EzComboBoxList as ez_combo_box_list, EzCustomFormInput as ez_custom_form_input, EzRichText as ez_rich_text, EzTextEdit as ez_text_edit };
812
+ export { EzComboBoxList as ez_combo_box_list, EzCustomFormInput as ez_custom_form_input, EzImageInput as ez_image_input, EzRichText as ez_rich_text, EzTextEdit as ez_text_edit };
@@ -1,10 +1,10 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-baa5e267.js';
2
2
  import { ObjectUtils, ElementIDUtils } from '@sankhyalabs/core';
3
- import './ApplicationUtils-12768f5a.js';
3
+ import './ApplicationUtils-985c24ae.js';
4
4
  import { C as CSSVarsUtils } from './CSSVarsUtils-acba92d7.js';
5
5
  import './DialogType-54a62731.js';
6
6
  import './CheckMode-bdb2ec19.js';
7
- import { i as initI18n } from './index-62fc771e.js';
7
+ import { i as initI18n } from './index-a3b24b5d.js';
8
8
  import './FormLayout-071d324c.js';
9
9
 
10
10
  const ezComboBoxCss = ":host{--ez-combo-box--height:42px;--ez-combo-box--width:100%;--ez-combo-box--border-radius:var(--border--radius-medium, 12px);--ez-combo-box--font-size:var(--text--medium, 14px);--ez-combo-box--font-family:var(--font-pattern, Arial);--ez-combo-box--background-color--xlight:var(--background--xlight, #fff);--ez-combo-box__input--background-color:var(--background--medium, #e0e0e0);--ez-combo-box__input--border:var(--border--medium, 2px solid);--ez-combo-box__input--border-color:var(--ez-combo-box__input--background-color);--ez-combo-box__input--focus--border-color:var(--color--primary, #008561);--ez-combo-box__input--disabled--background-color:var(--color--disable-secondary, #F2F5F8);--ez-combo-box__input--disabled--color:var(--text--disable, #AFB6C0);--ez-combo-box__btn--color:var(--title--primary, #2B3A54);--ez-combo-box__btn-disabled--color:var(--text--disable, #AFB6C0);--ez-combo-box__btn-hover--color:var(--color--primary, #4e4e4e);width:var(--ez-combo-box--width)}ez-icon{--ez-icon--color:inherit;font-weight:var(--text-weight--large, 600)}.suppressed-search-input{--ez-text-input__input--border-color:var(--color--strokes, #dce0e8);--ez-text-input__input--disabled--background-color:var(--background--xlight, #fff);--ez-text-input__input--disabled--color:var(--title--primary, #2B3A54)}.btn{outline:none;border:none;background:none;cursor:pointer;padding:0px;color:var(--ez-combo-box__btn--color)}.btn:disabled{cursor:unset;color:var(--ez-combo-box__btn-disabled--color)}.btn:disabled:hover{cursor:not-allowed;color:var(--ez-combo-box__btn-disabled--color)}.btn:hover{color:var(--ez-combo-box__btn-hover--color)}.btn__close{visibility:hidden}ez-text-input:hover .btn__close,ez-text-input:focus .btn__close{visibility:visible}.text-input-slot-container{--ez-text-input__icon--width:32px;--ez-text-input__min-width:var(--ez-combo-box__min-width);--ez-text-input__max-width:var(--ez-combo-box__max-width)}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}";