@alfalab/core-components-radio-group 3.0.3 → 3.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/Component.d.ts CHANGED
@@ -35,7 +35,7 @@ type RadioGroupProps = {
35
35
  /**
36
36
  * Обработчик изменения значения 'checked' одного из дочерних компонентов
37
37
  */
38
- onChange?: (event?: ChangeEvent | MouseEvent, payload?: {
38
+ onChange?: (event: ChangeEvent | MouseEvent, payload: {
39
39
  value: string;
40
40
  name?: string;
41
41
  }) => void;
package/Component.js CHANGED
@@ -1,72 +1,45 @@
1
1
  'use strict';
2
2
 
3
+ var tslib = require('tslib');
3
4
  var React = require('react');
4
5
  var cn = require('classnames');
6
+ var hooks = require('@alfalab/hooks');
5
7
 
6
8
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
7
9
 
8
10
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
9
11
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
10
12
 
11
- /******************************************************************************
12
- Copyright (c) Microsoft Corporation.
13
-
14
- Permission to use, copy, modify, and/or distribute this software for any
15
- purpose with or without fee is hereby granted.
16
-
17
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
18
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
19
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
20
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
21
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
22
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
23
- PERFORMANCE OF THIS SOFTWARE.
24
- ***************************************************************************** */
25
- var __assign = function () {
26
- __assign = Object.assign || function __assign(t) {
27
- for (var s, i = 1, n = arguments.length; i < n; i++) {
28
- s = arguments[i];
29
- for (var p in s)
30
- if (Object.prototype.hasOwnProperty.call(s, p))
31
- t[p] = s[p];
32
- }
33
- return t;
34
- };
35
- return __assign.apply(this, arguments);
36
- };
37
-
38
- var styles = {"component":"radio-group__component_emfj8","error":"radio-group__error_emfj8","radioList":"radio-group__radioList_emfj8","vertical":"radio-group__vertical_emfj8","radio":"radio-group__radio_emfj8","horizontal":"radio-group__horizontal_emfj8","tag":"radio-group__tag_emfj8","tagLabel":"radio-group__tagLabel_emfj8","label":"radio-group__label_emfj8","sub":"radio-group__sub_emfj8","errorMessage":"radio-group__errorMessage_emfj8","hint":"radio-group__hint_emfj8","hiddenInput":"radio-group__hiddenInput_emfj8"};
13
+ var styles = {"component":"radio-group__component_mw9ie","error":"radio-group__error_mw9ie","radioList":"radio-group__radioList_mw9ie","vertical":"radio-group__vertical_mw9ie","radio":"radio-group__radio_mw9ie","horizontal":"radio-group__horizontal_mw9ie","tag":"radio-group__tag_mw9ie","tagLabel":"radio-group__tagLabel_mw9ie","label":"radio-group__label_mw9ie","sub":"radio-group__sub_mw9ie","errorMessage":"radio-group__errorMessage_mw9ie","hint":"radio-group__hint_mw9ie","hiddenInput":"radio-group__hiddenInput_mw9ie"};
39
14
  require('./index.css')
40
15
 
41
16
  var RadioGroup = React.forwardRef(function (_a, ref) {
42
17
  var _b;
43
18
  var children = _a.children, className = _a.className, _c = _a.direction, direction = _c === void 0 ? 'vertical' : _c, label = _a.label, error = _a.error, hint = _a.hint, onChange = _a.onChange, onBlur = _a.onBlur, onFocus = _a.onFocus, _d = _a.type, type = _d === void 0 ? 'radio' : _d, dataTestId = _a.dataTestId, _e = _a.disabled, disabled = _e === void 0 ? false : _e, name = _a.name, value = _a.value;
44
19
  var _f = React.useState(''), stateValue = _f[0], setStateValue = _f[1];
20
+ hooks.useDidUpdateEffect(function () {
21
+ setStateValue(value);
22
+ }, [value]);
23
+ var isChecked = function (childValue) {
24
+ return value !== null && (value || stateValue) === childValue;
25
+ };
26
+ var handleChange = function (event, childValue) {
27
+ setStateValue(childValue);
28
+ if (onChange) {
29
+ onChange(event, { name: name, value: childValue });
30
+ }
31
+ };
45
32
  var renderRadio = function (child) {
46
- var childClassName = child.props.className;
47
- var checked = value !== null && (value || stateValue) === child.props.value;
48
- var handleChange = function (event) {
49
- setStateValue(child.props.value);
50
- if (onChange) {
51
- onChange(event, { name: name, value: child.props.value });
52
- }
53
- };
54
- return React.cloneElement(child, __assign(__assign({ onChange: handleChange, disabled: disabled }, child.props), { checked: checked, name: name, className: cn__default.default(childClassName, styles.radio) }));
33
+ var _a = child.props, childClassName = _a.className, childValue = _a.value;
34
+ return React.cloneElement(child, tslib.__assign(tslib.__assign({ onChange: function (event) { return handleChange(event, childValue); }, disabled: disabled }, child.props), { checked: isChecked(childValue), name: name, className: cn__default.default(childClassName, styles.radio) }));
55
35
  };
56
36
  var renderTag = function (child) {
57
- var checked = value !== null && (value || stateValue) === child.props.value;
58
- var handleChange = function (event) {
59
- setStateValue(child.props.value);
60
- if (onChange) {
61
- onChange(event, { name: name, value: child.props.value });
62
- }
63
- };
64
- var clone = React.cloneElement(child, __assign(__assign({ onClick: handleChange, disabled: disabled }, child.props), { checked: checked, name: name }));
65
- return (
66
- // eslint-disable-next-line jsx-a11y/label-has-associated-control
67
- React__default.default.createElement("label", { className: cn__default.default(styles.radio, styles.tagLabel) },
37
+ var childValue = child.props.value;
38
+ var checked = isChecked(childValue);
39
+ var clone = React.cloneElement(child, tslib.__assign(tslib.__assign({ onClick: function (event) { return handleChange(event, childValue); }, disabled: disabled }, child.props), { checked: checked, name: name }));
40
+ return (React__default.default.createElement("label", { className: cn__default.default(styles.radio, styles.tagLabel) },
68
41
  clone,
69
- React__default.default.createElement("input", { type: 'radio', autoComplete: 'off', onChange: handleChange, disabled: disabled || child.props.disabled, name: name, checked: checked, className: styles.hiddenInput, value: child.props.value })));
42
+ React__default.default.createElement("input", { type: 'radio', autoComplete: 'off', onChange: function (event) { return handleChange(event, childValue); }, disabled: disabled || child.props.disabled, name: name, checked: checked, className: styles.hiddenInput, value: child.props.value })));
70
43
  };
71
44
  var errorMessage = typeof error === 'boolean' ? '' : error;
72
45
  return (React__default.default.createElement("div", { className: cn__default.default(styles.component, styles[type], styles[direction], (_b = {}, _b[styles.error] = error, _b), className), "data-test-id": dataTestId, ref: ref },
@@ -80,13 +53,5 @@ var RadioGroup = React.forwardRef(function (_a, ref) {
80
53
  errorMessage && (React__default.default.createElement("span", { className: cn__default.default(styles.sub, styles.errorMessage), role: 'alert' }, errorMessage)),
81
54
  hint && !errorMessage && (React__default.default.createElement("span", { className: cn__default.default(styles.sub, styles.hint) }, hint))));
82
55
  });
83
- /**
84
- * Для отображения в сторибуке
85
- */
86
- RadioGroup.defaultProps = {
87
- direction: 'vertical',
88
- type: 'radio',
89
- disabled: false,
90
- };
91
56
 
92
57
  exports.RadioGroup = RadioGroup;
@@ -35,7 +35,7 @@ type RadioGroupProps = {
35
35
  /**
36
36
  * Обработчик изменения значения 'checked' одного из дочерних компонентов
37
37
  */
38
- onChange?: (event?: ChangeEvent | MouseEvent, payload?: {
38
+ onChange?: (event: ChangeEvent | MouseEvent, payload: {
39
39
  value: string;
40
40
  name?: string;
41
41
  }) => void;
package/cssm/Component.js CHANGED
@@ -1,7 +1,9 @@
1
1
  'use strict';
2
2
 
3
+ var tslib = require('tslib');
3
4
  var React = require('react');
4
5
  var cn = require('classnames');
6
+ var hooks = require('@alfalab/hooks');
5
7
  var styles = require('./index.module.css');
6
8
 
7
9
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -10,62 +12,33 @@ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
10
12
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
11
13
  var styles__default = /*#__PURE__*/_interopDefaultCompat(styles);
12
14
 
13
- /******************************************************************************
14
- Copyright (c) Microsoft Corporation.
15
-
16
- Permission to use, copy, modify, and/or distribute this software for any
17
- purpose with or without fee is hereby granted.
18
-
19
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
20
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
21
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
22
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
23
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
24
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
25
- PERFORMANCE OF THIS SOFTWARE.
26
- ***************************************************************************** */
27
- var __assign = function () {
28
- __assign = Object.assign || function __assign(t) {
29
- for (var s, i = 1, n = arguments.length; i < n; i++) {
30
- s = arguments[i];
31
- for (var p in s)
32
- if (Object.prototype.hasOwnProperty.call(s, p))
33
- t[p] = s[p];
34
- }
35
- return t;
36
- };
37
- return __assign.apply(this, arguments);
38
- };
39
-
40
15
  var RadioGroup = React.forwardRef(function (_a, ref) {
41
16
  var _b;
42
17
  var children = _a.children, className = _a.className, _c = _a.direction, direction = _c === void 0 ? 'vertical' : _c, label = _a.label, error = _a.error, hint = _a.hint, onChange = _a.onChange, onBlur = _a.onBlur, onFocus = _a.onFocus, _d = _a.type, type = _d === void 0 ? 'radio' : _d, dataTestId = _a.dataTestId, _e = _a.disabled, disabled = _e === void 0 ? false : _e, name = _a.name, value = _a.value;
43
18
  var _f = React.useState(''), stateValue = _f[0], setStateValue = _f[1];
19
+ hooks.useDidUpdateEffect(function () {
20
+ setStateValue(value);
21
+ }, [value]);
22
+ var isChecked = function (childValue) {
23
+ return value !== null && (value || stateValue) === childValue;
24
+ };
25
+ var handleChange = function (event, childValue) {
26
+ setStateValue(childValue);
27
+ if (onChange) {
28
+ onChange(event, { name: name, value: childValue });
29
+ }
30
+ };
44
31
  var renderRadio = function (child) {
45
- var childClassName = child.props.className;
46
- var checked = value !== null && (value || stateValue) === child.props.value;
47
- var handleChange = function (event) {
48
- setStateValue(child.props.value);
49
- if (onChange) {
50
- onChange(event, { name: name, value: child.props.value });
51
- }
52
- };
53
- return React.cloneElement(child, __assign(__assign({ onChange: handleChange, disabled: disabled }, child.props), { checked: checked, name: name, className: cn__default.default(childClassName, styles__default.default.radio) }));
32
+ var _a = child.props, childClassName = _a.className, childValue = _a.value;
33
+ return React.cloneElement(child, tslib.__assign(tslib.__assign({ onChange: function (event) { return handleChange(event, childValue); }, disabled: disabled }, child.props), { checked: isChecked(childValue), name: name, className: cn__default.default(childClassName, styles__default.default.radio) }));
54
34
  };
55
35
  var renderTag = function (child) {
56
- var checked = value !== null && (value || stateValue) === child.props.value;
57
- var handleChange = function (event) {
58
- setStateValue(child.props.value);
59
- if (onChange) {
60
- onChange(event, { name: name, value: child.props.value });
61
- }
62
- };
63
- var clone = React.cloneElement(child, __assign(__assign({ onClick: handleChange, disabled: disabled }, child.props), { checked: checked, name: name }));
64
- return (
65
- // eslint-disable-next-line jsx-a11y/label-has-associated-control
66
- React__default.default.createElement("label", { className: cn__default.default(styles__default.default.radio, styles__default.default.tagLabel) },
36
+ var childValue = child.props.value;
37
+ var checked = isChecked(childValue);
38
+ var clone = React.cloneElement(child, tslib.__assign(tslib.__assign({ onClick: function (event) { return handleChange(event, childValue); }, disabled: disabled }, child.props), { checked: checked, name: name }));
39
+ return (React__default.default.createElement("label", { className: cn__default.default(styles__default.default.radio, styles__default.default.tagLabel) },
67
40
  clone,
68
- React__default.default.createElement("input", { type: 'radio', autoComplete: 'off', onChange: handleChange, disabled: disabled || child.props.disabled, name: name, checked: checked, className: styles__default.default.hiddenInput, value: child.props.value })));
41
+ React__default.default.createElement("input", { type: 'radio', autoComplete: 'off', onChange: function (event) { return handleChange(event, childValue); }, disabled: disabled || child.props.disabled, name: name, checked: checked, className: styles__default.default.hiddenInput, value: child.props.value })));
69
42
  };
70
43
  var errorMessage = typeof error === 'boolean' ? '' : error;
71
44
  return (React__default.default.createElement("div", { className: cn__default.default(styles__default.default.component, styles__default.default[type], styles__default.default[direction], (_b = {}, _b[styles__default.default.error] = error, _b), className), "data-test-id": dataTestId, ref: ref },
@@ -79,13 +52,5 @@ var RadioGroup = React.forwardRef(function (_a, ref) {
79
52
  errorMessage && (React__default.default.createElement("span", { className: cn__default.default(styles__default.default.sub, styles__default.default.errorMessage), role: 'alert' }, errorMessage)),
80
53
  hint && !errorMessage && (React__default.default.createElement("span", { className: cn__default.default(styles__default.default.sub, styles__default.default.hint) }, hint))));
81
54
  });
82
- /**
83
- * Для отображения в сторибуке
84
- */
85
- RadioGroup.defaultProps = {
86
- direction: 'vertical',
87
- type: 'radio',
88
- disabled: false,
89
- };
90
55
 
91
56
  exports.RadioGroup = RadioGroup;
package/cssm/index.js CHANGED
@@ -1,8 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  var Component = require('./Component.js');
4
+ require('tslib');
4
5
  require('react');
5
6
  require('classnames');
7
+ require('@alfalab/hooks');
6
8
  require('./index.module.css');
7
9
 
8
10
 
@@ -1,91 +1,78 @@
1
1
  :root {
2
+ } /* deprecated */ :root {
2
3
  --color-light-text-negative: #d91d0b;
3
4
  --color-light-text-primary: #0b1f35;
4
5
  --color-light-text-secondary: rgba(11, 31, 53, 0.7);
5
- }
6
- :root {
6
+ } :root {
7
+ } :root {
8
+ } :root {
7
9
 
8
10
  /* Hard */
9
11
 
10
12
  /* Up */
11
13
 
12
14
  /* Hard up */
13
- }
14
- :root {
15
+ } :root {
16
+ } :root {
15
17
  --gap-xs: 8px;
16
18
  --gap-s: 12px;
17
19
  --gap-m: 16px;
18
20
  --gap-xl: 24px;
19
21
  --gap-xs-neg: -8px;
20
22
  --gap-xl-neg: -24px;
21
- }
22
- :root {
23
+ } :root {
24
+ } :root {
25
+ } :root {
23
26
  --radio-group-error-color: var(--color-light-text-negative);
24
27
  --radio-group-hint-color: var(--color-light-text-secondary);
25
28
  --radio-group-label-color: var(--color-light-text-primary);
26
- }
27
- .component {
29
+ } .component {
28
30
  display: flex;
29
31
  flex-direction: column;
30
- }
31
- .error {
32
+ } .error {
32
33
  padding-left: var(--gap-xs);
33
34
  border-left: 1px solid var(--radio-group-error-color);
34
- }
35
- .radioList {
35
+ } .radioList {
36
36
  display: flex;
37
- }
38
- .vertical .radioList {
37
+ } .vertical .radioList {
39
38
  flex-direction: column;
40
39
  align-items: flex-start;
41
- }
42
- .vertical .radio {
40
+ } .vertical .radio {
43
41
  margin-bottom: var(--gap-m)
44
- }
45
- .vertical .radio:last-child {
42
+ } .vertical .radio:last-child {
46
43
  margin-bottom: 0;
47
- }
48
- .horizontal .radioList {
44
+ } .horizontal .radioList {
49
45
  flex-wrap: wrap;
50
46
  margin-right: var(--gap-xl-neg);
51
47
  margin-bottom: var(--gap-xs-neg);
52
- }
53
- .tag.horizontal .radioList {
48
+ } .tag.horizontal .radioList {
54
49
  margin-right: var(--gap-xs-neg);
55
- }
56
- .horizontal .radio {
50
+ } .horizontal .radio {
57
51
  margin-right: var(--gap-xl);
58
52
  margin-bottom: var(--gap-xs);
59
- }
60
- .horizontal .tagLabel {
53
+ } .horizontal .tagLabel {
61
54
  margin-right: var(--gap-xs);
62
- }
63
- .label {
55
+ } .label {
64
56
  font-size: 16px;
65
57
  line-height: 24px;
66
58
  font-weight: 400;
67
59
  margin-bottom: var(--gap-s);
68
60
  color: var(--radio-group-label-color);
69
- }
70
- .sub {
61
+ } .sub {
71
62
  font-size: 14px;
72
63
  line-height: 18px;
73
64
  font-weight: 400;
74
65
  margin-top: var(--gap-s);
75
- }
76
- .errorMessage {
66
+ } .errorMessage {
77
67
  color: var(--radio-group-error-color);
78
- }
79
- .hint {
68
+ } .hint {
80
69
  color: var(--radio-group-hint-color);
81
- }
82
- .hiddenInput {
70
+ } .hiddenInput {
83
71
  position: absolute;
84
72
  z-index: -1;
85
73
  top: 0;
86
74
  left: 0;
87
75
  opacity: 0;
88
- }
89
- .tagLabel {
76
+ } .tagLabel {
90
77
  position: relative;
91
78
  }
@@ -35,7 +35,7 @@ type RadioGroupProps = {
35
35
  /**
36
36
  * Обработчик изменения значения 'checked' одного из дочерних компонентов
37
37
  */
38
- onChange?: (event?: ChangeEvent | MouseEvent, payload?: {
38
+ onChange?: (event: ChangeEvent | MouseEvent, payload: {
39
39
  value: string;
40
40
  name?: string;
41
41
  }) => void;
package/esm/Component.js CHANGED
@@ -1,65 +1,38 @@
1
+ import { __assign } from 'tslib';
1
2
  import React, { forwardRef, useState, Children, isValidElement, cloneElement } from 'react';
2
3
  import cn from 'classnames';
4
+ import { useDidUpdateEffect } from '@alfalab/hooks';
3
5
 
4
- /******************************************************************************
5
- Copyright (c) Microsoft Corporation.
6
-
7
- Permission to use, copy, modify, and/or distribute this software for any
8
- purpose with or without fee is hereby granted.
9
-
10
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
11
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
12
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
13
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
14
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
15
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16
- PERFORMANCE OF THIS SOFTWARE.
17
- ***************************************************************************** */
18
- var __assign = function () {
19
- __assign = Object.assign || function __assign(t) {
20
- for (var s, i = 1, n = arguments.length; i < n; i++) {
21
- s = arguments[i];
22
- for (var p in s)
23
- if (Object.prototype.hasOwnProperty.call(s, p))
24
- t[p] = s[p];
25
- }
26
- return t;
27
- };
28
- return __assign.apply(this, arguments);
29
- };
30
-
31
- var styles = {"component":"radio-group__component_emfj8","error":"radio-group__error_emfj8","radioList":"radio-group__radioList_emfj8","vertical":"radio-group__vertical_emfj8","radio":"radio-group__radio_emfj8","horizontal":"radio-group__horizontal_emfj8","tag":"radio-group__tag_emfj8","tagLabel":"radio-group__tagLabel_emfj8","label":"radio-group__label_emfj8","sub":"radio-group__sub_emfj8","errorMessage":"radio-group__errorMessage_emfj8","hint":"radio-group__hint_emfj8","hiddenInput":"radio-group__hiddenInput_emfj8"};
6
+ var styles = {"component":"radio-group__component_mw9ie","error":"radio-group__error_mw9ie","radioList":"radio-group__radioList_mw9ie","vertical":"radio-group__vertical_mw9ie","radio":"radio-group__radio_mw9ie","horizontal":"radio-group__horizontal_mw9ie","tag":"radio-group__tag_mw9ie","tagLabel":"radio-group__tagLabel_mw9ie","label":"radio-group__label_mw9ie","sub":"radio-group__sub_mw9ie","errorMessage":"radio-group__errorMessage_mw9ie","hint":"radio-group__hint_mw9ie","hiddenInput":"radio-group__hiddenInput_mw9ie"};
32
7
  require('./index.css')
33
8
 
34
9
  var RadioGroup = forwardRef(function (_a, ref) {
35
10
  var _b;
36
11
  var children = _a.children, className = _a.className, _c = _a.direction, direction = _c === void 0 ? 'vertical' : _c, label = _a.label, error = _a.error, hint = _a.hint, onChange = _a.onChange, onBlur = _a.onBlur, onFocus = _a.onFocus, _d = _a.type, type = _d === void 0 ? 'radio' : _d, dataTestId = _a.dataTestId, _e = _a.disabled, disabled = _e === void 0 ? false : _e, name = _a.name, value = _a.value;
37
12
  var _f = useState(''), stateValue = _f[0], setStateValue = _f[1];
13
+ useDidUpdateEffect(function () {
14
+ setStateValue(value);
15
+ }, [value]);
16
+ var isChecked = function (childValue) {
17
+ return value !== null && (value || stateValue) === childValue;
18
+ };
19
+ var handleChange = function (event, childValue) {
20
+ setStateValue(childValue);
21
+ if (onChange) {
22
+ onChange(event, { name: name, value: childValue });
23
+ }
24
+ };
38
25
  var renderRadio = function (child) {
39
- var childClassName = child.props.className;
40
- var checked = value !== null && (value || stateValue) === child.props.value;
41
- var handleChange = function (event) {
42
- setStateValue(child.props.value);
43
- if (onChange) {
44
- onChange(event, { name: name, value: child.props.value });
45
- }
46
- };
47
- return cloneElement(child, __assign(__assign({ onChange: handleChange, disabled: disabled }, child.props), { checked: checked, name: name, className: cn(childClassName, styles.radio) }));
26
+ var _a = child.props, childClassName = _a.className, childValue = _a.value;
27
+ return cloneElement(child, __assign(__assign({ onChange: function (event) { return handleChange(event, childValue); }, disabled: disabled }, child.props), { checked: isChecked(childValue), name: name, className: cn(childClassName, styles.radio) }));
48
28
  };
49
29
  var renderTag = function (child) {
50
- var checked = value !== null && (value || stateValue) === child.props.value;
51
- var handleChange = function (event) {
52
- setStateValue(child.props.value);
53
- if (onChange) {
54
- onChange(event, { name: name, value: child.props.value });
55
- }
56
- };
57
- var clone = cloneElement(child, __assign(__assign({ onClick: handleChange, disabled: disabled }, child.props), { checked: checked, name: name }));
58
- return (
59
- // eslint-disable-next-line jsx-a11y/label-has-associated-control
60
- React.createElement("label", { className: cn(styles.radio, styles.tagLabel) },
30
+ var childValue = child.props.value;
31
+ var checked = isChecked(childValue);
32
+ var clone = cloneElement(child, __assign(__assign({ onClick: function (event) { return handleChange(event, childValue); }, disabled: disabled }, child.props), { checked: checked, name: name }));
33
+ return (React.createElement("label", { className: cn(styles.radio, styles.tagLabel) },
61
34
  clone,
62
- React.createElement("input", { type: 'radio', autoComplete: 'off', onChange: handleChange, disabled: disabled || child.props.disabled, name: name, checked: checked, className: styles.hiddenInput, value: child.props.value })));
35
+ React.createElement("input", { type: 'radio', autoComplete: 'off', onChange: function (event) { return handleChange(event, childValue); }, disabled: disabled || child.props.disabled, name: name, checked: checked, className: styles.hiddenInput, value: child.props.value })));
63
36
  };
64
37
  var errorMessage = typeof error === 'boolean' ? '' : error;
65
38
  return (React.createElement("div", { className: cn(styles.component, styles[type], styles[direction], (_b = {}, _b[styles.error] = error, _b), className), "data-test-id": dataTestId, ref: ref },
@@ -73,13 +46,5 @@ var RadioGroup = forwardRef(function (_a, ref) {
73
46
  errorMessage && (React.createElement("span", { className: cn(styles.sub, styles.errorMessage), role: 'alert' }, errorMessage)),
74
47
  hint && !errorMessage && (React.createElement("span", { className: cn(styles.sub, styles.hint) }, hint))));
75
48
  });
76
- /**
77
- * Для отображения в сторибуке
78
- */
79
- RadioGroup.defaultProps = {
80
- direction: 'vertical',
81
- type: 'radio',
82
- disabled: false,
83
- };
84
49
 
85
50
  export { RadioGroup };
package/esm/index.css CHANGED
@@ -1,92 +1,79 @@
1
- /* hash: 1thhv */
1
+ /* hash: 1xnam */
2
2
  :root {
3
+ } /* deprecated */ :root {
3
4
  --color-light-text-negative: #d91d0b;
4
5
  --color-light-text-primary: #0b1f35;
5
6
  --color-light-text-secondary: rgba(11, 31, 53, 0.7);
6
- }
7
- :root {
7
+ } :root {
8
+ } :root {
9
+ } :root {
8
10
 
9
11
  /* Hard */
10
12
 
11
13
  /* Up */
12
14
 
13
15
  /* Hard up */
14
- }
15
- :root {
16
+ } :root {
17
+ } :root {
16
18
  --gap-xs: 8px;
17
19
  --gap-s: 12px;
18
20
  --gap-m: 16px;
19
21
  --gap-xl: 24px;
20
22
  --gap-xs-neg: -8px;
21
23
  --gap-xl-neg: -24px;
22
- }
23
- :root {
24
+ } :root {
25
+ } :root {
26
+ } :root {
24
27
  --radio-group-error-color: var(--color-light-text-negative);
25
28
  --radio-group-hint-color: var(--color-light-text-secondary);
26
29
  --radio-group-label-color: var(--color-light-text-primary);
27
- }
28
- .radio-group__component_emfj8 {
30
+ } .radio-group__component_mw9ie {
29
31
  display: flex;
30
32
  flex-direction: column;
31
- }
32
- .radio-group__error_emfj8 {
33
+ } .radio-group__error_mw9ie {
33
34
  padding-left: var(--gap-xs);
34
35
  border-left: 1px solid var(--radio-group-error-color);
35
- }
36
- .radio-group__radioList_emfj8 {
36
+ } .radio-group__radioList_mw9ie {
37
37
  display: flex;
38
- }
39
- .radio-group__vertical_emfj8 .radio-group__radioList_emfj8 {
38
+ } .radio-group__vertical_mw9ie .radio-group__radioList_mw9ie {
40
39
  flex-direction: column;
41
40
  align-items: flex-start;
42
- }
43
- .radio-group__vertical_emfj8 .radio-group__radio_emfj8 {
41
+ } .radio-group__vertical_mw9ie .radio-group__radio_mw9ie {
44
42
  margin-bottom: var(--gap-m)
45
- }
46
- .radio-group__vertical_emfj8 .radio-group__radio_emfj8:last-child {
43
+ } .radio-group__vertical_mw9ie .radio-group__radio_mw9ie:last-child {
47
44
  margin-bottom: 0;
48
- }
49
- .radio-group__horizontal_emfj8 .radio-group__radioList_emfj8 {
45
+ } .radio-group__horizontal_mw9ie .radio-group__radioList_mw9ie {
50
46
  flex-wrap: wrap;
51
47
  margin-right: var(--gap-xl-neg);
52
48
  margin-bottom: var(--gap-xs-neg);
53
- }
54
- .radio-group__tag_emfj8.radio-group__horizontal_emfj8 .radio-group__radioList_emfj8 {
49
+ } .radio-group__tag_mw9ie.radio-group__horizontal_mw9ie .radio-group__radioList_mw9ie {
55
50
  margin-right: var(--gap-xs-neg);
56
- }
57
- .radio-group__horizontal_emfj8 .radio-group__radio_emfj8 {
51
+ } .radio-group__horizontal_mw9ie .radio-group__radio_mw9ie {
58
52
  margin-right: var(--gap-xl);
59
53
  margin-bottom: var(--gap-xs);
60
- }
61
- .radio-group__horizontal_emfj8 .radio-group__tagLabel_emfj8 {
54
+ } .radio-group__horizontal_mw9ie .radio-group__tagLabel_mw9ie {
62
55
  margin-right: var(--gap-xs);
63
- }
64
- .radio-group__label_emfj8 {
56
+ } .radio-group__label_mw9ie {
65
57
  font-size: 16px;
66
58
  line-height: 24px;
67
59
  font-weight: 400;
68
60
  margin-bottom: var(--gap-s);
69
61
  color: var(--radio-group-label-color);
70
- }
71
- .radio-group__sub_emfj8 {
62
+ } .radio-group__sub_mw9ie {
72
63
  font-size: 14px;
73
64
  line-height: 18px;
74
65
  font-weight: 400;
75
66
  margin-top: var(--gap-s);
76
- }
77
- .radio-group__errorMessage_emfj8 {
67
+ } .radio-group__errorMessage_mw9ie {
78
68
  color: var(--radio-group-error-color);
79
- }
80
- .radio-group__hint_emfj8 {
69
+ } .radio-group__hint_mw9ie {
81
70
  color: var(--radio-group-hint-color);
82
- }
83
- .radio-group__hiddenInput_emfj8 {
71
+ } .radio-group__hiddenInput_mw9ie {
84
72
  position: absolute;
85
73
  z-index: -1;
86
74
  top: 0;
87
75
  left: 0;
88
76
  opacity: 0;
89
- }
90
- .radio-group__tagLabel_emfj8 {
77
+ } .radio-group__tagLabel_mw9ie {
91
78
  position: relative;
92
79
  }
package/esm/index.js CHANGED
@@ -1,3 +1,5 @@
1
1
  export { RadioGroup } from './Component.js';
2
+ import 'tslib';
2
3
  import 'react';
3
4
  import 'classnames';
5
+ import '@alfalab/hooks';
package/index.css CHANGED
@@ -1,92 +1,79 @@
1
- /* hash: 1thhv */
1
+ /* hash: 1xnam */
2
2
  :root {
3
+ } /* deprecated */ :root {
3
4
  --color-light-text-negative: #d91d0b;
4
5
  --color-light-text-primary: #0b1f35;
5
6
  --color-light-text-secondary: rgba(11, 31, 53, 0.7);
6
- }
7
- :root {
7
+ } :root {
8
+ } :root {
9
+ } :root {
8
10
 
9
11
  /* Hard */
10
12
 
11
13
  /* Up */
12
14
 
13
15
  /* Hard up */
14
- }
15
- :root {
16
+ } :root {
17
+ } :root {
16
18
  --gap-xs: 8px;
17
19
  --gap-s: 12px;
18
20
  --gap-m: 16px;
19
21
  --gap-xl: 24px;
20
22
  --gap-xs-neg: -8px;
21
23
  --gap-xl-neg: -24px;
22
- }
23
- :root {
24
+ } :root {
25
+ } :root {
26
+ } :root {
24
27
  --radio-group-error-color: var(--color-light-text-negative);
25
28
  --radio-group-hint-color: var(--color-light-text-secondary);
26
29
  --radio-group-label-color: var(--color-light-text-primary);
27
- }
28
- .radio-group__component_emfj8 {
30
+ } .radio-group__component_mw9ie {
29
31
  display: flex;
30
32
  flex-direction: column;
31
- }
32
- .radio-group__error_emfj8 {
33
+ } .radio-group__error_mw9ie {
33
34
  padding-left: var(--gap-xs);
34
35
  border-left: 1px solid var(--radio-group-error-color);
35
- }
36
- .radio-group__radioList_emfj8 {
36
+ } .radio-group__radioList_mw9ie {
37
37
  display: flex;
38
- }
39
- .radio-group__vertical_emfj8 .radio-group__radioList_emfj8 {
38
+ } .radio-group__vertical_mw9ie .radio-group__radioList_mw9ie {
40
39
  flex-direction: column;
41
40
  align-items: flex-start;
42
- }
43
- .radio-group__vertical_emfj8 .radio-group__radio_emfj8 {
41
+ } .radio-group__vertical_mw9ie .radio-group__radio_mw9ie {
44
42
  margin-bottom: var(--gap-m)
45
- }
46
- .radio-group__vertical_emfj8 .radio-group__radio_emfj8:last-child {
43
+ } .radio-group__vertical_mw9ie .radio-group__radio_mw9ie:last-child {
47
44
  margin-bottom: 0;
48
- }
49
- .radio-group__horizontal_emfj8 .radio-group__radioList_emfj8 {
45
+ } .radio-group__horizontal_mw9ie .radio-group__radioList_mw9ie {
50
46
  flex-wrap: wrap;
51
47
  margin-right: var(--gap-xl-neg);
52
48
  margin-bottom: var(--gap-xs-neg);
53
- }
54
- .radio-group__tag_emfj8.radio-group__horizontal_emfj8 .radio-group__radioList_emfj8 {
49
+ } .radio-group__tag_mw9ie.radio-group__horizontal_mw9ie .radio-group__radioList_mw9ie {
55
50
  margin-right: var(--gap-xs-neg);
56
- }
57
- .radio-group__horizontal_emfj8 .radio-group__radio_emfj8 {
51
+ } .radio-group__horizontal_mw9ie .radio-group__radio_mw9ie {
58
52
  margin-right: var(--gap-xl);
59
53
  margin-bottom: var(--gap-xs);
60
- }
61
- .radio-group__horizontal_emfj8 .radio-group__tagLabel_emfj8 {
54
+ } .radio-group__horizontal_mw9ie .radio-group__tagLabel_mw9ie {
62
55
  margin-right: var(--gap-xs);
63
- }
64
- .radio-group__label_emfj8 {
56
+ } .radio-group__label_mw9ie {
65
57
  font-size: 16px;
66
58
  line-height: 24px;
67
59
  font-weight: 400;
68
60
  margin-bottom: var(--gap-s);
69
61
  color: var(--radio-group-label-color);
70
- }
71
- .radio-group__sub_emfj8 {
62
+ } .radio-group__sub_mw9ie {
72
63
  font-size: 14px;
73
64
  line-height: 18px;
74
65
  font-weight: 400;
75
66
  margin-top: var(--gap-s);
76
- }
77
- .radio-group__errorMessage_emfj8 {
67
+ } .radio-group__errorMessage_mw9ie {
78
68
  color: var(--radio-group-error-color);
79
- }
80
- .radio-group__hint_emfj8 {
69
+ } .radio-group__hint_mw9ie {
81
70
  color: var(--radio-group-hint-color);
82
- }
83
- .radio-group__hiddenInput_emfj8 {
71
+ } .radio-group__hiddenInput_mw9ie {
84
72
  position: absolute;
85
73
  z-index: -1;
86
74
  top: 0;
87
75
  left: 0;
88
76
  opacity: 0;
89
- }
90
- .radio-group__tagLabel_emfj8 {
77
+ } .radio-group__tagLabel_mw9ie {
91
78
  position: relative;
92
79
  }
package/index.js CHANGED
@@ -1,8 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  var Component = require('./Component.js');
4
+ require('tslib');
4
5
  require('react');
5
6
  require('classnames');
7
+ require('@alfalab/hooks');
6
8
 
7
9
 
8
10
 
@@ -35,7 +35,7 @@ type RadioGroupProps = {
35
35
  /**
36
36
  * Обработчик изменения значения 'checked' одного из дочерних компонентов
37
37
  */
38
- onChange?: (event?: ChangeEvent | MouseEvent, payload?: {
38
+ onChange?: (event: ChangeEvent | MouseEvent, payload: {
39
39
  value: string;
40
40
  name?: string;
41
41
  }) => void;
@@ -1,49 +1,46 @@
1
1
  import React, { forwardRef, useState, Children, isValidElement, cloneElement } from 'react';
2
2
  import cn from 'classnames';
3
+ import { useDidUpdateEffect } from '@alfalab/hooks';
3
4
 
4
- const styles = {"component":"radio-group__component_emfj8","error":"radio-group__error_emfj8","radioList":"radio-group__radioList_emfj8","vertical":"radio-group__vertical_emfj8","radio":"radio-group__radio_emfj8","horizontal":"radio-group__horizontal_emfj8","tag":"radio-group__tag_emfj8","tagLabel":"radio-group__tagLabel_emfj8","label":"radio-group__label_emfj8","sub":"radio-group__sub_emfj8","errorMessage":"radio-group__errorMessage_emfj8","hint":"radio-group__hint_emfj8","hiddenInput":"radio-group__hiddenInput_emfj8"};
5
+ const styles = {"component":"radio-group__component_mw9ie","error":"radio-group__error_mw9ie","radioList":"radio-group__radioList_mw9ie","vertical":"radio-group__vertical_mw9ie","radio":"radio-group__radio_mw9ie","horizontal":"radio-group__horizontal_mw9ie","tag":"radio-group__tag_mw9ie","tagLabel":"radio-group__tagLabel_mw9ie","label":"radio-group__label_mw9ie","sub":"radio-group__sub_mw9ie","errorMessage":"radio-group__errorMessage_mw9ie","hint":"radio-group__hint_mw9ie","hiddenInput":"radio-group__hiddenInput_mw9ie"};
5
6
  require('./index.css')
6
7
 
7
8
  const RadioGroup = forwardRef(({ children, className, direction = 'vertical', label, error, hint, onChange, onBlur, onFocus, type = 'radio', dataTestId, disabled = false, name, value, }, ref) => {
8
9
  const [stateValue, setStateValue] = useState('');
10
+ useDidUpdateEffect(() => {
11
+ setStateValue(value);
12
+ }, [value]);
13
+ const isChecked = (childValue) => value !== null && (value || stateValue) === childValue;
14
+ const handleChange = (event, childValue) => {
15
+ setStateValue(childValue);
16
+ if (onChange) {
17
+ onChange(event, { name, value: childValue });
18
+ }
19
+ };
9
20
  const renderRadio = (child) => {
10
- const { className: childClassName } = child.props;
11
- const checked = value !== null && (value || stateValue) === child.props.value;
12
- const handleChange = (event) => {
13
- setStateValue(child.props.value);
14
- if (onChange) {
15
- onChange(event, { name, value: child.props.value });
16
- }
17
- };
21
+ const { className: childClassName, value: childValue } = child.props;
18
22
  return cloneElement(child, {
19
- onChange: handleChange,
23
+ onChange: (event) => handleChange(event, childValue),
20
24
  disabled,
21
25
  ...child.props,
22
- checked,
26
+ checked: isChecked(childValue),
23
27
  name,
24
28
  className: cn(childClassName, styles.radio),
25
29
  });
26
30
  };
27
31
  const renderTag = (child) => {
28
- const checked = value !== null && (value || stateValue) === child.props.value;
29
- const handleChange = (event) => {
30
- setStateValue(child.props.value);
31
- if (onChange) {
32
- onChange(event, { name, value: child.props.value });
33
- }
34
- };
32
+ const childValue = child.props.value;
33
+ const checked = isChecked(childValue);
35
34
  const clone = cloneElement(child, {
36
- onClick: handleChange,
35
+ onClick: (event) => handleChange(event, childValue),
37
36
  disabled,
38
37
  ...child.props,
39
38
  checked,
40
39
  name,
41
40
  });
42
- return (
43
- // eslint-disable-next-line jsx-a11y/label-has-associated-control
44
- React.createElement("label", { className: cn(styles.radio, styles.tagLabel) },
41
+ return (React.createElement("label", { className: cn(styles.radio, styles.tagLabel) },
45
42
  clone,
46
- React.createElement("input", { type: 'radio', autoComplete: 'off', onChange: handleChange, disabled: disabled || child.props.disabled, name: name, checked: checked, className: styles.hiddenInput, value: child.props.value })));
43
+ React.createElement("input", { type: 'radio', autoComplete: 'off', onChange: (event) => handleChange(event, childValue), disabled: disabled || child.props.disabled, name: name, checked: checked, className: styles.hiddenInput, value: child.props.value })));
47
44
  };
48
45
  const errorMessage = typeof error === 'boolean' ? '' : error;
49
46
  return (React.createElement("div", { className: cn(styles.component, styles[type], styles[direction], { [styles.error]: error }, className), "data-test-id": dataTestId, ref: ref },
@@ -57,13 +54,5 @@ const RadioGroup = forwardRef(({ children, className, direction = 'vertical', la
57
54
  errorMessage && (React.createElement("span", { className: cn(styles.sub, styles.errorMessage), role: 'alert' }, errorMessage)),
58
55
  hint && !errorMessage && (React.createElement("span", { className: cn(styles.sub, styles.hint) }, hint))));
59
56
  });
60
- /**
61
- * Для отображения в сторибуке
62
- */
63
- RadioGroup.defaultProps = {
64
- direction: 'vertical',
65
- type: 'radio',
66
- disabled: false,
67
- };
68
57
 
69
58
  export { RadioGroup };
package/modern/index.css CHANGED
@@ -1,92 +1,79 @@
1
- /* hash: 1thhv */
1
+ /* hash: 1xnam */
2
2
  :root {
3
+ } /* deprecated */ :root {
3
4
  --color-light-text-negative: #d91d0b;
4
5
  --color-light-text-primary: #0b1f35;
5
6
  --color-light-text-secondary: rgba(11, 31, 53, 0.7);
6
- }
7
- :root {
7
+ } :root {
8
+ } :root {
9
+ } :root {
8
10
 
9
11
  /* Hard */
10
12
 
11
13
  /* Up */
12
14
 
13
15
  /* Hard up */
14
- }
15
- :root {
16
+ } :root {
17
+ } :root {
16
18
  --gap-xs: 8px;
17
19
  --gap-s: 12px;
18
20
  --gap-m: 16px;
19
21
  --gap-xl: 24px;
20
22
  --gap-xs-neg: -8px;
21
23
  --gap-xl-neg: -24px;
22
- }
23
- :root {
24
+ } :root {
25
+ } :root {
26
+ } :root {
24
27
  --radio-group-error-color: var(--color-light-text-negative);
25
28
  --radio-group-hint-color: var(--color-light-text-secondary);
26
29
  --radio-group-label-color: var(--color-light-text-primary);
27
- }
28
- .radio-group__component_emfj8 {
30
+ } .radio-group__component_mw9ie {
29
31
  display: flex;
30
32
  flex-direction: column;
31
- }
32
- .radio-group__error_emfj8 {
33
+ } .radio-group__error_mw9ie {
33
34
  padding-left: var(--gap-xs);
34
35
  border-left: 1px solid var(--radio-group-error-color);
35
- }
36
- .radio-group__radioList_emfj8 {
36
+ } .radio-group__radioList_mw9ie {
37
37
  display: flex;
38
- }
39
- .radio-group__vertical_emfj8 .radio-group__radioList_emfj8 {
38
+ } .radio-group__vertical_mw9ie .radio-group__radioList_mw9ie {
40
39
  flex-direction: column;
41
40
  align-items: flex-start;
42
- }
43
- .radio-group__vertical_emfj8 .radio-group__radio_emfj8 {
41
+ } .radio-group__vertical_mw9ie .radio-group__radio_mw9ie {
44
42
  margin-bottom: var(--gap-m)
45
- }
46
- .radio-group__vertical_emfj8 .radio-group__radio_emfj8:last-child {
43
+ } .radio-group__vertical_mw9ie .radio-group__radio_mw9ie:last-child {
47
44
  margin-bottom: 0;
48
- }
49
- .radio-group__horizontal_emfj8 .radio-group__radioList_emfj8 {
45
+ } .radio-group__horizontal_mw9ie .radio-group__radioList_mw9ie {
50
46
  flex-wrap: wrap;
51
47
  margin-right: var(--gap-xl-neg);
52
48
  margin-bottom: var(--gap-xs-neg);
53
- }
54
- .radio-group__tag_emfj8.radio-group__horizontal_emfj8 .radio-group__radioList_emfj8 {
49
+ } .radio-group__tag_mw9ie.radio-group__horizontal_mw9ie .radio-group__radioList_mw9ie {
55
50
  margin-right: var(--gap-xs-neg);
56
- }
57
- .radio-group__horizontal_emfj8 .radio-group__radio_emfj8 {
51
+ } .radio-group__horizontal_mw9ie .radio-group__radio_mw9ie {
58
52
  margin-right: var(--gap-xl);
59
53
  margin-bottom: var(--gap-xs);
60
- }
61
- .radio-group__horizontal_emfj8 .radio-group__tagLabel_emfj8 {
54
+ } .radio-group__horizontal_mw9ie .radio-group__tagLabel_mw9ie {
62
55
  margin-right: var(--gap-xs);
63
- }
64
- .radio-group__label_emfj8 {
56
+ } .radio-group__label_mw9ie {
65
57
  font-size: 16px;
66
58
  line-height: 24px;
67
59
  font-weight: 400;
68
60
  margin-bottom: var(--gap-s);
69
61
  color: var(--radio-group-label-color);
70
- }
71
- .radio-group__sub_emfj8 {
62
+ } .radio-group__sub_mw9ie {
72
63
  font-size: 14px;
73
64
  line-height: 18px;
74
65
  font-weight: 400;
75
66
  margin-top: var(--gap-s);
76
- }
77
- .radio-group__errorMessage_emfj8 {
67
+ } .radio-group__errorMessage_mw9ie {
78
68
  color: var(--radio-group-error-color);
79
- }
80
- .radio-group__hint_emfj8 {
69
+ } .radio-group__hint_mw9ie {
81
70
  color: var(--radio-group-hint-color);
82
- }
83
- .radio-group__hiddenInput_emfj8 {
71
+ } .radio-group__hiddenInput_mw9ie {
84
72
  position: absolute;
85
73
  z-index: -1;
86
74
  top: 0;
87
75
  left: 0;
88
76
  opacity: 0;
89
- }
90
- .radio-group__tagLabel_emfj8 {
77
+ } .radio-group__tagLabel_mw9ie {
91
78
  position: relative;
92
79
  }
package/modern/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export { RadioGroup } from './Component.js';
2
2
  import 'react';
3
3
  import 'classnames';
4
+ import '@alfalab/hooks';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-radio-group",
3
- "version": "3.0.3",
3
+ "version": "3.0.5",
4
4
  "description": "Radio group",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -18,6 +18,8 @@
18
18
  "react-dom": "^16.9.0 || ^17.0.1 || ^18.0.0"
19
19
  },
20
20
  "dependencies": {
21
- "classnames": "^2.3.1"
21
+ "@alfalab/hooks": "^1.13.0",
22
+ "classnames": "^2.3.1",
23
+ "tslib": "^2.4.0"
22
24
  }
23
25
  }