@vonage/vivid 3.0.0-next.82 → 3.0.0-next.84
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/accordion/index.js +2 -9
- package/accordion-item/index.js +8 -22
- package/action-group/index.js +2 -8
- package/avatar/index.js +4 -14
- package/badge/index.js +3 -13
- package/banner/index.js +3 -26
- package/breadcrumb/index.js +1 -1
- package/breadcrumb-item/index.js +5 -9
- package/calendar/index.js +12 -49
- package/calendar-event/index.js +4 -7
- package/card/index.js +9 -28
- package/checkbox/index.js +3 -11
- package/dialog/index.js +7 -59
- package/divider/index.js +1 -0
- package/fab/index.js +2 -8
- package/focus/index.js +2 -2
- package/header/index.js +2 -7
- package/icon/index.js +2 -5
- package/index.js +5 -1
- package/layout/index.js +1 -9
- package/lib/badge/badge.d.ts +1 -3
- package/lib/components.d.ts +2 -0
- package/lib/listbox-option/index.d.ts +4 -0
- package/lib/listbox-option/listbox-option.d.ts +7 -0
- package/lib/listbox-option/listbox-option.template.d.ts +4 -0
- package/lib/radio-group/index.d.ts +10 -0
- package/lib/radio-group/radio-group.d.ts +4 -0
- package/lib/radio-group/radio-group.template.d.ts +4 -0
- package/listbox-option/index.js +248 -0
- package/menu/index.js +2 -7
- package/menu-item/index.js +1 -0
- package/nav/index.js +1 -1
- package/nav-disclosure/index.js +4 -11
- package/nav-item/index.js +2 -2
- package/note/index.js +4 -12
- package/number-field/index.js +25 -21
- package/package.json +13 -9
- package/popup/index.js +0 -1
- package/progress/index.js +5 -13
- package/progress-ring/index.js +4 -8
- package/radio/index.js +7 -131
- package/radio-group/index.js +435 -0
- package/shared/affix.js +1 -6
- package/shared/apply-mixins.js +5 -4
- package/shared/aria.js +9 -0
- package/shared/calendar-event.js +0 -7
- package/shared/direction.js +20 -0
- package/shared/enums.js +0 -17
- package/shared/es.object.assign.js +4 -4
- package/shared/export.js +79 -57
- package/shared/focus2.js +1 -1
- package/shared/form-associated.js +1 -1
- package/shared/form-elements.js +5 -27
- package/shared/icon.js +8 -18
- package/shared/index.js +38 -25
- package/shared/index2.js +2 -13
- package/shared/index3.js +1 -5
- package/shared/index4.js +3 -12
- package/shared/index5.js +6 -581
- package/shared/index6.js +7 -29
- package/shared/iterators.js +3 -3
- package/shared/key-codes.js +7 -1
- package/shared/object-keys.js +2 -2
- package/shared/patterns/form-elements/form-elements.d.ts +1 -1
- package/shared/radio.js +127 -0
- package/shared/ref.js +1 -1
- package/shared/slotted.js +1 -1
- package/shared/text-anchor.js +0 -2
- package/shared/text-anchor.template.js +1 -3
- package/shared/web.dom-collections.iterator.js +6 -8
- package/side-drawer/index.js +3 -16
- package/styles/core/all.css +1 -1
- package/styles/core/theme.css +1 -1
- package/styles/core/typography.css +1 -1
- package/styles/tokens/theme-dark.css +29 -23
- package/styles/tokens/theme-light.css +29 -23
- package/text-area/index.js +3 -9
- package/text-field/index.js +4 -14
- package/tooltip/index.js +2 -10
- package/shared/regexp-flags.js +0 -21
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
import { F as FoundationElement, _ as __decorate, a as attr, o as observable, b as __metadata, h as html, d as designSystem } from '../shared/index.js';
|
|
2
|
+
import { D as Direction, g as getDirection } from '../shared/direction.js';
|
|
3
|
+
import { h as keyArrowRight, g as keyArrowLeft, A as ArrowKeys, d as keyArrowUp, e as keyArrowDown, k as keyEnter } from '../shared/key-codes.js';
|
|
4
|
+
import { O as Orientation } from '../shared/aria.js';
|
|
5
|
+
import { R as Radio } from '../shared/radio.js';
|
|
6
|
+
import { s as slotted, e as elements } from '../shared/slotted.js';
|
|
7
|
+
import { w as when } from '../shared/when.js';
|
|
8
|
+
import '../shared/form-associated.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* An Radio Group Custom HTML Element.
|
|
12
|
+
* Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#radiogroup | ARIA radiogroup }.
|
|
13
|
+
*
|
|
14
|
+
* @slot label - The slot for the label
|
|
15
|
+
* @slot - The default slot for radio buttons
|
|
16
|
+
* @csspart positioning-region - The positioning region for laying out the radios
|
|
17
|
+
* @fires change - Fires a custom 'change' event when the value changes
|
|
18
|
+
*
|
|
19
|
+
* @public
|
|
20
|
+
*/
|
|
21
|
+
class RadioGroup$1 extends FoundationElement {
|
|
22
|
+
constructor() {
|
|
23
|
+
super(...arguments);
|
|
24
|
+
/**
|
|
25
|
+
* The orientation of the group
|
|
26
|
+
*
|
|
27
|
+
* @public
|
|
28
|
+
* @remarks
|
|
29
|
+
* HTML Attribute: orientation
|
|
30
|
+
*/
|
|
31
|
+
this.orientation = Orientation.horizontal;
|
|
32
|
+
this.radioChangeHandler = (e) => {
|
|
33
|
+
const changedRadio = e.target;
|
|
34
|
+
if (changedRadio.checked) {
|
|
35
|
+
this.slottedRadioButtons.forEach((radio) => {
|
|
36
|
+
if (radio !== changedRadio) {
|
|
37
|
+
radio.checked = false;
|
|
38
|
+
if (!this.isInsideFoundationToolbar) {
|
|
39
|
+
radio.setAttribute("tabindex", "-1");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
this.selectedRadio = changedRadio;
|
|
44
|
+
this.value = changedRadio.value;
|
|
45
|
+
changedRadio.setAttribute("tabindex", "0");
|
|
46
|
+
this.focusedRadio = changedRadio;
|
|
47
|
+
}
|
|
48
|
+
e.stopPropagation();
|
|
49
|
+
};
|
|
50
|
+
this.moveToRadioByIndex = (group, index) => {
|
|
51
|
+
const radio = group[index];
|
|
52
|
+
if (!this.isInsideToolbar) {
|
|
53
|
+
radio.setAttribute("tabindex", "0");
|
|
54
|
+
if (radio.readOnly) {
|
|
55
|
+
this.slottedRadioButtons.forEach((nextRadio) => {
|
|
56
|
+
if (nextRadio !== radio) {
|
|
57
|
+
nextRadio.setAttribute("tabindex", "-1");
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
radio.checked = true;
|
|
63
|
+
this.selectedRadio = radio;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
this.focusedRadio = radio;
|
|
67
|
+
radio.focus();
|
|
68
|
+
};
|
|
69
|
+
this.moveRightOffGroup = () => {
|
|
70
|
+
var _a;
|
|
71
|
+
(_a = this.nextElementSibling) === null || _a === void 0 ? void 0 : _a.focus();
|
|
72
|
+
};
|
|
73
|
+
this.moveLeftOffGroup = () => {
|
|
74
|
+
var _a;
|
|
75
|
+
(_a = this.previousElementSibling) === null || _a === void 0 ? void 0 : _a.focus();
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* @internal
|
|
79
|
+
*/
|
|
80
|
+
this.focusOutHandler = (e) => {
|
|
81
|
+
const group = this.slottedRadioButtons;
|
|
82
|
+
const radio = e.target;
|
|
83
|
+
const index = radio !== null ? group.indexOf(radio) : 0;
|
|
84
|
+
const focusedIndex = this.focusedRadio
|
|
85
|
+
? group.indexOf(this.focusedRadio)
|
|
86
|
+
: -1;
|
|
87
|
+
if ((focusedIndex === 0 && index === focusedIndex) ||
|
|
88
|
+
(focusedIndex === group.length - 1 && focusedIndex === index)) {
|
|
89
|
+
if (!this.selectedRadio) {
|
|
90
|
+
this.focusedRadio = group[0];
|
|
91
|
+
this.focusedRadio.setAttribute("tabindex", "0");
|
|
92
|
+
group.forEach((nextRadio) => {
|
|
93
|
+
if (nextRadio !== this.focusedRadio) {
|
|
94
|
+
nextRadio.setAttribute("tabindex", "-1");
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
this.focusedRadio = this.selectedRadio;
|
|
100
|
+
if (!this.isInsideFoundationToolbar) {
|
|
101
|
+
this.selectedRadio.setAttribute("tabindex", "0");
|
|
102
|
+
group.forEach((nextRadio) => {
|
|
103
|
+
if (nextRadio !== this.selectedRadio) {
|
|
104
|
+
nextRadio.setAttribute("tabindex", "-1");
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return true;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* @internal
|
|
114
|
+
*/
|
|
115
|
+
this.clickHandler = (e) => {
|
|
116
|
+
const radio = e.target;
|
|
117
|
+
if (radio) {
|
|
118
|
+
const group = this.slottedRadioButtons;
|
|
119
|
+
if (radio.checked || group.indexOf(radio) === 0) {
|
|
120
|
+
radio.setAttribute("tabindex", "0");
|
|
121
|
+
this.selectedRadio = radio;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
radio.setAttribute("tabindex", "-1");
|
|
125
|
+
this.selectedRadio = null;
|
|
126
|
+
}
|
|
127
|
+
this.focusedRadio = radio;
|
|
128
|
+
}
|
|
129
|
+
e.preventDefault();
|
|
130
|
+
};
|
|
131
|
+
this.shouldMoveOffGroupToTheRight = (index, group, key) => {
|
|
132
|
+
return index === group.length && this.isInsideToolbar && key === keyArrowRight;
|
|
133
|
+
};
|
|
134
|
+
this.shouldMoveOffGroupToTheLeft = (group, key) => {
|
|
135
|
+
const index = this.focusedRadio ? group.indexOf(this.focusedRadio) - 1 : 0;
|
|
136
|
+
return index < 0 && this.isInsideToolbar && key === keyArrowLeft;
|
|
137
|
+
};
|
|
138
|
+
this.checkFocusedRadio = () => {
|
|
139
|
+
if (this.focusedRadio !== null &&
|
|
140
|
+
!this.focusedRadio.readOnly &&
|
|
141
|
+
!this.focusedRadio.checked) {
|
|
142
|
+
this.focusedRadio.checked = true;
|
|
143
|
+
this.focusedRadio.setAttribute("tabindex", "0");
|
|
144
|
+
this.focusedRadio.focus();
|
|
145
|
+
this.selectedRadio = this.focusedRadio;
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
this.moveRight = (e) => {
|
|
149
|
+
const group = this.slottedRadioButtons;
|
|
150
|
+
let index = 0;
|
|
151
|
+
index = this.focusedRadio ? group.indexOf(this.focusedRadio) + 1 : 1;
|
|
152
|
+
if (this.shouldMoveOffGroupToTheRight(index, group, e.key)) {
|
|
153
|
+
this.moveRightOffGroup();
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
else if (index === group.length) {
|
|
157
|
+
index = 0;
|
|
158
|
+
}
|
|
159
|
+
/* looping to get to next radio that is not disabled */
|
|
160
|
+
/* matching native radio/radiogroup which does not select an item if there is only 1 in the group */
|
|
161
|
+
while (index < group.length && group.length > 1) {
|
|
162
|
+
if (!group[index].disabled) {
|
|
163
|
+
this.moveToRadioByIndex(group, index);
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
else if (this.focusedRadio && index === group.indexOf(this.focusedRadio)) {
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
else if (index + 1 >= group.length) {
|
|
170
|
+
if (this.isInsideToolbar) {
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
index = 0;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
index += 1;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
this.moveLeft = (e) => {
|
|
183
|
+
const group = this.slottedRadioButtons;
|
|
184
|
+
let index = 0;
|
|
185
|
+
index = this.focusedRadio ? group.indexOf(this.focusedRadio) - 1 : 0;
|
|
186
|
+
index = index < 0 ? group.length - 1 : index;
|
|
187
|
+
if (this.shouldMoveOffGroupToTheLeft(group, e.key)) {
|
|
188
|
+
this.moveLeftOffGroup();
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
/* looping to get to next radio that is not disabled */
|
|
192
|
+
while (index >= 0 && group.length > 1) {
|
|
193
|
+
if (!group[index].disabled) {
|
|
194
|
+
this.moveToRadioByIndex(group, index);
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
else if (this.focusedRadio && index === group.indexOf(this.focusedRadio)) {
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
else if (index - 1 < 0) {
|
|
201
|
+
index = group.length - 1;
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
index -= 1;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
/**
|
|
209
|
+
* keyboard handling per https://w3c.github.io/aria-practices/#for-radio-groups-not-contained-in-a-toolbar
|
|
210
|
+
* navigation is different when there is an ancestor with role='toolbar'
|
|
211
|
+
*
|
|
212
|
+
* @internal
|
|
213
|
+
*/
|
|
214
|
+
this.keydownHandler = (e) => {
|
|
215
|
+
const key = e.key;
|
|
216
|
+
if (key in ArrowKeys && this.isInsideFoundationToolbar) {
|
|
217
|
+
return true;
|
|
218
|
+
}
|
|
219
|
+
switch (key) {
|
|
220
|
+
case keyEnter: {
|
|
221
|
+
this.checkFocusedRadio();
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
case keyArrowRight:
|
|
225
|
+
case keyArrowDown: {
|
|
226
|
+
if (this.direction === Direction.ltr) {
|
|
227
|
+
this.moveRight(e);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
this.moveLeft(e);
|
|
231
|
+
}
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
case keyArrowLeft:
|
|
235
|
+
case keyArrowUp: {
|
|
236
|
+
if (this.direction === Direction.ltr) {
|
|
237
|
+
this.moveLeft(e);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
this.moveRight(e);
|
|
241
|
+
}
|
|
242
|
+
break;
|
|
243
|
+
}
|
|
244
|
+
default: {
|
|
245
|
+
return true;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
readOnlyChanged() {
|
|
251
|
+
if (this.slottedRadioButtons !== undefined) {
|
|
252
|
+
this.slottedRadioButtons.forEach((radio) => {
|
|
253
|
+
if (this.readOnly) {
|
|
254
|
+
radio.readOnly = true;
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
radio.readOnly = false;
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
disabledChanged() {
|
|
263
|
+
if (this.slottedRadioButtons !== undefined) {
|
|
264
|
+
this.slottedRadioButtons.forEach((radio) => {
|
|
265
|
+
if (this.disabled) {
|
|
266
|
+
radio.disabled = true;
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
radio.disabled = false;
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
nameChanged() {
|
|
275
|
+
if (this.slottedRadioButtons) {
|
|
276
|
+
this.slottedRadioButtons.forEach((radio) => {
|
|
277
|
+
radio.setAttribute("name", this.name);
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
valueChanged() {
|
|
282
|
+
if (this.slottedRadioButtons) {
|
|
283
|
+
this.slottedRadioButtons.forEach((radio) => {
|
|
284
|
+
if (radio.value === this.value) {
|
|
285
|
+
radio.checked = true;
|
|
286
|
+
this.selectedRadio = radio;
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
this.$emit("change");
|
|
291
|
+
}
|
|
292
|
+
slottedRadioButtonsChanged(oldValue, newValue) {
|
|
293
|
+
if (this.slottedRadioButtons && this.slottedRadioButtons.length > 0) {
|
|
294
|
+
this.setupRadioButtons();
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
get parentToolbar() {
|
|
298
|
+
return this.closest('[role="toolbar"]');
|
|
299
|
+
}
|
|
300
|
+
get isInsideToolbar() {
|
|
301
|
+
var _a;
|
|
302
|
+
return ((_a = this.parentToolbar) !== null && _a !== void 0 ? _a : false);
|
|
303
|
+
}
|
|
304
|
+
get isInsideFoundationToolbar() {
|
|
305
|
+
var _a;
|
|
306
|
+
return !!((_a = this.parentToolbar) === null || _a === void 0 ? void 0 : _a["$fastController"]);
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* @internal
|
|
310
|
+
*/
|
|
311
|
+
connectedCallback() {
|
|
312
|
+
super.connectedCallback();
|
|
313
|
+
this.direction = getDirection(this);
|
|
314
|
+
this.setupRadioButtons();
|
|
315
|
+
}
|
|
316
|
+
disconnectedCallback() {
|
|
317
|
+
this.slottedRadioButtons.forEach((radio) => {
|
|
318
|
+
radio.removeEventListener("change", this.radioChangeHandler);
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
setupRadioButtons() {
|
|
322
|
+
const checkedRadios = this.slottedRadioButtons.filter((radio) => {
|
|
323
|
+
return radio.hasAttribute("checked");
|
|
324
|
+
});
|
|
325
|
+
const numberOfCheckedRadios = checkedRadios ? checkedRadios.length : 0;
|
|
326
|
+
if (numberOfCheckedRadios > 1) {
|
|
327
|
+
const lastCheckedRadio = checkedRadios[numberOfCheckedRadios - 1];
|
|
328
|
+
lastCheckedRadio.checked = true;
|
|
329
|
+
}
|
|
330
|
+
let foundMatchingVal = false;
|
|
331
|
+
this.slottedRadioButtons.forEach((radio) => {
|
|
332
|
+
if (this.name !== undefined) {
|
|
333
|
+
radio.setAttribute("name", this.name);
|
|
334
|
+
}
|
|
335
|
+
if (this.disabled) {
|
|
336
|
+
radio.disabled = true;
|
|
337
|
+
}
|
|
338
|
+
if (this.readOnly) {
|
|
339
|
+
radio.readOnly = true;
|
|
340
|
+
}
|
|
341
|
+
if (this.value && this.value === radio.value) {
|
|
342
|
+
this.selectedRadio = radio;
|
|
343
|
+
this.focusedRadio = radio;
|
|
344
|
+
radio.checked = true;
|
|
345
|
+
radio.setAttribute("tabindex", "0");
|
|
346
|
+
foundMatchingVal = true;
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
if (!this.isInsideFoundationToolbar) {
|
|
350
|
+
radio.setAttribute("tabindex", "-1");
|
|
351
|
+
}
|
|
352
|
+
radio.checked = false;
|
|
353
|
+
}
|
|
354
|
+
radio.addEventListener("change", this.radioChangeHandler);
|
|
355
|
+
});
|
|
356
|
+
if (this.value === undefined && this.slottedRadioButtons.length > 0) {
|
|
357
|
+
const checkedRadios = this.slottedRadioButtons.filter((radio) => {
|
|
358
|
+
return radio.hasAttribute("checked");
|
|
359
|
+
});
|
|
360
|
+
const numberOfCheckedRadios = checkedRadios !== null ? checkedRadios.length : 0;
|
|
361
|
+
if (numberOfCheckedRadios > 0 && !foundMatchingVal) {
|
|
362
|
+
const lastCheckedRadio = checkedRadios[numberOfCheckedRadios - 1];
|
|
363
|
+
lastCheckedRadio.checked = true;
|
|
364
|
+
this.focusedRadio = lastCheckedRadio;
|
|
365
|
+
lastCheckedRadio.setAttribute("tabindex", "0");
|
|
366
|
+
}
|
|
367
|
+
else {
|
|
368
|
+
this.slottedRadioButtons[0].setAttribute("tabindex", "0");
|
|
369
|
+
this.focusedRadio = this.slottedRadioButtons[0];
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
__decorate([
|
|
375
|
+
attr({ attribute: "readonly", mode: "boolean" })
|
|
376
|
+
], RadioGroup$1.prototype, "readOnly", void 0);
|
|
377
|
+
__decorate([
|
|
378
|
+
attr({ attribute: "disabled", mode: "boolean" })
|
|
379
|
+
], RadioGroup$1.prototype, "disabled", void 0);
|
|
380
|
+
__decorate([
|
|
381
|
+
attr
|
|
382
|
+
], RadioGroup$1.prototype, "name", void 0);
|
|
383
|
+
__decorate([
|
|
384
|
+
attr
|
|
385
|
+
], RadioGroup$1.prototype, "value", void 0);
|
|
386
|
+
__decorate([
|
|
387
|
+
attr
|
|
388
|
+
], RadioGroup$1.prototype, "orientation", void 0);
|
|
389
|
+
__decorate([
|
|
390
|
+
observable
|
|
391
|
+
], RadioGroup$1.prototype, "childItems", void 0);
|
|
392
|
+
__decorate([
|
|
393
|
+
observable
|
|
394
|
+
], RadioGroup$1.prototype, "slottedRadioButtons", void 0);
|
|
395
|
+
|
|
396
|
+
var css_248z = "/**\n * Do not edit directly\n * Generated on Mon, 31 Oct 2022 12:51:44 GMT\n */\n.positioning-region {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n.positioning-region.vertical {\n flex-direction: column;\n}\nlabel + .positioning-region {\n margin-block-start: 8px;\n}\n\nlabel {\n color: var(--vvd-color-canvas-text);\n font: var(--vvd-typography-base);\n}";
|
|
397
|
+
|
|
398
|
+
class RadioGroup extends RadioGroup$1 {}
|
|
399
|
+
__decorate([attr, __metadata("design:type", String)], RadioGroup.prototype, "label", void 0);
|
|
400
|
+
|
|
401
|
+
let _ = t => t,
|
|
402
|
+
_t,
|
|
403
|
+
_t2;
|
|
404
|
+
const RadioGroupTemplate = context => {
|
|
405
|
+
return html(_t || (_t = _`
|
|
406
|
+
<div
|
|
407
|
+
role="radiogroup"
|
|
408
|
+
aria-disabled="${0}"
|
|
409
|
+
aria-readonly="${0}"
|
|
410
|
+
aria-orientation="${0}"
|
|
411
|
+
@click="${0}"
|
|
412
|
+
@keydown="${0}"
|
|
413
|
+
@focusout="${0}"
|
|
414
|
+
>
|
|
415
|
+
|
|
416
|
+
${0}
|
|
417
|
+
|
|
418
|
+
<div class="positioning-region ${0}">
|
|
419
|
+
<slot ${0}></slot>
|
|
420
|
+
</div>
|
|
421
|
+
</div>
|
|
422
|
+
`), x => x.disabled, x => x.readOnly, x => x.orientation, (x, c) => x.clickHandler(c.event), (x, c) => x.keydownHandler(c.event), (x, c) => x.focusOutHandler(c.event), when(x => x.label, html(_t2 || (_t2 = _`<label>${0}</label>`), x => x.label)), x => x.orientation === Orientation.horizontal ? 'horizontal' : 'vertical', slotted({
|
|
423
|
+
property: 'slottedRadioButtons',
|
|
424
|
+
filter: elements(context.tagFor(Radio))
|
|
425
|
+
}));
|
|
426
|
+
};
|
|
427
|
+
|
|
428
|
+
const vividRadioGroup = RadioGroup.compose({
|
|
429
|
+
baseName: 'radio-group',
|
|
430
|
+
template: RadioGroupTemplate,
|
|
431
|
+
styles: css_248z
|
|
432
|
+
});
|
|
433
|
+
designSystem.register(vividRadioGroup());
|
|
434
|
+
|
|
435
|
+
export { vividRadioGroup };
|
package/shared/affix.js
CHANGED
|
@@ -3,24 +3,19 @@ import { _ as __decorate, a as attr, b as __metadata, h as html } from './index.
|
|
|
3
3
|
import { I as Icon } from './icon.js';
|
|
4
4
|
|
|
5
5
|
let _ = t => t,
|
|
6
|
-
|
|
6
|
+
_t;
|
|
7
7
|
class AffixIcon {}
|
|
8
|
-
|
|
9
8
|
__decorate([attr, __metadata("design:type", String)], AffixIcon.prototype, "icon", void 0);
|
|
10
|
-
|
|
11
9
|
class AffixIconWithTrailing extends AffixIcon {
|
|
12
10
|
constructor() {
|
|
13
11
|
super(...arguments);
|
|
14
12
|
this.iconTrailing = false;
|
|
15
13
|
}
|
|
16
|
-
|
|
17
14
|
}
|
|
18
|
-
|
|
19
15
|
__decorate([attr({
|
|
20
16
|
mode: 'boolean',
|
|
21
17
|
attribute: 'icon-trailing'
|
|
22
18
|
}), __metadata("design:type", Object)], AffixIconWithTrailing.prototype, "iconTrailing", void 0);
|
|
23
|
-
|
|
24
19
|
const affixIconTemplateFactory = context => {
|
|
25
20
|
const iconTag = context.tagFor(Icon);
|
|
26
21
|
return icon => icon ? html(_t || (_t = _`<span class="icon"><${0} :type="${0}"></${0}></span>`), iconTag, () => icon, iconTag) : null;
|
package/shared/apply-mixins.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import { A as AttributeConfiguration } from './index.js';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Apply mixins to a constructor.
|
|
3
5
|
* Sourced from {@link https://www.typescriptlang.org/docs/handbook/mixins.html | TypeScript Documentation }.
|
|
4
6
|
* @public
|
|
5
7
|
*/
|
|
6
8
|
function applyMixins(derivedCtor, ...baseCtors) {
|
|
9
|
+
const derivedAttributes = AttributeConfiguration.locate(derivedCtor);
|
|
7
10
|
baseCtors.forEach(baseCtor => {
|
|
8
11
|
Object.getOwnPropertyNames(baseCtor.prototype).forEach(name => {
|
|
9
12
|
if (name !== "constructor") {
|
|
@@ -12,10 +15,8 @@ function applyMixins(derivedCtor, ...baseCtors) {
|
|
|
12
15
|
Object.getOwnPropertyDescriptor(baseCtor.prototype, name));
|
|
13
16
|
}
|
|
14
17
|
});
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
derivedCtor.attributes = existing.concat(baseCtor.attributes);
|
|
18
|
-
}
|
|
18
|
+
const baseAttributes = AttributeConfiguration.locate(baseCtor);
|
|
19
|
+
baseAttributes.forEach(x => derivedAttributes.push(x));
|
|
19
20
|
});
|
|
20
21
|
}
|
|
21
22
|
|
package/shared/aria.js
ADDED
package/shared/calendar-event.js
CHANGED
|
@@ -1,24 +1,17 @@
|
|
|
1
1
|
import { F as FoundationElement, _ as __decorate, a as attr, b as __metadata, n as nullableNumberConverter } from './index.js';
|
|
2
2
|
|
|
3
3
|
class CalendarEvent extends FoundationElement {}
|
|
4
|
-
|
|
5
4
|
__decorate([attr, __metadata("design:type", String)], CalendarEvent.prototype, "heading", void 0);
|
|
6
|
-
|
|
7
5
|
__decorate([attr, __metadata("design:type", String)], CalendarEvent.prototype, "description", void 0);
|
|
8
|
-
|
|
9
6
|
__decorate([attr, __metadata("design:type", String)], CalendarEvent.prototype, "connotation", void 0);
|
|
10
|
-
|
|
11
7
|
__decorate([attr, __metadata("design:type", String)], CalendarEvent.prototype, "appearance", void 0);
|
|
12
|
-
|
|
13
8
|
__decorate([attr({
|
|
14
9
|
converter: nullableNumberConverter,
|
|
15
10
|
attribute: 'overlap-count'
|
|
16
11
|
}), __metadata("design:type", Number)], CalendarEvent.prototype, "overlapCount", void 0);
|
|
17
|
-
|
|
18
12
|
__decorate([attr({
|
|
19
13
|
converter: nullableNumberConverter
|
|
20
14
|
}), __metadata("design:type", Number)], CalendarEvent.prototype, "start", void 0);
|
|
21
|
-
|
|
22
15
|
__decorate([attr({
|
|
23
16
|
converter: nullableNumberConverter
|
|
24
17
|
}), __metadata("design:type", Number)], CalendarEvent.prototype, "duration", void 0);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expose ltr and rtl strings
|
|
3
|
+
*/
|
|
4
|
+
var Direction;
|
|
5
|
+
(function (Direction) {
|
|
6
|
+
Direction["ltr"] = "ltr";
|
|
7
|
+
Direction["rtl"] = "rtl";
|
|
8
|
+
})(Direction || (Direction = {}));
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* a method to determine the current localization direction of the view
|
|
12
|
+
* @param rootNode - the HTMLElement to begin the query from, usually "this" when used in a component controller
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
const getDirection = (rootNode) => {
|
|
16
|
+
const dirNode = rootNode.closest("[dir]");
|
|
17
|
+
return dirNode !== null && dirNode.dir === "rtl" ? Direction.rtl : Direction.ltr;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export { Direction as D, getDirection as g };
|
package/shared/enums.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
var Connotation;
|
|
2
|
-
|
|
3
2
|
(function (Connotation) {
|
|
4
3
|
Connotation["Accent"] = "accent";
|
|
5
4
|
Connotation["CTA"] = "cta";
|
|
@@ -9,24 +8,18 @@ var Connotation;
|
|
|
9
8
|
Connotation["Information"] = "information";
|
|
10
9
|
Connotation["Announcement"] = "announcement";
|
|
11
10
|
})(Connotation || (Connotation = {}));
|
|
12
|
-
|
|
13
11
|
var ConnotationDecorative;
|
|
14
|
-
|
|
15
12
|
(function (ConnotationDecorative) {
|
|
16
13
|
ConnotationDecorative["Pacific"] = "pacific";
|
|
17
14
|
})(ConnotationDecorative || (ConnotationDecorative = {}));
|
|
18
|
-
|
|
19
15
|
var Shape;
|
|
20
|
-
|
|
21
16
|
(function (Shape) {
|
|
22
17
|
Shape["Rounded"] = "rounded";
|
|
23
18
|
Shape["Pill"] = "pill";
|
|
24
19
|
Shape["Circled"] = "circled";
|
|
25
20
|
Shape["Sharp"] = "sharp";
|
|
26
21
|
})(Shape || (Shape = {}));
|
|
27
|
-
|
|
28
22
|
var Appearance;
|
|
29
|
-
|
|
30
23
|
(function (Appearance) {
|
|
31
24
|
Appearance["Filled"] = "filled";
|
|
32
25
|
Appearance["Outlined"] = "outlined";
|
|
@@ -35,25 +28,19 @@ var Appearance;
|
|
|
35
28
|
Appearance["Subtle"] = "subtle";
|
|
36
29
|
Appearance["Ghost"] = "ghost";
|
|
37
30
|
})(Appearance || (Appearance = {}));
|
|
38
|
-
|
|
39
31
|
var Density;
|
|
40
|
-
|
|
41
32
|
(function (Density) {
|
|
42
33
|
Density["Condensed"] = "condensed";
|
|
43
34
|
Density["Normal"] = "normal";
|
|
44
35
|
Density["Extended"] = "extended";
|
|
45
36
|
})(Density || (Density = {}));
|
|
46
|
-
|
|
47
37
|
var Size;
|
|
48
|
-
|
|
49
38
|
(function (Size) {
|
|
50
39
|
Size["Small"] = "small";
|
|
51
40
|
Size["Medium"] = "medium";
|
|
52
41
|
Size["Large"] = "large";
|
|
53
42
|
})(Size || (Size = {}));
|
|
54
|
-
|
|
55
43
|
var Position;
|
|
56
|
-
|
|
57
44
|
(function (Position) {
|
|
58
45
|
Position["Top"] = "TOP";
|
|
59
46
|
Position["Bottom"] = "BOTTOM";
|
|
@@ -61,16 +48,12 @@ var Position;
|
|
|
61
48
|
Position["Center"] = "CENTER";
|
|
62
49
|
Position["End"] = "END";
|
|
63
50
|
})(Position || (Position = {}));
|
|
64
|
-
|
|
65
51
|
var Role;
|
|
66
|
-
|
|
67
52
|
(function (Role) {
|
|
68
53
|
Role["Status"] = "status";
|
|
69
54
|
Role["Alert"] = "alert";
|
|
70
55
|
})(Role || (Role = {}));
|
|
71
|
-
|
|
72
56
|
var AriaLive;
|
|
73
|
-
|
|
74
57
|
(function (AriaLive) {
|
|
75
58
|
AriaLive["Polite"] = "polite";
|
|
76
59
|
AriaLive["Assertive"] = "assertive";
|
|
@@ -11,9 +11,9 @@ var propertyIsEnumerableModule = objectPropertyIsEnumerable;
|
|
|
11
11
|
var toObject = toObject$1;
|
|
12
12
|
var IndexedObject = indexedObject;
|
|
13
13
|
|
|
14
|
-
// eslint-disable-next-line es
|
|
14
|
+
// eslint-disable-next-line es/no-object-assign -- safe
|
|
15
15
|
var $assign = Object.assign;
|
|
16
|
-
// eslint-disable-next-line es
|
|
16
|
+
// eslint-disable-next-line es/no-object-defineproperty -- required for testing
|
|
17
17
|
var defineProperty = Object.defineProperty;
|
|
18
18
|
var concat = uncurryThis([].concat);
|
|
19
19
|
|
|
@@ -33,7 +33,7 @@ var objectAssign = !$assign || fails(function () {
|
|
|
33
33
|
// should work with symbols and should have deterministic property order (V8 bug)
|
|
34
34
|
var A = {};
|
|
35
35
|
var B = {};
|
|
36
|
-
// eslint-disable-next-line es
|
|
36
|
+
// eslint-disable-next-line es/no-symbol -- safe
|
|
37
37
|
var symbol = Symbol();
|
|
38
38
|
var alphabet = 'abcdefghijklmnopqrst';
|
|
39
39
|
A[symbol] = 7;
|
|
@@ -63,7 +63,7 @@ var assign = objectAssign;
|
|
|
63
63
|
|
|
64
64
|
// `Object.assign` method
|
|
65
65
|
// https://tc39.es/ecma262/#sec-object.assign
|
|
66
|
-
// eslint-disable-next-line es
|
|
66
|
+
// eslint-disable-next-line es/no-object-assign -- required for testing
|
|
67
67
|
$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {
|
|
68
68
|
assign: assign
|
|
69
69
|
});
|