@alfalab/core-components-radio-group 3.0.4 → 3.0.6

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,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var tslib = require('tslib');
3
4
  var React = require('react');
4
5
  var cn = require('classnames');
5
6
  var hooks = require('@alfalab/hooks');
@@ -9,34 +10,7 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
9
10
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
10
11
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
11
12
 
12
- /******************************************************************************
13
- Copyright (c) Microsoft Corporation.
14
-
15
- Permission to use, copy, modify, and/or distribute this software for any
16
- purpose with or without fee is hereby granted.
17
-
18
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
19
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
20
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
21
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
22
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
23
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
24
- PERFORMANCE OF THIS SOFTWARE.
25
- ***************************************************************************** */
26
- var __assign = function () {
27
- __assign = Object.assign || function __assign(t) {
28
- for (var s, i = 1, n = arguments.length; i < n; i++) {
29
- s = arguments[i];
30
- for (var p in s)
31
- if (Object.prototype.hasOwnProperty.call(s, p))
32
- t[p] = s[p];
33
- }
34
- return t;
35
- };
36
- return __assign.apply(this, arguments);
37
- };
38
-
39
- var styles = {"component":"radio-group__component_4qwa5","error":"radio-group__error_4qwa5","radioList":"radio-group__radioList_4qwa5","vertical":"radio-group__vertical_4qwa5","radio":"radio-group__radio_4qwa5","horizontal":"radio-group__horizontal_4qwa5","tag":"radio-group__tag_4qwa5","tagLabel":"radio-group__tagLabel_4qwa5","label":"radio-group__label_4qwa5","sub":"radio-group__sub_4qwa5","errorMessage":"radio-group__errorMessage_4qwa5","hint":"radio-group__hint_4qwa5","hiddenInput":"radio-group__hiddenInput_4qwa5"};
13
+ var styles = {"component":"radio-group__component_1upfw","error":"radio-group__error_1upfw","radioList":"radio-group__radioList_1upfw","vertical":"radio-group__vertical_1upfw","radio":"radio-group__radio_1upfw","horizontal":"radio-group__horizontal_1upfw","tag":"radio-group__tag_1upfw","tagLabel":"radio-group__tagLabel_1upfw","label":"radio-group__label_1upfw","sub":"radio-group__sub_1upfw","errorMessage":"radio-group__errorMessage_1upfw","hint":"radio-group__hint_1upfw","hiddenInput":"radio-group__hiddenInput_1upfw"};
40
14
  require('./index.css')
41
15
 
42
16
  var RadioGroup = React.forwardRef(function (_a, ref) {
@@ -57,15 +31,15 @@ var RadioGroup = React.forwardRef(function (_a, ref) {
57
31
  };
58
32
  var renderRadio = function (child) {
59
33
  var _a = child.props, childClassName = _a.className, childValue = _a.value;
60
- return React.cloneElement(child, __assign(__assign({ onChange: function (event) { return handleChange(event, childValue); }, disabled: disabled }, child.props), { checked: isChecked(childValue), name: name, className: cn__default.default(childClassName, styles.radio) }));
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) }));
61
35
  };
62
36
  var renderTag = function (child) {
63
37
  var childValue = child.props.value;
64
38
  var checked = isChecked(childValue);
65
- var clone = React.cloneElement(child, __assign(__assign({ onClick: function (event) { return handleChange(event, childValue); }, disabled: disabled }, child.props), { checked: checked, name: name }));
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, tabIndex: -1 }));
66
40
  return (React__default.default.createElement("label", { className: cn__default.default(styles.radio, styles.tagLabel) },
67
- clone,
68
- 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 })));
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.hiddenInput, value: child.props.value }),
42
+ clone));
69
43
  };
70
44
  var errorMessage = typeof error === 'boolean' ? '' : error;
71
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 },
@@ -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,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var tslib = require('tslib');
3
4
  var React = require('react');
4
5
  var cn = require('classnames');
5
6
  var hooks = require('@alfalab/hooks');
@@ -11,33 +12,6 @@ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
11
12
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
12
13
  var styles__default = /*#__PURE__*/_interopDefaultCompat(styles);
13
14
 
14
- /******************************************************************************
15
- Copyright (c) Microsoft Corporation.
16
-
17
- Permission to use, copy, modify, and/or distribute this software for any
18
- purpose with or without fee is hereby granted.
19
-
20
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
21
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
22
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
23
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
24
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
25
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
26
- PERFORMANCE OF THIS SOFTWARE.
27
- ***************************************************************************** */
28
- var __assign = function () {
29
- __assign = Object.assign || function __assign(t) {
30
- for (var s, i = 1, n = arguments.length; i < n; i++) {
31
- s = arguments[i];
32
- for (var p in s)
33
- if (Object.prototype.hasOwnProperty.call(s, p))
34
- t[p] = s[p];
35
- }
36
- return t;
37
- };
38
- return __assign.apply(this, arguments);
39
- };
40
-
41
15
  var RadioGroup = React.forwardRef(function (_a, ref) {
42
16
  var _b;
43
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;
@@ -56,15 +30,15 @@ var RadioGroup = React.forwardRef(function (_a, ref) {
56
30
  };
57
31
  var renderRadio = function (child) {
58
32
  var _a = child.props, childClassName = _a.className, childValue = _a.value;
59
- return React.cloneElement(child, __assign(__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) }));
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) }));
60
34
  };
61
35
  var renderTag = function (child) {
62
36
  var childValue = child.props.value;
63
37
  var checked = isChecked(childValue);
64
- var clone = React.cloneElement(child, __assign(__assign({ onClick: function (event) { return handleChange(event, childValue); }, disabled: disabled }, child.props), { checked: checked, name: name }));
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, tabIndex: -1 }));
65
39
  return (React__default.default.createElement("label", { className: cn__default.default(styles__default.default.radio, styles__default.default.tagLabel) },
66
- clone,
67
- 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 })));
40
+ 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 }),
41
+ clone));
68
42
  };
69
43
  var errorMessage = typeof error === 'boolean' ? '' : error;
70
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 },
package/cssm/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var Component = require('./Component.js');
4
+ require('tslib');
4
5
  require('react');
5
6
  require('classnames');
6
7
  require('@alfalab/hooks');
@@ -1,5 +1,6 @@
1
1
  :root {
2
2
  } /* deprecated */ :root {
3
+ --color-light-border-link: #007aff;
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);
@@ -22,6 +23,7 @@
22
23
  --gap-xl-neg: -24px;
23
24
  } :root {
24
25
  } :root {
26
+ --focus-color: var(--color-light-border-link);
25
27
  } :root {
26
28
  --radio-group-error-color: var(--color-light-text-negative);
27
29
  --radio-group-hint-color: var(--color-light-text-secondary);
@@ -72,7 +74,10 @@
72
74
  z-index: -1;
73
75
  top: 0;
74
76
  left: 0;
75
- opacity: 0;
76
- } .tagLabel {
77
+ opacity: 0
78
+ } .hiddenInput:focus ~ button {
79
+ outline: 2px solid var(--focus-color);
80
+ outline-offset: 2px;
81
+ } .tagLabel {
77
82
  position: relative;
78
83
  }
@@ -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,35 +1,9 @@
1
+ import { __assign } from 'tslib';
1
2
  import React, { forwardRef, useState, Children, isValidElement, cloneElement } from 'react';
2
3
  import cn from 'classnames';
3
4
  import { useDidUpdateEffect } from '@alfalab/hooks';
4
5
 
5
- /******************************************************************************
6
- Copyright (c) Microsoft Corporation.
7
-
8
- Permission to use, copy, modify, and/or distribute this software for any
9
- purpose with or without fee is hereby granted.
10
-
11
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
13
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
14
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
16
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17
- PERFORMANCE OF THIS SOFTWARE.
18
- ***************************************************************************** */
19
- var __assign = function () {
20
- __assign = Object.assign || function __assign(t) {
21
- for (var s, i = 1, n = arguments.length; i < n; i++) {
22
- s = arguments[i];
23
- for (var p in s)
24
- if (Object.prototype.hasOwnProperty.call(s, p))
25
- t[p] = s[p];
26
- }
27
- return t;
28
- };
29
- return __assign.apply(this, arguments);
30
- };
31
-
32
- var styles = {"component":"radio-group__component_4qwa5","error":"radio-group__error_4qwa5","radioList":"radio-group__radioList_4qwa5","vertical":"radio-group__vertical_4qwa5","radio":"radio-group__radio_4qwa5","horizontal":"radio-group__horizontal_4qwa5","tag":"radio-group__tag_4qwa5","tagLabel":"radio-group__tagLabel_4qwa5","label":"radio-group__label_4qwa5","sub":"radio-group__sub_4qwa5","errorMessage":"radio-group__errorMessage_4qwa5","hint":"radio-group__hint_4qwa5","hiddenInput":"radio-group__hiddenInput_4qwa5"};
6
+ var styles = {"component":"radio-group__component_1upfw","error":"radio-group__error_1upfw","radioList":"radio-group__radioList_1upfw","vertical":"radio-group__vertical_1upfw","radio":"radio-group__radio_1upfw","horizontal":"radio-group__horizontal_1upfw","tag":"radio-group__tag_1upfw","tagLabel":"radio-group__tagLabel_1upfw","label":"radio-group__label_1upfw","sub":"radio-group__sub_1upfw","errorMessage":"radio-group__errorMessage_1upfw","hint":"radio-group__hint_1upfw","hiddenInput":"radio-group__hiddenInput_1upfw"};
33
7
  require('./index.css')
34
8
 
35
9
  var RadioGroup = forwardRef(function (_a, ref) {
@@ -55,10 +29,10 @@ var RadioGroup = forwardRef(function (_a, ref) {
55
29
  var renderTag = function (child) {
56
30
  var childValue = child.props.value;
57
31
  var checked = isChecked(childValue);
58
- var clone = cloneElement(child, __assign(__assign({ onClick: function (event) { return handleChange(event, childValue); }, disabled: disabled }, child.props), { checked: checked, name: name }));
32
+ var clone = cloneElement(child, __assign(__assign({ onClick: function (event) { return handleChange(event, childValue); }, disabled: disabled }, child.props), { checked: checked, name: name, tabIndex: -1 }));
59
33
  return (React.createElement("label", { className: cn(styles.radio, styles.tagLabel) },
60
- clone,
61
- 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 })));
34
+ 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 }),
35
+ clone));
62
36
  };
63
37
  var errorMessage = typeof error === 'boolean' ? '' : error;
64
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 },
package/esm/index.css CHANGED
@@ -1,6 +1,7 @@
1
- /* hash: 1pabu */
1
+ /* hash: 1tg4l */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
+ --color-light-border-link: #007aff;
4
5
  --color-light-text-negative: #d91d0b;
5
6
  --color-light-text-primary: #0b1f35;
6
7
  --color-light-text-secondary: rgba(11, 31, 53, 0.7);
@@ -23,57 +24,61 @@
23
24
  --gap-xl-neg: -24px;
24
25
  } :root {
25
26
  } :root {
27
+ --focus-color: var(--color-light-border-link);
26
28
  } :root {
27
29
  --radio-group-error-color: var(--color-light-text-negative);
28
30
  --radio-group-hint-color: var(--color-light-text-secondary);
29
31
  --radio-group-label-color: var(--color-light-text-primary);
30
- } .radio-group__component_4qwa5 {
32
+ } .radio-group__component_1upfw {
31
33
  display: flex;
32
34
  flex-direction: column;
33
- } .radio-group__error_4qwa5 {
35
+ } .radio-group__error_1upfw {
34
36
  padding-left: var(--gap-xs);
35
37
  border-left: 1px solid var(--radio-group-error-color);
36
- } .radio-group__radioList_4qwa5 {
38
+ } .radio-group__radioList_1upfw {
37
39
  display: flex;
38
- } .radio-group__vertical_4qwa5 .radio-group__radioList_4qwa5 {
40
+ } .radio-group__vertical_1upfw .radio-group__radioList_1upfw {
39
41
  flex-direction: column;
40
42
  align-items: flex-start;
41
- } .radio-group__vertical_4qwa5 .radio-group__radio_4qwa5 {
43
+ } .radio-group__vertical_1upfw .radio-group__radio_1upfw {
42
44
  margin-bottom: var(--gap-m)
43
- } .radio-group__vertical_4qwa5 .radio-group__radio_4qwa5:last-child {
45
+ } .radio-group__vertical_1upfw .radio-group__radio_1upfw:last-child {
44
46
  margin-bottom: 0;
45
- } .radio-group__horizontal_4qwa5 .radio-group__radioList_4qwa5 {
47
+ } .radio-group__horizontal_1upfw .radio-group__radioList_1upfw {
46
48
  flex-wrap: wrap;
47
49
  margin-right: var(--gap-xl-neg);
48
50
  margin-bottom: var(--gap-xs-neg);
49
- } .radio-group__tag_4qwa5.radio-group__horizontal_4qwa5 .radio-group__radioList_4qwa5 {
51
+ } .radio-group__tag_1upfw.radio-group__horizontal_1upfw .radio-group__radioList_1upfw {
50
52
  margin-right: var(--gap-xs-neg);
51
- } .radio-group__horizontal_4qwa5 .radio-group__radio_4qwa5 {
53
+ } .radio-group__horizontal_1upfw .radio-group__radio_1upfw {
52
54
  margin-right: var(--gap-xl);
53
55
  margin-bottom: var(--gap-xs);
54
- } .radio-group__horizontal_4qwa5 .radio-group__tagLabel_4qwa5 {
56
+ } .radio-group__horizontal_1upfw .radio-group__tagLabel_1upfw {
55
57
  margin-right: var(--gap-xs);
56
- } .radio-group__label_4qwa5 {
58
+ } .radio-group__label_1upfw {
57
59
  font-size: 16px;
58
60
  line-height: 24px;
59
61
  font-weight: 400;
60
62
  margin-bottom: var(--gap-s);
61
63
  color: var(--radio-group-label-color);
62
- } .radio-group__sub_4qwa5 {
64
+ } .radio-group__sub_1upfw {
63
65
  font-size: 14px;
64
66
  line-height: 18px;
65
67
  font-weight: 400;
66
68
  margin-top: var(--gap-s);
67
- } .radio-group__errorMessage_4qwa5 {
69
+ } .radio-group__errorMessage_1upfw {
68
70
  color: var(--radio-group-error-color);
69
- } .radio-group__hint_4qwa5 {
71
+ } .radio-group__hint_1upfw {
70
72
  color: var(--radio-group-hint-color);
71
- } .radio-group__hiddenInput_4qwa5 {
73
+ } .radio-group__hiddenInput_1upfw {
72
74
  position: absolute;
73
75
  z-index: -1;
74
76
  top: 0;
75
77
  left: 0;
76
- opacity: 0;
77
- } .radio-group__tagLabel_4qwa5 {
78
+ opacity: 0
79
+ } .radio-group__hiddenInput_1upfw:focus ~ button {
80
+ outline: 2px solid var(--focus-color);
81
+ outline-offset: 2px;
82
+ } .radio-group__tagLabel_1upfw {
78
83
  position: relative;
79
84
  }
package/esm/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { RadioGroup } from './Component.js';
2
+ import 'tslib';
2
3
  import 'react';
3
4
  import 'classnames';
4
5
  import '@alfalab/hooks';
package/index.css CHANGED
@@ -1,6 +1,7 @@
1
- /* hash: 1pabu */
1
+ /* hash: 1tg4l */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
+ --color-light-border-link: #007aff;
4
5
  --color-light-text-negative: #d91d0b;
5
6
  --color-light-text-primary: #0b1f35;
6
7
  --color-light-text-secondary: rgba(11, 31, 53, 0.7);
@@ -23,57 +24,61 @@
23
24
  --gap-xl-neg: -24px;
24
25
  } :root {
25
26
  } :root {
27
+ --focus-color: var(--color-light-border-link);
26
28
  } :root {
27
29
  --radio-group-error-color: var(--color-light-text-negative);
28
30
  --radio-group-hint-color: var(--color-light-text-secondary);
29
31
  --radio-group-label-color: var(--color-light-text-primary);
30
- } .radio-group__component_4qwa5 {
32
+ } .radio-group__component_1upfw {
31
33
  display: flex;
32
34
  flex-direction: column;
33
- } .radio-group__error_4qwa5 {
35
+ } .radio-group__error_1upfw {
34
36
  padding-left: var(--gap-xs);
35
37
  border-left: 1px solid var(--radio-group-error-color);
36
- } .radio-group__radioList_4qwa5 {
38
+ } .radio-group__radioList_1upfw {
37
39
  display: flex;
38
- } .radio-group__vertical_4qwa5 .radio-group__radioList_4qwa5 {
40
+ } .radio-group__vertical_1upfw .radio-group__radioList_1upfw {
39
41
  flex-direction: column;
40
42
  align-items: flex-start;
41
- } .radio-group__vertical_4qwa5 .radio-group__radio_4qwa5 {
43
+ } .radio-group__vertical_1upfw .radio-group__radio_1upfw {
42
44
  margin-bottom: var(--gap-m)
43
- } .radio-group__vertical_4qwa5 .radio-group__radio_4qwa5:last-child {
45
+ } .radio-group__vertical_1upfw .radio-group__radio_1upfw:last-child {
44
46
  margin-bottom: 0;
45
- } .radio-group__horizontal_4qwa5 .radio-group__radioList_4qwa5 {
47
+ } .radio-group__horizontal_1upfw .radio-group__radioList_1upfw {
46
48
  flex-wrap: wrap;
47
49
  margin-right: var(--gap-xl-neg);
48
50
  margin-bottom: var(--gap-xs-neg);
49
- } .radio-group__tag_4qwa5.radio-group__horizontal_4qwa5 .radio-group__radioList_4qwa5 {
51
+ } .radio-group__tag_1upfw.radio-group__horizontal_1upfw .radio-group__radioList_1upfw {
50
52
  margin-right: var(--gap-xs-neg);
51
- } .radio-group__horizontal_4qwa5 .radio-group__radio_4qwa5 {
53
+ } .radio-group__horizontal_1upfw .radio-group__radio_1upfw {
52
54
  margin-right: var(--gap-xl);
53
55
  margin-bottom: var(--gap-xs);
54
- } .radio-group__horizontal_4qwa5 .radio-group__tagLabel_4qwa5 {
56
+ } .radio-group__horizontal_1upfw .radio-group__tagLabel_1upfw {
55
57
  margin-right: var(--gap-xs);
56
- } .radio-group__label_4qwa5 {
58
+ } .radio-group__label_1upfw {
57
59
  font-size: 16px;
58
60
  line-height: 24px;
59
61
  font-weight: 400;
60
62
  margin-bottom: var(--gap-s);
61
63
  color: var(--radio-group-label-color);
62
- } .radio-group__sub_4qwa5 {
64
+ } .radio-group__sub_1upfw {
63
65
  font-size: 14px;
64
66
  line-height: 18px;
65
67
  font-weight: 400;
66
68
  margin-top: var(--gap-s);
67
- } .radio-group__errorMessage_4qwa5 {
69
+ } .radio-group__errorMessage_1upfw {
68
70
  color: var(--radio-group-error-color);
69
- } .radio-group__hint_4qwa5 {
71
+ } .radio-group__hint_1upfw {
70
72
  color: var(--radio-group-hint-color);
71
- } .radio-group__hiddenInput_4qwa5 {
73
+ } .radio-group__hiddenInput_1upfw {
72
74
  position: absolute;
73
75
  z-index: -1;
74
76
  top: 0;
75
77
  left: 0;
76
- opacity: 0;
77
- } .radio-group__tagLabel_4qwa5 {
78
+ opacity: 0
79
+ } .radio-group__hiddenInput_1upfw:focus ~ button {
80
+ outline: 2px solid var(--focus-color);
81
+ outline-offset: 2px;
82
+ } .radio-group__tagLabel_1upfw {
78
83
  position: relative;
79
84
  }
package/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var Component = require('./Component.js');
4
+ require('tslib');
4
5
  require('react');
5
6
  require('classnames');
6
7
  require('@alfalab/hooks');
@@ -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;
@@ -2,7 +2,7 @@ import React, { forwardRef, useState, Children, isValidElement, cloneElement } f
2
2
  import cn from 'classnames';
3
3
  import { useDidUpdateEffect } from '@alfalab/hooks';
4
4
 
5
- const styles = {"component":"radio-group__component_4qwa5","error":"radio-group__error_4qwa5","radioList":"radio-group__radioList_4qwa5","vertical":"radio-group__vertical_4qwa5","radio":"radio-group__radio_4qwa5","horizontal":"radio-group__horizontal_4qwa5","tag":"radio-group__tag_4qwa5","tagLabel":"radio-group__tagLabel_4qwa5","label":"radio-group__label_4qwa5","sub":"radio-group__sub_4qwa5","errorMessage":"radio-group__errorMessage_4qwa5","hint":"radio-group__hint_4qwa5","hiddenInput":"radio-group__hiddenInput_4qwa5"};
5
+ const styles = {"component":"radio-group__component_1upfw","error":"radio-group__error_1upfw","radioList":"radio-group__radioList_1upfw","vertical":"radio-group__vertical_1upfw","radio":"radio-group__radio_1upfw","horizontal":"radio-group__horizontal_1upfw","tag":"radio-group__tag_1upfw","tagLabel":"radio-group__tagLabel_1upfw","label":"radio-group__label_1upfw","sub":"radio-group__sub_1upfw","errorMessage":"radio-group__errorMessage_1upfw","hint":"radio-group__hint_1upfw","hiddenInput":"radio-group__hiddenInput_1upfw"};
6
6
  require('./index.css')
7
7
 
8
8
  const RadioGroup = forwardRef(({ children, className, direction = 'vertical', label, error, hint, onChange, onBlur, onFocus, type = 'radio', dataTestId, disabled = false, name, value, }, ref) => {
@@ -37,10 +37,11 @@ const RadioGroup = forwardRef(({ children, className, direction = 'vertical', la
37
37
  ...child.props,
38
38
  checked,
39
39
  name,
40
+ tabIndex: -1,
40
41
  });
41
42
  return (React.createElement("label", { className: cn(styles.radio, styles.tagLabel) },
42
- clone,
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 })));
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 }),
44
+ clone));
44
45
  };
45
46
  const errorMessage = typeof error === 'boolean' ? '' : error;
46
47
  return (React.createElement("div", { className: cn(styles.component, styles[type], styles[direction], { [styles.error]: error }, className), "data-test-id": dataTestId, ref: ref },
package/modern/index.css CHANGED
@@ -1,6 +1,7 @@
1
- /* hash: 1pabu */
1
+ /* hash: 1tg4l */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
+ --color-light-border-link: #007aff;
4
5
  --color-light-text-negative: #d91d0b;
5
6
  --color-light-text-primary: #0b1f35;
6
7
  --color-light-text-secondary: rgba(11, 31, 53, 0.7);
@@ -23,57 +24,61 @@
23
24
  --gap-xl-neg: -24px;
24
25
  } :root {
25
26
  } :root {
27
+ --focus-color: var(--color-light-border-link);
26
28
  } :root {
27
29
  --radio-group-error-color: var(--color-light-text-negative);
28
30
  --radio-group-hint-color: var(--color-light-text-secondary);
29
31
  --radio-group-label-color: var(--color-light-text-primary);
30
- } .radio-group__component_4qwa5 {
32
+ } .radio-group__component_1upfw {
31
33
  display: flex;
32
34
  flex-direction: column;
33
- } .radio-group__error_4qwa5 {
35
+ } .radio-group__error_1upfw {
34
36
  padding-left: var(--gap-xs);
35
37
  border-left: 1px solid var(--radio-group-error-color);
36
- } .radio-group__radioList_4qwa5 {
38
+ } .radio-group__radioList_1upfw {
37
39
  display: flex;
38
- } .radio-group__vertical_4qwa5 .radio-group__radioList_4qwa5 {
40
+ } .radio-group__vertical_1upfw .radio-group__radioList_1upfw {
39
41
  flex-direction: column;
40
42
  align-items: flex-start;
41
- } .radio-group__vertical_4qwa5 .radio-group__radio_4qwa5 {
43
+ } .radio-group__vertical_1upfw .radio-group__radio_1upfw {
42
44
  margin-bottom: var(--gap-m)
43
- } .radio-group__vertical_4qwa5 .radio-group__radio_4qwa5:last-child {
45
+ } .radio-group__vertical_1upfw .radio-group__radio_1upfw:last-child {
44
46
  margin-bottom: 0;
45
- } .radio-group__horizontal_4qwa5 .radio-group__radioList_4qwa5 {
47
+ } .radio-group__horizontal_1upfw .radio-group__radioList_1upfw {
46
48
  flex-wrap: wrap;
47
49
  margin-right: var(--gap-xl-neg);
48
50
  margin-bottom: var(--gap-xs-neg);
49
- } .radio-group__tag_4qwa5.radio-group__horizontal_4qwa5 .radio-group__radioList_4qwa5 {
51
+ } .radio-group__tag_1upfw.radio-group__horizontal_1upfw .radio-group__radioList_1upfw {
50
52
  margin-right: var(--gap-xs-neg);
51
- } .radio-group__horizontal_4qwa5 .radio-group__radio_4qwa5 {
53
+ } .radio-group__horizontal_1upfw .radio-group__radio_1upfw {
52
54
  margin-right: var(--gap-xl);
53
55
  margin-bottom: var(--gap-xs);
54
- } .radio-group__horizontal_4qwa5 .radio-group__tagLabel_4qwa5 {
56
+ } .radio-group__horizontal_1upfw .radio-group__tagLabel_1upfw {
55
57
  margin-right: var(--gap-xs);
56
- } .radio-group__label_4qwa5 {
58
+ } .radio-group__label_1upfw {
57
59
  font-size: 16px;
58
60
  line-height: 24px;
59
61
  font-weight: 400;
60
62
  margin-bottom: var(--gap-s);
61
63
  color: var(--radio-group-label-color);
62
- } .radio-group__sub_4qwa5 {
64
+ } .radio-group__sub_1upfw {
63
65
  font-size: 14px;
64
66
  line-height: 18px;
65
67
  font-weight: 400;
66
68
  margin-top: var(--gap-s);
67
- } .radio-group__errorMessage_4qwa5 {
69
+ } .radio-group__errorMessage_1upfw {
68
70
  color: var(--radio-group-error-color);
69
- } .radio-group__hint_4qwa5 {
71
+ } .radio-group__hint_1upfw {
70
72
  color: var(--radio-group-hint-color);
71
- } .radio-group__hiddenInput_4qwa5 {
73
+ } .radio-group__hiddenInput_1upfw {
72
74
  position: absolute;
73
75
  z-index: -1;
74
76
  top: 0;
75
77
  left: 0;
76
- opacity: 0;
77
- } .radio-group__tagLabel_4qwa5 {
78
+ opacity: 0
79
+ } .radio-group__hiddenInput_1upfw:focus ~ button {
80
+ outline: 2px solid var(--focus-color);
81
+ outline-offset: 2px;
82
+ } .radio-group__tagLabel_1upfw {
78
83
  position: relative;
79
84
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-radio-group",
3
- "version": "3.0.4",
3
+ "version": "3.0.6",
4
4
  "description": "Radio group",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -19,6 +19,7 @@
19
19
  },
20
20
  "dependencies": {
21
21
  "@alfalab/hooks": "^1.13.0",
22
- "classnames": "^2.3.1"
22
+ "classnames": "^2.3.1",
23
+ "tslib": "^2.4.0"
23
24
  }
24
25
  }