@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,20 +1,32 @@
1
1
  'use strict';
2
2
 
3
3
  const index = require('./index.cjs');
4
- const definition = require('./definition26.cjs');
4
+ const direction = require('./direction.cjs');
5
+ const numbers = require('./numbers.cjs');
5
6
  const formAssociated = require('./form-associated.cjs');
7
+ const aria = require('./aria.cjs');
6
8
  const keyCodes = require('./key-codes.cjs');
7
- const when = require('./when.cjs');
8
- const classNames = require('./class-names.cjs');
9
+ const slider_template = require('./slider.template.cjs');
9
10
 
10
- class _Switch extends index.FoundationElement {
11
+ /**
12
+ * Converts a pixel coordinate on the track to a percent of the track's range
13
+ */
14
+ function convertPixelToPercent(pixelPos, minPosition, maxPosition, direction$1) {
15
+ let pct = numbers.limit(0, 1, (pixelPos - minPosition) / (maxPosition - minPosition));
16
+ if (direction$1 === direction.Direction.rtl) {
17
+ pct = 1 - pct;
18
+ }
19
+ return pct;
20
+ }
21
+
22
+ class _Slider extends index.FoundationElement {
11
23
  }
12
24
  /**
13
- * A form-associated base class for the {@link @microsoft/fast-foundation#(Switch:class)} component.
25
+ * A form-associated base class for the {@link @microsoft/fast-foundation#(Slider:class)} component.
14
26
  *
15
27
  * @internal
16
28
  */
17
- class FormAssociatedSwitch extends formAssociated.CheckableFormAssociated(_Switch) {
29
+ class FormAssociatedSlider extends formAssociated.FormAssociated(_Slider) {
18
30
  constructor() {
19
31
  super(...arguments);
20
32
  this.proxy = document.createElement("input");
@@ -22,82 +34,453 @@ class FormAssociatedSwitch extends formAssociated.CheckableFormAssociated(_Switc
22
34
  }
23
35
 
24
36
  /**
25
- * A Switch Custom HTML Element.
26
- * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#switch | ARIA switch }.
37
+ * The selection modes of a {@link @microsoft/fast-foundation#(Slider:class)}.
38
+ * @public
39
+ */
40
+ const SliderMode = {
41
+ singleValue: "single-value",
42
+ };
43
+ /**
44
+ * A Slider Custom HTML Element.
45
+ * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#slider | ARIA slider }.
27
46
  *
28
- * @slot - The deafult slot for the label
29
- * @slot checked-message - The message when in a checked state
30
- * @slot unchecked-message - The message when in an unchecked state
31
- * @csspart label - The label
32
- * @csspart switch - The element representing the switch, which wraps the indicator
33
- * @csspart status-message - The wrapper for the status messages
34
- * @csspart checked-message - The checked message
35
- * @csspart unchecked-message - The unchecked message
36
- * @fires change - Emits a custom change event when the checked state changes
47
+ * @slot track - The track of the slider
48
+ * @slot track-start - The track-start visual indicator
49
+ * @slot thumb - The slider thumb
50
+ * @slot - The default slot for labels
51
+ * @csspart positioning-region - The region used to position the elements of the slider
52
+ * @csspart track-container - The region containing the track elements
53
+ * @csspart track-start - The element wrapping the track start slot
54
+ * @csspart thumb-container - The thumb container element which is programatically positioned
55
+ * @fires change - Fires a custom 'change' event when the slider value changes
37
56
  *
38
57
  * @public
39
58
  */
40
- let Switch$1 = class Switch extends FormAssociatedSwitch {
59
+ let Slider$1 = class Slider extends FormAssociatedSlider {
41
60
  constructor() {
42
- super();
61
+ super(...arguments);
62
+ /**
63
+ * @internal
64
+ */
65
+ this.direction = direction.Direction.ltr;
66
+ /**
67
+ * @internal
68
+ */
69
+ this.isDragging = false;
70
+ /**
71
+ * @internal
72
+ */
73
+ this.trackWidth = 0;
74
+ /**
75
+ * @internal
76
+ */
77
+ this.trackMinWidth = 0;
43
78
  /**
44
- * The element's value to be included in form submission when checked.
45
- * Default to "on" to reach parity with input[type="checkbox"]
46
- *
47
79
  * @internal
48
80
  */
49
- this.initialValue = "on";
81
+ this.trackHeight = 0;
50
82
  /**
51
83
  * @internal
52
84
  */
85
+ this.trackLeft = 0;
86
+ /**
87
+ * @internal
88
+ */
89
+ this.trackMinHeight = 0;
90
+ /**
91
+ * Custom function that generates a string for the component's "aria-valuetext" attribute based on the current value.
92
+ *
93
+ * @public
94
+ */
95
+ this.valueTextFormatter = () => null;
96
+ /**
97
+ * The minimum allowed value.
98
+ *
99
+ * @defaultValue - 0
100
+ * @public
101
+ * @remarks
102
+ * HTML Attribute: min
103
+ */
104
+ this.min = 0; // Map to proxy element.
105
+ /**
106
+ * The maximum allowed value.
107
+ *
108
+ * @defaultValue - 10
109
+ * @public
110
+ * @remarks
111
+ * HTML Attribute: max
112
+ */
113
+ this.max = 10; // Map to proxy element.
114
+ /**
115
+ * Value to increment or decrement via arrow keys, mouse click or drag.
116
+ *
117
+ * @public
118
+ * @remarks
119
+ * HTML Attribute: step
120
+ */
121
+ this.step = 1; // Map to proxy element.
122
+ /**
123
+ * The orientation of the slider.
124
+ *
125
+ * @public
126
+ * @remarks
127
+ * HTML Attribute: orientation
128
+ */
129
+ this.orientation = aria.Orientation.horizontal;
130
+ /**
131
+ * The selection mode.
132
+ *
133
+ * @public
134
+ * @remarks
135
+ * HTML Attribute: mode
136
+ */
137
+ this.mode = SliderMode.singleValue;
53
138
  this.keypressHandler = (e) => {
54
139
  if (this.readOnly) {
55
140
  return;
56
141
  }
57
- switch (e.key) {
58
- case keyCodes.keyEnter:
59
- case keyCodes.keySpace:
60
- this.checked = !this.checked;
61
- break;
142
+ if (e.key === keyCodes.keyHome) {
143
+ e.preventDefault();
144
+ this.value = `${this.min}`;
145
+ }
146
+ else if (e.key === keyCodes.keyEnd) {
147
+ e.preventDefault();
148
+ this.value = `${this.max}`;
149
+ }
150
+ else if (!e.shiftKey) {
151
+ switch (e.key) {
152
+ case keyCodes.keyArrowRight:
153
+ case keyCodes.keyArrowUp:
154
+ e.preventDefault();
155
+ this.increment();
156
+ break;
157
+ case keyCodes.keyArrowLeft:
158
+ case keyCodes.keyArrowDown:
159
+ e.preventDefault();
160
+ this.decrement();
161
+ break;
162
+ }
163
+ }
164
+ };
165
+ this.setupTrackConstraints = () => {
166
+ const clientRect = this.track.getBoundingClientRect();
167
+ this.trackWidth = this.track.clientWidth;
168
+ this.trackMinWidth = this.track.clientLeft;
169
+ this.trackHeight = clientRect.bottom;
170
+ this.trackMinHeight = clientRect.top;
171
+ this.trackLeft = this.getBoundingClientRect().left;
172
+ if (this.trackWidth === 0) {
173
+ this.trackWidth = 1;
174
+ }
175
+ };
176
+ this.setupListeners = (remove = false) => {
177
+ const eventAction = `${remove ? "remove" : "add"}EventListener`;
178
+ this[eventAction]("keydown", this.keypressHandler);
179
+ this[eventAction]("mousedown", this.handleMouseDown);
180
+ this.thumb[eventAction]("mousedown", this.handleThumbMouseDown, {
181
+ passive: true,
182
+ });
183
+ this.thumb[eventAction]("touchstart", this.handleThumbMouseDown, {
184
+ passive: true,
185
+ });
186
+ // removes handlers attached by mousedown handlers
187
+ if (remove) {
188
+ this.handleMouseDown(null);
189
+ this.handleThumbMouseDown(null);
62
190
  }
63
191
  };
64
192
  /**
65
193
  * @internal
66
194
  */
67
- this.clickHandler = (e) => {
68
- if (!this.disabled && !this.readOnly) {
69
- this.checked = !this.checked;
195
+ this.initialValue = "";
196
+ /**
197
+ * Handle mouse moves during a thumb drag operation
198
+ * If the event handler is null it removes the events
199
+ */
200
+ this.handleThumbMouseDown = (event) => {
201
+ if (event) {
202
+ if (this.readOnly || this.disabled || event.defaultPrevented) {
203
+ return;
204
+ }
205
+ event.target.focus();
206
+ }
207
+ const eventAction = `${event !== null ? "add" : "remove"}EventListener`;
208
+ window[eventAction]("mouseup", this.handleWindowMouseUp);
209
+ window[eventAction]("mousemove", this.handleMouseMove, { passive: true });
210
+ window[eventAction]("touchmove", this.handleMouseMove, { passive: true });
211
+ window[eventAction]("touchend", this.handleWindowMouseUp);
212
+ this.isDragging = event !== null;
213
+ };
214
+ /**
215
+ * Handle mouse moves during a thumb drag operation
216
+ */
217
+ this.handleMouseMove = (e) => {
218
+ if (this.readOnly || this.disabled || e.defaultPrevented) {
219
+ return;
220
+ }
221
+ // update the value based on current position
222
+ const sourceEvent = window.TouchEvent && e instanceof TouchEvent
223
+ ? e.touches[0]
224
+ : e;
225
+ const eventValue = this.orientation === aria.Orientation.horizontal
226
+ ? sourceEvent.pageX - document.documentElement.scrollLeft - this.trackLeft
227
+ : sourceEvent.pageY - document.documentElement.scrollTop;
228
+ this.value = `${this.calculateNewValue(eventValue)}`;
229
+ };
230
+ this.calculateNewValue = (rawValue) => {
231
+ // update the value based on current position
232
+ const newPosition = convertPixelToPercent(rawValue, this.orientation === aria.Orientation.horizontal
233
+ ? this.trackMinWidth
234
+ : this.trackMinHeight, this.orientation === aria.Orientation.horizontal
235
+ ? this.trackWidth
236
+ : this.trackHeight, this.direction);
237
+ const newValue = (this.max - this.min) * newPosition + this.min;
238
+ return this.convertToConstrainedValue(newValue);
239
+ };
240
+ /**
241
+ * Handle a window mouse up during a drag operation
242
+ */
243
+ this.handleWindowMouseUp = (event) => {
244
+ this.stopDragging();
245
+ };
246
+ this.stopDragging = () => {
247
+ this.isDragging = false;
248
+ this.handleMouseDown(null);
249
+ this.handleThumbMouseDown(null);
250
+ };
251
+ /**
252
+ *
253
+ * @param e - MouseEvent or null. If there is no event handler it will remove the events
254
+ */
255
+ this.handleMouseDown = (e) => {
256
+ const eventAction = `${e !== null ? "add" : "remove"}EventListener`;
257
+ if (e === null || (!this.disabled && !this.readOnly)) {
258
+ window[eventAction]("mouseup", this.handleWindowMouseUp);
259
+ window.document[eventAction]("mouseleave", this.handleWindowMouseUp);
260
+ window[eventAction]("mousemove", this.handleMouseMove);
261
+ if (e) {
262
+ e.preventDefault();
263
+ this.setupTrackConstraints();
264
+ e.target.focus();
265
+ const controlValue = this.orientation === aria.Orientation.horizontal
266
+ ? e.pageX - document.documentElement.scrollLeft - this.trackLeft
267
+ : e.pageY - document.documentElement.scrollTop;
268
+ this.value = `${this.calculateNewValue(controlValue)}`;
269
+ }
70
270
  }
71
271
  };
72
- this.proxy.setAttribute("type", "checkbox");
272
+ this.convertToConstrainedValue = (value) => {
273
+ if (isNaN(value)) {
274
+ value = this.min;
275
+ }
276
+ /**
277
+ * The following logic intends to overcome the issue with math in JavaScript with regards to floating point numbers.
278
+ * This is needed as the `step` may be an integer but could also be a float. To accomplish this the step is assumed to be a float
279
+ * and is converted to an integer by determining the number of decimal places it represent, multiplying it until it is an
280
+ * integer and then dividing it to get back to the correct number.
281
+ */
282
+ let constrainedValue = value - this.min;
283
+ const roundedConstrainedValue = Math.round(constrainedValue / this.step);
284
+ const remainderValue = constrainedValue -
285
+ (roundedConstrainedValue * (this.stepMultiplier * this.step)) /
286
+ this.stepMultiplier;
287
+ constrainedValue =
288
+ remainderValue >= Number(this.step) / 2
289
+ ? constrainedValue - remainderValue + Number(this.step)
290
+ : constrainedValue - remainderValue;
291
+ return constrainedValue + this.min;
292
+ };
73
293
  }
74
294
  readOnlyChanged() {
75
295
  if (this.proxy instanceof HTMLInputElement) {
76
296
  this.proxy.readOnly = this.readOnly;
77
297
  }
78
- this.readOnly
79
- ? this.classList.add("readonly")
80
- : this.classList.remove("readonly");
298
+ }
299
+ /**
300
+ * The value property, typed as a number.
301
+ *
302
+ * @public
303
+ */
304
+ get valueAsNumber() {
305
+ return parseFloat(super.value);
306
+ }
307
+ set valueAsNumber(next) {
308
+ this.value = next.toString();
81
309
  }
82
310
  /**
83
311
  * @internal
84
312
  */
85
- checkedChanged(prev, next) {
86
- super.checkedChanged(prev, next);
87
- /**
88
- * @deprecated - this behavior already exists in the template and should not exist in the class.
89
- */
90
- this.checked ? this.classList.add("checked") : this.classList.remove("checked");
313
+ valueChanged(previous, next) {
314
+ super.valueChanged(previous, next);
315
+ if (this.$fastController.isConnected) {
316
+ this.setThumbPositionForOrientation(this.direction);
317
+ }
318
+ this.$emit("change");
319
+ }
320
+ minChanged() {
321
+ if (this.proxy instanceof HTMLInputElement) {
322
+ this.proxy.min = `${this.min}`;
323
+ }
324
+ this.validate();
325
+ }
326
+ maxChanged() {
327
+ if (this.proxy instanceof HTMLInputElement) {
328
+ this.proxy.max = `${this.max}`;
329
+ }
330
+ this.validate();
331
+ }
332
+ stepChanged() {
333
+ if (this.proxy instanceof HTMLInputElement) {
334
+ this.proxy.step = `${this.step}`;
335
+ }
336
+ this.updateStepMultiplier();
337
+ this.validate();
338
+ }
339
+ orientationChanged() {
340
+ if (this.$fastController.isConnected) {
341
+ this.setThumbPositionForOrientation(this.direction);
342
+ }
343
+ }
344
+ /**
345
+ * @internal
346
+ */
347
+ connectedCallback() {
348
+ super.connectedCallback();
349
+ this.proxy.setAttribute("type", "range");
350
+ this.direction = direction.getDirection(this);
351
+ this.updateStepMultiplier();
352
+ this.setupTrackConstraints();
353
+ this.setupListeners();
354
+ this.setupDefaultValue();
355
+ this.setThumbPositionForOrientation(this.direction);
356
+ }
357
+ /**
358
+ * @internal
359
+ */
360
+ disconnectedCallback() {
361
+ this.setupListeners(true);
362
+ }
363
+ /**
364
+ * Increment the value by the step
365
+ *
366
+ * @public
367
+ */
368
+ increment() {
369
+ const newVal = this.direction !== direction.Direction.rtl && this.orientation !== aria.Orientation.vertical
370
+ ? Number(this.value) + Number(this.step)
371
+ : Number(this.value) - Number(this.step);
372
+ const incrementedVal = this.convertToConstrainedValue(newVal);
373
+ const incrementedValString = incrementedVal < Number(this.max) ? `${incrementedVal}` : `${this.max}`;
374
+ this.value = incrementedValString;
375
+ }
376
+ /**
377
+ * Decrement the value by the step
378
+ *
379
+ * @public
380
+ */
381
+ decrement() {
382
+ const newVal = this.direction !== direction.Direction.rtl && this.orientation !== aria.Orientation.vertical
383
+ ? Number(this.value) - Number(this.step)
384
+ : Number(this.value) + Number(this.step);
385
+ const decrementedVal = this.convertToConstrainedValue(newVal);
386
+ const decrementedValString = decrementedVal > Number(this.min) ? `${decrementedVal}` : `${this.min}`;
387
+ this.value = decrementedValString;
388
+ }
389
+ /**
390
+ * Places the thumb based on the current value
391
+ *
392
+ * @public
393
+ * @param direction - writing mode
394
+ */
395
+ setThumbPositionForOrientation(direction) {
396
+ const newPct = convertPixelToPercent(Number(this.value), Number(this.min), Number(this.max), direction);
397
+ const percentage = (1 - newPct) * 100;
398
+ if (this.orientation === aria.Orientation.horizontal) {
399
+ this.position = this.isDragging
400
+ ? `right: ${percentage}%; transition: none;`
401
+ : `right: ${percentage}%; transition: all 0.2s ease;`;
402
+ }
403
+ else {
404
+ this.position = this.isDragging
405
+ ? `bottom: ${percentage}%; transition: none;`
406
+ : `bottom: ${percentage}%; transition: all 0.2s ease;`;
407
+ }
408
+ }
409
+ /**
410
+ * Update the step multiplier used to ensure rounding errors from steps that
411
+ * are not whole numbers
412
+ */
413
+ updateStepMultiplier() {
414
+ const stepString = this.step + "";
415
+ const decimalPlacesOfStep = !!(this.step % 1)
416
+ ? stepString.length - stepString.indexOf(".") - 1
417
+ : 0;
418
+ this.stepMultiplier = Math.pow(10, decimalPlacesOfStep);
419
+ }
420
+ get midpoint() {
421
+ return `${this.convertToConstrainedValue((this.max + this.min) / 2)}`;
422
+ }
423
+ setupDefaultValue() {
424
+ if (typeof this.value === "string") {
425
+ if (this.value.length === 0) {
426
+ this.initialValue = this.midpoint;
427
+ }
428
+ else {
429
+ const value = parseFloat(this.value);
430
+ if (!Number.isNaN(value) && (value < this.min || value > this.max)) {
431
+ this.value = this.midpoint;
432
+ }
433
+ }
434
+ }
91
435
  }
92
436
  };
93
437
  index.__decorate([
94
438
  index.attr({ attribute: "readonly", mode: "boolean" })
95
- ], Switch$1.prototype, "readOnly", void 0);
439
+ ], Slider$1.prototype, "readOnly", void 0);
440
+ index.__decorate([
441
+ index.observable
442
+ ], Slider$1.prototype, "direction", void 0);
443
+ index.__decorate([
444
+ index.observable
445
+ ], Slider$1.prototype, "isDragging", void 0);
446
+ index.__decorate([
447
+ index.observable
448
+ ], Slider$1.prototype, "position", void 0);
449
+ index.__decorate([
450
+ index.observable
451
+ ], Slider$1.prototype, "trackWidth", void 0);
452
+ index.__decorate([
453
+ index.observable
454
+ ], Slider$1.prototype, "trackMinWidth", void 0);
455
+ index.__decorate([
456
+ index.observable
457
+ ], Slider$1.prototype, "trackHeight", void 0);
96
458
  index.__decorate([
97
459
  index.observable
98
- ], Switch$1.prototype, "defaultSlottedNodes", void 0);
460
+ ], Slider$1.prototype, "trackLeft", void 0);
461
+ index.__decorate([
462
+ index.observable
463
+ ], Slider$1.prototype, "trackMinHeight", void 0);
464
+ index.__decorate([
465
+ index.observable
466
+ ], Slider$1.prototype, "valueTextFormatter", void 0);
467
+ index.__decorate([
468
+ index.attr({ converter: index.nullableNumberConverter })
469
+ ], Slider$1.prototype, "min", void 0);
470
+ index.__decorate([
471
+ index.attr({ converter: index.nullableNumberConverter })
472
+ ], Slider$1.prototype, "max", void 0);
473
+ index.__decorate([
474
+ index.attr({ converter: index.nullableNumberConverter })
475
+ ], Slider$1.prototype, "step", void 0);
476
+ index.__decorate([
477
+ index.attr
478
+ ], Slider$1.prototype, "orientation", void 0);
479
+ index.__decorate([
480
+ index.attr
481
+ ], Slider$1.prototype, "mode", void 0);
99
482
 
100
- const styles = ":host(.disabled){cursor:not-allowed}.control{display:inline-flex;border-radius:14px;gap:8px;--focus-inset: -4px;--focus-stroke-gap-color: transparent}.control.connotation-cta{--_connotation-color-primary-text: var(--vvd-switch-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-primary: var(--vvd-switch-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-increment: var(--vvd-switch-cta-primary-increment, var(--vvd-color-cta-600));--_connotation-color-firm: var(--vvd-switch-cta-firm, var(--vvd-color-cta-600));--_connotation-color-intermediate: var(--vvd-switch-cta-intermediate, var(--vvd-color-cta-500));--_connotation-color-fierce: var(--vvd-switch-cta-fierce, var(--vvd-color-cta-700))}.control.connotation-alert{--_connotation-color-primary-text: var(--vvd-switch-alert-primary-text, var(--vvd-color-canvas));--_connotation-color-primary: var(--vvd-switch-alert-primary, var(--vvd-color-alert-500));--_connotation-color-primary-increment: var(--vvd-switch-alert-primary-increment, var(--vvd-color-alert-600));--_connotation-color-firm: var(--vvd-switch-alert-firm, var(--vvd-color-alert-600));--_connotation-color-intermediate: var(--vvd-switch-alert-intermediate, var(--vvd-color-alert-500));--_connotation-color-fierce: var(--vvd-switch-alert-fierce, var(--vvd-color-alert-700))}.control.connotation-success{--_connotation-color-primary-text: var(--vvd-switch-success-primary-text, var(--vvd-color-canvas));--_connotation-color-primary: var(--vvd-switch-success-primary, var(--vvd-color-success-500));--_connotation-color-primary-increment: var(--vvd-switch-success-primary-increment, var(--vvd-color-success-600));--_connotation-color-firm: var(--vvd-switch-success-firm, var(--vvd-color-success-600));--_connotation-color-intermediate: var(--vvd-switch-success-intermediate, var(--vvd-color-success-500));--_connotation-color-fierce: var(--vvd-switch-success-fierce, var(--vvd-color-success-700))}.control:not(.connotation-cta,.connotation-alert,.connotation-success){--_connotation-color-primary-text: var(--vvd-switch-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary: var(--vvd-switch-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-increment: var(--vvd-switch-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-firm: var(--vvd-switch-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-intermediate: var(--vvd-switch-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-fierce: var(--vvd-switch-accent-fierce, var(--vvd-color-neutral-700))}.control{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.control.appearance-filled{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: transparent}.control:where(:hover,.hover):where(:not(:disabled,.disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.control:where(:hover,.hover):where(:not(:disabled,.disabled,.readonly)).appearance-filled{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary-increment);--_appearance-color-outline: transparent}.control:where(:disabled,.disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.control:where(:disabled,.disabled).appearance-filled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: transparent}.control:where(.readonly):where(:not(:disabled,.disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.control:where(.readonly):where(:not(:disabled,.disabled)).appearance-filled{--_appearance-color-text: var(--vvd-color-neutral-800);--_appearance-color-fill: var(--vvd-color-neutral-500);--_appearance-color-outline: transparent}.control:focus-visible{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))}@supports (user-select: none){.control{user-select:none}}.control:not(.disabled){cursor:pointer}.control.disabled{pointer-events:none}.switch{--_switch-inline-size:calc(1px*(20 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*1.8);display:flex;box-sizing:border-box;align-items:center;background-color:var(--_appearance-color-fill);block-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)));border-radius:40px;box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);inline-size:var(--_switch-inline-size);transition:all .2s ease-in-out 0s}.checked-indicator{--_switch-checked-indicator-size: calc(calc(1px*(20 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) / 1.6667);--_switch-gutter: calc(var(--_switch-checked-indicator-size) / 3);block-size:var(--_switch-checked-indicator-size);border-radius:inherit;inline-size:var(--_switch-checked-indicator-size);margin-inline-start:auto;transition:all .2s ease-in-out 0s}.control:not(.appearance-filled) .checked-indicator{background-color:var(--_appearance-color-outline)}.control:not(.appearance-filled):where(.readonly) .checked-indicator{background-color:var(--vvd-color-neutral-600)}.control.appearance-filled .checked-indicator{background-color:var(--vvd-color-neutral-100)}.control:not(.checked) .checked-indicator{transform:translate(calc(-1 * var(--_switch-inline-size) + var(--_switch-checked-indicator-size) + var(--_switch-gutter)))}.control.checked .checked-indicator{transform:translate(calc(-1 * var(--_switch-gutter)))}.control.appearance-filled.disabled .checked-indicator{background-color:var(--_appearance-color-text)}.control.appearance-filled.readonly .checked-indicator{background-color:var(--vvd-color-neutral-50)}.label{color:var(--vvd-color-canvas-text);cursor:pointer;font:var(--vvd-typography-base)}\n";
483
+ const styles = ":host{display:inline-block}:host(:not([orientation=vertical])){inline-size:100%}:host([orientation=vertical]){block-size:100%;min-block-size:calc(var(--_thumb-interaction-indicator-size) * 5)}:host([disabled]){cursor:not-allowed}.control{--_thumb-size: 12px;--_thumb-interaction-indicator-size: 36px;--_track-start-inset-inline-start: 0;--_track-start-inset-block-start: 0;cursor:pointer;outline:none;user-select:none}.control.connotation-cta{--_connotation-color-primary: var(--vvd-slider-cta-primary, var(--vvd-color-cta-500))}.control:not(.connotation-cta){--_connotation-color-primary: var(--vvd-slider-accent-primary, var(--vvd-color-canvas-text))}.control{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: transparent}.control .positioning-region{position:relative}.control .track{position:absolute;border-radius:4px;background:var(--_track-background-color)}.control .track-start{position:absolute;border-radius:inherit;background:var(--_track-start-background-color);block-size:100%;inset-inline-start:var(--_track-start-inset-inline-start)}.control.horizontal{block-size:var(--_thumb-interaction-indicator-size);inline-size:calc(100% - var(--_thumb-size));margin-inline-start:calc(var(--_thumb-size) / 2);min-inline-size:var(--_thumb-size)}.control.horizontal .track{top:calc((var(--_thumb-interaction-indicator-size) - 2px) / 2);right:0;left:0;block-size:2px}.control.horizontal .track .mark{block-size:4px;inline-size:100%}.control.vertical{margin-top:calc(var(--_thumb-interaction-indicator-size) / 2);block-size:calc(100% - var(--_thumb-interaction-indicator-size));inline-size:var(--_thumb-interaction-indicator-size);min-block-size:var(--_thumb-interaction-indicator-size)}.control.vertical .positioning-region{block-size:100%}.control.vertical .track{left:calc((var(--_thumb-interaction-indicator-size) - 2px) / 2);block-size:100%;inline-size:2px}.control.vertical .track .mark{block-size:100%;inline-size:4px}.control.vertical .track-start{block-size:auto;inline-size:100%;inset-block-start:var(--_track-start-inset-block-start)}.control.disabled{--_track-background-color: var(--vvd-color-neutral-100);--_track-start-background-color: var(--vvd-color-neutral-300);pointer-events:none}.control:not(.disabled){--_track-background-color: var(--vvd-color-neutral-300);--_track-start-background-color: var(--_appearance-color-fill)}.thumb-container{position:absolute;border-radius:50%;block-size:var(--_thumb-interaction-indicator-size);cursor:inherit;inline-size:var(--_thumb-interaction-indicator-size);outline-color:transparent;touch-action:none}:focus-visible .thumb-container,.thumb-container:focus-visible{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));--focus-stroke-gap-color: transparent;--_thumb-interaction-indicator-alpha: .05;border-radius:50%}.control.horizontal .thumb-container{transform:translate(calc(var(--_thumb-interaction-indicator-size) / 2))}.control.vertical .thumb-container{transform:translateY(calc(var(--_thumb-interaction-indicator-size) / 2))}.control:not(.disabled) .thumb-container:hover{--_thumb-interaction-indicator-alpha: .12}.control:not(.disabled) .thumb-container:active{--_thumb-interaction-indicator-alpha: .25}.thumb-container:before{position:absolute;display:block;border-radius:inherit;background-color:var(--_track-start-background-color);block-size:var(--_thumb-interaction-indicator-size);content:\"\";inline-size:var(--_thumb-interaction-indicator-size);opacity:var(--_thumb-interaction-indicator-alpha, 0);transition:opacity .2s ease-out 0s}.thumb-container:after{position:absolute;display:block;border-radius:inherit;background-color:var(--_track-start-background-color);block-size:var(--_thumb-size);content:\"\";inline-size:var(--_thumb-size);inset:calc((var(--_thumb-interaction-indicator-size) - var(--_thumb-size)) / 2)}\n";
101
484
 
102
485
  var __defProp = Object.defineProperty;
103
486
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -110,56 +493,61 @@ var __decorateClass = (decorators, target, key, kind) => {
110
493
  __defProp(target, key, result);
111
494
  return result;
112
495
  };
113
- class Switch extends Switch$1 {
496
+ class Slider extends Slider$1 {
497
+ constructor() {
498
+ super(...arguments);
499
+ this.ariaLabel = null;
500
+ this.ariaValuetext = null;
501
+ this.markers = false;
502
+ }
503
+ /**
504
+ * TO BE REMOVED WHEN UPGRADING TO FAST-FOUNDATION 3
505
+ *
506
+ * @internal
507
+ */
508
+ valueChanged(previous, next) {
509
+ if (this.$fastController.isConnected) {
510
+ const nextAsNumber = parseFloat(next);
511
+ const value = slider_template.limit(
512
+ this.min,
513
+ this.max,
514
+ this["convertToConstrainedValue"](nextAsNumber)
515
+ ).toString();
516
+ if (value !== next) {
517
+ this.value = value;
518
+ return;
519
+ }
520
+ super.valueChanged(previous, value);
521
+ }
522
+ }
114
523
  }
115
524
  __decorateClass([
116
- index.attr
117
- ], Switch.prototype, "label", 2);
525
+ index.attr({ attribute: "aria-label" })
526
+ ], Slider.prototype, "ariaLabel", 2);
527
+ __decorateClass([
528
+ index.attr({ attribute: "aria-valuetext" })
529
+ ], Slider.prototype, "ariaValuetext", 2);
530
+ __decorateClass([
531
+ index.attr({
532
+ mode: "boolean"
533
+ })
534
+ ], Slider.prototype, "markers", 2);
118
535
  __decorateClass([
119
536
  index.attr
120
- ], Switch.prototype, "connotation", 2);
121
-
122
- const getClasses = (_) => classNames.classNames(
123
- "control",
124
- ["appearance-filled", _.checked],
125
- ["checked", _.checked],
126
- ["disabled", _.disabled],
127
- ["readonly", _.readOnly],
128
- [`connotation-${_.connotation}`, Boolean(_.checked) && Boolean(_.connotation)]
129
- );
130
- const SwitchTemplate = () => {
131
- return index.html`
132
- <div
133
- class="${getClasses}"
134
- role="switch"
135
- aria-checked="${(x) => x.checked}"
136
- aria-disabled="${(x) => x.disabled}"
137
- aria-readonly="${(x) => x.readOnly}"
138
- tabindex="${(x) => x.disabled ? null : 0}"
139
- @keypress="${(x, c) => x.keypressHandler(c.event)}"
140
- @click="${(x, c) => x.clickHandler(c.event)}"
141
- >
142
- <div class="switch">
143
- <span class="checked-indicator"></span>
144
- </div>
145
- ${when.when((x) => x.label, index.html`<div class="label">
146
- ${(x) => x.label}
147
- </div>`)}
148
- </div>
149
- `;
150
- };
537
+ ], Slider.prototype, "connotation", 2);
151
538
 
152
- const switchDefinition = Switch.compose({
153
- baseName: "switch",
154
- template: SwitchTemplate,
539
+ const sliderDefinition = Slider.compose({
540
+ baseName: "slider",
541
+ template: slider_template.SliderTemplate,
155
542
  styles,
156
543
  shadowOptions: {
157
544
  delegatesFocus: true
158
545
  }
159
546
  });
160
- const switchRegistries = [switchDefinition(), ...definition.iconRegistries];
161
- const registerSwitch = index.registerFactory(switchRegistries);
547
+ const sliderRegistries = [sliderDefinition()];
548
+ const registerSlider = index.registerFactory(sliderRegistries);
162
549
 
163
- exports.registerSwitch = registerSwitch;
164
- exports.switchDefinition = switchDefinition;
165
- exports.switchRegistries = switchRegistries;
550
+ exports.Slider = Slider;
551
+ exports.registerSlider = registerSlider;
552
+ exports.sliderDefinition = sliderDefinition;
553
+ exports.sliderRegistries = sliderRegistries;