@truedat/df 7.12.5 → 7.12.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -4
- package/src/components/DynamicFieldValue.js +1 -1
- package/src/components/DynamicFormViewer.js +4 -3
- package/src/components/DynamicFormWithTranslations.js +3 -3
- package/src/components/EditableDynamicFieldValue.js +1 -1
- package/src/components/FieldViewerValue.js +44 -3
- package/src/components/__tests__/FieldViewerValue.spec.js +10 -6
- package/src/components/__tests__/__snapshots__/FieldViewerValue.spec.js.snap +53 -0
- package/src/components/widgets/DynamicField.js +6 -62
- package/src/components/widgets/DynamicTableField.js +150 -0
- package/src/components/widgets/FieldByWidget.js +63 -0
- package/src/components/widgets/StandardDropdown.js +2 -2
- package/src/components/widgets/StringField.js +2 -1
- package/src/components/widgets/__tests__/DynamicField.spec.js +10 -1
- package/src/components/widgets/__tests__/DynamicTableField.spec.js +257 -0
- package/src/components/widgets/__tests__/__snapshots__/DynamicField.spec.js.snap +97 -0
- package/src/components/widgets/__tests__/__snapshots__/DynamicTableField.spec.js.snap +114 -0
- package/src/templates/components/templateForm/ActiveGroupForm.js +5 -16
- package/src/templates/components/templateForm/FieldDefinition.js +158 -0
- package/src/templates/components/templateForm/FieldForm.js +32 -135
- package/src/templates/components/templateForm/TableValuesForm.js +258 -0
- package/src/templates/components/templateForm/TemplateForm.js +43 -26
- package/src/templates/components/templateForm/ValuesConfiguration.js +67 -0
- package/src/templates/components/templateForm/ValuesField.js +60 -96
- package/src/templates/components/templateForm/ValuesListForm.js +1 -3
- package/src/templates/components/templateForm/__tests__/FieldDefinition.spec.js +227 -0
- package/src/templates/components/templateForm/__tests__/TableValuesForm.spec.js +215 -0
- package/src/templates/components/templateForm/__tests__/ValuesField.spec.js +28 -83
- package/src/templates/components/templateForm/__tests__/__snapshots__/ActiveGroupForm.spec.js.snap +17 -0
- package/src/templates/components/templateForm/__tests__/__snapshots__/FieldDefinition.spec.js.snap +443 -0
- package/src/templates/components/templateForm/__tests__/__snapshots__/FieldForm.spec.js.snap +51 -0
- package/src/templates/components/templateForm/__tests__/__snapshots__/TemplateForm.spec.js.snap +17 -0
- package/src/templates/components/templateForm/__tests__/__snapshots__/ValuesField.spec.js.snap +61 -387
- package/src/templates/components/templateForm/contentValidation.js +22 -3
- package/src/templates/components/templateForm/valueDefinitions.js +16 -2
- package/src/templates/components/templateForm/widgetDefinitions.js +28 -2
- package/src/templates/utils/__tests__/validateContent.spec.js +6 -6
- package/src/templates/utils/applyTemplate.js +72 -23
- package/src/templates/utils/filterValues.js +3 -3
- package/src/templates/utils/parseFieldOptions.js +73 -58
- package/src/templates/utils/parseGroups.js +47 -48
- package/src/templates/utils/validateContent.js +70 -25
|
@@ -7,11 +7,9 @@ describe("<ValuesField /> noPrefix", () => {
|
|
|
7
7
|
const values = null;
|
|
8
8
|
const name = "name.values";
|
|
9
9
|
const onChange = jest.fn();
|
|
10
|
-
const onSelectionChange = jest.fn();
|
|
11
10
|
const props = {
|
|
12
11
|
field: { values },
|
|
13
12
|
name,
|
|
14
|
-
onSelectionChange,
|
|
15
13
|
onChange,
|
|
16
14
|
};
|
|
17
15
|
const rendered = render(<ValuesField {...props} />);
|
|
@@ -22,16 +20,16 @@ describe("<ValuesField /> noPrefix", () => {
|
|
|
22
20
|
it("test values dropdown", async () => {
|
|
23
21
|
const values = null;
|
|
24
22
|
const name = "name.values";
|
|
25
|
-
const
|
|
23
|
+
const subscribableField = "foo.subscribable";
|
|
26
24
|
const onChange = jest.fn();
|
|
27
25
|
const props = {
|
|
28
26
|
field: { values },
|
|
29
27
|
name,
|
|
30
28
|
onChange,
|
|
31
|
-
onSelectionChange,
|
|
32
29
|
widget: "radio",
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
type: "string",
|
|
31
|
+
fieldNamePrefix: "foo",
|
|
32
|
+
subscribableField,
|
|
35
33
|
values: [
|
|
36
34
|
{ id: "template.field.values.fixed", value: "fixed" },
|
|
37
35
|
{ id: "template.field.values.fixed_tuple", value: "fixed_tuple" },
|
|
@@ -48,20 +46,33 @@ describe("<ValuesField /> noPrefix", () => {
|
|
|
48
46
|
})
|
|
49
47
|
);
|
|
50
48
|
|
|
51
|
-
expect(
|
|
49
|
+
expect(onChange).toHaveBeenCalledWith(
|
|
50
|
+
expect.anything(),
|
|
51
|
+
expect.objectContaining({
|
|
52
|
+
name: subscribableField,
|
|
53
|
+
value: false,
|
|
54
|
+
})
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
expect(onChange).toHaveBeenCalledWith(
|
|
58
|
+
null,
|
|
59
|
+
expect.objectContaining({
|
|
60
|
+
name,
|
|
61
|
+
value: { switch: null },
|
|
62
|
+
})
|
|
63
|
+
);
|
|
52
64
|
});
|
|
53
65
|
});
|
|
54
66
|
|
|
55
67
|
describe("<ValuesField /> fixed", () => {
|
|
56
68
|
it("matches the latest snapshot for null values", async () => {
|
|
57
|
-
const values = {
|
|
69
|
+
const values = {};
|
|
58
70
|
const name = "name.values";
|
|
59
|
-
const
|
|
71
|
+
const onChange = jest.fn();
|
|
60
72
|
const props = {
|
|
61
73
|
field: { values },
|
|
62
74
|
name,
|
|
63
|
-
onChange
|
|
64
|
-
onSelectionChange,
|
|
75
|
+
onChange,
|
|
65
76
|
};
|
|
66
77
|
const rendered = render(<ValuesField {...props} />);
|
|
67
78
|
await waitForLoad(rendered);
|
|
@@ -70,14 +81,12 @@ describe("<ValuesField /> fixed", () => {
|
|
|
70
81
|
|
|
71
82
|
it("test values dropdown changes to given value", async () => {
|
|
72
83
|
const values = { fixed: ["Foo", "Bar"] };
|
|
73
|
-
const
|
|
84
|
+
const onChange = jest.fn();
|
|
74
85
|
const props = {
|
|
75
86
|
field: { values },
|
|
76
|
-
onChange
|
|
77
|
-
onSelectionChange,
|
|
87
|
+
onChange,
|
|
78
88
|
widget: "dropdown",
|
|
79
|
-
|
|
80
|
-
keyType: "fixed",
|
|
89
|
+
type: "string",
|
|
81
90
|
name: "prefix.values",
|
|
82
91
|
values: [
|
|
83
92
|
{ id: "template.field.values.fixed", value: "fixed" },
|
|
@@ -93,7 +102,7 @@ describe("<ValuesField /> fixed", () => {
|
|
|
93
102
|
await user.click(dropdown);
|
|
94
103
|
await user.click(await rendered.findByText(/fixed_tuple/i));
|
|
95
104
|
|
|
96
|
-
expect(
|
|
105
|
+
expect(onChange).toHaveBeenCalled();
|
|
97
106
|
});
|
|
98
107
|
|
|
99
108
|
it("renders subscribable checkbox", async () => {
|
|
@@ -104,7 +113,7 @@ describe("<ValuesField /> fixed", () => {
|
|
|
104
113
|
field: { values, subscribable: false },
|
|
105
114
|
onChange,
|
|
106
115
|
widget: "dropdown",
|
|
107
|
-
|
|
116
|
+
type: "string",
|
|
108
117
|
subscribableField,
|
|
109
118
|
keyType: "fixed",
|
|
110
119
|
name: "prefix.values",
|
|
@@ -132,7 +141,7 @@ describe("<ValuesField /> fixed", () => {
|
|
|
132
141
|
// Test with fixed_tuple keyType
|
|
133
142
|
const renderedWithFixedTuple = render({
|
|
134
143
|
...props,
|
|
135
|
-
|
|
144
|
+
values: { fixed_tuple: [{ value: "Foo", text: "Bar" }] }
|
|
136
145
|
});
|
|
137
146
|
await waitForLoad(renderedWithFixedTuple);
|
|
138
147
|
|
|
@@ -149,80 +158,16 @@ describe("<ValuesField /> fixed", () => {
|
|
|
149
158
|
});
|
|
150
159
|
});
|
|
151
160
|
|
|
152
|
-
describe("<ValuesField /> fixed_tuple", () => {
|
|
153
|
-
it("matches the latest snapshot for null values", async () => {
|
|
154
|
-
const values = { fixed_tuple: [{ value: "Foo", text: "Bar" }] };
|
|
155
|
-
const name = "name.values";
|
|
156
|
-
const onChange = jest.fn();
|
|
157
|
-
const onSelectionChange = jest.fn();
|
|
158
|
-
const props = {
|
|
159
|
-
field: { values },
|
|
160
|
-
name,
|
|
161
|
-
onChange,
|
|
162
|
-
onSelectionChange,
|
|
163
|
-
keyType: "fixed_tuple",
|
|
164
|
-
};
|
|
165
|
-
const rendered = render(<ValuesField {...props} />);
|
|
166
|
-
await waitForLoad(rendered);
|
|
167
|
-
expect(rendered.container).toMatchSnapshot();
|
|
168
|
-
});
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
describe("<ValuesField /> switch", () => {
|
|
172
|
-
it("matches the latest snapshot for null values", async () => {
|
|
173
|
-
const values = {
|
|
174
|
-
switch: {
|
|
175
|
-
on: "test",
|
|
176
|
-
values: {
|
|
177
|
-
a: ["1"],
|
|
178
|
-
b: ["2", "3"],
|
|
179
|
-
},
|
|
180
|
-
},
|
|
181
|
-
};
|
|
182
|
-
const name = "name.values";
|
|
183
|
-
const onSelectionChange = jest.fn();
|
|
184
|
-
const props = {
|
|
185
|
-
field: { values },
|
|
186
|
-
name,
|
|
187
|
-
keyType: "switch",
|
|
188
|
-
onChange: jest.fn(),
|
|
189
|
-
onSelectionChange,
|
|
190
|
-
};
|
|
191
|
-
const rendered = render(<ValuesField {...props} />);
|
|
192
|
-
await waitForLoad(rendered);
|
|
193
|
-
expect(rendered.container).toMatchSnapshot();
|
|
194
|
-
});
|
|
195
|
-
});
|
|
196
|
-
|
|
197
161
|
describe("<ValuesField /> role_users", () => {
|
|
198
|
-
it("matches the latest snapshot for not null values", async () => {
|
|
199
|
-
const values = { role_users: "test_role" };
|
|
200
|
-
const name = "name.values";
|
|
201
|
-
const onSelectionChange = jest.fn();
|
|
202
|
-
const props = {
|
|
203
|
-
field: { values },
|
|
204
|
-
name,
|
|
205
|
-
onChange: jest.fn(),
|
|
206
|
-
onSelectionChange,
|
|
207
|
-
};
|
|
208
|
-
const rendered = render(<ValuesField {...props} />);
|
|
209
|
-
await waitForLoad(rendered);
|
|
210
|
-
expect(rendered.container).toMatchSnapshot();
|
|
211
|
-
});
|
|
212
|
-
|
|
213
162
|
it("test role input", async () => {
|
|
214
163
|
const values = { processed_users: ["user1"], role_users: "test_role" };
|
|
215
164
|
const name = "name.values";
|
|
216
|
-
const onSelectionChange = jest.fn();
|
|
217
165
|
const onChange = jest.fn();
|
|
218
166
|
const props = {
|
|
219
167
|
field: { values },
|
|
220
168
|
name,
|
|
221
|
-
onSelectionChange,
|
|
222
169
|
onChange,
|
|
223
170
|
widget: "dropdown",
|
|
224
|
-
fieldType: "user",
|
|
225
|
-
keyType: "role_users",
|
|
226
171
|
fieldNamePrefix: "foo",
|
|
227
172
|
};
|
|
228
173
|
const rendered = render(<ValuesField {...props} />);
|
package/src/templates/components/templateForm/__tests__/__snapshots__/ActiveGroupForm.spec.js.snap
CHANGED
|
@@ -362,6 +362,23 @@ exports[`<ActiveGroupForm /> matches the latest snapshot 1`] = `
|
|
|
362
362
|
Table
|
|
363
363
|
</span>
|
|
364
364
|
</div>
|
|
365
|
+
<div
|
|
366
|
+
aria-checked="false"
|
|
367
|
+
aria-selected="false"
|
|
368
|
+
class="item"
|
|
369
|
+
role="option"
|
|
370
|
+
style="pointer-events: all;"
|
|
371
|
+
>
|
|
372
|
+
<i
|
|
373
|
+
aria-hidden="true"
|
|
374
|
+
class="table icon"
|
|
375
|
+
/>
|
|
376
|
+
<span
|
|
377
|
+
class="text"
|
|
378
|
+
>
|
|
379
|
+
Dynamic Table
|
|
380
|
+
</span>
|
|
381
|
+
</div>
|
|
365
382
|
<div
|
|
366
383
|
aria-checked="false"
|
|
367
384
|
aria-selected="false"
|
package/src/templates/components/templateForm/__tests__/__snapshots__/FieldDefinition.spec.js.snap
ADDED
|
@@ -0,0 +1,443 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`FieldDefinition renders dropdowns with initial values 1`] = `
|
|
4
|
+
<div>
|
|
5
|
+
<div
|
|
6
|
+
class="equal width fields"
|
|
7
|
+
>
|
|
8
|
+
<div
|
|
9
|
+
class="required field"
|
|
10
|
+
>
|
|
11
|
+
<label>
|
|
12
|
+
template.field.widget
|
|
13
|
+
</label>
|
|
14
|
+
<div
|
|
15
|
+
aria-expanded="false"
|
|
16
|
+
class="ui fluid selection dropdown"
|
|
17
|
+
name="field.widget"
|
|
18
|
+
required=""
|
|
19
|
+
role="listbox"
|
|
20
|
+
tabindex="0"
|
|
21
|
+
>
|
|
22
|
+
<div
|
|
23
|
+
aria-atomic="true"
|
|
24
|
+
aria-live="polite"
|
|
25
|
+
class="divider text"
|
|
26
|
+
role="alert"
|
|
27
|
+
>
|
|
28
|
+
Text Input
|
|
29
|
+
</div>
|
|
30
|
+
<i
|
|
31
|
+
aria-hidden="true"
|
|
32
|
+
class="dropdown icon"
|
|
33
|
+
/>
|
|
34
|
+
<div
|
|
35
|
+
class="menu transition"
|
|
36
|
+
>
|
|
37
|
+
<div
|
|
38
|
+
aria-checked="false"
|
|
39
|
+
aria-selected="false"
|
|
40
|
+
class="item"
|
|
41
|
+
role="option"
|
|
42
|
+
style="pointer-events: all;"
|
|
43
|
+
>
|
|
44
|
+
<i
|
|
45
|
+
aria-hidden="true"
|
|
46
|
+
class="hashtag icon"
|
|
47
|
+
/>
|
|
48
|
+
<span
|
|
49
|
+
class="text"
|
|
50
|
+
>
|
|
51
|
+
Identifier
|
|
52
|
+
</span>
|
|
53
|
+
</div>
|
|
54
|
+
<div
|
|
55
|
+
aria-checked="true"
|
|
56
|
+
aria-selected="true"
|
|
57
|
+
class="active selected item"
|
|
58
|
+
role="option"
|
|
59
|
+
style="pointer-events: all;"
|
|
60
|
+
>
|
|
61
|
+
<i
|
|
62
|
+
aria-hidden="true"
|
|
63
|
+
class="minus icon"
|
|
64
|
+
/>
|
|
65
|
+
<span
|
|
66
|
+
class="text"
|
|
67
|
+
>
|
|
68
|
+
Text Input
|
|
69
|
+
</span>
|
|
70
|
+
</div>
|
|
71
|
+
<div
|
|
72
|
+
aria-checked="false"
|
|
73
|
+
aria-selected="false"
|
|
74
|
+
class="item"
|
|
75
|
+
role="option"
|
|
76
|
+
style="pointer-events: all;"
|
|
77
|
+
>
|
|
78
|
+
<i
|
|
79
|
+
aria-hidden="true"
|
|
80
|
+
class="align justify icon"
|
|
81
|
+
/>
|
|
82
|
+
<span
|
|
83
|
+
class="text"
|
|
84
|
+
>
|
|
85
|
+
Textarea
|
|
86
|
+
</span>
|
|
87
|
+
</div>
|
|
88
|
+
<div
|
|
89
|
+
aria-checked="false"
|
|
90
|
+
aria-selected="false"
|
|
91
|
+
class="item"
|
|
92
|
+
role="option"
|
|
93
|
+
style="pointer-events: all;"
|
|
94
|
+
>
|
|
95
|
+
<i
|
|
96
|
+
aria-hidden="true"
|
|
97
|
+
class="arrow down icon"
|
|
98
|
+
/>
|
|
99
|
+
<span
|
|
100
|
+
class="text"
|
|
101
|
+
>
|
|
102
|
+
Dropdown
|
|
103
|
+
</span>
|
|
104
|
+
</div>
|
|
105
|
+
<div
|
|
106
|
+
aria-checked="false"
|
|
107
|
+
aria-selected="false"
|
|
108
|
+
class="item"
|
|
109
|
+
role="option"
|
|
110
|
+
style="pointer-events: all;"
|
|
111
|
+
>
|
|
112
|
+
<i
|
|
113
|
+
aria-hidden="true"
|
|
114
|
+
class="radio icon"
|
|
115
|
+
/>
|
|
116
|
+
<span
|
|
117
|
+
class="text"
|
|
118
|
+
>
|
|
119
|
+
Radio
|
|
120
|
+
</span>
|
|
121
|
+
</div>
|
|
122
|
+
<div
|
|
123
|
+
aria-checked="false"
|
|
124
|
+
aria-selected="false"
|
|
125
|
+
class="item"
|
|
126
|
+
role="option"
|
|
127
|
+
style="pointer-events: all;"
|
|
128
|
+
>
|
|
129
|
+
<i
|
|
130
|
+
aria-hidden="true"
|
|
131
|
+
class="check square outline icon"
|
|
132
|
+
/>
|
|
133
|
+
<span
|
|
134
|
+
class="text"
|
|
135
|
+
>
|
|
136
|
+
Checkbox
|
|
137
|
+
</span>
|
|
138
|
+
</div>
|
|
139
|
+
<div
|
|
140
|
+
aria-checked="false"
|
|
141
|
+
aria-selected="false"
|
|
142
|
+
class="item"
|
|
143
|
+
role="option"
|
|
144
|
+
style="pointer-events: all;"
|
|
145
|
+
>
|
|
146
|
+
<i
|
|
147
|
+
aria-hidden="true"
|
|
148
|
+
class="linkify icon"
|
|
149
|
+
/>
|
|
150
|
+
<span
|
|
151
|
+
class="text"
|
|
152
|
+
>
|
|
153
|
+
Links
|
|
154
|
+
</span>
|
|
155
|
+
</div>
|
|
156
|
+
<div
|
|
157
|
+
aria-checked="false"
|
|
158
|
+
aria-selected="false"
|
|
159
|
+
class="item"
|
|
160
|
+
role="option"
|
|
161
|
+
style="pointer-events: all;"
|
|
162
|
+
>
|
|
163
|
+
<i
|
|
164
|
+
aria-hidden="true"
|
|
165
|
+
class="tint icon"
|
|
166
|
+
/>
|
|
167
|
+
<span
|
|
168
|
+
class="text"
|
|
169
|
+
>
|
|
170
|
+
Colorpicker
|
|
171
|
+
</span>
|
|
172
|
+
</div>
|
|
173
|
+
<div
|
|
174
|
+
aria-checked="false"
|
|
175
|
+
aria-selected="false"
|
|
176
|
+
class="item"
|
|
177
|
+
role="option"
|
|
178
|
+
style="pointer-events: all;"
|
|
179
|
+
>
|
|
180
|
+
<i
|
|
181
|
+
aria-hidden="true"
|
|
182
|
+
class="text cursor icon"
|
|
183
|
+
/>
|
|
184
|
+
<span
|
|
185
|
+
class="text"
|
|
186
|
+
>
|
|
187
|
+
Enrichedtext
|
|
188
|
+
</span>
|
|
189
|
+
</div>
|
|
190
|
+
<div
|
|
191
|
+
aria-checked="false"
|
|
192
|
+
aria-selected="false"
|
|
193
|
+
class="item"
|
|
194
|
+
role="option"
|
|
195
|
+
style="pointer-events: all;"
|
|
196
|
+
>
|
|
197
|
+
<i
|
|
198
|
+
aria-hidden="true"
|
|
199
|
+
class="table icon"
|
|
200
|
+
/>
|
|
201
|
+
<span
|
|
202
|
+
class="text"
|
|
203
|
+
>
|
|
204
|
+
Table
|
|
205
|
+
</span>
|
|
206
|
+
</div>
|
|
207
|
+
<div
|
|
208
|
+
aria-checked="false"
|
|
209
|
+
aria-selected="false"
|
|
210
|
+
class="item"
|
|
211
|
+
role="option"
|
|
212
|
+
style="pointer-events: all;"
|
|
213
|
+
>
|
|
214
|
+
<i
|
|
215
|
+
aria-hidden="true"
|
|
216
|
+
class="table icon"
|
|
217
|
+
/>
|
|
218
|
+
<span
|
|
219
|
+
class="text"
|
|
220
|
+
>
|
|
221
|
+
Dynamic Table
|
|
222
|
+
</span>
|
|
223
|
+
</div>
|
|
224
|
+
<div
|
|
225
|
+
aria-checked="false"
|
|
226
|
+
aria-selected="false"
|
|
227
|
+
class="item"
|
|
228
|
+
role="option"
|
|
229
|
+
style="pointer-events: all;"
|
|
230
|
+
>
|
|
231
|
+
<i
|
|
232
|
+
aria-hidden="true"
|
|
233
|
+
class="asterisk icon"
|
|
234
|
+
/>
|
|
235
|
+
<span
|
|
236
|
+
class="text"
|
|
237
|
+
>
|
|
238
|
+
Password
|
|
239
|
+
</span>
|
|
240
|
+
</div>
|
|
241
|
+
<div
|
|
242
|
+
aria-checked="false"
|
|
243
|
+
aria-selected="false"
|
|
244
|
+
class="item"
|
|
245
|
+
role="option"
|
|
246
|
+
style="pointer-events: all;"
|
|
247
|
+
>
|
|
248
|
+
<i
|
|
249
|
+
aria-hidden="true"
|
|
250
|
+
class="image icon"
|
|
251
|
+
/>
|
|
252
|
+
<span
|
|
253
|
+
class="text"
|
|
254
|
+
>
|
|
255
|
+
Image
|
|
256
|
+
</span>
|
|
257
|
+
</div>
|
|
258
|
+
<div
|
|
259
|
+
aria-checked="false"
|
|
260
|
+
aria-selected="false"
|
|
261
|
+
class="item"
|
|
262
|
+
role="option"
|
|
263
|
+
style="pointer-events: all;"
|
|
264
|
+
>
|
|
265
|
+
<i
|
|
266
|
+
aria-hidden="true"
|
|
267
|
+
class="hashtag icon"
|
|
268
|
+
/>
|
|
269
|
+
<span
|
|
270
|
+
class="text"
|
|
271
|
+
>
|
|
272
|
+
Number
|
|
273
|
+
</span>
|
|
274
|
+
</div>
|
|
275
|
+
<div
|
|
276
|
+
aria-checked="false"
|
|
277
|
+
aria-selected="false"
|
|
278
|
+
class="item"
|
|
279
|
+
role="option"
|
|
280
|
+
style="pointer-events: all;"
|
|
281
|
+
>
|
|
282
|
+
<i
|
|
283
|
+
aria-hidden="true"
|
|
284
|
+
class="calendar icon"
|
|
285
|
+
/>
|
|
286
|
+
<span
|
|
287
|
+
class="text"
|
|
288
|
+
>
|
|
289
|
+
Date
|
|
290
|
+
</span>
|
|
291
|
+
</div>
|
|
292
|
+
<div
|
|
293
|
+
aria-checked="false"
|
|
294
|
+
aria-selected="false"
|
|
295
|
+
class="item"
|
|
296
|
+
role="option"
|
|
297
|
+
style="pointer-events: all;"
|
|
298
|
+
>
|
|
299
|
+
<i
|
|
300
|
+
aria-hidden="true"
|
|
301
|
+
class="calendar icon"
|
|
302
|
+
/>
|
|
303
|
+
<span
|
|
304
|
+
class="text"
|
|
305
|
+
>
|
|
306
|
+
Date Time
|
|
307
|
+
</span>
|
|
308
|
+
</div>
|
|
309
|
+
</div>
|
|
310
|
+
</div>
|
|
311
|
+
</div>
|
|
312
|
+
<div
|
|
313
|
+
class="required field"
|
|
314
|
+
>
|
|
315
|
+
<label>
|
|
316
|
+
template.field.type
|
|
317
|
+
</label>
|
|
318
|
+
<div
|
|
319
|
+
aria-expanded="false"
|
|
320
|
+
class="ui fluid selection dropdown"
|
|
321
|
+
name="field.type"
|
|
322
|
+
required=""
|
|
323
|
+
role="listbox"
|
|
324
|
+
tabindex="0"
|
|
325
|
+
>
|
|
326
|
+
<div
|
|
327
|
+
aria-atomic="true"
|
|
328
|
+
aria-live="polite"
|
|
329
|
+
class="divider text"
|
|
330
|
+
role="alert"
|
|
331
|
+
>
|
|
332
|
+
template.field.type.string
|
|
333
|
+
</div>
|
|
334
|
+
<i
|
|
335
|
+
aria-hidden="true"
|
|
336
|
+
class="dropdown icon"
|
|
337
|
+
/>
|
|
338
|
+
<div
|
|
339
|
+
class="menu transition"
|
|
340
|
+
>
|
|
341
|
+
<div
|
|
342
|
+
aria-checked="true"
|
|
343
|
+
aria-selected="true"
|
|
344
|
+
class="active selected item"
|
|
345
|
+
role="option"
|
|
346
|
+
style="pointer-events: all;"
|
|
347
|
+
>
|
|
348
|
+
<span
|
|
349
|
+
class="text"
|
|
350
|
+
>
|
|
351
|
+
template.field.type.string
|
|
352
|
+
</span>
|
|
353
|
+
</div>
|
|
354
|
+
</div>
|
|
355
|
+
</div>
|
|
356
|
+
</div>
|
|
357
|
+
<div
|
|
358
|
+
class="required field"
|
|
359
|
+
>
|
|
360
|
+
<label>
|
|
361
|
+
template.field.cardinality
|
|
362
|
+
</label>
|
|
363
|
+
<div
|
|
364
|
+
aria-expanded="false"
|
|
365
|
+
class="ui fluid selection dropdown"
|
|
366
|
+
name="field.cardinality"
|
|
367
|
+
required=""
|
|
368
|
+
role="listbox"
|
|
369
|
+
tabindex="0"
|
|
370
|
+
>
|
|
371
|
+
<div
|
|
372
|
+
aria-atomic="true"
|
|
373
|
+
aria-live="polite"
|
|
374
|
+
class="divider text"
|
|
375
|
+
role="alert"
|
|
376
|
+
>
|
|
377
|
+
template.field.cardinality.?
|
|
378
|
+
</div>
|
|
379
|
+
<i
|
|
380
|
+
aria-hidden="true"
|
|
381
|
+
class="dropdown icon"
|
|
382
|
+
/>
|
|
383
|
+
<div
|
|
384
|
+
class="menu transition"
|
|
385
|
+
>
|
|
386
|
+
<div
|
|
387
|
+
aria-checked="true"
|
|
388
|
+
aria-selected="true"
|
|
389
|
+
class="active selected item"
|
|
390
|
+
role="option"
|
|
391
|
+
style="pointer-events: all;"
|
|
392
|
+
>
|
|
393
|
+
<span
|
|
394
|
+
class="text"
|
|
395
|
+
>
|
|
396
|
+
template.field.cardinality.?
|
|
397
|
+
</span>
|
|
398
|
+
</div>
|
|
399
|
+
<div
|
|
400
|
+
aria-checked="false"
|
|
401
|
+
aria-selected="false"
|
|
402
|
+
class="item"
|
|
403
|
+
role="option"
|
|
404
|
+
style="pointer-events: all;"
|
|
405
|
+
>
|
|
406
|
+
<span
|
|
407
|
+
class="text"
|
|
408
|
+
>
|
|
409
|
+
template.field.cardinality.1
|
|
410
|
+
</span>
|
|
411
|
+
</div>
|
|
412
|
+
<div
|
|
413
|
+
aria-checked="false"
|
|
414
|
+
aria-selected="false"
|
|
415
|
+
class="item"
|
|
416
|
+
role="option"
|
|
417
|
+
style="pointer-events: all;"
|
|
418
|
+
>
|
|
419
|
+
<span
|
|
420
|
+
class="text"
|
|
421
|
+
>
|
|
422
|
+
template.field.cardinality.*
|
|
423
|
+
</span>
|
|
424
|
+
</div>
|
|
425
|
+
<div
|
|
426
|
+
aria-checked="false"
|
|
427
|
+
aria-selected="false"
|
|
428
|
+
class="item"
|
|
429
|
+
role="option"
|
|
430
|
+
style="pointer-events: all;"
|
|
431
|
+
>
|
|
432
|
+
<span
|
|
433
|
+
class="text"
|
|
434
|
+
>
|
|
435
|
+
template.field.cardinality.+
|
|
436
|
+
</span>
|
|
437
|
+
</div>
|
|
438
|
+
</div>
|
|
439
|
+
</div>
|
|
440
|
+
</div>
|
|
441
|
+
</div>
|
|
442
|
+
</div>
|
|
443
|
+
`;
|