@genesislcap/foundation-forms 14.429.1 → 14.429.2

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.
Files changed (85) hide show
  1. package/dist/custom-elements.json +126 -35
  2. package/dist/dts/filters/filters.template.d.ts.map +1 -1
  3. package/dist/dts/form.d.ts +4 -10
  4. package/dist/dts/form.d.ts.map +1 -1
  5. package/dist/dts/form.styles.d.ts.map +1 -1
  6. package/dist/dts/form.template.d.ts.map +1 -1
  7. package/dist/dts/index.d.ts +8 -0
  8. package/dist/dts/index.d.ts.map +1 -1
  9. package/dist/dts/jsonforms/json-forms.d.ts.map +1 -1
  10. package/dist/dts/jsonforms/renderers/ArrayListWrapperRenderer.d.ts.map +1 -1
  11. package/dist/dts/jsonforms/renderers/BooleanControlRenderer.d.ts.map +1 -1
  12. package/dist/dts/jsonforms/renderers/CategorizationWrapperRenderer.d.ts.map +1 -1
  13. package/dist/dts/jsonforms/renderers/ConnectedMultiselectControlRenderer.d.ts.map +1 -1
  14. package/dist/dts/jsonforms/renderers/ConnectedSelectControlRenderer.d.ts.map +1 -1
  15. package/dist/dts/jsonforms/renderers/ControlWrapperRenderer.d.ts +42 -3
  16. package/dist/dts/jsonforms/renderers/ControlWrapperRenderer.d.ts.map +1 -1
  17. package/dist/dts/jsonforms/renderers/DateControlRenderer.d.ts +2 -1
  18. package/dist/dts/jsonforms/renderers/DateControlRenderer.d.ts.map +1 -1
  19. package/dist/dts/jsonforms/renderers/EnumControlRenderer.d.ts +2 -1
  20. package/dist/dts/jsonforms/renderers/EnumControlRenderer.d.ts.map +1 -1
  21. package/dist/dts/jsonforms/renderers/EnumRadioGroupControlRenderer.d.ts.map +1 -1
  22. package/dist/dts/jsonforms/renderers/FilterDateControlRenderer.d.ts +2 -1
  23. package/dist/dts/jsonforms/renderers/FilterDateControlRenderer.d.ts.map +1 -1
  24. package/dist/dts/jsonforms/renderers/FilterNumberControlRenderer.d.ts +2 -1
  25. package/dist/dts/jsonforms/renderers/FilterNumberControlRenderer.d.ts.map +1 -1
  26. package/dist/dts/jsonforms/renderers/FilterTimeControlRenderer.d.ts +2 -1
  27. package/dist/dts/jsonforms/renderers/FilterTimeControlRenderer.d.ts.map +1 -1
  28. package/dist/dts/jsonforms/renderers/LayoutArrayRenderer.d.ts +2 -1
  29. package/dist/dts/jsonforms/renderers/LayoutArrayRenderer.d.ts.map +1 -1
  30. package/dist/dts/jsonforms/renderers/LayoutFormGridRenderer.d.ts +2 -1
  31. package/dist/dts/jsonforms/renderers/LayoutFormGridRenderer.d.ts.map +1 -1
  32. package/dist/dts/jsonforms/renderers/LayoutGroupRenderer.d.ts +2 -1
  33. package/dist/dts/jsonforms/renderers/LayoutGroupRenderer.d.ts.map +1 -1
  34. package/dist/dts/jsonforms/renderers/LayoutHorizontalRenderer.d.ts +2 -1
  35. package/dist/dts/jsonforms/renderers/LayoutHorizontalRenderer.d.ts.map +1 -1
  36. package/dist/dts/jsonforms/renderers/LayoutRenderer.d.ts +29 -3
  37. package/dist/dts/jsonforms/renderers/LayoutRenderer.d.ts.map +1 -1
  38. package/dist/dts/jsonforms/renderers/LayoutVertical2ColumnsRenderer.d.ts +2 -1
  39. package/dist/dts/jsonforms/renderers/LayoutVertical2ColumnsRenderer.d.ts.map +1 -1
  40. package/dist/dts/jsonforms/renderers/MulticolumnDropdownControlRenderer.d.ts.map +1 -1
  41. package/dist/dts/jsonforms/renderers/NumberControlRenderer.d.ts +2 -1
  42. package/dist/dts/jsonforms/renderers/NumberControlRenderer.d.ts.map +1 -1
  43. package/dist/dts/jsonforms/renderers/SegmentedControlRenderer.d.ts.map +1 -1
  44. package/dist/dts/jsonforms/renderers/StepperWrapperRenderer.d.ts.map +1 -1
  45. package/dist/dts/jsonforms/renderers/StringArrayControlRenderer.d.ts.map +1 -1
  46. package/dist/dts/jsonforms/renderers/StringControlRenderer.d.ts.map +1 -1
  47. package/dist/dts/jsonforms/renderers/VerticalCategorizationWrapperRenderer.d.ts.map +1 -1
  48. package/dist/dts/jsonforms/renderers/dispatch-renderer.d.ts.map +1 -1
  49. package/dist/dts/types.d.ts +12 -0
  50. package/dist/dts/types.d.ts.map +1 -1
  51. package/dist/esm/filters/filters.template.js +1 -2
  52. package/dist/esm/form.js +2 -1
  53. package/dist/esm/form.styles.js +14 -40
  54. package/dist/esm/form.template.js +1 -2
  55. package/dist/esm/index.js +8 -0
  56. package/dist/esm/jsonforms/json-forms.js +27 -1
  57. package/dist/esm/jsonforms/renderers/ArrayListWrapperRenderer.js +48 -46
  58. package/dist/esm/jsonforms/renderers/BooleanControlRenderer.js +19 -20
  59. package/dist/esm/jsonforms/renderers/CategorizationWrapperRenderer.js +9 -4
  60. package/dist/esm/jsonforms/renderers/ConnectedMultiselectControlRenderer.js +38 -40
  61. package/dist/esm/jsonforms/renderers/ConnectedSelectControlRenderer.js +39 -39
  62. package/dist/esm/jsonforms/renderers/ControlWrapperRenderer.js +160 -7
  63. package/dist/esm/jsonforms/renderers/DateControlRenderer.js +41 -43
  64. package/dist/esm/jsonforms/renderers/EnumControlRenderer.js +27 -27
  65. package/dist/esm/jsonforms/renderers/EnumRadioGroupControlRenderer.js +30 -32
  66. package/dist/esm/jsonforms/renderers/FilterDateControlRenderer.js +81 -77
  67. package/dist/esm/jsonforms/renderers/FilterNumberControlRenderer.js +54 -51
  68. package/dist/esm/jsonforms/renderers/FilterTimeControlRenderer.js +69 -69
  69. package/dist/esm/jsonforms/renderers/LayoutArrayRenderer.js +7 -8
  70. package/dist/esm/jsonforms/renderers/LayoutFormGridRenderer.js +27 -26
  71. package/dist/esm/jsonforms/renderers/LayoutGroupRenderer.js +36 -32
  72. package/dist/esm/jsonforms/renderers/LayoutHorizontalRenderer.js +27 -26
  73. package/dist/esm/jsonforms/renderers/LayoutRenderer.js +62 -29
  74. package/dist/esm/jsonforms/renderers/LayoutVertical2ColumnsRenderer.js +18 -17
  75. package/dist/esm/jsonforms/renderers/MulticolumnDropdownControlRenderer.js +39 -41
  76. package/dist/esm/jsonforms/renderers/NumberControlRenderer.js +30 -30
  77. package/dist/esm/jsonforms/renderers/SegmentedControlRenderer.js +25 -27
  78. package/dist/esm/jsonforms/renderers/StepperWrapperRenderer.js +2 -1
  79. package/dist/esm/jsonforms/renderers/StringArrayControlRenderer.js +18 -20
  80. package/dist/esm/jsonforms/renderers/StringControlRenderer.js +41 -42
  81. package/dist/esm/jsonforms/renderers/VerticalCategorizationWrapperRenderer.js +13 -9
  82. package/dist/esm/jsonforms/renderers/dispatch-renderer.js +1 -0
  83. package/dist/foundation-forms.api.json +575 -2
  84. package/dist/foundation-forms.d.ts +101 -10
  85. package/package.json +15 -15
@@ -185,7 +185,7 @@ export const ArrayListWrapperRendererTemplate = (prefix = 'zero') => html `
185
185
  </template>
186
186
  `;
187
187
  const styles = css `
188
- :host {
188
+ array-list-wrapper {
189
189
  padding-left: calc(${designUnit} * 1px);
190
190
  display: flex;
191
191
  flex-direction: column;
@@ -205,7 +205,7 @@ const styles = css `
205
205
  --array-item-radius: calc(${designUnit} * 2px);
206
206
  }
207
207
 
208
- .array-list {
208
+ array-list-wrapper .array-list {
209
209
  display: flex;
210
210
  align-items: flex-start;
211
211
  position: relative;
@@ -222,18 +222,18 @@ const styles = css `
222
222
  border-color 0.15s ease;
223
223
  }
224
224
 
225
- .array-list:hover {
225
+ array-list-wrapper .array-list:hover {
226
226
  box-shadow: var(--array-item-shadow-hover);
227
227
  }
228
228
 
229
229
  /* Content area grows to fill space; min-width prevents flex overflow */
230
- .array-list > dispatch-renderer {
230
+ array-list-wrapper .array-list > dispatch-renderer {
231
231
  flex: 1;
232
232
  min-width: 0;
233
233
  }
234
234
 
235
235
  /* Left accent bar for visual hierarchy - industrial form-slot feel */
236
- .array-list::before {
236
+ array-list-wrapper .array-list::before {
237
237
  content: '';
238
238
  position: absolute;
239
239
  left: 0;
@@ -245,31 +245,31 @@ const styles = css `
245
245
  pointer-events: none;
246
246
  }
247
247
 
248
- .array-list.row-status-success::before {
248
+ array-list-wrapper .array-list.row-status-success::before {
249
249
  background: var(--row-status-success-color);
250
250
  }
251
251
 
252
- .array-list.row-status-failed::before {
252
+ array-list-wrapper .array-list.row-status-failed::before {
253
253
  background: var(--row-status-failed-color);
254
254
  }
255
255
 
256
- .array-list.row-status-submitting::before {
256
+ array-list-wrapper .array-list.row-status-submitting::before {
257
257
  background: var(--row-status-submitting-color);
258
258
  }
259
259
 
260
- .array-list.row-status-success {
260
+ array-list-wrapper .array-list.row-status-success {
261
261
  background-color: color-mix(in srgb, var(--row-status-success-color), transparent 90%);
262
262
  }
263
263
 
264
- .array-list.row-status-failed {
264
+ array-list-wrapper .array-list.row-status-failed {
265
265
  background-color: color-mix(in srgb, var(--row-status-failed-color), transparent 90%);
266
266
  }
267
267
 
268
- .array-list.row-status-submitting {
268
+ array-list-wrapper .array-list.row-status-submitting {
269
269
  background-color: color-mix(in srgb, var(--row-status-submitting-color), transparent 95%);
270
270
  }
271
271
 
272
- .row-status-indicator {
272
+ array-list-wrapper .row-status-indicator {
273
273
  display: flex;
274
274
  align-items: center;
275
275
  justify-content: center;
@@ -278,64 +278,65 @@ const styles = css `
278
278
  }
279
279
 
280
280
  /* Hide all status indicators by default */
281
- .row-status-indicator .status-spinner,
282
- .row-status-indicator .status-success,
283
- .row-status-indicator .status-failed {
281
+ array-list-wrapper .row-status-indicator .status-spinner,
282
+ array-list-wrapper .row-status-indicator .status-success,
283
+ array-list-wrapper .row-status-indicator .status-failed {
284
284
  display: none;
285
285
  }
286
286
 
287
287
  /* Show spinner when submitting */
288
- .array-list.row-status-submitting .row-status-indicator .status-spinner {
288
+ array-list-wrapper .array-list.row-status-submitting .row-status-indicator .status-spinner {
289
289
  display: flex;
290
290
  }
291
291
 
292
292
  /* Show success icon when successful */
293
- .array-list.row-status-success .row-status-indicator .status-success {
293
+ array-list-wrapper .array-list.row-status-success .row-status-indicator .status-success {
294
294
  display: flex;
295
295
  }
296
296
 
297
297
  /* Show failed icon when failed */
298
- .array-list.row-status-failed .row-status-indicator .status-failed {
298
+ array-list-wrapper .array-list.row-status-failed .row-status-indicator .status-failed {
299
299
  display: flex;
300
300
  }
301
301
 
302
- .status-icon {
302
+ array-list-wrapper .status-icon {
303
303
  width: calc(${designUnit} * 4px);
304
304
  height: calc(${designUnit} * 4px);
305
305
  }
306
306
 
307
- .status-success {
307
+ array-list-wrapper .status-success {
308
308
  color: var(--row-status-success-color);
309
309
  }
310
310
 
311
- .status-failed {
311
+ array-list-wrapper .status-failed {
312
312
  color: var(--row-status-failed-color);
313
313
  cursor: help;
314
314
  }
315
315
 
316
- .status-spinner {
316
+ array-list-wrapper .status-spinner {
317
317
  width: calc(${designUnit} * 4px);
318
318
  height: calc(${designUnit} * 4px);
319
319
  }
320
320
 
321
- .item-control-btn {
321
+ array-list-wrapper .item-control-btn {
322
322
  color: var(--neutral-foreground-hint, rgb(135, 155, 166));
323
323
  margin-left: calc(${designUnit} * 3px);
324
324
  }
325
325
 
326
- .item-control-btn:hover {
326
+ array-list-wrapper .item-control-btn:hover {
327
327
  color: var(--accent-foreground-hover);
328
328
  }
329
329
 
330
- .row-submit-btn {
330
+ array-list-wrapper .row-submit-btn {
331
331
  min-width: calc(${designUnit} * 8px);
332
332
  }
333
333
 
334
- .row-submit-btn[disabled] {
334
+ array-list-wrapper .row-submit-btn[disabled] {
335
335
  opacity: 0.5;
336
336
  cursor: not-allowed;
337
337
  }
338
- .button-group {
338
+
339
+ array-list-wrapper .button-group {
339
340
  display: flex;
340
341
  flex-direction: column;
341
342
  gap: 8px;
@@ -343,7 +344,7 @@ const styles = css `
343
344
 
344
345
  /* ── Grid view ────────────────────────────────────────────── */
345
346
 
346
- .grid-header {
347
+ array-list-wrapper .grid-header {
347
348
  display: flex;
348
349
  align-items: center;
349
350
  gap: 10px;
@@ -357,14 +358,14 @@ const styles = css `
357
358
  letter-spacing: 0.04em;
358
359
  }
359
360
 
360
- .grid-header-status-spacer {
361
+ array-list-wrapper .grid-header-status-spacer {
361
362
  width: var(--grid-status-track-width);
362
363
  min-width: var(--grid-status-track-width);
363
364
  flex: 0 0 var(--grid-status-track-width);
364
365
  flex-shrink: 0;
365
366
  }
366
367
 
367
- .grid-header-cell {
368
+ array-list-wrapper .grid-header-cell {
368
369
  flex: 1;
369
370
  min-width: 0;
370
371
  overflow: hidden;
@@ -375,28 +376,28 @@ const styles = css `
375
376
  gap: 4px;
376
377
  }
377
378
 
378
- .grid-header-actions {
379
+ array-list-wrapper .grid-header-actions {
379
380
  width: var(--grid-actions-track-width);
380
381
  min-width: var(--grid-actions-track-width);
381
382
  flex: 0 0 var(--grid-actions-track-width);
382
383
  text-align: center;
383
384
  }
384
385
 
385
- .grid-header-label-text {
386
+ array-list-wrapper .grid-header-label-text {
386
387
  overflow: hidden;
387
388
  text-overflow: ellipsis;
388
389
  }
389
390
 
390
- .grid-header-required-indicator {
391
+ array-list-wrapper .grid-header-required-indicator {
391
392
  color: var(--accent-foreground-rest, #0078d4);
392
393
  }
393
394
 
394
- .grid-header-tooltip {
395
+ array-list-wrapper .grid-header-tooltip {
395
396
  color: var(--neutral-foreground-rest, rgb(217, 223, 224));
396
397
  cursor: help;
397
398
  }
398
399
 
399
- .array-list.grid-row {
400
+ array-list-wrapper .array-list.grid-row {
400
401
  border: none;
401
402
  border-radius: 0;
402
403
  box-shadow: none;
@@ -408,54 +409,54 @@ const styles = css `
408
409
  gap: 10px;
409
410
  }
410
411
 
411
- .array-list.grid-row::before {
412
+ array-list-wrapper .array-list.grid-row::before {
412
413
  display: none;
413
414
  }
414
415
 
415
- .array-list.grid-row:nth-child(odd) {
416
+ array-list-wrapper .array-list.grid-row:nth-child(odd) {
416
417
  background-color: var(--neutral-layer-2, rgba(0, 0, 0, 0.02));
417
418
  }
418
419
 
419
- .array-list.grid-row:nth-child(even) {
420
+ array-list-wrapper .array-list.grid-row:nth-child(even) {
420
421
  background-color: var(--neutral-layer-1, #fff);
421
422
  }
422
423
 
423
- .array-list.grid-row:hover {
424
+ array-list-wrapper .array-list.grid-row:hover {
424
425
  background-color: var(--neutral-fill-stealth-hover, rgba(0, 0, 0, 0.06));
425
426
  box-shadow: none;
426
427
  }
427
428
 
428
- .array-list.grid-row > dispatch-renderer {
429
+ array-list-wrapper .array-list.grid-row > dispatch-renderer {
429
430
  --control-label-margin: 0;
430
431
  }
431
432
 
432
- .array-list.grid-row .row-status-indicator {
433
+ array-list-wrapper .array-list.grid-row .row-status-indicator {
433
434
  width: var(--grid-status-track-width);
434
435
  min-width: var(--grid-status-track-width);
435
436
  margin-right: 0;
436
437
  flex: 0 0 var(--grid-status-track-width);
437
438
  }
438
439
 
439
- .array-list.grid-row .button-group {
440
+ array-list-wrapper .array-list.grid-row .button-group {
440
441
  width: var(--grid-actions-track-width);
441
442
  min-width: var(--grid-actions-track-width);
442
443
  flex: 0 0 var(--grid-actions-track-width);
443
444
  align-items: center;
444
445
  }
445
446
 
446
- .array-list.grid-row .item-control-btn {
447
+ array-list-wrapper .array-list.grid-row .item-control-btn {
447
448
  margin-left: 0;
448
449
  }
449
450
 
450
- .array-list.grid-row.row-status-success {
451
+ array-list-wrapper .array-list.grid-row.row-status-success {
451
452
  background-color: color-mix(in srgb, var(--row-status-success-color), transparent 90%);
452
453
  }
453
454
 
454
- .array-list.grid-row.row-status-failed {
455
+ array-list-wrapper .array-list.grid-row.row-status-failed {
455
456
  background-color: color-mix(in srgb, var(--row-status-failed-color), transparent 90%);
456
457
  }
457
458
 
458
- .array-list.grid-row.row-status-submitting {
459
+ array-list-wrapper .array-list.grid-row.row-status-submitting {
459
460
  background-color: color-mix(in srgb, var(--row-status-submitting-color), transparent 95%);
460
461
  }
461
462
  `;
@@ -524,6 +525,7 @@ ArrayListWrapper = __decorate([
524
525
  customElement({
525
526
  name: 'array-list-wrapper',
526
527
  styles,
528
+ shadowOptions: null,
527
529
  template: html `
528
530
  ${(x) => ArrayListWrapperRendererTemplate(x.form.prefix)}
529
531
  `,
@@ -1,29 +1,28 @@
1
1
  import { mapStateToControlProps, rankWith } from '@jsonforms/core';
2
2
  import { html } from '@microsoft/fast-element';
3
3
  import { isOneOfBoolean } from '../testers/isOneOfBoolean';
4
+ import { controlWrapperTemplate } from './ControlWrapperRenderer';
4
5
  import { BOOLEAN_CONTROL_RANK } from './RenderersRanks';
5
6
  export const BooleanControlRendererTemplate = (prefix = 'zero') => html `
6
7
  <template>
7
- <control-wrapper
8
- :control=${(x) => x.control}
9
- :jsonForms=${(x) => x.jsonforms}
10
- :touched=${(x) => x.touched}
11
- ?submitted=${(x) => x.submitted}
12
- >
13
- <${prefix}-checkbox
14
- ?checked=${(x) => x.control.data}
15
- ?disabled=${(x) => !x.control.enabled}
16
- :autofocus=${(x) => x.control.config.focus}
17
- :placeholder=${(x) => x.control.config.placeholder}
18
- 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; }}"
19
- @change=${(x, c) => {
20
- x.control.handleChange(x.control.path, c.event.target.checked);
21
- x.onBlur();
22
- }}
23
- id=${(x) => x.control.path}
24
- data-test-id=${(x) => x.control.path}
25
- ></${prefix}-checkbox>
26
- </control-wrapper>
8
+ ${controlWrapperTemplate({
9
+ prefix,
10
+ innerTemplate: html `
11
+ <${prefix}-checkbox
12
+ ?checked=${(x) => x.control.data}
13
+ ?disabled=${(x) => !x.control.enabled}
14
+ :autofocus=${(x) => x.control.config.focus}
15
+ :placeholder=${(x) => x.control.config.placeholder}
16
+ 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; }}"
17
+ @change=${(x, c) => {
18
+ x.control.handleChange(x.control.path, c.event.target.checked);
19
+ x.onBlur();
20
+ }}
21
+ id=${(x) => x.control.path}
22
+ data-test-id=${(x) => x.control.path}
23
+ ></${prefix}-checkbox>
24
+ `,
25
+ })}
27
26
  </template>
28
27
  `;
29
28
  export const BooleanControlEntry = {
@@ -40,17 +40,21 @@ export const CategorizationWrapperRendererTemplate = (prefix = 'zero') => html `
40
40
  </template>
41
41
  `;
42
42
  const styles = css `
43
- .tabs-container::part(tablist) {
43
+ categorization-wrapper .tabs-container::part(tablist) {
44
44
  background-color: transparent;
45
45
  border-bottom: none;
46
46
  }
47
47
 
48
- .tab-control {
48
+ categorization-wrapper .tab-control {
49
49
  box-shadow: none;
50
- ${tabControlIconStyles}
51
50
  }
52
51
 
53
- .tab-panel-control {
52
+ categorization-wrapper .tab-control .tab-control-icon {
53
+ margin-left: 3px;
54
+ color: #f9644d;
55
+ }
56
+
57
+ categorization-wrapper .tab-panel-control {
54
58
  margin-top: 10px;
55
59
  }
56
60
  `;
@@ -75,6 +79,7 @@ CategorizationWrapper = __decorate([
75
79
  customElement({
76
80
  name: 'categorization-wrapper',
77
81
  styles,
82
+ shadowOptions: null,
78
83
  template: html `
79
84
  ${(x) => CategorizationWrapperRendererTemplate(x.form.prefix)}
80
85
  `,
@@ -2,50 +2,48 @@ import { MultiselectDatasource } from '@genesislcap/foundation-ui';
2
2
  import { mapStateToControlProps, rankWith } from '@jsonforms/core';
3
3
  import { html } from '@microsoft/fast-element';
4
4
  import { isOneOfOptionMultiselect } from '../testers/isOneOfOptionMultiselect';
5
+ import { controlWrapperTemplate } from './ControlWrapperRenderer';
5
6
  import { MULTISELECT_CONTROL_RANK } from './RenderersRanks';
6
7
  MultiselectDatasource;
7
8
  export const ConnectedMultiselectControlRendererTemplate = (prefix = 'zero') => html `
8
9
  <template>
9
- <control-wrapper
10
- :control=${(x) => x.control}
11
- :jsonForms=${(x) => x.jsonforms}
12
- :touched=${(x) => x.touched}
13
- ?submitted=${(x) => x.submitted}
14
- prefix="${prefix}"
15
- >
16
- <${prefix}-multiselect
17
- style="width: 100%"
18
- async=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.async; }}
19
- ?disabled=${(x) => !x.control.enabled}
20
- :selectedOptions=${(x) => {
21
- var _a, _b, _c;
22
- const selectedOptions = ((_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.delimiter)
23
- ? (_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)
24
- : x.control.data;
25
- return selectedOptions || [];
26
- }}
27
- 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; }}"
28
- @selectionChange=${(x, c) => {
29
- var _a, _b, _c;
30
- const value = !((_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.delimiter)
31
- ? c.event.detail
32
- : (_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);
33
- x.control.handleChange(x.control.path, value);
34
- x.$emit('change');
35
- x.onBlur();
36
- }}
37
- id=${(x) => x.control.path}
38
- data-test-id=${(x) => x.control.path}
39
- >
40
- <multiselect-datasource
41
- resourceName=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.allOptionsResourceName; }}
42
- value-field=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.valueField; }}
43
- label-field=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.labelField; }}
44
- :data=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.data; }}
45
- :datasourceConfig=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.datasourceConfig; }}
46
- ></multiselect-datasource>
47
- </${prefix}-multiselect>
48
- </control-wrapper>
10
+ ${controlWrapperTemplate({
11
+ prefix,
12
+ innerTemplate: html `
13
+ <${prefix}-multiselect
14
+ style="width: 100%"
15
+ async=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.async; }}
16
+ ?disabled=${(x) => !x.control.enabled}
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
+ }}
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; }}"
25
+ @selectionChange=${(x, c) => {
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);
30
+ x.control.handleChange(x.control.path, value);
31
+ x.$emit('change');
32
+ x.onBlur();
33
+ }}
34
+ id=${(x) => x.control.path}
35
+ data-test-id=${(x) => x.control.path}
36
+ >
37
+ <multiselect-datasource
38
+ resourceName=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.allOptionsResourceName; }}
39
+ value-field=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.valueField; }}
40
+ label-field=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.labelField; }}
41
+ :data=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.data; }}
42
+ :datasourceConfig=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.datasourceConfig; }}
43
+ ></multiselect-datasource>
44
+ </${prefix}-multiselect>
45
+ `,
46
+ })}
49
47
  </template>
50
48
  `;
51
49
  export const ConnectedMultiselectControlRendererEntry = {
@@ -3,6 +3,7 @@ import { mapStateToControlProps, or, rankWith } from '@jsonforms/core';
3
3
  import { html } from '@microsoft/fast-element';
4
4
  import { comboboxRendererStyles } from '../../form.styles';
5
5
  import { optionIs } from '../testers/optionIs';
6
+ import { controlWrapperTemplate } from './ControlWrapperRenderer';
6
7
  import { SELECT_CONTROL_RANK } from './RenderersRanks';
7
8
  OptionsDatasource;
8
9
  /**
@@ -21,45 +22,44 @@ const getConnectedSelectDisplayValue = (dispatchRenderer) => {
21
22
  };
22
23
  export const ConnectedSelectControlRendererTemplate = (prefix = 'zero') => html `
23
24
  <template>
24
- <style>${comboboxRendererStyles(prefix)}</style>
25
- <control-wrapper
26
- :control=${(x) => x.control}
27
- :jsonForms=${(x) => x.jsonforms}
28
- :touched=${(x) => x.touched}
29
- ?submitted=${(x) => x.submitted}
30
- prefix="${prefix}"
31
- >
32
- <${prefix}-combobox
33
- style="width: 100%;"
34
- async=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.async; }}
35
- placeholder=${(x) => x.control.uischema.placeholder || x.control.label}
36
- autocomplete=${(x) => { var _a; return (((_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.filterMode) === 'startsWith' ? 'both' : 'list'); }}
37
- filter-mode=${(x) => { var _a; return ((_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.filterMode) || 'contains'; }}
38
- ?disabled=${(x) => !x.control.enabled}
39
- :value=${(x) => getConnectedSelectDisplayValue(x)}
40
- 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; }}"
41
- @value-change=${(x, c) => {
42
- var _a;
43
- const value = (_a = c.event.detail) === null || _a === void 0 ? void 0 : _a.value;
44
- x.control.handleChange(x.control.path, value);
45
- x.onBlur();
46
- }}
47
- id=${(x) => x.control.path}
48
- data-test-id=${(x) => x.control.path}
49
- >
50
- <options-datasource
51
- resourceName=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.allOptionsResourceName; }}
52
- value-field=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.valueField; }}
53
- label-field=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.labelField; }}
54
- ?allow-custom-options=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.allowCustomOptions; }}
55
- option-element="${prefix}-option"
56
- :datasourceConfig=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.datasourceConfig; }}
57
- :data=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.data; }}
58
- :labelRowFormatter=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.labelRowFormatter; }}
59
- :initialSelectedValue=${(x) => x.control.data}
60
- ></options-datasource>
61
- </${prefix}-combobox>
62
- </control-wrapper>
25
+ <style>
26
+ ${comboboxRendererStyles(prefix)}
27
+ </style>
28
+ ${controlWrapperTemplate({
29
+ prefix,
30
+ innerTemplate: html `
31
+ <${prefix}-combobox
32
+ style="width: 100%;"
33
+ async=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.async; }}
34
+ placeholder=${(x) => x.control.uischema.placeholder || x.control.label}
35
+ autocomplete=${(x) => { var _a; return (((_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.filterMode) === 'startsWith' ? 'both' : 'list'); }}
36
+ filter-mode=${(x) => { var _a; return ((_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.filterMode) || 'contains'; }}
37
+ ?disabled=${(x) => !x.control.enabled}
38
+ :value=${(x) => getConnectedSelectDisplayValue(x)}
39
+ 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; }}"
40
+ @value-change=${(x, c) => {
41
+ var _a;
42
+ const value = (_a = c.event.detail) === null || _a === void 0 ? void 0 : _a.value;
43
+ x.control.handleChange(x.control.path, value);
44
+ x.onBlur();
45
+ }}
46
+ id=${(x) => x.control.path}
47
+ data-test-id=${(x) => x.control.path}
48
+ >
49
+ <options-datasource
50
+ resourceName=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.allOptionsResourceName; }}
51
+ value-field=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.valueField; }}
52
+ label-field=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.labelField; }}
53
+ ?allow-custom-options=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.allowCustomOptions; }}
54
+ option-element="${prefix}-option"
55
+ :datasourceConfig=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.datasourceConfig; }}
56
+ :data=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.data; }}
57
+ :labelRowFormatter=${(x) => { var _a; return (_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.labelRowFormatter; }}
58
+ :initialSelectedValue=${(x) => x.control.data}
59
+ ></options-datasource>
60
+ </${prefix}-combobox>
61
+ `,
62
+ })}
63
63
  </template>
64
64
  `;
65
65
  export const ConnectedSelectControlRendererEntry = {