@carbon/web-components 2.32.1 → 2.33.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 (283) hide show
  1. package/custom-elements.json +257 -6
  2. package/dist/{16-41ffb037.js → 16-017a2c27.js} +2 -2
  3. package/dist/{16-a4bb462e.js → 16-17aff615.js} +2 -2
  4. package/dist/{16-250e2a70.js → 16-4b3acb23.js} +2 -2
  5. package/dist/16-4b8b7f2e.js +79 -0
  6. package/dist/{16-acbb0130.js → 16-51aecc68.js} +2 -2
  7. package/dist/{16-0353e7e3.js → 16-580bd432.js} +2 -2
  8. package/dist/{16-dbe65920.js → 16-6e3e4eb0.js} +2 -2
  9. package/dist/16-7a283177.js +79 -0
  10. package/dist/{16-2363f096.js → 16-921e0a19.js} +2 -2
  11. package/dist/16-b6a9d0f4.js +79 -0
  12. package/dist/{16-9631190c.js → 16-e3856d30.js} +2 -2
  13. package/dist/{16-f4def175.js → 16-eefa1533.js} +2 -2
  14. package/dist/20-dd19ea71.js +79 -0
  15. package/dist/20-f62e5e6c.js +79 -0
  16. package/dist/accordion.min.js +16 -16
  17. package/dist/ai-label.min.js +5 -5
  18. package/dist/ai-skeleton.min.js +2 -2
  19. package/dist/badge-indicator.min.js +2 -2
  20. package/dist/breadcrumb.min.js +10 -10
  21. package/dist/button-441e5c2f.js +144 -0
  22. package/dist/button-set-94219189.js +79 -0
  23. package/dist/{button-skeleton-eb7300c7.js → button-skeleton-13d34921.js} +13 -13
  24. package/dist/button.min.js +2 -2
  25. package/dist/carbon-element-716e46b0.js +1 -1
  26. package/dist/chat-button.min.js +3 -3
  27. package/dist/checkbox-7a9a01a0.js +118 -0
  28. package/dist/{checkbox-skeleton-2bfc2d17.js → checkbox-skeleton-209de048.js} +16 -16
  29. package/dist/checkbox.min.js +2 -2
  30. package/dist/{class-map-287e73b5.js → class-map-710415c2.js} +2 -2
  31. package/dist/code-snippet.min.js +17 -17
  32. package/dist/collection-helpers-eb62fd34.js +1 -1
  33. package/dist/combo-box.min.js +9 -9
  34. package/dist/combo-button.min.js +5 -5
  35. package/dist/consume-cadfd67f.js +114 -0
  36. package/dist/content-switcher-item-5b8a2330.js +105 -0
  37. package/dist/content-switcher.min.js +2 -2
  38. package/dist/copy-button-f99d6bd0.js +94 -0
  39. package/dist/copy-button.min.js +2 -2
  40. package/dist/data-table.min.js +51 -51
  41. package/dist/date-picker.min.js +14 -14
  42. package/dist/{definition-tooltip-3f9c32e8.js → definition-tooltip-be4e4d61.js} +4 -4
  43. package/dist/defs-c5cfba1b.js +1 -1
  44. package/dist/directive-e2d48b9c.js +1 -1
  45. package/dist/dropdown-item-8a543d34.js +147 -0
  46. package/dist/dropdown.min.js +3 -3
  47. package/dist/feature-flags.min.js +79 -0
  48. package/dist/file-uploader.min.js +20 -20
  49. package/dist/floating-controller-92da0306.js +1 -1
  50. package/dist/floating-menu-31ead115.js +79 -0
  51. package/dist/floating-menu.min.js +2 -2
  52. package/dist/{focus-c9ba63ff.js → focus-e21d0f18.js} +2 -2
  53. package/dist/form-3c2e14c6.js +1 -1
  54. package/dist/form-group.min.js +7 -7
  55. package/dist/form.min.js +2 -2
  56. package/dist/grid.min.js +111 -0
  57. package/dist/heading.min.js +3 -3
  58. package/dist/host-listener-97e78474.js +1 -1
  59. package/dist/icon-button-5c890f11.js +93 -0
  60. package/dist/icon-button.min.js +2 -2
  61. package/dist/icon-indicator.min.js +2 -2
  62. package/dist/{if-defined-7fb4dd64.js → if-defined-013b742a.js} +3 -3
  63. package/dist/{if-non-empty-d0ff50a3.js → if-non-empty-feaf1d4c.js} +2 -2
  64. package/dist/inline-loading.min.js +7 -7
  65. package/dist/layer-3c687a36.js +79 -0
  66. package/dist/layer.min.js +2 -2
  67. package/dist/link-ca3c98ab.js +103 -0
  68. package/dist/link.min.js +2 -2
  69. package/dist/list.min.js +5 -5
  70. package/dist/lit-element-7f93799b.js +101 -0
  71. package/dist/loading-a3706dd6.js +79 -0
  72. package/dist/{loading-icon-f3d7d50c.js → loading-icon-65c24fae.js} +10 -10
  73. package/dist/loading.min.js +2 -2
  74. package/dist/menu-button.min.js +4 -4
  75. package/dist/menu-item-radio-group-32a066a7.js +131 -0
  76. package/dist/menu.min.js +2 -2
  77. package/dist/modal-label-d172677b.js +110 -0
  78. package/dist/modal.min.js +2 -2
  79. package/dist/multi-select.min.js +24 -24
  80. package/dist/notification.min.js +26 -26
  81. package/dist/number-input.min.js +34 -32
  82. package/dist/on-8707857f.js +1 -1
  83. package/dist/overflow-menu.min.js +8 -8
  84. package/dist/page-header.min.js +2 -2
  85. package/dist/pagination.min.js +19 -19
  86. package/dist/popover-content-6f347b82.js +94 -0
  87. package/dist/popover.min.js +2 -2
  88. package/dist/progress-bar.min.js +9 -9
  89. package/dist/progress-indicator.min.js +12 -12
  90. package/dist/{property-dd1c81a7.js → property-c70a07a2.js} +3 -3
  91. package/dist/query-602de8af.js +1 -1
  92. package/dist/query-assigned-elements-1bd68a6e.js +1 -1
  93. package/dist/radio-button-skeleton-e8c71f9b.js +118 -0
  94. package/dist/radio-button.min.js +2 -2
  95. package/dist/radio-group-manager-853a7e76.js +1 -1
  96. package/dist/search-9476f73d.js +108 -0
  97. package/dist/search.min.js +5 -5
  98. package/dist/{select-23298f17.js → select-50fa145d.js} +33 -33
  99. package/dist/select.min.js +5 -5
  100. package/dist/settings-37ba2900.js +79 -0
  101. package/dist/shape-indicator.min.js +3 -3
  102. package/dist/shared-enums-ccc90ee0.js +1 -1
  103. package/dist/side-panel.min.js +22 -22
  104. package/dist/skeleton-icon-5559709e.js +79 -0
  105. package/dist/skeleton-icon.min.js +2 -2
  106. package/dist/skeleton-placeholder-54360372.js +79 -0
  107. package/dist/skeleton-placeholder.min.js +2 -2
  108. package/dist/skeleton-text-37a275b8.js +79 -0
  109. package/dist/skeleton-text.min.js +2 -2
  110. package/dist/skip-to-content.min.js +4 -4
  111. package/dist/slider.min.js +139 -55
  112. package/dist/slug.min.js +5 -5
  113. package/dist/spread-5378d580.js +79 -0
  114. package/dist/stack.min.js +2 -2
  115. package/dist/{state-8793f01e.js → state-9418736a.js} +2 -2
  116. package/dist/structured-list.min.js +12 -12
  117. package/dist/tabs.min.js +25 -25
  118. package/dist/tag.min.js +33 -33
  119. package/dist/tearsheet.min.js +14 -14
  120. package/dist/text-input-cad89f77.js +140 -0
  121. package/dist/text-input.min.js +5 -5
  122. package/dist/textarea.min.js +26 -22
  123. package/dist/tile.min.js +24 -24
  124. package/dist/time-picker.min.js +21 -21
  125. package/dist/toggle-tip.min.js +2 -2
  126. package/dist/toggle.min.js +14 -14
  127. package/dist/toggletip-2538b5ef.js +124 -0
  128. package/dist/tooltip-content-32932ef2.js +81 -0
  129. package/dist/tooltip.min.js +2 -2
  130. package/dist/tree-view.min.js +30 -30
  131. package/dist/ui-shell.min.js +34 -34
  132. package/dist/validity-de6fe348.js +1 -1
  133. package/es/components/accordion/accordion-item.js +1 -1
  134. package/es/components/data-table/data-table.scss.js +1 -1
  135. package/es/components/feature-flags/index.d.ts +42 -0
  136. package/es/components/feature-flags/index.js +118 -0
  137. package/es/components/feature-flags/index.js.map +1 -0
  138. package/es/components/grid/column-hang.d.ts +19 -0
  139. package/es/components/grid/column-hang.js +43 -0
  140. package/es/components/grid/column-hang.js.map +1 -0
  141. package/es/components/grid/column-hang.scss.js +13 -0
  142. package/es/components/grid/column-hang.scss.js.map +1 -0
  143. package/es/components/grid/column.d.ts +35 -0
  144. package/es/components/grid/column.js +50 -0
  145. package/es/components/grid/column.js.map +1 -0
  146. package/es/components/grid/defs.d.ts +35 -0
  147. package/es/components/grid/defs.js +46 -0
  148. package/es/components/grid/defs.js.map +1 -0
  149. package/es/components/grid/grid-context.d.ts +9 -0
  150. package/es/components/grid/grid-context.js +13 -0
  151. package/es/components/grid/grid-context.js.map +1 -0
  152. package/es/components/grid/grid.d.ts +41 -0
  153. package/es/components/grid/grid.js +103 -0
  154. package/es/components/grid/grid.js.map +1 -0
  155. package/es/components/grid/grid.scss.js +13 -0
  156. package/es/components/grid/grid.scss.js.map +1 -0
  157. package/es/components/grid/index.d.ts +11 -0
  158. package/es/components/grid/index.js +11 -0
  159. package/es/components/grid/index.js.map +1 -0
  160. package/es/components/number-input/number-input.d.ts +24 -0
  161. package/es/components/number-input/number-input.js +65 -8
  162. package/es/components/number-input/number-input.js.map +1 -1
  163. package/es/components/number-input/number-input.scss.js +1 -1
  164. package/es/components/progress-bar/progress-bar.scss.js +1 -1
  165. package/es/components/slider/slider-input.d.ts +5 -1
  166. package/es/components/slider/slider-input.js +78 -30
  167. package/es/components/slider/slider-input.js.map +1 -1
  168. package/es/components/slider/slider-skeleton.d.ts +4 -0
  169. package/es/components/slider/slider-skeleton.js +65 -2
  170. package/es/components/slider/slider-skeleton.js.map +1 -1
  171. package/es/components/slider/slider.d.ts +33 -0
  172. package/es/components/slider/slider.js +453 -99
  173. package/es/components/slider/slider.js.map +1 -1
  174. package/es/components/slider/slider.scss.js +1 -1
  175. package/es/components/textarea/textarea.d.ts +25 -2
  176. package/es/components/textarea/textarea.js +100 -5
  177. package/es/components/textarea/textarea.js.map +1 -1
  178. package/es/components/textarea/textarea.scss.js +1 -1
  179. package/es/components/toggle/toggle.js +6 -1
  180. package/es/components/toggle/toggle.js.map +1 -1
  181. package/es/feature-flags/es/index.js +444 -0
  182. package/es/feature-flags/es/index.js.map +1 -0
  183. package/es-custom/components/accordion/accordion-item.js +1 -1
  184. package/es-custom/components/data-table/data-table.scss.js +1 -1
  185. package/es-custom/components/feature-flags/index.d.ts +42 -0
  186. package/es-custom/components/feature-flags/index.js +118 -0
  187. package/es-custom/components/feature-flags/index.js.map +1 -0
  188. package/es-custom/components/grid/column-hang.d.ts +19 -0
  189. package/es-custom/components/grid/column-hang.js +43 -0
  190. package/es-custom/components/grid/column-hang.js.map +1 -0
  191. package/es-custom/components/grid/column-hang.scss.js +13 -0
  192. package/es-custom/components/grid/column-hang.scss.js.map +1 -0
  193. package/es-custom/components/grid/column.d.ts +35 -0
  194. package/es-custom/components/grid/column.js +50 -0
  195. package/es-custom/components/grid/column.js.map +1 -0
  196. package/es-custom/components/grid/defs.d.ts +35 -0
  197. package/es-custom/components/grid/defs.js +46 -0
  198. package/es-custom/components/grid/defs.js.map +1 -0
  199. package/es-custom/components/grid/grid-context.d.ts +9 -0
  200. package/es-custom/components/grid/grid-context.js +13 -0
  201. package/es-custom/components/grid/grid-context.js.map +1 -0
  202. package/es-custom/components/grid/grid.d.ts +41 -0
  203. package/es-custom/components/grid/grid.js +103 -0
  204. package/es-custom/components/grid/grid.js.map +1 -0
  205. package/es-custom/components/grid/grid.scss.js +13 -0
  206. package/es-custom/components/grid/grid.scss.js.map +1 -0
  207. package/es-custom/components/grid/index.d.ts +11 -0
  208. package/es-custom/components/grid/index.js +11 -0
  209. package/es-custom/components/grid/index.js.map +1 -0
  210. package/es-custom/components/number-input/number-input.d.ts +24 -0
  211. package/es-custom/components/number-input/number-input.js +65 -8
  212. package/es-custom/components/number-input/number-input.js.map +1 -1
  213. package/es-custom/components/number-input/number-input.scss.js +1 -1
  214. package/es-custom/components/progress-bar/progress-bar.scss.js +1 -1
  215. package/es-custom/components/slider/slider-input.d.ts +5 -1
  216. package/es-custom/components/slider/slider-input.js +78 -30
  217. package/es-custom/components/slider/slider-input.js.map +1 -1
  218. package/es-custom/components/slider/slider-skeleton.d.ts +4 -0
  219. package/es-custom/components/slider/slider-skeleton.js +65 -2
  220. package/es-custom/components/slider/slider-skeleton.js.map +1 -1
  221. package/es-custom/components/slider/slider.d.ts +33 -0
  222. package/es-custom/components/slider/slider.js +453 -99
  223. package/es-custom/components/slider/slider.js.map +1 -1
  224. package/es-custom/components/slider/slider.scss.js +1 -1
  225. package/es-custom/components/textarea/textarea.d.ts +25 -2
  226. package/es-custom/components/textarea/textarea.js +100 -5
  227. package/es-custom/components/textarea/textarea.js.map +1 -1
  228. package/es-custom/components/textarea/textarea.scss.js +1 -1
  229. package/es-custom/components/toggle/toggle.js +6 -1
  230. package/es-custom/components/toggle/toggle.js.map +1 -1
  231. package/es-custom/feature-flags/es/index.js +444 -0
  232. package/es-custom/feature-flags/es/index.js.map +1 -0
  233. package/lib/components/feature-flags/index.d.ts +42 -0
  234. package/lib/components/grid/column-hang.d.ts +19 -0
  235. package/lib/components/grid/column.d.ts +35 -0
  236. package/lib/components/grid/defs.d.ts +35 -0
  237. package/lib/components/grid/defs.js +48 -0
  238. package/lib/components/grid/defs.js.map +1 -0
  239. package/lib/components/grid/grid-context.d.ts +9 -0
  240. package/lib/components/grid/grid.d.ts +41 -0
  241. package/lib/components/grid/index.d.ts +11 -0
  242. package/lib/components/number-input/number-input.d.ts +24 -0
  243. package/lib/components/slider/slider-input.d.ts +5 -1
  244. package/lib/components/slider/slider-skeleton.d.ts +4 -0
  245. package/lib/components/slider/slider.d.ts +33 -0
  246. package/lib/components/textarea/textarea.d.ts +25 -2
  247. package/package.json +4 -4
  248. package/scss/components/grid/column-hang.scss +15 -0
  249. package/scss/components/grid/grid-story.scss +96 -0
  250. package/scss/components/grid/grid.scss +59 -0
  251. package/scss/components/grid/mixin.scss +70 -0
  252. package/scss/components/number-input/number-input.scss +4 -0
  253. package/scss/components/slider/slider.scss +26 -0
  254. package/scss/components/textarea/textarea.scss +15 -2
  255. package/dist/16-a6ff8f82.js +0 -79
  256. package/dist/16-a9f5da53.js +0 -79
  257. package/dist/16-c0c2f9cc.js +0 -79
  258. package/dist/20-6f209450.js +0 -79
  259. package/dist/20-cf8682e7.js +0 -79
  260. package/dist/button-8a9ddb9f.js +0 -144
  261. package/dist/button-set-e143c49e.js +0 -79
  262. package/dist/checkbox-f024ef99.js +0 -118
  263. package/dist/content-switcher-item-c66114b8.js +0 -105
  264. package/dist/copy-button-a481f85e.js +0 -94
  265. package/dist/dropdown-item-61ac6300.js +0 -147
  266. package/dist/floating-menu-f19577a8.js +0 -79
  267. package/dist/icon-button-58819f57.js +0 -93
  268. package/dist/layer-602c2202.js +0 -79
  269. package/dist/link-76646b17.js +0 -103
  270. package/dist/loading-ae8e2f1b.js +0 -79
  271. package/dist/menu-item-radio-group-45e474cb.js +0 -168
  272. package/dist/modal-label-f93860bf.js +0 -110
  273. package/dist/popover-content-b41e9612.js +0 -94
  274. package/dist/radio-button-skeleton-0c69d51b.js +0 -118
  275. package/dist/search-0191f926.js +0 -108
  276. package/dist/settings-c3654bc7.js +0 -101
  277. package/dist/skeleton-icon-e81be97a.js +0 -79
  278. package/dist/skeleton-placeholder-13b648d8.js +0 -79
  279. package/dist/skeleton-text-ec2217a3.js +0 -79
  280. package/dist/spread-bbf12ceb.js +0 -79
  281. package/dist/text-input-404238e9.js +0 -140
  282. package/dist/toggletip-691cdd4c.js +0 -124
  283. package/dist/tooltip-content-8fc23961.js +0 -81
@@ -7,7 +7,7 @@
7
7
 
8
8
  import { __decorate } from 'tslib';
9
9
  import { html, LitElement } from 'lit';
10
- import { query, property } from 'lit/decorators.js';
10
+ import { property, query } from 'lit/decorators.js';
11
11
  import { classMap } from 'lit/directives/class-map.js';
12
12
  import throttle from 'lodash-es/throttle';
13
13
  import { prefix } from '../../globals/settings.js';
@@ -37,6 +37,10 @@ const THUMB_DIRECTION = {
37
37
  Down: 1,
38
38
  ArrowDown: 1,
39
39
  };
40
+ /**
41
+ * Minimum time between processed "drag" events.
42
+ */
43
+ const EVENT_THROTTLE = 16; // ms
40
44
  /**
41
45
  * Slider.
42
46
  *
@@ -51,6 +55,10 @@ const THUMB_DIRECTION = {
51
55
  let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(LitElement))) {
52
56
  constructor() {
53
57
  super(...arguments);
58
+ this._cachedRateUpper = 1;
59
+ this._cachedRate = 0;
60
+ this.dragCooldownTimeout = null;
61
+ this.dragCoolDown = false;
54
62
  /**
55
63
  * The internal value of `max` property.
56
64
  */
@@ -75,14 +83,26 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
75
83
  * `true` if dragging of thumb is in progress.
76
84
  */
77
85
  this._dragging = false;
86
+ /**
87
+ * `true` if dragging of thumb upper is in progress.
88
+ */
89
+ this._draggingUpper = false;
90
+ /**
91
+ * Throttles calls to `this._onDrag` by limiting events to being processed at
92
+ * most once every `EVENT_THROTTLE` milliseconds.
93
+ */
94
+ this.onDrag = throttle(this._startDrag, EVENT_THROTTLE, {
95
+ leading: true,
96
+ trailing: false,
97
+ });
78
98
  /**
79
99
  * Handles `pointermove` to update the thumb position and the value as necessary.
80
100
  *
81
101
  * @param event The event.
82
102
  */
83
103
  this._handlePointermove = (event) => {
84
- const { disabled, _dragging: dragging } = this;
85
- if (!disabled && dragging) {
104
+ const { disabled, _dragging: dragging, _draggingUpper: draggingUpper, } = this;
105
+ if (!disabled && (dragging || draggingUpper)) {
86
106
  this._throttledHandlePointermoveImpl(event);
87
107
  }
88
108
  };
@@ -90,6 +110,12 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
90
110
  * Handles `pointerup` and `pointerleave` event to finishing dragging.
91
111
  */
92
112
  this._endDrag = () => {
113
+ if (this._dragging || this._draggingUpper) {
114
+ this.dragCoolDown = true;
115
+ }
116
+ else {
117
+ this.dragCoolDown = false;
118
+ }
93
119
  if (this._dragging) {
94
120
  this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
95
121
  bubbles: true,
@@ -101,21 +127,59 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
101
127
  this._dragging = false;
102
128
  this._thumbNode.style.touchAction = '';
103
129
  }
130
+ else if (this._draggingUpper) {
131
+ this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
132
+ bubbles: true,
133
+ composed: true,
134
+ detail: {
135
+ value: this.unstable_valueUpper,
136
+ },
137
+ }));
138
+ this._draggingUpper = false;
139
+ this._thumbNodeUpper.style.touchAction = '';
140
+ }
141
+ if (this._dragging || this._draggingUpper) {
142
+ this.dragCooldownTimeout = window.setTimeout(() => {
143
+ this.dragCoolDown = false;
144
+ }, 100);
145
+ }
104
146
  };
105
147
  /**
106
148
  * Handles `${prefix}-slider-input-changed` event to update the value.
107
149
  */
108
- this._handleChangeInput = ({ detail }) => {
150
+ this._handleChangeInput = (event) => {
151
+ var _a;
152
+ const input = event.target;
153
+ const inputElement = (_a = input.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('input');
154
+ this.isValid =
155
+ input.tagName === 'CDS-SLIDER-INPUT'
156
+ ? this._getInputValidity(input)
157
+ : this.isValid;
158
+ this.warn = this._getInputWarnigState(inputElement);
159
+ const eventContainer = event.target.id;
160
+ const { detail } = event;
109
161
  const { intermediate, value } = detail;
110
- this.value = value;
111
- this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
112
- bubbles: true,
113
- composed: true,
114
- detail: {
115
- value,
116
- intermediate,
117
- },
118
- }));
162
+ this.warnText = intermediate
163
+ ? `The inputted value ${intermediate} was corrected to the nearest allowed digit`
164
+ : '';
165
+ if (intermediate !== value) {
166
+ if (eventContainer === 'upper') {
167
+ this.unstable_valueUpper = value;
168
+ }
169
+ else {
170
+ this.value = value;
171
+ }
172
+ }
173
+ const valueMain = eventContainer === 'upper' ? this.unstable_valueUpper : this.value;
174
+ valueMain !== '' &&
175
+ this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
176
+ bubbles: true,
177
+ composed: true,
178
+ detail: {
179
+ value: valueMain,
180
+ intermediate,
181
+ },
182
+ }));
119
183
  };
120
184
  /**
121
185
  * `true` if the check box should be disabled.
@@ -171,6 +235,10 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
171
235
  * Provide the text that is displayed when the control is in warning state
172
236
  */
173
237
  this.warnText = '';
238
+ /**
239
+ * Checks whether the input field is hidden or not
240
+ */
241
+ this.hideTextInput = false;
174
242
  }
175
243
  /**
176
244
  * The rate of the thumb position in the track.
@@ -179,8 +247,15 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
179
247
  get _rate() {
180
248
  const { max, min, value } = this;
181
249
  // Copes with out-of-range value coming programmatically or from `<cds-custom-slider-input>`
182
- return ((Math.min(Number(max), Math.max(Number(min), value)) - Number(min)) /
183
- (Number(max) - Number(min)));
250
+ if (value) {
251
+ const rate = (Math.min(Number(max), Math.max(Number(min), value)) - Number(min)) /
252
+ (Number(max) - Number(min));
253
+ this._cachedRate = rate;
254
+ return rate;
255
+ }
256
+ else {
257
+ return this._cachedRate;
258
+ }
184
259
  }
185
260
  set _rate(rate) {
186
261
  const { max, min, step } = this;
@@ -190,6 +265,32 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
190
265
  Number(step)) *
191
266
  Number(step);
192
267
  }
268
+ /**
269
+ * The rate of the upper thumb position in the track.
270
+ * When we try to set a new value for upper input, we adjust the value considering `step` property.
271
+ */
272
+ get _rateUpper() {
273
+ const { max, min, unstable_valueUpper } = this;
274
+ // Copes with out-of-range value coming programmatically or from `<cds-custom-slider-input>`
275
+ if (unstable_valueUpper) {
276
+ const rateUpper = (Math.min(Number(max), Math.max(Number(min), unstable_valueUpper)) -
277
+ Number(min)) /
278
+ (Number(max) - Number(min));
279
+ this._cachedRateUpper = rateUpper;
280
+ return rateUpper;
281
+ }
282
+ else {
283
+ return this._cachedRateUpper;
284
+ }
285
+ }
286
+ set _rateUpper(rateUpper) {
287
+ const { max, min, step } = this;
288
+ this.unstable_valueUpper =
289
+ Number(min) +
290
+ Math.round(((Number(max) - Number(min)) * Math.min(1, Math.max(0, rateUpper))) /
291
+ Number(step)) *
292
+ Number(step);
293
+ }
193
294
  /**
194
295
  * Handles `click` event on the `<label>` to focus on the thumb.
195
296
  */
@@ -207,59 +308,156 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
207
308
  /**
208
309
  * Handles `keydown` event on the thumb to increase/decrease the value.
209
310
  */
210
- _handleKeydown({ key, shiftKey }) {
211
- if (!this.disabled) {
311
+ _handleKeydown(event) {
312
+ const eventContainer = event.target.id;
313
+ const { key, shiftKey } = event;
314
+ if (!this.disabled && !this.readonly) {
212
315
  if (key in THUMB_DIRECTION) {
213
- const { max: rawMax, min: rawMin, step: rawStep, stepMultiplier: rawstepMultiplier, value, } = this;
316
+ const { max: rawMax, min: rawMin, step: rawStep, stepMultiplier: rawstepMultiplier, value, unstable_valueUpper, } = this;
214
317
  const max = Number(rawMax);
215
318
  const min = Number(rawMin);
216
319
  const step = Number(rawStep);
217
320
  const stepMultiplier = Number(rawstepMultiplier);
218
321
  const diff = (!shiftKey ? step : (max - min) / stepMultiplier) *
219
322
  THUMB_DIRECTION[key];
220
- const stepCount = (value + diff) / step;
221
323
  // Snaps to next
222
- this.value = Math.min(max, Math.max(min, (diff >= 0 ? Math.floor(stepCount) : Math.ceil(stepCount)) * step));
223
- this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
224
- bubbles: true,
225
- composed: true,
226
- detail: {
227
- value: this.value,
228
- intermediate: false,
229
- },
230
- }));
324
+ if (eventContainer == 'thumb-upper') {
325
+ const stepCount = (unstable_valueUpper + diff) / step;
326
+ const position = Math.min(max, Math.max(min, (diff >= 0 ? Math.floor(stepCount) : Math.ceil(stepCount)) * step));
327
+ if (position >= this.value) {
328
+ this.unstable_valueUpper = position;
329
+ }
330
+ this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
331
+ bubbles: true,
332
+ composed: true,
333
+ detail: {
334
+ value: this.unstable_valueUpper,
335
+ intermediate: false,
336
+ },
337
+ }));
338
+ }
339
+ else {
340
+ const stepCount = (value + diff) / step;
341
+ const position = Math.min(max, Math.max(min, (diff >= 0 ? Math.floor(stepCount) : Math.ceil(stepCount)) * step));
342
+ if (!this.unstable_valueUpper ||
343
+ position <= this.unstable_valueUpper) {
344
+ this.value = position;
345
+ }
346
+ this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
347
+ bubbles: true,
348
+ composed: true,
349
+ detail: {
350
+ value: this.value,
351
+ intermediate: false,
352
+ },
353
+ }));
354
+ }
231
355
  }
232
356
  }
233
357
  }
234
358
  /**
235
359
  * Handles `pointerdown` event on the thumb to start dragging.
236
360
  */
237
- _startDrag() {
238
- this._dragging = true;
239
- this._thumbNode.style.touchAction = 'none';
361
+ _startDrag(event) {
362
+ if (!this.readonly && !this.disabled) {
363
+ let eventContainer = event.target.id;
364
+ if (!eventContainer) {
365
+ const element = event.target.nodeName;
366
+ if (element == 'path' || element == 'svg') {
367
+ eventContainer = event.target.parentElement.closest('.cds-custom--slider__thumb-wrapper').id;
368
+ }
369
+ }
370
+ if (eventContainer === 'thumb') {
371
+ this._dragging = true;
372
+ this._thumbNode.style.touchAction = 'none';
373
+ }
374
+ else {
375
+ this._draggingUpper = true;
376
+ this._thumbNodeUpper.style.touchAction = 'none';
377
+ }
378
+ }
240
379
  }
241
380
  /**
242
381
  * Handles `pointerdown` event on the track to update the thumb position and the value as necessary.
243
382
  */
244
383
  _handleClick(event) {
245
- if (!this.disabled) {
384
+ let eventContainer = event.target.id;
385
+ if (!eventContainer) {
386
+ const element = event.target.nodeName;
387
+ if (element == 'path' || element == 'svg') {
388
+ eventContainer = event.target.parentElement.closest('.cds-custom--slider__thumb-wrapper').id;
389
+ }
390
+ }
391
+ if (!this.disabled && !this.readonly) {
246
392
  const { _trackNode: trackNode } = this;
247
393
  const isRtl = trackNode
248
394
  .ownerDocument.defaultView.getComputedStyle(trackNode)
249
395
  .getPropertyValue('direction') === 'rtl';
250
396
  const thumbPosition = event.clientX;
251
397
  const { left: trackLeft, width: trackWidth } = trackNode.getBoundingClientRect();
252
- this._rate =
253
- (isRtl
254
- ? trackLeft + trackWidth - thumbPosition
255
- : thumbPosition - trackLeft) / trackWidth;
256
- this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
257
- bubbles: true,
258
- composed: true,
259
- detail: {
260
- value: this.value,
261
- },
262
- }));
398
+ if (eventContainer === 'thumb-upper') {
399
+ this._rateUpper =
400
+ (isRtl
401
+ ? trackLeft + trackWidth - thumbPosition
402
+ : thumbPosition - trackLeft) / trackWidth;
403
+ this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
404
+ bubbles: true,
405
+ composed: true,
406
+ detail: {
407
+ value: this.unstable_valueUpper,
408
+ },
409
+ }));
410
+ }
411
+ else {
412
+ if (!this.unstable_valueUpper) {
413
+ this._rate =
414
+ (isRtl
415
+ ? trackLeft + trackWidth - thumbPosition
416
+ : thumbPosition - trackLeft) / trackWidth;
417
+ this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
418
+ bubbles: true,
419
+ composed: true,
420
+ detail: {
421
+ value: this.value,
422
+ },
423
+ }));
424
+ }
425
+ else {
426
+ if (!this.dragCoolDown) {
427
+ const position = ((isRtl
428
+ ? trackLeft + trackWidth - thumbPosition
429
+ : thumbPosition - trackLeft) /
430
+ trackWidth) *
431
+ 100;
432
+ const differenceValue = position > this.value
433
+ ? position - this.value
434
+ : this.value - position;
435
+ const differenceValueUpper = position > this.unstable_valueUpper
436
+ ? position - this.unstable_valueUpper
437
+ : this.unstable_valueUpper - position;
438
+ if (differenceValue > differenceValueUpper) {
439
+ this._rateUpper = position / 100;
440
+ }
441
+ else if (differenceValue < differenceValueUpper) {
442
+ this._rate = position / 100;
443
+ }
444
+ else if (!this._dragging &&
445
+ !this._draggingUpper &&
446
+ differenceValue === differenceValueUpper) {
447
+ Math.round(position) > this.unstable_valueUpper
448
+ ? (this._rateUpper = position / 100)
449
+ : (this._rate = position / 100);
450
+ }
451
+ this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
452
+ bubbles: true,
453
+ composed: true,
454
+ detail: {
455
+ value: this.value,
456
+ },
457
+ }));
458
+ }
459
+ }
460
+ }
263
461
  }
264
462
  }
265
463
  /**
@@ -268,25 +466,46 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
268
466
  * @param event The event.
269
467
  */
270
468
  _handlePointermoveImpl(event) {
271
- const { disabled, _dragging: dragging, _trackNode: trackNode } = this;
272
- if (!disabled && dragging) {
469
+ const { disabled, _dragging: dragging, _trackNode: trackNode, _draggingUpper: draggingUpper, } = this;
470
+ if (!disabled) {
273
471
  const isRtl = trackNode
274
472
  .ownerDocument.defaultView.getComputedStyle(trackNode)
275
473
  .getPropertyValue('direction') === 'rtl';
276
474
  const thumbPosition = event.clientX;
277
475
  const { left: trackLeft, width: trackWidth } = this._trackNode.getBoundingClientRect();
278
- this._rate =
279
- (isRtl
476
+ if (dragging) {
477
+ const position = (isRtl
280
478
  ? trackLeft + trackWidth - thumbPosition
281
479
  : thumbPosition - trackLeft) / trackWidth;
282
- this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
283
- bubbles: true,
284
- composed: true,
285
- detail: {
286
- value: this.value,
287
- intermediate: true,
288
- },
289
- }));
480
+ if (!this.unstable_valueUpper ||
481
+ position * 100 <= this.unstable_valueUpper) {
482
+ this._rate = position;
483
+ this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
484
+ bubbles: true,
485
+ composed: true,
486
+ detail: {
487
+ value: this.value,
488
+ intermediate: true,
489
+ },
490
+ }));
491
+ }
492
+ }
493
+ else if (draggingUpper) {
494
+ const position = (isRtl
495
+ ? trackLeft + trackWidth - thumbPosition
496
+ : thumbPosition - trackLeft) / trackWidth;
497
+ if (position * 100 >= this.value) {
498
+ this._rateUpper = position;
499
+ this.dispatchEvent(new CustomEvent(this.constructor.eventChange, {
500
+ bubbles: true,
501
+ composed: true,
502
+ detail: {
503
+ value: this.unstable_valueUpper,
504
+ intermediate: true,
505
+ },
506
+ }));
507
+ }
508
+ }
290
509
  }
291
510
  }
292
511
  /**
@@ -335,15 +554,27 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
335
554
  this.requestUpdate('stepMultiplier', oldstepMultiplier);
336
555
  }
337
556
  _getInputValidity(input) {
557
+ var _a;
558
+ const inputElement = (_a = input === null || input === void 0 ? void 0 : input.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('input');
338
559
  if (this.invalid) {
339
560
  return false;
340
561
  }
341
- if ((input === null || input === void 0 ? void 0 : input.valueAsNumber) > Number(this.max) ||
342
- (input === null || input === void 0 ? void 0 : input.valueAsNumber) < Number(this.min)) {
562
+ if (input === null || input === void 0 ? void 0 : input.invalid) {
563
+ return false;
564
+ }
565
+ if ((inputElement === null || inputElement === void 0 ? void 0 : inputElement.valueAsNumber) > Number(this.max) ||
566
+ (inputElement === null || inputElement === void 0 ? void 0 : inputElement.valueAsNumber) < Number(this.min)) {
343
567
  return false;
344
568
  }
345
569
  return true;
346
570
  }
571
+ _getInputWarnigState(input) {
572
+ if ((input === null || input === void 0 ? void 0 : input.valueAsNumber) > Number(input.max) ||
573
+ (input === null || input === void 0 ? void 0 : input.valueAsNumber) < Number(input.min)) {
574
+ return true;
575
+ }
576
+ return false;
577
+ }
347
578
  connectedCallback() {
348
579
  super.connectedCallback();
349
580
  if (!this._throttledHandlePointermoveImpl) {
@@ -355,57 +586,93 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
355
586
  this._throttledHandlePointermoveImpl.cancel();
356
587
  this._throttledHandlePointermoveImpl = null;
357
588
  }
589
+ clearTimeout(this.dragCooldownTimeout);
358
590
  super.disconnectedCallback();
359
591
  }
360
- shouldUpdate(changedProperties) {
592
+ updated() {
361
593
  var _a;
362
- const input = this.querySelector(this.constructor.selectorInput);
363
- if (changedProperties.has('disabled')) {
364
- if (input) {
365
- input.disabled = this.disabled;
594
+ const sliderfilledTrack = (_a = this === null || this === void 0 ? void 0 : this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(`.${prefix}--slider__filled-track`);
595
+ if (sliderfilledTrack) {
596
+ if (this.unstable_valueUpper || this.unstable_valueUpper === '') {
597
+ sliderfilledTrack.style.transform = this.unstable_valueUpper
598
+ ? `translate(${this._rate * 100}%, -50%) scaleX(${this._rateUpper - this._rate})`
599
+ : `translate(0%, -50%) scaleX(${this._rate})`;
366
600
  }
367
- if (this.disabled) {
368
- this._dragging = false;
601
+ else {
602
+ sliderfilledTrack.style.transform = this.unstable_valueUpper
603
+ ? `translate(${this._rate * 100}%, -50%) scaleX(${this._rateUpper - this._rate})`
604
+ : `translate(0%, -50%) scaleX(${this._rate})`;
369
605
  }
370
606
  }
371
- if (changedProperties.has('readonly')) {
372
- if (input) {
373
- input.readonly = this.readonly;
374
- }
375
- if (this.readonly) {
376
- this._dragging = false;
377
- }
378
- }
379
- if (input) {
380
- ['max', 'min', 'step', 'value'].forEach((name) => {
381
- if (changedProperties.has(name)) {
382
- input[name] = this[name];
607
+ }
608
+ shouldUpdate(changedProperties) {
609
+ const inputs = this.querySelectorAll(this.constructor.selectorInput);
610
+ inputs.forEach((input, index) => {
611
+ if (changedProperties.has('disabled')) {
612
+ if (input) {
613
+ input.disabled = this.disabled;
383
614
  }
384
- });
385
- if (changedProperties.has('value') ||
386
- changedProperties.has('invalid') ||
387
- changedProperties.has('warn') ||
388
- changedProperties.has('readonly')) {
389
- const innerInput = (_a = input === null || input === void 0 ? void 0 : input.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('input');
390
- this.isValid = this._getInputValidity(innerInput);
391
- if (!this.readonly && !this.isValid) {
392
- input.invalid = true;
615
+ if (this.disabled) {
616
+ this._dragging = false;
393
617
  }
394
- else {
395
- input.invalid = false;
618
+ }
619
+ if (changedProperties.has('readonly')) {
620
+ if (input) {
621
+ input.readonly = this.readonly;
622
+ }
623
+ if (this.readonly) {
624
+ this._dragging = false;
396
625
  }
397
- if (!this.readonly && !this.invalid && this.warn && this.isValid) {
398
- input.warn = true;
626
+ }
627
+ if (changedProperties.has('invalid')) {
628
+ input.invalid = this.invalid;
629
+ }
630
+ if (changedProperties.has('hideTextInput')) {
631
+ input.hideTextInput = this.hideTextInput;
632
+ }
633
+ if (input) {
634
+ if ((this.unstable_valueUpper || this.unstable_valueUpper === '') &&
635
+ index > 0) {
636
+ ['max', 'min', 'step', 'unstable_valueUpper'].forEach((name) => {
637
+ if (name === 'unstable_valueUpper') {
638
+ input.value = this.unstable_valueUpper;
639
+ }
640
+ else if (name === 'min') {
641
+ input[name] = this.value;
642
+ }
643
+ else {
644
+ input[name] = this[name];
645
+ }
646
+ });
399
647
  }
400
648
  else {
401
- input.warn = false;
649
+ ['max', 'min', 'step', 'value'].forEach((name) => {
650
+ if (this.unstable_valueUpper && name === 'max') {
651
+ input[name] = this.unstable_valueUpper;
652
+ }
653
+ else {
654
+ input[name] = this[name];
655
+ }
656
+ });
657
+ }
658
+ if (changedProperties.has('value') ||
659
+ changedProperties.has('invalid') ||
660
+ changedProperties.has('warn') ||
661
+ changedProperties.has('readonly')) {
662
+ this.isValid = this._getInputValidity(input);
663
+ if (!this.readonly && !this.isValid) {
664
+ input.invalid = true;
665
+ }
666
+ else {
667
+ input.invalid = false;
668
+ }
402
669
  }
403
670
  }
404
- }
671
+ });
405
672
  return true;
406
673
  }
407
674
  render() {
408
- const { disabled, formatMaxText, formatMinText, labelText, hideLabel, max, min, maxLabel, minLabel, readonly, invalidText, isValid, warn, warnText, value, _rate: rate, _handleClickLabel: handleClickLabel, _handleKeydown: handleKeydown, _handleClick: handleClick, _startDrag: startDrag, _endDrag: endDrag, } = this;
675
+ const { disabled, formatMaxText, formatMinText, labelText, hideLabel, max, min, maxLabel, minLabel, readonly, invalidText, isValid, warn, warnText, value, unstable_valueUpper, _rate: rate, _rateUpper: rateUpper, _handleClickLabel: handleClickLabel, _handleKeydown: handleKeydown, _handleClick: handleClick, onDrag, _endDrag: endDrag, } = this;
409
676
  const labelClasses = classMap({
410
677
  [`${prefix}--label`]: true,
411
678
  [`${prefix}--visually-hidden`]: hideLabel,
@@ -416,11 +683,27 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
416
683
  [`${prefix}--slider--disabled`]: disabled,
417
684
  [`${prefix}--slider--readonly`]: readonly,
418
685
  });
686
+ const thumbLowerClasses = classMap({
687
+ [`${prefix}--icon-tooltip`]: unstable_valueUpper || unstable_valueUpper === '',
688
+ [`${prefix}--slider__thumb-wrapper`]: unstable_valueUpper || unstable_valueUpper === '',
689
+ [`${prefix}--slider__thumb-wrapper--lower`]: unstable_valueUpper || unstable_valueUpper === '',
690
+ [`${prefix}--slider__thumb`]: !(unstable_valueUpper || unstable_valueUpper === ''),
691
+ [`${prefix}--slider__thumb-disabled`]: disabled,
692
+ });
693
+ const thumbUpperClasses = classMap({
694
+ [`${prefix}--icon-tooltip`]: true,
695
+ [`${prefix}--slider__thumb-wrapper`]: true,
696
+ [`${prefix}--slider__thumb-wrapper--upper`]: true,
697
+ [`${prefix}--slider__thumb-disabled`]: disabled,
698
+ });
419
699
  return html `
420
700
  <label class="${labelClasses}" @click="${handleClickLabel}">
421
701
  <slot name="label-text">${labelText}</slot>
422
702
  </label>
423
703
  <div class="${prefix}--slider-container">
704
+ ${unstable_valueUpper || unstable_valueUpper === ''
705
+ ? html ` <slot name="lower-input"></slot>`
706
+ : ''}
424
707
  <span class="${prefix}--slider__range-label">
425
708
  <slot name="min-text">${formatMinText(min, minLabel)}</slot>
426
709
  </span>
@@ -434,20 +717,82 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
434
717
  role="presentation">
435
718
  <div
436
719
  id="thumb"
437
- class="${prefix}--slider__thumb"
720
+ class="${thumbLowerClasses}"
438
721
  role="slider"
439
722
  tabindex="${!readonly ? 0 : -1}"
440
723
  aria-valuemax="${max}"
441
724
  aria-valuemin="${min}"
442
725
  aria-valuenow="${value}"
443
726
  style="left: ${rate * 100}%"
444
- @pointerdown="${startDrag}"></div>
445
- <div id="track" class="${prefix}--slider__track"></div>
446
- <div class="${prefix}-ce--slider__filled-track-container">
447
- <div
448
- class="${prefix}--slider__filled-track"
449
- style="transform: translate(0%, -50%) scaleX(${rate})"></div>
727
+ @pointerdown="${onDrag}">
728
+ ${(unstable_valueUpper || unstable_valueUpper === '') && !readonly
729
+ ? html `
730
+ <div class="${prefix}--slider__thumb--lower">
731
+ <svg
732
+ xmlns="http://www.w3.org/2000/svg"
733
+ viewBox="0 0 16 24"
734
+ class="${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--lower">
735
+ <path
736
+ d="M15.08 6.46H16v11.08h-.92zM4.46 17.54c-.25 0-.46-.21-.46-.46V6.92a.465.465 0 0 1 .69-.4l8.77 5.08a.46.46 0 0 1 0 .8l-8.77 5.08c-.07.04-.15.06-.23.06Z"></path>
737
+ <path fill="none" d="M-4 0h24v24H-4z"></path>
738
+ </svg>
739
+ <svg
740
+ xmlns="http://www.w3.org/2000/svg"
741
+ viewBox="0 0 16 24"
742
+ class="${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--lower cds-custom--slider__thumb-icon--focus">
743
+ <path
744
+ d="M15.08 6.46H16v11.08h-.92zM4.46 17.54c-.25 0-.46-.21-.46-.46V6.92a.465.465 0 0 1 .69-.4l8.77 5.08a.46.46 0 0 1 0 .8l-8.77 5.08c-.07.04-.15.06-.23.06Z"></path>
745
+ <path fill="none" d="M-4 0h24v24H-4z"></path>
746
+ <path d="M15.08 0H16v6.46h-.92z"></path>
747
+ <path d="M0 0h.92v24H0zM15.08 0H16v24h-.92z"></path>
748
+ <path d="M0 .92V0h16v.92zM0 24v-.92h16V24z"></path>
749
+ </svg>
750
+ </div>
751
+ `
752
+ : ``}
450
753
  </div>
754
+ ${(unstable_valueUpper || unstable_valueUpper === '') && !readonly
755
+ ? html `
756
+ <div
757
+ id="thumb-upper"
758
+ class="${thumbUpperClasses}"
759
+ role="slider"
760
+ tabindex="${!readonly ? 0 : -1}"
761
+ aria-valuemax="${max}"
762
+ aria-valuemin="${min}"
763
+ aria-valuenow="${unstable_valueUpper}"
764
+ style="left: ${rateUpper * 100}%"
765
+ @pointerdown="${onDrag}">
766
+ <div class="${prefix}--slider__thumb--upper">
767
+ <svg
768
+ xmlns="http://www.w3.org/2000/svg"
769
+ viewBox="0 0 16 24"
770
+ class="${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--upper">
771
+ <path
772
+ d="M0 6.46h.92v11.08H0zM11.54 6.46c.25 0 .46.21.46.46v10.15a.465.465 0 0 1-.69.4L2.54 12.4a.46.46 0 0 1 0-.8l8.77-5.08c.07-.04.15-.06.23-.06Z"></path>
773
+ <path fill="none" d="M-4 0h24v24H-4z"></path>
774
+ </svg>
775
+ <svg
776
+ xmlns="http://www.w3.org/2000/svg"
777
+ viewBox="0 0 16 24"
778
+ class="${prefix}--slider__thumb-icon ${prefix}--slider__thumb-icon--upper cds-custom--slider__thumb-icon--focus">
779
+ <path
780
+ d="M0 6.46h.92v11.08H0zM11.54 6.46c.25 0 .46.21.46.46v10.15a.465.465 0 0 1-.69.4L2.54 12.4a.46.46 0 0 1 0-.8l8.77-5.08c.07-.04.15-.06.23-.06Z"></path>
781
+ <path fill="none" d="M-4 0h24v24H-4z"></path>
782
+ <path d="M.92 24H0v-6.46h.92z"></path>
783
+ <path d="M16 24h-.92V0H16zM.92 24H0V0h.92z"></path>
784
+ <path d="M16 23.08V24H0v-.92zM16 0v.92H0V0z"></path>
785
+ </svg>
786
+ </div>
787
+ </div>
788
+ `
789
+ : html ``}
790
+ <div id="track" class="${prefix}--slider__track"></div>
791
+ ${unstable_valueUpper || unstable_valueUpper === ''
792
+ ? html ` <div class="${prefix}--slider__filled-track"></div> `
793
+ : html ` <div class="${prefix}-ce--slider__filled-track-container">
794
+ <div class="${prefix}--slider__filled-track"></div>
795
+ </div>`}
451
796
  </div>
452
797
  <span class="${prefix}--slider__range-label">
453
798
  <slot name="max-text">${formatMaxText(max, maxLabel)}</slot>
@@ -492,9 +837,15 @@ let CDSSlider = class CDSSlider extends HostListenerMixin(FormMixin(FocusMixin(L
492
837
  };
493
838
  CDSSlider.shadowRootOptions = Object.assign(Object.assign({}, LitElement.shadowRootOptions), { delegatesFocus: true });
494
839
  CDSSlider.styles = styles;
840
+ __decorate([
841
+ property({ type: Number, attribute: 'value-upper' })
842
+ ], CDSSlider.prototype, "unstable_valueUpper", void 0);
495
843
  __decorate([
496
844
  query('#thumb')
497
845
  ], CDSSlider.prototype, "_thumbNode", void 0);
846
+ __decorate([
847
+ query('#thumb-upper')
848
+ ], CDSSlider.prototype, "_thumbNodeUpper", void 0);
498
849
  __decorate([
499
850
  query('#track')
500
851
  ], CDSSlider.prototype, "_trackNode", void 0);
@@ -554,6 +905,9 @@ __decorate([
554
905
  __decorate([
555
906
  property({ attribute: 'warn-text' })
556
907
  ], CDSSlider.prototype, "warnText", void 0);
908
+ __decorate([
909
+ property({ type: Boolean, attribute: 'hide-text-input', reflect: true })
910
+ ], CDSSlider.prototype, "hideTextInput", void 0);
557
911
  __decorate([
558
912
  property({ type: Number, reflect: true })
559
913
  ], CDSSlider.prototype, "step", null);