@mmlogic/components 0.3.4 → 0.3.6

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 (173) hide show
  1. package/dist/{collection/utils/cell-renderer.js → mosterdcomponents/cell-renderer-CbRwLOo8.js} +9 -3
  2. package/dist/mosterdcomponents/cell-renderer-CbRwLOo8.js.map +1 -0
  3. package/dist/{esm/index.js → mosterdcomponents/client-layout-D88nn5zf.js} +4 -1
  4. package/dist/mosterdcomponents/client-layout-D88nn5zf.js.map +1 -0
  5. package/dist/{collection/utils/format.js → mosterdcomponents/format-BAfsQfy1.js} +12 -7
  6. package/dist/mosterdcomponents/format-BAfsQfy1.js.map +1 -0
  7. package/dist/{collection/utils/i18n.js → mosterdcomponents/i18n-hoGGKbKU.js} +6 -1
  8. package/dist/mosterdcomponents/i18n-hoGGKbKU.js.map +1 -0
  9. package/dist/mosterdcomponents/index-B_tPFIvS.js +4585 -0
  10. package/dist/mosterdcomponents/index-B_tPFIvS.js.map +1 -0
  11. package/dist/mosterdcomponents/index-I5SuYv7a.js +4 -0
  12. package/dist/mosterdcomponents/index-I5SuYv7a.js.map +1 -0
  13. package/dist/mosterdcomponents/index.esm.js +5 -1
  14. package/dist/mosterdcomponents/index.esm.js.map +1 -0
  15. package/dist/mosterdcomponents/mosterdcomponents.css +180 -1
  16. package/dist/mosterdcomponents/mosterdcomponents.esm.js +50 -1
  17. package/dist/mosterdcomponents/mosterdcomponents.esm.js.map +1 -0
  18. package/dist/mosterdcomponents/mrd-boolean-field.entry.js +37 -0
  19. package/dist/mosterdcomponents/mrd-boolean-field.entry.js.map +1 -0
  20. package/dist/mosterdcomponents/mrd-currency-field.entry.js +67 -0
  21. package/dist/mosterdcomponents/mrd-currency-field.entry.js.map +1 -0
  22. package/dist/mosterdcomponents/mrd-date-field.entry.js +46 -0
  23. package/dist/mosterdcomponents/mrd-date-field.entry.js.map +1 -0
  24. package/dist/mosterdcomponents/mrd-datetime-field.entry.js +78 -0
  25. package/dist/mosterdcomponents/mrd-datetime-field.entry.js.map +1 -0
  26. package/dist/mosterdcomponents/mrd-email-field.entry.js +50 -0
  27. package/dist/mosterdcomponents/mrd-email-field.entry.js.map +1 -0
  28. package/dist/{collection/components/mrd-field/mrd-field.js → mosterdcomponents/mrd-field.entry.js} +28 -179
  29. package/dist/mosterdcomponents/mrd-field.entry.js.map +1 -0
  30. package/dist/mosterdcomponents/mrd-file-field.entry.js +108 -0
  31. package/dist/mosterdcomponents/mrd-file-field.entry.js.map +1 -0
  32. package/dist/{collection/components/mrd-form/mrd-form.js → mosterdcomponents/mrd-form.entry.js} +82 -280
  33. package/dist/mosterdcomponents/mrd-form.entry.js.map +1 -0
  34. package/dist/mosterdcomponents/mrd-hyperlink-field.entry.js +87 -0
  35. package/dist/mosterdcomponents/mrd-hyperlink-field.entry.js.map +1 -0
  36. package/dist/mosterdcomponents/mrd-image-field.entry.js +122 -0
  37. package/dist/mosterdcomponents/mrd-image-field.entry.js.map +1 -0
  38. package/dist/{collection/components/mrd-layout-section/mrd-layout-section.js → mosterdcomponents/mrd-layout-section.entry.js} +31 -418
  39. package/dist/mosterdcomponents/mrd-layout-section.entry.js.map +1 -0
  40. package/dist/mosterdcomponents/mrd-list-field.entry.js +107 -0
  41. package/dist/mosterdcomponents/mrd-list-field.entry.js.map +1 -0
  42. package/dist/mosterdcomponents/mrd-longtext-field.entry.js +47 -0
  43. package/dist/mosterdcomponents/mrd-longtext-field.entry.js.map +1 -0
  44. package/dist/mosterdcomponents/mrd-number-field.entry.js +87 -0
  45. package/dist/mosterdcomponents/mrd-number-field.entry.js.map +1 -0
  46. package/dist/mosterdcomponents/mrd-relation-field.entry.js +267 -0
  47. package/dist/mosterdcomponents/mrd-relation-field.entry.js.map +1 -0
  48. package/dist/mosterdcomponents/mrd-secret-field.entry.js +49 -0
  49. package/dist/mosterdcomponents/mrd-secret-field.entry.js.map +1 -0
  50. package/dist/{collection/components/mrd-table/mrd-table.js → mosterdcomponents/mrd-table.entry.js} +67 -398
  51. package/dist/mosterdcomponents/mrd-table.entry.js.map +1 -0
  52. package/dist/mosterdcomponents/mrd-text-field.entry.js +47 -0
  53. package/dist/mosterdcomponents/mrd-text-field.entry.js.map +1 -0
  54. package/dist/mosterdcomponents/mrd-textarea-field.entry.js +86 -0
  55. package/dist/mosterdcomponents/mrd-textarea-field.entry.js.map +1 -0
  56. package/dist/mosterdcomponents/mrd-time-field.entry.js +46 -0
  57. package/dist/mosterdcomponents/mrd-time-field.entry.js.map +1 -0
  58. package/dist/{esm/quill-CiuCgGz_.js → mosterdcomponents/quill-C9pgw_k-.js} +16282 -1397
  59. package/dist/mosterdcomponents/quill-C9pgw_k-.js.map +1 -0
  60. package/dist/{collection/utils/validation.js → mosterdcomponents/validation-ixb43cqU.js} +12 -5
  61. package/dist/mosterdcomponents/validation-ixb43cqU.js.map +1 -0
  62. package/dist/types/components/mrd-form/mrd-form.d.ts +13 -1
  63. package/dist/types/components/mrd-relation-field/mrd-relation-field.d.ts +3 -0
  64. package/dist/types/components/mrd-table/mrd-table.d.ts +4 -0
  65. package/dist/types/components.d.ts +19 -9
  66. package/package.json +1 -1
  67. package/dist/cjs/app-globals-V2Kpy_OQ.js +0 -5
  68. package/dist/cjs/index-BPj2cBXs.js +0 -1570
  69. package/dist/cjs/index.cjs.js +0 -66
  70. package/dist/cjs/loader.cjs.js +0 -13
  71. package/dist/cjs/mosterdcomponents.cjs.js +0 -25
  72. package/dist/cjs/mrd-boolean-field_20.cjs.entry.js +0 -3848
  73. package/dist/cjs/quill-DmFfnC1f.js +0 -16272
  74. package/dist/collection/collection-manifest.json +0 -32
  75. package/dist/collection/components/mrd-boolean-field/mrd-boolean-field.js +0 -199
  76. package/dist/collection/components/mrd-boolean-field/mrd-boolean-field.scss +0 -77
  77. package/dist/collection/components/mrd-currency-field/mrd-currency-field.js +0 -248
  78. package/dist/collection/components/mrd-currency-field/mrd-currency-field.scss +0 -100
  79. package/dist/collection/components/mrd-date-field/mrd-date-field.js +0 -206
  80. package/dist/collection/components/mrd-date-field/mrd-date-field.scss +0 -66
  81. package/dist/collection/components/mrd-datetime-field/mrd-datetime-field.js +0 -240
  82. package/dist/collection/components/mrd-datetime-field/mrd-datetime-field.scss +0 -66
  83. package/dist/collection/components/mrd-email-field/mrd-email-field.js +0 -230
  84. package/dist/collection/components/mrd-email-field/mrd-email-field.scss +0 -69
  85. package/dist/collection/components/mrd-field/mrd-field.scss +0 -118
  86. package/dist/collection/components/mrd-file-field/mrd-file-field.js +0 -341
  87. package/dist/collection/components/mrd-file-field/mrd-file-field.scss +0 -153
  88. package/dist/collection/components/mrd-form/mrd-form.scss +0 -148
  89. package/dist/collection/components/mrd-hyperlink-field/mrd-hyperlink-field.js +0 -291
  90. package/dist/collection/components/mrd-hyperlink-field/mrd-hyperlink-field.scss +0 -91
  91. package/dist/collection/components/mrd-image-field/mrd-image-field.js +0 -356
  92. package/dist/collection/components/mrd-image-field/mrd-image-field.scss +0 -190
  93. package/dist/collection/components/mrd-layout-section/mrd-layout-section.scss +0 -445
  94. package/dist/collection/components/mrd-list-field/mrd-list-field.js +0 -313
  95. package/dist/collection/components/mrd-list-field/mrd-list-field.scss +0 -109
  96. package/dist/collection/components/mrd-longtext-field/mrd-longtext-field.js +0 -227
  97. package/dist/collection/components/mrd-longtext-field/mrd-longtext-field.scss +0 -78
  98. package/dist/collection/components/mrd-number-field/mrd-number-field.js +0 -316
  99. package/dist/collection/components/mrd-number-field/mrd-number-field.scss +0 -77
  100. package/dist/collection/components/mrd-relation-field/mrd-relation-field.js +0 -678
  101. package/dist/collection/components/mrd-relation-field/mrd-relation-field.scss +0 -266
  102. package/dist/collection/components/mrd-secret-field/mrd-secret-field.js +0 -229
  103. package/dist/collection/components/mrd-secret-field/mrd-secret-field.scss +0 -73
  104. package/dist/collection/components/mrd-table/mrd-table.scss +0 -742
  105. package/dist/collection/components/mrd-text-field/mrd-text-field.js +0 -227
  106. package/dist/collection/components/mrd-text-field/mrd-text-field.scss +0 -69
  107. package/dist/collection/components/mrd-textarea-field/mrd-textarea-field.js +0 -267
  108. package/dist/collection/components/mrd-textarea-field/mrd-textarea-field.scss +0 -79
  109. package/dist/collection/components/mrd-time-field/mrd-time-field.js +0 -206
  110. package/dist/collection/components/mrd-time-field/mrd-time-field.scss +0 -66
  111. package/dist/collection/dev/api.js +0 -136
  112. package/dist/collection/dev/app.js +0 -868
  113. package/dist/collection/dev/auth.js +0 -156
  114. package/dist/collection/dev/example-data.js +0 -403
  115. package/dist/collection/dev/sprites.svg +0 -55
  116. package/dist/collection/index.js +0 -1
  117. package/dist/collection/types/client-layout.js +0 -64
  118. package/dist/collection/types/index.js +0 -1
  119. package/dist/components/client-layout.js +0 -1
  120. package/dist/components/format.js +0 -1
  121. package/dist/components/i18n.js +0 -1
  122. package/dist/components/index.js +0 -1
  123. package/dist/components/mrd-boolean-field.js +0 -1
  124. package/dist/components/mrd-boolean-field2.js +0 -1
  125. package/dist/components/mrd-currency-field.js +0 -1
  126. package/dist/components/mrd-currency-field2.js +0 -1
  127. package/dist/components/mrd-date-field.js +0 -1
  128. package/dist/components/mrd-date-field2.js +0 -1
  129. package/dist/components/mrd-datetime-field.js +0 -1
  130. package/dist/components/mrd-datetime-field2.js +0 -1
  131. package/dist/components/mrd-email-field.js +0 -1
  132. package/dist/components/mrd-email-field2.js +0 -1
  133. package/dist/components/mrd-field.js +0 -1
  134. package/dist/components/mrd-field2.js +0 -1
  135. package/dist/components/mrd-file-field.js +0 -1
  136. package/dist/components/mrd-file-field2.js +0 -1
  137. package/dist/components/mrd-form.js +0 -1
  138. package/dist/components/mrd-hyperlink-field.js +0 -1
  139. package/dist/components/mrd-hyperlink-field2.js +0 -1
  140. package/dist/components/mrd-image-field.js +0 -1
  141. package/dist/components/mrd-image-field2.js +0 -1
  142. package/dist/components/mrd-layout-section.js +0 -1
  143. package/dist/components/mrd-list-field.js +0 -1
  144. package/dist/components/mrd-list-field2.js +0 -1
  145. package/dist/components/mrd-longtext-field.js +0 -1
  146. package/dist/components/mrd-longtext-field2.js +0 -1
  147. package/dist/components/mrd-number-field.js +0 -1
  148. package/dist/components/mrd-number-field2.js +0 -1
  149. package/dist/components/mrd-relation-field.js +0 -1
  150. package/dist/components/mrd-relation-field2.js +0 -1
  151. package/dist/components/mrd-secret-field.js +0 -1
  152. package/dist/components/mrd-secret-field2.js +0 -1
  153. package/dist/components/mrd-table.js +0 -1
  154. package/dist/components/mrd-table2.js +0 -1
  155. package/dist/components/mrd-text-field.js +0 -1
  156. package/dist/components/mrd-text-field2.js +0 -1
  157. package/dist/components/mrd-textarea-field.js +0 -1
  158. package/dist/components/mrd-textarea-field2.js +0 -1
  159. package/dist/components/mrd-time-field.js +0 -1
  160. package/dist/components/mrd-time-field2.js +0 -1
  161. package/dist/components/quill.js +0 -1
  162. package/dist/components/validation.js +0 -1
  163. package/dist/esm/app-globals-DQuL1Twl.js +0 -3
  164. package/dist/esm/index-_tsCCkAi.js +0 -1561
  165. package/dist/esm/loader.js +0 -11
  166. package/dist/esm/mosterdcomponents.js +0 -21
  167. package/dist/esm/mrd-boolean-field_20.entry.js +0 -3827
  168. package/dist/index.cjs.js +0 -1
  169. package/dist/index.js +0 -1
  170. package/dist/mosterdcomponents/p-CiuCgGz_.js +0 -1
  171. package/dist/mosterdcomponents/p-DQuL1Twl.js +0 -1
  172. package/dist/mosterdcomponents/p-_tsCCkAi.js +0 -2
  173. package/dist/mosterdcomponents/p-c9839596.entry.js +0 -1
@@ -0,0 +1,50 @@
1
+ import { r as registerInstance, a as createEvent, h, d as Host } from './index-B_tPFIvS.js';
2
+ import { t } from './i18n-hoGGKbKU.js';
3
+ import { v as validateRequired, a as validateEmail } from './validation-ixb43cqU.js';
4
+ import './index-I5SuYv7a.js';
5
+ import './client-layout-D88nn5zf.js';
6
+
7
+ const mrdEmailFieldScss = () => `.sc-mrd-email-field-h{display:block}.mrd-email-field.sc-mrd-email-field{display:flex;flex-direction:column;gap:var(--mrd-space-1);width:100%}.mrd-email-field__label.sc-mrd-email-field{display:block;font-family:var(--mrd-font-family);font-size:var(--mrd-label-font-size);font-weight:var(--mrd-label-font-weight);color:var(--mrd-label-color)}.mrd-email-field__label--required.sc-mrd-email-field::after{content:' *';color:var(--mrd-color-danger)}.mrd-email-field__input.sc-mrd-email-field{display:block;width:100%;height:var(--mrd-input-height);padding:var(--mrd-input-padding-y) var(--mrd-input-padding-x);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-input-color);background-color:var(--mrd-input-bg);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);transition:border-color var(--mrd-transition), box-shadow var(--mrd-transition);outline:none;appearance:none;box-sizing:border-box}.mrd-email-field__input.sc-mrd-email-field::placeholder{color:var(--mrd-input-placeholder-color)}.mrd-email-field__input.sc-mrd-email-field:focus{border-color:var(--mrd-border-color-focus);box-shadow:var(--mrd-shadow-focus)}.mrd-email-field__input.sc-mrd-email-field:disabled{background-color:var(--mrd-input-bg-disabled);cursor:not-allowed;opacity:0.7}.mrd-email-field__input--error.sc-mrd-email-field{border-color:var(--mrd-border-color-error)}.mrd-email-field__input--error.sc-mrd-email-field:focus{box-shadow:var(--mrd-shadow-focus-error)}.mrd-email-field__error.sc-mrd-email-field{font-family:var(--mrd-font-family);font-size:var(--mrd-error-font-size);color:var(--mrd-error-color)}`;
8
+
9
+ const MrdEmailField = class {
10
+ constructor(hostRef) {
11
+ registerInstance(this, hostRef);
12
+ this.mrdChange = createEvent(this, "mrdChange", 7);
13
+ this.mrdBlur = createEvent(this, "mrdBlur", 7);
14
+ this.name = '';
15
+ this.label = '';
16
+ this.value = '';
17
+ this.placeholder = '';
18
+ this.required = false;
19
+ this.disabled = false;
20
+ this.locale = navigator.language;
21
+ this.error = '';
22
+ this.handleInput = (e) => {
23
+ const val = e.target.value;
24
+ this.mrdChange.emit({ name: this.name, value: val });
25
+ };
26
+ this.handleBlur = (e) => {
27
+ const val = e.target.value;
28
+ if (this.required && !validateRequired(val)) {
29
+ this.error = t('required', this.locale);
30
+ }
31
+ else if (val && !validateEmail(val)) {
32
+ this.error = t('invalid_email', this.locale);
33
+ }
34
+ else {
35
+ this.error = '';
36
+ }
37
+ this.mrdBlur.emit({ name: this.name, value: val });
38
+ };
39
+ }
40
+ render() {
41
+ const hasError = !!this.error;
42
+ return (h(Host, { key: '851ec092957ab86e811b292eaabe29d04a600fe0' }, h("div", { key: '2d8969d60378f3161656369494549d682de8ec0e', class: "mrd-email-field" }, this.label && (h("label", { key: '7a35cc60d4804097e1a54f984c7da1829f6bbd11', class: `mrd-email-field__label${this.required ? ' mrd-email-field__label--required' : ''}` }, this.label)), h("input", { key: '1fc20e860aa021886f7ed522c3a0c8dd2cb1e093', class: `mrd-email-field__input${hasError ? ' mrd-email-field__input--error' : ''}`, type: "email", name: this.name, value: this.value, placeholder: this.placeholder || 'name@example.com', required: this.required, disabled: this.disabled, onInput: this.handleInput, onBlur: this.handleBlur }), hasError && h("span", { key: 'a44b3b41b7cd6b8c643cc64e6aadd884a2ba4961', class: "mrd-email-field__error" }, this.error))));
43
+ }
44
+ };
45
+ MrdEmailField.style = mrdEmailFieldScss();
46
+
47
+ export { MrdEmailField as mrd_email_field };
48
+ //# sourceMappingURL=mrd-email-field.entry.esm.js.map
49
+
50
+ //# sourceMappingURL=mrd-email-field.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"mrd-email-field.entry.js","mappings":";;;;;;AAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,2nDAA2nD,CAAC;;MCShpD,aAAa,GAAA,MAAA;AAL1B,IAAA,WAAA,CAAA,OAAA,EAAA;;;;AAMU,QAAA,IAAA,CAAA,IAAI,GAAW,EAAE;AACjB,QAAA,IAAA,CAAA,KAAK,GAAW,EAAE;AAClB,QAAA,IAAA,CAAA,KAAK,GAAW,EAAE;AAClB,QAAA,IAAA,CAAA,WAAW,GAAW,EAAE;AACxB,QAAA,IAAA,CAAA,QAAQ,GAAY,KAAK;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAY,KAAK;AACzB,QAAA,IAAA,CAAA,MAAM,GAAW,SAAS,CAAC,QAAQ;AAElC,QAAA,IAAA,CAAA,KAAK,GAAW,EAAE;AAKnB,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,CAAQ,KAAI;AACjC,YAAA,MAAM,GAAG,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK;AAChD,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACtD,SAAC;AAEO,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,CAAQ,KAAI;AAChC,YAAA,MAAM,GAAG,GAAI,CAAC,CAAC,MAA2B,CAAC,KAAK;YAChD,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;gBAC3C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;;iBAClC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;gBACrC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC;;iBACvC;AACL,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE;;AAEjB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACpD,SAAC;AA4BF;IA1BC,MAAM,GAAA;AACJ,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK;AAC7B,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,iBAAiB,EAAA,EACzB,IAAI,CAAC,KAAK,KACT,CAAA,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAO,KAAK,EAAE,CAAA,sBAAA,EAAyB,IAAI,CAAC,QAAQ,GAAG,mCAAmC,GAAG,EAAE,CAAA,CAAE,EAAA,EAC9F,IAAI,CAAC,KAAK,CACL,CACT,EACD,CAAA,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE,yBAAyB,QAAQ,GAAG,gCAAgC,GAAG,EAAE,CAAA,CAAE,EAClF,IAAI,EAAC,OAAO,EACZ,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,kBAAkB,EACnD,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,MAAM,EAAE,IAAI,CAAC,UAAU,EAAA,CACvB,EACD,QAAQ,IAAI,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAC,wBAAwB,EAAA,EAAE,IAAI,CAAC,KAAK,CAAQ,CACjE,CACD;;;;;;;","names":[],"sources":["src/components/mrd-email-field/mrd-email-field.scss?tag=mrd-email-field&encapsulation=scoped","src/components/mrd-email-field/mrd-email-field.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.mrd-email-field {\n display: flex;\n flex-direction: column;\n gap: var(--mrd-space-1);\n width: 100%;\n}\n\n.mrd-email-field__label {\n display: block;\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-label-font-size);\n font-weight: var(--mrd-label-font-weight);\n color: var(--mrd-label-color);\n}\n\n.mrd-email-field__label--required::after {\n content: ' *';\n color: var(--mrd-color-danger);\n}\n\n.mrd-email-field__input {\n display: block;\n width: 100%;\n height: var(--mrd-input-height);\n padding: var(--mrd-input-padding-y) var(--mrd-input-padding-x);\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-base);\n color: var(--mrd-input-color);\n background-color: var(--mrd-input-bg);\n border: var(--mrd-border-width) solid var(--mrd-border-color);\n border-radius: var(--mrd-border-radius);\n transition: border-color var(--mrd-transition), box-shadow var(--mrd-transition);\n outline: none;\n appearance: none;\n box-sizing: border-box;\n}\n\n.mrd-email-field__input::placeholder {\n color: var(--mrd-input-placeholder-color);\n}\n\n.mrd-email-field__input:focus {\n border-color: var(--mrd-border-color-focus);\n box-shadow: var(--mrd-shadow-focus);\n}\n\n.mrd-email-field__input:disabled {\n background-color: var(--mrd-input-bg-disabled);\n cursor: not-allowed;\n opacity: 0.7;\n}\n\n.mrd-email-field__input--error {\n border-color: var(--mrd-border-color-error);\n}\n\n.mrd-email-field__input--error:focus {\n box-shadow: var(--mrd-shadow-focus-error);\n}\n\n.mrd-email-field__error {\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-error-font-size);\n color: var(--mrd-error-color);\n}\n","import { Component, Host, h, Prop, State, Event, EventEmitter } from '@stencil/core';\nimport { t } from '../../utils/i18n';\nimport { validateRequired, validateEmail } from '../../utils/validation';\n\n@Component({\n tag: 'mrd-email-field',\n styleUrl: 'mrd-email-field.scss',\n scoped: true,\n})\nexport class MrdEmailField {\n @Prop() name: string = '';\n @Prop() label: string = '';\n @Prop() value: string = '';\n @Prop() placeholder: string = '';\n @Prop() required: boolean = false;\n @Prop() disabled: boolean = false;\n @Prop() locale: string = navigator.language;\n\n @State() error: string = '';\n\n @Event() mrdChange!: EventEmitter<{ name: string; value: string }>;\n @Event() mrdBlur!: EventEmitter<{ name: string; value: string }>;\n\n private handleInput = (e: Event) => {\n const val = (e.target as HTMLInputElement).value;\n this.mrdChange.emit({ name: this.name, value: val });\n };\n\n private handleBlur = (e: Event) => {\n const val = (e.target as HTMLInputElement).value;\n if (this.required && !validateRequired(val)) {\n this.error = t('required', this.locale);\n } else if (val && !validateEmail(val)) {\n this.error = t('invalid_email', this.locale);\n } else {\n this.error = '';\n }\n this.mrdBlur.emit({ name: this.name, value: val });\n };\n\n render() {\n const hasError = !!this.error;\n return (\n <Host>\n <div class=\"mrd-email-field\">\n {this.label && (\n <label class={`mrd-email-field__label${this.required ? ' mrd-email-field__label--required' : ''}`}>\n {this.label}\n </label>\n )}\n <input\n class={`mrd-email-field__input${hasError ? ' mrd-email-field__input--error' : ''}`}\n type=\"email\"\n name={this.name}\n value={this.value}\n placeholder={this.placeholder || 'name@example.com'}\n required={this.required}\n disabled={this.disabled}\n onInput={this.handleInput}\n onBlur={this.handleBlur}\n />\n {hasError && <span class=\"mrd-email-field__error\">{this.error}</span>}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1,8 +1,18 @@
1
- import { Host, h } from "@stencil/core";
2
- import { ClientLayoutItemType, ClientLayoutItemFieldDataType, ClientLayoutItemRelationDisplayType, } from "../../types";
3
- import { t } from "../../utils/i18n";
4
- export class MrdField {
5
- constructor() {
1
+ import { r as registerInstance, a as createEvent, h, d as Host, e as getElement } from './index-B_tPFIvS.js';
2
+ import './index-I5SuYv7a.js';
3
+ import { t } from './i18n-hoGGKbKU.js';
4
+ import { b as ClientLayoutItemFieldDataType, a as ClientLayoutItemType, c as ClientLayoutItemRelationDisplayType } from './client-layout-D88nn5zf.js';
5
+
6
+ const mrdFieldScss = () => `.sc-mrd-field-h{display:block}.mrd-field__inner.sc-mrd-field{display:block;width:100%}.mrd-field__history-editor.sc-mrd-field{margin-top:var(--mrd-space-2);display:flex;flex-direction:column;gap:var(--mrd-space-1)}.mrd-field__history-editor-label.sc-mrd-field{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-500)}.mrd-field__history-editor-row.sc-mrd-field{display:flex;align-items:center;gap:var(--mrd-space-2)}.mrd-field__history-editor-sep.sc-mrd-field{flex-shrink:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500)}.mrd-field__history-editor-value.sc-mrd-field{flex:1 1 0;min-width:0;height:var(--mrd-input-height);padding:0 var(--mrd-space-3);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-800);background-color:var(--mrd-color-white);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius-md);outline:none;transition:border-color var(--mrd-transition-fast), box-shadow var(--mrd-transition-fast)}.mrd-field__history-editor-value.sc-mrd-field:focus{border-color:var(--mrd-color-primary);box-shadow:var(--mrd-shadow-focus)}.mrd-field__history-editor-until.sc-mrd-field{flex:0 0 10rem;height:var(--mrd-input-height);padding:0 var(--mrd-space-3);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-800);background-color:var(--mrd-color-white);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius-md);outline:none;transition:border-color var(--mrd-transition-fast), box-shadow var(--mrd-transition-fast)}.mrd-field__history-editor-until.sc-mrd-field:focus{border-color:var(--mrd-color-primary);box-shadow:var(--mrd-shadow-focus)}.mrd-field__history-editor-remove.sc-mrd-field{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:2rem;height:2rem;padding:0;background:transparent;border:none;border-radius:var(--mrd-border-radius-sm);color:var(--mrd-color-neutral-400);cursor:pointer;transition:color var(--mrd-transition-fast), background-color var(--mrd-transition-fast)}.mrd-field__history-editor-remove.sc-mrd-field:hover{color:var(--mrd-color-danger);background-color:var(--mrd-color-danger-light)}.mrd-field__history-editor-remove.sc-mrd-field svg.sc-mrd-field{width:1rem;height:1rem}.mrd-field__history-editor-add.sc-mrd-field{align-self:flex-start;padding:var(--mrd-space-1) var(--mrd-space-3);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-primary);background:transparent;border:var(--mrd-border-width) solid var(--mrd-color-primary);border-radius:var(--mrd-border-radius-md);cursor:pointer;transition:background-color var(--mrd-transition-fast), color var(--mrd-transition-fast)}.mrd-field__history-editor-add.sc-mrd-field:hover{background-color:var(--mrd-color-primary-light)}`;
7
+
8
+ const MrdField = class {
9
+ constructor(hostRef) {
10
+ registerInstance(this, hostRef);
11
+ this.mrdChange = createEvent(this, "mrdChange", 7);
12
+ this.mrdBlur = createEvent(this, "mrdBlur", 7);
13
+ this.mrdSearch = createEvent(this, "mrdSearch", 7);
14
+ this.mrdFetchAll = createEvent(this, "mrdFetchAll", 7);
15
+ this.mrdUpload = createEvent(this, "mrdUpload", 7);
6
16
  this.locale = navigator.language;
7
17
  this.historyEntries = [];
8
18
  this.currentValue = undefined;
@@ -171,177 +181,16 @@ export class MrdField {
171
181
  const displayValue = this.getDisplayValue();
172
182
  return (h(Host, null, h("div", { class: "mrd-field__inner" }, this.renderLeafField(displayValue), this.renderHistoryEditor())));
173
183
  }
174
- static get is() { return "mrd-field"; }
175
- static get encapsulation() { return "scoped"; }
176
- static get originalStyleUrls() {
177
- return {
178
- "$": ["mrd-field.scss"]
179
- };
180
- }
181
- static get styleUrls() {
182
- return {
183
- "$": ["mrd-field.css"]
184
- };
185
- }
186
- static get properties() {
187
- return {
188
- "item": {
189
- "type": "unknown",
190
- "mutable": false,
191
- "complexType": {
192
- "original": "ClientLayoutItem",
193
- "resolved": "ClientLayoutItem",
194
- "references": {
195
- "ClientLayoutItem": {
196
- "location": "import",
197
- "path": "../../types",
198
- "id": "src/types/index.ts::ClientLayoutItem",
199
- "referenceLocation": "ClientLayoutItem"
200
- }
201
- }
202
- },
203
- "required": true,
204
- "optional": false,
205
- "docs": {
206
- "tags": [],
207
- "text": ""
208
- },
209
- "getter": false,
210
- "setter": false
211
- },
212
- "locale": {
213
- "type": "string",
214
- "mutable": false,
215
- "complexType": {
216
- "original": "string",
217
- "resolved": "string",
218
- "references": {}
219
- },
220
- "required": false,
221
- "optional": false,
222
- "docs": {
223
- "tags": [],
224
- "text": ""
225
- },
226
- "getter": false,
227
- "setter": false,
228
- "reflect": false,
229
- "attribute": "locale",
230
- "defaultValue": "navigator.language"
231
- },
232
- "value": {
233
- "type": "unknown",
234
- "mutable": false,
235
- "complexType": {
236
- "original": "unknown",
237
- "resolved": "unknown",
238
- "references": {}
239
- },
240
- "required": false,
241
- "optional": false,
242
- "docs": {
243
- "tags": [],
244
- "text": ""
245
- },
246
- "getter": false,
247
- "setter": false
248
- }
249
- };
250
- }
251
- static get states() {
252
- return {
253
- "historyEntries": {},
254
- "currentValue": {}
255
- };
256
- }
257
- static get events() {
258
- return [{
259
- "method": "mrdChange",
260
- "name": "mrdChange",
261
- "bubbles": true,
262
- "cancelable": true,
263
- "composed": true,
264
- "docs": {
265
- "tags": [],
266
- "text": ""
267
- },
268
- "complexType": {
269
- "original": "{ name: string; value: unknown }",
270
- "resolved": "{ name: string; value: unknown; }",
271
- "references": {}
272
- }
273
- }, {
274
- "method": "mrdBlur",
275
- "name": "mrdBlur",
276
- "bubbles": true,
277
- "cancelable": true,
278
- "composed": true,
279
- "docs": {
280
- "tags": [],
281
- "text": ""
282
- },
283
- "complexType": {
284
- "original": "{ name: string; value: unknown }",
285
- "resolved": "{ name: string; value: unknown; }",
286
- "references": {}
287
- }
288
- }, {
289
- "method": "mrdSearch",
290
- "name": "mrdSearch",
291
- "bubbles": true,
292
- "cancelable": true,
293
- "composed": true,
294
- "docs": {
295
- "tags": [],
296
- "text": ""
297
- },
298
- "complexType": {
299
- "original": "{ name: string; query: string; relatedClass: string }",
300
- "resolved": "{ name: string; query: string; relatedClass: string; }",
301
- "references": {}
302
- }
303
- }, {
304
- "method": "mrdFetchAll",
305
- "name": "mrdFetchAll",
306
- "bubbles": true,
307
- "cancelable": true,
308
- "composed": true,
309
- "docs": {
310
- "tags": [],
311
- "text": ""
312
- },
313
- "complexType": {
314
- "original": "{ name: string; relatedClass: string; mostSignificantClass?: string; commonRelation?: string; filter?: string; filterValue?: string }",
315
- "resolved": "{ name: string; relatedClass: string; mostSignificantClass?: string | undefined; commonRelation?: string | undefined; filter?: string | undefined; filterValue?: string | undefined; }",
316
- "references": {}
317
- }
318
- }, {
319
- "method": "mrdUpload",
320
- "name": "mrdUpload",
321
- "bubbles": true,
322
- "cancelable": true,
323
- "composed": true,
324
- "docs": {
325
- "tags": [],
326
- "text": ""
327
- },
328
- "complexType": {
329
- "original": "{ name: string; file: File }",
330
- "resolved": "{ name: string; file: File; }",
331
- "references": {
332
- "File": {
333
- "location": "global",
334
- "id": "global::File"
335
- }
336
- }
337
- }
338
- }];
339
- }
340
- static get elementRef() { return "el"; }
341
- static get watchers() {
342
- return [{
343
- "propName": "value",
344
- "methodName": "valueChanged"
345
- }];
346
- }
347
- }
184
+ get el() { return getElement(this); }
185
+ static get watchers() { return {
186
+ "value": [{
187
+ "valueChanged": 0
188
+ }]
189
+ }; }
190
+ };
191
+ MrdField.style = mrdFieldScss();
192
+
193
+ export { MrdField as mrd_field };
194
+ //# sourceMappingURL=mrd-field.entry.esm.js.map
195
+
196
+ //# sourceMappingURL=mrd-field.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"mrd-field.entry.js","mappings":"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","names":[],"sources":["src/components/mrd-field/mrd-field.scss?tag=mrd-field&encapsulation=scoped","src/components/mrd-field/mrd-field.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.mrd-field__inner {\n display: block;\n width: 100%;\n}\n\n.mrd-field__history-editor {\n margin-top: var(--mrd-space-2);\n display: flex;\n flex-direction: column;\n gap: var(--mrd-space-1);\n}\n\n.mrd-field__history-editor-label {\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-xs);\n font-weight: var(--mrd-font-weight-medium);\n color: var(--mrd-color-neutral-500);\n}\n\n.mrd-field__history-editor-row {\n display: flex;\n align-items: center;\n gap: var(--mrd-space-2);\n}\n\n.mrd-field__history-editor-sep {\n flex-shrink: 0;\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-xs);\n color: var(--mrd-color-neutral-500);\n}\n\n.mrd-field__history-editor-value {\n flex: 1 1 0;\n min-width: 0;\n height: var(--mrd-input-height);\n padding: 0 var(--mrd-space-3);\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-sm);\n color: var(--mrd-color-neutral-800);\n background-color: var(--mrd-color-white);\n border: var(--mrd-border-width) solid var(--mrd-border-color);\n border-radius: var(--mrd-border-radius-md);\n outline: none;\n transition: border-color var(--mrd-transition-fast), box-shadow var(--mrd-transition-fast);\n}\n\n.mrd-field__history-editor-value:focus {\n border-color: var(--mrd-color-primary);\n box-shadow: var(--mrd-shadow-focus);\n}\n\n.mrd-field__history-editor-until {\n flex: 0 0 10rem;\n height: var(--mrd-input-height);\n padding: 0 var(--mrd-space-3);\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-sm);\n color: var(--mrd-color-neutral-800);\n background-color: var(--mrd-color-white);\n border: var(--mrd-border-width) solid var(--mrd-border-color);\n border-radius: var(--mrd-border-radius-md);\n outline: none;\n transition: border-color var(--mrd-transition-fast), box-shadow var(--mrd-transition-fast);\n}\n\n.mrd-field__history-editor-until:focus {\n border-color: var(--mrd-color-primary);\n box-shadow: var(--mrd-shadow-focus);\n}\n\n.mrd-field__history-editor-remove {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 2rem;\n height: 2rem;\n padding: 0;\n background: transparent;\n border: none;\n border-radius: var(--mrd-border-radius-sm);\n color: var(--mrd-color-neutral-400);\n cursor: pointer;\n transition: color var(--mrd-transition-fast), background-color var(--mrd-transition-fast);\n}\n\n.mrd-field__history-editor-remove:hover {\n color: var(--mrd-color-danger);\n background-color: var(--mrd-color-danger-light);\n}\n\n.mrd-field__history-editor-remove svg {\n width: 1rem;\n height: 1rem;\n}\n\n.mrd-field__history-editor-add {\n align-self: flex-start;\n padding: var(--mrd-space-1) var(--mrd-space-3);\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-xs);\n font-weight: var(--mrd-font-weight-medium);\n color: var(--mrd-color-primary);\n background: transparent;\n border: var(--mrd-border-width) solid var(--mrd-color-primary);\n border-radius: var(--mrd-border-radius-md);\n cursor: pointer;\n transition: background-color var(--mrd-transition-fast), color var(--mrd-transition-fast);\n}\n\n.mrd-field__history-editor-add:hover {\n background-color: var(--mrd-color-primary-light);\n}\n","import { Component, Host, h, Prop, Event, EventEmitter, State, Element, Watch } from '@stencil/core';\nimport {\n ClientLayoutItem,\n ClientLayoutItemType,\n ClientLayoutItemFieldDataType,\n ClientLayoutItemRelationDisplayType,\n} from '../../types';\nimport { t } from '../../utils/i18n';\n\n@Component({\n tag: 'mrd-field',\n styleUrl: 'mrd-field.scss',\n scoped: true,\n})\nexport class MrdField {\n @Element() el!: HTMLElement;\n\n @Prop() item!: ClientLayoutItem;\n @Prop() locale: string = navigator.language;\n @Prop() value: unknown;\n\n @Event() mrdChange!: EventEmitter<{ name: string; value: unknown }>;\n @Event() mrdBlur!: EventEmitter<{ name: string; value: unknown }>;\n @Event() mrdSearch!: EventEmitter<{ name: string; query: string; relatedClass: string }>;\n @Event() mrdFetchAll!: EventEmitter<{ name: string; relatedClass: string; mostSignificantClass?: string; commonRelation?: string; filter?: string; filterValue?: string }>;\n @Event() mrdUpload!: EventEmitter<{ name: string; file: File }>;\n\n @State() historyEntries: Array<{ value: string; until: string }> = [];\n @State() currentValue: unknown = undefined;\n\n componentWillLoad() {\n this.initHistoryState();\n }\n\n @Watch('value')\n valueChanged() {\n this.initHistoryState();\n }\n\n private initHistoryState() {\n const hist = this.item?.historyEnabled ?? this.item?.field?.historyEnabled;\n if (!hist) return;\n const raw = this.value as any;\n this.currentValue = raw?.current ?? raw;\n this.historyEntries = Array.isArray(raw?.history) ? [...raw.history] : [];\n }\n\n private handleChange = (e: CustomEvent<{ name: string; value: unknown }>) => {\n e.stopPropagation();\n const hist = this.item?.historyEnabled ?? this.item?.field?.historyEnabled;\n if (hist) {\n this.currentValue = e.detail.value;\n this.mrdChange.emit({\n name: e.detail.name,\n value: { current: e.detail.value, history: this.historyEntries },\n });\n } else {\n this.mrdChange.emit(e.detail);\n }\n };\n\n private handleBlur = (e: CustomEvent<{ name: string; value: unknown }>) => {\n e.stopPropagation();\n const hist = this.item?.historyEnabled ?? this.item?.field?.historyEnabled;\n if (hist) {\n this.mrdBlur.emit({\n name: e.detail.name,\n value: { current: this.currentValue, history: this.historyEntries },\n });\n } else {\n this.mrdBlur.emit(e.detail);\n }\n };\n\n private handleSearch = (e: CustomEvent<{ name: string; query: string; relatedClass: string }>) => {\n e.stopPropagation();\n this.mrdSearch.emit(e.detail);\n };\n\n private handleFetchAll = (e: CustomEvent<{ name: string; relatedClass: string; mostSignificantClass?: string; commonRelation?: string; filter?: string; filterValue?: string }>) => {\n e.stopPropagation();\n this.mrdFetchAll.emit(e.detail);\n };\n\n private handleUpload = (e: CustomEvent<{ name: string; file: File }>) => {\n e.stopPropagation();\n this.mrdUpload.emit(e.detail);\n };\n\n private getDisplayValue(): unknown {\n const hist = this.item?.historyEnabled ?? this.item?.field?.historyEnabled;\n if (hist && this.value !== null && typeof this.value === 'object' && 'current' in (this.value as object)) {\n return (this.value as any).current;\n }\n return this.value;\n }\n\n private historyValueInputType(): string {\n switch (this.item?.dataType) {\n case ClientLayoutItemFieldDataType.DATE: return 'date';\n case ClientLayoutItemFieldDataType.DATETIME: return 'datetime-local';\n case ClientLayoutItemFieldDataType.TIME: return 'time';\n case ClientLayoutItemFieldDataType.INTEGER:\n case ClientLayoutItemFieldDataType.DECIMAL:\n case ClientLayoutItemFieldDataType.PERCENTAGE: return 'number';\n case ClientLayoutItemFieldDataType.EMAIL: return 'email';\n default: return 'text';\n }\n }\n\n private emitHistoryChange(entries: Array<{ value: string; until: string }>) {\n this.historyEntries = entries;\n this.mrdChange.emit({\n name: this.item.name!,\n value: { current: this.currentValue, history: entries },\n });\n }\n\n private renderHistoryEditor(): any {\n const hist = this.item?.historyEnabled ?? this.item?.field?.historyEnabled;\n if (!hist) return null;\n const { locale } = this;\n const valueType = this.historyValueInputType();\n\n const updateEntry = (i: number, field: 'value' | 'until', val: string) => {\n const updated = this.historyEntries.map((e, idx) => idx === i ? { ...e, [field]: val } : e);\n this.emitHistoryChange(updated);\n };\n\n const removeEntry = (i: number) => {\n this.emitHistoryChange(this.historyEntries.filter((_, idx) => idx !== i));\n };\n\n const addEntry = () => {\n this.emitHistoryChange([...this.historyEntries, { value: '', until: '' }]);\n };\n\n return (\n <div class=\"mrd-field__history-editor\">\n {this.historyEntries.length > 0 && (\n <span class=\"mrd-field__history-editor-label\">{t('history_badge_tooltip', locale)}</span>\n )}\n {this.historyEntries.map((entry, i) => (\n <div key={String(i)} class=\"mrd-field__history-editor-row\">\n <input\n class=\"mrd-field__history-editor-value\"\n type={valueType}\n value={entry.value}\n onInput={(e) => updateEntry(i, 'value', (e.target as HTMLInputElement).value)}\n />\n <span class=\"mrd-field__history-editor-sep\">{t('history_until', locale)}</span>\n <input\n class=\"mrd-field__history-editor-until\"\n type=\"date\"\n value={entry.until}\n onInput={(e) => updateEntry(i, 'until', (e.target as HTMLInputElement).value)}\n />\n <button\n type=\"button\"\n class=\"mrd-field__history-editor-remove\"\n onClick={() => removeEntry(i)}\n aria-label={t('remove', locale)}\n >\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M8.75 1A2.75 2.75 0 006 3.75v.443c-.795.077-1.584.176-2.365.298a.75.75 0 10.23 1.482l.149-.022.841 10.518A2.75 2.75 0 007.596 19h4.807a2.75 2.75 0 002.742-2.53l.841-10.52.149.023a.75.75 0 00.23-1.482A41.03 41.03 0 0014 4.193V3.75A2.75 2.75 0 0011.25 1h-2.5zM10 4c.84 0 1.673.025 2.5.075V3.75c0-.69-.56-1.25-1.25-1.25h-2.5c-.69 0-1.25.56-1.25 1.25v.325C8.327 4.025 9.16 4 10 4zM8.58 7.72a.75.75 0 00-1.5.06l.3 7.5a.75.75 0 101.5-.06l-.3-7.5zm4.34.06a.75.75 0 10-1.5-.06l-.3 7.5a.75.75 0 101.5.06l.3-7.5z\" clip-rule=\"evenodd\"/>\n </svg>\n </button>\n </div>\n ))}\n <button type=\"button\" class=\"mrd-field__history-editor-add\" onClick={addEntry}>\n + {t('add', locale)}\n </button>\n </div>\n );\n }\n\n private renderLeafField(displayValue: unknown): any {\n const { item, locale } = this;\n const commonProps = {\n name: item.name,\n label: item.label,\n required: item.required,\n disabled: item.disabled ?? false,\n locale,\n onMrdChange: this.handleChange,\n onMrdBlur: this.handleBlur,\n };\n\n switch (item.dataType) {\n case ClientLayoutItemFieldDataType.TEXT:\n return (\n <mrd-text-field\n {...commonProps}\n value={(displayValue as string) ?? ''}\n placeholder={item.placeholder ?? ''}\n />\n );\n\n case ClientLayoutItemFieldDataType.TEXTBLOCK:\n return (\n <mrd-textarea-field\n {...commonProps}\n value={(displayValue as string) ?? ''}\n placeholder={item.placeholder ?? ''}\n />\n );\n\n case ClientLayoutItemFieldDataType.INTEGER:\n case ClientLayoutItemFieldDataType.DECIMAL:\n case ClientLayoutItemFieldDataType.PERCENTAGE:\n return (\n <mrd-number-field\n {...commonProps}\n value={(displayValue as number) ?? null}\n dataType={item.dataType}\n decimalPrecision={item.decimalPrecision ?? 2}\n placeholder={item.placeholder ?? ''}\n />\n );\n\n case ClientLayoutItemFieldDataType.CURRENCY:\n return (\n <mrd-currency-field\n {...commonProps}\n value={(displayValue as { amount: number | null; currency: string }) ?? { amount: null, currency: item.currencyCode ?? 'EUR' }}\n />\n );\n\n case ClientLayoutItemFieldDataType.BOOLEAN:\n return (\n <mrd-boolean-field\n {...commonProps}\n value={(displayValue as boolean) ?? false}\n />\n );\n\n case ClientLayoutItemFieldDataType.DATE:\n return (\n <mrd-date-field\n {...commonProps}\n value={(displayValue as string) ?? ''}\n />\n );\n\n case ClientLayoutItemFieldDataType.DATETIME:\n return (\n <mrd-datetime-field\n {...commonProps}\n value={(displayValue as string) ?? ''}\n />\n );\n\n case ClientLayoutItemFieldDataType.TIME:\n return (\n <mrd-time-field\n {...commonProps}\n value={(displayValue as string) ?? ''}\n />\n );\n\n case ClientLayoutItemFieldDataType.EMAIL:\n return (\n <mrd-email-field\n {...commonProps}\n value={(displayValue as string) ?? ''}\n placeholder={item.placeholder ?? ''}\n />\n );\n\n case ClientLayoutItemFieldDataType.HYPERLINK:\n return (\n <mrd-hyperlink-field\n {...commonProps}\n value={(displayValue as any) ?? ''}\n placeholder={item.placeholder ?? ''}\n />\n );\n\n case ClientLayoutItemFieldDataType.LIST:\n return (\n <mrd-list-field\n {...commonProps}\n value={(displayValue as string | string[]) ?? ''}\n multiple={item.multiple ?? false}\n listItems={item.listItems ?? []}\n />\n );\n\n case ClientLayoutItemFieldDataType.FILE:\n return (\n <mrd-file-field\n {...commonProps}\n value={displayValue}\n accept={item.accept ?? ''}\n maxSize={item.maxSize ?? 0}\n onMrdUpload={this.handleUpload}\n />\n );\n\n case ClientLayoutItemFieldDataType.IMAGE:\n return (\n <mrd-image-field\n {...commonProps}\n value={displayValue}\n accept={item.accept ?? 'image/*'}\n maxSize={item.maxSize ?? 0}\n onMrdUpload={this.handleUpload}\n />\n );\n\n case ClientLayoutItemFieldDataType.LONGTEXT:\n return (\n <mrd-longtext-field\n {...commonProps}\n value={(displayValue as string) ?? ''}\n placeholder={item.placeholder ?? ''}\n />\n );\n\n case ClientLayoutItemFieldDataType.SECRET:\n return (\n <mrd-secret-field\n {...commonProps}\n value={(displayValue as string) ?? ''}\n placeholder={item.placeholder ?? ''}\n />\n );\n\n default:\n return null;\n }\n }\n\n render() {\n const { item, locale, value } = this;\n\n if (item.type === ClientLayoutItemType.RELATION) {\n return (\n <Host>\n <mrd-relation-field\n name={item.name}\n label={item.label}\n required={item.required}\n disabled={item.disabled ?? false}\n locale={locale}\n relatedClass={item.relatedClass}\n mostSignificantClass={item.mostSignificantClass ?? ''}\n displayType={item.displayType ?? ClientLayoutItemRelationDisplayType.SEARCH}\n editBehavior={item.editBehavior ?? null}\n commonRelation={item.commonRelation}\n multiple={item.multiple ?? false}\n dropdownValues={item.dropdownValues ?? []}\n value={value as any}\n onMrdChange={this.handleChange}\n onMrdBlur={this.handleBlur}\n onMrdSearch={this.handleSearch}\n onMrdFetchAll={this.handleFetchAll}\n />\n </Host>\n );\n }\n\n if (item.type !== ClientLayoutItemType.FIELD) {\n return <Host></Host>;\n }\n\n const displayValue = this.getDisplayValue();\n return (\n <Host>\n <div class=\"mrd-field__inner\">\n {this.renderLeafField(displayValue)}\n {this.renderHistoryEditor()}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,108 @@
1
+ import { r as registerInstance, a as createEvent, h, d as Host } from './index-B_tPFIvS.js';
2
+ import { t } from './i18n-hoGGKbKU.js';
3
+
4
+ const mrdFileFieldScss = () => `.sc-mrd-file-field-h{display:block}.mrd-file-field.sc-mrd-file-field{display:flex;flex-direction:column;gap:var(--mrd-space-1);width:100%}.mrd-file-field__label.sc-mrd-file-field{display:block;font-family:var(--mrd-font-family);font-size:var(--mrd-label-font-size);font-weight:var(--mrd-label-font-weight);color:var(--mrd-label-color)}.mrd-file-field__label--required.sc-mrd-file-field::after{content:' *';color:var(--mrd-color-danger)}.mrd-file-field__zone.sc-mrd-file-field{display:flex;align-items:center;justify-content:center;padding:var(--mrd-space-6);border:2px dashed var(--mrd-border-color);border-radius:var(--mrd-border-radius-md);background-color:var(--mrd-color-neutral-50);cursor:pointer;transition:border-color var(--mrd-transition), background-color var(--mrd-transition);min-height:100px;position:relative}.mrd-file-field__zone.sc-mrd-file-field:hover{border-color:var(--mrd-color-primary);background-color:var(--mrd-color-primary-light)}.mrd-file-field__zone--dragging.sc-mrd-file-field{border-color:var(--mrd-color-primary);background-color:var(--mrd-color-primary-light)}.mrd-file-field__zone--error.sc-mrd-file-field{border-color:var(--mrd-border-color-error)}.mrd-file-field__zone--disabled.sc-mrd-file-field{opacity:0.6;cursor:not-allowed}.mrd-file-field__zone--disabled.sc-mrd-file-field:hover{border-color:var(--mrd-border-color);background-color:var(--mrd-color-neutral-50)}.mrd-file-field__input.sc-mrd-file-field{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;pointer-events:none}.mrd-file-field__prompt.sc-mrd-file-field{display:flex;flex-direction:column;align-items:center;gap:var(--mrd-space-2);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-500);text-align:center}.mrd-file-field__upload-icon.sc-mrd-file-field{width:32px;height:32px;color:var(--mrd-color-neutral-400)}.mrd-file-field__browse.sc-mrd-file-field{color:var(--mrd-color-primary);font-weight:var(--mrd-font-weight-medium);text-decoration:underline}.mrd-file-field__selected.sc-mrd-file-field{display:flex;align-items:center;gap:var(--mrd-space-2);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-700)}.mrd-file-field__icon.sc-mrd-file-field{width:20px;height:20px;color:var(--mrd-color-primary);flex-shrink:0}.mrd-file-field__filename.sc-mrd-file-field{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.mrd-file-field__clear.sc-mrd-file-field{background:none;border:none;cursor:pointer;color:var(--mrd-color-neutral-400);font-size:var(--mrd-font-size-sm);padding:var(--mrd-space-1);border-radius:var(--mrd-border-radius-sm);line-height:1}.mrd-file-field__clear.sc-mrd-file-field:hover{color:var(--mrd-color-danger);background-color:var(--mrd-color-danger-light)}.mrd-file-field__spinner.sc-mrd-file-field{display:inline-block;flex-shrink:0;width:18px;height:18px;border:2px solid var(--mrd-color-neutral-300);border-top-color:var(--mrd-color-primary);border-radius:50%;animation:mrd-file-spin 0.6s linear infinite}@keyframes mrd-file-spin{to{transform:rotate(360deg)}}.mrd-file-field__error.sc-mrd-file-field{font-family:var(--mrd-font-family);font-size:var(--mrd-error-font-size);color:var(--mrd-error-color)}`;
5
+
6
+ const MrdFileField = class {
7
+ constructor(hostRef) {
8
+ registerInstance(this, hostRef);
9
+ this.mrdChange = createEvent(this, "mrdChange", 7);
10
+ this.mrdBlur = createEvent(this, "mrdBlur", 7);
11
+ this.mrdUpload = createEvent(this, "mrdUpload", 7);
12
+ this.name = '';
13
+ this.label = '';
14
+ this.value = null;
15
+ this.required = false;
16
+ this.disabled = false;
17
+ this.locale = navigator.language;
18
+ this.accept = '';
19
+ this.maxSize = 0; // bytes, 0 = no limit
20
+ this.fileName = '';
21
+ this.isDragging = false;
22
+ this.uploading = false;
23
+ this.error = '';
24
+ this.handleInputChange = (e) => {
25
+ var _a;
26
+ const files = e.target.files;
27
+ this.handleFile((_a = files === null || files === void 0 ? void 0 : files[0]) !== null && _a !== void 0 ? _a : null);
28
+ };
29
+ this.handleDragOver = (e) => {
30
+ e.preventDefault();
31
+ this.isDragging = true;
32
+ };
33
+ this.handleDragLeave = () => {
34
+ this.isDragging = false;
35
+ };
36
+ this.handleDrop = (e) => {
37
+ var _a, _b, _c;
38
+ e.preventDefault();
39
+ this.isDragging = false;
40
+ const file = (_c = (_b = (_a = e.dataTransfer) === null || _a === void 0 ? void 0 : _a.files) === null || _b === void 0 ? void 0 : _b[0]) !== null && _c !== void 0 ? _c : null;
41
+ this.handleFile(file);
42
+ };
43
+ this.handleZoneClick = () => {
44
+ var _a;
45
+ if (!this.disabled && !this.uploading) {
46
+ (_a = this.fileInputRef) === null || _a === void 0 ? void 0 : _a.click();
47
+ }
48
+ };
49
+ this.handleClear = (e) => {
50
+ e.stopPropagation();
51
+ this.fileName = '';
52
+ this.error = '';
53
+ this.uploading = false;
54
+ if (this.fileInputRef)
55
+ this.fileInputRef.value = '';
56
+ this.mrdChange.emit({ name: this.name, value: null });
57
+ };
58
+ }
59
+ /** When the host provides a URI back via setFieldValue, the upload is done. */
60
+ valueChanged(newVal) {
61
+ if (typeof newVal === 'string' && newVal) {
62
+ this.uploading = false;
63
+ }
64
+ else if (!newVal) {
65
+ this.uploading = false;
66
+ this.fileName = '';
67
+ }
68
+ }
69
+ handleFile(file) {
70
+ if (!file) {
71
+ this.fileName = '';
72
+ this.uploading = false;
73
+ this.mrdChange.emit({ name: this.name, value: null });
74
+ return;
75
+ }
76
+ if (this.maxSize > 0 && file.size > this.maxSize) {
77
+ this.error = t('file_too_large', this.locale);
78
+ return;
79
+ }
80
+ this.error = '';
81
+ this.fileName = file.name;
82
+ this.uploading = true;
83
+ this.mrdChange.emit({ name: this.name, value: file });
84
+ this.mrdUpload.emit({ name: this.name, file });
85
+ }
86
+ render() {
87
+ const hasFile = this.uploading || (typeof this.value === 'string' && this.value) || this.fileName;
88
+ const hasError = !!this.error;
89
+ const zoneClass = [
90
+ 'mrd-file-field__zone',
91
+ this.isDragging ? 'mrd-file-field__zone--dragging' : '',
92
+ hasError ? 'mrd-file-field__zone--error' : '',
93
+ this.disabled || this.uploading ? 'mrd-file-field__zone--disabled' : '',
94
+ ].filter(Boolean).join(' ');
95
+ return (h(Host, { key: '2090102df8169226c1e66f87cbc837296e4b55d4' }, h("div", { key: '7a37a09df1bfa2eaf28ed04c806ad5f7c0337bb0', class: "mrd-file-field" }, this.label && (h("label", { key: '8f1fcb8adbb66b792be902c7c548e50db99b6a53', class: `mrd-file-field__label${this.required ? ' mrd-file-field__label--required' : ''}` }, this.label)), h("div", { key: '66d992298f537b24d69ce3ead3dd229f6d124f3d', class: zoneClass, onClick: this.handleZoneClick, onDragOver: this.handleDragOver, onDragLeave: this.handleDragLeave, onDrop: this.handleDrop }, h("input", { key: '95ba6560e71ee08c6b2526802727b29a18cdc454', ref: el => (this.fileInputRef = el), class: "mrd-file-field__input", type: "file", name: this.name, accept: this.accept, disabled: this.disabled || this.uploading, required: this.required && !hasFile, onChange: this.handleInputChange }), hasFile ? (h("div", { class: "mrd-file-field__selected" }, this.uploading ? (h("span", { class: "mrd-file-field__spinner", "aria-label": t('loading', this.locale) })) : (h("svg", { class: "mrd-file-field__icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, h("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }), h("polyline", { points: "14 2 14 8 20 8" }))), h("span", { class: "mrd-file-field__filename" }, this.fileName), !this.uploading && (h("button", { class: "mrd-file-field__clear", type: "button", onClick: this.handleClear, "aria-label": t('clear', this.locale) }, "\u2715")))) : (h("div", { class: "mrd-file-field__prompt" }, h("svg", { class: "mrd-file-field__upload-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, h("polyline", { points: "16 16 12 12 8 16" }), h("line", { x1: "12", y1: "12", x2: "12", y2: "21" }), h("path", { d: "M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3" })), h("span", null, t('drop_file_here', this.locale), ' ', h("span", { class: "mrd-file-field__browse" }, t('browse', this.locale)))))), hasError && h("span", { key: 'a6020e63bebb01e31a980a903f81badd486585aa', class: "mrd-file-field__error" }, this.error))));
96
+ }
97
+ static get watchers() { return {
98
+ "value": [{
99
+ "valueChanged": 0
100
+ }]
101
+ }; }
102
+ };
103
+ MrdFileField.style = mrdFileFieldScss();
104
+
105
+ export { MrdFileField as mrd_file_field };
106
+ //# sourceMappingURL=mrd-file-field.entry.esm.js.map
107
+
108
+ //# sourceMappingURL=mrd-file-field.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"mrd-file-field.entry.js","mappings":"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","names":[],"sources":["src/components/mrd-file-field/mrd-file-field.scss?tag=mrd-file-field&encapsulation=scoped","src/components/mrd-file-field/mrd-file-field.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.mrd-file-field {\n display: flex;\n flex-direction: column;\n gap: var(--mrd-space-1);\n width: 100%;\n}\n\n.mrd-file-field__label {\n display: block;\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-label-font-size);\n font-weight: var(--mrd-label-font-weight);\n color: var(--mrd-label-color);\n}\n\n.mrd-file-field__label--required::after {\n content: ' *';\n color: var(--mrd-color-danger);\n}\n\n.mrd-file-field__zone {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--mrd-space-6);\n border: 2px dashed var(--mrd-border-color);\n border-radius: var(--mrd-border-radius-md);\n background-color: var(--mrd-color-neutral-50);\n cursor: pointer;\n transition: border-color var(--mrd-transition), background-color var(--mrd-transition);\n min-height: 100px;\n position: relative;\n}\n\n.mrd-file-field__zone:hover {\n border-color: var(--mrd-color-primary);\n background-color: var(--mrd-color-primary-light);\n}\n\n.mrd-file-field__zone--dragging {\n border-color: var(--mrd-color-primary);\n background-color: var(--mrd-color-primary-light);\n}\n\n.mrd-file-field__zone--error {\n border-color: var(--mrd-border-color-error);\n}\n\n.mrd-file-field__zone--disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.mrd-file-field__zone--disabled:hover {\n border-color: var(--mrd-border-color);\n background-color: var(--mrd-color-neutral-50);\n}\n\n.mrd-file-field__input {\n position: absolute;\n inset: 0;\n opacity: 0;\n width: 100%;\n height: 100%;\n cursor: pointer;\n pointer-events: none;\n}\n\n.mrd-file-field__prompt {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--mrd-space-2);\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-sm);\n color: var(--mrd-color-neutral-500);\n text-align: center;\n}\n\n.mrd-file-field__upload-icon {\n width: 32px;\n height: 32px;\n color: var(--mrd-color-neutral-400);\n}\n\n.mrd-file-field__browse {\n color: var(--mrd-color-primary);\n font-weight: var(--mrd-font-weight-medium);\n text-decoration: underline;\n}\n\n.mrd-file-field__selected {\n display: flex;\n align-items: center;\n gap: var(--mrd-space-2);\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-sm);\n color: var(--mrd-color-neutral-700);\n}\n\n.mrd-file-field__icon {\n width: 20px;\n height: 20px;\n color: var(--mrd-color-primary);\n flex-shrink: 0;\n}\n\n.mrd-file-field__filename {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 200px;\n}\n\n.mrd-file-field__clear {\n background: none;\n border: none;\n cursor: pointer;\n color: var(--mrd-color-neutral-400);\n font-size: var(--mrd-font-size-sm);\n padding: var(--mrd-space-1);\n border-radius: var(--mrd-border-radius-sm);\n line-height: 1;\n}\n\n.mrd-file-field__clear:hover {\n color: var(--mrd-color-danger);\n background-color: var(--mrd-color-danger-light);\n}\n\n.mrd-file-field__spinner {\n display: inline-block;\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n border: 2px solid var(--mrd-color-neutral-300);\n border-top-color: var(--mrd-color-primary);\n border-radius: 50%;\n animation: mrd-file-spin 0.6s linear infinite;\n}\n\n@keyframes mrd-file-spin { to { transform: rotate(360deg); } }\n\n.mrd-file-field__error {\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-error-font-size);\n color: var(--mrd-error-color);\n}\n","import { Component, Host, h, Prop, State, Event, EventEmitter, Watch } from '@stencil/core';\nimport { t } from '../../utils/i18n';\n\n@Component({\n tag: 'mrd-file-field',\n styleUrl: 'mrd-file-field.scss',\n scoped: true,\n})\nexport class MrdFileField {\n @Prop() name: string = '';\n @Prop() label: string = '';\n @Prop() value: unknown = null;\n @Prop() required: boolean = false;\n @Prop() disabled: boolean = false;\n @Prop() locale: string = navigator.language;\n @Prop() accept: string = '';\n @Prop() maxSize: number = 0; // bytes, 0 = no limit\n\n @State() fileName: string = '';\n @State() isDragging: boolean = false;\n @State() uploading: boolean = false;\n @State() error: string = '';\n\n @Event() mrdChange!: EventEmitter<{ name: string; value: File | null }>;\n @Event() mrdBlur!: EventEmitter<{ name: string; value: File | null }>;\n /** Emitted when a file is selected and needs to be uploaded.\n * Host should upload the file and call form.setFieldValue(name, uri) with the result. */\n @Event() mrdUpload!: EventEmitter<{ name: string; file: File }>;\n\n private fileInputRef!: HTMLInputElement;\n\n /** When the host provides a URI back via setFieldValue, the upload is done. */\n @Watch('value')\n valueChanged(newVal: unknown) {\n if (typeof newVal === 'string' && newVal) {\n this.uploading = false;\n } else if (!newVal) {\n this.uploading = false;\n this.fileName = '';\n }\n }\n\n private handleFile(file: File | null) {\n if (!file) {\n this.fileName = '';\n this.uploading = false;\n this.mrdChange.emit({ name: this.name, value: null });\n return;\n }\n if (this.maxSize > 0 && file.size > this.maxSize) {\n this.error = t('file_too_large', this.locale);\n return;\n }\n this.error = '';\n this.fileName = file.name;\n this.uploading = true;\n this.mrdChange.emit({ name: this.name, value: file });\n this.mrdUpload.emit({ name: this.name, file });\n }\n\n private handleInputChange = (e: Event) => {\n const files = (e.target as HTMLInputElement).files;\n this.handleFile(files?.[0] ?? null);\n };\n\n private handleDragOver = (e: DragEvent) => {\n e.preventDefault();\n this.isDragging = true;\n };\n\n private handleDragLeave = () => {\n this.isDragging = false;\n };\n\n private handleDrop = (e: DragEvent) => {\n e.preventDefault();\n this.isDragging = false;\n const file = e.dataTransfer?.files?.[0] ?? null;\n this.handleFile(file);\n };\n\n private handleZoneClick = () => {\n if (!this.disabled && !this.uploading) {\n this.fileInputRef?.click();\n }\n };\n\n private handleClear = (e: MouseEvent) => {\n e.stopPropagation();\n this.fileName = '';\n this.error = '';\n this.uploading = false;\n if (this.fileInputRef) this.fileInputRef.value = '';\n this.mrdChange.emit({ name: this.name, value: null });\n };\n\n render() {\n const hasFile = this.uploading || (typeof this.value === 'string' && this.value) || this.fileName;\n const hasError = !!this.error;\n const zoneClass = [\n 'mrd-file-field__zone',\n this.isDragging ? 'mrd-file-field__zone--dragging' : '',\n hasError ? 'mrd-file-field__zone--error' : '',\n this.disabled || this.uploading ? 'mrd-file-field__zone--disabled' : '',\n ].filter(Boolean).join(' ');\n\n return (\n <Host>\n <div class=\"mrd-file-field\">\n {this.label && (\n <label class={`mrd-file-field__label${this.required ? ' mrd-file-field__label--required' : ''}`}>\n {this.label}\n </label>\n )}\n <div\n class={zoneClass}\n onClick={this.handleZoneClick}\n onDragOver={this.handleDragOver}\n onDragLeave={this.handleDragLeave}\n onDrop={this.handleDrop}\n >\n <input\n ref={el => (this.fileInputRef = el as HTMLInputElement)}\n class=\"mrd-file-field__input\"\n type=\"file\"\n name={this.name}\n accept={this.accept}\n disabled={this.disabled || this.uploading}\n required={this.required && !hasFile}\n onChange={this.handleInputChange}\n />\n {hasFile ? (\n <div class=\"mrd-file-field__selected\">\n {this.uploading ? (\n <span class=\"mrd-file-field__spinner\" aria-label={t('loading', this.locale)} />\n ) : (\n <svg class=\"mrd-file-field__icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"/>\n <polyline points=\"14 2 14 8 20 8\"/>\n </svg>\n )}\n <span class=\"mrd-file-field__filename\">{this.fileName}</span>\n {!this.uploading && (\n <button class=\"mrd-file-field__clear\" type=\"button\" onClick={this.handleClear} aria-label={t('clear', this.locale)}>\n ✕\n </button>\n )}\n </div>\n ) : (\n <div class=\"mrd-file-field__prompt\">\n <svg class=\"mrd-file-field__upload-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <polyline points=\"16 16 12 12 8 16\"/>\n <line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"21\"/>\n <path d=\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\"/>\n </svg>\n <span>\n {t('drop_file_here', this.locale)}{' '}\n <span class=\"mrd-file-field__browse\">{t('browse', this.locale)}</span>\n </span>\n </div>\n )}\n </div>\n {hasError && <span class=\"mrd-file-field__error\">{this.error}</span>}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}