@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.
@@ -93,6 +93,9 @@ const translations = {
93
93
  // mrd-table textblock
94
94
  textblock_show_more: 'Meer tonen',
95
95
  close: 'Sluiten',
96
+ // history badge
97
+ history_until: 'tot',
98
+ history_badge_tooltip: 'Vorige waarden',
96
99
  },
97
100
  en: {
98
101
  required: 'This field is required',
@@ -152,6 +155,9 @@ const translations = {
152
155
  // mrd-table textblock
153
156
  textblock_show_more: 'Show more',
154
157
  close: 'Close',
158
+ // history badge
159
+ history_until: 'until',
160
+ history_badge_tooltip: 'Previous values',
155
161
  },
156
162
  ar: {
157
163
  required: 'هذا الحقل مطلوب',
@@ -211,6 +217,9 @@ const translations = {
211
217
  // mrd-table textblock
212
218
  textblock_show_more: 'عرض المزيد',
213
219
  close: 'إغلاق',
220
+ // history badge
221
+ history_until: 'حتى',
222
+ history_badge_tooltip: 'القيم السابقة',
214
223
  },
215
224
  fr: {
216
225
  required: 'Ce champ est obligatoire',
@@ -270,11 +279,262 @@ const translations = {
270
279
  // mrd-table textblock
271
280
  textblock_show_more: 'Voir plus',
272
281
  close: 'Fermer',
282
+ // history badge
283
+ history_until: "jusqu'au",
284
+ history_badge_tooltip: 'Valeurs précédentes',
285
+ },
286
+ de: {
287
+ required: 'Dieses Feld ist erforderlich',
288
+ select_placeholder: 'Option auswählen',
289
+ search_placeholder: 'Suchen...',
290
+ upload_file: 'Datei hochladen',
291
+ choose_file: 'Datei auswählen',
292
+ clear: 'Löschen',
293
+ today: 'Heute',
294
+ invalid_email: 'Bitte geben Sie eine gültige E-Mail-Adresse ein',
295
+ invalid_url: 'Bitte geben Sie eine gültige URL ein',
296
+ invalid_number: 'Bitte geben Sie eine gültige Zahl ein',
297
+ drop_file_here: 'Datei hier ablegen oder',
298
+ browse: 'durchsuchen',
299
+ file_too_large: 'Datei ist zu groß',
300
+ search_results: 'Suchergebnisse',
301
+ no_results: 'Keine Ergebnisse gefunden',
302
+ loading: 'Laden...',
303
+ submit: 'Speichern',
304
+ cancel: 'Abbrechen',
305
+ remove: 'Entfernen',
306
+ add: 'Hinzufügen',
307
+ yes: 'Ja',
308
+ no: 'Nein',
309
+ // mrd-table footer
310
+ table_of: 'von',
311
+ download: 'Herunterladen',
312
+ // mrd-table toolbar
313
+ table_filter: 'Filtern',
314
+ table_filter_hide: 'Filter ausblenden',
315
+ table_filter_active: 'aktiv',
316
+ table_filter_clear_all: 'Alle Filter löschen',
317
+ table_new_record: 'Neuer Eintrag',
318
+ table_export_excel: 'Als Excel exportieren',
319
+ // mrd-table filter popup
320
+ filter_sorting: 'Sortierung',
321
+ filter_ascending: 'Aufsteigend',
322
+ filter_descending: 'Absteigend',
323
+ filter_section: 'Filter',
324
+ filter_apply: 'Anwenden',
325
+ filter_clear: 'Löschen',
326
+ filter_contains: 'Enthält',
327
+ filter_starts_with: 'Beginnt mit',
328
+ filter_equals: 'Gleich',
329
+ filter_has_value: 'Hat Wert',
330
+ filter_is_empty: 'Ist leer',
331
+ filter_is_not_empty: 'Ist nicht leer',
332
+ filter_exact: 'Genau',
333
+ filter_range: 'Bereich',
334
+ filter_from: 'Von',
335
+ filter_to: 'Bis',
336
+ filter_all: 'Alle',
337
+ filter_select_all: 'Alle',
338
+ filter_select_none: 'Keine',
339
+ filter_search_value: 'Suchwert...',
340
+ filter_no_support: 'Filterung ist für diesen Feldtyp nicht verfügbar.',
341
+ // mrd-table textblock
342
+ textblock_show_more: 'Mehr anzeigen',
343
+ close: 'Schließen',
344
+ // history badge
345
+ history_until: 'bis',
346
+ history_badge_tooltip: 'Vorherige Werte',
347
+ },
348
+ es: {
349
+ required: 'Este campo es obligatorio',
350
+ select_placeholder: 'Seleccionar una opción',
351
+ search_placeholder: 'Buscar...',
352
+ upload_file: 'Subir archivo',
353
+ choose_file: 'Elegir archivo',
354
+ clear: 'Borrar',
355
+ today: 'Hoy',
356
+ invalid_email: 'Por favor, introduzca una dirección de correo electrónico válida',
357
+ invalid_url: 'Por favor, introduzca una URL válida',
358
+ invalid_number: 'Por favor, introduzca un número válido',
359
+ drop_file_here: 'Suelte el archivo aquí o',
360
+ browse: 'explorar',
361
+ file_too_large: 'El archivo es demasiado grande',
362
+ search_results: 'Resultados de búsqueda',
363
+ no_results: 'No se encontraron resultados',
364
+ loading: 'Cargando...',
365
+ submit: 'Guardar',
366
+ cancel: 'Cancelar',
367
+ remove: 'Eliminar',
368
+ add: 'Añadir',
369
+ yes: 'Sí',
370
+ no: 'No',
371
+ // mrd-table footer
372
+ table_of: 'de',
373
+ download: 'Descargar',
374
+ // mrd-table toolbar
375
+ table_filter: 'Filtrar',
376
+ table_filter_hide: 'Ocultar filtro',
377
+ table_filter_active: 'activo',
378
+ table_filter_clear_all: 'Borrar todos los filtros',
379
+ table_new_record: 'Nuevo registro',
380
+ table_export_excel: 'Exportar a Excel',
381
+ // mrd-table filter popup
382
+ filter_sorting: 'Ordenación',
383
+ filter_ascending: 'Ascendente',
384
+ filter_descending: 'Descendente',
385
+ filter_section: 'Filtro',
386
+ filter_apply: 'Aplicar',
387
+ filter_clear: 'Borrar',
388
+ filter_contains: 'Contiene',
389
+ filter_starts_with: 'Empieza por',
390
+ filter_equals: 'Igual a',
391
+ filter_has_value: 'Tiene valor',
392
+ filter_is_empty: 'Está vacío',
393
+ filter_is_not_empty: 'No está vacío',
394
+ filter_exact: 'Exacto',
395
+ filter_range: 'Rango',
396
+ filter_from: 'Desde',
397
+ filter_to: 'Hasta',
398
+ filter_all: 'Todos',
399
+ filter_select_all: 'Todos',
400
+ filter_select_none: 'Ninguno',
401
+ filter_search_value: 'Valor de búsqueda...',
402
+ filter_no_support: 'El filtrado no está disponible para este tipo de campo.',
403
+ // mrd-table textblock
404
+ textblock_show_more: 'Mostrar más',
405
+ close: 'Cerrar',
406
+ // history badge
407
+ history_until: 'hasta',
408
+ history_badge_tooltip: 'Valores anteriores',
409
+ },
410
+ it: {
411
+ required: 'Questo campo è obbligatorio',
412
+ select_placeholder: "Seleziona un'opzione",
413
+ search_placeholder: 'Cerca...',
414
+ upload_file: 'Carica file',
415
+ choose_file: 'Scegli file',
416
+ clear: 'Cancella',
417
+ today: 'Oggi',
418
+ invalid_email: 'Inserisci un indirizzo email valido',
419
+ invalid_url: 'Inserisci un URL valido',
420
+ invalid_number: 'Inserisci un numero valido',
421
+ drop_file_here: 'Trascina il file qui o',
422
+ browse: 'sfoglia',
423
+ file_too_large: 'Il file è troppo grande',
424
+ search_results: 'Risultati della ricerca',
425
+ no_results: 'Nessun risultato trovato',
426
+ loading: 'Caricamento...',
427
+ submit: 'Salva',
428
+ cancel: 'Annulla',
429
+ remove: 'Rimuovi',
430
+ add: 'Aggiungi',
431
+ yes: 'Sì',
432
+ no: 'No',
433
+ // mrd-table footer
434
+ table_of: 'di',
435
+ download: 'Scarica',
436
+ // mrd-table toolbar
437
+ table_filter: 'Filtra',
438
+ table_filter_hide: 'Nascondi filtro',
439
+ table_filter_active: 'attivo',
440
+ table_filter_clear_all: 'Cancella tutti i filtri',
441
+ table_new_record: 'Nuovo record',
442
+ table_export_excel: 'Esporta in Excel',
443
+ // mrd-table filter popup
444
+ filter_sorting: 'Ordinamento',
445
+ filter_ascending: 'Crescente',
446
+ filter_descending: 'Decrescente',
447
+ filter_section: 'Filtro',
448
+ filter_apply: 'Applica',
449
+ filter_clear: 'Cancella',
450
+ filter_contains: 'Contiene',
451
+ filter_starts_with: 'Inizia con',
452
+ filter_equals: 'Uguale a',
453
+ filter_has_value: 'Ha valore',
454
+ filter_is_empty: 'È vuoto',
455
+ filter_is_not_empty: 'Non è vuoto',
456
+ filter_exact: 'Esatto',
457
+ filter_range: 'Intervallo',
458
+ filter_from: 'Da',
459
+ filter_to: 'A',
460
+ filter_all: 'Tutti',
461
+ filter_select_all: 'Tutti',
462
+ filter_select_none: 'Nessuno',
463
+ filter_search_value: 'Valore di ricerca...',
464
+ filter_no_support: 'Il filtro non è disponibile per questo tipo di campo.',
465
+ // mrd-table textblock
466
+ textblock_show_more: 'Mostra altro',
467
+ close: 'Chiudi',
468
+ // history badge
469
+ history_until: 'fino a',
470
+ history_badge_tooltip: 'Valori precedenti',
471
+ },
472
+ uk: {
473
+ required: "Це поле обов'язкове",
474
+ select_placeholder: 'Виберіть варіант',
475
+ search_placeholder: 'Пошук...',
476
+ upload_file: 'Завантажити файл',
477
+ choose_file: 'Вибрати файл',
478
+ clear: 'Очистити',
479
+ today: 'Сьогодні',
480
+ invalid_email: 'Будь ласка, введіть дійсну адресу електронної пошти',
481
+ invalid_url: 'Будь ласка, введіть дійсну URL-адресу',
482
+ invalid_number: 'Будь ласка, введіть дійсне число',
483
+ drop_file_here: 'Перетягніть файл сюди або',
484
+ browse: 'огляд',
485
+ file_too_large: 'Файл занадто великий',
486
+ search_results: 'Результати пошуку',
487
+ no_results: 'Результатів не знайдено',
488
+ loading: 'Завантаження...',
489
+ submit: 'Зберегти',
490
+ cancel: 'Скасувати',
491
+ remove: 'Видалити',
492
+ add: 'Додати',
493
+ yes: 'Так',
494
+ no: 'Ні',
495
+ // mrd-table footer
496
+ table_of: 'з',
497
+ download: 'Завантажити',
498
+ // mrd-table toolbar
499
+ table_filter: 'Фільтрувати',
500
+ table_filter_hide: 'Сховати фільтр',
501
+ table_filter_active: 'активний',
502
+ table_filter_clear_all: 'Очистити всі фільтри',
503
+ table_new_record: 'Новий запис',
504
+ table_export_excel: 'Експортувати до Excel',
505
+ // mrd-table filter popup
506
+ filter_sorting: 'Сортування',
507
+ filter_ascending: 'За зростанням',
508
+ filter_descending: 'За спаданням',
509
+ filter_section: 'Фільтр',
510
+ filter_apply: 'Застосувати',
511
+ filter_clear: 'Очистити',
512
+ filter_contains: 'Містить',
513
+ filter_starts_with: 'Починається з',
514
+ filter_equals: 'Дорівнює',
515
+ filter_has_value: 'Має значення',
516
+ filter_is_empty: 'Порожнє',
517
+ filter_is_not_empty: 'Не порожнє',
518
+ filter_exact: 'Точно',
519
+ filter_range: 'Діапазон',
520
+ filter_from: 'Від',
521
+ filter_to: 'До',
522
+ filter_all: 'Всі',
523
+ filter_select_all: 'Всі',
524
+ filter_select_none: 'Жодного',
525
+ filter_search_value: 'Значення для пошуку...',
526
+ filter_no_support: 'Фільтрування недоступне для цього типу поля.',
527
+ // mrd-table textblock
528
+ textblock_show_more: 'Показати більше',
529
+ close: 'Закрити',
530
+ // history badge
531
+ history_until: 'до',
532
+ history_badge_tooltip: 'Попередні значення',
273
533
  },
274
534
  };
275
535
  function t(key, locale) {
276
536
  var _a, _b, _c;
277
- const lang = locale.split('-')[0].toLowerCase();
537
+ const lang = (locale !== null && locale !== void 0 ? locale : 'en').split('-')[0].toLowerCase();
278
538
  const dict = (_a = translations[lang]) !== null && _a !== void 0 ? _a : translations['en'];
279
539
  return (_c = (_b = dict[key]) !== null && _b !== void 0 ? _b : translations['en'][key]) !== null && _c !== void 0 ? _c : key;
280
540
  }
@@ -598,6 +858,8 @@ const MrdEmailField = class {
598
858
  };
599
859
  MrdEmailField.style = mrdEmailFieldScss();
600
860
 
861
+ 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)}`;
862
+
601
863
  const MrdField = class {
602
864
  constructor(hostRef) {
603
865
  index.registerInstance(this, hostRef);
@@ -607,9 +869,22 @@ const MrdField = class {
607
869
  this.mrdFetchAll = index.createEvent(this, "mrdFetchAll");
608
870
  this.mrdUpload = index.createEvent(this, "mrdUpload");
609
871
  this.locale = navigator.language;
872
+ this.historyEntries = [];
873
+ this.currentValue = undefined;
610
874
  this.handleChange = (e) => {
875
+ var _a, _b, _c, _d;
611
876
  e.stopPropagation();
612
- this.mrdChange.emit(e.detail);
877
+ 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;
878
+ if (hist) {
879
+ this.currentValue = e.detail.value;
880
+ this.mrdChange.emit({
881
+ name: e.detail.name,
882
+ value: { current: e.detail.value, history: this.historyEntries },
883
+ });
884
+ }
885
+ else {
886
+ this.mrdChange.emit(e.detail);
887
+ }
613
888
  };
614
889
  this.handleBlur = (e) => {
615
890
  e.stopPropagation();
@@ -628,62 +903,135 @@ const MrdField = class {
628
903
  this.mrdUpload.emit(e.detail);
629
904
  };
630
905
  }
631
- render() {
632
- 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;
633
- const { item, locale, value } = this;
634
- if (item.type === index$1.ClientLayoutItemType.RELATION) {
635
- 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 : index$1.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 })));
906
+ componentWillLoad() {
907
+ this.initHistoryState();
908
+ }
909
+ valueChanged() {
910
+ this.initHistoryState();
911
+ }
912
+ initHistoryState() {
913
+ var _a, _b, _c, _d, _e;
914
+ 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;
915
+ if (!hist)
916
+ return;
917
+ const raw = this.value;
918
+ this.currentValue = (_e = raw === null || raw === void 0 ? void 0 : raw.current) !== null && _e !== void 0 ? _e : raw;
919
+ this.historyEntries = Array.isArray(raw === null || raw === void 0 ? void 0 : raw.history) ? [...raw.history] : [];
920
+ }
921
+ getDisplayValue() {
922
+ var _a, _b, _c, _d;
923
+ 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;
924
+ if (hist && this.value !== null && typeof this.value === 'object' && 'current' in this.value) {
925
+ return this.value.current;
636
926
  }
637
- if (item.type !== index$1.ClientLayoutItemType.FIELD) {
638
- return index.h(index.Host, null);
927
+ return this.value;
928
+ }
929
+ historyValueInputType() {
930
+ var _a;
931
+ switch ((_a = this.item) === null || _a === void 0 ? void 0 : _a.dataType) {
932
+ case index$1.ClientLayoutItemFieldDataType.DATE: return 'date';
933
+ case index$1.ClientLayoutItemFieldDataType.DATETIME: return 'datetime-local';
934
+ case index$1.ClientLayoutItemFieldDataType.TIME: return 'time';
935
+ case index$1.ClientLayoutItemFieldDataType.INTEGER:
936
+ case index$1.ClientLayoutItemFieldDataType.DECIMAL:
937
+ case index$1.ClientLayoutItemFieldDataType.PERCENTAGE: return 'number';
938
+ case index$1.ClientLayoutItemFieldDataType.EMAIL: return 'email';
939
+ default: return 'text';
639
940
  }
941
+ }
942
+ emitHistoryChange(entries) {
943
+ this.historyEntries = entries;
944
+ this.mrdChange.emit({
945
+ name: this.item.name,
946
+ value: { current: this.currentValue, history: entries },
947
+ });
948
+ }
949
+ renderHistoryEditor() {
950
+ var _a, _b, _c, _d;
951
+ 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;
952
+ if (!hist)
953
+ return null;
954
+ const { locale } = this;
955
+ const valueType = this.historyValueInputType();
956
+ const updateEntry = (i, field, val) => {
957
+ const updated = this.historyEntries.map((e, idx) => idx === i ? Object.assign(Object.assign({}, e), { [field]: val }) : e);
958
+ this.emitHistoryChange(updated);
959
+ };
960
+ const removeEntry = (i) => {
961
+ this.emitHistoryChange(this.historyEntries.filter((_, idx) => idx !== i));
962
+ };
963
+ const addEntry = () => {
964
+ this.emitHistoryChange([...this.historyEntries, { value: '', until: '' }]);
965
+ };
966
+ return (index.h("div", { class: "mrd-field__history-editor" }, this.historyEntries.length > 0 && (index.h("span", { class: "mrd-field__history-editor-label" }, t('history_badge_tooltip', locale))), this.historyEntries.map((entry, i) => (index.h("div", { key: String(i), class: "mrd-field__history-editor-row" }, index.h("input", { class: "mrd-field__history-editor-value", type: valueType, value: entry.value, onInput: (e) => updateEntry(i, 'value', e.target.value) }), index.h("span", { class: "mrd-field__history-editor-sep" }, t('history_until', locale)), index.h("input", { class: "mrd-field__history-editor-until", type: "date", value: entry.until, onInput: (e) => updateEntry(i, 'until', e.target.value) }), index.h("button", { type: "button", class: "mrd-field__history-editor-remove", onClick: () => removeEntry(i), "aria-label": t('remove', locale) }, index.h("svg", { viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true" }, index.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" })))))), index.h("button", { type: "button", class: "mrd-field__history-editor-add", onClick: addEntry }, "+ ", t('add', locale))));
967
+ }
968
+ renderLeafField(displayValue) {
969
+ 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;
970
+ const { item, locale } = this;
640
971
  const commonProps = {
641
972
  name: item.name,
642
973
  label: item.label,
643
974
  required: item.required,
644
- disabled: (_g = item.disabled) !== null && _g !== void 0 ? _g : false,
975
+ disabled: (_a = item.disabled) !== null && _a !== void 0 ? _a : false,
645
976
  locale,
646
977
  onMrdChange: this.handleChange,
647
978
  onMrdBlur: this.handleBlur,
648
979
  };
649
980
  switch (item.dataType) {
650
981
  case index$1.ClientLayoutItemFieldDataType.TEXT:
651
- return (index.h(index.Host, null, index.h("mrd-text-field", Object.assign({}, commonProps, { value: (_h = value) !== null && _h !== void 0 ? _h : '', placeholder: (_j = item.placeholder) !== null && _j !== void 0 ? _j : '' }))));
982
+ 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 : '' })));
652
983
  case index$1.ClientLayoutItemFieldDataType.TEXTBLOCK:
653
- return (index.h(index.Host, null, index.h("mrd-textarea-field", Object.assign({}, commonProps, { value: (_k = value) !== null && _k !== void 0 ? _k : '', placeholder: (_l = item.placeholder) !== null && _l !== void 0 ? _l : '' }))));
984
+ 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 : '' })));
654
985
  case index$1.ClientLayoutItemFieldDataType.INTEGER:
655
986
  case index$1.ClientLayoutItemFieldDataType.DECIMAL:
656
987
  case index$1.ClientLayoutItemFieldDataType.PERCENTAGE:
657
- return (index.h(index.Host, null, index.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 : '' }))));
988
+ 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 : '' })));
658
989
  case index$1.ClientLayoutItemFieldDataType.CURRENCY:
659
- return (index.h(index.Host, null, index.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' } }))));
990
+ 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' } })));
660
991
  case index$1.ClientLayoutItemFieldDataType.BOOLEAN:
661
- return (index.h(index.Host, null, index.h("mrd-boolean-field", Object.assign({}, commonProps, { value: (_s = value) !== null && _s !== void 0 ? _s : false }))));
992
+ return (index.h("mrd-boolean-field", Object.assign({}, commonProps, { value: (_l = displayValue) !== null && _l !== void 0 ? _l : false })));
662
993
  case index$1.ClientLayoutItemFieldDataType.DATE:
663
- return (index.h(index.Host, null, index.h("mrd-date-field", Object.assign({}, commonProps, { value: (_t = value) !== null && _t !== void 0 ? _t : '' }))));
994
+ return (index.h("mrd-date-field", Object.assign({}, commonProps, { value: (_m = displayValue) !== null && _m !== void 0 ? _m : '' })));
664
995
  case index$1.ClientLayoutItemFieldDataType.DATETIME:
665
- return (index.h(index.Host, null, index.h("mrd-datetime-field", Object.assign({}, commonProps, { value: (_u = value) !== null && _u !== void 0 ? _u : '' }))));
996
+ return (index.h("mrd-datetime-field", Object.assign({}, commonProps, { value: (_o = displayValue) !== null && _o !== void 0 ? _o : '' })));
666
997
  case index$1.ClientLayoutItemFieldDataType.TIME:
667
- return (index.h(index.Host, null, index.h("mrd-time-field", Object.assign({}, commonProps, { value: (_v = value) !== null && _v !== void 0 ? _v : '' }))));
998
+ return (index.h("mrd-time-field", Object.assign({}, commonProps, { value: (_p = displayValue) !== null && _p !== void 0 ? _p : '' })));
668
999
  case index$1.ClientLayoutItemFieldDataType.EMAIL:
669
- return (index.h(index.Host, null, index.h("mrd-email-field", Object.assign({}, commonProps, { value: (_w = value) !== null && _w !== void 0 ? _w : '', placeholder: (_x = item.placeholder) !== null && _x !== void 0 ? _x : '' }))));
1000
+ 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 : '' })));
670
1001
  case index$1.ClientLayoutItemFieldDataType.HYPERLINK:
671
- return (index.h(index.Host, null, index.h("mrd-hyperlink-field", Object.assign({}, commonProps, { value: (_y = value) !== null && _y !== void 0 ? _y : '', placeholder: (_z = item.placeholder) !== null && _z !== void 0 ? _z : '' }))));
1002
+ 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 : '' })));
672
1003
  case index$1.ClientLayoutItemFieldDataType.LIST:
673
- return (index.h(index.Host, null, index.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 : [] }))));
1004
+ 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 : [] })));
674
1005
  case index$1.ClientLayoutItemFieldDataType.FILE:
675
- return (index.h(index.Host, null, index.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 }))));
1006
+ 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 })));
676
1007
  case index$1.ClientLayoutItemFieldDataType.IMAGE:
677
- return (index.h(index.Host, null, index.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 }))));
1008
+ 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 })));
678
1009
  case index$1.ClientLayoutItemFieldDataType.LONGTEXT:
679
- return (index.h(index.Host, null, index.h("mrd-longtext-field", Object.assign({}, commonProps, { value: (_7 = value) !== null && _7 !== void 0 ? _7 : '', placeholder: (_8 = item.placeholder) !== null && _8 !== void 0 ? _8 : '' }))));
680
- case index$1.ClientLayoutItemFieldDataType.JSON:
681
- return index.h(index.Host, null);
1010
+ 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 : '' })));
682
1011
  default:
683
- return index.h(index.Host, null);
1012
+ return null;
1013
+ }
1014
+ }
1015
+ render() {
1016
+ var _a, _b, _c, _d, _e, _f;
1017
+ const { item, locale, value } = this;
1018
+ if (item.type === index$1.ClientLayoutItemType.RELATION) {
1019
+ 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 : index$1.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 })));
1020
+ }
1021
+ if (item.type !== index$1.ClientLayoutItemType.FIELD) {
1022
+ return index.h(index.Host, null);
684
1023
  }
1024
+ const displayValue = this.getDisplayValue();
1025
+ return (index.h(index.Host, null, index.h("div", { class: "mrd-field__inner" }, this.renderLeafField(displayValue), this.renderHistoryEditor())));
685
1026
  }
1027
+ get el() { return index.getElement(this); }
1028
+ static get watchers() { return {
1029
+ "value": [{
1030
+ "valueChanged": 0
1031
+ }]
1032
+ }; }
686
1033
  };
1034
+ MrdField.style = mrdFieldScss();
687
1035
 
688
1036
  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)}`;
689
1037
 
@@ -1053,10 +1401,10 @@ const MrdForm = class {
1053
1401
  continue;
1054
1402
  const name = item.name;
1055
1403
  if (item.type === index$1.ClientLayoutItemType.FIELD) {
1056
- const value = this.formValues[name];
1057
- if (value instanceof File)
1404
+ const rawValue = this.formValues[name];
1405
+ if (rawValue instanceof File)
1058
1406
  continue;
1059
- const current = this.normalizeFieldValue(value);
1407
+ const current = this.normalizeFieldValue(rawValue);
1060
1408
  const initial = this.normalizeFieldValue(this.initialValues[name]);
1061
1409
  if (this.deepEqual(current, initial))
1062
1410
  continue;
@@ -1358,7 +1706,7 @@ class CellRenderer {
1358
1706
  }
1359
1707
  }
1360
1708
 
1361
- 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}`;
1709
+ 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}`;
1362
1710
 
1363
1711
  const MrdLayoutSection = class {
1364
1712
  constructor(hostRef) {
@@ -1383,6 +1731,8 @@ const MrdLayoutSection = class {
1383
1731
  this.searchResultsMap = {};
1384
1732
  this.imagePreviewUrl = null;
1385
1733
  this.imagePreviews = {};
1734
+ this.openHistoryField = null;
1735
+ this.historyClickOutside = null;
1386
1736
  this.searchTimers = {};
1387
1737
  this.handleViewLoadPage = (e, name) => {
1388
1738
  e.stopPropagation();
@@ -1406,6 +1756,17 @@ const MrdLayoutSection = class {
1406
1756
  this.initEmbeddedTables();
1407
1757
  this.emitLoadImages();
1408
1758
  }, 0);
1759
+ this.historyClickOutside = (e) => {
1760
+ if (!this.el.contains(e.target))
1761
+ this.openHistoryField = null;
1762
+ };
1763
+ document.addEventListener('mousedown', this.historyClickOutside);
1764
+ }
1765
+ disconnectedCallback() {
1766
+ if (this.historyClickOutside) {
1767
+ document.removeEventListener('mousedown', this.historyClickOutside);
1768
+ this.historyClickOutside = null;
1769
+ }
1409
1770
  }
1410
1771
  dataChanged(newVal) {
1411
1772
  if (newVal && Object.keys(newVal).length > 0) {
@@ -1554,10 +1915,31 @@ const MrdLayoutSection = class {
1554
1915
  }
1555
1916
  return this.renderSingleFieldValue(item, rawValue);
1556
1917
  }
1918
+ renderHistoryBadge(item, raw) {
1919
+ var _a, _b, _c;
1920
+ const hist = (_a = item.historyEnabled) !== null && _a !== void 0 ? _a : (_b = item.field) === null || _b === void 0 ? void 0 : _b.historyEnabled;
1921
+ if (!hist || !item.name)
1922
+ return null;
1923
+ const history = (_c = raw === null || raw === void 0 ? void 0 : raw.history) !== null && _c !== void 0 ? _c : [];
1924
+ if (!history.length)
1925
+ return null;
1926
+ const sorted = [...history].sort((a, b) => b.until.localeCompare(a.until));
1927
+ const isOpen = this.openHistoryField === item.name;
1928
+ const { locale } = this;
1929
+ return (index.h("span", { class: "mrd-layout-section__history-wrap" }, index.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) => {
1930
+ e.stopPropagation();
1931
+ this.openHistoryField = isOpen ? null : item.name;
1932
+ } }, index.h("svg", { class: "mrd-layout-section__history-icon", viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true" }, index.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 && (index.h("div", { class: "mrd-layout-section__history-popover", role: "listbox" }, sorted.map((entry, i) => (index.h("div", { key: String(i), class: "mrd-layout-section__history-entry" }, entry.value, " (", t('history_until', locale), " ", formatDate(entry.until, locale), ")")))))));
1933
+ }
1557
1934
  renderField(item) {
1935
+ var _a, _b;
1558
1936
  if (!item.name)
1559
1937
  return null;
1560
- const rawValue = this.data[item.name];
1938
+ const raw = this.data[item.name];
1939
+ const hist = (_a = item.historyEnabled) !== null && _a !== void 0 ? _a : (_b = item.field) === null || _b === void 0 ? void 0 : _b.historyEnabled;
1940
+ const rawValue = hist && raw !== null && typeof raw === 'object' && 'current' in raw
1941
+ ? raw.current
1942
+ : raw;
1561
1943
  const renderedValue = this.renderFieldValue(item, rawValue);
1562
1944
  if (item.header) {
1563
1945
  return (index.h("h1", { class: "mrd-layout-section__field-header", key: item.name }, typeof renderedValue === 'string' ? renderedValue : rawValue != null ? String(rawValue) : item.label));
@@ -1567,7 +1949,7 @@ const MrdLayoutSection = class {
1567
1949
  const isBlock = item.dataType === index$1.ClientLayoutItemFieldDataType.TEXTBLOCK
1568
1950
  || item.dataType === index$1.ClientLayoutItemFieldDataType.LONGTEXT
1569
1951
  || item.dataType === index$1.ClientLayoutItemFieldDataType.JSON;
1570
- 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)));
1952
+ 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, this.renderHistoryBadge(item, raw))));
1571
1953
  }
1572
1954
  renderRelation(item) {
1573
1955
  var _a, _b, _c;
@@ -1662,7 +2044,7 @@ const MrdLayoutSection = class {
1662
2044
  return (index.h("div", { class: "mrd-layout-section__modal-backdrop", onClick: () => { this.imagePreviewUrl = null; } }, index.h("div", { class: "mrd-layout-section__modal", onClick: (e) => e.stopPropagation() }, index.h("button", { class: "mrd-layout-section__modal-close", onClick: () => { this.imagePreviewUrl = null; } }, "\u2715"), index.h("img", { class: "mrd-layout-section__modal-image", src: this.imagePreviewUrl, alt: "" }))));
1663
2045
  }
1664
2046
  render() {
1665
- return (index.h(index.Host, { key: '0a3a58f5c80716bc0a7ba1b9468b721706d2ce4a' }, index.h("div", { key: '7cf63580c584811c1bb84b419e8d13026e432fba', class: "mrd-layout-section" }, this.items.map(item => this.renderItem(item))), this.renderImageModal()));
2047
+ return (index.h(index.Host, { key: '39ba6fc1fc823864025ca6a8df4c97b0f4cb96e6' }, index.h("div", { key: 'b1af15adfec5c699e00546b03b535149b834b6e4', class: "mrd-layout-section" }, this.items.map(item => this.renderItem(item))), this.renderImageModal()));
1666
2048
  }
1667
2049
  get el() { return index.getElement(this); }
1668
2050
  static get watchers() { return {