@vonage/vivid 3.0.0-next.8 → 3.0.0-next.80

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 (176) hide show
  1. package/README.md +141 -4
  2. package/accordion/index.js +2 -4
  3. package/accordion-item/index.js +26 -20
  4. package/action-group/index.js +47 -0
  5. package/avatar/index.js +70 -0
  6. package/badge/index.js +17 -21
  7. package/banner/index.js +23 -87
  8. package/breadcrumb/index.js +21 -18
  9. package/breadcrumb-item/index.js +19 -12
  10. package/button/index.js +19 -757
  11. package/calendar/index.js +67 -25
  12. package/calendar-event/index.js +115 -0
  13. package/card/index.js +132 -0
  14. package/checkbox/index.js +184 -0
  15. package/dialog/index.js +281 -0
  16. package/divider/index.js +3 -0
  17. package/elevation/index.js +3 -31
  18. package/fab/index.js +105 -0
  19. package/focus/index.js +18 -3
  20. package/header/index.js +66 -0
  21. package/icon/index.js +9 -5
  22. package/index.js +53 -20
  23. package/layout/index.js +4 -6
  24. package/lib/accordion-item/accordion-item.d.ts +2 -2
  25. package/lib/accordion-item/index.d.ts +2 -1
  26. package/lib/action-group/action-group.d.ts +10 -0
  27. package/lib/{sidenav-item/sidenav-item.template.d.ts → action-group/action-group.template.d.ts} +2 -2
  28. package/lib/{sidenav-item → action-group}/index.d.ts +1 -2
  29. package/lib/avatar/avatar.d.ts +15 -0
  30. package/lib/avatar/avatar.template.d.ts +4 -0
  31. package/lib/avatar/index.d.ts +3 -0
  32. package/lib/badge/badge.d.ts +5 -5
  33. package/lib/badge/index.d.ts +1 -1
  34. package/lib/banner/banner.d.ts +1 -1
  35. package/lib/banner/banner.template.d.ts +0 -2
  36. package/lib/banner/index.d.ts +1 -0
  37. package/lib/breadcrumb/breadcrumb.template.d.ts +4 -0
  38. package/lib/breadcrumb-item/breadcrumb-item.d.ts +1 -1
  39. package/lib/breadcrumb-item/index.d.ts +1 -0
  40. package/lib/button/button.d.ts +6 -5
  41. package/lib/button/index.d.ts +2 -19
  42. package/lib/calendar/calendar.d.ts +3 -1
  43. package/lib/calendar/index.d.ts +0 -1
  44. package/lib/calendar-event/calendar-event.d.ts +14 -0
  45. package/lib/calendar-event/calendar-event.template.d.ts +4 -0
  46. package/lib/calendar-event/index.d.ts +2 -0
  47. package/lib/card/card.d.ts +10 -0
  48. package/lib/{text/text.template.d.ts → card/card.template.d.ts} +2 -2
  49. package/lib/card/index.d.ts +4 -0
  50. package/lib/checkbox/checkbox.d.ts +5 -0
  51. package/lib/checkbox/checkbox.template.d.ts +4 -0
  52. package/lib/checkbox/index.d.ts +4 -0
  53. package/lib/components.d.ts +27 -10
  54. package/lib/dialog/dialog.d.ts +20 -0
  55. package/lib/dialog/dialog.template.d.ts +4 -0
  56. package/lib/dialog/index.d.ts +5 -0
  57. package/lib/divider/divider.d.ts +3 -0
  58. package/lib/divider/divider.template.d.ts +4 -0
  59. package/lib/divider/index.d.ts +2 -0
  60. package/lib/elevation/elevation.d.ts +1 -0
  61. package/lib/elevation/index.d.ts +1 -1
  62. package/lib/enums.d.ts +11 -6
  63. package/lib/fab/fab.d.ts +13 -0
  64. package/lib/fab/fab.template.d.ts +4 -0
  65. package/lib/fab/index.d.ts +4 -0
  66. package/lib/focus/index.d.ts +1 -1
  67. package/lib/header/header.d.ts +5 -0
  68. package/lib/header/header.template.d.ts +4 -0
  69. package/lib/header/index.d.ts +3 -0
  70. package/lib/icon/icon.d.ts +4 -3
  71. package/lib/layout/index.d.ts +1 -1
  72. package/lib/layout/layout.d.ts +3 -3
  73. package/lib/menu/index.d.ts +12 -0
  74. package/lib/menu/menu.d.ts +10 -0
  75. package/lib/menu/menu.template.d.ts +3 -0
  76. package/lib/menu-item/index.d.ts +3 -0
  77. package/lib/menu-item/menu-item.d.ts +7 -0
  78. package/lib/menu-item/menu-item.template.d.ts +5 -0
  79. package/lib/nav/index.d.ts +2 -0
  80. package/lib/nav/nav.d.ts +3 -0
  81. package/lib/nav/nav.template.d.ts +4 -0
  82. package/lib/nav-disclosure/index.d.ts +4 -0
  83. package/lib/nav-disclosure/nav-disclosure.d.ts +10 -0
  84. package/lib/nav-disclosure/nav-disclosure.template.d.ts +4 -0
  85. package/lib/nav-item/index.d.ts +4 -0
  86. package/lib/{sidenav-item/sidenav-item.d.ts → nav-item/nav-item.d.ts} +2 -2
  87. package/lib/nav-item/nav-item.template.d.ts +4 -0
  88. package/lib/{text → note}/index.d.ts +1 -1
  89. package/lib/note/note.d.ts +10 -0
  90. package/lib/note/note.template.d.ts +5 -0
  91. package/lib/number-field/index.d.ts +4 -0
  92. package/lib/number-field/number-field.d.ts +16 -0
  93. package/lib/number-field/number-field.template.d.ts +4 -0
  94. package/lib/popup/index.d.ts +1 -1
  95. package/lib/popup/popup.d.ts +2 -1
  96. package/lib/progress/progress.d.ts +1 -1
  97. package/lib/progress-ring/progress-ring.d.ts +2 -1
  98. package/lib/radio/index.d.ts +3 -0
  99. package/lib/radio/radio.d.ts +4 -0
  100. package/lib/radio/radio.template.d.ts +4 -0
  101. package/lib/side-drawer/index.d.ts +1 -1
  102. package/lib/side-drawer/side-drawer.d.ts +3 -2
  103. package/lib/text-anchor/text-anchor.d.ts +1 -1
  104. package/lib/text-area/index.d.ts +3 -0
  105. package/lib/text-area/text-area.d.ts +9 -0
  106. package/lib/text-area/text-area.template.d.ts +4 -0
  107. package/lib/text-field/index.d.ts +4 -0
  108. package/lib/text-field/text-field.d.ts +16 -0
  109. package/lib/text-field/text-field.template.d.ts +5 -0
  110. package/lib/tooltip/tooltip.d.ts +2 -2
  111. package/menu/index.js +381 -0
  112. package/menu-item/index.js +19 -0
  113. package/nav/index.js +17 -0
  114. package/nav-disclosure/index.js +88 -0
  115. package/nav-item/index.js +45 -0
  116. package/note/index.js +66 -0
  117. package/number-field/index.js +529 -0
  118. package/package.json +51 -7
  119. package/popup/index.js +23 -2061
  120. package/progress/index.js +35 -28
  121. package/progress-ring/index.js +9 -5
  122. package/radio/index.js +174 -0
  123. package/shared/anchor.js +10 -2
  124. package/shared/aria-global.js +2 -86
  125. package/shared/base-progress.js +5 -0
  126. package/shared/breadcrumb-item.js +1 -1
  127. package/shared/button.js +200 -0
  128. package/shared/calendar-event.js +26 -0
  129. package/shared/dialog-polyfill.esm.js +858 -0
  130. package/shared/enums.js +79 -0
  131. package/shared/es.object.assign.js +7 -6
  132. package/shared/export.js +995 -0
  133. package/shared/focus.js +5 -0
  134. package/shared/focus2.js +11 -0
  135. package/shared/form-associated.js +466 -0
  136. package/shared/form-elements.js +299 -0
  137. package/shared/icon.js +533 -520
  138. package/shared/index.js +71 -55
  139. package/shared/index2.js +110 -13
  140. package/shared/index3.js +35 -0
  141. package/shared/index4.js +86 -0
  142. package/shared/index5.js +2100 -0
  143. package/shared/index6.js +371 -0
  144. package/shared/iterators.js +61 -0
  145. package/shared/key-codes.js +90 -0
  146. package/shared/object-keys.js +13 -0
  147. package/shared/patterns/focus.d.ts +3 -0
  148. package/shared/patterns/form-elements.d.ts +22 -0
  149. package/shared/patterns/index.d.ts +1 -0
  150. package/shared/ref.js +41 -0
  151. package/shared/regexp-flags.js +21 -0
  152. package/shared/start-end.js +50 -0
  153. package/shared/text-anchor.js +2 -11
  154. package/shared/text-anchor.template.js +5 -2
  155. package/shared/to-string.js +51 -0
  156. package/shared/web.dom-collections.iterator.js +78 -1083
  157. package/side-drawer/index.js +44 -23
  158. package/styles/core/all.css +75 -0
  159. package/styles/core/theme.css +11 -0
  160. package/styles/core/typography.css +69 -0
  161. package/styles/fonts/SpeziaCompleteVariableItalicWeb.woff2 +0 -0
  162. package/styles/fonts/SpeziaCompleteVariableUprightWeb.woff2 +0 -0
  163. package/styles/fonts/SpeziaMonoCompleteVariableWeb.woff2 +0 -0
  164. package/styles/fonts/spezia.css +9 -12
  165. package/styles/tokens/theme-dark.css +211 -0
  166. package/styles/tokens/theme-light.css +211 -0
  167. package/text-anchor/index.js +9 -1
  168. package/text-area/index.js +304 -0
  169. package/text-field/index.js +152 -0
  170. package/tooltip/index.js +23 -16
  171. package/lib/text/text.d.ts +0 -10
  172. package/shared/style-inject.es.js +0 -28
  173. package/sidenav-item/index.js +0 -38
  174. package/styles/themes/dark.css +0 -205
  175. package/styles/themes/light.css +0 -205
  176. package/text/index.js +0 -45
@@ -0,0 +1,371 @@
1
+ import '../icon/index.js';
2
+ import { F as FoundationElement, D as DOM, _ as __decorate, a as attr, o as observable, b as __metadata, h as html, d as designSystem } from './index.js';
3
+ import { b as AffixIcon, a as affixIconTemplateFactory } from './affix.js';
4
+ import { S as StartEnd } from './start-end.js';
5
+ import { a as applyMixins } from './apply-mixins.js';
6
+ import { g as keyArrowLeft, h as keyArrowRight, a as keySpace, k as keyEnter } from './key-codes.js';
7
+ import { f as focusTemplateFactory } from './focus2.js';
8
+ import { w as when } from './when.js';
9
+ import { c as classNames } from './class-names.js';
10
+
11
+ /**
12
+ * Expose ltr and rtl strings
13
+ */
14
+ var Direction;
15
+ (function (Direction) {
16
+ Direction["ltr"] = "ltr";
17
+ Direction["rtl"] = "rtl";
18
+ })(Direction || (Direction = {}));
19
+
20
+ /**
21
+ * a method to determine the current localization direction of the view
22
+ * @param rootNode - the HTMLElement to begin the query from, usually "this" when used in a component controller
23
+ * @public
24
+ */
25
+ const getDirection = (rootNode) => {
26
+ const dirNode = rootNode.closest("[dir]");
27
+ return dirNode !== null && dirNode.dir === "rtl" ? Direction.rtl : Direction.ltr;
28
+ };
29
+
30
+ /**
31
+ * Menu items roles.
32
+ * @public
33
+ */
34
+ const MenuItemRole = {
35
+ /**
36
+ * The menu item has a "menuitem" role
37
+ */
38
+ menuitem: "menuitem",
39
+ /**
40
+ * The menu item has a "menuitemcheckbox" role
41
+ */
42
+ menuitemcheckbox: "menuitemcheckbox",
43
+ /**
44
+ * The menu item has a "menuitemradio" role
45
+ */
46
+ menuitemradio: "menuitemradio",
47
+ };
48
+ /**
49
+ * @internal
50
+ */
51
+ const roleForMenuItem = {
52
+ [MenuItemRole.menuitem]: "menuitem",
53
+ [MenuItemRole.menuitemcheckbox]: "menuitemcheckbox",
54
+ [MenuItemRole.menuitemradio]: "menuitemradio",
55
+ };
56
+
57
+ /**
58
+ * A Switch Custom HTML Element.
59
+ * Implements {@link https://www.w3.org/TR/wai-aria-1.1/#menuitem | ARIA menuitem }, {@link https://www.w3.org/TR/wai-aria-1.1/#menuitemcheckbox | ARIA menuitemcheckbox}, or {@link https://www.w3.org/TR/wai-aria-1.1/#menuitemradio | ARIA menuitemradio }.
60
+ *
61
+ * @slot checked-indicator - The checked indicator
62
+ * @slot radio-indicator - The radio indicator
63
+ * @slot start - Content which can be provided before the menu item content
64
+ * @slot end - Content which can be provided after the menu item content
65
+ * @slot - The default slot for menu item content
66
+ * @slot expand-collapse-indicator - The expand/collapse indicator
67
+ * @slot submenu - Used to nest menu's within menu items
68
+ * @csspart input-container - The element representing the visual checked or radio indicator
69
+ * @csspart checkbox - The element wrapping the `menuitemcheckbox` indicator
70
+ * @csspart radio - The element wrapping the `menuitemradio` indicator
71
+ * @csspart content - The element wrapping the menu item content
72
+ * @csspart expand-collapse-glyph-container - The element wrapping the expand collapse element
73
+ * @csspart expand-collapse - The expand/collapse element
74
+ * @csspart submenu-region - The container for the submenu, used for positioning
75
+ * @fires expanded-change - Fires a custom 'expanded-change' event when the expanded state changes
76
+ * @fires change - Fires a custom 'change' event when a non-submenu item with a role of `menuitemcheckbox`, `menuitemradio`, or `menuitem` is invoked
77
+ *
78
+ * @public
79
+ */
80
+ class MenuItem$1 extends FoundationElement {
81
+ constructor() {
82
+ super(...arguments);
83
+ /**
84
+ * The role of the element.
85
+ *
86
+ * @public
87
+ * @remarks
88
+ * HTML Attribute: role
89
+ */
90
+ this.role = MenuItemRole.menuitem;
91
+ /**
92
+ * @internal
93
+ */
94
+ this.hasSubmenu = false;
95
+ /**
96
+ * Track current direction to pass to the anchored region
97
+ *
98
+ * @internal
99
+ */
100
+ this.currentDirection = Direction.ltr;
101
+ this.focusSubmenuOnLoad = false;
102
+ /**
103
+ * @internal
104
+ */
105
+ this.handleMenuItemKeyDown = (e) => {
106
+ if (e.defaultPrevented) {
107
+ return false;
108
+ }
109
+ switch (e.key) {
110
+ case keyEnter:
111
+ case keySpace:
112
+ this.invoke();
113
+ return false;
114
+ case keyArrowRight:
115
+ //open/focus on submenu
116
+ this.expandAndFocus();
117
+ return false;
118
+ case keyArrowLeft:
119
+ //close submenu
120
+ if (this.expanded) {
121
+ this.expanded = false;
122
+ this.focus();
123
+ return false;
124
+ }
125
+ }
126
+ return true;
127
+ };
128
+ /**
129
+ * @internal
130
+ */
131
+ this.handleMenuItemClick = (e) => {
132
+ if (e.defaultPrevented || this.disabled) {
133
+ return false;
134
+ }
135
+ this.invoke();
136
+ return false;
137
+ };
138
+ /**
139
+ * @internal
140
+ */
141
+ this.submenuLoaded = () => {
142
+ if (!this.focusSubmenuOnLoad) {
143
+ return;
144
+ }
145
+ this.focusSubmenuOnLoad = false;
146
+ if (this.hasSubmenu) {
147
+ this.submenu.focus();
148
+ this.setAttribute("tabindex", "-1");
149
+ }
150
+ };
151
+ /**
152
+ * @internal
153
+ */
154
+ this.handleMouseOver = (e) => {
155
+ if (this.disabled || !this.hasSubmenu || this.expanded) {
156
+ return false;
157
+ }
158
+ this.expanded = true;
159
+ return false;
160
+ };
161
+ /**
162
+ * @internal
163
+ */
164
+ this.handleMouseOut = (e) => {
165
+ if (!this.expanded || this.contains(document.activeElement)) {
166
+ return false;
167
+ }
168
+ this.expanded = false;
169
+ return false;
170
+ };
171
+ /**
172
+ * @internal
173
+ */
174
+ this.expandAndFocus = () => {
175
+ if (!this.hasSubmenu) {
176
+ return;
177
+ }
178
+ this.focusSubmenuOnLoad = true;
179
+ this.expanded = true;
180
+ };
181
+ /**
182
+ * @internal
183
+ */
184
+ this.invoke = () => {
185
+ if (this.disabled) {
186
+ return;
187
+ }
188
+ switch (this.role) {
189
+ case MenuItemRole.menuitemcheckbox:
190
+ this.checked = !this.checked;
191
+ break;
192
+ case MenuItemRole.menuitem:
193
+ // update submenu
194
+ this.updateSubmenu();
195
+ if (this.hasSubmenu) {
196
+ this.expandAndFocus();
197
+ }
198
+ else {
199
+ this.$emit("change");
200
+ }
201
+ break;
202
+ case MenuItemRole.menuitemradio:
203
+ if (!this.checked) {
204
+ this.checked = true;
205
+ }
206
+ break;
207
+ }
208
+ };
209
+ /**
210
+ * Gets the submenu element if any
211
+ *
212
+ * @internal
213
+ */
214
+ this.updateSubmenu = () => {
215
+ this.submenu = this.domChildren().find((element) => {
216
+ return element.getAttribute("role") === "menu";
217
+ });
218
+ this.hasSubmenu = this.submenu === undefined ? false : true;
219
+ };
220
+ }
221
+ expandedChanged(oldValue) {
222
+ if (this.$fastController.isConnected) {
223
+ if (this.submenu === undefined) {
224
+ return;
225
+ }
226
+ if (this.expanded === false) {
227
+ this.submenu.collapseExpandedItem();
228
+ }
229
+ else {
230
+ this.currentDirection = getDirection(this);
231
+ }
232
+ this.$emit("expanded-change", this, { bubbles: false });
233
+ }
234
+ }
235
+ checkedChanged(oldValue, newValue) {
236
+ if (this.$fastController.isConnected) {
237
+ this.$emit("change");
238
+ }
239
+ }
240
+ /**
241
+ * @internal
242
+ */
243
+ connectedCallback() {
244
+ super.connectedCallback();
245
+ DOM.queueUpdate(() => {
246
+ this.updateSubmenu();
247
+ });
248
+ if (!this.startColumnCount) {
249
+ this.startColumnCount = 1;
250
+ }
251
+ this.observer = new MutationObserver(this.updateSubmenu);
252
+ }
253
+ /**
254
+ * @internal
255
+ */
256
+ disconnectedCallback() {
257
+ super.disconnectedCallback();
258
+ this.submenu = undefined;
259
+ if (this.observer !== undefined) {
260
+ this.observer.disconnect();
261
+ this.observer = undefined;
262
+ }
263
+ }
264
+ /**
265
+ * get an array of valid DOM children
266
+ */
267
+ domChildren() {
268
+ return Array.from(this.children).filter(child => !child.hasAttribute("hidden"));
269
+ }
270
+ }
271
+ __decorate([
272
+ attr({ mode: "boolean" })
273
+ ], MenuItem$1.prototype, "disabled", void 0);
274
+ __decorate([
275
+ attr({ mode: "boolean" })
276
+ ], MenuItem$1.prototype, "expanded", void 0);
277
+ __decorate([
278
+ observable
279
+ ], MenuItem$1.prototype, "startColumnCount", void 0);
280
+ __decorate([
281
+ attr
282
+ ], MenuItem$1.prototype, "role", void 0);
283
+ __decorate([
284
+ attr({ mode: "boolean" })
285
+ ], MenuItem$1.prototype, "checked", void 0);
286
+ __decorate([
287
+ observable
288
+ ], MenuItem$1.prototype, "submenuRegion", void 0);
289
+ __decorate([
290
+ observable
291
+ ], MenuItem$1.prototype, "hasSubmenu", void 0);
292
+ __decorate([
293
+ observable
294
+ ], MenuItem$1.prototype, "currentDirection", void 0);
295
+ __decorate([
296
+ observable
297
+ ], MenuItem$1.prototype, "submenu", void 0);
298
+ applyMixins(MenuItem$1, StartEnd);
299
+
300
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Wed, 19 Oct 2022 08:48:31 GMT\n */\n@supports selector(:focus-visible) {\n :host(:focus) {\n outline: none;\n }\n}\n.base {\n position: relative;\n display: flex;\n box-sizing: border-box;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n block-size: 40px;\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n color: var(--_appearance-color-text);\n font: var(--vvd-font-base);\n gap: 8px;\n inline-size: 100%;\n padding-inline: 8px;\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)) {\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(.selected, [aria-current]):where(:not(:disabled, .disabled, :hover, .hover, :active, .active)) {\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(: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(:disabled, .disabled) {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base {\n --_connotation-color-primary: var(--vvd-color-canvas-text);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-faint: var(--vvd-color-neutral-50);\n --_connotation-color-soft: var(--vvd-color-neutral-100);\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\n.focus-indicator {\n border-radius: 6px;\n}\n:host(:not(:focus-visible)) .focus-indicator {\n display: none;\n}\n\n.icon {\n font-size: 20px;\n}\n.base:not(.item-checkbox, .item-radio) .icon {\n color: var(--vvd-color-neutral-600);\n}\n\n.text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}";
301
+
302
+ class MenuItem extends MenuItem$1 {}
303
+
304
+ __decorate([attr, __metadata("design:type", String)], MenuItem.prototype, "text", void 0);
305
+
306
+ applyMixins(MenuItem, AffixIcon);
307
+
308
+ let _ = t => t,
309
+ _t,
310
+ _t2,
311
+ _t3,
312
+ _t4,
313
+ _t5;
314
+
315
+ const getClasses = ({
316
+ disabled,
317
+ checked,
318
+ expanded,
319
+ role
320
+ }) => classNames('base', ['disabled', Boolean(disabled)], ['selected', role !== MenuItemRole.menuitem && Boolean(checked)], ['expanded', Boolean(expanded)], ['item-checkbox', role === MenuItemRole.menuitemcheckbox], ['item-radio', role === MenuItemRole.menuitemradio]);
321
+
322
+ const MenuItemTemplate = (context, definition) => {
323
+ const affixIconTemplate = affixIconTemplateFactory(context);
324
+ const focusTemplate = focusTemplateFactory(context);
325
+ return html(_t || (_t = _`
326
+ <template
327
+ aria-checked="${0}"
328
+ aria-disabled="${0}"
329
+ aria-expanded="${0}"
330
+ @keydown="${0}"
331
+ @click="${0}"
332
+ @mouseover="${0}"
333
+ @mouseout="${0}"
334
+ >
335
+ <div class="${0}">
336
+
337
+ ${0}
338
+ ${0}
339
+
340
+ ${0}
341
+
342
+ ${0}
343
+
344
+ ${0}
345
+
346
+ <span class="text">
347
+ ${0}
348
+ </span>
349
+ </div>
350
+ </template>
351
+ `), x => x.role !== MenuItemRole.menuitem ? x.checked : void 0, x => x.disabled, x => x.expanded, (x, c) => x.handleMenuItemKeyDown(c.event), (x, c) => x.handleMenuItemClick(c.event), (x, c) => x.handleMouseOver(c.event), (x, c) => x.handleMouseOut(c.event), getClasses, when(x => x.hasSubmenu, html(_t2 || (_t2 = _`
352
+ <div
353
+ class="expand-collapse-glyph-container"
354
+ >
355
+ <span class="expand-collapse">
356
+ <slot name="expand-collapse-indicator">
357
+ ${0}
358
+ </slot>
359
+ </span>
360
+ </div>
361
+ `), definition.expandCollapseGlyph || '')), () => focusTemplate, when(x => x.role === MenuItemRole.menuitemcheckbox, html(_t3 || (_t3 = _`${0}`), x => affixIconTemplate(x.checked ? 'checkbox-checked-line' : 'checkbox-unchecked-line'))), when(x => x.role === MenuItemRole.menuitemradio, html(_t4 || (_t4 = _`${0}`), x => affixIconTemplate(x.checked ? 'radio-checked-line' : 'radio-unchecked-line'))), when(x => x.role === MenuItemRole.menuitem && x.icon, html(_t5 || (_t5 = _`${0}`), x => affixIconTemplate(x.icon))), x => x.text);
362
+ };
363
+
364
+ const vividMenuItem = MenuItem.compose({
365
+ baseName: 'menu-item',
366
+ template: MenuItemTemplate,
367
+ styles: css_248z
368
+ });
369
+ designSystem.register(vividMenuItem());
370
+
371
+ export { MenuItem$1 as M, MenuItemRole as a, roleForMenuItem as r, vividMenuItem as v };
@@ -0,0 +1,61 @@
1
+ import { i as isCallable$1, f as functionUncurryThis, j as anObject$1, o as objectDefineProperty, w as wellKnownSymbol$1, q as hasOwnProperty_1, a as getBuiltIn$1 } from './export.js';
2
+
3
+ var isCallable = isCallable$1;
4
+
5
+ var $String = String;
6
+ var $TypeError = TypeError;
7
+
8
+ var aPossiblePrototype$1 = function (argument) {
9
+ if (typeof argument == 'object' || isCallable(argument)) return argument;
10
+ throw $TypeError("Can't set " + $String(argument) + ' as a prototype');
11
+ };
12
+
13
+ /* eslint-disable no-proto -- safe */
14
+
15
+ var uncurryThis = functionUncurryThis;
16
+ var anObject = anObject$1;
17
+ var aPossiblePrototype = aPossiblePrototype$1;
18
+
19
+ // `Object.setPrototypeOf` method
20
+ // https://tc39.es/ecma262/#sec-object.setprototypeof
21
+ // Works with __proto__ only. Old v8 can't work with null proto objects.
22
+ // eslint-disable-next-line es-x/no-object-setprototypeof -- safe
23
+ var objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () {
24
+ var CORRECT_SETTER = false;
25
+ var test = {};
26
+ var setter;
27
+ try {
28
+ // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe
29
+ setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);
30
+ setter(test, []);
31
+ CORRECT_SETTER = test instanceof Array;
32
+ } catch (error) { /* empty */ }
33
+ return function setPrototypeOf(O, proto) {
34
+ anObject(O);
35
+ aPossiblePrototype(proto);
36
+ if (CORRECT_SETTER) setter(O, proto);
37
+ else O.__proto__ = proto;
38
+ return O;
39
+ };
40
+ }() : undefined);
41
+
42
+ var defineProperty = objectDefineProperty.f;
43
+ var hasOwn = hasOwnProperty_1;
44
+ var wellKnownSymbol = wellKnownSymbol$1;
45
+
46
+ var TO_STRING_TAG = wellKnownSymbol('toStringTag');
47
+
48
+ var setToStringTag = function (target, TAG, STATIC) {
49
+ if (target && !STATIC) target = target.prototype;
50
+ if (target && !hasOwn(target, TO_STRING_TAG)) {
51
+ defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });
52
+ }
53
+ };
54
+
55
+ var getBuiltIn = getBuiltIn$1;
56
+
57
+ var html = getBuiltIn('document', 'documentElement');
58
+
59
+ var iterators = {};
60
+
61
+ export { html as h, iterators as i, objectSetPrototypeOf as o, setToStringTag as s };
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Key Code values
3
+ * @deprecated - KeyCodes are deprecated, use individual string key exports
4
+ */
5
+ var KeyCodes;
6
+ (function (KeyCodes) {
7
+ KeyCodes[KeyCodes["alt"] = 18] = "alt";
8
+ KeyCodes[KeyCodes["arrowDown"] = 40] = "arrowDown";
9
+ KeyCodes[KeyCodes["arrowLeft"] = 37] = "arrowLeft";
10
+ KeyCodes[KeyCodes["arrowRight"] = 39] = "arrowRight";
11
+ KeyCodes[KeyCodes["arrowUp"] = 38] = "arrowUp";
12
+ KeyCodes[KeyCodes["back"] = 8] = "back";
13
+ KeyCodes[KeyCodes["backSlash"] = 220] = "backSlash";
14
+ KeyCodes[KeyCodes["break"] = 19] = "break";
15
+ KeyCodes[KeyCodes["capsLock"] = 20] = "capsLock";
16
+ KeyCodes[KeyCodes["closeBracket"] = 221] = "closeBracket";
17
+ KeyCodes[KeyCodes["colon"] = 186] = "colon";
18
+ KeyCodes[KeyCodes["colon2"] = 59] = "colon2";
19
+ KeyCodes[KeyCodes["comma"] = 188] = "comma";
20
+ KeyCodes[KeyCodes["ctrl"] = 17] = "ctrl";
21
+ KeyCodes[KeyCodes["delete"] = 46] = "delete";
22
+ KeyCodes[KeyCodes["end"] = 35] = "end";
23
+ KeyCodes[KeyCodes["enter"] = 13] = "enter";
24
+ KeyCodes[KeyCodes["equals"] = 187] = "equals";
25
+ KeyCodes[KeyCodes["equals2"] = 61] = "equals2";
26
+ KeyCodes[KeyCodes["equals3"] = 107] = "equals3";
27
+ KeyCodes[KeyCodes["escape"] = 27] = "escape";
28
+ KeyCodes[KeyCodes["forwardSlash"] = 191] = "forwardSlash";
29
+ KeyCodes[KeyCodes["function1"] = 112] = "function1";
30
+ KeyCodes[KeyCodes["function10"] = 121] = "function10";
31
+ KeyCodes[KeyCodes["function11"] = 122] = "function11";
32
+ KeyCodes[KeyCodes["function12"] = 123] = "function12";
33
+ KeyCodes[KeyCodes["function2"] = 113] = "function2";
34
+ KeyCodes[KeyCodes["function3"] = 114] = "function3";
35
+ KeyCodes[KeyCodes["function4"] = 115] = "function4";
36
+ KeyCodes[KeyCodes["function5"] = 116] = "function5";
37
+ KeyCodes[KeyCodes["function6"] = 117] = "function6";
38
+ KeyCodes[KeyCodes["function7"] = 118] = "function7";
39
+ KeyCodes[KeyCodes["function8"] = 119] = "function8";
40
+ KeyCodes[KeyCodes["function9"] = 120] = "function9";
41
+ KeyCodes[KeyCodes["home"] = 36] = "home";
42
+ KeyCodes[KeyCodes["insert"] = 45] = "insert";
43
+ KeyCodes[KeyCodes["menu"] = 93] = "menu";
44
+ KeyCodes[KeyCodes["minus"] = 189] = "minus";
45
+ KeyCodes[KeyCodes["minus2"] = 109] = "minus2";
46
+ KeyCodes[KeyCodes["numLock"] = 144] = "numLock";
47
+ KeyCodes[KeyCodes["numPad0"] = 96] = "numPad0";
48
+ KeyCodes[KeyCodes["numPad1"] = 97] = "numPad1";
49
+ KeyCodes[KeyCodes["numPad2"] = 98] = "numPad2";
50
+ KeyCodes[KeyCodes["numPad3"] = 99] = "numPad3";
51
+ KeyCodes[KeyCodes["numPad4"] = 100] = "numPad4";
52
+ KeyCodes[KeyCodes["numPad5"] = 101] = "numPad5";
53
+ KeyCodes[KeyCodes["numPad6"] = 102] = "numPad6";
54
+ KeyCodes[KeyCodes["numPad7"] = 103] = "numPad7";
55
+ KeyCodes[KeyCodes["numPad8"] = 104] = "numPad8";
56
+ KeyCodes[KeyCodes["numPad9"] = 105] = "numPad9";
57
+ KeyCodes[KeyCodes["numPadDivide"] = 111] = "numPadDivide";
58
+ KeyCodes[KeyCodes["numPadDot"] = 110] = "numPadDot";
59
+ KeyCodes[KeyCodes["numPadMinus"] = 109] = "numPadMinus";
60
+ KeyCodes[KeyCodes["numPadMultiply"] = 106] = "numPadMultiply";
61
+ KeyCodes[KeyCodes["numPadPlus"] = 107] = "numPadPlus";
62
+ KeyCodes[KeyCodes["openBracket"] = 219] = "openBracket";
63
+ KeyCodes[KeyCodes["pageDown"] = 34] = "pageDown";
64
+ KeyCodes[KeyCodes["pageUp"] = 33] = "pageUp";
65
+ KeyCodes[KeyCodes["period"] = 190] = "period";
66
+ KeyCodes[KeyCodes["print"] = 44] = "print";
67
+ KeyCodes[KeyCodes["quote"] = 222] = "quote";
68
+ KeyCodes[KeyCodes["scrollLock"] = 145] = "scrollLock";
69
+ KeyCodes[KeyCodes["shift"] = 16] = "shift";
70
+ KeyCodes[KeyCodes["space"] = 32] = "space";
71
+ KeyCodes[KeyCodes["tab"] = 9] = "tab";
72
+ KeyCodes[KeyCodes["tilde"] = 192] = "tilde";
73
+ KeyCodes[KeyCodes["windowsLeft"] = 91] = "windowsLeft";
74
+ KeyCodes[KeyCodes["windowsOpera"] = 219] = "windowsOpera";
75
+ KeyCodes[KeyCodes["windowsRight"] = 92] = "windowsRight";
76
+ })(KeyCodes || (KeyCodes = {}));
77
+ /**
78
+ * String values for use with KeyboardEvent.key
79
+ */
80
+ const keyArrowDown = "ArrowDown";
81
+ const keyArrowLeft = "ArrowLeft";
82
+ const keyArrowRight = "ArrowRight";
83
+ const keyArrowUp = "ArrowUp";
84
+ const keyEnter = "Enter";
85
+ const keyEscape = "Escape";
86
+ const keyHome = "Home";
87
+ const keyEnd = "End";
88
+ const keySpace = " ";
89
+
90
+ export { keySpace as a, keyHome as b, keyEnd as c, keyArrowUp as d, keyArrowDown as e, keyEscape as f, keyArrowLeft as g, keyArrowRight as h, keyEnter as k };
@@ -0,0 +1,13 @@
1
+ import { M as objectKeysInternal, I as enumBugKeys$1 } from './export.js';
2
+
3
+ var internalObjectKeys = objectKeysInternal;
4
+ var enumBugKeys = enumBugKeys$1;
5
+
6
+ // `Object.keys` method
7
+ // https://tc39.es/ecma262/#sec-object.keys
8
+ // eslint-disable-next-line es-x/no-object-keys -- safe
9
+ var objectKeys = Object.keys || function keys(O) {
10
+ return internalObjectKeys(O, enumBugKeys);
11
+ };
12
+
13
+ export { objectKeys as o };
@@ -0,0 +1,3 @@
1
+ import type { ViewTemplate } from '@microsoft/fast-element';
2
+ import type { ElementDefinitionContext } from '@microsoft/fast-foundation';
3
+ export declare const focusTemplateFactory: (context: ElementDefinitionContext) => ViewTemplate | null;
@@ -0,0 +1,22 @@
1
+ export interface FormElement {
2
+ charCount: boolean;
3
+ errorValidationMessage: boolean;
4
+ helperText: string;
5
+ label: string;
6
+ userValid: boolean;
7
+ dirtyValue: boolean;
8
+ }
9
+ export declare function formElements<T extends {
10
+ new (...args: any[]): Record<string, any>;
11
+ }>(constructor: T): {
12
+ new (...args: any[]): {
13
+ [x: string]: any;
14
+ label?: string | undefined;
15
+ helperText?: string | undefined;
16
+ charCount: boolean;
17
+ userValid: boolean;
18
+ "__#6433@#blurred": boolean;
19
+ readonly errorValidationMessage: any;
20
+ validate: () => void;
21
+ };
22
+ } & T;
@@ -1 +1,2 @@
1
1
  export * from './affix';
2
+ export * from './focus';
package/shared/ref.js ADDED
@@ -0,0 +1,41 @@
1
+ import { A as AttachedBehaviorHTMLDirective } from './index.js';
2
+
3
+ /**
4
+ * The runtime behavior for template references.
5
+ * @public
6
+ */
7
+ class RefBehavior {
8
+ /**
9
+ * Creates an instance of RefBehavior.
10
+ * @param target - The element to reference.
11
+ * @param propertyName - The name of the property to assign the reference to.
12
+ */
13
+ constructor(target, propertyName) {
14
+ this.target = target;
15
+ this.propertyName = propertyName;
16
+ }
17
+ /**
18
+ * Bind this behavior to the source.
19
+ * @param source - The source to bind to.
20
+ * @param context - The execution context that the binding is operating within.
21
+ */
22
+ bind(source) {
23
+ source[this.propertyName] = this.target;
24
+ }
25
+ /**
26
+ * Unbinds this behavior from the source.
27
+ * @param source - The source to unbind from.
28
+ */
29
+ /* eslint-disable-next-line @typescript-eslint/no-empty-function */
30
+ unbind() { }
31
+ }
32
+ /**
33
+ * A directive that observes the updates a property with a reference to the element.
34
+ * @param propertyName - The name of the property to assign the reference to.
35
+ * @public
36
+ */
37
+ function ref(propertyName) {
38
+ return new AttachedBehaviorHTMLDirective("fast-ref", RefBehavior, propertyName);
39
+ }
40
+
41
+ export { ref as r };
@@ -0,0 +1,21 @@
1
+ import { j as anObject$1 } from './export.js';
2
+
3
+ var anObject = anObject$1;
4
+
5
+ // `RegExp.prototype.flags` getter implementation
6
+ // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
7
+ var regexpFlags = function () {
8
+ var that = anObject(this);
9
+ var result = '';
10
+ if (that.hasIndices) result += 'd';
11
+ if (that.global) result += 'g';
12
+ if (that.ignoreCase) result += 'i';
13
+ if (that.multiline) result += 'm';
14
+ if (that.dotAll) result += 's';
15
+ if (that.unicode) result += 'u';
16
+ if (that.unicodeSets) result += 'v';
17
+ if (that.sticky) result += 'y';
18
+ return result;
19
+ };
20
+
21
+ export { regexpFlags as r };
@@ -0,0 +1,50 @@
1
+ import { h as html } from './index.js';
2
+ import { r as ref } from './ref.js';
3
+
4
+ /**
5
+ * A mixin class implementing start and end elements.
6
+ * These are generally used to decorate text elements with icons or other visual indicators.
7
+ * @public
8
+ */
9
+ class StartEnd {
10
+ handleStartContentChange() {
11
+ this.startContainer.classList.toggle("start", this.start.assignedNodes().length > 0);
12
+ }
13
+ handleEndContentChange() {
14
+ this.endContainer.classList.toggle("end", this.end.assignedNodes().length > 0);
15
+ }
16
+ }
17
+ /**
18
+ * The template for the end element.
19
+ * For use with {@link StartEnd}
20
+ *
21
+ * @public
22
+ * @deprecated - use endSlotTemplate
23
+ */
24
+ html `
25
+ <span part="end" ${ref("endContainer")}>
26
+ <slot
27
+ name="end"
28
+ ${ref("end")}
29
+ @slotchange="${x => x.handleEndContentChange()}"
30
+ ></slot>
31
+ </span>
32
+ `;
33
+ /**
34
+ * The template for the start element.
35
+ * For use with {@link StartEnd}
36
+ *
37
+ * @public
38
+ * @deprecated - use startSlotTemplate
39
+ */
40
+ html `
41
+ <span part="start" ${ref("startContainer")}>
42
+ <slot
43
+ name="start"
44
+ ${ref("start")}
45
+ @slotchange="${x => x.handleStartContentChange()}"
46
+ ></slot>
47
+ </span>
48
+ `;
49
+
50
+ export { StartEnd as S };