@alfalab/core-components-radio-group 3.0.8 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Component.desktop.d.ts +6 -0
- package/Component.desktop.js +20 -0
- package/Component.mobile.d.ts +6 -0
- package/Component.mobile.js +20 -0
- package/Component.responsive.d.ts +18 -0
- package/Component.responsive.js +26 -0
- package/{Component.d.ts → components/base-radio-group/Component.d.ts} +9 -3
- package/{cssm → components/base-radio-group}/Component.js +18 -15
- package/{index.css → components/base-radio-group/index.css} +25 -21
- package/components/base-radio-group/index.d.ts +1 -0
- package/components/base-radio-group/index.js +13 -0
- package/cssm/Component.desktop.d.ts +6 -0
- package/cssm/Component.desktop.js +20 -0
- package/cssm/Component.mobile.d.ts +6 -0
- package/cssm/Component.mobile.js +20 -0
- package/cssm/Component.responsive.d.ts +18 -0
- package/cssm/Component.responsive.js +29 -0
- package/{esm → cssm/components/base-radio-group}/Component.d.ts +9 -3
- package/{Component.js → cssm/components/base-radio-group/Component.js} +17 -16
- package/cssm/components/base-radio-group/index.d.ts +1 -0
- package/cssm/components/base-radio-group/index.js +14 -0
- package/cssm/{index.module.css → components/base-radio-group/index.module.css} +7 -3
- package/cssm/desktop.d.ts +2 -0
- package/cssm/desktop.js +16 -0
- package/cssm/desktop.module.css +27 -0
- package/cssm/index.d.ts +2 -1
- package/cssm/index.js +9 -3
- package/cssm/mobile.d.ts +2 -0
- package/cssm/mobile.js +16 -0
- package/cssm/mobile.module.css +29 -0
- package/cssm/vars.css +19 -0
- package/desktop.css +28 -0
- package/desktop.d.ts +2 -0
- package/desktop.js +14 -0
- package/esm/Component.desktop.d.ts +6 -0
- package/esm/Component.desktop.js +12 -0
- package/esm/Component.mobile.d.ts +6 -0
- package/esm/Component.mobile.js +12 -0
- package/esm/Component.responsive.d.ts +18 -0
- package/esm/Component.responsive.js +18 -0
- package/{cssm → esm/components/base-radio-group}/Component.d.ts +9 -3
- package/esm/components/base-radio-group/Component.js +52 -0
- package/esm/{index.css → components/base-radio-group/index.css} +25 -21
- package/esm/components/base-radio-group/index.d.ts +1 -0
- package/esm/components/base-radio-group/index.js +5 -0
- package/esm/desktop.css +28 -0
- package/esm/desktop.d.ts +2 -0
- package/esm/desktop.js +6 -0
- package/esm/index.d.ts +2 -1
- package/esm/index.js +5 -1
- package/esm/mobile.css +30 -0
- package/esm/mobile.d.ts +2 -0
- package/esm/mobile.js +6 -0
- package/index.d.ts +2 -1
- package/index.js +6 -2
- package/mobile.css +30 -0
- package/mobile.d.ts +2 -0
- package/mobile.js +14 -0
- package/modern/Component.desktop.d.ts +6 -0
- package/modern/Component.desktop.js +11 -0
- package/modern/Component.mobile.d.ts +6 -0
- package/modern/Component.mobile.js +11 -0
- package/modern/Component.responsive.d.ts +18 -0
- package/modern/Component.responsive.js +16 -0
- package/modern/{Component.d.ts → components/base-radio-group/Component.d.ts} +9 -3
- package/modern/{Component.js → components/base-radio-group/Component.js} +13 -11
- package/modern/{index.css → components/base-radio-group/index.css} +25 -21
- package/modern/components/base-radio-group/index.d.ts +1 -0
- package/modern/components/base-radio-group/index.js +4 -0
- package/modern/desktop.css +28 -0
- package/modern/desktop.d.ts +2 -0
- package/modern/desktop.js +5 -0
- package/modern/index.d.ts +2 -1
- package/modern/index.js +5 -1
- package/modern/mobile.css +30 -0
- package/modern/mobile.d.ts +2 -0
- package/modern/mobile.js +5 -0
- package/package.json +21 -3
- package/src/Component.desktop.tsx +11 -0
- package/src/Component.mobile.tsx +11 -0
- package/src/Component.responsive.tsx +27 -0
- package/src/components/base-radio-group/Component.tsx +237 -0
- package/src/components/base-radio-group/index.module.css +87 -0
- package/src/components/base-radio-group/index.ts +1 -0
- package/src/desktop.module.css +13 -0
- package/src/desktop.ts +1 -0
- package/src/index.ts +1 -0
- package/src/mobile.module.css +13 -0
- package/src/mobile.ts +1 -0
- package/src/vars.css +13 -0
- package/esm/Component.js +0 -50
- package/send-stats.js +0 -82
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { BaseRadioGroupProps } from "./components/base-radio-group/index";
|
|
4
|
+
type RadioGroupDesktopProps = Omit<BaseRadioGroupProps, 'styles'>;
|
|
5
|
+
declare const RadioGroupDesktop: React.ForwardRefExoticComponent<RadioGroupDesktopProps & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
+
export { RadioGroupDesktopProps, RadioGroupDesktop };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var components_baseRadioGroup_Component = require('./components/base-radio-group/Component.js');
|
|
8
|
+
require('classnames');
|
|
9
|
+
require('@alfalab/hooks');
|
|
10
|
+
|
|
11
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
12
|
+
|
|
13
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
14
|
+
|
|
15
|
+
var styles = {"radioList":"radio-group__radioList_1ud02","label":"radio-group__label_1ud02","sub":"radio-group__sub_1ud02"};
|
|
16
|
+
require('./desktop.css')
|
|
17
|
+
|
|
18
|
+
var RadioGroupDesktop = React.forwardRef(function (props, ref) { return React__default.default.createElement(components_baseRadioGroup_Component.BaseRadioGroup, tslib.__assign({}, props, { ref: ref, styles: styles })); });
|
|
19
|
+
|
|
20
|
+
exports.RadioGroupDesktop = RadioGroupDesktop;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { BaseRadioGroupProps } from "./components/base-radio-group/index";
|
|
4
|
+
type RadioGroupMobileProps = Omit<BaseRadioGroupProps, 'styles'>;
|
|
5
|
+
declare const RadioGroupMobile: React.ForwardRefExoticComponent<RadioGroupMobileProps & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
+
export { RadioGroupMobileProps, RadioGroupMobile };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var components_baseRadioGroup_Component = require('./components/base-radio-group/Component.js');
|
|
8
|
+
require('classnames');
|
|
9
|
+
require('@alfalab/hooks');
|
|
10
|
+
|
|
11
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
12
|
+
|
|
13
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
14
|
+
|
|
15
|
+
var styles = {"radioList":"radio-group__radioList_srwz3","label":"radio-group__label_srwz3","sub":"radio-group__sub_srwz3"};
|
|
16
|
+
require('./mobile.css')
|
|
17
|
+
|
|
18
|
+
var RadioGroupMobile = React.forwardRef(function (props, ref) { return (React__default.default.createElement(components_baseRadioGroup_Component.BaseRadioGroup, tslib.__assign({}, props, { ref: ref, styles: styles }))); });
|
|
19
|
+
|
|
20
|
+
exports.RadioGroupMobile = RadioGroupMobile;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { BaseRadioGroupProps } from "./components/base-radio-group/index";
|
|
4
|
+
type RadioGroupProps = Omit<BaseRadioGroupProps, 'styles'> & {
|
|
5
|
+
/**
|
|
6
|
+
* Контрольная точка, с нее начинается desktop версия
|
|
7
|
+
* @default 1024
|
|
8
|
+
*/
|
|
9
|
+
breakpoint?: number;
|
|
10
|
+
};
|
|
11
|
+
declare const RadioGroup: React.ForwardRefExoticComponent<Omit<BaseRadioGroupProps, "styles"> & {
|
|
12
|
+
/**
|
|
13
|
+
* Контрольная точка, с нее начинается desktop версия
|
|
14
|
+
* @default 1024
|
|
15
|
+
*/
|
|
16
|
+
breakpoint?: number | undefined;
|
|
17
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
export { RadioGroupProps, RadioGroup };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var coreComponentsMq = require('@alfalab/core-components-mq');
|
|
8
|
+
var Component_desktop = require('./Component.desktop.js');
|
|
9
|
+
var Component_mobile = require('./Component.mobile.js');
|
|
10
|
+
require('./components/base-radio-group/Component.js');
|
|
11
|
+
require('classnames');
|
|
12
|
+
require('@alfalab/hooks');
|
|
13
|
+
|
|
14
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
15
|
+
|
|
16
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
17
|
+
|
|
18
|
+
var RadioGroup = React.forwardRef(function (_a, ref) {
|
|
19
|
+
var _b = _a.breakpoint, breakpoint = _b === void 0 ? 1024 : _b, restProps = tslib.__rest(_a, ["breakpoint"]);
|
|
20
|
+
var query = "(min-width: ".concat(breakpoint, "px)");
|
|
21
|
+
var isDesktop = coreComponentsMq.useMatchMedia(query)[0];
|
|
22
|
+
var Component = isDesktop ? Component_desktop.RadioGroupDesktop : Component_mobile.RadioGroupMobile;
|
|
23
|
+
return React__default.default.createElement(Component, tslib.__assign({ ref: ref }, restProps));
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
exports.RadioGroup = RadioGroup;
|
|
@@ -3,7 +3,7 @@ import React from 'react';
|
|
|
3
3
|
import { ChangeEvent, FocusEvent, MouseEvent, ReactNode } from "react";
|
|
4
4
|
type Direction = 'horizontal' | 'vertical';
|
|
5
5
|
type RadioGroupType = 'radio' | 'tag';
|
|
6
|
-
type
|
|
6
|
+
type BaseRadioGroupProps = {
|
|
7
7
|
/**
|
|
8
8
|
* Заголовок группы
|
|
9
9
|
*/
|
|
@@ -63,6 +63,12 @@ type RadioGroupProps = {
|
|
|
63
63
|
* Value выбранного дочернего элемента
|
|
64
64
|
*/
|
|
65
65
|
value?: string | null;
|
|
66
|
+
/**
|
|
67
|
+
* Основные стили компонента.
|
|
68
|
+
*/
|
|
69
|
+
styles: {
|
|
70
|
+
[key: string]: string;
|
|
71
|
+
};
|
|
66
72
|
};
|
|
67
|
-
declare const
|
|
68
|
-
export { Direction, RadioGroupType,
|
|
73
|
+
declare const BaseRadioGroup: React.ForwardRefExoticComponent<BaseRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
74
|
+
export { Direction, RadioGroupType, BaseRadioGroupProps, BaseRadioGroup };
|
|
@@ -6,18 +6,19 @@ var tslib = require('tslib');
|
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var cn = require('classnames');
|
|
8
8
|
var hooks = require('@alfalab/hooks');
|
|
9
|
-
var styles = require('./index.module.css');
|
|
10
9
|
|
|
11
10
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
12
11
|
|
|
13
12
|
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
14
13
|
var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
|
|
15
|
-
var styles__default = /*#__PURE__*/_interopDefaultCompat(styles);
|
|
16
14
|
|
|
17
|
-
var
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
var commonStyles = {"component":"radio-group__component_laaha","error":"radio-group__error_laaha","tag":"radio-group__tag_laaha","radioList":"radio-group__radioList_laaha","vertical":"radio-group__vertical_laaha","radio":"radio-group__radio_laaha","horizontal":"radio-group__horizontal_laaha","tagLabel":"radio-group__tagLabel_laaha","label":"radio-group__label_laaha","sub":"radio-group__sub_laaha","errorMessage":"radio-group__errorMessage_laaha","hint":"radio-group__hint_laaha","hiddenInput":"radio-group__hiddenInput_laaha"};
|
|
16
|
+
require('./index.css')
|
|
17
|
+
|
|
18
|
+
var BaseRadioGroup = React.forwardRef(function (_a, ref) {
|
|
19
|
+
var _b, _c;
|
|
20
|
+
var children = _a.children, className = _a.className, _d = _a.direction, direction = _d === void 0 ? 'vertical' : _d, label = _a.label, error = _a.error, hint = _a.hint, onChange = _a.onChange, onBlur = _a.onBlur, onFocus = _a.onFocus, _e = _a.type, type = _e === void 0 ? 'radio' : _e, dataTestId = _a.dataTestId, _f = _a.disabled, disabled = _f === void 0 ? false : _f, name = _a.name, value = _a.value, styles = _a.styles;
|
|
21
|
+
var _g = React.useState(''), stateValue = _g[0], setStateValue = _g[1];
|
|
21
22
|
hooks.useDidUpdateEffect(function () {
|
|
22
23
|
setStateValue(value);
|
|
23
24
|
}, [value]);
|
|
@@ -32,27 +33,29 @@ var RadioGroup = React.forwardRef(function (_a, ref) {
|
|
|
32
33
|
};
|
|
33
34
|
var renderRadio = function (child) {
|
|
34
35
|
var _a = child.props, childClassName = _a.className, childValue = _a.value;
|
|
35
|
-
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,
|
|
36
|
+
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, commonStyles.radio) }));
|
|
36
37
|
};
|
|
37
38
|
var renderTag = function (child) {
|
|
38
39
|
var childValue = child.props.value;
|
|
39
40
|
var checked = isChecked(childValue);
|
|
40
41
|
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 }));
|
|
41
|
-
return (React__default.default.createElement("label", { className: cn__default.default(
|
|
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:
|
|
42
|
+
return (React__default.default.createElement("label", { className: cn__default.default(commonStyles.radio, commonStyles.tagLabel) },
|
|
43
|
+
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: commonStyles.hiddenInput, value: child.props.value }),
|
|
43
44
|
clone));
|
|
44
45
|
};
|
|
45
46
|
var errorMessage = typeof error === 'boolean' ? '' : error;
|
|
46
|
-
return (React__default.default.createElement("div", { className: cn__default.default(
|
|
47
|
-
label ? React__default.default.createElement("span", { className:
|
|
48
|
-
children ? (React__default.default.createElement("div", { className:
|
|
47
|
+
return (React__default.default.createElement("div", { className: cn__default.default(commonStyles.component, commonStyles[type], commonStyles[direction], (_b = {}, _b[commonStyles.error] = error, _b), className), "data-test-id": dataTestId, ref: ref },
|
|
48
|
+
label ? (React__default.default.createElement("span", { className: cn__default.default(commonStyles.label, styles.label) }, label)) : null,
|
|
49
|
+
children ? (React__default.default.createElement("div", { className: cn__default.default(commonStyles.radioList, (_c = {},
|
|
50
|
+
_c[styles.radioList] = type === 'radio',
|
|
51
|
+
_c)), onBlur: onBlur, onFocus: onFocus }, React.Children.map(children, function (child) {
|
|
49
52
|
if (React.isValidElement(child)) {
|
|
50
53
|
return type === 'radio' ? renderRadio(child) : renderTag(child);
|
|
51
54
|
}
|
|
52
55
|
return null;
|
|
53
56
|
}))) : null,
|
|
54
|
-
errorMessage && (React__default.default.createElement("span", { className: cn__default.default(
|
|
55
|
-
hint && !errorMessage && (React__default.default.createElement("span", { className: cn__default.default(
|
|
57
|
+
errorMessage && (React__default.default.createElement("span", { className: cn__default.default(commonStyles.sub, styles.sub, commonStyles.errorMessage), role: 'alert' }, errorMessage)),
|
|
58
|
+
hint && !errorMessage && (React__default.default.createElement("span", { className: cn__default.default(commonStyles.sub, styles.sub, commonStyles.hint) }, hint))));
|
|
56
59
|
});
|
|
57
60
|
|
|
58
|
-
exports.
|
|
61
|
+
exports.BaseRadioGroup = BaseRadioGroup;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* hash:
|
|
1
|
+
/* hash: 2q0m4 */
|
|
2
2
|
:root {
|
|
3
3
|
} /* deprecated */ :root {
|
|
4
4
|
--color-light-border-link: #0072ef;
|
|
@@ -28,57 +28,61 @@
|
|
|
28
28
|
--radio-group-error-color: var(--color-light-text-negative);
|
|
29
29
|
--radio-group-hint-color: var(--color-light-text-secondary);
|
|
30
30
|
--radio-group-label-color: var(--color-light-text-primary);
|
|
31
|
-
|
|
31
|
+
|
|
32
|
+
/* mobile */
|
|
33
|
+
} .radio-group__component_laaha {
|
|
32
34
|
display: flex;
|
|
33
35
|
flex-direction: column;
|
|
34
|
-
} .radio-
|
|
35
|
-
padding-left: var(--gap-
|
|
36
|
-
border-left: 1px solid var(--radio-group-error-color)
|
|
37
|
-
} .radio-
|
|
36
|
+
} .radio-group__error_laaha {
|
|
37
|
+
padding-left: var(--gap-s);
|
|
38
|
+
border-left: 1px solid var(--radio-group-error-color)
|
|
39
|
+
} .radio-group__error_laaha.radio-group__tag_laaha {
|
|
40
|
+
padding-left: var(--gap-xs);
|
|
41
|
+
} .radio-group__radioList_laaha {
|
|
38
42
|
display: flex;
|
|
39
|
-
} .radio-
|
|
43
|
+
} .radio-group__vertical_laaha .radio-group__radioList_laaha {
|
|
40
44
|
flex-direction: column;
|
|
41
45
|
align-items: flex-start;
|
|
42
|
-
} .radio-
|
|
46
|
+
} .radio-group__vertical_laaha .radio-group__radio_laaha {
|
|
43
47
|
margin-bottom: var(--gap-m)
|
|
44
|
-
} .radio-
|
|
48
|
+
} .radio-group__vertical_laaha .radio-group__radio_laaha:last-child {
|
|
45
49
|
margin-bottom: 0;
|
|
46
|
-
} .radio-
|
|
50
|
+
} .radio-group__horizontal_laaha .radio-group__radioList_laaha {
|
|
47
51
|
flex-wrap: wrap;
|
|
48
52
|
margin-bottom: var(--gap-xs-neg);
|
|
49
|
-
} .radio-
|
|
53
|
+
} .radio-group__horizontal_laaha .radio-group__radio_laaha {
|
|
50
54
|
margin-right: var(--gap-xl);
|
|
51
55
|
margin-bottom: var(--gap-xs);
|
|
52
|
-
} .radio-
|
|
56
|
+
} .radio-group__horizontal_laaha .radio-group__tagLabel_laaha {
|
|
53
57
|
margin-right: var(--gap-xs);
|
|
54
|
-
} .radio-
|
|
55
|
-
.radio-
|
|
58
|
+
} .radio-group__horizontal_laaha .radio-group__radio_laaha:last-child,
|
|
59
|
+
.radio-group__horizontal_laaha .radio-group__tagLabel_laaha:last-child {
|
|
56
60
|
margin-right: 0;
|
|
57
|
-
} .radio-
|
|
61
|
+
} .radio-group__label_laaha {
|
|
58
62
|
font-size: 16px;
|
|
59
63
|
line-height: 24px;
|
|
60
64
|
font-weight: 400;
|
|
61
65
|
margin-bottom: var(--gap-s);
|
|
62
66
|
color: var(--radio-group-label-color);
|
|
63
|
-
} .radio-
|
|
67
|
+
} .radio-group__sub_laaha {
|
|
64
68
|
font-size: 14px;
|
|
65
69
|
line-height: 18px;
|
|
66
70
|
font-weight: 400;
|
|
67
71
|
margin-top: var(--gap-s);
|
|
68
|
-
} .radio-
|
|
72
|
+
} .radio-group__errorMessage_laaha {
|
|
69
73
|
color: var(--radio-group-error-color);
|
|
70
|
-
} .radio-
|
|
74
|
+
} .radio-group__hint_laaha {
|
|
71
75
|
color: var(--radio-group-hint-color);
|
|
72
|
-
} .radio-
|
|
76
|
+
} .radio-group__hiddenInput_laaha {
|
|
73
77
|
position: absolute;
|
|
74
78
|
z-index: -1;
|
|
75
79
|
top: 0;
|
|
76
80
|
left: 0;
|
|
77
81
|
opacity: 0
|
|
78
|
-
} .radio-
|
|
82
|
+
} .radio-group__hiddenInput_laaha:focus ~ button {
|
|
79
83
|
outline: 2px solid var(--focus-color);
|
|
80
84
|
outline-offset: 2px;
|
|
81
|
-
} .radio-
|
|
85
|
+
} .radio-group__tagLabel_laaha {
|
|
82
86
|
position: relative;
|
|
83
87
|
max-width: 100%;
|
|
84
88
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Component";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var components_baseRadioGroup_Component = require('./Component.js');
|
|
6
|
+
require('tslib');
|
|
7
|
+
require('react');
|
|
8
|
+
require('classnames');
|
|
9
|
+
require('@alfalab/hooks');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
exports.BaseRadioGroup = components_baseRadioGroup_Component.BaseRadioGroup;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { BaseRadioGroupProps } from "./components/base-radio-group/index";
|
|
4
|
+
type RadioGroupDesktopProps = Omit<BaseRadioGroupProps, 'styles'>;
|
|
5
|
+
declare const RadioGroupDesktop: React.ForwardRefExoticComponent<RadioGroupDesktopProps & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
+
export { RadioGroupDesktopProps, RadioGroupDesktop };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var components_baseRadioGroup_Component = require('./components/base-radio-group/Component.js');
|
|
8
|
+
var styles = require('./desktop.module.css');
|
|
9
|
+
require('classnames');
|
|
10
|
+
require('@alfalab/hooks');
|
|
11
|
+
require('./components/base-radio-group/index.module.css');
|
|
12
|
+
|
|
13
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
14
|
+
|
|
15
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
16
|
+
var styles__default = /*#__PURE__*/_interopDefaultCompat(styles);
|
|
17
|
+
|
|
18
|
+
var RadioGroupDesktop = React.forwardRef(function (props, ref) { return React__default.default.createElement(components_baseRadioGroup_Component.BaseRadioGroup, tslib.__assign({}, props, { ref: ref, styles: styles__default.default })); });
|
|
19
|
+
|
|
20
|
+
exports.RadioGroupDesktop = RadioGroupDesktop;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { BaseRadioGroupProps } from "./components/base-radio-group/index";
|
|
4
|
+
type RadioGroupMobileProps = Omit<BaseRadioGroupProps, 'styles'>;
|
|
5
|
+
declare const RadioGroupMobile: React.ForwardRefExoticComponent<RadioGroupMobileProps & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
+
export { RadioGroupMobileProps, RadioGroupMobile };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var components_baseRadioGroup_Component = require('./components/base-radio-group/Component.js');
|
|
8
|
+
var styles = require('./mobile.module.css');
|
|
9
|
+
require('classnames');
|
|
10
|
+
require('@alfalab/hooks');
|
|
11
|
+
require('./components/base-radio-group/index.module.css');
|
|
12
|
+
|
|
13
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
14
|
+
|
|
15
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
16
|
+
var styles__default = /*#__PURE__*/_interopDefaultCompat(styles);
|
|
17
|
+
|
|
18
|
+
var RadioGroupMobile = React.forwardRef(function (props, ref) { return (React__default.default.createElement(components_baseRadioGroup_Component.BaseRadioGroup, tslib.__assign({}, props, { ref: ref, styles: styles__default.default }))); });
|
|
19
|
+
|
|
20
|
+
exports.RadioGroupMobile = RadioGroupMobile;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { BaseRadioGroupProps } from "./components/base-radio-group/index";
|
|
4
|
+
type RadioGroupProps = Omit<BaseRadioGroupProps, 'styles'> & {
|
|
5
|
+
/**
|
|
6
|
+
* Контрольная точка, с нее начинается desktop версия
|
|
7
|
+
* @default 1024
|
|
8
|
+
*/
|
|
9
|
+
breakpoint?: number;
|
|
10
|
+
};
|
|
11
|
+
declare const RadioGroup: React.ForwardRefExoticComponent<Omit<BaseRadioGroupProps, "styles"> & {
|
|
12
|
+
/**
|
|
13
|
+
* Контрольная точка, с нее начинается desktop версия
|
|
14
|
+
* @default 1024
|
|
15
|
+
*/
|
|
16
|
+
breakpoint?: number | undefined;
|
|
17
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
export { RadioGroupProps, RadioGroup };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib = require('tslib');
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var coreComponentsMq = require('@alfalab/core-components-mq/cssm');
|
|
8
|
+
var Component_desktop = require('./Component.desktop.js');
|
|
9
|
+
var Component_mobile = require('./Component.mobile.js');
|
|
10
|
+
require('./components/base-radio-group/Component.js');
|
|
11
|
+
require('classnames');
|
|
12
|
+
require('@alfalab/hooks');
|
|
13
|
+
require('./components/base-radio-group/index.module.css');
|
|
14
|
+
require('./desktop.module.css');
|
|
15
|
+
require('./mobile.module.css');
|
|
16
|
+
|
|
17
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
18
|
+
|
|
19
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
20
|
+
|
|
21
|
+
var RadioGroup = React.forwardRef(function (_a, ref) {
|
|
22
|
+
var _b = _a.breakpoint, breakpoint = _b === void 0 ? 1024 : _b, restProps = tslib.__rest(_a, ["breakpoint"]);
|
|
23
|
+
var query = "(min-width: ".concat(breakpoint, "px)");
|
|
24
|
+
var isDesktop = coreComponentsMq.useMatchMedia(query)[0];
|
|
25
|
+
var Component = isDesktop ? Component_desktop.RadioGroupDesktop : Component_mobile.RadioGroupMobile;
|
|
26
|
+
return React__default.default.createElement(Component, tslib.__assign({ ref: ref }, restProps));
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
exports.RadioGroup = RadioGroup;
|
|
@@ -3,7 +3,7 @@ import React from 'react';
|
|
|
3
3
|
import { ChangeEvent, FocusEvent, MouseEvent, ReactNode } from "react";
|
|
4
4
|
type Direction = 'horizontal' | 'vertical';
|
|
5
5
|
type RadioGroupType = 'radio' | 'tag';
|
|
6
|
-
type
|
|
6
|
+
type BaseRadioGroupProps = {
|
|
7
7
|
/**
|
|
8
8
|
* Заголовок группы
|
|
9
9
|
*/
|
|
@@ -63,6 +63,12 @@ type RadioGroupProps = {
|
|
|
63
63
|
* Value выбранного дочернего элемента
|
|
64
64
|
*/
|
|
65
65
|
value?: string | null;
|
|
66
|
+
/**
|
|
67
|
+
* Основные стили компонента.
|
|
68
|
+
*/
|
|
69
|
+
styles: {
|
|
70
|
+
[key: string]: string;
|
|
71
|
+
};
|
|
66
72
|
};
|
|
67
|
-
declare const
|
|
68
|
-
export { Direction, RadioGroupType,
|
|
73
|
+
declare const BaseRadioGroup: React.ForwardRefExoticComponent<BaseRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
74
|
+
export { Direction, RadioGroupType, BaseRadioGroupProps, BaseRadioGroup };
|
|
@@ -6,19 +6,18 @@ var tslib = require('tslib');
|
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var cn = require('classnames');
|
|
8
8
|
var hooks = require('@alfalab/hooks');
|
|
9
|
+
var commonStyles = require('./index.module.css');
|
|
9
10
|
|
|
10
11
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
11
12
|
|
|
12
13
|
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
13
14
|
var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
|
|
15
|
+
var commonStyles__default = /*#__PURE__*/_interopDefaultCompat(commonStyles);
|
|
14
16
|
|
|
15
|
-
var
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
var
|
|
19
|
-
var _b;
|
|
20
|
-
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;
|
|
21
|
-
var _f = React.useState(''), stateValue = _f[0], setStateValue = _f[1];
|
|
17
|
+
var BaseRadioGroup = React.forwardRef(function (_a, ref) {
|
|
18
|
+
var _b, _c;
|
|
19
|
+
var children = _a.children, className = _a.className, _d = _a.direction, direction = _d === void 0 ? 'vertical' : _d, label = _a.label, error = _a.error, hint = _a.hint, onChange = _a.onChange, onBlur = _a.onBlur, onFocus = _a.onFocus, _e = _a.type, type = _e === void 0 ? 'radio' : _e, dataTestId = _a.dataTestId, _f = _a.disabled, disabled = _f === void 0 ? false : _f, name = _a.name, value = _a.value, styles = _a.styles;
|
|
20
|
+
var _g = React.useState(''), stateValue = _g[0], setStateValue = _g[1];
|
|
22
21
|
hooks.useDidUpdateEffect(function () {
|
|
23
22
|
setStateValue(value);
|
|
24
23
|
}, [value]);
|
|
@@ -33,27 +32,29 @@ var RadioGroup = React.forwardRef(function (_a, ref) {
|
|
|
33
32
|
};
|
|
34
33
|
var renderRadio = function (child) {
|
|
35
34
|
var _a = child.props, childClassName = _a.className, childValue = _a.value;
|
|
36
|
-
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,
|
|
35
|
+
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, commonStyles__default.default.radio) }));
|
|
37
36
|
};
|
|
38
37
|
var renderTag = function (child) {
|
|
39
38
|
var childValue = child.props.value;
|
|
40
39
|
var checked = isChecked(childValue);
|
|
41
40
|
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 }));
|
|
42
|
-
return (React__default.default.createElement("label", { className: cn__default.default(
|
|
43
|
-
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:
|
|
41
|
+
return (React__default.default.createElement("label", { className: cn__default.default(commonStyles__default.default.radio, commonStyles__default.default.tagLabel) },
|
|
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: commonStyles__default.default.hiddenInput, value: child.props.value }),
|
|
44
43
|
clone));
|
|
45
44
|
};
|
|
46
45
|
var errorMessage = typeof error === 'boolean' ? '' : error;
|
|
47
|
-
return (React__default.default.createElement("div", { className: cn__default.default(
|
|
48
|
-
label ? React__default.default.createElement("span", { className: styles.label }, label) : null,
|
|
49
|
-
children ? (React__default.default.createElement("div", { className:
|
|
46
|
+
return (React__default.default.createElement("div", { className: cn__default.default(commonStyles__default.default.component, commonStyles__default.default[type], commonStyles__default.default[direction], (_b = {}, _b[commonStyles__default.default.error] = error, _b), className), "data-test-id": dataTestId, ref: ref },
|
|
47
|
+
label ? (React__default.default.createElement("span", { className: cn__default.default(commonStyles__default.default.label, styles.label) }, label)) : null,
|
|
48
|
+
children ? (React__default.default.createElement("div", { className: cn__default.default(commonStyles__default.default.radioList, (_c = {},
|
|
49
|
+
_c[styles.radioList] = type === 'radio',
|
|
50
|
+
_c)), onBlur: onBlur, onFocus: onFocus }, React.Children.map(children, function (child) {
|
|
50
51
|
if (React.isValidElement(child)) {
|
|
51
52
|
return type === 'radio' ? renderRadio(child) : renderTag(child);
|
|
52
53
|
}
|
|
53
54
|
return null;
|
|
54
55
|
}))) : null,
|
|
55
|
-
errorMessage && (React__default.default.createElement("span", { className: cn__default.default(
|
|
56
|
-
hint && !errorMessage && (React__default.default.createElement("span", { className: cn__default.default(
|
|
56
|
+
errorMessage && (React__default.default.createElement("span", { className: cn__default.default(commonStyles__default.default.sub, styles.sub, commonStyles__default.default.errorMessage), role: 'alert' }, errorMessage)),
|
|
57
|
+
hint && !errorMessage && (React__default.default.createElement("span", { className: cn__default.default(commonStyles__default.default.sub, styles.sub, commonStyles__default.default.hint) }, hint))));
|
|
57
58
|
});
|
|
58
59
|
|
|
59
|
-
exports.
|
|
60
|
+
exports.BaseRadioGroup = BaseRadioGroup;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./Component";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var components_baseRadioGroup_Component = require('./Component.js');
|
|
6
|
+
require('tslib');
|
|
7
|
+
require('react');
|
|
8
|
+
require('classnames');
|
|
9
|
+
require('@alfalab/hooks');
|
|
10
|
+
require('./index.module.css');
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
exports.BaseRadioGroup = components_baseRadioGroup_Component.BaseRadioGroup;
|
|
@@ -27,13 +27,17 @@
|
|
|
27
27
|
--radio-group-error-color: var(--color-light-text-negative);
|
|
28
28
|
--radio-group-hint-color: var(--color-light-text-secondary);
|
|
29
29
|
--radio-group-label-color: var(--color-light-text-primary);
|
|
30
|
+
|
|
31
|
+
/* mobile */
|
|
30
32
|
} .component {
|
|
31
33
|
display: flex;
|
|
32
34
|
flex-direction: column;
|
|
33
35
|
} .error {
|
|
34
|
-
padding-left: var(--gap-
|
|
35
|
-
border-left: 1px solid var(--radio-group-error-color)
|
|
36
|
-
} .
|
|
36
|
+
padding-left: var(--gap-s);
|
|
37
|
+
border-left: 1px solid var(--radio-group-error-color)
|
|
38
|
+
} .error.tag {
|
|
39
|
+
padding-left: var(--gap-xs);
|
|
40
|
+
} .radioList {
|
|
37
41
|
display: flex;
|
|
38
42
|
} .vertical .radioList {
|
|
39
43
|
flex-direction: column;
|
package/cssm/desktop.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var Component_desktop = require('./Component.desktop.js');
|
|
6
|
+
require('tslib');
|
|
7
|
+
require('react');
|
|
8
|
+
require('./components/base-radio-group/Component.js');
|
|
9
|
+
require('classnames');
|
|
10
|
+
require('@alfalab/hooks');
|
|
11
|
+
require('./components/base-radio-group/index.module.css');
|
|
12
|
+
require('./desktop.module.css');
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
exports.RadioGroupDesktop = Component_desktop.RadioGroupDesktop;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
} /* deprecated */ :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
|
|
3
|
+
} :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
|
|
4
|
+
} :root {
|
|
5
|
+
} :root {
|
|
6
|
+
|
|
7
|
+
/* Hard */
|
|
8
|
+
|
|
9
|
+
/* Up */
|
|
10
|
+
|
|
11
|
+
/* Hard up */
|
|
12
|
+
} :root {
|
|
13
|
+
} :root {
|
|
14
|
+
} :root {
|
|
15
|
+
} :root {
|
|
16
|
+
} :root {
|
|
17
|
+
--radio-group-sub-padding-left: 0;
|
|
18
|
+
--radio-group-list-padding-left: 0;
|
|
19
|
+
|
|
20
|
+
/* mobile */
|
|
21
|
+
} .radioList {
|
|
22
|
+
padding-left: var(--radio-group-list-padding-left);
|
|
23
|
+
} .label {
|
|
24
|
+
padding-left: var(--radio-group-sub-padding-left);
|
|
25
|
+
} .sub {
|
|
26
|
+
padding-left: var(--radio-group-sub-padding-left);
|
|
27
|
+
}
|
package/cssm/index.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export * from "./Component";
|
|
1
|
+
export * from "./Component.responsive";
|
|
2
|
+
export {};
|
package/cssm/index.js
CHANGED
|
@@ -2,13 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var Component_responsive = require('./Component.responsive.js');
|
|
6
6
|
require('tslib');
|
|
7
7
|
require('react');
|
|
8
|
+
require('@alfalab/core-components-mq/cssm');
|
|
9
|
+
require('./Component.desktop.js');
|
|
10
|
+
require('./components/base-radio-group/Component.js');
|
|
8
11
|
require('classnames');
|
|
9
12
|
require('@alfalab/hooks');
|
|
10
|
-
require('./index.module.css');
|
|
13
|
+
require('./components/base-radio-group/index.module.css');
|
|
14
|
+
require('./desktop.module.css');
|
|
15
|
+
require('./Component.mobile.js');
|
|
16
|
+
require('./mobile.module.css');
|
|
11
17
|
|
|
12
18
|
|
|
13
19
|
|
|
14
|
-
exports.RadioGroup =
|
|
20
|
+
exports.RadioGroup = Component_responsive.RadioGroup;
|