@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
@@ -1,60 +1,63 @@
1
1
  import { mapStateToControlProps, rankWith } from '@jsonforms/core';
2
2
  import { html } from '@microsoft/fast-element';
3
3
  import { isOneOfNumber } from '../testers/isOneOfNumber';
4
+ import { controlWrapperTemplate } from './ControlWrapperRenderer';
4
5
  import { NUMBER_CONTROL_RANK } from './RenderersRanks';
5
6
  export const FilterNumberControlRendererTemplate = (prefix = 'zero') => html `
6
7
  <template>
7
- <control-wrapper :control=${(x) => x.control} ?submitted=${(x) => x.submitted} prefix="${prefix}"
8
- >
9
- <${prefix}-text-field
10
- :value=${(x) => { var _a; return (((_a = x.control.data) === null || _a === void 0 ? void 0 : _a.min) === undefined ? '' : x.control.data.min); }}
11
- 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; }}"
12
- @change=${(x, c) => {
13
- var _a, _b;
14
- const value = parseFloat(c.event.target.value);
15
- return x.control.handleChange(x.control.path, !isNaN(value)
16
- ? {
17
- min: value,
18
- max: ((_a = x.control.data) === null || _a === void 0 ? void 0 : _a.max) < value ? undefined : (_b = x.control.data) === null || _b === void 0 ? void 0 : _b.max,
19
- type: 'number',
20
- }
21
- : Object.assign(Object.assign({}, x.control.data), { min: undefined }));
22
- }}
23
- placeholder="Min"
24
- id=${(x) => `min-${x.control.path}`}
25
- data-test-id=${(x) => `min-${x.control.path}`}
26
- @blur=${(x) => x.onBlur()}
27
- style="width: 100%"
28
- ></${prefix}-text-field>
29
- <span
30
- style="
31
- font-size: xx-large;
32
- color: var(--neutral-stroke-divider-rest);
33
- padding: calc(var(--design-unit) * 1px);"
34
- >
35
- -
36
- </span>
37
- <${prefix}-text-field
38
- :value=${(x) => { var _a; return (((_a = x.control.data) === null || _a === void 0 ? void 0 : _a.max) === undefined ? '' : x.control.data.max); }}
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
- @change=${(x, c) => {
41
- var _a, _b;
42
- const value = parseFloat(c.event.target.value);
43
- return x.control.handleChange(x.control.path, !isNaN(value)
44
- ? {
45
- min: ((_a = x.control.data) === null || _a === void 0 ? void 0 : _a.min) > value ? undefined : (_b = x.control.data) === null || _b === void 0 ? void 0 : _b.min,
46
- max: value,
47
- type: 'number',
48
- }
49
- : Object.assign(Object.assign({}, x.control.data), { max: undefined }));
50
- }}
51
- placeholder="Max"
52
- id=${(x) => `max-${x.control.path}`}
53
- data-test-id=${(x) => `max-${x.control.path}`}
54
- @blur=${(x) => x.onBlur()}
55
- style="width: 100%"
56
- ></${prefix}-text-field>
57
- </control-wrapper>
8
+ ${controlWrapperTemplate({
9
+ prefix,
10
+ innerTemplate: html `
11
+ <${prefix}-text-field
12
+ :value=${(x) => { var _a; return (((_a = x.control.data) === null || _a === void 0 ? void 0 : _a.min) === undefined ? '' : x.control.data.min); }}
13
+ 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; }}"
14
+ @change=${(x, c) => {
15
+ var _a, _b;
16
+ const value = parseFloat(c.event.target.value);
17
+ return x.control.handleChange(x.control.path, !isNaN(value)
18
+ ? {
19
+ min: value,
20
+ max: ((_a = x.control.data) === null || _a === void 0 ? void 0 : _a.max) < value ? undefined : (_b = x.control.data) === null || _b === void 0 ? void 0 : _b.max,
21
+ type: 'number',
22
+ }
23
+ : Object.assign(Object.assign({}, x.control.data), { min: undefined }));
24
+ }}
25
+ placeholder="Min"
26
+ id=${(x) => `min-${x.control.path}`}
27
+ data-test-id=${(x) => `min-${x.control.path}`}
28
+ @blur=${(x) => x.onBlur()}
29
+ style="width: 100%"
30
+ ></${prefix}-text-field>
31
+ <span
32
+ style="
33
+ font-size: xx-large;
34
+ color: var(--neutral-stroke-divider-rest);
35
+ padding: calc(var(--design-unit) * 1px);"
36
+ >
37
+ -
38
+ </span>
39
+ <${prefix}-text-field
40
+ :value=${(x) => { var _a; return (((_a = x.control.data) === null || _a === void 0 ? void 0 : _a.max) === undefined ? '' : x.control.data.max); }}
41
+ 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; }}"
42
+ @change=${(x, c) => {
43
+ var _a, _b;
44
+ const value = parseFloat(c.event.target.value);
45
+ return x.control.handleChange(x.control.path, !isNaN(value)
46
+ ? {
47
+ min: ((_a = x.control.data) === null || _a === void 0 ? void 0 : _a.min) > value ? undefined : (_b = x.control.data) === null || _b === void 0 ? void 0 : _b.min,
48
+ max: value,
49
+ type: 'number',
50
+ }
51
+ : Object.assign(Object.assign({}, x.control.data), { max: undefined }));
52
+ }}
53
+ placeholder="Max"
54
+ id=${(x) => `max-${x.control.path}`}
55
+ data-test-id=${(x) => `max-${x.control.path}`}
56
+ @blur=${(x) => x.onBlur()}
57
+ style="width: 100%"
58
+ ></${prefix}-text-field>
59
+ `,
60
+ })}
58
61
  </template>
59
62
  `;
60
63
  export const FilterNumberControlRendererEntry = {
@@ -1,77 +1,77 @@
1
1
  import { mapStateToControlProps, rankWith } from '@jsonforms/core';
2
2
  import { html } from '@microsoft/fast-element';
3
3
  import { isOneOfTime } from '../testers/isTime';
4
+ import { controlWrapperTemplate } from './ControlWrapperRenderer';
4
5
  import { TIME_CONTROL_RANK } from './RenderersRanks';
5
6
  export const TimeControlRendererTemplate = (prefix = 'zero') => html `
6
7
  <template>
7
- <control-wrapper :control=${(x) => x.control} ?submitted=${(x) => x.submitted} prefix="${prefix}">
8
-
9
-
10
- <${prefix}-text-field
11
- :value=${(x) => {
12
- var _a;
13
- const time = (_a = x.control.data) === null || _a === void 0 ? void 0 : _a.min;
14
- if (!time)
15
- return '';
16
- return `${time}`;
17
- }}
18
-
19
- id=${(x) => `min-${x.control.path}`}
20
- type="time"
21
- data-test-id=${(x) => `min-${x.control.path}`}
22
- 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; }}"
23
-
24
- @blur=${(x, c) => {
25
- var _a, _b;
26
- const minValue = c.event.target.control.value;
27
- const maxValue = (_a = x.control.data) === null || _a === void 0 ? void 0 : _a.max;
28
- const setMin = minValue ? minValue : undefined;
29
- const setMax = maxValue < minValue ? undefined : (_b = x.control.data) === null || _b === void 0 ? void 0 : _b.max;
30
- x.control.handleChange(x.control.path, {
31
- min: setMin,
32
- max: setMax,
33
- type: 'time',
34
- });
35
- x.onBlur();
36
- }}
37
- style="width: 100%"
38
- ></${prefix}-text-field>
39
- <span
40
- style="
41
- font-size: xx-large;
42
- color: var(--neutral-stroke-divider-rest);
43
- padding: calc(var(--design-unit) * 1px);"
44
- >
45
- -
46
- </span>
47
- <${prefix}-text-field
48
- :value=${(x) => {
49
- var _a;
50
- const time = (_a = x.control.data) === null || _a === void 0 ? void 0 : _a.max;
51
- if (!time)
52
- return '';
53
- return `${time}`;
54
- }}
55
- id=${(x) => `max-${x.control.path}`}
56
- type="time"
57
- data-test-id=${(x) => `max-${x.control.path}`}
58
- 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; }}"
59
- @blur=${(x, c) => {
60
- var _a, _b;
61
- const maxValue = c.event.target.control.value;
62
- const minValue = (_a = x.control.data) === null || _a === void 0 ? void 0 : _a.min;
63
- const setMin = minValue > maxValue ? undefined : (_b = x.control.data) === null || _b === void 0 ? void 0 : _b.min;
64
- const setMax = maxValue ? maxValue : undefined;
65
- x.control.handleChange(x.control.path, {
66
- min: setMin,
67
- max: setMax,
68
- type: 'time',
69
- });
70
- x.onBlur();
71
- }}
72
- style="width: 100%"
73
- ></${prefix}-text-field>
74
- </control-wrapper>
8
+ ${controlWrapperTemplate({
9
+ prefix,
10
+ innerTemplate: html `
11
+ <${prefix}-text-field
12
+ :value=${(x) => {
13
+ var _a;
14
+ const time = (_a = x.control.data) === null || _a === void 0 ? void 0 : _a.min;
15
+ if (!time)
16
+ return '';
17
+ return `${time}`;
18
+ }}
19
+ id=${(x) => `min-${x.control.path}`}
20
+ type="time"
21
+ data-test-id=${(x) => `min-${x.control.path}`}
22
+ 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; }}"
23
+ @blur=${(x, c) => {
24
+ var _a, _b;
25
+ const minValue = c.event.target.control.value;
26
+ const maxValue = (_a = x.control.data) === null || _a === void 0 ? void 0 : _a.max;
27
+ const setMin = minValue ? minValue : undefined;
28
+ const setMax = maxValue < minValue ? undefined : (_b = x.control.data) === null || _b === void 0 ? void 0 : _b.max;
29
+ x.control.handleChange(x.control.path, {
30
+ min: setMin,
31
+ max: setMax,
32
+ type: 'time',
33
+ });
34
+ x.onBlur();
35
+ }}
36
+ style="width: 100%"
37
+ ></${prefix}-text-field>
38
+ <span
39
+ style="
40
+ font-size: xx-large;
41
+ color: var(--neutral-stroke-divider-rest);
42
+ padding: calc(var(--design-unit) * 1px);"
43
+ >
44
+ -
45
+ </span>
46
+ <${prefix}-text-field
47
+ :value=${(x) => {
48
+ var _a;
49
+ const time = (_a = x.control.data) === null || _a === void 0 ? void 0 : _a.max;
50
+ if (!time)
51
+ return '';
52
+ return `${time}`;
53
+ }}
54
+ id=${(x) => `max-${x.control.path}`}
55
+ type="time"
56
+ data-test-id=${(x) => `max-${x.control.path}`}
57
+ 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; }}"
58
+ @blur=${(x, c) => {
59
+ var _a, _b;
60
+ const maxValue = c.event.target.control.value;
61
+ const minValue = (_a = x.control.data) === null || _a === void 0 ? void 0 : _a.min;
62
+ const setMin = minValue > maxValue ? undefined : (_b = x.control.data) === null || _b === void 0 ? void 0 : _b.min;
63
+ const setMax = maxValue ? maxValue : undefined;
64
+ x.control.handleChange(x.control.path, {
65
+ min: setMin,
66
+ max: setMax,
67
+ type: 'time',
68
+ });
69
+ x.onBlur();
70
+ }}
71
+ style="width: 100%"
72
+ ></${prefix}-text-field>
73
+ `,
74
+ })}
75
75
  </template>
76
76
  `;
77
77
  export const FilterTimeControlRendererEntry = {
@@ -79,5 +79,5 @@ export const FilterTimeControlRendererEntry = {
79
79
  ${(x) => TimeControlRendererTemplate(x.prefix)}
80
80
  `,
81
81
  tester: rankWith(TIME_CONTROL_RANK, isOneOfTime),
82
- mapper: mapStateToControlProps, // TODO: change mapper to handle dates instead of doing it in the template
82
+ mapper: mapStateToControlProps,
83
83
  };
@@ -1,19 +1,18 @@
1
1
  import { mapDispatchToArrayControlProps, mapStateToArrayLayoutProps, rankWith, } from '@jsonforms/core';
2
2
  import { html } from '@microsoft/fast-element';
3
3
  import { isArray } from '../testers/isArray';
4
+ import { controlWrapperTemplate } from './ControlWrapperRenderer';
4
5
  import { LAYOUT_ARRAY_RANK } from './RenderersRanks';
5
6
  const borderStyle = 'padding: 5px; border-radius: 3px; border: 1px solid var(--neutral-stroke-rest);';
6
7
  export const LayoutArrayRendererTemplate = html `
7
8
  <template>
8
9
  <div style="${(x) => { var _a; return (((_a = x.control.uischema.options) === null || _a === void 0 ? void 0 : _a.border) ? borderStyle : ''); }}">
9
- <control-wrapper
10
- :control=${(x) => x.control}
11
- :jsonForms=${(x) => x.jsonforms}
12
- :touched=${(x) => x.touched}
13
- ?submitted=${(x) => x.submitted}
14
- >
15
- <array-list-wrapper :form=${(x) => x} :control=${(x) => x.control}></array-list-wrapper>
16
- </control-wrapper>
10
+ ${controlWrapperTemplate({
11
+ prefix: 'zero',
12
+ innerTemplate: html `
13
+ <array-list-wrapper :form=${(x) => x} :control=${(x) => x.control}></array-list-wrapper>
14
+ `,
15
+ })}
17
16
  </div>
18
17
  </template>
19
18
  `;
@@ -1,35 +1,36 @@
1
1
  import { mapStateToLayoutProps, rankWith } from '@jsonforms/core';
2
2
  import { html, repeat } from '@microsoft/fast-element';
3
- import { LayoutWrapper } from './LayoutRenderer';
3
+ import { layoutWrapperTemplate } from './LayoutRenderer';
4
4
  import { LAYOUT_FORM_GRID_RANK } from './RenderersRanks';
5
- LayoutWrapper;
6
5
  export const LayoutFormGridRendererTemplate = html `
7
6
  <template>
8
- <layout-wrapper :control=${(x) => x.control}>
9
- <div
10
- style="
11
- display: grid;
12
- grid-template-columns: repeat(4, 1fr);
13
- gap: 8px;
14
- "
15
- >
16
- ${repeat((x) => x.control.uischema.elements, html `
17
- <dispatch-renderer
18
- ?submitted=${(x, ctx) => ctx.parent.submitted}
19
- :dispatch=${(x, ctx) => ctx.parent.dispatch}
20
- :jsonforms=${(x, ctx) => ctx.parent.jsonforms}
21
- :prefix=${(x, ctx) => ctx.parent.prefix}
22
- :props=${(x, ctx) => ({
23
- uischema: x,
24
- schema: ctx.parent.control.schema,
25
- renderers: ctx.parent.control.renderers,
26
- path: ctx.parent.control.path,
27
- enabled: ctx.parent.control.enabled,
7
+ ${layoutWrapperTemplate({
8
+ innerTemplate: html `
9
+ <div
10
+ style="
11
+ display: grid;
12
+ grid-template-columns: repeat(4, 1fr);
13
+ gap: 8px;
14
+ "
15
+ >
16
+ ${repeat((x) => x.control.uischema.elements, html `
17
+ <dispatch-renderer
18
+ ?submitted=${(x, ctx) => ctx.parent.submitted}
19
+ :dispatch=${(x, ctx) => ctx.parent.dispatch}
20
+ :jsonforms=${(x, ctx) => ctx.parent.jsonforms}
21
+ :prefix=${(x, ctx) => ctx.parent.prefix}
22
+ :props=${(x, ctx) => ({
23
+ uischema: x,
24
+ schema: ctx.parent.control.schema,
25
+ renderers: ctx.parent.control.renderers,
26
+ path: ctx.parent.control.path,
27
+ enabled: ctx.parent.control.enabled,
28
+ })}
29
+ ></dispatch-renderer>
30
+ `)}
31
+ </div>
32
+ `,
28
33
  })}
29
- ></dispatch-renderer>
30
- `)}
31
- </div>
32
- </layout-wrapper>
33
34
  </template>
34
35
  `;
35
36
  export const LayoutFormGridEntry = {
@@ -1,41 +1,45 @@
1
1
  import { isGroup, mapStateToLayoutProps, rankWith } from '@jsonforms/core';
2
2
  import { html, repeat, when } from '@microsoft/fast-element';
3
+ import { layoutWrapperTemplate } from './LayoutRenderer';
3
4
  import { LAYOUT_GROUP_RANK } from './RenderersRanks';
4
5
  export const LayoutGroupRendererTemplate = html `
5
6
  <template>
6
- <layout-wrapper :control=${(x) => x.control} hide-label>
7
- <div>
8
- ${when((x) => x.control.label, html `
9
- <div
10
- for="${(x) => x.control.path + '-wrapper'}"
11
- style="color: var(--neutral-foreground-rest);
12
- padding-bottom: calc(var(--design-unit) * 1px);
13
- margin-bottom: calc(var(--design-unit) * 4px);
14
- font-weight: 600;
15
- font-size: var(--type-ramp-base-font-size);
16
- display: flex;
17
- justify-content: space-between;"
18
- >
19
- ${(x) => x.control.label}
20
- </div>
21
- `)}
22
- ${repeat((x) => x.control.uischema.options.childElements, html `
23
- <dispatch-renderer
24
- ?submitted=${(x, ctx) => ctx.parent.submitted}
25
- :dispatch=${(x, ctx) => ctx.parent.dispatch}
26
- :jsonforms=${(x, ctx) => ctx.parent.jsonforms}
27
- :prefix=${(x, ctx) => ctx.parent.prefix}
28
- :props=${(x, ctx) => ({
29
- uischema: x,
30
- schema: ctx.parent.control.schema,
31
- renderers: ctx.parent.control.renderers,
32
- path: ctx.parent.control.path,
33
- enabled: ctx.parent.control.enabled,
7
+ ${layoutWrapperTemplate({
8
+ hideLabel: true,
9
+ innerTemplate: html `
10
+ <div>
11
+ ${when((x) => x.control.label, html `
12
+ <div
13
+ for="${(x) => x.control.path + '-wrapper'}"
14
+ style="color: var(--neutral-foreground-rest);
15
+ padding-bottom: calc(var(--design-unit) * 1px);
16
+ margin-bottom: calc(var(--design-unit) * 4px);
17
+ font-weight: 600;
18
+ font-size: var(--type-ramp-base-font-size);
19
+ display: flex;
20
+ justify-content: space-between;"
21
+ >
22
+ ${(x) => x.control.label}
23
+ </div>
24
+ `)}
25
+ ${repeat((x) => x.control.uischema.options.childElements, html `
26
+ <dispatch-renderer
27
+ ?submitted=${(x, ctx) => ctx.parent.submitted}
28
+ :dispatch=${(x, ctx) => ctx.parent.dispatch}
29
+ :jsonforms=${(x, ctx) => ctx.parent.jsonforms}
30
+ :prefix=${(x, ctx) => ctx.parent.prefix}
31
+ :props=${(x, ctx) => ({
32
+ uischema: x,
33
+ schema: ctx.parent.control.schema,
34
+ renderers: ctx.parent.control.renderers,
35
+ path: ctx.parent.control.path,
36
+ enabled: ctx.parent.control.enabled,
37
+ })}
38
+ ></dispatch-renderer>
39
+ `)}
40
+ </div>
41
+ `,
34
42
  })}
35
- ></dispatch-renderer>
36
- `)}
37
- </div>
38
- </layout-wrapper>
39
43
  </template>
40
44
  `;
41
45
  export const LayoutGroupRendererEntry = {
@@ -1,35 +1,36 @@
1
1
  import { mapStateToLayoutProps, rankWith } from '@jsonforms/core';
2
2
  import { html, repeat } from '@microsoft/fast-element';
3
- import { LayoutWrapper } from './LayoutRenderer';
3
+ import { layoutWrapperTemplate } from './LayoutRenderer';
4
4
  import { LAYOUT_HORIZONTAL_RANK } from './RenderersRanks';
5
- LayoutWrapper;
6
5
  export const LayoutHorizontalRendererTemplate = html `
7
6
  <template>
8
- <layout-wrapper :control=${(x) => x.control}>
9
- <div
10
- style="
11
- display: flex;
12
- flex-direction: row;
13
- gap: 10px"
14
- >
15
- ${repeat((x) => x.control.uischema.elements, html `
16
- <dispatch-renderer
17
- style="flex: 1; min-width: 0"
18
- ?submitted=${(x, ctx) => ctx.parent.submitted}
19
- :dispatch=${(x, ctx) => ctx.parent.dispatch}
20
- :jsonforms=${(x, ctx) => ctx.parent.jsonforms}
21
- :prefix=${(x, ctx) => ctx.parent.prefix}
22
- :props=${(x, ctx) => ({
23
- uischema: x,
24
- schema: ctx.parent.control.schema,
25
- renderers: ctx.parent.control.renderers,
26
- path: ctx.parent.control.path,
27
- enabled: ctx.parent.control.enabled,
7
+ ${layoutWrapperTemplate({
8
+ innerTemplate: html `
9
+ <div
10
+ style="
11
+ display: flex;
12
+ flex-direction: row;
13
+ gap: 10px"
14
+ >
15
+ ${repeat((x) => x.control.uischema.elements, html `
16
+ <dispatch-renderer
17
+ style="flex: 1; min-width: 0"
18
+ ?submitted=${(x, ctx) => ctx.parent.submitted}
19
+ :dispatch=${(x, ctx) => ctx.parent.dispatch}
20
+ :jsonforms=${(x, ctx) => ctx.parent.jsonforms}
21
+ :prefix=${(x, ctx) => ctx.parent.prefix}
22
+ :props=${(x, ctx) => ({
23
+ uischema: x,
24
+ schema: ctx.parent.control.schema,
25
+ renderers: ctx.parent.control.renderers,
26
+ path: ctx.parent.control.path,
27
+ enabled: ctx.parent.control.enabled,
28
+ })}
29
+ ></dispatch-renderer>
30
+ `)}
31
+ </div>
32
+ `,
28
33
  })}
29
- ></dispatch-renderer>
30
- `)}
31
- </div>
32
- </layout-wrapper>
33
34
  </template>
34
35
  `;
35
36
  export const LayoutHorizontalEntry = {
@@ -1,12 +1,73 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { isLayout, mapStateToLayoutProps, rankWith } from '@jsonforms/core';
3
- import { attr, customElement, FASTElement, html, observable, repeat, when, } from '@microsoft/fast-element';
3
+ import { FASTElement, attr, customElement, html, observable, repeat, when, } from '@microsoft/fast-element';
4
+ import { logger } from '../../utils/logger';
4
5
  import { LAYOUT_RANK } from './RenderersRanks';
6
+ /**
7
+ * Light-DOM-friendly layout wrapper that replaces the former `<layout-wrapper>`
8
+ * custom element. Renders the (optional) control label and, when the control is
9
+ * visible, composes the provided inner template inline so that bindings stay on
10
+ * the `DispatchRenderer` source.
11
+ *
12
+ * @public
13
+ */
14
+ export const layoutWrapperTemplate = (options) => {
15
+ const { innerTemplate, hideLabel = false } = options;
16
+ return html `
17
+ ${when((x) => { var _a; return !!((_a = x.control) === null || _a === void 0 ? void 0 : _a.label) && !hideLabel; }, html `
18
+ <div style="color: var(--neutral-foreground-hint);">${(x) => x.control.label}</div>
19
+ `)}
20
+ ${when((x) => { var _a; return (_a = x.control) === null || _a === void 0 ? void 0 : _a.visible; }, innerTemplate)}
21
+ `;
22
+ };
23
+ export const LayoutRendererTemplate = html `
24
+ <template>
25
+ ${layoutWrapperTemplate({
26
+ innerTemplate: html `
27
+ <div>
28
+ ${repeat((x) => x.control.uischema.elements, html `
29
+ <dispatch-renderer
30
+ ?submitted=${(x, ctx) => ctx.parent.submitted}
31
+ :dispatch=${(x, ctx) => ctx.parent.dispatch}
32
+ :jsonforms=${(x, ctx) => ctx.parent.jsonforms}
33
+ :prefix=${(x, ctx) => ctx.parent.prefix}
34
+ :props=${(x, ctx) => ({
35
+ uischema: x,
36
+ schema: ctx.parent.control.schema,
37
+ renderers: ctx.parent.control.renderers,
38
+ path: ctx.parent.control.path,
39
+ enabled: ctx.parent.control.enabled,
40
+ })}
41
+ ></dispatch-renderer>
42
+ `)}
43
+ </div>
44
+ `,
45
+ })}
46
+ </template>
47
+ `;
48
+ export const LayoutRendererEntry = {
49
+ renderer: LayoutRendererTemplate,
50
+ tester: rankWith(LAYOUT_RANK, isLayout),
51
+ mapper: mapStateToLayoutProps,
52
+ };
53
+ // ---------------------------------------------------------------------------
54
+ // Deprecated: <layout-wrapper> custom element
55
+ // ---------------------------------------------------------------------------
56
+ /**
57
+ * @deprecated Use `layoutWrapperTemplate` instead. The `<layout-wrapper>` custom element
58
+ * will be removed in a future major version. Migrate to the light-DOM `layoutWrapperTemplate`
59
+ * function which renders inline within the parent renderer's template.
60
+ */
5
61
  let LayoutWrapper = class LayoutWrapper extends FASTElement {
6
62
  constructor() {
7
63
  super(...arguments);
8
64
  this.hideLabel = false;
9
65
  }
66
+ connectedCallback() {
67
+ super.connectedCallback();
68
+ logger.warn('<layout-wrapper> is deprecated and will be removed in a future major version. ' +
69
+ 'Migrate to the `layoutWrapperTemplate` function for light-DOM rendering.');
70
+ }
10
71
  };
11
72
  __decorate([
12
73
  observable
@@ -28,31 +89,3 @@ LayoutWrapper = __decorate([
28
89
  })
29
90
  ], LayoutWrapper);
30
91
  export { LayoutWrapper };
31
- export const LayoutRendererTemplate = html `
32
- <template>
33
- <layout-wrapper :control=${(x) => x.control}>
34
- <div>
35
- ${repeat((x) => x.control.uischema.elements, html `
36
- <dispatch-renderer
37
- ?submitted=${(x, ctx) => ctx.parent.submitted}
38
- :dispatch=${(x, ctx) => ctx.parent.dispatch}
39
- :jsonforms=${(x, ctx) => ctx.parent.jsonforms}
40
- :prefix=${(x, ctx) => ctx.parent.prefix}
41
- :props=${(x, ctx) => ({
42
- uischema: x,
43
- schema: ctx.parent.control.schema,
44
- renderers: ctx.parent.control.renderers,
45
- path: ctx.parent.control.path,
46
- enabled: ctx.parent.control.enabled,
47
- })}
48
- ></dispatch-renderer>
49
- `)}
50
- </div>
51
- </layout-wrapper>
52
- </template>
53
- `;
54
- export const LayoutRendererEntry = {
55
- renderer: LayoutRendererTemplate,
56
- tester: rankWith(LAYOUT_RANK, isLayout),
57
- mapper: mapStateToLayoutProps,
58
- };