@vonage/vivid 3.0.0-next.119 → 3.0.0-next.120

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 (201) hide show
  1. package/README.md +11 -6
  2. package/accordion/index.js +4 -51
  3. package/accordion-item/index.js +11 -109
  4. package/action-group/index.js +4 -36
  5. package/avatar/index.js +8 -64
  6. package/badge/index.js +9 -48
  7. package/banner/index.js +15 -117
  8. package/breadcrumb/index.js +5 -97
  9. package/breadcrumb-item/index.js +14 -53
  10. package/button/index.js +14 -92
  11. package/calendar/index.js +5 -1520
  12. package/calendar-event/index.js +7 -107
  13. package/card/index.js +10 -117
  14. package/checkbox/index.js +13 -175
  15. package/custom-elements.json +1827 -8
  16. package/dialog/index.js +14 -227
  17. package/divider/index.js +4 -25
  18. package/elevation/index.js +4 -24
  19. package/fab/index.js +13 -89
  20. package/focus/index.js +4 -17
  21. package/header/index.js +7 -12
  22. package/icon/index.js +7 -28
  23. package/index.js +49 -55
  24. package/layout/index.js +4 -42
  25. package/lib/accordion/definition.d.ts +3 -0
  26. package/lib/accordion/index.d.ts +1 -2
  27. package/lib/accordion-item/definition.d.ts +3 -0
  28. package/lib/accordion-item/index.d.ts +1 -2
  29. package/lib/action-group/definition.d.ts +3 -0
  30. package/lib/action-group/index.d.ts +1 -2
  31. package/lib/avatar/definition.d.ts +3 -0
  32. package/lib/avatar/index.d.ts +1 -2
  33. package/lib/badge/definition.d.ts +3 -0
  34. package/lib/badge/index.d.ts +1 -2
  35. package/lib/banner/definition.d.ts +3 -0
  36. package/lib/banner/index.d.ts +1 -2
  37. package/lib/breadcrumb/definition.d.ts +3 -0
  38. package/lib/breadcrumb/index.d.ts +1 -2
  39. package/lib/breadcrumb-item/definition.d.ts +3 -0
  40. package/lib/breadcrumb-item/index.d.ts +1 -2
  41. package/lib/button/definition.d.ts +3 -0
  42. package/lib/calendar/definition.d.ts +3 -0
  43. package/lib/calendar/index.d.ts +1 -2
  44. package/lib/calendar-event/definition.d.ts +3 -0
  45. package/lib/calendar-event/index.d.ts +1 -2
  46. package/lib/card/definition.d.ts +3 -0
  47. package/lib/card/index.d.ts +1 -2
  48. package/lib/checkbox/definition.d.ts +3 -0
  49. package/lib/checkbox/index.d.ts +1 -2
  50. package/lib/components.d.ts +38 -38
  51. package/lib/dialog/definition.d.ts +3 -0
  52. package/lib/dialog/index.d.ts +1 -2
  53. package/lib/divider/definition.d.ts +3 -0
  54. package/lib/divider/index.d.ts +1 -2
  55. package/lib/elevation/definition.d.ts +3 -0
  56. package/lib/elevation/index.d.ts +1 -2
  57. package/lib/fab/definition.d.ts +3 -0
  58. package/lib/fab/index.d.ts +1 -2
  59. package/lib/focus/definition.d.ts +3 -0
  60. package/lib/focus/index.d.ts +1 -2
  61. package/lib/header/definition.d.ts +3 -0
  62. package/lib/header/index.d.ts +1 -2
  63. package/lib/icon/definition.d.ts +3 -0
  64. package/lib/icon/index.d.ts +1 -2
  65. package/lib/layout/definition.d.ts +3 -0
  66. package/lib/layout/index.d.ts +1 -2
  67. package/lib/listbox/definition.d.ts +3 -0
  68. package/lib/menu/definition.d.ts +7 -0
  69. package/lib/menu/index.d.ts +1 -10
  70. package/lib/menu-item/definition.d.ts +3 -0
  71. package/lib/menu-item/index.d.ts +1 -2
  72. package/lib/nav/definition.d.ts +3 -0
  73. package/lib/nav/index.d.ts +1 -2
  74. package/lib/nav-disclosure/definition.d.ts +3 -0
  75. package/lib/nav-disclosure/index.d.ts +1 -2
  76. package/lib/nav-item/definition.d.ts +3 -0
  77. package/lib/nav-item/index.d.ts +1 -2
  78. package/lib/note/definition.d.ts +3 -0
  79. package/lib/note/index.d.ts +1 -2
  80. package/lib/number-field/definition.d.ts +3 -0
  81. package/lib/number-field/index.d.ts +1 -2
  82. package/lib/option/definition.d.ts +3 -0
  83. package/lib/option/index.d.ts +1 -2
  84. package/lib/popup/definition.d.ts +4 -0
  85. package/lib/popup/index.d.ts +1 -2
  86. package/lib/progress/definition.d.ts +3 -0
  87. package/lib/progress/index.d.ts +1 -2
  88. package/lib/progress-ring/definition.d.ts +3 -0
  89. package/lib/progress-ring/index.d.ts +1 -2
  90. package/lib/radio/definition.d.ts +3 -0
  91. package/lib/radio/index.d.ts +1 -2
  92. package/lib/radio-group/definition.d.ts +7 -0
  93. package/lib/radio-group/index.d.ts +1 -10
  94. package/lib/side-drawer/definition.d.ts +3 -0
  95. package/lib/side-drawer/index.d.ts +1 -2
  96. package/lib/slider/definition.d.ts +3 -0
  97. package/lib/slider/index.d.ts +1 -2
  98. package/lib/switch/definition.d.ts +3 -0
  99. package/lib/switch/index.d.ts +1 -2
  100. package/lib/text-anchor/definition.d.ts +3 -0
  101. package/lib/text-anchor/index.d.ts +1 -2
  102. package/lib/text-area/definition.d.ts +3 -0
  103. package/lib/text-area/index.d.ts +1 -2
  104. package/lib/text-field/definition.d.ts +3 -0
  105. package/lib/text-field/index.d.ts +1 -2
  106. package/lib/tooltip/definition.d.ts +3 -0
  107. package/lib/tooltip/index.d.ts +1 -2
  108. package/listbox/index.js +18 -1080
  109. package/menu/index.js +27 -354
  110. package/menu-item/index.js +11 -81
  111. package/nav/index.js +3 -16
  112. package/nav-disclosure/index.js +13 -77
  113. package/nav-item/index.js +13 -35
  114. package/note/index.js +13 -60
  115. package/number-field/index.js +14 -16
  116. package/option/index.js +13 -68
  117. package/package.json +2 -2
  118. package/popup/index.js +17 -55
  119. package/progress/index.js +6 -92
  120. package/progress-ring/index.js +6 -75
  121. package/radio/index.js +8 -48
  122. package/radio-group/index.js +9 -433
  123. package/shared/anchor.js +1 -1
  124. package/shared/apply-mixins.js +1 -1
  125. package/shared/base-progress.js +1 -1
  126. package/shared/breadcrumb-item.js +1 -1
  127. package/shared/button.js +195 -18
  128. package/shared/calendar-event.js +1 -1
  129. package/shared/definition.js +53 -0
  130. package/shared/definition10.js +99 -0
  131. package/shared/definition11.js +48 -0
  132. package/shared/definition12.js +1523 -0
  133. package/shared/definition13.js +111 -0
  134. package/shared/definition14.js +114 -0
  135. package/shared/definition15.js +32 -0
  136. package/shared/definition16.js +172 -0
  137. package/shared/definition17.js +223 -0
  138. package/shared/{divider.js → definition18.js} +25 -2
  139. package/shared/definition19.js +87 -0
  140. package/shared/definition2.js +106 -0
  141. package/shared/definition20.js +44 -0
  142. package/shared/definition21.js +1078 -0
  143. package/shared/{listbox-option.js → definition22.js} +71 -11
  144. package/shared/definition23.js +348 -0
  145. package/shared/{popup.js → definition24.js} +46 -3
  146. package/shared/{menu-item.js → definition25.js} +87 -13
  147. package/shared/definition26.js +18 -0
  148. package/shared/definition27.js +75 -0
  149. package/shared/definition28.js +31 -0
  150. package/shared/definition29.js +56 -0
  151. package/shared/definition3.js +29 -0
  152. package/shared/definition30.js +94 -0
  153. package/shared/definition31.js +77 -0
  154. package/shared/definition32.js +45 -0
  155. package/shared/definition33.js +435 -0
  156. package/shared/definition34.js +86 -0
  157. package/shared/definition35.js +592 -0
  158. package/shared/definition36.js +147 -0
  159. package/shared/definition37.js +279 -0
  160. package/shared/definition38.js +119 -0
  161. package/shared/definition39.js +77 -0
  162. package/shared/definition4.js +19 -0
  163. package/shared/definition5.js +38 -0
  164. package/shared/definition6.js +60 -0
  165. package/shared/definition7.js +45 -0
  166. package/shared/definition8.js +113 -0
  167. package/shared/definition9.js +107 -0
  168. package/shared/design-system/index.d.ts +1 -2
  169. package/shared/es.object.assign.js +58 -1
  170. package/shared/es.regexp.to-string.js +2 -1
  171. package/shared/focus.js +3 -9
  172. package/shared/focus2.js +9 -3
  173. package/shared/form-associated.js +1 -1
  174. package/shared/form-elements.js +2 -2
  175. package/shared/icon.js +1096 -9
  176. package/shared/index.js +385 -2501
  177. package/shared/patterns/form-elements/form-elements.d.ts +2 -2
  178. package/shared/radio.js +1 -1
  179. package/shared/ref.js +1 -1
  180. package/shared/slotted.js +1 -1
  181. package/shared/string-trim.js +2 -1
  182. package/shared/text-anchor.template.js +1 -1
  183. package/shared/to-string.js +51 -0
  184. package/side-drawer/index.js +5 -84
  185. package/slider/index.js +14 -593
  186. package/styles/core/all.css +1 -1
  187. package/styles/core/theme.css +1 -1
  188. package/styles/core/typography.css +1 -1
  189. package/styles/tokens/theme-dark.css +4 -4
  190. package/styles/tokens/theme-light.css +4 -4
  191. package/switch/index.js +13 -149
  192. package/text-anchor/index.js +8 -7
  193. package/text-area/index.js +16 -282
  194. package/text-field/index.js +14 -121
  195. package/tooltip/index.js +24 -82
  196. package/vivid.api.json +1640 -850
  197. package/shared/button2.js +0 -200
  198. package/shared/elevation.js +0 -10
  199. package/shared/es.promise.resolve.js +0 -944
  200. package/shared/index2.js +0 -9
  201. package/shared/utils/index.d.ts +0 -1
@@ -1,435 +1,11 @@
1
- import { F as FoundationElement, _ as __decorate, a as attr, V as observable, b as __metadata, h as html, d as designSystem, g as getPrefix } from '../shared/index.js';
2
- import { D as Direction, g as getDirection } from '../shared/direction.js';
3
- import { i as keyArrowRight, h as keyArrowLeft, A as ArrowKeys, e as keyArrowUp, f 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';
1
+ import { r as registerRadioGroup } from '../shared/definition33.js';
2
+ import '../shared/index.js';
3
+ import '../shared/direction.js';
4
+ import '../shared/key-codes.js';
5
+ import '../shared/aria.js';
6
+ import '../shared/radio.js';
8
7
  import '../shared/form-associated.js';
8
+ import '../shared/slotted.js';
9
+ import '../shared/when.js';
9
10
 
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 Wed, 14 Dec 2022 14:20:57 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
- <template
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
- </template>
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.withPrefix(getPrefix(import.meta.url)).register(vividRadioGroup());
434
-
435
- export { vividRadioGroup };
11
+ registerRadioGroup();
package/shared/anchor.js CHANGED
@@ -1,4 +1,4 @@
1
- import { F as FoundationElement, _ as __decorate, a as attr, V as observable } from './index.js';
1
+ import { F as FoundationElement, _ as __decorate, a as attr, N as observable } from './index.js';
2
2
  import { a as applyMixins } from './apply-mixins.js';
3
3
  import { A as ARIAGlobalStatesAndProperties } from './aria-global.js';
4
4
  import { S as StartEnd } from './start-end.js';
@@ -1,4 +1,4 @@
1
- import { T as AttributeConfiguration } from './index.js';
1
+ import { O as AttributeConfiguration } from './index.js';
2
2
 
3
3
  /**
4
4
  * Apply mixins to a constructor.
@@ -1,4 +1,4 @@
1
- import { F as FoundationElement, _ as __decorate, a as attr, a6 as nullableNumberConverter, V as observable } from './index.js';
1
+ import { F as FoundationElement, _ as __decorate, a as attr, Z as nullableNumberConverter, N as observable } from './index.js';
2
2
 
3
3
  /**
4
4
  * An Progress HTML Element.
@@ -1,4 +1,4 @@
1
- import { _ as __decorate, V as observable } from './index.js';
1
+ import { _ as __decorate, N as observable } from './index.js';
2
2
  import { A as Anchor, D as DelegatesARIALink } from './anchor.js';
3
3
  import { a as applyMixins } from './apply-mixins.js';
4
4
  import { S as StartEnd } from './start-end.js';
package/shared/button.js CHANGED
@@ -1,23 +1,200 @@
1
- import { _ as __decorate, a as attr, b as __metadata } from './index.js';
2
- import { A as AffixIconWithTrailing } from './affix.js';
3
- import { B as Button$1 } from './button2.js';
1
+ import { F as FoundationElement, _ as __decorate, a as attr, N as observable } from './index.js';
4
2
  import { a as applyMixins } from './apply-mixins.js';
3
+ import { F as FormAssociated } from './form-associated.js';
4
+ import { A as ARIAGlobalStatesAndProperties } from './aria-global.js';
5
+ import { S as StartEnd } from './start-end.js';
5
6
 
6
- class Button extends Button$1 {
7
- constructor() {
8
- super(...arguments);
9
- this.stacked = false;
10
- }
7
+ class _Button extends FoundationElement {
11
8
  }
12
- __decorate([attr, __metadata("design:type", String)], Button.prototype, "connotation", void 0);
13
- __decorate([attr, __metadata("design:type", String)], Button.prototype, "shape", void 0);
14
- __decorate([attr, __metadata("design:type", String)], Button.prototype, "appearance", void 0);
15
- __decorate([attr, __metadata("design:type", String)], Button.prototype, "size", void 0);
16
- __decorate([attr({
17
- mode: 'boolean',
18
- attribute: 'stacked'
19
- }), __metadata("design:type", Object)], Button.prototype, "stacked", void 0);
20
- __decorate([attr, __metadata("design:type", String)], Button.prototype, "label", void 0);
21
- applyMixins(Button, AffixIconWithTrailing);
9
+ /**
10
+ * A form-associated base class for the {@link @microsoft/fast-foundation#(Button:class)} component.
11
+ *
12
+ * @internal
13
+ */
14
+ class FormAssociatedButton extends FormAssociated(_Button) {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.proxy = document.createElement("input");
18
+ }
19
+ }
20
+
21
+ /**
22
+ * A Button Custom HTML Element.
23
+ * Based largely on the {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button | <button> element }.
24
+ *
25
+ * @slot start - Content which can be provided before the button content
26
+ * @slot end - Content which can be provided after the button content
27
+ * @slot - The default slot for button content
28
+ * @csspart control - The button element
29
+ * @csspart content - The element wrapping button content
30
+ *
31
+ * @public
32
+ */
33
+ class Button extends FormAssociatedButton {
34
+ constructor() {
35
+ super(...arguments);
36
+ /**
37
+ * Prevent events to propagate if disabled and has no slotted content wrapped in HTML elements
38
+ * @internal
39
+ */
40
+ this.handleClick = (e) => {
41
+ var _a;
42
+ if (this.disabled && ((_a = this.defaultSlottedContent) === null || _a === void 0 ? void 0 : _a.length) <= 1) {
43
+ e.stopPropagation();
44
+ }
45
+ };
46
+ /**
47
+ * Submits the parent form
48
+ */
49
+ this.handleSubmission = () => {
50
+ if (!this.form) {
51
+ return;
52
+ }
53
+ const attached = this.proxy.isConnected;
54
+ if (!attached) {
55
+ this.attachProxy();
56
+ }
57
+ // Browser support for requestSubmit is not comprehensive
58
+ // so click the proxy if it isn't supported
59
+ typeof this.form.requestSubmit === "function"
60
+ ? this.form.requestSubmit(this.proxy)
61
+ : this.proxy.click();
62
+ if (!attached) {
63
+ this.detachProxy();
64
+ }
65
+ };
66
+ /**
67
+ * Resets the parent form
68
+ */
69
+ this.handleFormReset = () => {
70
+ var _a;
71
+ (_a = this.form) === null || _a === void 0 ? void 0 : _a.reset();
72
+ };
73
+ /**
74
+ * Overrides the focus call for where delegatesFocus is unsupported.
75
+ * This check works for Chrome, Edge Chromium, FireFox, and Safari
76
+ * Relevant PR on the Firefox browser: https://phabricator.services.mozilla.com/D123858
77
+ */
78
+ this.handleUnsupportedDelegatesFocus = () => {
79
+ var _a;
80
+ // Check to see if delegatesFocus is supported
81
+ if (window.ShadowRoot &&
82
+ !window.ShadowRoot.prototype.hasOwnProperty("delegatesFocus") &&
83
+ ((_a = this.$fastController.definition.shadowOptions) === null || _a === void 0 ? void 0 : _a.delegatesFocus)) {
84
+ this.focus = () => {
85
+ this.control.focus();
86
+ };
87
+ }
88
+ };
89
+ }
90
+ formactionChanged() {
91
+ if (this.proxy instanceof HTMLInputElement) {
92
+ this.proxy.formAction = this.formaction;
93
+ }
94
+ }
95
+ formenctypeChanged() {
96
+ if (this.proxy instanceof HTMLInputElement) {
97
+ this.proxy.formEnctype = this.formenctype;
98
+ }
99
+ }
100
+ formmethodChanged() {
101
+ if (this.proxy instanceof HTMLInputElement) {
102
+ this.proxy.formMethod = this.formmethod;
103
+ }
104
+ }
105
+ formnovalidateChanged() {
106
+ if (this.proxy instanceof HTMLInputElement) {
107
+ this.proxy.formNoValidate = this.formnovalidate;
108
+ }
109
+ }
110
+ formtargetChanged() {
111
+ if (this.proxy instanceof HTMLInputElement) {
112
+ this.proxy.formTarget = this.formtarget;
113
+ }
114
+ }
115
+ typeChanged(previous, next) {
116
+ if (this.proxy instanceof HTMLInputElement) {
117
+ this.proxy.type = this.type;
118
+ }
119
+ next === "submit" && this.addEventListener("click", this.handleSubmission);
120
+ previous === "submit" && this.removeEventListener("click", this.handleSubmission);
121
+ next === "reset" && this.addEventListener("click", this.handleFormReset);
122
+ previous === "reset" && this.removeEventListener("click", this.handleFormReset);
123
+ }
124
+ /** {@inheritDoc (FormAssociated:interface).validate} */
125
+ validate() {
126
+ super.validate(this.control);
127
+ }
128
+ /**
129
+ * @internal
130
+ */
131
+ connectedCallback() {
132
+ var _a;
133
+ super.connectedCallback();
134
+ this.proxy.setAttribute("type", this.type);
135
+ this.handleUnsupportedDelegatesFocus();
136
+ const elements = Array.from((_a = this.control) === null || _a === void 0 ? void 0 : _a.children);
137
+ if (elements) {
138
+ elements.forEach((span) => {
139
+ span.addEventListener("click", this.handleClick);
140
+ });
141
+ }
142
+ }
143
+ /**
144
+ * @internal
145
+ */
146
+ disconnectedCallback() {
147
+ var _a;
148
+ super.disconnectedCallback();
149
+ const elements = Array.from((_a = this.control) === null || _a === void 0 ? void 0 : _a.children);
150
+ if (elements) {
151
+ elements.forEach((span) => {
152
+ span.removeEventListener("click", this.handleClick);
153
+ });
154
+ }
155
+ }
156
+ }
157
+ __decorate([
158
+ attr({ mode: "boolean" })
159
+ ], Button.prototype, "autofocus", void 0);
160
+ __decorate([
161
+ attr({ attribute: "form" })
162
+ ], Button.prototype, "formId", void 0);
163
+ __decorate([
164
+ attr
165
+ ], Button.prototype, "formaction", void 0);
166
+ __decorate([
167
+ attr
168
+ ], Button.prototype, "formenctype", void 0);
169
+ __decorate([
170
+ attr
171
+ ], Button.prototype, "formmethod", void 0);
172
+ __decorate([
173
+ attr({ mode: "boolean" })
174
+ ], Button.prototype, "formnovalidate", void 0);
175
+ __decorate([
176
+ attr
177
+ ], Button.prototype, "formtarget", void 0);
178
+ __decorate([
179
+ attr
180
+ ], Button.prototype, "type", void 0);
181
+ __decorate([
182
+ observable
183
+ ], Button.prototype, "defaultSlottedContent", void 0);
184
+ /**
185
+ * Includes ARIA states and properties relating to the ARIA button role
186
+ *
187
+ * @public
188
+ */
189
+ class DelegatesARIAButton {
190
+ }
191
+ __decorate([
192
+ attr({ attribute: "aria-expanded" })
193
+ ], DelegatesARIAButton.prototype, "ariaExpanded", void 0);
194
+ __decorate([
195
+ attr({ attribute: "aria-pressed" })
196
+ ], DelegatesARIAButton.prototype, "ariaPressed", void 0);
197
+ applyMixins(DelegatesARIAButton, ARIAGlobalStatesAndProperties);
198
+ applyMixins(Button, StartEnd, DelegatesARIAButton);
22
199
 
23
200
  export { Button as B };