@mmlogic/components 0.3.9 → 0.3.10

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 (59) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/mosterdcomponents.cjs.js +1 -1
  3. package/dist/cjs/{mrd-boolean-field_22.cjs.entry.js → mrd-boolean-field_23.cjs.entry.js} +591 -36
  4. package/dist/collection/collection-manifest.json +1 -0
  5. package/dist/collection/components/mrd-document-container/mrd-document-container.js +375 -0
  6. package/dist/collection/components/mrd-document-container/mrd-document-container.scss +79 -0
  7. package/dist/collection/components/mrd-document-list/mrd-document-list.js +562 -11
  8. package/dist/collection/components/mrd-document-list/mrd-document-list.scss +55 -0
  9. package/dist/collection/components/mrd-document-view/mrd-document-view.js +1 -1
  10. package/dist/collection/components/mrd-email-field/mrd-email-field.js +1 -1
  11. package/dist/collection/components/mrd-file-field/mrd-file-field.js +1 -1
  12. package/dist/collection/components/mrd-image-field/mrd-image-field.js +1 -1
  13. package/dist/collection/components/mrd-layout-section/mrd-layout-section.js +151 -15
  14. package/dist/collection/components/mrd-layout-section/mrd-layout-section.scss +0 -44
  15. package/dist/collection/components/mrd-longtext-field/mrd-longtext-field.js +1 -1
  16. package/dist/collection/components/mrd-number-field/mrd-number-field.js +1 -1
  17. package/dist/collection/components/mrd-secret-field/mrd-secret-field.js +2 -2
  18. package/dist/collection/components/mrd-text-field/mrd-text-field.js +1 -1
  19. package/dist/collection/components/mrd-textarea-field/mrd-textarea-field.js +1 -1
  20. package/dist/collection/components/mrd-time-field/mrd-time-field.js +1 -1
  21. package/dist/collection/dev/app.js +47 -0
  22. package/dist/collection/utils/i18n.js +10 -0
  23. package/dist/components/i18n.js +1 -1
  24. package/dist/components/mrd-document-container.d.ts +11 -0
  25. package/dist/components/mrd-document-container.js +1 -0
  26. package/dist/components/mrd-document-container2.js +1 -0
  27. package/dist/components/mrd-document-list2.js +1 -1
  28. package/dist/components/mrd-document-view2.js +1 -1
  29. package/dist/components/mrd-email-field2.js +1 -1
  30. package/dist/components/mrd-file-field2.js +1 -1
  31. package/dist/components/mrd-image-field2.js +1 -1
  32. package/dist/components/mrd-layout-section.js +1 -1
  33. package/dist/components/mrd-longtext-field2.js +1 -1
  34. package/dist/components/mrd-number-field2.js +1 -1
  35. package/dist/components/mrd-secret-field2.js +1 -1
  36. package/dist/components/mrd-text-field2.js +1 -1
  37. package/dist/components/mrd-textarea-field2.js +1 -1
  38. package/dist/components/mrd-time-field2.js +1 -1
  39. package/dist/esm/loader.js +1 -1
  40. package/dist/esm/mosterdcomponents.js +1 -1
  41. package/dist/esm/{mrd-boolean-field_22.entry.js → mrd-boolean-field_23.entry.js} +591 -37
  42. package/dist/mosterdcomponents/cell-renderer-B-AJDBcj.js.map +1 -0
  43. package/dist/mosterdcomponents/client-layout-ChqRA3AF.js.map +1 -0
  44. package/dist/mosterdcomponents/format-BAfsQfy1.js.map +1 -0
  45. package/dist/mosterdcomponents/i18n-s1XrKcD2.js.map +1 -0
  46. package/dist/mosterdcomponents/index-DkY-NQj0.js.map +1 -0
  47. package/dist/mosterdcomponents/index-DwF_Sp__.js.map +1 -0
  48. package/dist/mosterdcomponents/index.esm.js.map +1 -0
  49. package/dist/mosterdcomponents/mosterdcomponents.esm.js +1 -1
  50. package/dist/mosterdcomponents/mosterdcomponents.esm.js.map +1 -0
  51. package/dist/mosterdcomponents/p-69452249.entry.js +1 -0
  52. package/dist/mosterdcomponents/quill-C9pgw_k-.js.map +1 -0
  53. package/dist/mosterdcomponents/validation-Br9k2Ztw.js.map +1 -0
  54. package/dist/types/components/mrd-document-container/mrd-document-container.d.ts +94 -0
  55. package/dist/types/components/mrd-document-list/mrd-document-list.d.ts +102 -0
  56. package/dist/types/components/mrd-layout-section/mrd-layout-section.d.ts +29 -5
  57. package/dist/types/components.d.ts +217 -0
  58. package/package.json +1 -1
  59. package/dist/mosterdcomponents/p-b547291b.entry.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-Br9k2Ztw.js","sources":["src/utils/validation.ts"],"sourcesContent":["import { ClientLayoutItemFieldDataType } from '../types';\n\nexport function validateRequired(value: unknown): boolean {\n if (value === null || value === undefined) return false;\n if (typeof value === 'string') return value.trim().length > 0;\n if (Array.isArray(value)) return value.length > 0;\n if (typeof value === 'object') {\n // HyperlinkValue check\n const hv = value as { href?: unknown };\n if ('href' in hv) return typeof hv.href === 'string' && hv.href.trim().length > 0;\n // CurrencyValue check\n const cv = value as { amount?: unknown };\n if ('amount' in cv) return cv.amount !== null && cv.amount !== undefined && cv.amount !== '';\n }\n return true;\n}\n\nexport function validateEmail(value: string): boolean {\n if (!value) return true;\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value);\n}\n\nexport function validateUrl(value: string): boolean {\n if (!value) return true;\n try {\n const url = new URL(value);\n return url.protocol === 'http:' || url.protocol === 'https:';\n } catch {\n return false;\n }\n}\n\nexport function validateNumber(value: unknown, dataType: ClientLayoutItemFieldDataType): boolean {\n if (value === null || value === undefined || value === '') return true;\n const num = Number(value);\n if (isNaN(num)) return false;\n if (dataType === ClientLayoutItemFieldDataType.INTEGER) {\n return Number.isInteger(num);\n }\n if (dataType === ClientLayoutItemFieldDataType.PERCENTAGE) {\n return num >= 0 && num <= 100;\n }\n return true;\n}\n"],"names":[],"mappings":";;;AAEM,SAAU,gBAAgB,CAAC,KAAc,EAAA;AAC7C,IAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;AAAE,QAAA,OAAO,KAAK;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;AAC7D,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC;AACjD,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;;QAE7B,MAAM,EAAE,GAAG,KAA2B;QACtC,IAAI,MAAM,IAAI,EAAE;AAAE,YAAA,OAAO,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;;QAEjF,MAAM,EAAE,GAAG,KAA6B;QACxC,IAAI,QAAQ,IAAI,EAAE;AAAE,YAAA,OAAO,EAAE,CAAC,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE;;AAE9F,IAAA,OAAO,IAAI;AACb;AAEM,SAAU,aAAa,CAAC,KAAa,EAAA;AACzC,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,IAAI;AACvB,IAAA,OAAO,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC;AACjD;AAEM,SAAU,WAAW,CAAC,KAAa,EAAA;AACvC,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,IAAI;AACvB,IAAA,IAAI;AACF,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC;QAC1B,OAAO,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;;IAC5D,OAAA,EAAA,EAAM;AACN,QAAA,OAAO,KAAK;;AAEhB;AAEM,SAAU,cAAc,CAAC,KAAc,EAAE,QAAuC,EAAA;IACpF,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;AAAE,QAAA,OAAO,IAAI;AACtE,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;IACzB,IAAI,KAAK,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,KAAK;AAC5B,IAAA,IAAI,QAAQ,KAAK,6BAA6B,CAAC,OAAO,EAAE;AACtD,QAAA,OAAO,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;;AAE9B,IAAA,IAAI,QAAQ,KAAK,6BAA6B,CAAC,UAAU,EAAE;AACzD,QAAA,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG;;AAE/B,IAAA,OAAO,IAAI;AACb;;;;"}
@@ -0,0 +1,94 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ import { ClientArchetype, ClientLayoutItem } from '../../types/client-layout';
3
+ /**
4
+ * Owns a document collection view: a single toolbar (view switch + collection
5
+ * actions like "New folder", and — later — upload / drag-drop) plus the two
6
+ * interchangeable bodies, the folder tree (`mrd-document-list`) and the flat
7
+ * table (`mrd-table`).
8
+ *
9
+ * `mrd-layout-section` renders one of these per document VIEW / RELATED_VIEW and
10
+ * forwards the re-emitted load/navigate/action events to the host. The embedded
11
+ * table/list keep their `data-view` / `data-doclist` attributes so the host's
12
+ * existing `setViewPage` / `setViewDistinct` / `setViewAggregations` lookups
13
+ * (recursive querySelector) still resolve them unchanged.
14
+ */
15
+ export declare class MrdDocumentContainer {
16
+ el: HTMLElement;
17
+ /** The VIEW or RELATED_VIEW layout item (dataClass, fromClass, view config). */
18
+ item: ClientLayoutItem | null;
19
+ /** Resolved `commons.document` archetype binding for the folder tree. */
20
+ archetype: ClientArchetype;
21
+ /** Parent record id — required for RELATED_VIEW path building. */
22
+ parentId: string;
23
+ /** Lookup key used for the embedded `data-doclist` / `data-view` attributes. */
24
+ viewKey: string;
25
+ locale: string;
26
+ /** Re-emitted from the embedded list/table. `nodeId` present for a folder load. */
27
+ mrdLoadPage: EventEmitter<{
28
+ page: number;
29
+ sort: string;
30
+ path: string;
31
+ qs: string;
32
+ nodeId?: string;
33
+ }>;
34
+ /** Re-emitted from the embedded folder tree. */
35
+ mrdLoadDistinct: EventEmitter<{
36
+ nodeId: string;
37
+ distinct: string;
38
+ path: string;
39
+ qs: string;
40
+ }>;
41
+ /** Re-emitted from the embedded table. */
42
+ mrdLoadAggregations: EventEmitter<{
43
+ path: string;
44
+ qs: string;
45
+ aggQs: string;
46
+ }>;
47
+ /** A row / document was activated. Host routes to the object page. */
48
+ mrdNavigate: EventEmitter<{
49
+ href?: string;
50
+ label: string;
51
+ }>;
52
+ /** A table toolbar action was triggered. */
53
+ mrdAction: EventEmitter<{
54
+ action: string;
55
+ path?: string;
56
+ qs?: string;
57
+ parentPath?: string | null;
58
+ basicType?: string;
59
+ }>;
60
+ /** Generic "update an existing object" request, re-emitted from the folder tree
61
+ * (a document was dragged into another folder/container). */
62
+ mrdUpdateObject: EventEmitter<{
63
+ href: string;
64
+ values: Record<string, unknown>;
65
+ }>;
66
+ /** An external file was dropped on a folder; host uploads and calls back. */
67
+ mrdUpload: EventEmitter<{
68
+ file: File;
69
+ }>;
70
+ /** Create a new document from an uploaded file; host POSTs `values` to `path`. */
71
+ mrdCreateObject: EventEmitter<{
72
+ path: string;
73
+ values: Record<string, unknown>;
74
+ }>;
75
+ /** Active body: folder tree or flat table. */
76
+ private mode;
77
+ /** Whether the folder tree currently has a valid target for "New folder". */
78
+ private canCreate;
79
+ private listEl?;
80
+ private tableEl?;
81
+ /** Whether the currently mounted table has been init()'d. Reset on every mode switch. */
82
+ private tableInited;
83
+ /** The embedded table does not self-load: like every mrd-table it waits for the
84
+ * host to call init() (which emits mrdLoadPage, and — once page 0 lands —
85
+ * mrdLoadAggregations). The section only init()s tables mounted at load time, so
86
+ * when the user switches to list view we init the freshly mounted table here. */
87
+ componentDidRender(): void;
88
+ private setMode;
89
+ private createFolder;
90
+ private renderToolbar;
91
+ private renderTree;
92
+ private renderList;
93
+ render(): any;
94
+ }
@@ -58,17 +58,72 @@ export declare class MrdDocumentList {
58
58
  href?: string;
59
59
  label: string;
60
60
  }>;
61
+ /** Emitted whenever the "can create a folder here" state changes, so a host
62
+ * toolbar (mrd-document-container) can enable/disable its New folder button. */
63
+ mrdCanCreate: EventEmitter<boolean>;
64
+ /** Generic "update an existing object" request — fired when a document is
65
+ * dragged into another folder/container. Host PATCHes `href` with `values`
66
+ * (no move/folder knowledge needed). `values` carries the new folder string
67
+ * (or null for the container root) and, on a cross-container move, the new
68
+ * container relation href. */
69
+ mrdUpdateObject: EventEmitter<{
70
+ href: string;
71
+ values: Record<string, unknown>;
72
+ }>;
73
+ /** An external file was dropped onto a folder/container. Same flow as mrd-form:
74
+ * host uploads the file and calls `setFileReference(uri)` with the result. */
75
+ mrdUpload: EventEmitter<{
76
+ file: File;
77
+ }>;
78
+ /** Fired once the dropped file is uploaded — requests creation of a new document.
79
+ * Host POSTs `values` to `path` (on a 400 it can open the create form itself). */
80
+ mrdCreateObject: EventEmitter<{
81
+ path: string;
82
+ values: Record<string, unknown>;
83
+ }>;
61
84
  /** Root sentinel id for the container-level distinct request. */
62
85
  private static readonly ROOT;
63
86
  private containers;
64
87
  private rootLoading;
65
88
  /** True when the single-container level is collapsed away (dossier context). */
66
89
  private singleContainer;
90
+ /** Currently selected node id — the target for "New folder" and (later) drops. */
91
+ private selectedId;
92
+ /** Node id currently highlighted as a drag-drop target (null = none). */
93
+ private dropTargetId;
94
+ /** Node id showing an "uploading…" indicator while a dropped file is processed. */
95
+ private uploadingNodeId;
67
96
  private nodeIndex;
97
+ /** The pending node whose inline name input is open (null = not creating). */
98
+ private pendingNode;
99
+ /** The node the pending folder is being created under. */
100
+ private pendingParent;
101
+ /** The container the pending folder belongs to. */
102
+ private pendingContainer;
103
+ /** Current text in the inline name input. */
104
+ private pendingName;
105
+ /** Ref to the inline input, so we can focus it after it mounts. */
106
+ private pendingInputEl;
107
+ /** Set when a fresh input needs focus on the next render. */
108
+ private pendingNeedsFocus;
109
+ /** Monotonic counter for unique temporary pending-node ids. */
110
+ private newFolderSeq;
111
+ /** Last emitted canCreateFolder value, to only emit mrdCanCreate on change. */
112
+ private lastCanCreate;
113
+ /** The document row currently being dragged. */
114
+ private dragDoc;
115
+ /** Id of the node the dragged document currently lives in. */
116
+ private dragFromId;
117
+ /** External file dropped onto a node, awaiting its upload to complete. */
118
+ private pendingUpload;
119
+ /** The optimistic document row awaiting its self href from the create POST. */
120
+ private lastOptimisticDoc;
68
121
  componentDidLoad(): void;
122
+ componentDidRender(): void;
69
123
  private get containerField();
70
124
  private get folderField();
71
125
  private get titleField();
126
+ private get fileField();
72
127
  private get dateField();
73
128
  /** VIEW: `/{dataClass}`; RELATED_VIEW: `/{fromClass}/{parentId}/{dataClass}`. */
74
129
  private buildDataPath;
@@ -93,6 +148,51 @@ export declare class MrdDocumentList {
93
148
  private bump;
94
149
  private toggleContainer;
95
150
  private toggleFolder;
151
+ /** Resolve the node a new folder should be created under, and its container.
152
+ * Uses the current selection; falls back to the single container (dossier). */
153
+ private resolveTarget;
154
+ private get canCreateFolder();
155
+ /** Start creating a folder under the current target. Called by the host toolbar
156
+ * (mrd-document-container). No-op when there is no valid target. */
157
+ createFolder(): Promise<void>;
158
+ /** Folder path segments of a node relative to its container (derived from its id). */
159
+ private segmentsOf;
160
+ private startCreateFolder;
161
+ private onPendingInput;
162
+ private onPendingKeyDown;
163
+ private commitFolder;
164
+ private cancelFolder;
165
+ private clearPending;
166
+ private onDocDragStart;
167
+ private onDocDragEnd;
168
+ /** True when the drag carries external files (an OS file drop, not an internal move). */
169
+ private isFileDrag;
170
+ /** A folder/container node (or a document inside it) accepts an internal move
171
+ * or an external file drop. Always claims the event so it never bubbles to the
172
+ * root drop-zone; a different node is highlighted (its own folder = no-op). */
173
+ private onNodeDragOver;
174
+ private onNodeDragLeave;
175
+ private onNodeDrop;
176
+ /** Root-zone drop (dossier context): target the single container's root. */
177
+ private onRootDragOver;
178
+ private onRootDrop;
179
+ /** Begin an upload: emit mrdUpload; the host uploads and calls setFileReference. */
180
+ private startFileUpload;
181
+ /** Strip a single trailing extension for the document title. */
182
+ private stripExtension;
183
+ /** Host callback with the uploaded file reference. Builds the create payload
184
+ * from the archetype slots and requests the new document. */
185
+ setFileReference(uri: string): Promise<void>;
186
+ /** Host callback with the created document's self href, so the optimistic row
187
+ * becomes navigable without waiting for a reload. */
188
+ setCreatedHref(href: string): Promise<void>;
189
+ /** Folder string a node represents: the raw distinct value when it holds
190
+ * documents, else derived from its path segments; null for a container root. */
191
+ private folderStringOf;
192
+ private moveDocument;
193
+ /** Recompute a container's subtree totals from docCounts when its folders are
194
+ * loaded; otherwise just nudge the aggregate badge by the delta. */
195
+ private recomputeContainerTotals;
96
196
  private openDoc;
97
197
  private renderChevron;
98
198
  private renderDossierIcon;
@@ -102,6 +202,8 @@ export declare class MrdDocumentList {
102
202
  private renderDocRow;
103
203
  private renderLoadingRow;
104
204
  private renderChildren;
205
+ private renderUploadingRow;
206
+ private renderFolderEditRow;
105
207
  private renderFolderNode;
106
208
  private renderContainerNode;
107
209
  render(): any;
@@ -22,8 +22,6 @@ export declare class MrdLayoutSection {
22
22
  private imagePreviewUrl;
23
23
  private imagePreviews;
24
24
  private openHistoryField;
25
- /** Per-view display mode for document collection views. Default 'tree'. */
26
- private docViewMode;
27
25
  private historyClickOutside;
28
26
  mrdNavigate: EventEmitter<{
29
27
  href?: string;
@@ -79,6 +77,25 @@ export declare class MrdLayoutSection {
79
77
  path: string;
80
78
  qs: string;
81
79
  }>;
80
+ /** Generic "update an existing object" request from an embedded document view
81
+ * (a document dragged into another folder). Host PATCHes `href` with `values`. */
82
+ mrdUpdateObject: EventEmitter<{
83
+ href: string;
84
+ values: Record<string, unknown>;
85
+ }>;
86
+ /** An external file was dropped on a document view; host uploads and calls
87
+ * setViewFileReference(name, uri). */
88
+ mrdViewUpload: EventEmitter<{
89
+ name: string;
90
+ file: File;
91
+ }>;
92
+ /** Create a new document from an uploaded file; host POSTs `values` to `path`,
93
+ * then calls setViewCreatedObject(name, href) with the new object's href. */
94
+ mrdCreateObject: EventEmitter<{
95
+ name: string;
96
+ path: string;
97
+ values: Record<string, unknown>;
98
+ }>;
82
99
  private searchTimers;
83
100
  componentDidLoad(): void;
84
101
  disconnectedCallback(): void;
@@ -100,6 +117,12 @@ export declare class MrdLayoutSection {
100
117
  setViewAggregations(name: string, data: any): Promise<void>;
101
118
  /** Inject distinct values into an embedded mrd-document-list for a document view. */
102
119
  setViewDistinct(name: string, nodeId: string, values: DistinctValue[]): Promise<void>;
120
+ /** Inject the uploaded file reference for a dropped file, so the document view
121
+ * can request creation of the new document (see mrdViewUpload). */
122
+ setViewFileReference(name: string, uri: string): Promise<void>;
123
+ /** Inject the created document's href after a file-drop create, so the
124
+ * optimistic row becomes navigable (see mrdCreateObject). */
125
+ setViewCreatedObject(name: string, href: string): Promise<void>;
103
126
  /** Provide a resolved URL for an IMAGE field. Shows as thumbnail; clicking opens the lightbox. */
104
127
  setImagePreview(fieldName: string, url: string): Promise<void>;
105
128
  /** Open the lightbox directly with a URL (e.g. after mrdDownload on a FILE field). */
@@ -114,9 +137,10 @@ export declare class MrdLayoutSection {
114
137
  private renderRelation;
115
138
  private renderSearch;
116
139
  private renderRelatedView;
117
- /** Tree / list segmented toggle for document collection views (+ upload placeholder). */
118
- private renderDocToolbar;
119
- private renderDocumentList;
140
+ /** Document collection view: owns the view-switch + collection actions and
141
+ * swaps between the folder tree and the flat table. Events are re-emitted to
142
+ * the host with the view key, exactly as the raw list/table events were. */
143
+ private renderDocumentContainer;
120
144
  private renderTable;
121
145
  private renderItem;
122
146
  private renderImageModal;
@@ -118,6 +118,42 @@ export namespace Components {
118
118
  */
119
119
  "value": string;
120
120
  }
121
+ /**
122
+ * Owns a document collection view: a single toolbar (view switch + collection
123
+ * actions like "New folder", and — later — upload / drag-drop) plus the two
124
+ * interchangeable bodies, the folder tree (`mrd-document-list`) and the flat
125
+ * table (`mrd-table`).
126
+ * `mrd-layout-section` renders one of these per document VIEW / RELATED_VIEW and
127
+ * forwards the re-emitted load/navigate/action events to the host. The embedded
128
+ * table/list keep their `data-view` / `data-doclist` attributes so the host's
129
+ * existing `setViewPage` / `setViewDistinct` / `setViewAggregations` lookups
130
+ * (recursive querySelector) still resolve them unchanged.
131
+ */
132
+ interface MrdDocumentContainer {
133
+ /**
134
+ * Resolved `commons.document` archetype binding for the folder tree.
135
+ */
136
+ "archetype": ClientArchetype;
137
+ /**
138
+ * The VIEW or RELATED_VIEW layout item (dataClass, fromClass, view config).
139
+ * @default null
140
+ */
141
+ "item": ClientLayoutItem | null;
142
+ /**
143
+ * @default navigator.language
144
+ */
145
+ "locale": string;
146
+ /**
147
+ * Parent record id — required for RELATED_VIEW path building.
148
+ * @default ''
149
+ */
150
+ "parentId": string;
151
+ /**
152
+ * Lookup key used for the embedded `data-doclist` / `data-view` attributes.
153
+ * @default ''
154
+ */
155
+ "viewKey": string;
156
+ }
121
157
  /**
122
158
  * Archetype-driven document collection view. Renders documents as a lazy,
123
159
  * file-explorer-style folder tree, grouped by the `commons.document` archetype's
@@ -138,6 +174,10 @@ export namespace Components {
138
174
  * Resolved `commons.document` binding: slot name → concrete field/relation name.
139
175
  */
140
176
  "archetype": ClientArchetype;
177
+ /**
178
+ * Start creating a folder under the current target. Called by the host toolbar (mrd-document-container). No-op when there is no valid target.
179
+ */
180
+ "createFolder": () => Promise<void>;
141
181
  /**
142
182
  * The VIEW or RELATED_VIEW layout item (dataClass, fromClass, view config).
143
183
  * @default null
@@ -152,6 +192,10 @@ export namespace Components {
152
192
  * @default ''
153
193
  */
154
194
  "parentId": string;
195
+ /**
196
+ * Host callback with the created document's self href, so the optimistic row becomes navigable without waiting for a reload.
197
+ */
198
+ "setCreatedHref": (href: string) => Promise<void>;
155
199
  /**
156
200
  * Inject distinct values for a node. `nodeId` is the sentinel root (containers) or a container node id (folders).
157
201
  */
@@ -160,6 +204,10 @@ export namespace Components {
160
204
  * Inject the documents loaded for one folder node.
161
205
  */
162
206
  "setDocuments": (nodeId: string, docs: DocRow[]) => Promise<void>;
207
+ /**
208
+ * Host callback with the uploaded file reference. Builds the create payload from the archetype slots and requests the new document.
209
+ */
210
+ "setFileReference": (uri: string) => Promise<void>;
163
211
  }
164
212
  /**
165
213
  * Archetype-driven single-document view. Given a `commons.document` binding and a
@@ -394,10 +442,18 @@ export namespace Components {
394
442
  * Inject aggregation totals into an embedded mrd-table for a VIEW or RELATED_VIEW item.
395
443
  */
396
444
  "setViewAggregations": (name: string, data: any) => Promise<void>;
445
+ /**
446
+ * Inject the created document's href after a file-drop create, so the optimistic row becomes navigable (see mrdCreateObject).
447
+ */
448
+ "setViewCreatedObject": (name: string, href: string) => Promise<void>;
397
449
  /**
398
450
  * Inject distinct values into an embedded mrd-document-list for a document view.
399
451
  */
400
452
  "setViewDistinct": (name: string, nodeId: string, values: DistinctValue1[]) => Promise<void>;
453
+ /**
454
+ * Inject the uploaded file reference for a dropped file, so the document view can request creation of the new document (see mrdViewUpload).
455
+ */
456
+ "setViewFileReference": (name: string, uri: string) => Promise<void>;
401
457
  /**
402
458
  * Inject rows for a VIEW / RELATED_VIEW item. - Table view: injects the page into the embedded mrd-table (pass totalElements/hasNext). - Document view: pass `nodeId` to route the rows to that folder node in the embedded mrd-document-list. Folder loading is just a filtered list load, so it reuses this method.
403
459
  */
@@ -750,6 +806,10 @@ export interface MrdDatetimeFieldCustomEvent<T> extends CustomEvent<T> {
750
806
  detail: T;
751
807
  target: HTMLMrdDatetimeFieldElement;
752
808
  }
809
+ export interface MrdDocumentContainerCustomEvent<T> extends CustomEvent<T> {
810
+ detail: T;
811
+ target: HTMLMrdDocumentContainerElement;
812
+ }
753
813
  export interface MrdDocumentListCustomEvent<T> extends CustomEvent<T> {
754
814
  detail: T;
755
815
  target: HTMLMrdDocumentListElement;
@@ -895,10 +955,49 @@ declare global {
895
955
  prototype: HTMLMrdDatetimeFieldElement;
896
956
  new (): HTMLMrdDatetimeFieldElement;
897
957
  };
958
+ interface HTMLMrdDocumentContainerElementEventMap {
959
+ "mrdLoadPage": { page: number; sort: string; path: string; qs: string; nodeId?: string };
960
+ "mrdLoadDistinct": { nodeId: string; distinct: string; path: string; qs: string };
961
+ "mrdLoadAggregations": { path: string; qs: string; aggQs: string };
962
+ "mrdNavigate": { href?: string; label: string };
963
+ "mrdAction": { action: string; path?: string; qs?: string; parentPath?: string | null; basicType?: string };
964
+ "mrdUpdateObject": { href: string; values: Record<string, unknown> };
965
+ "mrdUpload": { file: File };
966
+ "mrdCreateObject": { path: string; values: Record<string, unknown> };
967
+ }
968
+ /**
969
+ * Owns a document collection view: a single toolbar (view switch + collection
970
+ * actions like "New folder", and — later — upload / drag-drop) plus the two
971
+ * interchangeable bodies, the folder tree (`mrd-document-list`) and the flat
972
+ * table (`mrd-table`).
973
+ * `mrd-layout-section` renders one of these per document VIEW / RELATED_VIEW and
974
+ * forwards the re-emitted load/navigate/action events to the host. The embedded
975
+ * table/list keep their `data-view` / `data-doclist` attributes so the host's
976
+ * existing `setViewPage` / `setViewDistinct` / `setViewAggregations` lookups
977
+ * (recursive querySelector) still resolve them unchanged.
978
+ */
979
+ interface HTMLMrdDocumentContainerElement extends Components.MrdDocumentContainer, HTMLStencilElement {
980
+ addEventListener<K extends keyof HTMLMrdDocumentContainerElementEventMap>(type: K, listener: (this: HTMLMrdDocumentContainerElement, ev: MrdDocumentContainerCustomEvent<HTMLMrdDocumentContainerElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
981
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
982
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
983
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
984
+ removeEventListener<K extends keyof HTMLMrdDocumentContainerElementEventMap>(type: K, listener: (this: HTMLMrdDocumentContainerElement, ev: MrdDocumentContainerCustomEvent<HTMLMrdDocumentContainerElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
985
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
986
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
987
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
988
+ }
989
+ var HTMLMrdDocumentContainerElement: {
990
+ prototype: HTMLMrdDocumentContainerElement;
991
+ new (): HTMLMrdDocumentContainerElement;
992
+ };
898
993
  interface HTMLMrdDocumentListElementEventMap {
899
994
  "mrdLoadDistinct": { nodeId: string; distinct: string; path: string; qs: string };
900
995
  "mrdLoadPage": { nodeId: string; page: number; sort: string; path: string; qs: string };
901
996
  "mrdNavigate": { href?: string; label: string };
997
+ "mrdCanCreate": boolean;
998
+ "mrdUpdateObject": { href: string; values: Record<string, unknown> };
999
+ "mrdUpload": { file: File };
1000
+ "mrdCreateObject": { path: string; values: Record<string, unknown> };
902
1001
  }
903
1002
  /**
904
1003
  * Archetype-driven document collection view. Renders documents as a lazy,
@@ -1081,6 +1180,9 @@ declare global {
1081
1180
  "mrdViewAction": { name: string; action: string; dataClass: string; path?: string; qs?: string; parentPath?: string | null; basicType?: string };
1082
1181
  "mrdLoadViewAggregations": { name: string; dataClass: string; path: string; qs: string; aggQs: string };
1083
1182
  "mrdLoadViewDistinct": { name: string; nodeId: string; distinct: string; path: string; qs: string };
1183
+ "mrdUpdateObject": { href: string; values: Record<string, unknown> };
1184
+ "mrdViewUpload": { name: string; file: File };
1185
+ "mrdCreateObject": { name: string; path: string; values: Record<string, unknown> };
1084
1186
  }
1085
1187
  interface HTMLMrdLayoutSectionElement extends Components.MrdLayoutSection, HTMLStencilElement {
1086
1188
  addEventListener<K extends keyof HTMLMrdLayoutSectionElementEventMap>(type: K, listener: (this: HTMLMrdLayoutSectionElement, ev: MrdLayoutSectionCustomEvent<HTMLMrdLayoutSectionElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
@@ -1268,6 +1370,7 @@ declare global {
1268
1370
  "mrd-currency-field": HTMLMrdCurrencyFieldElement;
1269
1371
  "mrd-date-field": HTMLMrdDateFieldElement;
1270
1372
  "mrd-datetime-field": HTMLMrdDatetimeFieldElement;
1373
+ "mrd-document-container": HTMLMrdDocumentContainerElement;
1271
1374
  "mrd-document-list": HTMLMrdDocumentListElement;
1272
1375
  "mrd-document-view": HTMLMrdDocumentViewElement;
1273
1376
  "mrd-email-field": HTMLMrdEmailFieldElement;
@@ -1401,6 +1504,74 @@ declare namespace LocalJSX {
1401
1504
  */
1402
1505
  "value"?: string;
1403
1506
  }
1507
+ /**
1508
+ * Owns a document collection view: a single toolbar (view switch + collection
1509
+ * actions like "New folder", and — later — upload / drag-drop) plus the two
1510
+ * interchangeable bodies, the folder tree (`mrd-document-list`) and the flat
1511
+ * table (`mrd-table`).
1512
+ * `mrd-layout-section` renders one of these per document VIEW / RELATED_VIEW and
1513
+ * forwards the re-emitted load/navigate/action events to the host. The embedded
1514
+ * table/list keep their `data-view` / `data-doclist` attributes so the host's
1515
+ * existing `setViewPage` / `setViewDistinct` / `setViewAggregations` lookups
1516
+ * (recursive querySelector) still resolve them unchanged.
1517
+ */
1518
+ interface MrdDocumentContainer {
1519
+ /**
1520
+ * Resolved `commons.document` archetype binding for the folder tree.
1521
+ */
1522
+ "archetype": ClientArchetype;
1523
+ /**
1524
+ * The VIEW or RELATED_VIEW layout item (dataClass, fromClass, view config).
1525
+ * @default null
1526
+ */
1527
+ "item"?: ClientLayoutItem | null;
1528
+ /**
1529
+ * @default navigator.language
1530
+ */
1531
+ "locale"?: string;
1532
+ /**
1533
+ * A table toolbar action was triggered.
1534
+ */
1535
+ "onMrdAction"?: (event: MrdDocumentContainerCustomEvent<{ action: string; path?: string; qs?: string; parentPath?: string | null; basicType?: string }>) => void;
1536
+ /**
1537
+ * Create a new document from an uploaded file; host POSTs `values` to `path`.
1538
+ */
1539
+ "onMrdCreateObject"?: (event: MrdDocumentContainerCustomEvent<{ path: string; values: Record<string, unknown> }>) => void;
1540
+ /**
1541
+ * Re-emitted from the embedded table.
1542
+ */
1543
+ "onMrdLoadAggregations"?: (event: MrdDocumentContainerCustomEvent<{ path: string; qs: string; aggQs: string }>) => void;
1544
+ /**
1545
+ * Re-emitted from the embedded folder tree.
1546
+ */
1547
+ "onMrdLoadDistinct"?: (event: MrdDocumentContainerCustomEvent<{ nodeId: string; distinct: string; path: string; qs: string }>) => void;
1548
+ /**
1549
+ * Re-emitted from the embedded list/table. `nodeId` present for a folder load.
1550
+ */
1551
+ "onMrdLoadPage"?: (event: MrdDocumentContainerCustomEvent<{ page: number; sort: string; path: string; qs: string; nodeId?: string }>) => void;
1552
+ /**
1553
+ * A row / document was activated. Host routes to the object page.
1554
+ */
1555
+ "onMrdNavigate"?: (event: MrdDocumentContainerCustomEvent<{ href?: string; label: string }>) => void;
1556
+ /**
1557
+ * Generic "update an existing object" request, re-emitted from the folder tree (a document was dragged into another folder/container).
1558
+ */
1559
+ "onMrdUpdateObject"?: (event: MrdDocumentContainerCustomEvent<{ href: string; values: Record<string, unknown> }>) => void;
1560
+ /**
1561
+ * An external file was dropped on a folder; host uploads and calls back.
1562
+ */
1563
+ "onMrdUpload"?: (event: MrdDocumentContainerCustomEvent<{ file: File }>) => void;
1564
+ /**
1565
+ * Parent record id — required for RELATED_VIEW path building.
1566
+ * @default ''
1567
+ */
1568
+ "parentId"?: string;
1569
+ /**
1570
+ * Lookup key used for the embedded `data-doclist` / `data-view` attributes.
1571
+ * @default ''
1572
+ */
1573
+ "viewKey"?: string;
1574
+ }
1404
1575
  /**
1405
1576
  * Archetype-driven document collection view. Renders documents as a lazy,
1406
1577
  * file-explorer-style folder tree, grouped by the `commons.document` archetype's
@@ -1430,6 +1601,14 @@ declare namespace LocalJSX {
1430
1601
  * @default navigator.language
1431
1602
  */
1432
1603
  "locale"?: string;
1604
+ /**
1605
+ * Emitted whenever the "can create a folder here" state changes, so a host toolbar (mrd-document-container) can enable/disable its New folder button.
1606
+ */
1607
+ "onMrdCanCreate"?: (event: MrdDocumentListCustomEvent<boolean>) => void;
1608
+ /**
1609
+ * Fired once the dropped file is uploaded — requests creation of a new document. Host POSTs `values` to `path` (on a 400 it can open the create form itself).
1610
+ */
1611
+ "onMrdCreateObject"?: (event: MrdDocumentListCustomEvent<{ path: string; values: Record<string, unknown> }>) => void;
1433
1612
  /**
1434
1613
  * Request distinct values for a field/relation. Host fetches `{path}?{qs}` and calls `setDistinct(nodeId, values)`.
1435
1614
  */
@@ -1442,6 +1621,14 @@ declare namespace LocalJSX {
1442
1621
  * A document row was clicked. Host routes to the document object page.
1443
1622
  */
1444
1623
  "onMrdNavigate"?: (event: MrdDocumentListCustomEvent<{ href?: string; label: string }>) => void;
1624
+ /**
1625
+ * Generic "update an existing object" request — fired when a document is dragged into another folder/container. Host PATCHes `href` with `values` (no move/folder knowledge needed). `values` carries the new folder string (or null for the container root) and, on a cross-container move, the new container relation href.
1626
+ */
1627
+ "onMrdUpdateObject"?: (event: MrdDocumentListCustomEvent<{ href: string; values: Record<string, unknown> }>) => void;
1628
+ /**
1629
+ * An external file was dropped onto a folder/container. Same flow as mrd-form: host uploads the file and calls `setFileReference(uri)` with the result.
1630
+ */
1631
+ "onMrdUpload"?: (event: MrdDocumentListCustomEvent<{ file: File }>) => void;
1445
1632
  /**
1446
1633
  * Parent record id — required for RELATED_VIEW path building.
1447
1634
  * @default ''
@@ -1698,6 +1885,10 @@ declare namespace LocalJSX {
1698
1885
  * @default navigator.language
1699
1886
  */
1700
1887
  "locale"?: string;
1888
+ /**
1889
+ * Create a new document from an uploaded file; host POSTs `values` to `path`, then calls setViewCreatedObject(name, href) with the new object's href.
1890
+ */
1891
+ "onMrdCreateObject"?: (event: MrdLayoutSectionCustomEvent<{ name: string; path: string; values: Record<string, unknown> }>) => void;
1701
1892
  "onMrdDownload"?: (event: MrdLayoutSectionCustomEvent<{ href: string; fileName: string }>) => void;
1702
1893
  /**
1703
1894
  * Fired once on load for each IMAGE field that has an href; host resolves the URL and calls setImagePreview().
@@ -1717,10 +1908,18 @@ declare namespace LocalJSX {
1717
1908
  "onMrdLoadViewPage"?: (event: MrdLayoutSectionCustomEvent<{ name: string; page: number; sort: string; path: string; qs: string; nodeId?: string }>) => void;
1718
1909
  "onMrdNavigate"?: (event: MrdLayoutSectionCustomEvent<{ href?: string; label: string; navigate?: ClientLayoutItemNavigate }>) => void;
1719
1910
  "onMrdSearch"?: (event: MrdLayoutSectionCustomEvent<{ query: string; dataClass: string }>) => void;
1911
+ /**
1912
+ * Generic "update an existing object" request from an embedded document view (a document dragged into another folder). Host PATCHes `href` with `values`.
1913
+ */
1914
+ "onMrdUpdateObject"?: (event: MrdLayoutSectionCustomEvent<{ href: string; values: Record<string, unknown> }>) => void;
1720
1915
  /**
1721
1916
  * Re-emitted from an embedded mrd-table's mrdAction; host builds the target URL from dataClass.
1722
1917
  */
1723
1918
  "onMrdViewAction"?: (event: MrdLayoutSectionCustomEvent<{ name: string; action: string; dataClass: string; path?: string; qs?: string; parentPath?: string | null; basicType?: string }>) => void;
1919
+ /**
1920
+ * An external file was dropped on a document view; host uploads and calls setViewFileReference(name, uri).
1921
+ */
1922
+ "onMrdViewUpload"?: (event: MrdLayoutSectionCustomEvent<{ name: string; file: File }>) => void;
1724
1923
  /**
1725
1924
  * Legacy: view metadata map (ClientDashboardMetadata.views). Not needed in new flat format.
1726
1925
  * @default {}
@@ -2107,6 +2306,11 @@ declare namespace LocalJSX {
2107
2306
  "disabled": boolean;
2108
2307
  "locale": string;
2109
2308
  }
2309
+ interface MrdDocumentContainerAttributes {
2310
+ "parentId": string;
2311
+ "viewKey": string;
2312
+ "locale": string;
2313
+ }
2110
2314
  interface MrdDocumentListAttributes {
2111
2315
  "parentId": string;
2112
2316
  "locale": string;
@@ -2254,6 +2458,7 @@ declare namespace LocalJSX {
2254
2458
  "mrd-currency-field": Omit<MrdCurrencyField, keyof MrdCurrencyFieldAttributes> & { [K in keyof MrdCurrencyField & keyof MrdCurrencyFieldAttributes]?: MrdCurrencyField[K] } & { [K in keyof MrdCurrencyField & keyof MrdCurrencyFieldAttributes as `attr:${K}`]?: MrdCurrencyFieldAttributes[K] } & { [K in keyof MrdCurrencyField & keyof MrdCurrencyFieldAttributes as `prop:${K}`]?: MrdCurrencyField[K] };
2255
2459
  "mrd-date-field": Omit<MrdDateField, keyof MrdDateFieldAttributes> & { [K in keyof MrdDateField & keyof MrdDateFieldAttributes]?: MrdDateField[K] } & { [K in keyof MrdDateField & keyof MrdDateFieldAttributes as `attr:${K}`]?: MrdDateFieldAttributes[K] } & { [K in keyof MrdDateField & keyof MrdDateFieldAttributes as `prop:${K}`]?: MrdDateField[K] };
2256
2460
  "mrd-datetime-field": Omit<MrdDatetimeField, keyof MrdDatetimeFieldAttributes> & { [K in keyof MrdDatetimeField & keyof MrdDatetimeFieldAttributes]?: MrdDatetimeField[K] } & { [K in keyof MrdDatetimeField & keyof MrdDatetimeFieldAttributes as `attr:${K}`]?: MrdDatetimeFieldAttributes[K] } & { [K in keyof MrdDatetimeField & keyof MrdDatetimeFieldAttributes as `prop:${K}`]?: MrdDatetimeField[K] };
2461
+ "mrd-document-container": Omit<MrdDocumentContainer, keyof MrdDocumentContainerAttributes> & { [K in keyof MrdDocumentContainer & keyof MrdDocumentContainerAttributes]?: MrdDocumentContainer[K] } & { [K in keyof MrdDocumentContainer & keyof MrdDocumentContainerAttributes as `attr:${K}`]?: MrdDocumentContainerAttributes[K] } & { [K in keyof MrdDocumentContainer & keyof MrdDocumentContainerAttributes as `prop:${K}`]?: MrdDocumentContainer[K] };
2257
2462
  "mrd-document-list": Omit<MrdDocumentList, keyof MrdDocumentListAttributes> & { [K in keyof MrdDocumentList & keyof MrdDocumentListAttributes]?: MrdDocumentList[K] } & { [K in keyof MrdDocumentList & keyof MrdDocumentListAttributes as `attr:${K}`]?: MrdDocumentListAttributes[K] } & { [K in keyof MrdDocumentList & keyof MrdDocumentListAttributes as `prop:${K}`]?: MrdDocumentList[K] };
2258
2463
  "mrd-document-view": Omit<MrdDocumentView, keyof MrdDocumentViewAttributes> & { [K in keyof MrdDocumentView & keyof MrdDocumentViewAttributes]?: MrdDocumentView[K] } & { [K in keyof MrdDocumentView & keyof MrdDocumentViewAttributes as `attr:${K}`]?: MrdDocumentViewAttributes[K] } & { [K in keyof MrdDocumentView & keyof MrdDocumentViewAttributes as `prop:${K}`]?: MrdDocumentView[K] };
2259
2464
  "mrd-email-field": Omit<MrdEmailField, keyof MrdEmailFieldAttributes> & { [K in keyof MrdEmailField & keyof MrdEmailFieldAttributes]?: MrdEmailField[K] } & { [K in keyof MrdEmailField & keyof MrdEmailFieldAttributes as `attr:${K}`]?: MrdEmailFieldAttributes[K] } & { [K in keyof MrdEmailField & keyof MrdEmailFieldAttributes as `prop:${K}`]?: MrdEmailField[K] };
@@ -2282,6 +2487,18 @@ declare module "@stencil/core" {
2282
2487
  "mrd-currency-field": LocalJSX.IntrinsicElements["mrd-currency-field"] & JSXBase.HTMLAttributes<HTMLMrdCurrencyFieldElement>;
2283
2488
  "mrd-date-field": LocalJSX.IntrinsicElements["mrd-date-field"] & JSXBase.HTMLAttributes<HTMLMrdDateFieldElement>;
2284
2489
  "mrd-datetime-field": LocalJSX.IntrinsicElements["mrd-datetime-field"] & JSXBase.HTMLAttributes<HTMLMrdDatetimeFieldElement>;
2490
+ /**
2491
+ * Owns a document collection view: a single toolbar (view switch + collection
2492
+ * actions like "New folder", and — later — upload / drag-drop) plus the two
2493
+ * interchangeable bodies, the folder tree (`mrd-document-list`) and the flat
2494
+ * table (`mrd-table`).
2495
+ * `mrd-layout-section` renders one of these per document VIEW / RELATED_VIEW and
2496
+ * forwards the re-emitted load/navigate/action events to the host. The embedded
2497
+ * table/list keep their `data-view` / `data-doclist` attributes so the host's
2498
+ * existing `setViewPage` / `setViewDistinct` / `setViewAggregations` lookups
2499
+ * (recursive querySelector) still resolve them unchanged.
2500
+ */
2501
+ "mrd-document-container": LocalJSX.IntrinsicElements["mrd-document-container"] & JSXBase.HTMLAttributes<HTMLMrdDocumentContainerElement>;
2285
2502
  /**
2286
2503
  * Archetype-driven document collection view. Renders documents as a lazy,
2287
2504
  * file-explorer-style folder tree, grouped by the `commons.document` archetype's
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmlogic/components",
3
- "version": "0.3.9",
3
+ "version": "0.3.10",
4
4
  "description": "Stencil.js web component library for dynamic forms and virtual-scroll data tables",
5
5
  "license": "MIT",
6
6
  "author": "Mosterd",