@vonage/vivid 3.0.0-test.0 → 3.0.1

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 (325) hide show
  1. package/README.md +176 -4
  2. package/accordion/index.js +22 -61
  3. package/accordion-item/index.js +16 -123
  4. package/action-group/index.js +5 -0
  5. package/avatar/index.js +11 -0
  6. package/badge/index.js +9 -60
  7. package/banner/index.js +20 -208
  8. package/breadcrumb/index.js +7 -96
  9. package/breadcrumb-item/index.js +15 -48
  10. package/button/index.js +19 -758
  11. package/calendar/index.js +5 -1519
  12. package/calendar-event/index.js +9 -0
  13. package/card/index.js +13 -0
  14. package/checkbox/index.js +16 -0
  15. package/combobox/index.js +35 -0
  16. package/dialog/index.js +24 -0
  17. package/divider/index.js +6 -0
  18. package/elevation/index.js +4 -30
  19. package/fab/index.js +22 -0
  20. package/focus/index.js +4 -2
  21. package/header/index.js +6 -0
  22. package/icon/index.js +8 -32
  23. package/index.js +76 -25
  24. package/layout/index.js +4 -52
  25. package/lib/accordion/accordion.d.ts +3 -7
  26. package/lib/accordion/accordion.template.d.ts +1 -2
  27. package/lib/accordion/definition.d.ts +1 -0
  28. package/lib/accordion/index.d.ts +1 -2
  29. package/lib/accordion-item/accordion-item.d.ts +4 -8
  30. package/lib/accordion-item/accordion-item.template.d.ts +4 -4
  31. package/lib/accordion-item/definition.d.ts +1 -0
  32. package/lib/accordion-item/index.d.ts +1 -3
  33. package/lib/action-group/action-group.d.ts +10 -0
  34. package/lib/{sidenav-item/sidenav-item.template.d.ts → action-group/action-group.template.d.ts} +2 -2
  35. package/lib/action-group/definition.d.ts +1 -0
  36. package/lib/action-group/index.d.ts +1 -0
  37. package/lib/avatar/avatar.d.ts +15 -0
  38. package/lib/avatar/avatar.template.d.ts +4 -0
  39. package/lib/avatar/definition.d.ts +1 -0
  40. package/lib/avatar/index.d.ts +1 -0
  41. package/lib/badge/badge.d.ts +4 -6
  42. package/lib/badge/definition.d.ts +3 -0
  43. package/lib/badge/index.d.ts +1 -3
  44. package/lib/banner/banner.d.ts +1 -1
  45. package/lib/banner/banner.template.d.ts +0 -2
  46. package/lib/banner/definition.d.ts +1 -0
  47. package/lib/banner/index.d.ts +1 -2
  48. package/lib/breadcrumb/breadcrumb.template.d.ts +4 -0
  49. package/lib/breadcrumb/definition.d.ts +1 -0
  50. package/lib/breadcrumb/index.d.ts +1 -2
  51. package/lib/breadcrumb-item/breadcrumb-item.d.ts +1 -1
  52. package/lib/breadcrumb-item/definition.d.ts +1 -0
  53. package/lib/breadcrumb-item/index.d.ts +1 -3
  54. package/lib/button/button.d.ts +4 -3
  55. package/lib/button/definition.d.ts +1 -0
  56. package/lib/button/index.d.ts +1 -21
  57. package/lib/calendar/calendar.d.ts +3 -1
  58. package/lib/calendar/definition.d.ts +1 -0
  59. package/lib/calendar/index.d.ts +1 -3
  60. package/lib/calendar-event/calendar-event.d.ts +14 -0
  61. package/lib/calendar-event/calendar-event.template.d.ts +4 -0
  62. package/lib/calendar-event/definition.d.ts +1 -0
  63. package/lib/calendar-event/index.d.ts +1 -0
  64. package/lib/card/card.d.ts +10 -0
  65. package/lib/{text/text.template.d.ts → card/card.template.d.ts} +2 -2
  66. package/lib/card/definition.d.ts +1 -0
  67. package/lib/card/index.d.ts +1 -0
  68. package/lib/checkbox/checkbox.d.ts +5 -0
  69. package/lib/checkbox/checkbox.template.d.ts +4 -0
  70. package/lib/checkbox/definition.d.ts +1 -0
  71. package/lib/checkbox/index.d.ts +1 -0
  72. package/lib/combobox/combobox.d.ts +14 -0
  73. package/lib/combobox/combobox.template.d.ts +4 -0
  74. package/lib/combobox/definition.d.ts +3 -0
  75. package/lib/combobox/index.d.ts +1 -0
  76. package/lib/components.d.ts +44 -16
  77. package/lib/dialog/definition.d.ts +1 -0
  78. package/lib/dialog/dialog.d.ts +23 -0
  79. package/lib/dialog/dialog.template.d.ts +4 -0
  80. package/lib/dialog/index.d.ts +1 -0
  81. package/lib/divider/definition.d.ts +1 -0
  82. package/lib/divider/divider.d.ts +3 -0
  83. package/lib/divider/divider.template.d.ts +4 -0
  84. package/lib/divider/index.d.ts +1 -0
  85. package/lib/elevation/definition.d.ts +1 -0
  86. package/lib/elevation/elevation.d.ts +1 -0
  87. package/lib/elevation/index.d.ts +1 -2
  88. package/lib/enums.d.ts +20 -6
  89. package/lib/fab/definition.d.ts +3 -0
  90. package/lib/fab/fab.d.ts +13 -0
  91. package/lib/fab/fab.template.d.ts +4 -0
  92. package/lib/fab/index.d.ts +1 -0
  93. package/lib/focus/definition.d.ts +3 -0
  94. package/lib/focus/index.d.ts +1 -2
  95. package/lib/{sidenav-item/index.d.ts → header/definition.d.ts} +2 -2
  96. package/lib/header/header.d.ts +5 -0
  97. package/lib/header/header.template.d.ts +4 -0
  98. package/lib/header/index.d.ts +1 -0
  99. package/lib/icon/definition.d.ts +3 -0
  100. package/lib/icon/icon.d.ts +5 -6
  101. package/lib/icon/index.d.ts +1 -2
  102. package/lib/layout/definition.d.ts +3 -0
  103. package/lib/layout/index.d.ts +1 -2
  104. package/lib/layout/layout.d.ts +4 -4
  105. package/lib/listbox/definition.d.ts +3 -0
  106. package/lib/listbox/index.d.ts +1 -0
  107. package/lib/listbox/listbox.d.ts +6 -0
  108. package/lib/listbox/listbox.template.d.ts +4 -0
  109. package/lib/menu/definition.d.ts +11 -0
  110. package/lib/menu/index.d.ts +1 -0
  111. package/lib/menu/menu.d.ts +10 -0
  112. package/lib/menu/menu.template.d.ts +3 -0
  113. package/lib/menu-item/definition.d.ts +3 -0
  114. package/lib/menu-item/index.d.ts +1 -0
  115. package/lib/menu-item/menu-item.d.ts +8 -0
  116. package/lib/menu-item/menu-item.template.d.ts +5 -0
  117. package/lib/nav/definition.d.ts +3 -0
  118. package/lib/nav/index.d.ts +1 -0
  119. package/lib/nav/nav.d.ts +3 -0
  120. package/lib/nav/nav.template.d.ts +4 -0
  121. package/lib/nav-disclosure/definition.d.ts +3 -0
  122. package/lib/nav-disclosure/index.d.ts +1 -0
  123. package/lib/nav-disclosure/nav-disclosure.d.ts +10 -0
  124. package/lib/nav-disclosure/nav-disclosure.template.d.ts +4 -0
  125. package/lib/nav-item/definition.d.ts +3 -0
  126. package/lib/nav-item/index.d.ts +1 -0
  127. package/lib/{sidenav-item/sidenav-item.d.ts → nav-item/nav-item.d.ts} +2 -2
  128. package/lib/nav-item/nav-item.template.d.ts +4 -0
  129. package/lib/note/definition.d.ts +3 -0
  130. package/lib/note/index.d.ts +1 -0
  131. package/lib/note/note.d.ts +10 -0
  132. package/lib/note/note.template.d.ts +4 -0
  133. package/lib/number-field/definition.d.ts +4 -0
  134. package/lib/number-field/index.d.ts +1 -0
  135. package/lib/number-field/number-field.d.ts +14 -0
  136. package/lib/number-field/number-field.template.d.ts +4 -0
  137. package/lib/option/definition.d.ts +3 -0
  138. package/lib/option/index.d.ts +1 -0
  139. package/lib/option/option.d.ts +9 -0
  140. package/lib/option/option.template.d.ts +4 -0
  141. package/lib/popup/definition.d.ts +4 -0
  142. package/lib/popup/index.d.ts +1 -4
  143. package/lib/popup/popup.d.ts +8 -4
  144. package/lib/progress/definition.d.ts +3 -0
  145. package/lib/progress/index.d.ts +1 -2
  146. package/lib/progress/progress.d.ts +1 -1
  147. package/lib/progress-ring/definition.d.ts +3 -0
  148. package/lib/progress-ring/index.d.ts +1 -2
  149. package/lib/progress-ring/progress-ring.d.ts +2 -1
  150. package/lib/radio/definition.d.ts +3 -0
  151. package/lib/radio/index.d.ts +1 -0
  152. package/lib/radio/radio.d.ts +4 -0
  153. package/lib/radio/radio.template.d.ts +4 -0
  154. package/lib/radio-group/definition.d.ts +11 -0
  155. package/lib/radio-group/index.d.ts +1 -0
  156. package/lib/radio-group/radio-group.d.ts +4 -0
  157. package/lib/radio-group/radio-group.template.d.ts +4 -0
  158. package/lib/select/definition.d.ts +3 -0
  159. package/lib/select/index.d.ts +1 -0
  160. package/lib/select/select.d.ts +17 -0
  161. package/lib/select/select.template.d.ts +4 -0
  162. package/lib/side-drawer/definition.d.ts +3 -0
  163. package/lib/side-drawer/index.d.ts +1 -2
  164. package/lib/side-drawer/side-drawer.d.ts +3 -2
  165. package/lib/slider/definition.d.ts +3 -0
  166. package/lib/slider/index.d.ts +1 -0
  167. package/lib/slider/slider.d.ts +4 -0
  168. package/lib/slider/slider.template.d.ts +4 -0
  169. package/lib/switch/definition.d.ts +3 -0
  170. package/lib/switch/index.d.ts +1 -0
  171. package/lib/switch/switch.d.ts +7 -0
  172. package/lib/switch/switch.template.d.ts +4 -0
  173. package/lib/tab/definition.d.ts +3 -0
  174. package/lib/tab/index.d.ts +1 -0
  175. package/lib/tab/tab.d.ts +9 -0
  176. package/lib/tab/tab.template.d.ts +3 -0
  177. package/lib/tab-panel/definition.d.ts +3 -0
  178. package/lib/tab-panel/index.d.ts +1 -0
  179. package/lib/tab-panel/tab-panel.d.ts +3 -0
  180. package/lib/tab-panel/tab-panel.template.d.ts +2 -0
  181. package/lib/tabs/definition.d.ts +3 -0
  182. package/lib/tabs/index.d.ts +1 -0
  183. package/lib/tabs/tabs.d.ts +10 -0
  184. package/lib/tabs/tabs.template.d.ts +2 -0
  185. package/lib/text-anchor/definition.d.ts +3 -0
  186. package/lib/text-anchor/index.d.ts +1 -2
  187. package/lib/text-anchor/text-anchor.d.ts +1 -1
  188. package/lib/text-area/definition.d.ts +3 -0
  189. package/lib/text-area/index.d.ts +1 -0
  190. package/lib/text-area/text-area.d.ts +9 -0
  191. package/lib/text-area/text-area.template.d.ts +4 -0
  192. package/lib/text-field/definition.d.ts +3 -0
  193. package/lib/text-field/index.d.ts +1 -0
  194. package/lib/text-field/text-field.d.ts +14 -0
  195. package/lib/text-field/text-field.template.d.ts +4 -0
  196. package/lib/tooltip/definition.d.ts +3 -0
  197. package/lib/tooltip/index.d.ts +1 -3
  198. package/lib/tooltip/tooltip.d.ts +7 -7
  199. package/listbox/index.js +27 -0
  200. package/menu/index.js +30 -0
  201. package/menu-item/index.js +20 -0
  202. package/nav/index.js +4 -0
  203. package/nav-disclosure/index.js +17 -0
  204. package/nav-item/index.js +22 -0
  205. package/note/index.js +15 -0
  206. package/number-field/index.js +459 -0
  207. package/option/index.js +21 -0
  208. package/package.json +29 -19
  209. package/popup/index.js +21 -2061
  210. package/progress/index.js +6 -97
  211. package/progress-ring/index.js +6 -75
  212. package/radio/index.js +12 -0
  213. package/radio-group/index.js +11 -0
  214. package/select/index.js +34 -0
  215. package/shared/affix.js +2 -8
  216. package/shared/anchor.js +10 -2
  217. package/shared/apply-mixins.js +5 -4
  218. package/shared/aria-global.js +2 -86
  219. package/shared/aria.js +9 -0
  220. package/shared/base-progress.js +5 -0
  221. package/shared/breadcrumb-item.js +1 -1
  222. package/shared/button.js +200 -0
  223. package/shared/calendar-event.js +19 -0
  224. package/shared/definition.js +225 -0
  225. package/shared/definition10.js +99 -0
  226. package/shared/definition11.js +48 -0
  227. package/shared/definition12.js +1523 -0
  228. package/shared/definition13.js +111 -0
  229. package/shared/definition14.js +114 -0
  230. package/shared/definition15.js +32 -0
  231. package/shared/definition16.js +172 -0
  232. package/shared/definition17.js +727 -0
  233. package/shared/definition18.js +1842 -0
  234. package/shared/definition19.js +261 -0
  235. package/shared/definition2.js +150 -0
  236. package/shared/definition20.js +221 -0
  237. package/shared/definition21.js +78 -0
  238. package/shared/definition22.js +87 -0
  239. package/shared/definition23.js +58 -0
  240. package/shared/definition24.js +44 -0
  241. package/shared/definition25.js +58 -0
  242. package/shared/definition26.js +348 -0
  243. package/shared/definition27.js +363 -0
  244. package/shared/definition28.js +21 -0
  245. package/shared/definition29.js +75 -0
  246. package/shared/definition3.js +29 -0
  247. package/shared/definition30.js +31 -0
  248. package/shared/definition31.js +49 -0
  249. package/shared/definition32.js +94 -0
  250. package/shared/definition33.js +77 -0
  251. package/shared/definition34.js +45 -0
  252. package/shared/definition35.js +435 -0
  253. package/shared/definition36.js +634 -0
  254. package/shared/definition37.js +86 -0
  255. package/shared/definition38.js +592 -0
  256. package/shared/definition39.js +147 -0
  257. package/shared/definition4.js +19 -0
  258. package/shared/definition40.js +67 -0
  259. package/shared/definition41.js +32 -0
  260. package/shared/definition42.js +440 -0
  261. package/shared/definition43.js +282 -0
  262. package/shared/definition44.js +119 -0
  263. package/shared/definition45.js +77 -0
  264. package/shared/definition5.js +38 -0
  265. package/shared/definition6.js +60 -0
  266. package/shared/definition7.js +45 -0
  267. package/shared/definition8.js +113 -0
  268. package/shared/definition9.js +107 -0
  269. package/shared/design-system/index.d.ts +1 -1
  270. package/shared/dialog-polyfill.esm.js +858 -0
  271. package/shared/direction.js +20 -0
  272. package/shared/dom.js +8 -0
  273. package/shared/enums.js +70 -0
  274. package/shared/es.object.assign.js +2 -2
  275. package/shared/es.regexp.to-string.js +59 -0
  276. package/shared/focus.js +5 -0
  277. package/shared/focus2.js +11 -0
  278. package/shared/form-associated.js +466 -0
  279. package/shared/form-elements.js +127 -0
  280. package/shared/icon.js +538 -572
  281. package/shared/index.js +1664 -83
  282. package/shared/key-codes.js +97 -0
  283. package/shared/listbox.js +995 -0
  284. package/shared/numbers.js +34 -0
  285. package/shared/patterns/affix.d.ts +1 -1
  286. package/shared/patterns/focus.d.ts +3 -0
  287. package/shared/patterns/form-elements/form-elements.d.ts +43 -0
  288. package/shared/patterns/form-elements/index.d.ts +1 -0
  289. package/shared/patterns/index.d.ts +2 -0
  290. package/shared/radio.js +127 -0
  291. package/shared/ref.js +41 -0
  292. package/shared/select.options.js +10 -0
  293. package/shared/start-end.js +50 -0
  294. package/shared/string-trim.js +40 -0
  295. package/shared/strings.js +9 -0
  296. package/shared/text-anchor.js +2 -13
  297. package/shared/text-anchor.template.js +6 -5
  298. package/shared/text-field.js +3 -0
  299. package/shared/text-field2.js +225 -0
  300. package/shared/to-string.js +51 -0
  301. package/side-drawer/index.js +5 -80
  302. package/slider/index.js +17 -0
  303. package/styles/core/all.css +83 -0
  304. package/styles/core/theme.css +11 -0
  305. package/styles/core/typography.css +77 -0
  306. package/styles/tokens/theme-dark.css +228 -0
  307. package/styles/tokens/theme-light.css +228 -0
  308. package/switch/index.js +18 -0
  309. package/tab/index.js +16 -0
  310. package/tab-panel/index.js +4 -0
  311. package/tabs/index.js +24 -0
  312. package/text-anchor/index.js +11 -5
  313. package/text-area/index.js +23 -0
  314. package/text-field/index.js +24 -0
  315. package/tooltip/index.js +18 -57
  316. package/lib/text/index.d.ts +0 -2
  317. package/lib/text/text.d.ts +0 -10
  318. package/shared/index2.js +0 -21
  319. package/shared/style-inject.es.js +0 -28
  320. package/shared/web.dom-collections.iterator.js +0 -1479
  321. package/sidenav-item/index.js +0 -38
  322. package/styles/fonts/spezia.css +0 -23
  323. package/styles/themes/dark.css +0 -205
  324. package/styles/themes/light.css +0 -205
  325. package/text/index.js +0 -45
@@ -0,0 +1,19 @@
1
+ import { F as FoundationElement, _ as __decorate, a as attr, b as __metadata, n as nullableNumberConverter } from './index.js';
2
+
3
+ class CalendarEvent extends FoundationElement {}
4
+ __decorate([attr, __metadata("design:type", String)], CalendarEvent.prototype, "heading", void 0);
5
+ __decorate([attr, __metadata("design:type", String)], CalendarEvent.prototype, "description", void 0);
6
+ __decorate([attr, __metadata("design:type", String)], CalendarEvent.prototype, "connotation", void 0);
7
+ __decorate([attr, __metadata("design:type", String)], CalendarEvent.prototype, "appearance", void 0);
8
+ __decorate([attr({
9
+ converter: nullableNumberConverter,
10
+ attribute: 'overlap-count'
11
+ }), __metadata("design:type", Number)], CalendarEvent.prototype, "overlapCount", void 0);
12
+ __decorate([attr({
13
+ converter: nullableNumberConverter
14
+ }), __metadata("design:type", Number)], CalendarEvent.prototype, "start", void 0);
15
+ __decorate([attr({
16
+ converter: nullableNumberConverter
17
+ }), __metadata("design:type", Number)], CalendarEvent.prototype, "duration", void 0);
18
+
19
+ export { CalendarEvent as C };
@@ -0,0 +1,225 @@
1
+ import { F as FoundationElement, _ as __decorate, a as attr, o as observable, h as html, r as registerFactory } from './index.js';
2
+ import { A as AccordionItem, a as accordionItemRegistries } from './definition2.js';
3
+ import { k as keyEnd, a as keyHome, b as keyArrowDown, c as keyArrowUp } from './key-codes.js';
4
+ import { w as wrapInBounds } from './numbers.js';
5
+ import { s as slotted, e as elements } from './slotted.js';
6
+ import { c as classNames } from './class-names.js';
7
+
8
+ /**
9
+ * Expand mode for {@link Accordion}
10
+ * @public
11
+ */
12
+ const AccordionExpandMode = {
13
+ /**
14
+ * Designates only a single {@link @microsoft/fast-foundation#(AccordionItem:class) } can be open a time.
15
+ */
16
+ single: "single",
17
+ /**
18
+ * Designates multiple {@link @microsoft/fast-foundation#(AccordionItem:class) | AccordionItems} can be open simultaneously.
19
+ */
20
+ multi: "multi",
21
+ };
22
+ /**
23
+ * An Accordion Custom HTML Element
24
+ * Implements {@link https://www.w3.org/TR/wai-aria-practices-1.1/#accordion | ARIA Accordion}.
25
+ *
26
+ * @fires change - Fires a custom 'change' event when the active item changes
27
+ * @csspart item - The slot for the accordion items
28
+ * @public
29
+ *
30
+ * @remarks
31
+ * Designed to be used with {@link @microsoft/fast-foundation#accordionTemplate} and {@link @microsoft/fast-foundation#(AccordionItem:class)}.
32
+ */
33
+ class Accordion$1 extends FoundationElement {
34
+ constructor() {
35
+ super(...arguments);
36
+ /**
37
+ * Controls the expand mode of the Accordion, either allowing
38
+ * single or multiple item expansion.
39
+ * @public
40
+ *
41
+ * @remarks
42
+ * HTML attribute: expand-mode
43
+ */
44
+ this.expandmode = AccordionExpandMode.multi;
45
+ this.activeItemIndex = 0;
46
+ this.change = () => {
47
+ this.$emit("change", this.activeid);
48
+ };
49
+ this.setItems = () => {
50
+ var _a;
51
+ if (this.accordionItems.length === 0) {
52
+ return;
53
+ }
54
+ this.accordionIds = this.getItemIds();
55
+ this.accordionItems.forEach((item, index) => {
56
+ if (item instanceof AccordionItem) {
57
+ item.addEventListener("change", this.activeItemChange);
58
+ if (this.isSingleExpandMode()) {
59
+ this.activeItemIndex !== index
60
+ ? (item.expanded = false)
61
+ : (item.expanded = true);
62
+ }
63
+ }
64
+ const itemId = this.accordionIds[index];
65
+ item.setAttribute("id", typeof itemId !== "string" ? `accordion-${index + 1}` : itemId);
66
+ this.activeid = this.accordionIds[this.activeItemIndex];
67
+ item.addEventListener("keydown", this.handleItemKeyDown);
68
+ item.addEventListener("focus", this.handleItemFocus);
69
+ });
70
+ if (this.isSingleExpandMode()) {
71
+ const expandedItem = (_a = this.findExpandedItem()) !== null && _a !== void 0 ? _a : this.accordionItems[0];
72
+ expandedItem.setAttribute("aria-disabled", "true");
73
+ }
74
+ };
75
+ this.removeItemListeners = (oldValue) => {
76
+ oldValue.forEach((item, index) => {
77
+ item.removeEventListener("change", this.activeItemChange);
78
+ item.removeEventListener("keydown", this.handleItemKeyDown);
79
+ item.removeEventListener("focus", this.handleItemFocus);
80
+ });
81
+ };
82
+ this.activeItemChange = (event) => {
83
+ if (event.defaultPrevented || event.target !== event.currentTarget) {
84
+ return;
85
+ }
86
+ event.preventDefault();
87
+ const selectedItem = event.target;
88
+ this.activeid = selectedItem.getAttribute("id");
89
+ if (this.isSingleExpandMode()) {
90
+ this.resetItems();
91
+ selectedItem.expanded = true;
92
+ selectedItem.setAttribute("aria-disabled", "true");
93
+ this.accordionItems.forEach((item) => {
94
+ if (!item.hasAttribute("disabled") && item.id !== this.activeid) {
95
+ item.removeAttribute("aria-disabled");
96
+ }
97
+ });
98
+ }
99
+ this.activeItemIndex = Array.from(this.accordionItems).indexOf(selectedItem);
100
+ this.change();
101
+ };
102
+ this.handleItemKeyDown = (event) => {
103
+ // only handle the keydown if the event target is the accordion item
104
+ // prevents arrow keys from moving focus to accordion headers when focus is on accordion item panel content
105
+ if (event.target !== event.currentTarget) {
106
+ return;
107
+ }
108
+ this.accordionIds = this.getItemIds();
109
+ switch (event.key) {
110
+ case keyArrowUp:
111
+ event.preventDefault();
112
+ this.adjust(-1);
113
+ break;
114
+ case keyArrowDown:
115
+ event.preventDefault();
116
+ this.adjust(1);
117
+ break;
118
+ case keyHome:
119
+ this.activeItemIndex = 0;
120
+ this.focusItem();
121
+ break;
122
+ case keyEnd:
123
+ this.activeItemIndex = this.accordionItems.length - 1;
124
+ this.focusItem();
125
+ break;
126
+ }
127
+ };
128
+ this.handleItemFocus = (event) => {
129
+ // update the active item index if the focus moves to an accordion item via a different method other than the up and down arrow key actions
130
+ // only do so if the focus is actually on the accordion item and not on any of its children
131
+ if (event.target === event.currentTarget) {
132
+ const focusedItem = event.target;
133
+ const focusedIndex = (this.activeItemIndex = Array.from(this.accordionItems).indexOf(focusedItem));
134
+ if (this.activeItemIndex !== focusedIndex && focusedIndex !== -1) {
135
+ this.activeItemIndex = focusedIndex;
136
+ this.activeid = this.accordionIds[this.activeItemIndex];
137
+ }
138
+ }
139
+ };
140
+ }
141
+ /**
142
+ * @internal
143
+ */
144
+ accordionItemsChanged(oldValue, newValue) {
145
+ if (this.$fastController.isConnected) {
146
+ this.removeItemListeners(oldValue);
147
+ this.setItems();
148
+ }
149
+ }
150
+ findExpandedItem() {
151
+ for (let item = 0; item < this.accordionItems.length; item++) {
152
+ if (this.accordionItems[item].getAttribute("expanded") === "true") {
153
+ return this.accordionItems[item];
154
+ }
155
+ }
156
+ return null;
157
+ }
158
+ resetItems() {
159
+ this.accordionItems.forEach((item, index) => {
160
+ item.expanded = false;
161
+ });
162
+ }
163
+ getItemIds() {
164
+ return this.accordionItems.map((accordionItem) => {
165
+ return accordionItem.getAttribute("id");
166
+ });
167
+ }
168
+ isSingleExpandMode() {
169
+ return this.expandmode === AccordionExpandMode.single;
170
+ }
171
+ adjust(adjustment) {
172
+ this.activeItemIndex = wrapInBounds(0, this.accordionItems.length - 1, this.activeItemIndex + adjustment);
173
+ this.focusItem();
174
+ }
175
+ focusItem() {
176
+ const element = this.accordionItems[this.activeItemIndex];
177
+ if (element instanceof AccordionItem) {
178
+ element.expandbutton.focus();
179
+ }
180
+ }
181
+ }
182
+ __decorate([
183
+ attr({ attribute: "expand-mode" })
184
+ ], Accordion$1.prototype, "expandmode", void 0);
185
+ __decorate([
186
+ observable
187
+ ], Accordion$1.prototype, "accordionItems", void 0);
188
+
189
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Mon, 30 Jan 2023 11:28:31 GMT\n */\n.base {\n display: flex;\n box-sizing: border-box;\n flex-direction: column;\n}\n\n::slotted(:not(:only-of-type)) {\n border-bottom: 1px solid var(--vvd-color-neutral-200);\n}";
190
+
191
+ class Accordion extends Accordion$1 {
192
+ constructor() {
193
+ super(...arguments);
194
+ this.expandmode = AccordionExpandMode.single;
195
+ }
196
+ closeAll() {
197
+ if (this.expandmode === AccordionExpandMode.multi) {
198
+ this.accordionItems.forEach(item => {
199
+ item.expanded = false;
200
+ });
201
+ }
202
+ }
203
+ }
204
+
205
+ let _2 = t => t,
206
+ _t;
207
+ const getClasses = _ => classNames('base');
208
+ const AccordionTemplate = () => html(_t || (_t = _2`
209
+ <div class="${0}">
210
+ <slot ${0}></slot>
211
+ </div>
212
+ `), getClasses, slotted({
213
+ property: 'accordionItems',
214
+ filter: elements()
215
+ }));
216
+
217
+ const accordionDefinition = Accordion.compose({
218
+ baseName: 'accordion',
219
+ template: AccordionTemplate,
220
+ styles: css_248z
221
+ });
222
+ const accordionRegistries = [accordionDefinition(), ...accordionItemRegistries];
223
+ const registerAccordion = registerFactory(accordionRegistries);
224
+
225
+ export { accordionDefinition as a, accordionRegistries as b, registerAccordion as r };
@@ -0,0 +1,99 @@
1
+ import { F as FoundationElement, _ as __decorate, o as observable, h as html, r as registerFactory } from './index.js';
2
+ import { s as slotted, e as elements } from './slotted.js';
3
+ import { B as BreadcrumbItem } from './breadcrumb-item.js';
4
+
5
+ /**
6
+ * A Breadcrumb Custom HTML Element.
7
+ * @slot - The default slot for the breadcrumb items
8
+ * @csspart list - The element wrapping the slotted items
9
+ *
10
+ * @public
11
+ */
12
+ class Breadcrumb$1 extends FoundationElement {
13
+ slottedBreadcrumbItemsChanged() {
14
+ if (this.$fastController.isConnected) {
15
+ if (this.slottedBreadcrumbItems === undefined ||
16
+ this.slottedBreadcrumbItems.length === 0) {
17
+ return;
18
+ }
19
+ const lastNode = this.slottedBreadcrumbItems[this.slottedBreadcrumbItems.length - 1];
20
+ this.slottedBreadcrumbItems.forEach((item) => {
21
+ const itemIsLastNode = item === lastNode;
22
+ this.setItemSeparator(item, itemIsLastNode);
23
+ this.setAriaCurrent(item, itemIsLastNode);
24
+ });
25
+ }
26
+ }
27
+ setItemSeparator(item, isLastNode) {
28
+ if (item instanceof BreadcrumbItem) {
29
+ item.separator = !isLastNode;
30
+ }
31
+ }
32
+ /**
33
+ * Finds href on childnodes in the light DOM or shadow DOM.
34
+ * We look in the shadow DOM because we insert an anchor when breadcrumb-item has an href.
35
+ */
36
+ findChildWithHref(node) {
37
+ var _a, _b;
38
+ if (node.childElementCount > 0) {
39
+ return node.querySelector("a[href]");
40
+ }
41
+ else if ((_a = node.shadowRoot) === null || _a === void 0 ? void 0 : _a.childElementCount) {
42
+ return (_b = node.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector("a[href]");
43
+ }
44
+ else
45
+ return null;
46
+ }
47
+ /**
48
+ * Sets ARIA Current for the current node
49
+ * If child node with an anchor tag and with href is found then set aria-current to correct value for the child node,
50
+ * otherwise apply aria-current to the host element, with an href
51
+ */
52
+ setAriaCurrent(item, isLastNode) {
53
+ const childNodeWithHref = this.findChildWithHref(item);
54
+ if (childNodeWithHref === null &&
55
+ item.hasAttribute("href") &&
56
+ item instanceof BreadcrumbItem) {
57
+ isLastNode
58
+ ? item.setAttribute("aria-current", "page")
59
+ : item.removeAttribute("aria-current");
60
+ }
61
+ else if (childNodeWithHref !== null) {
62
+ isLastNode
63
+ ? childNodeWithHref.setAttribute("aria-current", "page")
64
+ : childNodeWithHref.removeAttribute("aria-current");
65
+ }
66
+ }
67
+ }
68
+ __decorate([
69
+ observable
70
+ ], Breadcrumb$1.prototype, "slottedBreadcrumbItems", void 0);
71
+
72
+ let _ = t => t,
73
+ _t;
74
+ const breadcrumbTemplate = () => html(_t || (_t = _`
75
+ <nav aria-label="breadcrumbs" class="base">
76
+ <div role="list" class="list">
77
+ <slot
78
+ ${0}
79
+ ></slot>
80
+ </div>
81
+ </nav>
82
+ `), slotted({
83
+ property: 'slottedBreadcrumbItems',
84
+ filter: elements()
85
+ }));
86
+
87
+ var css_248z = ".list {\n display: flex;\n}";
88
+
89
+ class Breadcrumb extends Breadcrumb$1 {}
90
+
91
+ const breadcrumbDefinition = Breadcrumb.compose({
92
+ baseName: 'breadcrumb',
93
+ template: breadcrumbTemplate,
94
+ styles: css_248z
95
+ });
96
+ const breadcrumbRegistries = [breadcrumbDefinition()];
97
+ const registerBreadcrumb = registerFactory(breadcrumbRegistries);
98
+
99
+ export { breadcrumbRegistries as a, breadcrumbDefinition as b, registerBreadcrumb as r };
@@ -0,0 +1,48 @@
1
+ import { _ as __decorate, 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 { B as BreadcrumbItem$1 } from './breadcrumb-item.js';
5
+ import { t as textAnchorTemplate } from './text-anchor.template.js';
6
+ import { I as Icon } from './icon.js';
7
+ import { w as when } from './when.js';
8
+ import { c as classNames } from './class-names.js';
9
+
10
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Mon, 30 Jan 2023 11:28:31 GMT\n */\n.base {\n display: flex;\n align-items: center;\n color: var(--vvd-color-canvas-text);\n font: var(--vvd-typography-base);\n}\n.base .separator {\n margin: 0 16px;\n color: var(--vvd-color-neutral-600);\n font-size: 12px;\n}\n\n.control {\n position: relative;\n font: inherit;\n}\n@supports selector(:focus-visible) {\n .control:focus {\n outline: none;\n }\n}\n.control:any-link {\n color: var(--vvd-color-cta-600);\n text-decoration: none;\n}\n.control:any-link:hover {\n text-decoration: underline;\n}\n\n.focus-indicator {\n --focus-inset: -4px -8px;\n --focus-stroke-gap-color: transparent;\n border-radius: 6px;\n}\n.control:not(:focus-visible) > .focus-indicator {\n display: none;\n}";
11
+
12
+ class BreadcrumbItem extends BreadcrumbItem$1 {
13
+ constructor() {
14
+ super();
15
+ }
16
+ }
17
+ __decorate([attr, __metadata("design:type", String)], BreadcrumbItem.prototype, "text", void 0);
18
+
19
+ let _2 = t => t,
20
+ _t,
21
+ _t2,
22
+ _t3,
23
+ _t4;
24
+ const getClasses = _ => classNames('base');
25
+ const BreadcrumbItemTemplate = (context, definition) => {
26
+ const iconTag = context.tagFor(Icon);
27
+ return html(_t || (_t = _2`
28
+ <div role="listitem" class="${0}">
29
+ ${0}
30
+
31
+ ${0}
32
+
33
+ ${0}
34
+ </div>`), getClasses, when(x => x.text && !x.href, html(_t2 || (_t2 = _2`${0}`), x => x.text)), when(x => x.text && x.href && x.href.length > 0, html(_t3 || (_t3 = _2`${0}`), textAnchorTemplate(context))), when(x => x.separator, html(_t4 || (_t4 = _2`<${0} class="separator" name="chevron-right-solid"></${0}>`), iconTag, iconTag)));
35
+ };
36
+
37
+ const breadcrumbItemDefinition = BreadcrumbItem.compose({
38
+ baseName: 'breadcrumb-item',
39
+ template: BreadcrumbItemTemplate,
40
+ styles: css_248z,
41
+ shadowOptions: {
42
+ delegatesFocus: true
43
+ }
44
+ });
45
+ const breadcrumbItemRegistries = [breadcrumbItemDefinition(), ...iconRegistries, ...focusRegistries];
46
+ const registerBreadcrumbItem = registerFactory(breadcrumbItemRegistries);
47
+
48
+ export { breadcrumbItemRegistries as a, breadcrumbItemDefinition as b, registerBreadcrumbItem as r };