@vonage/vivid 3.26.0 → 3.28.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/README.md +4 -1
  2. package/accordion/index.js +0 -2
  3. package/accordion-item/index.js +0 -2
  4. package/alert/index.js +0 -2
  5. package/avatar/index.js +0 -2
  6. package/badge/index.js +0 -2
  7. package/banner/index.js +0 -2
  8. package/breadcrumb-item/index.js +0 -2
  9. package/button/index.js +0 -2
  10. package/calendar/index.js +0 -1
  11. package/calendar-event/index.js +0 -2
  12. package/card/index.js +0 -2
  13. package/checkbox/index.js +0 -2
  14. package/combobox/index.js +0 -3
  15. package/custom-elements.json +440 -51
  16. package/data-grid/index.js +1 -5
  17. package/dialog/index.js +0 -2
  18. package/empty-state/index.js +0 -2
  19. package/fab/index.js +0 -2
  20. package/file-picker/index.js +24 -0
  21. package/header/index.js +1 -1
  22. package/icon/index.js +0 -2
  23. package/index.d.ts +3 -3
  24. package/index.js +31 -35
  25. package/layout/index.js +1 -1
  26. package/lib/accordion/accordion.d.ts +5 -5
  27. package/lib/accordion/accordion.template.d.ts +3 -3
  28. package/lib/accordion/definition.d.ts +2 -2
  29. package/lib/accordion/index.d.ts +1 -1
  30. package/lib/accordion-item/accordion-item.d.ts +12 -12
  31. package/lib/accordion-item/accordion-item.template.d.ts +4 -4
  32. package/lib/accordion-item/definition.d.ts +1 -1
  33. package/lib/accordion-item/index.d.ts +1 -1
  34. package/lib/action-group/action-group.d.ts +11 -11
  35. package/lib/action-group/action-group.template.d.ts +4 -4
  36. package/lib/action-group/definition.d.ts +2 -2
  37. package/lib/action-group/index.d.ts +1 -1
  38. package/lib/alert/alert.d.ts +22 -22
  39. package/lib/alert/alert.template.d.ts +4 -4
  40. package/lib/alert/definition.d.ts +2 -2
  41. package/lib/alert/index.d.ts +1 -1
  42. package/lib/avatar/avatar.d.ts +14 -14
  43. package/lib/avatar/avatar.template.d.ts +4 -4
  44. package/lib/avatar/definition.d.ts +2 -2
  45. package/lib/avatar/index.d.ts +1 -1
  46. package/lib/badge/badge.d.ts +14 -14
  47. package/lib/badge/badge.template.d.ts +4 -4
  48. package/lib/badge/definition.d.ts +4 -4
  49. package/lib/badge/index.d.ts +1 -1
  50. package/lib/banner/banner.d.ts +20 -20
  51. package/lib/banner/banner.template.d.ts +4 -4
  52. package/lib/banner/definition.d.ts +2 -2
  53. package/lib/banner/index.d.ts +1 -1
  54. package/lib/breadcrumb/breadcrumb.d.ts +3 -3
  55. package/lib/breadcrumb/breadcrumb.template.d.ts +4 -4
  56. package/lib/breadcrumb/definition.d.ts +1 -1
  57. package/lib/breadcrumb/index.d.ts +1 -1
  58. package/lib/breadcrumb-item/breadcrumb-item.d.ts +5 -5
  59. package/lib/breadcrumb-item/breadcrumb-item.template.d.ts +4 -4
  60. package/lib/breadcrumb-item/definition.d.ts +1 -1
  61. package/lib/breadcrumb-item/index.d.ts +1 -1
  62. package/lib/button/button.d.ts +18 -18
  63. package/lib/button/button.template.d.ts +4 -4
  64. package/lib/button/definition.d.ts +2 -2
  65. package/lib/button/index.d.ts +1 -1
  66. package/lib/calendar/calendar.d.ts +13 -13
  67. package/lib/calendar/calendar.template.d.ts +4 -4
  68. package/lib/calendar/definition.d.ts +1 -1
  69. package/lib/calendar/helpers/calendar.date-functions.d.ts +2 -2
  70. package/lib/calendar/helpers/calendar.event-context.d.ts +6 -6
  71. package/lib/calendar/helpers/calendar.keyboard-interactions.d.ts +9 -9
  72. package/lib/calendar/index.d.ts +1 -1
  73. package/lib/calendar-event/calendar-event.d.ts +13 -13
  74. package/lib/calendar-event/calendar-event.template.d.ts +4 -4
  75. package/lib/calendar-event/definition.d.ts +2 -2
  76. package/lib/calendar-event/index.d.ts +1 -1
  77. package/lib/card/card.d.ts +10 -10
  78. package/lib/card/card.template.d.ts +4 -4
  79. package/lib/card/definition.d.ts +1 -1
  80. package/lib/card/index.d.ts +1 -1
  81. package/lib/checkbox/checkbox.d.ts +10 -11
  82. package/lib/checkbox/checkbox.template.d.ts +4 -4
  83. package/lib/checkbox/definition.d.ts +1 -1
  84. package/lib/checkbox/index.d.ts +1 -1
  85. package/lib/combobox/combobox.d.ts +12 -13
  86. package/lib/combobox/combobox.template.d.ts +4 -4
  87. package/lib/combobox/definition.d.ts +3 -4
  88. package/lib/combobox/index.d.ts +1 -1
  89. package/lib/components.d.ts +52 -52
  90. package/lib/data-grid/data-grid-cell.d.ts +22 -22
  91. package/lib/data-grid/data-grid-cell.template.d.ts +4 -4
  92. package/lib/data-grid/data-grid-row.d.ts +4 -4
  93. package/lib/data-grid/data-grid-row.template.d.ts +3 -3
  94. package/lib/data-grid/data-grid.d.ts +20 -20
  95. package/lib/data-grid/data-grid.options.d.ts +38 -38
  96. package/lib/data-grid/data-grid.template.d.ts +3 -3
  97. package/lib/data-grid/definition.d.ts +6 -6
  98. package/lib/data-grid/index.d.ts +1 -1
  99. package/lib/dialog/definition.d.ts +2 -2
  100. package/lib/dialog/dialog.d.ts +26 -26
  101. package/lib/dialog/dialog.template.d.ts +4 -4
  102. package/lib/dialog/index.d.ts +1 -1
  103. package/lib/divider/definition.d.ts +1 -1
  104. package/lib/divider/divider.d.ts +3 -3
  105. package/lib/divider/divider.template.d.ts +4 -4
  106. package/lib/divider/index.d.ts +1 -1
  107. package/lib/elevation/definition.d.ts +1 -1
  108. package/lib/elevation/elevation.d.ts +5 -5
  109. package/lib/elevation/elevation.template.d.ts +4 -4
  110. package/lib/elevation/index.d.ts +1 -1
  111. package/lib/empty-state/definition.d.ts +3 -3
  112. package/lib/empty-state/empty-state.d.ts +5 -5
  113. package/lib/empty-state/empty-state.template.d.ts +4 -4
  114. package/lib/empty-state/index.d.ts +1 -1
  115. package/lib/enums.d.ts +60 -60
  116. package/lib/fab/definition.d.ts +4 -4
  117. package/lib/fab/fab.d.ts +12 -12
  118. package/lib/fab/fab.template.d.ts +4 -4
  119. package/lib/fab/index.d.ts +1 -1
  120. package/lib/file-picker/definition.d.ts +3 -0
  121. package/lib/file-picker/file-picker.d.ts +22 -0
  122. package/lib/file-picker/file-picker.template.d.ts +4 -0
  123. package/lib/file-picker/index.d.ts +1 -0
  124. package/lib/focus/definition.d.ts +3 -3
  125. package/lib/focus/focus.d.ts +3 -3
  126. package/lib/focus/focus.template.d.ts +4 -4
  127. package/lib/focus/index.d.ts +1 -1
  128. package/lib/header/definition.d.ts +3 -3
  129. package/lib/header/header.d.ts +5 -5
  130. package/lib/header/header.template.d.ts +4 -4
  131. package/lib/header/index.d.ts +1 -1
  132. package/lib/icon/definition.d.ts +4 -4
  133. package/lib/icon/icon.d.ts +12 -12
  134. package/lib/icon/icon.placeholder.d.ts +1 -1
  135. package/lib/icon/icon.template.d.ts +4 -4
  136. package/lib/icon/index.d.ts +1 -1
  137. package/lib/layout/definition.d.ts +4 -4
  138. package/lib/layout/index.d.ts +1 -1
  139. package/lib/layout/layout.d.ts +17 -17
  140. package/lib/layout/layout.template.d.ts +4 -4
  141. package/lib/listbox/definition.d.ts +4 -4
  142. package/lib/listbox/index.d.ts +1 -1
  143. package/lib/listbox/listbox.d.ts +6 -6
  144. package/lib/listbox/listbox.template.d.ts +4 -4
  145. package/lib/menu/definition.d.ts +12 -12
  146. package/lib/menu/index.d.ts +1 -1
  147. package/lib/menu/menu.d.ts +16 -14
  148. package/lib/menu/menu.template.d.ts +3 -3
  149. package/lib/menu-item/definition.d.ts +3 -3
  150. package/lib/menu-item/index.d.ts +1 -1
  151. package/lib/menu-item/menu-item.d.ts +14 -14
  152. package/lib/menu-item/menu-item.template.d.ts +4 -4
  153. package/lib/nav/definition.d.ts +3 -3
  154. package/lib/nav/index.d.ts +1 -1
  155. package/lib/nav/nav.d.ts +3 -3
  156. package/lib/nav/nav.template.d.ts +4 -4
  157. package/lib/nav-disclosure/definition.d.ts +3 -3
  158. package/lib/nav-disclosure/index.d.ts +1 -1
  159. package/lib/nav-disclosure/nav-disclosure.d.ts +10 -10
  160. package/lib/nav-disclosure/nav-disclosure.template.d.ts +4 -4
  161. package/lib/nav-item/definition.d.ts +3 -3
  162. package/lib/nav-item/index.d.ts +1 -1
  163. package/lib/nav-item/nav-item.d.ts +7 -7
  164. package/lib/nav-item/nav-item.template.d.ts +4 -4
  165. package/lib/note/definition.d.ts +4 -4
  166. package/lib/note/index.d.ts +1 -1
  167. package/lib/note/note.d.ts +10 -10
  168. package/lib/note/note.template.d.ts +4 -4
  169. package/lib/number-field/definition.d.ts +5 -5
  170. package/lib/number-field/index.d.ts +1 -1
  171. package/lib/number-field/number-field.d.ts +13 -13
  172. package/lib/number-field/number-field.template.d.ts +4 -4
  173. package/lib/option/definition.d.ts +3 -3
  174. package/lib/option/index.d.ts +1 -1
  175. package/lib/option/option.d.ts +12 -12
  176. package/lib/option/option.template.d.ts +4 -4
  177. package/lib/pagination/definition.d.ts +3 -3
  178. package/lib/pagination/index.d.ts +1 -1
  179. package/lib/pagination/pagination.d.ts +18 -18
  180. package/lib/pagination/pagination.template.d.ts +4 -4
  181. package/lib/popup/definition.d.ts +5 -5
  182. package/lib/popup/index.d.ts +1 -1
  183. package/lib/popup/popup.d.ts +21 -21
  184. package/lib/popup/popup.template.d.ts +4 -4
  185. package/lib/progress/definition.d.ts +4 -4
  186. package/lib/progress/index.d.ts +1 -1
  187. package/lib/progress/progress.d.ts +9 -9
  188. package/lib/progress/progress.template.d.ts +5 -5
  189. package/lib/progress-ring/definition.d.ts +4 -4
  190. package/lib/progress-ring/index.d.ts +1 -1
  191. package/lib/progress-ring/progress-ring.d.ts +7 -7
  192. package/lib/progress-ring/progress-ring.template.d.ts +4 -4
  193. package/lib/radio/definition.d.ts +3 -3
  194. package/lib/radio/index.d.ts +1 -1
  195. package/lib/radio/radio.d.ts +7 -7
  196. package/lib/radio/radio.template.d.ts +4 -4
  197. package/lib/radio-group/definition.d.ts +11 -11
  198. package/lib/radio-group/index.d.ts +1 -1
  199. package/lib/radio-group/radio-group.d.ts +4 -4
  200. package/lib/radio-group/radio-group.template.d.ts +4 -4
  201. package/lib/select/definition.d.ts +4 -4
  202. package/lib/select/index.d.ts +1 -1
  203. package/lib/select/select.d.ts +17 -18
  204. package/lib/select/select.template.d.ts +4 -4
  205. package/lib/side-drawer/definition.d.ts +3 -3
  206. package/lib/side-drawer/index.d.ts +1 -1
  207. package/lib/side-drawer/side-drawer.d.ts +9 -9
  208. package/lib/side-drawer/side-drawer.template.d.ts +4 -4
  209. package/lib/slider/definition.d.ts +3 -3
  210. package/lib/slider/index.d.ts +1 -1
  211. package/lib/slider/slider.d.ts +4 -4
  212. package/lib/slider/slider.template.d.ts +4 -4
  213. package/lib/switch/definition.d.ts +4 -4
  214. package/lib/switch/index.d.ts +1 -1
  215. package/lib/switch/switch.d.ts +7 -7
  216. package/lib/switch/switch.template.d.ts +4 -4
  217. package/lib/tab/definition.d.ts +4 -4
  218. package/lib/tab/index.d.ts +1 -1
  219. package/lib/tab/tab.d.ts +14 -14
  220. package/lib/tab/tab.template.d.ts +3 -3
  221. package/lib/tab-panel/definition.d.ts +3 -3
  222. package/lib/tab-panel/index.d.ts +1 -1
  223. package/lib/tab-panel/tab-panel.d.ts +3 -3
  224. package/lib/tab-panel/tab-panel.template.d.ts +2 -2
  225. package/lib/tabs/definition.d.ts +3 -3
  226. package/lib/tabs/index.d.ts +1 -1
  227. package/lib/tabs/tabs.d.ts +15 -15
  228. package/lib/tabs/tabs.template.d.ts +2 -2
  229. package/lib/tag/definition.d.ts +4 -4
  230. package/lib/tag/index.d.ts +1 -1
  231. package/lib/tag/tag.d.ts +22 -22
  232. package/lib/tag/tag.template.d.ts +4 -4
  233. package/lib/tag-group/definition.d.ts +3 -3
  234. package/lib/tag-group/index.d.ts +1 -1
  235. package/lib/tag-group/tag-group.d.ts +3 -3
  236. package/lib/tag-group/tag-group.template.d.ts +4 -4
  237. package/lib/text-anchor/definition.d.ts +3 -3
  238. package/lib/text-anchor/index.d.ts +1 -1
  239. package/lib/text-anchor/text-anchor.d.ts +7 -7
  240. package/lib/text-anchor/text-anchor.template.d.ts +4 -4
  241. package/lib/text-area/definition.d.ts +4 -4
  242. package/lib/text-area/index.d.ts +1 -1
  243. package/lib/text-area/text-area.d.ts +8 -9
  244. package/lib/text-area/text-area.template.d.ts +4 -4
  245. package/lib/text-field/definition.d.ts +4 -4
  246. package/lib/text-field/index.d.ts +1 -1
  247. package/lib/text-field/text-field.d.ts +13 -14
  248. package/lib/text-field/text-field.template.d.ts +4 -4
  249. package/lib/toggletip/definition.d.ts +3 -3
  250. package/lib/toggletip/index.d.ts +1 -1
  251. package/lib/toggletip/toggletip.d.ts +15 -15
  252. package/lib/toggletip/toggletip.template.d.ts +4 -4
  253. package/lib/tooltip/definition.d.ts +3 -3
  254. package/lib/tooltip/index.d.ts +1 -1
  255. package/lib/tooltip/tooltip.d.ts +14 -14
  256. package/lib/tooltip/tooltip.template.d.ts +4 -4
  257. package/lib/tree-item/definition.d.ts +3 -3
  258. package/lib/tree-item/index.d.ts +1 -1
  259. package/lib/tree-item/tree-item.d.ts +7 -7
  260. package/lib/tree-item/tree-item.template.d.ts +4 -4
  261. package/lib/tree-view/definition.d.ts +3 -3
  262. package/lib/tree-view/index.d.ts +1 -1
  263. package/lib/tree-view/tree-view.d.ts +3 -3
  264. package/lib/tree-view/tree-view.template.d.ts +2 -2
  265. package/listbox/index.js +17 -21
  266. package/menu/index.js +2 -5
  267. package/menu-item/index.js +1 -4
  268. package/nav/index.js +1 -1
  269. package/nav-disclosure/index.js +1 -3
  270. package/nav-item/index.js +1 -3
  271. package/note/index.js +1 -3
  272. package/number-field/index.js +1 -4
  273. package/option/index.js +0 -2
  274. package/package.json +10 -8
  275. package/pagination/index.js +2 -6
  276. package/popup/index.js +0 -3
  277. package/progress/index.js +1 -1
  278. package/radio/index.js +1 -1
  279. package/radio-group/index.js +3 -3
  280. package/select/index.js +1 -4
  281. package/shared/affix.js +2 -5
  282. package/shared/anchor.js +2 -1
  283. package/shared/apply-mixins.js +1 -1
  284. package/shared/definition.js +7 -9
  285. package/shared/definition10.js +13 -17
  286. package/shared/definition11.js +6 -9
  287. package/shared/definition12.js +16 -18
  288. package/shared/definition13.js +6 -8
  289. package/shared/definition14.js +7 -12
  290. package/shared/definition15.js +43 -52
  291. package/shared/definition16.js +8 -71
  292. package/shared/definition17.js +36 -45
  293. package/shared/definition18.js +19 -24
  294. package/shared/definition19.js +45 -49
  295. package/shared/definition2.js +24 -28
  296. package/shared/definition20.js +390 -281
  297. package/shared/definition21.js +12 -16
  298. package/shared/definition22.js +82 -168
  299. package/shared/definition23.js +35 -41
  300. package/shared/definition24.js +6 -8
  301. package/shared/definition25.js +10 -14
  302. package/shared/definition26.js +40 -42
  303. package/shared/definition27.js +2285 -48
  304. package/shared/definition28.js +46 -38
  305. package/shared/definition29.js +38 -370
  306. package/shared/definition3.js +5 -9
  307. package/shared/definition30.js +348 -302
  308. package/shared/definition31.js +365 -14
  309. package/shared/definition32.js +12 -71
  310. package/shared/definition33.js +63 -26
  311. package/shared/definition34.js +24 -40
  312. package/shared/definition35.js +32 -436
  313. package/shared/definition36.js +428 -217
  314. package/shared/definition37.js +175 -77
  315. package/shared/definition38.js +50 -34
  316. package/shared/definition39.js +36 -430
  317. package/shared/definition4.js +3 -5
  318. package/shared/definition40.js +358 -589
  319. package/shared/definition41.js +644 -75
  320. package/shared/definition42.js +70 -587
  321. package/shared/definition43.js +503 -84
  322. package/shared/definition44.js +124 -52
  323. package/shared/definition45.js +57 -19
  324. package/shared/definition46.js +17 -487
  325. package/shared/definition47.js +477 -102
  326. package/shared/definition48.js +109 -19
  327. package/shared/definition49.js +17 -276
  328. package/shared/definition5.js +7 -8
  329. package/shared/definition50.js +253 -101
  330. package/shared/definition51.js +114 -629
  331. package/shared/definition52.js +92 -85
  332. package/shared/definition53.js +112 -70
  333. package/shared/definition54.js +65 -294
  334. package/shared/definition55.js +303 -0
  335. package/shared/definition6.js +17 -23
  336. package/shared/definition7.js +44 -47
  337. package/shared/definition8.js +3 -5
  338. package/shared/definition9.js +13 -17
  339. package/shared/design-system/index.d.ts +3 -3
  340. package/shared/focus2.js +1 -3
  341. package/shared/form-associated.js +1 -1
  342. package/shared/form-elements.js +16 -20
  343. package/shared/icon.js +2 -1171
  344. package/shared/index.js +41 -1549
  345. package/shared/listbox.js +1 -1
  346. package/shared/patterns/affix.d.ts +9 -9
  347. package/shared/patterns/focus.d.ts +3 -3
  348. package/shared/patterns/form-elements/form-elements.d.ts +57 -57
  349. package/shared/patterns/form-elements/index.d.ts +1 -1
  350. package/shared/patterns/index.d.ts +3 -3
  351. package/shared/repeat.js +1 -1
  352. package/shared/text-anchor.template.js +38 -40
  353. package/shared/text-field.js +1 -1
  354. package/shared/text-field2.js +1 -1
  355. package/shared/when.js +19 -5
  356. package/side-drawer/index.js +1 -1
  357. package/slider/index.js +1 -4
  358. package/styles/core/all.css +1 -1
  359. package/styles/core/theme.css +1 -1
  360. package/styles/core/typography.css +1 -1
  361. package/styles/tokens/theme-dark.css +17 -17
  362. package/styles/tokens/theme-light.css +17 -17
  363. package/switch/index.js +1 -3
  364. package/tab/index.js +1 -3
  365. package/tab-panel/index.js +1 -1
  366. package/tabs/index.js +3 -5
  367. package/tag/index.js +1 -3
  368. package/tag-group/index.js +1 -1
  369. package/text-anchor/index.js +0 -2
  370. package/text-area/index.js +1 -3
  371. package/text-field/index.js +1 -3
  372. package/toggletip/index.js +1 -5
  373. package/tooltip/index.js +1 -4
  374. package/tree-item/index.js +2 -4
  375. package/tree-view/index.js +1 -1
  376. package/vivid.api.json +210 -848
  377. package/shared/es.object.assign.js +0 -68
  378. package/shared/es.regexp.to-string.js +0 -61
  379. package/shared/es.string.includes.js +0 -83
  380. package/shared/string-trim.js +0 -40
  381. package/shared/to-string.js +0 -51
@@ -1,21 +1,372 @@
1
- import { F as FoundationElement, h as html, r as registerFactory } from './index.js';
1
+ import { F as FoundationElement, D as DOM, _ as __decorate, a as attr, o as observable, 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 AffixIcon, a as affixIconTemplateFactory } from './affix.js';
5
+ import { S as StartEnd } from './start-end.js';
6
+ import { D as Direction, g as getDirection } from './direction.js';
7
+ import { a as applyMixins } from './apply-mixins.js';
8
+ import { i as keyArrowLeft, h as keyArrowRight, e as keySpace, d as keyEnter } from './key-codes.js';
9
+ import { f as focusTemplateFactory } from './focus2.js';
10
+ import { w as when } from './when.js';
11
+ import { s as slotted } from './slotted.js';
12
+ import { c as classNames } from './class-names.js';
2
13
 
3
- var css_248z = "nav {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}";
14
+ /**
15
+ * Menu items roles.
16
+ * @public
17
+ */
18
+ const MenuItemRole$1 = {
19
+ /**
20
+ * The menu item has a "menuitem" role
21
+ */
22
+ menuitem: "menuitem",
23
+ /**
24
+ * The menu item has a "menuitemcheckbox" role
25
+ */
26
+ menuitemcheckbox: "menuitemcheckbox",
27
+ /**
28
+ * The menu item has a "menuitemradio" role
29
+ */
30
+ menuitemradio: "menuitemradio",
31
+ };
32
+ /**
33
+ * @internal
34
+ */
35
+ const roleForMenuItem = {
36
+ [MenuItemRole$1.menuitem]: "menuitem",
37
+ [MenuItemRole$1.menuitemcheckbox]: "menuitemcheckbox",
38
+ [MenuItemRole$1.menuitemradio]: "menuitemradio",
39
+ };
4
40
 
5
- class Nav extends FoundationElement {}
41
+ /**
42
+ * A Switch Custom HTML Element.
43
+ * 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 }.
44
+ *
45
+ * @slot checked-indicator - The checked indicator
46
+ * @slot radio-indicator - The radio indicator
47
+ * @slot start - Content which can be provided before the menu item content
48
+ * @slot end - Content which can be provided after the menu item content
49
+ * @slot - The default slot for menu item content
50
+ * @slot expand-collapse-indicator - The expand/collapse indicator
51
+ * @slot submenu - Used to nest menu's within menu items
52
+ * @csspart input-container - The element representing the visual checked or radio indicator
53
+ * @csspart checkbox - The element wrapping the `menuitemcheckbox` indicator
54
+ * @csspart radio - The element wrapping the `menuitemradio` indicator
55
+ * @csspart content - The element wrapping the menu item content
56
+ * @csspart expand-collapse-glyph-container - The element wrapping the expand collapse element
57
+ * @csspart expand-collapse - The expand/collapse element
58
+ * @csspart submenu-region - The container for the submenu, used for positioning
59
+ * @fires expanded-change - Fires a custom 'expanded-change' event when the expanded state changes
60
+ * @fires change - Fires a custom 'change' event when a non-submenu item with a role of `menuitemcheckbox`, `menuitemradio`, or `menuitem` is invoked
61
+ *
62
+ * @public
63
+ */
64
+ class MenuItem$1 extends FoundationElement {
65
+ constructor() {
66
+ super(...arguments);
67
+ /**
68
+ * The role of the element.
69
+ *
70
+ * @public
71
+ * @remarks
72
+ * HTML Attribute: role
73
+ */
74
+ this.role = MenuItemRole$1.menuitem;
75
+ /**
76
+ * @internal
77
+ */
78
+ this.hasSubmenu = false;
79
+ /**
80
+ * Track current direction to pass to the anchored region
81
+ *
82
+ * @internal
83
+ */
84
+ this.currentDirection = Direction.ltr;
85
+ this.focusSubmenuOnLoad = false;
86
+ /**
87
+ * @internal
88
+ */
89
+ this.handleMenuItemKeyDown = (e) => {
90
+ if (e.defaultPrevented) {
91
+ return false;
92
+ }
93
+ switch (e.key) {
94
+ case keyEnter:
95
+ case keySpace:
96
+ this.invoke();
97
+ return false;
98
+ case keyArrowRight:
99
+ //open/focus on submenu
100
+ this.expandAndFocus();
101
+ return false;
102
+ case keyArrowLeft:
103
+ //close submenu
104
+ if (this.expanded) {
105
+ this.expanded = false;
106
+ this.focus();
107
+ return false;
108
+ }
109
+ }
110
+ return true;
111
+ };
112
+ /**
113
+ * @internal
114
+ */
115
+ this.handleMenuItemClick = (e) => {
116
+ if (e.defaultPrevented || this.disabled) {
117
+ return false;
118
+ }
119
+ this.invoke();
120
+ return false;
121
+ };
122
+ /**
123
+ * @internal
124
+ */
125
+ this.submenuLoaded = () => {
126
+ if (!this.focusSubmenuOnLoad) {
127
+ return;
128
+ }
129
+ this.focusSubmenuOnLoad = false;
130
+ if (this.hasSubmenu) {
131
+ this.submenu.focus();
132
+ this.setAttribute("tabindex", "-1");
133
+ }
134
+ };
135
+ /**
136
+ * @internal
137
+ */
138
+ this.handleMouseOver = (e) => {
139
+ if (this.disabled || !this.hasSubmenu || this.expanded) {
140
+ return false;
141
+ }
142
+ this.expanded = true;
143
+ return false;
144
+ };
145
+ /**
146
+ * @internal
147
+ */
148
+ this.handleMouseOut = (e) => {
149
+ if (!this.expanded || this.contains(document.activeElement)) {
150
+ return false;
151
+ }
152
+ this.expanded = false;
153
+ return false;
154
+ };
155
+ /**
156
+ * @internal
157
+ */
158
+ this.expandAndFocus = () => {
159
+ if (!this.hasSubmenu) {
160
+ return;
161
+ }
162
+ this.focusSubmenuOnLoad = true;
163
+ this.expanded = true;
164
+ };
165
+ /**
166
+ * @internal
167
+ */
168
+ this.invoke = () => {
169
+ if (this.disabled) {
170
+ return;
171
+ }
172
+ switch (this.role) {
173
+ case MenuItemRole$1.menuitemcheckbox:
174
+ this.checked = !this.checked;
175
+ break;
176
+ case MenuItemRole$1.menuitem:
177
+ // update submenu
178
+ this.updateSubmenu();
179
+ if (this.hasSubmenu) {
180
+ this.expandAndFocus();
181
+ }
182
+ else {
183
+ this.$emit("change");
184
+ }
185
+ break;
186
+ case MenuItemRole$1.menuitemradio:
187
+ if (!this.checked) {
188
+ this.checked = true;
189
+ }
190
+ break;
191
+ }
192
+ };
193
+ /**
194
+ * Gets the submenu element if any
195
+ *
196
+ * @internal
197
+ */
198
+ this.updateSubmenu = () => {
199
+ this.submenu = this.domChildren().find((element) => {
200
+ return element.getAttribute("role") === "menu";
201
+ });
202
+ this.hasSubmenu = this.submenu === undefined ? false : true;
203
+ };
204
+ }
205
+ expandedChanged(oldValue) {
206
+ if (this.$fastController.isConnected) {
207
+ if (this.submenu === undefined) {
208
+ return;
209
+ }
210
+ if (this.expanded === false) {
211
+ this.submenu.collapseExpandedItem();
212
+ }
213
+ else {
214
+ this.currentDirection = getDirection(this);
215
+ }
216
+ this.$emit("expanded-change", this, { bubbles: false });
217
+ }
218
+ }
219
+ checkedChanged(oldValue, newValue) {
220
+ if (this.$fastController.isConnected) {
221
+ this.$emit("change");
222
+ }
223
+ }
224
+ /**
225
+ * @internal
226
+ */
227
+ connectedCallback() {
228
+ super.connectedCallback();
229
+ DOM.queueUpdate(() => {
230
+ this.updateSubmenu();
231
+ });
232
+ if (!this.startColumnCount) {
233
+ this.startColumnCount = 1;
234
+ }
235
+ this.observer = new MutationObserver(this.updateSubmenu);
236
+ }
237
+ /**
238
+ * @internal
239
+ */
240
+ disconnectedCallback() {
241
+ super.disconnectedCallback();
242
+ this.submenu = undefined;
243
+ if (this.observer !== undefined) {
244
+ this.observer.disconnect();
245
+ this.observer = undefined;
246
+ }
247
+ }
248
+ /**
249
+ * get an array of valid DOM children
250
+ */
251
+ domChildren() {
252
+ return Array.from(this.children).filter(child => !child.hasAttribute("hidden"));
253
+ }
254
+ }
255
+ __decorate([
256
+ attr({ mode: "boolean" })
257
+ ], MenuItem$1.prototype, "disabled", void 0);
258
+ __decorate([
259
+ attr({ mode: "boolean" })
260
+ ], MenuItem$1.prototype, "expanded", void 0);
261
+ __decorate([
262
+ observable
263
+ ], MenuItem$1.prototype, "startColumnCount", void 0);
264
+ __decorate([
265
+ attr
266
+ ], MenuItem$1.prototype, "role", void 0);
267
+ __decorate([
268
+ attr({ mode: "boolean" })
269
+ ], MenuItem$1.prototype, "checked", void 0);
270
+ __decorate([
271
+ observable
272
+ ], MenuItem$1.prototype, "submenuRegion", void 0);
273
+ __decorate([
274
+ observable
275
+ ], MenuItem$1.prototype, "hasSubmenu", void 0);
276
+ __decorate([
277
+ observable
278
+ ], MenuItem$1.prototype, "currentDirection", void 0);
279
+ __decorate([
280
+ observable
281
+ ], MenuItem$1.prototype, "submenu", void 0);
282
+ applyMixins(MenuItem$1, StartEnd);
6
283
 
7
- let _ = t => t,
8
- _t;
9
- const NavTemplate = () => html(_t || (_t = _`
10
- <nav><slot></slot></nav>
11
- `));
284
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Mon, 07 Aug 2023 18:00:27 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 box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n gap: 12px;\n inline-size: 100%;\n padding-block: 2px;\n padding-inline: 16px;\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-300);\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);\n --_appearance-color-fill: var(--_connotation-color-dim);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:hover, .hover) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-pale);\n --_appearance-color-outline: transparent;\n}\n.base {\n /* @cssprop [--vvd-menu-item-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-menu-item-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-menu-item-accent-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-menu-item-accent-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-menu-item-accent-primary-increment=var(--vvd-color-neutral-800)] */\n --_connotation-color-primary-increment: var(--vvd-menu-item-accent-primary-increment, var(--vvd-color-neutral-800));\n /* @cssprop [--vvd-menu-item-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-menu-item-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-menu-item-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-menu-item-accent-soft, var(--vvd-color-neutral-100));\n /* @cssprop [--vvd-menu-item-accent-pale=var(--vvd-color-neutral-300)] */\n --_connotation-color-pale: var(--vvd-menu-item-accent-pale, var(--vvd-color-neutral-300));\n /* @cssprop [--vvd-menu-item-accent-dim=var(--vvd-color-neutral-200)] */\n --_connotation-color-dim: var(--vvd-menu-item-accent-dim, var(--vvd-color-neutral-200));\n}\n.base:not(.two-lines) {\n min-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n}\n.base.two-lines {\n min-block-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) + calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 16)));\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 pointer-events: none;\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 flex-shrink: 0;\n font-size: calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2))) / 2);\n line-height: 1;\n}\n\n.action,\n.decorative {\n display: flex;\n place-content: center;\n}\n\n.action {\n color: var(--_appearance-color-text);\n}\n.base.trailing .action {\n order: 1;\n margin-inline-start: auto;\n}\n.base.has-meta .action {\n order: 1;\n margin-inline-start: auto;\n}\n\n.base:not(.disabled) .decorative {\n color: var(--vvd-color-neutral-600);\n}\n.base.disabled .decorative {\n color: var(--vvd-color-neutral-200);\n}\n.base.has-meta .decorative {\n order: 1;\n margin-inline-start: auto;\n}\n\n.text {\n display: flex;\n overflow: hidden;\n flex-direction: column;\n}\n\n.text-primary,\n.text-secondary {\n /* stylelint-disable value-no-vendor-prefix */\n display: -webkit-box;\n /* stylelint-enable value-no-vendor-prefix */\n overflow: hidden;\n -webkit-box-orient: vertical;\n color: var(--_appearance-color-text);\n font: var(--vvd-typography-base);\n}\n\n.text-primary {\n -webkit-line-clamp: var(--text-primary-line-clamp, 1);\n}\n.base.two-lines .text-primary {\n font: var(--vvd-typography-base-bold);\n}\n\n.text-secondary {\n -webkit-line-clamp: var(--text-secondary-line-clamp, 1);\n}\n.base.two-lines .text-secondary {\n color: var(--vvd-color-neutral-600);\n}";
12
285
 
13
- const navDefinition = Nav.compose({
14
- baseName: 'nav',
15
- template: NavTemplate,
286
+ const MenuItemRole = Object.assign(Object.assign({}, MenuItemRole$1), {
287
+ presentation: 'presentation'
288
+ });
289
+ class MenuItem extends MenuItem$1 {}
290
+ __decorate([attr, __metadata("design:type", String)], MenuItem.prototype, "text", void 0);
291
+ __decorate([attr({
292
+ attribute: 'text-secondary'
293
+ }), __metadata("design:type", String)], MenuItem.prototype, "textSecondary", void 0);
294
+ __decorate([observable, __metadata("design:type", Array)], MenuItem.prototype, "metaSlottedContent", void 0);
295
+ applyMixins(MenuItem, AffixIcon);
296
+
297
+ const getCheckIcon = (affixIconTemplate, x, iconType) => {
298
+ const iconStatus = x.checked ? 'checked' : 'unchecked';
299
+ const icon = `${iconType}-${iconStatus}-line`;
300
+ return affixIconTemplate(icon);
301
+ };
302
+ const getClasses = ({
303
+ disabled,
304
+ checked,
305
+ expanded,
306
+ role,
307
+ text,
308
+ textSecondary,
309
+ icon,
310
+ metaSlottedContent
311
+ }) => classNames('base', ['disabled', Boolean(disabled)], ['selected', role !== MenuItemRole.menuitem && Boolean(checked)], ['trailing', role !== MenuItemRole.menuitem && Boolean(icon)], ['expanded', Boolean(expanded)], ['item-checkbox', role === MenuItemRole.menuitemcheckbox], ['item-radio', role === MenuItemRole.menuitemradio], ['two-lines', Boolean(text === null || text === void 0 ? void 0 : text.length) && Boolean(textSecondary === null || textSecondary === void 0 ? void 0 : textSecondary.length)], ['has-meta', Boolean(metaSlottedContent === null || metaSlottedContent === void 0 ? void 0 : metaSlottedContent.length)]);
312
+ function handleClick(x, {
313
+ event
314
+ }) {
315
+ x.handleMenuItemClick(event);
316
+ return x.role === MenuItemRole.presentation;
317
+ }
318
+ const MenuItemTemplate = (context, definition) => {
319
+ const affixIconTemplate = affixIconTemplateFactory(context);
320
+ const focusTemplate = focusTemplateFactory(context);
321
+ return html`
322
+ <template
323
+ aria-checked="${x => x.role !== MenuItemRole.menuitem ? x.checked : void 0}"
324
+ aria-disabled="${x => x.disabled}"
325
+ aria-expanded="${x => x.expanded}"
326
+ @keydown="${(x, c) => x.handleMenuItemKeyDown(c.event)}"
327
+ @click="${handleClick}"
328
+ @mouseover="${(x, c) => x.handleMouseOver(c.event)}"
329
+ @mouseout="${(x, c) => x.handleMouseOut(c.event)}"
330
+ >
331
+ <div class="${getClasses}">
332
+
333
+ ${when(x => x.hasSubmenu, html`
334
+ <div
335
+ class="expand-collapse-glyph-container"
336
+ >
337
+ <span class="expand-collapse">
338
+ <slot name="expand-collapse-indicator">
339
+ ${definition.expandCollapseGlyph || ''}
340
+ </slot>
341
+ </span>
342
+ </div>
343
+ `)}
344
+ ${() => focusTemplate}
345
+ <slot name="meta" ${slotted('metaSlottedContent')}></slot>
346
+ ${when(x => x.role === MenuItemRole.menuitemcheckbox, html`<span class="action">${x => getCheckIcon(affixIconTemplate, x, 'checkbox')}</span>`)}
347
+
348
+ ${when(x => x.role === MenuItemRole.menuitemradio, html`<span class="action">${x => getCheckIcon(affixIconTemplate, x, 'radio')}</span>`)}
349
+
350
+ ${when(x => x.icon, html`<span class="decorative">${x => affixIconTemplate(x.icon)}</span>`)}
351
+
352
+ ${when(x => x.text || x.textSecondary, html`<span class="text">
353
+ ${when(x => x.text, html`<span class="text-primary">${x => x.text}</span>`)}
354
+ ${when(x => x.textSecondary, html`<span class="text-secondary">${x => x.textSecondary}</span>`)}
355
+ </span>`)}
356
+
357
+
358
+
359
+ </div>
360
+ </template>
361
+ `;
362
+ };
363
+
364
+ const menuItemDefinition = MenuItem.compose({
365
+ baseName: 'menu-item',
366
+ template: MenuItemTemplate,
16
367
  styles: css_248z
17
368
  });
18
- const navRegistries = [navDefinition()];
19
- const registerNav = registerFactory(navRegistries);
369
+ const menuItemRegistries = [menuItemDefinition(), ...iconRegistries, ...focusRegistries];
370
+ const registerMenuItem = registerFactory(menuItemRegistries);
20
371
 
21
- export { navRegistries as a, navDefinition as n, registerNav as r };
372
+ export { MenuItem$1 as M, MenuItemRole$1 as a, registerMenuItem as b, menuItemDefinition as c, menuItemRegistries as m, roleForMenuItem as r };
@@ -1,78 +1,19 @@
1
- import { F as FoundationElement, V as __classPrivateFieldGet, _ 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 AffixIcon, a as affixIconTemplateFactory } from './affix.js';
5
- import { a as applyMixins } from './apply-mixins.js';
6
- import { I as Icon } from './icon.js';
7
- import { f as focusTemplateFactory } from './focus2.js';
8
- import { w as when } from './when.js';
9
- import { r as ref } from './ref.js';
1
+ import { F as FoundationElement, h as html, r as registerFactory } from './index.js';
10
2
 
11
- var css_248z = "/**\n * Do not edit directly\n * Generated on Tue, 25 Jul 2023 07:38:24 GMT\n */\n.control {\n position: relative;\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 cursor: pointer;\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-inline: 16px;\n text-decoration: none;\n vertical-align: middle;\n word-break: break-word;\n}\n.control {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.control: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.control: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.control: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.control {\n /* @cssprop [--vvd-nav-disclosure-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-nav-disclosure-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-nav-disclosure-accent-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-nav-disclosure-accent-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-nav-disclosure-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-nav-disclosure-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-nav-disclosure-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-nav-disclosure-accent-soft, var(--vvd-color-neutral-100));\n}\n@supports selector(:focus-visible) {\n .control:focus {\n outline: none;\n }\n}\n@supports (user-select: none) {\n .control {\n user-select: none;\n }\n}\n.control .toggleIcon {\n margin-inline-start: auto;\n}\n\n.control:not(:focus-visible) .focus-indicator {\n display: none;\n}\n\n.icon {\n font-size: 20px;\n line-height: 1;\n}\n.control:not(.icon-only) .icon {\n color: var(--vvd-color-neutral-600);\n}\n\n.content {\n display: flex;\n flex-direction: column;\n border-inline-start: 1px solid var(--vvd-color-neutral-200);\n gap: 4px;\n margin-block: 4px;\n margin-inline-start: 20px;\n padding-inline-start: 12px;\n}\n\ndetails > summary {\n list-style: none;\n}\n\ndetails > summary::-webkit-details-marker {\n display: none;\n}";
3
+ var css_248z = "nav {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}";
12
4
 
13
- var _NavDisclosure_onToggle;
14
- class NavDisclosure extends FoundationElement {
15
- constructor() {
16
- super(...arguments);
17
- this.open = false;
18
- _NavDisclosure_onToggle.set(this, () => {
19
- this.open = this.details.open;
20
- this.$emit('toggle', undefined, {
21
- bubbles: false
22
- });
23
- });
24
- }
25
- connectedCallback() {
26
- super.connectedCallback();
27
- this.details.addEventListener('toggle', __classPrivateFieldGet(this, _NavDisclosure_onToggle, "f"));
28
- this.details.open = this.open;
29
- }
30
- disconnectedCallback() {
31
- super.disconnectedCallback();
32
- this.details.removeEventListener('toggle', __classPrivateFieldGet(this, _NavDisclosure_onToggle, "f"));
33
- }
34
- }
35
- _NavDisclosure_onToggle = new WeakMap();
36
- __decorate([attr, __metadata("design:type", String)], NavDisclosure.prototype, "label", void 0);
37
- __decorate([attr({
38
- mode: 'boolean'
39
- }), __metadata("design:type", Object)], NavDisclosure.prototype, "open", void 0);
40
- applyMixins(NavDisclosure, AffixIcon);
5
+ class Nav extends FoundationElement {}
41
6
 
42
- let _ = t => t,
43
- _t,
44
- _t2,
45
- _t3;
46
- const NavDisclosureTemplate = context => {
47
- const affixIconTemplate = affixIconTemplateFactory(context);
48
- const focusTemplate = focusTemplateFactory(context);
49
- const iconTag = context.tagFor(Icon);
50
- return html(_t || (_t = _`<details class="base" ${0} ?open=${0}>
51
- <summary class="control"
52
- role="button"
53
- aria-controls="disclosure-content"
54
- aria-expanded="${0}"
55
- >
56
- ${0}
57
- ${0}
58
- <slot name="meta"></slot>
59
- ${0}
60
- ${0}
61
- ${0}
62
- </summary>
63
- <div class="content" id="disclosure-content">
64
- <slot></slot>
65
- </div>
66
- </details>
67
- `), ref('details'), x => x.open, x => x.open, x => affixIconTemplate(x.icon), x => x.label, when(x => x.open, html(_t2 || (_t2 = _`<${0} class="toggleIcon" name='chevron-up-solid'></${0}>`), iconTag, iconTag)), when(x => !x.open, html(_t3 || (_t3 = _`<${0} class="toggleIcon" name='chevron-down-solid'></${0}>`), iconTag, iconTag)), () => focusTemplate);
68
- };
7
+ const NavTemplate = () => html`
8
+ <nav><slot></slot></nav>
9
+ `;
69
10
 
70
- const navDisclosureDefinition = NavDisclosure.compose({
71
- baseName: 'nav-disclosure',
72
- template: NavDisclosureTemplate,
11
+ const navDefinition = Nav.compose({
12
+ baseName: 'nav',
13
+ template: NavTemplate,
73
14
  styles: css_248z
74
15
  });
75
- const navDisclosureRegistries = [navDisclosureDefinition(), ...iconRegistries, ...focusRegistries];
76
- const registerNavDisclosure = registerFactory(navDisclosureRegistries);
16
+ const navRegistries = [navDefinition()];
17
+ const registerNav = registerFactory(navRegistries);
77
18
 
78
- export { navDisclosureRegistries as a, navDisclosureDefinition as n, registerNavDisclosure as r };
19
+ export { navRegistries as a, navDefinition as n, registerNav as r };
@@ -1,37 +1,74 @@
1
- import { h as html, r as registerFactory } from './index.js';
1
+ import { F as FoundationElement, d as __classPrivateFieldGet, _ as __decorate, a as attr, b as __metadata, h as html, r as registerFactory } from './index.js';
2
2
  import { i as iconRegistries } from './definition3.js';
3
3
  import { f as focusRegistries } from './definition4.js';
4
- import { b as AffixIcon } from './affix.js';
5
- import { T as TextAnchor } from './text-anchor.js';
4
+ import { b as AffixIcon, a as affixIconTemplateFactory } from './affix.js';
6
5
  import { a as applyMixins } from './apply-mixins.js';
7
- import { t as textAnchorTemplate } from './text-anchor.template.js';
6
+ import { I as Icon } from './icon.js';
7
+ import { f as focusTemplateFactory } from './focus2.js';
8
+ import { r as ref } from './ref.js';
9
+ import { w as when } from './when.js';
8
10
 
9
- var css_248z = "/**\n * Do not edit directly\n * Generated on Tue, 25 Jul 2023 07:38:24 GMT\n */\n.control {\n position: relative;\n display: inline-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 text-decoration: none;\n vertical-align: middle;\n word-break: break-word;\n}\n.control {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.control: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.control: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.control: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.control: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.control {\n /* @cssprop [--vvd-nav-item-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-nav-item-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-nav-item-accent-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-nav-item-accent-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-nav-item-accent-primary-increment=var(--vvd-color-neutral-800)] */\n --_connotation-color-primary-increment: var(--vvd-nav-item-accent-primary-increment, var(--vvd-color-neutral-800));\n /* @cssprop [--vvd-nav-item-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-nav-item-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-nav-item-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-nav-item-accent-soft, var(--vvd-color-neutral-100));\n}\n@supports selector(:focus-visible) {\n .control:focus {\n outline: none;\n }\n}\n.control.icon-only {\n display: flex;\n block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n inline-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n place-content: center;\n}\n.control:not(.icon-only) {\n padding-inline: 16px;\n}\n\n.control:not(:focus-visible) .focus-indicator {\n display: none;\n}\n\n.icon {\n font-size: 20px;\n line-height: 1;\n}";
11
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Mon, 07 Aug 2023 18:00:27 GMT\n */\n.control {\n position: relative;\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 cursor: pointer;\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-inline: 16px;\n text-decoration: none;\n vertical-align: middle;\n}\n.control {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.control: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.control: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.control: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.control {\n /* @cssprop [--vvd-nav-disclosure-accent-primary=var(--vvd-color-canvas-text)] */\n --_connotation-color-primary: var(--vvd-nav-disclosure-accent-primary, var(--vvd-color-canvas-text));\n /* @cssprop [--vvd-nav-disclosure-accent-primary-text=var(--vvd-color-canvas)] */\n --_connotation-color-primary-text: var(--vvd-nav-disclosure-accent-primary-text, var(--vvd-color-canvas));\n /* @cssprop [--vvd-nav-disclosure-accent-faint=var(--vvd-color-neutral-50)] */\n --_connotation-color-faint: var(--vvd-nav-disclosure-accent-faint, var(--vvd-color-neutral-50));\n /* @cssprop [--vvd-nav-disclosure-accent-soft=var(--vvd-color-neutral-100)] */\n --_connotation-color-soft: var(--vvd-nav-disclosure-accent-soft, var(--vvd-color-neutral-100));\n}\n@supports selector(:focus-visible) {\n .control:focus {\n outline: none;\n }\n}\n@supports (user-select: none) {\n .control {\n user-select: none;\n }\n}\n.control .toggleIcon {\n margin-inline-start: auto;\n}\n\n.control:not(:focus-visible) .focus-indicator {\n display: none;\n}\n\n.icon {\n font-size: 20px;\n line-height: 1;\n}\n.control:not(.icon-only) .icon {\n color: var(--vvd-color-neutral-600);\n}\n\n.content {\n display: flex;\n flex-direction: column;\n border-inline-start: 1px solid var(--vvd-color-neutral-200);\n gap: 4px;\n margin-block: 4px;\n margin-inline-start: 20px;\n padding-inline-start: 12px;\n}\n\ndetails > summary {\n list-style: none;\n}\n\ndetails > summary::-webkit-details-marker {\n display: none;\n}";
10
12
 
11
- let _$1 = t => t,
12
- _t$1;
13
- class NavItem extends TextAnchor {
14
- getBodyTemplate() {
15
- return html(_t$1 || (_t$1 = _$1`<slot name="meta"></slot>`));
13
+ var _NavDisclosure_onToggle;
14
+ class NavDisclosure extends FoundationElement {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.open = false;
18
+ _NavDisclosure_onToggle.set(this, () => {
19
+ this.open = this.details.open;
20
+ this.$emit('toggle', undefined, {
21
+ bubbles: false
22
+ });
23
+ });
24
+ }
25
+ connectedCallback() {
26
+ super.connectedCallback();
27
+ this.details.addEventListener('toggle', __classPrivateFieldGet(this, _NavDisclosure_onToggle, "f"));
28
+ this.details.open = this.open;
29
+ }
30
+ disconnectedCallback() {
31
+ super.disconnectedCallback();
32
+ this.details.removeEventListener('toggle', __classPrivateFieldGet(this, _NavDisclosure_onToggle, "f"));
16
33
  }
17
34
  }
18
- applyMixins(NavItem, AffixIcon);
35
+ _NavDisclosure_onToggle = new WeakMap();
36
+ __decorate([attr, __metadata("design:type", String)], NavDisclosure.prototype, "label", void 0);
37
+ __decorate([attr({
38
+ mode: 'boolean'
39
+ }), __metadata("design:type", Object)], NavDisclosure.prototype, "open", void 0);
40
+ applyMixins(NavDisclosure, AffixIcon);
19
41
 
20
- let _ = t => t,
21
- _t;
22
- const NavItemTemplate = (context, definition) => html(_t || (_t = _`
23
- ${0}
24
- `), textAnchorTemplate(context));
42
+ const NavDisclosureTemplate = context => {
43
+ const affixIconTemplate = affixIconTemplateFactory(context);
44
+ const focusTemplate = focusTemplateFactory(context);
45
+ const iconTag = context.tagFor(Icon);
46
+ return html`<details class="base" ${ref('details')} ?open=${x => x.open}>
47
+ <summary class="control"
48
+ role="button"
49
+ aria-controls="disclosure-content"
50
+ aria-expanded="${x => x.open}"
51
+ >
52
+ ${x => affixIconTemplate(x.icon)}
53
+ ${x => x.label}
54
+ <slot name="meta"></slot>
55
+ ${when(x => x.open, html`<${iconTag} class="toggleIcon" name='chevron-up-solid'></${iconTag}>`)}
56
+ ${when(x => !x.open, html`<${iconTag} class="toggleIcon" name='chevron-down-solid'></${iconTag}>`)}
57
+ ${() => focusTemplate}
58
+ </summary>
59
+ <div class="content" id="disclosure-content">
60
+ <slot></slot>
61
+ </div>
62
+ </details>
63
+ `;
64
+ };
25
65
 
26
- const navItemDefinition = NavItem.compose({
27
- baseName: 'nav-item',
28
- template: NavItemTemplate,
29
- styles: css_248z,
30
- shadowOptions: {
31
- delegatesFocus: true
32
- }
66
+ const navDisclosureDefinition = NavDisclosure.compose({
67
+ baseName: 'nav-disclosure',
68
+ template: NavDisclosureTemplate,
69
+ styles: css_248z
33
70
  });
34
- const navItemRegistries = [navItemDefinition(), ...iconRegistries, ...focusRegistries];
35
- const registerNavItem = registerFactory(navItemRegistries);
71
+ const navDisclosureRegistries = [navDisclosureDefinition(), ...iconRegistries, ...focusRegistries];
72
+ const registerNavDisclosure = registerFactory(navDisclosureRegistries);
36
73
 
37
- export { navItemRegistries as a, navItemDefinition as n, registerNavItem as r };
74
+ export { navDisclosureRegistries as a, navDisclosureDefinition as n, registerNavDisclosure as r };