@vonage/vivid 3.0.0-next.120 → 3.0.0-next.122
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/custom-elements.json +119 -438
- package/header/index.js +4 -56
- package/index.js +40 -39
- package/layout/index.js +1 -1
- package/lib/accordion/definition.d.ts +0 -2
- package/lib/accordion-item/definition.d.ts +0 -2
- package/lib/action-group/definition.d.ts +0 -2
- package/lib/avatar/definition.d.ts +0 -2
- package/lib/badge/definition.d.ts +1 -1
- package/lib/banner/definition.d.ts +0 -2
- package/lib/breadcrumb/definition.d.ts +0 -2
- package/lib/breadcrumb-item/definition.d.ts +0 -2
- package/lib/button/definition.d.ts +0 -2
- package/lib/calendar/definition.d.ts +0 -2
- package/lib/calendar-event/definition.d.ts +0 -2
- package/lib/card/definition.d.ts +0 -2
- package/lib/checkbox/definition.d.ts +0 -2
- package/lib/components.d.ts +1 -0
- package/lib/dialog/definition.d.ts +0 -2
- package/lib/divider/definition.d.ts +0 -2
- package/lib/elevation/definition.d.ts +0 -2
- package/lib/fab/definition.d.ts +1 -1
- package/lib/focus/definition.d.ts +1 -1
- package/lib/header/definition.d.ts +1 -1
- package/lib/icon/definition.d.ts +1 -1
- package/lib/layout/definition.d.ts +1 -1
- package/lib/listbox/definition.d.ts +1 -1
- package/lib/menu/definition.d.ts +6 -2
- package/lib/menu-item/definition.d.ts +1 -1
- package/lib/nav/definition.d.ts +1 -1
- package/lib/nav-disclosure/definition.d.ts +1 -1
- package/lib/nav-item/definition.d.ts +1 -1
- package/lib/note/definition.d.ts +1 -1
- package/lib/number-field/definition.d.ts +2 -1
- package/lib/option/definition.d.ts +1 -1
- package/lib/popup/definition.d.ts +1 -2
- package/lib/progress/definition.d.ts +1 -1
- package/lib/progress-ring/definition.d.ts +1 -1
- package/lib/radio/definition.d.ts +1 -1
- package/lib/radio-group/definition.d.ts +6 -2
- package/lib/side-drawer/definition.d.ts +1 -1
- package/lib/slider/definition.d.ts +1 -1
- package/lib/switch/definition.d.ts +1 -1
- package/lib/text-anchor/definition.d.ts +1 -1
- package/lib/text-area/definition.d.ts +1 -1
- package/lib/text-field/definition.d.ts +1 -1
- package/lib/tooltip/definition.d.ts +1 -1
- package/listbox/index.js +2 -2
- package/menu/index.js +3 -3
- package/menu-item/index.js +1 -1
- package/nav/index.js +1 -1
- package/nav-disclosure/index.js +1 -1
- package/nav-item/index.js +1 -1
- package/note/index.js +1 -1
- package/number-field/index.js +8 -8
- package/option/index.js +1 -1
- package/package.json +3 -2
- package/popup/index.js +1 -1
- package/progress/index.js +1 -1
- package/progress-ring/index.js +1 -1
- package/radio/index.js +1 -1
- package/radio-group/index.js +1 -1
- package/shared/definition.js +7 -7
- package/shared/definition10.js +6 -6
- package/shared/definition11.js +9 -9
- package/shared/definition12.js +7 -7
- package/shared/definition13.js +7 -7
- package/shared/definition14.js +9 -9
- package/shared/definition15.js +6 -6
- package/shared/definition16.js +9 -9
- package/shared/definition17.js +10 -10
- package/shared/definition18.js +7 -7
- package/shared/definition19.js +9 -9
- package/shared/definition2.js +9 -9
- package/shared/definition20.js +48 -34
- package/shared/definition21.js +36 -1070
- package/shared/definition22.js +980 -163
- package/shared/definition23.js +212 -299
- package/shared/definition24.js +311 -1492
- package/shared/definition25.js +1493 -315
- package/shared/definition26.js +348 -15
- package/shared/definition27.js +13 -70
- package/shared/definition28.js +68 -24
- package/shared/definition29.js +22 -47
- package/shared/definition3.js +6 -6
- package/shared/definition30.js +41 -79
- package/shared/definition31.js +77 -60
- package/shared/definition32.js +68 -36
- package/shared/definition33.js +32 -422
- package/shared/definition34.js +419 -70
- package/shared/definition35.js +67 -573
- package/shared/definition36.js +528 -83
- package/shared/definition37.js +88 -220
- package/shared/definition38.js +247 -87
- package/shared/definition39.js +110 -68
- package/shared/definition4.js +7 -7
- package/shared/definition40.js +77 -0
- package/shared/definition5.js +7 -7
- package/shared/definition6.js +8 -8
- package/shared/definition7.js +8 -8
- package/shared/definition8.js +9 -9
- package/shared/definition9.js +9 -9
- package/shared/design-system/index.d.ts +2 -1
- package/shared/form-elements.js +1 -1
- package/shared/index.js +2 -2
- package/side-drawer/index.js +1 -1
- package/slider/index.js +1 -1
- 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 +4 -4
- package/styles/tokens/theme-light.css +4 -4
- package/switch/index.js +1 -1
- package/text-anchor/index.js +5 -5
- package/text-area/index.js +1 -1
- package/text-field/index.js +1 -1
- package/tooltip/index.js +2 -2
- package/vivid.api.json +545 -1162
package/shared/definition23.js
CHANGED
|
@@ -1,348 +1,261 @@
|
|
|
1
|
-
import { F as FoundationElement,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { F as FoundationElement, V as Observable, _ as __decorate, N as observable, a as attr, b as __metadata, h as html, r as registerFactory } from './index.js';
|
|
2
|
+
import { i as iconRegistries } from './definition3.js';
|
|
3
|
+
import { f as focusRegistries } from './definition4.js';
|
|
4
|
+
import { A as AffixIconWithTrailing, a as affixIconTemplateFactory } from './affix.js';
|
|
5
|
+
import { A as ARIAGlobalStatesAndProperties } from './aria-global.js';
|
|
6
|
+
import { S as StartEnd } from './start-end.js';
|
|
7
|
+
import { a as applyMixins } from './apply-mixins.js';
|
|
4
8
|
import { i as isHTMLElement } from './dom.js';
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
9
|
+
import { f as focusTemplateFactory } from './focus2.js';
|
|
10
|
+
import './icon.js';
|
|
11
|
+
import { w as when } from './when.js';
|
|
12
|
+
import { c as classNames } from './class-names.js';
|
|
8
13
|
|
|
9
14
|
/**
|
|
10
|
-
*
|
|
11
|
-
* Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#menu | ARIA menu }.
|
|
15
|
+
* Determines if the element is a {@link (ListboxOption:class)}
|
|
12
16
|
*
|
|
13
|
-
* @
|
|
17
|
+
* @param element - the element to test.
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
function isListboxOption(el) {
|
|
21
|
+
return (isHTMLElement(el) &&
|
|
22
|
+
(el.getAttribute("role") === "option" ||
|
|
23
|
+
el instanceof HTMLOptionElement));
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* An Option Custom HTML Element.
|
|
27
|
+
* Implements {@link https://www.w3.org/TR/wai-aria-1.1/#option | ARIA option }.
|
|
28
|
+
*
|
|
29
|
+
* @slot start - Content which can be provided before the listbox option content
|
|
30
|
+
* @slot end - Content which can be provided after the listbox option content
|
|
31
|
+
* @slot - The default slot for listbox option content
|
|
32
|
+
* @csspart content - Wraps the listbox option content
|
|
14
33
|
*
|
|
15
34
|
* @public
|
|
16
35
|
*/
|
|
17
|
-
class
|
|
18
|
-
constructor() {
|
|
19
|
-
super(
|
|
20
|
-
this.expandedItem = null;
|
|
36
|
+
class ListboxOption$1 extends FoundationElement {
|
|
37
|
+
constructor(text, value, defaultSelected, selected) {
|
|
38
|
+
super();
|
|
21
39
|
/**
|
|
22
|
-
* The
|
|
23
|
-
*
|
|
40
|
+
* The defaultSelected state of the option.
|
|
41
|
+
* @public
|
|
24
42
|
*/
|
|
25
|
-
this.
|
|
43
|
+
this.defaultSelected = false;
|
|
26
44
|
/**
|
|
45
|
+
* Tracks whether the "selected" property has been changed.
|
|
27
46
|
* @internal
|
|
28
47
|
*/
|
|
29
|
-
this.
|
|
30
|
-
return (this.parentElement !== null &&
|
|
31
|
-
isHTMLElement(this.parentElement) &&
|
|
32
|
-
this.parentElement.getAttribute("role") === "menuitem");
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* if focus is moving out of the menu, reset to a stable initial state
|
|
36
|
-
* @internal
|
|
37
|
-
*/
|
|
38
|
-
this.handleFocusOut = (e) => {
|
|
39
|
-
if (!this.contains(e.relatedTarget) && this.menuItems !== undefined) {
|
|
40
|
-
this.collapseExpandedItem();
|
|
41
|
-
// find our first focusable element
|
|
42
|
-
const focusIndex = this.menuItems.findIndex(this.isFocusableElement);
|
|
43
|
-
// set the current focus index's tabindex to -1
|
|
44
|
-
this.menuItems[this.focusIndex].setAttribute("tabindex", "-1");
|
|
45
|
-
// set the first focusable element tabindex to 0
|
|
46
|
-
this.menuItems[focusIndex].setAttribute("tabindex", "0");
|
|
47
|
-
// set the focus index
|
|
48
|
-
this.focusIndex = focusIndex;
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
this.handleItemFocus = (e) => {
|
|
52
|
-
const targetItem = e.target;
|
|
53
|
-
if (this.menuItems !== undefined &&
|
|
54
|
-
targetItem !== this.menuItems[this.focusIndex]) {
|
|
55
|
-
this.menuItems[this.focusIndex].setAttribute("tabindex", "-1");
|
|
56
|
-
this.focusIndex = this.menuItems.indexOf(targetItem);
|
|
57
|
-
targetItem.setAttribute("tabindex", "0");
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
this.handleExpandedChanged = (e) => {
|
|
61
|
-
if (e.defaultPrevented ||
|
|
62
|
-
e.target === null ||
|
|
63
|
-
this.menuItems === undefined ||
|
|
64
|
-
this.menuItems.indexOf(e.target) < 0) {
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
e.preventDefault();
|
|
68
|
-
const changedItem = e.target;
|
|
69
|
-
// closing an expanded item without opening another
|
|
70
|
-
if (this.expandedItem !== null &&
|
|
71
|
-
changedItem === this.expandedItem &&
|
|
72
|
-
changedItem.expanded === false) {
|
|
73
|
-
this.expandedItem = null;
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
if (changedItem.expanded) {
|
|
77
|
-
if (this.expandedItem !== null && this.expandedItem !== changedItem) {
|
|
78
|
-
this.expandedItem.expanded = false;
|
|
79
|
-
}
|
|
80
|
-
this.menuItems[this.focusIndex].setAttribute("tabindex", "-1");
|
|
81
|
-
this.expandedItem = changedItem;
|
|
82
|
-
this.focusIndex = this.menuItems.indexOf(changedItem);
|
|
83
|
-
changedItem.setAttribute("tabindex", "0");
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
this.removeItemListeners = () => {
|
|
87
|
-
if (this.menuItems !== undefined) {
|
|
88
|
-
this.menuItems.forEach((item) => {
|
|
89
|
-
item.removeEventListener("expanded-change", this.handleExpandedChanged);
|
|
90
|
-
item.removeEventListener("focus", this.handleItemFocus);
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
this.setItems = () => {
|
|
95
|
-
const newItems = this.domChildren();
|
|
96
|
-
this.removeItemListeners();
|
|
97
|
-
this.menuItems = newItems;
|
|
98
|
-
const menuItems = this.menuItems.filter(this.isMenuItemElement);
|
|
99
|
-
// if our focus index is not -1 we have items
|
|
100
|
-
if (menuItems.length) {
|
|
101
|
-
this.focusIndex = 0;
|
|
102
|
-
}
|
|
103
|
-
function elementIndent(el) {
|
|
104
|
-
const role = el.getAttribute("role");
|
|
105
|
-
const startSlot = el.querySelector("[slot=start]");
|
|
106
|
-
if (role !== MenuItemRole.menuitem && startSlot === null) {
|
|
107
|
-
return 1;
|
|
108
|
-
}
|
|
109
|
-
else if (role === MenuItemRole.menuitem && startSlot !== null) {
|
|
110
|
-
return 1;
|
|
111
|
-
}
|
|
112
|
-
else if (role !== MenuItemRole.menuitem && startSlot !== null) {
|
|
113
|
-
return 2;
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
return 0;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
const indent = menuItems.reduce((accum, current) => {
|
|
120
|
-
const elementValue = elementIndent(current);
|
|
121
|
-
return accum > elementValue ? accum : elementValue;
|
|
122
|
-
}, 0);
|
|
123
|
-
menuItems.forEach((item, index) => {
|
|
124
|
-
item.setAttribute("tabindex", index === 0 ? "0" : "-1");
|
|
125
|
-
item.addEventListener("expanded-change", this.handleExpandedChanged);
|
|
126
|
-
item.addEventListener("focus", this.handleItemFocus);
|
|
127
|
-
if (item instanceof MenuItem) {
|
|
128
|
-
item.startColumnCount = indent;
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
};
|
|
132
|
-
/**
|
|
133
|
-
* handle change from child element
|
|
134
|
-
*/
|
|
135
|
-
this.changeHandler = (e) => {
|
|
136
|
-
if (this.menuItems === undefined) {
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
const changedMenuItem = e.target;
|
|
140
|
-
const changeItemIndex = this.menuItems.indexOf(changedMenuItem);
|
|
141
|
-
if (changeItemIndex === -1) {
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
if (changedMenuItem.role === "menuitemradio" &&
|
|
145
|
-
changedMenuItem.checked === true) {
|
|
146
|
-
for (let i = changeItemIndex - 1; i >= 0; --i) {
|
|
147
|
-
const item = this.menuItems[i];
|
|
148
|
-
const role = item.getAttribute("role");
|
|
149
|
-
if (role === MenuItemRole.menuitemradio) {
|
|
150
|
-
item.checked = false;
|
|
151
|
-
}
|
|
152
|
-
if (role === "separator") {
|
|
153
|
-
break;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
const maxIndex = this.menuItems.length - 1;
|
|
157
|
-
for (let i = changeItemIndex + 1; i <= maxIndex; ++i) {
|
|
158
|
-
const item = this.menuItems[i];
|
|
159
|
-
const role = item.getAttribute("role");
|
|
160
|
-
if (role === MenuItemRole.menuitemradio) {
|
|
161
|
-
item.checked = false;
|
|
162
|
-
}
|
|
163
|
-
if (role === "separator") {
|
|
164
|
-
break;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
};
|
|
48
|
+
this.dirtySelected = false;
|
|
169
49
|
/**
|
|
170
|
-
*
|
|
50
|
+
* The checked state of the control.
|
|
51
|
+
*
|
|
52
|
+
* @public
|
|
171
53
|
*/
|
|
172
|
-
this.
|
|
173
|
-
return (isHTMLElement(el) &&
|
|
174
|
-
Menu$1.focusableElementRoles.hasOwnProperty(el.getAttribute("role")));
|
|
175
|
-
};
|
|
54
|
+
this.selected = this.defaultSelected;
|
|
176
55
|
/**
|
|
177
|
-
*
|
|
56
|
+
* Track whether the value has been changed from the initial value
|
|
178
57
|
*/
|
|
179
|
-
this.
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
}
|
|
183
|
-
itemsChanged(oldValue, newValue) {
|
|
184
|
-
// only update children after the component is connected and
|
|
185
|
-
// the setItems has run on connectedCallback
|
|
186
|
-
// (menuItems is undefined until then)
|
|
187
|
-
if (this.$fastController.isConnected && this.menuItems !== undefined) {
|
|
188
|
-
this.setItems();
|
|
58
|
+
this.dirtyValue = false;
|
|
59
|
+
if (text) {
|
|
60
|
+
this.textContent = text;
|
|
189
61
|
}
|
|
62
|
+
if (value) {
|
|
63
|
+
this.initialValue = value;
|
|
64
|
+
}
|
|
65
|
+
if (defaultSelected) {
|
|
66
|
+
this.defaultSelected = defaultSelected;
|
|
67
|
+
}
|
|
68
|
+
if (selected) {
|
|
69
|
+
this.selected = selected;
|
|
70
|
+
}
|
|
71
|
+
this.proxy = new Option(`${this.textContent}`, this.initialValue, this.defaultSelected, this.selected);
|
|
72
|
+
this.proxy.disabled = this.disabled;
|
|
190
73
|
}
|
|
191
74
|
/**
|
|
192
|
-
*
|
|
193
|
-
*/
|
|
194
|
-
connectedCallback() {
|
|
195
|
-
super.connectedCallback();
|
|
196
|
-
DOM.queueUpdate(() => {
|
|
197
|
-
// wait until children have had a chance to
|
|
198
|
-
// connect before setting/checking their props/attributes
|
|
199
|
-
this.setItems();
|
|
200
|
-
});
|
|
201
|
-
this.addEventListener("change", this.changeHandler);
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* @internal
|
|
205
|
-
*/
|
|
206
|
-
disconnectedCallback() {
|
|
207
|
-
super.disconnectedCallback();
|
|
208
|
-
this.removeItemListeners();
|
|
209
|
-
this.menuItems = undefined;
|
|
210
|
-
this.removeEventListener("change", this.changeHandler);
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Focuses the first item in the menu.
|
|
75
|
+
* Updates the ariaChecked property when the checked property changes.
|
|
214
76
|
*
|
|
215
|
-
* @
|
|
216
|
-
|
|
217
|
-
focus() {
|
|
218
|
-
this.setFocus(0, 1);
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Collapses any expanded menu items.
|
|
77
|
+
* @param prev - the previous checked value
|
|
78
|
+
* @param next - the current checked value
|
|
222
79
|
*
|
|
223
80
|
* @public
|
|
224
81
|
*/
|
|
225
|
-
|
|
226
|
-
if (
|
|
227
|
-
this.
|
|
228
|
-
|
|
82
|
+
checkedChanged(prev, next) {
|
|
83
|
+
if (typeof next === "boolean") {
|
|
84
|
+
this.ariaChecked = next ? "true" : "false";
|
|
85
|
+
return;
|
|
229
86
|
}
|
|
87
|
+
this.ariaChecked = null;
|
|
230
88
|
}
|
|
231
89
|
/**
|
|
90
|
+
* Updates the proxy's text content when the default slot changes.
|
|
91
|
+
* @param prev - the previous content value
|
|
92
|
+
* @param next - the current content value
|
|
93
|
+
*
|
|
232
94
|
* @internal
|
|
233
95
|
*/
|
|
234
|
-
|
|
235
|
-
if (
|
|
236
|
-
|
|
96
|
+
contentChanged(prev, next) {
|
|
97
|
+
if (this.proxy instanceof HTMLOptionElement) {
|
|
98
|
+
this.proxy.textContent = this.textContent;
|
|
99
|
+
}
|
|
100
|
+
this.$emit("contentchange", null, { bubbles: true });
|
|
101
|
+
}
|
|
102
|
+
defaultSelectedChanged() {
|
|
103
|
+
if (!this.dirtySelected) {
|
|
104
|
+
this.selected = this.defaultSelected;
|
|
105
|
+
if (this.proxy instanceof HTMLOptionElement) {
|
|
106
|
+
this.proxy.selected = this.defaultSelected;
|
|
107
|
+
}
|
|
237
108
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
case keyArrowUp:
|
|
244
|
-
// go back one index
|
|
245
|
-
this.setFocus(this.focusIndex - 1, -1);
|
|
246
|
-
return;
|
|
247
|
-
case keyEnd:
|
|
248
|
-
// set focus on last item
|
|
249
|
-
this.setFocus(this.menuItems.length - 1, -1);
|
|
250
|
-
return;
|
|
251
|
-
case keyHome:
|
|
252
|
-
// set focus on first item
|
|
253
|
-
this.setFocus(0, 1);
|
|
254
|
-
return;
|
|
255
|
-
default:
|
|
256
|
-
// if we are not handling the event, do not prevent default
|
|
257
|
-
return true;
|
|
109
|
+
}
|
|
110
|
+
disabledChanged(prev, next) {
|
|
111
|
+
this.ariaDisabled = this.disabled ? "true" : "false";
|
|
112
|
+
if (this.proxy instanceof HTMLOptionElement) {
|
|
113
|
+
this.proxy.disabled = this.disabled;
|
|
258
114
|
}
|
|
259
115
|
}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
116
|
+
selectedAttributeChanged() {
|
|
117
|
+
this.defaultSelected = this.selectedAttribute;
|
|
118
|
+
if (this.proxy instanceof HTMLOptionElement) {
|
|
119
|
+
this.proxy.defaultSelected = this.defaultSelected;
|
|
120
|
+
}
|
|
265
121
|
}
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
122
|
+
selectedChanged() {
|
|
123
|
+
this.ariaSelected = this.selected ? "true" : "false";
|
|
124
|
+
if (!this.dirtySelected) {
|
|
125
|
+
this.dirtySelected = true;
|
|
269
126
|
}
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
if (this.isFocusableElement(child)) {
|
|
273
|
-
// change the previous index to -1
|
|
274
|
-
if (this.focusIndex > -1 &&
|
|
275
|
-
this.menuItems.length >= this.focusIndex - 1) {
|
|
276
|
-
this.menuItems[this.focusIndex].setAttribute("tabindex", "-1");
|
|
277
|
-
}
|
|
278
|
-
// update the focus index
|
|
279
|
-
this.focusIndex = focusIndex;
|
|
280
|
-
// update the tabindex of next focusable element
|
|
281
|
-
child.setAttribute("tabindex", "0");
|
|
282
|
-
// focus the element
|
|
283
|
-
child.focus();
|
|
284
|
-
break;
|
|
285
|
-
}
|
|
286
|
-
focusIndex += adjustment;
|
|
127
|
+
if (this.proxy instanceof HTMLOptionElement) {
|
|
128
|
+
this.proxy.selected = this.selected;
|
|
287
129
|
}
|
|
288
130
|
}
|
|
131
|
+
initialValueChanged(previous, next) {
|
|
132
|
+
// If the value is clean and the component is connected to the DOM
|
|
133
|
+
// then set value equal to the attribute value.
|
|
134
|
+
if (!this.dirtyValue) {
|
|
135
|
+
this.value = this.initialValue;
|
|
136
|
+
this.dirtyValue = false;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
get label() {
|
|
140
|
+
var _a;
|
|
141
|
+
return (_a = this.value) !== null && _a !== void 0 ? _a : this.text;
|
|
142
|
+
}
|
|
143
|
+
get text() {
|
|
144
|
+
var _a, _b;
|
|
145
|
+
return (_b = (_a = this.textContent) === null || _a === void 0 ? void 0 : _a.replace(/\s+/g, " ").trim()) !== null && _b !== void 0 ? _b : "";
|
|
146
|
+
}
|
|
147
|
+
set value(next) {
|
|
148
|
+
const newValue = `${next !== null && next !== void 0 ? next : ""}`;
|
|
149
|
+
this._value = newValue;
|
|
150
|
+
this.dirtyValue = true;
|
|
151
|
+
if (this.proxy instanceof HTMLOptionElement) {
|
|
152
|
+
this.proxy.value = newValue;
|
|
153
|
+
}
|
|
154
|
+
Observable.notify(this, "value");
|
|
155
|
+
}
|
|
156
|
+
get value() {
|
|
157
|
+
var _a;
|
|
158
|
+
Observable.track(this, "value");
|
|
159
|
+
return (_a = this._value) !== null && _a !== void 0 ? _a : this.text;
|
|
160
|
+
}
|
|
161
|
+
get form() {
|
|
162
|
+
return this.proxy ? this.proxy.form : null;
|
|
163
|
+
}
|
|
289
164
|
}
|
|
290
|
-
Menu$1.focusableElementRoles = roleForMenuItem;
|
|
291
165
|
__decorate([
|
|
292
166
|
observable
|
|
293
|
-
],
|
|
294
|
-
|
|
295
|
-
|
|
167
|
+
], ListboxOption$1.prototype, "checked", void 0);
|
|
168
|
+
__decorate([
|
|
169
|
+
observable
|
|
170
|
+
], ListboxOption$1.prototype, "content", void 0);
|
|
171
|
+
__decorate([
|
|
172
|
+
observable
|
|
173
|
+
], ListboxOption$1.prototype, "defaultSelected", void 0);
|
|
174
|
+
__decorate([
|
|
175
|
+
attr({ mode: "boolean" })
|
|
176
|
+
], ListboxOption$1.prototype, "disabled", void 0);
|
|
177
|
+
__decorate([
|
|
178
|
+
attr({ attribute: "selected", mode: "boolean" })
|
|
179
|
+
], ListboxOption$1.prototype, "selectedAttribute", void 0);
|
|
180
|
+
__decorate([
|
|
181
|
+
observable
|
|
182
|
+
], ListboxOption$1.prototype, "selected", void 0);
|
|
183
|
+
__decorate([
|
|
184
|
+
attr({ attribute: "value", mode: "fromView" })
|
|
185
|
+
], ListboxOption$1.prototype, "initialValue", void 0);
|
|
186
|
+
/**
|
|
187
|
+
* States and properties relating to the ARIA `option` role.
|
|
188
|
+
*
|
|
189
|
+
* @public
|
|
190
|
+
*/
|
|
191
|
+
class DelegatesARIAListboxOption {
|
|
192
|
+
}
|
|
193
|
+
__decorate([
|
|
194
|
+
observable
|
|
195
|
+
], DelegatesARIAListboxOption.prototype, "ariaChecked", void 0);
|
|
196
|
+
__decorate([
|
|
197
|
+
observable
|
|
198
|
+
], DelegatesARIAListboxOption.prototype, "ariaPosInSet", void 0);
|
|
199
|
+
__decorate([
|
|
200
|
+
observable
|
|
201
|
+
], DelegatesARIAListboxOption.prototype, "ariaSelected", void 0);
|
|
202
|
+
__decorate([
|
|
203
|
+
observable
|
|
204
|
+
], DelegatesARIAListboxOption.prototype, "ariaSetSize", void 0);
|
|
205
|
+
applyMixins(DelegatesARIAListboxOption, ARIAGlobalStatesAndProperties);
|
|
206
|
+
applyMixins(ListboxOption$1, StartEnd, DelegatesARIAListboxOption);
|
|
296
207
|
|
|
297
|
-
class
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
208
|
+
class ListboxOption extends ListboxOption$1 {
|
|
209
|
+
set text(value) {
|
|
210
|
+
this._text = value;
|
|
211
|
+
}
|
|
212
|
+
get text() {
|
|
213
|
+
var _a;
|
|
214
|
+
return (_a = this._text) !== null && _a !== void 0 ? _a : '';
|
|
304
215
|
}
|
|
305
216
|
}
|
|
306
217
|
__decorate([attr({
|
|
307
|
-
|
|
308
|
-
}), __metadata("design:type",
|
|
309
|
-
|
|
310
|
-
__decorate([attr, __metadata("design:type", String)], Menu.prototype, "anchor", void 0);
|
|
218
|
+
attribute: 'text'
|
|
219
|
+
}), __metadata("design:type", String)], ListboxOption.prototype, "_text", void 0);
|
|
220
|
+
applyMixins(ListboxOption, AffixIconWithTrailing);
|
|
311
221
|
|
|
312
222
|
let _ = t => t,
|
|
313
|
-
_t
|
|
314
|
-
|
|
315
|
-
|
|
223
|
+
_t,
|
|
224
|
+
_t2;
|
|
225
|
+
const getClasses = ({
|
|
226
|
+
icon,
|
|
227
|
+
disabled,
|
|
228
|
+
selected,
|
|
229
|
+
checked
|
|
230
|
+
}) => classNames('base', ['disabled', disabled], ['selected', Boolean(selected)], ['active', Boolean(checked)], ['icon', Boolean(icon)]);
|
|
231
|
+
const ListboxOptionTemplate = context => {
|
|
232
|
+
const affixIconTemplate = affixIconTemplateFactory(context);
|
|
233
|
+
const focusTemplate = focusTemplateFactory(context);
|
|
316
234
|
return html(_t || (_t = _`
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
@keydown="${0}"
|
|
332
|
-
@focusout="${0}"
|
|
333
|
-
>
|
|
334
|
-
<slot ${0}></slot>
|
|
335
|
-
</div>
|
|
336
|
-
</${0}>
|
|
337
|
-
</template>`), x => x.slot || x.isNestedMenu() ? 'submenu' : void 0, popupTag, x => x.placement, x => x.open, x => x.anchor, x => x.popupOpenChanged(), x => x.popupOpenChanged(), ref('_popup'), (x, c) => x.handleMenuKeyDown(c.event), (x, c) => x.handleFocusOut(c.event), slotted('items'), popupTag);
|
|
235
|
+
<template
|
|
236
|
+
aria-checked="${0}"
|
|
237
|
+
aria-disabled="${0}"
|
|
238
|
+
aria-posinset="${0}"
|
|
239
|
+
aria-selected="${0}"
|
|
240
|
+
aria-setsize="${0}"
|
|
241
|
+
role="option">
|
|
242
|
+
<div class="${0}">
|
|
243
|
+
${0}
|
|
244
|
+
${0}
|
|
245
|
+
${0}
|
|
246
|
+
</div>
|
|
247
|
+
</template>
|
|
248
|
+
`), x => x.ariaChecked, x => x.ariaDisabled, x => x.ariaPosInSet, x => x.ariaSelected, x => x.ariaSetSize, getClasses, () => focusTemplate, x => affixIconTemplate(x.icon), when(x => x.text, html(_t2 || (_t2 = _`<div class="text">${0}</div>`), x => x.text)));
|
|
338
249
|
};
|
|
339
250
|
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
251
|
+
var css_248z = "/**\n * Do not edit directly\n * Generated on Sun, 18 Dec 2022 17:21:55 GMT\n */\n.base {\n position: relative; /* this is needed for the focus */\n display: flex;\n box-sizing: border-box;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n border-radius: 6px;\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n color: var(--_appearance-color-text);\n font: var(--vvd-typography-base);\n gap: 12px;\n hyphens: auto;\n inline-size: 100%;\n min-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n padding-block: 10px;\n padding-inline: 16px;\n vertical-align: middle;\n word-break: break-word;\n}\n.base {\n --_connotation-color-primary: var(--vvd-color-canvas-text);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-primary-increment: var(--vvd-color-neutral-800);\n --_connotation-color-faint: var(--vvd-color-neutral-50);\n --_connotation-color-soft: var(--vvd-color-neutral-100);\n}\n.base {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transparent;\n}\n.base:where(:disabled, .disabled) {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(:active, .active):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-soft);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:not(:disabled, .disabled, :hover, .hover)) {\n --_appearance-color-text: var(--_connotation-color-primary-text);\n --_appearance-color-fill: var(--_connotation-color-primary);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:hover, .hover) {\n --_appearance-color-text: var(--_connotation-color-primary-text);\n --_appearance-color-fill: var(--_connotation-color-primary-increment);\n --_appearance-color-outline: transparent;\n}\n@supports (user-select: none) {\n .base {\n user-select: none;\n }\n}\n.base:not(.disabled) {\n cursor: pointer;\n}\n.base.disabled {\n cursor: not-allowed;\n}\n.base .text {\n font: var(--vvd-typography-base);\n}\n\n.icon {\n font-size: 20px;\n}\n.base:not(.disabled, .selected) .icon {\n color: var(--vvd-color-neutral-600);\n}\n\n.focus-indicator {\n --focus-stroke-color: var(--vvd-color-neutral-500);\n --focus-stroke-gap-color: transparent;\n}\n:host(:not([aria-checked=true])) .focus-indicator {\n display: none;\n}";
|
|
252
|
+
|
|
253
|
+
const listboxOptionDefinition = ListboxOption.compose({
|
|
254
|
+
baseName: 'option',
|
|
255
|
+
template: ListboxOptionTemplate,
|
|
343
256
|
styles: css_248z
|
|
344
|
-
})
|
|
345
|
-
const
|
|
346
|
-
const
|
|
257
|
+
});
|
|
258
|
+
const listboxOptionRegistries = [listboxOptionDefinition(), ...iconRegistries, ...focusRegistries];
|
|
259
|
+
const registerOption = registerFactory(listboxOptionRegistries);
|
|
347
260
|
|
|
348
|
-
export {
|
|
261
|
+
export { listboxOptionDefinition as a, isListboxOption as i, listboxOptionRegistries as l, registerOption as r };
|