@salutejs/plasma-new-hope 0.153.0-dev.0 → 0.154.0-canary.1421.11039037651.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (199) hide show
  1. package/cjs/components/Button/Button.js +0 -1
  2. package/cjs/components/Button/Button.js.map +1 -1
  3. package/cjs/components/DatePicker/RangeDate/RangeDate.js +42 -2
  4. package/cjs/components/DatePicker/RangeDate/RangeDate.js.map +1 -1
  5. package/cjs/components/DatePicker/SingleDate/SingleDate.js +31 -3
  6. package/cjs/components/DatePicker/SingleDate/SingleDate.js.map +1 -1
  7. package/cjs/components/DatePicker/hooks/useDatePicker.js +34 -1
  8. package/cjs/components/DatePicker/hooks/useDatePicker.js.map +1 -1
  9. package/cjs/components/DatePicker/utils/setInitValue.js +12 -0
  10. package/cjs/components/DatePicker/utils/setInitValue.js.map +1 -0
  11. package/cjs/components/Slider/Slider.js +20 -6
  12. package/cjs/components/Slider/Slider.js.map +1 -1
  13. package/cjs/components/Slider/components/Double/Double.js +40 -2
  14. package/cjs/components/Slider/components/Double/Double.js.map +1 -1
  15. package/cjs/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.js +100 -0
  16. package/cjs/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.js.map +1 -0
  17. package/cjs/components/Slider/components/Single/Single.js +51 -13
  18. package/cjs/components/Slider/components/Single/Single.js.map +1 -1
  19. package/cjs/components/Slider/utils/index.js +6 -0
  20. package/cjs/components/Slider/utils/index.js.map +1 -1
  21. package/cjs/components/TextArea/TextArea.js +3 -2
  22. package/cjs/components/TextArea/TextArea.js.map +1 -1
  23. package/cjs/hooks/useForm.js +131 -0
  24. package/cjs/hooks/useForm.js.map +1 -0
  25. package/cjs/index.js +5 -0
  26. package/cjs/index.js.map +1 -1
  27. package/cjs/utils/index.js.map +1 -1
  28. package/cjs/utils/inputHidden.js +12 -0
  29. package/cjs/utils/inputHidden.js.map +1 -0
  30. package/cjs/utils/setRefList.js +28 -0
  31. package/cjs/utils/setRefList.js.map +1 -0
  32. package/emotion/cjs/components/Button/Button.js +0 -1
  33. package/emotion/cjs/components/DatePicker/RangeDate/RangeDate.js +42 -2
  34. package/emotion/cjs/components/DatePicker/SingleDate/SingleDate.js +31 -3
  35. package/emotion/cjs/components/DatePicker/hooks/useDatePicker.js +34 -1
  36. package/emotion/cjs/components/DatePicker/utils/setInitValue.js +11 -0
  37. package/emotion/cjs/components/Slider/Slider.js +15 -6
  38. package/emotion/cjs/components/Slider/components/Double/Double.js +40 -2
  39. package/emotion/cjs/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.js +103 -0
  40. package/emotion/cjs/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.types.js +5 -0
  41. package/emotion/cjs/components/Slider/components/Single/Single.js +46 -8
  42. package/emotion/cjs/components/Slider/components/index.js +11 -0
  43. package/emotion/cjs/components/Slider/utils/index.js +6 -1
  44. package/emotion/cjs/components/TextArea/TextArea.js +3 -3
  45. package/emotion/cjs/examples/plasma_b2c/components/Form/Form.stories.tsx +256 -0
  46. package/emotion/cjs/examples/plasma_web/components/Form/Form.stories.tsx +237 -0
  47. package/emotion/cjs/hooks/index.js +8 -1
  48. package/emotion/cjs/hooks/useForm.js +137 -0
  49. package/emotion/cjs/types/FormType.js +5 -0
  50. package/emotion/cjs/utils/index.js +15 -0
  51. package/emotion/cjs/utils/inputHidden.js +11 -0
  52. package/emotion/cjs/utils/setRefList.js +27 -0
  53. package/emotion/es/components/Button/Button.js +0 -1
  54. package/emotion/es/components/DatePicker/RangeDate/RangeDate.js +42 -2
  55. package/emotion/es/components/DatePicker/SingleDate/SingleDate.js +31 -3
  56. package/emotion/es/components/DatePicker/hooks/useDatePicker.js +34 -1
  57. package/emotion/es/components/DatePicker/utils/setInitValue.js +5 -0
  58. package/emotion/es/components/Slider/Slider.js +16 -6
  59. package/emotion/es/components/Slider/components/Double/Double.js +41 -3
  60. package/emotion/es/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.js +94 -0
  61. package/emotion/es/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.types.js +1 -0
  62. package/emotion/es/components/Slider/components/Single/Single.js +47 -9
  63. package/emotion/es/components/Slider/components/index.js +1 -0
  64. package/emotion/es/components/Slider/utils/index.js +5 -0
  65. package/emotion/es/components/TextArea/TextArea.js +4 -4
  66. package/emotion/es/examples/plasma_b2c/components/Form/Form.stories.tsx +256 -0
  67. package/emotion/es/examples/plasma_web/components/Form/Form.stories.tsx +237 -0
  68. package/emotion/es/hooks/index.js +2 -1
  69. package/emotion/es/hooks/useForm.js +128 -0
  70. package/emotion/es/types/FormType.js +1 -0
  71. package/emotion/es/utils/index.js +1 -0
  72. package/emotion/es/utils/inputHidden.js +4 -0
  73. package/emotion/es/utils/setRefList.js +20 -0
  74. package/es/components/Button/Button.js +0 -1
  75. package/es/components/Button/Button.js.map +1 -1
  76. package/es/components/DatePicker/RangeDate/RangeDate.js +42 -2
  77. package/es/components/DatePicker/RangeDate/RangeDate.js.map +1 -1
  78. package/es/components/DatePicker/SingleDate/SingleDate.js +31 -3
  79. package/es/components/DatePicker/SingleDate/SingleDate.js.map +1 -1
  80. package/es/components/DatePicker/hooks/useDatePicker.js +34 -1
  81. package/es/components/DatePicker/hooks/useDatePicker.js.map +1 -1
  82. package/es/components/DatePicker/utils/setInitValue.js +8 -0
  83. package/es/components/DatePicker/utils/setInitValue.js.map +1 -0
  84. package/es/components/Slider/Slider.js +21 -7
  85. package/es/components/Slider/Slider.js.map +1 -1
  86. package/es/components/Slider/components/Double/Double.js +41 -3
  87. package/es/components/Slider/components/Double/Double.js.map +1 -1
  88. package/es/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.js +96 -0
  89. package/es/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.js.map +1 -0
  90. package/es/components/Slider/components/Single/Single.js +47 -9
  91. package/es/components/Slider/components/Single/Single.js.map +1 -1
  92. package/es/components/Slider/utils/index.js +6 -1
  93. package/es/components/Slider/utils/index.js.map +1 -1
  94. package/es/components/TextArea/TextArea.js +3 -2
  95. package/es/components/TextArea/TextArea.js.map +1 -1
  96. package/es/hooks/useForm.js +127 -0
  97. package/es/hooks/useForm.js.map +1 -0
  98. package/es/index.js +2 -0
  99. package/es/index.js.map +1 -1
  100. package/es/utils/index.js.map +1 -1
  101. package/es/utils/inputHidden.js +8 -0
  102. package/es/utils/inputHidden.js.map +1 -0
  103. package/es/utils/setRefList.js +23 -0
  104. package/es/utils/setRefList.js.map +1 -0
  105. package/package.json +3 -2
  106. package/styled-components/cjs/components/Button/Button.js +0 -1
  107. package/styled-components/cjs/components/DatePicker/RangeDate/RangeDate.js +42 -2
  108. package/styled-components/cjs/components/DatePicker/SingleDate/SingleDate.js +31 -3
  109. package/styled-components/cjs/components/DatePicker/hooks/useDatePicker.js +34 -1
  110. package/styled-components/cjs/components/DatePicker/utils/setInitValue.js +11 -0
  111. package/styled-components/cjs/components/Slider/Slider.js +15 -6
  112. package/styled-components/cjs/components/Slider/components/Double/Double.js +40 -2
  113. package/styled-components/cjs/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.js +103 -0
  114. package/styled-components/cjs/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.types.js +5 -0
  115. package/styled-components/cjs/components/Slider/components/Single/Single.js +46 -8
  116. package/styled-components/cjs/components/Slider/components/index.js +11 -0
  117. package/styled-components/cjs/components/Slider/utils/index.js +6 -1
  118. package/styled-components/cjs/components/TextArea/TextArea.js +2 -2
  119. package/styled-components/cjs/examples/plasma_b2c/components/Form/Form.stories.tsx +256 -0
  120. package/styled-components/cjs/examples/plasma_web/components/Form/Form.stories.tsx +237 -0
  121. package/styled-components/cjs/hooks/index.js +8 -1
  122. package/styled-components/cjs/hooks/useForm.js +137 -0
  123. package/styled-components/cjs/types/FormType.js +5 -0
  124. package/styled-components/cjs/utils/index.js +15 -0
  125. package/styled-components/cjs/utils/inputHidden.js +11 -0
  126. package/styled-components/cjs/utils/setRefList.js +27 -0
  127. package/styled-components/es/components/Button/Button.js +0 -1
  128. package/styled-components/es/components/DatePicker/RangeDate/RangeDate.js +42 -2
  129. package/styled-components/es/components/DatePicker/SingleDate/SingleDate.js +31 -3
  130. package/styled-components/es/components/DatePicker/hooks/useDatePicker.js +34 -1
  131. package/styled-components/es/components/DatePicker/utils/setInitValue.js +5 -0
  132. package/styled-components/es/components/Slider/Slider.js +16 -6
  133. package/styled-components/es/components/Slider/components/Double/Double.js +41 -3
  134. package/styled-components/es/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.js +94 -0
  135. package/styled-components/es/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.types.js +1 -0
  136. package/styled-components/es/components/Slider/components/Single/Single.js +47 -9
  137. package/styled-components/es/components/Slider/components/index.js +1 -0
  138. package/styled-components/es/components/Slider/utils/index.js +5 -0
  139. package/styled-components/es/components/TextArea/TextArea.js +3 -3
  140. package/styled-components/es/examples/plasma_b2c/components/Form/Form.stories.tsx +256 -0
  141. package/styled-components/es/examples/plasma_web/components/Form/Form.stories.tsx +237 -0
  142. package/styled-components/es/hooks/index.js +2 -1
  143. package/styled-components/es/hooks/useForm.js +128 -0
  144. package/styled-components/es/types/FormType.js +1 -0
  145. package/styled-components/es/utils/index.js +1 -0
  146. package/styled-components/es/utils/inputHidden.js +4 -0
  147. package/styled-components/es/utils/setRefList.js +20 -0
  148. package/types/components/Button/Button.d.ts.map +1 -1
  149. package/types/components/DatePicker/DatePickerBase.types.d.ts +7 -0
  150. package/types/components/DatePicker/DatePickerBase.types.d.ts.map +1 -1
  151. package/types/components/DatePicker/RangeDate/RangeDate.d.ts +2 -0
  152. package/types/components/DatePicker/RangeDate/RangeDate.d.ts.map +1 -1
  153. package/types/components/DatePicker/RangeDate/RangeDate.types.d.ts +4 -0
  154. package/types/components/DatePicker/RangeDate/RangeDate.types.d.ts.map +1 -1
  155. package/types/components/DatePicker/SingleDate/SingleDate.d.ts.map +1 -1
  156. package/types/components/DatePicker/SingleDate/SingleDate.types.d.ts +10 -0
  157. package/types/components/DatePicker/SingleDate/SingleDate.types.d.ts.map +1 -1
  158. package/types/components/DatePicker/hooks/useDatePicker.d.ts +1 -1
  159. package/types/components/DatePicker/hooks/useDatePicker.d.ts.map +1 -1
  160. package/types/components/DatePicker/utils/setInitValue.d.ts +2 -0
  161. package/types/components/DatePicker/utils/setInitValue.d.ts.map +1 -0
  162. package/types/components/Slider/Slider.d.ts.map +1 -1
  163. package/types/components/Slider/Slider.types.d.ts +2 -2
  164. package/types/components/Slider/Slider.types.d.ts.map +1 -1
  165. package/types/components/Slider/components/Double/Double.d.ts.map +1 -1
  166. package/types/components/Slider/components/Double/Double.types.d.ts +2 -0
  167. package/types/components/Slider/components/Double/Double.types.d.ts.map +1 -1
  168. package/types/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.d.ts +4 -0
  169. package/types/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.d.ts.map +1 -0
  170. package/types/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.types.d.ts +40 -0
  171. package/types/components/Slider/components/DoubleUncontrolled/DoubleUncontrolled.types.d.ts.map +1 -0
  172. package/types/components/Slider/components/Single/Single.d.ts.map +1 -1
  173. package/types/components/Slider/components/Single/Single.types.d.ts +35 -5
  174. package/types/components/Slider/components/Single/Single.types.d.ts.map +1 -1
  175. package/types/components/Slider/components/index.d.ts +2 -0
  176. package/types/components/Slider/components/index.d.ts.map +1 -1
  177. package/types/components/Slider/utils/index.d.ts +1 -0
  178. package/types/components/Slider/utils/index.d.ts.map +1 -1
  179. package/types/components/TextArea/TextArea.d.ts.map +1 -1
  180. package/types/examples/plasma_b2c/components/DatePicker/DatePicker.d.ts +1 -0
  181. package/types/examples/plasma_b2c/components/DatePicker/DatePicker.d.ts.map +1 -1
  182. package/types/examples/plasma_b2c/components/Slider/Slider.d.ts +47 -1
  183. package/types/examples/plasma_b2c/components/Slider/Slider.d.ts.map +1 -1
  184. package/types/examples/plasma_web/components/DatePicker/DatePicker.d.ts +1 -0
  185. package/types/examples/plasma_web/components/DatePicker/DatePicker.d.ts.map +1 -1
  186. package/types/examples/plasma_web/components/Slider/Slider.d.ts +47 -1
  187. package/types/examples/plasma_web/components/Slider/Slider.d.ts.map +1 -1
  188. package/types/hooks/index.d.ts +1 -0
  189. package/types/hooks/index.d.ts.map +1 -1
  190. package/types/hooks/useForm.d.ts +10 -0
  191. package/types/hooks/useForm.d.ts.map +1 -0
  192. package/types/types/FormType.d.ts +13 -0
  193. package/types/types/FormType.d.ts.map +1 -0
  194. package/types/utils/index.d.ts +1 -0
  195. package/types/utils/index.d.ts.map +1 -1
  196. package/types/utils/inputHidden.d.ts +2 -0
  197. package/types/utils/inputHidden.d.ts.map +1 -0
  198. package/types/utils/setRefList.d.ts +6 -0
  199. package/types/utils/setRefList.d.ts.map +1 -0
@@ -1,5 +1,5 @@
1
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
- var _excluded = ["min", "max", "value", "disabled", "onChangeCommitted", "onChange", "ariaLabel", "label", "labelContentLeft", "showRangeValues", "showCurrentValue", "hideMinValueDiff", "hideMaxValueDiff", "labelPlacement", "rangeValuesPlacement", "multipleStepSize", "size"];
2
+ var _excluded = ["min", "max", "value", "disabled", "onChangeCommitted", "onChange", "ariaLabel", "label", "labelContentLeft", "showRangeValues", "showCurrentValue", "hideMinValueDiff", "hideMaxValueDiff", "labelPlacement", "rangeValuesPlacement", "multipleStepSize", "defaultValue", "size", "name"];
3
3
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
4
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
5
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -17,11 +17,13 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
17
17
  import React, { useCallback, useEffect, useState, useRef } from 'react';
18
18
  import { SliderBase } from '../SliderBase/SliderBase';
19
19
  import { Handler } from '../../ui';
20
- import { sizeData } from '../../utils';
20
+ import { setInitValue, sizeData } from '../../utils';
21
21
  import { cx, isNumber } from '../../../../utils';
22
22
  import { classes } from '../../Slider.tokens';
23
+ import { InputHidden } from '../../../../utils/inputHidden';
23
24
  import { Label, LabelContentLeft, LabelWrapper, SingleWrapper, SliderBaseWrapper, StyledRangeValue } from './Single.styles';
24
25
  export var SingleSlider = function SingleSlider(_ref) {
26
+ var _ref2;
25
27
  var min = _ref.min,
26
28
  max = _ref.max,
27
29
  value = _ref.value,
@@ -41,8 +43,10 @@ export var SingleSlider = function SingleSlider(_ref) {
41
43
  rangeValuesPlacement = _ref$rangeValuesPlace === void 0 ? 'outer' : _ref$rangeValuesPlace,
42
44
  _ref$multipleStepSize = _ref.multipleStepSize,
43
45
  multipleStepSize = _ref$multipleStepSize === void 0 ? 10 : _ref$multipleStepSize,
46
+ defaultValue = _ref.defaultValue,
44
47
  _ref$size = _ref.size,
45
48
  size = _ref$size === void 0 ? 'm' : _ref$size,
49
+ name = _ref.name,
46
50
  rest = _objectWithoutProperties(_ref, _excluded);
47
51
  var _useState = useState({
48
52
  xHandle: 0,
@@ -52,6 +56,7 @@ export var SingleSlider = function SingleSlider(_ref) {
52
56
  _useState2 = _slicedToArray(_useState, 2),
53
57
  state = _useState2[0],
54
58
  setState = _useState2[1];
59
+ var innerRef = useRef(null);
55
60
  var _useState3 = useState(0),
56
61
  _useState4 = _slicedToArray(_useState3, 2),
57
62
  startOffset = _useState4[0],
@@ -60,7 +65,7 @@ export var SingleSlider = function SingleSlider(_ref) {
60
65
  _useState6 = _slicedToArray(_useState5, 2),
61
66
  endOffset = _useState6[0],
62
67
  setEndOffset = _useState6[1];
63
- var _useState7 = useState(value),
68
+ var _useState7 = useState((_ref2 = value !== null && value !== void 0 ? value : defaultValue) !== null && _ref2 !== void 0 ? _ref2 : min),
64
69
  _useState8 = _slicedToArray(_useState7, 2),
65
70
  dragValue = _useState8[0],
66
71
  setDragValue = _useState8[1];
@@ -68,14 +73,14 @@ export var SingleSlider = function SingleSlider(_ref) {
68
73
  var hasLabelContent = label || labelContentLeft;
69
74
  var labelPlacementClass = labelPlacement === 'outer' ? classes.labelPlacementOuter : classes.labelPlacementInner;
70
75
  var rangeValuesPlacementClass = rangeValuesPlacement === 'outer' ? classes.rangeValuesPlacementOuter : classes.rangeValuesPlacementInner;
71
- var hideMinValueDiffClass = hideMinValueDiff && value - min <= hideMinValueDiff ? classes.hideMinValue : '';
72
- var hideMaxValueDiffClass = hideMaxValueDiff && max - value <= hideMaxValueDiff ? classes.hideMaxValue : '';
76
+ var hideMinValueDiffClass = hideMinValueDiff && dragValue - min <= hideMinValueDiff ? classes.hideMinValue : '';
77
+ var hideMaxValueDiffClass = hideMaxValueDiff && max - dragValue <= hideMaxValueDiff ? classes.hideMaxValue : '';
73
78
  var startLabelRef = useRef(null);
74
79
  var endLabelRef = useRef(null);
75
80
  var activeFirstValue = dragValue === min ? classes.activeRangeValue : undefined;
76
81
  var activeSecondValue = dragValue === max ? classes.activeRangeValue : undefined;
77
82
  useEffect(function () {
78
- var localValue = Math.min(Math.max(value, min), max) - min;
83
+ var localValue = Math.min(Math.max(dragValue, min), max) - min;
79
84
  if (rangeValuesPlacement === 'outer') {
80
85
  var _startLabelRef$curren, _endLabelRef$current;
81
86
  var startWidth = (_startLabelRef$curren = startLabelRef.current) === null || _startLabelRef$curren === void 0 ? void 0 : _startLabelRef$curren.offsetWidth;
@@ -96,7 +101,21 @@ export var SingleSlider = function SingleSlider(_ref) {
96
101
  railFillWidth: stepSize * localValue
97
102
  });
98
103
  });
99
- }, [value, labelPlacement, stepSize, rangeValuesPlacement, min, max, setStartOffset, setEndOffset]);
104
+ }, [dragValue, labelPlacement, stepSize, rangeValuesPlacement, min, max, setStartOffset, setEndOffset]);
105
+ useEffect(function () {
106
+ if (innerRef.current) {
107
+ innerRef.current.addEventListener('setInitValue', function (e) {
108
+ return setDragValue(setInitValue(e));
109
+ });
110
+ }
111
+ return function () {
112
+ if (innerRef.current) {
113
+ innerRef.current.removeEventListener('setInitValue', function (e) {
114
+ return setDragValue(setInitValue(e));
115
+ });
116
+ }
117
+ };
118
+ }, [innerRef]);
100
119
  var setStepSize = useCallback(function (newStepSize) {
101
120
  setState(function (prevState) {
102
121
  return _objectSpread(_objectSpread({}, prevState), {}, {
@@ -113,7 +132,19 @@ export var SingleSlider = function SingleSlider(_ref) {
113
132
  });
114
133
  });
115
134
  if (onChange) {
116
- onChange(newValue);
135
+ if (value !== undefined) {
136
+ // Если value определен, значит, мы находимся в втором варианте типа
137
+ onChange(newValue);
138
+ }
139
+ if (name && !value) {
140
+ // Если name определен, значит, мы находимся в первом варианте типа
141
+ onChange({
142
+ target: {
143
+ value: newValue,
144
+ name: name
145
+ }
146
+ });
147
+ }
117
148
  }
118
149
  setDragValue(newValue);
119
150
  };
@@ -164,5 +195,12 @@ export var SingleSlider = function SingleSlider(_ref) {
164
195
  })), showRangeValues && /*#__PURE__*/React.createElement(StyledRangeValue, {
165
196
  ref: endLabelRef,
166
197
  className: cx(classes.maxRangeValue, hideMaxValueDiffClass, activeSecondValue)
167
- }, max)));
198
+ }, max)), /*#__PURE__*/React.createElement(InputHidden, {
199
+ name: name,
200
+ type: "number",
201
+ datatype: "slider-single",
202
+ value: dragValue,
203
+ ref: innerRef,
204
+ onChange: function onChange() {}
205
+ }));
168
206
  };
@@ -1,3 +1,4 @@
1
1
  export * from './Single/Single';
2
2
  export * from './Double/Double';
3
+ export * from './DoubleUncontrolled/DoubleUncontrolled';
3
4
  export {};
@@ -44,4 +44,9 @@ export var sizeData = {
44
44
  indent: 0.75,
45
45
  fontSizeMultiplier: 16
46
46
  }
47
+ };
48
+ export var setInitValue = function setInitValue(e) {
49
+ var item = e.target;
50
+ var defaultValue = Number(item.getAttribute('defaultValue'));
51
+ return defaultValue;
47
52
  };
@@ -21,7 +21,7 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
21
21
  import React, { forwardRef, useState, createRef, useCallback } from 'react';
22
22
  import { css } from 'styled-components';
23
23
  import { useResizeObserver } from '@salutejs/plasma-core';
24
- import { cx } from '../../utils';
24
+ import { cx, mergeRefs } from '../../utils';
25
25
  import { applyDynamicLabel } from './mixins';
26
26
  import { useAutoResize, ROOT_FONT_SIZE } from './hooks';
27
27
  import { StyledContent, StyledHelpers, StyledLeftHelper, StyledRightHelper, StyledLabel, StyledPlaceholder, StyledTextArea, StyledTextAreaWrapper, StyledContainer, StyledIndicator, StyledOptionalText } from './TextArea.styles';
@@ -118,7 +118,7 @@ export var textAreaRoot = function textAreaRoot(Root) {
118
118
  _useState6 = _slicedToArray(_useState5, 2),
119
119
  uncontrolledValue = _useState6[0],
120
120
  setUncontrolledValue = _useState6[1];
121
- var outerRef = innerRef && 'current' in innerRef ? innerRef : /*#__PURE__*/createRef();
121
+ var outerRef = /*#__PURE__*/createRef();
122
122
  var innerOptional = required ? false : optional;
123
123
  var hasHelper = Boolean(leftHelper || rightHelper || helperText);
124
124
  var hasOuterLabel = Boolean(label && labelPlacement === 'outer');
@@ -190,7 +190,7 @@ export var textAreaRoot = function textAreaRoot(Root) {
190
190
  hasContentRight: Boolean(contentRight),
191
191
  hasHelper: hasHelper,
192
192
  applyCustomWidth: applyCustomWidth,
193
- ref: outerRef,
193
+ ref: mergeRefs(outerRef, innerRef),
194
194
  disabled: disabled,
195
195
  height: autoResize ? minAuto : height,
196
196
  width: width,
@@ -0,0 +1,256 @@
1
+ import { useForm as useReactHookForm, Controller } from 'react-hook-form';
2
+ import React from 'react';
3
+ import type { Meta, StoryObj } from '@storybook/react';
4
+
5
+ import { WithTheme } from '../../../_helpers';
6
+ import { Button } from '../Button/Button';
7
+ import { TextField } from '../TextField/TextField';
8
+ import { TextArea } from '../TextArea/TextArea';
9
+ import { Checkbox } from '../Checkbox/Checkbox';
10
+ import { Switch } from '../Switch/Switch';
11
+ import { Radiobox } from '../Radiobox/Radiobox';
12
+ import { RadioGroup } from '../../../../components/Radiobox';
13
+ import { Slider } from '../Slider/Slider';
14
+ import { useForm } from '../../../../hooks';
15
+ import { DatePicker, DatePickerRange } from '../DatePicker/DatePicker';
16
+
17
+ type StoryDropdownProps = {};
18
+
19
+ const langName = 'language';
20
+ const itemsRadiobox = [
21
+ { langName, value: 'c', label: 'C', disabled: false },
22
+ { langName, value: 'cpp', label: 'C++', disabled: false },
23
+ { langName, value: 'assembly', label: 'Assembly', disabled: false },
24
+ ];
25
+
26
+ const PlasmaForm = () => {
27
+ const onSubmit = (data) => {
28
+ console.log(data);
29
+ };
30
+
31
+ const { formRef, formData } = useForm(onSubmit, {
32
+ textfield: 'textfield',
33
+ textarea: 'textarea',
34
+ checkbox: 'checkobox',
35
+ switch: true,
36
+ radiobox: 'c',
37
+ slider: 10,
38
+ sliderd: [10, 20],
39
+ datepicker: '12.09.2024',
40
+ datepickerRange: ['09.09.2024', '12.09.2024'],
41
+ });
42
+
43
+ return (
44
+ <form onSubmit={formData} style={{ display: 'flex', flexDirection: 'column', gap: '20px' }} ref={formRef}>
45
+ <TextField name="textfield" placeholder="Textfield" required={false} />
46
+ <TextArea name="textarea" autoResize placeholder="Textarea" />
47
+ <Checkbox name="checkbox" label="Checkbox" />
48
+ <Switch name="switch" label="Switch" labelPosition="after" />
49
+ <RadioGroup aria-labelledby="radiogroup-title-id">
50
+ <div id="radiogroup-title-id" style={{ margin: '1rem 0', fontWeight: '600' }}>
51
+ Выберите язык программирования для изучения.
52
+ </div>
53
+ {itemsRadiobox.map((item) => (
54
+ <Radiobox
55
+ name="radiobox"
56
+ key={item.value}
57
+ value={item.value}
58
+ label={item.label}
59
+ disabled={item.disabled}
60
+ />
61
+ ))}
62
+ </RadioGroup>
63
+ <Slider name="slider" label="Slider" type="single" min={0} max={100} />
64
+ <Slider name="sliderd" label="Slider" type="double" min={0} max={100} />
65
+ <DatePicker label="DatePicker" name="datepicker" />
66
+ <DatePickerRange label="DatePicker" name="datepickerRange" />
67
+ <Button type="submit">Отправить</Button>
68
+ </form>
69
+ );
70
+ };
71
+
72
+ const meta: Meta<StoryDropdownProps> = {
73
+ title: 'plasma_b2c/Form',
74
+ decorators: [WithTheme],
75
+ component: PlasmaForm,
76
+ };
77
+
78
+ export default meta;
79
+
80
+ const StoryPlasmaForm = () => {
81
+ return <PlasmaForm />;
82
+ };
83
+
84
+ export const DefaultPlasmaForm: StoryObj<StoryDropdownProps> = {
85
+ render: () => <StoryPlasmaForm />,
86
+ };
87
+
88
+ const DefaultForm = () => {
89
+ const onSubmit = (event) => {
90
+ event.preventDefault();
91
+
92
+ const fData = new FormData(event.target);
93
+
94
+ for (const p of fData) {
95
+ const name = p[0];
96
+ const value = p[1];
97
+
98
+ console.log(name, value);
99
+ }
100
+ };
101
+ return (
102
+ <form onSubmit={onSubmit} style={{ display: 'flex', flexDirection: 'column', gap: '20px' }}>
103
+ <TextField name="textfield" placeholder="Textfield" required={false} />
104
+ <TextArea name="textarea" autoResize placeholder="Textarea" />
105
+ <Checkbox name="checkbox" label="Checkbox" />
106
+ <Switch name="switch" label="Switch" labelPosition="after" />
107
+ <RadioGroup aria-labelledby="radiogroup-title-id">
108
+ <div id="radiogroup-title-id" style={{ margin: '1rem 0', fontWeight: '600' }}>
109
+ Выберите язык программирования для изучения.
110
+ </div>
111
+ {itemsRadiobox.map((item) => (
112
+ <Radiobox
113
+ name="radiobox"
114
+ key={item.value}
115
+ value={item.value}
116
+ label={item.label}
117
+ disabled={item.disabled}
118
+ />
119
+ ))}
120
+ </RadioGroup>
121
+ <Slider name="slider" label="Slider" type="single" min={0} max={100} />
122
+ <DatePicker label="DatePicker" name="datepicker" />
123
+ <Button type="submit">Отправить</Button>
124
+ </form>
125
+ );
126
+ };
127
+
128
+ const StoryDefaultForm = () => {
129
+ return <DefaultForm />;
130
+ };
131
+
132
+ export const FormDefault: StoryObj<StoryDropdownProps> = {
133
+ render: () => <StoryDefaultForm />,
134
+ };
135
+
136
+ const DefaultUseForm = () => {
137
+ const defaultValues = {
138
+ textfield: 'John Doe',
139
+ textarea: 'Default description',
140
+ checkbox: true,
141
+ switch: true,
142
+ radiobox: 'c',
143
+ slider: 10,
144
+ sliderDouble: [10, 20],
145
+ datePicker: null,
146
+ };
147
+ const { register, handleSubmit } = useReactHookForm({
148
+ defaultValues,
149
+ });
150
+ const onSubmit = (data) => {
151
+ console.log(data);
152
+ };
153
+
154
+ return (
155
+ <form onSubmit={handleSubmit(onSubmit)} style={{ display: 'flex', flexDirection: 'column', gap: '20px' }}>
156
+ <TextField {...register('textfield')} placeholder="Textfield" required={false} />
157
+ <TextArea {...register('textarea')} autoResize placeholder="Textarea" />
158
+ <Checkbox {...register('checkbox')} label="Checkbox" />
159
+ <Switch {...register('switch')} label="Switch" labelPosition="after" />
160
+ <RadioGroup aria-labelledby="radiogroup-title-id">
161
+ <div id="radiogroup-title-id" style={{ margin: '1rem 0', fontWeight: '600' }}>
162
+ Выберите язык программирования для изучения.
163
+ </div>
164
+ {itemsRadiobox.map((item) => (
165
+ <Radiobox
166
+ {...register('radiobox')}
167
+ key={item.value}
168
+ value={item.value}
169
+ label={item.label}
170
+ disabled={item.disabled}
171
+ />
172
+ ))}
173
+ </RadioGroup>
174
+ <Slider
175
+ {...register('slider')}
176
+ defaultValue={defaultValues.slider}
177
+ label="Slider"
178
+ type="single"
179
+ min={0}
180
+ max={100}
181
+ />
182
+ <Slider {...register('sliderDouble')} label="Slider" type="double" min={0} max={100} />
183
+ <DatePicker {...register('datePicker')} label="DatePicker" />
184
+ <Button type="submit">Отправить</Button>
185
+ </form>
186
+ );
187
+ };
188
+
189
+ const StoryHookForm = () => {
190
+ return <DefaultUseForm />;
191
+ };
192
+
193
+ export const UseHookForm: StoryObj<StoryDropdownProps> = {
194
+ render: () => <StoryHookForm />,
195
+ };
196
+
197
+ const DefaultUseFormController = () => {
198
+ const { control, handleSubmit } = useReactHookForm({
199
+ defaultValues: {
200
+ textfield: 'John Doe',
201
+ textarea: 'Default description',
202
+ checkbox: true,
203
+ switch: true,
204
+ radiobox: 'c',
205
+ slider: 10,
206
+ sliderd: [10, 20],
207
+ },
208
+ });
209
+ const onSubmit = (data) => {
210
+ console.log(data);
211
+ };
212
+
213
+ return (
214
+ <form onSubmit={handleSubmit(onSubmit)} style={{ display: 'flex', flexDirection: 'column', gap: '20px' }}>
215
+ <Controller
216
+ name="textfield"
217
+ control={control}
218
+ render={({ field }) => <TextField {...field} label="TextField" />}
219
+ />
220
+ <Controller
221
+ name="textarea"
222
+ control={control}
223
+ render={({ field }) => <TextArea {...field} label="TextArea" />}
224
+ />
225
+ <Controller
226
+ name="checkbox"
227
+ control={control}
228
+ render={({ field }) => <Checkbox {...field} checked={field.value} label="Checkbox" />}
229
+ />
230
+ <Controller
231
+ name="switch"
232
+ control={control}
233
+ render={({ field }) => <Switch {...field} checked={field.value} labelPosition="after" label="Switch" />}
234
+ />
235
+ <Controller
236
+ name="slider"
237
+ control={control}
238
+ render={({ field }) => <Slider {...field} type="single" label="Slider" min={0} max={100} />}
239
+ />
240
+ <Controller
241
+ name="sliderd"
242
+ control={control}
243
+ render={({ field }) => <Slider {...field} type="double" label="Slider" min={0} max={100} />}
244
+ />
245
+ <Button type="submit">Отправить</Button>
246
+ </form>
247
+ );
248
+ };
249
+
250
+ const StoryHookFormController = () => {
251
+ return <DefaultUseFormController />;
252
+ };
253
+
254
+ export const UseHookFormController: StoryObj<StoryDropdownProps> = {
255
+ render: () => <StoryHookFormController />,
256
+ };
@@ -0,0 +1,237 @@
1
+ import { useForm as useReactHookForm, Controller } from 'react-hook-form';
2
+ import React from 'react';
3
+ import type { Meta, StoryObj } from '@storybook/react';
4
+
5
+ import { WithTheme } from '../../../_helpers';
6
+ import { Button } from '../Button/Button';
7
+ import { TextField } from '../TextField/TextField';
8
+ import { TextArea } from '../TextArea/TextArea';
9
+ import { Checkbox } from '../Checkbox/Checkbox';
10
+ import { Switch } from '../Switch/Switch';
11
+ import { Radiobox } from '../Radiobox/Radiobox';
12
+ import { RadioGroup } from '../../../../components/Radiobox';
13
+ import { Slider } from '../Slider/Slider';
14
+ import { useForm } from '../../../../hooks';
15
+ import { DatePicker, DatePickerRange } from '../DatePicker/DatePicker';
16
+
17
+ type StoryDropdownProps = {};
18
+
19
+ const langName = 'language';
20
+ const itemsRadiobox = [
21
+ { langName, value: 'c', label: 'C', disabled: false },
22
+ { langName, value: 'cpp', label: 'C++', disabled: false },
23
+ { langName, value: 'assembly', label: 'Assembly', disabled: false },
24
+ ];
25
+
26
+ const PlasmaForm = () => {
27
+ const onSubmit = (data) => {
28
+ console.log(data);
29
+ };
30
+
31
+ const { formRef, formData } = useForm(onSubmit, {
32
+ textfield: 'textfield',
33
+ textarea: 'textarea',
34
+ checkbox: 'checkobox',
35
+ switch: true,
36
+ radiobox: 'c',
37
+ slider: 10,
38
+ sliderd: [10, 20],
39
+ datepicker: '12.09.2024',
40
+ datepickerRange: ['09.09.2024', '12.09.2024'],
41
+ });
42
+
43
+ return (
44
+ <form onSubmit={formData} style={{ display: 'flex', flexDirection: 'column', gap: '20px' }} ref={formRef}>
45
+ <TextField name="textfield" placeholder="Textfield" required={false} />
46
+ <TextArea name="textarea" autoResize placeholder="Textarea" />
47
+ <Checkbox name="checkbox" label="Checkbox" />
48
+ <Switch name="switch" label="Switch" labelPosition="after" />
49
+ <RadioGroup aria-labelledby="radiogroup-title-id">
50
+ <div id="radiogroup-title-id" style={{ margin: '1rem 0', fontWeight: '600' }}>
51
+ Выберите язык программирования для изучения.
52
+ </div>
53
+ {itemsRadiobox.map((item) => (
54
+ <Radiobox
55
+ name="radiobox"
56
+ key={item.value}
57
+ value={item.value}
58
+ label={item.label}
59
+ disabled={item.disabled}
60
+ />
61
+ ))}
62
+ </RadioGroup>
63
+ <Slider name="slider" label="Slider" type="single" min={0} max={100} />
64
+ <Slider name="sliderd" label="Slider" type="double" min={0} max={100} />
65
+ <DatePicker label="DatePicker" name="datepicker" />
66
+ <DatePickerRange label="DatePicker" name="datepickerRange" />
67
+ <Button type="submit">Отправить</Button>
68
+ </form>
69
+ );
70
+ };
71
+
72
+ const meta: Meta<StoryDropdownProps> = {
73
+ title: 'plasma_web/Form',
74
+ decorators: [WithTheme],
75
+ component: PlasmaForm,
76
+ };
77
+
78
+ export default meta;
79
+
80
+ const StoryPlasmaForm = () => {
81
+ return <PlasmaForm />;
82
+ };
83
+
84
+ export const DefaultPlasmaForm: StoryObj<StoryDropdownProps> = {
85
+ render: () => <StoryPlasmaForm />,
86
+ };
87
+
88
+ const DefaultForm = () => {
89
+ const onSubmit = (event) => {
90
+ event.preventDefault();
91
+
92
+ const fData = new FormData(event.target);
93
+
94
+ for (const p of fData) {
95
+ const name = p[0];
96
+ const value = p[1];
97
+
98
+ console.log(name, value);
99
+ }
100
+ };
101
+ return (
102
+ <form onSubmit={onSubmit} style={{ display: 'flex', flexDirection: 'column', gap: '20px' }}>
103
+ <TextField name="textfield" placeholder="Textfield" required={false} />
104
+ <TextArea name="textarea" autoResize placeholder="Textarea" />
105
+ <Checkbox name="checkbox" label="Checkbox" />
106
+ <Switch name="switch" label="Switch" labelPosition="after" />
107
+ <RadioGroup aria-labelledby="radiogroup-title-id">
108
+ <div id="radiogroup-title-id" style={{ margin: '1rem 0', fontWeight: '600' }}>
109
+ Выберите язык программирования для изучения.
110
+ </div>
111
+ {itemsRadiobox.map((item) => (
112
+ <Radiobox
113
+ name="radiobox"
114
+ key={item.value}
115
+ value={item.value}
116
+ label={item.label}
117
+ disabled={item.disabled}
118
+ />
119
+ ))}
120
+ </RadioGroup>
121
+ <Slider name="slider" label="Slider" type="single" min={0} max={100} />
122
+ <DatePicker label="DatePicker" name="datepicker" />
123
+ <Button type="submit">Отправить</Button>
124
+ </form>
125
+ );
126
+ };
127
+
128
+ const StoryDefaultForm = () => {
129
+ return <DefaultForm />;
130
+ };
131
+
132
+ export const FormDefault: StoryObj<StoryDropdownProps> = {
133
+ render: () => <StoryDefaultForm />,
134
+ };
135
+
136
+ const DefaultUseForm = () => {
137
+ const { register, handleSubmit } = useReactHookForm();
138
+ const onSubmit = (data) => {
139
+ console.log(data);
140
+ };
141
+
142
+ return (
143
+ <form onSubmit={handleSubmit(onSubmit)} style={{ display: 'flex', flexDirection: 'column', gap: '20px' }}>
144
+ <TextField {...register('textfield')} placeholder="Textfield" required={false} />
145
+ <TextArea {...register('textarea')} autoResize placeholder="Textarea" />
146
+ <Checkbox {...register('checkbox')} label="Checkbox" />
147
+ <Switch {...register('switch')} label="Switch" labelPosition="after" />
148
+ <RadioGroup aria-labelledby="radiogroup-title-id">
149
+ <div id="radiogroup-title-id" style={{ margin: '1rem 0', fontWeight: '600' }}>
150
+ Выберите язык программирования для изучения.
151
+ </div>
152
+ {itemsRadiobox.map((item) => (
153
+ <Radiobox
154
+ {...register('radiobox')}
155
+ key={item.value}
156
+ value={item.value}
157
+ label={item.label}
158
+ disabled={item.disabled}
159
+ />
160
+ ))}
161
+ </RadioGroup>
162
+ <Slider {...register('slider')} label="Slider" type="single" min={0} max={100} />
163
+ <Slider {...register('sliderDouble')} label="Slider" type="double" min={0} max={100} />
164
+ <DatePicker {...register('datePicker')} label="DatePicker" />
165
+ <Button type="submit">Отправить</Button>
166
+ </form>
167
+ );
168
+ };
169
+
170
+ const StoryHookForm = () => {
171
+ return <DefaultUseForm />;
172
+ };
173
+
174
+ export const UseHookForm: StoryObj<StoryDropdownProps> = {
175
+ render: () => <StoryHookForm />,
176
+ };
177
+
178
+ const DefaultUseFormController = () => {
179
+ const { control, handleSubmit } = useReactHookForm({
180
+ defaultValues: {
181
+ textfield: 'John Doe',
182
+ textarea: 'Default description',
183
+ checkbox: true,
184
+ switch: true,
185
+ radiobox: 'c',
186
+ slider: 10,
187
+ sliderd: [10, 20],
188
+ },
189
+ });
190
+ const onSubmit = (data) => {
191
+ console.log(data);
192
+ };
193
+
194
+ return (
195
+ <form onSubmit={handleSubmit(onSubmit)} style={{ display: 'flex', flexDirection: 'column', gap: '20px' }}>
196
+ <Controller
197
+ name="textfield"
198
+ control={control}
199
+ render={({ field }) => <TextField {...field} label="TextField" />}
200
+ />
201
+ <Controller
202
+ name="textarea"
203
+ control={control}
204
+ render={({ field }) => <TextArea {...field} label="TextArea" />}
205
+ />
206
+ <Controller
207
+ name="checkbox"
208
+ control={control}
209
+ render={({ field }) => <Checkbox {...field} checked={field.value} label="Checkbox" />}
210
+ />
211
+ <Controller
212
+ name="switch"
213
+ control={control}
214
+ render={({ field }) => <Switch {...field} checked={field.value} labelPosition="after" label="Switch" />}
215
+ />
216
+ <Controller
217
+ name="slider"
218
+ control={control}
219
+ render={({ field }) => <Slider {...field} type="single" label="Slider" min={0} max={100} />}
220
+ />
221
+ <Controller
222
+ name="sliderd"
223
+ control={control}
224
+ render={({ field }) => <Slider {...field} type="double" label="Slider" min={0} max={100} />}
225
+ />
226
+ <Button type="submit">Отправить</Button>
227
+ </form>
228
+ );
229
+ };
230
+
231
+ const StoryHookFormController = () => {
232
+ return <DefaultUseFormController />;
233
+ };
234
+
235
+ export const UseHookFormController: StoryObj<StoryDropdownProps> = {
236
+ render: () => <StoryHookFormController />,
237
+ };
@@ -4,4 +4,5 @@ export { usePreviousValue } from './usePreviousValue';
4
4
  export { useForceUpdate } from './useForceUpdate';
5
5
  export { useDidMountEffect } from './useDidMountEffect';
6
6
  export { useOutsideClick } from './useOutsideClick';
7
- export { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';
7
+ export { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';
8
+ export { useForm } from './useForm';