@vonage/vivid 3.51.0 → 3.53.0

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 (340) hide show
  1. package/README.md +1 -1
  2. package/accordion/index.cjs +1 -1
  3. package/accordion/index.js +1 -1
  4. package/accordion-item/index.cjs +1 -1
  5. package/accordion-item/index.js +1 -1
  6. package/alert/index.cjs +3 -3
  7. package/alert/index.js +3 -3
  8. package/appearance-ui/index.cjs +19 -11
  9. package/appearance-ui/index.js +19 -11
  10. package/audio-player/index.cjs +4 -3
  11. package/audio-player/index.js +4 -3
  12. package/avatar/index.cjs +1 -1
  13. package/avatar/index.js +1 -1
  14. package/badge/index.cjs +1 -1
  15. package/badge/index.js +1 -1
  16. package/banner/index.cjs +2 -2
  17. package/banner/index.js +2 -2
  18. package/breadcrumb-item/index.cjs +1 -1
  19. package/breadcrumb-item/index.js +1 -1
  20. package/button/index.cjs +2 -2
  21. package/button/index.js +2 -2
  22. package/card/index.cjs +2 -2
  23. package/card/index.js +2 -2
  24. package/checkbox/index.cjs +3 -2
  25. package/checkbox/index.js +3 -2
  26. package/combobox/index.cjs +5 -8
  27. package/combobox/index.js +5 -8
  28. package/custom-elements.json +2310 -769
  29. package/data-grid/index.cjs +1 -1
  30. package/data-grid/index.js +1 -1
  31. package/date-picker/index.cjs +7 -9
  32. package/date-picker/index.js +7 -9
  33. package/date-range-picker/index.cjs +7 -9
  34. package/date-range-picker/index.js +7 -9
  35. package/dial-pad/index.cjs +33 -0
  36. package/dial-pad/index.js +31 -0
  37. package/dialog/index.cjs +4 -4
  38. package/dialog/index.js +4 -4
  39. package/divider/index.cjs +1 -1
  40. package/divider/index.js +1 -1
  41. package/elevation/index.cjs +1 -1
  42. package/elevation/index.js +1 -1
  43. package/empty-state/index.cjs +2 -2
  44. package/empty-state/index.js +2 -2
  45. package/fab/index.cjs +2 -2
  46. package/fab/index.js +2 -2
  47. package/file-picker/index.cjs +4 -5
  48. package/file-picker/index.js +4 -5
  49. package/header/index.cjs +2 -2
  50. package/header/index.js +2 -2
  51. package/icon/index.cjs +1 -1
  52. package/icon/index.js +1 -1
  53. package/index.cjs +135 -123
  54. package/index.js +48 -46
  55. package/layout/index.cjs +1 -1
  56. package/layout/index.js +1 -1
  57. package/lib/avatar/definition.d.ts +1 -1
  58. package/lib/button/button.d.ts +1 -0
  59. package/lib/button/definition.d.ts +1 -1
  60. package/lib/calendar-event/definition.d.ts +1 -1
  61. package/lib/components.d.ts +3 -0
  62. package/lib/dial-pad/definition.d.ts +3 -0
  63. package/lib/dial-pad/dial-pad.d.ts +14 -0
  64. package/lib/dial-pad/dial-pad.template.d.ts +4 -0
  65. package/lib/dial-pad/locale.d.ts +18 -0
  66. package/lib/enums.d.ts +6 -0
  67. package/lib/layout/definition.d.ts +1 -1
  68. package/lib/menu-item/menu-item.d.ts +3 -0
  69. package/lib/range-slider/definition.d.ts +3 -0
  70. package/lib/range-slider/locale.d.ts +4 -0
  71. package/lib/range-slider/range-slider.d.ts +32 -0
  72. package/lib/range-slider/range-slider.form-associated.d.ts +10 -0
  73. package/lib/range-slider/range-slider.template.d.ts +4 -0
  74. package/lib/range-slider/utils/lerp.d.ts +2 -0
  75. package/lib/range-slider/utils/roundToStepValue.d.ts +1 -0
  76. package/lib/slider/slider.template.d.ts +1 -0
  77. package/lib/split-button/definition.d.ts +1 -1
  78. package/lib/text-anchor/definition.d.ts +1 -0
  79. package/lib/text-anchor/text-anchor.d.ts +5 -0
  80. package/lib/video-player/definition.d.ts +3 -0
  81. package/lib/video-player/locale.d.ts +1 -0
  82. package/lib/video-player/video-player.d.ts +17 -0
  83. package/lib/video-player/video-player.template.d.ts +4 -0
  84. package/listbox/index.cjs +25 -24
  85. package/listbox/index.js +25 -24
  86. package/locales/en-GB.cjs +34 -0
  87. package/locales/en-GB.js +34 -0
  88. package/locales/en-US.cjs +202 -0
  89. package/locales/en-US.js +202 -0
  90. package/locales/ja-JP.cjs +202 -1
  91. package/locales/ja-JP.js +202 -1
  92. package/locales/zh-CN.cjs +203 -0
  93. package/locales/zh-CN.js +203 -0
  94. package/menu/index.cjs +7 -7
  95. package/menu/index.js +7 -7
  96. package/menu-item/index.cjs +4 -4
  97. package/menu-item/index.js +4 -4
  98. package/nav/index.cjs +1 -1
  99. package/nav/index.js +1 -1
  100. package/nav-disclosure/index.cjs +2 -2
  101. package/nav-disclosure/index.js +2 -2
  102. package/nav-item/index.cjs +2 -2
  103. package/nav-item/index.js +2 -2
  104. package/note/index.cjs +2 -2
  105. package/note/index.js +2 -2
  106. package/number-field/index.cjs +5 -6
  107. package/number-field/index.js +5 -6
  108. package/option/index.cjs +2 -2
  109. package/option/index.js +2 -2
  110. package/package.json +34 -34
  111. package/pagination/index.cjs +3 -3
  112. package/pagination/index.js +3 -3
  113. package/popup/index.cjs +4 -4
  114. package/popup/index.js +4 -4
  115. package/progress/index.cjs +1 -1
  116. package/progress/index.js +1 -1
  117. package/progress-ring/index.cjs +1 -1
  118. package/progress-ring/index.js +1 -1
  119. package/radio/index.cjs +1 -1
  120. package/radio/index.js +1 -1
  121. package/radio-group/index.cjs +1 -1
  122. package/radio-group/index.js +1 -1
  123. package/range-slider/index.cjs +22 -0
  124. package/range-slider/index.js +20 -0
  125. package/select/index.cjs +7 -6
  126. package/select/index.js +7 -6
  127. package/selectable-box/index.cjs +5 -4
  128. package/selectable-box/index.js +5 -4
  129. package/shared/Reflector.cjs +5 -1
  130. package/shared/Reflector.js +5 -1
  131. package/shared/affix.cjs +11 -4
  132. package/shared/affix.js +12 -4
  133. package/shared/anchored.cjs +8 -2
  134. package/shared/anchored.js +8 -2
  135. package/shared/applyMixinsWithObservables.cjs +15 -0
  136. package/shared/applyMixinsWithObservables.js +13 -0
  137. package/shared/definition.cjs +9 -4
  138. package/shared/definition.js +9 -4
  139. package/shared/definition10.cjs +5 -5
  140. package/shared/definition10.js +5 -5
  141. package/shared/definition11.cjs +77 -49
  142. package/shared/definition11.js +78 -50
  143. package/shared/definition12.cjs +12 -14
  144. package/shared/definition12.js +12 -14
  145. package/shared/definition13.cjs +118 -75
  146. package/shared/definition13.js +118 -75
  147. package/shared/definition14.cjs +34 -33
  148. package/shared/definition14.js +34 -33
  149. package/shared/definition15.cjs +24 -12
  150. package/shared/definition15.js +24 -12
  151. package/shared/definition16.cjs +38 -43
  152. package/shared/definition16.js +38 -43
  153. package/shared/definition17.cjs +126 -66
  154. package/shared/definition17.js +127 -67
  155. package/shared/definition18.cjs +31 -15
  156. package/shared/definition18.js +31 -15
  157. package/shared/definition19.cjs +117 -81
  158. package/shared/definition19.js +117 -81
  159. package/shared/definition2.cjs +10 -5
  160. package/shared/definition2.js +10 -5
  161. package/shared/definition20.cjs +187 -227
  162. package/shared/definition20.js +183 -223
  163. package/shared/definition21.cjs +262 -69
  164. package/shared/definition21.js +261 -67
  165. package/shared/definition22.cjs +66 -61
  166. package/shared/definition22.js +64 -60
  167. package/shared/definition23.cjs +42 -77
  168. package/shared/definition23.js +41 -76
  169. package/shared/definition24.cjs +65 -2350
  170. package/shared/definition24.js +64 -2349
  171. package/shared/definition25.cjs +2402 -48
  172. package/shared/definition25.js +2401 -47
  173. package/shared/definition26.cjs +62 -28
  174. package/shared/definition26.js +61 -27
  175. package/shared/definition27.cjs +28 -54
  176. package/shared/definition27.js +27 -53
  177. package/shared/definition28.cjs +39 -819
  178. package/shared/definition28.js +38 -817
  179. package/shared/definition29.cjs +893 -54
  180. package/shared/definition29.js +893 -55
  181. package/shared/definition3.cjs +7 -10
  182. package/shared/definition3.js +7 -10
  183. package/shared/definition30.cjs +69 -85
  184. package/shared/definition30.js +68 -84
  185. package/shared/definition31.cjs +86 -23
  186. package/shared/definition31.js +86 -23
  187. package/shared/definition32.cjs +24 -14
  188. package/shared/definition32.js +23 -13
  189. package/shared/definition33.cjs +11 -53
  190. package/shared/definition33.js +10 -52
  191. package/shared/definition34.cjs +28 -500
  192. package/shared/definition34.js +28 -500
  193. package/shared/definition35.cjs +447 -194
  194. package/shared/definition35.js +447 -192
  195. package/shared/definition36.cjs +258 -188
  196. package/shared/definition36.js +255 -187
  197. package/shared/definition37.cjs +204 -78
  198. package/shared/definition37.js +203 -76
  199. package/shared/definition38.cjs +55 -51
  200. package/shared/definition38.js +52 -49
  201. package/shared/definition39.cjs +65 -423
  202. package/shared/definition39.js +64 -422
  203. package/shared/definition4.cjs +24 -12
  204. package/shared/definition4.js +24 -12
  205. package/shared/definition40.cjs +447 -35
  206. package/shared/definition40.js +444 -32
  207. package/shared/definition41.cjs +35 -678
  208. package/shared/definition41.js +34 -677
  209. package/shared/definition42.cjs +544 -99
  210. package/shared/definition42.js +543 -98
  211. package/shared/definition43.cjs +696 -77
  212. package/shared/definition43.js +695 -76
  213. package/shared/definition44.cjs +113 -563
  214. package/shared/definition44.js +112 -561
  215. package/shared/definition45.cjs +77 -117
  216. package/shared/definition45.js +75 -115
  217. package/shared/definition46.cjs +474 -86
  218. package/shared/definition46.js +474 -87
  219. package/shared/definition47.cjs +140 -23
  220. package/shared/definition47.js +139 -22
  221. package/shared/definition48.cjs +132 -57
  222. package/shared/definition48.js +131 -56
  223. package/shared/definition49.cjs +18 -524
  224. package/shared/definition49.js +17 -523
  225. package/shared/definition5.cjs +20 -17
  226. package/shared/definition5.js +20 -17
  227. package/shared/definition50.cjs +73 -25
  228. package/shared/definition50.js +72 -24
  229. package/shared/definition51.cjs +506 -99
  230. package/shared/definition51.js +505 -99
  231. package/shared/definition52.cjs +29 -277
  232. package/shared/definition52.js +28 -276
  233. package/shared/definition53.cjs +97 -256
  234. package/shared/definition53.js +97 -255
  235. package/shared/definition54.cjs +287 -769
  236. package/shared/definition54.js +287 -769
  237. package/shared/definition55.cjs +305 -105
  238. package/shared/definition55.js +304 -104
  239. package/shared/definition56.cjs +841 -81
  240. package/shared/definition56.js +840 -80
  241. package/shared/definition57.cjs +153 -69
  242. package/shared/definition57.js +152 -68
  243. package/shared/definition58.cjs +138 -299
  244. package/shared/definition58.js +137 -298
  245. package/shared/definition59.cjs +72 -27
  246. package/shared/definition59.js +71 -26
  247. package/shared/definition6.cjs +4 -5
  248. package/shared/definition6.js +4 -5
  249. package/shared/definition60.cjs +279 -1780
  250. package/shared/definition60.js +278 -1779
  251. package/shared/definition61.cjs +65870 -11
  252. package/shared/definition61.js +65869 -11
  253. package/shared/definition62.cjs +50 -0
  254. package/shared/definition62.js +46 -0
  255. package/shared/definition63.cjs +1828 -0
  256. package/shared/definition63.js +1824 -0
  257. package/shared/definition7.cjs +8 -6
  258. package/shared/definition7.js +8 -6
  259. package/shared/definition8.cjs +27 -20
  260. package/shared/definition8.js +27 -20
  261. package/shared/definition9.cjs +7 -10
  262. package/shared/definition9.js +7 -10
  263. package/shared/enums.cjs +8 -0
  264. package/shared/enums.js +8 -1
  265. package/shared/icon.cjs +7 -2
  266. package/shared/icon.js +7 -2
  267. package/shared/index2.cjs +67 -38
  268. package/shared/index2.js +67 -38
  269. package/shared/key-codes2.cjs +8 -0
  270. package/shared/key-codes2.js +5 -1
  271. package/shared/listbox.cjs +1 -1
  272. package/shared/listbox.js +1 -1
  273. package/shared/localization/Locale.d.ts +6 -0
  274. package/shared/patterns/form-elements/form-elements.d.ts +2 -3
  275. package/shared/patterns/index.d.ts +0 -1
  276. package/shared/presentationDate.cjs +140 -81
  277. package/shared/presentationDate.js +140 -81
  278. package/shared/slider.template.cjs +71 -0
  279. package/shared/slider.template.js +67 -0
  280. package/shared/text-anchor.cjs +6 -0
  281. package/shared/text-anchor.js +6 -0
  282. package/shared/text-anchor.template.cjs +33 -33
  283. package/shared/text-anchor.template.js +33 -33
  284. package/shared/text-field.cjs +1 -1
  285. package/shared/text-field.js +1 -1
  286. package/shared/utils/applyMixinsWithObservables.d.ts +1 -0
  287. package/side-drawer/index.cjs +1 -1
  288. package/side-drawer/index.js +1 -1
  289. package/slider/index.cjs +2 -1
  290. package/slider/index.js +2 -1
  291. package/split-button/index.cjs +2 -2
  292. package/split-button/index.js +2 -2
  293. package/style.css +1 -0
  294. package/styles/core/all.css +1 -1
  295. package/styles/core/theme.css +1 -1
  296. package/styles/core/typography.css +1 -1
  297. package/styles/fonts/spezia-variable.css +39 -13
  298. package/styles/tokens/theme-dark.css +4 -4
  299. package/styles/tokens/theme-light.css +4 -4
  300. package/styles/tokens/vivid-2-compat.css +4 -2
  301. package/switch/index.cjs +2 -2
  302. package/switch/index.js +2 -2
  303. package/tab/index.cjs +2 -2
  304. package/tab/index.js +2 -2
  305. package/tab-panel/index.cjs +1 -1
  306. package/tab-panel/index.js +1 -1
  307. package/tabs/index.cjs +4 -4
  308. package/tabs/index.js +4 -4
  309. package/tag/index.cjs +2 -2
  310. package/tag/index.js +2 -2
  311. package/tag-group/index.cjs +1 -1
  312. package/tag-group/index.js +1 -1
  313. package/text-area/index.cjs +4 -3
  314. package/text-area/index.js +4 -3
  315. package/text-field/index.cjs +4 -6
  316. package/text-field/index.js +4 -6
  317. package/time-picker/index.cjs +8 -10
  318. package/time-picker/index.js +8 -10
  319. package/toggletip/index.cjs +5 -5
  320. package/toggletip/index.js +5 -5
  321. package/tooltip/index.cjs +5 -5
  322. package/tooltip/index.js +5 -5
  323. package/tree-item/index.cjs +2 -2
  324. package/tree-item/index.js +2 -2
  325. package/tree-view/index.cjs +1 -1
  326. package/tree-view/index.js +1 -1
  327. package/video-player/index.cjs +17 -0
  328. package/video-player/index.js +15 -0
  329. package/vivid.api.json +428 -1
  330. package/focus/index.cjs +0 -7
  331. package/focus/index.js +0 -5
  332. package/lib/focus/definition.d.ts +0 -3
  333. package/lib/focus/focus.d.ts +0 -3
  334. package/lib/focus/focus.template.d.ts +0 -4
  335. package/lib/popup/popup.d.ts +0 -21
  336. package/shared/focus.cjs +0 -8
  337. package/shared/focus.js +0 -6
  338. package/shared/focus2.cjs +0 -11
  339. package/shared/focus2.js +0 -9
  340. package/shared/patterns/focus.d.ts +0 -3
@@ -1,14 +1,206 @@
1
- import { B as Button, a as buttonRegistries } from './definition11.js';
2
- import { a as attr, F as FoundationElement, o as observable, v as volatile, h as html, r as registerFactory } from './index.js';
3
- import { b as Size, S as Shape } from './enums.js';
4
- import { e as elements } from './slotted.js';
5
- import { r as ref } from './ref.js';
6
- import { c as children } from './children.js';
7
- import { r as repeat } from './repeat.js';
8
- import { c as classNames } from './class-names.js';
1
+ import { F as FoundationElement, O as Observable, _ as __decorate, o as observable, a as attr, h as html, r as registerFactory } from './index.js';
2
+ import { a as iconRegistries } from './definition27.js';
3
+ import { b as AffixIconWithTrailing, a as affixIconTemplateFactory, I as IconWrapper } from './affix.js';
4
+ import { A as ARIAGlobalStatesAndProperties } from './aria-global.js';
5
+ import { S as StartEnd } from './start-end.js';
6
+ import { a as applyMixins } from './apply-mixins.js';
7
+ import { i as isHTMLElement } from './dom.js';
9
8
  import { w as when } from './when.js';
9
+ import { c as classNames } from './class-names.js';
10
10
 
11
- const styles = ".control{display:inline-flex;justify-content:space-between}.control:not(.shape-pill){border-radius:4px}.control.shape-pill{border-radius:14px}.buttons-wrapper{display:flex;column-gap:4px}.vwc-pagination-button[size=super-condensed]{--base-size:calc(1px*(24 + 4*clamp(-1, var(--vvd-size-density, 0), 2)))}.vwc-pagination-button[size=condensed]{--base-size:calc(1px*(32 + 4*clamp(-1, var(--vvd-size-density, 0), 2)))}.vwc-pagination-button[size=normal]{--base-size:calc(1px*(40 + 4*clamp(-1, var(--vvd-size-density, 0), 2)))}.vwc-pagination-button::part(button){padding-inline:0}.dots{align-self:center;text-align:center}.dots:not(.size-super-condensed){font:var(--vvd-typography-base-bold)}.dots.size-super-condensed{font:var(--vvd-typography-base-condensed-bold);inline-size:calc(1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}.dots.size-condensed{inline-size:calc(1px*(32 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}.dots.size-normal{inline-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}\n";
11
+ /**
12
+ * Determines if the element is a {@link (ListboxOption:class)}
13
+ *
14
+ * @param element - the element to test.
15
+ * @public
16
+ */
17
+ function isListboxOption(el) {
18
+ return (isHTMLElement(el) &&
19
+ (el.getAttribute("role") === "option" ||
20
+ el instanceof HTMLOptionElement));
21
+ }
22
+ /**
23
+ * An Option Custom HTML Element.
24
+ * Implements {@link https://www.w3.org/TR/wai-aria-1.1/#option | ARIA option }.
25
+ *
26
+ * @slot start - Content which can be provided before the listbox option content
27
+ * @slot end - Content which can be provided after the listbox option content
28
+ * @slot - The default slot for listbox option content
29
+ * @csspart content - Wraps the listbox option content
30
+ *
31
+ * @public
32
+ */
33
+ let ListboxOption$1 = class ListboxOption extends FoundationElement {
34
+ constructor(text, value, defaultSelected, selected) {
35
+ super();
36
+ /**
37
+ * The defaultSelected state of the option.
38
+ * @public
39
+ */
40
+ this.defaultSelected = false;
41
+ /**
42
+ * Tracks whether the "selected" property has been changed.
43
+ * @internal
44
+ */
45
+ this.dirtySelected = false;
46
+ /**
47
+ * The checked state of the control.
48
+ *
49
+ * @public
50
+ */
51
+ this.selected = this.defaultSelected;
52
+ /**
53
+ * Track whether the value has been changed from the initial value
54
+ */
55
+ this.dirtyValue = false;
56
+ if (text) {
57
+ this.textContent = text;
58
+ }
59
+ if (value) {
60
+ this.initialValue = value;
61
+ }
62
+ if (defaultSelected) {
63
+ this.defaultSelected = defaultSelected;
64
+ }
65
+ if (selected) {
66
+ this.selected = selected;
67
+ }
68
+ this.proxy = new Option(`${this.textContent}`, this.initialValue, this.defaultSelected, this.selected);
69
+ this.proxy.disabled = this.disabled;
70
+ }
71
+ /**
72
+ * Updates the ariaChecked property when the checked property changes.
73
+ *
74
+ * @param prev - the previous checked value
75
+ * @param next - the current checked value
76
+ *
77
+ * @public
78
+ */
79
+ checkedChanged(prev, next) {
80
+ if (typeof next === "boolean") {
81
+ this.ariaChecked = next ? "true" : "false";
82
+ return;
83
+ }
84
+ this.ariaChecked = null;
85
+ }
86
+ /**
87
+ * Updates the proxy's text content when the default slot changes.
88
+ * @param prev - the previous content value
89
+ * @param next - the current content value
90
+ *
91
+ * @internal
92
+ */
93
+ contentChanged(prev, next) {
94
+ if (this.proxy instanceof HTMLOptionElement) {
95
+ this.proxy.textContent = this.textContent;
96
+ }
97
+ this.$emit("contentchange", null, { bubbles: true });
98
+ }
99
+ defaultSelectedChanged() {
100
+ if (!this.dirtySelected) {
101
+ this.selected = this.defaultSelected;
102
+ if (this.proxy instanceof HTMLOptionElement) {
103
+ this.proxy.selected = this.defaultSelected;
104
+ }
105
+ }
106
+ }
107
+ disabledChanged(prev, next) {
108
+ this.ariaDisabled = this.disabled ? "true" : "false";
109
+ if (this.proxy instanceof HTMLOptionElement) {
110
+ this.proxy.disabled = this.disabled;
111
+ }
112
+ }
113
+ selectedAttributeChanged() {
114
+ this.defaultSelected = this.selectedAttribute;
115
+ if (this.proxy instanceof HTMLOptionElement) {
116
+ this.proxy.defaultSelected = this.defaultSelected;
117
+ }
118
+ }
119
+ selectedChanged() {
120
+ this.ariaSelected = this.selected ? "true" : "false";
121
+ if (!this.dirtySelected) {
122
+ this.dirtySelected = true;
123
+ }
124
+ if (this.proxy instanceof HTMLOptionElement) {
125
+ this.proxy.selected = this.selected;
126
+ }
127
+ }
128
+ initialValueChanged(previous, next) {
129
+ // If the value is clean and the component is connected to the DOM
130
+ // then set value equal to the attribute value.
131
+ if (!this.dirtyValue) {
132
+ this.value = this.initialValue;
133
+ this.dirtyValue = false;
134
+ }
135
+ }
136
+ get label() {
137
+ var _a;
138
+ return (_a = this.value) !== null && _a !== void 0 ? _a : this.text;
139
+ }
140
+ get text() {
141
+ var _a, _b;
142
+ return (_b = (_a = this.textContent) === null || _a === void 0 ? void 0 : _a.replace(/\s+/g, " ").trim()) !== null && _b !== void 0 ? _b : "";
143
+ }
144
+ set value(next) {
145
+ const newValue = `${next !== null && next !== void 0 ? next : ""}`;
146
+ this._value = newValue;
147
+ this.dirtyValue = true;
148
+ if (this.proxy instanceof HTMLOptionElement) {
149
+ this.proxy.value = newValue;
150
+ }
151
+ Observable.notify(this, "value");
152
+ }
153
+ get value() {
154
+ var _a;
155
+ Observable.track(this, "value");
156
+ return (_a = this._value) !== null && _a !== void 0 ? _a : this.text;
157
+ }
158
+ get form() {
159
+ return this.proxy ? this.proxy.form : null;
160
+ }
161
+ };
162
+ __decorate([
163
+ observable
164
+ ], ListboxOption$1.prototype, "checked", void 0);
165
+ __decorate([
166
+ observable
167
+ ], ListboxOption$1.prototype, "content", void 0);
168
+ __decorate([
169
+ observable
170
+ ], ListboxOption$1.prototype, "defaultSelected", void 0);
171
+ __decorate([
172
+ attr({ mode: "boolean" })
173
+ ], ListboxOption$1.prototype, "disabled", void 0);
174
+ __decorate([
175
+ attr({ attribute: "selected", mode: "boolean" })
176
+ ], ListboxOption$1.prototype, "selectedAttribute", void 0);
177
+ __decorate([
178
+ observable
179
+ ], ListboxOption$1.prototype, "selected", void 0);
180
+ __decorate([
181
+ attr({ attribute: "value", mode: "fromView" })
182
+ ], ListboxOption$1.prototype, "initialValue", void 0);
183
+ /**
184
+ * States and properties relating to the ARIA `option` role.
185
+ *
186
+ * @public
187
+ */
188
+ class DelegatesARIAListboxOption {
189
+ }
190
+ __decorate([
191
+ observable
192
+ ], DelegatesARIAListboxOption.prototype, "ariaChecked", void 0);
193
+ __decorate([
194
+ observable
195
+ ], DelegatesARIAListboxOption.prototype, "ariaPosInSet", void 0);
196
+ __decorate([
197
+ observable
198
+ ], DelegatesARIAListboxOption.prototype, "ariaSelected", void 0);
199
+ __decorate([
200
+ observable
201
+ ], DelegatesARIAListboxOption.prototype, "ariaSetSize", void 0);
202
+ applyMixins(DelegatesARIAListboxOption, ARIAGlobalStatesAndProperties);
203
+ applyMixins(ListboxOption$1, StartEnd, DelegatesARIAListboxOption);
12
204
 
13
205
  var __defProp = Object.defineProperty;
14
206
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -21,195 +213,71 @@ var __decorateClass = (decorators, target, key, kind) => {
21
213
  __defProp(target, key, result);
22
214
  return result;
23
215
  };
24
- const MAX_DIGITS_AND_PLACEHOLDERS = 7;
25
- const totalConverter = {
26
- fromView: (value) => parseInt(value, 10),
27
- toView: (value) => value.toString()
28
- };
29
- class Pagination extends FoundationElement {
30
- constructor() {
31
- super();
32
- this.navIcons = false;
33
- this.total = 0;
34
- this.selectedIndex = 0;
35
- this.addEventListener("tabpressed", (e) => {
36
- const { value: currentLabel, shiftKey } = e.detail;
37
- const index = this.paginationButtons.findIndex((button) => Number(button.label) === currentLabel);
38
- const focusDirection = shiftKey ? -1 : 1;
39
- const newIndex = index + focusDirection;
40
- if (newIndex < 0) {
41
- return this.prevButton.focus();
42
- }
43
- if (newIndex > this.paginationButtons.length - 1) {
44
- return this.nextButton.focus();
45
- }
46
- this.paginationButtons && this.paginationButtons[index + focusDirection].focus();
47
- });
48
- }
49
- get pagesList() {
50
- return new Array(this.total < MAX_DIGITS_AND_PLACEHOLDERS ? this.total : MAX_DIGITS_AND_PLACEHOLDERS).fill(0).map((_, i, arr) => {
51
- if (i === 0)
52
- return 1;
53
- if (i === arr.length - 1)
54
- return this.total;
55
- if (this.selectedIndex !== void 0 && this.total > MAX_DIGITS_AND_PLACEHOLDERS) {
56
- if (this.selectedIndex < 4) {
57
- if (i === MAX_DIGITS_AND_PLACEHOLDERS - 2)
58
- return "...";
59
- }
60
- if (this.selectedIndex >= 4 && this.selectedIndex <= this.total - 5) {
61
- if (i > 1 && i < MAX_DIGITS_AND_PLACEHOLDERS - 2)
62
- return this.selectedIndex + (i - 2);
63
- if (i === 1 || i === MAX_DIGITS_AND_PLACEHOLDERS - 2)
64
- return "...";
65
- }
66
- if (this.selectedIndex > this.total - 5) {
67
- if (i > 1)
68
- return this.total - (6 - i);
69
- if (i === 1)
70
- return "...";
71
- }
72
- }
73
- return i + 1;
74
- });
216
+ class ListboxOption extends ListboxOption$1 {
217
+ // #region overrides base class accessor
218
+ set text(value) {
219
+ this._text = value;
75
220
  }
76
- totalChanged(_, newValue) {
77
- if (newValue < 0) {
78
- this.total = 0;
79
- }
80
- this.selectedIndex = 0;
221
+ get text() {
222
+ return this._text ?? "";
81
223
  }
82
- selectedIndexChanged(oldValue, newValue) {
83
- if (oldValue === void 0)
84
- return;
85
- this.$emit("pagination-change", { selectedIndex: newValue, total: this.total, oldIndex: oldValue });
224
+ get label() {
225
+ return this._label ?? this.text;
86
226
  }
87
- paginationButtonsChanged(_, newValue) {
88
- newValue.forEach((button) => {
89
- button.shadowRoot.querySelector("button").setAttribute("part", "button");
90
- });
227
+ set label(value) {
228
+ this._label = value;
91
229
  }
230
+ // #endregion overrides
92
231
  }
93
232
  __decorateClass([
94
- attr
95
- ], Pagination.prototype, "size", 2);
96
- __decorateClass([
97
- attr
98
- ], Pagination.prototype, "shape", 2);
99
- __decorateClass([
100
- observable
101
- ], Pagination.prototype, "paginationButtons", 2);
102
- __decorateClass([
103
- observable
104
- ], Pagination.prototype, "prevButton", 2);
105
- __decorateClass([
106
- observable
107
- ], Pagination.prototype, "nextButton", 2);
108
- __decorateClass([
109
- attr({ attribute: "nav-icons", mode: "boolean" })
110
- ], Pagination.prototype, "navIcons", 2);
233
+ attr({
234
+ attribute: "text"
235
+ })
236
+ ], ListboxOption.prototype, "_text", 2);
111
237
  __decorateClass([
112
- volatile
113
- ], Pagination.prototype, "pagesList", 1);
114
- __decorateClass([
115
- attr({ mode: "reflect", converter: totalConverter })
116
- ], Pagination.prototype, "total", 2);
117
- __decorateClass([
118
- attr({ mode: "reflect", converter: totalConverter, attribute: "selected-index" })
119
- ], Pagination.prototype, "selectedIndex", 2);
238
+ attr({
239
+ attribute: "label"
240
+ })
241
+ ], ListboxOption.prototype, "_label", 2);
242
+ applyMixins(ListboxOption, AffixIconWithTrailing);
120
243
 
121
- const ALLOWED_SIZES = [Size.SuperCondensed, Size.Condensed, Size.Normal];
122
- const ALLOWED_SHAPES = [Shape.Rounded, Shape.Pill];
123
- const handleSelection = (value, { parent: x }) => {
124
- return x.selectedIndex = Number(value) - 1;
125
- };
126
- const handleKeyDown = (value, { event, parent }) => {
127
- if (event.key === " " || event.key === "Enter") {
128
- handleSelection(value, { parent });
129
- }
130
- if (event.key === "Tab") {
131
- event.target.dispatchEvent(
132
- new CustomEvent("tabpressed", { detail: { value, shiftKey: event.shiftKey }, bubbles: true, composed: true })
133
- );
134
- }
135
- };
136
- const getClasses = (_) => classNames("control");
137
- function getButtonAppearance(value, { parent }) {
138
- return parent.selectedIndex === Number(value) - 1 ? "filled" : "ghost";
139
- }
140
- const paginationButtonRenderer = (buttonTag) => html`
141
- ${when(
142
- (value) => value !== "...",
143
- html`
144
- <${buttonTag} class="vwc-pagination-button"
145
- label="${(value) => value}"
146
- appearance="${getButtonAppearance}"
147
- size="${(_, { parent: x }) => getPaginationSize(x)}"
148
- shape="${(_, { parent: x }) => getPaginationShape(x)}"
149
- style="inline-size: ${(value) => getPaginationButtonWidth(value)};"
150
- tabindex="0"
151
- aria-current="${(value, { parent }) => parent.selectedIndex === Number(value) - 1}"
152
- @click="${handleSelection}"
153
- @keydown="${handleKeyDown}">
154
- </${buttonTag}>
155
- `
156
- )}
157
- ${when(
158
- (value) => value === "...",
159
- html`
160
- <div
161
- class="dots size-${(_, { parent: x }) => getPaginationSize(x)}">
162
- ...
163
- </div>`
164
- )}`;
165
- const getPaginationSize = (x) => {
166
- if (!x.size || !ALLOWED_SIZES.includes(x.size)) {
167
- return Size.SuperCondensed;
168
- }
169
- return x.size;
170
- };
171
- const getPaginationShape = (x) => {
172
- if (!x.shape || !ALLOWED_SHAPES.includes(x.shape)) {
173
- return Shape.Rounded;
174
- }
175
- return x.shape;
176
- };
177
- const getPaginationButtonWidth = (value) => {
178
- return `calc(var(--base-size) + ${String(value).length - 1}ch)`;
179
- };
180
- const PaginationTemplate = (context) => {
181
- const buttonTag = context.tagFor(Button);
182
- const paginationButtonTemplate = paginationButtonRenderer(buttonTag);
244
+ const getClasses = ({ icon, disabled, selected, checked }) => classNames(
245
+ "base",
246
+ ["disabled", disabled],
247
+ ["selected", Boolean(selected)],
248
+ ["active", Boolean(checked)],
249
+ ["icon", Boolean(icon)]
250
+ );
251
+ const ListboxOptionTemplate = (context) => {
252
+ const affixIconTemplate = affixIconTemplateFactory(context);
183
253
  return html`
184
- <div class="${getClasses}">
185
- <${buttonTag} class="prev-button" ${ref("prevButton")}
186
- label="${(x) => !x.navIcons ? "Previous" : null}"
187
- icon="${(x) => x.navIcons ? "chevron-left-line" : null}"
188
- size="${getPaginationSize}"
189
- shape="${getPaginationShape}"
190
- ?disabled="${(x) => x.total === 0 || x.selectedIndex === 0}"
191
- @click="${(x) => x.selectedIndex !== void 0 && x.selectedIndex--}"
192
- ></${buttonTag}>
193
- <div id="buttons-wrapper" class="buttons-wrapper" ${children({ property: "paginationButtons", filter: elements(buttonTag) })}>
194
- ${repeat((x) => x.pagesList, paginationButtonTemplate, { positioning: true })}
195
- </div>
196
- <${buttonTag} class="next-button" ${ref("nextButton")}
197
- label="${(x) => !x.navIcons ? "Next" : null}"
198
- icon="${(x) => x.navIcons ? "chevron-right-line" : null}"
199
- size="${getPaginationSize}"
200
- shape="${getPaginationShape}"
201
- ?disabled="${(x) => x.total === 0 || x.selectedIndex === x.total - 1}"
202
- @click="${(x) => x.selectedIndex !== void 0 && x.selectedIndex++}"
203
- ></${buttonTag}>
204
- </div>`;
254
+ <template
255
+ aria-checked="${(x) => x.ariaChecked}"
256
+ aria-disabled="${(x) => x.ariaDisabled}"
257
+ aria-posinset="${(x) => x.ariaPosInSet}"
258
+ aria-selected="${(x) => x.ariaSelected}"
259
+ aria-setsize="${(x) => x.ariaSetSize}"
260
+ role="option"
261
+ >
262
+ <div class="${getClasses}">
263
+ ${(x) => affixIconTemplate(x.icon, IconWrapper.Slot)}
264
+ ${when((x) => x.text, html`<div class="text">${(x) => x.text}</div>`)}
265
+ </div>
266
+ </template>
267
+ `;
205
268
  };
206
269
 
207
- const paginationDefinition = Pagination.compose({
208
- baseName: "pagination",
209
- template: PaginationTemplate,
270
+ const styles = ":host([disabled]){cursor:not-allowed}.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);color:var(--_option-appearance-color-text, var(--_appearance-color-text));font:var(--vvd-typography-base);gap:12px;hyphens:auto;inline-size:100%;min-block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)));padding-inline:16px;vertical-align:middle;word-break:break-word}.base{--_connotation-color-primary: var(--vvd-option-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-option-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-option-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-firm: var(--vvd-option-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-option-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-option-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-pale: var(--vvd-option-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-dim: var(--vvd-option-accent-dim, var(--vvd-color-neutral-200))}.base{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.hover,: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:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}@supports (user-select: none){.base{user-select:none}}.base:not(.disabled){cursor:pointer}.base.disabled{pointer-events:none}.base .text{font:var(--vvd-typography-base)}:host([aria-checked=true]) .base{--focus-stroke-color: var(--vvd-color-neutral-500);--focus-stroke-gap-color: transparent;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}slot[name=icon]{font-size:20px;line-height:1}.base:not(.disabled,.selected) slot[name=icon]{color:var(--vvd-color-neutral-600)}\n";
271
+
272
+ const listboxOptionDefinition = ListboxOption.compose({
273
+ baseName: "option",
274
+ template: ListboxOptionTemplate,
210
275
  styles
211
276
  });
212
- const paginationRegistries = [paginationDefinition(), buttonRegistries];
213
- const registerPagination = registerFactory(paginationRegistries);
277
+ const listboxOptionRegistries = [
278
+ listboxOptionDefinition(),
279
+ ...iconRegistries
280
+ ];
281
+ const registerOption = registerFactory(listboxOptionRegistries);
214
282
 
215
- export { paginationRegistries as a, paginationDefinition as p, registerPagination as r };
283
+ export { ListboxOption as L, listboxOptionRegistries as a, isListboxOption as i, listboxOptionDefinition as l, registerOption as r };