@vonage/vivid 5.14.0 → 5.15.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 (345) hide show
  1. package/README.md +1 -1
  2. package/accordion/definition.cjs +0 -5
  3. package/accordion/definition.js +0 -5
  4. package/accordion/index.cjs +1 -1
  5. package/accordion/index.js +3 -14
  6. package/accordion-item/definition.cjs +1 -1
  7. package/accordion-item/definition.js +1 -1
  8. package/alert/definition.cjs +2 -2
  9. package/alert/definition.js +2 -2
  10. package/alert/index.cjs +1 -1
  11. package/alert/index.js +1 -1
  12. package/audio-player/definition.cjs +2 -6
  13. package/audio-player/definition.js +2 -6
  14. package/audio-player/index.cjs +1 -1
  15. package/audio-player/index.js +2 -8
  16. package/banner/definition.cjs +1 -1
  17. package/banner/definition.js +1 -1
  18. package/breadcrumb/definition.cjs +0 -1
  19. package/breadcrumb/definition.js +0 -1
  20. package/breadcrumb/index.cjs +1 -1
  21. package/breadcrumb/index.js +0 -1
  22. package/breadcrumb-item/definition.cjs +1 -1
  23. package/breadcrumb-item/definition.js +1 -1
  24. package/breadcrumb-item/index.cjs +1 -1
  25. package/breadcrumb-item/index.js +1 -1
  26. package/bundled/attribute-binding-behaviour.cjs +1 -1
  27. package/bundled/attribute-binding-behaviour.js +1 -3
  28. package/bundled/base-color-picker.cjs +1 -1
  29. package/bundled/base-color-picker.js +4 -9
  30. package/bundled/base-progress.cjs +1 -1
  31. package/bundled/base-progress.js +0 -3
  32. package/bundled/button.cjs +1 -1
  33. package/bundled/button.js +1 -10
  34. package/bundled/calendar-picker.template.cjs +1 -1
  35. package/bundled/calendar-picker.template.js +90 -42
  36. package/bundled/children.js +1 -1
  37. package/bundled/definition.cjs +1 -1
  38. package/bundled/definition.js +1 -1
  39. package/bundled/definition10.cjs +1 -1
  40. package/bundled/definition10.js +0 -10
  41. package/bundled/definition11.cjs +1 -1
  42. package/bundled/definition11.js +0 -1
  43. package/bundled/definition12.cjs +2 -2
  44. package/bundled/definition12.js +1 -2
  45. package/bundled/definition13.cjs +1 -1
  46. package/bundled/definition13.js +1 -1
  47. package/bundled/definition17.cjs +1 -1
  48. package/bundled/definition17.js +1 -4
  49. package/bundled/definition18.cjs +1 -1
  50. package/bundled/definition18.js +6 -18
  51. package/bundled/definition19.cjs +2 -2
  52. package/bundled/definition19.js +8 -24
  53. package/bundled/definition2.cjs +5 -5
  54. package/bundled/definition2.js +26 -27
  55. package/bundled/definition20.cjs +1 -1
  56. package/bundled/definition20.js +1 -1
  57. package/bundled/definition22.cjs +5 -5
  58. package/bundled/definition22.js +2 -3
  59. package/bundled/definition3.cjs +1 -1
  60. package/bundled/definition3.js +1 -2
  61. package/bundled/definition5.cjs +1 -1
  62. package/bundled/definition5.js +1 -6
  63. package/bundled/definition6.cjs +1 -1
  64. package/bundled/definition6.js +1 -2
  65. package/bundled/definition7.cjs +1 -1
  66. package/bundled/definition7.js +2 -5
  67. package/bundled/definition8.cjs +1 -1
  68. package/bundled/definition8.js +2 -13
  69. package/bundled/definition9.js +9 -9
  70. package/bundled/delegates-aria.cjs +1 -1
  71. package/bundled/delegates-aria.js +1 -3
  72. package/bundled/floating-ui.dom.cjs +1 -1
  73. package/bundled/floating-ui.dom.js +491 -487
  74. package/bundled/form-associated.cjs +1 -1
  75. package/bundled/form-associated.js +9 -18
  76. package/bundled/key-codes.cjs +1 -1
  77. package/bundled/listbox.cjs +1 -1
  78. package/bundled/listbox.js +10 -27
  79. package/bundled/localized.cjs +1 -1
  80. package/bundled/localized.js +49 -48
  81. package/bundled/mixins.cjs +2 -2
  82. package/bundled/mixins.js +1 -4
  83. package/bundled/normalize.js +2 -2
  84. package/bundled/picker-field.template.cjs +1 -1
  85. package/bundled/picker-field.template.js +0 -1
  86. package/bundled/scrollIntoView.cjs +1 -1
  87. package/bundled/scrollIntoView.js +1 -4
  88. package/bundled/slider.template.cjs +1 -1
  89. package/bundled/slider.template.js +1 -1
  90. package/bundled/slottable-request.js +2 -1
  91. package/bundled/text-field.cjs +1 -1
  92. package/bundled/text-field.js +1 -1
  93. package/bundled/time-selection-picker.template.cjs +2 -2
  94. package/bundled/time-selection-picker.template.js +3 -6
  95. package/bundled/vivid-element.cjs +3 -3
  96. package/bundled/vivid-element.js +302 -293
  97. package/button/definition.cjs +1 -1
  98. package/button/definition.js +1 -1
  99. package/calendar/definition.cjs +0 -2
  100. package/calendar/definition.js +1 -3
  101. package/calendar/index.cjs +1 -1
  102. package/calendar/index.js +6 -8
  103. package/card/definition.cjs +1 -1
  104. package/card/definition.js +1 -1
  105. package/card/index.cjs +1 -1
  106. package/card/index.js +1 -1
  107. package/checkbox/definition.cjs +1 -2
  108. package/checkbox/definition.js +1 -2
  109. package/color-picker/definition.cjs +1 -6
  110. package/color-picker/definition.js +1 -6
  111. package/color-picker/index.cjs +1 -1
  112. package/color-picker/index.js +2 -7
  113. package/combobox/definition.cjs +2 -8
  114. package/combobox/definition.js +2 -8
  115. package/combobox/index.cjs +1 -1
  116. package/combobox/index.js +2 -9
  117. package/contextual-help/definition.cjs +1 -1
  118. package/contextual-help/definition.js +1 -1
  119. package/custom-elements.json +636 -1045
  120. package/data-grid/definition.cjs +72 -85
  121. package/data-grid/definition.js +75 -88
  122. package/data-grid/index.cjs +2 -2
  123. package/data-grid/index.js +7 -39
  124. package/date-picker/definition.cjs +1 -1
  125. package/date-picker/definition.js +1 -1
  126. package/date-range-picker/definition.cjs +1 -3
  127. package/date-range-picker/definition.js +1 -3
  128. package/date-range-picker/index.cjs +1 -1
  129. package/date-range-picker/index.js +1 -5
  130. package/date-time-picker/definition.cjs +1 -1
  131. package/date-time-picker/definition.js +1 -1
  132. package/dial-pad/definition.cjs +2 -11
  133. package/dial-pad/definition.js +3 -12
  134. package/dial-pad/index.cjs +1 -1
  135. package/dial-pad/index.js +14 -38
  136. package/dialog/definition.cjs +2 -3
  137. package/dialog/definition.js +2 -3
  138. package/dialog/index.cjs +1 -1
  139. package/dialog/index.js +1 -2
  140. package/empty-state/definition.js +1 -1
  141. package/fab/definition.cjs +1 -2
  142. package/fab/definition.js +1 -2
  143. package/fab/index.cjs +1 -1
  144. package/fab/index.js +1 -2
  145. package/file-picker/definition.cjs +2 -5
  146. package/file-picker/definition.js +3 -6
  147. package/file-picker/index.cjs +1 -1
  148. package/file-picker/index.js +1 -4
  149. package/icon/definition.cjs +7 -5
  150. package/icon/definition.js +7 -5
  151. package/index.cjs +95 -94
  152. package/index.js +18 -18
  153. package/layout/definition.cjs +1 -1
  154. package/layout/definition.js +1 -1
  155. package/layout/index.cjs +1 -1
  156. package/layout/index.js +1 -1
  157. package/lib/card/card.d.ts +0 -2
  158. package/lib/combobox/combobox.d.ts +1 -1
  159. package/lib/icon/icon.d.ts +0 -1
  160. package/lib/menu/menu.d.ts +0 -1
  161. package/lib/menu-item/menu-item.d.ts +0 -1
  162. package/lib/pagination/pagination.d.ts +0 -3
  163. package/lib/rich-text-editor/rte/exports.d.ts +1 -0
  164. package/lib/rich-text-editor/rte/features/keyboard-shortcuts.d.ts +16 -0
  165. package/lib/rich-text-editor/rte/instance.d.ts +2 -1
  166. package/lib/select/select.d.ts +2 -2
  167. package/lib/table/table-head.d.ts +1 -0
  168. package/lib/tabs/tabs.d.ts +0 -1
  169. package/lib/text-field/text-field.d.ts +0 -1
  170. package/locales/de-DE.cjs +95 -95
  171. package/locales/de-DE.js +95 -95
  172. package/locales/en-GB.cjs +1 -1
  173. package/locales/en-GB.js +1 -1
  174. package/locales/en-US.cjs +95 -95
  175. package/locales/en-US.js +95 -95
  176. package/locales/ja-JP.cjs +94 -94
  177. package/locales/ja-JP.js +94 -94
  178. package/locales/zh-CN.cjs +94 -94
  179. package/locales/zh-CN.js +94 -94
  180. package/menu/definition.cjs +2 -3
  181. package/menu/definition.js +2 -3
  182. package/menu-item/definition.cjs +1 -1
  183. package/menu-item/definition.js +1 -1
  184. package/nav-disclosure/definition.cjs +1 -1
  185. package/nav-disclosure/definition.js +1 -1
  186. package/nav-disclosure/index.cjs +1 -1
  187. package/nav-disclosure/index.js +1 -1
  188. package/nav-item/definition.cjs +1 -1
  189. package/nav-item/definition.js +1 -1
  190. package/nav-item/index.cjs +1 -1
  191. package/nav-item/index.js +1 -1
  192. package/number-field/definition.cjs +2 -2
  193. package/number-field/definition.js +2 -2
  194. package/number-field/index.cjs +1 -1
  195. package/number-field/index.js +1 -1
  196. package/package.json +19 -17
  197. package/pagination/definition.cjs +1 -3
  198. package/pagination/definition.js +3 -5
  199. package/pagination/index.cjs +3 -3
  200. package/pagination/index.js +4 -6
  201. package/popover/definition.cjs +1 -8
  202. package/popover/definition.js +1 -8
  203. package/popover/index.cjs +1 -1
  204. package/popover/index.js +6 -17
  205. package/popup/definition.cjs +1 -1
  206. package/popup/definition.js +1 -1
  207. package/radio/definition.cjs +1 -5
  208. package/radio/definition.js +1 -5
  209. package/radio-group/definition.js +2 -2
  210. package/range-slider/definition.cjs +1 -1
  211. package/range-slider/definition.js +2 -2
  212. package/range-slider/index.cjs +1 -1
  213. package/range-slider/index.js +1 -1
  214. package/rich-text-editor/definition.cjs +177 -63
  215. package/rich-text-editor/definition.js +177 -64
  216. package/rich-text-editor/index.cjs +12 -12
  217. package/rich-text-editor/index.js +1651 -1586
  218. package/rich-text-view/definition.js +1 -1
  219. package/searchable-select/definition.cjs +2 -5
  220. package/searchable-select/definition.js +2 -5
  221. package/searchable-select/index.cjs +1 -1
  222. package/searchable-select/index.js +2 -6
  223. package/select/definition.cjs +4 -14
  224. package/select/definition.js +5 -15
  225. package/selectable-box/definition.cjs +1 -1
  226. package/selectable-box/definition.js +2 -2
  227. package/selectable-box/index.cjs +1 -1
  228. package/selectable-box/index.js +1 -1
  229. package/side-drawer/definition.cjs +1 -1
  230. package/side-drawer/definition.js +2 -2
  231. package/side-drawer/index.cjs +1 -1
  232. package/side-drawer/index.js +2 -5
  233. package/simple-color-picker/definition.cjs +18 -9
  234. package/simple-color-picker/definition.js +19 -10
  235. package/simple-color-picker/index.cjs +5 -5
  236. package/simple-color-picker/index.js +23 -23
  237. package/slider/definition.cjs +1 -6
  238. package/slider/definition.js +3 -8
  239. package/split-button/definition.cjs +1 -1
  240. package/split-button/definition.js +2 -2
  241. package/split-button/index.cjs +1 -1
  242. package/split-button/index.js +1 -1
  243. package/status/definition.cjs +9 -3
  244. package/status/definition.js +11 -5
  245. package/status/index.cjs +10 -7
  246. package/status/index.js +46 -39
  247. package/styles/core/all.css +6 -5
  248. package/styles/core/theme.css +6 -5
  249. package/styles/core/typography.css +1 -2
  250. package/styles/tokens/theme-dark.css +17 -21
  251. package/styles/tokens/theme-light.css +17 -21
  252. package/styles/tokens/vivid-2-compat.css +1 -2
  253. package/switch/definition.cjs +1 -2
  254. package/switch/definition.js +2 -3
  255. package/switch/index.cjs +1 -1
  256. package/switch/index.js +1 -2
  257. package/tab/definition.cjs +1 -1
  258. package/tab/definition.js +2 -2
  259. package/tab-panel/definition.js +1 -1
  260. package/table/definition.cjs +17 -11
  261. package/table/definition.js +19 -13
  262. package/table/index.cjs +18 -14
  263. package/table/index.js +55 -48
  264. package/tabs/definition.cjs +0 -2
  265. package/tabs/definition.js +2 -4
  266. package/tabs/index.cjs +1 -1
  267. package/tabs/index.js +0 -2
  268. package/tag/definition.cjs +1 -1
  269. package/tag/definition.js +2 -2
  270. package/tag/index.cjs +1 -1
  271. package/tag/index.js +1 -1
  272. package/tag-group/definition.js +1 -1
  273. package/text-area/definition.cjs +1 -7
  274. package/text-area/definition.js +2 -8
  275. package/text-area/index.cjs +1 -1
  276. package/text-area/index.js +1 -7
  277. package/text-field/definition.cjs +0 -10
  278. package/text-field/definition.js +1 -11
  279. package/time-picker/definition.cjs +1 -1
  280. package/time-picker/definition.js +2 -2
  281. package/toggletip/definition.cjs +0 -2
  282. package/toggletip/definition.js +1 -3
  283. package/tooltip/definition.cjs +0 -1
  284. package/tooltip/definition.js +1 -2
  285. package/tree-view/definition.cjs +0 -16
  286. package/tree-view/definition.js +1 -17
  287. package/tree-view/index.cjs +1 -1
  288. package/tree-view/index.js +0 -16
  289. package/unbundled/_commonjsHelpers.cjs +6 -2
  290. package/unbundled/_commonjsHelpers.js +6 -2
  291. package/unbundled/anchored.js +1 -1
  292. package/unbundled/attribute-binding-behaviour.cjs +0 -1
  293. package/unbundled/attribute-binding-behaviour.js +0 -1
  294. package/unbundled/base-color-picker.cjs +2 -5
  295. package/unbundled/base-color-picker.js +2 -5
  296. package/unbundled/base-progress.cjs +0 -3
  297. package/unbundled/base-progress.js +0 -3
  298. package/unbundled/button.cjs +1 -10
  299. package/unbundled/button.js +1 -10
  300. package/unbundled/calendar-picker.template.cjs +2 -4
  301. package/unbundled/calendar-picker.template.js +2 -4
  302. package/unbundled/data-grid.options.js +1 -1
  303. package/unbundled/definition.cjs +349 -170
  304. package/unbundled/definition.js +348 -170
  305. package/unbundled/definition2.cjs +169 -351
  306. package/unbundled/definition2.js +169 -350
  307. package/unbundled/definition3.cjs +1 -2
  308. package/unbundled/definition3.js +1 -2
  309. package/unbundled/definition4.cjs +1 -2
  310. package/unbundled/definition4.js +3 -4
  311. package/unbundled/definition5.cjs +1 -1
  312. package/unbundled/definition5.js +2 -2
  313. package/unbundled/delegates-aria.cjs +1 -1
  314. package/unbundled/delegates-aria.js +1 -1
  315. package/unbundled/enums.js +1 -1
  316. package/unbundled/form-associated.cjs +4 -5
  317. package/unbundled/form-associated.js +4 -5
  318. package/unbundled/host-semantics.cjs +1 -0
  319. package/unbundled/host-semantics.js +2 -1
  320. package/unbundled/key-codes.js +1 -1
  321. package/unbundled/listbox.cjs +6 -14
  322. package/unbundled/listbox.js +6 -14
  323. package/unbundled/localized.cjs +1 -0
  324. package/unbundled/localized.js +1 -0
  325. package/unbundled/mixins.cjs +0 -2
  326. package/unbundled/mixins.js +2 -4
  327. package/unbundled/picker-field.template.cjs +1 -2
  328. package/unbundled/picker-field.template.js +1 -2
  329. package/unbundled/scrollIntoView.cjs +0 -1
  330. package/unbundled/scrollIntoView.js +0 -1
  331. package/unbundled/slider.template.js +1 -1
  332. package/unbundled/slottable-request.cjs +3 -2
  333. package/unbundled/slottable-request.js +3 -2
  334. package/unbundled/text-field.cjs +1 -1
  335. package/unbundled/text-field.js +1 -1
  336. package/unbundled/time-selection-picker.template.cjs +1 -4
  337. package/unbundled/time-selection-picker.template.js +1 -4
  338. package/unbundled/vivid-element.cjs +2 -1
  339. package/unbundled/vivid-element.js +2 -1
  340. package/video-player/definition.cjs +7953 -7720
  341. package/video-player/definition.js +7955 -7722
  342. package/video-player/index.cjs +38 -54
  343. package/video-player/index.js +12785 -12735
  344. package/visually-hidden/definition.js +1 -1
  345. package/vivid.api.json +48 -341
@@ -1,21 +1,16 @@
1
1
  'use strict';
2
2
 
3
3
  const icon_definition = require('../icon/definition.cjs');
4
+ const progressRing_definition = require('../progress-ring/definition.cjs');
4
5
  const vividElement = require('./vivid-element.cjs');
5
6
  const fastElement = require('@microsoft/fast-element');
6
- const fastWebUtilities = require('@microsoft/fast-web-utilities');
7
- const keyCodes = require('./key-codes.cjs');
7
+ const button = require('./button.cjs');
8
8
  const affix = require('./affix.cjs');
9
- const hostSemantics = require('./host-semantics.cjs');
10
-
11
- const styles = ":host(:focus-visible){outline:none}:host([disabled]){pointer-events:none}.base{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}@media (hover: hover){.base:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}}.base.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base.disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:active:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base.active:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base.selected:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}@media (hover: hover){.base.selected:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}}.base.selected.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.base.connotation-cta{--_connotation-color-primary: var(--vvd-menu-item-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-text: var(--vvd-menu-item-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-menu-item-cta-primary-increment, var(--vvd-color-cta-600));--_connotation-color-firm: var(--vvd-menu-item-cta-firm, var(--vvd-color-cta-600));--_connotation-color-faint: var(--vvd-menu-item-cta-faint, var(--vvd-color-cta-50));--_connotation-color-soft: var(--vvd-menu-item-cta-soft, var(--vvd-color-cta-100));--_connotation-color-pale: var(--vvd-menu-item-cta-pale, var(--vvd-color-cta-300));--_connotation-color-dim: var(--vvd-menu-item-cta-dim, var(--vvd-color-cta-200))}.base:not(.connotation-cta){--_connotation-color-primary: var(--vvd-menu-item-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-menu-item-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-menu-item-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-firm: var(--vvd-menu-item-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-menu-item-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-menu-item-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-pale: var(--vvd-menu-item-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-dim: var(--vvd-menu-item-accent-dim, var(--vvd-color-neutral-200))}.base{--_menu-item-padding-inline: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*.4) }.base{display:flex;box-sizing:border-box;align-items:center;border-radius:8px;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);inline-size:100%}.base:not(.two-lines){gap:12px;min-block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)));padding-block:8px;padding-inline:var(--_menu-item-padding-inline)}.base.two-lines{gap:16px;min-block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)) + 1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)));padding-block:12px;padding-inline:var(--_menu-item-padding-inline)}@supports (user-select: none){.base{user-select:none}}.base:not(.disabled){cursor:pointer}:host(:not([role=presentation]):focus-visible) .base{box-shadow:0 0 0 4px color-mix(in srgb,var(--focus-stroke-color, var(--vvd-color-cta-500)),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}.icon{flex-shrink:0;font-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2))/2);line-height:1}.action,.decorative{display:flex;place-content:center}.action{color:var(--_appearance-color-text)}.base.trailing .action,.base.has-meta .action{order:2}:host(:not([check-appearance],[checked],[disabled])) .action{color:var(--vvd-color-neutral-500)}.base:not(.disabled) .decorative{color:var(--vvd-color-neutral-600)}.base.disabled .decorative{color:var(--vvd-color-neutral-200)}.base.has-meta .decorative{order:1}.chevron{order:3}.text{display:flex;overflow:hidden;flex-direction:column;gap:4px;margin-inline-end:auto}.text-primary,.text-secondary{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;font:var(--vvd-typography-base)}.text-primary{font:var(--vvd-typography-base);-webkit-line-clamp:var(--text-primary-line-clamp, 1)}.base:not(.disabled) .text-primary{color:var(--vvd-color-canvas-text)}.base.disabled .text-primary{color:var(--_appearance-color-text)}.base.two-lines .text-primary{font:var(--vvd-typography-base-bold)}.text-secondary{color:var(--vvd-color-neutral-800);font:var(--vvd-typography-base-condensed);-webkit-line-clamp:var(--text-secondary-line-clamp, 1)}.base.two-lines .text-secondary{color:var(--vvd-color-neutral-600)}.base.disabled .text-secondary{color:var(--_appearance-color-text)}.base.selected:not(.disabled) .text-secondary{color:var(--vvd-color-neutral-800)}:host([internal-part]) .text-primary{font:var(--_text-primary-custom-size, var--vvd-typography-base)}";
12
-
13
- const MenuItemRole = {
14
- menuitem: "menuitem",
15
- menuitemcheckbox: "menuitemcheckbox",
16
- menuitemradio: "menuitemradio",
17
- presentation: "presentation"
18
- };
9
+ const localized = require('./localized.cjs');
10
+ const linkable = require('./linkable.cjs');
11
+ const fastWebUtilities = require('@microsoft/fast-web-utilities');
12
+ const enums = require('./enums.cjs');
13
+ const delegatesAria = require('./delegates-aria.cjs');
19
14
 
20
15
  var __defProp = Object.defineProperty;
21
16
  var __decorateClass = (decorators, target, key, kind) => {
@@ -26,382 +21,205 @@ var __decorateClass = (decorators, target, key, kind) => {
26
21
  if (result) __defProp(target, key, result);
27
22
  return result;
28
23
  };
29
- class MenuItem extends hostSemantics.HostSemantics(affix.AffixIcon(vividElement.VividElement)) {
24
+ class Button extends affix.AffixIconWithTrailing(
25
+ localized.Localized(linkable.Linkable(button.VividFoundationButton))
26
+ ) {
30
27
  constructor() {
31
28
  super();
32
- /**
33
- * The role of the element.
34
- *
35
- * @deprecated Use `control-type` instead for checkbox and radio items. If the menu item is not a direct descendant of a menu, role will default to `presentation`.
36
- * @public
37
- * @remarks
38
- * HTML Attribute: role
39
- */
40
- this.role = MenuItemRole.menuitem;
41
- this.checked = false;
42
- /**
43
- * @internal
44
- */
45
- this.handleMenuItemClick = (e) => {
46
- if (this._isSyntheticClickEvent(e)) {
47
- return true;
48
- }
49
- this.invoke();
50
- return Boolean(this._isPresentational);
51
- };
52
- /**
53
- * @internal
54
- */
55
- this.handleMouseOver = (_) => {
56
- if (this.disabled || !this.submenu || this.expanded) {
57
- return false;
58
- }
59
- this.expanded = true;
60
- return false;
61
- };
62
- /**
63
- * @internal
64
- */
65
- this.handleMouseOut = (_) => {
66
- if (!this.expanded || this.contains(document.activeElement)) {
67
- return false;
68
- }
69
- this.expanded = false;
70
- return false;
71
- };
72
- this.invoke = () => {
73
- if (this.disabled || this._isPresentational) {
74
- return;
75
- }
76
- switch (this.controlType) {
77
- case "checkbox":
78
- this.checked = !this.checked;
79
- break;
80
- case "radio":
81
- if (!this.checked) {
82
- this.checked = true;
83
- }
84
- break;
85
- default:
86
- if (this.submenu) {
87
- this.expanded = true;
88
- } else {
89
- this.$emit("change");
90
- }
91
- break;
92
- }
93
- };
94
- this.checkTrailing = false;
95
- /**
96
- * @internal
97
- */
98
- this.handleMenuItemKeyDown = (e) => {
99
- if (e.defaultPrevented) {
100
- return false;
101
- }
102
- switch (e.key) {
103
- case fastWebUtilities.keyEnter:
104
- case fastWebUtilities.keySpace:
105
- this.invoke();
106
- if (!this.disabled) {
107
- this.#emitSyntheticClick();
108
- }
109
- return false;
110
- case keyCodes.keyArrowRight: {
111
- /* v8 ignore else -- @preserve */
112
- if (this.submenu) {
113
- this.expanded = true;
114
- this.#emitSyntheticClick();
115
- }
116
- return false;
117
- }
118
- case keyCodes.keyArrowLeft:
119
- if (this.expanded) {
120
- this.#emitSyntheticClick();
121
- this.expanded = false;
122
- this.focus();
123
- return false;
124
- }
125
- }
126
- return true;
127
- };
128
- this.#syntheticClickEvents = /* @__PURE__ */ new WeakSet();
129
- this.addEventListener("expanded-change", this.#expandedChange);
130
- }
131
- /**
132
- * @internal
133
- */
134
- expandedChanged() {
135
- /* v8 ignore if -- @preserve */
136
- if (this.$fastController.isConnected) {
137
- if (this.submenu && !this.expanded) {
138
- this.submenu.collapseExpandedItem();
139
- }
140
- this.$emit("expanded-change", this, { bubbles: false });
141
- }
142
- }
143
- #ensureRoleMatchesPresentational() {
144
- if (this._isPresentational) {
145
- if (this.role === "menuitem") {
146
- this.role = "presentation";
147
- }
148
- } else if (this.role === "presentation") {
149
- this.role = MenuItemRole.menuitem;
150
- }
151
- }
152
- /**
153
- * @internal
154
- */
155
- _isPresentationalChanged() {
156
- if (this.$fastController.isConnected) {
157
- this.#ensureRoleMatchesPresentational();
158
- }
159
- }
160
- /**
161
- * @internal
162
- */
163
- checkedChanged() {
164
- if (this.$fastController.isConnected) {
165
- this.$emit("change");
166
- }
167
- }
168
- /**
169
- * @internal
170
- */
171
- connectedCallback() {
172
- super.connectedCallback();
173
- fastElement.Updates.enqueue(() => {
174
- this._isPresentational = this._isPresentational ?? true;
175
- this.#ensureRoleMatchesPresentational();
176
- });
177
- }
178
- /**
179
- * @internal
180
- */
181
- slottedSubmenuChanged() {
182
- if (this.submenu) {
183
- this.submenu.anchor = this;
184
- this.submenu.placement = "right-start";
185
- this.submenu.collapseExpandedItem = () => this.#collapseExpandedItem();
186
- this.submenu._popupOffset = 5;
187
- }
188
- }
189
- /**
190
- * @internal
191
- */
192
- get submenu() {
193
- if (this.slottedSubmenu?.length) {
194
- return this.slottedSubmenu[0];
195
- } else {
196
- return null;
197
- }
29
+ this.stacked = false;
30
+ this.pending = false;
31
+ this.dropdownIndicator = false;
32
+ this.active = false;
33
+ this.title = "";
198
34
  }
199
35
  /**
200
- * @internal
36
+ * Handles click events.
37
+ * Prevents interaction when disabled or pending.
201
38
  */
202
- get hasSubmenu() {
203
- return this.submenu !== null;
204
- }
205
- #collapseExpandedItem() {
206
- this.expanded = false;
207
- }
208
- #expandedChange() {
209
- if (this.submenu) {
210
- this.submenu.open = this.expanded;
39
+ clickHandler(event) {
40
+ if (this.disabled || this.pending) {
41
+ event.preventDefault();
42
+ event.stopImmediatePropagation();
43
+ return;
211
44
  }
212
45
  }
213
- #syntheticClickEvents;
214
- /**
215
- * @internal
216
- */
217
- _isSyntheticClickEvent(event) {
218
- return this.#syntheticClickEvents.has(event);
219
- }
220
- #emitSyntheticClick() {
221
- const mouseEvent = new MouseEvent("click", {
222
- bubbles: true,
223
- composed: true
224
- });
225
- this.#syntheticClickEvents.add(mouseEvent);
226
- this.dispatchEvent(mouseEvent);
227
- }
228
46
  }
229
47
  __decorateClass([
230
- fastElement.attr({ mode: "boolean" })
231
- ], MenuItem.prototype, "disabled");
232
- __decorateClass([
233
- fastElement.attr({ mode: "boolean" })
234
- ], MenuItem.prototype, "expanded");
235
- __decorateClass([
236
- fastElement.observable
237
- ], MenuItem.prototype, "_isPresentational");
238
- __decorateClass([
239
- vividElement.replaces({
240
- deprecatedPropertyName: "role",
241
- fromDeprecated: (role) => {
242
- switch (role) {
243
- case "menuitemcheckbox":
244
- return "checkbox";
245
- case "menuitemradio":
246
- return "radio";
247
- default:
248
- return void 0;
249
- }
250
- },
251
- toDeprecated: (controlType) => {
252
- switch (controlType) {
253
- case "checkbox":
254
- return "menuitemcheckbox";
255
- case "radio":
256
- return "menuitemradio";
257
- default:
258
- return "menuitem";
259
- }
48
+ fastElement.attr({
49
+ converter: {
50
+ fromView: (value) => value || null,
51
+ toView: (value) => value || null
260
52
  }
261
- }),
262
- fastElement.attr({ attribute: "control-type" })
263
- ], MenuItem.prototype, "controlType");
53
+ })
54
+ ], Button.prototype, "title");
264
55
  __decorateClass([
265
- fastElement.attr({ mode: "boolean" })
266
- ], MenuItem.prototype, "checked");
56
+ fastElement.attr
57
+ ], Button.prototype, "connotation");
267
58
  __decorateClass([
268
59
  fastElement.attr
269
- ], MenuItem.prototype, "text");
60
+ ], Button.prototype, "shape");
270
61
  __decorateClass([
271
- fastElement.attr({ attribute: "text-secondary" })
272
- ], MenuItem.prototype, "textSecondary");
62
+ fastElement.attr
63
+ ], Button.prototype, "appearance");
273
64
  __decorateClass([
274
65
  fastElement.attr
275
- ], MenuItem.prototype, "connotation");
66
+ ], Button.prototype, "size");
276
67
  __decorateClass([
277
- fastElement.attr({ mode: "boolean", attribute: "check-trailing" })
278
- ], MenuItem.prototype, "checkTrailing");
68
+ fastElement.attr({
69
+ mode: "boolean",
70
+ attribute: "stacked"
71
+ })
72
+ ], Button.prototype, "stacked");
279
73
  __decorateClass([
280
- fastElement.attr({ attribute: "check-appearance" })
281
- ], MenuItem.prototype, "checkedAppearance");
74
+ fastElement.attr({
75
+ mode: "boolean",
76
+ attribute: "pending"
77
+ })
78
+ ], Button.prototype, "pending");
282
79
  __decorateClass([
283
- fastElement.observable
284
- ], MenuItem.prototype, "metaSlottedContent");
80
+ fastElement.attr({
81
+ mode: "boolean",
82
+ attribute: "dropdown-indicator"
83
+ })
84
+ ], Button.prototype, "dropdownIndicator");
285
85
  __decorateClass([
286
- fastElement.observable
287
- ], MenuItem.prototype, "trailingMetaSlottedContent");
86
+ fastElement.attr({
87
+ mode: "boolean",
88
+ attribute: "active"
89
+ })
90
+ ], Button.prototype, "active");
288
91
  __decorateClass([
289
- fastElement.observable
290
- ], MenuItem.prototype, "slottedSubmenu");
92
+ fastElement.attr
93
+ ], Button.prototype, "label");
291
94
 
292
- const menuName = "menu";
95
+ const styles = ".chevron{display:flex;flex-shrink:0;font:var(--vvd-typography-base-extended);transform:rotate(0);transition:transform .2s}:host([data-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:host{--_vvd-button-accent-firm-wrapper: var( --vvd-button-accent-firm );--_vvd-button-cta-firm-wrapper: var( --vvd-button-cta-firm );--_vvd-button-success-firm-wrapper: var( --vvd-button-success-firm );--_vvd-button-alert-firm-wrapper: var( --vvd-button-alert-firm );--_vvd-button-announcement-firm-wrapper: var( --vvd-button-announcement-firm )}.control:not(.appearance-ghost-light,.appearance-filled,.appearance-outlined){--vvd-button-accent-firm: var( --_vvd-button-accent-firm-wrapper, var(--vvd-button-accent-primary) );--vvd-button-cta-firm: var( --_vvd-button-cta-firm-wrapper, var(--vvd-button-cta-primary) );--vvd-button-success-firm: var( --_vvd-button-success-firm-wrapper, var(--vvd-button-success-primary) );--vvd-button-alert-firm: var( --_vvd-button-alert-firm-wrapper, var(--vvd-button-alert-primary) );--vvd-button-announcement-firm: var( --_vvd-button-announcement-firm-wrapper, var(--vvd-button-announcement-primary) )}:host{display:inline-block}.control.connotation-cta{--_connotation-color-primary: var(--vvd-button-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-text: var(--vvd-button-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-button-cta-primary-increment, var(--vvd-color-cta-600));--_connotation-color-contrast: var(--vvd-button-cta-contrast, var(--vvd-color-cta-800));--_connotation-color-fierce: var(--vvd-button-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-firm: var(--vvd-button-cta-firm, var(--vvd-color-cta-600));--_connotation-color-soft: var(--vvd-button-cta-soft, var(--vvd-color-cta-100));--_connotation-color-faint: var(--vvd-button-cta-faint, var(--vvd-color-cta-50));--_connotation-color-fierce-primary: var(--vvd-button-cta-fierce-primary, var(--vvd-color-cta-700))}.control.connotation-success{--_connotation-color-primary: var(--vvd-button-success-primary, var(--vvd-color-success-500));--_connotation-color-primary-text: var(--vvd-button-success-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-button-success-primary-increment, var(--vvd-color-success-600));--_connotation-color-contrast: var(--vvd-button-success-contrast, var(--vvd-color-success-800));--_connotation-color-fierce: var(--vvd-button-success-fierce, var(--vvd-color-success-700));--_connotation-color-firm: var(--vvd-button-success-firm, var(--vvd-color-success-600));--_connotation-color-soft: var(--vvd-button-success-soft, var(--vvd-color-success-100));--_connotation-color-faint: var(--vvd-button-success-faint, var(--vvd-color-success-50));--_connotation-color-fierce-primary: var(--vvd-button-success-fierce-primary, var(--vvd-color-success-700))}.control.connotation-alert{--_connotation-color-primary: var(--vvd-button-alert-primary, var(--vvd-color-alert-500));--_connotation-color-primary-text: var(--vvd-button-alert-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-button-alert-primary-increment, var(--vvd-color-alert-600));--_connotation-color-contrast: var(--vvd-button-alert-contrast, var(--vvd-color-alert-800));--_connotation-color-fierce: var(--vvd-button-alert-fierce, var(--vvd-color-alert-700));--_connotation-color-firm: var(--vvd-button-alert-firm, var(--vvd-color-alert-600));--_connotation-color-soft: var(--vvd-button-alert-soft, var(--vvd-color-alert-100));--_connotation-color-faint: var(--vvd-button-alert-faint, var(--vvd-color-alert-50));--_connotation-color-fierce-primary: var(--vvd-button-alert-fierce-primary, var(--vvd-color-alert-700))}.control.connotation-announcement{--_connotation-color-primary: var(--vvd-button-announcement-primary, var(--vvd-color-announcement-500));--_connotation-color-primary-text: var(--vvd-button-announcement-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-button-announcement-primary-increment, var(--vvd-color-announcement-600));--_connotation-color-contrast: var(--vvd-button-announcement-contrast, var(--vvd-color-announcement-800));--_connotation-color-fierce: var(--vvd-button-announcement-fierce, var(--vvd-color-announcement-700));--_connotation-color-firm: var(--vvd-button-announcement-firm, var(--vvd-color-announcement-600));--_connotation-color-soft: var(--vvd-button-announcement-soft, var(--vvd-color-announcement-100));--_connotation-color-faint: var(--vvd-button-announcement-faint, var(--vvd-color-announcement-50));--_connotation-color-fierce-primary: var(--vvd-button-announcement-fierce-primary, var(--vvd-color-announcement-700))}.control:not(.connotation-cta,.connotation-success,.connotation-alert,.connotation-announcement){--_connotation-color-primary: var(--vvd-button-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-button-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-button-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-contrast: var(--vvd-button-accent-contrast, var(--vvd-color-neutral-800));--_connotation-color-fierce: var(--vvd-button-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-firm: var(--vvd-button-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-soft: var(--vvd-button-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-faint: var(--vvd-button-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-fierce-primary: var(--vvd-button-accent-fierce-primary, var(--vvd-color-canvas-text))}.control.appearance-filled{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: transparent}.control.appearance-outlined{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--vvd-color-neutral-300)}.control,.control.appearance-ghost-light{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control.appearance-outlined-light{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--vvd-color-neutral-300)}@media(hover:hover){.control:hover:where(:not(.disabled,:disabled,.readonly)).appearance-filled{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary-increment);--_appearance-color-outline: transparent}.control:hover:where(:not(.disabled,:disabled,.readonly)).appearance-outlined{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: var(--vvd-color-neutral-300)}.control:hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.control:hover:where(:not(.disabled,:disabled,.readonly)).appearance-ghost-light{--_appearance-color-text: var(--_connotation-color-fierce-primary);--_appearance-color-fill: color-mix(in srgb, var(--_connotation-color-primary), transparent 90%);--_appearance-color-outline: transparent}.control:hover:where(:not(.disabled,:disabled,.readonly)).appearance-outlined-light{--_appearance-color-text: var(--_connotation-color-fierce-primary);--_appearance-color-fill: color-mix(in srgb, var(--_connotation-color-primary), transparent 90%);--_appearance-color-outline: var(--vvd-color-neutral-300)}}.control.hover:where(:not(.disabled,:disabled,.readonly)).appearance-filled{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary-increment);--_appearance-color-outline: transparent}.control.hover:where(:not(.disabled,:disabled,.readonly)).appearance-outlined{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: var(--vvd-color-neutral-300)}.control.hover:where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.control.hover:where(:not(.disabled,:disabled,.readonly)).appearance-ghost-light{--_appearance-color-text: var(--_connotation-color-fierce-primary);--_appearance-color-fill: color-mix(in srgb, var(--_connotation-color-primary), transparent 90%);--_appearance-color-outline: transparent}.control.hover:where(:not(.disabled,:disabled,.readonly)).appearance-outlined-light{--_appearance-color-text: var(--_connotation-color-fierce-primary);--_appearance-color-fill: color-mix(in srgb, var(--_connotation-color-primary), transparent 90%);--_appearance-color-outline: var(--vvd-color-neutral-300)}.control:disabled.appearance-filled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: transparent}.control:disabled.appearance-outlined{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--vvd-color-neutral-300)}.control:disabled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:disabled.appearance-ghost-light{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:disabled.appearance-outlined-light{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--vvd-color-neutral-300)}.control.disabled.appearance-filled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: transparent}.control.disabled.appearance-outlined{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--vvd-color-neutral-300)}.control.disabled,.control.disabled.appearance-ghost-light{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control.disabled.appearance-outlined-light{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--vvd-color-neutral-300)}.control:active:where(:not(.disabled,:disabled)).appearance-filled{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-fierce);--_appearance-color-outline: transparent}.control:active:where(:not(.disabled,:disabled)).appearance-outlined{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: var(--vvd-color-neutral-300)}.control:active:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.control:active:where(:not(.disabled,:disabled)).appearance-ghost-light{--_appearance-color-text: var(--_connotation-color-fierce-primary);--_appearance-color-fill: color-mix(in srgb, var(--_connotation-color-primary), transparent 80%);--_appearance-color-outline: transparent}.control:active:where(:not(.disabled,:disabled)).appearance-outlined-light{--_appearance-color-text: var(--_connotation-color-fierce-primary);--_appearance-color-fill: color-mix(in srgb, var(--_connotation-color-primary), transparent 80%);--_appearance-color-outline: var(--vvd-color-neutral-300)}.control.active:where(:not(.disabled,:disabled)).appearance-filled{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-fierce);--_appearance-color-outline: transparent}.control.active:where(:not(.disabled,:disabled)).appearance-outlined{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: var(--vvd-color-neutral-300)}.control.active:where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.control.active:where(:not(.disabled,:disabled)).appearance-ghost-light{--_appearance-color-text: var(--_connotation-color-fierce-primary);--_appearance-color-fill: color-mix(in srgb, var(--_connotation-color-primary), transparent 80%);--_appearance-color-outline: transparent}.control.active:where(:not(.disabled,:disabled)).appearance-outlined-light{--_appearance-color-text: var(--_connotation-color-fierce-primary);--_appearance-color-fill: color-mix(in srgb, var(--_connotation-color-primary), transparent 80%);--_appearance-color-outline: var(--vvd-color-neutral-300)}.control{--focus-stroke-gap-color: transparent;display:inline-flex;box-sizing:border-box;align-items:center;justify-content:space-between;border:0 none;border-radius:var(--_button-border-radius);margin:0;background-color:var(--_appearance-color-fill);block-size:var(--_button-block-size);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);gap:var(--_button-icon-gap);text-decoration:none;vertical-align:middle}.control .text{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:var(--button-line-clamp, 1);max-inline-size:100%;text-align:start}.control:not(.icon-only){inline-size:100%}.control:not(.disabled){cursor:var(--button-cursor, pointer)}.control.disabled{cursor:not-allowed}@supports (user-select: none){.control{user-select:none}}.control:not(.stacked).size-super-condensed{--_button-block-size: calc(1px*(24 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;font:var(--vvd-typography-base-condensed-bold);--_button-icon-gap: 4px;--_button-chevron-size: 10px}.control:not(.stacked).size-super-condensed.icon-only{padding-inline:calc(var(--_button-block-size) / 4)}.control:not(.stacked).size-super-condensed:not(.icon-only){padding-inline:8px}.control:not(.stacked).size-condensed{--_button-block-size: calc(1px*(32 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;font:var(--vvd-typography-base-condensed-bold);--_button-icon-gap: 8px;--_button-chevron-size: 12px}.control:not(.stacked).size-condensed.icon-only{padding-inline:calc(var(--_button-block-size) / 4)}.control:not(.stacked).size-condensed:not(.icon-only){padding-inline:12px}.control:not(.stacked).size-expanded{--_button-block-size: calc(1px*(48 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;font:var(--vvd-typography-base-extended-bold);--_button-icon-gap: 10px;--_button-chevron-size: 16px}.control:not(.stacked).size-expanded.icon-only{padding-inline:calc(var(--_button-block-size) / 4)}.control:not(.stacked).size-expanded:not(.icon-only){padding-inline:20px}.control:not(.stacked):not(.size-condensed,.size-expanded,.size-super-condensed){--_button-block-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;font:var(--vvd-typography-base-bold);--_button-icon-gap: 8px;--_button-chevron-size: 16px}.control:not(.stacked):not(.size-condensed,.size-expanded,.size-super-condensed).icon-only{padding-inline:calc(var(--_button-block-size) / 4)}.control:not(.stacked):not(.size-condensed,.size-expanded,.size-super-condensed):not(.icon-only){padding-inline:16px}.control:not(.shape-pill){--_button-border-radius: 8px}.control:not(.shape-pill).size-condensed:not(.stacked),.control:not(.shape-pill).size-super-condensed:not(.stacked){--_button-border-radius: 4px}.control.shape-pill:not(.icon-only,.stacked.size-super-condensed,.stacked.size-condensed,.stacked.normal){--_button-border-radius: 24px}.control.shape-pill.stacked.size-condensed,.control.shape-pill.stacked.size-super-condensed{--_button-border-radius: 16px}.control.shape-pill.stacked.size-normal{--_button-border-radius: 20px}.control.shape-pill.icon-only{--_button-border-radius: 50%}.control.stacked.size-super-condensed{--stacked-size: calc(1px*(24 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_button-block-size: calc(var(--stacked-size) + 20px);font:var(--vvd-typography-base-condensed-bold);--_button-icon-gap: 4px;--_button-chevron-size: 10px}.control.stacked.size-super-condensed.icon-only{padding-inline:calc(var(--_button-block-size) / 4)}.control.stacked.size-super-condensed:not(.icon-only){padding-inline:16px}.control.stacked.size-condensed{--stacked-size: calc(1px*(32 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_button-block-size: calc(var(--stacked-size) + 24px);font:var(--vvd-typography-base-condensed-bold);--_button-icon-gap: 6px;--_button-chevron-size: 12px}.control.stacked.size-condensed.icon-only{padding-inline:calc(var(--_button-block-size) / 4)}.control.stacked.size-condensed:not(.icon-only){padding-inline:12px}.control.stacked.size-expanded{--stacked-size: calc(1px*(48 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_button-block-size: calc(var(--stacked-size) + 32px);font:var(--vvd-typography-base-extended-bold);--_button-icon-gap: 10px;--_button-chevron-size: 16px}.control.stacked.size-expanded.icon-only{padding-inline:calc(var(--_button-block-size) / 4)}.control.stacked.size-expanded:not(.icon-only){padding-inline:20px}.control.stacked:not(.size-condensed,.size-expanded,.size-super-condensed){--stacked-size: calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;--_button-block-size: calc(var(--stacked-size) + 28px);font:var(--vvd-typography-base-bold);--_button-icon-gap: 8px;--_button-chevron-size: 16px}.control.stacked:not(.size-condensed,.size-expanded,.size-super-condensed).icon-only{padding-inline:calc(var(--_button-block-size) / 4)}.control.stacked:not(.size-condensed,.size-expanded,.size-super-condensed):not(.icon-only){padding-inline:16px}.control.appearance-filled{--focus-stroke-gap-color: transparent}.control.appearance-filled:focus-visible{position:relative;outline:none}.control.appearance-filled:focus-visible:after{box-shadow:0 0 0 4px color-mix(in srgb,var(--focus-stroke-color, var(--vvd-color-cta-500)),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px));position:absolute;display:block;border-radius:var(--focus-border-radius, inherit);block-size:calc(100% + var(--focus-block-size-addition, 4px));content:\"\";inline-size:calc(100% + var(--focus-block-size-addition, 4px));inset-block-start:50%;inset-inline-start:50%;transform:translate(-50%,-50%)}.control:not(.appearance-filled):focus-visible{box-shadow:0 0 0 4px color-mix(in srgb,var(--focus-stroke-color, var(--vvd-color-cta-500)),transparent 85%),inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:1px solid var(--focus-stroke-color, var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset, 0px))}slot[name=icon]{line-height:1}.icon-trailing slot[name=icon]{display:flex;order:1}.control.stacked slot[name=icon]{font-size:calc(var(--stacked-size) / 2)}.control:not(.stacked) slot[name=icon]{font-size:calc(var(--_button-block-size) / 2)}.chevron{font-size:var(--_button-chevron-size)}.content{display:flex;overflow:hidden;flex:1;align-items:center;justify-content:center;gap:var(--_button-icon-gap)}.control.stacked .content{flex-direction:column}:host([dropdown-indicator]) .content{justify-content:var(--button-content-alignment, flex-start);text-align:start}:host([dropdown-indicator][stacked]) .content{align-items:var(--button-content-alignment, flex-start);justify-content:center}.pending-no-icon{position:absolute}.pending-no-icon+.text{visibility:hidden}:host([icon-trailing][pending]) .pending{order:1}.sr-only{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}";
293
96
 
294
- const getIndicatorIcon = (x) => {
295
- if (x.checkedAppearance === "tick-only") {
296
- return x.checked ? "check-line" : "";
297
- }
298
- const iconType = x.controlType === "checkbox" ? "checkbox" : "radio";
299
- const iconStatus = x.checked ? "checked" : "unchecked";
300
- return `${iconType}-${iconStatus}-2-line`;
97
+ const chevronTemplateFactory = (context) => {
98
+ const iconTag = context.tagFor(icon_definition.VwcIconElement);
99
+ return fastElement.html`<${iconTag} class="chevron" aria-hidden="true" name="chevron-down-line"></${iconTag}>`;
301
100
  };
101
+
302
102
  const getClasses = ({
303
103
  connotation,
304
- disabled,
305
- checked,
306
- controlType,
307
- text: text2,
308
- textSecondary,
104
+ appearance,
105
+ shape,
106
+ iconTrailing,
309
107
  icon,
310
- metaSlottedContent,
311
- checkTrailing
108
+ label,
109
+ disabled,
110
+ pending,
111
+ stacked,
112
+ size,
113
+ iconSlottedContent,
114
+ ariaExpanded,
115
+ active,
116
+ dropdownIndicator
312
117
  }) => fastWebUtilities.classNames(
313
- "base",
118
+ "control",
314
119
  [`connotation-${connotation}`, Boolean(connotation)],
315
- ["disabled", Boolean(disabled)],
316
- ["selected", Boolean(controlType && checked)],
317
- ["trailing", Boolean(controlType && (checkTrailing || Boolean(icon)))],
318
- ["item-checkbox", controlType === "checkbox"],
319
- ["item-radio", controlType === "radio"],
320
- ["two-lines", Boolean(text2?.length) && Boolean(textSecondary?.length)],
321
- ["has-meta", Boolean(metaSlottedContent?.length)]
120
+ [`appearance-${appearance}`, Boolean(appearance)],
121
+ ["disabled", disabled || pending],
122
+ [`shape-${shape}`, Boolean(shape)],
123
+ [`size-${size}`, Boolean(size)],
124
+ [
125
+ "icon-only",
126
+ !label && !!(icon || iconSlottedContent?.length) && !dropdownIndicator
127
+ ],
128
+ ["icon-trailing", iconTrailing],
129
+ ["stacked", Boolean(stacked)],
130
+ ["active", ariaExpanded === "true" || active]
322
131
  );
323
- function checkIndicator(context) {
324
- const iconTag = context.tagFor(icon_definition.VwcIconElement);
325
- return fastElement.html`${fastElement.when(
326
- (x) => Boolean(x.controlType),
327
- fastElement.html`<span class="action"><${iconTag} class="icon" name="${(x) => getIndicatorIcon(x)}"></${iconTag}></span>`
328
- )}`;
132
+ function renderIconOrPending(context, icon, pending, size = enums.Size.Normal) {
133
+ if (pending && size != enums.Size.SuperCondensed) {
134
+ const progressTag = context.tagFor(progressRing_definition.VwcProgressRingElement);
135
+ const progressSize = {
136
+ [enums.Size.Condensed]: "-6",
137
+ [enums.Size.Normal]: "-5",
138
+ [enums.Size.Expanded]: "-4"
139
+ };
140
+ const getClassName = (x) => {
141
+ const slottedIconElement = x.querySelector('[slot="icon"]');
142
+ return fastWebUtilities.classNames("icon", "pending", [
143
+ "pending-no-icon",
144
+ !(icon || slottedIconElement)
145
+ ]);
146
+ };
147
+ return fastElement.html`<span class="${getClassName}" aria-hidden="true"><${progressTag} size="${progressSize[size]}"></${progressTag}></span>`;
148
+ } else {
149
+ const affixIconTemplate = affix.affixIconTemplateFactory(context);
150
+ return affixIconTemplate(icon, affix.IconWrapper.Slot);
151
+ }
329
152
  }
330
- function text() {
331
- return fastElement.html`${fastElement.when(
332
- (x) => x.text || x.textSecondary,
333
- fastElement.html`<span class="text">
334
- ${fastElement.when(
335
- (x) => x.text,
336
- fastElement.html`<span class="text-primary">${(x) => x.text}</span>`
337
- )}
153
+ const getButtonType = (type) => {
154
+ const types = ["submit", "button", "reset"];
155
+ if (types.indexOf(type) > -1) return type;
156
+ return "submit";
157
+ };
158
+ const buttonContent = (context) => {
159
+ const chevronTemplate = chevronTemplateFactory(context);
160
+ return fastElement.html`<span class="content">
161
+ ${(x) => renderIconOrPending(context, x.icon, x.pending, x.size)}
338
162
  ${fastElement.when(
339
- (x) => x.textSecondary,
340
- fastElement.html`<span class="text-secondary">${(x) => x.textSecondary}</span>`
341
- )}
342
- </span>`
343
- )}`;
344
- }
345
- const MenuItemTemplate = (context) => {
346
- const affixIconTemplate = affix.affixIconTemplateFactory(context);
347
- const iconTag = context.tagFor(icon_definition.VwcIconElement);
348
- return fastElement.html`
349
- <template
350
- ${hostSemantics.applyHostSemantics({
351
- role: MenuItemRole.menuitem,
352
- ariaHasPopup: (x) => x.hasSubmenu ? "menu" : void 0,
353
- ariaChecked: (x) => x.controlType ? x.checked : void 0,
354
- ariaDisabled: (x) => x.disabled,
355
- ariaExpanded: (x) => x.expanded
356
- })}
357
- @keydown="${(x, c) => x.handleMenuItemKeyDown(c.event)}"
358
- @click="${(x, c) => x.handleMenuItemClick(c.event)}"
359
- @mouseover="${(x, c) => x.handleMouseOver(c.event)}"
360
- @mouseout="${(x, c) => x.handleMouseOut(c.event)}"
361
- >
362
- <div class="${getClasses}">
363
- <slot name="meta" ${fastElement.slotted("metaSlottedContent")}></slot>
364
- ${checkIndicator(context)}
365
- ${fastElement.when(
366
- (x) => x.icon,
367
- fastElement.html`<span class="decorative"
368
- >${(x) => affixIconTemplate(x.icon)}</span
369
- >`
370
- )}
371
- ${text()}
372
- <slot
373
- name="trailing-meta"
374
- ${fastElement.slotted("trailingMetaSlottedContent")}
375
- ></slot>
376
- ${fastElement.when(
377
- (x) => x.hasSubmenu,
378
- fastElement.html`<${iconTag} class="chevron" name="chevron-right-line"></${iconTag}>`
163
+ (x) => x.label,
164
+ fastElement.html`<span class="text" aria-hidden="true">${(x) => x.label}</span>`
379
165
  )}
380
- </div>
381
- <slot
382
- name="submenu"
383
- ${fastElement.slotted({
384
- property: "slottedSubmenu",
385
- filter: fastElement.elements(context.tagForNonDependency(menuName))
166
+ <span class="sr-only"
167
+ >${(x) => x.pending ? x.locale.button.pendingLabel : x.ariaLabel ?? x.label}</span
168
+ >
169
+ </span>
170
+ ${fastElement.when((x) => x.dropdownIndicator, chevronTemplate)}`;
171
+ };
172
+ function renderButtonContent(context) {
173
+ return fastElement.html` <button
174
+ class="${getClasses}"
175
+ ?autofocus="${(x) => x.autofocus}"
176
+ form="${(x) => x.formId}"
177
+ formaction="${(x) => x.formaction}"
178
+ formenctype="${(x) => x.formenctype}"
179
+ formmethod="${(x) => x.formmethod}"
180
+ formnovalidate="${(x) => x.formnovalidate}"
181
+ formtarget="${(x) => x.formtarget}"
182
+ name="${(x) => x.name}"
183
+ type="${(x) => getButtonType(x.type)}"
184
+ value="${(x) => x.value}"
185
+ title="${(x) => x.title}"
186
+ ${delegatesAria.delegateAria({
187
+ ariaLabel: null,
188
+ ariaDisabled: (x) => x.disabled || x.pending
386
189
  })}
387
- ></slot>
388
- </template>
389
- `;
190
+ ${fastElement.ref("control")}
191
+ @click="${(x, c) => x.clickHandler(c.event)}"
192
+ >
193
+ ${buttonContent(context)}
194
+ </button>`;
195
+ }
196
+ function renderAnchorContent(context) {
197
+ return fastElement.html`${(x) => x._renderLinkElement(buttonContent(context), getClasses, {
198
+ ariaLabel: null
199
+ })}`;
200
+ }
201
+ const buttonTemplate = (context) => {
202
+ return fastElement.html` <template>
203
+ ${fastElement.when((x) => !x.href, fastElement.html`${renderButtonContent(context)}`)}
204
+ ${fastElement.when((x) => x.href, renderAnchorContent(context))}
205
+ </template>`;
390
206
  };
391
207
 
392
- const menuItemDefinition = vividElement.defineVividComponent(
393
- "menu-item",
394
- MenuItem,
395
- MenuItemTemplate,
396
- [icon_definition.iconDefinition],
208
+ const buttonDefinition = vividElement.defineVividComponent(
209
+ "button",
210
+ Button,
211
+ buttonTemplate,
212
+ [icon_definition.iconDefinition, progressRing_definition.progressRingDefinition],
397
213
  {
398
- styles
214
+ styles,
215
+ shadowOptions: {
216
+ delegatesFocus: true
217
+ }
399
218
  }
400
219
  );
401
- const registerMenuItem = vividElement.createRegisterFunction(menuItemDefinition);
220
+ const registerButton = vividElement.createRegisterFunction(buttonDefinition);
402
221
 
403
- exports.MenuItem = MenuItem;
404
- exports.MenuItemRole = MenuItemRole;
405
- exports.menuItemDefinition = menuItemDefinition;
406
- exports.menuName = menuName;
407
- exports.registerMenuItem = registerMenuItem;
222
+ exports.Button = Button;
223
+ exports.buttonDefinition = buttonDefinition;
224
+ exports.chevronTemplateFactory = chevronTemplateFactory;
225
+ exports.registerButton = registerButton;