@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,122 @@
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 mrdImageFieldScss = () => `.sc-mrd-image-field-h{display:block}.mrd-image-field.sc-mrd-image-field{display:flex;flex-direction:column;gap:var(--mrd-space-1);width:100%}.mrd-image-field__label.sc-mrd-image-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-image-field__label--required.sc-mrd-image-field::after{content:' *';color:var(--mrd-color-danger)}.mrd-image-field__zone.sc-mrd-image-field{display:flex;align-items:center;justify-content:center;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-image-field__zone.sc-mrd-image-field:hover{border-color:var(--mrd-color-primary);background-color:var(--mrd-color-primary-light)}.mrd-image-field__zone--dragging.sc-mrd-image-field{border-color:var(--mrd-color-primary);background-color:var(--mrd-color-primary-light)}.mrd-image-field__zone--error.sc-mrd-image-field{border-color:var(--mrd-border-color-error)}.mrd-image-field__zone--disabled.sc-mrd-image-field{opacity:0.6;cursor:not-allowed}.mrd-image-field__zone--disabled.sc-mrd-image-field:hover{border-color:var(--mrd-border-color);background-color:var(--mrd-color-neutral-50)}.mrd-image-field__input.sc-mrd-image-field{position:absolute;inset:0;opacity:0;width:100%;height:100%;pointer-events:none}.mrd-image-field__prompt.sc-mrd-image-field{display:flex;flex-direction:column;align-items:center;gap:var(--mrd-space-2);padding:var(--mrd-space-6);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-500);text-align:center}.mrd-image-field__upload-icon.sc-mrd-image-field{width:40px;height:40px;color:var(--mrd-color-neutral-400)}.mrd-image-field__browse.sc-mrd-image-field{color:var(--mrd-color-primary);font-weight:var(--mrd-font-weight-medium);text-decoration:underline}.mrd-image-field__preview-container.sc-mrd-image-field{display:flex;align-items:center;gap:var(--mrd-space-4);padding:var(--mrd-space-4);width:100%}.mrd-image-field__preview-thumb.sc-mrd-image-field{flex-shrink:0;width:80px;height:80px;border-radius:var(--mrd-border-radius);overflow:hidden;border:var(--mrd-border-width) solid var(--mrd-border-color);background-color:var(--mrd-color-neutral-100)}.mrd-image-field__preview.sc-mrd-image-field{width:100%;height:100%;object-fit:cover;display:block}.mrd-image-field__preview-info.sc-mrd-image-field{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--mrd-space-1)}.mrd-image-field__preview-name.sc-mrd-image-field{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-800);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mrd-image-field__preview-overlay.sc-mrd-image-field{position:absolute;inset:0;background:rgb(255 255 255 / 0.7);display:flex;align-items:center;justify-content:center;border-radius:var(--mrd-border-radius)}.mrd-image-field__spinner.sc-mrd-image-field{display:inline-block;width:24px;height:24px;border:2px solid var(--mrd-color-neutral-300);border-top-color:var(--mrd-color-primary);border-radius:50%;animation:mrd-image-spin 0.6s linear infinite}@keyframes mrd-image-spin{to{transform:rotate(360deg)}}.mrd-image-field__upload-status.sc-mrd-image-field{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500)}.mrd-image-field__clear.sc-mrd-image-field{flex-shrink:0;background-color:var(--mrd-color-white);color:var(--mrd-color-danger);border:var(--mrd-border-width) solid var(--mrd-color-danger);border-radius:var(--mrd-border-radius);padding:var(--mrd-space-1) var(--mrd-space-3);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);cursor:pointer;transition:background-color var(--mrd-transition), color var(--mrd-transition)}.mrd-image-field__clear.sc-mrd-image-field:hover{background-color:var(--mrd-color-danger);color:var(--mrd-color-white)}.mrd-image-field__error.sc-mrd-image-field{font-family:var(--mrd-font-family);font-size:var(--mrd-error-font-size);color:var(--mrd-error-color)}`;
5
+
6
+ const MrdImageField = 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 = 'image/*';
19
+ this.maxSize = 0;
20
+ this.previewUrl = '';
21
+ this.fileName = '';
22
+ this.isDragging = false;
23
+ this.uploading = false;
24
+ this.error = '';
25
+ this.handleInputChange = (e) => {
26
+ var _a;
27
+ const files = e.target.files;
28
+ this.handleFile((_a = files === null || files === void 0 ? void 0 : files[0]) !== null && _a !== void 0 ? _a : null);
29
+ };
30
+ this.handleDragOver = (e) => {
31
+ e.preventDefault();
32
+ this.isDragging = true;
33
+ };
34
+ this.handleDragLeave = () => {
35
+ this.isDragging = false;
36
+ };
37
+ this.handleDrop = (e) => {
38
+ var _a, _b, _c;
39
+ e.preventDefault();
40
+ this.isDragging = false;
41
+ 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;
42
+ this.handleFile(file);
43
+ };
44
+ this.handleZoneClick = () => {
45
+ var _a;
46
+ if (!this.disabled && !this.uploading) {
47
+ (_a = this.fileInputRef) === null || _a === void 0 ? void 0 : _a.click();
48
+ }
49
+ };
50
+ this.handleClear = (e) => {
51
+ e.stopPropagation();
52
+ this.previewUrl = '';
53
+ this.fileName = '';
54
+ this.error = '';
55
+ this.uploading = false;
56
+ if (this.fileInputRef)
57
+ this.fileInputRef.value = '';
58
+ this.mrdChange.emit({ name: this.name, value: null });
59
+ };
60
+ }
61
+ /** When the host provides a URI back via setFieldValue, the upload is done. */
62
+ valueChanged(newVal) {
63
+ if (typeof newVal === 'string' && newVal) {
64
+ this.uploading = false;
65
+ }
66
+ else if (!newVal) {
67
+ this.uploading = false;
68
+ this.previewUrl = '';
69
+ this.fileName = '';
70
+ }
71
+ }
72
+ handleFile(file) {
73
+ if (!file) {
74
+ this.previewUrl = '';
75
+ this.fileName = '';
76
+ this.uploading = false;
77
+ this.mrdChange.emit({ name: this.name, value: null });
78
+ return;
79
+ }
80
+ if (this.maxSize > 0 && file.size > this.maxSize) {
81
+ this.error = t('file_too_large', this.locale);
82
+ return;
83
+ }
84
+ if (!file.type.startsWith('image/')) {
85
+ this.error = 'Please select an image file';
86
+ return;
87
+ }
88
+ this.error = '';
89
+ this.fileName = file.name;
90
+ this.uploading = true;
91
+ // Show local preview immediately while upload is in progress
92
+ const reader = new FileReader();
93
+ reader.onload = (ev) => {
94
+ var _a;
95
+ this.previewUrl = (_a = ev.target) === null || _a === void 0 ? void 0 : _a.result;
96
+ };
97
+ reader.readAsDataURL(file);
98
+ this.mrdChange.emit({ name: this.name, value: file });
99
+ this.mrdUpload.emit({ name: this.name, file });
100
+ }
101
+ render() {
102
+ const hasError = !!this.error;
103
+ const zoneClass = [
104
+ 'mrd-image-field__zone',
105
+ this.isDragging ? 'mrd-image-field__zone--dragging' : '',
106
+ hasError ? 'mrd-image-field__zone--error' : '',
107
+ this.disabled || this.uploading ? 'mrd-image-field__zone--disabled' : '',
108
+ ].filter(Boolean).join(' ');
109
+ return (h(Host, { key: '71be4c1df559cff87280cac30be58beab3149064' }, h("div", { key: '9d0811d87068ce258aca9b2c5223a5594af9f6a3', class: "mrd-image-field" }, this.label && (h("label", { key: '63e129db968a2edfcc04fcac466d908ba4715158', class: `mrd-image-field__label${this.required ? ' mrd-image-field__label--required' : ''}` }, this.label)), h("div", { key: 'c7e560ad4dda43499707a2d1771a8eb561653a1b', class: zoneClass, onClick: this.handleZoneClick, onDragOver: this.handleDragOver, onDragLeave: this.handleDragLeave, onDrop: this.handleDrop }, h("input", { key: 'd325ee1aa3baccd689cc579e4cfa21abe977a575', ref: el => (this.fileInputRef = el), class: "mrd-image-field__input", type: "file", name: this.name, accept: this.accept, disabled: this.disabled || this.uploading, required: this.required && !this.previewUrl, onChange: this.handleInputChange }), this.previewUrl ? (h("div", { class: "mrd-image-field__preview-container" }, h("div", { class: "mrd-image-field__preview-thumb" }, h("img", { class: "mrd-image-field__preview", src: this.previewUrl, alt: this.fileName }), this.uploading && h("div", { class: "mrd-image-field__preview-overlay" }, h("span", { class: "mrd-image-field__spinner" }))), h("div", { class: "mrd-image-field__preview-info" }, h("span", { class: "mrd-image-field__preview-name" }, this.fileName), this.uploading && (h("span", { class: "mrd-image-field__upload-status" }, t('loading', this.locale)))), !this.uploading && (h("button", { class: "mrd-image-field__clear", type: "button", onClick: this.handleClear, "aria-label": t('clear', this.locale) }, t('remove', this.locale))))) : (h("div", { class: "mrd-image-field__prompt" }, h("svg", { class: "mrd-image-field__upload-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, h("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", ry: "2" }), h("circle", { cx: "8.5", cy: "8.5", r: "1.5" }), h("polyline", { points: "21 15 16 10 5 21" })), h("span", null, t('drop_file_here', this.locale), ' ', h("span", { class: "mrd-image-field__browse" }, t('browse', this.locale)))))), hasError && h("span", { key: 'b0442d6f5c07ef22443194b3f1a95d2dfc409c4e', class: "mrd-image-field__error" }, this.error))));
110
+ }
111
+ static get watchers() { return {
112
+ "value": [{
113
+ "valueChanged": 0
114
+ }]
115
+ }; }
116
+ };
117
+ MrdImageField.style = mrdImageFieldScss();
118
+
119
+ export { MrdImageField as mrd_image_field };
120
+ //# sourceMappingURL=mrd-image-field.entry.esm.js.map
121
+
122
+ //# sourceMappingURL=mrd-image-field.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"mrd-image-field.entry.js","mappings":"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","names":[],"sources":["src/components/mrd-image-field/mrd-image-field.scss?tag=mrd-image-field&encapsulation=scoped","src/components/mrd-image-field/mrd-image-field.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.mrd-image-field {\n display: flex;\n flex-direction: column;\n gap: var(--mrd-space-1);\n width: 100%;\n}\n\n.mrd-image-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-image-field__label--required::after {\n content: ' *';\n color: var(--mrd-color-danger);\n}\n\n.mrd-image-field__zone {\n display: flex;\n align-items: center;\n justify-content: center;\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-image-field__zone:hover {\n border-color: var(--mrd-color-primary);\n background-color: var(--mrd-color-primary-light);\n}\n\n.mrd-image-field__zone--dragging {\n border-color: var(--mrd-color-primary);\n background-color: var(--mrd-color-primary-light);\n}\n\n.mrd-image-field__zone--error {\n border-color: var(--mrd-border-color-error);\n}\n\n.mrd-image-field__zone--disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.mrd-image-field__zone--disabled:hover {\n border-color: var(--mrd-border-color);\n background-color: var(--mrd-color-neutral-50);\n}\n\n.mrd-image-field__input {\n position: absolute;\n inset: 0;\n opacity: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n}\n\n.mrd-image-field__prompt {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--mrd-space-2);\n padding: var(--mrd-space-6);\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-image-field__upload-icon {\n width: 40px;\n height: 40px;\n color: var(--mrd-color-neutral-400);\n}\n\n.mrd-image-field__browse {\n color: var(--mrd-color-primary);\n font-weight: var(--mrd-font-weight-medium);\n text-decoration: underline;\n}\n\n/* Preview: thumbnail + bestandsnaam + verwijder knop */\n.mrd-image-field__preview-container {\n display: flex;\n align-items: center;\n gap: var(--mrd-space-4);\n padding: var(--mrd-space-4);\n width: 100%;\n}\n\n.mrd-image-field__preview-thumb {\n flex-shrink: 0;\n width: 80px;\n height: 80px;\n border-radius: var(--mrd-border-radius);\n overflow: hidden;\n border: var(--mrd-border-width) solid var(--mrd-border-color);\n background-color: var(--mrd-color-neutral-100);\n}\n\n.mrd-image-field__preview {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n}\n\n.mrd-image-field__preview-info {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: var(--mrd-space-1);\n}\n\n.mrd-image-field__preview-name {\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-sm);\n font-weight: var(--mrd-font-weight-medium);\n color: var(--mrd-color-neutral-800);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.mrd-image-field__preview-overlay {\n position: absolute;\n inset: 0;\n background: rgb(255 255 255 / 0.7);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--mrd-border-radius);\n}\n\n.mrd-image-field__spinner {\n display: inline-block;\n width: 24px;\n height: 24px;\n border: 2px solid var(--mrd-color-neutral-300);\n border-top-color: var(--mrd-color-primary);\n border-radius: 50%;\n animation: mrd-image-spin 0.6s linear infinite;\n}\n\n@keyframes mrd-image-spin { to { transform: rotate(360deg); } }\n\n.mrd-image-field__upload-status {\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-image-field__clear {\n flex-shrink: 0;\n background-color: var(--mrd-color-white);\n color: var(--mrd-color-danger);\n border: var(--mrd-border-width) solid var(--mrd-color-danger);\n border-radius: var(--mrd-border-radius);\n padding: var(--mrd-space-1) var(--mrd-space-3);\n font-family: var(--mrd-font-family);\n font-size: var(--mrd-font-size-sm);\n font-weight: var(--mrd-font-weight-medium);\n cursor: pointer;\n transition: background-color var(--mrd-transition), color var(--mrd-transition);\n}\n\n.mrd-image-field__clear:hover {\n background-color: var(--mrd-color-danger);\n color: var(--mrd-color-white);\n}\n\n.mrd-image-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-image-field',\n styleUrl: 'mrd-image-field.scss',\n scoped: true,\n})\nexport class MrdImageField {\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 = 'image/*';\n @Prop() maxSize: number = 0;\n\n @State() previewUrl: string = '';\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 an image 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.previewUrl = '';\n this.fileName = '';\n }\n }\n\n private handleFile(file: File | null) {\n if (!file) {\n this.previewUrl = '';\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 if (!file.type.startsWith('image/')) {\n this.error = 'Please select an image file';\n return;\n }\n this.error = '';\n this.fileName = file.name;\n this.uploading = true;\n // Show local preview immediately while upload is in progress\n const reader = new FileReader();\n reader.onload = (ev) => {\n this.previewUrl = ev.target?.result as string;\n };\n reader.readAsDataURL(file);\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.previewUrl = '';\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 hasError = !!this.error;\n const zoneClass = [\n 'mrd-image-field__zone',\n this.isDragging ? 'mrd-image-field__zone--dragging' : '',\n hasError ? 'mrd-image-field__zone--error' : '',\n this.disabled || this.uploading ? 'mrd-image-field__zone--disabled' : '',\n ].filter(Boolean).join(' ');\n\n return (\n <Host>\n <div class=\"mrd-image-field\">\n {this.label && (\n <label class={`mrd-image-field__label${this.required ? ' mrd-image-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-image-field__input\"\n type=\"file\"\n name={this.name}\n accept={this.accept}\n disabled={this.disabled || this.uploading}\n required={this.required && !this.previewUrl}\n onChange={this.handleInputChange}\n />\n {this.previewUrl ? (\n <div class=\"mrd-image-field__preview-container\">\n <div class=\"mrd-image-field__preview-thumb\">\n <img class=\"mrd-image-field__preview\" src={this.previewUrl} alt={this.fileName} />\n {this.uploading && <div class=\"mrd-image-field__preview-overlay\"><span class=\"mrd-image-field__spinner\" /></div>}\n </div>\n <div class=\"mrd-image-field__preview-info\">\n <span class=\"mrd-image-field__preview-name\">{this.fileName}</span>\n {this.uploading && (\n <span class=\"mrd-image-field__upload-status\">{t('loading', this.locale)}</span>\n )}\n </div>\n {!this.uploading && (\n <button class=\"mrd-image-field__clear\" type=\"button\" onClick={this.handleClear} aria-label={t('clear', this.locale)}>\n {t('remove', this.locale)}\n </button>\n )}\n </div>\n ) : (\n <div class=\"mrd-image-field__prompt\">\n <svg class=\"mrd-image-field__upload-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"/>\n <circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"/>\n <polyline points=\"21 15 16 10 5 21\"/>\n </svg>\n <span>\n {t('drop_file_here', this.locale)}{' '}\n <span class=\"mrd-image-field__browse\">{t('browse', this.locale)}</span>\n </span>\n </div>\n )}\n </div>\n {hasError && <span class=\"mrd-image-field__error\">{this.error}</span>}\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1,10 +1,21 @@
1
- import { Host, h } from "@stencil/core";
2
- import { ClientLayoutItemType, ClientLayoutItemFieldDataType, } from "../../types/client-layout";
3
- import { CellRenderer } from "../../utils/cell-renderer";
4
- import { t } from "../../utils/i18n";
5
- import { formatDate } from "../../utils/format";
6
- export class MrdLayoutSection {
7
- constructor() {
1
+ import { r as registerInstance, a as createEvent, h, d as Host, e as getElement } from './index-B_tPFIvS.js';
2
+ import { a as ClientLayoutItemType, b as ClientLayoutItemFieldDataType } from './client-layout-D88nn5zf.js';
3
+ import { C as CellRenderer } from './cell-renderer-CbRwLOo8.js';
4
+ import { t } from './i18n-hoGGKbKU.js';
5
+ import { f as formatDate } from './format-BAfsQfy1.js';
6
+
7
+ const mrdLayoutSectionScss = () => `.mrd-layout-section.sc-mrd-layout-section{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-color-neutral-800)}.mrd-layout-section__field.sc-mrd-layout-section{display:grid;grid-template-columns:200px 1fr;align-items:baseline;gap:0 var(--mrd-space-2);padding:var(--mrd-space-1) 0}.mrd-layout-section__field-label.sc-mrd-layout-section{font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-normal);color:var(--mrd-color-neutral-500);padding-top:1px}.mrd-layout-section__field-value.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-800);word-break:break-word;display:inline-flex;align-items:center;gap:var(--mrd-space-1)}.mrd-layout-section__history-wrap.sc-mrd-layout-section{position:relative;display:inline-flex;align-items:center}.mrd-layout-section__history-btn.sc-mrd-layout-section{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;padding:0;background:transparent;border:none;border-radius:var(--mrd-border-radius-sm);color:var(--mrd-color-neutral-400);cursor:pointer;flex-shrink:0;transition:color var(--mrd-transition-fast), background-color var(--mrd-transition-fast)}.mrd-layout-section__history-btn.sc-mrd-layout-section:hover{color:var(--mrd-color-neutral-700);background-color:var(--mrd-color-neutral-100)}.mrd-layout-section__history-btn.sc-mrd-layout-section:focus{outline:none;box-shadow:var(--mrd-shadow-focus)}.mrd-layout-section__history-icon.sc-mrd-layout-section{width:0.875rem;height:0.875rem}.mrd-layout-section__history-popover.sc-mrd-layout-section{position:absolute;top:calc(100% + 0.25rem);left:0;min-width:24rem;max-width:24rem;background-color:var(--mrd-color-white);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius-md);box-shadow:var(--mrd-shadow-md);padding:var(--mrd-space-1) 0;z-index:var(--mrd-z-dropdown)}.mrd-layout-section__history-entry.sc-mrd-layout-section{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-normal);color:var(--mrd-color-neutral-700);padding:var(--mrd-space-2) var(--mrd-space-3);line-height:var(--mrd-line-height-normal)}.mrd-layout-section__history-entry.sc-mrd-layout-section:not(:last-child){border-bottom:var(--mrd-border-width) solid var(--mrd-color-neutral-100)}.mrd-layout-section__field-header.sc-mrd-layout-section{font-size:var(--mrd-font-size-2xl);font-weight:var(--mrd-font-weight-bold);color:var(--mrd-color-neutral-900);margin:0 0 var(--mrd-space-4) 0;padding:0}.mrd-layout-section__header.sc-mrd-layout-section{font-size:var(--mrd-font-size-xl);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-800);margin:var(--mrd-space-4) 0 var(--mrd-space-2) 0;padding:0}.mrd-layout-section__text.sc-mrd-layout-section{font-size:var(--mrd-font-size-base);color:var(--mrd-color-neutral-700);line-height:var(--mrd-line-height-relaxed);margin:var(--mrd-space-2) 0}.mrd-layout-section__navigate.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-2);padding:var(--mrd-space-2) var(--mrd-space-3);background:none;border:1px solid var(--mrd-color-neutral-300);border-radius:var(--mrd-border-radius);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-primary);cursor:pointer;margin:var(--mrd-space-2) 0}.mrd-layout-section__navigate.sc-mrd-layout-section:hover{background-color:var(--mrd-color-primary-light);border-color:var(--mrd-color-primary)}.mrd-layout-section__link.sc-mrd-layout-section{color:var(--mrd-color-primary);text-decoration:none}.mrd-layout-section__link.sc-mrd-layout-section:hover{text-decoration:underline}.mrd-layout-section__relation-link.sc-mrd-layout-section{background:none;border:none;padding:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-primary);cursor:pointer;text-align:left}.mrd-layout-section__relation-link.sc-mrd-layout-section:hover{text-decoration:underline}.mrd-layout-section__download-link.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-1);background:none;border:none;padding:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-primary);cursor:pointer;text-align:left}.mrd-layout-section__download-link.sc-mrd-layout-section:hover{text-decoration:underline;color:var(--mrd-color-primary-dark)}.mrd-layout-section__file-icon.sc-mrd-layout-section{flex-shrink:0;width:1rem;height:1rem}.mrd-layout-section__boolean--true.sc-mrd-layout-section{color:var(--mrd-color-success);font-weight:var(--mrd-font-weight-semibold)}.mrd-layout-section__boolean--false.sc-mrd-layout-section{color:var(--mrd-color-neutral-400)}.mrd-layout-section__field--block.sc-mrd-layout-section{grid-template-columns:1fr}.mrd-layout-section__badge.sc-mrd-layout-section{display:inline-block;font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);padding:2px var(--mrd-space-3);border-radius:10px}.mrd-layout-section__badge-dot-row.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-2)}.mrd-layout-section__badge-dot.sc-mrd-layout-section{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0}.mrd-layout-section__secret-masked.sc-mrd-layout-section{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-label-color);letter-spacing:0.15em;user-select:none;pointer-events:none}.mrd-layout-section__pre.sc-mrd-layout-section{font-family:var(--mrd-font-family-mono);font-size:var(--mrd-font-size-xs);background-color:var(--mrd-color-neutral-50);border:1px solid var(--mrd-color-neutral-200);border-radius:var(--mrd-border-radius);padding:var(--mrd-space-3);margin:0;max-height:calc(10 * 1.5 * var(--mrd-font-size-xs));overflow-x:auto;overflow-y:auto;white-space:pre-wrap;word-break:break-word}.mrd-layout-section__group.sc-mrd-layout-section{margin:var(--mrd-space-4) 0}.mrd-layout-section__group-title.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-500);margin:0 0 var(--mrd-space-2) 0;padding-bottom:0;text-transform:uppercase;letter-spacing:0.05em}.mrd-layout-section__related-view.sc-mrd-layout-section{margin:var(--mrd-space-4) 0}.mrd-layout-section__related-view-title.sc-mrd-layout-section{font-size:var(--mrd-font-size-lg);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-800);margin:0 0 var(--mrd-space-3) 0}.mrd-layout-section__search.sc-mrd-layout-section{position:relative;margin:var(--mrd-space-2) 0}.mrd-layout-section__search-wrap.sc-mrd-layout-section{position:relative}.mrd-layout-section__search-icon.sc-mrd-layout-section{position:absolute;left:var(--mrd-input-padding-x);top:50%;transform:translateY(-50%);width:1rem;height:1rem;color:var(--mrd-color-neutral-400);pointer-events:none}.mrd-layout-section__search-input.sc-mrd-layout-section{display:block;width:100%;height:var(--mrd-input-height);padding:var(--mrd-input-padding-y) var(--mrd-input-padding-x) var(--mrd-input-padding-y) calc(var(--mrd-input-padding-x) + 1rem + var(--mrd-space-2));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);outline:none;appearance:none;box-sizing:border-box}.mrd-layout-section__search-input.sc-mrd-layout-section:focus{border-color:var(--mrd-border-color-focus);box-shadow:var(--mrd-shadow-focus)}.mrd-layout-section__search-input.sc-mrd-layout-section::placeholder{color:var(--mrd-input-placeholder-color)}.mrd-layout-section__search-results.sc-mrd-layout-section{position:absolute;top:100%;left:0;right:0;background-color:var(--mrd-color-white);border:1px solid var(--mrd-color-neutral-300);border-top:none;border-radius:0 0 var(--mrd-border-radius) var(--mrd-border-radius);box-shadow:var(--mrd-shadow-sm);z-index:100;max-height:300px;overflow-y:auto;list-style:none;margin:0;padding:var(--mrd-space-1) 0}.mrd-layout-section__search-result.sc-mrd-layout-section{margin:0;padding:0}.mrd-layout-section__search-result-btn.sc-mrd-layout-section{display:flex;flex-direction:column;width:100%;padding:var(--mrd-space-2) var(--mrd-space-3);background:none;border:none;text-align:left;cursor:pointer;font-family:var(--mrd-font-family)}.mrd-layout-section__search-result-btn.sc-mrd-layout-section:hover{background-color:var(--mrd-color-primary-light)}.mrd-layout-section__search-result-label.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-800)}.mrd-layout-section__search-result-desc.sc-mrd-layout-section{font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500);margin-top:var(--mrd-space-1)}.mrd-layout-section__image-thumb-btn.sc-mrd-layout-section{background:none;border:none;padding:0;cursor:pointer;display:inline-block;border-radius:var(--mrd-border-radius);overflow:hidden;line-height:0}.mrd-layout-section__image-thumb-btn.sc-mrd-layout-section:hover .mrd-layout-section__image-thumb.sc-mrd-layout-section{opacity:0.85}.mrd-layout-section__image-thumb.sc-mrd-layout-section{display:block;max-width:160px;max-height:100px;border-radius:var(--mrd-border-radius);object-fit:cover;transition:opacity 0.15s}.mrd-layout-section__modal-backdrop.sc-mrd-layout-section{position:fixed;inset:0;background:rgba(0, 0, 0, 0.6);z-index:300;display:flex;align-items:center;justify-content:center}.mrd-layout-section__modal.sc-mrd-layout-section{position:relative;background:#fff;border-radius:var(--mrd-border-radius);padding:var(--mrd-space-3);max-width:min(90vw, 900px);max-height:90vh;display:flex;align-items:center;justify-content:center;box-shadow:var(--mrd-shadow-lg)}.mrd-layout-section__modal-close.sc-mrd-layout-section{position:absolute;top:var(--mrd-space-2);right:var(--mrd-space-2);background:rgba(0, 0, 0, 0.5);border:none;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;font-size:var(--mrd-font-size-sm);line-height:1;z-index:1}.mrd-layout-section__modal-close.sc-mrd-layout-section:hover{background:rgba(0, 0, 0, 0.8)}.mrd-layout-section__modal-image.sc-mrd-layout-section{display:block;max-width:100%;max-height:calc(90vh - 2rem);border-radius:var(--mrd-border-radius);object-fit:contain}`;
8
+
9
+ const MrdLayoutSection = class {
10
+ constructor(hostRef) {
11
+ registerInstance(this, hostRef);
12
+ this.mrdNavigate = createEvent(this, "mrdNavigate", 7);
13
+ this.mrdSearch = createEvent(this, "mrdSearch", 7);
14
+ this.mrdDownload = createEvent(this, "mrdDownload", 7);
15
+ this.mrdLoadViewPage = createEvent(this, "mrdLoadViewPage", 7);
16
+ this.mrdLoadImage = createEvent(this, "mrdLoadImage", 7);
17
+ this.mrdViewAction = createEvent(this, "mrdViewAction", 7);
18
+ this.mrdLoadViewAggregations = createEvent(this, "mrdLoadViewAggregations", 7);
8
19
  /** Items from one layout entry in ClientDashboardMetadata.layouts[]. */
9
20
  this.items = [];
10
21
  /** Record data object; keys are field names, _links holds relation and related-view links. */
@@ -336,414 +347,16 @@ export class MrdLayoutSection {
336
347
  render() {
337
348
  return (h(Host, { key: '8966198eebd98570d2db2f4d2fe9ef3f8b466ec6' }, h("div", { key: '645ddbfdd829a0f9c1a4eab18105662af6c078b2', class: "mrd-layout-section" }, this.items.map(item => this.renderItem(item))), this.renderImageModal()));
338
349
  }
339
- static get is() { return "mrd-layout-section"; }
340
- static get encapsulation() { return "scoped"; }
341
- static get originalStyleUrls() {
342
- return {
343
- "$": ["mrd-layout-section.scss"]
344
- };
345
- }
346
- static get styleUrls() {
347
- return {
348
- "$": ["mrd-layout-section.css"]
349
- };
350
- }
351
- static get properties() {
352
- return {
353
- "items": {
354
- "type": "unknown",
355
- "mutable": false,
356
- "complexType": {
357
- "original": "ClientLayoutItem[]",
358
- "resolved": "ClientLayoutItem[]",
359
- "references": {
360
- "ClientLayoutItem": {
361
- "location": "import",
362
- "path": "../../types/client-layout",
363
- "id": "src/types/client-layout.ts::ClientLayoutItem",
364
- "referenceLocation": "ClientLayoutItem"
365
- }
366
- }
367
- },
368
- "required": false,
369
- "optional": false,
370
- "docs": {
371
- "tags": [],
372
- "text": "Items from one layout entry in ClientDashboardMetadata.layouts[]."
373
- },
374
- "getter": false,
375
- "setter": false,
376
- "defaultValue": "[]"
377
- },
378
- "data": {
379
- "type": "unknown",
380
- "mutable": false,
381
- "complexType": {
382
- "original": "Record<string, unknown>",
383
- "resolved": "string | unknown",
384
- "references": {
385
- "Record": {
386
- "location": "global",
387
- "id": "global::Record"
388
- }
389
- }
390
- },
391
- "required": false,
392
- "optional": false,
393
- "docs": {
394
- "tags": [],
395
- "text": "Record data object; keys are field names, _links holds relation and related-view links."
396
- },
397
- "getter": false,
398
- "setter": false,
399
- "defaultValue": "{}"
400
- },
401
- "views": {
402
- "type": "unknown",
403
- "mutable": false,
404
- "complexType": {
405
- "original": "Record<string, ClientViewMetadata>",
406
- "resolved": "ClientViewMetadata | string",
407
- "references": {
408
- "Record": {
409
- "location": "global",
410
- "id": "global::Record"
411
- },
412
- "ClientViewMetadata": {
413
- "location": "import",
414
- "path": "../../types/client-layout",
415
- "id": "src/types/client-layout.ts::ClientViewMetadata",
416
- "referenceLocation": "ClientViewMetadata"
417
- }
418
- }
419
- },
420
- "required": false,
421
- "optional": false,
422
- "docs": {
423
- "tags": [],
424
- "text": "Legacy: view metadata map (ClientDashboardMetadata.views). Not needed in new flat format."
425
- },
426
- "getter": false,
427
- "setter": false,
428
- "defaultValue": "{}"
429
- },
430
- "links": {
431
- "type": "unknown",
432
- "mutable": false,
433
- "complexType": {
434
- "original": "Record<string, { href: string }>",
435
- "resolved": "string | { href: string; }",
436
- "references": {
437
- "Record": {
438
- "location": "global",
439
- "id": "global::Record"
440
- }
441
- }
442
- },
443
- "required": false,
444
- "optional": false,
445
- "docs": {
446
- "tags": [],
447
- "text": "Legacy: top-level _links from ClientDashboardMetadata. Not needed in new flat format."
448
- },
449
- "getter": false,
450
- "setter": false,
451
- "defaultValue": "{}"
452
- },
453
- "locale": {
454
- "type": "string",
455
- "mutable": false,
456
- "complexType": {
457
- "original": "string",
458
- "resolved": "string",
459
- "references": {}
460
- },
461
- "required": false,
462
- "optional": false,
463
- "docs": {
464
- "tags": [],
465
- "text": ""
466
- },
467
- "getter": false,
468
- "setter": false,
469
- "reflect": false,
470
- "attribute": "locale",
471
- "defaultValue": "navigator.language"
472
- }
473
- };
474
- }
475
- static get states() {
476
- return {
477
- "searchQueryMap": {},
478
- "searchResultsMap": {},
479
- "imagePreviewUrl": {},
480
- "imagePreviews": {},
481
- "openHistoryField": {}
482
- };
483
- }
484
- static get events() {
485
- return [{
486
- "method": "mrdNavigate",
487
- "name": "mrdNavigate",
488
- "bubbles": true,
489
- "cancelable": true,
490
- "composed": true,
491
- "docs": {
492
- "tags": [],
493
- "text": ""
494
- },
495
- "complexType": {
496
- "original": "{ href?: string; label: string; navigate?: ClientLayoutItemNavigate }",
497
- "resolved": "{ href?: string | undefined; label: string; navigate?: ClientLayoutItemNavigate | undefined; }",
498
- "references": {
499
- "ClientLayoutItemNavigate": {
500
- "location": "import",
501
- "path": "../../types/client-layout",
502
- "id": "src/types/client-layout.ts::ClientLayoutItemNavigate",
503
- "referenceLocation": "ClientLayoutItemNavigate"
504
- }
505
- }
506
- }
507
- }, {
508
- "method": "mrdSearch",
509
- "name": "mrdSearch",
510
- "bubbles": true,
511
- "cancelable": true,
512
- "composed": true,
513
- "docs": {
514
- "tags": [],
515
- "text": ""
516
- },
517
- "complexType": {
518
- "original": "{ query: string; dataClass: string }",
519
- "resolved": "{ query: string; dataClass: string; }",
520
- "references": {}
521
- }
522
- }, {
523
- "method": "mrdDownload",
524
- "name": "mrdDownload",
525
- "bubbles": true,
526
- "cancelable": true,
527
- "composed": true,
528
- "docs": {
529
- "tags": [],
530
- "text": ""
531
- },
532
- "complexType": {
533
- "original": "{ href: string; fileName: string }",
534
- "resolved": "{ href: string; fileName: string; }",
535
- "references": {}
536
- }
537
- }, {
538
- "method": "mrdLoadViewPage",
539
- "name": "mrdLoadViewPage",
540
- "bubbles": true,
541
- "cancelable": true,
542
- "composed": true,
543
- "docs": {
544
- "tags": [],
545
- "text": "Re-emitted from an embedded mrd-table's mrdLoadPage; host fetches the next page and calls setViewPage()."
546
- },
547
- "complexType": {
548
- "original": "{ name: string; page: number; sort: string; path: string; qs: string }",
549
- "resolved": "{ name: string; page: number; sort: string; path: string; qs: string; }",
550
- "references": {}
551
- }
552
- }, {
553
- "method": "mrdLoadImage",
554
- "name": "mrdLoadImage",
555
- "bubbles": true,
556
- "cancelable": true,
557
- "composed": true,
558
- "docs": {
559
- "tags": [],
560
- "text": "Fired once on load for each IMAGE field that has an href; host resolves the URL and calls setImagePreview()."
561
- },
562
- "complexType": {
563
- "original": "{ fieldName: string; href: string }",
564
- "resolved": "{ fieldName: string; href: string; }",
565
- "references": {}
566
- }
567
- }, {
568
- "method": "mrdViewAction",
569
- "name": "mrdViewAction",
570
- "bubbles": true,
571
- "cancelable": true,
572
- "composed": true,
573
- "docs": {
574
- "tags": [],
575
- "text": "Re-emitted from an embedded mrd-table's mrdAction; host builds the target URL from dataClass."
576
- },
577
- "complexType": {
578
- "original": "{ name: string; action: string; dataClass: string; path?: string; qs?: string; parentPath?: string | null; basicType?: string }",
579
- "resolved": "{ name: string; action: string; dataClass: string; path?: string | undefined; qs?: string | undefined; parentPath?: string | null | undefined; basicType?: string | undefined; }",
580
- "references": {}
581
- }
582
- }, {
583
- "method": "mrdLoadViewAggregations",
584
- "name": "mrdLoadViewAggregations",
585
- "bubbles": true,
586
- "cancelable": true,
587
- "composed": true,
588
- "docs": {
589
- "tags": [],
590
- "text": "Re-emitted from an embedded mrd-table's mrdLoadAggregations; host calls setViewAggregations() with the result."
591
- },
592
- "complexType": {
593
- "original": "{ name: string; dataClass: string; path: string; qs: string; aggQs: string }",
594
- "resolved": "{ name: string; dataClass: string; path: string; qs: string; aggQs: string; }",
595
- "references": {}
596
- }
597
- }];
598
- }
599
- static get methods() {
600
- return {
601
- "setSearchResults": {
602
- "complexType": {
603
- "signature": "(results: RelationSearchResult[], dataClass?: string) => Promise<void>",
604
- "parameters": [{
605
- "name": "results",
606
- "type": "RelationSearchResult[]",
607
- "docs": ""
608
- }, {
609
- "name": "dataClass",
610
- "type": "string | undefined",
611
- "docs": ""
612
- }],
613
- "references": {
614
- "Promise": {
615
- "location": "global",
616
- "id": "global::Promise"
617
- },
618
- "RelationSearchResult": {
619
- "location": "import",
620
- "path": "../../types/client-layout",
621
- "id": "src/types/client-layout.ts::RelationSearchResult",
622
- "referenceLocation": "RelationSearchResult"
623
- }
624
- },
625
- "return": "Promise<void>"
626
- },
627
- "docs": {
628
- "text": "Inject search results. Pass dataClass to target a specific SEARCH item; omit when there is only one.",
629
- "tags": []
630
- }
631
- },
632
- "setViewPage": {
633
- "complexType": {
634
- "signature": "(name: string, page: number, rows: any[], totalElements?: number, hasNext?: boolean) => Promise<void>",
635
- "parameters": [{
636
- "name": "name",
637
- "type": "string",
638
- "docs": ""
639
- }, {
640
- "name": "page",
641
- "type": "number",
642
- "docs": ""
643
- }, {
644
- "name": "rows",
645
- "type": "any[]",
646
- "docs": ""
647
- }, {
648
- "name": "totalElements",
649
- "type": "number | undefined",
650
- "docs": ""
651
- }, {
652
- "name": "hasNext",
653
- "type": "boolean | undefined",
654
- "docs": ""
655
- }],
656
- "references": {
657
- "Promise": {
658
- "location": "global",
659
- "id": "global::Promise"
660
- }
661
- },
662
- "return": "Promise<void>"
663
- },
664
- "docs": {
665
- "text": "Inject data into an embedded mrd-table for a RELATED_VIEW or VIEW item.\nPass totalElements to update the pagination total (safe to pass on every page).\nPass hasNext (from _links.next presence) so the table can decide whether to emit aggregations.",
666
- "tags": []
667
- }
668
- },
669
- "setViewAggregations": {
670
- "complexType": {
671
- "signature": "(name: string, data: any) => Promise<void>",
672
- "parameters": [{
673
- "name": "name",
674
- "type": "string",
675
- "docs": ""
676
- }, {
677
- "name": "data",
678
- "type": "any",
679
- "docs": ""
680
- }],
681
- "references": {
682
- "Promise": {
683
- "location": "global",
684
- "id": "global::Promise"
685
- }
686
- },
687
- "return": "Promise<void>"
688
- },
689
- "docs": {
690
- "text": "Inject aggregation totals into an embedded mrd-table for a VIEW or RELATED_VIEW item.",
691
- "tags": []
692
- }
693
- },
694
- "setImagePreview": {
695
- "complexType": {
696
- "signature": "(fieldName: string, url: string) => Promise<void>",
697
- "parameters": [{
698
- "name": "fieldName",
699
- "type": "string",
700
- "docs": ""
701
- }, {
702
- "name": "url",
703
- "type": "string",
704
- "docs": ""
705
- }],
706
- "references": {
707
- "Promise": {
708
- "location": "global",
709
- "id": "global::Promise"
710
- }
711
- },
712
- "return": "Promise<void>"
713
- },
714
- "docs": {
715
- "text": "Provide a resolved URL for an IMAGE field. Shows as thumbnail; clicking opens the lightbox.",
716
- "tags": []
717
- }
718
- },
719
- "openImagePreview": {
720
- "complexType": {
721
- "signature": "(url: string) => Promise<void>",
722
- "parameters": [{
723
- "name": "url",
724
- "type": "string",
725
- "docs": ""
726
- }],
727
- "references": {
728
- "Promise": {
729
- "location": "global",
730
- "id": "global::Promise"
731
- }
732
- },
733
- "return": "Promise<void>"
734
- },
735
- "docs": {
736
- "text": "Open the lightbox directly with a URL (e.g. after mrdDownload on a FILE field).",
737
- "tags": []
738
- }
739
- }
740
- };
741
- }
742
- static get elementRef() { return "el"; }
743
- static get watchers() {
744
- return [{
745
- "propName": "data",
746
- "methodName": "dataChanged"
747
- }];
748
- }
749
- }
350
+ get el() { return getElement(this); }
351
+ static get watchers() { return {
352
+ "data": [{
353
+ "dataChanged": 0
354
+ }]
355
+ }; }
356
+ };
357
+ MrdLayoutSection.style = mrdLayoutSectionScss();
358
+
359
+ export { MrdLayoutSection as mrd_layout_section };
360
+ //# sourceMappingURL=mrd-layout-section.entry.esm.js.map
361
+
362
+ //# sourceMappingURL=mrd-layout-section.entry.js.map