@mmlogic/components 0.5.1 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cell-renderer-7KX9Qbml.js +983 -0
- package/dist/cjs/{client-layout-RZ3Ix-4a.js → client-layout-CqVuJumR.js} +9 -0
- package/dist/cjs/{index-DzRfoAPz.js → index-DVbdkYO3.js} +468 -6
- package/dist/cjs/index.cjs.js +4 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/mosterdcomponents.cjs.js +2 -2
- package/dist/cjs/{mrd-boolean-field_23.cjs.entry.js → mrd-boolean-field_25.cjs.entry.js} +3017 -951
- package/dist/cjs/mrd-merge-view.cjs.entry.js +273 -0
- package/dist/collection/collection-manifest.json +3 -0
- package/dist/collection/components/documents/mrd-document-view/mrd-document-view.js +7 -8
- package/dist/collection/components/email/mrd-email-view/mrd-email-view.css +126 -0
- package/dist/collection/components/email/mrd-email-view/mrd-email-view.js +247 -0
- package/dist/collection/components/fields/file-upload-common.js +23 -7
- package/dist/collection/components/fields/mrd-boolean-field/mrd-boolean-field.js +1 -1
- package/dist/collection/components/fields/mrd-currency-field/mrd-currency-field.js +1 -1
- package/dist/collection/components/fields/mrd-date-field/mrd-date-field.js +1 -1
- package/dist/collection/components/fields/mrd-datetime-field/mrd-datetime-field.js +1 -1
- package/dist/collection/components/fields/mrd-email-field/mrd-email-field.js +1 -1
- package/dist/collection/components/fields/mrd-file-field/mrd-file-field.css +20 -1
- package/dist/collection/components/fields/mrd-file-field/mrd-file-field.js +108 -47
- package/dist/collection/components/fields/mrd-image-field/mrd-image-field.css +44 -0
- package/dist/collection/components/fields/mrd-image-field/mrd-image-field.js +126 -58
- package/dist/collection/components/fields/mrd-longtext-field/mrd-longtext-field.js +1 -1
- package/dist/collection/components/fields/mrd-number-field/mrd-number-field.js +1 -1
- package/dist/collection/components/fields/mrd-secret-field/mrd-secret-field.js +2 -2
- package/dist/collection/components/fields/mrd-text-field/mrd-text-field.js +1 -1
- package/dist/collection/components/fields/mrd-textarea-field/mrd-textarea-field.js +9 -5
- package/dist/collection/components/fields/mrd-time-field/mrd-time-field.js +1 -1
- package/dist/collection/components/form/mrd-field/mrd-field.js +5 -5
- package/dist/collection/components/form/mrd-form/mrd-form.js +55 -6
- package/dist/collection/components/invoice/mrd-invoice-view/mrd-invoice-view.css +145 -0
- package/dist/collection/components/invoice/mrd-invoice-view/mrd-invoice-view.js +281 -0
- package/dist/collection/components/layout/mrd-layout-section/field-value.js +5 -1
- package/dist/collection/components/layout/mrd-layout-section/mrd-layout-section.css +10 -0
- package/dist/collection/components/layout/mrd-layout-section/mrd-layout-section.js +38 -8
- package/dist/collection/components/merge/mrd-merge-view/merge-diff.js +99 -0
- package/dist/collection/components/merge/mrd-merge-view/merge-parts.js +44 -0
- package/dist/collection/components/merge/mrd-merge-view/mrd-merge-view.css +244 -0
- package/dist/collection/components/merge/mrd-merge-view/mrd-merge-view.js +397 -0
- package/dist/collection/dev/api.js +41 -2
- package/dist/collection/dev/app.js +135 -17
- package/dist/collection/dev/example-data.js +126 -2
- package/dist/collection/types/client-layout.js +6 -0
- package/dist/collection/utils/cell-renderer.js +6 -1
- package/dist/collection/utils/document-attachments.js +27 -14
- package/dist/collection/utils/i18n.js +224 -0
- package/dist/components/cell-renderer.js +1 -0
- package/dist/components/client-layout.js +1 -1
- package/dist/components/document-attachments.js +1 -1
- package/dist/components/file-upload-common.js +1 -1
- package/dist/components/format.js +1 -1
- package/dist/components/i18n.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/mrd-boolean-field2.js +1 -1
- package/dist/components/mrd-currency-field2.js +1 -1
- package/dist/components/mrd-date-field2.js +1 -1
- package/dist/components/mrd-datetime-field2.js +1 -1
- package/dist/components/mrd-document-view2.js +1 -1
- package/dist/components/mrd-email-field2.js +1 -1
- package/dist/components/mrd-email-view.d.ts +11 -0
- package/dist/components/mrd-email-view.js +1 -0
- package/dist/components/mrd-email-view2.js +1 -0
- package/dist/components/mrd-field2.js +1 -1
- package/dist/components/mrd-file-field2.js +1 -1
- package/dist/components/mrd-form.js +1 -1
- package/dist/components/mrd-image-field2.js +1 -1
- package/dist/components/mrd-invoice-view.d.ts +11 -0
- package/dist/components/mrd-invoice-view.js +1 -0
- package/dist/components/mrd-invoice-view2.js +1 -0
- package/dist/components/mrd-layout-section.js +1 -1
- package/dist/components/mrd-longtext-field2.js +1 -1
- package/dist/components/mrd-merge-view.d.ts +11 -0
- package/dist/components/mrd-merge-view.js +1 -0
- package/dist/components/mrd-number-field2.js +1 -1
- package/dist/components/mrd-secret-field2.js +1 -1
- package/dist/components/mrd-table2.js +1 -1
- package/dist/components/mrd-text-field2.js +1 -1
- package/dist/components/mrd-textarea-field2.js +1 -1
- package/dist/components/mrd-time-field2.js +1 -1
- package/dist/components/purify.es.js +2 -0
- package/dist/esm/cell-renderer-DIsNX9D7.js +974 -0
- package/dist/esm/{client-layout-DCOAAH92.js → client-layout-Bc42CfJB.js} +7 -1
- package/dist/esm/{index-DiSe6vjv.js → index-CDiBvvJU.js} +468 -6
- package/dist/esm/index.js +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/mosterdcomponents.js +3 -3
- package/dist/esm/{mrd-boolean-field_23.entry.js → mrd-boolean-field_25.entry.js} +2949 -885
- package/dist/esm/mrd-merge-view.entry.js +271 -0
- package/dist/mosterdcomponents/index.esm.js +1 -1
- package/dist/mosterdcomponents/mosterdcomponents.esm.js +1 -1
- package/dist/mosterdcomponents/p-4e061416.entry.js +1 -0
- package/dist/mosterdcomponents/p-910ebfee.entry.js +3 -0
- package/dist/mosterdcomponents/{p-DCOAAH92.js → p-Bc42CfJB.js} +1 -1
- package/dist/mosterdcomponents/p-CDiBvvJU.js +2 -0
- package/dist/mosterdcomponents/p-Ce2QDq0t.js +1 -0
- package/dist/types/components/documents/mrd-document-view/mrd-document-view.d.ts +2 -2
- package/dist/types/components/email/mrd-email-view/mrd-email-view.d.ts +52 -0
- package/dist/types/components/fields/file-upload-common.d.ts +19 -1
- package/dist/types/components/fields/mrd-file-field/mrd-file-field.d.ts +24 -10
- package/dist/types/components/fields/mrd-image-field/mrd-image-field.d.ts +27 -11
- package/dist/types/components/fields/mrd-textarea-field/mrd-textarea-field.d.ts +1 -0
- package/dist/types/components/form/mrd-form/mrd-form.d.ts +16 -1
- package/dist/types/components/invoice/mrd-invoice-view/mrd-invoice-view.d.ts +60 -0
- package/dist/types/components/layout/mrd-layout-section/mrd-layout-section.d.ts +13 -0
- package/dist/types/components/merge/mrd-merge-view/merge-diff.d.ts +43 -0
- package/dist/types/components/merge/mrd-merge-view/merge-parts.d.ts +37 -0
- package/dist/types/components/merge/mrd-merge-view/mrd-merge-view.d.ts +68 -0
- package/dist/types/components.d.ts +445 -19
- package/dist/types/types/client-layout.d.ts +6 -0
- package/dist/types/utils/document-attachments.d.ts +12 -5
- package/package.json +2 -1
- package/dist/mosterdcomponents/p-DiSe6vjv.js +0 -2
- package/dist/mosterdcomponents/p-cdecc698.entry.js +0 -1
|
@@ -5,14 +5,16 @@
|
|
|
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 as ClientLayoutItem1, ClientLayoutItemFieldDataType, ClientLayoutItemRelationDisplayType, ClientLayoutItemRelationEditBehavior, ClientListValue, CurrencyValue, RelationSearchResult } from "./types";
|
|
9
|
-
import { AggregationResult, ClientArchetype, ClientLayoutItem, ClientLayoutItemNavigate, ClientLayoutNavigateBehaviour, ClientViewMetadata, DocumentAttachment, HyperlinkValue, RelationSearchResult as RelationSearchResult1 } from "./types/client-layout";
|
|
8
|
+
import { ClientLayout, ClientLayoutItem as ClientLayoutItem1, ClientLayoutItemFieldDataType, ClientLayoutItemRelationDisplayType, ClientLayoutItemRelationEditBehavior, ClientListValue as ClientListValue1, CurrencyValue, RelationSearchResult } from "./types";
|
|
9
|
+
import { AggregationResult, ClientArchetype, ClientLayoutItem, ClientLayoutItemNavigate, ClientLayoutNavigateBehaviour, ClientListValue, ClientViewMetadata, DocumentAttachment, HyperlinkValue, RelationSearchResult as RelationSearchResult1 } from "./types/client-layout";
|
|
10
10
|
import { ListNavigationContext } from "./utils/query-params";
|
|
11
11
|
import { DistinctValue, DocRow } from "./components/documents/mrd-document-list/folder-tree";
|
|
12
|
-
|
|
13
|
-
export {
|
|
12
|
+
import { FileEntry } from "./components/fields/file-upload-common";
|
|
13
|
+
export { ClientLayout, ClientLayoutItem as ClientLayoutItem1, ClientLayoutItemFieldDataType, ClientLayoutItemRelationDisplayType, ClientLayoutItemRelationEditBehavior, ClientListValue as ClientListValue1, CurrencyValue, RelationSearchResult } from "./types";
|
|
14
|
+
export { AggregationResult, ClientArchetype, ClientLayoutItem, ClientLayoutItemNavigate, ClientLayoutNavigateBehaviour, ClientListValue, ClientViewMetadata, DocumentAttachment, HyperlinkValue, RelationSearchResult as RelationSearchResult1 } from "./types/client-layout";
|
|
14
15
|
export { ListNavigationContext } from "./utils/query-params";
|
|
15
16
|
export { DistinctValue, DocRow } from "./components/documents/mrd-document-list/folder-tree";
|
|
17
|
+
export { FileEntry } from "./components/fields/file-upload-common";
|
|
16
18
|
export namespace Components {
|
|
17
19
|
interface MrdBooleanField {
|
|
18
20
|
/**
|
|
@@ -284,6 +286,32 @@ export namespace Components {
|
|
|
284
286
|
*/
|
|
285
287
|
"value": string;
|
|
286
288
|
}
|
|
289
|
+
/**
|
|
290
|
+
* Archetype-driven single-email view. Given a `commons.email` binding and a data
|
|
291
|
+
* record, renders the message the way an Outlook printout would — subject, a
|
|
292
|
+
* compact From/To/CC/Date header block, the body and attachments — instead of a
|
|
293
|
+
* generic field form. Fully read-only: emails arrive through other channels (mail
|
|
294
|
+
* ingestion gateways), never edited here.
|
|
295
|
+
* Like `mrd-document-view`/`mrd-invoice-view`, this component never resolves file
|
|
296
|
+
* hrefs itself — it only exposes attachment references via `mrdAttachments` (an
|
|
297
|
+
* email can have several) and plain download buttons; the host decides how/whether
|
|
298
|
+
* to render them.
|
|
299
|
+
*/
|
|
300
|
+
interface MrdEmailView {
|
|
301
|
+
/**
|
|
302
|
+
* Resolved `commons.email` binding: slot name → concrete field/relation name.
|
|
303
|
+
*/
|
|
304
|
+
"archetype": ClientArchetype;
|
|
305
|
+
/**
|
|
306
|
+
* The data record from the /data endpoint. Fields keyed by name; relations under `_links`.
|
|
307
|
+
* @default {}
|
|
308
|
+
*/
|
|
309
|
+
"data": Record<string, unknown>;
|
|
310
|
+
/**
|
|
311
|
+
* @default navigator.language
|
|
312
|
+
*/
|
|
313
|
+
"locale": string;
|
|
314
|
+
}
|
|
287
315
|
interface MrdField {
|
|
288
316
|
"item": ClientLayoutItem1;
|
|
289
317
|
/**
|
|
@@ -313,6 +341,10 @@ export namespace Components {
|
|
|
313
341
|
* @default 0
|
|
314
342
|
*/
|
|
315
343
|
"maxSize": number;
|
|
344
|
+
/**
|
|
345
|
+
* @default false
|
|
346
|
+
*/
|
|
347
|
+
"multiple": boolean;
|
|
316
348
|
/**
|
|
317
349
|
* @default ''
|
|
318
350
|
*/
|
|
@@ -347,7 +379,10 @@ export namespace Components {
|
|
|
347
379
|
* @default ''
|
|
348
380
|
*/
|
|
349
381
|
"referenceHref": string;
|
|
350
|
-
|
|
382
|
+
/**
|
|
383
|
+
* Inject a value from outside (e.g. after a file upload completes). `file` is optional and only meaningful for `multiple` FILE/IMAGE fields: when the field's current value is an array, mrd-form replaces the array entry that `=== file` with `value`, leaving other pending/resolved entries untouched — this is how mrd-file-field/mrd-image-field resolve concurrent per-file uploads. Pass the `file` from the originating mrdUpload event back unchanged.
|
|
384
|
+
*/
|
|
385
|
+
"setFieldValue": (name: string, value: unknown, file?: File) => Promise<void>;
|
|
351
386
|
/**
|
|
352
387
|
* When true, a cancel button is shown next to the submit button.
|
|
353
388
|
* @default false
|
|
@@ -409,6 +444,10 @@ export namespace Components {
|
|
|
409
444
|
* @default 0
|
|
410
445
|
*/
|
|
411
446
|
"maxSize": number;
|
|
447
|
+
/**
|
|
448
|
+
* @default false
|
|
449
|
+
*/
|
|
450
|
+
"multiple": boolean;
|
|
412
451
|
/**
|
|
413
452
|
* @default ''
|
|
414
453
|
*/
|
|
@@ -422,6 +461,40 @@ export namespace Components {
|
|
|
422
461
|
*/
|
|
423
462
|
"value": unknown;
|
|
424
463
|
}
|
|
464
|
+
/**
|
|
465
|
+
* Archetype-driven single-invoice view. Given a `commons.invoice` binding and a data
|
|
466
|
+
* record, renders a clear, recognisable invoice summary — number, status, dates,
|
|
467
|
+
* customer/supplier, totals and attachments — instead of a generic field form.
|
|
468
|
+
* The line items (`lines` slot, the `commons.invoiceLine` sub-archetype) are NOT
|
|
469
|
+
* rendered here: this component only reserves a `slot="lines"` at the right spot in
|
|
470
|
+
* the layout. The host (`mrd-layout-section`) still owns all the actual RELATED_VIEW
|
|
471
|
+
* table data-loading/event wiring — via its existing `renderRelatedView()` — and
|
|
472
|
+
* projects the resulting `<mrd-table>` into that slot, so line editing keeps using
|
|
473
|
+
* the same generic create/edit-navigation mechanism every other relation already has.
|
|
474
|
+
* Like `mrd-document-view`, this component never resolves file hrefs itself — it only
|
|
475
|
+
* exposes the attachment references via `mrdAttachments` (now possibly more than one)
|
|
476
|
+
* and a plain download button; the host decides how/whether to render them.
|
|
477
|
+
*/
|
|
478
|
+
interface MrdInvoiceView {
|
|
479
|
+
/**
|
|
480
|
+
* Resolved `commons.invoice` binding: slot name → concrete field/relation name.
|
|
481
|
+
*/
|
|
482
|
+
"archetype": ClientArchetype;
|
|
483
|
+
/**
|
|
484
|
+
* The data record from the /data endpoint. Fields keyed by name; relations under `_links`.
|
|
485
|
+
* @default {}
|
|
486
|
+
*/
|
|
487
|
+
"data": Record<string, unknown>;
|
|
488
|
+
/**
|
|
489
|
+
* @default navigator.language
|
|
490
|
+
*/
|
|
491
|
+
"locale": string;
|
|
492
|
+
/**
|
|
493
|
+
* listItems of the FIELD bound to the `status` slot, resolved by mrd-layout-section from its own items array (archetype metadata does not publish listItems), so the status badge can get a real label/color instead of the raw stored key.
|
|
494
|
+
* @default null
|
|
495
|
+
*/
|
|
496
|
+
"statusListItems": ClientListValue[] | null;
|
|
497
|
+
}
|
|
425
498
|
interface MrdLayoutSection {
|
|
426
499
|
/**
|
|
427
500
|
* Top-level archetypes on the object dashboard. When it contains commons.document, the record is rendered as a single-document view instead of generic fields.
|
|
@@ -498,7 +571,7 @@ export namespace Components {
|
|
|
498
571
|
* List items from the API. Each item has a `key` (stored value) and `label`.
|
|
499
572
|
* @default []
|
|
500
573
|
*/
|
|
501
|
-
"listItems":
|
|
574
|
+
"listItems": ClientListValue1[];
|
|
502
575
|
/**
|
|
503
576
|
* @default navigator.language
|
|
504
577
|
*/
|
|
@@ -550,6 +623,57 @@ export namespace Components {
|
|
|
550
623
|
*/
|
|
551
624
|
"value": string;
|
|
552
625
|
}
|
|
626
|
+
/**
|
|
627
|
+
* Merges two DataObjects of the same basic type (FINDING-0114 / TASK-0177).
|
|
628
|
+
* Never performs network I/O itself: it emits `mrdSearch` (host searches and
|
|
629
|
+
* calls `setSearchResults()`, mirroring mrd-relation-field) and `mrdMerge`
|
|
630
|
+
* (host calls the merge endpoint — `POST {winnerHref}/merge` with
|
|
631
|
+
* `{ loser: loserHref, patch }`, per DataController.merge()).
|
|
632
|
+
* Has no exit/cancel affordance of its own — hosts show this inside their
|
|
633
|
+
* own overlay-page chrome (its close button), the same way mrd-layout-section
|
|
634
|
+
* never renders a page-level close button either.
|
|
635
|
+
*/
|
|
636
|
+
interface MrdMergeView {
|
|
637
|
+
/**
|
|
638
|
+
* Dot-notation class, passed through on mrdSearch (host may use it to pick the right search endpoint).
|
|
639
|
+
* @default ''
|
|
640
|
+
*/
|
|
641
|
+
"basicType": string;
|
|
642
|
+
/**
|
|
643
|
+
* Href of A (winner) — the object the merge screen was opened from.
|
|
644
|
+
* @default ''
|
|
645
|
+
*/
|
|
646
|
+
"currentHref": string;
|
|
647
|
+
/**
|
|
648
|
+
* Display name for A, shown in the compare step's column header.
|
|
649
|
+
* @default ''
|
|
650
|
+
*/
|
|
651
|
+
"currentLabel": string;
|
|
652
|
+
/**
|
|
653
|
+
* A's full raw record: flat fields + `_links`, the same row shape CellRenderer.render expects.
|
|
654
|
+
* @default {}
|
|
655
|
+
*/
|
|
656
|
+
"currentRecord": Record<string, any>;
|
|
657
|
+
/**
|
|
658
|
+
* Flat FIELD/RELATION items describing the basic type's schema (host flattens SECTION/GROUP, same as mrd-table's `columns`).
|
|
659
|
+
* @default []
|
|
660
|
+
*/
|
|
661
|
+
"fields": ClientLayoutItem[];
|
|
662
|
+
/**
|
|
663
|
+
* @default navigator.language
|
|
664
|
+
*/
|
|
665
|
+
"locale": string;
|
|
666
|
+
/**
|
|
667
|
+
* URL segment for the search endpoint; falls back to basicType when absent.
|
|
668
|
+
* @default ''
|
|
669
|
+
*/
|
|
670
|
+
"mostSignificantClass": string;
|
|
671
|
+
"setLoading": (loading: boolean) => Promise<void>;
|
|
672
|
+
/**
|
|
673
|
+
* Stores search results, filtering out A itself regardless of what the host's search returns — A must never appear as a mergeable candidate.
|
|
674
|
+
*/
|
|
675
|
+
"setSearchResults": (records: Record<string, any>[]) => Promise<void>;
|
|
676
|
+
}
|
|
553
677
|
interface MrdNumberField {
|
|
554
678
|
/**
|
|
555
679
|
* @default ClientLayoutItemFieldDataType.INTEGER
|
|
@@ -601,7 +725,7 @@ export namespace Components {
|
|
|
601
725
|
/**
|
|
602
726
|
* @default []
|
|
603
727
|
*/
|
|
604
|
-
"dropdownValues":
|
|
728
|
+
"dropdownValues": ClientListValue1[];
|
|
605
729
|
"editBehavior"?: ClientLayoutItemRelationEditBehavior | null;
|
|
606
730
|
/**
|
|
607
731
|
* @default ''
|
|
@@ -848,6 +972,10 @@ export interface MrdEmailFieldCustomEvent<T> extends CustomEvent<T> {
|
|
|
848
972
|
detail: T;
|
|
849
973
|
target: HTMLMrdEmailFieldElement;
|
|
850
974
|
}
|
|
975
|
+
export interface MrdEmailViewCustomEvent<T> extends CustomEvent<T> {
|
|
976
|
+
detail: T;
|
|
977
|
+
target: HTMLMrdEmailViewElement;
|
|
978
|
+
}
|
|
851
979
|
export interface MrdFieldCustomEvent<T> extends CustomEvent<T> {
|
|
852
980
|
detail: T;
|
|
853
981
|
target: HTMLMrdFieldElement;
|
|
@@ -868,6 +996,10 @@ export interface MrdImageFieldCustomEvent<T> extends CustomEvent<T> {
|
|
|
868
996
|
detail: T;
|
|
869
997
|
target: HTMLMrdImageFieldElement;
|
|
870
998
|
}
|
|
999
|
+
export interface MrdInvoiceViewCustomEvent<T> extends CustomEvent<T> {
|
|
1000
|
+
detail: T;
|
|
1001
|
+
target: HTMLMrdInvoiceViewElement;
|
|
1002
|
+
}
|
|
871
1003
|
export interface MrdLayoutSectionCustomEvent<T> extends CustomEvent<T> {
|
|
872
1004
|
detail: T;
|
|
873
1005
|
target: HTMLMrdLayoutSectionElement;
|
|
@@ -880,6 +1012,10 @@ export interface MrdLongtextFieldCustomEvent<T> extends CustomEvent<T> {
|
|
|
880
1012
|
detail: T;
|
|
881
1013
|
target: HTMLMrdLongtextFieldElement;
|
|
882
1014
|
}
|
|
1015
|
+
export interface MrdMergeViewCustomEvent<T> extends CustomEvent<T> {
|
|
1016
|
+
detail: T;
|
|
1017
|
+
target: HTMLMrdMergeViewElement;
|
|
1018
|
+
}
|
|
883
1019
|
export interface MrdNumberFieldCustomEvent<T> extends CustomEvent<T> {
|
|
884
1020
|
detail: T;
|
|
885
1021
|
target: HTMLMrdNumberFieldElement;
|
|
@@ -1106,6 +1242,36 @@ declare global {
|
|
|
1106
1242
|
prototype: HTMLMrdEmailFieldElement;
|
|
1107
1243
|
new (): HTMLMrdEmailFieldElement;
|
|
1108
1244
|
};
|
|
1245
|
+
interface HTMLMrdEmailViewElementEventMap {
|
|
1246
|
+
"mrdNavigate": { href?: string; label: string };
|
|
1247
|
+
"mrdDownload": { href: string; fileName: string };
|
|
1248
|
+
"mrdAttachments": { attachments: DocumentAttachment[] };
|
|
1249
|
+
}
|
|
1250
|
+
/**
|
|
1251
|
+
* Archetype-driven single-email view. Given a `commons.email` binding and a data
|
|
1252
|
+
* record, renders the message the way an Outlook printout would — subject, a
|
|
1253
|
+
* compact From/To/CC/Date header block, the body and attachments — instead of a
|
|
1254
|
+
* generic field form. Fully read-only: emails arrive through other channels (mail
|
|
1255
|
+
* ingestion gateways), never edited here.
|
|
1256
|
+
* Like `mrd-document-view`/`mrd-invoice-view`, this component never resolves file
|
|
1257
|
+
* hrefs itself — it only exposes attachment references via `mrdAttachments` (an
|
|
1258
|
+
* email can have several) and plain download buttons; the host decides how/whether
|
|
1259
|
+
* to render them.
|
|
1260
|
+
*/
|
|
1261
|
+
interface HTMLMrdEmailViewElement extends Components.MrdEmailView, HTMLStencilElement {
|
|
1262
|
+
addEventListener<K extends keyof HTMLMrdEmailViewElementEventMap>(type: K, listener: (this: HTMLMrdEmailViewElement, ev: MrdEmailViewCustomEvent<HTMLMrdEmailViewElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
1263
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
1264
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
1265
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
1266
|
+
removeEventListener<K extends keyof HTMLMrdEmailViewElementEventMap>(type: K, listener: (this: HTMLMrdEmailViewElement, ev: MrdEmailViewCustomEvent<HTMLMrdEmailViewElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
1267
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
1268
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
1269
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
1270
|
+
}
|
|
1271
|
+
var HTMLMrdEmailViewElement: {
|
|
1272
|
+
prototype: HTMLMrdEmailViewElement;
|
|
1273
|
+
new (): HTMLMrdEmailViewElement;
|
|
1274
|
+
};
|
|
1109
1275
|
interface HTMLMrdFieldElementEventMap {
|
|
1110
1276
|
"mrdChange": { name: string; value: unknown };
|
|
1111
1277
|
"mrdBlur": { name: string; value: unknown };
|
|
@@ -1128,8 +1294,8 @@ declare global {
|
|
|
1128
1294
|
new (): HTMLMrdFieldElement;
|
|
1129
1295
|
};
|
|
1130
1296
|
interface HTMLMrdFileFieldElementEventMap {
|
|
1131
|
-
"mrdChange": { name: string; value:
|
|
1132
|
-
"mrdBlur": { name: string; value:
|
|
1297
|
+
"mrdChange": { name: string; value: FileEntry | FileEntry[] | null };
|
|
1298
|
+
"mrdBlur": { name: string; value: FileEntry | FileEntry[] | null };
|
|
1133
1299
|
"mrdUpload": { name: string; file: File };
|
|
1134
1300
|
}
|
|
1135
1301
|
interface HTMLMrdFileFieldElement extends Components.MrdFileField, HTMLStencilElement {
|
|
@@ -1186,8 +1352,8 @@ declare global {
|
|
|
1186
1352
|
new (): HTMLMrdHyperlinkFieldElement;
|
|
1187
1353
|
};
|
|
1188
1354
|
interface HTMLMrdImageFieldElementEventMap {
|
|
1189
|
-
"mrdChange": { name: string; value:
|
|
1190
|
-
"mrdBlur": { name: string; value:
|
|
1355
|
+
"mrdChange": { name: string; value: FileEntry | FileEntry[] | null };
|
|
1356
|
+
"mrdBlur": { name: string; value: FileEntry | FileEntry[] | null };
|
|
1191
1357
|
"mrdUpload": { name: string; file: File };
|
|
1192
1358
|
}
|
|
1193
1359
|
interface HTMLMrdImageFieldElement extends Components.MrdImageField, HTMLStencilElement {
|
|
@@ -1204,6 +1370,39 @@ declare global {
|
|
|
1204
1370
|
prototype: HTMLMrdImageFieldElement;
|
|
1205
1371
|
new (): HTMLMrdImageFieldElement;
|
|
1206
1372
|
};
|
|
1373
|
+
interface HTMLMrdInvoiceViewElementEventMap {
|
|
1374
|
+
"mrdNavigate": { href?: string; label: string };
|
|
1375
|
+
"mrdDownload": { href: string; fileName: string };
|
|
1376
|
+
"mrdAttachments": { attachments: DocumentAttachment[] };
|
|
1377
|
+
}
|
|
1378
|
+
/**
|
|
1379
|
+
* Archetype-driven single-invoice view. Given a `commons.invoice` binding and a data
|
|
1380
|
+
* record, renders a clear, recognisable invoice summary — number, status, dates,
|
|
1381
|
+
* customer/supplier, totals and attachments — instead of a generic field form.
|
|
1382
|
+
* The line items (`lines` slot, the `commons.invoiceLine` sub-archetype) are NOT
|
|
1383
|
+
* rendered here: this component only reserves a `slot="lines"` at the right spot in
|
|
1384
|
+
* the layout. The host (`mrd-layout-section`) still owns all the actual RELATED_VIEW
|
|
1385
|
+
* table data-loading/event wiring — via its existing `renderRelatedView()` — and
|
|
1386
|
+
* projects the resulting `<mrd-table>` into that slot, so line editing keeps using
|
|
1387
|
+
* the same generic create/edit-navigation mechanism every other relation already has.
|
|
1388
|
+
* Like `mrd-document-view`, this component never resolves file hrefs itself — it only
|
|
1389
|
+
* exposes the attachment references via `mrdAttachments` (now possibly more than one)
|
|
1390
|
+
* and a plain download button; the host decides how/whether to render them.
|
|
1391
|
+
*/
|
|
1392
|
+
interface HTMLMrdInvoiceViewElement extends Components.MrdInvoiceView, HTMLStencilElement {
|
|
1393
|
+
addEventListener<K extends keyof HTMLMrdInvoiceViewElementEventMap>(type: K, listener: (this: HTMLMrdInvoiceViewElement, ev: MrdInvoiceViewCustomEvent<HTMLMrdInvoiceViewElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
1394
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
1395
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
1396
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
1397
|
+
removeEventListener<K extends keyof HTMLMrdInvoiceViewElementEventMap>(type: K, listener: (this: HTMLMrdInvoiceViewElement, ev: MrdInvoiceViewCustomEvent<HTMLMrdInvoiceViewElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
1398
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
1399
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
1400
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
1401
|
+
}
|
|
1402
|
+
var HTMLMrdInvoiceViewElement: {
|
|
1403
|
+
prototype: HTMLMrdInvoiceViewElement;
|
|
1404
|
+
new (): HTMLMrdInvoiceViewElement;
|
|
1405
|
+
};
|
|
1207
1406
|
interface HTMLMrdLayoutSectionElementEventMap {
|
|
1208
1407
|
"mrdNavigate": { href?: string; label: string; navigate?: ClientLayoutItemNavigate; navigateBehaviour?: ClientLayoutNavigateBehaviour; listContext?: ListNavigationContext; attachments?: DocumentAttachment[] };
|
|
1209
1408
|
"mrdSearch": { query: string; dataClass: string };
|
|
@@ -1268,6 +1467,34 @@ declare global {
|
|
|
1268
1467
|
prototype: HTMLMrdLongtextFieldElement;
|
|
1269
1468
|
new (): HTMLMrdLongtextFieldElement;
|
|
1270
1469
|
};
|
|
1470
|
+
interface HTMLMrdMergeViewElementEventMap {
|
|
1471
|
+
"mrdSearch": { query: string; basicType: string; mostSignificantClass?: string };
|
|
1472
|
+
"mrdMerge": { winnerHref: string; loserHref: string; patch: Record<string, unknown> };
|
|
1473
|
+
}
|
|
1474
|
+
/**
|
|
1475
|
+
* Merges two DataObjects of the same basic type (FINDING-0114 / TASK-0177).
|
|
1476
|
+
* Never performs network I/O itself: it emits `mrdSearch` (host searches and
|
|
1477
|
+
* calls `setSearchResults()`, mirroring mrd-relation-field) and `mrdMerge`
|
|
1478
|
+
* (host calls the merge endpoint — `POST {winnerHref}/merge` with
|
|
1479
|
+
* `{ loser: loserHref, patch }`, per DataController.merge()).
|
|
1480
|
+
* Has no exit/cancel affordance of its own — hosts show this inside their
|
|
1481
|
+
* own overlay-page chrome (its close button), the same way mrd-layout-section
|
|
1482
|
+
* never renders a page-level close button either.
|
|
1483
|
+
*/
|
|
1484
|
+
interface HTMLMrdMergeViewElement extends Components.MrdMergeView, HTMLStencilElement {
|
|
1485
|
+
addEventListener<K extends keyof HTMLMrdMergeViewElementEventMap>(type: K, listener: (this: HTMLMrdMergeViewElement, ev: MrdMergeViewCustomEvent<HTMLMrdMergeViewElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
1486
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
1487
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
1488
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
1489
|
+
removeEventListener<K extends keyof HTMLMrdMergeViewElementEventMap>(type: K, listener: (this: HTMLMrdMergeViewElement, ev: MrdMergeViewCustomEvent<HTMLMrdMergeViewElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
1490
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
1491
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
1492
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
1493
|
+
}
|
|
1494
|
+
var HTMLMrdMergeViewElement: {
|
|
1495
|
+
prototype: HTMLMrdMergeViewElement;
|
|
1496
|
+
new (): HTMLMrdMergeViewElement;
|
|
1497
|
+
};
|
|
1271
1498
|
interface HTMLMrdNumberFieldElementEventMap {
|
|
1272
1499
|
"mrdChange": { name: string; value: number | null };
|
|
1273
1500
|
"mrdBlur": { name: string; value: number | null };
|
|
@@ -1409,14 +1636,17 @@ declare global {
|
|
|
1409
1636
|
"mrd-document-list": HTMLMrdDocumentListElement;
|
|
1410
1637
|
"mrd-document-view": HTMLMrdDocumentViewElement;
|
|
1411
1638
|
"mrd-email-field": HTMLMrdEmailFieldElement;
|
|
1639
|
+
"mrd-email-view": HTMLMrdEmailViewElement;
|
|
1412
1640
|
"mrd-field": HTMLMrdFieldElement;
|
|
1413
1641
|
"mrd-file-field": HTMLMrdFileFieldElement;
|
|
1414
1642
|
"mrd-form": HTMLMrdFormElement;
|
|
1415
1643
|
"mrd-hyperlink-field": HTMLMrdHyperlinkFieldElement;
|
|
1416
1644
|
"mrd-image-field": HTMLMrdImageFieldElement;
|
|
1645
|
+
"mrd-invoice-view": HTMLMrdInvoiceViewElement;
|
|
1417
1646
|
"mrd-layout-section": HTMLMrdLayoutSectionElement;
|
|
1418
1647
|
"mrd-list-field": HTMLMrdListFieldElement;
|
|
1419
1648
|
"mrd-longtext-field": HTMLMrdLongtextFieldElement;
|
|
1649
|
+
"mrd-merge-view": HTMLMrdMergeViewElement;
|
|
1420
1650
|
"mrd-number-field": HTMLMrdNumberFieldElement;
|
|
1421
1651
|
"mrd-relation-field": HTMLMrdRelationFieldElement;
|
|
1422
1652
|
"mrd-secret-field": HTMLMrdSecretFieldElement;
|
|
@@ -1759,6 +1989,44 @@ declare namespace LocalJSX {
|
|
|
1759
1989
|
*/
|
|
1760
1990
|
"value"?: string;
|
|
1761
1991
|
}
|
|
1992
|
+
/**
|
|
1993
|
+
* Archetype-driven single-email view. Given a `commons.email` binding and a data
|
|
1994
|
+
* record, renders the message the way an Outlook printout would — subject, a
|
|
1995
|
+
* compact From/To/CC/Date header block, the body and attachments — instead of a
|
|
1996
|
+
* generic field form. Fully read-only: emails arrive through other channels (mail
|
|
1997
|
+
* ingestion gateways), never edited here.
|
|
1998
|
+
* Like `mrd-document-view`/`mrd-invoice-view`, this component never resolves file
|
|
1999
|
+
* hrefs itself — it only exposes attachment references via `mrdAttachments` (an
|
|
2000
|
+
* email can have several) and plain download buttons; the host decides how/whether
|
|
2001
|
+
* to render them.
|
|
2002
|
+
*/
|
|
2003
|
+
interface MrdEmailView {
|
|
2004
|
+
/**
|
|
2005
|
+
* Resolved `commons.email` binding: slot name → concrete field/relation name.
|
|
2006
|
+
*/
|
|
2007
|
+
"archetype": ClientArchetype;
|
|
2008
|
+
/**
|
|
2009
|
+
* The data record from the /data endpoint. Fields keyed by name; relations under `_links`.
|
|
2010
|
+
* @default {}
|
|
2011
|
+
*/
|
|
2012
|
+
"data"?: Record<string, unknown>;
|
|
2013
|
+
/**
|
|
2014
|
+
* @default navigator.language
|
|
2015
|
+
*/
|
|
2016
|
+
"locale"?: string;
|
|
2017
|
+
/**
|
|
2018
|
+
* The file(s) belonging to this email, fired once on load and again whenever the attachments slot's value changes. The host resolves the href(s) itself.
|
|
2019
|
+
*/
|
|
2020
|
+
"onMrdAttachments"?: (event: MrdEmailViewCustomEvent<{ attachments: DocumentAttachment[] }>) => void;
|
|
2021
|
+
/**
|
|
2022
|
+
* Download an attachment. Host resolves the href to a signed URL.
|
|
2023
|
+
*/
|
|
2024
|
+
"onMrdDownload"?: (event: MrdEmailViewCustomEvent<{ href: string; fileName: string }>) => void;
|
|
2025
|
+
/**
|
|
2026
|
+
* Navigate to a sender/recipient or the container. Host resolves the href and routes.
|
|
2027
|
+
*/
|
|
2028
|
+
"onMrdNavigate"?: (event: MrdEmailViewCustomEvent<{ href?: string; label: string }>) => void;
|
|
2029
|
+
}
|
|
1762
2030
|
interface MrdField {
|
|
1763
2031
|
"item": ClientLayoutItem1;
|
|
1764
2032
|
/**
|
|
@@ -1793,14 +2061,18 @@ declare namespace LocalJSX {
|
|
|
1793
2061
|
* @default 0
|
|
1794
2062
|
*/
|
|
1795
2063
|
"maxSize"?: number;
|
|
2064
|
+
/**
|
|
2065
|
+
* @default false
|
|
2066
|
+
*/
|
|
2067
|
+
"multiple"?: boolean;
|
|
1796
2068
|
/**
|
|
1797
2069
|
* @default ''
|
|
1798
2070
|
*/
|
|
1799
2071
|
"name"?: string;
|
|
1800
|
-
"onMrdBlur"?: (event: MrdFileFieldCustomEvent<{ name: string; value:
|
|
1801
|
-
"onMrdChange"?: (event: MrdFileFieldCustomEvent<{ name: string; value:
|
|
2072
|
+
"onMrdBlur"?: (event: MrdFileFieldCustomEvent<{ name: string; value: FileEntry | FileEntry[] | null }>) => void;
|
|
2073
|
+
"onMrdChange"?: (event: MrdFileFieldCustomEvent<{ name: string; value: FileEntry | FileEntry[] | null }>) => void;
|
|
1802
2074
|
/**
|
|
1803
|
-
* Emitted
|
|
2075
|
+
* Emitted once per selected/dropped file that needs to be uploaded. Host should upload the file and call form.setFieldValue(name, { href, fileName: file.name }, file) with the result — passing `file` back lets mrd-form resolve the right entry in a `multiple` field.
|
|
1804
2076
|
*/
|
|
1805
2077
|
"onMrdUpload"?: (event: MrdFileFieldCustomEvent<{ name: string; file: File }>) => void;
|
|
1806
2078
|
/**
|
|
@@ -1901,14 +2173,18 @@ declare namespace LocalJSX {
|
|
|
1901
2173
|
* @default 0
|
|
1902
2174
|
*/
|
|
1903
2175
|
"maxSize"?: number;
|
|
2176
|
+
/**
|
|
2177
|
+
* @default false
|
|
2178
|
+
*/
|
|
2179
|
+
"multiple"?: boolean;
|
|
1904
2180
|
/**
|
|
1905
2181
|
* @default ''
|
|
1906
2182
|
*/
|
|
1907
2183
|
"name"?: string;
|
|
1908
|
-
"onMrdBlur"?: (event: MrdImageFieldCustomEvent<{ name: string; value:
|
|
1909
|
-
"onMrdChange"?: (event: MrdImageFieldCustomEvent<{ name: string; value:
|
|
2184
|
+
"onMrdBlur"?: (event: MrdImageFieldCustomEvent<{ name: string; value: FileEntry | FileEntry[] | null }>) => void;
|
|
2185
|
+
"onMrdChange"?: (event: MrdImageFieldCustomEvent<{ name: string; value: FileEntry | FileEntry[] | null }>) => void;
|
|
1910
2186
|
/**
|
|
1911
|
-
* Emitted
|
|
2187
|
+
* Emitted once per selected/dropped image that needs to be uploaded. Host should upload the file and call form.setFieldValue(name, { href, fileName: file.name }, file) with the result — passing `file` back lets mrd-form resolve the right entry in a `multiple` field.
|
|
1912
2188
|
*/
|
|
1913
2189
|
"onMrdUpload"?: (event: MrdImageFieldCustomEvent<{ name: string; file: File }>) => void;
|
|
1914
2190
|
/**
|
|
@@ -1920,6 +2196,52 @@ declare namespace LocalJSX {
|
|
|
1920
2196
|
*/
|
|
1921
2197
|
"value"?: unknown;
|
|
1922
2198
|
}
|
|
2199
|
+
/**
|
|
2200
|
+
* Archetype-driven single-invoice view. Given a `commons.invoice` binding and a data
|
|
2201
|
+
* record, renders a clear, recognisable invoice summary — number, status, dates,
|
|
2202
|
+
* customer/supplier, totals and attachments — instead of a generic field form.
|
|
2203
|
+
* The line items (`lines` slot, the `commons.invoiceLine` sub-archetype) are NOT
|
|
2204
|
+
* rendered here: this component only reserves a `slot="lines"` at the right spot in
|
|
2205
|
+
* the layout. The host (`mrd-layout-section`) still owns all the actual RELATED_VIEW
|
|
2206
|
+
* table data-loading/event wiring — via its existing `renderRelatedView()` — and
|
|
2207
|
+
* projects the resulting `<mrd-table>` into that slot, so line editing keeps using
|
|
2208
|
+
* the same generic create/edit-navigation mechanism every other relation already has.
|
|
2209
|
+
* Like `mrd-document-view`, this component never resolves file hrefs itself — it only
|
|
2210
|
+
* exposes the attachment references via `mrdAttachments` (now possibly more than one)
|
|
2211
|
+
* and a plain download button; the host decides how/whether to render them.
|
|
2212
|
+
*/
|
|
2213
|
+
interface MrdInvoiceView {
|
|
2214
|
+
/**
|
|
2215
|
+
* Resolved `commons.invoice` binding: slot name → concrete field/relation name.
|
|
2216
|
+
*/
|
|
2217
|
+
"archetype": ClientArchetype;
|
|
2218
|
+
/**
|
|
2219
|
+
* The data record from the /data endpoint. Fields keyed by name; relations under `_links`.
|
|
2220
|
+
* @default {}
|
|
2221
|
+
*/
|
|
2222
|
+
"data"?: Record<string, unknown>;
|
|
2223
|
+
/**
|
|
2224
|
+
* @default navigator.language
|
|
2225
|
+
*/
|
|
2226
|
+
"locale"?: string;
|
|
2227
|
+
/**
|
|
2228
|
+
* The file(s) belonging to this invoice, fired once on load and again whenever the attachments slot's value changes. The host resolves the href(s) itself.
|
|
2229
|
+
*/
|
|
2230
|
+
"onMrdAttachments"?: (event: MrdInvoiceViewCustomEvent<{ attachments: DocumentAttachment[] }>) => void;
|
|
2231
|
+
/**
|
|
2232
|
+
* Download an attachment. Host resolves the href to a signed URL.
|
|
2233
|
+
*/
|
|
2234
|
+
"onMrdDownload"?: (event: MrdInvoiceViewCustomEvent<{ href: string; fileName: string }>) => void;
|
|
2235
|
+
/**
|
|
2236
|
+
* Navigate to the customer/supplier/container. Host resolves the href and routes.
|
|
2237
|
+
*/
|
|
2238
|
+
"onMrdNavigate"?: (event: MrdInvoiceViewCustomEvent<{ href?: string; label: string }>) => void;
|
|
2239
|
+
/**
|
|
2240
|
+
* listItems of the FIELD bound to the `status` slot, resolved by mrd-layout-section from its own items array (archetype metadata does not publish listItems), so the status badge can get a real label/color instead of the raw stored key.
|
|
2241
|
+
* @default null
|
|
2242
|
+
*/
|
|
2243
|
+
"statusListItems"?: ClientListValue[] | null;
|
|
2244
|
+
}
|
|
1923
2245
|
interface MrdLayoutSection {
|
|
1924
2246
|
/**
|
|
1925
2247
|
* Top-level archetypes on the object dashboard. When it contains commons.document, the record is rendered as a single-document view instead of generic fields.
|
|
@@ -2006,7 +2328,7 @@ declare namespace LocalJSX {
|
|
|
2006
2328
|
* List items from the API. Each item has a `key` (stored value) and `label`.
|
|
2007
2329
|
* @default []
|
|
2008
2330
|
*/
|
|
2009
|
-
"listItems"?:
|
|
2331
|
+
"listItems"?: ClientListValue1[];
|
|
2010
2332
|
/**
|
|
2011
2333
|
* @default navigator.language
|
|
2012
2334
|
*/
|
|
@@ -2062,6 +2384,54 @@ declare namespace LocalJSX {
|
|
|
2062
2384
|
*/
|
|
2063
2385
|
"value"?: string;
|
|
2064
2386
|
}
|
|
2387
|
+
/**
|
|
2388
|
+
* Merges two DataObjects of the same basic type (FINDING-0114 / TASK-0177).
|
|
2389
|
+
* Never performs network I/O itself: it emits `mrdSearch` (host searches and
|
|
2390
|
+
* calls `setSearchResults()`, mirroring mrd-relation-field) and `mrdMerge`
|
|
2391
|
+
* (host calls the merge endpoint — `POST {winnerHref}/merge` with
|
|
2392
|
+
* `{ loser: loserHref, patch }`, per DataController.merge()).
|
|
2393
|
+
* Has no exit/cancel affordance of its own — hosts show this inside their
|
|
2394
|
+
* own overlay-page chrome (its close button), the same way mrd-layout-section
|
|
2395
|
+
* never renders a page-level close button either.
|
|
2396
|
+
*/
|
|
2397
|
+
interface MrdMergeView {
|
|
2398
|
+
/**
|
|
2399
|
+
* Dot-notation class, passed through on mrdSearch (host may use it to pick the right search endpoint).
|
|
2400
|
+
* @default ''
|
|
2401
|
+
*/
|
|
2402
|
+
"basicType"?: string;
|
|
2403
|
+
/**
|
|
2404
|
+
* Href of A (winner) — the object the merge screen was opened from.
|
|
2405
|
+
* @default ''
|
|
2406
|
+
*/
|
|
2407
|
+
"currentHref"?: string;
|
|
2408
|
+
/**
|
|
2409
|
+
* Display name for A, shown in the compare step's column header.
|
|
2410
|
+
* @default ''
|
|
2411
|
+
*/
|
|
2412
|
+
"currentLabel"?: string;
|
|
2413
|
+
/**
|
|
2414
|
+
* A's full raw record: flat fields + `_links`, the same row shape CellRenderer.render expects.
|
|
2415
|
+
* @default {}
|
|
2416
|
+
*/
|
|
2417
|
+
"currentRecord"?: Record<string, any>;
|
|
2418
|
+
/**
|
|
2419
|
+
* Flat FIELD/RELATION items describing the basic type's schema (host flattens SECTION/GROUP, same as mrd-table's `columns`).
|
|
2420
|
+
* @default []
|
|
2421
|
+
*/
|
|
2422
|
+
"fields"?: ClientLayoutItem[];
|
|
2423
|
+
/**
|
|
2424
|
+
* @default navigator.language
|
|
2425
|
+
*/
|
|
2426
|
+
"locale"?: string;
|
|
2427
|
+
/**
|
|
2428
|
+
* URL segment for the search endpoint; falls back to basicType when absent.
|
|
2429
|
+
* @default ''
|
|
2430
|
+
*/
|
|
2431
|
+
"mostSignificantClass"?: string;
|
|
2432
|
+
"onMrdMerge"?: (event: MrdMergeViewCustomEvent<{ winnerHref: string; loserHref: string; patch: Record<string, unknown> }>) => void;
|
|
2433
|
+
"onMrdSearch"?: (event: MrdMergeViewCustomEvent<{ query: string; basicType: string; mostSignificantClass?: string }>) => void;
|
|
2434
|
+
}
|
|
2065
2435
|
interface MrdNumberField {
|
|
2066
2436
|
/**
|
|
2067
2437
|
* @default ClientLayoutItemFieldDataType.INTEGER
|
|
@@ -2115,7 +2485,7 @@ declare namespace LocalJSX {
|
|
|
2115
2485
|
/**
|
|
2116
2486
|
* @default []
|
|
2117
2487
|
*/
|
|
2118
|
-
"dropdownValues"?:
|
|
2488
|
+
"dropdownValues"?: ClientListValue1[];
|
|
2119
2489
|
"editBehavior"?: ClientLayoutItemRelationEditBehavior | null;
|
|
2120
2490
|
/**
|
|
2121
2491
|
* @default ''
|
|
@@ -2406,6 +2776,9 @@ declare namespace LocalJSX {
|
|
|
2406
2776
|
"disabled": boolean;
|
|
2407
2777
|
"locale": string;
|
|
2408
2778
|
}
|
|
2779
|
+
interface MrdEmailViewAttributes {
|
|
2780
|
+
"locale": string;
|
|
2781
|
+
}
|
|
2409
2782
|
interface MrdFieldAttributes {
|
|
2410
2783
|
"locale": string;
|
|
2411
2784
|
}
|
|
@@ -2417,6 +2790,7 @@ declare namespace LocalJSX {
|
|
|
2417
2790
|
"locale": string;
|
|
2418
2791
|
"accept": string;
|
|
2419
2792
|
"maxSize": number;
|
|
2793
|
+
"multiple": boolean;
|
|
2420
2794
|
}
|
|
2421
2795
|
interface MrdFormAttributes {
|
|
2422
2796
|
"locale": string;
|
|
@@ -2441,6 +2815,10 @@ declare namespace LocalJSX {
|
|
|
2441
2815
|
"locale": string;
|
|
2442
2816
|
"accept": string;
|
|
2443
2817
|
"maxSize": number;
|
|
2818
|
+
"multiple": boolean;
|
|
2819
|
+
}
|
|
2820
|
+
interface MrdInvoiceViewAttributes {
|
|
2821
|
+
"locale": string;
|
|
2444
2822
|
}
|
|
2445
2823
|
interface MrdLayoutSectionAttributes {
|
|
2446
2824
|
"locale": string;
|
|
@@ -2463,6 +2841,13 @@ declare namespace LocalJSX {
|
|
|
2463
2841
|
"disabled": boolean;
|
|
2464
2842
|
"locale": string;
|
|
2465
2843
|
}
|
|
2844
|
+
interface MrdMergeViewAttributes {
|
|
2845
|
+
"locale": string;
|
|
2846
|
+
"basicType": string;
|
|
2847
|
+
"mostSignificantClass": string;
|
|
2848
|
+
"currentHref": string;
|
|
2849
|
+
"currentLabel": string;
|
|
2850
|
+
}
|
|
2466
2851
|
interface MrdNumberFieldAttributes {
|
|
2467
2852
|
"name": string;
|
|
2468
2853
|
"label": string;
|
|
@@ -2542,14 +2927,17 @@ declare namespace LocalJSX {
|
|
|
2542
2927
|
"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] };
|
|
2543
2928
|
"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] };
|
|
2544
2929
|
"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] };
|
|
2930
|
+
"mrd-email-view": Omit<MrdEmailView, keyof MrdEmailViewAttributes> & { [K in keyof MrdEmailView & keyof MrdEmailViewAttributes]?: MrdEmailView[K] } & { [K in keyof MrdEmailView & keyof MrdEmailViewAttributes as `attr:${K}`]?: MrdEmailViewAttributes[K] } & { [K in keyof MrdEmailView & keyof MrdEmailViewAttributes as `prop:${K}`]?: MrdEmailView[K] };
|
|
2545
2931
|
"mrd-field": Omit<MrdField, keyof MrdFieldAttributes> & { [K in keyof MrdField & keyof MrdFieldAttributes]?: MrdField[K] } & { [K in keyof MrdField & keyof MrdFieldAttributes as `attr:${K}`]?: MrdFieldAttributes[K] } & { [K in keyof MrdField & keyof MrdFieldAttributes as `prop:${K}`]?: MrdField[K] };
|
|
2546
2932
|
"mrd-file-field": Omit<MrdFileField, keyof MrdFileFieldAttributes> & { [K in keyof MrdFileField & keyof MrdFileFieldAttributes]?: MrdFileField[K] } & { [K in keyof MrdFileField & keyof MrdFileFieldAttributes as `attr:${K}`]?: MrdFileFieldAttributes[K] } & { [K in keyof MrdFileField & keyof MrdFileFieldAttributes as `prop:${K}`]?: MrdFileField[K] };
|
|
2547
2933
|
"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] };
|
|
2548
2934
|
"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] };
|
|
2549
2935
|
"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] };
|
|
2936
|
+
"mrd-invoice-view": Omit<MrdInvoiceView, keyof MrdInvoiceViewAttributes> & { [K in keyof MrdInvoiceView & keyof MrdInvoiceViewAttributes]?: MrdInvoiceView[K] } & { [K in keyof MrdInvoiceView & keyof MrdInvoiceViewAttributes as `attr:${K}`]?: MrdInvoiceViewAttributes[K] } & { [K in keyof MrdInvoiceView & keyof MrdInvoiceViewAttributes as `prop:${K}`]?: MrdInvoiceView[K] };
|
|
2550
2937
|
"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] };
|
|
2551
2938
|
"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] };
|
|
2552
2939
|
"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] };
|
|
2940
|
+
"mrd-merge-view": Omit<MrdMergeView, keyof MrdMergeViewAttributes> & { [K in keyof MrdMergeView & keyof MrdMergeViewAttributes]?: MrdMergeView[K] } & { [K in keyof MrdMergeView & keyof MrdMergeViewAttributes as `attr:${K}`]?: MrdMergeViewAttributes[K] } & { [K in keyof MrdMergeView & keyof MrdMergeViewAttributes as `prop:${K}`]?: MrdMergeView[K] };
|
|
2553
2941
|
"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] };
|
|
2554
2942
|
"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] };
|
|
2555
2943
|
"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] };
|
|
@@ -2612,14 +3000,52 @@ declare module "@stencil/core" {
|
|
|
2612
3000
|
*/
|
|
2613
3001
|
"mrd-document-view": LocalJSX.IntrinsicElements["mrd-document-view"] & JSXBase.HTMLAttributes<HTMLMrdDocumentViewElement>;
|
|
2614
3002
|
"mrd-email-field": LocalJSX.IntrinsicElements["mrd-email-field"] & JSXBase.HTMLAttributes<HTMLMrdEmailFieldElement>;
|
|
3003
|
+
/**
|
|
3004
|
+
* Archetype-driven single-email view. Given a `commons.email` binding and a data
|
|
3005
|
+
* record, renders the message the way an Outlook printout would — subject, a
|
|
3006
|
+
* compact From/To/CC/Date header block, the body and attachments — instead of a
|
|
3007
|
+
* generic field form. Fully read-only: emails arrive through other channels (mail
|
|
3008
|
+
* ingestion gateways), never edited here.
|
|
3009
|
+
* Like `mrd-document-view`/`mrd-invoice-view`, this component never resolves file
|
|
3010
|
+
* hrefs itself — it only exposes attachment references via `mrdAttachments` (an
|
|
3011
|
+
* email can have several) and plain download buttons; the host decides how/whether
|
|
3012
|
+
* to render them.
|
|
3013
|
+
*/
|
|
3014
|
+
"mrd-email-view": LocalJSX.IntrinsicElements["mrd-email-view"] & JSXBase.HTMLAttributes<HTMLMrdEmailViewElement>;
|
|
2615
3015
|
"mrd-field": LocalJSX.IntrinsicElements["mrd-field"] & JSXBase.HTMLAttributes<HTMLMrdFieldElement>;
|
|
2616
3016
|
"mrd-file-field": LocalJSX.IntrinsicElements["mrd-file-field"] & JSXBase.HTMLAttributes<HTMLMrdFileFieldElement>;
|
|
2617
3017
|
"mrd-form": LocalJSX.IntrinsicElements["mrd-form"] & JSXBase.HTMLAttributes<HTMLMrdFormElement>;
|
|
2618
3018
|
"mrd-hyperlink-field": LocalJSX.IntrinsicElements["mrd-hyperlink-field"] & JSXBase.HTMLAttributes<HTMLMrdHyperlinkFieldElement>;
|
|
2619
3019
|
"mrd-image-field": LocalJSX.IntrinsicElements["mrd-image-field"] & JSXBase.HTMLAttributes<HTMLMrdImageFieldElement>;
|
|
3020
|
+
/**
|
|
3021
|
+
* Archetype-driven single-invoice view. Given a `commons.invoice` binding and a data
|
|
3022
|
+
* record, renders a clear, recognisable invoice summary — number, status, dates,
|
|
3023
|
+
* customer/supplier, totals and attachments — instead of a generic field form.
|
|
3024
|
+
* The line items (`lines` slot, the `commons.invoiceLine` sub-archetype) are NOT
|
|
3025
|
+
* rendered here: this component only reserves a `slot="lines"` at the right spot in
|
|
3026
|
+
* the layout. The host (`mrd-layout-section`) still owns all the actual RELATED_VIEW
|
|
3027
|
+
* table data-loading/event wiring — via its existing `renderRelatedView()` — and
|
|
3028
|
+
* projects the resulting `<mrd-table>` into that slot, so line editing keeps using
|
|
3029
|
+
* the same generic create/edit-navigation mechanism every other relation already has.
|
|
3030
|
+
* Like `mrd-document-view`, this component never resolves file hrefs itself — it only
|
|
3031
|
+
* exposes the attachment references via `mrdAttachments` (now possibly more than one)
|
|
3032
|
+
* and a plain download button; the host decides how/whether to render them.
|
|
3033
|
+
*/
|
|
3034
|
+
"mrd-invoice-view": LocalJSX.IntrinsicElements["mrd-invoice-view"] & JSXBase.HTMLAttributes<HTMLMrdInvoiceViewElement>;
|
|
2620
3035
|
"mrd-layout-section": LocalJSX.IntrinsicElements["mrd-layout-section"] & JSXBase.HTMLAttributes<HTMLMrdLayoutSectionElement>;
|
|
2621
3036
|
"mrd-list-field": LocalJSX.IntrinsicElements["mrd-list-field"] & JSXBase.HTMLAttributes<HTMLMrdListFieldElement>;
|
|
2622
3037
|
"mrd-longtext-field": LocalJSX.IntrinsicElements["mrd-longtext-field"] & JSXBase.HTMLAttributes<HTMLMrdLongtextFieldElement>;
|
|
3038
|
+
/**
|
|
3039
|
+
* Merges two DataObjects of the same basic type (FINDING-0114 / TASK-0177).
|
|
3040
|
+
* Never performs network I/O itself: it emits `mrdSearch` (host searches and
|
|
3041
|
+
* calls `setSearchResults()`, mirroring mrd-relation-field) and `mrdMerge`
|
|
3042
|
+
* (host calls the merge endpoint — `POST {winnerHref}/merge` with
|
|
3043
|
+
* `{ loser: loserHref, patch }`, per DataController.merge()).
|
|
3044
|
+
* Has no exit/cancel affordance of its own — hosts show this inside their
|
|
3045
|
+
* own overlay-page chrome (its close button), the same way mrd-layout-section
|
|
3046
|
+
* never renders a page-level close button either.
|
|
3047
|
+
*/
|
|
3048
|
+
"mrd-merge-view": LocalJSX.IntrinsicElements["mrd-merge-view"] & JSXBase.HTMLAttributes<HTMLMrdMergeViewElement>;
|
|
2623
3049
|
"mrd-number-field": LocalJSX.IntrinsicElements["mrd-number-field"] & JSXBase.HTMLAttributes<HTMLMrdNumberFieldElement>;
|
|
2624
3050
|
"mrd-relation-field": LocalJSX.IntrinsicElements["mrd-relation-field"] & JSXBase.HTMLAttributes<HTMLMrdRelationFieldElement>;
|
|
2625
3051
|
"mrd-secret-field": LocalJSX.IntrinsicElements["mrd-secret-field"] & JSXBase.HTMLAttributes<HTMLMrdSecretFieldElement>;
|