@cxtms/cx-schema 1.9.66 → 1.9.241
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/cli.js +43 -9
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
- package/schemas/actions/all.json +5 -1
- package/schemas/actions/reload.json +17 -0
- package/schemas/actions/setSessionStorage.json +38 -0
- package/schemas/actions/sound.json +39 -0
- package/schemas/actions/vibrate.json +48 -0
- package/schemas/components/avatar.json +1 -0
- package/schemas/components/badge.json +79 -0
- package/schemas/components/barcodeScanner.json +28 -0
- package/schemas/components/camera.json +177 -0
- package/schemas/components/card.json +78 -0
- package/schemas/components/dashboard-widget.json +39 -0
- package/schemas/components/dashboard.json +46 -0
- package/schemas/components/dataGrid.json +15 -0
- package/schemas/components/field-collection.json +86 -2
- package/schemas/components/field.json +39 -4
- package/schemas/components/form.json +4 -0
- package/schemas/components/index.json +17 -1
- package/schemas/components/infoLine.json +1 -0
- package/schemas/components/map.json +167 -0
- package/schemas/components/module.json +32 -0
- package/schemas/components/planner.json +1 -0
- package/schemas/components/progressBar.json +1 -0
- package/schemas/components/timeline.json +216 -74
- package/schemas/components/timelineGrid.json +5 -1
- package/schemas/fields/autocomplete-googleplaces.json +2 -2
- package/schemas/fields/datetime.json +2 -2
- package/schemas/fields/index.json +4 -0
- package/schemas/fields/number-select.json +88 -0
- package/schemas/fields/rangedatetime.json +10 -2
- package/schemas/fields/select-async.json +2 -2
- package/schemas/fields/toggle.json +91 -0
- package/schemas/schema.graphql +11016 -12171
- package/schemas/schemas.json +131 -4
- package/schemas/workflows/flow/entity.json +3 -1
- package/schemas/workflows/input.json +1 -1
- package/schemas/workflows/output.json +1 -1
- package/schemas/workflows/tasks/all.json +9 -0
- package/schemas/workflows/tasks/commodity.json +8 -0
- package/schemas/workflows/tasks/contact-address.json +25 -0
- package/schemas/workflows/tasks/dispatch-routes.json +64 -0
- package/schemas/workflows/tasks/edi.json +15 -0
- package/schemas/workflows/tasks/export.json +21 -0
- package/schemas/workflows/tasks/httpRequest.json +4 -0
- package/schemas/workflows/tasks/import.json +5 -0
- package/schemas/workflows/tasks/order-move.json +38 -0
- package/schemas/workflows/tasks/order.json +6 -0
- package/schemas/workflows/tasks/organization-config.json +101 -0
- package/schemas/workflows/tasks/tracking-event.json +11 -3
- package/schemas/workflows/tasks/workflow-execute.json +4 -0
- package/schemas/workflows/variable.json +2 -2
- package/schemas/workflows/workflow.json +39 -2
- package/skills/cxtms-developer/SKILL.md +5 -2
- package/skills/cxtms-developer/ref-cli-auth.md +2 -0
- package/skills/cxtms-developer/ref-entity-commodity.md +41 -5
- package/skills/cxtms-developer/ref-entity-contact.md +46 -0
- package/skills/cxtms-developer/ref-entity-dispatch-routing.md +195 -0
- package/skills/cxtms-developer/ref-entity-geography.md +26 -1
- package/skills/cxtms-developer/ref-entity-job.md +6 -2
- package/skills/cxtms-developer/ref-entity-order-sub.md +1 -1
- package/skills/cxtms-developer/ref-entity-order.md +36 -3
- package/skills/cxtms-developer/ref-entity-organization.md +4 -2
- package/skills/cxtms-developer/ref-entity-shared.md +79 -3
- package/skills/cxtms-developer/ref-graphql-query.md +246 -4
- package/skills/cxtms-module-builder/SKILL.md +33 -6
- package/skills/cxtms-module-builder/ref-components-data.md +85 -0
- package/skills/cxtms-module-builder/ref-components-display.md +282 -8
- package/skills/cxtms-module-builder/ref-components-forms.md +386 -21
- package/skills/cxtms-module-builder/ref-components-interactive.md +2 -0
- package/skills/cxtms-module-builder/ref-components-layout.md +288 -29
- package/skills/cxtms-module-builder/ref-components-specialized.md +168 -20
- package/skills/cxtms-workflow-builder/SKILL.md +45 -6
- package/skills/cxtms-workflow-builder/ref-entity.md +100 -4
- package/skills/cxtms-workflow-builder/ref-expressions-ncalc.md +35 -2
- package/skills/cxtms-workflow-builder/ref-expressions-template.md +15 -1
- package/skills/cxtms-workflow-builder/ref-flow.md +6 -1
- package/skills/cxtms-workflow-builder/ref-query.md +16 -0
- package/skills/cxtms-workflow-builder/ref-utilities.md +32 -2
- package/templates/workflow-public-api.yaml +1 -0
package/package.json
CHANGED
package/schemas/actions/all.json
CHANGED
|
@@ -7,12 +7,14 @@
|
|
|
7
7
|
{ "$ref": "navigateBack.json" },
|
|
8
8
|
{ "$ref": "navigateBackOrClose.json" },
|
|
9
9
|
{ "$ref": "refresh.json" },
|
|
10
|
+
{ "$ref": "reload.json" },
|
|
10
11
|
{ "$ref": "notification.json" },
|
|
11
12
|
{ "$ref": "confirm.json" },
|
|
12
13
|
{ "$ref": "mutation.json" },
|
|
13
14
|
{ "$ref": "query.json" },
|
|
14
15
|
{ "$ref": "setFields.json" },
|
|
15
16
|
{ "$ref": "setStore.json" },
|
|
17
|
+
{ "$ref": "setSessionStorage.json" },
|
|
16
18
|
{ "$ref": "validateForm.json" },
|
|
17
19
|
{ "$ref": "dialog.json" },
|
|
18
20
|
{ "$ref": "workflow.json" },
|
|
@@ -22,6 +24,8 @@
|
|
|
22
24
|
{ "$ref": "consoleLog.json" },
|
|
23
25
|
{ "$ref": "openBarcodeScanner.json" },
|
|
24
26
|
{ "$ref": "resetDirtyState.json" },
|
|
25
|
-
{ "$ref": "clipboard.json" }
|
|
27
|
+
{ "$ref": "clipboard.json" },
|
|
28
|
+
{ "$ref": "sound.json" },
|
|
29
|
+
{ "$ref": "vibrate.json" }
|
|
26
30
|
]
|
|
27
31
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "reload Action",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"reload": {
|
|
7
|
+
"description": "Refetches and replaces one or more forms from their initialValues source",
|
|
8
|
+
"oneOf": [
|
|
9
|
+
{ "type": "string" },
|
|
10
|
+
{ "type": "array", "items": { "type": "string" }, "minItems": 1 }
|
|
11
|
+
],
|
|
12
|
+
"x-examples": ["orderForm", ["orderForm", "orderLinesForm"]]
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"required": ["reload"],
|
|
16
|
+
"additionalProperties": false
|
|
17
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "setSessionStorage Action",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"setSessionStorage": {
|
|
7
|
+
"type": "object",
|
|
8
|
+
"description": "Browser sessionStorage value to set for the current tab",
|
|
9
|
+
"required": ["key", "value"],
|
|
10
|
+
"properties": {
|
|
11
|
+
"key": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"description": "Unscoped sessionStorage key"
|
|
14
|
+
},
|
|
15
|
+
"value": {
|
|
16
|
+
"description": "Value to store. Template expressions are resolved before writing."
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"additionalProperties": false,
|
|
20
|
+
"x-examples": [
|
|
21
|
+
{ "key": "isDevMode", "value": "true" },
|
|
22
|
+
{ "key": "activeWorkspace", "value": "{{ workspaceId }}" }
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"onSuccess": {
|
|
26
|
+
"type": "array",
|
|
27
|
+
"description": "Actions to execute after sessionStorage is updated",
|
|
28
|
+
"items": { "$ref": "all.json" }
|
|
29
|
+
},
|
|
30
|
+
"onError": {
|
|
31
|
+
"type": "array",
|
|
32
|
+
"description": "Actions to execute if sessionStorage update fails",
|
|
33
|
+
"items": { "$ref": "all.json" }
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"required": ["setSessionStorage"],
|
|
37
|
+
"additionalProperties": false
|
|
38
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "sound Action",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"sound": {
|
|
7
|
+
"oneOf": [
|
|
8
|
+
{
|
|
9
|
+
"type": "string",
|
|
10
|
+
"enum": ["success", "error", "warning", "scan"]
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"type": "object",
|
|
14
|
+
"properties": {
|
|
15
|
+
"type": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"enum": ["success", "error", "warning", "scan"],
|
|
18
|
+
"description": "Feedback tone preset. Defaults to success."
|
|
19
|
+
},
|
|
20
|
+
"volume": {
|
|
21
|
+
"type": "number",
|
|
22
|
+
"minimum": 0,
|
|
23
|
+
"maximum": 1,
|
|
24
|
+
"description": "Tone volume from 0 to 1. Defaults to 1."
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"additionalProperties": false
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"description": "Play a short browser-generated feedback tone. Unsupported browsers resolve without failing the action chain.",
|
|
31
|
+
"x-examples": [
|
|
32
|
+
"success",
|
|
33
|
+
{ "type": "scan", "volume": 0.5 }
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"required": ["sound"],
|
|
38
|
+
"additionalProperties": false
|
|
39
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "vibrate Action",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"vibrate": {
|
|
7
|
+
"oneOf": [
|
|
8
|
+
{
|
|
9
|
+
"type": "string",
|
|
10
|
+
"enum": ["success", "error", "warning", "light", "medium", "heavy"]
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"type": "object",
|
|
14
|
+
"properties": {
|
|
15
|
+
"type": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"enum": ["success", "error", "warning", "light", "medium", "heavy"],
|
|
18
|
+
"description": "Haptic preset. Defaults to success."
|
|
19
|
+
},
|
|
20
|
+
"pattern": {
|
|
21
|
+
"type": "array",
|
|
22
|
+
"items": {
|
|
23
|
+
"type": "number",
|
|
24
|
+
"minimum": 0
|
|
25
|
+
},
|
|
26
|
+
"minItems": 1,
|
|
27
|
+
"description": "Vibration API pattern in milliseconds: even indexes vibrate, odd indexes pause."
|
|
28
|
+
},
|
|
29
|
+
"duration": {
|
|
30
|
+
"type": "number",
|
|
31
|
+
"minimum": 0,
|
|
32
|
+
"description": "Single vibration duration in milliseconds."
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"additionalProperties": false
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"description": "Trigger device haptic feedback through navigator.vibrate when supported. Unsupported devices resolve without failing the action chain.",
|
|
39
|
+
"x-examples": [
|
|
40
|
+
"success",
|
|
41
|
+
{ "type": "light" },
|
|
42
|
+
{ "pattern": [50, 60, 50] }
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"required": ["vibrate"],
|
|
47
|
+
"additionalProperties": false
|
|
48
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"$schema":"http://json-schema.org/draft-07/schema#","title":"Avatar Component","type":"object","required":["component"],"properties":{"component":{"const":"avatar"},"name":{"type":"string"},"props":{"type":"object","properties":{"src":{},"firstName":{},"lastName":{},"name":{},"email":{},"colorSeed":{},"color":{"type":"string"},"bgcolor":{"type":"string"},"textColor":{"type":"string"},"size":{"type":["number","string"]},"skin":{"type":"string"},"variant":{"type":"string"},"tooltip":{},"onClick":{"$ref":"../schemas.json#/definitions/actionsList"}},"additionalProperties":true}},"additionalProperties":true}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "badge-component",
|
|
4
|
+
"title": "Badge Component",
|
|
5
|
+
"description": "Colored chip/badge with template-parsed label, optional color lookup key, dot indicator, and optional click actions.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["component", "props"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"component": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"const": "badge",
|
|
12
|
+
"description": "Component type identifier"
|
|
13
|
+
},
|
|
14
|
+
"name": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"description": "Unique identifier for the badge component"
|
|
17
|
+
},
|
|
18
|
+
"props": {
|
|
19
|
+
"type": "object",
|
|
20
|
+
"required": ["label"],
|
|
21
|
+
"properties": {
|
|
22
|
+
"label": {
|
|
23
|
+
"type": ["string", "object"],
|
|
24
|
+
"description": "Badge text. Template-parsed with store values, component variables, and form values.",
|
|
25
|
+
"x-example": "{{ status }}"
|
|
26
|
+
},
|
|
27
|
+
"colorKey": {
|
|
28
|
+
"type": ["string", "object"],
|
|
29
|
+
"description": "Optional color lookup key. Template-parsed with store values, component variables, and form values. Defaults to the normalized label.",
|
|
30
|
+
"x-example": "{{ statusCode }}"
|
|
31
|
+
},
|
|
32
|
+
"color": { "type": ["string", "object"], "description": "Template-parsed seed color, normally an organization-defined hex." },
|
|
33
|
+
"variant": { "type": ["string", "object"], "description": "Semantic badge variant." },
|
|
34
|
+
"size": { "type": "string", "enum": ["xs", "sm", "md"], "default": "sm" },
|
|
35
|
+
"appearance": { "type": "string", "enum": ["soft", "outline", "solid", "ghost"], "default": "soft" },
|
|
36
|
+
"uppercase": { "type": "boolean", "default": false },
|
|
37
|
+
"dot": { "type": "boolean", "default": false },
|
|
38
|
+
"icon": { "type": "string" },
|
|
39
|
+
"maxWidth": { "type": ["number", "string"] },
|
|
40
|
+
"options": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"properties": {
|
|
43
|
+
"colors": {
|
|
44
|
+
"type": "object",
|
|
45
|
+
"description": "Map of color keys to text/background/dot colors. Include a default entry for fallback rendering.",
|
|
46
|
+
"additionalProperties": { "oneOf": [{ "type": "string" }, { "type": "object", "additionalProperties": true }] }
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"additionalProperties": true
|
|
50
|
+
},
|
|
51
|
+
"onClick": {
|
|
52
|
+
"type": "array",
|
|
53
|
+
"description": "Actions to dispatch when clicked. Makes the badge interactive and stops event propagation.",
|
|
54
|
+
"items": {
|
|
55
|
+
"type": "object"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"additionalProperties": true
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"additionalProperties": true,
|
|
63
|
+
"x-examples": {
|
|
64
|
+
"statusBadge": {
|
|
65
|
+
"component": "badge",
|
|
66
|
+
"name": "statusBadge",
|
|
67
|
+
"props": {
|
|
68
|
+
"label": "{{ status }}",
|
|
69
|
+
"colorKey": "{{ status }}",
|
|
70
|
+
"options": {
|
|
71
|
+
"colors": {
|
|
72
|
+
"Delivered": { "label": "#1b5e20", "bgcolor": "#e8f5e9", "dot": "#4caf50" },
|
|
73
|
+
"default": { "label": "#5f370e", "bgcolor": "#fff8e1", "dot": "#ff9800" }
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -16,8 +16,36 @@
|
|
|
16
16
|
"properties": {
|
|
17
17
|
"minBarcodeLength": {
|
|
18
18
|
"type": "integer",
|
|
19
|
+
"minimum": 1,
|
|
19
20
|
"description": "Minimum length for recognized barcodes"
|
|
20
21
|
},
|
|
22
|
+
"deduplicate": {
|
|
23
|
+
"type": "boolean",
|
|
24
|
+
"default": true,
|
|
25
|
+
"description": "Suppress repeated reads of the same barcode"
|
|
26
|
+
},
|
|
27
|
+
"scanDelayMs": {
|
|
28
|
+
"type": "number",
|
|
29
|
+
"minimum": 0,
|
|
30
|
+
"default": 1000,
|
|
31
|
+
"description": "Per-code deduplication window in milliseconds"
|
|
32
|
+
},
|
|
33
|
+
"minScanIntervalMs": {
|
|
34
|
+
"type": "number",
|
|
35
|
+
"minimum": 0,
|
|
36
|
+
"default": 0,
|
|
37
|
+
"description": "Minimum interval in milliseconds between accepted scans"
|
|
38
|
+
},
|
|
39
|
+
"continuous": {
|
|
40
|
+
"type": "boolean",
|
|
41
|
+
"default": true,
|
|
42
|
+
"description": "Allow more than one accepted scan"
|
|
43
|
+
},
|
|
44
|
+
"maxBarcodes": {
|
|
45
|
+
"type": "integer",
|
|
46
|
+
"minimum": 1,
|
|
47
|
+
"description": "Maximum number of accepted scans in continuous mode"
|
|
48
|
+
},
|
|
21
49
|
"onScan": {
|
|
22
50
|
"$ref": "../schemas.json#/definitions/actionsList",
|
|
23
51
|
"description": "Actions to execute when a barcode is successfully scanned"
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Camera Component",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"component": {
|
|
7
|
+
"type": "string",
|
|
8
|
+
"const": "camera"
|
|
9
|
+
},
|
|
10
|
+
"name": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Unique name identifier for the camera instance"
|
|
13
|
+
},
|
|
14
|
+
"props": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"properties": {
|
|
17
|
+
"width": {
|
|
18
|
+
"type": "number",
|
|
19
|
+
"description": "Viewport width in pixels"
|
|
20
|
+
},
|
|
21
|
+
"height": {
|
|
22
|
+
"type": "number",
|
|
23
|
+
"description": "Viewport height in pixels"
|
|
24
|
+
},
|
|
25
|
+
"facing": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"enum": ["front", "back"],
|
|
28
|
+
"default": "back",
|
|
29
|
+
"description": "Which camera to use"
|
|
30
|
+
},
|
|
31
|
+
"mode": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"enum": ["picture", "scanner", "hybrid"],
|
|
34
|
+
"description": "Camera mode. Scanner and hybrid modes are supported by the mobile renderer.",
|
|
35
|
+
"default": "picture"
|
|
36
|
+
},
|
|
37
|
+
"scanner": {
|
|
38
|
+
"type": "object",
|
|
39
|
+
"description": "Scanner settings used by scanner and hybrid modes.",
|
|
40
|
+
"properties": {
|
|
41
|
+
"recognize": {
|
|
42
|
+
"type": "array",
|
|
43
|
+
"items": { "type": "string", "enum": ["barcode", "vin", "container"] },
|
|
44
|
+
"uniqueItems": true,
|
|
45
|
+
"default": ["barcode"],
|
|
46
|
+
"description": "Mobile recognition modes. VIN and container use native OCR with checksum validation."
|
|
47
|
+
},
|
|
48
|
+
"autoCapture": {
|
|
49
|
+
"type": "boolean",
|
|
50
|
+
"default": false,
|
|
51
|
+
"description": "Mobile: capture a proof photo immediately after accepting a scan."
|
|
52
|
+
},
|
|
53
|
+
"barcodeTypes": { "type": "array", "items": { "type": "string" } },
|
|
54
|
+
"minBarcodeLength": { "type": "integer", "minimum": 1 },
|
|
55
|
+
"continuous": { "type": "boolean" },
|
|
56
|
+
"deduplicate": { "type": "boolean" },
|
|
57
|
+
"scanDelayMs": { "type": "number", "minimum": 0 },
|
|
58
|
+
"minScanIntervalMs": { "type": "number", "minimum": 0 },
|
|
59
|
+
"maxBarcodes": { "type": "integer", "minimum": 1 }
|
|
60
|
+
},
|
|
61
|
+
"additionalProperties": true
|
|
62
|
+
},
|
|
63
|
+
"enableTorch": {
|
|
64
|
+
"type": "boolean",
|
|
65
|
+
"description": "Enable the device flashlight/torch during streaming"
|
|
66
|
+
},
|
|
67
|
+
"zoom": {
|
|
68
|
+
"type": "number",
|
|
69
|
+
"description": "Initial zoom factor (device capabilities determine actual range)"
|
|
70
|
+
},
|
|
71
|
+
"autofocus": {
|
|
72
|
+
"type": "string",
|
|
73
|
+
"enum": ["on", "off"],
|
|
74
|
+
"description": "Controls autofocus. Omit to let the browser decide."
|
|
75
|
+
},
|
|
76
|
+
"mirror": {
|
|
77
|
+
"type": "boolean",
|
|
78
|
+
"description": "Horizontally flip the video preview. Defaults to true for front camera, false for back."
|
|
79
|
+
},
|
|
80
|
+
"picture": {
|
|
81
|
+
"type": "object",
|
|
82
|
+
"description": "Capture format and quality settings",
|
|
83
|
+
"properties": {
|
|
84
|
+
"quality": {
|
|
85
|
+
"type": "number",
|
|
86
|
+
"minimum": 0,
|
|
87
|
+
"maximum": 1,
|
|
88
|
+
"description": "JPEG/WebP quality from 0 to 1"
|
|
89
|
+
},
|
|
90
|
+
"format": {
|
|
91
|
+
"type": "string",
|
|
92
|
+
"enum": ["jpeg", "png", "webp"],
|
|
93
|
+
"default": "jpeg",
|
|
94
|
+
"description": "Output image format"
|
|
95
|
+
},
|
|
96
|
+
"base64": {
|
|
97
|
+
"type": "boolean",
|
|
98
|
+
"description": "If true, onCapture receives a base64 string; otherwise a Blob"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
"onCapture": {
|
|
103
|
+
"$ref": "../schemas.json#/definitions/actionsList",
|
|
104
|
+
"description": "Actions fired after a successful capture. Receives { data: string|Blob, width: number, height: number }"
|
|
105
|
+
},
|
|
106
|
+
"onScan": {
|
|
107
|
+
"$ref": "../schemas.json#/definitions/actionsList",
|
|
108
|
+
"description": "Actions fired after an accepted scan. Receives { data, format, type } and optional proof-photo fields when scanner.autoCapture is enabled."
|
|
109
|
+
},
|
|
110
|
+
"onClose": {
|
|
111
|
+
"$ref": "../schemas.json#/definitions/actionsList",
|
|
112
|
+
"description": "Actions fired when the camera stream stops"
|
|
113
|
+
},
|
|
114
|
+
"onReady": {
|
|
115
|
+
"$ref": "../schemas.json#/definitions/actionsList",
|
|
116
|
+
"description": "Actions fired once the camera is initialized and streaming. Receives { facing, mode: 'picture' }"
|
|
117
|
+
},
|
|
118
|
+
"onPermissionDenied": {
|
|
119
|
+
"$ref": "../schemas.json#/definitions/actionsList",
|
|
120
|
+
"description": "Actions fired when camera permission is denied. Receives { permission: 'camera' }"
|
|
121
|
+
},
|
|
122
|
+
"onError": {
|
|
123
|
+
"$ref": "../schemas.json#/definitions/actionsList",
|
|
124
|
+
"description": "Actions fired on camera errors. Receives { message: string, code: string }"
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"required": ["component"],
|
|
130
|
+
"x-examples": [
|
|
131
|
+
{
|
|
132
|
+
"component": "camera",
|
|
133
|
+
"props": {
|
|
134
|
+
"width": 1024,
|
|
135
|
+
"height": 768,
|
|
136
|
+
"facing": "back",
|
|
137
|
+
"onCapture": [
|
|
138
|
+
{
|
|
139
|
+
"fileUpload": {
|
|
140
|
+
"file": "{{ result.data }}",
|
|
141
|
+
"name": "capture",
|
|
142
|
+
"onSuccess": [
|
|
143
|
+
{ "setStore": { "imageUrl": "{{ result.url }}" } }
|
|
144
|
+
]
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
],
|
|
148
|
+
"onClose": [
|
|
149
|
+
{ "navigateBackOrClose": { "result": "camera_closed" } }
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"component": "camera",
|
|
155
|
+
"props": {
|
|
156
|
+
"facing": "front",
|
|
157
|
+
"mirror": true,
|
|
158
|
+
"picture": {
|
|
159
|
+
"format": "jpeg",
|
|
160
|
+
"quality": 0.85,
|
|
161
|
+
"base64": true
|
|
162
|
+
},
|
|
163
|
+
"onCapture": [
|
|
164
|
+
{ "setStore": { "selfieData": "{{ result.data }}" } }
|
|
165
|
+
],
|
|
166
|
+
"onPermissionDenied": [
|
|
167
|
+
{
|
|
168
|
+
"notification": {
|
|
169
|
+
"message": "Camera access is required to take photos.",
|
|
170
|
+
"variant": "warning"
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
]
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
]
|
|
177
|
+
}
|
|
@@ -28,6 +28,84 @@
|
|
|
28
28
|
"type": "string",
|
|
29
29
|
"description": "CSS classes for styling"
|
|
30
30
|
},
|
|
31
|
+
"options": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"description": "Card visual and layout options",
|
|
34
|
+
"properties": {
|
|
35
|
+
"variant": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"enum": ["elevation", "outlined"],
|
|
38
|
+
"description": "MUI Card variant"
|
|
39
|
+
},
|
|
40
|
+
"elevation": {
|
|
41
|
+
"type": "number",
|
|
42
|
+
"description": "Shadow depth when variant is elevation"
|
|
43
|
+
},
|
|
44
|
+
"sx": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"description": "MUI sx styles applied to the card root",
|
|
47
|
+
"additionalProperties": true
|
|
48
|
+
},
|
|
49
|
+
"style": {
|
|
50
|
+
"type": "object",
|
|
51
|
+
"description": "Theme-aware CSSProperties applied after sx",
|
|
52
|
+
"properties": {
|
|
53
|
+
"light": {
|
|
54
|
+
"type": "object",
|
|
55
|
+
"description": "Card root styles for light mode",
|
|
56
|
+
"additionalProperties": true
|
|
57
|
+
},
|
|
58
|
+
"dark": {
|
|
59
|
+
"type": "object",
|
|
60
|
+
"description": "Card root styles for dark mode",
|
|
61
|
+
"additionalProperties": true
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"additionalProperties": false
|
|
65
|
+
},
|
|
66
|
+
"bgcolor": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"description": "Background color"
|
|
69
|
+
},
|
|
70
|
+
"color": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"description": "Text color"
|
|
73
|
+
},
|
|
74
|
+
"className": {
|
|
75
|
+
"type": "string",
|
|
76
|
+
"description": "CSS classes for the card root"
|
|
77
|
+
},
|
|
78
|
+
"header": {
|
|
79
|
+
"type": "object",
|
|
80
|
+
"description": "Card header configuration",
|
|
81
|
+
"additionalProperties": true
|
|
82
|
+
},
|
|
83
|
+
"actions": {
|
|
84
|
+
"type": "object",
|
|
85
|
+
"description": "Card actions configuration",
|
|
86
|
+
"additionalProperties": true
|
|
87
|
+
},
|
|
88
|
+
"disableContentWrapper": {
|
|
89
|
+
"type": "boolean",
|
|
90
|
+
"description": "Render children directly without CardContent"
|
|
91
|
+
},
|
|
92
|
+
"contentSx": {
|
|
93
|
+
"type": "object",
|
|
94
|
+
"description": "MUI sx styles applied to CardContent",
|
|
95
|
+
"additionalProperties": true
|
|
96
|
+
},
|
|
97
|
+
"contentClassName": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"description": "CSS class applied to CardContent"
|
|
100
|
+
},
|
|
101
|
+
"contentProps": {
|
|
102
|
+
"type": "object",
|
|
103
|
+
"description": "Additional CardContent props",
|
|
104
|
+
"additionalProperties": true
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
"additionalProperties": true
|
|
108
|
+
},
|
|
31
109
|
"toolbar": {
|
|
32
110
|
"type": "array",
|
|
33
111
|
"description": "Toolbar components",
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Dashboard Widget Component",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"component": { "type": "string", "const": "dashboard-widget" },
|
|
7
|
+
"name": { "type": "string", "description": "Unique widget name within the parent dashboard" },
|
|
8
|
+
"inputs": { "type": "object" },
|
|
9
|
+
"props": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"properties": {
|
|
12
|
+
"options": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"properties": {
|
|
15
|
+
"row": { "type": "number", "default": 1 },
|
|
16
|
+
"col": { "type": "number", "default": 1 },
|
|
17
|
+
"rowSpan": { "type": "number", "default": 1 },
|
|
18
|
+
"colSpan": { "type": "number", "default": 1 },
|
|
19
|
+
"title": { "type": "string" },
|
|
20
|
+
"showHeader": { "type": "boolean", "default": true },
|
|
21
|
+
"className": { "type": "string" },
|
|
22
|
+
"minRowSpan": { "type": "number", "default": 1 },
|
|
23
|
+
"maxRowSpan": { "type": "number" },
|
|
24
|
+
"minColSpan": { "type": "number", "default": 1 },
|
|
25
|
+
"maxColSpan": { "type": "number" },
|
|
26
|
+
"isEditMode": { "type": "boolean" },
|
|
27
|
+
"allowScroll": { "type": "boolean", "default": false }
|
|
28
|
+
},
|
|
29
|
+
"additionalProperties": true
|
|
30
|
+
},
|
|
31
|
+
"isHidden": { "$ref": "../schemas.json#/definitions/templateExpression" }
|
|
32
|
+
},
|
|
33
|
+
"additionalProperties": true
|
|
34
|
+
},
|
|
35
|
+
"children": { "$ref": "../schemas.json#/definitions/componentChildren" }
|
|
36
|
+
},
|
|
37
|
+
"required": ["component", "name"],
|
|
38
|
+
"additionalProperties": false
|
|
39
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "Dashboard Component",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"component": { "type": "string", "const": "dashboard" },
|
|
7
|
+
"name": { "type": "string", "description": "Unique dashboard name; used in saved layout setting keys" },
|
|
8
|
+
"inputs": { "type": "object" },
|
|
9
|
+
"props": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"properties": {
|
|
12
|
+
"toolbar": {
|
|
13
|
+
"type": "array",
|
|
14
|
+
"description": "Header controls whose values are shared with dashboard widgets",
|
|
15
|
+
"items": { "$ref": "../schemas.json#/definitions/component" }
|
|
16
|
+
},
|
|
17
|
+
"options": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"properties": {
|
|
20
|
+
"rows": { "type": "number", "default": 12 },
|
|
21
|
+
"columns": { "type": "number", "default": 12 },
|
|
22
|
+
"gridGap": { "type": "number", "default": 8 },
|
|
23
|
+
"responsive": { "type": "boolean", "default": false },
|
|
24
|
+
"allowEdit": { "type": "boolean", "default": false },
|
|
25
|
+
"showGridLines": { "type": "boolean", "default": true },
|
|
26
|
+
"autoSave": { "type": "boolean", "default": false, "description": "Persist layout changes to UserSettings automatically" },
|
|
27
|
+
"title": { "type": "string" },
|
|
28
|
+
"minHeight": { "oneOf": [{ "type": "string" }, { "type": "number" }] },
|
|
29
|
+
"maxHeight": { "oneOf": [{ "type": "string" }, { "type": "number" }] },
|
|
30
|
+
"height": { "oneOf": [{ "type": "string" }, { "type": "number" }] }
|
|
31
|
+
},
|
|
32
|
+
"additionalProperties": true
|
|
33
|
+
},
|
|
34
|
+
"isHidden": { "$ref": "../schemas.json#/definitions/templateExpression" }
|
|
35
|
+
},
|
|
36
|
+
"additionalProperties": true
|
|
37
|
+
},
|
|
38
|
+
"children": {
|
|
39
|
+
"type": "array",
|
|
40
|
+
"description": "Dashboard widgets",
|
|
41
|
+
"items": { "$ref": "../schemas.json#/definitions/component" }
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"required": ["component", "name"],
|
|
45
|
+
"additionalProperties": false
|
|
46
|
+
}
|