@genesislcap/foundation-forms 14.427.0 → 14.427.2-alpha-e0ffaad.0

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 (91) hide show
  1. package/dist/custom-elements.json +307 -389
  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 +2 -0
  8. package/dist/dts/index.d.ts.map +1 -1
  9. package/dist/dts/jsonforms/json-forms.d.ts +2 -2
  10. package/dist/dts/jsonforms/json-forms.d.ts.map +1 -1
  11. package/dist/dts/jsonforms/renderers/ArrayListWrapperRenderer.d.ts.map +1 -1
  12. package/dist/dts/jsonforms/renderers/BooleanControlRenderer.d.ts.map +1 -1
  13. package/dist/dts/jsonforms/renderers/CategorizationWrapperRenderer.d.ts.map +1 -1
  14. package/dist/dts/jsonforms/renderers/ConnectedMultiselectControlRenderer.d.ts.map +1 -1
  15. package/dist/dts/jsonforms/renderers/ConnectedSelectControlRenderer.d.ts.map +1 -1
  16. package/dist/dts/jsonforms/renderers/ControlWrapperRenderer.d.ts +31 -11
  17. package/dist/dts/jsonforms/renderers/ControlWrapperRenderer.d.ts.map +1 -1
  18. package/dist/dts/jsonforms/renderers/DateControlRenderer.d.ts +2 -1
  19. package/dist/dts/jsonforms/renderers/DateControlRenderer.d.ts.map +1 -1
  20. package/dist/dts/jsonforms/renderers/EnumControlRenderer.d.ts +2 -1
  21. package/dist/dts/jsonforms/renderers/EnumControlRenderer.d.ts.map +1 -1
  22. package/dist/dts/jsonforms/renderers/EnumRadioGroupControlRenderer.d.ts.map +1 -1
  23. package/dist/dts/jsonforms/renderers/FilterDateControlRenderer.d.ts +2 -1
  24. package/dist/dts/jsonforms/renderers/FilterDateControlRenderer.d.ts.map +1 -1
  25. package/dist/dts/jsonforms/renderers/FilterNumberControlRenderer.d.ts +2 -1
  26. package/dist/dts/jsonforms/renderers/FilterNumberControlRenderer.d.ts.map +1 -1
  27. package/dist/dts/jsonforms/renderers/FilterTimeControlRenderer.d.ts +2 -1
  28. package/dist/dts/jsonforms/renderers/FilterTimeControlRenderer.d.ts.map +1 -1
  29. package/dist/dts/jsonforms/renderers/LayoutArrayRenderer.d.ts +2 -1
  30. package/dist/dts/jsonforms/renderers/LayoutArrayRenderer.d.ts.map +1 -1
  31. package/dist/dts/jsonforms/renderers/LayoutFormGridRenderer.d.ts +2 -1
  32. package/dist/dts/jsonforms/renderers/LayoutFormGridRenderer.d.ts.map +1 -1
  33. package/dist/dts/jsonforms/renderers/LayoutGroupRenderer.d.ts +2 -1
  34. package/dist/dts/jsonforms/renderers/LayoutGroupRenderer.d.ts.map +1 -1
  35. package/dist/dts/jsonforms/renderers/LayoutHorizontalRenderer.d.ts +2 -1
  36. package/dist/dts/jsonforms/renderers/LayoutHorizontalRenderer.d.ts.map +1 -1
  37. package/dist/dts/jsonforms/renderers/LayoutRenderer.d.ts +21 -5
  38. package/dist/dts/jsonforms/renderers/LayoutRenderer.d.ts.map +1 -1
  39. package/dist/dts/jsonforms/renderers/LayoutVertical2ColumnsRenderer.d.ts +2 -1
  40. package/dist/dts/jsonforms/renderers/LayoutVertical2ColumnsRenderer.d.ts.map +1 -1
  41. package/dist/dts/jsonforms/renderers/MulticolumnDropdownControlRenderer.d.ts.map +1 -1
  42. package/dist/dts/jsonforms/renderers/NumberControlRenderer.d.ts +2 -1
  43. package/dist/dts/jsonforms/renderers/NumberControlRenderer.d.ts.map +1 -1
  44. package/dist/dts/jsonforms/renderers/SegmentedControlRenderer.d.ts.map +1 -1
  45. package/dist/dts/jsonforms/renderers/StepperWrapperRenderer.d.ts.map +1 -1
  46. package/dist/dts/jsonforms/renderers/StringArrayControlRenderer.d.ts.map +1 -1
  47. package/dist/dts/jsonforms/renderers/StringControlRenderer.d.ts.map +1 -1
  48. package/dist/dts/jsonforms/renderers/VerticalCategorizationWrapperRenderer.d.ts.map +1 -1
  49. package/dist/dts/jsonforms/renderers/dispatch-renderer.d.ts.map +1 -1
  50. package/dist/dts/jsonforms/testers/isOneOfNumber.d.ts.map +1 -1
  51. package/dist/dts/react.d.ts +0 -20
  52. package/dist/dts/types.d.ts +18 -0
  53. package/dist/dts/types.d.ts.map +1 -1
  54. package/dist/esm/filters/filters.template.js +1 -2
  55. package/dist/esm/form.js +2 -1
  56. package/dist/esm/form.styles.js +14 -40
  57. package/dist/esm/form.template.js +1 -2
  58. package/dist/esm/index.js +2 -0
  59. package/dist/esm/jsonforms/json-forms.js +28 -1
  60. package/dist/esm/jsonforms/renderers/ArrayListWrapperRenderer.js +48 -46
  61. package/dist/esm/jsonforms/renderers/BooleanControlRenderer.js +19 -20
  62. package/dist/esm/jsonforms/renderers/CategorizationWrapperRenderer.js +9 -4
  63. package/dist/esm/jsonforms/renderers/ConnectedMultiselectControlRenderer.js +38 -40
  64. package/dist/esm/jsonforms/renderers/ConnectedSelectControlRenderer.js +39 -39
  65. package/dist/esm/jsonforms/renderers/ControlWrapperRenderer.js +102 -131
  66. package/dist/esm/jsonforms/renderers/DateControlRenderer.js +41 -43
  67. package/dist/esm/jsonforms/renderers/EnumControlRenderer.js +27 -27
  68. package/dist/esm/jsonforms/renderers/EnumRadioGroupControlRenderer.js +30 -32
  69. package/dist/esm/jsonforms/renderers/FilterDateControlRenderer.js +81 -77
  70. package/dist/esm/jsonforms/renderers/FilterNumberControlRenderer.js +54 -51
  71. package/dist/esm/jsonforms/renderers/FilterTimeControlRenderer.js +69 -69
  72. package/dist/esm/jsonforms/renderers/LayoutArrayRenderer.js +7 -8
  73. package/dist/esm/jsonforms/renderers/LayoutFormGridRenderer.js +27 -26
  74. package/dist/esm/jsonforms/renderers/LayoutGroupRenderer.js +36 -32
  75. package/dist/esm/jsonforms/renderers/LayoutHorizontalRenderer.js +27 -26
  76. package/dist/esm/jsonforms/renderers/LayoutRenderer.js +36 -44
  77. package/dist/esm/jsonforms/renderers/LayoutVertical2ColumnsRenderer.js +18 -17
  78. package/dist/esm/jsonforms/renderers/MulticolumnDropdownControlRenderer.js +39 -41
  79. package/dist/esm/jsonforms/renderers/NumberControlRenderer.js +30 -30
  80. package/dist/esm/jsonforms/renderers/SegmentedControlRenderer.js +25 -27
  81. package/dist/esm/jsonforms/renderers/StepperWrapperRenderer.js +2 -1
  82. package/dist/esm/jsonforms/renderers/StringArrayControlRenderer.js +18 -20
  83. package/dist/esm/jsonforms/renderers/StringControlRenderer.js +41 -42
  84. package/dist/esm/jsonforms/renderers/VerticalCategorizationWrapperRenderer.js +13 -9
  85. package/dist/esm/jsonforms/renderers/dispatch-renderer.js +1 -0
  86. package/dist/esm/jsonforms/testers/isOneOfNumber.js +2 -1
  87. package/dist/foundation-forms.api.json +115 -3
  88. package/dist/foundation-forms.d.ts +75 -10
  89. package/dist/react.cjs +0 -14
  90. package/dist/react.mjs +0 -12
  91. package/package.json +15 -15
@@ -2,6 +2,7 @@ import { mapStateToControlProps, rankWith } from '@jsonforms/core';
2
2
  import { html } from '@microsoft/fast-element';
3
3
  import { GenesisType } from '../../utils';
4
4
  import { isOneOfDate } from '../testers/isDate';
5
+ import { controlWrapperTemplate } from './ControlWrapperRenderer';
5
6
  import { DATE_CONTROL_RANK } from './RenderersRanks';
6
7
  /**
7
8
  * @internal
@@ -25,82 +26,85 @@ const formatDateValue = (timestamp, inputType) => {
25
26
  };
26
27
  export const DateControlRendererTemplate = (prefix = 'zero') => html `
27
28
  <template>
28
- <control-wrapper :control=${(x) => x.control} ?submitted=${(x) => x.submitted} prefix="${prefix}">
29
- <${prefix}-text-field
30
- :value=${(x) => {
31
- var _a;
32
- const inputType = typeSwitch(x.control);
33
- return formatDateValue((_a = x.control.data) === null || _a === void 0 ? void 0 : _a.min, inputType);
34
- }}
35
- id=${(x) => `min-${x.control.path}`}
36
- type="${(x) => typeSwitch(x.control)}"
37
- data-test-id=${(x) => `min-${x.control.path}`}
38
- 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; }}"
39
- @blur=${(x, c) => {
40
- var _a, _b, _c;
41
- const target = c.event.target;
42
- const inputValue = target.value;
43
- const inputType = typeSwitch(x.control);
44
- let minValue;
45
- if (inputValue) {
46
- minValue = new Date(inputValue).getTime();
47
- }
48
- const maxValue = ((_a = x.control.data) === null || _a === void 0 ? void 0 : _a.max) !== undefined &&
49
- minValue !== undefined &&
50
- ((_b = x.control.data) === null || _b === void 0 ? void 0 : _b.max) < minValue
51
- ? undefined
52
- : (_c = x.control.data) === null || _c === void 0 ? void 0 : _c.max;
53
- x.control.handleChange(x.control.path, {
54
- min: minValue,
55
- max: maxValue,
56
- type: inputType === 'datetime-local' ? 'datetime' : 'date',
57
- });
58
- x.onBlur();
59
- }}
60
- style="width: 100%"
61
- ></${prefix}-text-field>
62
- <span
63
- style="
64
- font-size: xx-large;
65
- color: var(--neutral-stroke-divider-rest);
66
- padding: calc(var(--design-unit) * 1px);"
67
- >
68
- -
69
- </span>
70
- <${prefix}-text-field
71
- :value=${(x) => {
72
- var _a;
73
- const inputType = typeSwitch(x.control);
74
- return formatDateValue((_a = x.control.data) === null || _a === void 0 ? void 0 : _a.max, inputType);
75
- }}
76
- id=${(x) => `max-${x.control.path}`}
77
- type="${(x) => typeSwitch(x.control)}"
78
- data-test-id=${(x) => `max-${x.control.path}`}
79
- 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; }}"
80
- @blur=${(x, c) => {
81
- var _a, _b, _c;
82
- const target = c.event.target;
83
- const inputValue = target.value;
84
- const inputType = typeSwitch(x.control);
85
- let maxValue;
86
- if (inputValue) {
87
- maxValue = new Date(inputValue).getTime();
88
- }
89
- const minValue = ((_a = x.control.data) === null || _a === void 0 ? void 0 : _a.min) !== undefined &&
90
- maxValue !== undefined &&
91
- ((_b = x.control.data) === null || _b === void 0 ? void 0 : _b.min) > maxValue
92
- ? undefined
93
- : (_c = x.control.data) === null || _c === void 0 ? void 0 : _c.min;
94
- x.control.handleChange(x.control.path, {
95
- min: minValue,
96
- max: maxValue,
97
- type: inputType === 'datetime-local' ? 'datetime' : 'date',
98
- });
99
- x.onBlur();
100
- }}
101
- style="width: 100%"
102
- ></${prefix}-text-field>
103
- </control-wrapper>
29
+ ${controlWrapperTemplate({
30
+ prefix,
31
+ innerTemplate: html `
32
+ <${prefix}-text-field
33
+ :value=${(x) => {
34
+ var _a;
35
+ const inputType = typeSwitch(x.control);
36
+ return formatDateValue((_a = x.control.data) === null || _a === void 0 ? void 0 : _a.min, inputType);
37
+ }}
38
+ id=${(x) => `min-${x.control.path}`}
39
+ type="${(x) => typeSwitch(x.control)}"
40
+ data-test-id=${(x) => `min-${x.control.path}`}
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
+ @blur=${(x, c) => {
43
+ var _a, _b, _c;
44
+ const target = c.event.target;
45
+ const inputValue = target.value;
46
+ const inputType = typeSwitch(x.control);
47
+ let minValue;
48
+ if (inputValue) {
49
+ minValue = new Date(inputValue).getTime();
50
+ }
51
+ const maxValue = ((_a = x.control.data) === null || _a === void 0 ? void 0 : _a.max) !== undefined &&
52
+ minValue !== undefined &&
53
+ ((_b = x.control.data) === null || _b === void 0 ? void 0 : _b.max) < minValue
54
+ ? undefined
55
+ : (_c = x.control.data) === null || _c === void 0 ? void 0 : _c.max;
56
+ x.control.handleChange(x.control.path, {
57
+ min: minValue,
58
+ max: maxValue,
59
+ type: inputType === 'datetime-local' ? 'datetime' : 'date',
60
+ });
61
+ x.onBlur();
62
+ }}
63
+ style="width: 100%"
64
+ ></${prefix}-text-field>
65
+ <span
66
+ style="
67
+ font-size: xx-large;
68
+ color: var(--neutral-stroke-divider-rest);
69
+ padding: calc(var(--design-unit) * 1px);"
70
+ >
71
+ -
72
+ </span>
73
+ <${prefix}-text-field
74
+ :value=${(x) => {
75
+ var _a;
76
+ const inputType = typeSwitch(x.control);
77
+ return formatDateValue((_a = x.control.data) === null || _a === void 0 ? void 0 : _a.max, inputType);
78
+ }}
79
+ id=${(x) => `max-${x.control.path}`}
80
+ type="${(x) => typeSwitch(x.control)}"
81
+ data-test-id=${(x) => `max-${x.control.path}`}
82
+ 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; }}"
83
+ @blur=${(x, c) => {
84
+ var _a, _b, _c;
85
+ const target = c.event.target;
86
+ const inputValue = target.value;
87
+ const inputType = typeSwitch(x.control);
88
+ let maxValue;
89
+ if (inputValue) {
90
+ maxValue = new Date(inputValue).getTime();
91
+ }
92
+ const minValue = ((_a = x.control.data) === null || _a === void 0 ? void 0 : _a.min) !== undefined &&
93
+ maxValue !== undefined &&
94
+ ((_b = x.control.data) === null || _b === void 0 ? void 0 : _b.min) > maxValue
95
+ ? undefined
96
+ : (_c = x.control.data) === null || _c === void 0 ? void 0 : _c.min;
97
+ x.control.handleChange(x.control.path, {
98
+ min: minValue,
99
+ max: maxValue,
100
+ type: inputType === 'datetime-local' ? 'datetime' : 'date',
101
+ });
102
+ x.onBlur();
103
+ }}
104
+ style="width: 100%"
105
+ ></${prefix}-text-field>
106
+ `,
107
+ })}
104
108
  </template>
105
109
  `;
106
110
  export const FilterDateControlRendererEntry = {
@@ -108,5 +112,5 @@ export const FilterDateControlRendererEntry = {
108
112
  ${(x) => DateControlRendererTemplate(x.prefix)}
109
113
  `,
110
114
  tester: rankWith(DATE_CONTROL_RANK, isOneOfDate),
111
- mapper: mapStateToControlProps, // TODO: change mapper to handle dates instead of doing it in the template
115
+ mapper: mapStateToControlProps,
112
116
  };
@@ -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 = {