@mmlogic/components 0.4.3 → 0.5.1
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.
- package/dist/cjs/client-layout-RZ3Ix-4a.js +87 -0
- package/dist/cjs/{index-CAzwGt9u.js → index-DzRfoAPz.js} +36 -9
- package/dist/cjs/index.cjs.js +56 -81
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/mosterdcomponents.cjs.js +3 -3
- package/dist/cjs/{mrd-boolean-field_24.cjs.entry.js → mrd-boolean-field_23.cjs.entry.js} +159 -286
- package/dist/collection/collection-manifest.json +1 -2
- package/dist/collection/components/documents/mrd-document-container/mrd-document-container.css +0 -17
- package/dist/collection/components/documents/mrd-document-container/mrd-document-container.js +12 -4
- package/dist/collection/components/documents/mrd-document-list/mrd-document-list.css +9 -43
- package/dist/collection/components/documents/mrd-document-list/mrd-document-list.js +14 -6
- package/dist/collection/components/documents/mrd-document-view/mrd-document-view.css +30 -68
- package/dist/collection/components/documents/mrd-document-view/mrd-document-view.js +49 -90
- package/dist/collection/components/fields/mrd-boolean-field/mrd-boolean-field.css +0 -10
- package/dist/collection/components/fields/mrd-currency-field/mrd-currency-field.css +0 -7
- package/dist/collection/components/fields/mrd-file-field/mrd-file-field.css +0 -11
- package/dist/collection/components/fields/mrd-hyperlink-field/mrd-hyperlink-field.css +0 -3
- package/dist/collection/components/fields/mrd-image-field/mrd-image-field.css +6 -20
- package/dist/collection/components/fields/mrd-list-field/mrd-list-field.css +0 -4
- package/dist/collection/components/fields/mrd-longtext-field/mrd-longtext-field.css +0 -1
- package/dist/collection/components/fields/mrd-relation-field/mrd-relation-field.css +9 -35
- package/dist/collection/components/fields/mrd-textarea-field/mrd-textarea-field.css +0 -9
- package/dist/collection/components/form/mrd-field/mrd-field.css +0 -13
- package/dist/collection/components/form/mrd-form/mrd-form.css +0 -19
- package/dist/collection/components/layout/mrd-layout-section/mrd-layout-section.css +3 -58
- package/dist/collection/components/layout/mrd-layout-section/mrd-layout-section.js +25 -66
- package/dist/collection/components/table/mrd-table/mrd-table.css +38 -185
- package/dist/collection/components/table/mrd-table/mrd-table.js +3 -5
- package/dist/collection/components/table/mrd-table/table-parts.js +2 -5
- package/dist/collection/dev/app.js +76 -40
- package/dist/collection/dev/example-data.js +2 -1
- package/dist/collection/index.js +1 -0
- package/dist/collection/utils/document-attachments.js +20 -0
- package/dist/collection/{components/documents/mrd-file-preview → utils}/file-preview-kind.js +4 -4
- package/dist/collection/utils/i18n.js +0 -32
- package/dist/components/document-attachments.js +1 -0
- package/dist/components/field-helpers.js +1 -1
- package/dist/components/i18n.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/mrd-document-container2.js +1 -1
- package/dist/components/mrd-document-list2.js +1 -1
- package/dist/components/mrd-document-view2.js +1 -1
- package/dist/components/mrd-email-field2.js +1 -1
- package/dist/components/mrd-form.js +1 -1
- package/dist/components/mrd-hyperlink-field2.js +1 -1
- package/dist/components/mrd-image-field2.js +1 -1
- package/dist/components/mrd-layout-section.js +1 -1
- package/dist/components/mrd-number-field2.js +1 -1
- package/dist/components/mrd-relation-field2.js +1 -1
- package/dist/components/mrd-table2.js +1 -1
- package/dist/esm/client-layout-DCOAAH92.js +84 -0
- package/dist/esm/{index-DiSEJMA8.js → index-DiSe6vjv.js} +36 -9
- package/dist/esm/index.js +30 -80
- package/dist/esm/loader.js +3 -3
- package/dist/esm/mosterdcomponents.js +4 -4
- package/dist/esm/{mrd-boolean-field_24.entry.js → mrd-boolean-field_23.entry.js} +69 -195
- package/dist/mosterdcomponents/index.esm.js +1 -1
- package/dist/mosterdcomponents/mosterdcomponents.css +7 -1
- package/dist/mosterdcomponents/mosterdcomponents.esm.js +1 -1
- package/dist/mosterdcomponents/p-DCOAAH92.js +1 -0
- package/dist/mosterdcomponents/p-DiSe6vjv.js +2 -0
- package/dist/mosterdcomponents/p-cdecc698.entry.js +1 -0
- package/dist/types/components/documents/mrd-document-container/mrd-document-container.d.ts +4 -2
- package/dist/types/components/documents/mrd-document-list/mrd-document-list.d.ts +6 -2
- package/dist/types/components/documents/mrd-document-view/mrd-document-view.d.ts +27 -29
- package/dist/types/components/layout/mrd-layout-section/mrd-layout-section.d.ts +12 -15
- package/dist/types/components.d.ts +61 -195
- package/dist/types/index.d.ts +2 -0
- package/dist/types/stencil-public-runtime.d.ts +1 -0
- package/dist/types/types/client-layout.d.ts +10 -3
- package/dist/types/utils/document-attachments.d.ts +8 -0
- package/dist/types/utils/file-preview-kind.d.ts +9 -0
- package/package.json +10 -12
- package/dist/collection/components/documents/mrd-file-preview/mrd-file-preview.css +0 -59
- package/dist/collection/components/documents/mrd-file-preview/mrd-file-preview.js +0 -212
- package/dist/components/mrd-file-preview.d.ts +0 -11
- package/dist/components/mrd-file-preview.js +0 -1
- package/dist/components/mrd-file-preview2.js +0 -1
- package/dist/mosterdcomponents/p-DiSEJMA8.js +0 -2
- package/dist/mosterdcomponents/p-e816d459.entry.js +0 -1
- package/dist/types/components/documents/mrd-file-preview/file-preview-kind.d.ts +0 -9
- package/dist/types/components/documents/mrd-file-preview/mrd-file-preview.d.ts +0 -41
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
4
|
-
var
|
|
3
|
+
var index = require('./index-DzRfoAPz.js');
|
|
4
|
+
var clientLayout = require('./client-layout-RZ3Ix-4a.js');
|
|
5
5
|
|
|
6
6
|
const mrdBooleanFieldCss = () => `.sc-mrd-boolean-field-h{display:block}.mrd-boolean-field.sc-mrd-boolean-field{display:flex;align-items:center;width:100%}.mrd-boolean-field__toggle-label.sc-mrd-boolean-field{display:flex;align-items:center;gap:var(--mrd-space-3);cursor:pointer;user-select:none}.mrd-boolean-field__checkbox.sc-mrd-boolean-field{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.mrd-boolean-field__checkbox.sc-mrd-boolean-field:checked+.mrd-boolean-field__toggle.sc-mrd-boolean-field{background-color:var(--mrd-color-primary)}.mrd-boolean-field__checkbox.sc-mrd-boolean-field:checked+.mrd-boolean-field__toggle.sc-mrd-boolean-field::after{transform:translateX(20px)}.mrd-boolean-field__checkbox.sc-mrd-boolean-field:focus+.mrd-boolean-field__toggle.sc-mrd-boolean-field{box-shadow:var(--mrd-shadow-focus)}.mrd-boolean-field__checkbox.sc-mrd-boolean-field:disabled+.mrd-boolean-field__toggle.sc-mrd-boolean-field{opacity:0.5;cursor:not-allowed}.mrd-boolean-field__toggle.sc-mrd-boolean-field{position:relative;display:inline-block;width:44px;height:24px;background-color:var(--mrd-color-neutral-300);border-radius:var(--mrd-border-radius-full);transition:background-color var(--mrd-transition);flex-shrink:0}.mrd-boolean-field__toggle.sc-mrd-boolean-field::after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;background-color:var(--mrd-color-white);border-radius:50%;transition:transform var(--mrd-transition);box-shadow:var(--mrd-shadow-sm)}.mrd-boolean-field__text.sc-mrd-boolean-field{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-color-neutral-800)}.mrd-boolean-field__text--required.sc-mrd-boolean-field::after{content:" *";color:var(--mrd-color-danger)}`;
|
|
7
7
|
|
|
@@ -181,10 +181,6 @@ const translations = {
|
|
|
181
181
|
folder_no_slash: "Een foldernaam mag geen '/' bevatten",
|
|
182
182
|
folder_duplicate: 'Er bestaat al een folder met deze naam',
|
|
183
183
|
doc_empty_drop: 'Nog geen documenten — sleep bestanden hierheen',
|
|
184
|
-
// mrd-file-preview
|
|
185
|
-
preview_unsupported: 'Geen voorbeeld beschikbaar voor dit bestandstype',
|
|
186
|
-
preview_error: 'Voorbeeld laden mislukt',
|
|
187
|
-
retry: 'Opnieuw proberen',
|
|
188
184
|
},
|
|
189
185
|
en: {
|
|
190
186
|
required: 'This field is required',
|
|
@@ -259,10 +255,6 @@ const translations = {
|
|
|
259
255
|
folder_no_slash: "A folder name cannot contain '/'",
|
|
260
256
|
folder_duplicate: 'A folder with this name already exists',
|
|
261
257
|
doc_empty_drop: 'No documents yet — drop files here',
|
|
262
|
-
// mrd-file-preview
|
|
263
|
-
preview_unsupported: 'No preview available for this file type',
|
|
264
|
-
preview_error: 'Failed to load preview',
|
|
265
|
-
retry: 'Retry',
|
|
266
258
|
},
|
|
267
259
|
ar: {
|
|
268
260
|
required: 'هذا الحقل مطلوب',
|
|
@@ -331,10 +323,6 @@ const translations = {
|
|
|
331
323
|
history_until: 'حتى',
|
|
332
324
|
history_badge_tooltip: 'القيم السابقة',
|
|
333
325
|
hyperlink_name: 'نص الرابط (اختياري)',
|
|
334
|
-
// mrd-file-preview
|
|
335
|
-
preview_unsupported: 'لا تتوفر معاينة لهذا النوع من الملفات',
|
|
336
|
-
preview_error: 'فشل تحميل المعاينة',
|
|
337
|
-
retry: 'إعادة المحاولة',
|
|
338
326
|
},
|
|
339
327
|
fr: {
|
|
340
328
|
required: 'Ce champ est obligatoire',
|
|
@@ -403,10 +391,6 @@ const translations = {
|
|
|
403
391
|
history_until: "jusqu'au",
|
|
404
392
|
history_badge_tooltip: 'Valeurs précédentes',
|
|
405
393
|
hyperlink_name: 'Texte du lien (optionnel)',
|
|
406
|
-
// mrd-file-preview
|
|
407
|
-
preview_unsupported: "Aucun aperçu disponible pour ce type de fichier",
|
|
408
|
-
preview_error: "Échec du chargement de l'aperçu",
|
|
409
|
-
retry: 'Réessayer',
|
|
410
394
|
},
|
|
411
395
|
de: {
|
|
412
396
|
required: 'Dieses Feld ist erforderlich',
|
|
@@ -475,10 +459,6 @@ const translations = {
|
|
|
475
459
|
history_until: 'bis',
|
|
476
460
|
history_badge_tooltip: 'Vorherige Werte',
|
|
477
461
|
hyperlink_name: 'Linktext (optional)',
|
|
478
|
-
// mrd-file-preview
|
|
479
|
-
preview_unsupported: 'Keine Vorschau für diesen Dateityp verfügbar',
|
|
480
|
-
preview_error: 'Vorschau konnte nicht geladen werden',
|
|
481
|
-
retry: 'Erneut versuchen',
|
|
482
462
|
},
|
|
483
463
|
es: {
|
|
484
464
|
required: 'Este campo es obligatorio',
|
|
@@ -547,10 +527,6 @@ const translations = {
|
|
|
547
527
|
history_until: 'hasta',
|
|
548
528
|
history_badge_tooltip: 'Valores anteriores',
|
|
549
529
|
hyperlink_name: 'Texto del enlace (opcional)',
|
|
550
|
-
// mrd-file-preview
|
|
551
|
-
preview_unsupported: 'Vista previa no disponible para este tipo de archivo',
|
|
552
|
-
preview_error: 'Error al cargar la vista previa',
|
|
553
|
-
retry: 'Reintentar',
|
|
554
530
|
},
|
|
555
531
|
it: {
|
|
556
532
|
required: 'Questo campo è obbligatorio',
|
|
@@ -619,10 +595,6 @@ const translations = {
|
|
|
619
595
|
history_until: 'fino a',
|
|
620
596
|
history_badge_tooltip: 'Valori precedenti',
|
|
621
597
|
hyperlink_name: 'Testo del collegamento (opzionale)',
|
|
622
|
-
// mrd-file-preview
|
|
623
|
-
preview_unsupported: 'Nessuna anteprima disponibile per questo tipo di file',
|
|
624
|
-
preview_error: "Impossibile caricare l'anteprima",
|
|
625
|
-
retry: 'Riprova',
|
|
626
598
|
},
|
|
627
599
|
uk: {
|
|
628
600
|
required: "Це поле обов'язкове",
|
|
@@ -691,10 +663,6 @@ const translations = {
|
|
|
691
663
|
history_until: 'до',
|
|
692
664
|
history_badge_tooltip: 'Попередні значення',
|
|
693
665
|
hyperlink_name: "Текст посилання (необов'язково)",
|
|
694
|
-
// mrd-file-preview
|
|
695
|
-
preview_unsupported: 'Попередній перегляд недоступний для цього типу файлу',
|
|
696
|
-
preview_error: 'Не вдалося завантажити попередній перегляд',
|
|
697
|
-
retry: 'Повторити',
|
|
698
666
|
},
|
|
699
667
|
};
|
|
700
668
|
function t(key, locale) {
|
|
@@ -745,10 +713,10 @@ function validateNumber(value, dataType) {
|
|
|
745
713
|
const num = Number(value);
|
|
746
714
|
if (isNaN(num))
|
|
747
715
|
return false;
|
|
748
|
-
if (dataType ===
|
|
716
|
+
if (dataType === clientLayout.ClientLayoutItemFieldDataType.INTEGER) {
|
|
749
717
|
return Number.isInteger(num);
|
|
750
718
|
}
|
|
751
|
-
if (dataType ===
|
|
719
|
+
if (dataType === clientLayout.ClientLayoutItemFieldDataType.PERCENTAGE) {
|
|
752
720
|
return num >= 0 && num <= 100;
|
|
753
721
|
}
|
|
754
722
|
return true;
|
|
@@ -912,6 +880,27 @@ const MrdDatetimeField = class {
|
|
|
912
880
|
};
|
|
913
881
|
MrdDatetimeField.style = mrdDatetimeFieldCss();
|
|
914
882
|
|
|
883
|
+
/**
|
|
884
|
+
* Extract the `commons.document` archetype's file slot from a data record as a
|
|
885
|
+
* `DocumentAttachment[]` — empty when the slot is unmapped or has no value.
|
|
886
|
+
* Shared by mrd-document-view (on load/data-change) and mrd-document-container
|
|
887
|
+
* (row-click prefetch on mrdNavigate), so both report the exact same shape.
|
|
888
|
+
*/
|
|
889
|
+
function attachmentsFromRecord(archetype, record) {
|
|
890
|
+
var _a, _b, _c, _d;
|
|
891
|
+
const field = (_a = archetype === null || archetype === void 0 ? void 0 : archetype.slots) === null || _a === void 0 ? void 0 : _a['file'];
|
|
892
|
+
if (!field)
|
|
893
|
+
return [];
|
|
894
|
+
const fileRaw = record === null || record === void 0 ? void 0 : record[field];
|
|
895
|
+
if (!fileRaw)
|
|
896
|
+
return [];
|
|
897
|
+
return [{
|
|
898
|
+
href: fileRaw.href,
|
|
899
|
+
fileName: (_b = fileRaw.fileName) !== null && _b !== void 0 ? _b : String(fileRaw),
|
|
900
|
+
mimeType: (_d = (_c = fileRaw.mimeType) !== null && _c !== void 0 ? _c : fileRaw.contentType) !== null && _d !== void 0 ? _d : undefined,
|
|
901
|
+
}];
|
|
902
|
+
}
|
|
903
|
+
|
|
915
904
|
const mrdDocumentContainerCss = () => `.sc-mrd-document-container-h{display:block}.mrd-document-container__toolbar.sc-mrd-document-container{display:flex;align-items:center;justify-content:flex-end;gap:var(--mrd-space-2);padding:var(--mrd-space-2) 0;border-bottom:1px solid var(--mrd-color-neutral-100)}.mrd-document-container__body--tree.sc-mrd-document-container{border:1px solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);overflow:hidden}.mrd-document-container__action.sc-mrd-document-container{display:inline-flex;align-items:center;gap:var(--mrd-space-2);height:1.625rem;padding:0 var(--mrd-space-3);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-700);background:var(--mrd-color-white);border:1px solid var(--mrd-color-neutral-200);border-radius:var(--mrd-border-radius);cursor:pointer;transition:background var(--mrd-transition-fast), border-color var(--mrd-transition-fast)}.mrd-document-container__action.sc-mrd-document-container svg.sc-mrd-document-container{width:1rem;height:1rem;color:var(--mrd-color-folder)}.mrd-document-container__action.sc-mrd-document-container:hover:not(:disabled){background:var(--mrd-color-neutral-50);border-color:var(--mrd-color-neutral-300)}.mrd-document-container__action.sc-mrd-document-container:disabled{opacity:0.5;cursor:not-allowed}.mrd-document-container__seg.sc-mrd-document-container{display:inline-flex;gap:2px;padding:2px;background:var(--mrd-color-neutral-100);border-radius:var(--mrd-border-radius)}.mrd-document-container__seg-btn.sc-mrd-document-container{width:1.875rem;height:1.625rem;display:grid;place-items:center;border:none;background:none;border-radius:var(--mrd-border-radius-sm);color:var(--mrd-color-neutral-500);cursor:pointer;transition:color var(--mrd-transition-fast), background var(--mrd-transition-fast)}.mrd-document-container__seg-btn.sc-mrd-document-container:hover{color:var(--mrd-color-neutral-800)}.mrd-document-container__seg-btn[aria-pressed=true].sc-mrd-document-container{background:var(--mrd-color-white);color:var(--mrd-color-primary-dark);box-shadow:var(--mrd-shadow-sm)}.mrd-document-container__seg-btn.sc-mrd-document-container svg.sc-mrd-document-container{width:1rem;height:1rem}`;
|
|
916
905
|
|
|
917
906
|
const MrdDocumentContainer = class {
|
|
@@ -983,7 +972,7 @@ const MrdDocumentContainer = class {
|
|
|
983
972
|
this.mrdLoadPage.emit(e.detail);
|
|
984
973
|
}, onMrdNavigate: (e) => {
|
|
985
974
|
e.stopPropagation();
|
|
986
|
-
this.mrdNavigate.emit(Object.assign(Object.assign({}, e.detail), { navigateBehaviour:
|
|
975
|
+
this.mrdNavigate.emit(Object.assign(Object.assign({}, e.detail), { navigateBehaviour: clientLayout.ClientLayoutNavigateBehaviour.OVERLAY_PAGE }));
|
|
987
976
|
}, onMrdCanCreate: (e) => {
|
|
988
977
|
e.stopPropagation();
|
|
989
978
|
this.canCreate = e.detail;
|
|
@@ -1012,8 +1001,9 @@ const MrdDocumentContainer = class {
|
|
|
1012
1001
|
this.mrdNavigate.emit({
|
|
1013
1002
|
href: (_b = (_a = row === null || row === void 0 ? void 0 : row._links) === null || _a === void 0 ? void 0 : _a.self) === null || _b === void 0 ? void 0 : _b.href,
|
|
1014
1003
|
label: (_c = row === null || row === void 0 ? void 0 : row.name) !== null && _c !== void 0 ? _c : '',
|
|
1015
|
-
navigateBehaviour:
|
|
1004
|
+
navigateBehaviour: clientLayout.ClientLayoutNavigateBehaviour.OVERLAY_PAGE,
|
|
1016
1005
|
listContext,
|
|
1006
|
+
attachments: attachmentsFromRecord(this.archetype, row),
|
|
1017
1007
|
});
|
|
1018
1008
|
}, onMrdAction: (e) => {
|
|
1019
1009
|
e.stopPropagation();
|
|
@@ -1022,7 +1012,7 @@ const MrdDocumentContainer = class {
|
|
|
1022
1012
|
}
|
|
1023
1013
|
render() {
|
|
1024
1014
|
const treeMode = this.mode === 'tree';
|
|
1025
|
-
return (index.h(index.Host, { key: '
|
|
1015
|
+
return (index.h(index.Host, { key: '4d21f26c956773c63cbf5118394c6afa29d6014d' }, this.renderToolbar(), index.h("div", { key: 'bc070236bf9a7d0eba57aa2cd70fa3ae36cbf5f1', class: {
|
|
1026
1016
|
'mrd-document-container__body': true,
|
|
1027
1017
|
'mrd-document-container__body--tree': treeMode,
|
|
1028
1018
|
}, style: treeMode ? { height: `${this.height}px`, overflowY: 'auto' } : {} }, treeMode ? this.renderTree() : this.renderList())));
|
|
@@ -1266,7 +1256,7 @@ function renderContainerNode(ctx, node, depth) {
|
|
|
1266
1256
|
: renderNodeChildren(ctx, node, node, depth + 1)))));
|
|
1267
1257
|
}
|
|
1268
1258
|
|
|
1269
|
-
const mrdDocumentListCss = () =>
|
|
1259
|
+
const mrdDocumentListCss = () => `.sc-mrd-document-list-h{display:block;height:100%}.mrd-document-list.sc-mrd-document-list{padding:var(--mrd-space-2) 0;min-height:100%;box-sizing:border-box}.mrd-document-list--drop-active.sc-mrd-document-list{outline:2px dashed var(--mrd-color-primary);outline-offset:-4px;background:var(--mrd-color-primary-50, rgba(22, 163, 74, 0.06))}.mrd-document-list__row.sc-mrd-document-list{display:flex;align-items:center;gap:var(--mrd-space-1);height:2.125rem;padding:0 var(--mrd-space-4) 0 var(--mrd-space-2);cursor:pointer;user-select:none;font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-800)}.mrd-document-list__row.sc-mrd-document-list:hover{background:var(--mrd-color-neutral-50)}.mrd-document-list__row--selected.sc-mrd-document-list{background:var(--mrd-color-primary-50, rgba(22, 163, 74, 0.1))}.mrd-document-list__row--selected.sc-mrd-document-list:hover{background:var(--mrd-color-primary-50, rgba(22, 163, 74, 0.1))}.mrd-document-list__row--pending.sc-mrd-document-list .mrd-document-list__label.sc-mrd-document-list{font-style:italic;color:var(--mrd-color-neutral-500)}.mrd-document-list__row--doc.sc-mrd-document-list{cursor:grab}.mrd-document-list__row--doc.sc-mrd-document-list:active{cursor:grabbing}.mrd-document-list__row--drop.sc-mrd-document-list{background:var(--mrd-color-primary-50, rgba(22, 163, 74, 0.1));box-shadow:inset 0 0 0 1px var(--mrd-color-primary)}.mrd-document-list__row--drop.sc-mrd-document-list:hover{background:var(--mrd-color-primary-50, rgba(22, 163, 74, 0.1))}.mrd-document-list__row--edit.sc-mrd-document-list{cursor:default}.mrd-document-list__row--dossier.sc-mrd-document-list .mrd-document-list__label.sc-mrd-document-list{font-weight:var(--mrd-font-weight-semibold)}.mrd-document-list__name-input.sc-mrd-document-list{flex:1;min-width:0;height:1.625rem;padding:0 var(--mrd-space-2);font-size:var(--mrd-font-size-sm);font-family:inherit;color:var(--mrd-color-neutral-800);border:1px solid var(--mrd-color-primary);border-radius:var(--mrd-border-radius);outline:none;box-shadow:var(--mrd-shadow-focus)}.mrd-document-list__error.sc-mrd-document-list{font-size:var(--mrd-font-size-xs);color:var(--mrd-color-danger, #dc2626);padding-top:0.125rem;padding-bottom:0.25rem}.mrd-document-list__indent.sc-mrd-document-list{flex:none}.mrd-document-list__chev.sc-mrd-document-list{width:0.875rem;height:1rem;flex:none;display:grid;place-items:center;color:var(--mrd-color-neutral-400);transition:transform var(--mrd-transition-fast)}.mrd-document-list__chev.sc-mrd-document-list svg.sc-mrd-document-list{width:0.6875rem;height:0.6875rem}.mrd-document-list__chev--open.sc-mrd-document-list{transform:rotate(90deg)}.mrd-document-list__chev--leaf.sc-mrd-document-list{visibility:hidden}.mrd-document-list__icon.sc-mrd-document-list{width:1.0625rem;height:1.0625rem;flex:none}.mrd-document-list__icon--dossier.sc-mrd-document-list{color:var(--mrd-color-primary)}.mrd-document-list__icon--folder.sc-mrd-document-list{color:var(--mrd-color-folder)}.mrd-document-list__icon--doc.sc-mrd-document-list{color:var(--mrd-color-neutral-400)}.mrd-document-list__label.sc-mrd-document-list{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mrd-document-list__count.sc-mrd-document-list{flex:none;font-family:var(--mrd-font-family-mono);font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500);background:var(--mrd-color-neutral-100);border-radius:var(--mrd-border-radius-full);padding:0.0625rem 0.5rem}.mrd-document-list__date.sc-mrd-document-list{flex:none;font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-400);font-variant-numeric:tabular-nums}.mrd-document-list__loading.sc-mrd-document-list{display:flex;align-items:center;gap:var(--mrd-space-1);height:1.875rem;padding:0 var(--mrd-space-4) 0 var(--mrd-space-2);font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-400)}.mrd-document-list__spinner.sc-mrd-document-list{width:0.75rem;height:0.75rem;border:2px solid var(--mrd-color-neutral-300);border-top-color:var(--mrd-color-primary);border-radius:50%;animation:mrd-document-list-spin 0.7s linear infinite}.mrd-document-list__empty.sc-mrd-document-list{padding:var(--mrd-space-8) var(--mrd-space-4);text-align:center;color:var(--mrd-color-neutral-400);font-size:var(--mrd-font-size-sm)}@keyframes mrd-document-list-spin{to{transform:rotate(360deg)}}`;
|
|
1270
1260
|
|
|
1271
1261
|
const MrdDocumentList = class {
|
|
1272
1262
|
constructor(hostRef) {
|
|
@@ -1465,7 +1455,7 @@ const MrdDocumentList = class {
|
|
|
1465
1455
|
* so it works even with zero documents. */
|
|
1466
1456
|
isSeededSingleContainer() {
|
|
1467
1457
|
var _a, _b;
|
|
1468
|
-
return (((_a = this.item) === null || _a === void 0 ? void 0 : _a.type) ===
|
|
1458
|
+
return (((_a = this.item) === null || _a === void 0 ? void 0 : _a.type) === clientLayout.ClientLayoutItemType.RELATED_VIEW &&
|
|
1469
1459
|
!!((_b = this.item) === null || _b === void 0 ? void 0 : _b.inverseRelation) &&
|
|
1470
1460
|
this.item.inverseRelation === this.containerField &&
|
|
1471
1461
|
!!this.containerHref);
|
|
@@ -1522,7 +1512,7 @@ const MrdDocumentList = class {
|
|
|
1522
1512
|
var _a, _b;
|
|
1523
1513
|
const it = this.item;
|
|
1524
1514
|
return buildListPath({
|
|
1525
|
-
isRelatedView: (it === null || it === void 0 ? void 0 : it.type) ===
|
|
1515
|
+
isRelatedView: (it === null || it === void 0 ? void 0 : it.type) === clientLayout.ClientLayoutItemType.RELATED_VIEW,
|
|
1526
1516
|
fromClass: it === null || it === void 0 ? void 0 : it.fromClass,
|
|
1527
1517
|
parentId: this.parentId,
|
|
1528
1518
|
dataClass: (_b = (_a = it === null || it === void 0 ? void 0 : it.dataClass) !== null && _a !== void 0 ? _a : it === null || it === void 0 ? void 0 : it.relatedClass) !== null && _b !== void 0 ? _b : '',
|
|
@@ -1536,7 +1526,7 @@ const MrdDocumentList = class {
|
|
|
1536
1526
|
var _a, _b, _c;
|
|
1537
1527
|
const it = this.item;
|
|
1538
1528
|
return buildListPath({
|
|
1539
|
-
isRelatedView: (it === null || it === void 0 ? void 0 : it.type) ===
|
|
1529
|
+
isRelatedView: (it === null || it === void 0 ? void 0 : it.type) === clientLayout.ClientLayoutItemType.RELATED_VIEW,
|
|
1540
1530
|
fromClass: it === null || it === void 0 ? void 0 : it.fromClass,
|
|
1541
1531
|
parentId: this.parentId,
|
|
1542
1532
|
dataClass: (_c = (_b = (_a = it === null || it === void 0 ? void 0 : it.filterClass) !== null && _a !== void 0 ? _a : it === null || it === void 0 ? void 0 : it.dataClass) !== null && _b !== void 0 ? _b : it === null || it === void 0 ? void 0 : it.relatedClass) !== null && _c !== void 0 ? _c : '',
|
|
@@ -1869,7 +1859,8 @@ const MrdDocumentList = class {
|
|
|
1869
1859
|
const listContext = index >= 0
|
|
1870
1860
|
? { index, sort: '', path: this.buildDataPath(), qs: this.buildDocQs(container, node) }
|
|
1871
1861
|
: undefined;
|
|
1872
|
-
this.
|
|
1862
|
+
const attachments = attachmentsFromRecord(this.archetype, doc);
|
|
1863
|
+
this.mrdNavigate.emit({ href, label, listContext, attachments });
|
|
1873
1864
|
}
|
|
1874
1865
|
// ── Render ───────────────────────────────────────────────────────────────
|
|
1875
1866
|
treeCtx() {
|
|
@@ -1903,7 +1894,7 @@ const MrdDocumentList = class {
|
|
|
1903
1894
|
body = renderLoadingRow(ctx, 0);
|
|
1904
1895
|
}
|
|
1905
1896
|
else if (this.containers.length === 0) {
|
|
1906
|
-
body = index.h("div", { key: '
|
|
1897
|
+
body = index.h("div", { key: '308725d741deb384082bd514edd34593f7d662a2', class: "mrd-document-list__empty" }, t('no_results', this.locale));
|
|
1907
1898
|
}
|
|
1908
1899
|
else if (this.singleContainer) {
|
|
1909
1900
|
// Dossier context: render the single container's folder tree at the root.
|
|
@@ -1921,7 +1912,7 @@ const MrdDocumentList = class {
|
|
|
1921
1912
|
else {
|
|
1922
1913
|
body = this.containers.map(c => renderContainerNode(ctx, c, 0));
|
|
1923
1914
|
}
|
|
1924
|
-
return (index.h(index.Host, { key: '
|
|
1915
|
+
return (index.h(index.Host, { key: '9d5fde912999b57a0f0b737980d59e94f385f11d' }, index.h("div", { key: '17191411c2e626995f08b66bad755342fe3b13ae', class: 'mrd-document-list' + (this.rootDropActive ? ' mrd-document-list--drop-active' : ''), onDragOver: this.onRootDragOver, onDragLeave: this.onRootDragLeave, onDrop: this.onRootDrop }, body)));
|
|
1925
1916
|
}
|
|
1926
1917
|
get el() { return index.getElement(this); }
|
|
1927
1918
|
};
|
|
@@ -1929,43 +1920,35 @@ const MrdDocumentList = class {
|
|
|
1929
1920
|
MrdDocumentList.ROOT = '__root__';
|
|
1930
1921
|
MrdDocumentList.style = mrdDocumentListCss();
|
|
1931
1922
|
|
|
1932
|
-
const mrdDocumentViewCss = () => `.sc-mrd-document-view-h{display:block
|
|
1923
|
+
const mrdDocumentViewCss = () => `.sc-mrd-document-view-h{display:block}.mrd-document-view.sc-mrd-document-view{max-width:640px}.mrd-document-view__body.sc-mrd-document-view{display:flex;flex-direction:column;gap:var(--mrd-space-6)}.mrd-document-view__container.sc-mrd-document-view{display:flex;flex-direction:column;align-items:flex-start;gap:var(--mrd-space-1);margin-bottom:var(--mrd-space-6)}.mrd-document-view__container-link.sc-mrd-document-view{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-document-view__container-link.sc-mrd-document-view:hover{text-decoration:underline}.mrd-document-view__folder.sc-mrd-document-view{display:inline-flex;align-items:center;gap:var(--mrd-space-1);font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-400);word-break:break-word}.mrd-document-view__folder-icon.sc-mrd-document-view{width:0.75rem;height:0.75rem;flex-shrink:0}.mrd-document-view__title.sc-mrd-document-view{font-size:var(--mrd-font-size-2xl);font-weight:var(--mrd-font-weight-bold);color:var(--mrd-color-neutral-900);letter-spacing:-0.02em;margin:0 0 var(--mrd-space-1) 0}.mrd-document-view__date.sc-mrd-document-view{font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-400);font-variant-numeric:tabular-nums;margin:0 0 var(--mrd-space-6) 0}.mrd-document-view__file-meta.sc-mrd-document-view{display:flex;align-items:center;margin-bottom:var(--mrd-space-2)}.mrd-document-view__download.sc-mrd-document-view{display:inline-flex;align-items:center;gap:var(--mrd-space-2);flex-shrink:0;height:2rem;padding:0 var(--mrd-space-3);background:var(--mrd-color-white);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);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-700);cursor:pointer}.mrd-document-view__download.sc-mrd-document-view:hover{background:var(--mrd-color-neutral-100);color:var(--mrd-color-neutral-900)}.mrd-document-view__download.sc-mrd-document-view svg.sc-mrd-document-view{width:0.9375rem;height:0.9375rem}.mrd-document-view__summary-body.sc-mrd-document-view{font-size:var(--mrd-font-size-base);color:var(--mrd-color-neutral-700);line-height:var(--mrd-line-height-relaxed)}`;
|
|
1933
1924
|
|
|
1934
1925
|
const MrdDocumentView = class {
|
|
1935
1926
|
constructor(hostRef) {
|
|
1936
1927
|
index.registerInstance(this, hostRef);
|
|
1937
1928
|
this.mrdNavigate = index.createEvent(this, "mrdNavigate");
|
|
1938
1929
|
this.mrdDownload = index.createEvent(this, "mrdDownload");
|
|
1939
|
-
this.
|
|
1930
|
+
this.mrdAttachments = index.createEvent(this, "mrdAttachments");
|
|
1940
1931
|
/** The data record from the /data endpoint. Fields keyed by name; relations under `_links`. */
|
|
1941
1932
|
this.data = {};
|
|
1942
1933
|
this.locale = navigator.language;
|
|
1943
|
-
/**
|
|
1944
|
-
* the
|
|
1945
|
-
|
|
1946
|
-
this.previewUrl = '';
|
|
1947
|
-
/** Minimum height (px) of the inline preview area — it stretches to fill the
|
|
1948
|
-
* available row height in the wide side-by-side layout (see mrd-document-view.scss),
|
|
1949
|
-
* and falls back to this height when stacked. Overlay hosts typically pass a
|
|
1950
|
-
* smaller value than the full-page default to fit available chrome. */
|
|
1951
|
-
this.previewHeight = 640;
|
|
1952
|
-
/** Tracks the href a preview was last requested for, so componentDidLoad and
|
|
1953
|
-
* the data watcher don't emit duplicate requests for the same file. */
|
|
1954
|
-
this.lastPreviewHref = null;
|
|
1934
|
+
/** Tracks the href attachments were last emitted for, so componentDidLoad and
|
|
1935
|
+
* the data watcher don't emit duplicate events for the same file. */
|
|
1936
|
+
this.lastAttachmentHref = null;
|
|
1955
1937
|
}
|
|
1956
1938
|
componentDidLoad() {
|
|
1957
|
-
this.
|
|
1939
|
+
this.emitAttachmentsIfNeeded();
|
|
1958
1940
|
}
|
|
1959
1941
|
dataChanged() {
|
|
1960
|
-
this.
|
|
1942
|
+
this.emitAttachmentsIfNeeded();
|
|
1961
1943
|
}
|
|
1962
|
-
|
|
1944
|
+
emitAttachmentsIfNeeded() {
|
|
1963
1945
|
var _a, _b;
|
|
1964
|
-
const
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1946
|
+
const attachments = attachmentsFromRecord(this.archetype, this.data);
|
|
1947
|
+
const href = (_b = (_a = attachments[0]) === null || _a === void 0 ? void 0 : _a.href) !== null && _b !== void 0 ? _b : null;
|
|
1948
|
+
if (href === this.lastAttachmentHref)
|
|
1949
|
+
return;
|
|
1950
|
+
this.lastAttachmentHref = href;
|
|
1951
|
+
this.mrdAttachments.emit({ attachments });
|
|
1969
1952
|
}
|
|
1970
1953
|
/** Value of a value-slot: reads data[field] via the slot→field map. */
|
|
1971
1954
|
slotValue(slot) {
|
|
@@ -1984,32 +1967,25 @@ const MrdDocumentView = class {
|
|
|
1984
1967
|
const links = ((_d = (_c = this.data) === null || _c === void 0 ? void 0 : _c._links) !== null && _d !== void 0 ? _d : {});
|
|
1985
1968
|
return links[field];
|
|
1986
1969
|
}
|
|
1970
|
+
/** Container link (styled like relation links in layout sections: primary text
|
|
1971
|
+
* link) plus a muted, non-interactive folder path when present. */
|
|
1987
1972
|
renderContainer() {
|
|
1988
1973
|
const link = this.slotLink('container');
|
|
1989
|
-
|
|
1974
|
+
const hasLink = !!((link === null || link === void 0 ? void 0 : link.href) && link.name);
|
|
1975
|
+
const folderRaw = this.slotValue('folder');
|
|
1976
|
+
const folder = folderRaw != null && folderRaw !== '' ? String(folderRaw) : null;
|
|
1977
|
+
if (!hasLink && !folder)
|
|
1990
1978
|
return null;
|
|
1991
|
-
return (index.h("button", { class: "mrd-document-
|
|
1979
|
+
return (index.h("div", { class: "mrd-document-view__container" }, hasLink && (index.h("button", { type: "button", class: "mrd-document-view__container-link", onClick: () => this.mrdNavigate.emit({ href: link.href, label: link.name }) }, link.name)), folder && (index.h("span", { class: "mrd-document-view__folder" }, index.h("svg", { class: "mrd-document-view__folder-icon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, index.h("path", { d: "M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" })), folder))));
|
|
1992
1980
|
}
|
|
1993
|
-
/**
|
|
1994
|
-
*
|
|
1981
|
+
/** Download button — the only file-related UI this component owns; the filename
|
|
1982
|
+
* is deliberately not shown (rarely relevant, the title identifies the document)
|
|
1983
|
+
* and inline preview rendering is entirely the host's responsibility. */
|
|
1995
1984
|
renderFileMeta(fileName, href) {
|
|
1996
|
-
return (index.h("div", { class: "mrd-document-view__file-meta" },
|
|
1997
|
-
}
|
|
1998
|
-
/** The preview panel itself (iframe/image/loading state) — its own grid
|
|
1999
|
-
* column in the wide layout, so it can take the full available height. */
|
|
2000
|
-
renderPreviewPanel(fileName, href, mimeType) {
|
|
2001
|
-
if (!href)
|
|
2002
|
-
return null;
|
|
2003
|
-
return (index.h("div", { class: "mrd-document-view__preview", style: { minHeight: `${this.previewHeight}px` } }, this.previewUrl ? (index.h("mrd-file-preview", { src: this.previewUrl, mimeType: mimeType, fileName: fileName, href: href, locale: this.locale, onMrdDownload: (e) => {
|
|
2004
|
-
e.stopPropagation();
|
|
2005
|
-
this.mrdDownload.emit(e.detail);
|
|
2006
|
-
}, onMrdPreviewReload: (e) => {
|
|
2007
|
-
e.stopPropagation();
|
|
2008
|
-
this.mrdLoadPreview.emit({ href });
|
|
2009
|
-
} })) : (index.h("div", { class: "mrd-document-view__preview-loading" }, t('loading', this.locale)))));
|
|
1985
|
+
return (index.h("div", { class: "mrd-document-view__file-meta" }, href && (index.h("button", { type: "button", class: "mrd-document-view__download", onClick: () => this.mrdDownload.emit({ href, fileName }) }, index.h("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, index.h("path", { d: "M12 3v12m0 0l-4-4m4 4l4-4M4 21h16" })), t('download', this.locale)))));
|
|
2010
1986
|
}
|
|
2011
1987
|
render() {
|
|
2012
|
-
var _a, _b
|
|
1988
|
+
var _a, _b;
|
|
2013
1989
|
const titleRaw = this.slotValue('title');
|
|
2014
1990
|
const title = titleRaw != null && titleRaw !== '' ? String(titleRaw) : null;
|
|
2015
1991
|
const dateRaw = this.slotValue('date');
|
|
@@ -2019,8 +1995,7 @@ const MrdDocumentView = class {
|
|
|
2019
1995
|
const fileRaw = this.slotValue('file');
|
|
2020
1996
|
const fileHref = (_a = fileRaw === null || fileRaw === void 0 ? void 0 : fileRaw.href) !== null && _a !== void 0 ? _a : '';
|
|
2021
1997
|
const fileName = (_b = fileRaw === null || fileRaw === void 0 ? void 0 : fileRaw.fileName) !== null && _b !== void 0 ? _b : (fileRaw ? String(fileRaw) : '');
|
|
2022
|
-
|
|
2023
|
-
return (index.h(index.Host, { key: '6023c8c6ca3d780fd4a9cca41189cb05a151221e' }, index.h("div", { key: 'd7d39d62964583da0ca6c1494e75321e6bab9ac8', class: "mrd-document-view" }, index.h("div", { key: '9aa14569c9ffc785ffb4f2b3d5930cf3e822e246', class: "mrd-document-view__body" }, index.h("div", { key: 'e00f3b55551429d8522fb97e7ccb43d56e98042d', class: "mrd-document-view__meta" }, this.renderContainer(), title && index.h("h1", { key: '9860273878b245fc757eb690c6cd7006b13045c4', class: "mrd-document-view__title" }, title), date && index.h("p", { key: '84c60b0b6feb6678d661000c26050e42eaaa8399', class: "mrd-document-view__date" }, date), fileRaw && this.renderFileMeta(fileName, fileHref), summary && (index.h("div", { key: 'd1cff0cc1b9376409c8e04a785deba93c986ba47', class: "mrd-document-view__summary" }, index.h("div", { key: 'fc9c4b986afc8c4f50486caf85bf58860d641a2b', class: "mrd-document-view__summary-body", innerHTML: summary })))), fileRaw && this.renderPreviewPanel(fileName, fileHref, mimeType)))));
|
|
1998
|
+
return (index.h(index.Host, { key: 'd4e8d4a6c5c66677df3d4e80943fc4538d9a2be7' }, index.h("div", { key: 'c67bb1742590dc3ab3cec959f20dfa9030268411', class: "mrd-document-view" }, index.h("div", { key: '5da6e15d1f67990a9ee06bc07b717e5fa17a2ee7', class: "mrd-document-view__body" }, index.h("div", { key: '0fc38933add3fff48096c48d2fb6cd06fb5d1eac', class: "mrd-document-view__meta" }, title && index.h("h1", { key: 'e9ac8d99f9afae6b64dd7e6bd461c54b92a6ea39', class: "mrd-document-view__title" }, title), date && index.h("p", { key: '8591d77b300ed3c021cfa64b8e9564dee98199cd', class: "mrd-document-view__date" }, date), this.renderContainer(), fileRaw && this.renderFileMeta(fileName, fileHref), summary && (index.h("div", { key: '8a6d630afcf187fa86c9bab77d06d93695fd5c9f', class: "mrd-document-view__summary" }, index.h("div", { key: 'bd98e2cf740d08837accd8d260973d4e51cd24f7', class: "mrd-document-view__summary-body", innerHTML: summary }))))))));
|
|
2024
1999
|
}
|
|
2025
2000
|
static get watchers() { return {
|
|
2026
2001
|
"data": [{
|
|
@@ -2143,13 +2118,13 @@ const MrdField = class {
|
|
|
2143
2118
|
historyValueInputType() {
|
|
2144
2119
|
var _a;
|
|
2145
2120
|
switch ((_a = this.item) === null || _a === void 0 ? void 0 : _a.dataType) {
|
|
2146
|
-
case
|
|
2147
|
-
case
|
|
2148
|
-
case
|
|
2149
|
-
case
|
|
2150
|
-
case
|
|
2151
|
-
case
|
|
2152
|
-
case
|
|
2121
|
+
case clientLayout.ClientLayoutItemFieldDataType.DATE: return 'date';
|
|
2122
|
+
case clientLayout.ClientLayoutItemFieldDataType.DATETIME: return 'datetime-local';
|
|
2123
|
+
case clientLayout.ClientLayoutItemFieldDataType.TIME: return 'time';
|
|
2124
|
+
case clientLayout.ClientLayoutItemFieldDataType.INTEGER:
|
|
2125
|
+
case clientLayout.ClientLayoutItemFieldDataType.DECIMAL:
|
|
2126
|
+
case clientLayout.ClientLayoutItemFieldDataType.PERCENTAGE: return 'number';
|
|
2127
|
+
case clientLayout.ClientLayoutItemFieldDataType.EMAIL: return 'email';
|
|
2153
2128
|
default: return 'text';
|
|
2154
2129
|
}
|
|
2155
2130
|
}
|
|
@@ -2192,37 +2167,37 @@ const MrdField = class {
|
|
|
2192
2167
|
onMrdBlur: this.handleBlur,
|
|
2193
2168
|
};
|
|
2194
2169
|
switch (item.dataType) {
|
|
2195
|
-
case
|
|
2170
|
+
case clientLayout.ClientLayoutItemFieldDataType.TEXT:
|
|
2196
2171
|
return (index.h("mrd-text-field", Object.assign({}, commonProps, { value: (_b = displayValue) !== null && _b !== void 0 ? _b : '', placeholder: (_c = item.placeholder) !== null && _c !== void 0 ? _c : '' })));
|
|
2197
|
-
case
|
|
2172
|
+
case clientLayout.ClientLayoutItemFieldDataType.TEXTBLOCK:
|
|
2198
2173
|
return (index.h("mrd-textarea-field", Object.assign({}, commonProps, { value: (_d = displayValue) !== null && _d !== void 0 ? _d : '', placeholder: (_e = item.placeholder) !== null && _e !== void 0 ? _e : '' })));
|
|
2199
|
-
case
|
|
2200
|
-
case
|
|
2201
|
-
case
|
|
2174
|
+
case clientLayout.ClientLayoutItemFieldDataType.INTEGER:
|
|
2175
|
+
case clientLayout.ClientLayoutItemFieldDataType.DECIMAL:
|
|
2176
|
+
case clientLayout.ClientLayoutItemFieldDataType.PERCENTAGE:
|
|
2202
2177
|
return (index.h("mrd-number-field", Object.assign({}, commonProps, { value: (_f = displayValue) !== null && _f !== void 0 ? _f : null, dataType: item.dataType, decimalPrecision: (_g = item.decimalPrecision) !== null && _g !== void 0 ? _g : 2, placeholder: (_h = item.placeholder) !== null && _h !== void 0 ? _h : '' })));
|
|
2203
|
-
case
|
|
2178
|
+
case clientLayout.ClientLayoutItemFieldDataType.CURRENCY:
|
|
2204
2179
|
return (index.h("mrd-currency-field", Object.assign({}, commonProps, { value: (_j = displayValue) !== null && _j !== void 0 ? _j : { amount: null, currency: (_k = item.currencyCode) !== null && _k !== void 0 ? _k : 'EUR' } })));
|
|
2205
|
-
case
|
|
2180
|
+
case clientLayout.ClientLayoutItemFieldDataType.BOOLEAN:
|
|
2206
2181
|
return (index.h("mrd-boolean-field", Object.assign({}, commonProps, { value: (_l = displayValue) !== null && _l !== void 0 ? _l : false })));
|
|
2207
|
-
case
|
|
2182
|
+
case clientLayout.ClientLayoutItemFieldDataType.DATE:
|
|
2208
2183
|
return (index.h("mrd-date-field", Object.assign({}, commonProps, { value: (_m = displayValue) !== null && _m !== void 0 ? _m : '' })));
|
|
2209
|
-
case
|
|
2184
|
+
case clientLayout.ClientLayoutItemFieldDataType.DATETIME:
|
|
2210
2185
|
return (index.h("mrd-datetime-field", Object.assign({}, commonProps, { value: (_o = displayValue) !== null && _o !== void 0 ? _o : '' })));
|
|
2211
|
-
case
|
|
2186
|
+
case clientLayout.ClientLayoutItemFieldDataType.TIME:
|
|
2212
2187
|
return (index.h("mrd-time-field", Object.assign({}, commonProps, { value: (_p = displayValue) !== null && _p !== void 0 ? _p : '' })));
|
|
2213
|
-
case
|
|
2188
|
+
case clientLayout.ClientLayoutItemFieldDataType.EMAIL:
|
|
2214
2189
|
return (index.h("mrd-email-field", Object.assign({}, commonProps, { value: (_q = displayValue) !== null && _q !== void 0 ? _q : '', placeholder: (_r = item.placeholder) !== null && _r !== void 0 ? _r : '' })));
|
|
2215
|
-
case
|
|
2190
|
+
case clientLayout.ClientLayoutItemFieldDataType.HYPERLINK:
|
|
2216
2191
|
return (index.h("mrd-hyperlink-field", Object.assign({}, commonProps, { value: (_s = displayValue) !== null && _s !== void 0 ? _s : '', placeholder: (_t = item.placeholder) !== null && _t !== void 0 ? _t : '' })));
|
|
2217
|
-
case
|
|
2192
|
+
case clientLayout.ClientLayoutItemFieldDataType.LIST:
|
|
2218
2193
|
return (index.h("mrd-list-field", Object.assign({}, commonProps, { value: (_u = displayValue) !== null && _u !== void 0 ? _u : '', multiple: (_v = item.multiple) !== null && _v !== void 0 ? _v : false, listItems: (_w = item.listItems) !== null && _w !== void 0 ? _w : [] })));
|
|
2219
|
-
case
|
|
2194
|
+
case clientLayout.ClientLayoutItemFieldDataType.FILE:
|
|
2220
2195
|
return (index.h("mrd-file-field", Object.assign({}, commonProps, { value: displayValue, accept: (_x = item.accept) !== null && _x !== void 0 ? _x : '', maxSize: (_y = item.maxSize) !== null && _y !== void 0 ? _y : 0, onMrdUpload: this.handleUpload })));
|
|
2221
|
-
case
|
|
2196
|
+
case clientLayout.ClientLayoutItemFieldDataType.IMAGE:
|
|
2222
2197
|
return (index.h("mrd-image-field", Object.assign({}, commonProps, { value: displayValue, accept: (_z = item.accept) !== null && _z !== void 0 ? _z : 'image/*', maxSize: (_0 = item.maxSize) !== null && _0 !== void 0 ? _0 : 0, onMrdUpload: this.handleUpload })));
|
|
2223
|
-
case
|
|
2198
|
+
case clientLayout.ClientLayoutItemFieldDataType.LONGTEXT:
|
|
2224
2199
|
return (index.h("mrd-longtext-field", Object.assign({}, commonProps, { value: (_1 = displayValue) !== null && _1 !== void 0 ? _1 : '', placeholder: (_2 = item.placeholder) !== null && _2 !== void 0 ? _2 : '' })));
|
|
2225
|
-
case
|
|
2200
|
+
case clientLayout.ClientLayoutItemFieldDataType.SECRET:
|
|
2226
2201
|
return (index.h("mrd-secret-field", Object.assign({}, commonProps, { value: (_3 = displayValue) !== null && _3 !== void 0 ? _3 : '', placeholder: (_4 = item.placeholder) !== null && _4 !== void 0 ? _4 : '' })));
|
|
2227
2202
|
default:
|
|
2228
2203
|
return null;
|
|
@@ -2231,10 +2206,10 @@ const MrdField = class {
|
|
|
2231
2206
|
render() {
|
|
2232
2207
|
var _a, _b, _c, _d, _e, _f;
|
|
2233
2208
|
const { item, locale, value } = this;
|
|
2234
|
-
if (item.type ===
|
|
2235
|
-
return (index.h(index.Host, null, index.h("mrd-relation-field", { name: item.name, label: item.label, required: item.required, disabled: (_a = item.disabled) !== null && _a !== void 0 ? _a : false, locale: locale, relatedClass: item.relatedClass, mostSignificantClass: (_b = item.mostSignificantClass) !== null && _b !== void 0 ? _b : '', displayType: (_c = item.displayType) !== null && _c !== void 0 ? _c :
|
|
2209
|
+
if (item.type === clientLayout.ClientLayoutItemType.RELATION) {
|
|
2210
|
+
return (index.h(index.Host, null, index.h("mrd-relation-field", { name: item.name, label: item.label, required: item.required, disabled: (_a = item.disabled) !== null && _a !== void 0 ? _a : false, locale: locale, relatedClass: item.relatedClass, mostSignificantClass: (_b = item.mostSignificantClass) !== null && _b !== void 0 ? _b : '', displayType: (_c = item.displayType) !== null && _c !== void 0 ? _c : clientLayout.ClientLayoutItemRelationDisplayType.SEARCH, editBehavior: (_d = item.editBehavior) !== null && _d !== void 0 ? _d : null, commonRelation: item.commonRelation, multiple: (_e = item.multiple) !== null && _e !== void 0 ? _e : false, dropdownValues: (_f = item.dropdownValues) !== null && _f !== void 0 ? _f : [], value: value, onMrdChange: this.handleChange, onMrdBlur: this.handleBlur, onMrdSearch: this.handleSearch, onMrdFetchAll: this.handleFetchAll })));
|
|
2236
2211
|
}
|
|
2237
|
-
if (item.type !==
|
|
2212
|
+
if (item.type !== clientLayout.ClientLayoutItemType.FIELD) {
|
|
2238
2213
|
return index.h(index.Host, null);
|
|
2239
2214
|
}
|
|
2240
2215
|
const displayValue = this.getDisplayValue();
|
|
@@ -2375,90 +2350,6 @@ const MrdFileField = class {
|
|
|
2375
2350
|
};
|
|
2376
2351
|
MrdFileField.style = mrdFileFieldCss();
|
|
2377
2352
|
|
|
2378
|
-
/** Pure classification logic for mrd-file-preview — no Stencil dependency. */
|
|
2379
|
-
const IMAGE_EXTENSIONS = new Set(['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'bmp']);
|
|
2380
|
-
function extensionOf(fileName) {
|
|
2381
|
-
if (!fileName)
|
|
2382
|
-
return null;
|
|
2383
|
-
const match = /\.([a-z0-9]+)$/i.exec(fileName);
|
|
2384
|
-
return match ? match[1].toLowerCase() : null;
|
|
2385
|
-
}
|
|
2386
|
-
/**
|
|
2387
|
-
* Decide how to render a file given its declared mime type and/or file name.
|
|
2388
|
-
* A declared mime type is authoritative when present (a mismatched file name
|
|
2389
|
-
* extension is ignored); the file name extension is only consulted as a
|
|
2390
|
-
* fallback when no mime type is known.
|
|
2391
|
-
*/
|
|
2392
|
-
function detectPreviewKind(mimeType, fileName) {
|
|
2393
|
-
const mime = (mimeType !== null && mimeType !== void 0 ? mimeType : '').toLowerCase().trim();
|
|
2394
|
-
if (mime) {
|
|
2395
|
-
if (mime === 'application/pdf')
|
|
2396
|
-
return 'pdf';
|
|
2397
|
-
if (mime.startsWith('image/'))
|
|
2398
|
-
return 'image';
|
|
2399
|
-
return 'unsupported';
|
|
2400
|
-
}
|
|
2401
|
-
const ext = extensionOf(fileName);
|
|
2402
|
-
if (ext === 'pdf')
|
|
2403
|
-
return 'pdf';
|
|
2404
|
-
if (ext && IMAGE_EXTENSIONS.has(ext))
|
|
2405
|
-
return 'image';
|
|
2406
|
-
return 'unsupported';
|
|
2407
|
-
}
|
|
2408
|
-
|
|
2409
|
-
const mrdFilePreviewCss = () => `.sc-mrd-file-preview-h{display:block;width:100%;height:100%}.mrd-file-preview__frame.sc-mrd-file-preview{display:block;width:100%;height:100%;border:none}.mrd-file-preview__image.sc-mrd-file-preview{display:block;max-width:100%;max-height:100%;margin:0 auto;object-fit:contain}.mrd-file-preview__error.sc-mrd-file-preview,.mrd-file-preview__unsupported.sc-mrd-file-preview{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--mrd-space-3);width:100%;height:100%;min-height:8rem;padding:var(--mrd-space-6);color:var(--mrd-color-neutral-500);font-size:var(--mrd-font-size-sm);text-align:center}.mrd-file-preview__error-text.sc-mrd-file-preview{color:var(--mrd-color-danger)}.mrd-file-preview__retry.sc-mrd-file-preview,.mrd-file-preview__download.sc-mrd-file-preview{display:inline-flex;align-items:center;gap:var(--mrd-space-2);height:2rem;padding:0 var(--mrd-space-3);border:var(--mrd-border-width) solid var(--mrd-color-neutral-300);border-radius:var(--mrd-border-radius);background:var(--mrd-color-white);color:var(--mrd-color-neutral-700);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);cursor:pointer}.mrd-file-preview__retry.sc-mrd-file-preview:hover,.mrd-file-preview__download.sc-mrd-file-preview:hover{background:var(--mrd-color-neutral-100);color:var(--mrd-color-neutral-900)}.mrd-file-preview__download.sc-mrd-file-preview svg.sc-mrd-file-preview{width:0.9375rem;height:0.9375rem}`;
|
|
2410
|
-
|
|
2411
|
-
const MrdFilePreview = class {
|
|
2412
|
-
constructor(hostRef) {
|
|
2413
|
-
index.registerInstance(this, hostRef);
|
|
2414
|
-
this.mrdPreviewReload = index.createEvent(this, "mrdPreviewReload");
|
|
2415
|
-
this.mrdDownload = index.createEvent(this, "mrdDownload");
|
|
2416
|
-
/** Signed URL to render. */
|
|
2417
|
-
this.src = '';
|
|
2418
|
-
/** Declared mime type (e.g. 'application/pdf', 'image/png'), when known.
|
|
2419
|
-
* Authoritative over `fileName` when present. */
|
|
2420
|
-
this.mimeType = '';
|
|
2421
|
-
/** Original file name — used for extension-based detection when `mimeType`
|
|
2422
|
-
* is absent, and as alt/title text. */
|
|
2423
|
-
this.fileName = '';
|
|
2424
|
-
/** The file's own reference href (not the signed preview URL in `src`).
|
|
2425
|
-
* When set, an unsupported type falls back to the same download button
|
|
2426
|
-
* used elsewhere in the library, so hosts need no new wiring. */
|
|
2427
|
-
this.href = '';
|
|
2428
|
-
this.locale = navigator.language;
|
|
2429
|
-
this.imageFailed = false;
|
|
2430
|
-
this.onImageError = () => {
|
|
2431
|
-
this.imageFailed = true;
|
|
2432
|
-
};
|
|
2433
|
-
this.retry = () => {
|
|
2434
|
-
this.imageFailed = false;
|
|
2435
|
-
this.mrdPreviewReload.emit();
|
|
2436
|
-
};
|
|
2437
|
-
}
|
|
2438
|
-
srcChanged() {
|
|
2439
|
-
this.imageFailed = false;
|
|
2440
|
-
}
|
|
2441
|
-
render() {
|
|
2442
|
-
const kind = detectPreviewKind(this.mimeType, this.fileName);
|
|
2443
|
-
if (kind === 'pdf') {
|
|
2444
|
-
return (index.h(index.Host, null, index.h("iframe", { class: "mrd-file-preview__frame", src: this.src, title: this.fileName || 'preview' })));
|
|
2445
|
-
}
|
|
2446
|
-
if (kind === 'image') {
|
|
2447
|
-
if (this.imageFailed) {
|
|
2448
|
-
return (index.h(index.Host, null, index.h("div", { class: "mrd-file-preview__error" }, index.h("span", { class: "mrd-file-preview__error-text" }, t('preview_error', this.locale)), index.h("button", { type: "button", class: "mrd-file-preview__retry", onClick: this.retry }, t('retry', this.locale)))));
|
|
2449
|
-
}
|
|
2450
|
-
return (index.h(index.Host, null, index.h("img", { class: "mrd-file-preview__image", src: this.src, alt: this.fileName || '', onError: this.onImageError })));
|
|
2451
|
-
}
|
|
2452
|
-
return (index.h(index.Host, null, index.h("div", { class: "mrd-file-preview__unsupported" }, index.h("span", null, t('preview_unsupported', this.locale)), this.href && (index.h("button", { type: "button", class: "mrd-file-preview__download", onClick: () => this.mrdDownload.emit({ href: this.href, fileName: this.fileName }) }, index.h("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, index.h("path", { d: "M12 3v12m0 0l-4-4m4 4l4-4M4 21h16" })), t('download', this.locale))))));
|
|
2453
|
-
}
|
|
2454
|
-
static get watchers() { return {
|
|
2455
|
-
"src": [{
|
|
2456
|
-
"srcChanged": 0
|
|
2457
|
-
}]
|
|
2458
|
-
}; }
|
|
2459
|
-
};
|
|
2460
|
-
MrdFilePreview.style = mrdFilePreviewCss();
|
|
2461
|
-
|
|
2462
2353
|
const mrdFormCss = () => `.sc-mrd-form-h{display:block}.mrd-form.sc-mrd-form{font-family:var(--mrd-font-family);width:100%}.mrd-form__title.sc-mrd-form{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-6) 0}.mrd-form__body.sc-mrd-form{display:flex;flex-direction:column;gap:var(--mrd-space-5)}.mrd-form__field.sc-mrd-form{display:flex;flex-direction:column;gap:var(--mrd-space-1)}.mrd-form__field-error.sc-mrd-form{font-family:var(--mrd-font-family);font-size:var(--mrd-error-font-size);color:var(--mrd-error-color)}.mrd-form__section.sc-mrd-form{border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius-md);padding:var(--mrd-space-4) var(--mrd-space-5);margin:0}.mrd-form__section-legend.sc-mrd-form{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-700);padding:0 var(--mrd-space-2)}.mrd-form__section-body.sc-mrd-form{display:flex;flex-direction:column;gap:var(--mrd-space-4);margin-top:var(--mrd-space-2)}.mrd-form__group.sc-mrd-form{display:flex;flex-direction:column;gap:var(--mrd-space-2)}.mrd-form__group-label.sc-mrd-form{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-500);text-transform:uppercase;letter-spacing:0.05em}.mrd-form__group-body.sc-mrd-form{display:flex;flex-direction:column;gap:var(--mrd-space-4);padding-left:var(--mrd-space-4);border-left:3px solid var(--mrd-color-neutral-200)}.mrd-form__footer.sc-mrd-form{margin-top:var(--mrd-space-8);padding-top:var(--mrd-space-5);border-top:var(--mrd-border-width) solid var(--mrd-border-color);display:flex;justify-content:flex-end;gap:var(--mrd-space-3)}.mrd-form__submit.sc-mrd-form{display:inline-flex;align-items:center;justify-content:center;height:var(--mrd-input-height);padding:0 var(--mrd-space-6);background-color:var(--mrd-color-primary);color:var(--mrd-color-white);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);font-weight:var(--mrd-font-weight-medium);border:none;border-radius:var(--mrd-border-radius);cursor:pointer;transition:background-color var(--mrd-transition)}.mrd-form__submit.sc-mrd-form:hover{background-color:var(--mrd-color-primary-hover)}.mrd-form__submit.sc-mrd-form:focus{outline:none;box-shadow:var(--mrd-shadow-focus)}.mrd-form__submit.sc-mrd-form:active{background-color:var(--mrd-color-primary-dark)}.mrd-form__cancel.sc-mrd-form{display:inline-flex;align-items:center;justify-content:center;height:var(--mrd-input-height);padding:0 var(--mrd-space-6);background-color:transparent;color:var(--mrd-color-neutral-600);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);font-weight:var(--mrd-font-weight-medium);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);cursor:pointer;transition:background-color var(--mrd-transition), color var(--mrd-transition)}.mrd-form__cancel.sc-mrd-form:hover{background-color:var(--mrd-color-neutral-100);color:var(--mrd-color-neutral-800)}.mrd-form__cancel.sc-mrd-form:focus{outline:none;box-shadow:var(--mrd-shadow-focus)}.mrd-form__cancel.sc-mrd-form:active{background-color:var(--mrd-color-neutral-200)}`;
|
|
2463
2354
|
|
|
2464
2355
|
const MrdForm = class {
|
|
@@ -2596,12 +2487,12 @@ const MrdForm = class {
|
|
|
2596
2487
|
const dv = (_e = (_c = item.defaultValue) !== null && _c !== void 0 ? _c : (_d = item.field) === null || _d === void 0 ? void 0 : _d.defaultValue) !== null && _e !== void 0 ? _e : (_f = item.relation) === null || _f === void 0 ? void 0 : _f.defaultValue;
|
|
2597
2488
|
if (!dv)
|
|
2598
2489
|
continue;
|
|
2599
|
-
if (item.type ===
|
|
2490
|
+
if (item.type === clientLayout.ClientLayoutItemType.FIELD) {
|
|
2600
2491
|
const resolved = this.resolveFieldDefault(dv, (_g = item.dataType) !== null && _g !== void 0 ? _g : (_h = item.field) === null || _h === void 0 ? void 0 : _h.dataType);
|
|
2601
2492
|
if (resolved != null)
|
|
2602
2493
|
updates[item.name] = resolved;
|
|
2603
2494
|
}
|
|
2604
|
-
else if (item.type ===
|
|
2495
|
+
else if (item.type === clientLayout.ClientLayoutItemType.RELATION) {
|
|
2605
2496
|
if (dv === 'me()' && this.me) {
|
|
2606
2497
|
updates[item.name] = this.me;
|
|
2607
2498
|
}
|
|
@@ -2646,17 +2537,17 @@ const MrdForm = class {
|
|
|
2646
2537
|
var _a, _b;
|
|
2647
2538
|
const allItems = this.collectFields((_b = (_a = this.layout) === null || _a === void 0 ? void 0 : _a.items) !== null && _b !== void 0 ? _b : []);
|
|
2648
2539
|
// Strategy 1: direct match on mostSignificantClass
|
|
2649
|
-
const direct = allItems.find(item => item.type ===
|
|
2540
|
+
const direct = allItems.find(item => item.type === clientLayout.ClientLayoutItemType.RELATION &&
|
|
2650
2541
|
item.mostSignificantClass === this.referenceClass);
|
|
2651
2542
|
if (direct === null || direct === void 0 ? void 0 : direct.name)
|
|
2652
2543
|
return direct.name;
|
|
2653
2544
|
// Strategy 2: a DROPDOWN whose commonRelation field was omitted from the layout
|
|
2654
2545
|
const layoutRelationNames = new Set(allItems
|
|
2655
|
-
.filter(item => item.type ===
|
|
2546
|
+
.filter(item => item.type === clientLayout.ClientLayoutItemType.RELATION)
|
|
2656
2547
|
.map(item => item.name));
|
|
2657
2548
|
for (const item of allItems) {
|
|
2658
|
-
if (item.type ===
|
|
2659
|
-
item.editBehavior ===
|
|
2549
|
+
if (item.type === clientLayout.ClientLayoutItemType.RELATION &&
|
|
2550
|
+
item.editBehavior === clientLayout.ClientLayoutItemRelationEditBehavior.DROPDOWN &&
|
|
2660
2551
|
item.commonRelation &&
|
|
2661
2552
|
!layoutRelationNames.has(item.commonRelation)) {
|
|
2662
2553
|
return item.commonRelation;
|
|
@@ -2674,8 +2565,8 @@ const MrdForm = class {
|
|
|
2674
2565
|
collectDependentDropdowns() {
|
|
2675
2566
|
var _a, _b;
|
|
2676
2567
|
return this.collectFields((_b = (_a = this.layout) === null || _a === void 0 ? void 0 : _a.items) !== null && _b !== void 0 ? _b : [])
|
|
2677
|
-
.filter(item => item.type ===
|
|
2678
|
-
item.editBehavior ===
|
|
2568
|
+
.filter(item => item.type === clientLayout.ClientLayoutItemType.RELATION &&
|
|
2569
|
+
item.editBehavior === clientLayout.ClientLayoutItemRelationEditBehavior.DROPDOWN &&
|
|
2679
2570
|
!!item.commonRelation);
|
|
2680
2571
|
}
|
|
2681
2572
|
/** Emit mrdFetchAll for every dependent DROPDOWN whose filter value is currently set. */
|
|
@@ -2708,7 +2599,7 @@ const MrdForm = class {
|
|
|
2708
2599
|
collectFields(items) {
|
|
2709
2600
|
const fields = [];
|
|
2710
2601
|
for (const item of items) {
|
|
2711
|
-
if (item.type ===
|
|
2602
|
+
if (item.type === clientLayout.ClientLayoutItemType.FIELD || item.type === clientLayout.ClientLayoutItemType.RELATION) {
|
|
2712
2603
|
fields.push(item);
|
|
2713
2604
|
}
|
|
2714
2605
|
if (item.items) {
|
|
@@ -2776,7 +2667,7 @@ const MrdForm = class {
|
|
|
2776
2667
|
if (!item.name)
|
|
2777
2668
|
continue;
|
|
2778
2669
|
const name = item.name;
|
|
2779
|
-
if (item.type ===
|
|
2670
|
+
if (item.type === clientLayout.ClientLayoutItemType.FIELD) {
|
|
2780
2671
|
const rawValue = this.formValues[name];
|
|
2781
2672
|
if (rawValue instanceof File)
|
|
2782
2673
|
continue;
|
|
@@ -2786,7 +2677,7 @@ const MrdForm = class {
|
|
|
2786
2677
|
continue;
|
|
2787
2678
|
payload[name] = current;
|
|
2788
2679
|
}
|
|
2789
|
-
else if (item.type ===
|
|
2680
|
+
else if (item.type === clientLayout.ClientLayoutItemType.RELATION) {
|
|
2790
2681
|
const current = this.normalizeRelationValue(this.formValues[name]);
|
|
2791
2682
|
const initial = this.normalizeRelationValue(this.initialValues[name]);
|
|
2792
2683
|
if (this.deepEqual(current, initial))
|
|
@@ -2799,10 +2690,10 @@ const MrdForm = class {
|
|
|
2799
2690
|
renderItems(items) {
|
|
2800
2691
|
return items.map(item => {
|
|
2801
2692
|
var _a;
|
|
2802
|
-
if (item.type ===
|
|
2693
|
+
if (item.type === clientLayout.ClientLayoutItemType.SECTION) {
|
|
2803
2694
|
return (index.h("fieldset", { class: "mrd-form__section" }, item.label && index.h("legend", { class: "mrd-form__section-legend" }, item.label), index.h("div", { class: "mrd-form__section-body" }, item.items && this.renderItems(item.items))));
|
|
2804
2695
|
}
|
|
2805
|
-
if (item.type ===
|
|
2696
|
+
if (item.type === clientLayout.ClientLayoutItemType.GROUP) {
|
|
2806
2697
|
return (index.h("div", { class: "mrd-form__group" }, item.label && index.h("div", { class: "mrd-form__group-label" }, item.label), index.h("div", { class: "mrd-form__group-body" }, item.items && this.renderItems(item.items))));
|
|
2807
2698
|
}
|
|
2808
2699
|
const fieldName = (_a = item.name) !== null && _a !== void 0 ? _a : '';
|
|
@@ -2898,7 +2789,7 @@ const MrdHyperlinkField = class {
|
|
|
2898
2789
|
};
|
|
2899
2790
|
MrdHyperlinkField.style = mrdHyperlinkFieldCss();
|
|
2900
2791
|
|
|
2901
|
-
const mrdImageFieldCss = () => `.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__error.sc-mrd-image-field{font-family:var(--mrd-font-family);font-size:var(--mrd-error-font-size);color:var(--mrd-error-color)}.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,.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:rgba(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-spin 0.6s linear infinite}
|
|
2792
|
+
const mrdImageFieldCss = () => `.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__error.sc-mrd-image-field{font-family:var(--mrd-font-family);font-size:var(--mrd-error-font-size);color:var(--mrd-error-color)}.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,.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:rgba(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-spin 0.6s linear infinite}.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)}@keyframes mrd-spin{to{transform:rotate(360deg)}}`;
|
|
2902
2793
|
|
|
2903
2794
|
const MrdImageField = class {
|
|
2904
2795
|
constructor(hostRef) {
|
|
@@ -2999,7 +2890,7 @@ MrdImageField.style = mrdImageFieldCss();
|
|
|
2999
2890
|
/** Key an embedded view is addressed by (setViewPage etc.). */
|
|
3000
2891
|
function viewKeyFor(item) {
|
|
3001
2892
|
var _a, _b, _c, _d;
|
|
3002
|
-
if (item.type ===
|
|
2893
|
+
if (item.type === clientLayout.ClientLayoutItemType.RELATED_VIEW)
|
|
3003
2894
|
return (_b = (_a = item.relatedClass) !== null && _a !== void 0 ? _a : item.name) !== null && _b !== void 0 ? _b : '';
|
|
3004
2895
|
return (_d = (_c = item.dataClass) !== null && _c !== void 0 ? _c : item.name) !== null && _d !== void 0 ? _d : '';
|
|
3005
2896
|
}
|
|
@@ -3016,7 +2907,7 @@ function flattenItems(items) {
|
|
|
3016
2907
|
/** Build the canonical parent href `/{base}/{tenant}/{fromClass}/{parentId}` from
|
|
3017
2908
|
* the object's self href. Empty unless it is a RELATED_VIEW with a fromClass. */
|
|
3018
2909
|
function buildContainerHref(item, selfHref, parentId) {
|
|
3019
|
-
if (item.type !==
|
|
2910
|
+
if (item.type !== clientLayout.ClientLayoutItemType.RELATED_VIEW || !item.fromClass || !parentId)
|
|
3020
2911
|
return '';
|
|
3021
2912
|
const segs = selfHref.split('/').filter(Boolean);
|
|
3022
2913
|
if (segs.length < 2)
|
|
@@ -3028,7 +2919,7 @@ function buildContainerHref(item, selfHref, parentId) {
|
|
|
3028
2919
|
class CellRenderer {
|
|
3029
2920
|
static render(column, row, locale) {
|
|
3030
2921
|
var _a, _b, _c, _d;
|
|
3031
|
-
if (column.type ===
|
|
2922
|
+
if (column.type === clientLayout.ClientLayoutItemType.RELATION) {
|
|
3032
2923
|
const name = (_a = column.name) !== null && _a !== void 0 ? _a : '';
|
|
3033
2924
|
const link = (_b = row === null || row === void 0 ? void 0 : row._links) === null || _b === void 0 ? void 0 : _b[name];
|
|
3034
2925
|
if (!link)
|
|
@@ -3037,7 +2928,7 @@ class CellRenderer {
|
|
|
3037
2928
|
return link.map((l) => { var _a; return (_a = l.name) !== null && _a !== void 0 ? _a : ''; }).filter(Boolean).join(', ');
|
|
3038
2929
|
return (_c = link.name) !== null && _c !== void 0 ? _c : '';
|
|
3039
2930
|
}
|
|
3040
|
-
if (column.type !==
|
|
2931
|
+
if (column.type !== clientLayout.ClientLayoutItemType.FIELD)
|
|
3041
2932
|
return '';
|
|
3042
2933
|
const name = (_d = column.name) !== null && _d !== void 0 ? _d : '';
|
|
3043
2934
|
const dataType = column.dataType;
|
|
@@ -3137,25 +3028,25 @@ function renderSingleFieldValue(ctx, item, value) {
|
|
|
3137
3028
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
3138
3029
|
const dt = item.dataType;
|
|
3139
3030
|
switch (dt) {
|
|
3140
|
-
case
|
|
3031
|
+
case clientLayout.ClientLayoutItemFieldDataType.HYPERLINK: {
|
|
3141
3032
|
const v = value;
|
|
3142
3033
|
const href = (_a = v === null || v === void 0 ? void 0 : v.href) !== null && _a !== void 0 ? _a : String(value);
|
|
3143
3034
|
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;
|
|
3144
3035
|
return (index.h("a", { class: "mrd-layout-section__link", href: href, target: "_blank", rel: "noopener noreferrer" }, label));
|
|
3145
3036
|
}
|
|
3146
|
-
case
|
|
3037
|
+
case clientLayout.ClientLayoutItemFieldDataType.TEXTBLOCK:
|
|
3147
3038
|
return index.h("div", { class: "mrd-layout-section__prose", innerHTML: String(value) });
|
|
3148
|
-
case
|
|
3039
|
+
case clientLayout.ClientLayoutItemFieldDataType.LONGTEXT:
|
|
3149
3040
|
return index.h("pre", { class: "mrd-layout-section__pre" }, String(value));
|
|
3150
|
-
case
|
|
3041
|
+
case clientLayout.ClientLayoutItemFieldDataType.JSON:
|
|
3151
3042
|
return index.h("pre", { class: "mrd-layout-section__pre", innerHTML: CellRenderer.formatJson(value) });
|
|
3152
|
-
case
|
|
3043
|
+
case clientLayout.ClientLayoutItemFieldDataType.FILE: {
|
|
3153
3044
|
const v = value;
|
|
3154
3045
|
const fileName = (_e = v === null || v === void 0 ? void 0 : v.fileName) !== null && _e !== void 0 ? _e : String(value);
|
|
3155
3046
|
const href = (_f = v === null || v === void 0 ? void 0 : v.href) !== null && _f !== void 0 ? _f : '';
|
|
3156
3047
|
return downloadLink(ctx, href, fileName, t('download', ctx.locale));
|
|
3157
3048
|
}
|
|
3158
|
-
case
|
|
3049
|
+
case clientLayout.ClientLayoutItemFieldDataType.IMAGE: {
|
|
3159
3050
|
const v = value;
|
|
3160
3051
|
const href = (_g = v === null || v === void 0 ? void 0 : v.href) !== null && _g !== void 0 ? _g : '';
|
|
3161
3052
|
const fileName = (_h = v === null || v === void 0 ? void 0 : v.fileName) !== null && _h !== void 0 ? _h : '';
|
|
@@ -3165,9 +3056,9 @@ function renderSingleFieldValue(ctx, item, value) {
|
|
|
3165
3056
|
}
|
|
3166
3057
|
return downloadLink(ctx, href, fileName, fileName || href);
|
|
3167
3058
|
}
|
|
3168
|
-
case
|
|
3059
|
+
case clientLayout.ClientLayoutItemFieldDataType.BOOLEAN:
|
|
3169
3060
|
return (index.h("span", { class: `mrd-layout-section__boolean mrd-layout-section__boolean--${value ? 'true' : 'false'}` }, value ? t('yes', ctx.locale) : t('no', ctx.locale)));
|
|
3170
|
-
case
|
|
3061
|
+
case clientLayout.ClientLayoutItemFieldDataType.LIST: {
|
|
3171
3062
|
const listItem = ((_j = item.listItems) !== null && _j !== void 0 ? _j : []).find(li => li.key === String(value));
|
|
3172
3063
|
const label = (_k = listItem === null || listItem === void 0 ? void 0 : listItem.label) !== null && _k !== void 0 ? _k : String(value);
|
|
3173
3064
|
const color = listItem === null || listItem === void 0 ? void 0 : listItem.color;
|
|
@@ -3180,7 +3071,7 @@ function renderSingleFieldValue(ctx, item, value) {
|
|
|
3180
3071
|
}
|
|
3181
3072
|
return label;
|
|
3182
3073
|
}
|
|
3183
|
-
case
|
|
3074
|
+
case clientLayout.ClientLayoutItemFieldDataType.SECRET:
|
|
3184
3075
|
return value ? index.h("span", { class: "mrd-layout-section__secret-masked" }, '••••••••') : null;
|
|
3185
3076
|
default: {
|
|
3186
3077
|
const text = CellRenderer.renderValue(dt, value, (_l = item.listItems) !== null && _l !== void 0 ? _l : [], ctx.locale);
|
|
@@ -3230,13 +3121,13 @@ function renderField(ctx, item) {
|
|
|
3230
3121
|
}
|
|
3231
3122
|
if (renderedValue == null)
|
|
3232
3123
|
return null;
|
|
3233
|
-
const isBlock = item.dataType ===
|
|
3234
|
-
|| item.dataType ===
|
|
3235
|
-
|| item.dataType ===
|
|
3124
|
+
const isBlock = item.dataType === clientLayout.ClientLayoutItemFieldDataType.TEXTBLOCK
|
|
3125
|
+
|| item.dataType === clientLayout.ClientLayoutItemFieldDataType.LONGTEXT
|
|
3126
|
+
|| item.dataType === clientLayout.ClientLayoutItemFieldDataType.JSON;
|
|
3236
3127
|
return (index.h("div", { class: `mrd-layout-section__field${isBlock ? ' mrd-layout-section__field--block' : ''}`, key: item.name }, index.h("span", { class: "mrd-layout-section__field-label" }, item.label), index.h("span", { class: "mrd-layout-section__field-value" }, renderedValue, renderHistoryBadge(ctx, item, raw))));
|
|
3237
3128
|
}
|
|
3238
3129
|
|
|
3239
|
-
const mrdLayoutSectionCss = () => `.sc-mrd-layout-section-h{display:block;width:100%}.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(15 * 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-xs);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-500);margin:0 0 var(--mrd-space-2) 0;padding-bottom:0;letter-spacing:0.01em}.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:var(--mrd-color-white);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:var(--mrd-color-white);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}`;
|
|
3130
|
+
const mrdLayoutSectionCss = () => `.sc-mrd-layout-section-h{display:block;width:100%}.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--block.sc-mrd-layout-section{grid-template-columns:1fr}.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__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(15 * 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-xs);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-500);margin:0 0 var(--mrd-space-2) 0;padding-bottom:0;letter-spacing:0.01em}.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:var(--mrd-color-white);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:var(--mrd-color-white);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}`;
|
|
3240
3131
|
|
|
3241
3132
|
const MrdLayoutSection = class {
|
|
3242
3133
|
constructor(hostRef) {
|
|
@@ -3246,7 +3137,7 @@ const MrdLayoutSection = class {
|
|
|
3246
3137
|
this.mrdDownload = index.createEvent(this, "mrdDownload");
|
|
3247
3138
|
this.mrdLoadViewPage = index.createEvent(this, "mrdLoadViewPage");
|
|
3248
3139
|
this.mrdLoadImage = index.createEvent(this, "mrdLoadImage");
|
|
3249
|
-
this.
|
|
3140
|
+
this.mrdAttachments = index.createEvent(this, "mrdAttachments");
|
|
3250
3141
|
this.mrdViewAction = index.createEvent(this, "mrdViewAction");
|
|
3251
3142
|
this.mrdLoadViewAggregations = index.createEvent(this, "mrdLoadViewAggregations");
|
|
3252
3143
|
this.mrdLoadViewDistinct = index.createEvent(this, "mrdLoadViewDistinct");
|
|
@@ -3265,17 +3156,11 @@ const MrdLayoutSection = class {
|
|
|
3265
3156
|
/** Top-level archetypes on the object dashboard. When it contains commons.document,
|
|
3266
3157
|
* the record is rendered as a single-document view instead of generic fields. */
|
|
3267
3158
|
this.archetypes = [];
|
|
3268
|
-
/** Minimum height (px) of the commons.document inline file preview — it
|
|
3269
|
-
* stretches taller in the wide side-by-side layout. Pass a smaller value
|
|
3270
|
-
* when embedding the record in an overlay with limited height. */
|
|
3271
|
-
this.documentPreviewHeight = 640;
|
|
3272
3159
|
this.searchQueryMap = {};
|
|
3273
3160
|
this.searchResultsMap = {};
|
|
3274
3161
|
this.imagePreviewUrl = null;
|
|
3275
3162
|
this.imagePreviews = {};
|
|
3276
3163
|
this.openHistoryField = null;
|
|
3277
|
-
/** Signed URL for the commons.document archetype's inline file preview. */
|
|
3278
|
-
this.documentPreviewUrl = null;
|
|
3279
3164
|
this.historyClickOutside = null;
|
|
3280
3165
|
this.searchTimers = {};
|
|
3281
3166
|
this.handleViewLoadPage = (e, name) => {
|
|
@@ -3327,7 +3212,7 @@ const MrdLayoutSection = class {
|
|
|
3327
3212
|
}
|
|
3328
3213
|
emitLoadImages() {
|
|
3329
3214
|
for (const item of flattenItems(this.items)) {
|
|
3330
|
-
if (item.type ===
|
|
3215
|
+
if (item.type === clientLayout.ClientLayoutItemType.FIELD && item.dataType === clientLayout.ClientLayoutItemFieldDataType.IMAGE) {
|
|
3331
3216
|
const fieldName = item.name;
|
|
3332
3217
|
const raw = this.data[fieldName];
|
|
3333
3218
|
const href = raw === null || raw === void 0 ? void 0 : raw.href;
|
|
@@ -3399,14 +3284,9 @@ const MrdLayoutSection = class {
|
|
|
3399
3284
|
async openImagePreview(url) {
|
|
3400
3285
|
this.imagePreviewUrl = url;
|
|
3401
3286
|
}
|
|
3402
|
-
/** Provide a resolved signed URL for the commons.document archetype's inline
|
|
3403
|
-
* file preview, in response to mrdLoadDocumentPreview. */
|
|
3404
|
-
async setDocumentPreviewUrl(url) {
|
|
3405
|
-
this.documentPreviewUrl = url;
|
|
3406
|
-
}
|
|
3407
3287
|
resolveSearchKey() {
|
|
3408
3288
|
var _a;
|
|
3409
|
-
const items = flattenItems(this.items).filter(i => i.type ===
|
|
3289
|
+
const items = flattenItems(this.items).filter(i => i.type === clientLayout.ClientLayoutItemType.SEARCH);
|
|
3410
3290
|
if (items.length === 1)
|
|
3411
3291
|
return (_a = items[0].dataClass) !== null && _a !== void 0 ? _a : null;
|
|
3412
3292
|
return null;
|
|
@@ -3469,7 +3349,7 @@ const MrdLayoutSection = class {
|
|
|
3469
3349
|
const parentId = (_f = selfHref.split('/').filter(Boolean).pop()) !== null && _f !== void 0 ? _f : '';
|
|
3470
3350
|
// The API publishes `archetypes` on the VIEW/RELATED_VIEW item itself
|
|
3471
3351
|
// (sibling of `view`), not inside `view`.
|
|
3472
|
-
const docArchetype =
|
|
3352
|
+
const docArchetype = clientLayout.resolveArchetype((_g = item.archetypes) !== null && _g !== void 0 ? _g : (_h = item.view) === null || _h === void 0 ? void 0 : _h.archetypes, clientLayout.ARCHETYPE_DOCUMENT);
|
|
3473
3353
|
// Canonical parent href for single-container seeding: use the RELATED_VIEW's
|
|
3474
3354
|
// fromClass (base class) rather than the route class, so polymorphic subtypes
|
|
3475
3355
|
// resolve to the same container the documents actually reference.
|
|
@@ -3526,7 +3406,7 @@ const MrdLayoutSection = class {
|
|
|
3526
3406
|
this.mrdNavigate.emit({
|
|
3527
3407
|
href: (_b = (_a = row === null || row === void 0 ? void 0 : row._links) === null || _a === void 0 ? void 0 : _a.self) === null || _b === void 0 ? void 0 : _b.href,
|
|
3528
3408
|
label: (_c = row === null || row === void 0 ? void 0 : row.name) !== null && _c !== void 0 ? _c : '',
|
|
3529
|
-
navigateBehaviour: (_d = item.navigateBehaviour) !== null && _d !== void 0 ? _d :
|
|
3409
|
+
navigateBehaviour: (_d = item.navigateBehaviour) !== null && _d !== void 0 ? _d : clientLayout.ClientLayoutNavigateBehaviour.PAGE,
|
|
3530
3410
|
listContext,
|
|
3531
3411
|
});
|
|
3532
3412
|
}, onMrdAction: (e) => {
|
|
@@ -3546,23 +3426,23 @@ const MrdLayoutSection = class {
|
|
|
3546
3426
|
renderItem(item) {
|
|
3547
3427
|
var _a, _b;
|
|
3548
3428
|
switch (item.type) {
|
|
3549
|
-
case
|
|
3429
|
+
case clientLayout.ClientLayoutItemType.FIELD:
|
|
3550
3430
|
return this.renderField(item);
|
|
3551
|
-
case
|
|
3431
|
+
case clientLayout.ClientLayoutItemType.RELATION:
|
|
3552
3432
|
return this.renderRelation(item);
|
|
3553
|
-
case
|
|
3433
|
+
case clientLayout.ClientLayoutItemType.HEADER:
|
|
3554
3434
|
return (index.h("h2", { class: "mrd-layout-section__header", key: `header-${item.label}` }, item.label));
|
|
3555
|
-
case
|
|
3435
|
+
case clientLayout.ClientLayoutItemType.TEXT:
|
|
3556
3436
|
return index.h("div", { class: "mrd-layout-section__text", key: `text-${item.label}`, innerHTML: (_a = item.label) !== null && _a !== void 0 ? _a : '' });
|
|
3557
|
-
case
|
|
3437
|
+
case clientLayout.ClientLayoutItemType.NAVIGATE:
|
|
3558
3438
|
return (index.h("button", { class: "mrd-layout-section__navigate", key: `nav-${item.label}`, onClick: () => { var _a, _b, _c; return this.mrdNavigate.emit({ label: (_a = item.label) !== null && _a !== void 0 ? _a : '', navigate: (_b = item.navigate) !== null && _b !== void 0 ? _b : { dataClass: (_c = item.dataClass) !== null && _c !== void 0 ? _c : '', icon: item.icon, navigationType: item.navigationType } }); } }, item.label));
|
|
3559
|
-
case
|
|
3439
|
+
case clientLayout.ClientLayoutItemType.SEARCH:
|
|
3560
3440
|
return this.renderSearch(item);
|
|
3561
|
-
case
|
|
3562
|
-
case
|
|
3441
|
+
case clientLayout.ClientLayoutItemType.SECTION:
|
|
3442
|
+
case clientLayout.ClientLayoutItemType.GROUP:
|
|
3563
3443
|
return (index.h("div", { class: "mrd-layout-section__group", key: `group-${item.label}` }, item.label && index.h("h3", { class: "mrd-layout-section__group-title" }, item.label), ((_b = item.items) !== null && _b !== void 0 ? _b : []).map(child => this.renderItem(child))));
|
|
3564
|
-
case
|
|
3565
|
-
case
|
|
3444
|
+
case clientLayout.ClientLayoutItemType.RELATED_VIEW:
|
|
3445
|
+
case clientLayout.ClientLayoutItemType.VIEW:
|
|
3566
3446
|
return this.renderRelatedView(item);
|
|
3567
3447
|
default:
|
|
3568
3448
|
return null;
|
|
@@ -3577,18 +3457,17 @@ const MrdLayoutSection = class {
|
|
|
3577
3457
|
* a recognisable document instead of generic fields, keeping any related views/
|
|
3578
3458
|
* searches below it. */
|
|
3579
3459
|
renderDocumentObject(archetype) {
|
|
3580
|
-
|
|
3581
|
-
|
|
3582
|
-
it.type ===
|
|
3583
|
-
it.type === index$1.ClientLayoutItemType.SEARCH);
|
|
3460
|
+
const related = this.items.filter(it => it.type === clientLayout.ClientLayoutItemType.VIEW ||
|
|
3461
|
+
it.type === clientLayout.ClientLayoutItemType.RELATED_VIEW ||
|
|
3462
|
+
it.type === clientLayout.ClientLayoutItemType.SEARCH);
|
|
3584
3463
|
return [
|
|
3585
|
-
index.h("mrd-document-view", { archetype: archetype, data: this.data, locale: this.locale,
|
|
3464
|
+
index.h("mrd-document-view", { archetype: archetype, data: this.data, locale: this.locale, onMrdNavigate: (e) => { e.stopPropagation(); this.mrdNavigate.emit(e.detail); }, onMrdDownload: (e) => { e.stopPropagation(); this.mrdDownload.emit(e.detail); }, onMrdAttachments: (e) => { e.stopPropagation(); this.mrdAttachments.emit(e.detail); } }),
|
|
3586
3465
|
...related.map(it => this.renderItem(it)),
|
|
3587
3466
|
];
|
|
3588
3467
|
}
|
|
3589
3468
|
render() {
|
|
3590
|
-
const docArchetype =
|
|
3591
|
-
return (index.h(index.Host, { key: '
|
|
3469
|
+
const docArchetype = clientLayout.resolveArchetype(this.archetypes, clientLayout.ARCHETYPE_DOCUMENT);
|
|
3470
|
+
return (index.h(index.Host, { key: '8585dae577d38e3c9517039b48aa9e798190937c' }, index.h("div", { key: '020b942996b1346bdc3bc89938e4b020823cfcea', class: "mrd-layout-section" }, docArchetype
|
|
3592
3471
|
? this.renderDocumentObject(docArchetype)
|
|
3593
3472
|
: this.items.map(item => this.renderItem(item))), this.renderImageModal()));
|
|
3594
3473
|
}
|
|
@@ -3728,7 +3607,7 @@ const MrdNumberField = class {
|
|
|
3728
3607
|
this.required = false;
|
|
3729
3608
|
this.disabled = false;
|
|
3730
3609
|
this.locale = navigator.language;
|
|
3731
|
-
this.dataType =
|
|
3610
|
+
this.dataType = clientLayout.ClientLayoutItemFieldDataType.INTEGER;
|
|
3732
3611
|
this.decimalPrecision = 2;
|
|
3733
3612
|
this.displayValue = '';
|
|
3734
3613
|
this.error = '';
|
|
@@ -3767,13 +3646,13 @@ const MrdNumberField = class {
|
|
|
3767
3646
|
}
|
|
3768
3647
|
}
|
|
3769
3648
|
formatForDisplay(val) {
|
|
3770
|
-
if (this.dataType ===
|
|
3649
|
+
if (this.dataType === clientLayout.ClientLayoutItemFieldDataType.PERCENTAGE) {
|
|
3771
3650
|
return formatNumber(val, this.locale, {
|
|
3772
3651
|
minimumFractionDigits: 0,
|
|
3773
3652
|
maximumFractionDigits: this.decimalPrecision,
|
|
3774
3653
|
}) + '%';
|
|
3775
3654
|
}
|
|
3776
|
-
if (this.dataType ===
|
|
3655
|
+
if (this.dataType === clientLayout.ClientLayoutItemFieldDataType.DECIMAL) {
|
|
3777
3656
|
return formatNumber(val, this.locale, {
|
|
3778
3657
|
minimumFractionDigits: this.decimalPrecision,
|
|
3779
3658
|
maximumFractionDigits: this.decimalPrecision,
|
|
@@ -3783,14 +3662,14 @@ const MrdNumberField = class {
|
|
|
3783
3662
|
}
|
|
3784
3663
|
render() {
|
|
3785
3664
|
const hasError = !!this.error;
|
|
3786
|
-
const suffix = this.dataType ===
|
|
3787
|
-
this.dataType ===
|
|
3665
|
+
const suffix = this.dataType === clientLayout.ClientLayoutItemFieldDataType.PERCENTAGE ? '%' :
|
|
3666
|
+
this.dataType === clientLayout.ClientLayoutItemFieldDataType.DECIMAL ? '' : '';
|
|
3788
3667
|
return (index.h(index.Host, { key: '90cae99b332f9554bc80d4044fce892ae37a48cf' }, index.h("div", { key: '26a9cfcc662eaeb571d17785f10f74269cf78537', class: "mrd-number-field" }, index.h(FieldLabel, { key: '0d9e70c1591f309ad2875d9e9fe6dbb8aa910323', base: "mrd-number-field", label: this.label, required: this.required }), index.h("div", { key: '95e9b53fa73c452491f65355915bf04912900ded', class: "mrd-number-field__input-wrapper" }, index.h("input", { key: '1d341c270a21b1a10c51757e90257e48e741abd7', class: controlClass('mrd-number-field', hasError), type: "text", inputMode: "decimal", name: this.name, value: this.displayValue, placeholder: this.placeholder || (suffix ? `0${suffix}` : '0'), required: this.required, disabled: this.disabled, onInput: this.handleInput, onBlur: this.handleBlur, onFocus: this.handleFocus })), index.h(FieldError, { key: '0dba75e0f7355b71bfa71dab16cd1a6fcc36922f', base: "mrd-number-field", error: this.error }))));
|
|
3789
3668
|
}
|
|
3790
3669
|
};
|
|
3791
3670
|
MrdNumberField.style = mrdNumberFieldCss();
|
|
3792
3671
|
|
|
3793
|
-
const mrdRelationFieldCss = () => `.sc-mrd-relation-field-h{display:block}.mrd-relation-field.sc-mrd-relation-field{display:flex;flex-direction:column;gap:var(--mrd-space-1);width:100%;position:relative}.mrd-relation-field__label.sc-mrd-relation-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-relation-field__label--required.sc-mrd-relation-field::after{content:" *";color:var(--mrd-color-danger)}.mrd-relation-field__select.sc-mrd-relation-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-relation-field__select.sc-mrd-relation-field::placeholder{color:var(--mrd-input-placeholder-color)}.mrd-relation-field__select.sc-mrd-relation-field:focus{border-color:var(--mrd-border-color-focus);box-shadow:var(--mrd-shadow-focus)}.mrd-relation-field__select.sc-mrd-relation-field:disabled{background-color:var(--mrd-input-bg-disabled);cursor:not-allowed;opacity:0.7}.mrd-relation-field__select--error.sc-mrd-relation-field{border-color:var(--mrd-border-color-error)}.mrd-relation-field__select--error.sc-mrd-relation-field:focus{box-shadow:var(--mrd-shadow-focus-error)}.mrd-relation-field__select.sc-mrd-relation-field{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--mrd-space-3) center;padding-right:calc(var(--mrd-input-padding-x) + 1.5rem);cursor:pointer}.mrd-relation-field__search.sc-mrd-relation-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-relation-field__search.sc-mrd-relation-field::placeholder{color:var(--mrd-input-placeholder-color)}.mrd-relation-field__search.sc-mrd-relation-field:focus{border-color:var(--mrd-border-color-focus);box-shadow:var(--mrd-shadow-focus)}.mrd-relation-field__search.sc-mrd-relation-field:disabled{background-color:var(--mrd-input-bg-disabled);cursor:not-allowed;opacity:0.7}.mrd-relation-field__search--error.sc-mrd-relation-field{border-color:var(--mrd-border-color-error)}.mrd-relation-field__search--error.sc-mrd-relation-field:focus{box-shadow:var(--mrd-shadow-focus-error)}.mrd-relation-field__error.sc-mrd-relation-field{font-family:var(--mrd-font-family);font-size:var(--mrd-error-font-size);color:var(--mrd-error-color)}.mrd-relation-field__tags.sc-mrd-relation-field{display:flex;flex-wrap:wrap;gap:var(--mrd-space-1);margin-bottom:var(--mrd-space-1)}.mrd-relation-field__tag.sc-mrd-relation-field{display:inline-flex;align-items:center;gap:var(--mrd-space-1);padding:var(--mrd-space-1) var(--mrd-space-2);background-color:var(--mrd-color-primary-light);color:var(--mrd-color-primary-dark);border-radius:var(--mrd-border-radius-full);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium)}.mrd-relation-field__tag-remove.sc-mrd-relation-field{background:none;border:none;cursor:pointer;color:var(--mrd-color-primary-dark);font-size:var(--mrd-font-size-xs);padding:0;line-height:1;opacity:0.7}.mrd-relation-field__tag-remove.sc-mrd-relation-field:hover{opacity:1}.mrd-relation-field__search-wrapper.sc-mrd-relation-field{position:relative;display:flex;align-items:center}.mrd-relation-field__spinner.sc-mrd-relation-field{position:absolute;right:var(--mrd-space-3);width:16px;height:16px;border:2px solid var(--mrd-color-neutral-200);border-top-color:var(--mrd-color-primary);border-radius:50%;animation:mrd-spin 0.7s linear infinite}
|
|
3672
|
+
const mrdRelationFieldCss = () => `.sc-mrd-relation-field-h{display:block}.mrd-relation-field.sc-mrd-relation-field{display:flex;flex-direction:column;gap:var(--mrd-space-1);width:100%;position:relative}.mrd-relation-field__label.sc-mrd-relation-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-relation-field__label--required.sc-mrd-relation-field::after{content:" *";color:var(--mrd-color-danger)}.mrd-relation-field__select.sc-mrd-relation-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-relation-field__select.sc-mrd-relation-field::placeholder{color:var(--mrd-input-placeholder-color)}.mrd-relation-field__select.sc-mrd-relation-field:focus{border-color:var(--mrd-border-color-focus);box-shadow:var(--mrd-shadow-focus)}.mrd-relation-field__select.sc-mrd-relation-field:disabled{background-color:var(--mrd-input-bg-disabled);cursor:not-allowed;opacity:0.7}.mrd-relation-field__select--error.sc-mrd-relation-field{border-color:var(--mrd-border-color-error)}.mrd-relation-field__select--error.sc-mrd-relation-field:focus{box-shadow:var(--mrd-shadow-focus-error)}.mrd-relation-field__select.sc-mrd-relation-field{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--mrd-space-3) center;padding-right:calc(var(--mrd-input-padding-x) + 1.5rem);cursor:pointer}.mrd-relation-field__search.sc-mrd-relation-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-relation-field__search.sc-mrd-relation-field::placeholder{color:var(--mrd-input-placeholder-color)}.mrd-relation-field__search.sc-mrd-relation-field:focus{border-color:var(--mrd-border-color-focus);box-shadow:var(--mrd-shadow-focus)}.mrd-relation-field__search.sc-mrd-relation-field:disabled{background-color:var(--mrd-input-bg-disabled);cursor:not-allowed;opacity:0.7}.mrd-relation-field__search--error.sc-mrd-relation-field{border-color:var(--mrd-border-color-error)}.mrd-relation-field__search--error.sc-mrd-relation-field:focus{box-shadow:var(--mrd-shadow-focus-error)}.mrd-relation-field__error.sc-mrd-relation-field{font-family:var(--mrd-font-family);font-size:var(--mrd-error-font-size);color:var(--mrd-error-color)}.mrd-relation-field__tags.sc-mrd-relation-field{display:flex;flex-wrap:wrap;gap:var(--mrd-space-1);margin-bottom:var(--mrd-space-1)}.mrd-relation-field__tag.sc-mrd-relation-field{display:inline-flex;align-items:center;gap:var(--mrd-space-1);padding:var(--mrd-space-1) var(--mrd-space-2);background-color:var(--mrd-color-primary-light);color:var(--mrd-color-primary-dark);border-radius:var(--mrd-border-radius-full);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium)}.mrd-relation-field__tag-remove.sc-mrd-relation-field{background:none;border:none;cursor:pointer;color:var(--mrd-color-primary-dark);font-size:var(--mrd-font-size-xs);padding:0;line-height:1;opacity:0.7}.mrd-relation-field__tag-remove.sc-mrd-relation-field:hover{opacity:1}.mrd-relation-field__search-wrapper.sc-mrd-relation-field{position:relative;display:flex;align-items:center}.mrd-relation-field__spinner.sc-mrd-relation-field{position:absolute;right:var(--mrd-space-3);width:16px;height:16px;border:2px solid var(--mrd-color-neutral-200);border-top-color:var(--mrd-color-primary);border-radius:50%;animation:mrd-spin 0.7s linear infinite}.mrd-relation-field__results.sc-mrd-relation-field{position:absolute;top:calc(100% + var(--mrd-space-1));left:0;right:0;background-color:var(--mrd-color-white);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);box-shadow:var(--mrd-shadow-md);z-index:var(--mrd-z-dropdown);max-height:240px;overflow-y:auto}.mrd-relation-field__result-item.sc-mrd-relation-field{display:flex;flex-direction:column;padding:var(--mrd-space-2) var(--mrd-space-3);cursor:pointer;transition:background-color var(--mrd-transition-fast)}.mrd-relation-field__result-item.sc-mrd-relation-field:hover{background-color:var(--mrd-color-neutral-50)}.mrd-relation-field__result-item.sc-mrd-relation-field:not(:last-child){border-bottom:var(--mrd-border-width) solid var(--mrd-color-neutral-100)}.mrd-relation-field__result-item--highlighted.sc-mrd-relation-field{background-color:var(--mrd-color-primary-light)}.mrd-relation-field__result-label.sc-mrd-relation-field{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-color-neutral-800);font-weight:var(--mrd-font-weight-medium)}.mrd-relation-field__result-desc.sc-mrd-relation-field{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500);margin-top:var(--mrd-space-1)}.mrd-relation-field__selected-value.sc-mrd-relation-field{display:flex;align-items:center;gap:var(--mrd-space-2);height:var(--mrd-input-height);padding:var(--mrd-input-padding-y) var(--mrd-input-padding-x);background-color:var(--mrd-color-primary-light);border:var(--mrd-border-width) solid var(--mrd-color-primary);border-radius:var(--mrd-border-radius);box-sizing:border-box}.mrd-relation-field__selected-value--error.sc-mrd-relation-field{border-color:var(--mrd-border-color-error);background-color:var(--mrd-color-danger-light)}.mrd-relation-field__selected-name.sc-mrd-relation-field{flex:1;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-primary-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mrd-relation-field__selected-clear.sc-mrd-relation-field{flex-shrink:0;background:none;border:none;cursor:pointer;color:var(--mrd-color-primary-dark);font-size:var(--mrd-font-size-sm);padding:0;line-height:1;opacity:0.6;transition:opacity var(--mrd-transition-fast)}.mrd-relation-field__selected-clear.sc-mrd-relation-field:hover{opacity:1}.mrd-relation-field__no-results.sc-mrd-relation-field{padding:var(--mrd-space-4);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-500);text-align:center}@keyframes mrd-spin{to{transform:rotate(360deg)}}`;
|
|
3794
3673
|
|
|
3795
3674
|
const MrdRelationField = class {
|
|
3796
3675
|
constructor(hostRef) {
|
|
@@ -3807,7 +3686,7 @@ const MrdRelationField = class {
|
|
|
3807
3686
|
this.relatedClass = '';
|
|
3808
3687
|
/** When set, used instead of relatedClass for search queries (mostSignificantClass from API). */
|
|
3809
3688
|
this.mostSignificantClass = '';
|
|
3810
|
-
this.displayType =
|
|
3689
|
+
this.displayType = clientLayout.ClientLayoutItemRelationDisplayType.SEARCH;
|
|
3811
3690
|
this.multiple = false;
|
|
3812
3691
|
this.dropdownValues = [];
|
|
3813
3692
|
/** Plain href string/array for normal use; pass { id, label } objects to pre-fill a loaded record. */
|
|
@@ -3926,7 +3805,7 @@ const MrdRelationField = class {
|
|
|
3926
3805
|
return v;
|
|
3927
3806
|
}
|
|
3928
3807
|
allRecordsChanged() {
|
|
3929
|
-
if (this.editBehavior !==
|
|
3808
|
+
if (this.editBehavior !== clientLayout.ClientLayoutItemRelationEditBehavior.DROPDOWN)
|
|
3930
3809
|
return;
|
|
3931
3810
|
const current = this.getValueHref();
|
|
3932
3811
|
if (!current)
|
|
@@ -3995,7 +3874,7 @@ const MrdRelationField = class {
|
|
|
3995
3874
|
}
|
|
3996
3875
|
componentDidLoad() {
|
|
3997
3876
|
// Only emit when there is no commonRelation dependency — the form orchestrates those.
|
|
3998
|
-
if (this.editBehavior ===
|
|
3877
|
+
if (this.editBehavior === clientLayout.ClientLayoutItemRelationEditBehavior.DROPDOWN && !this.commonRelation) {
|
|
3999
3878
|
// Defer to next tick so parent event listeners are registered after DOM patching
|
|
4000
3879
|
setTimeout(() => {
|
|
4001
3880
|
this.mrdFetchAll.emit({
|
|
@@ -4009,11 +3888,11 @@ const MrdRelationField = class {
|
|
|
4009
3888
|
render() {
|
|
4010
3889
|
var _a, _b;
|
|
4011
3890
|
const hasError = !!this.error;
|
|
4012
|
-
if (this.editBehavior ===
|
|
3891
|
+
if (this.editBehavior === clientLayout.ClientLayoutItemRelationEditBehavior.DROPDOWN) {
|
|
4013
3892
|
const currentValue = this.getValueHref();
|
|
4014
3893
|
return (index.h(index.Host, null, index.h("div", { class: "mrd-relation-field" }, index.h(FieldLabel, { base: "mrd-relation-field", label: this.label, required: this.required }), index.h("select", { class: controlClass('mrd-relation-field', hasError, 'select'), name: this.name, required: this.required, disabled: this.disabled, onChange: this.handleDropdownChange }, index.h("option", { value: "" }, t('select_placeholder', this.locale)), this.allRecords.map(record => (index.h("option", { key: record.id, value: record.id, selected: record.id === currentValue }, record.label)))), index.h(FieldError, { base: "mrd-relation-field", error: this.error }))));
|
|
4015
3894
|
}
|
|
4016
|
-
if (this.displayType ===
|
|
3895
|
+
if (this.displayType === clientLayout.ClientLayoutItemRelationDisplayType.DROPDOWN) {
|
|
4017
3896
|
const currentValue = Array.isArray(this.value) ? ((_a = this.value[0]) !== null && _a !== void 0 ? _a : '') : ((_b = this.value) !== null && _b !== void 0 ? _b : '');
|
|
4018
3897
|
return (index.h(index.Host, null, index.h("div", { class: "mrd-relation-field" }, index.h(FieldLabel, { base: "mrd-relation-field", label: this.label, required: this.required }), index.h("select", { class: controlClass('mrd-relation-field', hasError, 'select'), name: this.name, required: this.required, disabled: this.disabled, onChange: this.handleDropdownChange }, index.h("option", { value: "" }, t('select_placeholder', this.locale)), this.dropdownValues.map(dv => (index.h("option", { key: dv.key, value: dv.key, selected: dv.key === currentValue }, dv.label)))), index.h(FieldError, { base: "mrd-relation-field", error: this.error }))));
|
|
4019
3898
|
}
|
|
@@ -4291,14 +4170,11 @@ const TableCell = ({ col, row, locale, onDownload, onOpenTextblock, onOpenJson }
|
|
|
4291
4170
|
};
|
|
4292
4171
|
/** Formats the aggregation total for one column, '' when not applicable. */
|
|
4293
4172
|
function formatAggregationValue(col, aggregations, locale) {
|
|
4294
|
-
var _a;
|
|
4173
|
+
var _a, _b;
|
|
4295
4174
|
if (col.type !== 'FIELD' || !col.aggregate || !aggregations)
|
|
4296
4175
|
return '';
|
|
4297
4176
|
const fn = col.aggregate.toLowerCase();
|
|
4298
|
-
const
|
|
4299
|
-
const val = typeof aggData === 'object' && aggData !== null
|
|
4300
|
-
? aggData[(_a = col.name) !== null && _a !== void 0 ? _a : '']
|
|
4301
|
-
: undefined;
|
|
4177
|
+
const val = (_a = aggregations[fn]) === null || _a === void 0 ? void 0 : _a[(_b = col.name) !== null && _b !== void 0 ? _b : ''];
|
|
4302
4178
|
if (val == null)
|
|
4303
4179
|
return '';
|
|
4304
4180
|
const dt = col.dataType;
|
|
@@ -4501,7 +4377,7 @@ function getStalePages(requestedAt, now, timeoutMs) {
|
|
|
4501
4377
|
return stale;
|
|
4502
4378
|
}
|
|
4503
4379
|
|
|
4504
|
-
const mrdTableCss = () => `@charset "UTF-8";.sc-mrd-table-h{display:block;width:100%}.mrd-table__scroll.sc-mrd-table{overflow-y:auto;overflow-x:auto;border:1px solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);overflow-anchor:none}.mrd-table.sc-mrd-table{overflow-x:auto}.mrd-table__table.sc-mrd-table{width:auto;min-width:100%;border-collapse:collapse;font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-900)}.mrd-table__scroll.sc-mrd-table .mrd-table__table.sc-mrd-table{min-width:max-content}.mrd-table__header.sc-mrd-table{position:sticky;top:0;z-index:1;background:var(--mrd-color-white);text-align:left;padding:var(--mrd-space-2) var(--mrd-space-4);border-bottom:2px solid var(--mrd-border-color);color:var(--mrd-color-neutral-600);font-weight:var(--mrd-font-weight-medium);white-space:nowrap;font-size:var(--mrd-font-size-xs);text-transform:uppercase;letter-spacing:0.04em}.mrd-table__header--sortable.sc-mrd-table{cursor:pointer;user-select:none}.mrd-table__header--sortable.sc-mrd-table:hover{background:var(--mrd-color-neutral-50);color:var(--mrd-color-neutral-800)}.mrd-table__header--sorted-asc.sc-mrd-table,.mrd-table__header--sorted-desc.sc-mrd-table{color:var(--mrd-color-primary);border-bottom-color:var(--mrd-color-primary)}.mrd-table__header-label.sc-mrd-table{margin-right:var(--mrd-space-1)}.mrd-table__sort-icon.sc-mrd-table{font-size:0.85rem;opacity:0.4;vertical-align:middle}.mrd-table__header--sorted-asc.sc-mrd-table .mrd-table__sort-icon.sc-mrd-table,.mrd-table__header--sorted-desc.sc-mrd-table .mrd-table__sort-icon.sc-mrd-table{opacity:1;color:var(--mrd-color-primary)}.mrd-table__filter-icon.sc-mrd-table{display:inline-flex;align-items:center;vertical-align:middle;margin-left:var(--mrd-space-1);color:var(--mrd-color-primary)}.mrd-table__row.sc-mrd-table{border-bottom:1px solid var(--mrd-border-color)}.mrd-table__row.sc-mrd-table:hover{background:var(--mrd-color-neutral-200) !important}.mrd-table__row--clickable.sc-mrd-table{cursor:pointer}.mrd-table__spacer.sc-mrd-table{border:none}.mrd-table__spacer.sc-mrd-table td.sc-mrd-table{padding:0;border:none}.mrd-table__cell.sc-mrd-table{padding:var(--mrd-space-2) var(--mrd-space-4);vertical-align:top;white-space:nowrap}.mrd-table__cell--numeric.sc-mrd-table{text-align:right;font-variant-numeric:tabular-nums}.mrd-table__row--loading.sc-mrd-table{background:transparent}.mrd-table__cell--placeholder.sc-mrd-table{padding:var(--mrd-space-2) var(--mrd-space-4);border-bottom:1px solid var(--mrd-border-color)}.mrd-table__placeholder-bar.sc-mrd-table{display:block;height:0.75rem;width:55%;border-radius:var(--mrd-border-radius-sm);background:linear-gradient(90deg, var(--mrd-color-neutral-200) 25%, var(--mrd-color-neutral-100) 50%, var(--mrd-color-neutral-200) 75%);background-size:200% 100%;animation:mrd-shimmer 1.4s ease infinite}@keyframes mrd-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}.mrd-table__row--failed.sc-mrd-table{background:transparent}.mrd-table__cell--failed.sc-mrd-table{padding:var(--mrd-space-2) var(--mrd-space-4);border-bottom:1px solid var(--mrd-border-color)}.mrd-table__retry-button.sc-mrd-table{border:none;background:none;padding:0;color:var(--mrd-color-danger);font-size:inherit;cursor:pointer;text-decoration:underline}.mrd-table__toolbar.sc-mrd-table{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--mrd-space-2)}.mrd-table__toolbar-left.sc-mrd-table,.mrd-table__toolbar-right.sc-mrd-table{display:flex;gap:var(--mrd-space-2);align-items:center}.mrd-table__toolbar-center.sc-mrd-table{flex:1;display:flex;justify-content:center;align-items:center;gap:var(--mrd-space-1)}.mrd-table__view-switcher.sc-mrd-table{display:flex;align-items:center;gap:var(--mrd-space-1)}.mrd-table__view-arrow.sc-mrd-table{background:none;border:none;cursor:pointer;padding:0 var(--mrd-space-1);color:var(--mrd-color-neutral-500);font-size:var(--mrd-font-size-xs);line-height:1}.mrd-table__view-arrow.sc-mrd-table:hover{color:var(--mrd-color-neutral-800)}.mrd-table__view-title-wrap.sc-mrd-table{position:relative}.mrd-table__view-title.sc-mrd-table{font-size:var(--mrd-font-size-sm);font-weight:600;color:var(--mrd-color-neutral-800);font-family:var(--mrd-font-family);background:none;border:none;outline:none;cursor:pointer;padding:0 var(--mrd-space-1);max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mrd-table__view-title.sc-mrd-table:hover{color:var(--mrd-color-primary)}.mrd-table__view-popover.sc-mrd-table{position:absolute;top:calc(100% + var(--mrd-space-1));left:50%;transform:translateX(-50%);background:var(--mrd-color-white);border:1px solid var(--mrd-color-neutral-200);border-radius:var(--mrd-radius-md);box-shadow:var(--mrd-shadow-md);z-index:100;min-width:160px;padding:var(--mrd-space-1) 0}.mrd-table__view-popover-item.sc-mrd-table{display:block;width:100%;text-align:left;background:none;border:none;cursor:pointer;padding:var(--mrd-space-2) var(--mrd-space-3);font-size:var(--mrd-font-size-sm);font-family:var(--mrd-font-family);color:var(--mrd-color-neutral-700);white-space:nowrap}.mrd-table__view-popover-item.sc-mrd-table:hover{background:var(--mrd-color-neutral-50)}.mrd-table__view-popover-item--active.sc-mrd-table{font-weight:600;color:var(--mrd-color-primary)}.mrd-table__action.sc-mrd-table{position:relative;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;background:transparent;border:1px solid transparent;border-radius:var(--mrd-border-radius);cursor:pointer;color:var(--mrd-color-neutral-400);transition:background-color 0.15s, border-color 0.15s, color 0.15s}.mrd-table__action.sc-mrd-table:hover{background-color:var(--mrd-color-neutral-100);border-color:var(--mrd-color-neutral-300);color:var(--mrd-color-neutral-700)}.mrd-table__action.sc-mrd-table:disabled{opacity:0.4;cursor:not-allowed}.mrd-table__action--primary.sc-mrd-table{color:var(--mrd-color-neutral-500)}.mrd-table__action--primary.sc-mrd-table:hover{background:var(--mrd-color-primary);border-color:var(--mrd-color-primary);color:var(--mrd-color-white)}.mrd-table__action--danger.sc-mrd-table{color:var(--mrd-color-error)}.mrd-table__action--danger.sc-mrd-table:hover{background-color:var(--mrd-color-error-light, #fef2f2);border-color:var(--mrd-color-error)}.mrd-table__action-icon.sc-mrd-table{width:1.25rem;height:1.25rem;pointer-events:none;fill:currentColor}.mrd-table__action-tooltip.sc-mrd-table{display:none;position:absolute;bottom:calc(100% + 6px);right:0;padding:var(--mrd-space-1) var(--mrd-space-2);font-size:var(--mrd-font-size-xs);white-space:nowrap;background:var(--mrd-color-tooltip, #fffce1);color:var(--mrd-color-neutral-900);border:1px solid var(--mrd-border-color);border-radius:var(--mrd-border-radius-sm, var(--mrd-border-radius));pointer-events:none;z-index:10}.mrd-table__action.sc-mrd-table:hover .mrd-table__action-tooltip.sc-mrd-table{display:block}.mrd-table__create-picker-wrap.sc-mrd-table{position:relative}.mrd-table__create-picker.sc-mrd-table{position:absolute;right:0;top:calc(100% + 4px);background:var(--mrd-color-white, #fff);border:1px solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);box-shadow:var(--mrd-shadow-md, 0 4px 12px rgba(0, 0, 0, 0.12));z-index:10;min-width:10rem;padding:var(--mrd-space-1) 0}.mrd-table__create-picker-item.sc-mrd-table{display:block;width:100%;text-align:left;padding:var(--mrd-space-2) var(--mrd-space-3);background:none;border:none;cursor:pointer;font-size:var(--mrd-font-size-sm);font-family:var(--mrd-font-family);color:var(--mrd-color-neutral-800)}.mrd-table__create-picker-item.sc-mrd-table:hover{background:var(--mrd-color-neutral-50);color:var(--mrd-color-neutral-900)}.mrd-table__filter-toggle--active.sc-mrd-table{background:var(--mrd-color-primary);border-color:var(--mrd-color-primary);color:var(--mrd-color-white)}.mrd-table__filter-toggle--active.sc-mrd-table:hover{background:var(--mrd-color-primary-dark, var(--mrd-color-primary));border-color:var(--mrd-color-primary-dark, var(--mrd-color-primary));color:var(--mrd-color-white)}.mrd-table__filter-badge.sc-mrd-table{position:absolute;top:-6px;right:-6px;min-width:1.25rem;height:1.25rem;padding:0 3px;background:var(--mrd-color-error, #e53e3e);color:var(--mrd-color-white);border-radius:9999px;font-size:0.65rem;font-weight:var(--mrd-font-weight-medium);line-height:1.25rem;text-align:center;pointer-events:none}.mrd-table__header--filtered.sc-mrd-table{color:var(--mrd-color-primary);border-bottom-color:var(--mrd-color-primary)}.mrd-table__filter-popup.sc-mrd-table{position:fixed;width:280px;background:var(--mrd-color-white);border:1px solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);box-shadow:var(--mrd-shadow-md, 0 4px 12px rgba(0, 0, 0, 0.12));z-index:var(--mrd-z-dropdown, 200);font-size:var(--mrd-font-size-sm)}.mrd-table__filter-popup-header.sc-mrd-table{display:flex;align-items:center;justify-content:space-between;padding:var(--mrd-space-2) var(--mrd-space-3);border-bottom:1px solid var(--mrd-border-color)}.mrd-table__filter-popup-title.sc-mrd-table{font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-800);font-size:var(--mrd-font-size-sm)}.mrd-table__filter-close.sc-mrd-table{background:transparent;border:none;cursor:pointer;color:var(--mrd-color-neutral-500);font-size:0.9rem;padding:2px 4px;border-radius:3px;line-height:1}.mrd-table__filter-close.sc-mrd-table:hover{background:var(--mrd-color-neutral-100);color:var(--mrd-color-neutral-800)}.mrd-table__filter-section.sc-mrd-table{padding:var(--mrd-space-2) var(--mrd-space-3)}.mrd-table__filter-section-label.sc-mrd-table{font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);text-transform:uppercase;letter-spacing:0.04em;color:var(--mrd-color-neutral-500);margin-bottom:var(--mrd-space-2)}.mrd-table__filter-sort-buttons.sc-mrd-table{display:flex;gap:var(--mrd-space-2)}.mrd-table__filter-sort-btn.sc-mrd-table{flex:1;padding:var(--mrd-space-1) var(--mrd-space-2);background:transparent;border:1px solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);cursor:pointer;font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-700)}.mrd-table__filter-sort-btn.sc-mrd-table:hover{background:var(--mrd-color-neutral-100)}.mrd-table__filter-sort-btn--active.sc-mrd-table{background:var(--mrd-color-primary);border-color:var(--mrd-color-primary);color:var(--mrd-color-white)}.mrd-table__filter-divider.sc-mrd-table{height:1px;background:var(--mrd-border-color);margin:0}.mrd-table__filter-editor.sc-mrd-table{display:flex;flex-direction:column;gap:var(--mrd-space-2)}.mrd-table__filter-select.sc-mrd-table,.mrd-table__filter-input.sc-mrd-table{width:100%;padding:var(--mrd-space-1) var(--mrd-space-2);border:1px solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-900);background:var(--mrd-color-white);box-sizing:border-box}.mrd-table__filter-select.sc-mrd-table:focus,.mrd-table__filter-input.sc-mrd-table:focus{outline:none;border-color:var(--mrd-color-primary);box-shadow:0 0 0 2px rgba(0, 0, 0, 0.06)}.mrd-table__filter-range.sc-mrd-table{display:flex;align-items:center;gap:var(--mrd-space-1)}.mrd-table__filter-range.sc-mrd-table .mrd-table__filter-input.sc-mrd-table{flex:1;min-width:0}.mrd-table__filter-range-sep.sc-mrd-table{color:var(--mrd-color-neutral-400);flex-shrink:0}.mrd-table__filter-range--stacked.sc-mrd-table{flex-direction:column;align-items:stretch;gap:var(--mrd-space-2)}.mrd-table__filter-range-label.sc-mrd-table{font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500);margin-bottom:2px}.mrd-table__filter-radio-group.sc-mrd-table{display:flex;flex-direction:column;gap:var(--mrd-space-1)}.mrd-table__filter-radio-group--inline.sc-mrd-table{flex-direction:row;gap:var(--mrd-space-3)}.mrd-table__filter-radio-label.sc-mrd-table{display:flex;align-items:center;gap:var(--mrd-space-1);cursor:pointer;font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-800)}.mrd-table__filter-list.sc-mrd-table{display:flex;flex-direction:column;gap:var(--mrd-space-1);max-height:180px;overflow-y:auto}.mrd-table__filter-list-controls.sc-mrd-table{display:flex;gap:var(--mrd-space-2);margin-bottom:var(--mrd-space-1)}.mrd-table__filter-list-btn.sc-mrd-table{font-size:var(--mrd-font-size-xs);color:var(--mrd-color-primary);background:transparent;border:none;cursor:pointer;padding:0;text-decoration:underline}.mrd-table__filter-checkbox-label.sc-mrd-table{display:flex;align-items:center;gap:var(--mrd-space-1);cursor:pointer;font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-800)}.mrd-table__filter-no-support.sc-mrd-table{font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-500);margin:0;font-style:italic}.mrd-table__filter-popup-footer.sc-mrd-table{display:flex;justify-content:flex-end;gap:var(--mrd-space-2);padding:var(--mrd-space-2) var(--mrd-space-3);border-top:1px solid var(--mrd-border-color)}.mrd-table__filter-btn.sc-mrd-table{padding:var(--mrd-space-1) var(--mrd-space-3);border-radius:var(--mrd-border-radius);border:1px solid var(--mrd-border-color);font-size:var(--mrd-font-size-sm);cursor:pointer}.mrd-table__filter-btn--clear.sc-mrd-table{background:transparent;color:var(--mrd-color-neutral-600)}.mrd-table__filter-btn--clear.sc-mrd-table:hover{background:var(--mrd-color-neutral-100)}.mrd-table__filter-btn--apply.sc-mrd-table{background:var(--mrd-color-primary);border-color:var(--mrd-color-primary);color:var(--mrd-color-white)}.mrd-table__filter-btn--apply.sc-mrd-table:hover{background:var(--mrd-color-primary-dark, var(--mrd-color-primary));border-color:var(--mrd-color-primary-dark, var(--mrd-color-primary))}.mrd-table__totals-row.sc-mrd-table{border-top:2px solid var(--mrd-border-color)}.mrd-table__totals-cell.sc-mrd-table{position:sticky;bottom:0;z-index:2;padding:var(--mrd-space-2) var(--mrd-space-4);background:var(--mrd-color-white);font-weight:var(--mrd-font-weight-medium);font-variant-numeric:tabular-nums;white-space:nowrap;border-top:2px solid var(--mrd-border-color)}.mrd-table__totals-cell--numeric.sc-mrd-table{text-align:right}.mrd-table__footer.sc-mrd-table{padding:var(--mrd-space-1) var(--mrd-space-2);font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500);text-align:right}.mrd-table__empty.sc-mrd-table{padding:var(--mrd-space-4) var(--mrd-space-3);color:var(--mrd-color-neutral-500);font-size:var(--mrd-font-size-sm);text-align:center;margin:0}.mrd-table__file-btn.sc-mrd-table{display:inline-flex;align-items:center;gap:var(--mrd-space-1);background:none;border:none;padding:0;cursor:pointer;color:var(--mrd-color-primary);font-size:var(--mrd-font-size-sm);font-family:inherit;max-width:100%;overflow:hidden}.mrd-table__file-btn.sc-mrd-table:hover{text-decoration:underline;color:var(--mrd-color-primary-dark)}.mrd-table__file-icon.sc-mrd-table{flex-shrink:0;width:1rem;height:1rem}.mrd-table__textblock-btn.sc-mrd-table{display:inline;background:none;border:none;padding:0 0 0 var(--mrd-space-1);cursor:pointer;color:var(--mrd-color-primary);font-size:var(--mrd-font-size-sm);font-family:inherit;line-height:inherit;vertical-align:middle}.mrd-table__textblock-btn.sc-mrd-table:hover{color:var(--mrd-color-primary-dark)}.mrd-table__modal-backdrop.sc-mrd-table{position:fixed;inset:0;background:rgba(0, 0, 0, 0.4);z-index:var(--mrd-z-modal, 300);display:flex;align-items:center;justify-content:center}.mrd-table__modal.sc-mrd-table{background:#fff;border-radius:var(--mrd-radius-md, 0.5rem);padding:var(--mrd-space-6);max-width:min(600px, 90vw);max-height:70vh;overflow-y:auto;position:relative;box-shadow:var(--mrd-shadow-lg)}.mrd-table__modal-close.sc-mrd-table{position:absolute;top:var(--mrd-space-3);right:var(--mrd-space-3);background:none;border:none;cursor:pointer;font-size:1.25rem;line-height:1;color:var(--mrd-color-text-muted, #6b7280);padding:0}.mrd-table__modal-close.sc-mrd-table:hover{color:var(--mrd-color-text, #111827)}.mrd-table__modal-text.sc-mrd-table{margin:0;padding-right:var(--mrd-space-6);white-space:pre-wrap;word-break:break-word;font-size:var(--mrd-font-size-sm);line-height:1.6}.mrd-table__json-preview.sc-mrd-table{font-family:var(--mrd-font-family-mono);font-size:var(--mrd-font-size-xs);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block;max-width:calc(100% - 1.5rem);vertical-align:middle}.mrd-table__modal-json.sc-mrd-table{margin:0;padding-right:var(--mrd-space-6);font-family:var(--mrd-font-family-mono);font-size:var(--mrd-font-size-xs);white-space:pre-wrap;word-break:break-word;line-height:1.6;background:none;border:none}`;
|
|
4380
|
+
const mrdTableCss = () => `.sc-mrd-table-h{display:block;width:100%}.mrd-table.sc-mrd-table{overflow-x:auto}.mrd-table__scroll.sc-mrd-table{overflow-y:auto;overflow-x:auto;border:1px solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);overflow-anchor:none}.mrd-table__table.sc-mrd-table{width:auto;min-width:100%;border-collapse:collapse;font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-900)}.mrd-table__scroll.sc-mrd-table .mrd-table__table.sc-mrd-table{min-width:max-content}.mrd-table__header.sc-mrd-table{position:sticky;top:0;z-index:1;background:var(--mrd-color-white);text-align:left;padding:var(--mrd-space-2) var(--mrd-space-4);border-bottom:2px solid var(--mrd-border-color);color:var(--mrd-color-neutral-600);font-weight:var(--mrd-font-weight-medium);white-space:nowrap;font-size:var(--mrd-font-size-xs);text-transform:uppercase;letter-spacing:0.04em}.mrd-table__header--sortable.sc-mrd-table{cursor:pointer;user-select:none}.mrd-table__header--sortable.sc-mrd-table:hover{background:var(--mrd-color-neutral-50);color:var(--mrd-color-neutral-800)}.mrd-table__header--sorted-asc.sc-mrd-table,.mrd-table__header--sorted-desc.sc-mrd-table{color:var(--mrd-color-primary);border-bottom-color:var(--mrd-color-primary)}.mrd-table__header--filtered.sc-mrd-table{color:var(--mrd-color-primary);border-bottom-color:var(--mrd-color-primary)}.mrd-table__header-label.sc-mrd-table{margin-right:var(--mrd-space-1)}.mrd-table__sort-icon.sc-mrd-table{font-size:0.85rem;opacity:0.4;vertical-align:middle}.mrd-table__header--sorted-asc.sc-mrd-table .mrd-table__sort-icon.sc-mrd-table,.mrd-table__header--sorted-desc.sc-mrd-table .mrd-table__sort-icon.sc-mrd-table{opacity:1;color:var(--mrd-color-primary)}.mrd-table__filter-icon.sc-mrd-table{display:inline-flex;align-items:center;vertical-align:middle;margin-left:var(--mrd-space-1);color:var(--mrd-color-primary)}.mrd-table__row.sc-mrd-table{border-bottom:1px solid var(--mrd-border-color)}.mrd-table__row.sc-mrd-table:hover{background:var(--mrd-color-neutral-200) !important}.mrd-table__row--clickable.sc-mrd-table{cursor:pointer}.mrd-table__row--loading.sc-mrd-table{background:transparent}.mrd-table__row--failed.sc-mrd-table{background:transparent}.mrd-table__spacer.sc-mrd-table{border:none}.mrd-table__spacer.sc-mrd-table td.sc-mrd-table{padding:0;border:none}.mrd-table__cell.sc-mrd-table{padding:var(--mrd-space-2) var(--mrd-space-4);vertical-align:top;white-space:nowrap}.mrd-table__cell--numeric.sc-mrd-table{text-align:right;font-variant-numeric:tabular-nums}.mrd-table__cell--placeholder.sc-mrd-table{padding:var(--mrd-space-2) var(--mrd-space-4);border-bottom:1px solid var(--mrd-border-color)}.mrd-table__cell--failed.sc-mrd-table{padding:var(--mrd-space-2) var(--mrd-space-4);border-bottom:1px solid var(--mrd-border-color)}.mrd-table__placeholder-bar.sc-mrd-table{display:block;height:0.75rem;width:55%;border-radius:var(--mrd-border-radius-sm);background:linear-gradient(90deg, var(--mrd-color-neutral-200) 25%, var(--mrd-color-neutral-100) 50%, var(--mrd-color-neutral-200) 75%);background-size:200% 100%;animation:mrd-shimmer 1.4s ease infinite}.mrd-table__retry-button.sc-mrd-table{border:none;background:none;padding:0;color:var(--mrd-color-danger);font-size:inherit;cursor:pointer;text-decoration:underline}.mrd-table__toolbar.sc-mrd-table{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--mrd-space-2)}.mrd-table__toolbar-left.sc-mrd-table,.mrd-table__toolbar-right.sc-mrd-table{display:flex;gap:var(--mrd-space-2);align-items:center}.mrd-table__toolbar-center.sc-mrd-table{flex:1;display:flex;justify-content:center;align-items:center;gap:var(--mrd-space-1)}.mrd-table__view-switcher.sc-mrd-table{display:flex;align-items:center;gap:var(--mrd-space-1)}.mrd-table__view-arrow.sc-mrd-table{background:none;border:none;cursor:pointer;padding:0 var(--mrd-space-1);color:var(--mrd-color-neutral-500);font-size:var(--mrd-font-size-xs);line-height:1}.mrd-table__view-arrow.sc-mrd-table:hover{color:var(--mrd-color-neutral-800)}.mrd-table__view-title-wrap.sc-mrd-table{position:relative}.mrd-table__view-title.sc-mrd-table{font-size:var(--mrd-font-size-sm);font-weight:600;color:var(--mrd-color-neutral-800);font-family:var(--mrd-font-family);background:none;border:none;outline:none;cursor:pointer;padding:0 var(--mrd-space-1);max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mrd-table__view-title.sc-mrd-table:hover{color:var(--mrd-color-primary)}.mrd-table__view-popover.sc-mrd-table{position:absolute;top:calc(100% + var(--mrd-space-1));left:50%;transform:translateX(-50%);background:var(--mrd-color-white);border:1px solid var(--mrd-color-neutral-200);border-radius:var(--mrd-radius-md);box-shadow:var(--mrd-shadow-md);z-index:100;min-width:160px;padding:var(--mrd-space-1) 0}.mrd-table__view-popover-item.sc-mrd-table{display:block;width:100%;text-align:left;background:none;border:none;cursor:pointer;padding:var(--mrd-space-2) var(--mrd-space-3);font-size:var(--mrd-font-size-sm);font-family:var(--mrd-font-family);color:var(--mrd-color-neutral-700);white-space:nowrap}.mrd-table__view-popover-item.sc-mrd-table:hover{background:var(--mrd-color-neutral-50)}.mrd-table__view-popover-item--active.sc-mrd-table{font-weight:600;color:var(--mrd-color-primary)}.mrd-table__action.sc-mrd-table{position:relative;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;background:transparent;border:1px solid transparent;border-radius:var(--mrd-border-radius);cursor:pointer;color:var(--mrd-color-neutral-400);transition:background-color 0.15s, border-color 0.15s, color 0.15s}.mrd-table__action.sc-mrd-table:hover{background-color:var(--mrd-color-neutral-100);border-color:var(--mrd-color-neutral-300);color:var(--mrd-color-neutral-700)}.mrd-table__action.sc-mrd-table:hover .mrd-table__action-tooltip.sc-mrd-table{display:block}.mrd-table__action.sc-mrd-table:disabled{opacity:0.4;cursor:not-allowed}.mrd-table__action--primary.sc-mrd-table{color:var(--mrd-color-neutral-500)}.mrd-table__action--primary.sc-mrd-table:hover{background:var(--mrd-color-primary);border-color:var(--mrd-color-primary);color:var(--mrd-color-white)}.mrd-table__action--danger.sc-mrd-table{color:var(--mrd-color-error)}.mrd-table__action--danger.sc-mrd-table:hover{background-color:var(--mrd-color-error-light, #fef2f2);border-color:var(--mrd-color-error)}.mrd-table__action-icon.sc-mrd-table{width:1.25rem;height:1.25rem;pointer-events:none;fill:currentColor}.mrd-table__action-tooltip.sc-mrd-table{display:none;position:absolute;bottom:calc(100% + 6px);right:0;padding:var(--mrd-space-1) var(--mrd-space-2);font-size:var(--mrd-font-size-xs);white-space:nowrap;background:var(--mrd-color-tooltip, #fffce1);color:var(--mrd-color-neutral-900);border:1px solid var(--mrd-border-color);border-radius:var(--mrd-border-radius-sm, var(--mrd-border-radius));pointer-events:none;z-index:10}.mrd-table__create-picker-wrap.sc-mrd-table{position:relative}.mrd-table__create-picker.sc-mrd-table{position:absolute;right:0;top:calc(100% + 4px);background:var(--mrd-color-white, #fff);border:1px solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);box-shadow:var(--mrd-shadow-md, 0 4px 12px rgba(0, 0, 0, 0.12));z-index:10;min-width:10rem;padding:var(--mrd-space-1) 0}.mrd-table__create-picker-item.sc-mrd-table{display:block;width:100%;text-align:left;padding:var(--mrd-space-2) var(--mrd-space-3);background:none;border:none;cursor:pointer;font-size:var(--mrd-font-size-sm);font-family:var(--mrd-font-family);color:var(--mrd-color-neutral-800)}.mrd-table__create-picker-item.sc-mrd-table:hover{background:var(--mrd-color-neutral-50);color:var(--mrd-color-neutral-900)}.mrd-table__filter-toggle--active.sc-mrd-table{background:var(--mrd-color-primary);border-color:var(--mrd-color-primary);color:var(--mrd-color-white)}.mrd-table__filter-toggle--active.sc-mrd-table:hover{background:var(--mrd-color-primary-dark, var(--mrd-color-primary));border-color:var(--mrd-color-primary-dark, var(--mrd-color-primary));color:var(--mrd-color-white)}.mrd-table__filter-badge.sc-mrd-table{position:absolute;top:-6px;right:-6px;min-width:1.25rem;height:1.25rem;padding:0 3px;background:var(--mrd-color-error, #e53e3e);color:var(--mrd-color-white);border-radius:9999px;font-size:0.65rem;font-weight:var(--mrd-font-weight-medium);line-height:1.25rem;text-align:center;pointer-events:none}.mrd-table__filter-popup.sc-mrd-table{position:fixed;width:280px;background:var(--mrd-color-white);border:1px solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);box-shadow:var(--mrd-shadow-md, 0 4px 12px rgba(0, 0, 0, 0.12));z-index:var(--mrd-z-dropdown, 200);font-size:var(--mrd-font-size-sm)}.mrd-table__filter-popup-header.sc-mrd-table{display:flex;align-items:center;justify-content:space-between;padding:var(--mrd-space-2) var(--mrd-space-3);border-bottom:1px solid var(--mrd-border-color)}.mrd-table__filter-popup-title.sc-mrd-table{font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-800);font-size:var(--mrd-font-size-sm)}.mrd-table__filter-close.sc-mrd-table{background:transparent;border:none;cursor:pointer;color:var(--mrd-color-neutral-500);font-size:0.9rem;padding:2px 4px;border-radius:3px;line-height:1}.mrd-table__filter-close.sc-mrd-table:hover{background:var(--mrd-color-neutral-100);color:var(--mrd-color-neutral-800)}.mrd-table__filter-section.sc-mrd-table{padding:var(--mrd-space-2) var(--mrd-space-3)}.mrd-table__filter-section-label.sc-mrd-table{font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);text-transform:uppercase;letter-spacing:0.04em;color:var(--mrd-color-neutral-500);margin-bottom:var(--mrd-space-2)}.mrd-table__filter-sort-buttons.sc-mrd-table{display:flex;gap:var(--mrd-space-2)}.mrd-table__filter-sort-btn.sc-mrd-table{flex:1;padding:var(--mrd-space-1) var(--mrd-space-2);background:transparent;border:1px solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);cursor:pointer;font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-700)}.mrd-table__filter-sort-btn.sc-mrd-table:hover{background:var(--mrd-color-neutral-100)}.mrd-table__filter-sort-btn--active.sc-mrd-table{background:var(--mrd-color-primary);border-color:var(--mrd-color-primary);color:var(--mrd-color-white)}.mrd-table__filter-divider.sc-mrd-table{height:1px;background:var(--mrd-border-color);margin:0}.mrd-table__filter-editor.sc-mrd-table{display:flex;flex-direction:column;gap:var(--mrd-space-2)}.mrd-table__filter-select.sc-mrd-table,.mrd-table__filter-input.sc-mrd-table{width:100%;padding:var(--mrd-space-1) var(--mrd-space-2);border:1px solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-900);background:var(--mrd-color-white);box-sizing:border-box}.mrd-table__filter-select.sc-mrd-table:focus,.mrd-table__filter-input.sc-mrd-table:focus{outline:none;border-color:var(--mrd-color-primary);box-shadow:0 0 0 2px rgba(0, 0, 0, 0.06)}.mrd-table__filter-range.sc-mrd-table{display:flex;align-items:center;gap:var(--mrd-space-1)}.mrd-table__filter-range.sc-mrd-table .mrd-table__filter-input.sc-mrd-table{flex:1;min-width:0}.mrd-table__filter-range--stacked.sc-mrd-table{flex-direction:column;align-items:stretch;gap:var(--mrd-space-2)}.mrd-table__filter-range-sep.sc-mrd-table{color:var(--mrd-color-neutral-400);flex-shrink:0}.mrd-table__filter-range-label.sc-mrd-table{font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500);margin-bottom:2px}.mrd-table__filter-radio-group.sc-mrd-table{display:flex;flex-direction:column;gap:var(--mrd-space-1)}.mrd-table__filter-radio-group--inline.sc-mrd-table{flex-direction:row;gap:var(--mrd-space-3)}.mrd-table__filter-radio-label.sc-mrd-table{display:flex;align-items:center;gap:var(--mrd-space-1);cursor:pointer;font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-800)}.mrd-table__filter-list.sc-mrd-table{display:flex;flex-direction:column;gap:var(--mrd-space-1);max-height:180px;overflow-y:auto}.mrd-table__filter-list-controls.sc-mrd-table{display:flex;gap:var(--mrd-space-2);margin-bottom:var(--mrd-space-1)}.mrd-table__filter-list-btn.sc-mrd-table{font-size:var(--mrd-font-size-xs);color:var(--mrd-color-primary);background:transparent;border:none;cursor:pointer;padding:0;text-decoration:underline}.mrd-table__filter-checkbox-label.sc-mrd-table{display:flex;align-items:center;gap:var(--mrd-space-1);cursor:pointer;font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-800)}.mrd-table__filter-no-support.sc-mrd-table{font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-500);margin:0;font-style:italic}.mrd-table__filter-popup-footer.sc-mrd-table{display:flex;justify-content:flex-end;gap:var(--mrd-space-2);padding:var(--mrd-space-2) var(--mrd-space-3);border-top:1px solid var(--mrd-border-color)}.mrd-table__filter-btn.sc-mrd-table{padding:var(--mrd-space-1) var(--mrd-space-3);border-radius:var(--mrd-border-radius);border:1px solid var(--mrd-border-color);font-size:var(--mrd-font-size-sm);cursor:pointer}.mrd-table__filter-btn--clear.sc-mrd-table{background:transparent;color:var(--mrd-color-neutral-600)}.mrd-table__filter-btn--clear.sc-mrd-table:hover{background:var(--mrd-color-neutral-100)}.mrd-table__filter-btn--apply.sc-mrd-table{background:var(--mrd-color-primary);border-color:var(--mrd-color-primary);color:var(--mrd-color-white)}.mrd-table__filter-btn--apply.sc-mrd-table:hover{background:var(--mrd-color-primary-dark, var(--mrd-color-primary));border-color:var(--mrd-color-primary-dark, var(--mrd-color-primary))}.mrd-table__totals-row.sc-mrd-table{border-top:2px solid var(--mrd-border-color)}.mrd-table__totals-cell.sc-mrd-table{position:sticky;bottom:0;z-index:2;padding:var(--mrd-space-2) var(--mrd-space-4);background:var(--mrd-color-white);font-weight:var(--mrd-font-weight-medium);font-variant-numeric:tabular-nums;white-space:nowrap;border-top:2px solid var(--mrd-border-color)}.mrd-table__totals-cell--numeric.sc-mrd-table{text-align:right}.mrd-table__footer.sc-mrd-table{padding:var(--mrd-space-1) var(--mrd-space-2);font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500);text-align:right}.mrd-table__empty.sc-mrd-table{padding:var(--mrd-space-4) var(--mrd-space-3);color:var(--mrd-color-neutral-500);font-size:var(--mrd-font-size-sm);text-align:center;margin:0}.mrd-table__file-btn.sc-mrd-table{display:inline-flex;align-items:center;gap:var(--mrd-space-1);background:none;border:none;padding:0;cursor:pointer;color:var(--mrd-color-primary);font-size:var(--mrd-font-size-sm);font-family:inherit;max-width:100%;overflow:hidden}.mrd-table__file-btn.sc-mrd-table:hover{text-decoration:underline;color:var(--mrd-color-primary-dark)}.mrd-table__file-icon.sc-mrd-table{flex-shrink:0;width:1rem;height:1rem}.mrd-table__textblock-btn.sc-mrd-table{display:inline;background:none;border:none;padding:0 0 0 var(--mrd-space-1);cursor:pointer;color:var(--mrd-color-primary);font-size:var(--mrd-font-size-sm);font-family:inherit;line-height:inherit;vertical-align:middle}.mrd-table__textblock-btn.sc-mrd-table:hover{color:var(--mrd-color-primary-dark)}.mrd-table__modal-backdrop.sc-mrd-table{position:fixed;inset:0;background:rgba(0, 0, 0, 0.4);z-index:var(--mrd-z-modal, 300);display:flex;align-items:center;justify-content:center}.mrd-table__modal.sc-mrd-table{background:#fff;border-radius:var(--mrd-radius-md, 0.5rem);padding:var(--mrd-space-6);max-width:min(600px, 90vw);max-height:70vh;overflow-y:auto;position:relative;box-shadow:var(--mrd-shadow-lg)}.mrd-table__modal-close.sc-mrd-table{position:absolute;top:var(--mrd-space-3);right:var(--mrd-space-3);background:none;border:none;cursor:pointer;font-size:1.25rem;line-height:1;color:var(--mrd-color-text-muted, #6b7280);padding:0}.mrd-table__modal-close.sc-mrd-table:hover{color:var(--mrd-color-text, #111827)}.mrd-table__modal-text.sc-mrd-table{margin:0;padding-right:var(--mrd-space-6);white-space:pre-wrap;word-break:break-word;font-size:var(--mrd-font-size-sm);line-height:1.6}.mrd-table__json-preview.sc-mrd-table{font-family:var(--mrd-font-family-mono);font-size:var(--mrd-font-size-xs);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block;max-width:calc(100% - 1.5rem);vertical-align:middle}.mrd-table__modal-json.sc-mrd-table{margin:0;padding-right:var(--mrd-space-6);font-family:var(--mrd-font-family-mono);font-size:var(--mrd-font-size-xs);white-space:pre-wrap;word-break:break-word;line-height:1.6;background:none;border:none}@keyframes mrd-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}`;
|
|
4505
4381
|
|
|
4506
4382
|
/** How often (ms) to scan outstanding page requests for staleness. */
|
|
4507
4383
|
const STALE_CHECK_INTERVAL_MS = 2000;
|
|
@@ -4703,10 +4579,8 @@ const MrdTable = class {
|
|
|
4703
4579
|
}
|
|
4704
4580
|
/** Inject aggregation totals returned by the /aggregations endpoint. */
|
|
4705
4581
|
async setAggregations(data) {
|
|
4706
|
-
|
|
4707
|
-
|
|
4708
|
-
if (total != null)
|
|
4709
|
-
this.aggregationsTotal = total;
|
|
4582
|
+
if (data.total != null)
|
|
4583
|
+
this.aggregationsTotal = data.total;
|
|
4710
4584
|
this.aggregations = data;
|
|
4711
4585
|
}
|
|
4712
4586
|
// ── Lifecycle ──────────────────────────────────────────────────────────────
|
|
@@ -5513,7 +5387,6 @@ exports.mrd_document_view = MrdDocumentView;
|
|
|
5513
5387
|
exports.mrd_email_field = MrdEmailField;
|
|
5514
5388
|
exports.mrd_field = MrdField;
|
|
5515
5389
|
exports.mrd_file_field = MrdFileField;
|
|
5516
|
-
exports.mrd_file_preview = MrdFilePreview;
|
|
5517
5390
|
exports.mrd_form = MrdForm;
|
|
5518
5391
|
exports.mrd_hyperlink_field = MrdHyperlinkField;
|
|
5519
5392
|
exports.mrd_image_field = MrdImageField;
|