@vonage/vivid 3.52.0 → 3.54.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 (299) 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 +1 -1
  9. package/appearance-ui/index.js +1 -1
  10. package/audio-player/index.cjs +3 -3
  11. package/audio-player/index.js +3 -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 -5
  27. package/combobox/index.js +5 -5
  28. package/custom-elements.json +1162 -99
  29. package/data-grid/index.cjs +1 -1
  30. package/data-grid/index.js +1 -1
  31. package/date-picker/index.cjs +7 -6
  32. package/date-picker/index.js +7 -6
  33. package/date-range-picker/index.cjs +7 -6
  34. package/date-range-picker/index.js +7 -6
  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 -3
  48. package/file-picker/index.js +4 -3
  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 +132 -122
  54. package/index.js +46 -43
  55. package/layout/index.cjs +1 -1
  56. package/layout/index.js +1 -1
  57. package/lib/appearance-ui/appearance-ui.d.ts +1 -1
  58. package/lib/audio-player/audio-player.d.ts +4 -0
  59. package/lib/audio-player/locale.d.ts +2 -0
  60. package/lib/components.d.ts +2 -0
  61. package/lib/dial-pad/definition.d.ts +3 -0
  62. package/lib/dial-pad/dial-pad.d.ts +17 -0
  63. package/lib/dial-pad/dial-pad.template.d.ts +4 -0
  64. package/lib/dial-pad/locale.d.ts +18 -0
  65. package/lib/enums.d.ts +7 -0
  66. package/lib/menu/menu.d.ts +1 -0
  67. package/lib/nav-disclosure/nav-disclosure.d.ts +5 -0
  68. package/lib/text-anchor/definition.d.ts +1 -0
  69. package/lib/text-anchor/text-anchor.d.ts +5 -0
  70. package/lib/video-player/definition.d.ts +3 -0
  71. package/lib/video-player/locale.d.ts +1 -0
  72. package/lib/video-player/video-player.d.ts +17 -0
  73. package/lib/video-player/video-player.template.d.ts +4 -0
  74. package/lib/video-player/vivid-video-svg.d.ts +1 -0
  75. package/listbox/index.cjs +2 -2
  76. package/listbox/index.js +2 -2
  77. package/locales/en-GB.cjs +33 -1
  78. package/locales/en-GB.js +33 -1
  79. package/locales/en-US.cjs +201 -1
  80. package/locales/en-US.js +201 -1
  81. package/locales/ja-JP.cjs +200 -1
  82. package/locales/ja-JP.js +200 -1
  83. package/locales/zh-CN.cjs +202 -1
  84. package/locales/zh-CN.js +202 -1
  85. package/menu/index.cjs +6 -6
  86. package/menu/index.js +6 -6
  87. package/menu-item/index.cjs +2 -2
  88. package/menu-item/index.js +2 -2
  89. package/nav/index.cjs +1 -1
  90. package/nav/index.js +1 -1
  91. package/nav-disclosure/index.cjs +2 -2
  92. package/nav-disclosure/index.js +2 -2
  93. package/nav-item/index.cjs +2 -2
  94. package/nav-item/index.js +2 -2
  95. package/note/index.cjs +2 -2
  96. package/note/index.js +2 -2
  97. package/number-field/index.cjs +5 -4
  98. package/number-field/index.js +5 -4
  99. package/option/index.cjs +2 -2
  100. package/option/index.js +2 -2
  101. package/package.json +1 -1
  102. package/pagination/index.cjs +3 -3
  103. package/pagination/index.js +3 -3
  104. package/popup/index.cjs +4 -4
  105. package/popup/index.js +4 -4
  106. package/progress/index.cjs +1 -1
  107. package/progress/index.js +1 -1
  108. package/progress-ring/index.cjs +1 -1
  109. package/progress-ring/index.js +1 -1
  110. package/radio/index.cjs +1 -1
  111. package/radio/index.js +1 -1
  112. package/radio-group/index.cjs +1 -1
  113. package/radio-group/index.js +1 -1
  114. package/range-slider/index.cjs +2 -2
  115. package/range-slider/index.js +2 -2
  116. package/select/index.cjs +7 -6
  117. package/select/index.js +7 -6
  118. package/selectable-box/index.cjs +5 -4
  119. package/selectable-box/index.js +5 -4
  120. package/shared/applyMixinsWithObservables.cjs +15 -0
  121. package/shared/applyMixinsWithObservables.js +13 -0
  122. package/shared/definition.cjs +1 -1
  123. package/shared/definition.js +1 -1
  124. package/shared/definition11.cjs +3 -3
  125. package/shared/definition11.js +3 -3
  126. package/shared/definition14.cjs +2 -2
  127. package/shared/definition14.js +2 -2
  128. package/shared/definition15.cjs +8 -9
  129. package/shared/definition15.js +8 -9
  130. package/shared/definition16.cjs +3 -3
  131. package/shared/definition16.js +3 -3
  132. package/shared/definition17.cjs +2 -2
  133. package/shared/definition17.js +3 -3
  134. package/shared/definition18.cjs +3 -3
  135. package/shared/definition18.js +3 -3
  136. package/shared/definition19.cjs +3 -3
  137. package/shared/definition19.js +3 -3
  138. package/shared/definition20.cjs +196 -224
  139. package/shared/definition20.js +191 -219
  140. package/shared/definition21.cjs +264 -67
  141. package/shared/definition21.js +263 -65
  142. package/shared/definition22.cjs +66 -57
  143. package/shared/definition22.js +64 -56
  144. package/shared/definition23.cjs +42 -76
  145. package/shared/definition23.js +41 -75
  146. package/shared/definition24.cjs +70 -2402
  147. package/shared/definition24.js +69 -2401
  148. package/shared/definition25.cjs +2402 -46
  149. package/shared/definition25.js +2401 -45
  150. package/shared/definition26.cjs +63 -30
  151. package/shared/definition26.js +62 -29
  152. package/shared/definition27.cjs +28 -56
  153. package/shared/definition27.js +27 -55
  154. package/shared/definition28.cjs +35 -881
  155. package/shared/definition28.js +34 -879
  156. package/shared/definition29.cjs +922 -60
  157. package/shared/definition29.js +922 -61
  158. package/shared/definition30.cjs +68 -86
  159. package/shared/definition30.js +67 -85
  160. package/shared/definition31.cjs +98 -21
  161. package/shared/definition31.js +98 -21
  162. package/shared/definition32.cjs +24 -12
  163. package/shared/definition32.js +23 -11
  164. package/shared/definition33.cjs +11 -50
  165. package/shared/definition33.js +10 -49
  166. package/shared/definition34.cjs +26 -515
  167. package/shared/definition34.js +26 -515
  168. package/shared/definition35.cjs +448 -194
  169. package/shared/definition35.js +448 -192
  170. package/shared/definition36.cjs +256 -202
  171. package/shared/definition36.js +253 -201
  172. package/shared/definition37.cjs +204 -65
  173. package/shared/definition37.js +203 -63
  174. package/shared/definition38.cjs +63 -57
  175. package/shared/definition38.js +60 -55
  176. package/shared/definition39.cjs +65 -432
  177. package/shared/definition39.js +64 -431
  178. package/shared/definition4.cjs +2 -2
  179. package/shared/definition4.js +2 -2
  180. package/shared/definition40.cjs +441 -34
  181. package/shared/definition40.js +438 -31
  182. package/shared/definition41.cjs +34 -576
  183. package/shared/definition41.js +33 -575
  184. package/shared/definition42.cjs +531 -654
  185. package/shared/definition42.js +531 -654
  186. package/shared/definition43.cjs +690 -114
  187. package/shared/definition43.js +689 -113
  188. package/shared/definition44.cjs +124 -79
  189. package/shared/definition44.js +122 -77
  190. package/shared/definition45.cjs +78 -520
  191. package/shared/definition45.js +77 -518
  192. package/shared/definition46.cjs +520 -119
  193. package/shared/definition46.js +518 -118
  194. package/shared/definition47.cjs +118 -135
  195. package/shared/definition47.js +117 -134
  196. package/shared/definition48.cjs +151 -19
  197. package/shared/definition48.js +150 -18
  198. package/shared/definition49.cjs +21 -84
  199. package/shared/definition49.js +20 -83
  200. package/shared/definition5.cjs +100 -19
  201. package/shared/definition5.js +100 -19
  202. package/shared/definition50.cjs +52 -505
  203. package/shared/definition50.js +51 -504
  204. package/shared/definition51.cjs +526 -28
  205. package/shared/definition51.js +525 -27
  206. package/shared/definition52.cjs +28 -123
  207. package/shared/definition52.js +26 -122
  208. package/shared/definition53.cjs +110 -309
  209. package/shared/definition53.js +110 -308
  210. package/shared/definition54.cjs +255 -271
  211. package/shared/definition54.js +255 -271
  212. package/shared/definition55.cjs +315 -776
  213. package/shared/definition55.js +314 -775
  214. package/shared/definition56.cjs +818 -107
  215. package/shared/definition56.js +817 -106
  216. package/shared/definition57.cjs +85 -55
  217. package/shared/definition57.js +84 -54
  218. package/shared/definition58.cjs +125 -72
  219. package/shared/definition58.js +124 -71
  220. package/shared/definition59.cjs +72 -285
  221. package/shared/definition59.js +73 -286
  222. package/shared/definition6.cjs +1 -1
  223. package/shared/definition6.js +1 -1
  224. package/shared/definition60.cjs +298 -39
  225. package/shared/definition60.js +297 -38
  226. package/shared/definition61.cjs +66044 -1687
  227. package/shared/definition61.js +66043 -1686
  228. package/shared/definition62.cjs +50 -0
  229. package/shared/definition62.js +46 -0
  230. package/shared/definition63.cjs +1828 -0
  231. package/shared/definition63.js +1824 -0
  232. package/shared/definition7.cjs +2 -2
  233. package/shared/definition7.js +2 -2
  234. package/shared/definition8.cjs +2 -2
  235. package/shared/definition8.js +2 -2
  236. package/shared/definition9.cjs +1 -1
  237. package/shared/definition9.js +1 -1
  238. package/shared/enums.cjs +9 -0
  239. package/shared/enums.js +9 -1
  240. package/shared/icon.cjs +20 -2
  241. package/shared/icon.js +21 -3
  242. package/shared/index2.cjs +73 -37
  243. package/shared/index2.js +73 -37
  244. package/shared/key-codes2.js +1 -1
  245. package/shared/listbox.cjs +1 -1
  246. package/shared/listbox.js +1 -1
  247. package/shared/localization/Locale.d.ts +4 -0
  248. package/shared/patterns/form-elements/form-elements.d.ts +2 -3
  249. package/shared/presentationDate.cjs +16 -5
  250. package/shared/presentationDate.js +16 -5
  251. package/shared/text-anchor.cjs +6 -0
  252. package/shared/text-anchor.js +6 -0
  253. package/shared/text-anchor.template.cjs +6 -1
  254. package/shared/text-anchor.template.js +6 -1
  255. package/shared/text-field.cjs +1 -1
  256. package/shared/text-field.js +1 -1
  257. package/shared/utils/applyMixinsWithObservables.d.ts +1 -0
  258. package/shared/utils/numberConverter.d.ts +2 -0
  259. package/side-drawer/index.cjs +1 -1
  260. package/side-drawer/index.js +1 -1
  261. package/slider/index.cjs +1 -1
  262. package/slider/index.js +1 -1
  263. package/split-button/index.cjs +2 -2
  264. package/split-button/index.js +2 -2
  265. package/styles/core/all.css +1 -1
  266. package/styles/core/theme.css +1 -1
  267. package/styles/core/typography.css +1 -1
  268. package/styles/tokens/theme-dark.css +4 -4
  269. package/styles/tokens/theme-light.css +4 -4
  270. package/styles/tokens/vivid-2-compat.css +1 -1
  271. package/switch/index.cjs +2 -2
  272. package/switch/index.js +2 -2
  273. package/tab/index.cjs +2 -2
  274. package/tab/index.js +2 -2
  275. package/tab-panel/index.cjs +1 -1
  276. package/tab-panel/index.js +1 -1
  277. package/tabs/index.cjs +4 -4
  278. package/tabs/index.js +4 -4
  279. package/tag/index.cjs +2 -2
  280. package/tag/index.js +2 -2
  281. package/tag-group/index.cjs +1 -1
  282. package/tag-group/index.js +1 -1
  283. package/text-area/index.cjs +4 -3
  284. package/text-area/index.js +4 -3
  285. package/text-field/index.cjs +4 -3
  286. package/text-field/index.js +4 -3
  287. package/time-picker/index.cjs +8 -7
  288. package/time-picker/index.js +8 -7
  289. package/toggletip/index.cjs +5 -5
  290. package/toggletip/index.js +5 -5
  291. package/tooltip/index.cjs +5 -5
  292. package/tooltip/index.js +5 -5
  293. package/tree-item/index.cjs +2 -2
  294. package/tree-item/index.js +2 -2
  295. package/tree-view/index.cjs +1 -1
  296. package/tree-view/index.js +1 -1
  297. package/video-player/index.cjs +17 -0
  298. package/video-player/index.js +15 -0
  299. package/vivid.api.json +332 -0
@@ -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,211 +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(
38
- (button) => Number(button.label) === currentLabel
39
- );
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(
53
- this.total < MAX_DIGITS_AND_PLACEHOLDERS ? this.total : MAX_DIGITS_AND_PLACEHOLDERS
54
- ).fill(0).map((_, i, arr) => {
55
- if (i === 0)
56
- return 1;
57
- if (i === arr.length - 1)
58
- return this.total;
59
- if (this.selectedIndex !== void 0 && this.total > MAX_DIGITS_AND_PLACEHOLDERS) {
60
- if (this.selectedIndex < 4) {
61
- if (i === MAX_DIGITS_AND_PLACEHOLDERS - 2)
62
- return "...";
63
- }
64
- if (this.selectedIndex >= 4 && this.selectedIndex <= this.total - 5) {
65
- if (i > 1 && i < MAX_DIGITS_AND_PLACEHOLDERS - 2)
66
- return this.selectedIndex + (i - 2);
67
- if (i === 1 || i === MAX_DIGITS_AND_PLACEHOLDERS - 2)
68
- return "...";
69
- }
70
- if (this.selectedIndex > this.total - 5) {
71
- if (i > 1)
72
- return this.total - (6 - i);
73
- if (i === 1)
74
- return "...";
75
- }
76
- }
77
- return i + 1;
78
- });
216
+ class ListboxOption extends ListboxOption$1 {
217
+ // #region overrides base class accessor
218
+ set text(value) {
219
+ this._text = value;
79
220
  }
80
- totalChanged(_, newValue) {
81
- if (newValue < 0) {
82
- this.total = 0;
83
- }
84
- this.selectedIndex = 0;
221
+ get text() {
222
+ return this._text ?? "";
85
223
  }
86
- selectedIndexChanged(oldValue, newValue) {
87
- if (oldValue === void 0)
88
- return;
89
- this.$emit("pagination-change", {
90
- selectedIndex: newValue,
91
- total: this.total,
92
- oldIndex: oldValue
93
- });
224
+ get label() {
225
+ return this._label ?? this.text;
94
226
  }
95
- paginationButtonsChanged(_, newValue) {
96
- newValue.forEach((button) => {
97
- button.shadowRoot.querySelector("button").setAttribute("part", "button");
98
- });
227
+ set label(value) {
228
+ this._label = value;
99
229
  }
230
+ // #endregion overrides
100
231
  }
101
232
  __decorateClass([
102
- attr
103
- ], Pagination.prototype, "size", 2);
104
- __decorateClass([
105
- attr
106
- ], Pagination.prototype, "shape", 2);
107
- __decorateClass([
108
- observable
109
- ], Pagination.prototype, "paginationButtons", 2);
110
- __decorateClass([
111
- observable
112
- ], Pagination.prototype, "prevButton", 2);
113
- __decorateClass([
114
- observable
115
- ], Pagination.prototype, "nextButton", 2);
116
- __decorateClass([
117
- attr({ attribute: "nav-icons", mode: "boolean" })
118
- ], Pagination.prototype, "navIcons", 2);
119
- __decorateClass([
120
- volatile
121
- ], Pagination.prototype, "pagesList", 1);
122
- __decorateClass([
123
- attr({ mode: "reflect", converter: totalConverter })
124
- ], Pagination.prototype, "total", 2);
233
+ attr({
234
+ attribute: "text"
235
+ })
236
+ ], ListboxOption.prototype, "_text", 2);
125
237
  __decorateClass([
126
238
  attr({
127
- mode: "reflect",
128
- converter: totalConverter,
129
- attribute: "selected-index"
239
+ attribute: "label"
130
240
  })
131
- ], Pagination.prototype, "selectedIndex", 2);
241
+ ], ListboxOption.prototype, "_label", 2);
242
+ applyMixins(ListboxOption, AffixIconWithTrailing);
132
243
 
133
- const ALLOWED_SIZES = [Size.SuperCondensed, Size.Condensed, Size.Normal];
134
- const ALLOWED_SHAPES = [Shape.Rounded, Shape.Pill];
135
- const handleSelection = (value, { parent: x }) => {
136
- return x.selectedIndex = Number(value) - 1;
137
- };
138
- const handleKeyDown = (value, { event, parent }) => {
139
- if (event.key === " " || event.key === "Enter") {
140
- handleSelection(value, { parent });
141
- }
142
- if (event.key === "Tab") {
143
- event.target.dispatchEvent(
144
- new CustomEvent("tabpressed", {
145
- detail: { value, shiftKey: event.shiftKey },
146
- bubbles: true,
147
- composed: true
148
- })
149
- );
150
- }
151
- };
152
- const getClasses = (_) => classNames("control");
153
- function getButtonAppearance(value, { parent }) {
154
- return parent.selectedIndex === Number(value) - 1 ? "filled" : "ghost";
155
- }
156
- const paginationButtonRenderer = (buttonTag) => html` ${when(
157
- (value) => value !== "...",
158
- html`
159
- <${buttonTag} class="vwc-pagination-button"
160
- label="${(value) => value}"
161
- appearance="${getButtonAppearance}"
162
- size="${(_, { parent: x }) => getPaginationSize(x)}"
163
- shape="${(_, { parent: x }) => getPaginationShape(x)}"
164
- style="inline-size: ${(value) => getPaginationButtonWidth(value)};"
165
- tabindex="0"
166
- aria-current="${(value, { parent }) => parent.selectedIndex === Number(value) - 1}"
167
- @click="${handleSelection}"
168
- @keydown="${handleKeyDown}">
169
- </${buttonTag}>
170
- `
171
- )}
172
- ${when(
173
- (value) => value === "...",
174
- html` <div class="dots size-${(_, { parent: x }) => getPaginationSize(x)}">
175
- ...
176
- </div>`
177
- )}`;
178
- const getPaginationSize = (x) => {
179
- if (!x.size || !ALLOWED_SIZES.includes(x.size)) {
180
- return Size.SuperCondensed;
181
- }
182
- return x.size;
183
- };
184
- const getPaginationShape = (x) => {
185
- if (!x.shape || !ALLOWED_SHAPES.includes(x.shape)) {
186
- return Shape.Rounded;
187
- }
188
- return x.shape;
189
- };
190
- const getPaginationButtonWidth = (value) => {
191
- return `calc(var(--base-size) + ${String(value).length - 1}ch)`;
192
- };
193
- const PaginationTemplate = (context) => {
194
- const buttonTag = context.tagFor(Button);
195
- 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);
196
253
  return html`
197
- <div class="${getClasses}">
198
- <${buttonTag} class="prev-button" ${ref("prevButton")}
199
- label="${(x) => !x.navIcons ? "Previous" : null}"
200
- icon="${(x) => x.navIcons ? "chevron-left-line" : null}"
201
- size="${getPaginationSize}"
202
- shape="${getPaginationShape}"
203
- ?disabled="${(x) => x.total === 0 || x.selectedIndex === 0}"
204
- @click="${(x) => x.selectedIndex !== void 0 && x.selectedIndex--}"
205
- ></${buttonTag}>
206
- <div id="buttons-wrapper" class="buttons-wrapper" ${children({
207
- property: "paginationButtons",
208
- filter: elements(buttonTag)
209
- })}>
210
- ${repeat((x) => x.pagesList, paginationButtonTemplate, { positioning: true })}
211
- </div>
212
- <${buttonTag} class="next-button" ${ref("nextButton")}
213
- label="${(x) => !x.navIcons ? "Next" : null}"
214
- icon="${(x) => x.navIcons ? "chevron-right-line" : null}"
215
- size="${getPaginationSize}"
216
- shape="${getPaginationShape}"
217
- ?disabled="${(x) => x.total === 0 || x.selectedIndex === x.total - 1}"
218
- @click="${(x) => x.selectedIndex !== void 0 && x.selectedIndex++}"
219
- ></${buttonTag}>
220
- </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
+ `;
221
268
  };
222
269
 
223
- const paginationDefinition = Pagination.compose({
224
- baseName: "pagination",
225
- 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,
226
275
  styles
227
276
  });
228
- const paginationRegistries = [paginationDefinition(), buttonRegistries];
229
- const registerPagination = registerFactory(paginationRegistries);
277
+ const listboxOptionRegistries = [
278
+ listboxOptionDefinition(),
279
+ ...iconRegistries
280
+ ];
281
+ const registerOption = registerFactory(listboxOptionRegistries);
230
282
 
231
- 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 };