@mmlogic/components 0.1.23 → 0.1.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/cjs/index.cjs.js +2 -0
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/mosterdcomponents.cjs.js +1 -1
  4. package/dist/cjs/mrd-boolean-field_19.cjs.entry.js +3150 -0
  5. package/dist/collection/collection-manifest.json +2 -0
  6. package/dist/collection/components/mrd-field/mrd-field.js +5 -1
  7. package/dist/collection/components/mrd-layout-section/mrd-layout-section.js +715 -0
  8. package/dist/collection/components/mrd-layout-section/mrd-layout-section.scss +339 -0
  9. package/dist/collection/components/mrd-longtext-field/mrd-longtext-field.js +227 -0
  10. package/dist/collection/components/mrd-longtext-field/mrd-longtext-field.scss +78 -0
  11. package/dist/collection/components/mrd-number-field/mrd-number-field.js +2 -2
  12. package/dist/collection/components/mrd-table/mrd-table.js +41 -4
  13. package/dist/collection/components/mrd-table/mrd-table.scss +23 -0
  14. package/dist/collection/components/mrd-text-field/mrd-text-field.js +1 -1
  15. package/dist/collection/components/mrd-textarea-field/mrd-textarea-field.js +1 -1
  16. package/dist/collection/components/mrd-time-field/mrd-time-field.js +1 -1
  17. package/dist/collection/dev/app.js +109 -3
  18. package/dist/collection/dev/example-data.js +324 -0
  19. package/dist/collection/types/client-layout.js +2 -0
  20. package/dist/collection/utils/cell-renderer.js +32 -0
  21. package/dist/components/client-layout.js +1 -1
  22. package/dist/components/mrd-field2.js +1 -1
  23. package/dist/components/mrd-form.js +1 -1
  24. package/dist/components/mrd-layout-section.d.ts +11 -0
  25. package/dist/components/mrd-layout-section.js +1 -0
  26. package/dist/components/mrd-longtext-field.d.ts +11 -0
  27. package/dist/components/mrd-longtext-field.js +1 -0
  28. package/dist/components/mrd-longtext-field2.js +1 -0
  29. package/dist/components/mrd-number-field2.js +1 -1
  30. package/dist/components/mrd-table.js +1 -1
  31. package/dist/components/mrd-table2.js +1 -0
  32. package/dist/components/mrd-text-field2.js +1 -1
  33. package/dist/components/mrd-textarea-field2.js +1 -1
  34. package/dist/components/mrd-time-field2.js +1 -1
  35. package/dist/esm/index.js +2 -0
  36. package/dist/esm/loader.js +1 -1
  37. package/dist/esm/mosterdcomponents.js +1 -1
  38. package/dist/esm/mrd-boolean-field_19.entry.js +3130 -0
  39. package/dist/mosterdcomponents/index.esm.js +1 -1
  40. package/dist/mosterdcomponents/mosterdcomponents.esm.js +1 -1
  41. package/dist/mosterdcomponents/p-a3255fc4.entry.js +1 -0
  42. package/dist/types/components/mrd-layout-section/mrd-layout-section.d.ts +92 -0
  43. package/dist/types/components/mrd-longtext-field/mrd-longtext-field.d.ts +22 -0
  44. package/dist/types/components/mrd-table/mrd-table.d.ts +5 -0
  45. package/dist/types/components.d.ts +224 -8
  46. package/dist/types/types/client-layout.d.ts +22 -1
  47. package/dist/types/utils/cell-renderer.d.ts +9 -1
  48. package/package.json +1 -1
  49. package/dist/cjs/format-DExY8_nu.js +0 -328
  50. package/dist/cjs/mrd-boolean-field_16.cjs.entry.js +0 -1512
  51. package/dist/cjs/mrd-table.cjs.entry.js +0 -882
  52. package/dist/esm/format-CcRjWvcb.js +0 -319
  53. package/dist/esm/mrd-boolean-field_16.entry.js +0 -1495
  54. package/dist/esm/mrd-table.entry.js +0 -880
  55. package/dist/mosterdcomponents/p-16dcbcdf.entry.js +0 -1
  56. package/dist/mosterdcomponents/p-17e5a251.entry.js +0 -1
  57. package/dist/mosterdcomponents/p-CcRjWvcb.js +0 -1
@@ -5,12 +5,12 @@
5
5
  * It contains typing information for all components that exist in this project.
6
6
  */
7
7
  import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
8
- import { ClientLayout, ClientLayoutItem, ClientLayoutItemFieldDataType, ClientLayoutItemRelationDisplayType, ClientLayoutItemRelationEditBehavior, ClientListValue, CurrencyValue, RelationSearchResult } from "./types";
8
+ import { ClientLayout, ClientLayoutItem, ClientLayoutItemFieldDataType, ClientLayoutItemRelationDisplayType, ClientLayoutItemRelationEditBehavior, ClientListValue, CurrencyValue, RelationSearchResult as RelationSearchResult1 } from "./types";
9
+ import { AggregationResult, ClientLayoutItem as ClientLayoutItem1, ClientLayoutItemNavigate, ClientViewMetadata, RelationSearchResult } from "./types/client-layout";
9
10
  import { AlternativeView, ColumnFilter, TableAction, TableColumn } from "./utils/cell-renderer";
10
- import { AggregationResult } from "./types/client-layout";
11
- export { ClientLayout, ClientLayoutItem, ClientLayoutItemFieldDataType, ClientLayoutItemRelationDisplayType, ClientLayoutItemRelationEditBehavior, ClientListValue, CurrencyValue, RelationSearchResult } from "./types";
11
+ export { ClientLayout, ClientLayoutItem, ClientLayoutItemFieldDataType, ClientLayoutItemRelationDisplayType, ClientLayoutItemRelationEditBehavior, ClientListValue, CurrencyValue, RelationSearchResult as RelationSearchResult1 } from "./types";
12
+ export { AggregationResult, ClientLayoutItem as ClientLayoutItem1, ClientLayoutItemNavigate, ClientViewMetadata, RelationSearchResult } from "./types/client-layout";
12
13
  export { AlternativeView, ColumnFilter, TableAction, TableColumn } from "./utils/cell-renderer";
13
- export { AggregationResult } from "./types/client-layout";
14
14
  export namespace Components {
15
15
  interface MrdBooleanField {
16
16
  /**
@@ -279,6 +279,48 @@ export namespace Components {
279
279
  */
280
280
  "value": unknown;
281
281
  }
282
+ interface MrdLayoutSection {
283
+ /**
284
+ * Record data object; keys are field names, _links holds relation and related-view links.
285
+ * @default {}
286
+ */
287
+ "data": Record<string, unknown>;
288
+ /**
289
+ * Items from one layout entry in ClientDashboardMetadata.layouts[].
290
+ * @default []
291
+ */
292
+ "items": ClientLayoutItem1[];
293
+ /**
294
+ * Top-level _links from ClientDashboardMetadata; used to resolve hrefs for VIEW items.
295
+ * @default {}
296
+ */
297
+ "links": Record<string, { href: string }>;
298
+ /**
299
+ * @default navigator.language
300
+ */
301
+ "locale": string;
302
+ /**
303
+ * Open the lightbox directly with a URL (e.g. after mrdDownload on a FILE field).
304
+ */
305
+ "openImagePreview": (url: string) => Promise<void>;
306
+ /**
307
+ * Provide a resolved URL for an IMAGE field. Shows as thumbnail; clicking opens the lightbox.
308
+ */
309
+ "setImagePreview": (fieldName: string, url: string) => Promise<void>;
310
+ /**
311
+ * Inject search results. Pass dataClass to target a specific SEARCH item; omit when there is only one.
312
+ */
313
+ "setSearchResults": (results: RelationSearchResult[], dataClass?: string) => Promise<void>;
314
+ /**
315
+ * Inject data into an embedded mrd-table for a RELATED_VIEW or VIEW item. Pass totalElements on page 0 to initialise the table; omit on subsequent pages. Pass pageLinks (_links from the page response) on page 0 to enable action hrefs in mrdViewAction.
316
+ */
317
+ "setViewPage": (name: string, page: number, rows: any[], totalElements?: number, pageLinks?: Record<string, { href: string; }>) => Promise<void>;
318
+ /**
319
+ * View metadata map (ClientDashboardMetadata.views) for RELATED_VIEW and VIEW items.
320
+ * @default {}
321
+ */
322
+ "views": Record<string, ClientViewMetadata>;
323
+ }
282
324
  interface MrdListField {
283
325
  /**
284
326
  * @default false
@@ -314,6 +356,36 @@ export namespace Components {
314
356
  */
315
357
  "value": string | string[];
316
358
  }
359
+ interface MrdLongtextField {
360
+ /**
361
+ * @default false
362
+ */
363
+ "disabled": boolean;
364
+ /**
365
+ * @default ''
366
+ */
367
+ "label": string;
368
+ /**
369
+ * @default navigator.language
370
+ */
371
+ "locale": string;
372
+ /**
373
+ * @default ''
374
+ */
375
+ "name": string;
376
+ /**
377
+ * @default ''
378
+ */
379
+ "placeholder": string;
380
+ /**
381
+ * @default false
382
+ */
383
+ "required": boolean;
384
+ /**
385
+ * @default ''
386
+ */
387
+ "value": string;
388
+ }
317
389
  interface MrdNumberField {
318
390
  /**
319
391
  * @default ClientLayoutItemFieldDataType.INTEGER
@@ -396,14 +468,14 @@ export namespace Components {
396
468
  * @default false
397
469
  */
398
470
  "required": boolean;
399
- "setAllRecords": (records: RelationSearchResult[]) => Promise<void>;
471
+ "setAllRecords": (records: RelationSearchResult1[]) => Promise<void>;
400
472
  "setLoading": (loading: boolean) => Promise<void>;
401
- "setSearchResults": (results: RelationSearchResult[]) => Promise<void>;
473
+ "setSearchResults": (results: RelationSearchResult1[]) => Promise<void>;
402
474
  /**
403
475
  * Plain href string/array for normal use; pass { id, label } objects to pre-fill a loaded record.
404
476
  * @default null
405
477
  */
406
- "value": string | string[] | RelationSearchResult | RelationSearchResult[] | null;
478
+ "value": string | string[] | RelationSearchResult1 | RelationSearchResult1[] | null;
407
479
  }
408
480
  interface MrdTable {
409
481
  /**
@@ -599,10 +671,18 @@ export interface MrdImageFieldCustomEvent<T> extends CustomEvent<T> {
599
671
  detail: T;
600
672
  target: HTMLMrdImageFieldElement;
601
673
  }
674
+ export interface MrdLayoutSectionCustomEvent<T> extends CustomEvent<T> {
675
+ detail: T;
676
+ target: HTMLMrdLayoutSectionElement;
677
+ }
602
678
  export interface MrdListFieldCustomEvent<T> extends CustomEvent<T> {
603
679
  detail: T;
604
680
  target: HTMLMrdListFieldElement;
605
681
  }
682
+ export interface MrdLongtextFieldCustomEvent<T> extends CustomEvent<T> {
683
+ detail: T;
684
+ target: HTMLMrdLongtextFieldElement;
685
+ }
606
686
  export interface MrdNumberFieldCustomEvent<T> extends CustomEvent<T> {
607
687
  detail: T;
608
688
  target: HTMLMrdNumberFieldElement;
@@ -816,6 +896,29 @@ declare global {
816
896
  prototype: HTMLMrdImageFieldElement;
817
897
  new (): HTMLMrdImageFieldElement;
818
898
  };
899
+ interface HTMLMrdLayoutSectionElementEventMap {
900
+ "mrdNavigate": { href?: string; label: string; navigate?: ClientLayoutItemNavigate };
901
+ "mrdSearch": { query: string; dataClass: string };
902
+ "mrdDownload": { href: string; fileName: string };
903
+ "mrdLoadView": { name: string; href?: string; viewConfig: ClientViewMetadata };
904
+ "mrdLoadViewPage": { name: string; page: number; sort: string };
905
+ "mrdLoadImage": { fieldName: string; href: string };
906
+ "mrdViewAction": { name: string; action: string; href?: string };
907
+ }
908
+ interface HTMLMrdLayoutSectionElement extends Components.MrdLayoutSection, HTMLStencilElement {
909
+ addEventListener<K extends keyof HTMLMrdLayoutSectionElementEventMap>(type: K, listener: (this: HTMLMrdLayoutSectionElement, ev: MrdLayoutSectionCustomEvent<HTMLMrdLayoutSectionElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
910
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
911
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
912
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
913
+ removeEventListener<K extends keyof HTMLMrdLayoutSectionElementEventMap>(type: K, listener: (this: HTMLMrdLayoutSectionElement, ev: MrdLayoutSectionCustomEvent<HTMLMrdLayoutSectionElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
914
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
915
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
916
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
917
+ }
918
+ var HTMLMrdLayoutSectionElement: {
919
+ prototype: HTMLMrdLayoutSectionElement;
920
+ new (): HTMLMrdLayoutSectionElement;
921
+ };
819
922
  interface HTMLMrdListFieldElementEventMap {
820
923
  "mrdChange": { name: string; value: string | string[] };
821
924
  "mrdBlur": { name: string; value: string | string[] };
@@ -834,6 +937,24 @@ declare global {
834
937
  prototype: HTMLMrdListFieldElement;
835
938
  new (): HTMLMrdListFieldElement;
836
939
  };
940
+ interface HTMLMrdLongtextFieldElementEventMap {
941
+ "mrdChange": { name: string; value: string };
942
+ "mrdBlur": { name: string; value: string };
943
+ }
944
+ interface HTMLMrdLongtextFieldElement extends Components.MrdLongtextField, HTMLStencilElement {
945
+ addEventListener<K extends keyof HTMLMrdLongtextFieldElementEventMap>(type: K, listener: (this: HTMLMrdLongtextFieldElement, ev: MrdLongtextFieldCustomEvent<HTMLMrdLongtextFieldElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
946
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
947
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
948
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
949
+ removeEventListener<K extends keyof HTMLMrdLongtextFieldElementEventMap>(type: K, listener: (this: HTMLMrdLongtextFieldElement, ev: MrdLongtextFieldCustomEvent<HTMLMrdLongtextFieldElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
950
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
951
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
952
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
953
+ }
954
+ var HTMLMrdLongtextFieldElement: {
955
+ prototype: HTMLMrdLongtextFieldElement;
956
+ new (): HTMLMrdLongtextFieldElement;
957
+ };
837
958
  interface HTMLMrdNumberFieldElementEventMap {
838
959
  "mrdChange": { name: string; value: number | null };
839
960
  "mrdBlur": { name: string; value: number | null };
@@ -960,7 +1081,9 @@ declare global {
960
1081
  "mrd-form": HTMLMrdFormElement;
961
1082
  "mrd-hyperlink-field": HTMLMrdHyperlinkFieldElement;
962
1083
  "mrd-image-field": HTMLMrdImageFieldElement;
1084
+ "mrd-layout-section": HTMLMrdLayoutSectionElement;
963
1085
  "mrd-list-field": HTMLMrdListFieldElement;
1086
+ "mrd-longtext-field": HTMLMrdLongtextFieldElement;
964
1087
  "mrd-number-field": HTMLMrdNumberFieldElement;
965
1088
  "mrd-relation-field": HTMLMrdRelationFieldElement;
966
1089
  "mrd-table": HTMLMrdTableElement;
@@ -1270,6 +1393,51 @@ declare namespace LocalJSX {
1270
1393
  */
1271
1394
  "value"?: unknown;
1272
1395
  }
1396
+ interface MrdLayoutSection {
1397
+ /**
1398
+ * Record data object; keys are field names, _links holds relation and related-view links.
1399
+ * @default {}
1400
+ */
1401
+ "data"?: Record<string, unknown>;
1402
+ /**
1403
+ * Items from one layout entry in ClientDashboardMetadata.layouts[].
1404
+ * @default []
1405
+ */
1406
+ "items"?: ClientLayoutItem1[];
1407
+ /**
1408
+ * Top-level _links from ClientDashboardMetadata; used to resolve hrefs for VIEW items.
1409
+ * @default {}
1410
+ */
1411
+ "links"?: Record<string, { href: string }>;
1412
+ /**
1413
+ * @default navigator.language
1414
+ */
1415
+ "locale"?: string;
1416
+ "onMrdDownload"?: (event: MrdLayoutSectionCustomEvent<{ href: string; fileName: string }>) => void;
1417
+ /**
1418
+ * Fired once on load for each IMAGE field that has an href; host resolves the URL and calls setImagePreview().
1419
+ */
1420
+ "onMrdLoadImage"?: (event: MrdLayoutSectionCustomEvent<{ fieldName: string; href: string }>) => void;
1421
+ /**
1422
+ * Fired once on load for each RELATED_VIEW and VIEW item; host fetches page 0 and calls setViewPage().
1423
+ */
1424
+ "onMrdLoadView"?: (event: MrdLayoutSectionCustomEvent<{ name: string; href?: string; viewConfig: ClientViewMetadata }>) => void;
1425
+ /**
1426
+ * Re-emitted from an embedded mrd-table's mrdLoadPage; host fetches the next page and calls setViewPage().
1427
+ */
1428
+ "onMrdLoadViewPage"?: (event: MrdLayoutSectionCustomEvent<{ name: string; page: number; sort: string }>) => void;
1429
+ "onMrdNavigate"?: (event: MrdLayoutSectionCustomEvent<{ href?: string; label: string; navigate?: ClientLayoutItemNavigate }>) => void;
1430
+ "onMrdSearch"?: (event: MrdLayoutSectionCustomEvent<{ query: string; dataClass: string }>) => void;
1431
+ /**
1432
+ * Re-emitted from an embedded mrd-table's mrdAction; includes the view name and resolved href.
1433
+ */
1434
+ "onMrdViewAction"?: (event: MrdLayoutSectionCustomEvent<{ name: string; action: string; href?: string }>) => void;
1435
+ /**
1436
+ * View metadata map (ClientDashboardMetadata.views) for RELATED_VIEW and VIEW items.
1437
+ * @default {}
1438
+ */
1439
+ "views"?: Record<string, ClientViewMetadata>;
1440
+ }
1273
1441
  interface MrdListField {
1274
1442
  /**
1275
1443
  * @default false
@@ -1307,6 +1475,38 @@ declare namespace LocalJSX {
1307
1475
  */
1308
1476
  "value"?: string | string[];
1309
1477
  }
1478
+ interface MrdLongtextField {
1479
+ /**
1480
+ * @default false
1481
+ */
1482
+ "disabled"?: boolean;
1483
+ /**
1484
+ * @default ''
1485
+ */
1486
+ "label"?: string;
1487
+ /**
1488
+ * @default navigator.language
1489
+ */
1490
+ "locale"?: string;
1491
+ /**
1492
+ * @default ''
1493
+ */
1494
+ "name"?: string;
1495
+ "onMrdBlur"?: (event: MrdLongtextFieldCustomEvent<{ name: string; value: string }>) => void;
1496
+ "onMrdChange"?: (event: MrdLongtextFieldCustomEvent<{ name: string; value: string }>) => void;
1497
+ /**
1498
+ * @default ''
1499
+ */
1500
+ "placeholder"?: string;
1501
+ /**
1502
+ * @default false
1503
+ */
1504
+ "required"?: boolean;
1505
+ /**
1506
+ * @default ''
1507
+ */
1508
+ "value"?: string;
1509
+ }
1310
1510
  interface MrdNumberField {
1311
1511
  /**
1312
1512
  * @default ClientLayoutItemFieldDataType.INTEGER
@@ -1399,7 +1599,7 @@ declare namespace LocalJSX {
1399
1599
  * Plain href string/array for normal use; pass { id, label } objects to pre-fill a loaded record.
1400
1600
  * @default null
1401
1601
  */
1402
- "value"?: string | string[] | RelationSearchResult | RelationSearchResult[] | null;
1602
+ "value"?: string | string[] | RelationSearchResult1 | RelationSearchResult1[] | null;
1403
1603
  }
1404
1604
  interface MrdTable {
1405
1605
  /**
@@ -1653,6 +1853,9 @@ declare namespace LocalJSX {
1653
1853
  "accept": string;
1654
1854
  "maxSize": number;
1655
1855
  }
1856
+ interface MrdLayoutSectionAttributes {
1857
+ "locale": string;
1858
+ }
1656
1859
  interface MrdListFieldAttributes {
1657
1860
  "name": string;
1658
1861
  "label": string;
@@ -1662,6 +1865,15 @@ declare namespace LocalJSX {
1662
1865
  "multiple": boolean;
1663
1866
  "locale": string;
1664
1867
  }
1868
+ interface MrdLongtextFieldAttributes {
1869
+ "name": string;
1870
+ "label": string;
1871
+ "value": string;
1872
+ "placeholder": string;
1873
+ "required": boolean;
1874
+ "disabled": boolean;
1875
+ "locale": string;
1876
+ }
1665
1877
  interface MrdNumberFieldAttributes {
1666
1878
  "name": string;
1667
1879
  "label": string;
@@ -1734,7 +1946,9 @@ declare namespace LocalJSX {
1734
1946
  "mrd-form": Omit<MrdForm, keyof MrdFormAttributes> & { [K in keyof MrdForm & keyof MrdFormAttributes]?: MrdForm[K] } & { [K in keyof MrdForm & keyof MrdFormAttributes as `attr:${K}`]?: MrdFormAttributes[K] } & { [K in keyof MrdForm & keyof MrdFormAttributes as `prop:${K}`]?: MrdForm[K] };
1735
1947
  "mrd-hyperlink-field": Omit<MrdHyperlinkField, keyof MrdHyperlinkFieldAttributes> & { [K in keyof MrdHyperlinkField & keyof MrdHyperlinkFieldAttributes]?: MrdHyperlinkField[K] } & { [K in keyof MrdHyperlinkField & keyof MrdHyperlinkFieldAttributes as `attr:${K}`]?: MrdHyperlinkFieldAttributes[K] } & { [K in keyof MrdHyperlinkField & keyof MrdHyperlinkFieldAttributes as `prop:${K}`]?: MrdHyperlinkField[K] };
1736
1948
  "mrd-image-field": Omit<MrdImageField, keyof MrdImageFieldAttributes> & { [K in keyof MrdImageField & keyof MrdImageFieldAttributes]?: MrdImageField[K] } & { [K in keyof MrdImageField & keyof MrdImageFieldAttributes as `attr:${K}`]?: MrdImageFieldAttributes[K] } & { [K in keyof MrdImageField & keyof MrdImageFieldAttributes as `prop:${K}`]?: MrdImageField[K] };
1949
+ "mrd-layout-section": Omit<MrdLayoutSection, keyof MrdLayoutSectionAttributes> & { [K in keyof MrdLayoutSection & keyof MrdLayoutSectionAttributes]?: MrdLayoutSection[K] } & { [K in keyof MrdLayoutSection & keyof MrdLayoutSectionAttributes as `attr:${K}`]?: MrdLayoutSectionAttributes[K] } & { [K in keyof MrdLayoutSection & keyof MrdLayoutSectionAttributes as `prop:${K}`]?: MrdLayoutSection[K] };
1737
1950
  "mrd-list-field": Omit<MrdListField, keyof MrdListFieldAttributes> & { [K in keyof MrdListField & keyof MrdListFieldAttributes]?: MrdListField[K] } & { [K in keyof MrdListField & keyof MrdListFieldAttributes as `attr:${K}`]?: MrdListFieldAttributes[K] } & { [K in keyof MrdListField & keyof MrdListFieldAttributes as `prop:${K}`]?: MrdListField[K] };
1951
+ "mrd-longtext-field": Omit<MrdLongtextField, keyof MrdLongtextFieldAttributes> & { [K in keyof MrdLongtextField & keyof MrdLongtextFieldAttributes]?: MrdLongtextField[K] } & { [K in keyof MrdLongtextField & keyof MrdLongtextFieldAttributes as `attr:${K}`]?: MrdLongtextFieldAttributes[K] } & { [K in keyof MrdLongtextField & keyof MrdLongtextFieldAttributes as `prop:${K}`]?: MrdLongtextField[K] };
1738
1952
  "mrd-number-field": Omit<MrdNumberField, keyof MrdNumberFieldAttributes> & { [K in keyof MrdNumberField & keyof MrdNumberFieldAttributes]?: MrdNumberField[K] } & { [K in keyof MrdNumberField & keyof MrdNumberFieldAttributes as `attr:${K}`]?: MrdNumberFieldAttributes[K] } & { [K in keyof MrdNumberField & keyof MrdNumberFieldAttributes as `prop:${K}`]?: MrdNumberField[K] };
1739
1953
  "mrd-relation-field": Omit<MrdRelationField, keyof MrdRelationFieldAttributes> & { [K in keyof MrdRelationField & keyof MrdRelationFieldAttributes]?: MrdRelationField[K] } & { [K in keyof MrdRelationField & keyof MrdRelationFieldAttributes as `attr:${K}`]?: MrdRelationFieldAttributes[K] } & { [K in keyof MrdRelationField & keyof MrdRelationFieldAttributes as `prop:${K}`]?: MrdRelationField[K] };
1740
1954
  "mrd-table": Omit<MrdTable, keyof MrdTableAttributes> & { [K in keyof MrdTable & keyof MrdTableAttributes]?: MrdTable[K] } & { [K in keyof MrdTable & keyof MrdTableAttributes as `attr:${K}`]?: MrdTableAttributes[K] } & { [K in keyof MrdTable & keyof MrdTableAttributes as `prop:${K}`]?: MrdTable[K] };
@@ -1757,7 +1971,9 @@ declare module "@stencil/core" {
1757
1971
  "mrd-form": LocalJSX.IntrinsicElements["mrd-form"] & JSXBase.HTMLAttributes<HTMLMrdFormElement>;
1758
1972
  "mrd-hyperlink-field": LocalJSX.IntrinsicElements["mrd-hyperlink-field"] & JSXBase.HTMLAttributes<HTMLMrdHyperlinkFieldElement>;
1759
1973
  "mrd-image-field": LocalJSX.IntrinsicElements["mrd-image-field"] & JSXBase.HTMLAttributes<HTMLMrdImageFieldElement>;
1974
+ "mrd-layout-section": LocalJSX.IntrinsicElements["mrd-layout-section"] & JSXBase.HTMLAttributes<HTMLMrdLayoutSectionElement>;
1760
1975
  "mrd-list-field": LocalJSX.IntrinsicElements["mrd-list-field"] & JSXBase.HTMLAttributes<HTMLMrdListFieldElement>;
1976
+ "mrd-longtext-field": LocalJSX.IntrinsicElements["mrd-longtext-field"] & JSXBase.HTMLAttributes<HTMLMrdLongtextFieldElement>;
1761
1977
  "mrd-number-field": LocalJSX.IntrinsicElements["mrd-number-field"] & JSXBase.HTMLAttributes<HTMLMrdNumberFieldElement>;
1762
1978
  "mrd-relation-field": LocalJSX.IntrinsicElements["mrd-relation-field"] & JSXBase.HTMLAttributes<HTMLMrdRelationFieldElement>;
1763
1979
  "mrd-table": LocalJSX.IntrinsicElements["mrd-table"] & JSXBase.HTMLAttributes<HTMLMrdTableElement>;
@@ -33,7 +33,9 @@ export declare enum ClientLayoutItemFieldDataType {
33
33
  HYPERLINK = "HYPERLINK",
34
34
  LIST = "LIST",
35
35
  FILE = "FILE",
36
- IMAGE = "IMAGE"
36
+ IMAGE = "IMAGE",
37
+ LONGTEXT = "LONGTEXT",
38
+ JSON = "JSON"
37
39
  }
38
40
  export declare enum ClientLayoutItemRelationDisplayType {
39
41
  SEARCH = "SEARCH",
@@ -45,6 +47,17 @@ export declare enum ClientLayoutItemRelationEditBehavior {
45
47
  DROPDOWN = "DROPDOWN",
46
48
  CHECKBOX = "CHECKBOX"
47
49
  }
50
+ /** A single sub-link within a multi-value relation link. */
51
+ export interface DataObjectSubLink {
52
+ href: string;
53
+ name: string;
54
+ }
55
+ /** Link object as returned by the API on a data object's `_links` map. */
56
+ export interface DataObjectLink {
57
+ href: string;
58
+ name?: string;
59
+ values?: DataObjectSubLink[];
60
+ }
48
61
  /** A selectable list item as returned by the API. */
49
62
  export interface ClientListValue {
50
63
  /** Raw key stored in the database (API uses `key`, older code used `value`). */
@@ -144,6 +157,14 @@ export interface ClientLayoutItem {
144
157
  relatedObject?: ClientLayoutItemRelatedObject;
145
158
  search?: ClientLayoutItemSearch;
146
159
  name?: string;
160
+ showTitle?: boolean;
161
+ alternativeViews?: Array<{
162
+ name: string;
163
+ label?: string;
164
+ class?: string;
165
+ }>;
166
+ /** Toolbar buttons for embedded views. null/omitted = ["NEW","EXPORT"]; [] = none. */
167
+ actions?: string[] | null;
147
168
  }
148
169
  export interface ClientLayout {
149
170
  type?: ClientLayoutType;
@@ -39,5 +39,13 @@ export interface ColumnFilter {
39
39
  }
40
40
  export declare class CellRenderer {
41
41
  static render(column: TableColumn, row: Record<string, any>, locale: string): string;
42
- private static renderValue;
42
+ static renderValue(dataType: string, value: any, listItems: Array<{
43
+ key: string;
44
+ label: string;
45
+ }>, locale: string): string;
46
+ /**
47
+ * Returns syntax-highlighted JSON as an HTML string with inline styles.
48
+ * compact=true → single line (no indentation); compact=false → pretty-printed.
49
+ */
50
+ static formatJson(value: any, compact?: boolean): string;
43
51
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmlogic/components",
3
- "version": "0.1.23",
3
+ "version": "0.1.25",
4
4
  "description": "Stencil.js web component library for dynamic forms and virtual-scroll data tables",
5
5
  "license": "MIT",
6
6
  "author": "Mosterd",