@mmlogic/components 0.4.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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} +175 -287
- 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 +20 -5
- 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 +36 -11
- package/dist/collection/components/documents/mrd-document-list/tree-view.js +1 -1
- package/dist/collection/components/documents/mrd-document-view/mrd-document-view.css +3 -44
- package/dist/collection/components/documents/mrd-document-view/mrd-document-view.js +37 -85
- 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 +33 -67
- package/dist/collection/components/table/mrd-table/mrd-table.css +38 -185
- package/dist/collection/components/table/mrd-table/mrd-table.js +20 -6
- package/dist/collection/dev/app.js +80 -43
- 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/collection/utils/query-params.js +0 -4
- 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} +85 -196
- 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-b56f9802.entry.js +1 -0
- package/dist/types/components/documents/mrd-document-container/mrd-document-container.d.ts +6 -2
- package/dist/types/components/documents/mrd-document-list/mrd-document-list.d.ts +13 -2
- package/dist/types/components/documents/mrd-document-list/tree-view.d.ts +1 -1
- package/dist/types/components/documents/mrd-document-view/mrd-document-view.d.ts +21 -27
- package/dist/types/components/layout/mrd-layout-section/mrd-layout-section.d.ts +14 -15
- package/dist/types/components/table/mrd-table/mrd-table.d.ts +8 -2
- package/dist/types/components.d.ts +54 -190
- package/dist/types/index.d.ts +3 -0
- package/dist/types/stencil-public-runtime.d.ts +1 -0
- package/dist/types/types/client-layout.d.ts +8 -0
- package/dist/types/utils/document-attachments.d.ts +8 -0
- package/dist/types/utils/file-preview-kind.d.ts +9 -0
- package/dist/types/utils/query-params.d.ts +14 -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/cell-renderer-PbcEU4ph.js.map +0 -1
- package/dist/mosterdcomponents/client-layout-DCOAAH92.js.map +0 -1
- package/dist/mosterdcomponents/field-helpers-CASS3akr.js.map +0 -1
- package/dist/mosterdcomponents/file-upload-common-D1ndi6cN.js.map +0 -1
- package/dist/mosterdcomponents/format-BAfsQfy1.js.map +0 -1
- package/dist/mosterdcomponents/i18n-B1IIkRF9.js.map +0 -1
- package/dist/mosterdcomponents/index-AokUFVX0.js.map +0 -1
- package/dist/mosterdcomponents/index-CprJSlzK.js.map +0 -1
- package/dist/mosterdcomponents/index.esm.js.map +0 -1
- package/dist/mosterdcomponents/mosterdcomponents.esm.js.map +0 -1
- package/dist/mosterdcomponents/p-DiSEJMA8.js +0 -2
- package/dist/mosterdcomponents/p-aae8a9dc.entry.js +0 -1
- package/dist/mosterdcomponents/query-params-B1HfnMOl.js.map +0 -1
- package/dist/mosterdcomponents/quill-C9pgw_k-.js.map +0 -1
- package/dist/mosterdcomponents/validation-DbEViuiw.js.map +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;
|
|
@@ -1008,11 +997,13 @@ const MrdDocumentContainer = class {
|
|
|
1008
997
|
}, onMrdRowClick: (e) => {
|
|
1009
998
|
var _a, _b, _c;
|
|
1010
999
|
e.stopPropagation();
|
|
1011
|
-
const row = e.detail;
|
|
1000
|
+
const { row, listContext } = e.detail;
|
|
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,
|
|
1005
|
+
listContext,
|
|
1006
|
+
attachments: attachmentsFromRecord(this.archetype, row),
|
|
1016
1007
|
});
|
|
1017
1008
|
}, onMrdAction: (e) => {
|
|
1018
1009
|
e.stopPropagation();
|
|
@@ -1021,7 +1012,7 @@ const MrdDocumentContainer = class {
|
|
|
1021
1012
|
}
|
|
1022
1013
|
render() {
|
|
1023
1014
|
const treeMode = this.mode === 'tree';
|
|
1024
|
-
return (index.h(index.Host, { key: '
|
|
1015
|
+
return (index.h(index.Host, { key: '4d21f26c956773c63cbf5118394c6afa29d6014d' }, this.renderToolbar(), index.h("div", { key: 'bc070236bf9a7d0eba57aa2cd70fa3ae36cbf5f1', class: {
|
|
1025
1016
|
'mrd-document-container__body': true,
|
|
1026
1017
|
'mrd-document-container__body--tree': treeMode,
|
|
1027
1018
|
}, style: treeMode ? { height: `${this.height}px`, overflowY: 'auto' } : {} }, treeMode ? this.renderTree() : this.renderList())));
|
|
@@ -1030,10 +1021,6 @@ const MrdDocumentContainer = class {
|
|
|
1030
1021
|
};
|
|
1031
1022
|
MrdDocumentContainer.style = mrdDocumentContainerCss();
|
|
1032
1023
|
|
|
1033
|
-
/**
|
|
1034
|
-
* Shared path/query-param conventions for list requests,
|
|
1035
|
-
* used by mrd-table and mrd-document-list.
|
|
1036
|
-
*/
|
|
1037
1024
|
/** Applies the view-level static filters to `params` using the API operator conventions. */
|
|
1038
1025
|
function applyViewFilters(params, filters) {
|
|
1039
1026
|
var _a, _b, _c;
|
|
@@ -1222,7 +1209,7 @@ function renderDocRow(ctx, doc, node, container, depth) {
|
|
|
1222
1209
|
const label = (_b = (_a = doc === null || doc === void 0 ? void 0 : doc[ctx.titleField]) !== null && _a !== void 0 ? _a : doc === null || doc === void 0 ? void 0 : doc.name) !== null && _b !== void 0 ? _b : '';
|
|
1223
1210
|
const dateRaw = ctx.dateField ? doc === null || doc === void 0 ? void 0 : doc[ctx.dateField] : undefined;
|
|
1224
1211
|
const date = dateRaw ? formatDate(dateRaw, ctx.locale) : '';
|
|
1225
|
-
return (index.h("div", { class: "mrd-document-list__row mrd-document-list__row--doc", key: (_e = (_d = (_c = doc === null || doc === void 0 ? void 0 : doc._links) === null || _c === void 0 ? void 0 : _c.self) === null || _d === void 0 ? void 0 : _d.href) !== null && _e !== void 0 ? _e : label, draggable: true, onClick: () => ctx.on.openDoc(doc), onDragStart: (e) => ctx.on.docDragStart(e, doc, node), onDragEnd: ctx.on.docDragEnd, onDragOver: (e) => ctx.on.nodeDragOver(e, node), onDragLeave: () => ctx.on.nodeDragLeave(node), onDrop: (e) => ctx.on.nodeDrop(e, node, container) }, indent(depth), chevron(false, true), docIcon(), index.h("span", { class: "mrd-document-list__label" }, label), date && index.h("span", { class: "mrd-document-list__date" }, date)));
|
|
1212
|
+
return (index.h("div", { class: "mrd-document-list__row mrd-document-list__row--doc", key: (_e = (_d = (_c = doc === null || doc === void 0 ? void 0 : doc._links) === null || _c === void 0 ? void 0 : _c.self) === null || _d === void 0 ? void 0 : _d.href) !== null && _e !== void 0 ? _e : label, draggable: true, onClick: () => ctx.on.openDoc(doc, node, container), onDragStart: (e) => ctx.on.docDragStart(e, doc, node), onDragEnd: ctx.on.docDragEnd, onDragOver: (e) => ctx.on.nodeDragOver(e, node), onDragLeave: () => ctx.on.nodeDragLeave(node), onDrop: (e) => ctx.on.nodeDrop(e, node, container) }, indent(depth), chevron(false, true), docIcon(), index.h("span", { class: "mrd-document-list__label" }, label), date && index.h("span", { class: "mrd-document-list__date" }, date)));
|
|
1226
1213
|
}
|
|
1227
1214
|
function renderFolderEditRow(ctx, node, depth) {
|
|
1228
1215
|
return (index.h("div", { class: "mrd-document-list__node", key: node.id }, index.h("div", { class: "mrd-document-list__row mrd-document-list__row--edit" }, indent(depth), chevron(false, true), folderIcon(), index.h("input", { class: "mrd-document-list__name-input", type: "text", placeholder: t('folder_name_placeholder', ctx.locale), ref: el => ctx.on.setPendingInputEl(el), onInput: ctx.on.pendingInput, onKeyDown: ctx.on.pendingKeyDown, onBlur: () => ctx.on.cancelFolder() })), node.error && (index.h("div", { class: "mrd-document-list__error", style: { paddingLeft: `${labelOffset(depth)}px` } }, node.error))));
|
|
@@ -1269,7 +1256,7 @@ function renderContainerNode(ctx, node, depth) {
|
|
|
1269
1256
|
: renderNodeChildren(ctx, node, node, depth + 1)))));
|
|
1270
1257
|
}
|
|
1271
1258
|
|
|
1272
|
-
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)}}`;
|
|
1273
1260
|
|
|
1274
1261
|
const MrdDocumentList = class {
|
|
1275
1262
|
constructor(hostRef) {
|
|
@@ -1468,7 +1455,7 @@ const MrdDocumentList = class {
|
|
|
1468
1455
|
* so it works even with zero documents. */
|
|
1469
1456
|
isSeededSingleContainer() {
|
|
1470
1457
|
var _a, _b;
|
|
1471
|
-
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 &&
|
|
1472
1459
|
!!((_b = this.item) === null || _b === void 0 ? void 0 : _b.inverseRelation) &&
|
|
1473
1460
|
this.item.inverseRelation === this.containerField &&
|
|
1474
1461
|
!!this.containerHref);
|
|
@@ -1525,7 +1512,7 @@ const MrdDocumentList = class {
|
|
|
1525
1512
|
var _a, _b;
|
|
1526
1513
|
const it = this.item;
|
|
1527
1514
|
return buildListPath({
|
|
1528
|
-
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,
|
|
1529
1516
|
fromClass: it === null || it === void 0 ? void 0 : it.fromClass,
|
|
1530
1517
|
parentId: this.parentId,
|
|
1531
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 : '',
|
|
@@ -1539,7 +1526,7 @@ const MrdDocumentList = class {
|
|
|
1539
1526
|
var _a, _b, _c;
|
|
1540
1527
|
const it = this.item;
|
|
1541
1528
|
return buildListPath({
|
|
1542
|
-
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,
|
|
1543
1530
|
fromClass: it === null || it === void 0 ? void 0 : it.fromClass,
|
|
1544
1531
|
parentId: this.parentId,
|
|
1545
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 : '',
|
|
@@ -1578,18 +1565,24 @@ const MrdDocumentList = class {
|
|
|
1578
1565
|
qs: p.toString(),
|
|
1579
1566
|
});
|
|
1580
1567
|
}
|
|
1581
|
-
|
|
1568
|
+
/** Filter qs scoping a folder's documents: view-level filters + container/folder match.
|
|
1569
|
+
* Shared by emitDocuments() (the fetch) and openDoc() (prev/next list context), so both
|
|
1570
|
+
* always agree on exactly what query a document belongs to. */
|
|
1571
|
+
buildDocQs(container, node) {
|
|
1582
1572
|
var _a, _b;
|
|
1583
1573
|
const p = this.baseParams();
|
|
1584
1574
|
p.set(this.containerField + '_href', (_a = container.href) !== null && _a !== void 0 ? _a : '');
|
|
1585
1575
|
p.set(this.folderField, (_b = node.fullPath) !== null && _b !== void 0 ? _b : '');
|
|
1576
|
+
return p.toString();
|
|
1577
|
+
}
|
|
1578
|
+
emitDocuments(container, node) {
|
|
1586
1579
|
node.loading = true;
|
|
1587
1580
|
this.mrdLoadPage.emit({
|
|
1588
1581
|
nodeId: node.id,
|
|
1589
1582
|
page: 0,
|
|
1590
1583
|
sort: '',
|
|
1591
1584
|
path: this.buildDataPath(),
|
|
1592
|
-
qs:
|
|
1585
|
+
qs: this.buildDocQs(container, node),
|
|
1593
1586
|
});
|
|
1594
1587
|
}
|
|
1595
1588
|
// ── Public injection API ─────────────────────────────────────────────────
|
|
@@ -1858,11 +1851,16 @@ const MrdDocumentList = class {
|
|
|
1858
1851
|
container.totalCount = Math.max(0, container.totalCount + delta);
|
|
1859
1852
|
}
|
|
1860
1853
|
}
|
|
1861
|
-
openDoc(doc) {
|
|
1854
|
+
openDoc(doc, node, container) {
|
|
1862
1855
|
var _a, _b, _c, _d;
|
|
1863
1856
|
const href = (_b = (_a = doc === null || doc === void 0 ? void 0 : doc._links) === null || _a === void 0 ? void 0 : _a.self) === null || _b === void 0 ? void 0 : _b.href;
|
|
1864
1857
|
const label = (_d = (_c = doc === null || doc === void 0 ? void 0 : doc[this.titleField]) !== null && _c !== void 0 ? _c : doc === null || doc === void 0 ? void 0 : doc.name) !== null && _d !== void 0 ? _d : '';
|
|
1865
|
-
|
|
1858
|
+
const index = node.docs.indexOf(doc);
|
|
1859
|
+
const listContext = index >= 0
|
|
1860
|
+
? { index, sort: '', path: this.buildDataPath(), qs: this.buildDocQs(container, node) }
|
|
1861
|
+
: undefined;
|
|
1862
|
+
const attachments = attachmentsFromRecord(this.archetype, doc);
|
|
1863
|
+
this.mrdNavigate.emit({ href, label, listContext, attachments });
|
|
1866
1864
|
}
|
|
1867
1865
|
// ── Render ───────────────────────────────────────────────────────────────
|
|
1868
1866
|
treeCtx() {
|
|
@@ -1876,7 +1874,7 @@ const MrdDocumentList = class {
|
|
|
1876
1874
|
on: {
|
|
1877
1875
|
toggleContainer: node => this.toggleContainer(node),
|
|
1878
1876
|
toggleFolder: (container, node) => this.toggleFolder(container, node),
|
|
1879
|
-
openDoc: doc => this.openDoc(doc),
|
|
1877
|
+
openDoc: (doc, node, container) => this.openDoc(doc, node, container),
|
|
1880
1878
|
docDragStart: this.onDocDragStart,
|
|
1881
1879
|
docDragEnd: this.onDocDragEnd,
|
|
1882
1880
|
nodeDragOver: this.onNodeDragOver,
|
|
@@ -1896,7 +1894,7 @@ const MrdDocumentList = class {
|
|
|
1896
1894
|
body = renderLoadingRow(ctx, 0);
|
|
1897
1895
|
}
|
|
1898
1896
|
else if (this.containers.length === 0) {
|
|
1899
|
-
body = index.h("div", { key: '
|
|
1897
|
+
body = index.h("div", { key: '308725d741deb384082bd514edd34593f7d662a2', class: "mrd-document-list__empty" }, t('no_results', this.locale));
|
|
1900
1898
|
}
|
|
1901
1899
|
else if (this.singleContainer) {
|
|
1902
1900
|
// Dossier context: render the single container's folder tree at the root.
|
|
@@ -1914,7 +1912,7 @@ const MrdDocumentList = class {
|
|
|
1914
1912
|
else {
|
|
1915
1913
|
body = this.containers.map(c => renderContainerNode(ctx, c, 0));
|
|
1916
1914
|
}
|
|
1917
|
-
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)));
|
|
1918
1916
|
}
|
|
1919
1917
|
get el() { return index.getElement(this); }
|
|
1920
1918
|
};
|
|
@@ -1922,43 +1920,35 @@ const MrdDocumentList = class {
|
|
|
1922
1920
|
MrdDocumentList.ROOT = '__root__';
|
|
1923
1921
|
MrdDocumentList.style = mrdDocumentListCss();
|
|
1924
1922
|
|
|
1925
|
-
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__crumb.sc-mrd-document-view{display:inline-flex;align-items:center;gap:var(--mrd-space-2);margin-bottom:var(--mrd-space-4);padding:var(--mrd-space-1) var(--mrd-space-3);background:var(--mrd-color-primary-light);border:1px solid transparent;border-radius:var(--mrd-border-radius);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-primary-dark);cursor:pointer}.mrd-document-view__crumb.sc-mrd-document-view:hover{border-color:var(--mrd-color-primary)}.mrd-document-view__crumb-icon.sc-mrd-document-view{width:0.875rem;height:0.875rem;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;gap:var(--mrd-space-4);margin-bottom:var(--mrd-space-2)}.mrd-document-view__file-name.sc-mrd-document-view{flex:1;min-width:0;font-weight:var(--mrd-font-weight-semibold);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-800);word-break:break-word}.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)}`;
|
|
1926
1924
|
|
|
1927
1925
|
const MrdDocumentView = class {
|
|
1928
1926
|
constructor(hostRef) {
|
|
1929
1927
|
index.registerInstance(this, hostRef);
|
|
1930
1928
|
this.mrdNavigate = index.createEvent(this, "mrdNavigate");
|
|
1931
1929
|
this.mrdDownload = index.createEvent(this, "mrdDownload");
|
|
1932
|
-
this.
|
|
1930
|
+
this.mrdAttachments = index.createEvent(this, "mrdAttachments");
|
|
1933
1931
|
/** The data record from the /data endpoint. Fields keyed by name; relations under `_links`. */
|
|
1934
1932
|
this.data = {};
|
|
1935
1933
|
this.locale = navigator.language;
|
|
1936
|
-
/**
|
|
1937
|
-
* the
|
|
1938
|
-
|
|
1939
|
-
this.previewUrl = '';
|
|
1940
|
-
/** Minimum height (px) of the inline preview area — it stretches to fill the
|
|
1941
|
-
* available row height in the wide side-by-side layout (see mrd-document-view.scss),
|
|
1942
|
-
* and falls back to this height when stacked. Overlay hosts typically pass a
|
|
1943
|
-
* smaller value than the full-page default to fit available chrome. */
|
|
1944
|
-
this.previewHeight = 640;
|
|
1945
|
-
/** Tracks the href a preview was last requested for, so componentDidLoad and
|
|
1946
|
-
* the data watcher don't emit duplicate requests for the same file. */
|
|
1947
|
-
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;
|
|
1948
1937
|
}
|
|
1949
1938
|
componentDidLoad() {
|
|
1950
|
-
this.
|
|
1939
|
+
this.emitAttachmentsIfNeeded();
|
|
1951
1940
|
}
|
|
1952
1941
|
dataChanged() {
|
|
1953
|
-
this.
|
|
1942
|
+
this.emitAttachmentsIfNeeded();
|
|
1954
1943
|
}
|
|
1955
|
-
|
|
1944
|
+
emitAttachmentsIfNeeded() {
|
|
1956
1945
|
var _a, _b;
|
|
1957
|
-
const
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
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 });
|
|
1962
1952
|
}
|
|
1963
1953
|
/** Value of a value-slot: reads data[field] via the slot→field map. */
|
|
1964
1954
|
slotValue(slot) {
|
|
@@ -1983,26 +1973,13 @@ const MrdDocumentView = class {
|
|
|
1983
1973
|
return null;
|
|
1984
1974
|
return (index.h("button", { class: "mrd-document-view__crumb", onClick: () => this.mrdNavigate.emit({ href: link.href, label: link.name }) }, index.h("svg", { class: "mrd-document-view__crumb-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: "M19 12H5M12 19l-7-7 7-7" })), link.name));
|
|
1985
1975
|
}
|
|
1986
|
-
/** Filename + download button —
|
|
1987
|
-
*
|
|
1976
|
+
/** Filename + download button — the only file-related UI this component owns;
|
|
1977
|
+
* inline preview rendering is entirely the host's responsibility. */
|
|
1988
1978
|
renderFileMeta(fileName, href) {
|
|
1989
1979
|
return (index.h("div", { class: "mrd-document-view__file-meta" }, index.h("span", { class: "mrd-document-view__file-name" }, fileName), 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)))));
|
|
1990
1980
|
}
|
|
1991
|
-
/** The preview panel itself (iframe/image/loading state) — its own grid
|
|
1992
|
-
* column in the wide layout, so it can take the full available height. */
|
|
1993
|
-
renderPreviewPanel(fileName, href, mimeType) {
|
|
1994
|
-
if (!href)
|
|
1995
|
-
return null;
|
|
1996
|
-
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) => {
|
|
1997
|
-
e.stopPropagation();
|
|
1998
|
-
this.mrdDownload.emit(e.detail);
|
|
1999
|
-
}, onMrdPreviewReload: (e) => {
|
|
2000
|
-
e.stopPropagation();
|
|
2001
|
-
this.mrdLoadPreview.emit({ href });
|
|
2002
|
-
} })) : (index.h("div", { class: "mrd-document-view__preview-loading" }, t('loading', this.locale)))));
|
|
2003
|
-
}
|
|
2004
1981
|
render() {
|
|
2005
|
-
var _a, _b
|
|
1982
|
+
var _a, _b;
|
|
2006
1983
|
const titleRaw = this.slotValue('title');
|
|
2007
1984
|
const title = titleRaw != null && titleRaw !== '' ? String(titleRaw) : null;
|
|
2008
1985
|
const dateRaw = this.slotValue('date');
|
|
@@ -2012,8 +1989,7 @@ const MrdDocumentView = class {
|
|
|
2012
1989
|
const fileRaw = this.slotValue('file');
|
|
2013
1990
|
const fileHref = (_a = fileRaw === null || fileRaw === void 0 ? void 0 : fileRaw.href) !== null && _a !== void 0 ? _a : '';
|
|
2014
1991
|
const fileName = (_b = fileRaw === null || fileRaw === void 0 ? void 0 : fileRaw.fileName) !== null && _b !== void 0 ? _b : (fileRaw ? String(fileRaw) : '');
|
|
2015
|
-
|
|
2016
|
-
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)))));
|
|
1992
|
+
return (index.h(index.Host, { key: 'e25995d61813ad0d285497c0abe74de0c1624cea' }, index.h("div", { key: '1d8e6c12c5db53bffd28b4bcff84a950c22cc8d8', class: "mrd-document-view" }, index.h("div", { key: 'b583648e524acd8156f92989b685b6343164738c', class: "mrd-document-view__body" }, index.h("div", { key: '8992b15a52edd64e2f0fd3269213302ab3989a20', class: "mrd-document-view__meta" }, this.renderContainer(), title && index.h("h1", { key: '0742816ed6ac927fa12410d723c9b0b8470800c7', class: "mrd-document-view__title" }, title), date && index.h("p", { key: '4803d2773ef904e3788a865db8e4653e5cb9d8df', class: "mrd-document-view__date" }, date), fileRaw && this.renderFileMeta(fileName, fileHref), summary && (index.h("div", { key: '502e9e844d474b692246e36c96245ba5321d2a9e', class: "mrd-document-view__summary" }, index.h("div", { key: 'b37d4c9cb9bc65c5abb0a4e1809e285032868e2c', class: "mrd-document-view__summary-body", innerHTML: summary }))))))));
|
|
2017
1993
|
}
|
|
2018
1994
|
static get watchers() { return {
|
|
2019
1995
|
"data": [{
|
|
@@ -2136,13 +2112,13 @@ const MrdField = class {
|
|
|
2136
2112
|
historyValueInputType() {
|
|
2137
2113
|
var _a;
|
|
2138
2114
|
switch ((_a = this.item) === null || _a === void 0 ? void 0 : _a.dataType) {
|
|
2139
|
-
case
|
|
2140
|
-
case
|
|
2141
|
-
case
|
|
2142
|
-
case
|
|
2143
|
-
case
|
|
2144
|
-
case
|
|
2145
|
-
case
|
|
2115
|
+
case clientLayout.ClientLayoutItemFieldDataType.DATE: return 'date';
|
|
2116
|
+
case clientLayout.ClientLayoutItemFieldDataType.DATETIME: return 'datetime-local';
|
|
2117
|
+
case clientLayout.ClientLayoutItemFieldDataType.TIME: return 'time';
|
|
2118
|
+
case clientLayout.ClientLayoutItemFieldDataType.INTEGER:
|
|
2119
|
+
case clientLayout.ClientLayoutItemFieldDataType.DECIMAL:
|
|
2120
|
+
case clientLayout.ClientLayoutItemFieldDataType.PERCENTAGE: return 'number';
|
|
2121
|
+
case clientLayout.ClientLayoutItemFieldDataType.EMAIL: return 'email';
|
|
2146
2122
|
default: return 'text';
|
|
2147
2123
|
}
|
|
2148
2124
|
}
|
|
@@ -2185,37 +2161,37 @@ const MrdField = class {
|
|
|
2185
2161
|
onMrdBlur: this.handleBlur,
|
|
2186
2162
|
};
|
|
2187
2163
|
switch (item.dataType) {
|
|
2188
|
-
case
|
|
2164
|
+
case clientLayout.ClientLayoutItemFieldDataType.TEXT:
|
|
2189
2165
|
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 : '' })));
|
|
2190
|
-
case
|
|
2166
|
+
case clientLayout.ClientLayoutItemFieldDataType.TEXTBLOCK:
|
|
2191
2167
|
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 : '' })));
|
|
2192
|
-
case
|
|
2193
|
-
case
|
|
2194
|
-
case
|
|
2168
|
+
case clientLayout.ClientLayoutItemFieldDataType.INTEGER:
|
|
2169
|
+
case clientLayout.ClientLayoutItemFieldDataType.DECIMAL:
|
|
2170
|
+
case clientLayout.ClientLayoutItemFieldDataType.PERCENTAGE:
|
|
2195
2171
|
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 : '' })));
|
|
2196
|
-
case
|
|
2172
|
+
case clientLayout.ClientLayoutItemFieldDataType.CURRENCY:
|
|
2197
2173
|
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' } })));
|
|
2198
|
-
case
|
|
2174
|
+
case clientLayout.ClientLayoutItemFieldDataType.BOOLEAN:
|
|
2199
2175
|
return (index.h("mrd-boolean-field", Object.assign({}, commonProps, { value: (_l = displayValue) !== null && _l !== void 0 ? _l : false })));
|
|
2200
|
-
case
|
|
2176
|
+
case clientLayout.ClientLayoutItemFieldDataType.DATE:
|
|
2201
2177
|
return (index.h("mrd-date-field", Object.assign({}, commonProps, { value: (_m = displayValue) !== null && _m !== void 0 ? _m : '' })));
|
|
2202
|
-
case
|
|
2178
|
+
case clientLayout.ClientLayoutItemFieldDataType.DATETIME:
|
|
2203
2179
|
return (index.h("mrd-datetime-field", Object.assign({}, commonProps, { value: (_o = displayValue) !== null && _o !== void 0 ? _o : '' })));
|
|
2204
|
-
case
|
|
2180
|
+
case clientLayout.ClientLayoutItemFieldDataType.TIME:
|
|
2205
2181
|
return (index.h("mrd-time-field", Object.assign({}, commonProps, { value: (_p = displayValue) !== null && _p !== void 0 ? _p : '' })));
|
|
2206
|
-
case
|
|
2182
|
+
case clientLayout.ClientLayoutItemFieldDataType.EMAIL:
|
|
2207
2183
|
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 : '' })));
|
|
2208
|
-
case
|
|
2184
|
+
case clientLayout.ClientLayoutItemFieldDataType.HYPERLINK:
|
|
2209
2185
|
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 : '' })));
|
|
2210
|
-
case
|
|
2186
|
+
case clientLayout.ClientLayoutItemFieldDataType.LIST:
|
|
2211
2187
|
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 : [] })));
|
|
2212
|
-
case
|
|
2188
|
+
case clientLayout.ClientLayoutItemFieldDataType.FILE:
|
|
2213
2189
|
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 })));
|
|
2214
|
-
case
|
|
2190
|
+
case clientLayout.ClientLayoutItemFieldDataType.IMAGE:
|
|
2215
2191
|
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 })));
|
|
2216
|
-
case
|
|
2192
|
+
case clientLayout.ClientLayoutItemFieldDataType.LONGTEXT:
|
|
2217
2193
|
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 : '' })));
|
|
2218
|
-
case
|
|
2194
|
+
case clientLayout.ClientLayoutItemFieldDataType.SECRET:
|
|
2219
2195
|
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 : '' })));
|
|
2220
2196
|
default:
|
|
2221
2197
|
return null;
|
|
@@ -2224,10 +2200,10 @@ const MrdField = class {
|
|
|
2224
2200
|
render() {
|
|
2225
2201
|
var _a, _b, _c, _d, _e, _f;
|
|
2226
2202
|
const { item, locale, value } = this;
|
|
2227
|
-
if (item.type ===
|
|
2228
|
-
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 :
|
|
2203
|
+
if (item.type === clientLayout.ClientLayoutItemType.RELATION) {
|
|
2204
|
+
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 })));
|
|
2229
2205
|
}
|
|
2230
|
-
if (item.type !==
|
|
2206
|
+
if (item.type !== clientLayout.ClientLayoutItemType.FIELD) {
|
|
2231
2207
|
return index.h(index.Host, null);
|
|
2232
2208
|
}
|
|
2233
2209
|
const displayValue = this.getDisplayValue();
|
|
@@ -2368,90 +2344,6 @@ const MrdFileField = class {
|
|
|
2368
2344
|
};
|
|
2369
2345
|
MrdFileField.style = mrdFileFieldCss();
|
|
2370
2346
|
|
|
2371
|
-
/** Pure classification logic for mrd-file-preview — no Stencil dependency. */
|
|
2372
|
-
const IMAGE_EXTENSIONS = new Set(['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'bmp']);
|
|
2373
|
-
function extensionOf(fileName) {
|
|
2374
|
-
if (!fileName)
|
|
2375
|
-
return null;
|
|
2376
|
-
const match = /\.([a-z0-9]+)$/i.exec(fileName);
|
|
2377
|
-
return match ? match[1].toLowerCase() : null;
|
|
2378
|
-
}
|
|
2379
|
-
/**
|
|
2380
|
-
* Decide how to render a file given its declared mime type and/or file name.
|
|
2381
|
-
* A declared mime type is authoritative when present (a mismatched file name
|
|
2382
|
-
* extension is ignored); the file name extension is only consulted as a
|
|
2383
|
-
* fallback when no mime type is known.
|
|
2384
|
-
*/
|
|
2385
|
-
function detectPreviewKind(mimeType, fileName) {
|
|
2386
|
-
const mime = (mimeType !== null && mimeType !== void 0 ? mimeType : '').toLowerCase().trim();
|
|
2387
|
-
if (mime) {
|
|
2388
|
-
if (mime === 'application/pdf')
|
|
2389
|
-
return 'pdf';
|
|
2390
|
-
if (mime.startsWith('image/'))
|
|
2391
|
-
return 'image';
|
|
2392
|
-
return 'unsupported';
|
|
2393
|
-
}
|
|
2394
|
-
const ext = extensionOf(fileName);
|
|
2395
|
-
if (ext === 'pdf')
|
|
2396
|
-
return 'pdf';
|
|
2397
|
-
if (ext && IMAGE_EXTENSIONS.has(ext))
|
|
2398
|
-
return 'image';
|
|
2399
|
-
return 'unsupported';
|
|
2400
|
-
}
|
|
2401
|
-
|
|
2402
|
-
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}`;
|
|
2403
|
-
|
|
2404
|
-
const MrdFilePreview = class {
|
|
2405
|
-
constructor(hostRef) {
|
|
2406
|
-
index.registerInstance(this, hostRef);
|
|
2407
|
-
this.mrdPreviewReload = index.createEvent(this, "mrdPreviewReload");
|
|
2408
|
-
this.mrdDownload = index.createEvent(this, "mrdDownload");
|
|
2409
|
-
/** Signed URL to render. */
|
|
2410
|
-
this.src = '';
|
|
2411
|
-
/** Declared mime type (e.g. 'application/pdf', 'image/png'), when known.
|
|
2412
|
-
* Authoritative over `fileName` when present. */
|
|
2413
|
-
this.mimeType = '';
|
|
2414
|
-
/** Original file name — used for extension-based detection when `mimeType`
|
|
2415
|
-
* is absent, and as alt/title text. */
|
|
2416
|
-
this.fileName = '';
|
|
2417
|
-
/** The file's own reference href (not the signed preview URL in `src`).
|
|
2418
|
-
* When set, an unsupported type falls back to the same download button
|
|
2419
|
-
* used elsewhere in the library, so hosts need no new wiring. */
|
|
2420
|
-
this.href = '';
|
|
2421
|
-
this.locale = navigator.language;
|
|
2422
|
-
this.imageFailed = false;
|
|
2423
|
-
this.onImageError = () => {
|
|
2424
|
-
this.imageFailed = true;
|
|
2425
|
-
};
|
|
2426
|
-
this.retry = () => {
|
|
2427
|
-
this.imageFailed = false;
|
|
2428
|
-
this.mrdPreviewReload.emit();
|
|
2429
|
-
};
|
|
2430
|
-
}
|
|
2431
|
-
srcChanged() {
|
|
2432
|
-
this.imageFailed = false;
|
|
2433
|
-
}
|
|
2434
|
-
render() {
|
|
2435
|
-
const kind = detectPreviewKind(this.mimeType, this.fileName);
|
|
2436
|
-
if (kind === 'pdf') {
|
|
2437
|
-
return (index.h(index.Host, null, index.h("iframe", { class: "mrd-file-preview__frame", src: this.src, title: this.fileName || 'preview' })));
|
|
2438
|
-
}
|
|
2439
|
-
if (kind === 'image') {
|
|
2440
|
-
if (this.imageFailed) {
|
|
2441
|
-
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)))));
|
|
2442
|
-
}
|
|
2443
|
-
return (index.h(index.Host, null, index.h("img", { class: "mrd-file-preview__image", src: this.src, alt: this.fileName || '', onError: this.onImageError })));
|
|
2444
|
-
}
|
|
2445
|
-
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))))));
|
|
2446
|
-
}
|
|
2447
|
-
static get watchers() { return {
|
|
2448
|
-
"src": [{
|
|
2449
|
-
"srcChanged": 0
|
|
2450
|
-
}]
|
|
2451
|
-
}; }
|
|
2452
|
-
};
|
|
2453
|
-
MrdFilePreview.style = mrdFilePreviewCss();
|
|
2454
|
-
|
|
2455
2347
|
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)}`;
|
|
2456
2348
|
|
|
2457
2349
|
const MrdForm = class {
|
|
@@ -2589,12 +2481,12 @@ const MrdForm = class {
|
|
|
2589
2481
|
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;
|
|
2590
2482
|
if (!dv)
|
|
2591
2483
|
continue;
|
|
2592
|
-
if (item.type ===
|
|
2484
|
+
if (item.type === clientLayout.ClientLayoutItemType.FIELD) {
|
|
2593
2485
|
const resolved = this.resolveFieldDefault(dv, (_g = item.dataType) !== null && _g !== void 0 ? _g : (_h = item.field) === null || _h === void 0 ? void 0 : _h.dataType);
|
|
2594
2486
|
if (resolved != null)
|
|
2595
2487
|
updates[item.name] = resolved;
|
|
2596
2488
|
}
|
|
2597
|
-
else if (item.type ===
|
|
2489
|
+
else if (item.type === clientLayout.ClientLayoutItemType.RELATION) {
|
|
2598
2490
|
if (dv === 'me()' && this.me) {
|
|
2599
2491
|
updates[item.name] = this.me;
|
|
2600
2492
|
}
|
|
@@ -2639,17 +2531,17 @@ const MrdForm = class {
|
|
|
2639
2531
|
var _a, _b;
|
|
2640
2532
|
const allItems = this.collectFields((_b = (_a = this.layout) === null || _a === void 0 ? void 0 : _a.items) !== null && _b !== void 0 ? _b : []);
|
|
2641
2533
|
// Strategy 1: direct match on mostSignificantClass
|
|
2642
|
-
const direct = allItems.find(item => item.type ===
|
|
2534
|
+
const direct = allItems.find(item => item.type === clientLayout.ClientLayoutItemType.RELATION &&
|
|
2643
2535
|
item.mostSignificantClass === this.referenceClass);
|
|
2644
2536
|
if (direct === null || direct === void 0 ? void 0 : direct.name)
|
|
2645
2537
|
return direct.name;
|
|
2646
2538
|
// Strategy 2: a DROPDOWN whose commonRelation field was omitted from the layout
|
|
2647
2539
|
const layoutRelationNames = new Set(allItems
|
|
2648
|
-
.filter(item => item.type ===
|
|
2540
|
+
.filter(item => item.type === clientLayout.ClientLayoutItemType.RELATION)
|
|
2649
2541
|
.map(item => item.name));
|
|
2650
2542
|
for (const item of allItems) {
|
|
2651
|
-
if (item.type ===
|
|
2652
|
-
item.editBehavior ===
|
|
2543
|
+
if (item.type === clientLayout.ClientLayoutItemType.RELATION &&
|
|
2544
|
+
item.editBehavior === clientLayout.ClientLayoutItemRelationEditBehavior.DROPDOWN &&
|
|
2653
2545
|
item.commonRelation &&
|
|
2654
2546
|
!layoutRelationNames.has(item.commonRelation)) {
|
|
2655
2547
|
return item.commonRelation;
|
|
@@ -2667,8 +2559,8 @@ const MrdForm = class {
|
|
|
2667
2559
|
collectDependentDropdowns() {
|
|
2668
2560
|
var _a, _b;
|
|
2669
2561
|
return this.collectFields((_b = (_a = this.layout) === null || _a === void 0 ? void 0 : _a.items) !== null && _b !== void 0 ? _b : [])
|
|
2670
|
-
.filter(item => item.type ===
|
|
2671
|
-
item.editBehavior ===
|
|
2562
|
+
.filter(item => item.type === clientLayout.ClientLayoutItemType.RELATION &&
|
|
2563
|
+
item.editBehavior === clientLayout.ClientLayoutItemRelationEditBehavior.DROPDOWN &&
|
|
2672
2564
|
!!item.commonRelation);
|
|
2673
2565
|
}
|
|
2674
2566
|
/** Emit mrdFetchAll for every dependent DROPDOWN whose filter value is currently set. */
|
|
@@ -2701,7 +2593,7 @@ const MrdForm = class {
|
|
|
2701
2593
|
collectFields(items) {
|
|
2702
2594
|
const fields = [];
|
|
2703
2595
|
for (const item of items) {
|
|
2704
|
-
if (item.type ===
|
|
2596
|
+
if (item.type === clientLayout.ClientLayoutItemType.FIELD || item.type === clientLayout.ClientLayoutItemType.RELATION) {
|
|
2705
2597
|
fields.push(item);
|
|
2706
2598
|
}
|
|
2707
2599
|
if (item.items) {
|
|
@@ -2769,7 +2661,7 @@ const MrdForm = class {
|
|
|
2769
2661
|
if (!item.name)
|
|
2770
2662
|
continue;
|
|
2771
2663
|
const name = item.name;
|
|
2772
|
-
if (item.type ===
|
|
2664
|
+
if (item.type === clientLayout.ClientLayoutItemType.FIELD) {
|
|
2773
2665
|
const rawValue = this.formValues[name];
|
|
2774
2666
|
if (rawValue instanceof File)
|
|
2775
2667
|
continue;
|
|
@@ -2779,7 +2671,7 @@ const MrdForm = class {
|
|
|
2779
2671
|
continue;
|
|
2780
2672
|
payload[name] = current;
|
|
2781
2673
|
}
|
|
2782
|
-
else if (item.type ===
|
|
2674
|
+
else if (item.type === clientLayout.ClientLayoutItemType.RELATION) {
|
|
2783
2675
|
const current = this.normalizeRelationValue(this.formValues[name]);
|
|
2784
2676
|
const initial = this.normalizeRelationValue(this.initialValues[name]);
|
|
2785
2677
|
if (this.deepEqual(current, initial))
|
|
@@ -2792,10 +2684,10 @@ const MrdForm = class {
|
|
|
2792
2684
|
renderItems(items) {
|
|
2793
2685
|
return items.map(item => {
|
|
2794
2686
|
var _a;
|
|
2795
|
-
if (item.type ===
|
|
2687
|
+
if (item.type === clientLayout.ClientLayoutItemType.SECTION) {
|
|
2796
2688
|
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))));
|
|
2797
2689
|
}
|
|
2798
|
-
if (item.type ===
|
|
2690
|
+
if (item.type === clientLayout.ClientLayoutItemType.GROUP) {
|
|
2799
2691
|
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))));
|
|
2800
2692
|
}
|
|
2801
2693
|
const fieldName = (_a = item.name) !== null && _a !== void 0 ? _a : '';
|
|
@@ -2891,7 +2783,7 @@ const MrdHyperlinkField = class {
|
|
|
2891
2783
|
};
|
|
2892
2784
|
MrdHyperlinkField.style = mrdHyperlinkFieldCss();
|
|
2893
2785
|
|
|
2894
|
-
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}
|
|
2786
|
+
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)}}`;
|
|
2895
2787
|
|
|
2896
2788
|
const MrdImageField = class {
|
|
2897
2789
|
constructor(hostRef) {
|
|
@@ -2992,7 +2884,7 @@ MrdImageField.style = mrdImageFieldCss();
|
|
|
2992
2884
|
/** Key an embedded view is addressed by (setViewPage etc.). */
|
|
2993
2885
|
function viewKeyFor(item) {
|
|
2994
2886
|
var _a, _b, _c, _d;
|
|
2995
|
-
if (item.type ===
|
|
2887
|
+
if (item.type === clientLayout.ClientLayoutItemType.RELATED_VIEW)
|
|
2996
2888
|
return (_b = (_a = item.relatedClass) !== null && _a !== void 0 ? _a : item.name) !== null && _b !== void 0 ? _b : '';
|
|
2997
2889
|
return (_d = (_c = item.dataClass) !== null && _c !== void 0 ? _c : item.name) !== null && _d !== void 0 ? _d : '';
|
|
2998
2890
|
}
|
|
@@ -3009,7 +2901,7 @@ function flattenItems(items) {
|
|
|
3009
2901
|
/** Build the canonical parent href `/{base}/{tenant}/{fromClass}/{parentId}` from
|
|
3010
2902
|
* the object's self href. Empty unless it is a RELATED_VIEW with a fromClass. */
|
|
3011
2903
|
function buildContainerHref(item, selfHref, parentId) {
|
|
3012
|
-
if (item.type !==
|
|
2904
|
+
if (item.type !== clientLayout.ClientLayoutItemType.RELATED_VIEW || !item.fromClass || !parentId)
|
|
3013
2905
|
return '';
|
|
3014
2906
|
const segs = selfHref.split('/').filter(Boolean);
|
|
3015
2907
|
if (segs.length < 2)
|
|
@@ -3021,7 +2913,7 @@ function buildContainerHref(item, selfHref, parentId) {
|
|
|
3021
2913
|
class CellRenderer {
|
|
3022
2914
|
static render(column, row, locale) {
|
|
3023
2915
|
var _a, _b, _c, _d;
|
|
3024
|
-
if (column.type ===
|
|
2916
|
+
if (column.type === clientLayout.ClientLayoutItemType.RELATION) {
|
|
3025
2917
|
const name = (_a = column.name) !== null && _a !== void 0 ? _a : '';
|
|
3026
2918
|
const link = (_b = row === null || row === void 0 ? void 0 : row._links) === null || _b === void 0 ? void 0 : _b[name];
|
|
3027
2919
|
if (!link)
|
|
@@ -3030,7 +2922,7 @@ class CellRenderer {
|
|
|
3030
2922
|
return link.map((l) => { var _a; return (_a = l.name) !== null && _a !== void 0 ? _a : ''; }).filter(Boolean).join(', ');
|
|
3031
2923
|
return (_c = link.name) !== null && _c !== void 0 ? _c : '';
|
|
3032
2924
|
}
|
|
3033
|
-
if (column.type !==
|
|
2925
|
+
if (column.type !== clientLayout.ClientLayoutItemType.FIELD)
|
|
3034
2926
|
return '';
|
|
3035
2927
|
const name = (_d = column.name) !== null && _d !== void 0 ? _d : '';
|
|
3036
2928
|
const dataType = column.dataType;
|
|
@@ -3130,25 +3022,25 @@ function renderSingleFieldValue(ctx, item, value) {
|
|
|
3130
3022
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
3131
3023
|
const dt = item.dataType;
|
|
3132
3024
|
switch (dt) {
|
|
3133
|
-
case
|
|
3025
|
+
case clientLayout.ClientLayoutItemFieldDataType.HYPERLINK: {
|
|
3134
3026
|
const v = value;
|
|
3135
3027
|
const href = (_a = v === null || v === void 0 ? void 0 : v.href) !== null && _a !== void 0 ? _a : String(value);
|
|
3136
3028
|
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;
|
|
3137
3029
|
return (index.h("a", { class: "mrd-layout-section__link", href: href, target: "_blank", rel: "noopener noreferrer" }, label));
|
|
3138
3030
|
}
|
|
3139
|
-
case
|
|
3031
|
+
case clientLayout.ClientLayoutItemFieldDataType.TEXTBLOCK:
|
|
3140
3032
|
return index.h("div", { class: "mrd-layout-section__prose", innerHTML: String(value) });
|
|
3141
|
-
case
|
|
3033
|
+
case clientLayout.ClientLayoutItemFieldDataType.LONGTEXT:
|
|
3142
3034
|
return index.h("pre", { class: "mrd-layout-section__pre" }, String(value));
|
|
3143
|
-
case
|
|
3035
|
+
case clientLayout.ClientLayoutItemFieldDataType.JSON:
|
|
3144
3036
|
return index.h("pre", { class: "mrd-layout-section__pre", innerHTML: CellRenderer.formatJson(value) });
|
|
3145
|
-
case
|
|
3037
|
+
case clientLayout.ClientLayoutItemFieldDataType.FILE: {
|
|
3146
3038
|
const v = value;
|
|
3147
3039
|
const fileName = (_e = v === null || v === void 0 ? void 0 : v.fileName) !== null && _e !== void 0 ? _e : String(value);
|
|
3148
3040
|
const href = (_f = v === null || v === void 0 ? void 0 : v.href) !== null && _f !== void 0 ? _f : '';
|
|
3149
3041
|
return downloadLink(ctx, href, fileName, t('download', ctx.locale));
|
|
3150
3042
|
}
|
|
3151
|
-
case
|
|
3043
|
+
case clientLayout.ClientLayoutItemFieldDataType.IMAGE: {
|
|
3152
3044
|
const v = value;
|
|
3153
3045
|
const href = (_g = v === null || v === void 0 ? void 0 : v.href) !== null && _g !== void 0 ? _g : '';
|
|
3154
3046
|
const fileName = (_h = v === null || v === void 0 ? void 0 : v.fileName) !== null && _h !== void 0 ? _h : '';
|
|
@@ -3158,9 +3050,9 @@ function renderSingleFieldValue(ctx, item, value) {
|
|
|
3158
3050
|
}
|
|
3159
3051
|
return downloadLink(ctx, href, fileName, fileName || href);
|
|
3160
3052
|
}
|
|
3161
|
-
case
|
|
3053
|
+
case clientLayout.ClientLayoutItemFieldDataType.BOOLEAN:
|
|
3162
3054
|
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)));
|
|
3163
|
-
case
|
|
3055
|
+
case clientLayout.ClientLayoutItemFieldDataType.LIST: {
|
|
3164
3056
|
const listItem = ((_j = item.listItems) !== null && _j !== void 0 ? _j : []).find(li => li.key === String(value));
|
|
3165
3057
|
const label = (_k = listItem === null || listItem === void 0 ? void 0 : listItem.label) !== null && _k !== void 0 ? _k : String(value);
|
|
3166
3058
|
const color = listItem === null || listItem === void 0 ? void 0 : listItem.color;
|
|
@@ -3173,7 +3065,7 @@ function renderSingleFieldValue(ctx, item, value) {
|
|
|
3173
3065
|
}
|
|
3174
3066
|
return label;
|
|
3175
3067
|
}
|
|
3176
|
-
case
|
|
3068
|
+
case clientLayout.ClientLayoutItemFieldDataType.SECRET:
|
|
3177
3069
|
return value ? index.h("span", { class: "mrd-layout-section__secret-masked" }, '••••••••') : null;
|
|
3178
3070
|
default: {
|
|
3179
3071
|
const text = CellRenderer.renderValue(dt, value, (_l = item.listItems) !== null && _l !== void 0 ? _l : [], ctx.locale);
|
|
@@ -3223,13 +3115,13 @@ function renderField(ctx, item) {
|
|
|
3223
3115
|
}
|
|
3224
3116
|
if (renderedValue == null)
|
|
3225
3117
|
return null;
|
|
3226
|
-
const isBlock = item.dataType ===
|
|
3227
|
-
|| item.dataType ===
|
|
3228
|
-
|| item.dataType ===
|
|
3118
|
+
const isBlock = item.dataType === clientLayout.ClientLayoutItemFieldDataType.TEXTBLOCK
|
|
3119
|
+
|| item.dataType === clientLayout.ClientLayoutItemFieldDataType.LONGTEXT
|
|
3120
|
+
|| item.dataType === clientLayout.ClientLayoutItemFieldDataType.JSON;
|
|
3229
3121
|
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))));
|
|
3230
3122
|
}
|
|
3231
3123
|
|
|
3232
|
-
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}`;
|
|
3124
|
+
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}`;
|
|
3233
3125
|
|
|
3234
3126
|
const MrdLayoutSection = class {
|
|
3235
3127
|
constructor(hostRef) {
|
|
@@ -3239,7 +3131,7 @@ const MrdLayoutSection = class {
|
|
|
3239
3131
|
this.mrdDownload = index.createEvent(this, "mrdDownload");
|
|
3240
3132
|
this.mrdLoadViewPage = index.createEvent(this, "mrdLoadViewPage");
|
|
3241
3133
|
this.mrdLoadImage = index.createEvent(this, "mrdLoadImage");
|
|
3242
|
-
this.
|
|
3134
|
+
this.mrdAttachments = index.createEvent(this, "mrdAttachments");
|
|
3243
3135
|
this.mrdViewAction = index.createEvent(this, "mrdViewAction");
|
|
3244
3136
|
this.mrdLoadViewAggregations = index.createEvent(this, "mrdLoadViewAggregations");
|
|
3245
3137
|
this.mrdLoadViewDistinct = index.createEvent(this, "mrdLoadViewDistinct");
|
|
@@ -3258,17 +3150,11 @@ const MrdLayoutSection = class {
|
|
|
3258
3150
|
/** Top-level archetypes on the object dashboard. When it contains commons.document,
|
|
3259
3151
|
* the record is rendered as a single-document view instead of generic fields. */
|
|
3260
3152
|
this.archetypes = [];
|
|
3261
|
-
/** Minimum height (px) of the commons.document inline file preview — it
|
|
3262
|
-
* stretches taller in the wide side-by-side layout. Pass a smaller value
|
|
3263
|
-
* when embedding the record in an overlay with limited height. */
|
|
3264
|
-
this.documentPreviewHeight = 640;
|
|
3265
3153
|
this.searchQueryMap = {};
|
|
3266
3154
|
this.searchResultsMap = {};
|
|
3267
3155
|
this.imagePreviewUrl = null;
|
|
3268
3156
|
this.imagePreviews = {};
|
|
3269
3157
|
this.openHistoryField = null;
|
|
3270
|
-
/** Signed URL for the commons.document archetype's inline file preview. */
|
|
3271
|
-
this.documentPreviewUrl = null;
|
|
3272
3158
|
this.historyClickOutside = null;
|
|
3273
3159
|
this.searchTimers = {};
|
|
3274
3160
|
this.handleViewLoadPage = (e, name) => {
|
|
@@ -3320,7 +3206,7 @@ const MrdLayoutSection = class {
|
|
|
3320
3206
|
}
|
|
3321
3207
|
emitLoadImages() {
|
|
3322
3208
|
for (const item of flattenItems(this.items)) {
|
|
3323
|
-
if (item.type ===
|
|
3209
|
+
if (item.type === clientLayout.ClientLayoutItemType.FIELD && item.dataType === clientLayout.ClientLayoutItemFieldDataType.IMAGE) {
|
|
3324
3210
|
const fieldName = item.name;
|
|
3325
3211
|
const raw = this.data[fieldName];
|
|
3326
3212
|
const href = raw === null || raw === void 0 ? void 0 : raw.href;
|
|
@@ -3392,14 +3278,9 @@ const MrdLayoutSection = class {
|
|
|
3392
3278
|
async openImagePreview(url) {
|
|
3393
3279
|
this.imagePreviewUrl = url;
|
|
3394
3280
|
}
|
|
3395
|
-
/** Provide a resolved signed URL for the commons.document archetype's inline
|
|
3396
|
-
* file preview, in response to mrdLoadDocumentPreview. */
|
|
3397
|
-
async setDocumentPreviewUrl(url) {
|
|
3398
|
-
this.documentPreviewUrl = url;
|
|
3399
|
-
}
|
|
3400
3281
|
resolveSearchKey() {
|
|
3401
3282
|
var _a;
|
|
3402
|
-
const items = flattenItems(this.items).filter(i => i.type ===
|
|
3283
|
+
const items = flattenItems(this.items).filter(i => i.type === clientLayout.ClientLayoutItemType.SEARCH);
|
|
3403
3284
|
if (items.length === 1)
|
|
3404
3285
|
return (_a = items[0].dataClass) !== null && _a !== void 0 ? _a : null;
|
|
3405
3286
|
return null;
|
|
@@ -3462,7 +3343,7 @@ const MrdLayoutSection = class {
|
|
|
3462
3343
|
const parentId = (_f = selfHref.split('/').filter(Boolean).pop()) !== null && _f !== void 0 ? _f : '';
|
|
3463
3344
|
// The API publishes `archetypes` on the VIEW/RELATED_VIEW item itself
|
|
3464
3345
|
// (sibling of `view`), not inside `view`.
|
|
3465
|
-
const docArchetype =
|
|
3346
|
+
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);
|
|
3466
3347
|
// Canonical parent href for single-container seeding: use the RELATED_VIEW's
|
|
3467
3348
|
// fromClass (base class) rather than the route class, so polymorphic subtypes
|
|
3468
3349
|
// resolve to the same container the documents actually reference.
|
|
@@ -3515,11 +3396,12 @@ const MrdLayoutSection = class {
|
|
|
3515
3396
|
}, onMrdRowClick: (e) => {
|
|
3516
3397
|
var _a, _b, _c, _d;
|
|
3517
3398
|
e.stopPropagation();
|
|
3518
|
-
const row = e.detail;
|
|
3399
|
+
const { row, listContext } = e.detail;
|
|
3519
3400
|
this.mrdNavigate.emit({
|
|
3520
3401
|
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,
|
|
3521
3402
|
label: (_c = row === null || row === void 0 ? void 0 : row.name) !== null && _c !== void 0 ? _c : '',
|
|
3522
|
-
navigateBehaviour: (_d = item.navigateBehaviour) !== null && _d !== void 0 ? _d :
|
|
3403
|
+
navigateBehaviour: (_d = item.navigateBehaviour) !== null && _d !== void 0 ? _d : clientLayout.ClientLayoutNavigateBehaviour.PAGE,
|
|
3404
|
+
listContext,
|
|
3523
3405
|
});
|
|
3524
3406
|
}, onMrdAction: (e) => {
|
|
3525
3407
|
var _a;
|
|
@@ -3538,23 +3420,23 @@ const MrdLayoutSection = class {
|
|
|
3538
3420
|
renderItem(item) {
|
|
3539
3421
|
var _a, _b;
|
|
3540
3422
|
switch (item.type) {
|
|
3541
|
-
case
|
|
3423
|
+
case clientLayout.ClientLayoutItemType.FIELD:
|
|
3542
3424
|
return this.renderField(item);
|
|
3543
|
-
case
|
|
3425
|
+
case clientLayout.ClientLayoutItemType.RELATION:
|
|
3544
3426
|
return this.renderRelation(item);
|
|
3545
|
-
case
|
|
3427
|
+
case clientLayout.ClientLayoutItemType.HEADER:
|
|
3546
3428
|
return (index.h("h2", { class: "mrd-layout-section__header", key: `header-${item.label}` }, item.label));
|
|
3547
|
-
case
|
|
3429
|
+
case clientLayout.ClientLayoutItemType.TEXT:
|
|
3548
3430
|
return index.h("div", { class: "mrd-layout-section__text", key: `text-${item.label}`, innerHTML: (_a = item.label) !== null && _a !== void 0 ? _a : '' });
|
|
3549
|
-
case
|
|
3431
|
+
case clientLayout.ClientLayoutItemType.NAVIGATE:
|
|
3550
3432
|
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));
|
|
3551
|
-
case
|
|
3433
|
+
case clientLayout.ClientLayoutItemType.SEARCH:
|
|
3552
3434
|
return this.renderSearch(item);
|
|
3553
|
-
case
|
|
3554
|
-
case
|
|
3435
|
+
case clientLayout.ClientLayoutItemType.SECTION:
|
|
3436
|
+
case clientLayout.ClientLayoutItemType.GROUP:
|
|
3555
3437
|
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))));
|
|
3556
|
-
case
|
|
3557
|
-
case
|
|
3438
|
+
case clientLayout.ClientLayoutItemType.RELATED_VIEW:
|
|
3439
|
+
case clientLayout.ClientLayoutItemType.VIEW:
|
|
3558
3440
|
return this.renderRelatedView(item);
|
|
3559
3441
|
default:
|
|
3560
3442
|
return null;
|
|
@@ -3569,18 +3451,17 @@ const MrdLayoutSection = class {
|
|
|
3569
3451
|
* a recognisable document instead of generic fields, keeping any related views/
|
|
3570
3452
|
* searches below it. */
|
|
3571
3453
|
renderDocumentObject(archetype) {
|
|
3572
|
-
|
|
3573
|
-
|
|
3574
|
-
it.type ===
|
|
3575
|
-
it.type === index$1.ClientLayoutItemType.SEARCH);
|
|
3454
|
+
const related = this.items.filter(it => it.type === clientLayout.ClientLayoutItemType.VIEW ||
|
|
3455
|
+
it.type === clientLayout.ClientLayoutItemType.RELATED_VIEW ||
|
|
3456
|
+
it.type === clientLayout.ClientLayoutItemType.SEARCH);
|
|
3576
3457
|
return [
|
|
3577
|
-
index.h("mrd-document-view", { archetype: archetype, data: this.data, locale: this.locale,
|
|
3458
|
+
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); } }),
|
|
3578
3459
|
...related.map(it => this.renderItem(it)),
|
|
3579
3460
|
];
|
|
3580
3461
|
}
|
|
3581
3462
|
render() {
|
|
3582
|
-
const docArchetype =
|
|
3583
|
-
return (index.h(index.Host, { key: '
|
|
3463
|
+
const docArchetype = clientLayout.resolveArchetype(this.archetypes, clientLayout.ARCHETYPE_DOCUMENT);
|
|
3464
|
+
return (index.h(index.Host, { key: '8585dae577d38e3c9517039b48aa9e798190937c' }, index.h("div", { key: '020b942996b1346bdc3bc89938e4b020823cfcea', class: "mrd-layout-section" }, docArchetype
|
|
3584
3465
|
? this.renderDocumentObject(docArchetype)
|
|
3585
3466
|
: this.items.map(item => this.renderItem(item))), this.renderImageModal()));
|
|
3586
3467
|
}
|
|
@@ -3720,7 +3601,7 @@ const MrdNumberField = class {
|
|
|
3720
3601
|
this.required = false;
|
|
3721
3602
|
this.disabled = false;
|
|
3722
3603
|
this.locale = navigator.language;
|
|
3723
|
-
this.dataType =
|
|
3604
|
+
this.dataType = clientLayout.ClientLayoutItemFieldDataType.INTEGER;
|
|
3724
3605
|
this.decimalPrecision = 2;
|
|
3725
3606
|
this.displayValue = '';
|
|
3726
3607
|
this.error = '';
|
|
@@ -3759,13 +3640,13 @@ const MrdNumberField = class {
|
|
|
3759
3640
|
}
|
|
3760
3641
|
}
|
|
3761
3642
|
formatForDisplay(val) {
|
|
3762
|
-
if (this.dataType ===
|
|
3643
|
+
if (this.dataType === clientLayout.ClientLayoutItemFieldDataType.PERCENTAGE) {
|
|
3763
3644
|
return formatNumber(val, this.locale, {
|
|
3764
3645
|
minimumFractionDigits: 0,
|
|
3765
3646
|
maximumFractionDigits: this.decimalPrecision,
|
|
3766
3647
|
}) + '%';
|
|
3767
3648
|
}
|
|
3768
|
-
if (this.dataType ===
|
|
3649
|
+
if (this.dataType === clientLayout.ClientLayoutItemFieldDataType.DECIMAL) {
|
|
3769
3650
|
return formatNumber(val, this.locale, {
|
|
3770
3651
|
minimumFractionDigits: this.decimalPrecision,
|
|
3771
3652
|
maximumFractionDigits: this.decimalPrecision,
|
|
@@ -3775,14 +3656,14 @@ const MrdNumberField = class {
|
|
|
3775
3656
|
}
|
|
3776
3657
|
render() {
|
|
3777
3658
|
const hasError = !!this.error;
|
|
3778
|
-
const suffix = this.dataType ===
|
|
3779
|
-
this.dataType ===
|
|
3659
|
+
const suffix = this.dataType === clientLayout.ClientLayoutItemFieldDataType.PERCENTAGE ? '%' :
|
|
3660
|
+
this.dataType === clientLayout.ClientLayoutItemFieldDataType.DECIMAL ? '' : '';
|
|
3780
3661
|
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 }))));
|
|
3781
3662
|
}
|
|
3782
3663
|
};
|
|
3783
3664
|
MrdNumberField.style = mrdNumberFieldCss();
|
|
3784
3665
|
|
|
3785
|
-
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}
|
|
3666
|
+
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)}}`;
|
|
3786
3667
|
|
|
3787
3668
|
const MrdRelationField = class {
|
|
3788
3669
|
constructor(hostRef) {
|
|
@@ -3799,7 +3680,7 @@ const MrdRelationField = class {
|
|
|
3799
3680
|
this.relatedClass = '';
|
|
3800
3681
|
/** When set, used instead of relatedClass for search queries (mostSignificantClass from API). */
|
|
3801
3682
|
this.mostSignificantClass = '';
|
|
3802
|
-
this.displayType =
|
|
3683
|
+
this.displayType = clientLayout.ClientLayoutItemRelationDisplayType.SEARCH;
|
|
3803
3684
|
this.multiple = false;
|
|
3804
3685
|
this.dropdownValues = [];
|
|
3805
3686
|
/** Plain href string/array for normal use; pass { id, label } objects to pre-fill a loaded record. */
|
|
@@ -3918,7 +3799,7 @@ const MrdRelationField = class {
|
|
|
3918
3799
|
return v;
|
|
3919
3800
|
}
|
|
3920
3801
|
allRecordsChanged() {
|
|
3921
|
-
if (this.editBehavior !==
|
|
3802
|
+
if (this.editBehavior !== clientLayout.ClientLayoutItemRelationEditBehavior.DROPDOWN)
|
|
3922
3803
|
return;
|
|
3923
3804
|
const current = this.getValueHref();
|
|
3924
3805
|
if (!current)
|
|
@@ -3987,7 +3868,7 @@ const MrdRelationField = class {
|
|
|
3987
3868
|
}
|
|
3988
3869
|
componentDidLoad() {
|
|
3989
3870
|
// Only emit when there is no commonRelation dependency — the form orchestrates those.
|
|
3990
|
-
if (this.editBehavior ===
|
|
3871
|
+
if (this.editBehavior === clientLayout.ClientLayoutItemRelationEditBehavior.DROPDOWN && !this.commonRelation) {
|
|
3991
3872
|
// Defer to next tick so parent event listeners are registered after DOM patching
|
|
3992
3873
|
setTimeout(() => {
|
|
3993
3874
|
this.mrdFetchAll.emit({
|
|
@@ -4001,11 +3882,11 @@ const MrdRelationField = class {
|
|
|
4001
3882
|
render() {
|
|
4002
3883
|
var _a, _b;
|
|
4003
3884
|
const hasError = !!this.error;
|
|
4004
|
-
if (this.editBehavior ===
|
|
3885
|
+
if (this.editBehavior === clientLayout.ClientLayoutItemRelationEditBehavior.DROPDOWN) {
|
|
4005
3886
|
const currentValue = this.getValueHref();
|
|
4006
3887
|
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 }))));
|
|
4007
3888
|
}
|
|
4008
|
-
if (this.displayType ===
|
|
3889
|
+
if (this.displayType === clientLayout.ClientLayoutItemRelationDisplayType.DROPDOWN) {
|
|
4009
3890
|
const currentValue = Array.isArray(this.value) ? ((_a = this.value[0]) !== null && _a !== void 0 ? _a : '') : ((_b = this.value) !== null && _b !== void 0 ? _b : '');
|
|
4010
3891
|
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 }))));
|
|
4011
3892
|
}
|
|
@@ -4493,7 +4374,7 @@ function getStalePages(requestedAt, now, timeoutMs) {
|
|
|
4493
4374
|
return stale;
|
|
4494
4375
|
}
|
|
4495
4376
|
|
|
4496
|
-
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}`;
|
|
4377
|
+
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}}`;
|
|
4497
4378
|
|
|
4498
4379
|
/** How often (ms) to scan outstanding page requests for staleness. */
|
|
4499
4380
|
const STALE_CHECK_INTERVAL_MS = 2000;
|
|
@@ -5291,7 +5172,7 @@ const MrdTable = class {
|
|
|
5291
5172
|
this.filterMode ? 'mrd-table__header--sortable' : '',
|
|
5292
5173
|
].filter(Boolean).join(' ');
|
|
5293
5174
|
return (index.h("th", { class: cls, onClick: this.filterMode ? (e) => this.handleFilterOpen(col, e) : undefined }, index.h("span", { class: "mrd-table__header-label" }, (_a = col.label) !== null && _a !== void 0 ? _a : ''), isFiltered && index.h(FilterIcon, null)));
|
|
5294
|
-
}))), index.h("tbody", null, (_b = this.rows) === null || _b === void 0 ? void 0 : _b.map((row, i) => (index.h("tr", { class: "mrd-table__row mrd-table__row--clickable", style: { background: i % 2 === 0 ? '' : 'var(--mrd-color-neutral-100)' }, onClick: () => this.mrdRowClick.emit(row) }, this.columns.map(col => this.renderCell(col, row)))))), this.renderTotalsRow()), (!this.rows || this.rows.length === 0) && (index.h("p", { class: "mrd-table__empty" }, t('no_results', this.locale)))), this.renderFooter((_c = this.rows) === null || _c === void 0 ? void 0 : _c.length), this.renderFilterPopup(), this.renderTextblockModal(), this.renderJsonModal()));
|
|
5175
|
+
}))), index.h("tbody", null, (_b = this.rows) === null || _b === void 0 ? void 0 : _b.map((row, i) => (index.h("tr", { class: "mrd-table__row mrd-table__row--clickable", style: { background: i % 2 === 0 ? '' : 'var(--mrd-color-neutral-100)' }, onClick: () => this.mrdRowClick.emit({ row }) }, this.columns.map(col => this.renderCell(col, row)))))), this.renderTotalsRow()), (!this.rows || this.rows.length === 0) && (index.h("p", { class: "mrd-table__empty" }, t('no_results', this.locale)))), this.renderFooter((_c = this.rows) === null || _c === void 0 ? void 0 : _c.length), this.renderFilterPopup(), this.renderTextblockModal(), this.renderJsonModal()));
|
|
5295
5176
|
}
|
|
5296
5177
|
// ── Paginated / virtual-scroll mode ────────────────────────────────────
|
|
5297
5178
|
// Derive the authoritative row count from loaded pages:
|
|
@@ -5320,7 +5201,15 @@ const MrdTable = class {
|
|
|
5320
5201
|
}
|
|
5321
5202
|
}
|
|
5322
5203
|
else {
|
|
5323
|
-
renderedRows.push(index.h("tr", { class: "mrd-table__row mrd-table__row--clickable", style: { background: i % 2 === 0 ? '' : 'var(--mrd-color-neutral-100)' }, onClick: () => this.mrdRowClick.emit(
|
|
5204
|
+
renderedRows.push(index.h("tr", { class: "mrd-table__row mrd-table__row--clickable", style: { background: i % 2 === 0 ? '' : 'var(--mrd-color-neutral-100)' }, onClick: () => this.mrdRowClick.emit({
|
|
5205
|
+
row,
|
|
5206
|
+
listContext: {
|
|
5207
|
+
index: i,
|
|
5208
|
+
sort: this.sortParam(),
|
|
5209
|
+
path: this.buildDataPath(),
|
|
5210
|
+
qs: this.buildQueryParams(0),
|
|
5211
|
+
},
|
|
5212
|
+
}) }, this.columns.map(col => this.renderCell(col, row))));
|
|
5324
5213
|
}
|
|
5325
5214
|
}
|
|
5326
5215
|
return (index.h(index.Host, null, this.renderToolbar(), index.h("div", { class: "mrd-table__scroll", style: { height: `${this.tableHeight}px` }, onScroll: this.handleScroll }, index.h("table", { class: "mrd-table__table", style: tableStyle }, index.h("thead", null, index.h("tr", null, this.columns.map((col, idx) => {
|
|
@@ -5497,7 +5386,6 @@ exports.mrd_document_view = MrdDocumentView;
|
|
|
5497
5386
|
exports.mrd_email_field = MrdEmailField;
|
|
5498
5387
|
exports.mrd_field = MrdField;
|
|
5499
5388
|
exports.mrd_file_field = MrdFileField;
|
|
5500
|
-
exports.mrd_file_preview = MrdFilePreview;
|
|
5501
5389
|
exports.mrd_form = MrdForm;
|
|
5502
5390
|
exports.mrd_hyperlink_field = MrdHyperlinkField;
|
|
5503
5391
|
exports.mrd_image_field = MrdImageField;
|