@mmlogic/components 0.3.11 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/dist/cjs/{index-BPj2cBXs.js → index-CAzwGt9u.js} +38 -0
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/mosterdcomponents.cjs.js +1 -1
  4. package/dist/cjs/mrd-boolean-field_23.cjs.entry.js +1203 -1084
  5. package/dist/collection/collection-manifest.json +23 -23
  6. package/dist/collection/components/{mrd-document-container/mrd-document-container.scss → documents/mrd-document-container/mrd-document-container.css} +3 -3
  7. package/dist/collection/components/{mrd-document-container → documents/mrd-document-container}/mrd-document-container.js +7 -7
  8. package/dist/collection/components/documents/mrd-document-list/folder-tree.js +109 -0
  9. package/dist/collection/components/{mrd-document-list/mrd-document-list.scss → documents/mrd-document-list/mrd-document-list.css} +6 -4
  10. package/dist/collection/components/{mrd-document-list → documents/mrd-document-list}/mrd-document-list.js +83 -240
  11. package/dist/collection/components/documents/mrd-document-list/tree-view.js +75 -0
  12. package/dist/collection/components/{mrd-document-view/mrd-document-view.scss → documents/mrd-document-view/mrd-document-view.css} +1 -1
  13. package/dist/collection/components/{mrd-document-view → documents/mrd-document-view}/mrd-document-view.js +4 -4
  14. package/dist/collection/components/fields/field-helpers.js +17 -0
  15. package/dist/collection/components/fields/file-upload-common.js +38 -0
  16. package/dist/collection/components/{mrd-boolean-field/mrd-boolean-field.scss → fields/mrd-boolean-field/mrd-boolean-field.css} +3 -3
  17. package/dist/collection/components/{mrd-boolean-field → fields/mrd-boolean-field}/mrd-boolean-field.js +1 -1
  18. package/dist/collection/components/{mrd-currency-field/mrd-currency-field.scss → fields/mrd-currency-field/mrd-currency-field.css} +11 -9
  19. package/dist/collection/components/{mrd-currency-field → fields/mrd-currency-field}/mrd-currency-field.js +7 -13
  20. package/dist/collection/components/{mrd-date-field/mrd-date-field.scss → fields/mrd-date-field/mrd-date-field.css} +8 -10
  21. package/dist/collection/components/{mrd-date-field → fields/mrd-date-field}/mrd-date-field.js +3 -10
  22. package/dist/collection/components/{mrd-datetime-field/mrd-datetime-field.scss → fields/mrd-datetime-field/mrd-datetime-field.css} +8 -10
  23. package/dist/collection/components/{mrd-datetime-field → fields/mrd-datetime-field}/mrd-datetime-field.js +3 -10
  24. package/dist/collection/components/{mrd-email-field/mrd-email-field.scss → fields/mrd-email-field/mrd-email-field.css} +2 -11
  25. package/dist/collection/components/{mrd-email-field → fields/mrd-email-field}/mrd-email-field.js +6 -13
  26. package/dist/collection/components/{mrd-file-field/mrd-file-field.scss → fields/mrd-file-field/mrd-file-field.css} +19 -24
  27. package/dist/collection/components/{mrd-file-field → fields/mrd-file-field}/mrd-file-field.js +13 -24
  28. package/dist/collection/components/{mrd-hyperlink-field/mrd-hyperlink-field.scss → fields/mrd-hyperlink-field/mrd-hyperlink-field.css} +7 -16
  29. package/dist/collection/components/{mrd-hyperlink-field → fields/mrd-hyperlink-field}/mrd-hyperlink-field.js +9 -15
  30. package/dist/collection/components/{mrd-image-field/mrd-image-field.scss → fields/mrd-image-field/mrd-image-field.css} +15 -24
  31. package/dist/collection/components/{mrd-image-field → fields/mrd-image-field}/mrd-image-field.js +13 -28
  32. package/dist/collection/components/{mrd-list-field/mrd-list-field.scss → fields/mrd-list-field/mrd-list-field.css} +18 -21
  33. package/dist/collection/components/{mrd-list-field → fields/mrd-list-field}/mrd-list-field.js +10 -25
  34. package/dist/collection/components/{mrd-longtext-field/mrd-longtext-field.scss → fields/mrd-longtext-field/mrd-longtext-field.css} +21 -18
  35. package/dist/collection/components/{mrd-longtext-field → fields/mrd-longtext-field}/mrd-longtext-field.js +3 -10
  36. package/dist/collection/components/{mrd-number-field/mrd-number-field.scss → fields/mrd-number-field/mrd-number-field.css} +9 -10
  37. package/dist/collection/components/{mrd-number-field → fields/mrd-number-field}/mrd-number-field.js +7 -6
  38. package/dist/collection/components/{mrd-relation-field/mrd-relation-field.scss → fields/mrd-relation-field/mrd-relation-field.css} +61 -59
  39. package/dist/collection/components/{mrd-relation-field → fields/mrd-relation-field}/mrd-relation-field.js +16 -26
  40. package/dist/collection/components/{mrd-secret-field/mrd-secret-field.scss → fields/mrd-secret-field/mrd-secret-field.css} +7 -10
  41. package/dist/collection/components/{mrd-secret-field → fields/mrd-secret-field}/mrd-secret-field.js +4 -11
  42. package/dist/collection/components/{mrd-text-field/mrd-text-field.scss → fields/mrd-text-field/mrd-text-field.css} +2 -11
  43. package/dist/collection/components/{mrd-text-field → fields/mrd-text-field}/mrd-text-field.js +3 -10
  44. package/dist/collection/components/{mrd-textarea-field/mrd-textarea-field.scss → fields/mrd-textarea-field/mrd-textarea-field.css} +7 -10
  45. package/dist/collection/components/{mrd-textarea-field → fields/mrd-textarea-field}/mrd-textarea-field.js +3 -9
  46. package/dist/collection/components/{mrd-time-field/mrd-time-field.scss → fields/mrd-time-field/mrd-time-field.css} +8 -10
  47. package/dist/collection/components/{mrd-time-field → fields/mrd-time-field}/mrd-time-field.js +3 -10
  48. package/dist/collection/components/{mrd-field/mrd-field.scss → form/mrd-field/mrd-field.css} +1 -1
  49. package/dist/collection/components/{mrd-field → form/mrd-field}/mrd-field.js +3 -3
  50. package/dist/collection/components/{mrd-form/mrd-form.scss → form/mrd-form/mrd-form.css} +1 -1
  51. package/dist/collection/components/{mrd-form → form/mrd-form}/mrd-form.js +5 -5
  52. package/dist/collection/components/layout/mrd-layout-section/field-value.js +111 -0
  53. package/dist/collection/components/layout/mrd-layout-section/layout-helpers.js +29 -0
  54. package/dist/collection/components/{mrd-layout-section/mrd-layout-section.scss → layout/mrd-layout-section/mrd-layout-section.css} +4 -4
  55. package/dist/collection/components/{mrd-layout-section → layout/mrd-layout-section}/mrd-layout-section.js +52 -142
  56. package/dist/collection/components/{mrd-table/mrd-table.scss → table/mrd-table/mrd-table.css} +11 -13
  57. package/dist/collection/components/{mrd-table → table/mrd-table}/mrd-table.js +111 -439
  58. package/dist/collection/components/table/mrd-table/table-filter-popup.js +85 -0
  59. package/dist/collection/components/table/mrd-table/table-parts.js +110 -0
  60. package/dist/collection/components/table/mrd-table/table-query.js +178 -0
  61. package/dist/collection/components/table/mrd-table/virtual-scroll.js +49 -0
  62. package/dist/collection/dev/app.js +19 -18
  63. package/dist/collection/dev/example-data.js +58 -43
  64. package/dist/collection/utils/i18n.js +8 -0
  65. package/dist/collection/utils/query-params.js +43 -0
  66. package/dist/components/field-helpers.js +1 -0
  67. package/dist/components/file-upload-common.js +1 -0
  68. package/dist/components/i18n.js +1 -1
  69. package/dist/components/mrd-boolean-field2.js +1 -1
  70. package/dist/components/mrd-currency-field2.js +1 -1
  71. package/dist/components/mrd-date-field2.js +1 -1
  72. package/dist/components/mrd-datetime-field2.js +1 -1
  73. package/dist/components/mrd-document-container2.js +1 -1
  74. package/dist/components/mrd-document-list2.js +1 -1
  75. package/dist/components/mrd-document-view2.js +1 -1
  76. package/dist/components/mrd-email-field2.js +1 -1
  77. package/dist/components/mrd-file-field2.js +1 -1
  78. package/dist/components/mrd-form.js +1 -1
  79. package/dist/components/mrd-hyperlink-field2.js +1 -1
  80. package/dist/components/mrd-image-field2.js +1 -1
  81. package/dist/components/mrd-layout-section.js +1 -1
  82. package/dist/components/mrd-list-field2.js +1 -1
  83. package/dist/components/mrd-longtext-field2.js +1 -1
  84. package/dist/components/mrd-number-field2.js +1 -1
  85. package/dist/components/mrd-relation-field2.js +1 -1
  86. package/dist/components/mrd-secret-field2.js +1 -1
  87. package/dist/components/mrd-table2.js +1 -1
  88. package/dist/components/mrd-text-field2.js +1 -1
  89. package/dist/components/mrd-textarea-field2.js +1 -1
  90. package/dist/components/mrd-time-field2.js +1 -1
  91. package/dist/components/query-params.js +1 -0
  92. package/dist/esm/{index-_tsCCkAi.js → index-DiSEJMA8.js} +38 -1
  93. package/dist/esm/loader.js +2 -2
  94. package/dist/esm/mosterdcomponents.js +2 -2
  95. package/dist/esm/mrd-boolean-field_23.entry.js +1203 -1084
  96. package/dist/mosterdcomponents/mosterdcomponents.css +1 -1
  97. package/dist/mosterdcomponents/mosterdcomponents.esm.js +1 -1
  98. package/dist/mosterdcomponents/p-9b3c0917.entry.js +1 -0
  99. package/dist/mosterdcomponents/p-DiSEJMA8.js +2 -0
  100. package/dist/types/components/{mrd-document-container → documents/mrd-document-container}/mrd-document-container.d.ts +2 -2
  101. package/dist/types/components/documents/mrd-document-list/folder-tree.d.ts +66 -0
  102. package/dist/types/components/{mrd-document-list → documents/mrd-document-list}/mrd-document-list.d.ts +4 -37
  103. package/dist/types/components/documents/mrd-document-list/tree-view.d.ts +32 -0
  104. package/dist/types/components/{mrd-document-view → documents/mrd-document-view}/mrd-document-view.d.ts +2 -2
  105. package/dist/types/components/fields/field-helpers.d.ts +18 -0
  106. package/dist/types/components/fields/file-upload-common.d.ts +18 -0
  107. package/dist/types/components/{mrd-boolean-field → fields/mrd-boolean-field}/mrd-boolean-field.d.ts +1 -1
  108. package/dist/types/components/{mrd-currency-field → fields/mrd-currency-field}/mrd-currency-field.d.ts +2 -2
  109. package/dist/types/components/{mrd-date-field → fields/mrd-date-field}/mrd-date-field.d.ts +1 -1
  110. package/dist/types/components/{mrd-datetime-field → fields/mrd-datetime-field}/mrd-datetime-field.d.ts +1 -1
  111. package/dist/types/components/{mrd-email-field → fields/mrd-email-field}/mrd-email-field.d.ts +1 -1
  112. package/dist/types/components/{mrd-file-field → fields/mrd-file-field}/mrd-file-field.d.ts +2 -4
  113. package/dist/types/components/{mrd-hyperlink-field → fields/mrd-hyperlink-field}/mrd-hyperlink-field.d.ts +2 -2
  114. package/dist/types/components/{mrd-image-field → fields/mrd-image-field}/mrd-image-field.d.ts +2 -4
  115. package/dist/types/components/{mrd-list-field → fields/mrd-list-field}/mrd-list-field.d.ts +2 -2
  116. package/dist/types/components/{mrd-longtext-field → fields/mrd-longtext-field}/mrd-longtext-field.d.ts +1 -1
  117. package/dist/types/components/{mrd-number-field → fields/mrd-number-field}/mrd-number-field.d.ts +2 -2
  118. package/dist/types/components/{mrd-relation-field → fields/mrd-relation-field}/mrd-relation-field.d.ts +2 -2
  119. package/dist/types/components/{mrd-secret-field → fields/mrd-secret-field}/mrd-secret-field.d.ts +1 -1
  120. package/dist/types/components/{mrd-text-field → fields/mrd-text-field}/mrd-text-field.d.ts +1 -1
  121. package/dist/types/components/{mrd-textarea-field → fields/mrd-textarea-field}/mrd-textarea-field.d.ts +1 -1
  122. package/dist/types/components/{mrd-time-field → fields/mrd-time-field}/mrd-time-field.d.ts +1 -1
  123. package/dist/types/components/{mrd-field → form/mrd-field}/mrd-field.d.ts +2 -2
  124. package/dist/types/components/{mrd-form → form/mrd-form}/mrd-form.d.ts +2 -2
  125. package/dist/types/components/layout/mrd-layout-section/field-value.d.ts +22 -0
  126. package/dist/types/components/layout/mrd-layout-section/layout-helpers.d.ts +8 -0
  127. package/dist/types/components/{mrd-layout-section → layout/mrd-layout-section}/mrd-layout-section.d.ts +4 -11
  128. package/dist/types/components/{mrd-table → table/mrd-table}/mrd-table.d.ts +6 -13
  129. package/dist/types/components/table/mrd-table/table-filter-popup.d.ts +35 -0
  130. package/dist/types/components/table/mrd-table/table-parts.d.ts +61 -0
  131. package/dist/types/components/table/mrd-table/table-query.d.ts +50 -0
  132. package/dist/types/components/table/mrd-table/virtual-scroll.d.ts +26 -0
  133. package/dist/types/components.d.ts +3 -5
  134. package/dist/types/utils/query-params.d.ts +14 -0
  135. package/package.json +7 -2
  136. package/dist/components/validation.js +0 -1
  137. package/dist/mosterdcomponents/p-_tsCCkAi.js +0 -2
  138. package/dist/mosterdcomponents/p-a9618055.entry.js +0 -1
@@ -1,8 +1,7 @@
1
1
  import { Host, h } from "@stencil/core";
2
- import { ClientLayoutItemType, ClientLayoutItemFieldDataType, resolveArchetype, ARCHETYPE_DOCUMENT, } from "../../types/client-layout";
3
- import { CellRenderer } from "../../utils/cell-renderer";
4
- import { t } from "../../utils/i18n";
5
- import { formatDate } from "../../utils/format";
2
+ import { ClientLayoutItemType, ClientLayoutItemFieldDataType, resolveArchetype, ARCHETYPE_DOCUMENT, } from "../../../types/client-layout";
3
+ import { viewKeyFor, flattenItems, buildContainerHref } from "./layout-helpers";
4
+ import { renderField } from "./field-value";
6
5
  export class MrdLayoutSection {
7
6
  constructor() {
8
7
  /** Items from one layout entry in ClientDashboardMetadata.layouts[]. */
@@ -71,14 +70,8 @@ export class MrdLayoutSection {
71
70
  }
72
71
  }
73
72
  }
74
- viewKeyFor(item) {
75
- var _a, _b, _c, _d;
76
- if (item.type === ClientLayoutItemType.RELATED_VIEW)
77
- return (_b = (_a = item.relatedClass) !== null && _a !== void 0 ? _a : item.name) !== null && _b !== void 0 ? _b : '';
78
- return (_d = (_c = item.dataClass) !== null && _c !== void 0 ? _c : item.name) !== null && _d !== void 0 ? _d : '';
79
- }
80
73
  emitLoadImages() {
81
- for (const item of this.flattenItems(this.items)) {
74
+ for (const item of flattenItems(this.items)) {
82
75
  if (item.type === ClientLayoutItemType.FIELD && item.dataType === ClientLayoutItemFieldDataType.IMAGE) {
83
76
  const fieldName = item.name;
84
77
  const raw = this.data[fieldName];
@@ -88,15 +81,6 @@ export class MrdLayoutSection {
88
81
  }
89
82
  }
90
83
  }
91
- flattenItems(items) {
92
- const result = [];
93
- for (const item of items) {
94
- result.push(item);
95
- if (item.items)
96
- result.push(...this.flattenItems(item.items));
97
- }
98
- return result;
99
- }
100
84
  /** Inject search results. Pass dataClass to target a specific SEARCH item; omit when there is only one. */
101
85
  async setSearchResults(results, dataClass) {
102
86
  const key = dataClass !== null && dataClass !== void 0 ? dataClass : this.resolveSearchKey();
@@ -162,113 +146,26 @@ export class MrdLayoutSection {
162
146
  }
163
147
  resolveSearchKey() {
164
148
  var _a;
165
- const items = this.flattenItems(this.items).filter(i => i.type === ClientLayoutItemType.SEARCH);
149
+ const items = flattenItems(this.items).filter(i => i.type === ClientLayoutItemType.SEARCH);
166
150
  if (items.length === 1)
167
151
  return (_a = items[0].dataClass) !== null && _a !== void 0 ? _a : null;
168
152
  return null;
169
153
  }
170
- renderSingleFieldValue(item, value) {
171
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
172
- const dt = item.dataType;
173
- switch (dt) {
174
- case ClientLayoutItemFieldDataType.HYPERLINK: {
175
- const v = value;
176
- const href = (_a = v === null || v === void 0 ? void 0 : v.href) !== null && _a !== void 0 ? _a : String(value);
177
- const label = (_d = (_c = (_b = v === null || v === void 0 ? void 0 : v.name) !== null && _b !== void 0 ? _b : v === null || v === void 0 ? void 0 : v.text) !== null && _c !== void 0 ? _c : v === null || v === void 0 ? void 0 : v.label) !== null && _d !== void 0 ? _d : href;
178
- return (h("a", { class: "mrd-layout-section__link", href: href, target: "_blank", rel: "noopener noreferrer" }, label));
179
- }
180
- case ClientLayoutItemFieldDataType.TEXTBLOCK:
181
- return h("div", { class: "mrd-layout-section__prose", innerHTML: String(value) });
182
- case ClientLayoutItemFieldDataType.LONGTEXT:
183
- return h("pre", { class: "mrd-layout-section__pre" }, String(value));
184
- case ClientLayoutItemFieldDataType.JSON:
185
- return h("pre", { class: "mrd-layout-section__pre", innerHTML: CellRenderer.formatJson(value) });
186
- case ClientLayoutItemFieldDataType.FILE: {
187
- const v = value;
188
- const fileName = (_e = v === null || v === void 0 ? void 0 : v.fileName) !== null && _e !== void 0 ? _e : String(value);
189
- const href = (_f = v === null || v === void 0 ? void 0 : v.href) !== null && _f !== void 0 ? _f : '';
190
- return (h("button", { class: "mrd-layout-section__download-link", onClick: () => href && this.mrdDownload.emit({ href, fileName }) }, h("svg", { class: "mrd-layout-section__file-icon", viewBox: "0 0 24 24", "aria-hidden": "true" }, h("path", { fill: "currentColor", d: "M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13zm-3 8l-3-3 1.41-1.41L10 14.17l4.59-4.58L16 11l-6 6z" })), t('download', this.locale)));
191
- }
192
- case ClientLayoutItemFieldDataType.IMAGE: {
193
- const v = value;
194
- const href = (_g = v === null || v === void 0 ? void 0 : v.href) !== null && _g !== void 0 ? _g : '';
195
- const fileName = (_h = v === null || v === void 0 ? void 0 : v.fileName) !== null && _h !== void 0 ? _h : '';
196
- const previewUrl = this.imagePreviews[item.name];
197
- if (previewUrl) {
198
- return (h("button", { class: "mrd-layout-section__image-thumb-btn", onClick: () => { this.imagePreviewUrl = previewUrl; }, title: fileName || undefined }, h("img", { class: "mrd-layout-section__image-thumb", src: previewUrl, alt: fileName })));
199
- }
200
- return (h("button", { class: "mrd-layout-section__download-link", onClick: () => href && this.mrdDownload.emit({ href, fileName }) }, h("svg", { class: "mrd-layout-section__file-icon", viewBox: "0 0 24 24", "aria-hidden": "true" }, h("path", { fill: "currentColor", d: "M14 2H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V8l-6-6zm-1 7V3.5L18.5 9H13zm-3 8l-3-3 1.41-1.41L10 14.17l4.59-4.58L16 11l-6 6z" })), fileName || href));
201
- }
202
- case ClientLayoutItemFieldDataType.BOOLEAN:
203
- return (h("span", { class: `mrd-layout-section__boolean mrd-layout-section__boolean--${value ? 'true' : 'false'}` }, value ? t('yes', this.locale) : t('no', this.locale)));
204
- case ClientLayoutItemFieldDataType.LIST: {
205
- const listItem = ((_j = item.listItems) !== null && _j !== void 0 ? _j : []).find(li => li.key === String(value));
206
- const label = (_k = listItem === null || listItem === void 0 ? void 0 : listItem.label) !== null && _k !== void 0 ? _k : String(value);
207
- const color = listItem === null || listItem === void 0 ? void 0 : listItem.color;
208
- const bg = listItem === null || listItem === void 0 ? void 0 : listItem.backgroundColor;
209
- if (color && bg) {
210
- return (h("span", { class: "mrd-layout-section__badge", style: { color, backgroundColor: bg } }, label));
211
- }
212
- if (color) {
213
- return (h("span", { class: "mrd-layout-section__badge-dot-row" }, h("span", { class: "mrd-layout-section__badge-dot", style: { backgroundColor: color } }), label));
214
- }
215
- return label;
216
- }
217
- case ClientLayoutItemFieldDataType.SECRET:
218
- return value ? h("span", { class: "mrd-layout-section__secret-masked" }, '••••••••') : null;
219
- default: {
220
- const text = CellRenderer.renderValue(dt, value, (_l = item.listItems) !== null && _l !== void 0 ? _l : [], this.locale);
221
- return text || null;
222
- }
223
- }
224
- }
225
- renderFieldValue(item, rawValue) {
226
- if (rawValue == null || rawValue === '')
227
- return null;
228
- if (item.multiple && Array.isArray(rawValue)) {
229
- const rendered = rawValue.map(v => this.renderSingleFieldValue(item, v));
230
- if (rendered.every(r => typeof r === 'string' || r == null)) {
231
- return rendered.filter(Boolean).join(', ') || null;
232
- }
233
- return (h("span", null, rendered.map((r, i) => (h("span", { key: String(i) }, r, i < rendered.length - 1 ? ', ' : '')))));
234
- }
235
- return this.renderSingleFieldValue(item, rawValue);
236
- }
237
- renderHistoryBadge(item, raw) {
238
- var _a, _b, _c;
239
- const hist = (_a = item.historyEnabled) !== null && _a !== void 0 ? _a : (_b = item.field) === null || _b === void 0 ? void 0 : _b.historyEnabled;
240
- if (!hist || !item.name)
241
- return null;
242
- const history = (_c = raw === null || raw === void 0 ? void 0 : raw.history) !== null && _c !== void 0 ? _c : [];
243
- if (!history.length)
244
- return null;
245
- const sorted = [...history].sort((a, b) => b.until.localeCompare(a.until));
246
- const isOpen = this.openHistoryField === item.name;
247
- const { locale } = this;
248
- return (h("span", { class: "mrd-layout-section__history-wrap" }, h("button", { type: "button", class: "mrd-layout-section__history-btn", title: t('history_badge_tooltip', locale), "aria-label": t('history_badge_tooltip', locale), onClick: (e) => {
249
- e.stopPropagation();
250
- this.openHistoryField = isOpen ? null : item.name;
251
- } }, h("svg", { class: "mrd-layout-section__history-icon", viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true" }, h("path", { "fill-rule": "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm.75-13a.75.75 0 00-1.5 0v5c0 .207.085.394.22.53l2.5 2.5a.75.75 0 101.06-1.06L10.75 9.69V5z", "clip-rule": "evenodd" }))), isOpen && (h("div", { class: "mrd-layout-section__history-popover", role: "listbox" }, sorted.map((entry, i) => (h("div", { key: String(i), class: "mrd-layout-section__history-entry" }, entry.value, " (", t('history_until', locale), " ", formatDate(entry.until, locale), ")")))))));
154
+ fieldCtx() {
155
+ return {
156
+ locale: this.locale,
157
+ data: this.data,
158
+ imagePreviews: this.imagePreviews,
159
+ openHistoryField: this.openHistoryField,
160
+ on: {
161
+ download: detail => this.mrdDownload.emit(detail),
162
+ openImage: url => { this.imagePreviewUrl = url; },
163
+ toggleHistory: fieldName => { this.openHistoryField = fieldName; },
164
+ },
165
+ };
252
166
  }
253
167
  renderField(item) {
254
- var _a, _b;
255
- if (!item.name)
256
- return null;
257
- const raw = this.data[item.name];
258
- const hist = (_a = item.historyEnabled) !== null && _a !== void 0 ? _a : (_b = item.field) === null || _b === void 0 ? void 0 : _b.historyEnabled;
259
- const rawValue = hist && raw !== null && typeof raw === 'object' && 'current' in raw
260
- ? raw.current
261
- : raw;
262
- const renderedValue = this.renderFieldValue(item, rawValue);
263
- if (item.header) {
264
- return (h("h1", { class: "mrd-layout-section__field-header", key: item.name }, typeof renderedValue === 'string' ? renderedValue : rawValue != null ? String(rawValue) : item.label));
265
- }
266
- if (renderedValue == null)
267
- return null;
268
- const isBlock = item.dataType === ClientLayoutItemFieldDataType.TEXTBLOCK
269
- || item.dataType === ClientLayoutItemFieldDataType.LONGTEXT
270
- || item.dataType === ClientLayoutItemFieldDataType.JSON;
271
- return (h("div", { class: `mrd-layout-section__field${isBlock ? ' mrd-layout-section__field--block' : ''}`, key: item.name }, h("span", { class: "mrd-layout-section__field-label" }, item.label), h("span", { class: "mrd-layout-section__field-value" }, renderedValue, this.renderHistoryBadge(item, raw))));
168
+ return renderField(this.fieldCtx(), item);
272
169
  }
273
170
  renderRelation(item) {
274
171
  var _a, _b, _c;
@@ -301,7 +198,7 @@ export class MrdLayoutSection {
301
198
  }
302
199
  renderRelatedView(item) {
303
200
  var _a, _b, _c, _d, _e, _f, _g, _h;
304
- const key = this.viewKeyFor(item);
201
+ const key = viewKeyFor(item);
305
202
  if (!key)
306
203
  return null;
307
204
  if (!item.view)
@@ -316,22 +213,11 @@ export class MrdLayoutSection {
316
213
  // Canonical parent href for single-container seeding: use the RELATED_VIEW's
317
214
  // fromClass (base class) rather than the route class, so polymorphic subtypes
318
215
  // resolve to the same container the documents actually reference.
319
- const containerHref = this.buildContainerHref(item, selfHref, parentId);
216
+ const containerHref = buildContainerHref(item, selfHref, parentId);
320
217
  return (h("div", { class: "mrd-layout-section__related-view", key: `view-${key}` }, showTitle && item.label && h("h3", { class: "mrd-layout-section__related-view-title" }, item.label), docArchetype
321
218
  ? this.renderDocumentContainer(item, key, parentId, docArchetype, containerHref)
322
219
  : this.renderTable(item, key, parentId)));
323
220
  }
324
- /** Build the canonical parent href `/{base}/{tenant}/{fromClass}/{parentId}` from
325
- * the object's self href. Empty unless it is a RELATED_VIEW with a fromClass. */
326
- buildContainerHref(item, selfHref, parentId) {
327
- if (item.type !== ClientLayoutItemType.RELATED_VIEW || !item.fromClass || !parentId)
328
- return '';
329
- const segs = selfHref.split('/').filter(Boolean);
330
- if (segs.length < 2)
331
- return '';
332
- const [base, tenant] = segs;
333
- return `/${base}/${tenant}/${item.fromClass}/${parentId}`;
334
- }
335
221
  /** Document collection view: owns the view-switch + collection actions and
336
222
  * swaps between the folder tree and the flat table. Events are re-emitted to
337
223
  * the host with the view key, exactly as the raw list/table events were. */
@@ -432,7 +318,7 @@ export class MrdLayoutSection {
432
318
  }
433
319
  render() {
434
320
  const docArchetype = resolveArchetype(this.archetypes, ARCHETYPE_DOCUMENT);
435
- return (h(Host, { key: '231f5c3e282375b5850291611645fe3c904831bb' }, h("div", { key: '314e39ec3aa1eabeb1a98f6e6d63fcf07e13ccec', class: "mrd-layout-section" }, docArchetype
321
+ return (h(Host, { key: '5d778188356a25ea13d45745dc5ed573ab2b2ef0' }, h("div", { key: '0b673a4bcf8b36cd21662bb8a3506cc3f30edb04', class: "mrd-layout-section" }, docArchetype
436
322
  ? this.renderDocumentObject(docArchetype)
437
323
  : this.items.map(item => this.renderItem(item))), this.renderImageModal()));
438
324
  }
@@ -459,7 +345,7 @@ export class MrdLayoutSection {
459
345
  "references": {
460
346
  "ClientLayoutItem": {
461
347
  "location": "import",
462
- "path": "../../types/client-layout",
348
+ "path": "../../../types/client-layout",
463
349
  "id": "src/types/client-layout.ts::ClientLayoutItem",
464
350
  "referenceLocation": "ClientLayoutItem"
465
351
  }
@@ -511,7 +397,7 @@ export class MrdLayoutSection {
511
397
  },
512
398
  "ClientViewMetadata": {
513
399
  "location": "import",
514
- "path": "../../types/client-layout",
400
+ "path": "../../../types/client-layout",
515
401
  "id": "src/types/client-layout.ts::ClientViewMetadata",
516
402
  "referenceLocation": "ClientViewMetadata"
517
403
  }
@@ -579,7 +465,7 @@ export class MrdLayoutSection {
579
465
  "references": {
580
466
  "ClientArchetype": {
581
467
  "location": "import",
582
- "path": "../../types/client-layout",
468
+ "path": "../../../types/client-layout",
583
469
  "id": "src/types/client-layout.ts::ClientArchetype",
584
470
  "referenceLocation": "ClientArchetype"
585
471
  }
@@ -623,7 +509,7 @@ export class MrdLayoutSection {
623
509
  "references": {
624
510
  "ClientLayoutItemNavigate": {
625
511
  "location": "import",
626
- "path": "../../types/client-layout",
512
+ "path": "../../../types/client-layout",
627
513
  "id": "src/types/client-layout.ts::ClientLayoutItemNavigate",
628
514
  "referenceLocation": "ClientLayoutItemNavigate"
629
515
  }
@@ -817,7 +703,7 @@ export class MrdLayoutSection {
817
703
  },
818
704
  "RelationSearchResult": {
819
705
  "location": "import",
820
- "path": "../../types/client-layout",
706
+ "path": "../../../types/client-layout",
821
707
  "id": "src/types/client-layout.ts::RelationSearchResult",
822
708
  "referenceLocation": "RelationSearchResult"
823
709
  }
@@ -861,6 +747,14 @@ export class MrdLayoutSection {
861
747
  "Promise": {
862
748
  "location": "global",
863
749
  "id": "global::Promise"
750
+ },
751
+ "HTMLMrdDocumentListElement": {
752
+ "location": "global",
753
+ "id": "global::HTMLMrdDocumentListElement"
754
+ },
755
+ "HTMLMrdTableElement": {
756
+ "location": "global",
757
+ "id": "global::HTMLMrdTableElement"
864
758
  }
865
759
  },
866
760
  "return": "Promise<void>"
@@ -886,6 +780,10 @@ export class MrdLayoutSection {
886
780
  "Promise": {
887
781
  "location": "global",
888
782
  "id": "global::Promise"
783
+ },
784
+ "HTMLMrdTableElement": {
785
+ "location": "global",
786
+ "id": "global::HTMLMrdTableElement"
889
787
  }
890
788
  },
891
789
  "return": "Promise<void>"
@@ -918,9 +816,13 @@ export class MrdLayoutSection {
918
816
  },
919
817
  "DistinctValue": {
920
818
  "location": "import",
921
- "path": "../mrd-document-list/mrd-document-list",
922
- "id": "src/components/mrd-document-list/mrd-document-list.tsx::DistinctValue",
819
+ "path": "../../documents/mrd-document-list/folder-tree",
820
+ "id": "src/components/documents/mrd-document-list/folder-tree.ts::DistinctValue",
923
821
  "referenceLocation": "DistinctValue"
822
+ },
823
+ "HTMLMrdDocumentListElement": {
824
+ "location": "global",
825
+ "id": "global::HTMLMrdDocumentListElement"
924
826
  }
925
827
  },
926
828
  "return": "Promise<void>"
@@ -946,6 +848,10 @@ export class MrdLayoutSection {
946
848
  "Promise": {
947
849
  "location": "global",
948
850
  "id": "global::Promise"
851
+ },
852
+ "HTMLMrdDocumentListElement": {
853
+ "location": "global",
854
+ "id": "global::HTMLMrdDocumentListElement"
949
855
  }
950
856
  },
951
857
  "return": "Promise<void>"
@@ -971,6 +877,10 @@ export class MrdLayoutSection {
971
877
  "Promise": {
972
878
  "location": "global",
973
879
  "id": "global::Promise"
880
+ },
881
+ "HTMLMrdDocumentListElement": {
882
+ "location": "global",
883
+ "id": "global::HTMLMrdDocumentListElement"
974
884
  }
975
885
  },
976
886
  "return": "Promise<void>"
@@ -1,3 +1,4 @@
1
+ @charset "UTF-8";
1
2
  :host {
2
3
  display: block;
3
4
  width: 100%;
@@ -145,21 +146,19 @@
145
146
  height: 0.75rem;
146
147
  width: 55%;
147
148
  border-radius: var(--mrd-border-radius-sm);
148
- background: linear-gradient(
149
- 90deg,
150
- var(--mrd-color-neutral-200) 25%,
151
- var(--mrd-color-neutral-100) 50%,
152
- var(--mrd-color-neutral-200) 75%
153
- );
149
+ background: linear-gradient(90deg, var(--mrd-color-neutral-200) 25%, var(--mrd-color-neutral-100) 50%, var(--mrd-color-neutral-200) 75%);
154
150
  background-size: 200% 100%;
155
151
  animation: mrd-shimmer 1.4s ease infinite;
156
152
  }
157
153
 
158
154
  @keyframes mrd-shimmer {
159
- 0% { background-position: 200% 0; }
160
- 100% { background-position: -200% 0; }
155
+ 0% {
156
+ background-position: 200% 0;
157
+ }
158
+ 100% {
159
+ background-position: -200% 0;
160
+ }
161
161
  }
162
-
163
162
  /* ── Toolbar ───────────────────────────────────────────────────────────── */
164
163
  .mrd-table__toolbar {
165
164
  display: flex;
@@ -420,7 +419,7 @@
420
419
  background: var(--mrd-color-white);
421
420
  border: 1px solid var(--mrd-border-color);
422
421
  border-radius: var(--mrd-border-radius);
423
- box-shadow: var(--mrd-shadow-md, 0 4px 12px rgba(0,0,0,.12));
422
+ box-shadow: var(--mrd-shadow-md, 0 4px 12px rgba(0, 0, 0, 0.12));
424
423
  z-index: var(--mrd-z-dropdown, 200);
425
424
  font-size: var(--mrd-font-size-sm);
426
425
  }
@@ -523,7 +522,7 @@
523
522
  .mrd-table__filter-input:focus {
524
523
  outline: none;
525
524
  border-color: var(--mrd-color-primary);
526
- box-shadow: 0 0 0 2px rgba(0,0,0,.06);
525
+ box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.06);
527
526
  }
528
527
 
529
528
  .mrd-table__filter-range {
@@ -805,5 +804,4 @@
805
804
  line-height: 1.6;
806
805
  background: none;
807
806
  border: none;
808
- }
809
-
807
+ }