@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,16 +1,208 @@
1
1
  'use strict';
2
2
 
3
- const definition = require('./definition11.cjs');
4
3
  const index = require('./index.cjs');
5
- const enums = require('./enums.cjs');
6
- const slotted = require('./slotted.cjs');
7
- const ref = require('./ref.cjs');
8
- const children = require('./children.cjs');
9
- const repeat = require('./repeat.cjs');
10
- const classNames = require('./class-names.cjs');
4
+ const definition = require('./definition27.cjs');
5
+ const affix = require('./affix.cjs');
6
+ const ariaGlobal = require('./aria-global.cjs');
7
+ const startEnd = require('./start-end.cjs');
8
+ const applyMixins = require('./apply-mixins.cjs');
9
+ const dom = require('./dom.cjs');
11
10
  const when = require('./when.cjs');
11
+ const classNames = require('./class-names.cjs');
12
12
 
13
- 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";
13
+ /**
14
+ * Determines if the element is a {@link (ListboxOption:class)}
15
+ *
16
+ * @param element - the element to test.
17
+ * @public
18
+ */
19
+ function isListboxOption(el) {
20
+ return (dom.isHTMLElement(el) &&
21
+ (el.getAttribute("role") === "option" ||
22
+ el instanceof HTMLOptionElement));
23
+ }
24
+ /**
25
+ * An Option Custom HTML Element.
26
+ * Implements {@link https://www.w3.org/TR/wai-aria-1.1/#option | ARIA option }.
27
+ *
28
+ * @slot start - Content which can be provided before the listbox option content
29
+ * @slot end - Content which can be provided after the listbox option content
30
+ * @slot - The default slot for listbox option content
31
+ * @csspart content - Wraps the listbox option content
32
+ *
33
+ * @public
34
+ */
35
+ let ListboxOption$1 = class ListboxOption extends index.FoundationElement {
36
+ constructor(text, value, defaultSelected, selected) {
37
+ super();
38
+ /**
39
+ * The defaultSelected state of the option.
40
+ * @public
41
+ */
42
+ this.defaultSelected = false;
43
+ /**
44
+ * Tracks whether the "selected" property has been changed.
45
+ * @internal
46
+ */
47
+ this.dirtySelected = false;
48
+ /**
49
+ * The checked state of the control.
50
+ *
51
+ * @public
52
+ */
53
+ this.selected = this.defaultSelected;
54
+ /**
55
+ * Track whether the value has been changed from the initial value
56
+ */
57
+ this.dirtyValue = false;
58
+ if (text) {
59
+ this.textContent = text;
60
+ }
61
+ if (value) {
62
+ this.initialValue = value;
63
+ }
64
+ if (defaultSelected) {
65
+ this.defaultSelected = defaultSelected;
66
+ }
67
+ if (selected) {
68
+ this.selected = selected;
69
+ }
70
+ this.proxy = new Option(`${this.textContent}`, this.initialValue, this.defaultSelected, this.selected);
71
+ this.proxy.disabled = this.disabled;
72
+ }
73
+ /**
74
+ * Updates the ariaChecked property when the checked property changes.
75
+ *
76
+ * @param prev - the previous checked value
77
+ * @param next - the current checked value
78
+ *
79
+ * @public
80
+ */
81
+ checkedChanged(prev, next) {
82
+ if (typeof next === "boolean") {
83
+ this.ariaChecked = next ? "true" : "false";
84
+ return;
85
+ }
86
+ this.ariaChecked = null;
87
+ }
88
+ /**
89
+ * Updates the proxy's text content when the default slot changes.
90
+ * @param prev - the previous content value
91
+ * @param next - the current content value
92
+ *
93
+ * @internal
94
+ */
95
+ contentChanged(prev, next) {
96
+ if (this.proxy instanceof HTMLOptionElement) {
97
+ this.proxy.textContent = this.textContent;
98
+ }
99
+ this.$emit("contentchange", null, { bubbles: true });
100
+ }
101
+ defaultSelectedChanged() {
102
+ if (!this.dirtySelected) {
103
+ this.selected = this.defaultSelected;
104
+ if (this.proxy instanceof HTMLOptionElement) {
105
+ this.proxy.selected = this.defaultSelected;
106
+ }
107
+ }
108
+ }
109
+ disabledChanged(prev, next) {
110
+ this.ariaDisabled = this.disabled ? "true" : "false";
111
+ if (this.proxy instanceof HTMLOptionElement) {
112
+ this.proxy.disabled = this.disabled;
113
+ }
114
+ }
115
+ selectedAttributeChanged() {
116
+ this.defaultSelected = this.selectedAttribute;
117
+ if (this.proxy instanceof HTMLOptionElement) {
118
+ this.proxy.defaultSelected = this.defaultSelected;
119
+ }
120
+ }
121
+ selectedChanged() {
122
+ this.ariaSelected = this.selected ? "true" : "false";
123
+ if (!this.dirtySelected) {
124
+ this.dirtySelected = true;
125
+ }
126
+ if (this.proxy instanceof HTMLOptionElement) {
127
+ this.proxy.selected = this.selected;
128
+ }
129
+ }
130
+ initialValueChanged(previous, next) {
131
+ // If the value is clean and the component is connected to the DOM
132
+ // then set value equal to the attribute value.
133
+ if (!this.dirtyValue) {
134
+ this.value = this.initialValue;
135
+ this.dirtyValue = false;
136
+ }
137
+ }
138
+ get label() {
139
+ var _a;
140
+ return (_a = this.value) !== null && _a !== void 0 ? _a : this.text;
141
+ }
142
+ get text() {
143
+ var _a, _b;
144
+ return (_b = (_a = this.textContent) === null || _a === void 0 ? void 0 : _a.replace(/\s+/g, " ").trim()) !== null && _b !== void 0 ? _b : "";
145
+ }
146
+ set value(next) {
147
+ const newValue = `${next !== null && next !== void 0 ? next : ""}`;
148
+ this._value = newValue;
149
+ this.dirtyValue = true;
150
+ if (this.proxy instanceof HTMLOptionElement) {
151
+ this.proxy.value = newValue;
152
+ }
153
+ index.Observable.notify(this, "value");
154
+ }
155
+ get value() {
156
+ var _a;
157
+ index.Observable.track(this, "value");
158
+ return (_a = this._value) !== null && _a !== void 0 ? _a : this.text;
159
+ }
160
+ get form() {
161
+ return this.proxy ? this.proxy.form : null;
162
+ }
163
+ };
164
+ index.__decorate([
165
+ index.observable
166
+ ], ListboxOption$1.prototype, "checked", void 0);
167
+ index.__decorate([
168
+ index.observable
169
+ ], ListboxOption$1.prototype, "content", void 0);
170
+ index.__decorate([
171
+ index.observable
172
+ ], ListboxOption$1.prototype, "defaultSelected", void 0);
173
+ index.__decorate([
174
+ index.attr({ mode: "boolean" })
175
+ ], ListboxOption$1.prototype, "disabled", void 0);
176
+ index.__decorate([
177
+ index.attr({ attribute: "selected", mode: "boolean" })
178
+ ], ListboxOption$1.prototype, "selectedAttribute", void 0);
179
+ index.__decorate([
180
+ index.observable
181
+ ], ListboxOption$1.prototype, "selected", void 0);
182
+ index.__decorate([
183
+ index.attr({ attribute: "value", mode: "fromView" })
184
+ ], ListboxOption$1.prototype, "initialValue", void 0);
185
+ /**
186
+ * States and properties relating to the ARIA `option` role.
187
+ *
188
+ * @public
189
+ */
190
+ class DelegatesARIAListboxOption {
191
+ }
192
+ index.__decorate([
193
+ index.observable
194
+ ], DelegatesARIAListboxOption.prototype, "ariaChecked", void 0);
195
+ index.__decorate([
196
+ index.observable
197
+ ], DelegatesARIAListboxOption.prototype, "ariaPosInSet", void 0);
198
+ index.__decorate([
199
+ index.observable
200
+ ], DelegatesARIAListboxOption.prototype, "ariaSelected", void 0);
201
+ index.__decorate([
202
+ index.observable
203
+ ], DelegatesARIAListboxOption.prototype, "ariaSetSize", void 0);
204
+ applyMixins.applyMixins(DelegatesARIAListboxOption, ariaGlobal.ARIAGlobalStatesAndProperties);
205
+ applyMixins.applyMixins(ListboxOption$1, startEnd.StartEnd, DelegatesARIAListboxOption);
14
206
 
15
207
  var __defProp = Object.defineProperty;
16
208
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -23,197 +215,75 @@ var __decorateClass = (decorators, target, key, kind) => {
23
215
  __defProp(target, key, result);
24
216
  return result;
25
217
  };
26
- const MAX_DIGITS_AND_PLACEHOLDERS = 7;
27
- const totalConverter = {
28
- fromView: (value) => parseInt(value, 10),
29
- toView: (value) => value.toString()
30
- };
31
- class Pagination extends index.FoundationElement {
32
- constructor() {
33
- super();
34
- this.navIcons = false;
35
- this.total = 0;
36
- this.selectedIndex = 0;
37
- this.addEventListener("tabpressed", (e) => {
38
- const { value: currentLabel, shiftKey } = e.detail;
39
- const index = this.paginationButtons.findIndex((button) => Number(button.label) === currentLabel);
40
- const focusDirection = shiftKey ? -1 : 1;
41
- const newIndex = index + focusDirection;
42
- if (newIndex < 0) {
43
- return this.prevButton.focus();
44
- }
45
- if (newIndex > this.paginationButtons.length - 1) {
46
- return this.nextButton.focus();
47
- }
48
- this.paginationButtons && this.paginationButtons[index + focusDirection].focus();
49
- });
50
- }
51
- get pagesList() {
52
- return new Array(this.total < MAX_DIGITS_AND_PLACEHOLDERS ? this.total : MAX_DIGITS_AND_PLACEHOLDERS).fill(0).map((_, i, arr) => {
53
- if (i === 0)
54
- return 1;
55
- if (i === arr.length - 1)
56
- return this.total;
57
- if (this.selectedIndex !== void 0 && this.total > MAX_DIGITS_AND_PLACEHOLDERS) {
58
- if (this.selectedIndex < 4) {
59
- if (i === MAX_DIGITS_AND_PLACEHOLDERS - 2)
60
- return "...";
61
- }
62
- if (this.selectedIndex >= 4 && this.selectedIndex <= this.total - 5) {
63
- if (i > 1 && i < MAX_DIGITS_AND_PLACEHOLDERS - 2)
64
- return this.selectedIndex + (i - 2);
65
- if (i === 1 || i === MAX_DIGITS_AND_PLACEHOLDERS - 2)
66
- return "...";
67
- }
68
- if (this.selectedIndex > this.total - 5) {
69
- if (i > 1)
70
- return this.total - (6 - i);
71
- if (i === 1)
72
- return "...";
73
- }
74
- }
75
- return i + 1;
76
- });
218
+ class ListboxOption extends ListboxOption$1 {
219
+ // #region overrides base class accessor
220
+ set text(value) {
221
+ this._text = value;
77
222
  }
78
- totalChanged(_, newValue) {
79
- if (newValue < 0) {
80
- this.total = 0;
81
- }
82
- this.selectedIndex = 0;
223
+ get text() {
224
+ return this._text ?? "";
83
225
  }
84
- selectedIndexChanged(oldValue, newValue) {
85
- if (oldValue === void 0)
86
- return;
87
- this.$emit("pagination-change", { selectedIndex: newValue, total: this.total, oldIndex: oldValue });
226
+ get label() {
227
+ return this._label ?? this.text;
88
228
  }
89
- paginationButtonsChanged(_, newValue) {
90
- newValue.forEach((button) => {
91
- button.shadowRoot.querySelector("button").setAttribute("part", "button");
92
- });
229
+ set label(value) {
230
+ this._label = value;
93
231
  }
232
+ // #endregion overrides
94
233
  }
95
234
  __decorateClass([
96
- index.attr
97
- ], Pagination.prototype, "size", 2);
98
- __decorateClass([
99
- index.attr
100
- ], Pagination.prototype, "shape", 2);
101
- __decorateClass([
102
- index.observable
103
- ], Pagination.prototype, "paginationButtons", 2);
104
- __decorateClass([
105
- index.observable
106
- ], Pagination.prototype, "prevButton", 2);
107
- __decorateClass([
108
- index.observable
109
- ], Pagination.prototype, "nextButton", 2);
110
- __decorateClass([
111
- index.attr({ attribute: "nav-icons", mode: "boolean" })
112
- ], Pagination.prototype, "navIcons", 2);
235
+ index.attr({
236
+ attribute: "text"
237
+ })
238
+ ], ListboxOption.prototype, "_text", 2);
113
239
  __decorateClass([
114
- index.volatile
115
- ], Pagination.prototype, "pagesList", 1);
116
- __decorateClass([
117
- index.attr({ mode: "reflect", converter: totalConverter })
118
- ], Pagination.prototype, "total", 2);
119
- __decorateClass([
120
- index.attr({ mode: "reflect", converter: totalConverter, attribute: "selected-index" })
121
- ], Pagination.prototype, "selectedIndex", 2);
240
+ index.attr({
241
+ attribute: "label"
242
+ })
243
+ ], ListboxOption.prototype, "_label", 2);
244
+ applyMixins.applyMixins(ListboxOption, affix.AffixIconWithTrailing);
122
245
 
123
- const ALLOWED_SIZES = [enums.Size.SuperCondensed, enums.Size.Condensed, enums.Size.Normal];
124
- const ALLOWED_SHAPES = [enums.Shape.Rounded, enums.Shape.Pill];
125
- const handleSelection = (value, { parent: x }) => {
126
- return x.selectedIndex = Number(value) - 1;
127
- };
128
- const handleKeyDown = (value, { event, parent }) => {
129
- if (event.key === " " || event.key === "Enter") {
130
- handleSelection(value, { parent });
131
- }
132
- if (event.key === "Tab") {
133
- event.target.dispatchEvent(
134
- new CustomEvent("tabpressed", { detail: { value, shiftKey: event.shiftKey }, bubbles: true, composed: true })
135
- );
136
- }
137
- };
138
- const getClasses = (_) => classNames.classNames("control");
139
- function getButtonAppearance(value, { parent }) {
140
- return parent.selectedIndex === Number(value) - 1 ? "filled" : "ghost";
141
- }
142
- const paginationButtonRenderer = (buttonTag) => index.html`
143
- ${when.when(
144
- (value) => value !== "...",
145
- index.html`
146
- <${buttonTag} class="vwc-pagination-button"
147
- label="${(value) => value}"
148
- appearance="${getButtonAppearance}"
149
- size="${(_, { parent: x }) => getPaginationSize(x)}"
150
- shape="${(_, { parent: x }) => getPaginationShape(x)}"
151
- style="inline-size: ${(value) => getPaginationButtonWidth(value)};"
152
- tabindex="0"
153
- aria-current="${(value, { parent }) => parent.selectedIndex === Number(value) - 1}"
154
- @click="${handleSelection}"
155
- @keydown="${handleKeyDown}">
156
- </${buttonTag}>
157
- `
158
- )}
159
- ${when.when(
160
- (value) => value === "...",
161
- index.html`
162
- <div
163
- class="dots size-${(_, { parent: x }) => getPaginationSize(x)}">
164
- ...
165
- </div>`
166
- )}`;
167
- const getPaginationSize = (x) => {
168
- if (!x.size || !ALLOWED_SIZES.includes(x.size)) {
169
- return enums.Size.SuperCondensed;
170
- }
171
- return x.size;
172
- };
173
- const getPaginationShape = (x) => {
174
- if (!x.shape || !ALLOWED_SHAPES.includes(x.shape)) {
175
- return enums.Shape.Rounded;
176
- }
177
- return x.shape;
178
- };
179
- const getPaginationButtonWidth = (value) => {
180
- return `calc(var(--base-size) + ${String(value).length - 1}ch)`;
181
- };
182
- const PaginationTemplate = (context) => {
183
- const buttonTag = context.tagFor(definition.Button);
184
- const paginationButtonTemplate = paginationButtonRenderer(buttonTag);
246
+ const getClasses = ({ icon, disabled, selected, checked }) => classNames.classNames(
247
+ "base",
248
+ ["disabled", disabled],
249
+ ["selected", Boolean(selected)],
250
+ ["active", Boolean(checked)],
251
+ ["icon", Boolean(icon)]
252
+ );
253
+ const ListboxOptionTemplate = (context) => {
254
+ const affixIconTemplate = affix.affixIconTemplateFactory(context);
185
255
  return index.html`
186
- <div class="${getClasses}">
187
- <${buttonTag} class="prev-button" ${ref.ref("prevButton")}
188
- label="${(x) => !x.navIcons ? "Previous" : null}"
189
- icon="${(x) => x.navIcons ? "chevron-left-line" : null}"
190
- size="${getPaginationSize}"
191
- shape="${getPaginationShape}"
192
- ?disabled="${(x) => x.total === 0 || x.selectedIndex === 0}"
193
- @click="${(x) => x.selectedIndex !== void 0 && x.selectedIndex--}"
194
- ></${buttonTag}>
195
- <div id="buttons-wrapper" class="buttons-wrapper" ${children.children({ property: "paginationButtons", filter: slotted.elements(buttonTag) })}>
196
- ${repeat.repeat((x) => x.pagesList, paginationButtonTemplate, { positioning: true })}
197
- </div>
198
- <${buttonTag} class="next-button" ${ref.ref("nextButton")}
199
- label="${(x) => !x.navIcons ? "Next" : null}"
200
- icon="${(x) => x.navIcons ? "chevron-right-line" : null}"
201
- size="${getPaginationSize}"
202
- shape="${getPaginationShape}"
203
- ?disabled="${(x) => x.total === 0 || x.selectedIndex === x.total - 1}"
204
- @click="${(x) => x.selectedIndex !== void 0 && x.selectedIndex++}"
205
- ></${buttonTag}>
206
- </div>`;
256
+ <template
257
+ aria-checked="${(x) => x.ariaChecked}"
258
+ aria-disabled="${(x) => x.ariaDisabled}"
259
+ aria-posinset="${(x) => x.ariaPosInSet}"
260
+ aria-selected="${(x) => x.ariaSelected}"
261
+ aria-setsize="${(x) => x.ariaSetSize}"
262
+ role="option"
263
+ >
264
+ <div class="${getClasses}">
265
+ ${(x) => affixIconTemplate(x.icon, affix.IconWrapper.Slot)}
266
+ ${when.when((x) => x.text, index.html`<div class="text">${(x) => x.text}</div>`)}
267
+ </div>
268
+ </template>
269
+ `;
207
270
  };
208
271
 
209
- const paginationDefinition = Pagination.compose({
210
- baseName: "pagination",
211
- template: PaginationTemplate,
272
+ 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";
273
+
274
+ const listboxOptionDefinition = ListboxOption.compose({
275
+ baseName: "option",
276
+ template: ListboxOptionTemplate,
212
277
  styles
213
278
  });
214
- const paginationRegistries = [paginationDefinition(), definition.buttonRegistries];
215
- const registerPagination = index.registerFactory(paginationRegistries);
279
+ const listboxOptionRegistries = [
280
+ listboxOptionDefinition(),
281
+ ...definition.iconRegistries
282
+ ];
283
+ const registerOption = index.registerFactory(listboxOptionRegistries);
216
284
 
217
- exports.paginationDefinition = paginationDefinition;
218
- exports.paginationRegistries = paginationRegistries;
219
- exports.registerPagination = registerPagination;
285
+ exports.ListboxOption = ListboxOption;
286
+ exports.isListboxOption = isListboxOption;
287
+ exports.listboxOptionDefinition = listboxOptionDefinition;
288
+ exports.listboxOptionRegistries = listboxOptionRegistries;
289
+ exports.registerOption = registerOption;