@mmlogic/components 0.3.2 → 0.3.3

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.
@@ -91,6 +91,9 @@ const translations = {
91
91
  // mrd-table textblock
92
92
  textblock_show_more: 'Meer tonen',
93
93
  close: 'Sluiten',
94
+ // history badge
95
+ history_until: 'tot',
96
+ history_badge_tooltip: 'Vorige waarden',
94
97
  },
95
98
  en: {
96
99
  required: 'This field is required',
@@ -150,6 +153,9 @@ const translations = {
150
153
  // mrd-table textblock
151
154
  textblock_show_more: 'Show more',
152
155
  close: 'Close',
156
+ // history badge
157
+ history_until: 'until',
158
+ history_badge_tooltip: 'Previous values',
153
159
  },
154
160
  ar: {
155
161
  required: 'هذا الحقل مطلوب',
@@ -209,6 +215,9 @@ const translations = {
209
215
  // mrd-table textblock
210
216
  textblock_show_more: 'عرض المزيد',
211
217
  close: 'إغلاق',
218
+ // history badge
219
+ history_until: 'حتى',
220
+ history_badge_tooltip: 'القيم السابقة',
212
221
  },
213
222
  fr: {
214
223
  required: 'Ce champ est obligatoire',
@@ -268,11 +277,262 @@ const translations = {
268
277
  // mrd-table textblock
269
278
  textblock_show_more: 'Voir plus',
270
279
  close: 'Fermer',
280
+ // history badge
281
+ history_until: "jusqu'au",
282
+ history_badge_tooltip: 'Valeurs précédentes',
283
+ },
284
+ de: {
285
+ required: 'Dieses Feld ist erforderlich',
286
+ select_placeholder: 'Option auswählen',
287
+ search_placeholder: 'Suchen...',
288
+ upload_file: 'Datei hochladen',
289
+ choose_file: 'Datei auswählen',
290
+ clear: 'Löschen',
291
+ today: 'Heute',
292
+ invalid_email: 'Bitte geben Sie eine gültige E-Mail-Adresse ein',
293
+ invalid_url: 'Bitte geben Sie eine gültige URL ein',
294
+ invalid_number: 'Bitte geben Sie eine gültige Zahl ein',
295
+ drop_file_here: 'Datei hier ablegen oder',
296
+ browse: 'durchsuchen',
297
+ file_too_large: 'Datei ist zu groß',
298
+ search_results: 'Suchergebnisse',
299
+ no_results: 'Keine Ergebnisse gefunden',
300
+ loading: 'Laden...',
301
+ submit: 'Speichern',
302
+ cancel: 'Abbrechen',
303
+ remove: 'Entfernen',
304
+ add: 'Hinzufügen',
305
+ yes: 'Ja',
306
+ no: 'Nein',
307
+ // mrd-table footer
308
+ table_of: 'von',
309
+ download: 'Herunterladen',
310
+ // mrd-table toolbar
311
+ table_filter: 'Filtern',
312
+ table_filter_hide: 'Filter ausblenden',
313
+ table_filter_active: 'aktiv',
314
+ table_filter_clear_all: 'Alle Filter löschen',
315
+ table_new_record: 'Neuer Eintrag',
316
+ table_export_excel: 'Als Excel exportieren',
317
+ // mrd-table filter popup
318
+ filter_sorting: 'Sortierung',
319
+ filter_ascending: 'Aufsteigend',
320
+ filter_descending: 'Absteigend',
321
+ filter_section: 'Filter',
322
+ filter_apply: 'Anwenden',
323
+ filter_clear: 'Löschen',
324
+ filter_contains: 'Enthält',
325
+ filter_starts_with: 'Beginnt mit',
326
+ filter_equals: 'Gleich',
327
+ filter_has_value: 'Hat Wert',
328
+ filter_is_empty: 'Ist leer',
329
+ filter_is_not_empty: 'Ist nicht leer',
330
+ filter_exact: 'Genau',
331
+ filter_range: 'Bereich',
332
+ filter_from: 'Von',
333
+ filter_to: 'Bis',
334
+ filter_all: 'Alle',
335
+ filter_select_all: 'Alle',
336
+ filter_select_none: 'Keine',
337
+ filter_search_value: 'Suchwert...',
338
+ filter_no_support: 'Filterung ist für diesen Feldtyp nicht verfügbar.',
339
+ // mrd-table textblock
340
+ textblock_show_more: 'Mehr anzeigen',
341
+ close: 'Schließen',
342
+ // history badge
343
+ history_until: 'bis',
344
+ history_badge_tooltip: 'Vorherige Werte',
345
+ },
346
+ es: {
347
+ required: 'Este campo es obligatorio',
348
+ select_placeholder: 'Seleccionar una opción',
349
+ search_placeholder: 'Buscar...',
350
+ upload_file: 'Subir archivo',
351
+ choose_file: 'Elegir archivo',
352
+ clear: 'Borrar',
353
+ today: 'Hoy',
354
+ invalid_email: 'Por favor, introduzca una dirección de correo electrónico válida',
355
+ invalid_url: 'Por favor, introduzca una URL válida',
356
+ invalid_number: 'Por favor, introduzca un número válido',
357
+ drop_file_here: 'Suelte el archivo aquí o',
358
+ browse: 'explorar',
359
+ file_too_large: 'El archivo es demasiado grande',
360
+ search_results: 'Resultados de búsqueda',
361
+ no_results: 'No se encontraron resultados',
362
+ loading: 'Cargando...',
363
+ submit: 'Guardar',
364
+ cancel: 'Cancelar',
365
+ remove: 'Eliminar',
366
+ add: 'Añadir',
367
+ yes: 'Sí',
368
+ no: 'No',
369
+ // mrd-table footer
370
+ table_of: 'de',
371
+ download: 'Descargar',
372
+ // mrd-table toolbar
373
+ table_filter: 'Filtrar',
374
+ table_filter_hide: 'Ocultar filtro',
375
+ table_filter_active: 'activo',
376
+ table_filter_clear_all: 'Borrar todos los filtros',
377
+ table_new_record: 'Nuevo registro',
378
+ table_export_excel: 'Exportar a Excel',
379
+ // mrd-table filter popup
380
+ filter_sorting: 'Ordenación',
381
+ filter_ascending: 'Ascendente',
382
+ filter_descending: 'Descendente',
383
+ filter_section: 'Filtro',
384
+ filter_apply: 'Aplicar',
385
+ filter_clear: 'Borrar',
386
+ filter_contains: 'Contiene',
387
+ filter_starts_with: 'Empieza por',
388
+ filter_equals: 'Igual a',
389
+ filter_has_value: 'Tiene valor',
390
+ filter_is_empty: 'Está vacío',
391
+ filter_is_not_empty: 'No está vacío',
392
+ filter_exact: 'Exacto',
393
+ filter_range: 'Rango',
394
+ filter_from: 'Desde',
395
+ filter_to: 'Hasta',
396
+ filter_all: 'Todos',
397
+ filter_select_all: 'Todos',
398
+ filter_select_none: 'Ninguno',
399
+ filter_search_value: 'Valor de búsqueda...',
400
+ filter_no_support: 'El filtrado no está disponible para este tipo de campo.',
401
+ // mrd-table textblock
402
+ textblock_show_more: 'Mostrar más',
403
+ close: 'Cerrar',
404
+ // history badge
405
+ history_until: 'hasta',
406
+ history_badge_tooltip: 'Valores anteriores',
407
+ },
408
+ it: {
409
+ required: 'Questo campo è obbligatorio',
410
+ select_placeholder: "Seleziona un'opzione",
411
+ search_placeholder: 'Cerca...',
412
+ upload_file: 'Carica file',
413
+ choose_file: 'Scegli file',
414
+ clear: 'Cancella',
415
+ today: 'Oggi',
416
+ invalid_email: 'Inserisci un indirizzo email valido',
417
+ invalid_url: 'Inserisci un URL valido',
418
+ invalid_number: 'Inserisci un numero valido',
419
+ drop_file_here: 'Trascina il file qui o',
420
+ browse: 'sfoglia',
421
+ file_too_large: 'Il file è troppo grande',
422
+ search_results: 'Risultati della ricerca',
423
+ no_results: 'Nessun risultato trovato',
424
+ loading: 'Caricamento...',
425
+ submit: 'Salva',
426
+ cancel: 'Annulla',
427
+ remove: 'Rimuovi',
428
+ add: 'Aggiungi',
429
+ yes: 'Sì',
430
+ no: 'No',
431
+ // mrd-table footer
432
+ table_of: 'di',
433
+ download: 'Scarica',
434
+ // mrd-table toolbar
435
+ table_filter: 'Filtra',
436
+ table_filter_hide: 'Nascondi filtro',
437
+ table_filter_active: 'attivo',
438
+ table_filter_clear_all: 'Cancella tutti i filtri',
439
+ table_new_record: 'Nuovo record',
440
+ table_export_excel: 'Esporta in Excel',
441
+ // mrd-table filter popup
442
+ filter_sorting: 'Ordinamento',
443
+ filter_ascending: 'Crescente',
444
+ filter_descending: 'Decrescente',
445
+ filter_section: 'Filtro',
446
+ filter_apply: 'Applica',
447
+ filter_clear: 'Cancella',
448
+ filter_contains: 'Contiene',
449
+ filter_starts_with: 'Inizia con',
450
+ filter_equals: 'Uguale a',
451
+ filter_has_value: 'Ha valore',
452
+ filter_is_empty: 'È vuoto',
453
+ filter_is_not_empty: 'Non è vuoto',
454
+ filter_exact: 'Esatto',
455
+ filter_range: 'Intervallo',
456
+ filter_from: 'Da',
457
+ filter_to: 'A',
458
+ filter_all: 'Tutti',
459
+ filter_select_all: 'Tutti',
460
+ filter_select_none: 'Nessuno',
461
+ filter_search_value: 'Valore di ricerca...',
462
+ filter_no_support: 'Il filtro non è disponibile per questo tipo di campo.',
463
+ // mrd-table textblock
464
+ textblock_show_more: 'Mostra altro',
465
+ close: 'Chiudi',
466
+ // history badge
467
+ history_until: 'fino a',
468
+ history_badge_tooltip: 'Valori precedenti',
469
+ },
470
+ uk: {
471
+ required: "Це поле обов'язкове",
472
+ select_placeholder: 'Виберіть варіант',
473
+ search_placeholder: 'Пошук...',
474
+ upload_file: 'Завантажити файл',
475
+ choose_file: 'Вибрати файл',
476
+ clear: 'Очистити',
477
+ today: 'Сьогодні',
478
+ invalid_email: 'Будь ласка, введіть дійсну адресу електронної пошти',
479
+ invalid_url: 'Будь ласка, введіть дійсну URL-адресу',
480
+ invalid_number: 'Будь ласка, введіть дійсне число',
481
+ drop_file_here: 'Перетягніть файл сюди або',
482
+ browse: 'огляд',
483
+ file_too_large: 'Файл занадто великий',
484
+ search_results: 'Результати пошуку',
485
+ no_results: 'Результатів не знайдено',
486
+ loading: 'Завантаження...',
487
+ submit: 'Зберегти',
488
+ cancel: 'Скасувати',
489
+ remove: 'Видалити',
490
+ add: 'Додати',
491
+ yes: 'Так',
492
+ no: 'Ні',
493
+ // mrd-table footer
494
+ table_of: 'з',
495
+ download: 'Завантажити',
496
+ // mrd-table toolbar
497
+ table_filter: 'Фільтрувати',
498
+ table_filter_hide: 'Сховати фільтр',
499
+ table_filter_active: 'активний',
500
+ table_filter_clear_all: 'Очистити всі фільтри',
501
+ table_new_record: 'Новий запис',
502
+ table_export_excel: 'Експортувати до Excel',
503
+ // mrd-table filter popup
504
+ filter_sorting: 'Сортування',
505
+ filter_ascending: 'За зростанням',
506
+ filter_descending: 'За спаданням',
507
+ filter_section: 'Фільтр',
508
+ filter_apply: 'Застосувати',
509
+ filter_clear: 'Очистити',
510
+ filter_contains: 'Містить',
511
+ filter_starts_with: 'Починається з',
512
+ filter_equals: 'Дорівнює',
513
+ filter_has_value: 'Має значення',
514
+ filter_is_empty: 'Порожнє',
515
+ filter_is_not_empty: 'Не порожнє',
516
+ filter_exact: 'Точно',
517
+ filter_range: 'Діапазон',
518
+ filter_from: 'Від',
519
+ filter_to: 'До',
520
+ filter_all: 'Всі',
521
+ filter_select_all: 'Всі',
522
+ filter_select_none: 'Жодного',
523
+ filter_search_value: 'Значення для пошуку...',
524
+ filter_no_support: 'Фільтрування недоступне для цього типу поля.',
525
+ // mrd-table textblock
526
+ textblock_show_more: 'Показати більше',
527
+ close: 'Закрити',
528
+ // history badge
529
+ history_until: 'до',
530
+ history_badge_tooltip: 'Попередні значення',
271
531
  },
272
532
  };
273
533
  function t(key, locale) {
274
534
  var _a, _b, _c;
275
- const lang = locale.split('-')[0].toLowerCase();
535
+ const lang = (locale !== null && locale !== void 0 ? locale : 'en').split('-')[0].toLowerCase();
276
536
  const dict = (_a = translations[lang]) !== null && _a !== void 0 ? _a : translations['en'];
277
537
  return (_c = (_b = dict[key]) !== null && _b !== void 0 ? _b : translations['en'][key]) !== null && _c !== void 0 ? _c : key;
278
538
  }
@@ -596,6 +856,8 @@ const MrdEmailField = class {
596
856
  };
597
857
  MrdEmailField.style = mrdEmailFieldScss();
598
858
 
859
+ const mrdFieldScss = () => `.sc-mrd-field-h{display:block}.mrd-field__inner.sc-mrd-field{display:block;width:100%}.mrd-field__history-editor.sc-mrd-field{margin-top:var(--mrd-space-2);display:flex;flex-direction:column;gap:var(--mrd-space-1)}.mrd-field__history-editor-label.sc-mrd-field{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-500)}.mrd-field__history-editor-row.sc-mrd-field{display:flex;align-items:center;gap:var(--mrd-space-2)}.mrd-field__history-editor-sep.sc-mrd-field{flex-shrink:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500)}.mrd-field__history-editor-value.sc-mrd-field{flex:1 1 0;min-width:0;height:var(--mrd-input-height);padding:0 var(--mrd-space-3);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-800);background-color:var(--mrd-color-white);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius-md);outline:none;transition:border-color var(--mrd-transition-fast), box-shadow var(--mrd-transition-fast)}.mrd-field__history-editor-value.sc-mrd-field:focus{border-color:var(--mrd-color-primary);box-shadow:var(--mrd-shadow-focus)}.mrd-field__history-editor-until.sc-mrd-field{flex:0 0 10rem;height:var(--mrd-input-height);padding:0 var(--mrd-space-3);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-800);background-color:var(--mrd-color-white);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius-md);outline:none;transition:border-color var(--mrd-transition-fast), box-shadow var(--mrd-transition-fast)}.mrd-field__history-editor-until.sc-mrd-field:focus{border-color:var(--mrd-color-primary);box-shadow:var(--mrd-shadow-focus)}.mrd-field__history-editor-remove.sc-mrd-field{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:2rem;height:2rem;padding:0;background:transparent;border:none;border-radius:var(--mrd-border-radius-sm);color:var(--mrd-color-neutral-400);cursor:pointer;transition:color var(--mrd-transition-fast), background-color var(--mrd-transition-fast)}.mrd-field__history-editor-remove.sc-mrd-field:hover{color:var(--mrd-color-danger);background-color:var(--mrd-color-danger-light)}.mrd-field__history-editor-remove.sc-mrd-field svg.sc-mrd-field{width:1rem;height:1rem}.mrd-field__history-editor-add.sc-mrd-field{align-self:flex-start;padding:var(--mrd-space-1) var(--mrd-space-3);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-primary);background:transparent;border:var(--mrd-border-width) solid var(--mrd-color-primary);border-radius:var(--mrd-border-radius-md);cursor:pointer;transition:background-color var(--mrd-transition-fast), color var(--mrd-transition-fast)}.mrd-field__history-editor-add.sc-mrd-field:hover{background-color:var(--mrd-color-primary-light)}`;
860
+
599
861
  const MrdField = class {
600
862
  constructor(hostRef) {
601
863
  registerInstance(this, hostRef);
@@ -605,9 +867,22 @@ const MrdField = class {
605
867
  this.mrdFetchAll = createEvent(this, "mrdFetchAll");
606
868
  this.mrdUpload = createEvent(this, "mrdUpload");
607
869
  this.locale = navigator.language;
870
+ this.historyEntries = [];
871
+ this.currentValue = undefined;
608
872
  this.handleChange = (e) => {
873
+ var _a, _b, _c, _d;
609
874
  e.stopPropagation();
610
- this.mrdChange.emit(e.detail);
875
+ const hist = (_b = (_a = this.item) === null || _a === void 0 ? void 0 : _a.historyEnabled) !== null && _b !== void 0 ? _b : (_d = (_c = this.item) === null || _c === void 0 ? void 0 : _c.field) === null || _d === void 0 ? void 0 : _d.historyEnabled;
876
+ if (hist) {
877
+ this.currentValue = e.detail.value;
878
+ this.mrdChange.emit({
879
+ name: e.detail.name,
880
+ value: { current: e.detail.value, history: this.historyEntries },
881
+ });
882
+ }
883
+ else {
884
+ this.mrdChange.emit(e.detail);
885
+ }
611
886
  };
612
887
  this.handleBlur = (e) => {
613
888
  e.stopPropagation();
@@ -626,62 +901,135 @@ const MrdField = class {
626
901
  this.mrdUpload.emit(e.detail);
627
902
  };
628
903
  }
629
- render() {
630
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8;
631
- const { item, locale, value } = this;
632
- if (item.type === ClientLayoutItemType.RELATION) {
633
- return (h(Host, null, 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 : 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 })));
904
+ componentWillLoad() {
905
+ this.initHistoryState();
906
+ }
907
+ valueChanged() {
908
+ this.initHistoryState();
909
+ }
910
+ initHistoryState() {
911
+ var _a, _b, _c, _d, _e;
912
+ const hist = (_b = (_a = this.item) === null || _a === void 0 ? void 0 : _a.historyEnabled) !== null && _b !== void 0 ? _b : (_d = (_c = this.item) === null || _c === void 0 ? void 0 : _c.field) === null || _d === void 0 ? void 0 : _d.historyEnabled;
913
+ if (!hist)
914
+ return;
915
+ const raw = this.value;
916
+ this.currentValue = (_e = raw === null || raw === void 0 ? void 0 : raw.current) !== null && _e !== void 0 ? _e : raw;
917
+ this.historyEntries = Array.isArray(raw === null || raw === void 0 ? void 0 : raw.history) ? [...raw.history] : [];
918
+ }
919
+ getDisplayValue() {
920
+ var _a, _b, _c, _d;
921
+ const hist = (_b = (_a = this.item) === null || _a === void 0 ? void 0 : _a.historyEnabled) !== null && _b !== void 0 ? _b : (_d = (_c = this.item) === null || _c === void 0 ? void 0 : _c.field) === null || _d === void 0 ? void 0 : _d.historyEnabled;
922
+ if (hist && this.value !== null && typeof this.value === 'object' && 'current' in this.value) {
923
+ return this.value.current;
634
924
  }
635
- if (item.type !== ClientLayoutItemType.FIELD) {
636
- return h(Host, null);
925
+ return this.value;
926
+ }
927
+ historyValueInputType() {
928
+ var _a;
929
+ switch ((_a = this.item) === null || _a === void 0 ? void 0 : _a.dataType) {
930
+ case ClientLayoutItemFieldDataType.DATE: return 'date';
931
+ case ClientLayoutItemFieldDataType.DATETIME: return 'datetime-local';
932
+ case ClientLayoutItemFieldDataType.TIME: return 'time';
933
+ case ClientLayoutItemFieldDataType.INTEGER:
934
+ case ClientLayoutItemFieldDataType.DECIMAL:
935
+ case ClientLayoutItemFieldDataType.PERCENTAGE: return 'number';
936
+ case ClientLayoutItemFieldDataType.EMAIL: return 'email';
937
+ default: return 'text';
637
938
  }
939
+ }
940
+ emitHistoryChange(entries) {
941
+ this.historyEntries = entries;
942
+ this.mrdChange.emit({
943
+ name: this.item.name,
944
+ value: { current: this.currentValue, history: entries },
945
+ });
946
+ }
947
+ renderHistoryEditor() {
948
+ var _a, _b, _c, _d;
949
+ const hist = (_b = (_a = this.item) === null || _a === void 0 ? void 0 : _a.historyEnabled) !== null && _b !== void 0 ? _b : (_d = (_c = this.item) === null || _c === void 0 ? void 0 : _c.field) === null || _d === void 0 ? void 0 : _d.historyEnabled;
950
+ if (!hist)
951
+ return null;
952
+ const { locale } = this;
953
+ const valueType = this.historyValueInputType();
954
+ const updateEntry = (i, field, val) => {
955
+ const updated = this.historyEntries.map((e, idx) => idx === i ? Object.assign(Object.assign({}, e), { [field]: val }) : e);
956
+ this.emitHistoryChange(updated);
957
+ };
958
+ const removeEntry = (i) => {
959
+ this.emitHistoryChange(this.historyEntries.filter((_, idx) => idx !== i));
960
+ };
961
+ const addEntry = () => {
962
+ this.emitHistoryChange([...this.historyEntries, { value: '', until: '' }]);
963
+ };
964
+ return (h("div", { class: "mrd-field__history-editor" }, this.historyEntries.length > 0 && (h("span", { class: "mrd-field__history-editor-label" }, t('history_badge_tooltip', locale))), this.historyEntries.map((entry, i) => (h("div", { key: String(i), class: "mrd-field__history-editor-row" }, h("input", { class: "mrd-field__history-editor-value", type: valueType, value: entry.value, onInput: (e) => updateEntry(i, 'value', e.target.value) }), h("span", { class: "mrd-field__history-editor-sep" }, t('history_until', locale)), h("input", { class: "mrd-field__history-editor-until", type: "date", value: entry.until, onInput: (e) => updateEntry(i, 'until', e.target.value) }), h("button", { type: "button", class: "mrd-field__history-editor-remove", onClick: () => removeEntry(i), "aria-label": t('remove', locale) }, h("svg", { viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true" }, h("path", { "fill-rule": "evenodd", d: "M8.75 1A2.75 2.75 0 006 3.75v.443c-.795.077-1.584.176-2.365.298a.75.75 0 10.23 1.482l.149-.022.841 10.518A2.75 2.75 0 007.596 19h4.807a2.75 2.75 0 002.742-2.53l.841-10.52.149.023a.75.75 0 00.23-1.482A41.03 41.03 0 0014 4.193V3.75A2.75 2.75 0 0011.25 1h-2.5zM10 4c.84 0 1.673.025 2.5.075V3.75c0-.69-.56-1.25-1.25-1.25h-2.5c-.69 0-1.25.56-1.25 1.25v.325C8.327 4.025 9.16 4 10 4zM8.58 7.72a.75.75 0 00-1.5.06l.3 7.5a.75.75 0 101.5-.06l-.3-7.5zm4.34.06a.75.75 0 10-1.5-.06l-.3 7.5a.75.75 0 101.5.06l.3-7.5z", "clip-rule": "evenodd" })))))), h("button", { type: "button", class: "mrd-field__history-editor-add", onClick: addEntry }, "+ ", t('add', locale))));
965
+ }
966
+ renderLeafField(displayValue) {
967
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2;
968
+ const { item, locale } = this;
638
969
  const commonProps = {
639
970
  name: item.name,
640
971
  label: item.label,
641
972
  required: item.required,
642
- disabled: (_g = item.disabled) !== null && _g !== void 0 ? _g : false,
973
+ disabled: (_a = item.disabled) !== null && _a !== void 0 ? _a : false,
643
974
  locale,
644
975
  onMrdChange: this.handleChange,
645
976
  onMrdBlur: this.handleBlur,
646
977
  };
647
978
  switch (item.dataType) {
648
979
  case ClientLayoutItemFieldDataType.TEXT:
649
- return (h(Host, null, h("mrd-text-field", Object.assign({}, commonProps, { value: (_h = value) !== null && _h !== void 0 ? _h : '', placeholder: (_j = item.placeholder) !== null && _j !== void 0 ? _j : '' }))));
980
+ return (h("mrd-text-field", Object.assign({}, commonProps, { value: (_b = displayValue) !== null && _b !== void 0 ? _b : '', placeholder: (_c = item.placeholder) !== null && _c !== void 0 ? _c : '' })));
650
981
  case ClientLayoutItemFieldDataType.TEXTBLOCK:
651
- return (h(Host, null, h("mrd-textarea-field", Object.assign({}, commonProps, { value: (_k = value) !== null && _k !== void 0 ? _k : '', placeholder: (_l = item.placeholder) !== null && _l !== void 0 ? _l : '' }))));
982
+ return (h("mrd-textarea-field", Object.assign({}, commonProps, { value: (_d = displayValue) !== null && _d !== void 0 ? _d : '', placeholder: (_e = item.placeholder) !== null && _e !== void 0 ? _e : '' })));
652
983
  case ClientLayoutItemFieldDataType.INTEGER:
653
984
  case ClientLayoutItemFieldDataType.DECIMAL:
654
985
  case ClientLayoutItemFieldDataType.PERCENTAGE:
655
- return (h(Host, null, h("mrd-number-field", Object.assign({}, commonProps, { value: (_m = value) !== null && _m !== void 0 ? _m : null, dataType: item.dataType, decimalPrecision: (_o = item.decimalPrecision) !== null && _o !== void 0 ? _o : 2, placeholder: (_p = item.placeholder) !== null && _p !== void 0 ? _p : '' }))));
986
+ return (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 : '' })));
656
987
  case ClientLayoutItemFieldDataType.CURRENCY:
657
- return (h(Host, null, h("mrd-currency-field", Object.assign({}, commonProps, { value: (_q = value) !== null && _q !== void 0 ? _q : { amount: null, currency: (_r = item.currencyCode) !== null && _r !== void 0 ? _r : 'EUR' } }))));
988
+ return (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' } })));
658
989
  case ClientLayoutItemFieldDataType.BOOLEAN:
659
- return (h(Host, null, h("mrd-boolean-field", Object.assign({}, commonProps, { value: (_s = value) !== null && _s !== void 0 ? _s : false }))));
990
+ return (h("mrd-boolean-field", Object.assign({}, commonProps, { value: (_l = displayValue) !== null && _l !== void 0 ? _l : false })));
660
991
  case ClientLayoutItemFieldDataType.DATE:
661
- return (h(Host, null, h("mrd-date-field", Object.assign({}, commonProps, { value: (_t = value) !== null && _t !== void 0 ? _t : '' }))));
992
+ return (h("mrd-date-field", Object.assign({}, commonProps, { value: (_m = displayValue) !== null && _m !== void 0 ? _m : '' })));
662
993
  case ClientLayoutItemFieldDataType.DATETIME:
663
- return (h(Host, null, h("mrd-datetime-field", Object.assign({}, commonProps, { value: (_u = value) !== null && _u !== void 0 ? _u : '' }))));
994
+ return (h("mrd-datetime-field", Object.assign({}, commonProps, { value: (_o = displayValue) !== null && _o !== void 0 ? _o : '' })));
664
995
  case ClientLayoutItemFieldDataType.TIME:
665
- return (h(Host, null, h("mrd-time-field", Object.assign({}, commonProps, { value: (_v = value) !== null && _v !== void 0 ? _v : '' }))));
996
+ return (h("mrd-time-field", Object.assign({}, commonProps, { value: (_p = displayValue) !== null && _p !== void 0 ? _p : '' })));
666
997
  case ClientLayoutItemFieldDataType.EMAIL:
667
- return (h(Host, null, h("mrd-email-field", Object.assign({}, commonProps, { value: (_w = value) !== null && _w !== void 0 ? _w : '', placeholder: (_x = item.placeholder) !== null && _x !== void 0 ? _x : '' }))));
998
+ return (h("mrd-email-field", Object.assign({}, commonProps, { value: (_q = displayValue) !== null && _q !== void 0 ? _q : '', placeholder: (_r = item.placeholder) !== null && _r !== void 0 ? _r : '' })));
668
999
  case ClientLayoutItemFieldDataType.HYPERLINK:
669
- return (h(Host, null, h("mrd-hyperlink-field", Object.assign({}, commonProps, { value: (_y = value) !== null && _y !== void 0 ? _y : '', placeholder: (_z = item.placeholder) !== null && _z !== void 0 ? _z : '' }))));
1000
+ return (h("mrd-hyperlink-field", Object.assign({}, commonProps, { value: (_s = displayValue) !== null && _s !== void 0 ? _s : '', placeholder: (_t = item.placeholder) !== null && _t !== void 0 ? _t : '' })));
670
1001
  case ClientLayoutItemFieldDataType.LIST:
671
- return (h(Host, null, h("mrd-list-field", Object.assign({}, commonProps, { value: (_0 = value) !== null && _0 !== void 0 ? _0 : '', multiple: (_1 = item.multiple) !== null && _1 !== void 0 ? _1 : false, listItems: (_2 = item.listItems) !== null && _2 !== void 0 ? _2 : [] }))));
1002
+ return (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 : [] })));
672
1003
  case ClientLayoutItemFieldDataType.FILE:
673
- return (h(Host, null, h("mrd-file-field", Object.assign({}, commonProps, { value: value, accept: (_3 = item.accept) !== null && _3 !== void 0 ? _3 : '', maxSize: (_4 = item.maxSize) !== null && _4 !== void 0 ? _4 : 0, onMrdUpload: this.handleUpload }))));
1004
+ return (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 })));
674
1005
  case ClientLayoutItemFieldDataType.IMAGE:
675
- return (h(Host, null, h("mrd-image-field", Object.assign({}, commonProps, { value: value, accept: (_5 = item.accept) !== null && _5 !== void 0 ? _5 : 'image/*', maxSize: (_6 = item.maxSize) !== null && _6 !== void 0 ? _6 : 0, onMrdUpload: this.handleUpload }))));
1006
+ return (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 })));
676
1007
  case ClientLayoutItemFieldDataType.LONGTEXT:
677
- return (h(Host, null, h("mrd-longtext-field", Object.assign({}, commonProps, { value: (_7 = value) !== null && _7 !== void 0 ? _7 : '', placeholder: (_8 = item.placeholder) !== null && _8 !== void 0 ? _8 : '' }))));
678
- case ClientLayoutItemFieldDataType.JSON:
679
- return h(Host, null);
1008
+ return (h("mrd-longtext-field", Object.assign({}, commonProps, { value: (_1 = displayValue) !== null && _1 !== void 0 ? _1 : '', placeholder: (_2 = item.placeholder) !== null && _2 !== void 0 ? _2 : '' })));
680
1009
  default:
681
- return h(Host, null);
1010
+ return null;
1011
+ }
1012
+ }
1013
+ render() {
1014
+ var _a, _b, _c, _d, _e, _f;
1015
+ const { item, locale, value } = this;
1016
+ if (item.type === ClientLayoutItemType.RELATION) {
1017
+ return (h(Host, null, 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 : 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 })));
1018
+ }
1019
+ if (item.type !== ClientLayoutItemType.FIELD) {
1020
+ return h(Host, null);
682
1021
  }
1022
+ const displayValue = this.getDisplayValue();
1023
+ return (h(Host, null, h("div", { class: "mrd-field__inner" }, this.renderLeafField(displayValue), this.renderHistoryEditor())));
683
1024
  }
1025
+ get el() { return getElement(this); }
1026
+ static get watchers() { return {
1027
+ "value": [{
1028
+ "valueChanged": 0
1029
+ }]
1030
+ }; }
684
1031
  };
1032
+ MrdField.style = mrdFieldScss();
685
1033
 
686
1034
  const mrdFileFieldScss = () => `.sc-mrd-file-field-h{display:block}.mrd-file-field.sc-mrd-file-field{display:flex;flex-direction:column;gap:var(--mrd-space-1);width:100%}.mrd-file-field__label.sc-mrd-file-field{display:block;font-family:var(--mrd-font-family);font-size:var(--mrd-label-font-size);font-weight:var(--mrd-label-font-weight);color:var(--mrd-label-color)}.mrd-file-field__label--required.sc-mrd-file-field::after{content:' *';color:var(--mrd-color-danger)}.mrd-file-field__zone.sc-mrd-file-field{display:flex;align-items:center;justify-content:center;padding:var(--mrd-space-6);border:2px dashed var(--mrd-border-color);border-radius:var(--mrd-border-radius-md);background-color:var(--mrd-color-neutral-50);cursor:pointer;transition:border-color var(--mrd-transition), background-color var(--mrd-transition);min-height:100px;position:relative}.mrd-file-field__zone.sc-mrd-file-field:hover{border-color:var(--mrd-color-primary);background-color:var(--mrd-color-primary-light)}.mrd-file-field__zone--dragging.sc-mrd-file-field{border-color:var(--mrd-color-primary);background-color:var(--mrd-color-primary-light)}.mrd-file-field__zone--error.sc-mrd-file-field{border-color:var(--mrd-border-color-error)}.mrd-file-field__zone--disabled.sc-mrd-file-field{opacity:0.6;cursor:not-allowed}.mrd-file-field__zone--disabled.sc-mrd-file-field:hover{border-color:var(--mrd-border-color);background-color:var(--mrd-color-neutral-50)}.mrd-file-field__input.sc-mrd-file-field{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;pointer-events:none}.mrd-file-field__prompt.sc-mrd-file-field{display:flex;flex-direction:column;align-items:center;gap:var(--mrd-space-2);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-500);text-align:center}.mrd-file-field__upload-icon.sc-mrd-file-field{width:32px;height:32px;color:var(--mrd-color-neutral-400)}.mrd-file-field__browse.sc-mrd-file-field{color:var(--mrd-color-primary);font-weight:var(--mrd-font-weight-medium);text-decoration:underline}.mrd-file-field__selected.sc-mrd-file-field{display:flex;align-items:center;gap:var(--mrd-space-2);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-neutral-700)}.mrd-file-field__icon.sc-mrd-file-field{width:20px;height:20px;color:var(--mrd-color-primary);flex-shrink:0}.mrd-file-field__filename.sc-mrd-file-field{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.mrd-file-field__clear.sc-mrd-file-field{background:none;border:none;cursor:pointer;color:var(--mrd-color-neutral-400);font-size:var(--mrd-font-size-sm);padding:var(--mrd-space-1);border-radius:var(--mrd-border-radius-sm);line-height:1}.mrd-file-field__clear.sc-mrd-file-field:hover{color:var(--mrd-color-danger);background-color:var(--mrd-color-danger-light)}.mrd-file-field__spinner.sc-mrd-file-field{display:inline-block;flex-shrink:0;width:18px;height:18px;border:2px solid var(--mrd-color-neutral-300);border-top-color:var(--mrd-color-primary);border-radius:50%;animation:mrd-file-spin 0.6s linear infinite}@keyframes mrd-file-spin{to{transform:rotate(360deg)}}.mrd-file-field__error.sc-mrd-file-field{font-family:var(--mrd-font-family);font-size:var(--mrd-error-font-size);color:var(--mrd-error-color)}`;
687
1035
 
@@ -1051,10 +1399,10 @@ const MrdForm = class {
1051
1399
  continue;
1052
1400
  const name = item.name;
1053
1401
  if (item.type === ClientLayoutItemType.FIELD) {
1054
- const value = this.formValues[name];
1055
- if (value instanceof File)
1402
+ const rawValue = this.formValues[name];
1403
+ if (rawValue instanceof File)
1056
1404
  continue;
1057
- const current = this.normalizeFieldValue(value);
1405
+ const current = this.normalizeFieldValue(rawValue);
1058
1406
  const initial = this.normalizeFieldValue(this.initialValues[name]);
1059
1407
  if (this.deepEqual(current, initial))
1060
1408
  continue;
@@ -1356,7 +1704,7 @@ class CellRenderer {
1356
1704
  }
1357
1705
  }
1358
1706
 
1359
- const mrdLayoutSectionScss = () => `.mrd-layout-section.sc-mrd-layout-section{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-color-neutral-800)}.mrd-layout-section__field.sc-mrd-layout-section{display:grid;grid-template-columns:200px 1fr;align-items:baseline;gap:0 var(--mrd-space-2);padding:var(--mrd-space-1) 0}.mrd-layout-section__field-label.sc-mrd-layout-section{font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-normal);color:var(--mrd-color-neutral-500);padding-top:1px}.mrd-layout-section__field-value.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-800);word-break:break-word}.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__pre.sc-mrd-layout-section{font-family:var(--mrd-font-family-mono);font-size:var(--mrd-font-size-xs);background-color:var(--mrd-color-neutral-50);border:1px solid var(--mrd-color-neutral-200);border-radius:var(--mrd-border-radius);padding:var(--mrd-space-3);margin:0;max-height:calc(10 * 1.5 * var(--mrd-font-size-xs));overflow-x:auto;overflow-y:auto;white-space:pre-wrap;word-break:break-word}.mrd-layout-section__group.sc-mrd-layout-section{margin:var(--mrd-space-4) 0}.mrd-layout-section__group-title.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-500);margin:0 0 var(--mrd-space-2) 0;padding-bottom:0;text-transform:uppercase;letter-spacing:0.05em}.mrd-layout-section__related-view.sc-mrd-layout-section{margin:var(--mrd-space-4) 0}.mrd-layout-section__related-view-title.sc-mrd-layout-section{font-size:var(--mrd-font-size-lg);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-800);margin:0 0 var(--mrd-space-3) 0}.mrd-layout-section__search.sc-mrd-layout-section{position:relative;margin:var(--mrd-space-2) 0}.mrd-layout-section__search-wrap.sc-mrd-layout-section{position:relative}.mrd-layout-section__search-icon.sc-mrd-layout-section{position:absolute;left:var(--mrd-input-padding-x);top:50%;transform:translateY(-50%);width:1rem;height:1rem;color:var(--mrd-color-neutral-400);pointer-events:none}.mrd-layout-section__search-input.sc-mrd-layout-section{display:block;width:100%;height:var(--mrd-input-height);padding:var(--mrd-input-padding-y) var(--mrd-input-padding-x) var(--mrd-input-padding-y) calc(var(--mrd-input-padding-x) + 1rem + var(--mrd-space-2));font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-input-color);background-color:var(--mrd-input-bg);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);outline:none;appearance:none;box-sizing:border-box}.mrd-layout-section__search-input.sc-mrd-layout-section:focus{border-color:var(--mrd-border-color-focus);box-shadow:var(--mrd-shadow-focus)}.mrd-layout-section__search-input.sc-mrd-layout-section::placeholder{color:var(--mrd-input-placeholder-color)}.mrd-layout-section__search-results.sc-mrd-layout-section{position:absolute;top:100%;left:0;right:0;background-color:var(--mrd-color-white);border:1px solid var(--mrd-color-neutral-300);border-top:none;border-radius:0 0 var(--mrd-border-radius) var(--mrd-border-radius);box-shadow:var(--mrd-shadow-sm);z-index:100;max-height:300px;overflow-y:auto;list-style:none;margin:0;padding:var(--mrd-space-1) 0}.mrd-layout-section__search-result.sc-mrd-layout-section{margin:0;padding:0}.mrd-layout-section__search-result-btn.sc-mrd-layout-section{display:flex;flex-direction:column;width:100%;padding:var(--mrd-space-2) var(--mrd-space-3);background:none;border:none;text-align:left;cursor:pointer;font-family:var(--mrd-font-family)}.mrd-layout-section__search-result-btn.sc-mrd-layout-section:hover{background-color:var(--mrd-color-primary-light)}.mrd-layout-section__search-result-label.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-800)}.mrd-layout-section__search-result-desc.sc-mrd-layout-section{font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500);margin-top:var(--mrd-space-1)}.mrd-layout-section__image-thumb-btn.sc-mrd-layout-section{background:none;border:none;padding:0;cursor:pointer;display:inline-block;border-radius:var(--mrd-border-radius);overflow:hidden;line-height:0}.mrd-layout-section__image-thumb-btn.sc-mrd-layout-section:hover .mrd-layout-section__image-thumb.sc-mrd-layout-section{opacity:0.85}.mrd-layout-section__image-thumb.sc-mrd-layout-section{display:block;max-width:160px;max-height:100px;border-radius:var(--mrd-border-radius);object-fit:cover;transition:opacity 0.15s}.mrd-layout-section__modal-backdrop.sc-mrd-layout-section{position:fixed;inset:0;background:rgba(0, 0, 0, 0.6);z-index:300;display:flex;align-items:center;justify-content:center}.mrd-layout-section__modal.sc-mrd-layout-section{position:relative;background:#fff;border-radius:var(--mrd-border-radius);padding:var(--mrd-space-3);max-width:min(90vw, 900px);max-height:90vh;display:flex;align-items:center;justify-content:center;box-shadow:var(--mrd-shadow-lg)}.mrd-layout-section__modal-close.sc-mrd-layout-section{position:absolute;top:var(--mrd-space-2);right:var(--mrd-space-2);background:rgba(0, 0, 0, 0.5);border:none;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;font-size:var(--mrd-font-size-sm);line-height:1;z-index:1}.mrd-layout-section__modal-close.sc-mrd-layout-section:hover{background:rgba(0, 0, 0, 0.8)}.mrd-layout-section__modal-image.sc-mrd-layout-section{display:block;max-width:100%;max-height:calc(90vh - 2rem);border-radius:var(--mrd-border-radius);object-fit:contain}`;
1707
+ const mrdLayoutSectionScss = () => `.mrd-layout-section.sc-mrd-layout-section{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-color-neutral-800)}.mrd-layout-section__field.sc-mrd-layout-section{display:grid;grid-template-columns:200px 1fr;align-items:baseline;gap:0 var(--mrd-space-2);padding:var(--mrd-space-1) 0}.mrd-layout-section__field-label.sc-mrd-layout-section{font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-normal);color:var(--mrd-color-neutral-500);padding-top:1px}.mrd-layout-section__field-value.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-800);word-break:break-word;display:inline-flex;align-items:center;gap:var(--mrd-space-1)}.mrd-layout-section__history-wrap.sc-mrd-layout-section{position:relative;display:inline-flex;align-items:center}.mrd-layout-section__history-btn.sc-mrd-layout-section{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;padding:0;background:transparent;border:none;border-radius:var(--mrd-border-radius-sm);color:var(--mrd-color-neutral-400);cursor:pointer;flex-shrink:0;transition:color var(--mrd-transition-fast), background-color var(--mrd-transition-fast)}.mrd-layout-section__history-btn.sc-mrd-layout-section:hover{color:var(--mrd-color-neutral-700);background-color:var(--mrd-color-neutral-100)}.mrd-layout-section__history-btn.sc-mrd-layout-section:focus{outline:none;box-shadow:var(--mrd-shadow-focus)}.mrd-layout-section__history-icon.sc-mrd-layout-section{width:0.875rem;height:0.875rem}.mrd-layout-section__history-popover.sc-mrd-layout-section{position:absolute;top:calc(100% + 0.25rem);left:0;min-width:24rem;max-width:24rem;background-color:var(--mrd-color-white);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius-md);box-shadow:var(--mrd-shadow-md);padding:var(--mrd-space-1) 0;z-index:var(--mrd-z-dropdown)}.mrd-layout-section__history-entry.sc-mrd-layout-section{font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-normal);color:var(--mrd-color-neutral-700);padding:var(--mrd-space-2) var(--mrd-space-3);line-height:var(--mrd-line-height-normal)}.mrd-layout-section__history-entry.sc-mrd-layout-section:not(:last-child){border-bottom:var(--mrd-border-width) solid var(--mrd-color-neutral-100)}.mrd-layout-section__field-header.sc-mrd-layout-section{font-size:var(--mrd-font-size-2xl);font-weight:var(--mrd-font-weight-bold);color:var(--mrd-color-neutral-900);margin:0 0 var(--mrd-space-4) 0;padding:0}.mrd-layout-section__header.sc-mrd-layout-section{font-size:var(--mrd-font-size-xl);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-800);margin:var(--mrd-space-4) 0 var(--mrd-space-2) 0;padding:0}.mrd-layout-section__text.sc-mrd-layout-section{font-size:var(--mrd-font-size-base);color:var(--mrd-color-neutral-700);line-height:var(--mrd-line-height-relaxed);margin:var(--mrd-space-2) 0}.mrd-layout-section__navigate.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-2);padding:var(--mrd-space-2) var(--mrd-space-3);background:none;border:1px solid var(--mrd-color-neutral-300);border-radius:var(--mrd-border-radius);font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-primary);cursor:pointer;margin:var(--mrd-space-2) 0}.mrd-layout-section__navigate.sc-mrd-layout-section:hover{background-color:var(--mrd-color-primary-light);border-color:var(--mrd-color-primary)}.mrd-layout-section__link.sc-mrd-layout-section{color:var(--mrd-color-primary);text-decoration:none}.mrd-layout-section__link.sc-mrd-layout-section:hover{text-decoration:underline}.mrd-layout-section__relation-link.sc-mrd-layout-section{background:none;border:none;padding:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-primary);cursor:pointer;text-align:left}.mrd-layout-section__relation-link.sc-mrd-layout-section:hover{text-decoration:underline}.mrd-layout-section__download-link.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-1);background:none;border:none;padding:0;font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-sm);color:var(--mrd-color-primary);cursor:pointer;text-align:left}.mrd-layout-section__download-link.sc-mrd-layout-section:hover{text-decoration:underline;color:var(--mrd-color-primary-dark)}.mrd-layout-section__file-icon.sc-mrd-layout-section{flex-shrink:0;width:1rem;height:1rem}.mrd-layout-section__boolean--true.sc-mrd-layout-section{color:var(--mrd-color-success);font-weight:var(--mrd-font-weight-semibold)}.mrd-layout-section__boolean--false.sc-mrd-layout-section{color:var(--mrd-color-neutral-400)}.mrd-layout-section__field--block.sc-mrd-layout-section{grid-template-columns:1fr}.mrd-layout-section__badge.sc-mrd-layout-section{display:inline-block;font-size:var(--mrd-font-size-xs);font-weight:var(--mrd-font-weight-medium);padding:2px var(--mrd-space-3);border-radius:10px}.mrd-layout-section__badge-dot-row.sc-mrd-layout-section{display:inline-flex;align-items:center;gap:var(--mrd-space-2)}.mrd-layout-section__badge-dot.sc-mrd-layout-section{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0}.mrd-layout-section__pre.sc-mrd-layout-section{font-family:var(--mrd-font-family-mono);font-size:var(--mrd-font-size-xs);background-color:var(--mrd-color-neutral-50);border:1px solid var(--mrd-color-neutral-200);border-radius:var(--mrd-border-radius);padding:var(--mrd-space-3);margin:0;max-height:calc(10 * 1.5 * var(--mrd-font-size-xs));overflow-x:auto;overflow-y:auto;white-space:pre-wrap;word-break:break-word}.mrd-layout-section__group.sc-mrd-layout-section{margin:var(--mrd-space-4) 0}.mrd-layout-section__group-title.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-500);margin:0 0 var(--mrd-space-2) 0;padding-bottom:0;text-transform:uppercase;letter-spacing:0.05em}.mrd-layout-section__related-view.sc-mrd-layout-section{margin:var(--mrd-space-4) 0}.mrd-layout-section__related-view-title.sc-mrd-layout-section{font-size:var(--mrd-font-size-lg);font-weight:var(--mrd-font-weight-semibold);color:var(--mrd-color-neutral-800);margin:0 0 var(--mrd-space-3) 0}.mrd-layout-section__search.sc-mrd-layout-section{position:relative;margin:var(--mrd-space-2) 0}.mrd-layout-section__search-wrap.sc-mrd-layout-section{position:relative}.mrd-layout-section__search-icon.sc-mrd-layout-section{position:absolute;left:var(--mrd-input-padding-x);top:50%;transform:translateY(-50%);width:1rem;height:1rem;color:var(--mrd-color-neutral-400);pointer-events:none}.mrd-layout-section__search-input.sc-mrd-layout-section{display:block;width:100%;height:var(--mrd-input-height);padding:var(--mrd-input-padding-y) var(--mrd-input-padding-x) var(--mrd-input-padding-y) calc(var(--mrd-input-padding-x) + 1rem + var(--mrd-space-2));font-family:var(--mrd-font-family);font-size:var(--mrd-font-size-base);color:var(--mrd-input-color);background-color:var(--mrd-input-bg);border:var(--mrd-border-width) solid var(--mrd-border-color);border-radius:var(--mrd-border-radius);outline:none;appearance:none;box-sizing:border-box}.mrd-layout-section__search-input.sc-mrd-layout-section:focus{border-color:var(--mrd-border-color-focus);box-shadow:var(--mrd-shadow-focus)}.mrd-layout-section__search-input.sc-mrd-layout-section::placeholder{color:var(--mrd-input-placeholder-color)}.mrd-layout-section__search-results.sc-mrd-layout-section{position:absolute;top:100%;left:0;right:0;background-color:var(--mrd-color-white);border:1px solid var(--mrd-color-neutral-300);border-top:none;border-radius:0 0 var(--mrd-border-radius) var(--mrd-border-radius);box-shadow:var(--mrd-shadow-sm);z-index:100;max-height:300px;overflow-y:auto;list-style:none;margin:0;padding:var(--mrd-space-1) 0}.mrd-layout-section__search-result.sc-mrd-layout-section{margin:0;padding:0}.mrd-layout-section__search-result-btn.sc-mrd-layout-section{display:flex;flex-direction:column;width:100%;padding:var(--mrd-space-2) var(--mrd-space-3);background:none;border:none;text-align:left;cursor:pointer;font-family:var(--mrd-font-family)}.mrd-layout-section__search-result-btn.sc-mrd-layout-section:hover{background-color:var(--mrd-color-primary-light)}.mrd-layout-section__search-result-label.sc-mrd-layout-section{font-size:var(--mrd-font-size-sm);font-weight:var(--mrd-font-weight-medium);color:var(--mrd-color-neutral-800)}.mrd-layout-section__search-result-desc.sc-mrd-layout-section{font-size:var(--mrd-font-size-xs);color:var(--mrd-color-neutral-500);margin-top:var(--mrd-space-1)}.mrd-layout-section__image-thumb-btn.sc-mrd-layout-section{background:none;border:none;padding:0;cursor:pointer;display:inline-block;border-radius:var(--mrd-border-radius);overflow:hidden;line-height:0}.mrd-layout-section__image-thumb-btn.sc-mrd-layout-section:hover .mrd-layout-section__image-thumb.sc-mrd-layout-section{opacity:0.85}.mrd-layout-section__image-thumb.sc-mrd-layout-section{display:block;max-width:160px;max-height:100px;border-radius:var(--mrd-border-radius);object-fit:cover;transition:opacity 0.15s}.mrd-layout-section__modal-backdrop.sc-mrd-layout-section{position:fixed;inset:0;background:rgba(0, 0, 0, 0.6);z-index:300;display:flex;align-items:center;justify-content:center}.mrd-layout-section__modal.sc-mrd-layout-section{position:relative;background:#fff;border-radius:var(--mrd-border-radius);padding:var(--mrd-space-3);max-width:min(90vw, 900px);max-height:90vh;display:flex;align-items:center;justify-content:center;box-shadow:var(--mrd-shadow-lg)}.mrd-layout-section__modal-close.sc-mrd-layout-section{position:absolute;top:var(--mrd-space-2);right:var(--mrd-space-2);background:rgba(0, 0, 0, 0.5);border:none;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;font-size:var(--mrd-font-size-sm);line-height:1;z-index:1}.mrd-layout-section__modal-close.sc-mrd-layout-section:hover{background:rgba(0, 0, 0, 0.8)}.mrd-layout-section__modal-image.sc-mrd-layout-section{display:block;max-width:100%;max-height:calc(90vh - 2rem);border-radius:var(--mrd-border-radius);object-fit:contain}`;
1360
1708
 
1361
1709
  const MrdLayoutSection = class {
1362
1710
  constructor(hostRef) {
@@ -1381,6 +1729,8 @@ const MrdLayoutSection = class {
1381
1729
  this.searchResultsMap = {};
1382
1730
  this.imagePreviewUrl = null;
1383
1731
  this.imagePreviews = {};
1732
+ this.openHistoryField = null;
1733
+ this.historyClickOutside = null;
1384
1734
  this.searchTimers = {};
1385
1735
  this.handleViewLoadPage = (e, name) => {
1386
1736
  e.stopPropagation();
@@ -1404,6 +1754,17 @@ const MrdLayoutSection = class {
1404
1754
  this.initEmbeddedTables();
1405
1755
  this.emitLoadImages();
1406
1756
  }, 0);
1757
+ this.historyClickOutside = (e) => {
1758
+ if (!this.el.contains(e.target))
1759
+ this.openHistoryField = null;
1760
+ };
1761
+ document.addEventListener('mousedown', this.historyClickOutside);
1762
+ }
1763
+ disconnectedCallback() {
1764
+ if (this.historyClickOutside) {
1765
+ document.removeEventListener('mousedown', this.historyClickOutside);
1766
+ this.historyClickOutside = null;
1767
+ }
1407
1768
  }
1408
1769
  dataChanged(newVal) {
1409
1770
  if (newVal && Object.keys(newVal).length > 0) {
@@ -1552,10 +1913,31 @@ const MrdLayoutSection = class {
1552
1913
  }
1553
1914
  return this.renderSingleFieldValue(item, rawValue);
1554
1915
  }
1916
+ renderHistoryBadge(item, raw) {
1917
+ var _a, _b, _c;
1918
+ const hist = (_a = item.historyEnabled) !== null && _a !== void 0 ? _a : (_b = item.field) === null || _b === void 0 ? void 0 : _b.historyEnabled;
1919
+ if (!hist || !item.name)
1920
+ return null;
1921
+ const history = (_c = raw === null || raw === void 0 ? void 0 : raw.history) !== null && _c !== void 0 ? _c : [];
1922
+ if (!history.length)
1923
+ return null;
1924
+ const sorted = [...history].sort((a, b) => b.until.localeCompare(a.until));
1925
+ const isOpen = this.openHistoryField === item.name;
1926
+ const { locale } = this;
1927
+ return (h("span", { class: "mrd-layout-section__history-wrap" }, h("button", { type: "button", class: "mrd-layout-section__history-btn", title: t('history_badge_tooltip', locale), "aria-label": t('history_badge_tooltip', locale), onClick: (e) => {
1928
+ e.stopPropagation();
1929
+ this.openHistoryField = isOpen ? null : item.name;
1930
+ } }, h("svg", { class: "mrd-layout-section__history-icon", viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true" }, h("path", { "fill-rule": "evenodd", d: "M10 18a8 8 0 100-16 8 8 0 000 16zm.75-13a.75.75 0 00-1.5 0v5c0 .207.085.394.22.53l2.5 2.5a.75.75 0 101.06-1.06L10.75 9.69V5z", "clip-rule": "evenodd" }))), isOpen && (h("div", { class: "mrd-layout-section__history-popover", role: "listbox" }, sorted.map((entry, i) => (h("div", { key: String(i), class: "mrd-layout-section__history-entry" }, entry.value, " (", t('history_until', locale), " ", formatDate(entry.until, locale), ")")))))));
1931
+ }
1555
1932
  renderField(item) {
1933
+ var _a, _b;
1556
1934
  if (!item.name)
1557
1935
  return null;
1558
- const rawValue = this.data[item.name];
1936
+ const raw = this.data[item.name];
1937
+ const hist = (_a = item.historyEnabled) !== null && _a !== void 0 ? _a : (_b = item.field) === null || _b === void 0 ? void 0 : _b.historyEnabled;
1938
+ const rawValue = hist && raw !== null && typeof raw === 'object' && 'current' in raw
1939
+ ? raw.current
1940
+ : raw;
1559
1941
  const renderedValue = this.renderFieldValue(item, rawValue);
1560
1942
  if (item.header) {
1561
1943
  return (h("h1", { class: "mrd-layout-section__field-header", key: item.name }, typeof renderedValue === 'string' ? renderedValue : rawValue != null ? String(rawValue) : item.label));
@@ -1565,7 +1947,7 @@ const MrdLayoutSection = class {
1565
1947
  const isBlock = item.dataType === ClientLayoutItemFieldDataType.TEXTBLOCK
1566
1948
  || item.dataType === ClientLayoutItemFieldDataType.LONGTEXT
1567
1949
  || item.dataType === ClientLayoutItemFieldDataType.JSON;
1568
- return (h("div", { class: `mrd-layout-section__field${isBlock ? ' mrd-layout-section__field--block' : ''}`, key: item.name }, h("span", { class: "mrd-layout-section__field-label" }, item.label), h("span", { class: "mrd-layout-section__field-value" }, renderedValue)));
1950
+ return (h("div", { class: `mrd-layout-section__field${isBlock ? ' mrd-layout-section__field--block' : ''}`, key: item.name }, h("span", { class: "mrd-layout-section__field-label" }, item.label), h("span", { class: "mrd-layout-section__field-value" }, renderedValue, this.renderHistoryBadge(item, raw))));
1569
1951
  }
1570
1952
  renderRelation(item) {
1571
1953
  var _a, _b, _c;
@@ -1660,7 +2042,7 @@ const MrdLayoutSection = class {
1660
2042
  return (h("div", { class: "mrd-layout-section__modal-backdrop", onClick: () => { this.imagePreviewUrl = null; } }, h("div", { class: "mrd-layout-section__modal", onClick: (e) => e.stopPropagation() }, h("button", { class: "mrd-layout-section__modal-close", onClick: () => { this.imagePreviewUrl = null; } }, "\u2715"), h("img", { class: "mrd-layout-section__modal-image", src: this.imagePreviewUrl, alt: "" }))));
1661
2043
  }
1662
2044
  render() {
1663
- return (h(Host, { key: '0a3a58f5c80716bc0a7ba1b9468b721706d2ce4a' }, h("div", { key: '7cf63580c584811c1bb84b419e8d13026e432fba', class: "mrd-layout-section" }, this.items.map(item => this.renderItem(item))), this.renderImageModal()));
2045
+ return (h(Host, { key: '39ba6fc1fc823864025ca6a8df4c97b0f4cb96e6' }, h("div", { key: 'b1af15adfec5c699e00546b03b535149b834b6e4', class: "mrd-layout-section" }, this.items.map(item => this.renderItem(item))), this.renderImageModal()));
1664
2046
  }
1665
2047
  get el() { return getElement(this); }
1666
2048
  static get watchers() { return {