@bpmn-io/form-js-editor 0.4.4 → 0.6.1

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.
@@ -1,5 +1,46 @@
1
1
  .fjs-editor-container {
2
- --color-blue-lighten-99: #fafcff;
2
+ --color-children-border: var(--color-grey-225-10-75);
3
+ --color-children-selected-border: var(--color-blue-205-100-50);
4
+ --color-children-selected-background: var(--color-blue-205-100-95);
5
+ --color-children-hover-border: var(--color-blue-205-100-50);
6
+
7
+ --color-context-pad-item-background: var(--color-white);
8
+ --color-context-pad-item-fill: var(--color-grey-225-10-35);
9
+ --color-context-pad-item-hover-fill: var(--color-black);
10
+
11
+ --color-palette-container-background: var(--color-grey-225-10-97);
12
+ --color-palette-container-border: var(--color-grey-225-10-80);
13
+ --color-palette-header-color: var(--color-text);
14
+ --color-palette-header-background: var(--color-grey-225-10-95);
15
+ --color-palette-header-border: var(--color-grey-225-10-80);
16
+ --color-palette-field-border: var(--color-grey-225-10-80);
17
+ --color-palette-field-hover-background: var(--color-grey-225-10-95);
18
+
19
+ --color-properties-container-background: var(--color-grey-225-10-97);
20
+ --color-properties-container-border: var(--color-grey-225-10-80);
21
+ --color-properties-header-background: var(--color-grey-225-10-95);
22
+ --color-properties-header-border: var(--color-grey-225-10-80);
23
+ --color-properties-header-icon-fill: var(--color-grey-225-10-35);
24
+ --color-properties-group-background: var(--color-grey-225-10-95);
25
+ --color-properties-group-border: var(--color-grey-225-10-80);
26
+ --color-properties-group-button-fill: var(--color-grey-225-10-35);
27
+ --color-properties-group-button-hover-fill: var(--color-black);
28
+ --color-properties-entries-border: var(--color-grey-225-10-80);
29
+ --color-properties-collapsible-remove-fill: var(--color-grey-225-10-35);
30
+ --color-properties-collapsible-remove-hover-fill: var(--color-black);
31
+ --color-properties-description: var(--color-grey-225-10-15);
32
+ --color-properties-error: var(--color-warning);
33
+ --color-properties-input-background: var(--color-white);
34
+ --color-properties-input-border: var(--color-grey-225-10-75);
35
+ --color-properties-input-error-border: var(--color-warning);
36
+ --color-properties-input-error-hover-border: var(--color-warning);
37
+ --color-properties-input-focus-border: var(--color-blue-205-100-50);
38
+ --color-properties-placeholder: var(--color-grey-225-10-80);
39
+
40
+ --color-dragula-background: var(--color-blue-205-100-45);
41
+ --color-dragula-border: var(--color-blue-205-100-45);
42
+ --color-dragula-mirror-background: var(--color-white);
43
+ --color-dragula-mirror-border: var(--color-grey-225-10-80);
3
44
  }
4
45
 
5
46
  .fjs-editor-container {
@@ -41,7 +82,7 @@
41
82
  }
42
83
 
43
84
  .fjs-editor-container .fjs-children .fjs-children {
44
- border: dashed 2px var(--color-silver-darken-80);
85
+ border: dashed 2px var(--color-children-border);
45
86
  border-radius: 3px;
46
87
  }
47
88
 
@@ -75,12 +116,17 @@
75
116
  }
76
117
 
77
118
  .fjs-editor-container .fjs-children > .fjs-element.fjs-editor-selected {
78
- border-color: var(--color-blue-lighten-75);
79
- background-color: var(--color-blue-lighten-93);
119
+ border-color: var(--color-children-selected-border);
120
+ background-color: var(--color-children-selected-background);
80
121
  }
81
122
 
82
123
  .fjs-editor-container .fjs-children > .fjs-element:hover {
83
- border-color: var(--color-blue-lighten-82) !important;
124
+ border-color: var(--color-children-hover-border) !important;
125
+ }
126
+
127
+ .fjs-editor-container .fjs-input:disabled,
128
+ .fjs-editor-container .fjs-select:disabled {
129
+ pointer-events: none;
84
130
  }
85
131
 
86
132
  /**
@@ -90,25 +136,24 @@
90
136
  position: absolute;
91
137
  top: 3px;
92
138
  right: 3px;
93
- background-color: white;
94
- border-radius: 3px;
95
139
  box-shadow: 1px 1px 1px 1px rgb(0 0 0 / 10%);
96
140
  }
97
141
 
98
142
  .fjs-editor-container .fjs-context-pad-item {
99
143
  border: none;
100
- background-color: var(--color-white);
144
+ border-radius: 3px;
145
+ background-color: var(--color-context-pad-item-background);
101
146
  padding: 0;
102
147
  width: 24px;
103
148
  height: 24px;
104
- fill: var(--color-grey-base-40);
149
+ fill: var(--color-context-pad-item-fill);
105
150
  display: flex;
106
151
  justify-content: center;
107
152
  align-items: center;
108
153
  }
109
154
 
110
155
  .fjs-editor-container .fjs-context-pad-item:hover {
111
- fill: var(--color-black);
156
+ fill: var(--color-context-pad-item-hover-fill);
112
157
  }
113
158
 
114
159
  /**
@@ -116,16 +161,17 @@
116
161
  */
117
162
  .fjs-editor-container .fjs-palette-container {
118
163
  width: 200px;
119
- background-color: var(--color-silver-base-97);
120
- border-right: solid 1px var(--color-silver-darken-80);
164
+ background-color: var(--color-palette-container-background);
165
+ border-right: solid 1px var(--color-palette-container-border);
121
166
  }
122
167
 
123
168
  .fjs-editor-container .fjs-palette-header {
124
169
  font-size: 12px;
125
170
  font-weight: bold;
171
+ color: var(--color-palette-header-color);
126
172
  padding: 10px;
127
- border-bottom: solid 1px var(--color-silver-darken-80);
128
- background-color: var(--color-silver-darken-94);
173
+ border-bottom: solid 1px var(--color-palette-header-border);
174
+ background-color: var(--color-palette-header-background);
129
175
  }
130
176
 
131
177
  .fjs-editor-container .fjs-palette-field {
@@ -135,8 +181,9 @@
135
181
  justify-content: flex-start;
136
182
  align-items: center;
137
183
  flex-direction: row;
138
- border-bottom: solid 1px var(--color-silver-darken-80);
184
+ border-bottom: solid 1px var(--color-palette-field-border);
139
185
  font-size: 14px;
186
+ color: var(--color-text);
140
187
  }
141
188
 
142
189
  .fjs-editor-container .fjs-palette-field-icon {
@@ -144,7 +191,7 @@
144
191
  }
145
192
 
146
193
  .fjs-editor-container .fjs-palette-field:hover {
147
- background-color: var(--color-silver-darken-94);
194
+ background-color: var(--color-palette-field-hover-background);
148
195
  cursor: default;
149
196
  }
150
197
 
@@ -153,9 +200,10 @@
153
200
  */
154
201
  .fjs-editor-container .fjs-properties-container {
155
202
  width: 300px;
156
- background-color: var(--color-silver-base-97);
157
- border-left: solid 1px var(--color-silver-darken-80);
203
+ background-color: var(--color-properties-container-background);
204
+ border-left: solid 1px var(--color-properties-container-border);
158
205
  height: 100%;
206
+ color: var(--color-text);
159
207
  }
160
208
 
161
209
  .fjs-editor-container .fjs-properties-panel * {
@@ -168,8 +216,8 @@
168
216
  align-items: center;
169
217
  font-size: 14px;
170
218
  padding: 10px;
171
- background-color: var(--color-silver-darken-94);
172
- border-bottom: solid 1px var(--color-silver-darken-80);
219
+ background-color: var(--color-properties-header-background);
220
+ border-bottom: solid 1px var(--color-properties-header-border);
173
221
  }
174
222
 
175
223
  .fjs-editor-container .fjs-properties-panel-header-icon {
@@ -177,6 +225,7 @@
177
225
  display: flex;
178
226
  flex-direction: row;
179
227
  align-items: center;
228
+ fill: var(--color-properties-header-icon-fill);
180
229
  }
181
230
 
182
231
  .fjs-editor-container .fjs-properties-panel-header-type {
@@ -191,8 +240,8 @@
191
240
  align-items: center;
192
241
  font-size: 14px;
193
242
  padding: 10px;
194
- border-bottom: solid 1px var(--color-silver-darken-80);
195
- background-color: var(--color-silver-darken-94);
243
+ border-bottom: solid 1px var(--color-properties-group-border);
244
+ background-color: var(--color-properties-group-background);
196
245
  }
197
246
 
198
247
  .fjs-editor-container .fjs-properties-panel-group-header-buttons .fjs-properties-panel-group-header-button {
@@ -203,7 +252,7 @@
203
252
  height: 20px;
204
253
  margin-right: 10px;
205
254
  padding: 0;
206
- fill: var(--color-grey-base-40);
255
+ fill: var(--color-properties-group-button-fill);
207
256
  border: none;
208
257
  background: none;
209
258
  }
@@ -213,11 +262,11 @@
213
262
  }
214
263
 
215
264
  .fjs-editor-container .fjs-properties-panel-group-header-buttons .fjs-properties-panel-group-header-button:hover {
216
- fill: var(--color-black);
265
+ fill: var(--color-properties-group-button-hover-fill);
217
266
  }
218
267
 
219
268
  .fjs-editor-container .fjs-properties-panel-group-entries {
220
- border-bottom: solid 1px var(--color-silver-darken-80);
269
+ border-bottom: solid 1px var(--color-properties-entries-border);
221
270
  }
222
271
 
223
272
  .fjs-editor-container .fjs-properties-panel-group:last-child .fjs-properties-panel-group-entries {
@@ -262,11 +311,11 @@
262
311
  height: 22px;
263
312
  width: 22px;
264
313
  padding: 0;
265
- fill: var(--color-grey-base-40);
314
+ fill: var(--color-properties-collapsible-remove-fill);
266
315
  }
267
316
 
268
317
  .fjs-editor-container .fjs-properties-panel-collapsible-entry-header-remove-entry:hover {
269
- fill: var(--color-black);
318
+ fill: var(--color-properties-collapsible-remove-hover-fill);
270
319
  }
271
320
 
272
321
  .fjs-editor-container .fjs-properties-panel-collapsible-entry-entries {
@@ -290,11 +339,11 @@
290
339
 
291
340
  .fjs-editor-container .fjs-properties-panel-label,
292
341
  .fjs-editor-container .fjs-properties-panel-description {
293
- color: var(--color-grey-base-40);
342
+ color: var(--color-properties-description);
294
343
  }
295
344
 
296
345
  .fjs-editor-container .fjs-properties-panel-error {
297
- color: var(--color-warning);
346
+ color: var(--color-properties-error);
298
347
  }
299
348
 
300
349
  .fjs-editor-container .fjs-properties-panel-description,
@@ -303,11 +352,12 @@
303
352
  }
304
353
 
305
354
  .fjs-editor-container .fjs-properties-panel-input {
306
- background-color: var(--color-white);
307
- border: solid 1px var(--color-silver-darken-80);
355
+ background-color: var(--color-properties-input-background);
356
+ border: solid 1px var(--color-properties-input-border);
308
357
  border-radius: 3px;
309
358
  padding: 4px 8px;
310
359
  font-size: 14px;
360
+ font-family: inherit;
311
361
  }
312
362
 
313
363
  .fjs-editor-container .fjs-properties-panel-input[type=number],
@@ -319,29 +369,29 @@
319
369
  }
320
370
 
321
371
  .fjs-editor-container .fjs-properties-panel-input.fjs-has-error {
322
- border-color: var(--color-warning);
372
+ border-color: var(--color-properties-input-error-border);
323
373
  }
324
374
 
325
375
  .fjs-editor-container .fjs-properties-panel-input.fjs-has-error:focus {
326
- border-color: var(--color-warning);
327
- box-shadow: 0 0 0 4px var(--color-red-lighten-85), 0 0 0 1px var(--color-silver-darken-80) inset;
376
+ border-color: var(--color-properties-input-error-hover-border);
377
+ box-shadow: 0 0 0 4px var(--color-red-360-100-92), 0 0 0 1px var(--color-grey-225-10-75) inset;
328
378
  }
329
379
 
330
380
  .fjs-editor-container .fjs-properties-panel-input:focus {
331
381
  outline: none;
332
- box-shadow: 0 0 0 4px var(--color-blue-lighten-82), 0 0 0 1px var(--color-silver-darken-80) inset;
333
- border: solid 1px var(--color-blue-darken-55);
382
+ box-shadow: 0 0 0 4px var(--color-blue-205-100-80), 0 0 0 1px var(--color-grey-225-10-75) inset;
383
+ border: solid 1px var(--color-properties-input-focus-border);
334
384
  }
335
385
 
336
386
  .fjs-editor-container .fjs-properties-panel-placeholder {
337
387
  padding: 10px;
338
- color: var(--color-silver-darken-80);
388
+ color: var(--color-properties-placeholder);
339
389
  font-size: 14px;
340
390
  text-align: center;
341
391
  }
342
392
 
343
393
  .fjs-editor-container textarea.fjs-properties-panel-input {
344
- font-family: sans-serif;
394
+ font-family: inherit;
345
395
  resize: vertical;
346
396
  }
347
397
 
@@ -349,8 +399,8 @@
349
399
  * Custom Dragula Styles
350
400
  */
351
401
  .gu-transit {
352
- background: var(--color-blue-darken-62) !important;
353
- border: solid 2px var(--color-blue-darken-62) !important;
402
+ background: var(--color-dragula-background) !important;
403
+ border: solid 2px var(--color-dragula-border) !important;
354
404
  border-radius: 3px !important;
355
405
  filter: none !important;
356
406
  height: 0 !important;
@@ -363,8 +413,8 @@
363
413
  }
364
414
 
365
415
  .gu-mirror {
366
- background-color: white !important;
367
- border: solid 1px var(--color-silver-darken-80) !important;
416
+ background-color: var(--color-dragula-mirror-background) !important;
417
+ border: solid 1px var(--color-dragula-mirror-border) !important;
368
418
  border-radius: 3px !important;
369
419
  box-shadow: 1px 1px 1px 1px rgb(0 0 0 / 10%) !important;
370
420
  display: flex !important;
package/dist/index.cjs CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var Ids = require('ids');
5
6
  var minDash = require('min-dash');
6
7
  var formJsViewer = require('@bpmn-io/form-js-viewer');
7
8
  var preact = require('preact');
@@ -14,6 +15,7 @@ var arrayMove = require('array-move');
14
15
 
15
16
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
17
 
18
+ var Ids__default = /*#__PURE__*/_interopDefaultLegacy(Ids);
17
19
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
18
20
  var dragula__default = /*#__PURE__*/_interopDefaultLegacy(dragula);
19
21
 
@@ -1014,7 +1016,7 @@ function CheckboxInput(props) {
1014
1016
  };
1015
1017
 
1016
1018
  return jsxRuntime.jsxs("div", {
1017
- class: "fjs-properties-panel-textfield",
1019
+ class: "fjs-properties-panel-checkbox",
1018
1020
  children: [jsxRuntime.jsx("label", {
1019
1021
  for: prefixId(id),
1020
1022
  class: "fjs-properties-panel-label",
@@ -1069,7 +1071,7 @@ function NumberInput(props) {
1069
1071
  }
1070
1072
  }, [_onInput]);
1071
1073
  return jsxRuntime.jsxs("div", {
1072
- class: "fjs-properties-panel-textfield",
1074
+ class: "fjs-properties-panel-number",
1073
1075
  children: [jsxRuntime.jsx("label", {
1074
1076
  for: prefixId(id),
1075
1077
  class: "fjs-properties-panel-label",
@@ -1102,7 +1104,7 @@ function Select(props) {
1102
1104
  };
1103
1105
 
1104
1106
  return jsxRuntime.jsxs("div", {
1105
- class: "fjs-properties-panel-textfield",
1107
+ class: "fjs-properties-panel-select",
1106
1108
  children: [jsxRuntime.jsx("label", {
1107
1109
  for: prefixId(id),
1108
1110
  class: "fjs-properties-panel-label",
@@ -1136,7 +1138,7 @@ function Textarea(props) {
1136
1138
  _onInput(value.length ? value : undefined);
1137
1139
  }, [_onInput]);
1138
1140
  return jsxRuntime.jsxs("div", {
1139
- class: "fjs-properties-panel-textfield",
1141
+ class: "fjs-properties-panel-textarea",
1140
1142
  children: [jsxRuntime.jsx("label", {
1141
1143
  for: prefixId(id),
1142
1144
  class: "fjs-properties-panel-label",
@@ -1188,7 +1190,7 @@ function TextInput(props) {
1188
1190
  }
1189
1191
 
1190
1192
  return jsxRuntime.jsxs("div", {
1191
- class: "fjs-properties-panel-textfield",
1193
+ class: "fjs-properties-panel-text",
1192
1194
  children: [jsxRuntime.jsx("label", {
1193
1195
  for: prefixId(id),
1194
1196
  class: "fjs-properties-panel-label",
@@ -1270,6 +1272,41 @@ function NumberInputEntry(props) {
1270
1272
  });
1271
1273
  }
1272
1274
 
1275
+ function SelectEntry(props) {
1276
+ const {
1277
+ editField,
1278
+ field,
1279
+ id,
1280
+ description,
1281
+ label,
1282
+ options,
1283
+ path
1284
+ } = props;
1285
+
1286
+ const onChange = value => {
1287
+ if (editField && path) {
1288
+ editField(field, path, value);
1289
+ } else {
1290
+ props.onChange(value);
1291
+ }
1292
+ };
1293
+
1294
+ const value = path ? minDash.get(field, path, '') : props.value;
1295
+ return jsxRuntime.jsxs("div", {
1296
+ class: "fjs-properties-panel-entry",
1297
+ children: [jsxRuntime.jsx(Select, {
1298
+ id: id,
1299
+ label: label,
1300
+ onChange: onChange,
1301
+ options: options,
1302
+ value: value
1303
+ }), description && jsxRuntime.jsx("div", {
1304
+ class: "fjs-properties-panel-description",
1305
+ children: description
1306
+ })]
1307
+ });
1308
+ }
1309
+
1273
1310
  function TextareaEntry(props) {
1274
1311
  const {
1275
1312
  editField,
@@ -1480,12 +1517,6 @@ function ActionEntry(props) {
1480
1517
  editField,
1481
1518
  field
1482
1519
  } = props;
1483
-
1484
- const onChange = value => {
1485
- editField(field, 'action', value);
1486
- };
1487
-
1488
- const value = field.action;
1489
1520
  const options = [{
1490
1521
  label: 'Submit',
1491
1522
  value: 'submit'
@@ -1493,15 +1524,13 @@ function ActionEntry(props) {
1493
1524
  label: 'Reset',
1494
1525
  value: 'reset'
1495
1526
  }];
1496
- return jsxRuntime.jsx("div", {
1497
- class: "fjs-properties-panel-entry",
1498
- children: jsxRuntime.jsx(Select, {
1499
- id: "action",
1500
- label: "Action",
1501
- options: options,
1502
- onChange: onChange,
1503
- value: value
1504
- })
1527
+ return jsxRuntime.jsx(SelectEntry, {
1528
+ editField: editField,
1529
+ field: field,
1530
+ id: "action",
1531
+ label: "Action",
1532
+ options: options,
1533
+ path: ['action']
1505
1534
  });
1506
1535
  }
1507
1536
 
@@ -1555,6 +1584,113 @@ function DescriptionEntry(props) {
1555
1584
  });
1556
1585
  }
1557
1586
 
1587
+ function DefaultValueEntry(props) {
1588
+ const {
1589
+ editField,
1590
+ field
1591
+ } = props;
1592
+ const {
1593
+ defaultValue,
1594
+ type,
1595
+ values = []
1596
+ } = field;
1597
+
1598
+ if (type === 'checkbox') {
1599
+ const options = [{
1600
+ label: 'Checked',
1601
+ value: 'true'
1602
+ }, {
1603
+ label: 'Not checked',
1604
+ value: 'false'
1605
+ }];
1606
+
1607
+ const onChange = value => {
1608
+ editField(field, ['defaultValue'], parseStringToBoolean(value));
1609
+ };
1610
+
1611
+ return jsxRuntime.jsx(SelectEntry, {
1612
+ id: "defaultValue",
1613
+ label: "Default Value",
1614
+ onChange: onChange,
1615
+ options: options,
1616
+ value: parseBooleanToString(defaultValue)
1617
+ });
1618
+ }
1619
+
1620
+ if (type === 'number') {
1621
+ return jsxRuntime.jsx(NumberInputEntry, {
1622
+ editField: editField,
1623
+ field: field,
1624
+ id: "defaultValue",
1625
+ label: "Default Value",
1626
+ path: ['defaultValue']
1627
+ });
1628
+ }
1629
+
1630
+ if (type === 'radio' || type === 'select') {
1631
+ const options = [{
1632
+ label: '<none>'
1633
+ }, ...values];
1634
+
1635
+ const onChange = value => {
1636
+ editField(field, ['defaultValue'], value.length ? value : undefined);
1637
+ };
1638
+
1639
+ return jsxRuntime.jsx(SelectEntry, {
1640
+ id: "defaultValue",
1641
+ label: "Default Value",
1642
+ onChange: onChange,
1643
+ options: options,
1644
+ value: defaultValue
1645
+ });
1646
+ }
1647
+
1648
+ if (type === 'textfield') {
1649
+ return jsxRuntime.jsx(TextInputEntry, {
1650
+ editField: editField,
1651
+ field: field,
1652
+ id: "defaultValue",
1653
+ label: "Default Value",
1654
+ path: ['defaultValue']
1655
+ });
1656
+ }
1657
+ }
1658
+
1659
+ function parseStringToBoolean(value) {
1660
+ if (value === 'true') {
1661
+ return true;
1662
+ }
1663
+
1664
+ return false;
1665
+ }
1666
+
1667
+ function parseBooleanToString(value) {
1668
+ if (value === true) {
1669
+ return 'true';
1670
+ }
1671
+
1672
+ return 'false';
1673
+ }
1674
+
1675
+ function DisabledEntry(props) {
1676
+ const {
1677
+ editField,
1678
+ field
1679
+ } = props;
1680
+
1681
+ const onChange = value => {
1682
+ editField(field, 'disabled', value);
1683
+ };
1684
+
1685
+ return jsxRuntime.jsx(CheckboxInputEntry, {
1686
+ id: "disabled",
1687
+ field: field,
1688
+ label: "Disabled",
1689
+ path: ['disabled'],
1690
+ onChange: onChange
1691
+ });
1692
+ }
1693
+
1558
1694
  function IdEntry(props) {
1559
1695
  const {
1560
1696
  editField,
@@ -1738,6 +1874,13 @@ function GeneralGroup(field, editField) {
1738
1874
  }));
1739
1875
  }
1740
1876
 
1877
+ if (INPUTS.includes(type)) {
1878
+ entries.push(jsxRuntime.jsx(DefaultValueEntry, {
1879
+ editField: editField,
1880
+ field: field
1881
+ }));
1882
+ }
1883
+
1741
1884
  if (type === 'button') {
1742
1885
  entries.push(jsxRuntime.jsx(ActionEntry, {
1743
1886
  editField: editField,
@@ -1759,6 +1902,13 @@ function GeneralGroup(field, editField) {
1759
1902
  }));
1760
1903
  }
1761
1904
 
1905
+ if (INPUTS.includes(type)) {
1906
+ entries.push(jsxRuntime.jsx(DisabledEntry, {
1907
+ editField: editField,
1908
+ field: field
1909
+ }));
1910
+ }
1911
+
1762
1912
  return jsxRuntime.jsx(Group, {
1763
1913
  label: "General",
1764
1914
  children: entries.length ? entries : null
@@ -1861,7 +2011,7 @@ function ValuesGroup(field, editField) {
1861
2011
  field: field,
1862
2012
  index: index
1863
2013
  })
1864
- }, `${id}-${value.value}`);
2014
+ }, `${id}-${index}`);
1865
2015
  })
1866
2016
  });
1867
2017
  }
@@ -1900,6 +2050,7 @@ function PropertiesPanel(props) {
1900
2050
  editField,
1901
2051
  field
1902
2052
  } = props;
2053
+ const eventBus = useService('eventBus');
1903
2054
 
1904
2055
  if (!field) {
1905
2056
  return jsxRuntime.jsx("div", {
@@ -1908,8 +2059,6 @@ function PropertiesPanel(props) {
1908
2059
  });
1909
2060
  }
1910
2061
 
1911
- const eventBus = useService('eventBus');
1912
-
1913
2062
  const onFocus = () => eventBus.fire('propertiesPanel.focusin');
1914
2063
 
1915
2064
  const onBlur = () => eventBus.fire('propertiesPanel.focusout');
@@ -2183,8 +2332,9 @@ function FormEditor$1(props) {
2183
2332
  }
2184
2333
 
2185
2334
  return injector.get(type, strict);
2186
- }
2335
+ },
2187
2336
 
2337
+ formId: formEditor._id
2188
2338
  };
2189
2339
  const onSubmit = hooks$1.useCallback(() => {}, []);
2190
2340
  const onReset = hooks$1.useCallback(() => {}, []);
@@ -2660,6 +2810,7 @@ function isShift(event) {
2660
2810
 
2661
2811
  var KEYDOWN_EVENT = 'keyboard.keydown',
2662
2812
  KEYUP_EVENT = 'keyboard.keyup';
2813
+ var HANDLE_MODIFIER_ATTRIBUTE = 'input-handle-modified-keys';
2663
2814
  var DEFAULT_PRIORITY$1 = 1000;
2664
2815
  /**
2665
2816
  * A keyboard abstraction that may be activated and
@@ -2738,7 +2889,27 @@ Keyboard.prototype._keyHandler = function (event, type) {
2738
2889
  };
2739
2890
 
2740
2891
  Keyboard.prototype._isEventIgnored = function (event) {
2741
- return isInput(event.target) && !isCmd(event);
2892
+ return isInput(event.target) && this._isModifiedKeyIgnored(event);
2893
+ };
2894
+
2895
+ Keyboard.prototype._isModifiedKeyIgnored = function (event) {
2896
+ if (!isCmd(event)) {
2897
+ return true;
2898
+ }
2899
+
2900
+ var allowedModifiers = this._getAllowedModifiers(event.target);
2901
+
2902
+ return !allowedModifiers.includes(event.key);
2903
+ };
2904
+
2905
+ Keyboard.prototype._getAllowedModifiers = function (element) {
2906
+ var modifierContainer = minDom.closest(element, '[' + HANDLE_MODIFIER_ATTRIBUTE + ']', true);
2907
+
2908
+ if (!modifierContainer || this._node && !this._node.contains(modifierContainer)) {
2909
+ return [];
2910
+ }
2911
+
2912
+ return modifierContainer.getAttribute(HANDLE_MODIFIER_ATTRIBUTE).split(',');
2742
2913
  };
2743
2914
 
2744
2915
  Keyboard.prototype.bind = function (node) {
@@ -4291,6 +4462,7 @@ var SelectionModule = {
4291
4462
  selectionBehavior: ['type', SelectionBehavior]
4292
4463
  };
4293
4464
 
4465
+ const ids = new Ids__default['default']([32, 36, 1]);
4294
4466
  /**
4295
4467
  * @typedef { import('./types').Injector } Injector
4296
4468
  * @typedef { import('./types').Module } Module
@@ -4315,11 +4487,20 @@ class FormEditor {
4315
4487
  * @param {FormEditorOptions} options
4316
4488
  */
4317
4489
  constructor(options = {}) {
4490
+ /**
4491
+ * @public
4492
+ * @type {String}
4493
+ */
4494
+ this._id = ids.next();
4318
4495
  /**
4319
4496
  * @private
4320
4497
  * @type {Element}
4321
4498
  */
4499
+
4322
4500
  this._container = formJsViewer.createFormContainer();
4501
+
4502
+ this._container.setAttribute('input-handle-modified-keys', 'z,y');
4503
+
4323
4504
  const {
4324
4505
  container,
4325
4506
  exporter,
@@ -4578,10 +4759,9 @@ function exportSchema(schema, exporter, schemaVersion) {
4578
4759
 
4579
4760
  return value;
4580
4761
  });
4581
- return {
4582
- schemaVersion,
4762
+ return { ...cleanedSchema,
4583
4763
  ...exportDetails,
4584
- ...cleanedSchema
4764
+ schemaVersion
4585
4765
  };
4586
4766
  }
4587
4767