@vonage/vivid 3.26.0 → 3.28.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1
- package/accordion/index.js +0 -2
- package/accordion-item/index.js +0 -2
- package/alert/index.js +0 -2
- package/avatar/index.js +0 -2
- package/badge/index.js +0 -2
- package/banner/index.js +0 -2
- package/breadcrumb-item/index.js +0 -2
- package/button/index.js +0 -2
- package/calendar/index.js +0 -1
- package/calendar-event/index.js +0 -2
- package/card/index.js +0 -2
- package/checkbox/index.js +0 -2
- package/combobox/index.js +0 -3
- package/custom-elements.json +440 -51
- package/data-grid/index.js +1 -5
- package/dialog/index.js +0 -2
- package/empty-state/index.js +0 -2
- package/fab/index.js +0 -2
- package/file-picker/index.js +24 -0
- package/header/index.js +1 -1
- package/icon/index.js +0 -2
- package/index.d.ts +3 -3
- package/index.js +31 -35
- package/layout/index.js +1 -1
- package/lib/accordion/accordion.d.ts +5 -5
- package/lib/accordion/accordion.template.d.ts +3 -3
- package/lib/accordion/definition.d.ts +2 -2
- package/lib/accordion/index.d.ts +1 -1
- package/lib/accordion-item/accordion-item.d.ts +12 -12
- package/lib/accordion-item/accordion-item.template.d.ts +4 -4
- package/lib/accordion-item/definition.d.ts +1 -1
- package/lib/accordion-item/index.d.ts +1 -1
- package/lib/action-group/action-group.d.ts +11 -11
- package/lib/action-group/action-group.template.d.ts +4 -4
- package/lib/action-group/definition.d.ts +2 -2
- package/lib/action-group/index.d.ts +1 -1
- package/lib/alert/alert.d.ts +22 -22
- package/lib/alert/alert.template.d.ts +4 -4
- package/lib/alert/definition.d.ts +2 -2
- package/lib/alert/index.d.ts +1 -1
- package/lib/avatar/avatar.d.ts +14 -14
- package/lib/avatar/avatar.template.d.ts +4 -4
- package/lib/avatar/definition.d.ts +2 -2
- package/lib/avatar/index.d.ts +1 -1
- package/lib/badge/badge.d.ts +14 -14
- package/lib/badge/badge.template.d.ts +4 -4
- package/lib/badge/definition.d.ts +4 -4
- package/lib/badge/index.d.ts +1 -1
- package/lib/banner/banner.d.ts +20 -20
- package/lib/banner/banner.template.d.ts +4 -4
- package/lib/banner/definition.d.ts +2 -2
- package/lib/banner/index.d.ts +1 -1
- package/lib/breadcrumb/breadcrumb.d.ts +3 -3
- package/lib/breadcrumb/breadcrumb.template.d.ts +4 -4
- package/lib/breadcrumb/definition.d.ts +1 -1
- package/lib/breadcrumb/index.d.ts +1 -1
- package/lib/breadcrumb-item/breadcrumb-item.d.ts +5 -5
- package/lib/breadcrumb-item/breadcrumb-item.template.d.ts +4 -4
- package/lib/breadcrumb-item/definition.d.ts +1 -1
- package/lib/breadcrumb-item/index.d.ts +1 -1
- package/lib/button/button.d.ts +18 -18
- package/lib/button/button.template.d.ts +4 -4
- package/lib/button/definition.d.ts +2 -2
- package/lib/button/index.d.ts +1 -1
- package/lib/calendar/calendar.d.ts +13 -13
- package/lib/calendar/calendar.template.d.ts +4 -4
- package/lib/calendar/definition.d.ts +1 -1
- package/lib/calendar/helpers/calendar.date-functions.d.ts +2 -2
- package/lib/calendar/helpers/calendar.event-context.d.ts +6 -6
- package/lib/calendar/helpers/calendar.keyboard-interactions.d.ts +9 -9
- package/lib/calendar/index.d.ts +1 -1
- package/lib/calendar-event/calendar-event.d.ts +13 -13
- package/lib/calendar-event/calendar-event.template.d.ts +4 -4
- package/lib/calendar-event/definition.d.ts +2 -2
- package/lib/calendar-event/index.d.ts +1 -1
- package/lib/card/card.d.ts +10 -10
- package/lib/card/card.template.d.ts +4 -4
- package/lib/card/definition.d.ts +1 -1
- package/lib/card/index.d.ts +1 -1
- package/lib/checkbox/checkbox.d.ts +10 -11
- package/lib/checkbox/checkbox.template.d.ts +4 -4
- package/lib/checkbox/definition.d.ts +1 -1
- package/lib/checkbox/index.d.ts +1 -1
- package/lib/combobox/combobox.d.ts +12 -13
- package/lib/combobox/combobox.template.d.ts +4 -4
- package/lib/combobox/definition.d.ts +3 -4
- package/lib/combobox/index.d.ts +1 -1
- package/lib/components.d.ts +52 -52
- package/lib/data-grid/data-grid-cell.d.ts +22 -22
- package/lib/data-grid/data-grid-cell.template.d.ts +4 -4
- package/lib/data-grid/data-grid-row.d.ts +4 -4
- package/lib/data-grid/data-grid-row.template.d.ts +3 -3
- package/lib/data-grid/data-grid.d.ts +20 -20
- package/lib/data-grid/data-grid.options.d.ts +38 -38
- package/lib/data-grid/data-grid.template.d.ts +3 -3
- package/lib/data-grid/definition.d.ts +6 -6
- package/lib/data-grid/index.d.ts +1 -1
- package/lib/dialog/definition.d.ts +2 -2
- package/lib/dialog/dialog.d.ts +26 -26
- package/lib/dialog/dialog.template.d.ts +4 -4
- package/lib/dialog/index.d.ts +1 -1
- package/lib/divider/definition.d.ts +1 -1
- package/lib/divider/divider.d.ts +3 -3
- package/lib/divider/divider.template.d.ts +4 -4
- package/lib/divider/index.d.ts +1 -1
- package/lib/elevation/definition.d.ts +1 -1
- package/lib/elevation/elevation.d.ts +5 -5
- package/lib/elevation/elevation.template.d.ts +4 -4
- package/lib/elevation/index.d.ts +1 -1
- package/lib/empty-state/definition.d.ts +3 -3
- package/lib/empty-state/empty-state.d.ts +5 -5
- package/lib/empty-state/empty-state.template.d.ts +4 -4
- package/lib/empty-state/index.d.ts +1 -1
- package/lib/enums.d.ts +60 -60
- package/lib/fab/definition.d.ts +4 -4
- package/lib/fab/fab.d.ts +12 -12
- package/lib/fab/fab.template.d.ts +4 -4
- package/lib/fab/index.d.ts +1 -1
- package/lib/file-picker/definition.d.ts +3 -0
- package/lib/file-picker/file-picker.d.ts +22 -0
- package/lib/file-picker/file-picker.template.d.ts +4 -0
- package/lib/file-picker/index.d.ts +1 -0
- package/lib/focus/definition.d.ts +3 -3
- package/lib/focus/focus.d.ts +3 -3
- package/lib/focus/focus.template.d.ts +4 -4
- package/lib/focus/index.d.ts +1 -1
- package/lib/header/definition.d.ts +3 -3
- package/lib/header/header.d.ts +5 -5
- package/lib/header/header.template.d.ts +4 -4
- package/lib/header/index.d.ts +1 -1
- package/lib/icon/definition.d.ts +4 -4
- package/lib/icon/icon.d.ts +12 -12
- package/lib/icon/icon.placeholder.d.ts +1 -1
- package/lib/icon/icon.template.d.ts +4 -4
- package/lib/icon/index.d.ts +1 -1
- package/lib/layout/definition.d.ts +4 -4
- package/lib/layout/index.d.ts +1 -1
- package/lib/layout/layout.d.ts +17 -17
- package/lib/layout/layout.template.d.ts +4 -4
- package/lib/listbox/definition.d.ts +4 -4
- package/lib/listbox/index.d.ts +1 -1
- package/lib/listbox/listbox.d.ts +6 -6
- package/lib/listbox/listbox.template.d.ts +4 -4
- package/lib/menu/definition.d.ts +12 -12
- package/lib/menu/index.d.ts +1 -1
- package/lib/menu/menu.d.ts +16 -14
- package/lib/menu/menu.template.d.ts +3 -3
- package/lib/menu-item/definition.d.ts +3 -3
- package/lib/menu-item/index.d.ts +1 -1
- package/lib/menu-item/menu-item.d.ts +14 -14
- package/lib/menu-item/menu-item.template.d.ts +4 -4
- package/lib/nav/definition.d.ts +3 -3
- package/lib/nav/index.d.ts +1 -1
- package/lib/nav/nav.d.ts +3 -3
- package/lib/nav/nav.template.d.ts +4 -4
- package/lib/nav-disclosure/definition.d.ts +3 -3
- package/lib/nav-disclosure/index.d.ts +1 -1
- package/lib/nav-disclosure/nav-disclosure.d.ts +10 -10
- package/lib/nav-disclosure/nav-disclosure.template.d.ts +4 -4
- package/lib/nav-item/definition.d.ts +3 -3
- package/lib/nav-item/index.d.ts +1 -1
- package/lib/nav-item/nav-item.d.ts +7 -7
- package/lib/nav-item/nav-item.template.d.ts +4 -4
- package/lib/note/definition.d.ts +4 -4
- package/lib/note/index.d.ts +1 -1
- package/lib/note/note.d.ts +10 -10
- package/lib/note/note.template.d.ts +4 -4
- package/lib/number-field/definition.d.ts +5 -5
- package/lib/number-field/index.d.ts +1 -1
- package/lib/number-field/number-field.d.ts +13 -13
- package/lib/number-field/number-field.template.d.ts +4 -4
- package/lib/option/definition.d.ts +3 -3
- package/lib/option/index.d.ts +1 -1
- package/lib/option/option.d.ts +12 -12
- package/lib/option/option.template.d.ts +4 -4
- package/lib/pagination/definition.d.ts +3 -3
- package/lib/pagination/index.d.ts +1 -1
- package/lib/pagination/pagination.d.ts +18 -18
- package/lib/pagination/pagination.template.d.ts +4 -4
- package/lib/popup/definition.d.ts +5 -5
- package/lib/popup/index.d.ts +1 -1
- package/lib/popup/popup.d.ts +21 -21
- package/lib/popup/popup.template.d.ts +4 -4
- package/lib/progress/definition.d.ts +4 -4
- package/lib/progress/index.d.ts +1 -1
- package/lib/progress/progress.d.ts +9 -9
- package/lib/progress/progress.template.d.ts +5 -5
- package/lib/progress-ring/definition.d.ts +4 -4
- package/lib/progress-ring/index.d.ts +1 -1
- package/lib/progress-ring/progress-ring.d.ts +7 -7
- package/lib/progress-ring/progress-ring.template.d.ts +4 -4
- package/lib/radio/definition.d.ts +3 -3
- package/lib/radio/index.d.ts +1 -1
- package/lib/radio/radio.d.ts +7 -7
- package/lib/radio/radio.template.d.ts +4 -4
- package/lib/radio-group/definition.d.ts +11 -11
- package/lib/radio-group/index.d.ts +1 -1
- package/lib/radio-group/radio-group.d.ts +4 -4
- package/lib/radio-group/radio-group.template.d.ts +4 -4
- package/lib/select/definition.d.ts +4 -4
- package/lib/select/index.d.ts +1 -1
- package/lib/select/select.d.ts +17 -18
- package/lib/select/select.template.d.ts +4 -4
- package/lib/side-drawer/definition.d.ts +3 -3
- package/lib/side-drawer/index.d.ts +1 -1
- package/lib/side-drawer/side-drawer.d.ts +9 -9
- package/lib/side-drawer/side-drawer.template.d.ts +4 -4
- package/lib/slider/definition.d.ts +3 -3
- package/lib/slider/index.d.ts +1 -1
- package/lib/slider/slider.d.ts +4 -4
- package/lib/slider/slider.template.d.ts +4 -4
- package/lib/switch/definition.d.ts +4 -4
- package/lib/switch/index.d.ts +1 -1
- package/lib/switch/switch.d.ts +7 -7
- package/lib/switch/switch.template.d.ts +4 -4
- package/lib/tab/definition.d.ts +4 -4
- package/lib/tab/index.d.ts +1 -1
- package/lib/tab/tab.d.ts +14 -14
- package/lib/tab/tab.template.d.ts +3 -3
- package/lib/tab-panel/definition.d.ts +3 -3
- package/lib/tab-panel/index.d.ts +1 -1
- package/lib/tab-panel/tab-panel.d.ts +3 -3
- package/lib/tab-panel/tab-panel.template.d.ts +2 -2
- package/lib/tabs/definition.d.ts +3 -3
- package/lib/tabs/index.d.ts +1 -1
- package/lib/tabs/tabs.d.ts +15 -15
- package/lib/tabs/tabs.template.d.ts +2 -2
- package/lib/tag/definition.d.ts +4 -4
- package/lib/tag/index.d.ts +1 -1
- package/lib/tag/tag.d.ts +22 -22
- package/lib/tag/tag.template.d.ts +4 -4
- package/lib/tag-group/definition.d.ts +3 -3
- package/lib/tag-group/index.d.ts +1 -1
- package/lib/tag-group/tag-group.d.ts +3 -3
- package/lib/tag-group/tag-group.template.d.ts +4 -4
- package/lib/text-anchor/definition.d.ts +3 -3
- package/lib/text-anchor/index.d.ts +1 -1
- package/lib/text-anchor/text-anchor.d.ts +7 -7
- package/lib/text-anchor/text-anchor.template.d.ts +4 -4
- package/lib/text-area/definition.d.ts +4 -4
- package/lib/text-area/index.d.ts +1 -1
- package/lib/text-area/text-area.d.ts +8 -9
- package/lib/text-area/text-area.template.d.ts +4 -4
- package/lib/text-field/definition.d.ts +4 -4
- package/lib/text-field/index.d.ts +1 -1
- package/lib/text-field/text-field.d.ts +13 -14
- package/lib/text-field/text-field.template.d.ts +4 -4
- package/lib/toggletip/definition.d.ts +3 -3
- package/lib/toggletip/index.d.ts +1 -1
- package/lib/toggletip/toggletip.d.ts +15 -15
- package/lib/toggletip/toggletip.template.d.ts +4 -4
- package/lib/tooltip/definition.d.ts +3 -3
- package/lib/tooltip/index.d.ts +1 -1
- package/lib/tooltip/tooltip.d.ts +14 -14
- package/lib/tooltip/tooltip.template.d.ts +4 -4
- package/lib/tree-item/definition.d.ts +3 -3
- package/lib/tree-item/index.d.ts +1 -1
- package/lib/tree-item/tree-item.d.ts +7 -7
- package/lib/tree-item/tree-item.template.d.ts +4 -4
- package/lib/tree-view/definition.d.ts +3 -3
- package/lib/tree-view/index.d.ts +1 -1
- package/lib/tree-view/tree-view.d.ts +3 -3
- package/lib/tree-view/tree-view.template.d.ts +2 -2
- package/listbox/index.js +17 -21
- package/menu/index.js +2 -5
- package/menu-item/index.js +1 -4
- package/nav/index.js +1 -1
- package/nav-disclosure/index.js +1 -3
- package/nav-item/index.js +1 -3
- package/note/index.js +1 -3
- package/number-field/index.js +1 -4
- package/option/index.js +0 -2
- package/package.json +10 -8
- package/pagination/index.js +2 -6
- package/popup/index.js +0 -3
- package/progress/index.js +1 -1
- package/radio/index.js +1 -1
- package/radio-group/index.js +3 -3
- package/select/index.js +1 -4
- package/shared/affix.js +2 -5
- package/shared/anchor.js +2 -1
- package/shared/apply-mixins.js +1 -1
- package/shared/definition.js +7 -9
- package/shared/definition10.js +13 -17
- package/shared/definition11.js +6 -9
- package/shared/definition12.js +16 -18
- package/shared/definition13.js +6 -8
- package/shared/definition14.js +7 -12
- package/shared/definition15.js +43 -52
- package/shared/definition16.js +8 -71
- package/shared/definition17.js +36 -45
- package/shared/definition18.js +19 -24
- package/shared/definition19.js +45 -49
- package/shared/definition2.js +24 -28
- package/shared/definition20.js +390 -281
- package/shared/definition21.js +12 -16
- package/shared/definition22.js +82 -168
- package/shared/definition23.js +35 -41
- package/shared/definition24.js +6 -8
- package/shared/definition25.js +10 -14
- package/shared/definition26.js +40 -42
- package/shared/definition27.js +2285 -48
- package/shared/definition28.js +46 -38
- package/shared/definition29.js +38 -370
- package/shared/definition3.js +5 -9
- package/shared/definition30.js +348 -302
- package/shared/definition31.js +365 -14
- package/shared/definition32.js +12 -71
- package/shared/definition33.js +63 -26
- package/shared/definition34.js +24 -40
- package/shared/definition35.js +32 -436
- package/shared/definition36.js +428 -217
- package/shared/definition37.js +175 -77
- package/shared/definition38.js +50 -34
- package/shared/definition39.js +36 -430
- package/shared/definition4.js +3 -5
- package/shared/definition40.js +358 -589
- package/shared/definition41.js +644 -75
- package/shared/definition42.js +70 -587
- package/shared/definition43.js +503 -84
- package/shared/definition44.js +124 -52
- package/shared/definition45.js +57 -19
- package/shared/definition46.js +17 -487
- package/shared/definition47.js +477 -102
- package/shared/definition48.js +109 -19
- package/shared/definition49.js +17 -276
- package/shared/definition5.js +7 -8
- package/shared/definition50.js +253 -101
- package/shared/definition51.js +114 -629
- package/shared/definition52.js +92 -85
- package/shared/definition53.js +112 -70
- package/shared/definition54.js +65 -294
- package/shared/definition55.js +303 -0
- package/shared/definition6.js +17 -23
- package/shared/definition7.js +44 -47
- package/shared/definition8.js +3 -5
- package/shared/definition9.js +13 -17
- package/shared/design-system/index.d.ts +3 -3
- package/shared/focus2.js +1 -3
- package/shared/form-associated.js +1 -1
- package/shared/form-elements.js +16 -20
- package/shared/icon.js +2 -1171
- package/shared/index.js +41 -1549
- package/shared/listbox.js +1 -1
- package/shared/patterns/affix.d.ts +9 -9
- package/shared/patterns/focus.d.ts +3 -3
- package/shared/patterns/form-elements/form-elements.d.ts +57 -57
- package/shared/patterns/form-elements/index.d.ts +1 -1
- package/shared/patterns/index.d.ts +3 -3
- package/shared/repeat.js +1 -1
- package/shared/text-anchor.template.js +38 -40
- package/shared/text-field.js +1 -1
- package/shared/text-field2.js +1 -1
- package/shared/when.js +19 -5
- package/side-drawer/index.js +1 -1
- package/slider/index.js +1 -4
- 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 +17 -17
- package/styles/tokens/theme-light.css +17 -17
- package/switch/index.js +1 -3
- package/tab/index.js +1 -3
- package/tab-panel/index.js +1 -1
- package/tabs/index.js +3 -5
- package/tag/index.js +1 -3
- package/tag-group/index.js +1 -1
- package/text-anchor/index.js +0 -2
- package/text-area/index.js +1 -3
- package/text-field/index.js +1 -3
- package/toggletip/index.js +1 -5
- package/tooltip/index.js +1 -4
- package/tree-item/index.js +2 -4
- package/tree-view/index.js +1 -1
- package/vivid.api.json +210 -848
- package/shared/es.object.assign.js +0 -68
- package/shared/es.regexp.to-string.js +0 -61
- package/shared/es.string.includes.js +0 -83
- package/shared/string-trim.js +0 -40
- package/shared/to-string.js +0 -51
package/shared/definition40.js
CHANGED
|
@@ -1,665 +1,434 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import './
|
|
8
|
-
import { e as errorText, f as formElements, F as FormElementSuccessText, a as FormElementHelperText, g as getFeedbackTemplate } from './form-elements.js';
|
|
9
|
-
import { b as ListboxElement, L as Listbox, D as DelegatesARIAListbox, a as Listbox$1 } from './listbox.js';
|
|
10
|
-
import { S as StartEnd } from './start-end.js';
|
|
11
|
-
import { a as applyMixins } from './apply-mixins.js';
|
|
12
|
-
import { F as FormAssociated } from './form-associated.js';
|
|
13
|
-
import { S as SelectPosition } from './select.options.js';
|
|
14
|
-
import { u as uniqueId } from './strings.js';
|
|
15
|
-
import { g as keyTab, f as keyEscape, d as keyEnter, k as keyEnd, a as keyHome, e as keySpace, b as keyArrowDown, c as keyArrowUp } from './key-codes.js';
|
|
16
|
-
import { f as focusTemplateFactory } from './focus2.js';
|
|
1
|
+
import { F as FoundationElement, _ as __decorate, a as attr, o as observable, b as __metadata, h as html, r as registerFactory } from './index.js';
|
|
2
|
+
import { D as Direction, g as getDirection } from './direction.js';
|
|
3
|
+
import { h as keyArrowRight, i as keyArrowLeft, A as ArrowKeys, c as keyArrowUp, b as keyArrowDown, d as keyEnter } from './key-codes.js';
|
|
4
|
+
import { O as Orientation } from './aria.js';
|
|
5
|
+
import { R as Radio } from './radio.js';
|
|
6
|
+
import { O as Orientation$1 } from './aria2.js';
|
|
7
|
+
import { e as elements } from './node-observation.js';
|
|
17
8
|
import { w as when } from './when.js';
|
|
18
9
|
import { s as slotted } from './slotted.js';
|
|
19
|
-
import { r as ref } from './ref.js';
|
|
20
|
-
import { c as classNames } from './class-names.js';
|
|
21
|
-
|
|
22
|
-
class _Select extends ListboxElement {
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* A form-associated base class for the {@link @microsoft/fast-foundation#(Select:class)} component.
|
|
26
|
-
*
|
|
27
|
-
* @internal
|
|
28
|
-
*/
|
|
29
|
-
class FormAssociatedSelect extends FormAssociated(_Select) {
|
|
30
|
-
constructor() {
|
|
31
|
-
super(...arguments);
|
|
32
|
-
this.proxy = document.createElement("select");
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
10
|
|
|
36
11
|
/**
|
|
37
|
-
*
|
|
38
|
-
* Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#
|
|
12
|
+
* An Radio Group Custom HTML Element.
|
|
13
|
+
* Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#radiogroup | ARIA radiogroup }.
|
|
39
14
|
*
|
|
40
|
-
* @slot
|
|
41
|
-
* @slot
|
|
42
|
-
* @
|
|
43
|
-
* @
|
|
44
|
-
* @slot indicator - The visual indicator for the expand/collapse state of the button
|
|
45
|
-
* @slot - The default slot for slotted options
|
|
46
|
-
* @csspart control - The element representing the select invoking element
|
|
47
|
-
* @csspart selected-value - The element wrapping the selected value
|
|
48
|
-
* @csspart indicator - The element wrapping the visual indicator
|
|
49
|
-
* @csspart listbox - The listbox element
|
|
50
|
-
* @fires input - Fires a custom 'input' event when the value updates
|
|
51
|
-
* @fires change - Fires a custom 'change' event when the value updates
|
|
15
|
+
* @slot label - The slot for the label
|
|
16
|
+
* @slot - The default slot for radio buttons
|
|
17
|
+
* @csspart positioning-region - The positioning region for laying out the radios
|
|
18
|
+
* @fires change - Fires a custom 'change' event when the value changes
|
|
52
19
|
*
|
|
53
20
|
* @public
|
|
54
21
|
*/
|
|
55
|
-
class
|
|
22
|
+
class RadioGroup$1 extends FoundationElement {
|
|
56
23
|
constructor() {
|
|
57
24
|
super(...arguments);
|
|
58
25
|
/**
|
|
59
|
-
* The
|
|
26
|
+
* The orientation of the group
|
|
60
27
|
*
|
|
61
28
|
* @public
|
|
62
29
|
* @remarks
|
|
63
|
-
* HTML Attribute:
|
|
30
|
+
* HTML Attribute: orientation
|
|
64
31
|
*/
|
|
65
|
-
this.
|
|
32
|
+
this.orientation = Orientation.horizontal;
|
|
33
|
+
this.radioChangeHandler = (e) => {
|
|
34
|
+
const changedRadio = e.target;
|
|
35
|
+
if (changedRadio.checked) {
|
|
36
|
+
this.slottedRadioButtons.forEach((radio) => {
|
|
37
|
+
if (radio !== changedRadio) {
|
|
38
|
+
radio.checked = false;
|
|
39
|
+
if (!this.isInsideFoundationToolbar) {
|
|
40
|
+
radio.setAttribute("tabindex", "-1");
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
this.selectedRadio = changedRadio;
|
|
45
|
+
this.value = changedRadio.value;
|
|
46
|
+
changedRadio.setAttribute("tabindex", "0");
|
|
47
|
+
this.focusedRadio = changedRadio;
|
|
48
|
+
}
|
|
49
|
+
e.stopPropagation();
|
|
50
|
+
};
|
|
51
|
+
this.moveToRadioByIndex = (group, index) => {
|
|
52
|
+
const radio = group[index];
|
|
53
|
+
if (!this.isInsideToolbar) {
|
|
54
|
+
radio.setAttribute("tabindex", "0");
|
|
55
|
+
if (radio.readOnly) {
|
|
56
|
+
this.slottedRadioButtons.forEach((nextRadio) => {
|
|
57
|
+
if (nextRadio !== radio) {
|
|
58
|
+
nextRadio.setAttribute("tabindex", "-1");
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
radio.checked = true;
|
|
64
|
+
this.selectedRadio = radio;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
this.focusedRadio = radio;
|
|
68
|
+
radio.focus();
|
|
69
|
+
};
|
|
70
|
+
this.moveRightOffGroup = () => {
|
|
71
|
+
var _a;
|
|
72
|
+
(_a = this.nextElementSibling) === null || _a === void 0 ? void 0 : _a.focus();
|
|
73
|
+
};
|
|
74
|
+
this.moveLeftOffGroup = () => {
|
|
75
|
+
var _a;
|
|
76
|
+
(_a = this.previousElementSibling) === null || _a === void 0 ? void 0 : _a.focus();
|
|
77
|
+
};
|
|
66
78
|
/**
|
|
67
|
-
* Indicates the initial state of the position attribute.
|
|
68
|
-
*
|
|
69
79
|
* @internal
|
|
70
80
|
*/
|
|
71
|
-
this.
|
|
81
|
+
this.focusOutHandler = (e) => {
|
|
82
|
+
const group = this.slottedRadioButtons;
|
|
83
|
+
const radio = e.target;
|
|
84
|
+
const index = radio !== null ? group.indexOf(radio) : 0;
|
|
85
|
+
const focusedIndex = this.focusedRadio
|
|
86
|
+
? group.indexOf(this.focusedRadio)
|
|
87
|
+
: -1;
|
|
88
|
+
if ((focusedIndex === 0 && index === focusedIndex) ||
|
|
89
|
+
(focusedIndex === group.length - 1 && focusedIndex === index)) {
|
|
90
|
+
if (!this.selectedRadio) {
|
|
91
|
+
this.focusedRadio = group[0];
|
|
92
|
+
this.focusedRadio.setAttribute("tabindex", "0");
|
|
93
|
+
group.forEach((nextRadio) => {
|
|
94
|
+
if (nextRadio !== this.focusedRadio) {
|
|
95
|
+
nextRadio.setAttribute("tabindex", "-1");
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
this.focusedRadio = this.selectedRadio;
|
|
101
|
+
if (!this.isInsideFoundationToolbar) {
|
|
102
|
+
this.selectedRadio.setAttribute("tabindex", "0");
|
|
103
|
+
group.forEach((nextRadio) => {
|
|
104
|
+
if (nextRadio !== this.selectedRadio) {
|
|
105
|
+
nextRadio.setAttribute("tabindex", "-1");
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return true;
|
|
112
|
+
};
|
|
72
113
|
/**
|
|
73
|
-
* The unique id for the internal listbox element.
|
|
74
|
-
*
|
|
75
114
|
* @internal
|
|
76
115
|
*/
|
|
77
|
-
this.
|
|
116
|
+
this.clickHandler = (e) => {
|
|
117
|
+
const radio = e.target;
|
|
118
|
+
if (radio) {
|
|
119
|
+
const group = this.slottedRadioButtons;
|
|
120
|
+
if (radio.checked || group.indexOf(radio) === 0) {
|
|
121
|
+
radio.setAttribute("tabindex", "0");
|
|
122
|
+
this.selectedRadio = radio;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
radio.setAttribute("tabindex", "-1");
|
|
126
|
+
this.selectedRadio = null;
|
|
127
|
+
}
|
|
128
|
+
this.focusedRadio = radio;
|
|
129
|
+
}
|
|
130
|
+
e.preventDefault();
|
|
131
|
+
};
|
|
132
|
+
this.shouldMoveOffGroupToTheRight = (index, group, key) => {
|
|
133
|
+
return index === group.length && this.isInsideToolbar && key === keyArrowRight;
|
|
134
|
+
};
|
|
135
|
+
this.shouldMoveOffGroupToTheLeft = (group, key) => {
|
|
136
|
+
const index = this.focusedRadio ? group.indexOf(this.focusedRadio) - 1 : 0;
|
|
137
|
+
return index < 0 && this.isInsideToolbar && key === keyArrowLeft;
|
|
138
|
+
};
|
|
139
|
+
this.checkFocusedRadio = () => {
|
|
140
|
+
if (this.focusedRadio !== null &&
|
|
141
|
+
!this.focusedRadio.readOnly &&
|
|
142
|
+
!this.focusedRadio.checked) {
|
|
143
|
+
this.focusedRadio.checked = true;
|
|
144
|
+
this.focusedRadio.setAttribute("tabindex", "0");
|
|
145
|
+
this.focusedRadio.focus();
|
|
146
|
+
this.selectedRadio = this.focusedRadio;
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
this.moveRight = (e) => {
|
|
150
|
+
const group = this.slottedRadioButtons;
|
|
151
|
+
let index = 0;
|
|
152
|
+
index = this.focusedRadio ? group.indexOf(this.focusedRadio) + 1 : 1;
|
|
153
|
+
if (this.shouldMoveOffGroupToTheRight(index, group, e.key)) {
|
|
154
|
+
this.moveRightOffGroup();
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
else if (index === group.length) {
|
|
158
|
+
index = 0;
|
|
159
|
+
}
|
|
160
|
+
/* looping to get to next radio that is not disabled */
|
|
161
|
+
/* matching native radio/radiogroup which does not select an item if there is only 1 in the group */
|
|
162
|
+
while (index < group.length && group.length > 1) {
|
|
163
|
+
if (!group[index].disabled) {
|
|
164
|
+
this.moveToRadioByIndex(group, index);
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
else if (this.focusedRadio && index === group.indexOf(this.focusedRadio)) {
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
else if (index + 1 >= group.length) {
|
|
171
|
+
if (this.isInsideToolbar) {
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
index = 0;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
index += 1;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
this.moveLeft = (e) => {
|
|
184
|
+
const group = this.slottedRadioButtons;
|
|
185
|
+
let index = 0;
|
|
186
|
+
index = this.focusedRadio ? group.indexOf(this.focusedRadio) - 1 : 0;
|
|
187
|
+
index = index < 0 ? group.length - 1 : index;
|
|
188
|
+
if (this.shouldMoveOffGroupToTheLeft(group, e.key)) {
|
|
189
|
+
this.moveLeftOffGroup();
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
/* looping to get to next radio that is not disabled */
|
|
193
|
+
while (index >= 0 && group.length > 1) {
|
|
194
|
+
if (!group[index].disabled) {
|
|
195
|
+
this.moveToRadioByIndex(group, index);
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
else if (this.focusedRadio && index === group.indexOf(this.focusedRadio)) {
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
else if (index - 1 < 0) {
|
|
202
|
+
index = group.length - 1;
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
index -= 1;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
};
|
|
78
209
|
/**
|
|
79
|
-
*
|
|
210
|
+
* keyboard handling per https://w3c.github.io/aria-practices/#for-radio-groups-not-contained-in-a-toolbar
|
|
211
|
+
* navigation is different when there is an ancestor with role='toolbar'
|
|
80
212
|
*
|
|
81
213
|
* @internal
|
|
82
214
|
*/
|
|
83
|
-
this.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
*
|
|
88
|
-
* @param prev - the previous open value
|
|
89
|
-
* @param next - the current open value
|
|
90
|
-
*
|
|
91
|
-
* @internal
|
|
92
|
-
*/
|
|
93
|
-
openChanged(prev, next) {
|
|
94
|
-
if (!this.collapsible) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
if (this.open) {
|
|
98
|
-
this.ariaControls = this.listboxId;
|
|
99
|
-
this.ariaExpanded = "true";
|
|
100
|
-
this.setPositioning();
|
|
101
|
-
this.focusAndScrollOptionIntoView();
|
|
102
|
-
this.indexWhenOpened = this.selectedIndex;
|
|
103
|
-
// focus is directed to the element when `open` is changed programmatically
|
|
104
|
-
DOM.queueUpdate(() => this.focus());
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
this.ariaControls = "";
|
|
108
|
-
this.ariaExpanded = "false";
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* The component is collapsible when in single-selection mode with no size attribute.
|
|
112
|
-
*
|
|
113
|
-
* @internal
|
|
114
|
-
*/
|
|
115
|
-
get collapsible() {
|
|
116
|
-
return !(this.multiple || typeof this.size === "number");
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* The value property.
|
|
120
|
-
*
|
|
121
|
-
* @public
|
|
122
|
-
*/
|
|
123
|
-
get value() {
|
|
124
|
-
Observable.track(this, "value");
|
|
125
|
-
return this._value;
|
|
126
|
-
}
|
|
127
|
-
set value(next) {
|
|
128
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
129
|
-
const prev = `${this._value}`;
|
|
130
|
-
if ((_a = this._options) === null || _a === void 0 ? void 0 : _a.length) {
|
|
131
|
-
const selectedIndex = this._options.findIndex(el => el.value === next);
|
|
132
|
-
const prevSelectedValue = (_c = (_b = this._options[this.selectedIndex]) === null || _b === void 0 ? void 0 : _b.value) !== null && _c !== void 0 ? _c : null;
|
|
133
|
-
const nextSelectedValue = (_e = (_d = this._options[selectedIndex]) === null || _d === void 0 ? void 0 : _d.value) !== null && _e !== void 0 ? _e : null;
|
|
134
|
-
if (selectedIndex === -1 || prevSelectedValue !== nextSelectedValue) {
|
|
135
|
-
next = "";
|
|
136
|
-
this.selectedIndex = selectedIndex;
|
|
215
|
+
this.keydownHandler = (e) => {
|
|
216
|
+
const key = e.key;
|
|
217
|
+
if (key in ArrowKeys && this.isInsideFoundationToolbar) {
|
|
218
|
+
return true;
|
|
137
219
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
220
|
+
switch (key) {
|
|
221
|
+
case keyEnter: {
|
|
222
|
+
this.checkFocusedRadio();
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
case keyArrowRight:
|
|
226
|
+
case keyArrowDown: {
|
|
227
|
+
if (this.direction === Direction.ltr) {
|
|
228
|
+
this.moveRight(e);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
this.moveLeft(e);
|
|
232
|
+
}
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
case keyArrowLeft:
|
|
236
|
+
case keyArrowUp: {
|
|
237
|
+
if (this.direction === Direction.ltr) {
|
|
238
|
+
this.moveLeft(e);
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
this.moveRight(e);
|
|
242
|
+
}
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
default: {
|
|
246
|
+
return true;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
};
|
|
146
250
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
if (this.$fastController.isConnected) {
|
|
157
|
-
this.value = (_b = (_a = this.firstSelectedOption) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : "";
|
|
158
|
-
}
|
|
159
|
-
if (shouldEmit) {
|
|
160
|
-
this.$emit("input");
|
|
161
|
-
this.$emit("change", this, {
|
|
162
|
-
bubbles: true,
|
|
163
|
-
composed: undefined,
|
|
251
|
+
readOnlyChanged() {
|
|
252
|
+
if (this.slottedRadioButtons !== undefined) {
|
|
253
|
+
this.slottedRadioButtons.forEach((radio) => {
|
|
254
|
+
if (this.readOnly) {
|
|
255
|
+
radio.readOnly = true;
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
radio.readOnly = false;
|
|
259
|
+
}
|
|
164
260
|
});
|
|
165
261
|
}
|
|
166
262
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
this.updateValue();
|
|
178
|
-
}
|
|
179
|
-
positionChanged(prev, next) {
|
|
180
|
-
this.positionAttribute = next;
|
|
181
|
-
this.setPositioning();
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Calculate and apply listbox positioning based on available viewport space.
|
|
185
|
-
*
|
|
186
|
-
* @public
|
|
187
|
-
*/
|
|
188
|
-
setPositioning() {
|
|
189
|
-
const currentBox = this.getBoundingClientRect();
|
|
190
|
-
const viewportHeight = window.innerHeight;
|
|
191
|
-
const availableBottom = viewportHeight - currentBox.bottom;
|
|
192
|
-
this.position = this.forcedPosition
|
|
193
|
-
? this.positionAttribute
|
|
194
|
-
: currentBox.top > availableBottom
|
|
195
|
-
? SelectPosition.above
|
|
196
|
-
: SelectPosition.below;
|
|
197
|
-
this.positionAttribute = this.forcedPosition
|
|
198
|
-
? this.positionAttribute
|
|
199
|
-
: this.position;
|
|
200
|
-
this.maxHeight =
|
|
201
|
-
this.position === SelectPosition.above ? ~~currentBox.top : ~~availableBottom;
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* The value displayed on the button.
|
|
205
|
-
*
|
|
206
|
-
* @public
|
|
207
|
-
*/
|
|
208
|
-
get displayValue() {
|
|
209
|
-
var _a, _b;
|
|
210
|
-
Observable.track(this, "displayValue");
|
|
211
|
-
return (_b = (_a = this.firstSelectedOption) === null || _a === void 0 ? void 0 : _a.text) !== null && _b !== void 0 ? _b : "";
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Synchronize the `aria-disabled` property when the `disabled` property changes.
|
|
215
|
-
*
|
|
216
|
-
* @param prev - The previous disabled value
|
|
217
|
-
* @param next - The next disabled value
|
|
218
|
-
*
|
|
219
|
-
* @internal
|
|
220
|
-
*/
|
|
221
|
-
disabledChanged(prev, next) {
|
|
222
|
-
if (super.disabledChanged) {
|
|
223
|
-
super.disabledChanged(prev, next);
|
|
224
|
-
}
|
|
225
|
-
this.ariaDisabled = this.disabled ? "true" : "false";
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Reset the element to its first selectable option when its parent form is reset.
|
|
229
|
-
*
|
|
230
|
-
* @internal
|
|
231
|
-
*/
|
|
232
|
-
formResetCallback() {
|
|
233
|
-
this.setProxyOptions();
|
|
234
|
-
// Call the base class's implementation setDefaultSelectedOption instead of the select's
|
|
235
|
-
// override, in order to reset the selectedIndex without using the value property.
|
|
236
|
-
super.setDefaultSelectedOption();
|
|
237
|
-
if (this.selectedIndex === -1) {
|
|
238
|
-
this.selectedIndex = 0;
|
|
263
|
+
disabledChanged() {
|
|
264
|
+
if (this.slottedRadioButtons !== undefined) {
|
|
265
|
+
this.slottedRadioButtons.forEach((radio) => {
|
|
266
|
+
if (this.disabled) {
|
|
267
|
+
radio.disabled = true;
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
radio.disabled = false;
|
|
271
|
+
}
|
|
272
|
+
});
|
|
239
273
|
}
|
|
240
274
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
*/
|
|
247
|
-
clickHandler(e) {
|
|
248
|
-
// do nothing if the select is disabled
|
|
249
|
-
if (this.disabled) {
|
|
250
|
-
return;
|
|
251
|
-
}
|
|
252
|
-
if (this.open) {
|
|
253
|
-
const captured = e.target.closest(`option,[role=option]`);
|
|
254
|
-
if (captured && captured.disabled) {
|
|
255
|
-
return;
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
super.clickHandler(e);
|
|
259
|
-
this.open = this.collapsible && !this.open;
|
|
260
|
-
if (!this.open && this.indexWhenOpened !== this.selectedIndex) {
|
|
261
|
-
this.updateValue(true);
|
|
275
|
+
nameChanged() {
|
|
276
|
+
if (this.slottedRadioButtons) {
|
|
277
|
+
this.slottedRadioButtons.forEach((radio) => {
|
|
278
|
+
radio.setAttribute("name", this.name);
|
|
279
|
+
});
|
|
262
280
|
}
|
|
263
|
-
return true;
|
|
264
281
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
super.focusoutHandler(e);
|
|
274
|
-
if (!this.open) {
|
|
275
|
-
return true;
|
|
276
|
-
}
|
|
277
|
-
const focusTarget = e.relatedTarget;
|
|
278
|
-
if (this.isSameNode(focusTarget)) {
|
|
279
|
-
this.focus();
|
|
280
|
-
return;
|
|
281
|
-
}
|
|
282
|
-
if (!((_a = this.options) === null || _a === void 0 ? void 0 : _a.includes(focusTarget))) {
|
|
283
|
-
this.open = false;
|
|
284
|
-
if (this.indexWhenOpened !== this.selectedIndex) {
|
|
285
|
-
this.updateValue(true);
|
|
286
|
-
}
|
|
282
|
+
valueChanged() {
|
|
283
|
+
if (this.slottedRadioButtons) {
|
|
284
|
+
this.slottedRadioButtons.forEach((radio) => {
|
|
285
|
+
if (radio.value === this.value) {
|
|
286
|
+
radio.checked = true;
|
|
287
|
+
this.selectedRadio = radio;
|
|
288
|
+
}
|
|
289
|
+
});
|
|
287
290
|
}
|
|
291
|
+
this.$emit("change");
|
|
288
292
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
* @param source - the source object
|
|
293
|
-
* @param propertyName - the property to evaluate
|
|
294
|
-
*
|
|
295
|
-
* @internal
|
|
296
|
-
* @override
|
|
297
|
-
*/
|
|
298
|
-
handleChange(source, propertyName) {
|
|
299
|
-
super.handleChange(source, propertyName);
|
|
300
|
-
if (propertyName === "value") {
|
|
301
|
-
this.updateValue();
|
|
293
|
+
slottedRadioButtonsChanged(oldValue, newValue) {
|
|
294
|
+
if (this.slottedRadioButtons && this.slottedRadioButtons.length > 0) {
|
|
295
|
+
this.setupRadioButtons();
|
|
302
296
|
}
|
|
303
297
|
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
*
|
|
307
|
-
* @param prev - the previous collection of slotted option elements
|
|
308
|
-
* @param next - the next collection of slotted option elements
|
|
309
|
-
*
|
|
310
|
-
* @internal
|
|
311
|
-
*/
|
|
312
|
-
slottedOptionsChanged(prev, next) {
|
|
313
|
-
this.options.forEach(o => {
|
|
314
|
-
const notifier = Observable.getNotifier(o);
|
|
315
|
-
notifier.unsubscribe(this, "value");
|
|
316
|
-
});
|
|
317
|
-
super.slottedOptionsChanged(prev, next);
|
|
318
|
-
this.options.forEach(o => {
|
|
319
|
-
const notifier = Observable.getNotifier(o);
|
|
320
|
-
notifier.subscribe(this, "value");
|
|
321
|
-
});
|
|
322
|
-
this.setProxyOptions();
|
|
323
|
-
this.updateValue();
|
|
298
|
+
get parentToolbar() {
|
|
299
|
+
return this.closest('[role="toolbar"]');
|
|
324
300
|
}
|
|
325
|
-
|
|
326
|
-
* Prevents focus when size is set and a scrollbar is clicked.
|
|
327
|
-
*
|
|
328
|
-
* @param e - the mouse event object
|
|
329
|
-
*
|
|
330
|
-
* @override
|
|
331
|
-
* @internal
|
|
332
|
-
*/
|
|
333
|
-
mousedownHandler(e) {
|
|
301
|
+
get isInsideToolbar() {
|
|
334
302
|
var _a;
|
|
335
|
-
|
|
336
|
-
return super.mousedownHandler(e);
|
|
337
|
-
}
|
|
338
|
-
return this.collapsible;
|
|
339
|
-
}
|
|
340
|
-
/**
|
|
341
|
-
* Sets the multiple property on the proxy element.
|
|
342
|
-
*
|
|
343
|
-
* @param prev - the previous multiple value
|
|
344
|
-
* @param next - the current multiple value
|
|
345
|
-
*/
|
|
346
|
-
multipleChanged(prev, next) {
|
|
347
|
-
super.multipleChanged(prev, next);
|
|
348
|
-
if (this.proxy) {
|
|
349
|
-
this.proxy.multiple = next;
|
|
350
|
-
}
|
|
303
|
+
return ((_a = this.parentToolbar) !== null && _a !== void 0 ? _a : false);
|
|
351
304
|
}
|
|
352
|
-
|
|
353
|
-
* Updates the selectedness of each option when the list of selected options changes.
|
|
354
|
-
*
|
|
355
|
-
* @param prev - the previous list of selected options
|
|
356
|
-
* @param next - the current list of selected options
|
|
357
|
-
*
|
|
358
|
-
* @override
|
|
359
|
-
* @internal
|
|
360
|
-
*/
|
|
361
|
-
selectedOptionsChanged(prev, next) {
|
|
305
|
+
get isInsideFoundationToolbar() {
|
|
362
306
|
var _a;
|
|
363
|
-
|
|
364
|
-
(_a = this.options) === null || _a === void 0 ? void 0 : _a.forEach((o, i) => {
|
|
365
|
-
var _a;
|
|
366
|
-
const proxyOption = (_a = this.proxy) === null || _a === void 0 ? void 0 : _a.options.item(i);
|
|
367
|
-
if (proxyOption) {
|
|
368
|
-
proxyOption.selected = o.selected;
|
|
369
|
-
}
|
|
370
|
-
});
|
|
307
|
+
return !!((_a = this.parentToolbar) === null || _a === void 0 ? void 0 : _a["$fastController"]);
|
|
371
308
|
}
|
|
372
309
|
/**
|
|
373
|
-
* Sets the selected index to match the first option with the selected attribute, or
|
|
374
|
-
* the first selectable option.
|
|
375
|
-
*
|
|
376
|
-
* @override
|
|
377
310
|
* @internal
|
|
378
311
|
*/
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
if (selectedIndex !== -1) {
|
|
384
|
-
this.selectedIndex = selectedIndex;
|
|
385
|
-
return;
|
|
386
|
-
}
|
|
387
|
-
this.selectedIndex = 0;
|
|
312
|
+
connectedCallback() {
|
|
313
|
+
super.connectedCallback();
|
|
314
|
+
this.direction = getDirection(this);
|
|
315
|
+
this.setupRadioButtons();
|
|
388
316
|
}
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
*/
|
|
394
|
-
setProxyOptions() {
|
|
395
|
-
if (this.proxy instanceof HTMLSelectElement && this.options) {
|
|
396
|
-
this.proxy.options.length = 0;
|
|
397
|
-
this.options.forEach(option => {
|
|
398
|
-
const proxyOption = option.proxy ||
|
|
399
|
-
(option instanceof HTMLOptionElement ? option.cloneNode() : null);
|
|
400
|
-
if (proxyOption) {
|
|
401
|
-
this.proxy.options.add(proxyOption);
|
|
402
|
-
}
|
|
403
|
-
});
|
|
404
|
-
}
|
|
317
|
+
disconnectedCallback() {
|
|
318
|
+
this.slottedRadioButtons.forEach((radio) => {
|
|
319
|
+
radio.removeEventListener("change", this.radioChangeHandler);
|
|
320
|
+
});
|
|
405
321
|
}
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
this.open = !this.open;
|
|
420
|
-
}
|
|
421
|
-
break;
|
|
322
|
+
setupRadioButtons() {
|
|
323
|
+
const checkedRadios = this.slottedRadioButtons.filter((radio) => {
|
|
324
|
+
return radio.hasAttribute("checked");
|
|
325
|
+
});
|
|
326
|
+
const numberOfCheckedRadios = checkedRadios ? checkedRadios.length : 0;
|
|
327
|
+
if (numberOfCheckedRadios > 1) {
|
|
328
|
+
const lastCheckedRadio = checkedRadios[numberOfCheckedRadios - 1];
|
|
329
|
+
lastCheckedRadio.checked = true;
|
|
330
|
+
}
|
|
331
|
+
let foundMatchingVal = false;
|
|
332
|
+
this.slottedRadioButtons.forEach((radio) => {
|
|
333
|
+
if (this.name !== undefined) {
|
|
334
|
+
radio.setAttribute("name", this.name);
|
|
422
335
|
}
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
e.preventDefault();
|
|
426
|
-
break;
|
|
336
|
+
if (this.disabled) {
|
|
337
|
+
radio.disabled = true;
|
|
427
338
|
}
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
this.open = !this.open;
|
|
431
|
-
break;
|
|
339
|
+
if (this.readOnly) {
|
|
340
|
+
radio.readOnly = true;
|
|
432
341
|
}
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
342
|
+
if (this.value && this.value === radio.value) {
|
|
343
|
+
this.selectedRadio = radio;
|
|
344
|
+
this.focusedRadio = radio;
|
|
345
|
+
radio.checked = true;
|
|
346
|
+
radio.setAttribute("tabindex", "0");
|
|
347
|
+
foundMatchingVal = true;
|
|
439
348
|
}
|
|
440
|
-
|
|
441
|
-
if (this.
|
|
442
|
-
|
|
443
|
-
this.open = false;
|
|
349
|
+
else {
|
|
350
|
+
if (!this.isInsideFoundationToolbar) {
|
|
351
|
+
radio.setAttribute("tabindex", "-1");
|
|
444
352
|
}
|
|
445
|
-
|
|
353
|
+
radio.checked = false;
|
|
354
|
+
}
|
|
355
|
+
radio.addEventListener("change", this.radioChangeHandler);
|
|
356
|
+
});
|
|
357
|
+
if (this.value === undefined && this.slottedRadioButtons.length > 0) {
|
|
358
|
+
const checkedRadios = this.slottedRadioButtons.filter((radio) => {
|
|
359
|
+
return radio.hasAttribute("checked");
|
|
360
|
+
});
|
|
361
|
+
const numberOfCheckedRadios = checkedRadios !== null ? checkedRadios.length : 0;
|
|
362
|
+
if (numberOfCheckedRadios > 0 && !foundMatchingVal) {
|
|
363
|
+
const lastCheckedRadio = checkedRadios[numberOfCheckedRadios - 1];
|
|
364
|
+
lastCheckedRadio.checked = true;
|
|
365
|
+
this.focusedRadio = lastCheckedRadio;
|
|
366
|
+
lastCheckedRadio.setAttribute("tabindex", "0");
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
this.slottedRadioButtons[0].setAttribute("tabindex", "0");
|
|
370
|
+
this.focusedRadio = this.slottedRadioButtons[0];
|
|
446
371
|
}
|
|
447
|
-
}
|
|
448
|
-
if (!this.open && this.indexWhenOpened !== this.selectedIndex) {
|
|
449
|
-
this.updateValue(true);
|
|
450
|
-
this.indexWhenOpened = this.selectedIndex;
|
|
451
|
-
}
|
|
452
|
-
return !(key === keyArrowDown || key === keyArrowUp);
|
|
453
|
-
}
|
|
454
|
-
connectedCallback() {
|
|
455
|
-
super.connectedCallback();
|
|
456
|
-
this.forcedPosition = !!this.positionAttribute;
|
|
457
|
-
this.addEventListener("contentchange", this.updateDisplayValue);
|
|
458
|
-
}
|
|
459
|
-
disconnectedCallback() {
|
|
460
|
-
this.removeEventListener("contentchange", this.updateDisplayValue);
|
|
461
|
-
super.disconnectedCallback();
|
|
462
|
-
}
|
|
463
|
-
/**
|
|
464
|
-
* Updates the proxy's size property when the size attribute changes.
|
|
465
|
-
*
|
|
466
|
-
* @param prev - the previous size
|
|
467
|
-
* @param next - the current size
|
|
468
|
-
*
|
|
469
|
-
* @override
|
|
470
|
-
* @internal
|
|
471
|
-
*/
|
|
472
|
-
sizeChanged(prev, next) {
|
|
473
|
-
super.sizeChanged(prev, next);
|
|
474
|
-
if (this.proxy) {
|
|
475
|
-
this.proxy.size = next;
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
/**
|
|
479
|
-
*
|
|
480
|
-
* @internal
|
|
481
|
-
*/
|
|
482
|
-
updateDisplayValue() {
|
|
483
|
-
if (this.collapsible) {
|
|
484
|
-
Observable.notify(this, "displayValue");
|
|
485
372
|
}
|
|
486
373
|
}
|
|
487
374
|
}
|
|
488
375
|
__decorate([
|
|
489
|
-
attr({ attribute: "
|
|
490
|
-
],
|
|
376
|
+
attr({ attribute: "readonly", mode: "boolean" })
|
|
377
|
+
], RadioGroup$1.prototype, "readOnly", void 0);
|
|
491
378
|
__decorate([
|
|
492
|
-
|
|
493
|
-
],
|
|
379
|
+
attr({ attribute: "disabled", mode: "boolean" })
|
|
380
|
+
], RadioGroup$1.prototype, "disabled", void 0);
|
|
494
381
|
__decorate([
|
|
495
|
-
|
|
496
|
-
],
|
|
382
|
+
attr
|
|
383
|
+
], RadioGroup$1.prototype, "name", void 0);
|
|
497
384
|
__decorate([
|
|
498
|
-
attr
|
|
499
|
-
],
|
|
385
|
+
attr
|
|
386
|
+
], RadioGroup$1.prototype, "value", void 0);
|
|
500
387
|
__decorate([
|
|
501
|
-
|
|
502
|
-
],
|
|
388
|
+
attr
|
|
389
|
+
], RadioGroup$1.prototype, "orientation", void 0);
|
|
503
390
|
__decorate([
|
|
504
391
|
observable
|
|
505
|
-
],
|
|
506
|
-
/**
|
|
507
|
-
* Includes ARIA states and properties relating to the ARIA select role.
|
|
508
|
-
*
|
|
509
|
-
* @public
|
|
510
|
-
*/
|
|
511
|
-
class DelegatesARIASelect {
|
|
512
|
-
}
|
|
392
|
+
], RadioGroup$1.prototype, "childItems", void 0);
|
|
513
393
|
__decorate([
|
|
514
394
|
observable
|
|
515
|
-
],
|
|
516
|
-
applyMixins(DelegatesARIASelect, DelegatesARIAListbox);
|
|
517
|
-
applyMixins(Select$1, StartEnd, DelegatesARIASelect);
|
|
395
|
+
], RadioGroup$1.prototype, "slottedRadioButtons", void 0);
|
|
518
396
|
|
|
519
|
-
var css_248z = "/**\n * Do not edit directly\n * Generated on
|
|
397
|
+
var css_248z = "/**\n * Do not edit directly\n * Generated on Mon, 07 Aug 2023 18:00:27 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}";
|
|
520
398
|
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
super(...arguments);
|
|
524
|
-
this.fixedDropdown = false;
|
|
525
|
-
}
|
|
526
|
-
connectedCallback() {
|
|
527
|
-
super.connectedCallback();
|
|
528
|
-
this._popup.anchor = this._anchor;
|
|
529
|
-
}
|
|
530
|
-
get displayValue() {
|
|
531
|
-
var _a, _b, _c, _d;
|
|
532
|
-
Observable.track(this, 'displayValue');
|
|
533
|
-
return (_d = (_b = (_a = this.firstSelectedOption) === null || _a === void 0 ? void 0 : _a.getAttribute('label')) !== null && _b !== void 0 ? _b : (_c = this.firstSelectedOption) === null || _c === void 0 ? void 0 : _c.text) !== null && _d !== void 0 ? _d : '';
|
|
534
|
-
}
|
|
535
|
-
};
|
|
536
|
-
__decorate([attr, __metadata("design:type", String)], Select.prototype, "appearance", void 0);
|
|
537
|
-
__decorate([attr, __metadata("design:type", String)], Select.prototype, "shape", void 0);
|
|
538
|
-
__decorate([observable, __metadata("design:type", Array)], Select.prototype, "metaSlottedContent", void 0);
|
|
539
|
-
__decorate([attr({
|
|
540
|
-
mode: 'boolean',
|
|
541
|
-
attribute: 'fixed-dropdown'
|
|
542
|
-
}), __metadata("design:type", Object)], Select.prototype, "fixedDropdown", void 0);
|
|
543
|
-
Select = __decorate([errorText, formElements], Select);
|
|
544
|
-
applyMixins(Select, AffixIconWithTrailing, FormElementHelperText, FormElementSuccessText);
|
|
399
|
+
class RadioGroup extends RadioGroup$1 {}
|
|
400
|
+
__decorate([attr, __metadata("design:type", String)], RadioGroup.prototype, "label", void 0);
|
|
545
401
|
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
}
|
|
566
|
-
function selectValue(context) {
|
|
567
|
-
const affixIconTemplate = affixIconTemplateFactory(context, false);
|
|
568
|
-
const focusTemplate = focusTemplateFactory(context);
|
|
569
|
-
return html(_t2 || (_t2 = _`
|
|
570
|
-
<div
|
|
571
|
-
class="control ${0}"
|
|
572
|
-
?disabled="${0}"
|
|
573
|
-
id="control"
|
|
574
|
-
${0}
|
|
575
|
-
>
|
|
576
|
-
<div class="selected-value">
|
|
577
|
-
<slot name="icon">
|
|
578
|
-
${0}
|
|
579
|
-
</slot>
|
|
580
|
-
<span class="text">${0}</span>
|
|
581
|
-
<slot name="meta" ${0}></slot>
|
|
582
|
-
</div>
|
|
583
|
-
${0}
|
|
584
|
-
${0}
|
|
585
|
-
</div>
|
|
586
|
-
`), getStateClasses, x => x.disabled, ref('_anchor'), when(x => x.icon, html(_t3 || (_t3 = _`${0}`), x => affixIconTemplate(x.icon))), x => x.displayValue, slotted('metaSlottedContent'), () => affixIconTemplate('chevron-down-line'), () => focusTemplate);
|
|
587
|
-
}
|
|
588
|
-
function setFixedDropdownVarWidth(x) {
|
|
589
|
-
return x.open && x.fixedDropdown ? `--_select-fixed-width: ${Math.round(x.getBoundingClientRect().width)}px` : null;
|
|
590
|
-
}
|
|
591
|
-
function renderControl(context) {
|
|
592
|
-
const focusTemplate = focusTemplateFactory(context);
|
|
593
|
-
const popupTag = context.tagFor(Popup);
|
|
594
|
-
return html(_t4 || (_t4 = _`
|
|
595
|
-
${0}
|
|
596
|
-
<div class="control-wrapper">
|
|
597
|
-
${0}
|
|
598
|
-
<${0}
|
|
599
|
-
?open="${0}"
|
|
600
|
-
anchor="control"
|
|
601
|
-
placement="bottom-start"
|
|
602
|
-
strategy="${0}"
|
|
603
|
-
${0}
|
|
604
|
-
class="popup"
|
|
605
|
-
style="${0}"
|
|
606
|
-
>
|
|
607
|
-
<div
|
|
608
|
-
id="${0}"
|
|
609
|
-
role="listbox"
|
|
610
|
-
?disabled="${0}"
|
|
611
|
-
${0}
|
|
612
|
-
class="list-box"
|
|
613
|
-
>
|
|
614
|
-
${0}
|
|
615
|
-
<slot
|
|
616
|
-
${0}
|
|
617
|
-
></slot>
|
|
618
|
-
</div>
|
|
619
|
-
</${0}>
|
|
402
|
+
const RadioGroupTemplate = context => {
|
|
403
|
+
return html`
|
|
404
|
+
<template
|
|
405
|
+
role="radiogroup"
|
|
406
|
+
aria-disabled="${x => x.disabled}"
|
|
407
|
+
aria-readonly="${x => x.readOnly}"
|
|
408
|
+
aria-orientation="${x => x.orientation}"
|
|
409
|
+
@click="${(x, c) => x.clickHandler(c.event)}"
|
|
410
|
+
@keydown="${(x, c) => x.keydownHandler(c.event)}"
|
|
411
|
+
@focusout="${(x, c) => x.focusOutHandler(c.event)}"
|
|
412
|
+
>
|
|
413
|
+
|
|
414
|
+
${when(x => x.label, html`<label>${x => x.label}</label>`)}
|
|
415
|
+
|
|
416
|
+
<div class="positioning-region ${x => x.orientation === Orientation$1.horizontal ? 'horizontal' : 'vertical'}">
|
|
417
|
+
<slot ${slotted({
|
|
418
|
+
property: 'slottedRadioButtons',
|
|
419
|
+
filter: elements(context.tagFor(Radio))
|
|
420
|
+
})}></slot>
|
|
620
421
|
</div>
|
|
621
|
-
${0}
|
|
622
|
-
${0}
|
|
623
|
-
${0}
|
|
624
|
-
`), when(x => x.label, renderLabel()), when(x => !x.multiple, selectValue(context)), popupTag, x => x.collapsible ? x.open : true, x => x.fixedDropdown ? null : 'absolute', ref('_popup'), setFixedDropdownVarWidth, x => x.listboxId, x => x.disabled, ref('listbox'), when(x => x.multiple, focusTemplate), slotted({
|
|
625
|
-
filter: Listbox$1.slottedOptionFilter,
|
|
626
|
-
flatten: true,
|
|
627
|
-
property: 'slottedOptions'
|
|
628
|
-
}), popupTag, when(x => {
|
|
629
|
-
var _a;
|
|
630
|
-
return (_a = x.helperText) === null || _a === void 0 ? void 0 : _a.length;
|
|
631
|
-
}, getFeedbackTemplate('helper', context)), when(x => !x.successText && x.errorValidationMessage, getFeedbackTemplate('error', context)), when(x => x.successText, getFeedbackTemplate('success', context)));
|
|
632
|
-
}
|
|
633
|
-
const SelectTemplate = context => {
|
|
634
|
-
return html(_t5 || (_t5 = _`
|
|
635
|
-
<template class="base"
|
|
636
|
-
aria-label="${0}"
|
|
637
|
-
aria-activedescendant="${0}"
|
|
638
|
-
aria-controls="${0}"
|
|
639
|
-
aria-disabled="${0}"
|
|
640
|
-
aria-expanded="${0}"
|
|
641
|
-
aria-haspopup="${0}"
|
|
642
|
-
aria-multiselectable="${0}"
|
|
643
|
-
?open="${0}"
|
|
644
|
-
role="combobox"
|
|
645
|
-
tabindex="${0}"
|
|
646
|
-
@click="${0}"
|
|
647
|
-
@focusin="${0}"
|
|
648
|
-
@focusout="${0}"
|
|
649
|
-
@keydown="${0}"
|
|
650
|
-
@mousedown="${0}"
|
|
651
|
-
>
|
|
652
|
-
${0}
|
|
653
422
|
</template>
|
|
654
|
-
|
|
423
|
+
`;
|
|
655
424
|
};
|
|
656
425
|
|
|
657
|
-
const
|
|
658
|
-
baseName: '
|
|
659
|
-
template:
|
|
426
|
+
const radioGroupDefinition = RadioGroup.compose({
|
|
427
|
+
baseName: 'radio-group',
|
|
428
|
+
template: RadioGroupTemplate,
|
|
660
429
|
styles: css_248z
|
|
661
430
|
});
|
|
662
|
-
const
|
|
663
|
-
const
|
|
431
|
+
const radioGroupRegistries = [radioGroupDefinition()];
|
|
432
|
+
const registerRadioGroup = registerFactory(radioGroupRegistries);
|
|
664
433
|
|
|
665
|
-
export {
|
|
434
|
+
export { radioGroupDefinition as a, radioGroupRegistries as b, registerRadioGroup as r };
|