@cxtms/cx-schema 1.9.22 → 1.9.23
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/package.json
CHANGED
|
@@ -17,6 +17,10 @@
|
|
|
17
17
|
|
|
18
18
|
Full-featured data table with views, filtering, sorting, pagination, and row actions.
|
|
19
19
|
|
|
20
|
+
**Responsive layout:**
|
|
21
|
+
- **Toolbar**: ViewSelector and search input stack full-width on mobile (`xs`), then collapse to auto-width on `sm` and above. Search input enforces a `20ch` minimum width on `sm+`.
|
|
22
|
+
- **Filters**: Filter inputs use a responsive grid — 1 per row on `xs`/`sm`, 2 per row on `md`, 3 per row on `lg`, 4 per row on `xl`.
|
|
23
|
+
|
|
20
24
|
**Props:**
|
|
21
25
|
| Prop | Type | Description |
|
|
22
26
|
|------|------|-------------|
|
|
@@ -84,6 +84,7 @@ commodities:
|
|
|
84
84
|
mapping: # dict -> List<dict>, string -> List<object>
|
|
85
85
|
name: "{{ item.name }}"
|
|
86
86
|
quantity: "{{ item.qty }}"
|
|
87
|
+
"{{ item.langKey }}": "{{ item.value }}" # dynamic key (template-substituted)
|
|
87
88
|
```
|
|
88
89
|
|
|
89
90
|
**`switch`** (value context) -- Value-based switch (case-insensitive match):
|
|
@@ -104,6 +105,7 @@ orderData:
|
|
|
104
105
|
mapping: # dict: merge overrides. array: append items
|
|
105
106
|
status: "Updated"
|
|
106
107
|
notes: "{{ newNotes }}"
|
|
108
|
+
"{{ dynamicField }}": "{{ value }}" # dynamic key (template-substituted)
|
|
107
109
|
```
|
|
108
110
|
|
|
109
111
|
**`resolve`** -- Entity ID lookup by querying a GraphQL collection:
|
|
@@ -137,6 +139,25 @@ apiKey:
|
|
|
137
139
|
initializationVector: "{{ iv }}" # optional Base64 IV
|
|
138
140
|
```
|
|
139
141
|
|
|
142
|
+
### Template-Substituted Dictionary Keys
|
|
143
|
+
|
|
144
|
+
Dictionary **keys** (not just values) support `{{ path }}` template expressions. The engine resolves each key through the same template parser before inserting it into the result dictionary. This works in:
|
|
145
|
+
|
|
146
|
+
- **Generic dictionaries** (plain object mappings in step inputs)
|
|
147
|
+
- **`foreach` complex mapping** keys
|
|
148
|
+
- **`extends` mapping** keys
|
|
149
|
+
|
|
150
|
+
```yaml
|
|
151
|
+
# Build a dict whose keys depend on a variable
|
|
152
|
+
inputs:
|
|
153
|
+
customValues:
|
|
154
|
+
"{{ fieldName }}": "{{ fieldValue }}" # single variable key
|
|
155
|
+
"{{ prefix }}_{{ lang }}": "translated text" # composite key
|
|
156
|
+
staticKey: "literal value" # plain keys pass through unchanged
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**Fallback**: If a templated key resolves to null or empty string, the engine keeps the original literal key (e.g., `{{ missingVar }}`) to avoid silently dropping entries. An `InvalidOperationException` during resolution also falls back to the literal key.
|
|
160
|
+
|
|
140
161
|
---
|
|
141
162
|
|
|
142
163
|
## Property Path Syntax (in collection, mapping, variable paths)
|