@genesislcap/foundation-forms 14.473.1-alpha-d30d297.0 → 14.474.0
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/custom-elements.json +151 -56
- package/dist/dts/form.d.ts +17 -0
- package/dist/dts/form.d.ts.map +1 -1
- package/dist/dts/form.template.d.ts.map +1 -1
- package/dist/dts/jsonforms/json-forms.d.ts +21 -0
- package/dist/dts/jsonforms/json-forms.d.ts.map +1 -1
- package/dist/dts/jsonforms/renderers/ConnectedMultiselectControlRenderer.d.ts +0 -2
- package/dist/dts/jsonforms/renderers/ConnectedMultiselectControlRenderer.d.ts.map +1 -1
- package/dist/dts/utils/index.d.ts +1 -0
- package/dist/dts/utils/index.d.ts.map +1 -1
- package/dist/dts/utils/server-errors.d.ts +40 -0
- package/dist/dts/utils/server-errors.d.ts.map +1 -0
- package/dist/esm/form.js +31 -1
- package/dist/esm/form.template.js +1 -0
- package/dist/esm/jsonforms/json-forms.js +60 -19
- package/dist/esm/jsonforms/renderers/ConnectedMultiselectControlRenderer.js +11 -19
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/server-errors.js +98 -0
- package/dist/foundation-forms.api.json +114 -0
- package/dist/foundation-forms.d.ts +57 -0
- package/package.json +15 -15
|
@@ -1460,6 +1460,15 @@
|
|
|
1460
1460
|
"privacy": "private",
|
|
1461
1461
|
"default": "false"
|
|
1462
1462
|
},
|
|
1463
|
+
{
|
|
1464
|
+
"kind": "field",
|
|
1465
|
+
"name": "serverErrors",
|
|
1466
|
+
"type": {
|
|
1467
|
+
"text": "ErrorObject[]"
|
|
1468
|
+
},
|
|
1469
|
+
"privacy": "private",
|
|
1470
|
+
"default": "[]"
|
|
1471
|
+
},
|
|
1463
1472
|
{
|
|
1464
1473
|
"kind": "field",
|
|
1465
1474
|
"name": "submitted",
|
|
@@ -1595,6 +1604,19 @@
|
|
|
1595
1604
|
"kind": "method",
|
|
1596
1605
|
"name": "bulkInsertChanged"
|
|
1597
1606
|
},
|
|
1607
|
+
{
|
|
1608
|
+
"kind": "field",
|
|
1609
|
+
"name": "serverFieldErrors",
|
|
1610
|
+
"type": {
|
|
1611
|
+
"text": "ErrorObject[]"
|
|
1612
|
+
},
|
|
1613
|
+
"default": "[]",
|
|
1614
|
+
"description": "Server-side field validation errors from the parent foundation-form.\nSynced into internal state when the binding changes."
|
|
1615
|
+
},
|
|
1616
|
+
{
|
|
1617
|
+
"kind": "method",
|
|
1618
|
+
"name": "serverFieldErrorsChanged"
|
|
1619
|
+
},
|
|
1598
1620
|
{
|
|
1599
1621
|
"kind": "field",
|
|
1600
1622
|
"name": "props",
|
|
@@ -1607,6 +1629,75 @@
|
|
|
1607
1629
|
"kind": "field",
|
|
1608
1630
|
"name": "dispatch"
|
|
1609
1631
|
},
|
|
1632
|
+
{
|
|
1633
|
+
"kind": "method",
|
|
1634
|
+
"name": "setServerErrors",
|
|
1635
|
+
"parameters": [
|
|
1636
|
+
{
|
|
1637
|
+
"name": "errors",
|
|
1638
|
+
"type": {
|
|
1639
|
+
"text": "ErrorObject[]"
|
|
1640
|
+
}
|
|
1641
|
+
}
|
|
1642
|
+
],
|
|
1643
|
+
"description": "Applies server-side validation errors returned from an EVENT_NACK response.\nErrors are merged into `core.additionalErrors` and shown inline on fields.",
|
|
1644
|
+
"privacy": "public"
|
|
1645
|
+
},
|
|
1646
|
+
{
|
|
1647
|
+
"kind": "method",
|
|
1648
|
+
"name": "clearServerErrors",
|
|
1649
|
+
"description": "Clears all server-side validation errors from the form.",
|
|
1650
|
+
"privacy": "public"
|
|
1651
|
+
},
|
|
1652
|
+
{
|
|
1653
|
+
"kind": "method",
|
|
1654
|
+
"name": "buildAdditionalErrors",
|
|
1655
|
+
"privacy": "private",
|
|
1656
|
+
"return": {
|
|
1657
|
+
"type": {
|
|
1658
|
+
"text": "ErrorObject[]"
|
|
1659
|
+
}
|
|
1660
|
+
},
|
|
1661
|
+
"parameters": [
|
|
1662
|
+
{
|
|
1663
|
+
"name": "uischema",
|
|
1664
|
+
"type": {
|
|
1665
|
+
"text": "UISchemaElement"
|
|
1666
|
+
}
|
|
1667
|
+
},
|
|
1668
|
+
{
|
|
1669
|
+
"name": "data",
|
|
1670
|
+
"type": {
|
|
1671
|
+
"text": "any"
|
|
1672
|
+
}
|
|
1673
|
+
}
|
|
1674
|
+
]
|
|
1675
|
+
},
|
|
1676
|
+
{
|
|
1677
|
+
"kind": "method",
|
|
1678
|
+
"name": "applyAdditionalErrorsToCore",
|
|
1679
|
+
"privacy": "private",
|
|
1680
|
+
"parameters": [
|
|
1681
|
+
{
|
|
1682
|
+
"name": "nextCore",
|
|
1683
|
+
"type": {
|
|
1684
|
+
"text": "JsonFormsCore"
|
|
1685
|
+
}
|
|
1686
|
+
},
|
|
1687
|
+
{
|
|
1688
|
+
"name": "changedPath",
|
|
1689
|
+
"optional": true,
|
|
1690
|
+
"type": {
|
|
1691
|
+
"text": "string"
|
|
1692
|
+
}
|
|
1693
|
+
}
|
|
1694
|
+
]
|
|
1695
|
+
},
|
|
1696
|
+
{
|
|
1697
|
+
"kind": "method",
|
|
1698
|
+
"name": "refreshAdditionalErrors",
|
|
1699
|
+
"privacy": "private"
|
|
1700
|
+
},
|
|
1610
1701
|
{
|
|
1611
1702
|
"kind": "field",
|
|
1612
1703
|
"name": "validate",
|
|
@@ -1943,6 +2034,14 @@
|
|
|
1943
2034
|
"package": "./validation"
|
|
1944
2035
|
}
|
|
1945
2036
|
},
|
|
2037
|
+
{
|
|
2038
|
+
"kind": "js",
|
|
2039
|
+
"name": "*",
|
|
2040
|
+
"declaration": {
|
|
2041
|
+
"name": "*",
|
|
2042
|
+
"package": "./server-errors"
|
|
2043
|
+
}
|
|
2044
|
+
},
|
|
1946
2045
|
{
|
|
1947
2046
|
"kind": "js",
|
|
1948
2047
|
"name": "*",
|
|
@@ -1965,6 +2064,58 @@
|
|
|
1965
2064
|
"declarations": [],
|
|
1966
2065
|
"exports": []
|
|
1967
2066
|
},
|
|
2067
|
+
{
|
|
2068
|
+
"kind": "javascript-module",
|
|
2069
|
+
"path": "src/utils/server-errors.ts",
|
|
2070
|
+
"declarations": [
|
|
2071
|
+
{
|
|
2072
|
+
"kind": "function",
|
|
2073
|
+
"name": "mapGenesisFieldErrorsToAdditionalErrors",
|
|
2074
|
+
"return": {
|
|
2075
|
+
"type": {
|
|
2076
|
+
"text": "ErrorObject[]"
|
|
2077
|
+
}
|
|
2078
|
+
},
|
|
2079
|
+
"parameters": [
|
|
2080
|
+
{
|
|
2081
|
+
"name": "errors",
|
|
2082
|
+
"type": {
|
|
2083
|
+
"text": "GenesisFieldError[] | undefined"
|
|
2084
|
+
},
|
|
2085
|
+
"description": "Genesis ERROR array from an EVENT_NACK response"
|
|
2086
|
+
},
|
|
2087
|
+
{
|
|
2088
|
+
"name": "schema",
|
|
2089
|
+
"optional": true,
|
|
2090
|
+
"type": {
|
|
2091
|
+
"text": "JSONSchema7"
|
|
2092
|
+
},
|
|
2093
|
+
"description": "JSON schema used to resolve `parentSchema` for each field"
|
|
2094
|
+
},
|
|
2095
|
+
{
|
|
2096
|
+
"name": "instancePathPrefix",
|
|
2097
|
+
"optional": true,
|
|
2098
|
+
"type": {
|
|
2099
|
+
"text": "string"
|
|
2100
|
+
},
|
|
2101
|
+
"description": "Optional prefix for bulk-insert rows (e.g. `/items/0`)"
|
|
2102
|
+
}
|
|
2103
|
+
],
|
|
2104
|
+
"description": "Maps Genesis commitEvent NACK `ERROR[]` entries to JsonForms `ErrorObject[]`\nsuitable for `additionalErrors` on the form core.\n\nOnly entries with a `FIELD` or `PATH` are mapped; generic errors (no field\nassociation) are omitted so callers can still surface them via toast/dialog.",
|
|
2105
|
+
"privacy": "public"
|
|
2106
|
+
}
|
|
2107
|
+
],
|
|
2108
|
+
"exports": [
|
|
2109
|
+
{
|
|
2110
|
+
"kind": "js",
|
|
2111
|
+
"name": "mapGenesisFieldErrorsToAdditionalErrors",
|
|
2112
|
+
"declaration": {
|
|
2113
|
+
"name": "mapGenesisFieldErrorsToAdditionalErrors",
|
|
2114
|
+
"module": "src/utils/server-errors.ts"
|
|
2115
|
+
}
|
|
2116
|
+
}
|
|
2117
|
+
]
|
|
2118
|
+
},
|
|
1968
2119
|
{
|
|
1969
2120
|
"kind": "javascript-module",
|
|
1970
2121
|
"path": "src/utils/translation.ts",
|
|
@@ -2370,46 +2521,6 @@
|
|
|
2370
2521
|
"kind": "javascript-module",
|
|
2371
2522
|
"path": "src/jsonforms/renderers/ConnectedMultiselectControlRenderer.ts",
|
|
2372
2523
|
"declarations": [
|
|
2373
|
-
{
|
|
2374
|
-
"kind": "function",
|
|
2375
|
-
"name": "resolveSelectedOptions",
|
|
2376
|
-
"return": {
|
|
2377
|
-
"type": {
|
|
2378
|
-
"text": "any[]"
|
|
2379
|
-
}
|
|
2380
|
-
},
|
|
2381
|
-
"parameters": [
|
|
2382
|
-
{
|
|
2383
|
-
"name": "control",
|
|
2384
|
-
"type": {
|
|
2385
|
-
"text": "any"
|
|
2386
|
-
}
|
|
2387
|
-
}
|
|
2388
|
-
]
|
|
2389
|
-
},
|
|
2390
|
-
{
|
|
2391
|
-
"kind": "function",
|
|
2392
|
-
"name": "resolveSelectionValue",
|
|
2393
|
-
"return": {
|
|
2394
|
-
"type": {
|
|
2395
|
-
"text": "any"
|
|
2396
|
-
}
|
|
2397
|
-
},
|
|
2398
|
-
"parameters": [
|
|
2399
|
-
{
|
|
2400
|
-
"name": "control",
|
|
2401
|
-
"type": {
|
|
2402
|
-
"text": "any"
|
|
2403
|
-
}
|
|
2404
|
-
},
|
|
2405
|
-
{
|
|
2406
|
-
"name": "detail",
|
|
2407
|
-
"type": {
|
|
2408
|
-
"text": "any"
|
|
2409
|
-
}
|
|
2410
|
-
}
|
|
2411
|
-
]
|
|
2412
|
-
},
|
|
2413
2524
|
{
|
|
2414
2525
|
"kind": "function",
|
|
2415
2526
|
"name": "ConnectedMultiselectControlRendererTemplate",
|
|
@@ -2433,22 +2544,6 @@
|
|
|
2433
2544
|
}
|
|
2434
2545
|
],
|
|
2435
2546
|
"exports": [
|
|
2436
|
-
{
|
|
2437
|
-
"kind": "js",
|
|
2438
|
-
"name": "resolveSelectedOptions",
|
|
2439
|
-
"declaration": {
|
|
2440
|
-
"name": "resolveSelectedOptions",
|
|
2441
|
-
"module": "src/jsonforms/renderers/ConnectedMultiselectControlRenderer.ts"
|
|
2442
|
-
}
|
|
2443
|
-
},
|
|
2444
|
-
{
|
|
2445
|
-
"kind": "js",
|
|
2446
|
-
"name": "resolveSelectionValue",
|
|
2447
|
-
"declaration": {
|
|
2448
|
-
"name": "resolveSelectionValue",
|
|
2449
|
-
"module": "src/jsonforms/renderers/ConnectedMultiselectControlRenderer.ts"
|
|
2450
|
-
}
|
|
2451
|
-
},
|
|
2452
2547
|
{
|
|
2453
2548
|
"kind": "js",
|
|
2454
2549
|
"name": "ConnectedMultiselectControlRendererTemplate",
|
package/dist/dts/form.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { FoundationElement } from '@microsoft/fast-foundation';
|
|
2
|
+
import { ErrorObject } from 'ajv';
|
|
2
3
|
import { JSONSchema7 } from 'json-schema';
|
|
3
4
|
import { BulkRowStatus, RendererEntry, UiSchema } from './types';
|
|
4
5
|
/**
|
|
@@ -443,6 +444,12 @@ export declare class Form extends Form_base {
|
|
|
443
444
|
* @internal
|
|
444
445
|
*/
|
|
445
446
|
csvFileInput: HTMLInputElement;
|
|
447
|
+
/**
|
|
448
|
+
* Server-side field validation errors mapped from EVENT_NACK responses.
|
|
449
|
+
* Passed to json-forms via binding; cleared on reset and successful submit.
|
|
450
|
+
* @internal
|
|
451
|
+
*/
|
|
452
|
+
serverFieldErrors: ErrorObject[];
|
|
446
453
|
/**
|
|
447
454
|
* Stores the approval message entered by the user.
|
|
448
455
|
* @internal
|
|
@@ -671,6 +678,16 @@ export declare class Form extends Form_base {
|
|
|
671
678
|
* @public
|
|
672
679
|
*/
|
|
673
680
|
reset(clearData?: boolean): void;
|
|
681
|
+
/**
|
|
682
|
+
* Maps Genesis EVENT_NACK field errors onto the form via additionalErrors.
|
|
683
|
+
* @internal
|
|
684
|
+
*/
|
|
685
|
+
private applyServerFieldErrors;
|
|
686
|
+
/**
|
|
687
|
+
* Maps field errors from failed bulk-insert rows onto the form.
|
|
688
|
+
* @internal
|
|
689
|
+
*/
|
|
690
|
+
private applyBulkServerFieldErrors;
|
|
674
691
|
/**
|
|
675
692
|
* Show the approval message modal
|
|
676
693
|
* @internal
|
package/dist/dts/form.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/form.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/form.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.template.d.ts","sourceRoot":"","sources":["../../src/form.template.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAiBnC,gBAAgB;AAChB,eAAO,MAAM,eAAe,GAAI,WAAM,
|
|
1
|
+
{"version":3,"file":"form.template.d.ts","sourceRoot":"","sources":["../../src/form.template.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAiBnC,gBAAgB;AAChB,eAAO,MAAM,eAAe,GAAI,WAAM,8DAkHrC,CAAC;AAEF,gBAAgB;AAChB,eAAO,MAAM,sBAAsB,2DAElC,CAAC"}
|
|
@@ -11,6 +11,7 @@ import { BulkRowStatus } from '../types';
|
|
|
11
11
|
*/
|
|
12
12
|
export declare class JSONForms extends FASTElement {
|
|
13
13
|
private _submitted;
|
|
14
|
+
private serverErrors;
|
|
14
15
|
get submitted(): boolean;
|
|
15
16
|
set submitted(value: boolean);
|
|
16
17
|
prefix: any;
|
|
@@ -46,8 +47,28 @@ export declare class JSONForms extends FASTElement {
|
|
|
46
47
|
*/
|
|
47
48
|
bulkInsert: boolean;
|
|
48
49
|
bulkInsertChanged(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Server-side field validation errors from the parent foundation-form.
|
|
52
|
+
* Synced into internal state when the binding changes.
|
|
53
|
+
*/
|
|
54
|
+
serverFieldErrors: ErrorObject[];
|
|
55
|
+
serverFieldErrorsChanged(): void;
|
|
49
56
|
get props(): RendererProps;
|
|
50
57
|
dispatch: (action: UpdateAction) => void;
|
|
58
|
+
/**
|
|
59
|
+
* Applies server-side validation errors returned from an EVENT_NACK response.
|
|
60
|
+
* Errors are merged into `core.additionalErrors` and shown inline on fields.
|
|
61
|
+
* @public
|
|
62
|
+
*/
|
|
63
|
+
setServerErrors(errors: ErrorObject[]): void;
|
|
64
|
+
/**
|
|
65
|
+
* Clears all server-side validation errors from the form.
|
|
66
|
+
* @public
|
|
67
|
+
*/
|
|
68
|
+
clearServerErrors(): void;
|
|
69
|
+
private buildAdditionalErrors;
|
|
70
|
+
private applyAdditionalErrorsToCore;
|
|
71
|
+
private refreshAdditionalErrors;
|
|
51
72
|
/**
|
|
52
73
|
* Performs client-side validation by running the validator defined in the UI schema.
|
|
53
74
|
* @param uischema the UI schema
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-forms.d.ts","sourceRoot":"","sources":["../../../src/jsonforms/json-forms.ts"],"names":[],"mappings":"AACA,OAAO,EASL,8BAA8B,EAE9B,aAAa,EAGb,eAAe,EACf,YAAY,EACZ,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAIL,WAAW,EAKZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,GAAG,EAAE,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAmCzC;;;;;;GAMG;AACH,qBAUa,SAAU,SAAQ,WAAW;IACxC,OAAO,CAAC,UAAU,CAAS;
|
|
1
|
+
{"version":3,"file":"json-forms.d.ts","sourceRoot":"","sources":["../../../src/jsonforms/json-forms.ts"],"names":[],"mappings":"AACA,OAAO,EASL,8BAA8B,EAE9B,aAAa,EAGb,eAAe,EACf,YAAY,EACZ,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAIL,WAAW,EAKZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,GAAG,EAAE,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAmCzC;;;;;;GAMG;AACH,qBAUa,SAAU,SAAQ,WAAW;IACxC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAqB;IAEzC,IAAI,SAAS,IAAI,OAAO,CAGvB;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAG3B;IAEW,MAAM,MAAC;IACnB,aAAa;IAGD,SAAS,MAAC;IACV,IAAI,MAAC;IACL,YAAY,MAAC;IAEb,MAAM,MAAC;IACnB,aAAa;IA+DD,QAAQ,EAAE,eAAe,CAAC;IACtC,eAAe;IAIH,IAAI,MAAC;IACjB,WAAW;IAwBC,SAAS,EAAE,8BAA8B,EAAE,CAAC;IACxD,gBAAgB;IAIJ,cAAc,EAAE,cAAc,CAAC;IAC3C,qBAAqB;IAIT,GAAG,EAAE,GAAG,CAAiD;IACrE,UAAU;IAIiB,QAAQ,EAAE,OAAO,CAAC;IAC7C,eAAe;IAIH,MAAM,EAAE,GAAG,CAAC;IACxB,aAAa;IAIb;;;OAGG;IACS,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAa;IACtE,wBAAwB;IAUxB;;;OAGG;IACS,UAAU,EAAE,OAAO,CAAS;IACxC,iBAAiB;IAUjB;;;OAGG;IACS,iBAAiB,EAAE,WAAW,EAAE,CAAM;IAClD,wBAAwB;IAIxB,IAAI,KAAK,IAAI,aAAa,CAuBzB;IAED,QAAQ,GAAI,QAAQ,YAAY,UAe9B;IAEF;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE;IAKrC;;;OAGG;IACH,iBAAiB;IAKjB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,2BAA2B;IAenC,OAAO,CAAC,uBAAuB;IAO/B;;;;;OAKG;IACH,QAAQ,GAAI,UAAU,eAAe,EAAE,UAAiC,KAAG,WAAW,EAAE,CAoDtF;IAEI,uBAAuB;CAQ9B"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { RendererEntry } from '../../types';
|
|
2
2
|
import { DispatchRenderer } from './dispatch-renderer';
|
|
3
|
-
export declare const resolveSelectedOptions: (control: any) => any[];
|
|
4
|
-
export declare const resolveSelectionValue: (control: any, detail: any) => any;
|
|
5
3
|
export declare const ConnectedMultiselectControlRendererTemplate: (prefix?: string) => import("@microsoft/fast-element").ViewTemplate<DispatchRenderer, any>;
|
|
6
4
|
export declare const ConnectedMultiselectControlRendererEntry: RendererEntry;
|
|
7
5
|
//# sourceMappingURL=ConnectedMultiselectControlRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectedMultiselectControlRenderer.d.ts","sourceRoot":"","sources":["../../../../src/jsonforms/renderers/ConnectedMultiselectControlRenderer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"ConnectedMultiselectControlRenderer.d.ts","sourceRoot":"","sources":["../../../../src/jsonforms/renderers/ConnectedMultiselectControlRenderer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAIvD,eAAO,MAAM,2CAA2C,GACtD,SAAQ,MAAe,0EAuCxB,CAAC;AAEF,eAAO,MAAM,wCAAwC,EAAE,aAMtD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ErrorObject } from 'ajv';
|
|
2
|
+
import { JSONSchema7 } from 'json-schema';
|
|
3
|
+
/**
|
|
4
|
+
* Genesis EVENT_NACK field-level error entry.
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export type GenesisFieldError = {
|
|
8
|
+
'@type'?: string;
|
|
9
|
+
CODE?: string;
|
|
10
|
+
TEXT: string;
|
|
11
|
+
STATUS_CODE?: string;
|
|
12
|
+
FIELD?: string;
|
|
13
|
+
PATH?: string | null;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Converts a JsonForms/Ajv instance path to a JSON Forms scope string.
|
|
17
|
+
* @example `/items/0/CCY` → `#/properties/items/items/0/properties/CCY`
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
export declare function instancePathToJsonFormsScope(instancePath: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Converts a Genesis JSON-path or FIELD name to a JsonForms instance path.
|
|
23
|
+
* Strips the `$.` prefix and optional `DETAILS` segment used in event payloads.
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
export declare function genesisFieldToInstancePath(field?: string, path?: string | null, instancePathPrefix?: string): string | null;
|
|
27
|
+
/**
|
|
28
|
+
* Maps Genesis commitEvent NACK `ERROR[]` entries to JsonForms `ErrorObject[]`
|
|
29
|
+
* suitable for `additionalErrors` on the form core.
|
|
30
|
+
*
|
|
31
|
+
* Only entries with a `FIELD` or `PATH` are mapped; generic errors (no field
|
|
32
|
+
* association) are omitted so callers can still surface them via toast/dialog.
|
|
33
|
+
*
|
|
34
|
+
* @param errors - Genesis ERROR array from an EVENT_NACK response
|
|
35
|
+
* @param schema - JSON schema used to resolve `parentSchema` for each field
|
|
36
|
+
* @param instancePathPrefix - Optional prefix for bulk-insert rows (e.g. `/items/0`)
|
|
37
|
+
* @public
|
|
38
|
+
*/
|
|
39
|
+
export declare function mapGenesisFieldErrorsToAdditionalErrors(errors: GenesisFieldError[] | undefined, schema?: JSONSchema7, instancePathPrefix?: string): ErrorObject[];
|
|
40
|
+
//# sourceMappingURL=server-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-errors.d.ts","sourceRoot":"","sources":["../../../src/utils/server-errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAkBzE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,EACpB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,MAAM,GAAG,IAAI,CAuBf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uCAAuC,CACrD,MAAM,EAAE,iBAAiB,EAAE,GAAG,SAAS,EACvC,MAAM,CAAC,EAAE,WAAW,EACpB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,WAAW,EAAE,CAoCf"}
|
package/dist/esm/form.js
CHANGED
|
@@ -29,7 +29,7 @@ import { NumberControlRendererEntry } from './jsonforms/renderers/NumberControlR
|
|
|
29
29
|
import { SegmentedControlRendererEntry } from './jsonforms/renderers/SegmentedControlRenderer';
|
|
30
30
|
import { StringArrayEntry } from './jsonforms/renderers/StringArrayControlRenderer';
|
|
31
31
|
import { StringControlRendererTemplate } from './jsonforms/renderers/StringControlRenderer';
|
|
32
|
-
import { downloadCsvTemplate as downloadCsvFile, extractFieldsFromUiSchema, generateCsvTemplate, logger, mapCsvToSchema, parseCsv, } from './utils';
|
|
32
|
+
import { downloadCsvTemplate as downloadCsvFile, extractFieldsFromUiSchema, generateCsvTemplate, logger, mapCsvToSchema, mapGenesisFieldErrorsToAdditionalErrors, parseCsv, } from './utils';
|
|
33
33
|
import { findModalParent, showConfirmationDialog } from './utils/confirmation-dialog-utils';
|
|
34
34
|
import { removeDataPropertiesNotInSchema } from './utils/form-utils';
|
|
35
35
|
import { generateBulkUiSchema, isBulkUiSchema } from './utils/schema-utils';
|
|
@@ -106,6 +106,12 @@ let Form = class Form extends LifecycleMixin(FoundationElement) {
|
|
|
106
106
|
* @public
|
|
107
107
|
*/
|
|
108
108
|
this.approvalMessageLabel = 'Approval Message';
|
|
109
|
+
/**
|
|
110
|
+
* Server-side field validation errors mapped from EVENT_NACK responses.
|
|
111
|
+
* Passed to json-forms via binding; cleared on reset and successful submit.
|
|
112
|
+
* @internal
|
|
113
|
+
*/
|
|
114
|
+
this.serverFieldErrors = [];
|
|
109
115
|
/**
|
|
110
116
|
* Stores the approval message entered by the user.
|
|
111
117
|
* @internal
|
|
@@ -298,6 +304,7 @@ let Form = class Form extends LifecycleMixin(FoundationElement) {
|
|
|
298
304
|
this.showApprovalModal();
|
|
299
305
|
}
|
|
300
306
|
else {
|
|
307
|
+
this.applyServerFieldErrors(formSubmitReq.ERROR);
|
|
301
308
|
this.$emit('submit-failure', { payload, errors: formSubmitReq.ERROR });
|
|
302
309
|
}
|
|
303
310
|
}
|
|
@@ -391,15 +398,18 @@ let Form = class Form extends LifecycleMixin(FoundationElement) {
|
|
|
391
398
|
this.$emit('bulk-submit-complete', results);
|
|
392
399
|
// Also emit standard events based on overall result
|
|
393
400
|
if (results.failed.length === 0) {
|
|
401
|
+
this.serverFieldErrors = [];
|
|
394
402
|
this.$emit('submit-success', { payload: this.data, results });
|
|
395
403
|
}
|
|
396
404
|
else if (results.successful.length === 0) {
|
|
405
|
+
this.applyBulkServerFieldErrors(results.failed);
|
|
397
406
|
this.$emit('submit-failure', {
|
|
398
407
|
payload: this.data,
|
|
399
408
|
errors: results.failed.flatMap((f) => f.errors),
|
|
400
409
|
});
|
|
401
410
|
}
|
|
402
411
|
else {
|
|
412
|
+
this.applyBulkServerFieldErrors(results.failed);
|
|
403
413
|
// Partial success - emit both events
|
|
404
414
|
this.$emit('submit-partial-success', { payload: this.data, results });
|
|
405
415
|
}
|
|
@@ -462,6 +472,7 @@ let Form = class Form extends LifecycleMixin(FoundationElement) {
|
|
|
462
472
|
const response = yield this.connect.commitEvent(this.resourceName, commitPayload);
|
|
463
473
|
if (response.ERROR) {
|
|
464
474
|
this.updateRowStatus(index, { status: 'failed', errors: response.ERROR });
|
|
475
|
+
this.applyServerFieldErrors(response.ERROR, `/items/${index}`);
|
|
465
476
|
this.$emit('row-submit-failure', { index, item, errors: response.ERROR });
|
|
466
477
|
}
|
|
467
478
|
else {
|
|
@@ -595,11 +606,26 @@ let Form = class Form extends LifecycleMixin(FoundationElement) {
|
|
|
595
606
|
reset(clearData = true) {
|
|
596
607
|
this.submitted = false;
|
|
597
608
|
this.clearRowSubmitStatuses();
|
|
609
|
+
this.serverFieldErrors = [];
|
|
598
610
|
if (clearData) {
|
|
599
611
|
this.data = {};
|
|
600
612
|
}
|
|
601
613
|
Observable.notify(this, 'submitted');
|
|
602
614
|
}
|
|
615
|
+
/**
|
|
616
|
+
* Maps Genesis EVENT_NACK field errors onto the form via additionalErrors.
|
|
617
|
+
* @internal
|
|
618
|
+
*/
|
|
619
|
+
applyServerFieldErrors(errors, instancePathPrefix) {
|
|
620
|
+
this.serverFieldErrors = mapGenesisFieldErrorsToAdditionalErrors(errors, this.jsonSchema, instancePathPrefix);
|
|
621
|
+
}
|
|
622
|
+
/**
|
|
623
|
+
* Maps field errors from failed bulk-insert rows onto the form.
|
|
624
|
+
* @internal
|
|
625
|
+
*/
|
|
626
|
+
applyBulkServerFieldErrors(failed) {
|
|
627
|
+
this.serverFieldErrors = failed.flatMap(({ index, errors }) => mapGenesisFieldErrorsToAdditionalErrors(errors, this.jsonSchema, `/items/${index}`));
|
|
628
|
+
}
|
|
603
629
|
/**
|
|
604
630
|
* Show the approval message modal
|
|
605
631
|
* @internal
|
|
@@ -644,6 +670,7 @@ let Form = class Form extends LifecycleMixin(FoundationElement) {
|
|
|
644
670
|
const formSubmitReq = yield this.connect.commitEvent(this.resourceName, commitPayload);
|
|
645
671
|
this.submitting = false;
|
|
646
672
|
if (formSubmitReq.ERROR) {
|
|
673
|
+
this.applyServerFieldErrors(formSubmitReq.ERROR);
|
|
647
674
|
this.$emit('submit-failure', { payload: this.pendingPayload, errors: formSubmitReq.ERROR });
|
|
648
675
|
}
|
|
649
676
|
else {
|
|
@@ -787,6 +814,9 @@ __decorate([
|
|
|
787
814
|
__decorate([
|
|
788
815
|
attr({ attribute: 'approval-message-label' })
|
|
789
816
|
], Form.prototype, "approvalMessageLabel", void 0);
|
|
817
|
+
__decorate([
|
|
818
|
+
observable
|
|
819
|
+
], Form.prototype, "serverFieldErrors", void 0);
|
|
790
820
|
__decorate([
|
|
791
821
|
observable
|
|
792
822
|
], Form.prototype, "approvalMessage", void 0);
|
|
@@ -50,6 +50,7 @@ export const getPrefixedForm = (prefix) => html `
|
|
|
50
50
|
:uischema=${(x) => x.uischema}
|
|
51
51
|
:schema=${(x) => x.jsonSchema}
|
|
52
52
|
:data=${(x) => x.data}
|
|
53
|
+
:serverFieldErrors=${(x) => x.serverFieldErrors}
|
|
53
54
|
:prefix=${(x) => x.prefix}
|
|
54
55
|
:rowSubmitStatuses=${(x) => x.rowSubmitStatuses}
|
|
55
56
|
:bulkInsert=${(x) => x.bulkInsert}
|
|
@@ -37,6 +37,7 @@ let JSONForms = class JSONForms extends FASTElement {
|
|
|
37
37
|
constructor() {
|
|
38
38
|
super(...arguments);
|
|
39
39
|
this._submitted = false;
|
|
40
|
+
this.serverErrors = [];
|
|
40
41
|
this.ajv = createAjv({ useDefaults: true, $data: true });
|
|
41
42
|
/**
|
|
42
43
|
* Row submit statuses for bulk insert mode.
|
|
@@ -48,22 +49,24 @@ let JSONForms = class JSONForms extends FASTElement {
|
|
|
48
49
|
* Passed from the parent foundation-form.
|
|
49
50
|
*/
|
|
50
51
|
this.bulkInsert = false;
|
|
52
|
+
/**
|
|
53
|
+
* Server-side field validation errors from the parent foundation-form.
|
|
54
|
+
* Synced into internal state when the binding changes.
|
|
55
|
+
*/
|
|
56
|
+
this.serverFieldErrors = [];
|
|
51
57
|
this.dispatch = (action) => {
|
|
52
58
|
// Re-run custom validators against the updated data and push the result
|
|
53
59
|
// back into core so renderers (which read `core.additionalErrors`) see
|
|
54
60
|
// the fresh errors. Without this, the value baked in by `Actions.init`
|
|
55
61
|
// sticks forever even when validators would now return [].
|
|
56
62
|
const nextCore = coreReducer(this.jsonforms.core, action);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
additionalErrors,
|
|
65
|
-
path: action.path,
|
|
66
|
-
});
|
|
63
|
+
if (action.path) {
|
|
64
|
+
const editedPath = action.path.startsWith('/')
|
|
65
|
+
? action.path
|
|
66
|
+
: `/${action.path.replace(/\./g, '/')}`;
|
|
67
|
+
this.serverErrors = this.serverErrors.filter((e) => e.instancePath !== editedPath);
|
|
68
|
+
}
|
|
69
|
+
this.applyAdditionalErrorsToCore(nextCore, action.path);
|
|
67
70
|
};
|
|
68
71
|
/**
|
|
69
72
|
* Performs client-side validation by running the validator defined in the UI schema.
|
|
@@ -139,6 +142,7 @@ let JSONForms = class JSONForms extends FASTElement {
|
|
|
139
142
|
if (!this.schema) {
|
|
140
143
|
return;
|
|
141
144
|
}
|
|
145
|
+
this.serverErrors = [];
|
|
142
146
|
this.uichemaToUse = (_a = this.uischema) !== null && _a !== void 0 ? _a : Generate.uiSchema(this.schema);
|
|
143
147
|
if (!this.uischema) {
|
|
144
148
|
logger.debug('UI schema not provided. Auto generated schema:', this.uichemaToUse);
|
|
@@ -152,7 +156,7 @@ let JSONForms = class JSONForms extends FASTElement {
|
|
|
152
156
|
const core = coreReducer(initialCore, Actions.init(this.data, this.schema, this.uichemaToUse, {
|
|
153
157
|
validationMode: this.validationMode || 'ValidateAndShow',
|
|
154
158
|
ajv: this.ajv,
|
|
155
|
-
additionalErrors: this.
|
|
159
|
+
additionalErrors: this.buildAdditionalErrors(this.uichemaToUse, this.data),
|
|
156
160
|
}));
|
|
157
161
|
return core;
|
|
158
162
|
};
|
|
@@ -166,7 +170,7 @@ let JSONForms = class JSONForms extends FASTElement {
|
|
|
166
170
|
rowSubmitStatuses: this.rowSubmitStatuses,
|
|
167
171
|
bulkInsert: this.bulkInsert,
|
|
168
172
|
};
|
|
169
|
-
const additionalErrors = this.
|
|
173
|
+
const additionalErrors = this.buildAdditionalErrors(this.uichemaToUse, this.data);
|
|
170
174
|
// Only notify consumers when `init` actually changed `core.data` (e.g. defaults
|
|
171
175
|
// were filled in). A bare uischema/schema swap must not re-emit `this.data` —
|
|
172
176
|
// when `<foundation-form>` mirrors the echo into its own `data` property it
|
|
@@ -202,13 +206,7 @@ let JSONForms = class JSONForms extends FASTElement {
|
|
|
202
206
|
const nextCore = coreReducer(this.jsonforms.core, Actions.updateCore(this.data, this.schema, this.uichemaToUse));
|
|
203
207
|
// Validate against the freshly-reduced data, not the still-assigned
|
|
204
208
|
// `this.jsonforms.core.data` (which is the pre-action snapshot).
|
|
205
|
-
|
|
206
|
-
this.jsonforms = Object.assign(Object.assign({}, this.jsonforms), { core: Object.assign(Object.assign({}, nextCore), { additionalErrors }) });
|
|
207
|
-
this.$emit('data-change', {
|
|
208
|
-
data: this.jsonforms.core.data,
|
|
209
|
-
errors: this.jsonforms.core.errors,
|
|
210
|
-
additionalErrors,
|
|
211
|
-
});
|
|
209
|
+
this.applyAdditionalErrorsToCore(nextCore);
|
|
212
210
|
}
|
|
213
211
|
renderersChanged() {
|
|
214
212
|
this.schemaChanged();
|
|
@@ -237,6 +235,9 @@ let JSONForms = class JSONForms extends FASTElement {
|
|
|
237
235
|
this.jsonforms = Object.assign(Object.assign({}, this.jsonforms), { bulkInsert: this.bulkInsert });
|
|
238
236
|
}
|
|
239
237
|
}
|
|
238
|
+
serverFieldErrorsChanged() {
|
|
239
|
+
this.setServerErrors(this.serverFieldErrors);
|
|
240
|
+
}
|
|
240
241
|
get props() {
|
|
241
242
|
var _a;
|
|
242
243
|
if (!this.schema && !this.uischema) {
|
|
@@ -257,6 +258,43 @@ let JSONForms = class JSONForms extends FASTElement {
|
|
|
257
258
|
visible: true,
|
|
258
259
|
};
|
|
259
260
|
}
|
|
261
|
+
/**
|
|
262
|
+
* Applies server-side validation errors returned from an EVENT_NACK response.
|
|
263
|
+
* Errors are merged into `core.additionalErrors` and shown inline on fields.
|
|
264
|
+
* @public
|
|
265
|
+
*/
|
|
266
|
+
setServerErrors(errors) {
|
|
267
|
+
this.serverErrors = errors !== null && errors !== void 0 ? errors : [];
|
|
268
|
+
this.refreshAdditionalErrors();
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Clears all server-side validation errors from the form.
|
|
272
|
+
* @public
|
|
273
|
+
*/
|
|
274
|
+
clearServerErrors() {
|
|
275
|
+
this.serverErrors = [];
|
|
276
|
+
this.refreshAdditionalErrors();
|
|
277
|
+
}
|
|
278
|
+
buildAdditionalErrors(uischema, data) {
|
|
279
|
+
return [...this.validate(uischema, data), ...this.serverErrors];
|
|
280
|
+
}
|
|
281
|
+
applyAdditionalErrorsToCore(nextCore, changedPath) {
|
|
282
|
+
const additionalErrors = this.buildAdditionalErrors(this.uichemaToUse, nextCore.data);
|
|
283
|
+
this.jsonforms = Object.assign(Object.assign({}, this.jsonforms), { core: Object.assign(Object.assign({}, nextCore), { additionalErrors }) });
|
|
284
|
+
this.$emit('data-change', {
|
|
285
|
+
data: this.jsonforms.core.data,
|
|
286
|
+
errors: this.jsonforms.core.errors,
|
|
287
|
+
additionalErrors,
|
|
288
|
+
path: changedPath,
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
refreshAdditionalErrors() {
|
|
292
|
+
var _a;
|
|
293
|
+
if (!((_a = this.jsonforms) === null || _a === void 0 ? void 0 : _a.core) || !this.uichemaToUse) {
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
this.applyAdditionalErrorsToCore(this.jsonforms.core);
|
|
297
|
+
}
|
|
260
298
|
copyUISchemaToClipboard() {
|
|
261
299
|
return __awaiter(this, void 0, void 0, function* () {
|
|
262
300
|
try {
|
|
@@ -311,6 +349,9 @@ __decorate([
|
|
|
311
349
|
__decorate([
|
|
312
350
|
observable
|
|
313
351
|
], JSONForms.prototype, "bulkInsert", void 0);
|
|
352
|
+
__decorate([
|
|
353
|
+
observable
|
|
354
|
+
], JSONForms.prototype, "serverFieldErrors", void 0);
|
|
314
355
|
JSONForms = __decorate([
|
|
315
356
|
customElement({
|
|
316
357
|
name: 'json-forms',
|
|
@@ -5,23 +5,6 @@ import { isOneOfOptionMultiselect } from '../testers/isOneOfOptionMultiselect';
|
|
|
5
5
|
import { controlWrapperTemplate } from './ControlWrapperRenderer';
|
|
6
6
|
import { MULTISELECT_CONTROL_RANK } from './RenderersRanks';
|
|
7
7
|
MultiselectDatasource;
|
|
8
|
-
export const resolveSelectedOptions = (control) => {
|
|
9
|
-
var _a, _b;
|
|
10
|
-
const delimiter = (_b = (_a = control === null || control === void 0 ? void 0 : control.uischema) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.delimiter;
|
|
11
|
-
const data = control === null || control === void 0 ? void 0 : control.data;
|
|
12
|
-
if (delimiter) {
|
|
13
|
-
return data ? data.split(delimiter) : [];
|
|
14
|
-
}
|
|
15
|
-
return data || [];
|
|
16
|
-
};
|
|
17
|
-
export const resolveSelectionValue = (control, detail) => {
|
|
18
|
-
var _a, _b;
|
|
19
|
-
const delimiter = (_b = (_a = control === null || control === void 0 ? void 0 : control.uischema) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.delimiter;
|
|
20
|
-
if (!delimiter) {
|
|
21
|
-
return detail;
|
|
22
|
-
}
|
|
23
|
-
return detail && detail.length ? detail.join(delimiter) : null;
|
|
24
|
-
};
|
|
25
8
|
export const ConnectedMultiselectControlRendererTemplate = (prefix = 'zero') => html `
|
|
26
9
|
<template>
|
|
27
10
|
${controlWrapperTemplate({
|
|
@@ -31,10 +14,19 @@ export const ConnectedMultiselectControlRendererTemplate = (prefix = 'zero') =>
|
|
|
31
14
|
style="width: 100%"
|
|
32
15
|
async=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.async; }}
|
|
33
16
|
?disabled=${(x) => !x.control.enabled}
|
|
34
|
-
:selectedOptions=${(x) =>
|
|
17
|
+
:selectedOptions=${(x) => {
|
|
18
|
+
var _a, _b, _c;
|
|
19
|
+
const selectedOptions = ((_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.delimiter)
|
|
20
|
+
? (_b = x.control.data) === null || _b === void 0 ? void 0 : _b.split((_c = x.control.uischema.options) === null || _c === void 0 ? void 0 : _c.delimiter)
|
|
21
|
+
: x.control.data;
|
|
22
|
+
return selectedOptions || [];
|
|
23
|
+
}}
|
|
35
24
|
tabindex="${(x) => { var _a, _b; return (_b = (_a = x.control.uischema) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.tabIndex; }}"
|
|
36
25
|
@selectionChange=${(x, c) => {
|
|
37
|
-
|
|
26
|
+
var _a, _b, _c;
|
|
27
|
+
const value = !((_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.delimiter)
|
|
28
|
+
? c.event.detail
|
|
29
|
+
: (_b = c.event.detail) === null || _b === void 0 ? void 0 : _b.join((_c = x.control.uischema.options) === null || _c === void 0 ? void 0 : _c.delimiter);
|
|
38
30
|
x.control.handleChange(x.control.path, value);
|
|
39
31
|
x.$emit('change');
|
|
40
32
|
x.onBlur();
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Resolve } from '@jsonforms/core';
|
|
2
|
+
/**
|
|
3
|
+
* Converts a JsonForms/Ajv instance path to a JSON Forms scope string.
|
|
4
|
+
* @example `/items/0/CCY` → `#/properties/items/items/0/properties/CCY`
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export function instancePathToJsonFormsScope(instancePath) {
|
|
8
|
+
const segments = instancePath.replace(/^\//, '').split('/').filter(Boolean);
|
|
9
|
+
if (segments.length === 0) {
|
|
10
|
+
return '#';
|
|
11
|
+
}
|
|
12
|
+
let scope = '#';
|
|
13
|
+
for (let i = 0; i < segments.length; i += 1) {
|
|
14
|
+
const segment = segments[i];
|
|
15
|
+
if (i === 0) {
|
|
16
|
+
scope += `/properties/${segment}`;
|
|
17
|
+
}
|
|
18
|
+
else if (/^\d+$/.test(segment)) {
|
|
19
|
+
scope += `/items/${segment}`;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
scope += `/properties/${segment}`;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return scope;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Converts a Genesis JSON-path or FIELD name to a JsonForms instance path.
|
|
29
|
+
* Strips the `$.` prefix and optional `DETAILS` segment used in event payloads.
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
export function genesisFieldToInstancePath(field, path, instancePathPrefix) {
|
|
33
|
+
let relativePath = null;
|
|
34
|
+
if (path) {
|
|
35
|
+
let normalized = path.replace(/^\$\.?/, '').replace(/\./g, '/');
|
|
36
|
+
normalized = normalized.replace(/^DETAILS\//, '');
|
|
37
|
+
relativePath = normalized.startsWith('/') ? normalized : `/${normalized}`;
|
|
38
|
+
}
|
|
39
|
+
else if (field) {
|
|
40
|
+
relativePath = field.startsWith('/') ? field : `/${field}`;
|
|
41
|
+
}
|
|
42
|
+
if (!relativePath) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
if (instancePathPrefix) {
|
|
46
|
+
const prefix = instancePathPrefix.startsWith('/')
|
|
47
|
+
? instancePathPrefix.replace(/\/$/, '')
|
|
48
|
+
: `/${instancePathPrefix.replace(/\/$/, '')}`;
|
|
49
|
+
return `${prefix}${relativePath}`;
|
|
50
|
+
}
|
|
51
|
+
return relativePath;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Maps Genesis commitEvent NACK `ERROR[]` entries to JsonForms `ErrorObject[]`
|
|
55
|
+
* suitable for `additionalErrors` on the form core.
|
|
56
|
+
*
|
|
57
|
+
* Only entries with a `FIELD` or `PATH` are mapped; generic errors (no field
|
|
58
|
+
* association) are omitted so callers can still surface them via toast/dialog.
|
|
59
|
+
*
|
|
60
|
+
* @param errors - Genesis ERROR array from an EVENT_NACK response
|
|
61
|
+
* @param schema - JSON schema used to resolve `parentSchema` for each field
|
|
62
|
+
* @param instancePathPrefix - Optional prefix for bulk-insert rows (e.g. `/items/0`)
|
|
63
|
+
* @public
|
|
64
|
+
*/
|
|
65
|
+
export function mapGenesisFieldErrorsToAdditionalErrors(errors, schema, instancePathPrefix) {
|
|
66
|
+
if (!(errors === null || errors === void 0 ? void 0 : errors.length)) {
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
return errors
|
|
70
|
+
.map((entry) => {
|
|
71
|
+
const instancePath = genesisFieldToInstancePath(entry.FIELD, entry.PATH, instancePathPrefix);
|
|
72
|
+
if (!instancePath) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
const error = {
|
|
76
|
+
keyword: 'serverValidation',
|
|
77
|
+
message: entry.TEXT,
|
|
78
|
+
instancePath,
|
|
79
|
+
schemaPath: '',
|
|
80
|
+
params: { code: entry.CODE },
|
|
81
|
+
};
|
|
82
|
+
if (schema) {
|
|
83
|
+
try {
|
|
84
|
+
const scope = instancePathToJsonFormsScope(instancePath);
|
|
85
|
+
const jsonFormsSchema = schema;
|
|
86
|
+
const fieldSchema = Resolve.schema(jsonFormsSchema, scope, jsonFormsSchema);
|
|
87
|
+
if (fieldSchema) {
|
|
88
|
+
error.parentSchema = fieldSchema;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (_a) {
|
|
92
|
+
// parentSchema is best-effort; errors still render without it
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return error;
|
|
96
|
+
})
|
|
97
|
+
.filter((e) => e !== null);
|
|
98
|
+
}
|
|
@@ -2736,6 +2736,32 @@
|
|
|
2736
2736
|
],
|
|
2737
2737
|
"name": "generateCsvTemplate"
|
|
2738
2738
|
},
|
|
2739
|
+
{
|
|
2740
|
+
"kind": "TypeAlias",
|
|
2741
|
+
"canonicalReference": "@genesislcap/foundation-forms!GenesisFieldError:type",
|
|
2742
|
+
"docComment": "/**\n * Genesis EVENT_NACK field-level error entry.\n *\n * @public\n */\n",
|
|
2743
|
+
"excerptTokens": [
|
|
2744
|
+
{
|
|
2745
|
+
"kind": "Content",
|
|
2746
|
+
"text": "export type GenesisFieldError = "
|
|
2747
|
+
},
|
|
2748
|
+
{
|
|
2749
|
+
"kind": "Content",
|
|
2750
|
+
"text": "{\n '@type'?: string;\n CODE?: string;\n TEXT: string;\n STATUS_CODE?: string;\n FIELD?: string;\n PATH?: string | null;\n}"
|
|
2751
|
+
},
|
|
2752
|
+
{
|
|
2753
|
+
"kind": "Content",
|
|
2754
|
+
"text": ";"
|
|
2755
|
+
}
|
|
2756
|
+
],
|
|
2757
|
+
"fileUrlPath": "src/utils/server-errors.ts",
|
|
2758
|
+
"releaseTag": "Public",
|
|
2759
|
+
"name": "GenesisFieldError",
|
|
2760
|
+
"typeTokenRange": {
|
|
2761
|
+
"startIndex": 1,
|
|
2762
|
+
"endIndex": 2
|
|
2763
|
+
}
|
|
2764
|
+
},
|
|
2739
2765
|
{
|
|
2740
2766
|
"kind": "Function",
|
|
2741
2767
|
"canonicalReference": "@genesislcap/foundation-forms!getAnyOfErrorMessage:function(1)",
|
|
@@ -3309,6 +3335,94 @@
|
|
|
3309
3335
|
],
|
|
3310
3336
|
"name": "mapCsvToSchema"
|
|
3311
3337
|
},
|
|
3338
|
+
{
|
|
3339
|
+
"kind": "Function",
|
|
3340
|
+
"canonicalReference": "@genesislcap/foundation-forms!mapGenesisFieldErrorsToAdditionalErrors:function(1)",
|
|
3341
|
+
"docComment": "/**\n * Maps Genesis commitEvent NACK `ERROR[]` entries to JsonForms `ErrorObject[]` suitable for `additionalErrors` on the form core.\n *\n * Only entries with a `FIELD` or `PATH` are mapped; generic errors (no field association) are omitted so callers can still surface them via toast/dialog.\n *\n * @param errors - Genesis ERROR array from an EVENT_NACK response\n *\n * @param schema - JSON schema used to resolve `parentSchema` for each field\n *\n * @param instancePathPrefix - Optional prefix for bulk-insert rows (e.g. `/items/0`)\n *\n * @public\n */\n",
|
|
3342
|
+
"excerptTokens": [
|
|
3343
|
+
{
|
|
3344
|
+
"kind": "Content",
|
|
3345
|
+
"text": "export declare function mapGenesisFieldErrorsToAdditionalErrors(errors: "
|
|
3346
|
+
},
|
|
3347
|
+
{
|
|
3348
|
+
"kind": "Reference",
|
|
3349
|
+
"text": "GenesisFieldError",
|
|
3350
|
+
"canonicalReference": "@genesislcap/foundation-forms!GenesisFieldError:type"
|
|
3351
|
+
},
|
|
3352
|
+
{
|
|
3353
|
+
"kind": "Content",
|
|
3354
|
+
"text": "[] | undefined"
|
|
3355
|
+
},
|
|
3356
|
+
{
|
|
3357
|
+
"kind": "Content",
|
|
3358
|
+
"text": ", schema?: "
|
|
3359
|
+
},
|
|
3360
|
+
{
|
|
3361
|
+
"kind": "Reference",
|
|
3362
|
+
"text": "JSONSchema7",
|
|
3363
|
+
"canonicalReference": "@types/json-schema!JSONSchema7:interface"
|
|
3364
|
+
},
|
|
3365
|
+
{
|
|
3366
|
+
"kind": "Content",
|
|
3367
|
+
"text": ", instancePathPrefix?: "
|
|
3368
|
+
},
|
|
3369
|
+
{
|
|
3370
|
+
"kind": "Content",
|
|
3371
|
+
"text": "string"
|
|
3372
|
+
},
|
|
3373
|
+
{
|
|
3374
|
+
"kind": "Content",
|
|
3375
|
+
"text": "): "
|
|
3376
|
+
},
|
|
3377
|
+
{
|
|
3378
|
+
"kind": "Reference",
|
|
3379
|
+
"text": "ErrorObject",
|
|
3380
|
+
"canonicalReference": "ajv!ErrorObject:interface"
|
|
3381
|
+
},
|
|
3382
|
+
{
|
|
3383
|
+
"kind": "Content",
|
|
3384
|
+
"text": "[]"
|
|
3385
|
+
},
|
|
3386
|
+
{
|
|
3387
|
+
"kind": "Content",
|
|
3388
|
+
"text": ";"
|
|
3389
|
+
}
|
|
3390
|
+
],
|
|
3391
|
+
"fileUrlPath": "src/utils/server-errors.ts",
|
|
3392
|
+
"returnTypeTokenRange": {
|
|
3393
|
+
"startIndex": 8,
|
|
3394
|
+
"endIndex": 10
|
|
3395
|
+
},
|
|
3396
|
+
"releaseTag": "Public",
|
|
3397
|
+
"overloadIndex": 1,
|
|
3398
|
+
"parameters": [
|
|
3399
|
+
{
|
|
3400
|
+
"parameterName": "errors",
|
|
3401
|
+
"parameterTypeTokenRange": {
|
|
3402
|
+
"startIndex": 1,
|
|
3403
|
+
"endIndex": 3
|
|
3404
|
+
},
|
|
3405
|
+
"isOptional": false
|
|
3406
|
+
},
|
|
3407
|
+
{
|
|
3408
|
+
"parameterName": "schema",
|
|
3409
|
+
"parameterTypeTokenRange": {
|
|
3410
|
+
"startIndex": 4,
|
|
3411
|
+
"endIndex": 5
|
|
3412
|
+
},
|
|
3413
|
+
"isOptional": true
|
|
3414
|
+
},
|
|
3415
|
+
{
|
|
3416
|
+
"parameterName": "instancePathPrefix",
|
|
3417
|
+
"parameterTypeTokenRange": {
|
|
3418
|
+
"startIndex": 6,
|
|
3419
|
+
"endIndex": 7
|
|
3420
|
+
},
|
|
3421
|
+
"isOptional": true
|
|
3422
|
+
}
|
|
3423
|
+
],
|
|
3424
|
+
"name": "mapGenesisFieldErrorsToAdditionalErrors"
|
|
3425
|
+
},
|
|
3312
3426
|
{
|
|
3313
3427
|
"kind": "Variable",
|
|
3314
3428
|
"canonicalReference": "@genesislcap/foundation-forms!MulticolumnDropdownControlRendererEntry:var",
|
|
@@ -1090,6 +1090,12 @@ export declare class Form extends Form_base {
|
|
|
1090
1090
|
* @internal
|
|
1091
1091
|
*/
|
|
1092
1092
|
csvFileInput: HTMLInputElement;
|
|
1093
|
+
/**
|
|
1094
|
+
* Server-side field validation errors mapped from EVENT_NACK responses.
|
|
1095
|
+
* Passed to json-forms via binding; cleared on reset and successful submit.
|
|
1096
|
+
* @internal
|
|
1097
|
+
*/
|
|
1098
|
+
serverFieldErrors: ErrorObject[];
|
|
1093
1099
|
/**
|
|
1094
1100
|
* Stores the approval message entered by the user.
|
|
1095
1101
|
* @internal
|
|
@@ -1318,6 +1324,16 @@ export declare class Form extends Form_base {
|
|
|
1318
1324
|
* @public
|
|
1319
1325
|
*/
|
|
1320
1326
|
reset(clearData?: boolean): void;
|
|
1327
|
+
/**
|
|
1328
|
+
* Maps Genesis EVENT_NACK field errors onto the form via additionalErrors.
|
|
1329
|
+
* @internal
|
|
1330
|
+
*/
|
|
1331
|
+
private applyServerFieldErrors;
|
|
1332
|
+
/**
|
|
1333
|
+
* Maps field errors from failed bulk-insert rows onto the form.
|
|
1334
|
+
* @internal
|
|
1335
|
+
*/
|
|
1336
|
+
private applyBulkServerFieldErrors;
|
|
1321
1337
|
/**
|
|
1322
1338
|
* Show the approval message modal
|
|
1323
1339
|
* @internal
|
|
@@ -1745,6 +1761,26 @@ export declare function generateCsvTemplate(schema: JSONSchema7 | undefined, uiS
|
|
|
1745
1761
|
*/
|
|
1746
1762
|
export declare const genesisErrorTranslator: ErrorTranslator;
|
|
1747
1763
|
|
|
1764
|
+
/**
|
|
1765
|
+
* Genesis EVENT_NACK field-level error entry.
|
|
1766
|
+
* @public
|
|
1767
|
+
*/
|
|
1768
|
+
export declare type GenesisFieldError = {
|
|
1769
|
+
'@type'?: string;
|
|
1770
|
+
CODE?: string;
|
|
1771
|
+
TEXT: string;
|
|
1772
|
+
STATUS_CODE?: string;
|
|
1773
|
+
FIELD?: string;
|
|
1774
|
+
PATH?: string | null;
|
|
1775
|
+
};
|
|
1776
|
+
|
|
1777
|
+
/**
|
|
1778
|
+
* Converts a Genesis JSON-path or FIELD name to a JsonForms instance path.
|
|
1779
|
+
* Strips the `$.` prefix and optional `DETAILS` segment used in event payloads.
|
|
1780
|
+
* @internal
|
|
1781
|
+
*/
|
|
1782
|
+
export declare function genesisFieldToInstancePath(field?: string, path?: string | null, instancePathPrefix?: string): string | null;
|
|
1783
|
+
|
|
1748
1784
|
/**
|
|
1749
1785
|
* @internal
|
|
1750
1786
|
* Needed to explicitly set as string as we don't want to let typescript set them as ascending numbers
|
|
@@ -1787,6 +1823,13 @@ export declare function getVerticalCategorizationHeight(layout: CategorizationLa
|
|
|
1787
1823
|
*/
|
|
1788
1824
|
export declare type GroupRendererOptions = CategorizationRendererOptions;
|
|
1789
1825
|
|
|
1826
|
+
/**
|
|
1827
|
+
* Converts a JsonForms/Ajv instance path to a JSON Forms scope string.
|
|
1828
|
+
* @example `/items/0/CCY` → `#/properties/items/items/0/properties/CCY`
|
|
1829
|
+
* @internal
|
|
1830
|
+
*/
|
|
1831
|
+
export declare function instancePathToJsonFormsScope(instancePath: string): string;
|
|
1832
|
+
|
|
1790
1833
|
/**
|
|
1791
1834
|
* Whether categorization `layout` selects the vertical renderer (string `'vertical'` or object `{ type: 'vertical' }`).
|
|
1792
1835
|
* @public
|
|
@@ -1861,6 +1904,20 @@ export declare const logger: Logger;
|
|
|
1861
1904
|
*/
|
|
1862
1905
|
export declare function mapCsvToSchema(csvRows: Record<string, string>[], schema: JSONSchema7 | undefined, uiSchema?: UiSchema): CsvMappingResult;
|
|
1863
1906
|
|
|
1907
|
+
/**
|
|
1908
|
+
* Maps Genesis commitEvent NACK `ERROR[]` entries to JsonForms `ErrorObject[]`
|
|
1909
|
+
* suitable for `additionalErrors` on the form core.
|
|
1910
|
+
*
|
|
1911
|
+
* Only entries with a `FIELD` or `PATH` are mapped; generic errors (no field
|
|
1912
|
+
* association) are omitted so callers can still surface them via toast/dialog.
|
|
1913
|
+
*
|
|
1914
|
+
* @param errors - Genesis ERROR array from an EVENT_NACK response
|
|
1915
|
+
* @param schema - JSON schema used to resolve `parentSchema` for each field
|
|
1916
|
+
* @param instancePathPrefix - Optional prefix for bulk-insert rows (e.g. `/items/0`)
|
|
1917
|
+
* @public
|
|
1918
|
+
*/
|
|
1919
|
+
export declare function mapGenesisFieldErrorsToAdditionalErrors(errors: GenesisFieldError[] | undefined, schema?: JSONSchema7, instancePathPrefix?: string): ErrorObject[];
|
|
1920
|
+
|
|
1864
1921
|
/** @beta */
|
|
1865
1922
|
export declare const MulticolumnDropdownControlRendererEntry: any;
|
|
1866
1923
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genesislcap/foundation-forms",
|
|
3
3
|
"description": "Genesis Foundation Forms",
|
|
4
|
-
"version": "14.
|
|
4
|
+
"version": "14.474.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"license": "SEE LICENSE IN license.txt",
|
|
7
7
|
"main": "dist/esm/index.js",
|
|
@@ -59,13 +59,13 @@
|
|
|
59
59
|
}
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
|
-
"@genesislcap/foundation-testing": "14.
|
|
63
|
-
"@genesislcap/genx": "14.
|
|
64
|
-
"@genesislcap/rollup-builder": "14.
|
|
65
|
-
"@genesislcap/ts-builder": "14.
|
|
66
|
-
"@genesislcap/uvu-playwright-builder": "14.
|
|
67
|
-
"@genesislcap/vite-builder": "14.
|
|
68
|
-
"@genesislcap/webpack-builder": "14.
|
|
62
|
+
"@genesislcap/foundation-testing": "14.474.0",
|
|
63
|
+
"@genesislcap/genx": "14.474.0",
|
|
64
|
+
"@genesislcap/rollup-builder": "14.474.0",
|
|
65
|
+
"@genesislcap/ts-builder": "14.474.0",
|
|
66
|
+
"@genesislcap/uvu-playwright-builder": "14.474.0",
|
|
67
|
+
"@genesislcap/vite-builder": "14.474.0",
|
|
68
|
+
"@genesislcap/webpack-builder": "14.474.0",
|
|
69
69
|
"@types/json-schema": "^7.0.11",
|
|
70
70
|
"@types/papaparse": "^5.3.14"
|
|
71
71
|
},
|
|
@@ -82,12 +82,12 @@
|
|
|
82
82
|
}
|
|
83
83
|
},
|
|
84
84
|
"dependencies": {
|
|
85
|
-
"@genesislcap/foundation-comms": "14.
|
|
86
|
-
"@genesislcap/foundation-criteria": "14.
|
|
87
|
-
"@genesislcap/foundation-logger": "14.
|
|
88
|
-
"@genesislcap/foundation-notifications": "14.
|
|
89
|
-
"@genesislcap/foundation-ui": "14.
|
|
90
|
-
"@genesislcap/foundation-utils": "14.
|
|
85
|
+
"@genesislcap/foundation-comms": "14.474.0",
|
|
86
|
+
"@genesislcap/foundation-criteria": "14.474.0",
|
|
87
|
+
"@genesislcap/foundation-logger": "14.474.0",
|
|
88
|
+
"@genesislcap/foundation-notifications": "14.474.0",
|
|
89
|
+
"@genesislcap/foundation-ui": "14.474.0",
|
|
90
|
+
"@genesislcap/foundation-utils": "14.474.0",
|
|
91
91
|
"@json-schema-tools/dereferencer": "^1.6.1",
|
|
92
92
|
"@jsonforms/core": "^3.2.1",
|
|
93
93
|
"@microsoft/fast-components": "2.30.6",
|
|
@@ -109,5 +109,5 @@
|
|
|
109
109
|
"access": "public"
|
|
110
110
|
},
|
|
111
111
|
"customElements": "dist/custom-elements.json",
|
|
112
|
-
"gitHead": "
|
|
112
|
+
"gitHead": "0cdf32ed2a957f4c8694391d58f958c549931f60"
|
|
113
113
|
}
|