@salutejs/plasma-new-hope 0.171.0-canary.1492.11402523696.0 → 0.172.0-canary.1452.11439149903.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (248) hide show
  1. package/cjs/components/Accordion/ui/AccordionItem/AccordionItem.js +19 -13
  2. package/cjs/components/Accordion/ui/AccordionItem/AccordionItem.js.map +1 -1
  3. package/cjs/components/Slider/Slider.css +15 -13
  4. package/cjs/components/Slider/Slider.js +11 -3
  5. package/cjs/components/Slider/Slider.js.map +1 -1
  6. package/cjs/components/Slider/Slider.tokens.js +23 -17
  7. package/cjs/components/Slider/Slider.tokens.js.map +1 -1
  8. package/cjs/components/Slider/components/Double/Double.css +8 -8
  9. package/cjs/components/Slider/components/Double/Double.js +58 -23
  10. package/cjs/components/Slider/components/Double/Double.js.map +1 -1
  11. package/cjs/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.css +77 -0
  12. package/cjs/components/Slider/components/Single/Single.css +14 -14
  13. package/cjs/components/Slider/components/Single/Single.js +63 -33
  14. package/cjs/components/Slider/components/Single/Single.js.map +1 -1
  15. package/cjs/components/Slider/components/Single/Single.styles.js +4 -4
  16. package/cjs/components/Slider/components/Single/Single.styles.js.map +1 -1
  17. package/cjs/components/Slider/components/Single/Single.styles_14wadfy.css +6 -0
  18. package/cjs/components/Slider/components/SliderBase/SliderBase.css +5 -5
  19. package/cjs/components/Slider/components/SliderBase/SliderBase.js +31 -12
  20. package/cjs/components/Slider/components/SliderBase/SliderBase.js.map +1 -1
  21. package/cjs/components/Slider/components/SliderBase/SliderBase.styles.js +7 -7
  22. package/cjs/components/Slider/components/SliderBase/SliderBase.styles.js.map +1 -1
  23. package/cjs/components/Slider/components/SliderBase/SliderBase.styles_1qt1224.css +5 -0
  24. package/cjs/components/Slider/ui/Handler/Handler.css +3 -3
  25. package/cjs/components/Slider/ui/Handler/Handler.js +49 -88
  26. package/cjs/components/Slider/ui/Handler/Handler.js.map +1 -1
  27. package/cjs/components/Slider/ui/Handler/Handler.styles.js +17 -7
  28. package/cjs/components/Slider/ui/Handler/Handler.styles.js.map +1 -1
  29. package/cjs/components/Slider/ui/Handler/Handler.styles_irtcgm.css +2 -0
  30. package/cjs/components/Slider/ui/Handler/computeKeyPressData.js +122 -0
  31. package/cjs/components/Slider/ui/Handler/computeKeyPressData.js.map +1 -0
  32. package/cjs/components/Slider/ui/Thumb/Thumb.css +1 -1
  33. package/cjs/components/Slider/ui/Thumb/Thumb.js +3 -2
  34. package/cjs/components/Slider/ui/Thumb/Thumb.js.map +1 -1
  35. package/cjs/components/Slider/ui/Thumb/Thumb.styles.js +1 -1
  36. package/cjs/components/Slider/ui/Thumb/Thumb.styles.js.map +1 -1
  37. package/cjs/components/Slider/ui/Thumb/Thumb.styles_uyn20e.css +1 -0
  38. package/cjs/components/Slider/utils/index.js +28 -10
  39. package/cjs/components/Slider/utils/index.js.map +1 -1
  40. package/cjs/components/Slider/variations/_view/base.js +1 -1
  41. package/cjs/components/Slider/variations/_view/base.js.map +1 -1
  42. package/cjs/components/Slider/variations/_view/base_1s3f6q8.css +1 -0
  43. package/cjs/components/TextArea/TextArea.js +1 -1
  44. package/cjs/components/TextArea/TextArea.js.map +1 -1
  45. package/cjs/components/TextArea/hooks/useAutoResize.js +2 -2
  46. package/cjs/components/TextArea/hooks/useAutoResize.js.map +1 -1
  47. package/cjs/index.css +15 -13
  48. package/cjs/utils/index.js.map +1 -1
  49. package/emotion/cjs/components/Accordion/Accordion.template-doc.mdx +32 -0
  50. package/emotion/cjs/components/Accordion/ui/AccordionItem/AccordionItem.js +19 -13
  51. package/emotion/cjs/components/Slider/Slider.js +10 -2
  52. package/emotion/cjs/components/Slider/Slider.tokens.js +23 -17
  53. package/emotion/cjs/components/Slider/components/Double/Double.js +54 -19
  54. package/emotion/cjs/components/Slider/components/Single/Single.js +63 -33
  55. package/emotion/cjs/components/Slider/components/Single/Single.styles.js +18 -9
  56. package/emotion/cjs/components/Slider/components/SliderBase/SliderBase.js +31 -12
  57. package/emotion/cjs/components/Slider/components/SliderBase/SliderBase.styles.js +10 -10
  58. package/emotion/cjs/components/Slider/ui/Handler/Handler.js +52 -88
  59. package/emotion/cjs/components/Slider/ui/Handler/Handler.styles.js +9 -15
  60. package/emotion/cjs/components/Slider/ui/Handler/computeKeyPressData.js +121 -0
  61. package/emotion/cjs/components/Slider/ui/Thumb/Thumb.js +3 -2
  62. package/emotion/cjs/components/Slider/ui/Thumb/Thumb.styles.js +3 -3
  63. package/emotion/cjs/components/Slider/utils/index.js +28 -10
  64. package/emotion/cjs/components/Slider/variations/_view/base.js +2 -1
  65. package/emotion/cjs/components/TextArea/TextArea.js +2 -2
  66. package/emotion/cjs/components/TextArea/hooks/useAutoResize.js +2 -2
  67. package/emotion/cjs/examples/plasma_b2c/components/Accordion/Accordion.stories.tsx +63 -1
  68. package/emotion/cjs/examples/plasma_b2c/components/Slider/Slider.config.js +7 -7
  69. package/emotion/cjs/examples/plasma_b2c/components/Slider/Slider.stories.tsx +90 -16
  70. package/emotion/cjs/examples/plasma_web/components/Accordion/Accordion.stories.tsx +63 -1
  71. package/emotion/cjs/examples/plasma_web/components/Slider/Slider.config.js +7 -7
  72. package/emotion/cjs/examples/plasma_web/components/Slider/Slider.stories.tsx +90 -15
  73. package/emotion/es/components/Accordion/Accordion.template-doc.mdx +32 -0
  74. package/emotion/es/components/Accordion/ui/AccordionItem/AccordionItem.js +20 -14
  75. package/emotion/es/components/Slider/Slider.js +11 -2
  76. package/emotion/es/components/Slider/Slider.tokens.js +23 -17
  77. package/emotion/es/components/Slider/components/Double/Double.js +54 -19
  78. package/emotion/es/components/Slider/components/Single/Single.js +64 -34
  79. package/emotion/es/components/Slider/components/Single/Single.styles.js +17 -8
  80. package/emotion/es/components/Slider/components/SliderBase/SliderBase.js +31 -12
  81. package/emotion/es/components/Slider/components/SliderBase/SliderBase.styles.js +11 -11
  82. package/emotion/es/components/Slider/ui/Handler/Handler.js +51 -86
  83. package/emotion/es/components/Slider/ui/Handler/Handler.styles.js +10 -16
  84. package/emotion/es/components/Slider/ui/Handler/computeKeyPressData.js +115 -0
  85. package/emotion/es/components/Slider/ui/Thumb/Thumb.js +3 -2
  86. package/emotion/es/components/Slider/ui/Thumb/Thumb.styles.js +3 -3
  87. package/emotion/es/components/Slider/utils/index.js +28 -10
  88. package/emotion/es/components/Slider/variations/_view/base.js +2 -1
  89. package/emotion/es/components/TextArea/TextArea.js +2 -2
  90. package/emotion/es/components/TextArea/hooks/useAutoResize.js +2 -2
  91. package/emotion/es/examples/plasma_b2c/components/Accordion/Accordion.stories.tsx +63 -1
  92. package/emotion/es/examples/plasma_b2c/components/Slider/Slider.config.js +7 -7
  93. package/emotion/es/examples/plasma_b2c/components/Slider/Slider.stories.tsx +90 -16
  94. package/emotion/es/examples/plasma_web/components/Accordion/Accordion.stories.tsx +63 -1
  95. package/emotion/es/examples/plasma_web/components/Slider/Slider.config.js +7 -7
  96. package/emotion/es/examples/plasma_web/components/Slider/Slider.stories.tsx +90 -15
  97. package/es/components/Accordion/ui/AccordionItem/AccordionItem.js +20 -14
  98. package/es/components/Accordion/ui/AccordionItem/AccordionItem.js.map +1 -1
  99. package/es/components/Slider/Slider.css +15 -13
  100. package/es/components/Slider/Slider.js +11 -3
  101. package/es/components/Slider/Slider.js.map +1 -1
  102. package/es/components/Slider/Slider.tokens.js +23 -17
  103. package/es/components/Slider/Slider.tokens.js.map +1 -1
  104. package/es/components/Slider/components/Double/Double.css +8 -8
  105. package/es/components/Slider/components/Double/Double.js +54 -19
  106. package/es/components/Slider/components/Double/Double.js.map +1 -1
  107. package/es/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.css +77 -0
  108. package/es/components/Slider/components/Single/Single.css +14 -14
  109. package/es/components/Slider/components/Single/Single.js +64 -34
  110. package/es/components/Slider/components/Single/Single.js.map +1 -1
  111. package/es/components/Slider/components/Single/Single.styles.js +4 -4
  112. package/es/components/Slider/components/Single/Single.styles.js.map +1 -1
  113. package/es/components/Slider/components/Single/Single.styles_14wadfy.css +6 -0
  114. package/es/components/Slider/components/SliderBase/SliderBase.css +5 -5
  115. package/es/components/Slider/components/SliderBase/SliderBase.js +31 -12
  116. package/es/components/Slider/components/SliderBase/SliderBase.js.map +1 -1
  117. package/es/components/Slider/components/SliderBase/SliderBase.styles.js +7 -7
  118. package/es/components/Slider/components/SliderBase/SliderBase.styles.js.map +1 -1
  119. package/es/components/Slider/components/SliderBase/SliderBase.styles_1qt1224.css +5 -0
  120. package/es/components/Slider/ui/Handler/Handler.css +3 -3
  121. package/es/components/Slider/ui/Handler/Handler.js +48 -87
  122. package/es/components/Slider/ui/Handler/Handler.js.map +1 -1
  123. package/es/components/Slider/ui/Handler/Handler.styles.js +17 -7
  124. package/es/components/Slider/ui/Handler/Handler.styles.js.map +1 -1
  125. package/es/components/Slider/ui/Handler/Handler.styles_irtcgm.css +2 -0
  126. package/es/components/Slider/ui/Handler/computeKeyPressData.js +118 -0
  127. package/es/components/Slider/ui/Handler/computeKeyPressData.js.map +1 -0
  128. package/es/components/Slider/ui/Thumb/Thumb.css +1 -1
  129. package/es/components/Slider/ui/Thumb/Thumb.js +3 -2
  130. package/es/components/Slider/ui/Thumb/Thumb.js.map +1 -1
  131. package/es/components/Slider/ui/Thumb/Thumb.styles.js +1 -1
  132. package/es/components/Slider/ui/Thumb/Thumb.styles.js.map +1 -1
  133. package/es/components/Slider/ui/Thumb/Thumb.styles_uyn20e.css +1 -0
  134. package/es/components/Slider/utils/index.js +28 -10
  135. package/es/components/Slider/utils/index.js.map +1 -1
  136. package/es/components/Slider/variations/_view/base.js +1 -1
  137. package/es/components/Slider/variations/_view/base.js.map +1 -1
  138. package/es/components/Slider/variations/_view/base_1s3f6q8.css +1 -0
  139. package/es/components/TextArea/TextArea.js +1 -1
  140. package/es/components/TextArea/TextArea.js.map +1 -1
  141. package/es/components/TextArea/hooks/useAutoResize.js +2 -2
  142. package/es/components/TextArea/hooks/useAutoResize.js.map +1 -1
  143. package/es/index.css +15 -13
  144. package/es/utils/index.js.map +1 -1
  145. package/package.json +2 -2
  146. package/styled-components/cjs/components/Accordion/Accordion.template-doc.mdx +32 -0
  147. package/styled-components/cjs/components/Accordion/ui/AccordionItem/AccordionItem.js +19 -13
  148. package/styled-components/cjs/components/Slider/Slider.js +10 -2
  149. package/styled-components/cjs/components/Slider/Slider.tokens.js +23 -17
  150. package/styled-components/cjs/components/Slider/components/Double/Double.js +54 -19
  151. package/styled-components/cjs/components/Slider/components/Single/Single.js +63 -33
  152. package/styled-components/cjs/components/Slider/components/Single/Single.styles.js +6 -6
  153. package/styled-components/cjs/components/Slider/components/SliderBase/SliderBase.js +31 -12
  154. package/styled-components/cjs/components/Slider/components/SliderBase/SliderBase.styles.js +6 -6
  155. package/styled-components/cjs/components/Slider/ui/Handler/Handler.js +52 -88
  156. package/styled-components/cjs/components/Slider/ui/Handler/Handler.styles.js +7 -4
  157. package/styled-components/cjs/components/Slider/ui/Handler/computeKeyPressData.js +121 -0
  158. package/styled-components/cjs/components/Slider/ui/Thumb/Thumb.js +3 -2
  159. package/styled-components/cjs/components/Slider/ui/Thumb/Thumb.styles.js +2 -2
  160. package/styled-components/cjs/components/Slider/utils/index.js +28 -10
  161. package/styled-components/cjs/components/Slider/variations/_view/base.js +2 -1
  162. package/styled-components/cjs/components/TextArea/TextArea.js +1 -1
  163. package/styled-components/cjs/components/TextArea/hooks/useAutoResize.js +2 -2
  164. package/styled-components/cjs/examples/plasma_b2c/components/Accordion/Accordion.stories.tsx +63 -1
  165. package/styled-components/cjs/examples/plasma_b2c/components/Slider/Slider.config.js +3 -3
  166. package/styled-components/cjs/examples/plasma_b2c/components/Slider/Slider.stories.tsx +90 -16
  167. package/styled-components/cjs/examples/plasma_web/components/Accordion/Accordion.stories.tsx +63 -1
  168. package/styled-components/cjs/examples/plasma_web/components/Slider/Slider.config.js +3 -3
  169. package/styled-components/cjs/examples/plasma_web/components/Slider/Slider.stories.tsx +90 -15
  170. package/styled-components/es/components/Accordion/Accordion.template-doc.mdx +32 -0
  171. package/styled-components/es/components/Accordion/ui/AccordionItem/AccordionItem.js +20 -14
  172. package/styled-components/es/components/Slider/Slider.js +11 -2
  173. package/styled-components/es/components/Slider/Slider.tokens.js +23 -17
  174. package/styled-components/es/components/Slider/components/Double/Double.js +54 -19
  175. package/styled-components/es/components/Slider/components/Single/Single.js +64 -34
  176. package/styled-components/es/components/Slider/components/Single/Single.styles.js +5 -5
  177. package/styled-components/es/components/Slider/components/SliderBase/SliderBase.js +31 -12
  178. package/styled-components/es/components/Slider/components/SliderBase/SliderBase.styles.js +7 -7
  179. package/styled-components/es/components/Slider/ui/Handler/Handler.js +51 -86
  180. package/styled-components/es/components/Slider/ui/Handler/Handler.styles.js +8 -5
  181. package/styled-components/es/components/Slider/ui/Handler/computeKeyPressData.js +115 -0
  182. package/styled-components/es/components/Slider/ui/Thumb/Thumb.js +3 -2
  183. package/styled-components/es/components/Slider/ui/Thumb/Thumb.styles.js +2 -2
  184. package/styled-components/es/components/Slider/utils/index.js +28 -10
  185. package/styled-components/es/components/Slider/variations/_view/base.js +2 -1
  186. package/styled-components/es/components/TextArea/TextArea.js +1 -1
  187. package/styled-components/es/components/TextArea/hooks/useAutoResize.js +2 -2
  188. package/styled-components/es/examples/plasma_b2c/components/Accordion/Accordion.stories.tsx +63 -1
  189. package/styled-components/es/examples/plasma_b2c/components/Slider/Slider.config.js +3 -3
  190. package/styled-components/es/examples/plasma_b2c/components/Slider/Slider.stories.tsx +90 -16
  191. package/styled-components/es/examples/plasma_web/components/Accordion/Accordion.stories.tsx +63 -1
  192. package/styled-components/es/examples/plasma_web/components/Slider/Slider.config.js +3 -3
  193. package/styled-components/es/examples/plasma_web/components/Slider/Slider.stories.tsx +90 -15
  194. package/types/components/Accordion/ui/AccordionItem/AccordionItem.d.ts +17 -2
  195. package/types/components/Accordion/ui/AccordionItem/AccordionItem.d.ts.map +1 -1
  196. package/types/components/Accordion/ui/AccordionItem/AccordionItem.types.d.ts +17 -9
  197. package/types/components/Accordion/ui/AccordionItem/AccordionItem.types.d.ts.map +1 -1
  198. package/types/components/Slider/Slider.d.ts.map +1 -1
  199. package/types/components/Slider/Slider.tokens.d.ts +22 -16
  200. package/types/components/Slider/Slider.tokens.d.ts.map +1 -1
  201. package/types/components/Slider/components/Double/Double.d.ts.map +1 -1
  202. package/types/components/Slider/components/Double/Double.types.d.ts +1 -0
  203. package/types/components/Slider/components/Double/Double.types.d.ts.map +1 -1
  204. package/types/components/Slider/components/Single/Single.d.ts.map +1 -1
  205. package/types/components/Slider/components/Single/Single.styles.d.ts +1 -1
  206. package/types/components/Slider/components/Single/Single.styles.d.ts.map +1 -1
  207. package/types/components/Slider/components/Single/Single.types.d.ts +75 -7
  208. package/types/components/Slider/components/Single/Single.types.d.ts.map +1 -1
  209. package/types/components/Slider/components/SliderBase/SliderBase.d.ts.map +1 -1
  210. package/types/components/Slider/components/SliderBase/SliderBase.styles.d.ts +1 -1
  211. package/types/components/Slider/components/SliderBase/SliderBase.styles.d.ts.map +1 -1
  212. package/types/components/Slider/components/SliderBase/SliderBase.types.d.ts +3 -0
  213. package/types/components/Slider/components/SliderBase/SliderBase.types.d.ts.map +1 -1
  214. package/types/components/Slider/ui/Handler/Handler.d.ts.map +1 -1
  215. package/types/components/Slider/ui/Handler/Handler.styles.d.ts +6 -2
  216. package/types/components/Slider/ui/Handler/Handler.styles.d.ts.map +1 -1
  217. package/types/components/Slider/ui/Handler/Handler.types.d.ts +5 -1
  218. package/types/components/Slider/ui/Handler/Handler.types.d.ts.map +1 -1
  219. package/types/components/Slider/ui/Handler/computeKeyPressData.d.ts +12 -0
  220. package/types/components/Slider/ui/Handler/computeKeyPressData.d.ts.map +1 -0
  221. package/types/components/Slider/ui/Thumb/Thumb.d.ts +1 -1
  222. package/types/components/Slider/ui/Thumb/Thumb.d.ts.map +1 -1
  223. package/types/components/Slider/ui/Thumb/Thumb.styles.d.ts.map +1 -1
  224. package/types/components/Slider/ui/Thumb/Thumb.types.d.ts +1 -0
  225. package/types/components/Slider/ui/Thumb/Thumb.types.d.ts.map +1 -1
  226. package/types/components/Slider/utils/index.d.ts +26 -8
  227. package/types/components/Slider/utils/index.d.ts.map +1 -1
  228. package/types/components/Slider/variations/_view/base.d.ts.map +1 -1
  229. package/types/components/TextArea/hooks/useAutoResize.d.ts +1 -1
  230. package/types/components/TextArea/hooks/useAutoResize.d.ts.map +1 -1
  231. package/types/examples/plasma_b2c/components/Slider/Slider.config.d.ts.map +1 -1
  232. package/types/examples/plasma_b2c/components/Slider/Slider.d.ts +80 -2
  233. package/types/examples/plasma_b2c/components/Slider/Slider.d.ts.map +1 -1
  234. package/types/examples/plasma_web/components/Slider/Slider.config.d.ts.map +1 -1
  235. package/types/examples/plasma_web/components/Slider/Slider.d.ts +80 -2
  236. package/types/examples/plasma_web/components/Slider/Slider.d.ts.map +1 -1
  237. package/types/utils/index.d.ts +1 -1
  238. package/types/utils/index.d.ts.map +1 -1
  239. package/cjs/components/Slider/components/Single/Single.styles_1r9f1e0.css +0 -6
  240. package/cjs/components/Slider/components/SliderBase/SliderBase.styles_9s4eb3.css +0 -5
  241. package/cjs/components/Slider/ui/Handler/Handler.styles_8crx5z.css +0 -2
  242. package/cjs/components/Slider/ui/Thumb/Thumb.styles_4w4gzn.css +0 -1
  243. package/cjs/components/Slider/variations/_view/base_x642ct.css +0 -1
  244. package/es/components/Slider/components/Single/Single.styles_1r9f1e0.css +0 -6
  245. package/es/components/Slider/components/SliderBase/SliderBase.styles_9s4eb3.css +0 -5
  246. package/es/components/Slider/ui/Handler/Handler.styles_8crx5z.css +0 -2
  247. package/es/components/Slider/ui/Thumb/Thumb.styles_4w4gzn.css +0 -1
  248. package/es/components/Slider/variations/_view/base_x642ct.css +0 -1
@@ -3,16 +3,19 @@ import type { ComponentProps } from 'react';
3
3
  import styled from 'styled-components';
4
4
  import { disableProps } from '@salutejs/plasma-sb-utils';
5
5
  import type { StoryObj, Meta } from '@storybook/react';
6
- import { action } from '@storybook/addon-actions';
7
6
 
7
+ import { IconMic } from '../../../../components/_Icon';
8
8
  import { WithTheme } from '../../../_helpers';
9
9
 
10
10
  import { Slider } from './Slider';
11
11
 
12
12
  const sizes = ['l', 'm', 's'];
13
+ const pointerSizes = ['small', 'large', 'none'];
13
14
  const views = ['default', 'accent', 'gradient'];
14
- const labelPlacements = ['outer', 'inner'];
15
- const rangeValuesPlacement = ['outer', 'inner'];
15
+ const sliderAligns = ['center', 'left', 'right', 'none'];
16
+ const labelPlacements = ['top', 'left'];
17
+ const scaleAligns = ['side', 'bottom'];
18
+ const orientations: Array<string> = ['vertical', 'horizontal'];
16
19
 
17
20
  const meta: Meta<typeof Slider> = {
18
21
  title: 'plasma_b2c/Slider',
@@ -31,9 +34,24 @@ const meta: Meta<typeof Slider> = {
31
34
  type: 'inline-radio',
32
35
  },
33
36
  },
37
+ pointerSize: {
38
+ options: pointerSizes,
39
+ control: {
40
+ type: 'inline-radio',
41
+ },
42
+ },
43
+ orientation: {
44
+ options: orientations,
45
+ control: {
46
+ type: 'select',
47
+ },
48
+ },
34
49
  ...disableProps([
35
50
  'value',
36
51
  'onChangeCommitted',
52
+ 'onChangeTextField',
53
+ 'onBlurTextField',
54
+ 'onKeyDownTextField',
37
55
  'ariaLabel',
38
56
  'onChange',
39
57
  'fontSizeMultiplier',
@@ -53,8 +71,9 @@ type StorySingleProps = StoryProps;
53
71
  type StorySingle = StoryObj<StorySingleProps>;
54
72
  type StoryDouble = StoryObj<StoryProps>;
55
73
 
56
- const SliderWrapper = styled.div`
57
- width: 25rem;
74
+ const SliderWrapper = styled.div<{ isVertical?: boolean }>`
75
+ width: ${({ isVertical }) => (isVertical ? 'auto' : '25rem')};
76
+ height: ${({ isVertical }) => (isVertical ? '25rem' : 'auto')};
58
77
  `;
59
78
 
60
79
  const StoryDefault = (args: StorySingleProps) => {
@@ -68,41 +87,86 @@ const StoryDefault = (args: StorySingleProps) => {
68
87
  setValue(values);
69
88
  };
70
89
 
90
+ const { hasIcon, showIcon, orientation, labelPlacement, labelVerticalPlacement, ...rest } = args;
91
+ const isVertical = orientation === 'vertical';
92
+
71
93
  return (
72
- <SliderWrapper>
73
- <Slider value={value} onChangeCommitted={onChangeCommittedHandle} onChange={onChangeHandle} {...args} />
94
+ <SliderWrapper isVertical={isVertical}>
95
+ <Slider
96
+ value={value}
97
+ orientation={orientation}
98
+ labelPlacement={labelPlacement}
99
+ labelContent={showIcon ? <IconMic size={rest.size === 's' ? 'xs' : 's'} /> : null}
100
+ onChangeCommitted={onChangeCommittedHandle}
101
+ onChange={onChangeHandle}
102
+ {...rest}
103
+ />
74
104
  </SliderWrapper>
75
105
  );
76
106
  };
77
107
 
78
108
  export const Default: StorySingle = {
79
109
  argTypes: {
110
+ sliderAlign: {
111
+ options: sliderAligns,
112
+ control: {
113
+ type: 'inline-radio',
114
+ },
115
+ if: { arg: 'orientation', eq: 'vertical' },
116
+ },
80
117
  labelPlacement: {
81
118
  options: labelPlacements,
82
119
  control: {
83
120
  type: 'inline-radio',
84
121
  },
122
+ if: { arg: 'orientation', eq: 'horizontal' },
123
+ },
124
+ labelReversed: {
125
+ control: {
126
+ type: 'boolean',
127
+ expanded: true,
128
+ },
129
+ if: { arg: 'orientation', eq: 'vertical' },
130
+ },
131
+ scaleAlign: {
132
+ options: scaleAligns,
133
+ control: {
134
+ type: 'inline-radio',
135
+ },
136
+ if: { arg: 'orientation', eq: 'horizontal' },
85
137
  },
86
- rangeValuesPlacement: {
87
- options: rangeValuesPlacement,
138
+ orientation: {
139
+ options: orientations,
88
140
  control: {
89
141
  type: 'inline-radio',
90
142
  },
91
143
  },
144
+ reversed: {
145
+ control: {
146
+ type: 'boolean',
147
+ },
148
+ if: { arg: 'orientation', eq: 'vertical' },
149
+ },
92
150
  },
93
151
  args: {
94
152
  view: 'default',
95
153
  size: 'm',
154
+ pointerSize: 'small',
96
155
  min: 0,
97
156
  max: 100,
98
- disabled: false,
99
- ariaLabel: 'Цена товара',
157
+ orientation: 'horizontal',
158
+ ariaLabel: 'Цена микрофона',
100
159
  multipleStepSize: 10,
101
- label: 'Цена товара',
102
- labelPlacement: 'outer',
103
- rangeValuesPlacement: 'outer',
104
- showRangeValues: true,
160
+ label: 'Цена микрофона',
161
+ labelPlacement: 'top',
162
+ sliderAlign: 'center',
163
+ scaleAlign: 'bottom',
164
+ showScale: true,
105
165
  showCurrentValue: false,
166
+ showIcon: true,
167
+ reversed: false,
168
+ labelReversed: false,
169
+ disabled: false,
106
170
  },
107
171
  render: (args) => <StoryDefault {...args} />,
108
172
  };
@@ -142,7 +206,7 @@ const StoryMultipleValues = (args: StoryProps) => {
142
206
  };
143
207
 
144
208
  return (
145
- <SliderWrapper>
209
+ <SliderWrapper isVertical={args.orientation === 'vertical'}>
146
210
  <Slider
147
211
  value={value}
148
212
  onKeyDownTextField={onKeyDownTextField}
@@ -159,6 +223,7 @@ export const MultipleValues: StoryDouble = {
159
223
  args: {
160
224
  view: 'default',
161
225
  size: 'm',
226
+ pointerSize: 'small',
162
227
  min: 0,
163
228
  max: 100,
164
229
  disabled: false,
@@ -166,5 +231,14 @@ export const MultipleValues: StoryDouble = {
166
231
  ariaLabel: ['Минимальная цена товара', 'Максимальная цена товара'],
167
232
  multipleStepSize: 10,
168
233
  },
234
+ argTypes: {
235
+ pointerSize: {
236
+ options: ['small', 'large'],
237
+ control: {
238
+ type: 'inline-radio',
239
+ },
240
+ },
241
+ ...disableProps(['orientation']),
242
+ },
169
243
  render: (args) => <StoryMultipleValues {...args} />,
170
244
  };
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useState } from 'react';
2
2
  import type { ComponentProps, ReactNode } from 'react';
3
3
  import type { StoryObj, Meta } from '@storybook/react';
4
4
  import { disableProps } from '@salutejs/plasma-sb-utils';
@@ -7,6 +7,8 @@ import { mergeConfig } from '../../../../engines';
7
7
  import { WithTheme, argTypesFromConfig } from '../../../_helpers';
8
8
  import { accordionConfig } from '../../../../components/Accordion';
9
9
  import { Pin } from '../../../../utils/roundness';
10
+ import { IconButton } from '../IconButton/IconButton';
11
+ import { IconPlus } from '../../../../components/_Icon';
10
12
 
11
13
  import { config } from './Accordion.config';
12
14
  import { Accordion, AccordionItem } from './Accordion';
@@ -91,3 +93,63 @@ export const Default: StoryObj<AccordionProps> = {
91
93
  );
92
94
  },
93
95
  };
96
+
97
+ const getSizeForIcon = (size) => (size === 'xs' ? 'xs' : 's');
98
+
99
+ const ControlledAccordion = (props: AccordionProps) => {
100
+ const args = { ...props, text: undefined };
101
+ const [activeFirst, setActiveFirst] = useState(false);
102
+ const [activeSecond, setActiveSecond] = useState(false);
103
+ const [activeThree, setActiveThree] = useState(false);
104
+
105
+ return (
106
+ <Accordion {...args}>
107
+ <AccordionItem
108
+ contentRight={
109
+ <IconButton view="secondary" size={args.size} onClick={() => setActiveFirst(!activeFirst)}>
110
+ <IconPlus size={getSizeForIcon(args.size)} />
111
+ </IconButton>
112
+ }
113
+ alignWithTitle={args.alignWithTitle}
114
+ type={args.type}
115
+ pin={args.pin}
116
+ title={args.title}
117
+ opened={activeFirst}
118
+ >
119
+ {args.body}
120
+ </AccordionItem>
121
+ <AccordionItem
122
+ contentRight={
123
+ <IconButton view="secondary" size={args.size} onClick={() => setActiveSecond(!activeSecond)}>
124
+ <IconPlus size={getSizeForIcon(args.size)} />
125
+ </IconButton>
126
+ }
127
+ alignWithTitle={args.alignWithTitle}
128
+ type={args.type}
129
+ pin={args.pin}
130
+ title={args.title}
131
+ opened={activeSecond}
132
+ >
133
+ {args.body}
134
+ </AccordionItem>
135
+ <AccordionItem
136
+ contentRight={
137
+ <IconButton view="secondary" size={args.size} onClick={() => setActiveThree(!activeThree)}>
138
+ <IconPlus size={getSizeForIcon(args.size)} />
139
+ </IconButton>
140
+ }
141
+ alignWithTitle={args.alignWithTitle}
142
+ type={args.type}
143
+ pin={args.pin}
144
+ title={args.title}
145
+ opened={activeThree}
146
+ >
147
+ {args.body}
148
+ </AccordionItem>
149
+ </Accordion>
150
+ );
151
+ };
152
+
153
+ export const Controlled: StoryObj<AccordionProps> = {
154
+ render: (props: AccordionProps) => ControlledAccordion(props),
155
+ };
@@ -18,9 +18,9 @@ var config = exports.config = {
18
18
  gradient: /*#__PURE__*/(0, _styledComponents.css)(["", ":var(--text-primary);", ":var(--text-secondary);", ":var(--surface-solid-tertiary);", ":var(--on-light-surface-solid-card);", ":var(--surface-accent-gradient);", ":var(--surface-solid-tertiary);", ":var(--surface-accent-gradient);", ":var(--text-secondary);", ":var(--surface-transparent-primary);", ":var(--text-primary);", ":var(--text-secondary);", ":var(--text-primary);", ":var(--text-primary);"], _Slider.sliderTokens.labelColor, _Slider.sliderTokens.rangeValueColor, _Slider.sliderTokens.thumbBorderColor, _Slider.sliderTokens.thumbBackgroundColor, _Slider.sliderTokens.thumbFocusBorderColor, _Slider.sliderTokens.railBackgroundColor, _Slider.sliderTokens.fillColor, _Slider.sliderTokens.textFieldColor, _Slider.sliderTokens.textFieldBackgroundColor, _Slider.sliderTokens.textFieldCaretColor, _Slider.sliderTokens.textFieldPlaceholderColor, _Slider.sliderTokens.textFiledFocusColor, _Slider.sliderTokens.textFieldActiveColor)
19
19
  },
20
20
  size: {
21
- l: /*#__PURE__*/(0, _styledComponents.css)(["", ":1.5rem;", ":0.375rem;", ":0.25rem;", ":0.25rem;", ":0.875rem;", ":var(--plasma-typo-body-l-font-family);", ":var(--plasma-typo-body-l-font-size);", ":var(--plasma-typo-body-l-font-style);", ":var(--plasma-typo-body-l-font-weight);", ":var(--plasma-typo-body-l-letter-spacing);", ":var(--plasma-typo-body-l-line-height);", ":0.75rem;", ":0.75rem;", ":-1.25rem;", ":var(--plasma-typo-body-s-font-family);", ":var(--plasma-typo-body-s-font-size);", ":var(--plasma-typo-body-s-font-style);", ":var(--plasma-typo-body-s-font-weight);", ":var(--plasma-typo-body-s-letter-spacing);", ":var(--plasma-typo-body-s-line-height);", ":1.5rem;", ":0.125rem solid;", ":1.625rem;", ":var(--plasma-typo-text-s-font-family);", ":var(--plasma-typo-text-s-font-size);", ":var(--plasma-typo-text-s-font-style);", ":var(--plasma-typo-text-s-font-weight);", ":var(--plasma-typo-text-s-letter-spacing);", ":var(--plasma-typo-text-s-line-height);", ":0.25rem;", ":0.125rem;", ":0.75rem;", ":0.125rem;", ":3.5rem;", ":1.25rem 1rem 1.25rem 1rem;", ":0.75rem;", ":var(--plasma-typo-body-l-font-family);", ":var(--plasma-typo-body-l-font-size);", ":var(--plasma-typo-body-l-font-style);", ":var(--plasma-typo-body-l-font-weight);", ":var(--plasma-typo-body-l-letter-spacing);", ":var(--plasma-typo-body-l-line-height);"], _Slider.sliderTokens.height, _Slider.sliderTokens.doubleWrapperGap, _Slider.sliderTokens.labelWrapperGap, _Slider.sliderTokens.labelWrapperMarginBottom, _Slider.sliderTokens.labelWrapperMarginRight, _Slider.sliderTokens.labelFontFamily, _Slider.sliderTokens.labelFontSize, _Slider.sliderTokens.labelFontStyle, _Slider.sliderTokens.labelFontWeight, _Slider.sliderTokens.labelLetterSpacing, _Slider.sliderTokens.labelLineHeight, _Slider.sliderTokens.rangeMinValueMargin, _Slider.sliderTokens.rangeMaxValueMargin, _Slider.sliderTokens.rangeValueBottomOffset, _Slider.sliderTokens.rangeValueFontFamily, _Slider.sliderTokens.rangeValueFontSize, _Slider.sliderTokens.rangeValueFontStyle, _Slider.sliderTokens.rangeValueFontWeight, _Slider.sliderTokens.rangeValueLetterSpacing, _Slider.sliderTokens.rangeValueLineHeight, _Slider.sliderTokens.thumbSize, _Slider.sliderTokens.thumbBorder, _Slider.sliderTokens.currentValueTopOffset, _Slider.sliderTokens.currentValueFontFamily, _Slider.sliderTokens.currentValueFontSize, _Slider.sliderTokens.currentValueFontStyle, _Slider.sliderTokens.currentValueFontWeight, _Slider.sliderTokens.currentValueLetterSpacing, _Slider.sliderTokens.currentValueLineHeight, _Slider.sliderTokens.railHeight, _Slider.sliderTokens.railBorderRadius, _Slider.sliderTokens.railIndent, _Slider.sliderTokens.textFieldWrapperGap, _Slider.sliderTokens.textFieldHeight, _Slider.sliderTokens.textFieldPadding, _Slider.sliderTokens.textFieldBorderRadius, _Slider.sliderTokens.textFieldFontFamily, _Slider.sliderTokens.textFieldFontSize, _Slider.sliderTokens.textFieldFontStyle, _Slider.sliderTokens.textFieldFontWeight, _Slider.sliderTokens.textFieldLetterSpacing, _Slider.sliderTokens.textFieldLineHeight),
22
- m: /*#__PURE__*/(0, _styledComponents.css)(["", ":1.5rem;", ":0.375rem;", ":0.25rem;", ":0.25rem;", ":0.875rem;", ":var(--plasma-typo-body-m-font-family);", ":var(--plasma-typo-body-m-font-size);", ":var(--plasma-typo-body-m-font-style);", ":var(--plasma-typo-body-m-font-weight);", ":var(--plasma-typo-body-m-letter-spacing);", ":var(--plasma-typo-body-m-line-height);", ":0.75rem;", ":0.75rem;", ":-1.25rem;", ":var(--plasma-typo-body-s-font-family);", ":var(--plasma-typo-body-s-font-size);", ":var(--plasma-typo-body-s-font-style);", ":var(--plasma-typo-body-s-font-weight);", ":var(--plasma-typo-body-s-letter-spacing);", ":var(--plasma-typo-body-s-line-height);", ":1.5rem;", ":0.125rem solid;", ":1.75rem;", ":var(--plasma-typo-text-xs-font-family);", ":var(--plasma-typo-text-xs-font-size);", ":var(--plasma-typo-text-xs-font-style);", ":var(--plasma-typo-text-xs-font-weight);", ":var(--plasma-typo-text-xs-letter-spacing);", ":var(--plasma-typo-text-xs-line-height);", ":0.25rem;", ":0.125rem;", ":0.75rem;", ":0.125rem;", ":3rem;", ":0.875rem 1rem 0.875rem 1rem;", ":0.75rem;", ":var(--plasma-typo-body-m-font-family);", ":var(--plasma-typo-body-m-font-size);", ":var(--plasma-typo-body-m-font-style);", ":var(--plasma-typo-body-m-font-weight);", ":var(--plasma-typo-body-m-letter-spacing);", ":var(--plasma-typo-body-m-line-height);"], _Slider.sliderTokens.height, _Slider.sliderTokens.doubleWrapperGap, _Slider.sliderTokens.labelWrapperGap, _Slider.sliderTokens.labelWrapperMarginBottom, _Slider.sliderTokens.labelWrapperMarginRight, _Slider.sliderTokens.labelFontFamily, _Slider.sliderTokens.labelFontSize, _Slider.sliderTokens.labelFontStyle, _Slider.sliderTokens.labelFontWeight, _Slider.sliderTokens.labelLetterSpacing, _Slider.sliderTokens.labelLineHeight, _Slider.sliderTokens.rangeMinValueMargin, _Slider.sliderTokens.rangeMaxValueMargin, _Slider.sliderTokens.rangeValueBottomOffset, _Slider.sliderTokens.rangeValueFontFamily, _Slider.sliderTokens.rangeValueFontSize, _Slider.sliderTokens.rangeValueFontStyle, _Slider.sliderTokens.rangeValueFontWeight, _Slider.sliderTokens.rangeValueLetterSpacing, _Slider.sliderTokens.rangeValueLineHeight, _Slider.sliderTokens.thumbSize, _Slider.sliderTokens.thumbBorder, _Slider.sliderTokens.currentValueTopOffset, _Slider.sliderTokens.currentValueFontFamily, _Slider.sliderTokens.currentValueFontSize, _Slider.sliderTokens.currentValueFontStyle, _Slider.sliderTokens.currentValueFontWeight, _Slider.sliderTokens.currentValueLetterSpacing, _Slider.sliderTokens.currentValueLineHeight, _Slider.sliderTokens.railHeight, _Slider.sliderTokens.railBorderRadius, _Slider.sliderTokens.railIndent, _Slider.sliderTokens.textFieldWrapperGap, _Slider.sliderTokens.textFieldHeight, _Slider.sliderTokens.textFieldPadding, _Slider.sliderTokens.textFieldBorderRadius, _Slider.sliderTokens.textFieldFontFamily, _Slider.sliderTokens.textFieldFontSize, _Slider.sliderTokens.textFieldFontStyle, _Slider.sliderTokens.textFieldFontWeight, _Slider.sliderTokens.textFieldLetterSpacing, _Slider.sliderTokens.textFieldLineHeight),
23
- s: /*#__PURE__*/(0, _styledComponents.css)(["", ":1rem;", ":0.375rem;", ":0.25rem;", ":0.25rem;", ":0.875rem;", ":var(--plasma-typo-body-s-font-family);", ":var(--plasma-typo-body-s-font-size);", ":var(--plasma-typo-body-s-font-style);", ":var(--plasma-typo-body-s-font-weight);", ":var(--plasma-typo-body-s-letter-spacing);", ":var(--plasma-typo-body-s-line-height);", ":0.5rem;", ":0.5rem;", ":-1.25rem;", ":var(--plasma-typo-body-xs-font-family);", ":var(--plasma-typo-body-xs-font-size);", ":var(--plasma-typo-body-xs-font-style);", ":var(--plasma-typo-body-xs-font-weight);", ":var(--plasma-typo-body-xs-letter-spacing);", ":var(--plasma-typo-body-xs-line-height);", ":1rem;", ":0.125rem solid;", ":1.25rem;", ":var(--plasma-typo-text-xs-font-family);", ":var(--plasma-typo-text-xs-font-size);", ":var(--plasma-typo-text-xs-font-style);", ":var(--plasma-typo-text-xs-font-weight);", ":var(--plasma-typo-text-xs-letter-spacing);", ":var(--plasma-typo-text-xs-line-height);", ":0.25rem;", ":0.125rem;", ":0.75rem;", ":0.125rem;", ":2.5rem;", ":0.5rem 1rem 0.5rem 1rem;", ":0.625rem;", ":var(--plasma-typo-body-s-font-family);", ":var(--plasma-typo-body-s-font-size);", ":var(--plasma-typo-body-s-font-style);", ":var(--plasma-typo-body-s-font-weight);", ":var(--plasma-typo-body-s-letter-spacing);", ":var(--plasma-typo-body-s-line-height);"], _Slider.sliderTokens.height, _Slider.sliderTokens.doubleWrapperGap, _Slider.sliderTokens.labelWrapperGap, _Slider.sliderTokens.labelWrapperMarginBottom, _Slider.sliderTokens.labelWrapperMarginRight, _Slider.sliderTokens.labelFontFamily, _Slider.sliderTokens.labelFontSize, _Slider.sliderTokens.labelFontStyle, _Slider.sliderTokens.labelFontWeight, _Slider.sliderTokens.labelLetterSpacing, _Slider.sliderTokens.labelLineHeight, _Slider.sliderTokens.rangeMinValueMargin, _Slider.sliderTokens.rangeMaxValueMargin, _Slider.sliderTokens.rangeValueBottomOffset, _Slider.sliderTokens.rangeValueFontFamily, _Slider.sliderTokens.rangeValueFontSize, _Slider.sliderTokens.rangeValueFontStyle, _Slider.sliderTokens.rangeValueFontWeight, _Slider.sliderTokens.rangeValueLetterSpacing, _Slider.sliderTokens.rangeValueLineHeight, _Slider.sliderTokens.thumbSize, _Slider.sliderTokens.thumbBorder, _Slider.sliderTokens.currentValueTopOffset, _Slider.sliderTokens.currentValueFontFamily, _Slider.sliderTokens.currentValueFontSize, _Slider.sliderTokens.currentValueFontStyle, _Slider.sliderTokens.currentValueFontWeight, _Slider.sliderTokens.currentValueLetterSpacing, _Slider.sliderTokens.currentValueLineHeight, _Slider.sliderTokens.railHeight, _Slider.sliderTokens.railBorderRadius, _Slider.sliderTokens.railIndent, _Slider.sliderTokens.textFieldWrapperGap, _Slider.sliderTokens.textFieldHeight, _Slider.sliderTokens.textFieldPadding, _Slider.sliderTokens.textFieldBorderRadius, _Slider.sliderTokens.textFieldFontFamily, _Slider.sliderTokens.textFieldFontSize, _Slider.sliderTokens.textFieldFontStyle, _Slider.sliderTokens.textFieldFontWeight, _Slider.sliderTokens.textFieldLetterSpacing, _Slider.sliderTokens.textFieldLineHeight)
21
+ l: /*#__PURE__*/(0, _styledComponents.css)(["", ":1.5rem;", ":0.375rem;", ":0.25rem;", ":0.25rem;", ":0.875rem;", ":1rem;", ":var(--plasma-typo-body-l-font-family);", ":var(--plasma-typo-body-l-font-size);", ":var(--plasma-typo-body-l-font-style);", ":var(--plasma-typo-body-l-font-weight);", ":var(--plasma-typo-body-l-letter-spacing);", ":var(--plasma-typo-body-l-line-height);", ":0.75rem;", ":0.875rem;", ":0.875rem;", ":0.75rem;", ":var(--plasma-typo-body-m-font-family);", ":var(--plasma-typo-body-m-font-size);", ":var(--plasma-typo-body-m-font-style);", ":var(--plasma-typo-body-m-font-weight);", ":var(--plasma-typo-body-m-letter-spacing);", ":var(--plasma-typo-body-m-line-height);", ":1rem;", ":1.25rem;", ":0.0625rem solid;", ":1.625rem;", ":0.25rem;", ":0.125rem;", ":0.75rem;", ":0.125rem;", ":3.5rem;", ":1.25rem 1rem 1.25rem 1rem;", ":0.75rem;", ":var(--plasma-typo-body-l-font-family);", ":var(--plasma-typo-body-l-font-size);", ":var(--plasma-typo-body-l-font-style);", ":var(--plasma-typo-body-l-font-weight);", ":var(--plasma-typo-body-l-letter-spacing);", ":var(--plasma-typo-body-l-line-height);"], _Slider.sliderTokens.size, _Slider.sliderTokens.doubleWrapperGap, _Slider.sliderTokens.labelWrapperGap, _Slider.sliderTokens.labelWrapperMarginBottom, _Slider.sliderTokens.labelWrapperMarginRight, _Slider.sliderTokens.labelWrapperVerticalMargin, _Slider.sliderTokens.labelFontFamily, _Slider.sliderTokens.labelFontSize, _Slider.sliderTokens.labelFontStyle, _Slider.sliderTokens.labelFontWeight, _Slider.sliderTokens.labelLetterSpacing, _Slider.sliderTokens.labelLineHeight, _Slider.sliderTokens.rangeValueHorizontalMargin, _Slider.sliderTokens.rangeValueBottomOffset, _Slider.sliderTokens.rangeValueLeftRightMargin, _Slider.sliderTokens.rangeValueVerticalMargin, _Slider.sliderTokens.valueFontFamily, _Slider.sliderTokens.valueFontSize, _Slider.sliderTokens.valueFontStyle, _Slider.sliderTokens.valueFontWeight, _Slider.sliderTokens.valueLetterSpacing, _Slider.sliderTokens.valueLineHeight, _Slider.sliderTokens.thumbSize, _Slider.sliderTokens.thumbSizeLarge, _Slider.sliderTokens.thumbBorder, _Slider.sliderTokens.currentValueTopOffset, _Slider.sliderTokens.railThickness, _Slider.sliderTokens.railBorderRadius, _Slider.sliderTokens.railIndent, _Slider.sliderTokens.textFieldWrapperGap, _Slider.sliderTokens.textFieldHeight, _Slider.sliderTokens.textFieldPadding, _Slider.sliderTokens.textFieldBorderRadius, _Slider.sliderTokens.textFieldFontFamily, _Slider.sliderTokens.textFieldFontSize, _Slider.sliderTokens.textFieldFontStyle, _Slider.sliderTokens.textFieldFontWeight, _Slider.sliderTokens.textFieldLetterSpacing, _Slider.sliderTokens.textFieldLineHeight),
22
+ m: /*#__PURE__*/(0, _styledComponents.css)(["", ":1.5rem;", ":0.375rem;", ":0.25rem;", ":0.25rem;", ":0.875rem;", ":0.75rem;", ":var(--plasma-typo-body-m-font-family);", ":var(--plasma-typo-body-m-font-size);", ":var(--plasma-typo-body-m-font-style);", ":var(--plasma-typo-body-m-font-weight);", ":var(--plasma-typo-body-m-letter-spacing);", ":var(--plasma-typo-body-m-line-height);", ":0.75rem;", ":0.75rem;", ":0.875rem;", ":0.625rem;", ":var(--plasma-typo-body-s-font-family);", ":var(--plasma-typo-body-s-font-size);", ":var(--plasma-typo-body-s-font-style);", ":var(--plasma-typo-body-s-font-weight);", ":var(--plasma-typo-body-s-letter-spacing);", ":var(--plasma-typo-body-s-line-height);", ":1rem;", ":1.25rem;", ":0.0625rem solid;", ":1.75rem;", ":0.25rem;", ":0.125rem;", ":0.75rem;", ":0.125rem;", ":3rem;", ":0.875rem 1rem 0.875rem 1rem;", ":0.75rem;", ":var(--plasma-typo-body-m-font-family);", ":var(--plasma-typo-body-m-font-size);", ":var(--plasma-typo-body-m-font-style);", ":var(--plasma-typo-body-m-font-weight);", ":var(--plasma-typo-body-m-letter-spacing);", ":var(--plasma-typo-body-m-line-height);"], _Slider.sliderTokens.size, _Slider.sliderTokens.doubleWrapperGap, _Slider.sliderTokens.labelWrapperGap, _Slider.sliderTokens.labelWrapperMarginBottom, _Slider.sliderTokens.labelWrapperMarginRight, _Slider.sliderTokens.labelWrapperVerticalMargin, _Slider.sliderTokens.labelFontFamily, _Slider.sliderTokens.labelFontSize, _Slider.sliderTokens.labelFontStyle, _Slider.sliderTokens.labelFontWeight, _Slider.sliderTokens.labelLetterSpacing, _Slider.sliderTokens.labelLineHeight, _Slider.sliderTokens.rangeValueHorizontalMargin, _Slider.sliderTokens.rangeValueBottomOffset, _Slider.sliderTokens.rangeValueLeftRightMargin, _Slider.sliderTokens.rangeValueVerticalMargin, _Slider.sliderTokens.valueFontFamily, _Slider.sliderTokens.valueFontSize, _Slider.sliderTokens.valueFontStyle, _Slider.sliderTokens.valueFontWeight, _Slider.sliderTokens.valueLetterSpacing, _Slider.sliderTokens.valueLineHeight, _Slider.sliderTokens.thumbSize, _Slider.sliderTokens.thumbSizeLarge, _Slider.sliderTokens.thumbBorder, _Slider.sliderTokens.currentValueTopOffset, _Slider.sliderTokens.railThickness, _Slider.sliderTokens.railBorderRadius, _Slider.sliderTokens.railIndent, _Slider.sliderTokens.textFieldWrapperGap, _Slider.sliderTokens.textFieldHeight, _Slider.sliderTokens.textFieldPadding, _Slider.sliderTokens.textFieldBorderRadius, _Slider.sliderTokens.textFieldFontFamily, _Slider.sliderTokens.textFieldFontSize, _Slider.sliderTokens.textFieldFontStyle, _Slider.sliderTokens.textFieldFontWeight, _Slider.sliderTokens.textFieldLetterSpacing, _Slider.sliderTokens.textFieldLineHeight),
23
+ s: /*#__PURE__*/(0, _styledComponents.css)(["", ":1rem;", ":0.375rem;", ":0.25rem;", ":0.25rem;", ":0.875rem;", ":0.625rem;", ":var(--plasma-typo-body-s-font-family);", ":var(--plasma-typo-body-s-font-size);", ":var(--plasma-typo-body-s-font-style);", ":var(--plasma-typo-body-s-font-weight);", ":var(--plasma-typo-body-s-letter-spacing);", ":var(--plasma-typo-body-s-line-height);", ":0.5rem;", ":0.625rem;", ":0.625rem;", ":0.5rem;", ":var(--plasma-typo-body-xs-font-family);", ":var(--plasma-typo-body-xs-font-size);", ":var(--plasma-typo-body-xs-font-style);", ":var(--plasma-typo-body-xs-font-weight);", ":var(--plasma-typo-body-xs-letter-spacing);", ":var(--plasma-typo-body-xs-line-height);", ":1rem;", ":1.25rem;", ":0.0625rem solid;", ":1.25rem;", ":0.25rem;", ":0.125rem;", ":0.75rem;", ":0.125rem;", ":2.5rem;", ":0.5rem 1rem 0.5rem 1rem;", ":0.625rem;", ":var(--plasma-typo-body-s-font-family);", ":var(--plasma-typo-body-s-font-size);", ":var(--plasma-typo-body-s-font-style);", ":var(--plasma-typo-body-s-font-weight);", ":var(--plasma-typo-body-s-letter-spacing);", ":var(--plasma-typo-body-s-line-height);"], _Slider.sliderTokens.size, _Slider.sliderTokens.doubleWrapperGap, _Slider.sliderTokens.labelWrapperGap, _Slider.sliderTokens.labelWrapperMarginBottom, _Slider.sliderTokens.labelWrapperMarginRight, _Slider.sliderTokens.labelWrapperVerticalMargin, _Slider.sliderTokens.labelFontFamily, _Slider.sliderTokens.labelFontSize, _Slider.sliderTokens.labelFontStyle, _Slider.sliderTokens.labelFontWeight, _Slider.sliderTokens.labelLetterSpacing, _Slider.sliderTokens.labelLineHeight, _Slider.sliderTokens.rangeValueHorizontalMargin, _Slider.sliderTokens.rangeValueBottomOffset, _Slider.sliderTokens.rangeValueLeftRightMargin, _Slider.sliderTokens.rangeValueVerticalMargin, _Slider.sliderTokens.valueFontFamily, _Slider.sliderTokens.valueFontSize, _Slider.sliderTokens.valueFontStyle, _Slider.sliderTokens.valueFontWeight, _Slider.sliderTokens.valueLetterSpacing, _Slider.sliderTokens.valueLineHeight, _Slider.sliderTokens.thumbSize, _Slider.sliderTokens.thumbSizeLarge, _Slider.sliderTokens.thumbBorder, _Slider.sliderTokens.currentValueTopOffset, _Slider.sliderTokens.railThickness, _Slider.sliderTokens.railBorderRadius, _Slider.sliderTokens.railIndent, _Slider.sliderTokens.textFieldWrapperGap, _Slider.sliderTokens.textFieldHeight, _Slider.sliderTokens.textFieldPadding, _Slider.sliderTokens.textFieldBorderRadius, _Slider.sliderTokens.textFieldFontFamily, _Slider.sliderTokens.textFieldFontSize, _Slider.sliderTokens.textFieldFontStyle, _Slider.sliderTokens.textFieldFontWeight, _Slider.sliderTokens.textFieldLetterSpacing, _Slider.sliderTokens.textFieldLineHeight)
24
24
  },
25
25
  disabled: {
26
26
  "true": /*#__PURE__*/(0, _styledComponents.css)(["", ":0.4;"], _Slider.sliderTokens.disabledOpacity)
@@ -4,14 +4,18 @@ import styled from 'styled-components';
4
4
  import { disableProps } from '@salutejs/plasma-sb-utils';
5
5
  import type { StoryObj, Meta } from '@storybook/react';
6
6
 
7
+ import { IconMic } from '../../../../components/_Icon';
7
8
  import { WithTheme } from '../../../_helpers';
8
9
 
9
10
  import { Slider } from './Slider';
10
11
 
11
12
  const sizes = ['l', 'm', 's'];
13
+ const pointerSizes = ['small', 'large', 'none'];
12
14
  const views = ['default', 'accent', 'gradient'];
13
- const labelPlacements = ['outer', 'inner'];
14
- const rangeValuesPlacement = ['outer', 'inner'];
15
+ const sliderAligns = ['center', 'left', 'right', 'none'];
16
+ const labelPlacements = ['top', 'left'];
17
+ const scaleAligns = ['side', 'bottom'];
18
+ const orientations: Array<string> = ['vertical', 'horizontal'];
15
19
 
16
20
  const meta: Meta<typeof Slider> = {
17
21
  title: 'plasma_web/Slider',
@@ -30,9 +34,24 @@ const meta: Meta<typeof Slider> = {
30
34
  type: 'inline-radio',
31
35
  },
32
36
  },
37
+ pointerSize: {
38
+ options: pointerSizes,
39
+ control: {
40
+ type: 'inline-radio',
41
+ },
42
+ },
43
+ orientation: {
44
+ options: orientations,
45
+ control: {
46
+ type: 'select',
47
+ },
48
+ },
33
49
  ...disableProps([
34
50
  'value',
35
51
  'onChangeCommitted',
52
+ 'onChangeTextField',
53
+ 'onBlurTextField',
54
+ 'onKeyDownTextField',
36
55
  'ariaLabel',
37
56
  'onChange',
38
57
  'fontSizeMultiplier',
@@ -52,8 +71,9 @@ type StorySingleProps = StoryProps;
52
71
  type StorySingle = StoryObj<StorySingleProps>;
53
72
  type StoryDouble = StoryObj<StoryProps>;
54
73
 
55
- const SliderWrapper = styled.div`
56
- width: 25rem;
74
+ const SliderWrapper = styled.div<{ isVertical?: boolean }>`
75
+ width: ${({ isVertical }) => (isVertical ? 'auto' : '25rem')};
76
+ height: ${({ isVertical }) => (isVertical ? '25rem' : 'auto')};
57
77
  `;
58
78
 
59
79
  const StoryDefault = (args: StorySingleProps) => {
@@ -67,41 +87,86 @@ const StoryDefault = (args: StorySingleProps) => {
67
87
  setValue(values);
68
88
  };
69
89
 
90
+ const { hasIcon, showIcon, orientation, labelPlacement, labelVerticalPlacement, ...rest } = args;
91
+ const isVertical = orientation === 'vertical';
92
+
70
93
  return (
71
- <SliderWrapper>
72
- <Slider value={value} onChangeCommitted={onChangeCommittedHandle} onChange={onChangeHandle} {...args} />
94
+ <SliderWrapper isVertical={isVertical}>
95
+ <Slider
96
+ value={value}
97
+ orientation={orientation}
98
+ labelPlacement={labelPlacement}
99
+ labelContent={showIcon ? <IconMic size={rest.size === 's' ? 'xs' : 's'} /> : null}
100
+ onChangeCommitted={onChangeCommittedHandle}
101
+ onChange={onChangeHandle}
102
+ {...rest}
103
+ />
73
104
  </SliderWrapper>
74
105
  );
75
106
  };
76
107
 
77
108
  export const Default: StorySingle = {
78
109
  argTypes: {
110
+ sliderAlign: {
111
+ options: sliderAligns,
112
+ control: {
113
+ type: 'inline-radio',
114
+ },
115
+ if: { arg: 'orientation', eq: 'vertical' },
116
+ },
79
117
  labelPlacement: {
80
118
  options: labelPlacements,
81
119
  control: {
82
120
  type: 'inline-radio',
83
121
  },
122
+ if: { arg: 'orientation', eq: 'horizontal' },
123
+ },
124
+ labelReversed: {
125
+ control: {
126
+ type: 'boolean',
127
+ expanded: true,
128
+ },
129
+ if: { arg: 'orientation', eq: 'vertical' },
130
+ },
131
+ scaleAlign: {
132
+ options: scaleAligns,
133
+ control: {
134
+ type: 'inline-radio',
135
+ },
136
+ if: { arg: 'orientation', eq: 'horizontal' },
84
137
  },
85
- rangeValuesPlacement: {
86
- options: rangeValuesPlacement,
138
+ orientation: {
139
+ options: orientations,
87
140
  control: {
88
141
  type: 'inline-radio',
89
142
  },
90
143
  },
144
+ reversed: {
145
+ control: {
146
+ type: 'boolean',
147
+ },
148
+ if: { arg: 'orientation', eq: 'vertical' },
149
+ },
91
150
  },
92
151
  args: {
93
152
  view: 'default',
94
153
  size: 'm',
154
+ pointerSize: 'small',
95
155
  min: 0,
96
156
  max: 100,
97
- disabled: false,
98
- ariaLabel: 'Цена товара',
157
+ orientation: 'horizontal',
158
+ ariaLabel: 'Цена микрофона',
99
159
  multipleStepSize: 10,
100
- label: 'Цена товара',
101
- labelPlacement: 'outer',
102
- rangeValuesPlacement: 'outer',
103
- showRangeValues: true,
160
+ label: 'Цена микрофона',
161
+ labelPlacement: 'top',
162
+ sliderAlign: 'center',
163
+ scaleAlign: 'bottom',
164
+ showScale: true,
104
165
  showCurrentValue: false,
166
+ showIcon: true,
167
+ reversed: false,
168
+ labelReversed: false,
169
+ disabled: false,
105
170
  },
106
171
  render: (args) => <StoryDefault {...args} />,
107
172
  };
@@ -141,7 +206,7 @@ const StoryMultipleValues = (args: StoryProps) => {
141
206
  };
142
207
 
143
208
  return (
144
- <SliderWrapper>
209
+ <SliderWrapper isVertical={args.orientation === 'vertical'}>
145
210
  <Slider
146
211
  value={value}
147
212
  onKeyDownTextField={onKeyDownTextField}
@@ -158,6 +223,7 @@ export const MultipleValues: StoryDouble = {
158
223
  args: {
159
224
  view: 'default',
160
225
  size: 'm',
226
+ pointerSize: 'small',
161
227
  min: 0,
162
228
  max: 100,
163
229
  disabled: false,
@@ -165,5 +231,14 @@ export const MultipleValues: StoryDouble = {
165
231
  ariaLabel: ['Минимальная цена товара', 'Максимальная цена товара'],
166
232
  multipleStepSize: 10,
167
233
  },
234
+ argTypes: {
235
+ pointerSize: {
236
+ options: ['small', 'large'],
237
+ control: {
238
+ type: 'inline-radio',
239
+ },
240
+ },
241
+ ...disableProps(['orientation']),
242
+ },
168
243
  render: (args) => <StoryMultipleValues {...args} />,
169
244
  };
@@ -135,6 +135,38 @@ import TabItem from '@theme/TabItem';
135
135
  </TabItem>
136
136
  </Tabs>
137
137
 
138
+ ### Использование Accordion в Controlled варианте
139
+
140
+ ```tsx live
141
+ import React, { useState } from 'react';
142
+ import { Accordion, AccordionItem, IconButton } from '@salutejs/{{ package }}';
143
+ import { IconPlus } from '@salutejs/plasma-icons';
144
+
145
+ export function App() {
146
+ const [activeFirst, setActiveFirst] = useState(false);
147
+ const [activeSecond, setActiveSecond] = useState(false);
148
+ const [activeThree, setActiveThree] = useState(false);
149
+
150
+ const contentRight = (active, setActive) => {
151
+ return (
152
+ <IconButton view="secondary" size="s" onClick={() => setActive(!active)}>
153
+ <IconPlus size="xs" />
154
+ </IconButton>
155
+ )
156
+ }
157
+
158
+ return (
159
+ <div>
160
+ <Accordion size="s" singleActive={true}>
161
+ <AccordionItem opened={activeFirst} contentRight={contentRight(activeFirst, setActiveFirst)} type="arrow" title="Как оплатить заправку бонусами СберСпасибо?">После указания деталей заправки нажмите кнопку «К оплате». Откроется окно оплаты, где вы сможете списать бонусы и оплатить ими до 99% стоимости топлива</AccordionItem>
162
+ <AccordionItem opened={activeSecond} contentRight={contentRight(activeSecond, setActiveSecond)} type="arrow" title="Как оплатить заправку бонусами СберСпасибо?">После указания деталей заправки нажмите кнопку «К оплате». Откроется окно оплаты, где вы сможете списать бонусы и оплатить ими до 99% стоимости топлива</AccordionItem>
163
+ <AccordionItem opened={activeThree} contentRight={contentRight(activeThree, setActiveThree)} type="arrow" title="Как оплатить заправку бонусами СберСпасибо?">После указания деталей заправки нажмите кнопку «К оплате». Откроется окно оплаты, где вы сможете списать бонусы и оплатить ими до 99% стоимости топлива</AccordionItem>
164
+ </Accordion>
165
+ </div>
166
+ );
167
+ }
168
+ ```
169
+
138
170
  ### Использование Accordion SingleActive
139
171
 
140
172
  ```tsx live
@@ -11,12 +11,12 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
11
11
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
12
12
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
13
13
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
- import React, { useState, useRef, useEffect } from 'react';
14
+ import React, { useState, useRef, forwardRef, useEffect } from 'react';
15
15
  import { convertRoundnessMatrix } from '../../../../utils/roundness';
16
16
  import { classes, tokens } from '../../Accordion.tokens';
17
17
  import { cx } from '../../../../utils';
18
18
  import { StyledAccordionItem, StyledAccordionHeader, StyledAccordionBody, StyledAccordionTitle, StyledAccordionContentLeft, StyledAccordionHeaderLeft, StyledAccordionContentRight, StyledArrow, StyledMinus, StyledPlus, StyledAccordionBodyAnimate } from './AccordionItem.styles';
19
- export var AccordionItem = function AccordionItem(_ref) {
19
+ export var AccordionItem = /*#__PURE__*/forwardRef(function (_ref, outerRef) {
20
20
  var _ref2;
21
21
  var value = _ref.value,
22
22
  contentRight = _ref.contentRight,
@@ -34,8 +34,10 @@ export var AccordionItem = function AccordionItem(_ref) {
34
34
  disabled = _ref.disabled,
35
35
  _ref$alignWithTitle = _ref.alignWithTitle,
36
36
  alignWithTitle = _ref$alignWithTitle === void 0 ? true : _ref$alignWithTitle,
37
+ opened = _ref.opened,
37
38
  view = _ref.view,
38
- onChange = _ref.onChange;
39
+ onChange = _ref.onChange,
40
+ onClick = _ref.onClick;
39
41
  var key = (_ref2 = eventKey !== null && eventKey !== void 0 ? eventKey : index) !== null && _ref2 !== void 0 ? _ref2 : 0;
40
42
  var _useState = useState(),
41
43
  _useState2 = _slicedToArray(_useState, 2),
@@ -48,6 +50,9 @@ export var AccordionItem = function AccordionItem(_ref) {
48
50
  if (onChange) {
49
51
  onChange(key, !value);
50
52
  }
53
+ if (onClick) {
54
+ onClick(key, !value);
55
+ }
51
56
  };
52
57
  var leftContentRef = useRef(null);
53
58
  useEffect(function () {
@@ -56,11 +61,11 @@ export var AccordionItem = function AccordionItem(_ref) {
56
61
  var leftPaddingBody = leftContentWidth && (alignWithTitle || view === 'clear') ? "calc(".concat(leftContentWidth, "px + var(").concat(tokens.accordionItemGap, "))") : 0;
57
62
  setLeftPadding(leftPaddingBody);
58
63
  }, [value, type, leftContentRef, setLeftPadding]);
59
- var openedBodyClass = value ? classes.accordionItemShowBody : undefined;
60
- var StyledAnimationPLus = function StyledAnimationPLus() {
64
+ var openedBodyClass = (opened !== null && opened !== void 0 ? opened : value) ? classes.accordionItemShowBody : undefined;
65
+ var StyledAnimationPlus = function StyledAnimationPlus() {
61
66
  return /*#__PURE__*/React.createElement(StyledPlus, null, _StyledMinus || (_StyledMinus = /*#__PURE__*/React.createElement(StyledMinus, {
62
67
  size: "xs",
63
- color: "inhert"
68
+ color: "inherit"
64
69
  })), /*#__PURE__*/React.createElement(StyledMinus, {
65
70
  size: "xs",
66
71
  color: "inhert",
@@ -71,14 +76,15 @@ export var AccordionItem = function AccordionItem(_ref) {
71
76
  var disabledClass = disabled ? classes.accordionDisabled : '';
72
77
  var leftContent = contentLeft !== null && contentLeft !== void 0 ? contentLeft : type === 'arrow' ? _StyledArrow || (_StyledArrow = /*#__PURE__*/React.createElement(StyledArrow, {
73
78
  size: "xs",
74
- color: "inhert"
79
+ color: "inherit"
75
80
  })) : undefined;
76
- var leftContentRotate = type === 'arrow' && value ? classes.accordionItemShowBody : undefined;
77
- var rightContent = contentRight !== null && contentRight !== void 0 ? contentRight : type === 'sign' ? /*#__PURE__*/React.createElement(StyledAnimationPLus, null) : undefined;
78
- var rightContentRotate = type === 'sign' && value ? classes.accordionItemShowBody : undefined;
81
+ var leftContentRotate = type === 'arrow' && (opened !== null && opened !== void 0 ? opened : value) ? classes.accordionItemShowBody : undefined;
82
+ var rightContent = contentRight !== null && contentRight !== void 0 ? contentRight : type === 'sign' ? /*#__PURE__*/React.createElement(StyledAnimationPlus, null) : undefined;
83
+ var rightContentRotate = type === 'sign' && (opened !== null && opened !== void 0 ? opened : value) ? classes.accordionItemShowBody : undefined;
79
84
  return /*#__PURE__*/React.createElement(StyledAccordionItem, {
80
85
  className: cx(classes.accordionItem, className, disabledClass),
81
86
  key: key,
87
+ ref: outerRef,
82
88
  style: _objectSpread({
83
89
  borderRadius: accordionBorderRadius
84
90
  }, style)
@@ -86,17 +92,17 @@ export var AccordionItem = function AccordionItem(_ref) {
86
92
  role: "tab",
87
93
  tabIndex: 0,
88
94
  onClick: handleOpen,
89
- "aria-expanded": value,
95
+ "aria-expanded": opened !== null && opened !== void 0 ? opened : value,
90
96
  "aria-controls": "accordion-item-section".concat(key),
91
97
  id: "accordion-item-".concat(key)
92
98
  }, /*#__PURE__*/React.createElement(StyledAccordionHeaderLeft, null, leftContent && /*#__PURE__*/React.createElement(StyledAccordionContentLeft, {
93
99
  ref: leftContentRef,
94
100
  className: leftContentRotate
95
- }, leftContent), /*#__PURE__*/React.createElement(StyledAccordionTitle, null, title)), /*#__PURE__*/React.createElement(StyledAccordionContentRight, {
101
+ }, leftContent), /*#__PURE__*/React.createElement(StyledAccordionTitle, null, title)), contentRight || /*#__PURE__*/React.createElement(StyledAccordionContentRight, {
96
102
  className: rightContentRotate
97
103
  }, rightContent && rightContent)), /*#__PURE__*/React.createElement(StyledAccordionBodyAnimate, {
98
104
  "aria-labelledby": "accordion-item-".concat(key),
99
- "aria-hidden": !value,
105
+ "aria-hidden": !(opened !== null && opened !== void 0 ? opened : value),
100
106
  id: "accordion-item-section".concat(key),
101
107
  className: cx(openedBodyClass),
102
108
  style: {
@@ -105,4 +111,4 @@ export var AccordionItem = function AccordionItem(_ref) {
105
111
  }, /*#__PURE__*/React.createElement(StyledAccordionBody, {
106
112
  className: classes.accordionItemBody
107
113
  }, children)));
108
- };
114
+ });