@react-spectrum/slider 3.8.4 → 3.9.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 (216) hide show
  1. package/dist/import.mjs +3 -3
  2. package/dist/main.js +4 -4
  3. package/dist/main.js.map +1 -1
  4. package/dist/module.js +3 -3
  5. package/dist/module.js.map +1 -1
  6. package/dist/types/src/index.d.ts +5 -0
  7. package/package.json +12 -34
  8. package/src/index.ts +6 -3
  9. package/dist/RangeSlider.main.js +0 -120
  10. package/dist/RangeSlider.main.js.map +0 -1
  11. package/dist/RangeSlider.mjs +0 -115
  12. package/dist/RangeSlider.module.js +0 -115
  13. package/dist/RangeSlider.module.js.map +0 -1
  14. package/dist/Slider.main.js +0 -121
  15. package/dist/Slider.main.js.map +0 -1
  16. package/dist/Slider.mjs +0 -116
  17. package/dist/Slider.module.js +0 -116
  18. package/dist/Slider.module.js.map +0 -1
  19. package/dist/SliderBase.main.js +0 -169
  20. package/dist/SliderBase.main.js.map +0 -1
  21. package/dist/SliderBase.mjs +0 -164
  22. package/dist/SliderBase.module.js +0 -164
  23. package/dist/SliderBase.module.js.map +0 -1
  24. package/dist/SliderThumb.main.js +0 -67
  25. package/dist/SliderThumb.main.js.map +0 -1
  26. package/dist/SliderThumb.mjs +0 -62
  27. package/dist/SliderThumb.module.js +0 -62
  28. package/dist/SliderThumb.module.js.map +0 -1
  29. package/dist/ar-AE.main.js +0 -7
  30. package/dist/ar-AE.main.js.map +0 -1
  31. package/dist/ar-AE.mjs +0 -9
  32. package/dist/ar-AE.module.js +0 -9
  33. package/dist/ar-AE.module.js.map +0 -1
  34. package/dist/bg-BG.main.js +0 -7
  35. package/dist/bg-BG.main.js.map +0 -1
  36. package/dist/bg-BG.mjs +0 -9
  37. package/dist/bg-BG.module.js +0 -9
  38. package/dist/bg-BG.module.js.map +0 -1
  39. package/dist/cs-CZ.main.js +0 -7
  40. package/dist/cs-CZ.main.js.map +0 -1
  41. package/dist/cs-CZ.mjs +0 -9
  42. package/dist/cs-CZ.module.js +0 -9
  43. package/dist/cs-CZ.module.js.map +0 -1
  44. package/dist/da-DK.main.js +0 -7
  45. package/dist/da-DK.main.js.map +0 -1
  46. package/dist/da-DK.mjs +0 -9
  47. package/dist/da-DK.module.js +0 -9
  48. package/dist/da-DK.module.js.map +0 -1
  49. package/dist/de-DE.main.js +0 -7
  50. package/dist/de-DE.main.js.map +0 -1
  51. package/dist/de-DE.mjs +0 -9
  52. package/dist/de-DE.module.js +0 -9
  53. package/dist/de-DE.module.js.map +0 -1
  54. package/dist/el-GR.main.js +0 -7
  55. package/dist/el-GR.main.js.map +0 -1
  56. package/dist/el-GR.mjs +0 -9
  57. package/dist/el-GR.module.js +0 -9
  58. package/dist/el-GR.module.js.map +0 -1
  59. package/dist/en-US.main.js +0 -7
  60. package/dist/en-US.main.js.map +0 -1
  61. package/dist/en-US.mjs +0 -9
  62. package/dist/en-US.module.js +0 -9
  63. package/dist/en-US.module.js.map +0 -1
  64. package/dist/es-ES.main.js +0 -7
  65. package/dist/es-ES.main.js.map +0 -1
  66. package/dist/es-ES.mjs +0 -9
  67. package/dist/es-ES.module.js +0 -9
  68. package/dist/es-ES.module.js.map +0 -1
  69. package/dist/et-EE.main.js +0 -7
  70. package/dist/et-EE.main.js.map +0 -1
  71. package/dist/et-EE.mjs +0 -9
  72. package/dist/et-EE.module.js +0 -9
  73. package/dist/et-EE.module.js.map +0 -1
  74. package/dist/fi-FI.main.js +0 -7
  75. package/dist/fi-FI.main.js.map +0 -1
  76. package/dist/fi-FI.mjs +0 -9
  77. package/dist/fi-FI.module.js +0 -9
  78. package/dist/fi-FI.module.js.map +0 -1
  79. package/dist/fr-FR.main.js +0 -7
  80. package/dist/fr-FR.main.js.map +0 -1
  81. package/dist/fr-FR.mjs +0 -9
  82. package/dist/fr-FR.module.js +0 -9
  83. package/dist/fr-FR.module.js.map +0 -1
  84. package/dist/he-IL.main.js +0 -7
  85. package/dist/he-IL.main.js.map +0 -1
  86. package/dist/he-IL.mjs +0 -9
  87. package/dist/he-IL.module.js +0 -9
  88. package/dist/he-IL.module.js.map +0 -1
  89. package/dist/hr-HR.main.js +0 -7
  90. package/dist/hr-HR.main.js.map +0 -1
  91. package/dist/hr-HR.mjs +0 -9
  92. package/dist/hr-HR.module.js +0 -9
  93. package/dist/hr-HR.module.js.map +0 -1
  94. package/dist/hu-HU.main.js +0 -7
  95. package/dist/hu-HU.main.js.map +0 -1
  96. package/dist/hu-HU.mjs +0 -9
  97. package/dist/hu-HU.module.js +0 -9
  98. package/dist/hu-HU.module.js.map +0 -1
  99. package/dist/intlStrings.main.js +0 -108
  100. package/dist/intlStrings.main.js.map +0 -1
  101. package/dist/intlStrings.mjs +0 -110
  102. package/dist/intlStrings.module.js +0 -110
  103. package/dist/intlStrings.module.js.map +0 -1
  104. package/dist/it-IT.main.js +0 -7
  105. package/dist/it-IT.main.js.map +0 -1
  106. package/dist/it-IT.mjs +0 -9
  107. package/dist/it-IT.module.js +0 -9
  108. package/dist/it-IT.module.js.map +0 -1
  109. package/dist/ja-JP.main.js +0 -7
  110. package/dist/ja-JP.main.js.map +0 -1
  111. package/dist/ja-JP.mjs +0 -9
  112. package/dist/ja-JP.module.js +0 -9
  113. package/dist/ja-JP.module.js.map +0 -1
  114. package/dist/ko-KR.main.js +0 -7
  115. package/dist/ko-KR.main.js.map +0 -1
  116. package/dist/ko-KR.mjs +0 -9
  117. package/dist/ko-KR.module.js +0 -9
  118. package/dist/ko-KR.module.js.map +0 -1
  119. package/dist/lt-LT.main.js +0 -7
  120. package/dist/lt-LT.main.js.map +0 -1
  121. package/dist/lt-LT.mjs +0 -9
  122. package/dist/lt-LT.module.js +0 -9
  123. package/dist/lt-LT.module.js.map +0 -1
  124. package/dist/lv-LV.main.js +0 -7
  125. package/dist/lv-LV.main.js.map +0 -1
  126. package/dist/lv-LV.mjs +0 -9
  127. package/dist/lv-LV.module.js +0 -9
  128. package/dist/lv-LV.module.js.map +0 -1
  129. package/dist/nb-NO.main.js +0 -7
  130. package/dist/nb-NO.main.js.map +0 -1
  131. package/dist/nb-NO.mjs +0 -9
  132. package/dist/nb-NO.module.js +0 -9
  133. package/dist/nb-NO.module.js.map +0 -1
  134. package/dist/nl-NL.main.js +0 -7
  135. package/dist/nl-NL.main.js.map +0 -1
  136. package/dist/nl-NL.mjs +0 -9
  137. package/dist/nl-NL.module.js +0 -9
  138. package/dist/nl-NL.module.js.map +0 -1
  139. package/dist/pl-PL.main.js +0 -7
  140. package/dist/pl-PL.main.js.map +0 -1
  141. package/dist/pl-PL.mjs +0 -9
  142. package/dist/pl-PL.module.js +0 -9
  143. package/dist/pl-PL.module.js.map +0 -1
  144. package/dist/pt-BR.main.js +0 -7
  145. package/dist/pt-BR.main.js.map +0 -1
  146. package/dist/pt-BR.mjs +0 -9
  147. package/dist/pt-BR.module.js +0 -9
  148. package/dist/pt-BR.module.js.map +0 -1
  149. package/dist/pt-PT.main.js +0 -7
  150. package/dist/pt-PT.main.js.map +0 -1
  151. package/dist/pt-PT.mjs +0 -9
  152. package/dist/pt-PT.module.js +0 -9
  153. package/dist/pt-PT.module.js.map +0 -1
  154. package/dist/ro-RO.main.js +0 -7
  155. package/dist/ro-RO.main.js.map +0 -1
  156. package/dist/ro-RO.mjs +0 -9
  157. package/dist/ro-RO.module.js +0 -9
  158. package/dist/ro-RO.module.js.map +0 -1
  159. package/dist/ru-RU.main.js +0 -7
  160. package/dist/ru-RU.main.js.map +0 -1
  161. package/dist/ru-RU.mjs +0 -9
  162. package/dist/ru-RU.module.js +0 -9
  163. package/dist/ru-RU.module.js.map +0 -1
  164. package/dist/sk-SK.main.js +0 -7
  165. package/dist/sk-SK.main.js.map +0 -1
  166. package/dist/sk-SK.mjs +0 -9
  167. package/dist/sk-SK.module.js +0 -9
  168. package/dist/sk-SK.module.js.map +0 -1
  169. package/dist/sl-SI.main.js +0 -7
  170. package/dist/sl-SI.main.js.map +0 -1
  171. package/dist/sl-SI.mjs +0 -9
  172. package/dist/sl-SI.module.js +0 -9
  173. package/dist/sl-SI.module.js.map +0 -1
  174. package/dist/slider.674e7af0.css +0 -1189
  175. package/dist/slider.674e7af0.css.map +0 -1
  176. package/dist/slider_vars_css.main.js +0 -146
  177. package/dist/slider_vars_css.main.js.map +0 -1
  178. package/dist/slider_vars_css.mjs +0 -148
  179. package/dist/slider_vars_css.module.js +0 -148
  180. package/dist/slider_vars_css.module.js.map +0 -1
  181. package/dist/sr-SP.main.js +0 -7
  182. package/dist/sr-SP.main.js.map +0 -1
  183. package/dist/sr-SP.mjs +0 -9
  184. package/dist/sr-SP.module.js +0 -9
  185. package/dist/sr-SP.module.js.map +0 -1
  186. package/dist/sv-SE.main.js +0 -7
  187. package/dist/sv-SE.main.js.map +0 -1
  188. package/dist/sv-SE.mjs +0 -9
  189. package/dist/sv-SE.module.js +0 -9
  190. package/dist/sv-SE.module.js.map +0 -1
  191. package/dist/tr-TR.main.js +0 -7
  192. package/dist/tr-TR.main.js.map +0 -1
  193. package/dist/tr-TR.mjs +0 -9
  194. package/dist/tr-TR.module.js +0 -9
  195. package/dist/tr-TR.module.js.map +0 -1
  196. package/dist/types.d.ts +0 -14
  197. package/dist/types.d.ts.map +0 -1
  198. package/dist/uk-UA.main.js +0 -7
  199. package/dist/uk-UA.main.js.map +0 -1
  200. package/dist/uk-UA.mjs +0 -9
  201. package/dist/uk-UA.module.js +0 -9
  202. package/dist/uk-UA.module.js.map +0 -1
  203. package/dist/zh-CN.main.js +0 -7
  204. package/dist/zh-CN.main.js.map +0 -1
  205. package/dist/zh-CN.mjs +0 -9
  206. package/dist/zh-CN.module.js +0 -9
  207. package/dist/zh-CN.module.js.map +0 -1
  208. package/dist/zh-TW.main.js +0 -7
  209. package/dist/zh-TW.main.js.map +0 -1
  210. package/dist/zh-TW.mjs +0 -9
  211. package/dist/zh-TW.module.js +0 -9
  212. package/dist/zh-TW.module.js.map +0 -1
  213. package/src/RangeSlider.tsx +0 -95
  214. package/src/Slider.tsx +0 -119
  215. package/src/SliderBase.tsx +0 -195
  216. package/src/SliderThumb.tsx +0 -68
@@ -1 +0,0 @@
1
- {"mappings":";;;AEsBA;;GAEG;AACH,OAAO,MAAM,qIA6FX,CAAC;AC/FH;;GAEG;AACH,OAAO,MAAM,+IAoEX,CAAC;AC9EH,YAAY,EAAC,wBAAwB,EAAE,mBAAmB,EAAC,MAAM,qBAAqB,CAAC","sources":["packages/@react-spectrum/slider/src/packages/@react-spectrum/slider/src/SliderBase.tsx","packages/@react-spectrum/slider/src/packages/@react-spectrum/slider/src/SliderThumb.tsx","packages/@react-spectrum/slider/src/packages/@react-spectrum/slider/src/Slider.tsx","packages/@react-spectrum/slider/src/packages/@react-spectrum/slider/src/RangeSlider.tsx","packages/@react-spectrum/slider/src/packages/@react-spectrum/slider/src/index.ts","packages/@react-spectrum/slider/src/index.ts"],"sourcesContent":[null,null,null,null,null,"/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/// <reference types=\"css-module-types\" />\n\nexport {Slider} from './Slider';\nexport {RangeSlider} from './RangeSlider';\nexport type {SpectrumRangeSliderProps, SpectrumSliderProps} from '@react-types/slider';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
@@ -1,7 +0,0 @@
1
- module.exports = {
2
- "maximum": `\u{41C}\u{430}\u{43A}\u{441}\u{438}\u{43C}\u{443}\u{43C}`,
3
- "minimum": `\u{41C}\u{456}\u{43D}\u{456}\u{43C}\u{443}\u{43C}`
4
- };
5
-
6
-
7
- //# sourceMappingURL=uk-UA.main.js.map
@@ -1 +0,0 @@
1
- {"mappings":"AAAA,iBAAiB;IAAG,WAAW,CAAC,wDAAQ,CAAC;IACvC,WAAW,CAAC,iDAAO,CAAC;AACtB","sources":["packages/@react-spectrum/slider/intl/uk-UA.json"],"sourcesContent":["{\n \"maximum\": \"Максимум\",\n \"minimum\": \"Мінімум\"\n}\n"],"names":[],"version":3,"file":"uk-UA.main.js.map"}
package/dist/uk-UA.mjs DELETED
@@ -1,9 +0,0 @@
1
- var $3108f34a285e911e$exports = {};
2
- $3108f34a285e911e$exports = {
3
- "maximum": `\u{41C}\u{430}\u{43A}\u{441}\u{438}\u{43C}\u{443}\u{43C}`,
4
- "minimum": `\u{41C}\u{456}\u{43D}\u{456}\u{43C}\u{443}\u{43C}`
5
- };
6
-
7
-
8
- export {$3108f34a285e911e$exports as default};
9
- //# sourceMappingURL=uk-UA.module.js.map
@@ -1,9 +0,0 @@
1
- var $3108f34a285e911e$exports = {};
2
- $3108f34a285e911e$exports = {
3
- "maximum": `\u{41C}\u{430}\u{43A}\u{441}\u{438}\u{43C}\u{443}\u{43C}`,
4
- "minimum": `\u{41C}\u{456}\u{43D}\u{456}\u{43C}\u{443}\u{43C}`
5
- };
6
-
7
-
8
- export {$3108f34a285e911e$exports as default};
9
- //# sourceMappingURL=uk-UA.module.js.map
@@ -1 +0,0 @@
1
- {"mappings":";AAAA,4BAAiB;IAAG,WAAW,CAAC,wDAAQ,CAAC;IACvC,WAAW,CAAC,iDAAO,CAAC;AACtB","sources":["packages/@react-spectrum/slider/intl/uk-UA.json"],"sourcesContent":["{\n \"maximum\": \"Максимум\",\n \"minimum\": \"Мінімум\"\n}\n"],"names":[],"version":3,"file":"uk-UA.module.js.map"}
@@ -1,7 +0,0 @@
1
- module.exports = {
2
- "maximum": `\u{6700}\u{5927}`,
3
- "minimum": `\u{6700}\u{5C0F}`
4
- };
5
-
6
-
7
- //# sourceMappingURL=zh-CN.main.js.map
@@ -1 +0,0 @@
1
- {"mappings":"AAAA,iBAAiB;IAAG,WAAW,CAAC,gBAAE,CAAC;IACjC,WAAW,CAAC,gBAAE,CAAC;AACjB","sources":["packages/@react-spectrum/slider/intl/zh-CN.json"],"sourcesContent":["{\n \"maximum\": \"最大\",\n \"minimum\": \"最小\"\n}\n"],"names":[],"version":3,"file":"zh-CN.main.js.map"}
package/dist/zh-CN.mjs DELETED
@@ -1,9 +0,0 @@
1
- var $404def46e9659a20$exports = {};
2
- $404def46e9659a20$exports = {
3
- "maximum": `\u{6700}\u{5927}`,
4
- "minimum": `\u{6700}\u{5C0F}`
5
- };
6
-
7
-
8
- export {$404def46e9659a20$exports as default};
9
- //# sourceMappingURL=zh-CN.module.js.map
@@ -1,9 +0,0 @@
1
- var $404def46e9659a20$exports = {};
2
- $404def46e9659a20$exports = {
3
- "maximum": `\u{6700}\u{5927}`,
4
- "minimum": `\u{6700}\u{5C0F}`
5
- };
6
-
7
-
8
- export {$404def46e9659a20$exports as default};
9
- //# sourceMappingURL=zh-CN.module.js.map
@@ -1 +0,0 @@
1
- {"mappings":";AAAA,4BAAiB;IAAG,WAAW,CAAC,gBAAE,CAAC;IACjC,WAAW,CAAC,gBAAE,CAAC;AACjB","sources":["packages/@react-spectrum/slider/intl/zh-CN.json"],"sourcesContent":["{\n \"maximum\": \"最大\",\n \"minimum\": \"最小\"\n}\n"],"names":[],"version":3,"file":"zh-CN.module.js.map"}
@@ -1,7 +0,0 @@
1
- module.exports = {
2
- "maximum": `\u{6700}\u{5927}\u{503C}`,
3
- "minimum": `\u{6700}\u{5C0F}\u{503C}`
4
- };
5
-
6
-
7
- //# sourceMappingURL=zh-TW.main.js.map
@@ -1 +0,0 @@
1
- {"mappings":"AAAA,iBAAiB;IAAG,WAAW,CAAC,wBAAG,CAAC;IAClC,WAAW,CAAC,wBAAG,CAAC;AAClB","sources":["packages/@react-spectrum/slider/intl/zh-TW.json"],"sourcesContent":["{\n \"maximum\": \"最大值\",\n \"minimum\": \"最小值\"\n}\n"],"names":[],"version":3,"file":"zh-TW.main.js.map"}
package/dist/zh-TW.mjs DELETED
@@ -1,9 +0,0 @@
1
- var $e54d1a8757bfdcd2$exports = {};
2
- $e54d1a8757bfdcd2$exports = {
3
- "maximum": `\u{6700}\u{5927}\u{503C}`,
4
- "minimum": `\u{6700}\u{5C0F}\u{503C}`
5
- };
6
-
7
-
8
- export {$e54d1a8757bfdcd2$exports as default};
9
- //# sourceMappingURL=zh-TW.module.js.map
@@ -1,9 +0,0 @@
1
- var $e54d1a8757bfdcd2$exports = {};
2
- $e54d1a8757bfdcd2$exports = {
3
- "maximum": `\u{6700}\u{5927}\u{503C}`,
4
- "minimum": `\u{6700}\u{5C0F}\u{503C}`
5
- };
6
-
7
-
8
- export {$e54d1a8757bfdcd2$exports as default};
9
- //# sourceMappingURL=zh-TW.module.js.map
@@ -1 +0,0 @@
1
- {"mappings":";AAAA,4BAAiB;IAAG,WAAW,CAAC,wBAAG,CAAC;IAClC,WAAW,CAAC,wBAAG,CAAC;AAClB","sources":["packages/@react-spectrum/slider/intl/zh-TW.json"],"sourcesContent":["{\n \"maximum\": \"最大值\",\n \"minimum\": \"最小值\"\n}\n"],"names":[],"version":3,"file":"zh-TW.module.js.map"}
@@ -1,95 +0,0 @@
1
- /*
2
- * Copyright 2020 Adobe. All rights reserved.
3
- * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
- * you may not use this file except in compliance with the License. You may obtain a copy
5
- * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
- *
7
- * Unless required by applicable law or agreed to in writing, software distributed under
8
- * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
- * OF ANY KIND, either express or implied. See the License for the specific language
10
- * governing permissions and limitations under the License.
11
- */
12
-
13
- import {classNames} from '@react-spectrum/utils';
14
- import {FocusableRef} from '@react-types/shared';
15
- // @ts-ignore
16
- import intlMessages from '../intl/*.json';
17
- import React from 'react';
18
- import {SliderBase, SliderBaseChildArguments, SliderBaseProps} from './SliderBase';
19
- import {SliderThumb} from './SliderThumb';
20
- import {SpectrumRangeSliderProps} from '@react-types/slider';
21
- import styles from '@adobe/spectrum-css-temp/components/slider/vars.css';
22
- import {useLocale, useLocalizedStringFormatter} from '@react-aria/i18n';
23
-
24
- /**
25
- * RangeSliders allow users to quickly select a subset range. They should be used when the upper and lower bounds to the range are invariable.
26
- */
27
- export const RangeSlider = React.forwardRef(function RangeSlider(props: SpectrumRangeSliderProps, ref: FocusableRef<HTMLDivElement>) {
28
- let {onChange, onChangeEnd, value, defaultValue, getValueLabel, ...otherProps} = props;
29
- let defaultThumbValues: number[] | undefined = undefined;
30
- if (defaultValue != null) {
31
- defaultThumbValues = [defaultValue.start, defaultValue.end];
32
- } else if (value == null) {
33
- // make sure that useSliderState knows we have two handles
34
- defaultThumbValues = [props.minValue ?? 0, props.maxValue ?? 100];
35
- }
36
-
37
- let baseProps: Omit<SliderBaseProps<number[]>, 'children'> = {
38
- ...otherProps,
39
- value: value != null ? [value.start, value.end] : undefined,
40
- defaultValue: defaultThumbValues,
41
- onChange(v) {
42
- onChange?.({start: v[0], end: v[1]});
43
- },
44
- onChangeEnd(v) {
45
- onChangeEnd?.({start: v[0], end: v[1]});
46
- },
47
- getValueLabel: getValueLabel ? ([start, end]) => getValueLabel({start, end}) : undefined
48
- };
49
-
50
- let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/slider');
51
- let {direction} = useLocale();
52
-
53
- return (
54
- <SliderBase {...baseProps} classes={'spectrum-Slider--range'} ref={ref}>
55
- {({trackRef, inputRef, state}: SliderBaseChildArguments) => {
56
- let cssDirection = direction === 'rtl' ? 'right' : 'left';
57
- return (
58
- <>
59
- <div
60
- className={classNames(styles, 'spectrum-Slider-track')}
61
- style={{width: `${state.getThumbPercent(0) * 100}%`}} />
62
- <SliderThumb
63
- index={0}
64
- aria-label={stringFormatter.format('minimum')}
65
- isDisabled={props.isDisabled}
66
- trackRef={trackRef}
67
- inputRef={inputRef}
68
- state={state}
69
- name={props.startName}
70
- form={props.form} />
71
- <div
72
- className={classNames(styles, 'spectrum-Slider-track')}
73
- style={{
74
- [cssDirection]: `${state.getThumbPercent(0) * 100}%`,
75
- width: `${Math.abs(state.getThumbPercent(0) - state.getThumbPercent(1)) * 100}%`
76
- }} />
77
- <SliderThumb
78
- index={1}
79
- aria-label={stringFormatter.format('maximum')}
80
- isDisabled={props.isDisabled}
81
- trackRef={trackRef}
82
- state={state}
83
- name={props.endName}
84
- form={props.form} />
85
- <div
86
- className={classNames(styles, 'spectrum-Slider-track')}
87
- style={{
88
- width: `${(1 - state.getThumbPercent(1)) * 100}%`
89
- }} />
90
- </>
91
- );
92
- }}
93
- </SliderBase>
94
- );
95
- });
package/src/Slider.tsx DELETED
@@ -1,119 +0,0 @@
1
- /*
2
- * Copyright 2020 Adobe. All rights reserved.
3
- * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
- * you may not use this file except in compliance with the License. You may obtain a copy
5
- * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
- *
7
- * Unless required by applicable law or agreed to in writing, software distributed under
8
- * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
- * OF ANY KIND, either express or implied. See the License for the specific language
10
- * governing permissions and limitations under the License.
11
- */
12
-
13
- import {clamp} from '@react-aria/utils';
14
- import {classNames} from '@react-spectrum/utils';
15
- import {FocusableRef} from '@react-types/shared';
16
- import React, {ReactNode} from 'react';
17
- import {SliderBase, SliderBaseChildArguments, SliderBaseProps} from './SliderBase';
18
- import {SliderThumb} from './SliderThumb';
19
- import {SpectrumSliderProps} from '@react-types/slider';
20
- import styles from '@adobe/spectrum-css-temp/components/slider/vars.css';
21
- import {useLocale} from '@react-aria/i18n';
22
-
23
- /**
24
- * Sliders allow users to quickly select a value within a range. They should be used when the upper and lower bounds to the range are invariable.
25
- */
26
- export const Slider = React.forwardRef(function Slider(props: SpectrumSliderProps, ref: FocusableRef<HTMLDivElement>) {
27
- let {onChange, onChangeEnd, value, defaultValue, isFilled, fillOffset, trackGradient, getValueLabel, ...otherProps} = props;
28
-
29
- let baseProps: Omit<SliderBaseProps, 'children'> = {
30
- ...otherProps,
31
- // Normalize `value: number[]` to `value: number`
32
- value: value != null ? [value] : undefined,
33
- defaultValue: defaultValue != null ? [defaultValue] : undefined,
34
- onChange: (v: number[]): void => {
35
- onChange?.(v[0]);
36
- },
37
- onChangeEnd: (v: number[]): void => {
38
- onChangeEnd?.(v[0]);
39
- },
40
- getValueLabel: getValueLabel ? ([v]) => getValueLabel(v) : undefined
41
- };
42
-
43
- let {direction} = useLocale();
44
-
45
- return (
46
- <SliderBase
47
- {...baseProps}
48
- ref={ref}
49
- classes={{
50
- 'spectrum-Slider--filled': isFilled && fillOffset == null
51
- }}
52
- style={
53
- // @ts-ignore
54
- {'--spectrum-slider-track-gradient': trackGradient && `linear-gradient(to ${direction === 'ltr' ? 'right' : 'left'}, ${trackGradient.join(', ')})`}
55
- }>
56
- {({trackRef, inputRef, state}: SliderBaseChildArguments) => {
57
- fillOffset = fillOffset != null ? clamp(fillOffset, state.getThumbMinValue(0), state.getThumbMaxValue(0)) : fillOffset;
58
- let cssDirection = direction === 'rtl' ? 'right' : 'left';
59
-
60
- let lowerTrack = (
61
- <div
62
- className={classNames(styles, 'spectrum-Slider-track')}
63
- style={{
64
- width: `${state.getThumbPercent(0) * 100}%`,
65
- // TODO not sure if it has advantages, but this could also be implemented as CSS calc():
66
- // .track::before {
67
- // background-size: calc((1/ (var(--width)/100)) * 100%);
68
- // width: calc(var(--width) * 1%)M
69
- // }
70
- // @ts-ignore
71
- '--spectrum-track-background-size': `${(1 / state.getThumbPercent(0)) * 100}%`,
72
- '--spectrum-track-background-position': direction === 'ltr' ? '0' : '100%'
73
- }} />
74
- );
75
- let upperTrack = (
76
- <div
77
- className={classNames(styles, 'spectrum-Slider-track')}
78
- style={{
79
- width: `${(1 - state.getThumbPercent(0)) * 100}%`,
80
- // @ts-ignore
81
- '--spectrum-track-background-size': `${(1 / (1 - state.getThumbPercent(0))) * 100}%`,
82
- '--spectrum-track-background-position': direction === 'ltr' ? '100%' : '0'
83
- }} />
84
- );
85
-
86
- let filledTrack: ReactNode = null;
87
- if (isFilled && fillOffset != null) {
88
- let width = state.getThumbPercent(0) - state.getValuePercent(fillOffset);
89
- let isRightOfOffset = width > 0;
90
- let offset = isRightOfOffset ? state.getValuePercent(fillOffset) : state.getThumbPercent(0);
91
- filledTrack = (
92
- <div
93
- className={classNames(styles, 'spectrum-Slider-fill', {'spectrum-Slider-fill--right': isRightOfOffset})}
94
- style={{
95
- [cssDirection]: `${offset * 100}%`,
96
- width: `${Math.abs(width) * 100}%`
97
- }} />
98
- );
99
- }
100
-
101
- return (
102
- <>
103
- {lowerTrack}
104
- <SliderThumb
105
- index={0}
106
- isDisabled={props.isDisabled}
107
- trackRef={trackRef}
108
- inputRef={inputRef}
109
- state={state}
110
- name={props.name}
111
- form={props.form} />
112
- {filledTrack}
113
- {upperTrack}
114
- </>
115
- );
116
- }}
117
- </SliderBase>
118
- );
119
- });
@@ -1,195 +0,0 @@
1
- /*
2
- * Copyright 2020 Adobe. All rights reserved.
3
- * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
- * you may not use this file except in compliance with the License. You may obtain a copy
5
- * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
- *
7
- * Unless required by applicable law or agreed to in writing, software distributed under
8
- * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
- * OF ANY KIND, either express or implied. See the License for the specific language
10
- * governing permissions and limitations under the License.
11
- */
12
-
13
- import {classNames, SlotProvider, useFocusableRef, useStyleProps} from '@react-spectrum/utils';
14
- import {FocusableRef, RefObject} from '@react-types/shared';
15
- import React, {CSSProperties, ReactNode, useRef} from 'react';
16
- import {SliderState, useSliderState} from '@react-stately/slider';
17
- import {SpectrumBarSliderBase} from '@react-types/slider';
18
- import styles from '@adobe/spectrum-css-temp/components/slider/vars.css';
19
- import {useNumberFormatter} from '@react-aria/i18n';
20
- import {useProviderProps} from '@react-spectrum/provider';
21
- import {useSlider} from '@react-aria/slider';
22
-
23
- export interface SliderBaseChildArguments {
24
- inputRef: RefObject<HTMLInputElement | null>,
25
- trackRef: RefObject<HTMLElement | null>,
26
- state: SliderState
27
- }
28
-
29
- export interface SliderBaseProps<T = number[]> extends SpectrumBarSliderBase<T> {
30
- children: (opts: SliderBaseChildArguments) => ReactNode,
31
- classes?: string[] | Object,
32
- style?: CSSProperties
33
- }
34
-
35
- export const SliderBase = React.forwardRef(function SliderBase(props: SliderBaseProps, ref: FocusableRef<HTMLDivElement>) {
36
- props = useProviderProps(props);
37
- let {
38
- isDisabled,
39
- children,
40
- classes,
41
- style,
42
- labelPosition = 'top',
43
- getValueLabel,
44
- showValueLabel = !!props.label,
45
- formatOptions,
46
- minValue = 0,
47
- maxValue = 100,
48
- ...otherProps
49
- } = props;
50
-
51
- let {styleProps} = useStyleProps(otherProps);
52
-
53
- // `Math.abs(Math.sign(a) - Math.sign(b)) === 2` is true if the values have a different sign.
54
- let alwaysDisplaySign = Math.abs(Math.sign(minValue) - Math.sign(maxValue)) === 2;
55
- if (alwaysDisplaySign) {
56
- if (formatOptions != null) {
57
- if (!('signDisplay' in formatOptions)) {
58
- formatOptions = {
59
- ...formatOptions,
60
- signDisplay: 'exceptZero'
61
- };
62
- }
63
- } else {
64
- formatOptions = {signDisplay: 'exceptZero'};
65
- }
66
- }
67
-
68
- const formatter = useNumberFormatter(formatOptions);
69
- const state = useSliderState({
70
- ...props,
71
- numberFormatter: formatter,
72
- minValue,
73
- maxValue
74
- });
75
- let trackRef = useRef<HTMLDivElement | null>(null);
76
- let {
77
- groupProps,
78
- trackProps,
79
- labelProps,
80
- outputProps
81
- } = useSlider(props, state, trackRef);
82
-
83
- let inputRef = useRef<HTMLInputElement | null>(null);
84
- let domRef = useFocusableRef(ref, inputRef);
85
-
86
- let displayValue = '';
87
- let maxLabelLength: number | null = null;
88
-
89
- if (typeof getValueLabel === 'function') {
90
- displayValue = getValueLabel(state.values);
91
- switch (state.values.length) {
92
- case 1:
93
- maxLabelLength = Math.max(
94
- getValueLabel([minValue]).length,
95
- getValueLabel([maxValue]).length
96
- );
97
- break;
98
- case 2:
99
- // Try all possible combinations of min and max values.
100
- maxLabelLength = Math.max(
101
- getValueLabel([minValue, minValue]).length,
102
- getValueLabel([minValue, maxValue]).length,
103
- getValueLabel([maxValue, minValue]).length,
104
- getValueLabel([maxValue, maxValue]).length
105
- );
106
- break;
107
- default:
108
- throw new Error('Only sliders with 1 or 2 handles are supported!');
109
- }
110
- } else {
111
- maxLabelLength = Math.max([...formatter.format(minValue)].length, [...formatter.format(maxValue)].length);
112
- switch (state.values.length) {
113
- case 1:
114
- displayValue = state.getThumbValueLabel(0);
115
- break;
116
- case 2:
117
- // This should really use the NumberFormat#formatRange proposal...
118
- // https://github.com/tc39/ecma402/issues/393
119
- // https://github.com/tc39/proposal-intl-numberformat-v3#formatrange-ecma-402-393
120
- displayValue = `${state.getThumbValueLabel(0)} – ${state.getThumbValueLabel(1)}`;
121
- maxLabelLength = 3 + 2 * Math.max(
122
- maxLabelLength,
123
- [...formatter.format(minValue)].length, [...formatter.format(maxValue)].length
124
- );
125
- break;
126
- default:
127
- throw new Error('Only sliders with 1 or 2 handles are supported!');
128
- }
129
- }
130
-
131
- let labelNode = (
132
- <label
133
- className={classNames(styles, 'spectrum-Slider-label')}
134
- {...labelProps}>
135
- {props.label}
136
- </label>
137
- );
138
-
139
- let valueNode = (
140
- <output
141
- {...outputProps}
142
- className={classNames(styles, 'spectrum-Slider-value')}
143
- style={maxLabelLength != null ? {width: `${maxLabelLength}ch`, minWidth: `${maxLabelLength}ch`} : undefined}>
144
- {displayValue}
145
- </output>
146
- );
147
-
148
- return (
149
- <div
150
- ref={domRef}
151
- className={classNames(styles,
152
- 'spectrum-Slider',
153
- {
154
- 'spectrum-Slider--positionTop': labelPosition === 'top',
155
- 'spectrum-Slider--positionSide': labelPosition === 'side',
156
- 'is-disabled': isDisabled
157
- },
158
- classes,
159
- styleProps.className)}
160
- style={{
161
- ...style,
162
- ...styleProps.style
163
- }}
164
- {...groupProps}>
165
- {(props.label) &&
166
- <div className={classNames(styles, 'spectrum-Slider-labelContainer')} role="presentation">
167
- {props.label && labelNode}
168
- {props.contextualHelp &&
169
- <SlotProvider
170
- slots={{
171
- actionButton: {
172
- UNSAFE_className: classNames(styles, 'spectrum-Slider-contextualHelp')
173
- }
174
- }}>
175
- {props.contextualHelp}
176
- </SlotProvider>
177
- }
178
- {labelPosition === 'top' && showValueLabel && valueNode}
179
- </div>
180
- }
181
- <div className={classNames(styles, 'spectrum-Slider-controls')} ref={trackRef} {...trackProps} role="presentation">
182
- {children({
183
- trackRef,
184
- inputRef,
185
- state
186
- })}
187
- </div>
188
- {labelPosition === 'side' &&
189
- <div className={classNames(styles, 'spectrum-Slider-valueLabelContainer')} role="presentation">
190
- {showValueLabel && valueNode}
191
- </div>
192
- }
193
- </div>
194
- );
195
- });
@@ -1,68 +0,0 @@
1
- /*
2
- * Copyright 2020 Adobe. All rights reserved.
3
- * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
- * you may not use this file except in compliance with the License. You may obtain a copy
5
- * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
- *
7
- * Unless required by applicable law or agreed to in writing, software distributed under
8
- * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
- * OF ANY KIND, either express or implied. See the License for the specific language
10
- * governing permissions and limitations under the License.
11
- */
12
-
13
- import {AriaSliderThumbProps} from '@react-types/slider';
14
- import {classNames} from '@react-spectrum/utils';
15
- import {FocusRing} from '@react-aria/focus';
16
- import {mergeProps} from '@react-aria/utils';
17
- import React, {ReactNode, useRef} from 'react';
18
- import {RefObject} from '@react-types/shared';
19
- import {SliderState} from '@react-stately/slider';
20
- import styles from '@adobe/spectrum-css-temp/components/slider/vars.css';
21
- import {useHover} from '@react-aria/interactions';
22
- import {useSliderThumb} from '@react-aria/slider';
23
- import {VisuallyHidden} from '@react-aria/visually-hidden';
24
-
25
- interface SliderThumbProps extends AriaSliderThumbProps {
26
- trackRef: RefObject<HTMLElement | null>,
27
- inputRef?: RefObject<HTMLInputElement | null>,
28
- state: SliderState
29
- }
30
-
31
- export function SliderThumb(props: SliderThumbProps): ReactNode {
32
- let {
33
- inputRef,
34
- state
35
- } = props;
36
- let backupRef = useRef<HTMLInputElement | null>(null);
37
- inputRef = inputRef || backupRef;
38
-
39
- let {thumbProps, inputProps, isDragging, isFocused} = useSliderThumb({
40
- ...props,
41
- inputRef
42
- }, state);
43
-
44
- let {hoverProps, isHovered} = useHover({});
45
-
46
- return (
47
- <FocusRing within focusRingClass={classNames(styles, 'is-focused')}>
48
- <div
49
- className={
50
- classNames(
51
- styles,
52
- 'spectrum-Slider-handle',
53
- {
54
- 'is-hovered': isHovered,
55
- 'is-dragged': isDragging,
56
- 'is-tophandle': isFocused
57
- }
58
- )
59
- }
60
- {...mergeProps(thumbProps, hoverProps)}
61
- role="presentation">
62
- <VisuallyHidden>
63
- <input className={classNames(styles, 'spectrum-Slider-input')} ref={inputRef} {...inputProps} />
64
- </VisuallyHidden>
65
- </div>
66
- </FocusRing>
67
- );
68
- }