@mmlogic/components 0.3.3 → 0.3.5

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 (66) hide show
  1. package/dist/cjs/index.cjs.js +1 -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 → mrd-boolean-field_20.cjs.entry.js} +313 -55
  5. package/dist/collection/collection-manifest.json +1 -0
  6. package/dist/collection/components/mrd-field/mrd-field.js +14 -2
  7. package/dist/collection/components/mrd-form/mrd-form.js +79 -0
  8. package/dist/collection/components/mrd-hyperlink-field/mrd-hyperlink-field.js +79 -18
  9. package/dist/collection/components/mrd-hyperlink-field/mrd-hyperlink-field.scss +22 -0
  10. package/dist/collection/components/mrd-image-field/mrd-image-field.js +1 -1
  11. package/dist/collection/components/mrd-layout-section/mrd-layout-section.js +15 -12
  12. package/dist/collection/components/mrd-layout-section/mrd-layout-section.scss +9 -0
  13. package/dist/collection/components/mrd-longtext-field/mrd-longtext-field.js +1 -1
  14. package/dist/collection/components/mrd-number-field/mrd-number-field.js +2 -2
  15. package/dist/collection/components/mrd-relation-field/mrd-relation-field.js +42 -13
  16. package/dist/collection/components/mrd-secret-field/mrd-secret-field.js +229 -0
  17. package/dist/collection/components/mrd-secret-field/mrd-secret-field.scss +73 -0
  18. package/dist/collection/components/mrd-table/mrd-table.js +82 -11
  19. package/dist/collection/components/mrd-table/mrd-table.scss +106 -3
  20. package/dist/collection/components/mrd-text-field/mrd-text-field.js +1 -1
  21. package/dist/collection/components/mrd-textarea-field/mrd-textarea-field.js +1 -1
  22. package/dist/collection/components/mrd-textarea-field/mrd-textarea-field.scss +56 -0
  23. package/dist/collection/components/mrd-time-field/mrd-time-field.js +1 -1
  24. package/dist/collection/dev/api.js +10 -1
  25. package/dist/collection/dev/app.js +56 -34
  26. package/dist/collection/dev/example-data.js +12 -2
  27. package/dist/collection/types/client-layout.js +1 -0
  28. package/dist/collection/utils/cell-renderer.js +2 -0
  29. package/dist/collection/utils/i18n.js +8 -0
  30. package/dist/collection/utils/validation.js +6 -2
  31. package/dist/components/client-layout.js +1 -1
  32. package/dist/components/i18n.js +1 -1
  33. package/dist/components/mrd-field2.js +1 -1
  34. package/dist/components/mrd-form.js +1 -1
  35. package/dist/components/mrd-hyperlink-field2.js +1 -1
  36. package/dist/components/mrd-image-field2.js +1 -1
  37. package/dist/components/mrd-layout-section.js +1 -1
  38. package/dist/components/mrd-longtext-field2.js +1 -1
  39. package/dist/components/mrd-number-field2.js +1 -1
  40. package/dist/components/mrd-relation-field2.js +1 -1
  41. package/dist/components/mrd-secret-field.d.ts +11 -0
  42. package/dist/components/mrd-secret-field.js +1 -0
  43. package/dist/components/mrd-secret-field2.js +1 -0
  44. package/dist/components/mrd-table2.js +1 -1
  45. package/dist/components/mrd-text-field2.js +1 -1
  46. package/dist/components/mrd-textarea-field2.js +1 -1
  47. package/dist/components/mrd-time-field2.js +1 -1
  48. package/dist/components/validation.js +1 -1
  49. package/dist/esm/index.js +1 -0
  50. package/dist/esm/loader.js +1 -1
  51. package/dist/esm/mosterdcomponents.js +1 -1
  52. package/dist/esm/{mrd-boolean-field_19.entry.js → mrd-boolean-field_20.entry.js} +313 -56
  53. package/dist/mosterdcomponents/index.esm.js +1 -1
  54. package/dist/mosterdcomponents/mosterdcomponents.esm.js +1 -1
  55. package/dist/mosterdcomponents/p-e477187c.entry.js +1 -0
  56. package/dist/types/components/mrd-form/mrd-form.d.ts +13 -1
  57. package/dist/types/components/mrd-hyperlink-field/mrd-hyperlink-field.d.ts +12 -4
  58. package/dist/types/components/mrd-layout-section/mrd-layout-section.d.ts +1 -0
  59. package/dist/types/components/mrd-relation-field/mrd-relation-field.d.ts +3 -0
  60. package/dist/types/components/mrd-secret-field/mrd-secret-field.d.ts +22 -0
  61. package/dist/types/components/mrd-table/mrd-table.d.ts +10 -0
  62. package/dist/types/components.d.ts +126 -20
  63. package/dist/types/types/client-layout.d.ts +12 -1
  64. package/dist/types/utils/cell-renderer.d.ts +1 -0
  65. package/package.json +1 -1
  66. package/dist/mosterdcomponents/p-74d100dd.entry.js +0 -1
@@ -1,22 +1,30 @@
1
1
  import { EventEmitter } from '../../stencil-public-runtime';
2
+ import { HyperlinkValue } from '../../types/client-layout';
2
3
  export declare class MrdHyperlinkField {
3
4
  name: string;
4
5
  label: string;
5
- value: string;
6
+ value: HyperlinkValue | string;
6
7
  placeholder: string;
7
8
  required: boolean;
8
9
  disabled: boolean;
9
10
  locale: string;
11
+ internalHref: string;
12
+ internalName: string;
10
13
  error: string;
11
14
  mrdChange: EventEmitter<{
12
15
  name: string;
13
- value: string;
16
+ value: HyperlinkValue;
14
17
  }>;
15
18
  mrdBlur: EventEmitter<{
16
19
  name: string;
17
- value: string;
20
+ value: HyperlinkValue;
18
21
  }>;
19
- private handleInput;
22
+ componentWillLoad(): void;
23
+ valueChanged(val: HyperlinkValue | string): void;
24
+ private parseValue;
25
+ private buildValue;
26
+ private handleHrefInput;
27
+ private handleNameInput;
20
28
  private handleBlur;
21
29
  render(): any;
22
30
  }
@@ -53,6 +53,7 @@ export declare class MrdLayoutSection {
53
53
  path?: string;
54
54
  qs?: string;
55
55
  parentPath?: string | null;
56
+ basicType?: string;
56
57
  }>;
57
58
  /** Re-emitted from an embedded mrd-table's mrdLoadAggregations; host calls setViewAggregations() with the result. */
58
59
  mrdLoadViewAggregations: EventEmitter<{
@@ -52,7 +52,10 @@ export declare class MrdRelationField {
52
52
  setSearchResults(results: RelationSearchResult[]): Promise<void>;
53
53
  setLoading(loading: boolean): Promise<void>;
54
54
  private searchDebounce;
55
+ private toSearchResult;
56
+ private applyValuePrefill;
55
57
  componentWillLoad(): void;
58
+ valueChanged(newValue: typeof this.value): void;
56
59
  componentDidLoad(): void;
57
60
  private handleKeyDown;
58
61
  private clearSelection;
@@ -0,0 +1,22 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ export declare class MrdSecretField {
3
+ name: string;
4
+ label: string;
5
+ value: string;
6
+ placeholder: string;
7
+ required: boolean;
8
+ disabled: boolean;
9
+ locale: string;
10
+ error: string;
11
+ mrdChange: EventEmitter<{
12
+ name: string;
13
+ value: string;
14
+ }>;
15
+ mrdBlur: EventEmitter<{
16
+ name: string;
17
+ value: string;
18
+ }>;
19
+ private handleInput;
20
+ private handleBlur;
21
+ render(): any;
22
+ }
@@ -7,6 +7,8 @@ export declare class MrdTable {
7
7
  private debounceTimer;
8
8
  private outsideClickHandler;
9
9
  private keydownHandler;
10
+ private createPickerClickHandler;
11
+ private viewPopoverClickHandler;
10
12
  /** The VIEW or RELATED_VIEW layout item. Contains view config, dataClass, fromClass, actions etc. */
11
13
  item: ClientLayoutItem | null;
12
14
  /** Parent record id — required for RELATED_VIEW to build /{fromClass}/{parentId}/{dataClass}. */
@@ -48,6 +50,10 @@ export declare class MrdTable {
48
50
  top: number;
49
51
  left: number;
50
52
  };
53
+ /** Whether the create-type picker dropdown is open. */
54
+ createPickerOpen: boolean;
55
+ /** Whether the view-switcher popover (full list) is open. */
56
+ private viewPopoverOpen;
51
57
  /** Current scroll offset of the scroll container — drives pagination footer. */
52
58
  scrollTop: number;
53
59
  /** Full text shown in the TEXTBLOCK expand modal (null = closed). */
@@ -81,6 +87,7 @@ export declare class MrdTable {
81
87
  qs?: string;
82
88
  dataClass?: string;
83
89
  parentPath?: string | null;
90
+ basicType?: string;
84
91
  }>;
85
92
  /** Fired when a FILE or IMAGE cell is clicked. Host resolves the href to a signed download URL. */
86
93
  mrdDownload: EventEmitter<{
@@ -136,6 +143,8 @@ export declare class MrdTable {
136
143
  private buildQueryParams;
137
144
  private get columns();
138
145
  private get tableActions();
146
+ private toggleCreatePicker;
147
+ private closeCreatePicker;
139
148
  private colName;
140
149
  private colDataType;
141
150
  /** True when we have a reliable total: either from the aggregations response or because
@@ -174,6 +183,7 @@ export declare class MrdTable {
174
183
  private clearFilter;
175
184
  private clearAllFilters;
176
185
  private handleViewSwitch;
186
+ private toggleViewPopover;
177
187
  private renderToolbar;
178
188
  private renderFilterEditor;
179
189
  private renderFilterPopup;
@@ -5,10 +5,10 @@
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 as RelationSearchResult1 } from "./types";
9
- import { AggregationResult, ClientLayoutItem as ClientLayoutItem1, ClientLayoutItemNavigate, ClientViewMetadata, RelationSearchResult } from "./types/client-layout";
10
- export { ClientLayout, ClientLayoutItem, ClientLayoutItemFieldDataType, ClientLayoutItemRelationDisplayType, ClientLayoutItemRelationEditBehavior, ClientListValue, CurrencyValue, RelationSearchResult as RelationSearchResult1 } from "./types";
11
- export { AggregationResult, ClientLayoutItem as ClientLayoutItem1, ClientLayoutItemNavigate, ClientViewMetadata, RelationSearchResult } from "./types/client-layout";
8
+ import { ClientLayout, ClientLayoutItem, ClientLayoutItemFieldDataType, ClientLayoutItemRelationDisplayType, ClientLayoutItemRelationEditBehavior, ClientListValue, CurrencyValue, RelationSearchResult } from "./types";
9
+ import { AggregationResult, ClientLayoutItem as ClientLayoutItem1, ClientLayoutItemNavigate, ClientViewMetadata, HyperlinkValue, RelationSearchResult as RelationSearchResult1 } from "./types/client-layout";
10
+ export { ClientLayout, ClientLayoutItem, ClientLayoutItemFieldDataType, ClientLayoutItemRelationDisplayType, ClientLayoutItemRelationEditBehavior, ClientListValue, CurrencyValue, RelationSearchResult } from "./types";
11
+ export { AggregationResult, ClientLayoutItem as ClientLayoutItem1, ClientLayoutItemNavigate, ClientViewMetadata, HyperlinkValue, RelationSearchResult as RelationSearchResult1 } from "./types/client-layout";
12
12
  export namespace Components {
13
13
  interface MrdBooleanField {
14
14
  /**
@@ -192,6 +192,11 @@ export namespace Components {
192
192
  * @default navigator.language
193
193
  */
194
194
  "locale": string;
195
+ /**
196
+ * The currently logged-in user, resolved by the host via /accounts/me. Used to pre-fill RELATION fields whose defaultValue is "@me". May be null when not authenticated or not yet resolved.
197
+ * @default null
198
+ */
199
+ "me": RelationSearchResult | null;
195
200
  /**
196
201
  * The `mostSignificantClass` of the parent/reference object (e.g. `'clientAgreements'`). Used to locate the matching RELATION field.
197
202
  * @default ''
@@ -241,7 +246,7 @@ export namespace Components {
241
246
  /**
242
247
  * @default ''
243
248
  */
244
- "value": string;
249
+ "value": HyperlinkValue | string;
245
250
  }
246
251
  interface MrdImageField {
247
252
  /**
@@ -308,7 +313,7 @@ export namespace Components {
308
313
  /**
309
314
  * Inject search results. Pass dataClass to target a specific SEARCH item; omit when there is only one.
310
315
  */
311
- "setSearchResults": (results: RelationSearchResult[], dataClass?: string) => Promise<void>;
316
+ "setSearchResults": (results: RelationSearchResult1[], dataClass?: string) => Promise<void>;
312
317
  /**
313
318
  * Inject aggregation totals into an embedded mrd-table for a VIEW or RELATED_VIEW item.
314
319
  */
@@ -470,14 +475,44 @@ export namespace Components {
470
475
  * @default false
471
476
  */
472
477
  "required": boolean;
473
- "setAllRecords": (records: RelationSearchResult1[]) => Promise<void>;
478
+ "setAllRecords": (records: RelationSearchResult[]) => Promise<void>;
474
479
  "setLoading": (loading: boolean) => Promise<void>;
475
- "setSearchResults": (results: RelationSearchResult1[]) => Promise<void>;
480
+ "setSearchResults": (results: RelationSearchResult[]) => Promise<void>;
476
481
  /**
477
482
  * Plain href string/array for normal use; pass { id, label } objects to pre-fill a loaded record.
478
483
  * @default null
479
484
  */
480
- "value": string | string[] | RelationSearchResult1 | RelationSearchResult1[] | null;
485
+ "value": string | string[] | RelationSearchResult | RelationSearchResult[] | null;
486
+ }
487
+ interface MrdSecretField {
488
+ /**
489
+ * @default false
490
+ */
491
+ "disabled": boolean;
492
+ /**
493
+ * @default ''
494
+ */
495
+ "label": string;
496
+ /**
497
+ * @default navigator.language
498
+ */
499
+ "locale": string;
500
+ /**
501
+ * @default ''
502
+ */
503
+ "name": string;
504
+ /**
505
+ * @default ''
506
+ */
507
+ "placeholder": string;
508
+ /**
509
+ * @default false
510
+ */
511
+ "required": boolean;
512
+ /**
513
+ * @default ''
514
+ */
515
+ "value": string;
481
516
  }
482
517
  interface MrdTable {
483
518
  /**
@@ -679,6 +714,10 @@ export interface MrdRelationFieldCustomEvent<T> extends CustomEvent<T> {
679
714
  detail: T;
680
715
  target: HTMLMrdRelationFieldElement;
681
716
  }
717
+ export interface MrdSecretFieldCustomEvent<T> extends CustomEvent<T> {
718
+ detail: T;
719
+ target: HTMLMrdSecretFieldElement;
720
+ }
682
721
  export interface MrdTableCustomEvent<T> extends CustomEvent<T> {
683
722
  detail: T;
684
723
  target: HTMLMrdTableElement;
@@ -848,8 +887,8 @@ declare global {
848
887
  new (): HTMLMrdFormElement;
849
888
  };
850
889
  interface HTMLMrdHyperlinkFieldElementEventMap {
851
- "mrdChange": { name: string; value: string };
852
- "mrdBlur": { name: string; value: string };
890
+ "mrdChange": { name: string; value: HyperlinkValue };
891
+ "mrdBlur": { name: string; value: HyperlinkValue };
853
892
  }
854
893
  interface HTMLMrdHyperlinkFieldElement extends Components.MrdHyperlinkField, HTMLStencilElement {
855
894
  addEventListener<K extends keyof HTMLMrdHyperlinkFieldElementEventMap>(type: K, listener: (this: HTMLMrdHyperlinkFieldElement, ev: MrdHyperlinkFieldCustomEvent<HTMLMrdHyperlinkFieldElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
@@ -890,7 +929,7 @@ declare global {
890
929
  "mrdDownload": { href: string; fileName: string };
891
930
  "mrdLoadViewPage": { name: string; page: number; sort: string; path: string; qs: string };
892
931
  "mrdLoadImage": { fieldName: string; href: string };
893
- "mrdViewAction": { name: string; action: string; dataClass: string; path?: string; qs?: string; parentPath?: string | null };
932
+ "mrdViewAction": { name: string; action: string; dataClass: string; path?: string; qs?: string; parentPath?: string | null; basicType?: string };
894
933
  "mrdLoadViewAggregations": { name: string; dataClass: string; path: string; qs: string; aggQs: string };
895
934
  }
896
935
  interface HTMLMrdLayoutSectionElement extends Components.MrdLayoutSection, HTMLStencilElement {
@@ -981,10 +1020,28 @@ declare global {
981
1020
  prototype: HTMLMrdRelationFieldElement;
982
1021
  new (): HTMLMrdRelationFieldElement;
983
1022
  };
1023
+ interface HTMLMrdSecretFieldElementEventMap {
1024
+ "mrdChange": { name: string; value: string };
1025
+ "mrdBlur": { name: string; value: string };
1026
+ }
1027
+ interface HTMLMrdSecretFieldElement extends Components.MrdSecretField, HTMLStencilElement {
1028
+ addEventListener<K extends keyof HTMLMrdSecretFieldElementEventMap>(type: K, listener: (this: HTMLMrdSecretFieldElement, ev: MrdSecretFieldCustomEvent<HTMLMrdSecretFieldElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1029
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1030
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1031
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1032
+ removeEventListener<K extends keyof HTMLMrdSecretFieldElementEventMap>(type: K, listener: (this: HTMLMrdSecretFieldElement, ev: MrdSecretFieldCustomEvent<HTMLMrdSecretFieldElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1033
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1034
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1035
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1036
+ }
1037
+ var HTMLMrdSecretFieldElement: {
1038
+ prototype: HTMLMrdSecretFieldElement;
1039
+ new (): HTMLMrdSecretFieldElement;
1040
+ };
984
1041
  interface HTMLMrdTableElementEventMap {
985
1042
  "mrdLoadPage": { page: number; sort: string; path: string; qs: string };
986
1043
  "mrdRowClick": Record<string, any>;
987
- "mrdAction": { action: string; path?: string; qs?: string; dataClass?: string; parentPath?: string | null };
1044
+ "mrdAction": { action: string; path?: string; qs?: string; dataClass?: string; parentPath?: string | null; basicType?: string };
988
1045
  "mrdDownload": { href: string; fileName: string };
989
1046
  "mrdLoadAggregations": { path: string; qs: string; aggQs: string };
990
1047
  }
@@ -1072,6 +1129,7 @@ declare global {
1072
1129
  "mrd-longtext-field": HTMLMrdLongtextFieldElement;
1073
1130
  "mrd-number-field": HTMLMrdNumberFieldElement;
1074
1131
  "mrd-relation-field": HTMLMrdRelationFieldElement;
1132
+ "mrd-secret-field": HTMLMrdSecretFieldElement;
1075
1133
  "mrd-table": HTMLMrdTableElement;
1076
1134
  "mrd-text-field": HTMLMrdTextFieldElement;
1077
1135
  "mrd-textarea-field": HTMLMrdTextareaFieldElement;
@@ -1282,6 +1340,11 @@ declare namespace LocalJSX {
1282
1340
  * @default navigator.language
1283
1341
  */
1284
1342
  "locale"?: string;
1343
+ /**
1344
+ * The currently logged-in user, resolved by the host via /accounts/me. Used to pre-fill RELATION fields whose defaultValue is "@me". May be null when not authenticated or not yet resolved.
1345
+ * @default null
1346
+ */
1347
+ "me"?: RelationSearchResult | null;
1285
1348
  "onMrdCancel"?: (event: MrdFormCustomEvent<void>) => void;
1286
1349
  "onMrdFetchAll"?: (event: MrdFormCustomEvent<{ name: string; relatedClass: string; mostSignificantClass?: string; commonRelation?: string; filter?: string; filterValue?: string }>) => void;
1287
1350
  "onMrdSearch"?: (event: MrdFormCustomEvent<{ name: string; query: string; relatedClass: string }>) => void;
@@ -1324,8 +1387,8 @@ declare namespace LocalJSX {
1324
1387
  * @default ''
1325
1388
  */
1326
1389
  "name"?: string;
1327
- "onMrdBlur"?: (event: MrdHyperlinkFieldCustomEvent<{ name: string; value: string }>) => void;
1328
- "onMrdChange"?: (event: MrdHyperlinkFieldCustomEvent<{ name: string; value: string }>) => void;
1390
+ "onMrdBlur"?: (event: MrdHyperlinkFieldCustomEvent<{ name: string; value: HyperlinkValue }>) => void;
1391
+ "onMrdChange"?: (event: MrdHyperlinkFieldCustomEvent<{ name: string; value: HyperlinkValue }>) => void;
1329
1392
  /**
1330
1393
  * @default ''
1331
1394
  */
@@ -1337,7 +1400,7 @@ declare namespace LocalJSX {
1337
1400
  /**
1338
1401
  * @default ''
1339
1402
  */
1340
- "value"?: string;
1403
+ "value"?: HyperlinkValue | string;
1341
1404
  }
1342
1405
  interface MrdImageField {
1343
1406
  /**
@@ -1417,7 +1480,7 @@ declare namespace LocalJSX {
1417
1480
  /**
1418
1481
  * Re-emitted from an embedded mrd-table's mrdAction; host builds the target URL from dataClass.
1419
1482
  */
1420
- "onMrdViewAction"?: (event: MrdLayoutSectionCustomEvent<{ name: string; action: string; dataClass: string; path?: string; qs?: string; parentPath?: string | null }>) => void;
1483
+ "onMrdViewAction"?: (event: MrdLayoutSectionCustomEvent<{ name: string; action: string; dataClass: string; path?: string; qs?: string; parentPath?: string | null; basicType?: string }>) => void;
1421
1484
  /**
1422
1485
  * Legacy: view metadata map (ClientDashboardMetadata.views). Not needed in new flat format.
1423
1486
  * @default {}
@@ -1585,7 +1648,39 @@ declare namespace LocalJSX {
1585
1648
  * Plain href string/array for normal use; pass { id, label } objects to pre-fill a loaded record.
1586
1649
  * @default null
1587
1650
  */
1588
- "value"?: string | string[] | RelationSearchResult1 | RelationSearchResult1[] | null;
1651
+ "value"?: string | string[] | RelationSearchResult | RelationSearchResult[] | null;
1652
+ }
1653
+ interface MrdSecretField {
1654
+ /**
1655
+ * @default false
1656
+ */
1657
+ "disabled"?: boolean;
1658
+ /**
1659
+ * @default ''
1660
+ */
1661
+ "label"?: string;
1662
+ /**
1663
+ * @default navigator.language
1664
+ */
1665
+ "locale"?: string;
1666
+ /**
1667
+ * @default ''
1668
+ */
1669
+ "name"?: string;
1670
+ "onMrdBlur"?: (event: MrdSecretFieldCustomEvent<{ name: string; value: string }>) => void;
1671
+ "onMrdChange"?: (event: MrdSecretFieldCustomEvent<{ name: string; value: string }>) => void;
1672
+ /**
1673
+ * @default ''
1674
+ */
1675
+ "placeholder"?: string;
1676
+ /**
1677
+ * @default false
1678
+ */
1679
+ "required"?: boolean;
1680
+ /**
1681
+ * @default ''
1682
+ */
1683
+ "value"?: string;
1589
1684
  }
1590
1685
  interface MrdTable {
1591
1686
  /**
@@ -1600,7 +1695,7 @@ declare namespace LocalJSX {
1600
1695
  /**
1601
1696
  * Fired when a toolbar action button is clicked. For 'export': includes `path` (relative excel path) and `qs` (current sort+filter params). For 'create': includes `dataClass` (target type) and `parentPath` (e.g. /buyers/123 for RELATED_VIEW).
1602
1697
  */
1603
- "onMrdAction"?: (event: MrdTableCustomEvent<{ action: string; path?: string; qs?: string; dataClass?: string; parentPath?: string | null }>) => void;
1698
+ "onMrdAction"?: (event: MrdTableCustomEvent<{ action: string; path?: string; qs?: string; dataClass?: string; parentPath?: string | null; basicType?: string }>) => void;
1604
1699
  /**
1605
1700
  * Fired when a FILE or IMAGE cell is clicked. Host resolves the href to a signed download URL.
1606
1701
  */
@@ -1802,7 +1897,7 @@ declare namespace LocalJSX {
1802
1897
  interface MrdHyperlinkFieldAttributes {
1803
1898
  "name": string;
1804
1899
  "label": string;
1805
- "value": string;
1900
+ "value": HyperlinkValue | string;
1806
1901
  "placeholder": string;
1807
1902
  "required": boolean;
1808
1903
  "disabled": boolean;
@@ -1863,6 +1958,15 @@ declare namespace LocalJSX {
1863
1958
  "multiple": boolean;
1864
1959
  "value": string | string[] | RelationSearchResult | RelationSearchResult[] | null;
1865
1960
  }
1961
+ interface MrdSecretFieldAttributes {
1962
+ "name": string;
1963
+ "label": string;
1964
+ "value": string;
1965
+ "placeholder": string;
1966
+ "required": boolean;
1967
+ "disabled": boolean;
1968
+ "locale": string;
1969
+ }
1866
1970
  interface MrdTableAttributes {
1867
1971
  "parentId": string;
1868
1972
  "locale": string;
@@ -1914,6 +2018,7 @@ declare namespace LocalJSX {
1914
2018
  "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] };
1915
2019
  "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] };
1916
2020
  "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] };
2021
+ "mrd-secret-field": Omit<MrdSecretField, keyof MrdSecretFieldAttributes> & { [K in keyof MrdSecretField & keyof MrdSecretFieldAttributes]?: MrdSecretField[K] } & { [K in keyof MrdSecretField & keyof MrdSecretFieldAttributes as `attr:${K}`]?: MrdSecretFieldAttributes[K] } & { [K in keyof MrdSecretField & keyof MrdSecretFieldAttributes as `prop:${K}`]?: MrdSecretField[K] };
1917
2022
  "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] };
1918
2023
  "mrd-text-field": Omit<MrdTextField, keyof MrdTextFieldAttributes> & { [K in keyof MrdTextField & keyof MrdTextFieldAttributes]?: MrdTextField[K] } & { [K in keyof MrdTextField & keyof MrdTextFieldAttributes as `attr:${K}`]?: MrdTextFieldAttributes[K] } & { [K in keyof MrdTextField & keyof MrdTextFieldAttributes as `prop:${K}`]?: MrdTextField[K] };
1919
2024
  "mrd-textarea-field": Omit<MrdTextareaField, keyof MrdTextareaFieldAttributes> & { [K in keyof MrdTextareaField & keyof MrdTextareaFieldAttributes]?: MrdTextareaField[K] } & { [K in keyof MrdTextareaField & keyof MrdTextareaFieldAttributes as `attr:${K}`]?: MrdTextareaFieldAttributes[K] } & { [K in keyof MrdTextareaField & keyof MrdTextareaFieldAttributes as `prop:${K}`]?: MrdTextareaField[K] };
@@ -1939,6 +2044,7 @@ declare module "@stencil/core" {
1939
2044
  "mrd-longtext-field": LocalJSX.IntrinsicElements["mrd-longtext-field"] & JSXBase.HTMLAttributes<HTMLMrdLongtextFieldElement>;
1940
2045
  "mrd-number-field": LocalJSX.IntrinsicElements["mrd-number-field"] & JSXBase.HTMLAttributes<HTMLMrdNumberFieldElement>;
1941
2046
  "mrd-relation-field": LocalJSX.IntrinsicElements["mrd-relation-field"] & JSXBase.HTMLAttributes<HTMLMrdRelationFieldElement>;
2047
+ "mrd-secret-field": LocalJSX.IntrinsicElements["mrd-secret-field"] & JSXBase.HTMLAttributes<HTMLMrdSecretFieldElement>;
1942
2048
  "mrd-table": LocalJSX.IntrinsicElements["mrd-table"] & JSXBase.HTMLAttributes<HTMLMrdTableElement>;
1943
2049
  "mrd-text-field": LocalJSX.IntrinsicElements["mrd-text-field"] & JSXBase.HTMLAttributes<HTMLMrdTextFieldElement>;
1944
2050
  "mrd-textarea-field": LocalJSX.IntrinsicElements["mrd-textarea-field"] & JSXBase.HTMLAttributes<HTMLMrdTextareaFieldElement>;
@@ -35,7 +35,8 @@ export declare enum ClientLayoutItemFieldDataType {
35
35
  FILE = "FILE",
36
36
  IMAGE = "IMAGE",
37
37
  LONGTEXT = "LONGTEXT",
38
- JSON = "JSON"
38
+ JSON = "JSON",
39
+ SECRET = "SECRET"
39
40
  }
40
41
  export declare enum ClientLayoutItemRelationDisplayType {
41
42
  SEARCH = "SEARCH",
@@ -71,6 +72,10 @@ export interface CurrencyValue {
71
72
  currency: string;
72
73
  decimals?: number;
73
74
  }
75
+ export interface HyperlinkValue {
76
+ href: string;
77
+ name?: string;
78
+ }
74
79
  export interface RelationSearchResult {
75
80
  id: string;
76
81
  label: string;
@@ -137,6 +142,10 @@ export interface ClientLayoutItemSearch {
137
142
  dataClass: string;
138
143
  showTitle: boolean;
139
144
  }
145
+ export interface ClientCreateType {
146
+ type: string;
147
+ label: string;
148
+ }
140
149
  /**
141
150
  * A single item in a ClientLayout. The `type` discriminator determines which
142
151
  * optional fields are present. Components should only act on types they
@@ -165,6 +174,8 @@ export interface ClientLayoutItem {
165
174
  }>;
166
175
  /** Toolbar buttons for embedded views. null/omitted = ["NEW","EXPORT"]; [] = none. */
167
176
  actions?: string[] | null;
177
+ /** Concrete subtypes available for create. When set, the NEW button expands into one button per entry. */
178
+ createTypes?: ClientCreateType[] | null;
168
179
  dataType?: ClientLayoutItemFieldDataType;
169
180
  required?: boolean;
170
181
  disabled?: boolean;
@@ -21,6 +21,7 @@ export interface TableAction {
21
21
  /** Button style variant. Defaults to 'secondary'. */
22
22
  variant?: 'primary' | 'secondary' | 'danger';
23
23
  disabled?: boolean;
24
+ basicType?: string;
24
25
  }
25
26
  /** Represents an active filter on a single column. */
26
27
  export interface ColumnFilter {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmlogic/components",
3
- "version": "0.3.3",
3
+ "version": "0.3.5",
4
4
  "description": "Stencil.js web component library for dynamic forms and virtual-scroll data tables",
5
5
  "license": "MIT",
6
6
  "author": "Mosterd",