@alfalab/core-components-radio-group 5.1.0 → 5.2.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.
Files changed (42) hide show
  1. package/components/base-radio-group/Component.d.ts +3 -3
  2. package/components/base-radio-group/Component.js +2 -2
  3. package/components/base-radio-group/Component.js.map +1 -1
  4. package/components/base-radio-group/index.css +17 -17
  5. package/components/base-radio-group/index.module.css.js +1 -1
  6. package/cssm/components/base-radio-group/Component.d.ts +3 -3
  7. package/cssm/components/base-radio-group/Component.js +2 -2
  8. package/cssm/components/base-radio-group/Component.js.map +1 -1
  9. package/cssm/components/base-radio-group/index.module.css +2 -2
  10. package/cssm/desktop/desktop.module.css +1 -1
  11. package/cssm/mobile/mobile.module.css +3 -3
  12. package/desktop/desktop.css +6 -6
  13. package/desktop/desktop.module.css.js +1 -1
  14. package/esm/components/base-radio-group/Component.d.ts +3 -3
  15. package/esm/components/base-radio-group/Component.js +3 -3
  16. package/esm/components/base-radio-group/Component.js.map +1 -1
  17. package/esm/components/base-radio-group/index.css +17 -17
  18. package/esm/components/base-radio-group/index.module.css.js +1 -1
  19. package/esm/desktop/desktop.css +6 -6
  20. package/esm/desktop/desktop.module.css.js +1 -1
  21. package/esm/mobile/mobile.css +10 -10
  22. package/esm/mobile/mobile.module.css.js +1 -1
  23. package/mobile/mobile.css +10 -10
  24. package/mobile/mobile.module.css.js +1 -1
  25. package/modern/components/base-radio-group/Component.d.ts +3 -3
  26. package/modern/components/base-radio-group/Component.js +2 -2
  27. package/modern/components/base-radio-group/Component.js.map +1 -1
  28. package/modern/components/base-radio-group/index.css +17 -17
  29. package/modern/components/base-radio-group/index.module.css.js +1 -1
  30. package/modern/desktop/desktop.css +6 -6
  31. package/modern/desktop/desktop.module.css.js +1 -1
  32. package/modern/mobile/mobile.css +10 -10
  33. package/modern/mobile/mobile.module.css.js +1 -1
  34. package/moderncssm/components/base-radio-group/Component.d.ts +3 -3
  35. package/moderncssm/components/base-radio-group/Component.js +2 -2
  36. package/moderncssm/components/base-radio-group/Component.js.map +1 -1
  37. package/moderncssm/components/base-radio-group/index.module.css +4 -2
  38. package/moderncssm/desktop/desktop.module.css +3 -1
  39. package/moderncssm/mobile/mobile.module.css +5 -3
  40. package/package.json +2 -2
  41. package/src/components/base-radio-group/Component.tsx +12 -3
  42. package/src/vars.css +1 -1
@@ -1,7 +1,7 @@
1
- import React, { ChangeEvent, FocusEvent, MouseEvent, ReactNode } from 'react';
1
+ import React, { AriaAttributes, ChangeEvent, FocusEvent, HTMLAttributes, MouseEvent, ReactNode } from 'react';
2
2
  export declare type Direction = 'horizontal' | 'vertical';
3
3
  export declare type RadioGroupType = 'radio' | 'tag';
4
- export declare type BaseRadioGroupProps = {
4
+ export interface BaseRadioGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'onBlur' | 'onFocus' | 'children' | 'className'>, AriaAttributes {
5
5
  /**
6
6
  * Заголовок группы
7
7
  */
@@ -71,5 +71,5 @@ export declare type BaseRadioGroupProps = {
71
71
  styles: {
72
72
  [key: string]: string;
73
73
  };
74
- };
74
+ }
75
75
  export declare const BaseRadioGroup: React.ForwardRefExoticComponent<BaseRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
@@ -16,7 +16,7 @@ var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
16
16
 
17
17
  var BaseRadioGroup = React.forwardRef(function (_a, ref) {
18
18
  var _b, _c, _d, _e, _f;
19
- var children = _a.children, className = _a.className, radioListClassName = _a.radioListClassName, _g = _a.direction, direction = _g === void 0 ? 'vertical' : _g, label = _a.label, error = _a.error, hint = _a.hint, onChange = _a.onChange, onBlur = _a.onBlur, onFocus = _a.onFocus, _h = _a.type, type = _h === void 0 ? 'radio' : _h, dataTestId = _a.dataTestId, _j = _a.disabled, disabled = _j === void 0 ? false : _j, name = _a.name, value = _a.value, styles = _a.styles;
19
+ var children = _a.children, className = _a.className, radioListClassName = _a.radioListClassName, _g = _a.direction, direction = _g === void 0 ? 'vertical' : _g, label = _a.label, error = _a.error, hint = _a.hint, onChange = _a.onChange, onBlur = _a.onBlur, onFocus = _a.onFocus, _h = _a.type, type = _h === void 0 ? 'radio' : _h, dataTestId = _a.dataTestId, _j = _a.disabled, disabled = _j === void 0 ? false : _j, name = _a.name, value = _a.value, styles = _a.styles, restProps = tslib.__rest(_a, ["children", "className", "radioListClassName", "direction", "label", "error", "hint", "onChange", "onBlur", "onFocus", "type", "dataTestId", "disabled", "name", "value", "styles"]);
20
20
  var _k = React.useState(''), stateValue = _k[0], setStateValue = _k[1];
21
21
  hooks.useDidUpdateEffect(function () {
22
22
  setStateValue(value);
@@ -43,7 +43,7 @@ var BaseRadioGroup = React.forwardRef(function (_a, ref) {
43
43
  clone));
44
44
  };
45
45
  var errorMessage = typeof error === 'boolean' ? '' : error;
46
- return (React__default.default.createElement("div", { className: cn__default.default(index_module.component, index_module[type], (_b = {}, _b[styles.error] = error, _b), className), "data-test-id": dataTestId, ref: ref },
46
+ return (React__default.default.createElement("div", tslib.__assign({ className: cn__default.default(index_module.component, index_module[type], (_b = {}, _b[styles.error] = error, _b), className), ref: ref, "data-test-id": dataTestId }, restProps),
47
47
  label ? (React__default.default.createElement("span", { className: cn__default.default(styles.label, (_c = {},
48
48
  _c[styles.tag] = type === 'tag',
49
49
  _c)), "data-test-id": coreComponentsShared.getDataTestId(dataTestId, 'label') }, label)) : null,
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../../src/components/base-radio-group/Component.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n Children,\n cloneElement,\n FocusEvent,\n forwardRef,\n isValidElement,\n MouseEvent,\n ReactElement,\n ReactNode,\n useState,\n} from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\nimport { useDidUpdateEffect } from '@alfalab/hooks';\n\nimport commonStyles from './index.module.css';\n\nexport type Direction = 'horizontal' | 'vertical';\nexport type RadioGroupType = 'radio' | 'tag';\n\nexport type BaseRadioGroupProps = {\n /**\n * Заголовок группы\n */\n label?: ReactNode;\n\n /**\n * Направление\n */\n direction?: Direction;\n\n /**\n * Тип компонента\n */\n type?: RadioGroupType;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для списка радио элементов\n */\n radioListClassName?: string;\n\n /**\n * Отображение ошибки\n */\n error?: ReactNode | boolean;\n\n /**\n * Текст подсказки снизу\n */\n hint?: ReactNode;\n\n /**\n * Дочерние элементы. Ожидаются компоненты `Radio` или `Tag`\n */\n children: ReactNode;\n\n /**\n * Обработчик изменения значения 'checked' одного из дочерних компонентов\n */\n onChange?: (\n event: ChangeEvent | MouseEvent,\n payload: {\n value: string;\n name?: string;\n },\n ) => void;\n\n /**\n * Обработчик блюра.\n */\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n\n /**\n * Обработчик фокуса.\n */\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n\n /**\n * Управление возможностью изменения состояния 'checked' дочерних компонентов Radio | Tag\n */\n disabled?: boolean;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n\n /**\n * Атрибут name для всех дочерних компонентов\n */\n name?: string;\n\n /**\n * Value выбранного дочернего элемента\n */\n value?: string | null;\n\n /**\n * Основные стили компонента.\n */\n styles: { [key: string]: string };\n};\n\nexport const BaseRadioGroup = forwardRef<HTMLDivElement, BaseRadioGroupProps>(\n (\n {\n children,\n className,\n radioListClassName,\n direction = 'vertical',\n label,\n error,\n hint,\n onChange,\n onBlur,\n onFocus,\n type = 'radio',\n dataTestId,\n disabled = false,\n name,\n value,\n styles,\n },\n ref,\n ) => {\n const [stateValue, setStateValue] = useState<BaseRadioGroupProps['value']>('');\n\n useDidUpdateEffect(() => {\n setStateValue(value);\n }, [value]);\n\n const isChecked = (childValue: string) =>\n value !== null && (value || stateValue) === childValue;\n\n const handleChange = (event: ChangeEvent | MouseEvent, childValue: string) => {\n setStateValue(childValue);\n if (onChange) {\n onChange(event, { name, value: childValue });\n }\n };\n\n const renderRadio = (child: ReactElement) => {\n const { className: childClassName, value: childValue } = child.props;\n\n return cloneElement(child, {\n onChange: (event: ChangeEvent) => handleChange(event, childValue),\n disabled,\n ...child.props,\n checked: isChecked(childValue),\n name,\n className: cn(childClassName, commonStyles[`${direction}Radio`]),\n });\n };\n\n const renderTag = (child: ReactElement) => {\n const childValue = child.props.value;\n const checked = isChecked(childValue);\n const clone = cloneElement(child, {\n onClick: (event: MouseEvent) => handleChange(event, childValue),\n disabled,\n ...child.props,\n checked,\n name,\n tabIndex: -1,\n });\n\n return (\n <label\n className={cn(\n commonStyles[`${direction}Radio`],\n commonStyles[`${direction}TagLabel`],\n commonStyles.tagLabel,\n )}\n >\n <input\n type='radio'\n autoComplete='off'\n onChange={(event: ChangeEvent) => handleChange(event, childValue)}\n disabled={disabled || child.props.disabled}\n name={name}\n checked={checked}\n className={commonStyles.hiddenInput}\n value={child.props.value}\n />\n {clone}\n </label>\n );\n };\n\n const errorMessage = typeof error === 'boolean' ? '' : error;\n\n return (\n <div\n className={cn(\n commonStyles.component,\n commonStyles[type],\n { [styles.error]: error },\n className,\n )}\n data-test-id={dataTestId}\n ref={ref}\n >\n {label ? (\n <span\n className={cn(styles.label, {\n [styles.tag]: type === 'tag',\n })}\n data-test-id={getDataTestId(dataTestId, 'label')}\n >\n {label}\n </span>\n ) : null}\n\n {children ? (\n <div\n className={cn(\n commonStyles.radioList,\n commonStyles[`${direction}RadioList`],\n radioListClassName,\n { [styles.radioList]: type === 'radio' },\n )}\n onBlur={onBlur}\n onFocus={onFocus}\n >\n {Children.map(children, (child) => {\n if (isValidElement(child)) {\n return type === 'radio' ? renderRadio(child) : renderTag(child);\n }\n\n return null;\n })}\n </div>\n ) : null}\n\n {errorMessage && (\n <span\n className={cn(\n styles.sub,\n {\n [styles.tag]: type === 'tag',\n },\n commonStyles.errorMessage,\n )}\n role='alert'\n data-test-id={getDataTestId(dataTestId, 'error')}\n >\n {errorMessage}\n </span>\n )}\n\n {hint && !errorMessage && (\n <span\n className={cn(\n styles.sub,\n {\n [styles.tag]: type === 'tag',\n },\n commonStyles.hint,\n )}\n data-test-id={getDataTestId(dataTestId, 'hint')}\n >\n {hint}\n </span>\n )}\n </div>\n );\n },\n);\n"],"names":["forwardRef","useState","useDidUpdateEffect","cloneElement","__assign","cn","commonStyles","React","getDataTestId","Children","isValidElement"],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["../../src/components/base-radio-group/Component.tsx"],"sourcesContent":["import React, {\n AriaAttributes,\n ChangeEvent,\n Children,\n cloneElement,\n FocusEvent,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n MouseEvent,\n ReactElement,\n ReactNode,\n useState,\n} from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\nimport { useDidUpdateEffect } from '@alfalab/hooks';\n\nimport commonStyles from './index.module.css';\n\nexport type Direction = 'horizontal' | 'vertical';\nexport type RadioGroupType = 'radio' | 'tag';\n\nexport interface BaseRadioGroupProps\n extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'onChange' | 'onBlur' | 'onFocus' | 'children' | 'className'\n >,\n AriaAttributes {\n /**\n * Заголовок группы\n */\n label?: ReactNode;\n\n /**\n * Направление\n */\n direction?: Direction;\n\n /**\n * Тип компонента\n */\n type?: RadioGroupType;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для списка радио элементов\n */\n radioListClassName?: string;\n\n /**\n * Отображение ошибки\n */\n error?: ReactNode | boolean;\n\n /**\n * Текст подсказки снизу\n */\n hint?: ReactNode;\n\n /**\n * Дочерние элементы. Ожидаются компоненты `Radio` или `Tag`\n */\n children: ReactNode;\n\n /**\n * Обработчик изменения значения 'checked' одного из дочерних компонентов\n */\n onChange?: (\n event: ChangeEvent | MouseEvent,\n payload: {\n value: string;\n name?: string;\n },\n ) => void;\n\n /**\n * Обработчик блюра.\n */\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n\n /**\n * Обработчик фокуса.\n */\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n\n /**\n * Управление возможностью изменения состояния 'checked' дочерних компонентов Radio | Tag\n */\n disabled?: boolean;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n\n /**\n * Атрибут name для всех дочерних компонентов\n */\n name?: string;\n\n /**\n * Value выбранного дочернего элемента\n */\n value?: string | null;\n\n /**\n * Основные стили компонента.\n */\n styles: { [key: string]: string };\n}\n\nexport const BaseRadioGroup = forwardRef<HTMLDivElement, BaseRadioGroupProps>(\n (\n {\n children,\n className,\n radioListClassName,\n direction = 'vertical',\n label,\n error,\n hint,\n onChange,\n onBlur,\n onFocus,\n type = 'radio',\n dataTestId,\n disabled = false,\n name,\n value,\n styles,\n ...restProps\n },\n ref,\n ) => {\n const [stateValue, setStateValue] = useState<BaseRadioGroupProps['value']>('');\n\n useDidUpdateEffect(() => {\n setStateValue(value);\n }, [value]);\n\n const isChecked = (childValue: string) =>\n value !== null && (value || stateValue) === childValue;\n\n const handleChange = (event: ChangeEvent | MouseEvent, childValue: string) => {\n setStateValue(childValue);\n if (onChange) {\n onChange(event, { name, value: childValue });\n }\n };\n\n const renderRadio = (child: ReactElement) => {\n const { className: childClassName, value: childValue } = child.props;\n\n return cloneElement(child, {\n onChange: (event: ChangeEvent) => handleChange(event, childValue),\n disabled,\n ...child.props,\n checked: isChecked(childValue),\n name,\n className: cn(childClassName, commonStyles[`${direction}Radio`]),\n });\n };\n\n const renderTag = (child: ReactElement) => {\n const childValue = child.props.value;\n const checked = isChecked(childValue);\n const clone = cloneElement(child, {\n onClick: (event: MouseEvent) => handleChange(event, childValue),\n disabled,\n ...child.props,\n checked,\n name,\n tabIndex: -1,\n });\n\n return (\n <label\n className={cn(\n commonStyles[`${direction}Radio`],\n commonStyles[`${direction}TagLabel`],\n commonStyles.tagLabel,\n )}\n >\n <input\n type='radio'\n autoComplete='off'\n onChange={(event: ChangeEvent) => handleChange(event, childValue)}\n disabled={disabled || child.props.disabled}\n name={name}\n checked={checked}\n className={commonStyles.hiddenInput}\n value={child.props.value}\n />\n {clone}\n </label>\n );\n };\n\n const errorMessage = typeof error === 'boolean' ? '' : error;\n\n return (\n <div\n className={cn(\n commonStyles.component,\n commonStyles[type],\n { [styles.error]: error },\n className,\n )}\n ref={ref}\n data-test-id={dataTestId}\n {...restProps}\n >\n {label ? (\n <span\n className={cn(styles.label, {\n [styles.tag]: type === 'tag',\n })}\n data-test-id={getDataTestId(dataTestId, 'label')}\n >\n {label}\n </span>\n ) : null}\n\n {children ? (\n <div\n className={cn(\n commonStyles.radioList,\n commonStyles[`${direction}RadioList`],\n radioListClassName,\n { [styles.radioList]: type === 'radio' },\n )}\n onBlur={onBlur}\n onFocus={onFocus}\n >\n {Children.map(children, (child) => {\n if (isValidElement(child)) {\n return type === 'radio' ? renderRadio(child) : renderTag(child);\n }\n\n return null;\n })}\n </div>\n ) : null}\n\n {errorMessage && (\n <span\n className={cn(\n styles.sub,\n {\n [styles.tag]: type === 'tag',\n },\n commonStyles.errorMessage,\n )}\n role='alert'\n data-test-id={getDataTestId(dataTestId, 'error')}\n >\n {errorMessage}\n </span>\n )}\n\n {hint && !errorMessage && (\n <span\n className={cn(\n styles.sub,\n {\n [styles.tag]: type === 'tag',\n },\n commonStyles.hint,\n )}\n data-test-id={getDataTestId(dataTestId, 'hint')}\n >\n {hint}\n </span>\n )}\n </div>\n );\n },\n);\n"],"names":["forwardRef","__rest","useState","useDidUpdateEffect","cloneElement","__assign","cn","commonStyles","React","getDataTestId","Children","isValidElement"],"mappings":";;;;;;;;;;;;;;;;IAqHa,cAAc,GAAGA,gBAAU,CACpC,UACI,EAkBC,EACD,GAAG,EAAA;;AAlBC,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,kBAAkB,GAAA,EAAA,CAAA,kBAAA,EAClB,EAAA,GAAA,EAAA,CAAA,SAAsB,EAAtB,SAAS,GAAG,EAAA,KAAA,MAAA,GAAA,UAAU,GAAA,EAAA,EACtB,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,EAAA,GAAA,EAAA,CAAA,IAAc,EAAd,IAAI,GAAG,EAAA,KAAA,MAAA,GAAA,OAAO,GAAA,EAAA,EACd,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,EAAA,GAAA,EAAA,CAAA,QAAgB,EAAhB,QAAQ,GAAA,EAAA,KAAA,MAAA,GAAG,KAAK,GAAA,EAAA,EAChB,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,MAAM,GAAA,EAAA,CAAA,MAAA,EACH,SAAS,GAAAC,YAAA,CAAA,EAAA,EAjBhB,oLAkBC,CADe;IAIV,IAAA,EAAA,GAA8BC,cAAQ,CAA+B,EAAE,CAAC,EAAvE,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,aAAa,GAAA,EAAA,CAAA,CAAA,CAA8C;AAE9E,IAAAC,wBAAkB,CAAC,YAAA;QACf,aAAa,CAAC,KAAK,CAAC;AACxB,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAEX,IAAM,SAAS,GAAG,UAAC,UAAkB,EAAA;QACjC,OAAA,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,UAAU,MAAM,UAAU;AAAtD,KAAsD;AAE1D,IAAA,IAAM,YAAY,GAAG,UAAC,KAA+B,EAAE,UAAkB,EAAA;QACrE,aAAa,CAAC,UAAU,CAAC;AACzB,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAA,IAAA,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC/C;AACL,KAAC;IAED,IAAM,WAAW,GAAG,UAAC,KAAmB,EAAA;QAC9B,IAAA,EAAA,GAAmD,KAAK,CAAC,KAAK,EAAjD,cAAc,GAAA,EAAA,CAAA,SAAA,EAAS,UAAU,GAAA,EAAA,CAAA,KAAgB;QAEpE,OAAOC,kBAAY,CAAC,KAAK,EAAAC,cAAA,CAAAA,cAAA,CAAA,EACrB,QAAQ,EAAE,UAAC,KAAkB,EAAA,EAAK,OAAA,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAA/B,EAA+B,EACjE,QAAQ,EAAA,QAAA,EACL,EAAA,KAAK,CAAC,KAAK,KACd,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,EAC9B,IAAI,EAAA,IAAA,EACJ,SAAS,EAAEC,mBAAE,CAAC,cAAc,EAAEC,YAAY,CAAC,EAAA,CAAA,MAAA,CAAG,SAAS,EAAO,OAAA,CAAA,CAAC,CAAC,EAAA,CAAA,CAClE;AACN,KAAC;IAED,IAAM,SAAS,GAAG,UAAC,KAAmB,EAAA;AAClC,QAAA,IAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK;AACpC,QAAA,IAAM,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC;AACrC,QAAA,IAAM,KAAK,GAAGH,kBAAY,CAAC,KAAK,kCAC5B,OAAO,EAAE,UAAC,KAAiB,IAAK,OAAA,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA,EAAA,EAC/D,QAAQ,EAAA,QAAA,EAAA,EACL,KAAK,CAAC,KAAK,KACd,OAAO,EAAA,OAAA,EACP,IAAI,MAAA,EACJ,QAAQ,EAAE,EAAE,IACd;QAEF,QACII,gDACI,SAAS,EAAEF,mBAAE,CACTC,YAAY,CAAC,EAAA,CAAA,MAAA,CAAG,SAAS,EAAA,OAAA,CAAO,CAAC,EACjCA,YAAY,CAAC,EAAA,CAAA,MAAA,CAAG,SAAS,EAAA,UAAA,CAAU,CAAC,EACpCA,YAAY,CAAC,QAAQ,CACxB,EAAA;YAEDC,sBACI,CAAA,aAAA,CAAA,OAAA,EAAA,EAAA,IAAI,EAAC,OAAO,EACZ,YAAY,EAAC,KAAK,EAClB,QAAQ,EAAE,UAAC,KAAkB,IAAK,OAAA,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA,EAAA,EACjE,QAAQ,EAAE,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAC1C,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,SAAS,EAAED,YAAY,CAAC,WAAW,EACnC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAC1B,CAAA;YACD,KAAK,CACF;AAEhB,KAAC;AAED,IAAA,IAAM,YAAY,GAAG,OAAO,KAAK,KAAK,SAAS,GAAG,EAAE,GAAG,KAAK;AAE5D,IAAA,QACIC,sBAAA,CAAA,aAAA,CAAA,KAAA,EAAAH,cAAA,CAAA,EACI,SAAS,EAAEC,mBAAE,CACTC,YAAY,CAAC,SAAS,EACtBA,YAAY,CAAC,IAAI,CAAC,GAAA,EAAA,GAAA,EAAA,EAChB,EAAC,CAAA,MAAM,CAAC,KAAK,CAAG,GAAA,KAAK,OACvB,SAAS,CACZ,EACD,GAAG,EAAE,GAAG,EACM,cAAA,EAAA,UAAU,IACpB,SAAS,CAAA;QAEZ,KAAK,IACFC,sBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,SAAS,EAAEF,mBAAE,CAAC,MAAM,CAAC,KAAK,GAAA,EAAA,GAAA,EAAA;AACtB,gBAAA,EAAA,CAAC,MAAM,CAAC,GAAG,CAAG,GAAA,IAAI,KAAK,KAAK;AAC9B,gBAAA,EAAA,EAAA,EAAA,cAAA,EACYG,kCAAa,CAAC,UAAU,EAAE,OAAO,CAAC,EAE/C,EAAA,KAAK,CACH,IACP,IAAI;QAEP,QAAQ,IACLD,8CACI,SAAS,EAAEF,mBAAE,CACTC,YAAY,CAAC,SAAS,EACtBA,YAAY,CAAC,EAAA,CAAA,MAAA,CAAG,SAAS,EAAW,WAAA,CAAA,CAAC,EACrC,kBAAkB,GAChB,EAAA,GAAA,EAAA,EAAA,EAAA,CAAC,MAAM,CAAC,SAAS,IAAG,IAAI,KAAK,OAAO,EACzC,EAAA,EAAA,EACD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,IAEfG,cAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAC,KAAK,EAAA;AAC1B,YAAA,IAAIC,oBAAc,CAAC,KAAK,CAAC,EAAE;AACvB,gBAAA,OAAO,IAAI,KAAK,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;AAClE;AAED,YAAA,OAAO,IAAI;AACf,SAAC,CAAC,CACA,IACN,IAAI;QAEP,YAAY,KACTH,sBACI,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAEF,mBAAE,CACT,MAAM,CAAC,GAAG,GAAA,EAAA,GAAA,EAAA;AAEN,gBAAA,EAAA,CAAC,MAAM,CAAC,GAAG,CAAG,GAAA,IAAI,KAAK,KAAK;AAEhC,gBAAA,EAAA,GAAAC,YAAY,CAAC,YAAY,CAC5B,EACD,IAAI,EAAC,OAAO,EAAA,cAAA,EACEE,kCAAa,CAAC,UAAU,EAAE,OAAO,CAAC,EAE/C,EAAA,YAAY,CACV,CACV;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,KAClBD,sBAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,SAAS,EAAEF,mBAAE,CACT,MAAM,CAAC,GAAG,GAAA,EAAA,GAAA,EAAA;AAEN,gBAAA,EAAA,CAAC,MAAM,CAAC,GAAG,CAAG,GAAA,IAAI,KAAK,KAAK;AAEhC,gBAAA,EAAA,GAAAC,YAAY,CAAC,IAAI,CACpB,EACa,cAAA,EAAAE,kCAAa,CAAC,UAAU,EAAE,MAAM,CAAC,IAE9C,IAAI,CACF,CACV,CACC;AAEd,CAAC;;;;"}
@@ -17,43 +17,43 @@
17
17
  } :root {
18
18
  --radio-group-hint-color: var(--color-light-text-secondary);
19
19
  --radio-group-error-color: var(--color-light-text-negative);
20
- } .radio-group__component_zyivd {
20
+ } .radio-group__component_j2nm5 {
21
21
  display: flex;
22
22
  flex-direction: column;
23
- } .radio-group__radioList_zyivd {
23
+ } .radio-group__radioList_j2nm5 {
24
24
  display: flex;
25
- } .radio-group__verticalRadioList_zyivd {
25
+ } .radio-group__verticalRadioList_j2nm5 {
26
26
  flex-direction: column;
27
27
  align-items: flex-start;
28
- } .radio-group__horizontalRadioList_zyivd {
28
+ } .radio-group__horizontalRadioList_j2nm5 {
29
29
  flex-wrap: wrap;
30
30
  margin-bottom: var(--gap-8-neg);
31
- } .radio-group__verticalRadio_zyivd {
32
- margin-bottom: var(--gap-12)
33
- } .radio-group__verticalRadio_zyivd:last-child {
31
+ } .radio-group__verticalRadio_j2nm5 {
32
+ margin-bottom: var(--gap-12);
33
+ } .radio-group__verticalRadio_j2nm5:last-child {
34
34
  margin-bottom: var(--gap-0);
35
- } .radio-group__horizontalRadio_zyivd {
35
+ } .radio-group__horizontalRadio_j2nm5 {
36
36
  margin-right: var(--gap-24);
37
37
  margin-bottom: var(--gap-8);
38
- } .radio-group__horizontalTagLabel_zyivd {
38
+ } .radio-group__horizontalTagLabel_j2nm5 {
39
39
  margin-right: var(--gap-8);
40
- } .radio-group__horizontalRadio_zyivd:last-child,
41
- .radio-group__horizontalTagLabel_zyivd:last-child {
40
+ } .radio-group__horizontalRadio_j2nm5:last-child,
41
+ .radio-group__horizontalTagLabel_j2nm5:last-child {
42
42
  margin-right: var(--gap-0);
43
- } .radio-group__errorMessage_zyivd {
43
+ } .radio-group__errorMessage_j2nm5 {
44
44
  color: var(--radio-group-error-color);
45
- } .radio-group__hint_zyivd {
45
+ } .radio-group__hint_j2nm5 {
46
46
  color: var(--radio-group-hint-color);
47
- } .radio-group__hiddenInput_zyivd {
47
+ } .radio-group__hiddenInput_j2nm5 {
48
48
  position: absolute;
49
49
  z-index: -1;
50
50
  top: var(--gap-0);
51
51
  left: var(--gap-0);
52
- opacity: 0
53
- } .radio-group__hiddenInput_zyivd:focus ~ button {
52
+ opacity: 0;
53
+ } .radio-group__hiddenInput_j2nm5:focus ~ button {
54
54
  outline: 2px solid var(--focus-color);
55
55
  outline-offset: 2px;
56
- } .radio-group__tagLabel_zyivd {
56
+ } .radio-group__tagLabel_j2nm5 {
57
57
  position: relative;
58
58
  max-width: 100%;
59
59
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  require('./index.css');
4
4
 
5
- var commonStyles = {"component":"radio-group__component_zyivd","radioList":"radio-group__radioList_zyivd","verticalRadioList":"radio-group__verticalRadioList_zyivd","horizontalRadioList":"radio-group__horizontalRadioList_zyivd","verticalRadio":"radio-group__verticalRadio_zyivd","horizontalRadio":"radio-group__horizontalRadio_zyivd","horizontalTagLabel":"radio-group__horizontalTagLabel_zyivd","errorMessage":"radio-group__errorMessage_zyivd","hint":"radio-group__hint_zyivd","hiddenInput":"radio-group__hiddenInput_zyivd","tagLabel":"radio-group__tagLabel_zyivd"};
5
+ var commonStyles = {"component":"radio-group__component_j2nm5","radioList":"radio-group__radioList_j2nm5","verticalRadioList":"radio-group__verticalRadioList_j2nm5","horizontalRadioList":"radio-group__horizontalRadioList_j2nm5","verticalRadio":"radio-group__verticalRadio_j2nm5","horizontalRadio":"radio-group__horizontalRadio_j2nm5","horizontalTagLabel":"radio-group__horizontalTagLabel_j2nm5","errorMessage":"radio-group__errorMessage_j2nm5","hint":"radio-group__hint_j2nm5","hiddenInput":"radio-group__hiddenInput_j2nm5","tagLabel":"radio-group__tagLabel_j2nm5"};
6
6
 
7
7
  module.exports = commonStyles;
8
8
  //# sourceMappingURL=index.module.css.js.map
@@ -1,7 +1,7 @@
1
- import React, { ChangeEvent, FocusEvent, MouseEvent, ReactNode } from 'react';
1
+ import React, { AriaAttributes, ChangeEvent, FocusEvent, HTMLAttributes, MouseEvent, ReactNode } from 'react';
2
2
  export declare type Direction = 'horizontal' | 'vertical';
3
3
  export declare type RadioGroupType = 'radio' | 'tag';
4
- export declare type BaseRadioGroupProps = {
4
+ export interface BaseRadioGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'onBlur' | 'onFocus' | 'children' | 'className'>, AriaAttributes {
5
5
  /**
6
6
  * Заголовок группы
7
7
  */
@@ -71,5 +71,5 @@ export declare type BaseRadioGroupProps = {
71
71
  styles: {
72
72
  [key: string]: string;
73
73
  };
74
- };
74
+ }
75
75
  export declare const BaseRadioGroup: React.ForwardRefExoticComponent<BaseRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
@@ -17,7 +17,7 @@ var commonStyles__default = /*#__PURE__*/_interopDefaultCompat(commonStyles);
17
17
 
18
18
  var BaseRadioGroup = React.forwardRef(function (_a, ref) {
19
19
  var _b, _c, _d, _e, _f;
20
- var children = _a.children, className = _a.className, radioListClassName = _a.radioListClassName, _g = _a.direction, direction = _g === void 0 ? 'vertical' : _g, label = _a.label, error = _a.error, hint = _a.hint, onChange = _a.onChange, onBlur = _a.onBlur, onFocus = _a.onFocus, _h = _a.type, type = _h === void 0 ? 'radio' : _h, dataTestId = _a.dataTestId, _j = _a.disabled, disabled = _j === void 0 ? false : _j, name = _a.name, value = _a.value, styles = _a.styles;
20
+ var children = _a.children, className = _a.className, radioListClassName = _a.radioListClassName, _g = _a.direction, direction = _g === void 0 ? 'vertical' : _g, label = _a.label, error = _a.error, hint = _a.hint, onChange = _a.onChange, onBlur = _a.onBlur, onFocus = _a.onFocus, _h = _a.type, type = _h === void 0 ? 'radio' : _h, dataTestId = _a.dataTestId, _j = _a.disabled, disabled = _j === void 0 ? false : _j, name = _a.name, value = _a.value, styles = _a.styles, restProps = tslib.__rest(_a, ["children", "className", "radioListClassName", "direction", "label", "error", "hint", "onChange", "onBlur", "onFocus", "type", "dataTestId", "disabled", "name", "value", "styles"]);
21
21
  var _k = React.useState(''), stateValue = _k[0], setStateValue = _k[1];
22
22
  hooks.useDidUpdateEffect(function () {
23
23
  setStateValue(value);
@@ -44,7 +44,7 @@ var BaseRadioGroup = React.forwardRef(function (_a, ref) {
44
44
  clone));
45
45
  };
46
46
  var errorMessage = typeof error === 'boolean' ? '' : error;
47
- return (React__default.default.createElement("div", { className: cn__default.default(commonStyles__default.default.component, commonStyles__default.default[type], (_b = {}, _b[styles.error] = error, _b), className), "data-test-id": dataTestId, ref: ref },
47
+ return (React__default.default.createElement("div", tslib.__assign({ className: cn__default.default(commonStyles__default.default.component, commonStyles__default.default[type], (_b = {}, _b[styles.error] = error, _b), className), ref: ref, "data-test-id": dataTestId }, restProps),
48
48
  label ? (React__default.default.createElement("span", { className: cn__default.default(styles.label, (_c = {},
49
49
  _c[styles.tag] = type === 'tag',
50
50
  _c)), "data-test-id": cssm.getDataTestId(dataTestId, 'label') }, label)) : null,
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../../../src/components/base-radio-group/Component.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n Children,\n cloneElement,\n FocusEvent,\n forwardRef,\n isValidElement,\n MouseEvent,\n ReactElement,\n ReactNode,\n useState,\n} from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\nimport { useDidUpdateEffect } from '@alfalab/hooks';\n\nimport commonStyles from './index.module.css';\n\nexport type Direction = 'horizontal' | 'vertical';\nexport type RadioGroupType = 'radio' | 'tag';\n\nexport type BaseRadioGroupProps = {\n /**\n * Заголовок группы\n */\n label?: ReactNode;\n\n /**\n * Направление\n */\n direction?: Direction;\n\n /**\n * Тип компонента\n */\n type?: RadioGroupType;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для списка радио элементов\n */\n radioListClassName?: string;\n\n /**\n * Отображение ошибки\n */\n error?: ReactNode | boolean;\n\n /**\n * Текст подсказки снизу\n */\n hint?: ReactNode;\n\n /**\n * Дочерние элементы. Ожидаются компоненты `Radio` или `Tag`\n */\n children: ReactNode;\n\n /**\n * Обработчик изменения значения 'checked' одного из дочерних компонентов\n */\n onChange?: (\n event: ChangeEvent | MouseEvent,\n payload: {\n value: string;\n name?: string;\n },\n ) => void;\n\n /**\n * Обработчик блюра.\n */\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n\n /**\n * Обработчик фокуса.\n */\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n\n /**\n * Управление возможностью изменения состояния 'checked' дочерних компонентов Radio | Tag\n */\n disabled?: boolean;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n\n /**\n * Атрибут name для всех дочерних компонентов\n */\n name?: string;\n\n /**\n * Value выбранного дочернего элемента\n */\n value?: string | null;\n\n /**\n * Основные стили компонента.\n */\n styles: { [key: string]: string };\n};\n\nexport const BaseRadioGroup = forwardRef<HTMLDivElement, BaseRadioGroupProps>(\n (\n {\n children,\n className,\n radioListClassName,\n direction = 'vertical',\n label,\n error,\n hint,\n onChange,\n onBlur,\n onFocus,\n type = 'radio',\n dataTestId,\n disabled = false,\n name,\n value,\n styles,\n },\n ref,\n ) => {\n const [stateValue, setStateValue] = useState<BaseRadioGroupProps['value']>('');\n\n useDidUpdateEffect(() => {\n setStateValue(value);\n }, [value]);\n\n const isChecked = (childValue: string) =>\n value !== null && (value || stateValue) === childValue;\n\n const handleChange = (event: ChangeEvent | MouseEvent, childValue: string) => {\n setStateValue(childValue);\n if (onChange) {\n onChange(event, { name, value: childValue });\n }\n };\n\n const renderRadio = (child: ReactElement) => {\n const { className: childClassName, value: childValue } = child.props;\n\n return cloneElement(child, {\n onChange: (event: ChangeEvent) => handleChange(event, childValue),\n disabled,\n ...child.props,\n checked: isChecked(childValue),\n name,\n className: cn(childClassName, commonStyles[`${direction}Radio`]),\n });\n };\n\n const renderTag = (child: ReactElement) => {\n const childValue = child.props.value;\n const checked = isChecked(childValue);\n const clone = cloneElement(child, {\n onClick: (event: MouseEvent) => handleChange(event, childValue),\n disabled,\n ...child.props,\n checked,\n name,\n tabIndex: -1,\n });\n\n return (\n <label\n className={cn(\n commonStyles[`${direction}Radio`],\n commonStyles[`${direction}TagLabel`],\n commonStyles.tagLabel,\n )}\n >\n <input\n type='radio'\n autoComplete='off'\n onChange={(event: ChangeEvent) => handleChange(event, childValue)}\n disabled={disabled || child.props.disabled}\n name={name}\n checked={checked}\n className={commonStyles.hiddenInput}\n value={child.props.value}\n />\n {clone}\n </label>\n );\n };\n\n const errorMessage = typeof error === 'boolean' ? '' : error;\n\n return (\n <div\n className={cn(\n commonStyles.component,\n commonStyles[type],\n { [styles.error]: error },\n className,\n )}\n data-test-id={dataTestId}\n ref={ref}\n >\n {label ? (\n <span\n className={cn(styles.label, {\n [styles.tag]: type === 'tag',\n })}\n data-test-id={getDataTestId(dataTestId, 'label')}\n >\n {label}\n </span>\n ) : null}\n\n {children ? (\n <div\n className={cn(\n commonStyles.radioList,\n commonStyles[`${direction}RadioList`],\n radioListClassName,\n { [styles.radioList]: type === 'radio' },\n )}\n onBlur={onBlur}\n onFocus={onFocus}\n >\n {Children.map(children, (child) => {\n if (isValidElement(child)) {\n return type === 'radio' ? renderRadio(child) : renderTag(child);\n }\n\n return null;\n })}\n </div>\n ) : null}\n\n {errorMessage && (\n <span\n className={cn(\n styles.sub,\n {\n [styles.tag]: type === 'tag',\n },\n commonStyles.errorMessage,\n )}\n role='alert'\n data-test-id={getDataTestId(dataTestId, 'error')}\n >\n {errorMessage}\n </span>\n )}\n\n {hint && !errorMessage && (\n <span\n className={cn(\n styles.sub,\n {\n [styles.tag]: type === 'tag',\n },\n commonStyles.hint,\n )}\n data-test-id={getDataTestId(dataTestId, 'hint')}\n >\n {hint}\n </span>\n )}\n </div>\n );\n },\n);\n"],"names":["forwardRef","useState","useDidUpdateEffect","cloneElement","__assign","cn","commonStyles","React","getDataTestId","Children","isValidElement"],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["../../../src/components/base-radio-group/Component.tsx"],"sourcesContent":["import React, {\n AriaAttributes,\n ChangeEvent,\n Children,\n cloneElement,\n FocusEvent,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n MouseEvent,\n ReactElement,\n ReactNode,\n useState,\n} from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\nimport { useDidUpdateEffect } from '@alfalab/hooks';\n\nimport commonStyles from './index.module.css';\n\nexport type Direction = 'horizontal' | 'vertical';\nexport type RadioGroupType = 'radio' | 'tag';\n\nexport interface BaseRadioGroupProps\n extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'onChange' | 'onBlur' | 'onFocus' | 'children' | 'className'\n >,\n AriaAttributes {\n /**\n * Заголовок группы\n */\n label?: ReactNode;\n\n /**\n * Направление\n */\n direction?: Direction;\n\n /**\n * Тип компонента\n */\n type?: RadioGroupType;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для списка радио элементов\n */\n radioListClassName?: string;\n\n /**\n * Отображение ошибки\n */\n error?: ReactNode | boolean;\n\n /**\n * Текст подсказки снизу\n */\n hint?: ReactNode;\n\n /**\n * Дочерние элементы. Ожидаются компоненты `Radio` или `Tag`\n */\n children: ReactNode;\n\n /**\n * Обработчик изменения значения 'checked' одного из дочерних компонентов\n */\n onChange?: (\n event: ChangeEvent | MouseEvent,\n payload: {\n value: string;\n name?: string;\n },\n ) => void;\n\n /**\n * Обработчик блюра.\n */\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n\n /**\n * Обработчик фокуса.\n */\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n\n /**\n * Управление возможностью изменения состояния 'checked' дочерних компонентов Radio | Tag\n */\n disabled?: boolean;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n\n /**\n * Атрибут name для всех дочерних компонентов\n */\n name?: string;\n\n /**\n * Value выбранного дочернего элемента\n */\n value?: string | null;\n\n /**\n * Основные стили компонента.\n */\n styles: { [key: string]: string };\n}\n\nexport const BaseRadioGroup = forwardRef<HTMLDivElement, BaseRadioGroupProps>(\n (\n {\n children,\n className,\n radioListClassName,\n direction = 'vertical',\n label,\n error,\n hint,\n onChange,\n onBlur,\n onFocus,\n type = 'radio',\n dataTestId,\n disabled = false,\n name,\n value,\n styles,\n ...restProps\n },\n ref,\n ) => {\n const [stateValue, setStateValue] = useState<BaseRadioGroupProps['value']>('');\n\n useDidUpdateEffect(() => {\n setStateValue(value);\n }, [value]);\n\n const isChecked = (childValue: string) =>\n value !== null && (value || stateValue) === childValue;\n\n const handleChange = (event: ChangeEvent | MouseEvent, childValue: string) => {\n setStateValue(childValue);\n if (onChange) {\n onChange(event, { name, value: childValue });\n }\n };\n\n const renderRadio = (child: ReactElement) => {\n const { className: childClassName, value: childValue } = child.props;\n\n return cloneElement(child, {\n onChange: (event: ChangeEvent) => handleChange(event, childValue),\n disabled,\n ...child.props,\n checked: isChecked(childValue),\n name,\n className: cn(childClassName, commonStyles[`${direction}Radio`]),\n });\n };\n\n const renderTag = (child: ReactElement) => {\n const childValue = child.props.value;\n const checked = isChecked(childValue);\n const clone = cloneElement(child, {\n onClick: (event: MouseEvent) => handleChange(event, childValue),\n disabled,\n ...child.props,\n checked,\n name,\n tabIndex: -1,\n });\n\n return (\n <label\n className={cn(\n commonStyles[`${direction}Radio`],\n commonStyles[`${direction}TagLabel`],\n commonStyles.tagLabel,\n )}\n >\n <input\n type='radio'\n autoComplete='off'\n onChange={(event: ChangeEvent) => handleChange(event, childValue)}\n disabled={disabled || child.props.disabled}\n name={name}\n checked={checked}\n className={commonStyles.hiddenInput}\n value={child.props.value}\n />\n {clone}\n </label>\n );\n };\n\n const errorMessage = typeof error === 'boolean' ? '' : error;\n\n return (\n <div\n className={cn(\n commonStyles.component,\n commonStyles[type],\n { [styles.error]: error },\n className,\n )}\n ref={ref}\n data-test-id={dataTestId}\n {...restProps}\n >\n {label ? (\n <span\n className={cn(styles.label, {\n [styles.tag]: type === 'tag',\n })}\n data-test-id={getDataTestId(dataTestId, 'label')}\n >\n {label}\n </span>\n ) : null}\n\n {children ? (\n <div\n className={cn(\n commonStyles.radioList,\n commonStyles[`${direction}RadioList`],\n radioListClassName,\n { [styles.radioList]: type === 'radio' },\n )}\n onBlur={onBlur}\n onFocus={onFocus}\n >\n {Children.map(children, (child) => {\n if (isValidElement(child)) {\n return type === 'radio' ? renderRadio(child) : renderTag(child);\n }\n\n return null;\n })}\n </div>\n ) : null}\n\n {errorMessage && (\n <span\n className={cn(\n styles.sub,\n {\n [styles.tag]: type === 'tag',\n },\n commonStyles.errorMessage,\n )}\n role='alert'\n data-test-id={getDataTestId(dataTestId, 'error')}\n >\n {errorMessage}\n </span>\n )}\n\n {hint && !errorMessage && (\n <span\n className={cn(\n styles.sub,\n {\n [styles.tag]: type === 'tag',\n },\n commonStyles.hint,\n )}\n data-test-id={getDataTestId(dataTestId, 'hint')}\n >\n {hint}\n </span>\n )}\n </div>\n );\n },\n);\n"],"names":["forwardRef","__rest","useState","useDidUpdateEffect","cloneElement","__assign","cn","commonStyles","React","getDataTestId","Children","isValidElement"],"mappings":"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"}
@@ -29,7 +29,7 @@
29
29
  flex-wrap: wrap;
30
30
  margin-bottom: var(--gap-8-neg);
31
31
  } .verticalRadio {
32
- margin-bottom: var(--gap-12)
32
+ margin-bottom: var(--gap-12);
33
33
  } .verticalRadio:last-child {
34
34
  margin-bottom: var(--gap-0);
35
35
  } .horizontalRadio {
@@ -49,7 +49,7 @@
49
49
  z-index: -1;
50
50
  top: var(--gap-0);
51
51
  left: var(--gap-0);
52
- opacity: 0
52
+ opacity: 0;
53
53
  } .hiddenInput:focus ~ button {
54
54
  outline: 2px solid var(--focus-color);
55
55
  outline-offset: 2px;
@@ -30,7 +30,7 @@
30
30
  padding-left: var(--radio-group-sub-padding-left);
31
31
  } .error {
32
32
  padding-left: var(--radio-group-error-padding-left);
33
- border-left: var(--radio-group-error-border-left)
33
+ border-left: var(--radio-group-error-border-left);
34
34
  } .error.tag {
35
35
  padding-left: var(--gap-8);
36
36
  }
@@ -24,7 +24,7 @@
24
24
  font-weight: 400;
25
25
  color: var(--radio-group-mobile-label-color);
26
26
  padding-left: var(--radio-group-mobile-sub-padding-left);
27
- margin-bottom: var(--gap-12)
27
+ margin-bottom: var(--gap-12);
28
28
  } .label.tag {
29
29
  margin-bottom: var(--gap-8);
30
30
  } .sub {
@@ -32,12 +32,12 @@
32
32
  line-height: 18px;
33
33
  font-weight: 400;
34
34
  margin-top: var(--gap-12);
35
- padding-left: var(--radio-group-mobile-sub-padding-left)
35
+ padding-left: var(--radio-group-mobile-sub-padding-left);
36
36
  } .sub.tag {
37
37
  margin-top: var(--gap-8);
38
38
  } .error {
39
39
  padding-left: var(--radio-group-mobile-error-padding-left);
40
- border-left: var(--radio-group-mobile-error-border-left)
40
+ border-left: var(--radio-group-mobile-error-border-left);
41
41
  } .error.tag {
42
42
  padding-left: var(--gap-0);
43
43
  }
@@ -13,24 +13,24 @@
13
13
  --radio-group-list-padding-left: var(--gap-0);
14
14
  --radio-group-error-padding-left: var(--gap-8);
15
15
  --radio-group-error-border-left: 1px solid var(--color-light-status-negative);
16
- } .radio-group__radioList_1a60s {
16
+ } .radio-group__radioList_1qcbs {
17
17
  padding-left: var(--radio-group-list-padding-left);
18
- } .radio-group__label_1a60s {
18
+ } .radio-group__label_1qcbs {
19
19
  font-size: 16px;
20
20
  line-height: 24px;
21
21
  font-weight: 400;
22
22
  color: var(--radio-group-label-color);
23
23
  margin-bottom: var(--gap-12);
24
24
  padding-left: var(--radio-group-sub-padding-left);
25
- } .radio-group__sub_1a60s {
25
+ } .radio-group__sub_1qcbs {
26
26
  font-size: 14px;
27
27
  line-height: 18px;
28
28
  font-weight: 400;
29
29
  margin-top: var(--gap-12);
30
30
  padding-left: var(--radio-group-sub-padding-left);
31
- } .radio-group__error_1a60s {
31
+ } .radio-group__error_1qcbs {
32
32
  padding-left: var(--radio-group-error-padding-left);
33
- border-left: var(--radio-group-error-border-left)
34
- } .radio-group__error_1a60s.radio-group__tag_1a60s {
33
+ border-left: var(--radio-group-error-border-left);
34
+ } .radio-group__error_1qcbs.radio-group__tag_1qcbs {
35
35
  padding-left: var(--gap-8);
36
36
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  require('./desktop.css');
4
4
 
5
- var styles = {"radioList":"radio-group__radioList_1a60s","label":"radio-group__label_1a60s","sub":"radio-group__sub_1a60s","error":"radio-group__error_1a60s","tag":"radio-group__tag_1a60s"};
5
+ var styles = {"radioList":"radio-group__radioList_1qcbs","label":"radio-group__label_1qcbs","sub":"radio-group__sub_1qcbs","error":"radio-group__error_1qcbs","tag":"radio-group__tag_1qcbs"};
6
6
 
7
7
  module.exports = styles;
8
8
  //# sourceMappingURL=desktop.module.css.js.map
@@ -1,7 +1,7 @@
1
- import React, { ChangeEvent, FocusEvent, MouseEvent, ReactNode } from 'react';
1
+ import React, { AriaAttributes, ChangeEvent, FocusEvent, HTMLAttributes, MouseEvent, ReactNode } from 'react';
2
2
  export declare type Direction = 'horizontal' | 'vertical';
3
3
  export declare type RadioGroupType = 'radio' | 'tag';
4
- export declare type BaseRadioGroupProps = {
4
+ export interface BaseRadioGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'onBlur' | 'onFocus' | 'children' | 'className'>, AriaAttributes {
5
5
  /**
6
6
  * Заголовок группы
7
7
  */
@@ -71,5 +71,5 @@ export declare type BaseRadioGroupProps = {
71
71
  styles: {
72
72
  [key: string]: string;
73
73
  };
74
- };
74
+ }
75
75
  export declare const BaseRadioGroup: React.ForwardRefExoticComponent<BaseRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
@@ -1,4 +1,4 @@
1
- import { __assign } from 'tslib';
1
+ import { __rest, __assign } from 'tslib';
2
2
  import React, { forwardRef, useState, Children, isValidElement, cloneElement } from 'react';
3
3
  import cn from 'classnames';
4
4
  import { getDataTestId } from '@alfalab/core-components-shared/esm';
@@ -7,7 +7,7 @@ import commonStyles from './index.module.css.js';
7
7
 
8
8
  var BaseRadioGroup = forwardRef(function (_a, ref) {
9
9
  var _b, _c, _d, _e, _f;
10
- var children = _a.children, className = _a.className, radioListClassName = _a.radioListClassName, _g = _a.direction, direction = _g === void 0 ? 'vertical' : _g, label = _a.label, error = _a.error, hint = _a.hint, onChange = _a.onChange, onBlur = _a.onBlur, onFocus = _a.onFocus, _h = _a.type, type = _h === void 0 ? 'radio' : _h, dataTestId = _a.dataTestId, _j = _a.disabled, disabled = _j === void 0 ? false : _j, name = _a.name, value = _a.value, styles = _a.styles;
10
+ var children = _a.children, className = _a.className, radioListClassName = _a.radioListClassName, _g = _a.direction, direction = _g === void 0 ? 'vertical' : _g, label = _a.label, error = _a.error, hint = _a.hint, onChange = _a.onChange, onBlur = _a.onBlur, onFocus = _a.onFocus, _h = _a.type, type = _h === void 0 ? 'radio' : _h, dataTestId = _a.dataTestId, _j = _a.disabled, disabled = _j === void 0 ? false : _j, name = _a.name, value = _a.value, styles = _a.styles, restProps = __rest(_a, ["children", "className", "radioListClassName", "direction", "label", "error", "hint", "onChange", "onBlur", "onFocus", "type", "dataTestId", "disabled", "name", "value", "styles"]);
11
11
  var _k = useState(''), stateValue = _k[0], setStateValue = _k[1];
12
12
  useDidUpdateEffect(function () {
13
13
  setStateValue(value);
@@ -34,7 +34,7 @@ var BaseRadioGroup = forwardRef(function (_a, ref) {
34
34
  clone));
35
35
  };
36
36
  var errorMessage = typeof error === 'boolean' ? '' : error;
37
- return (React.createElement("div", { className: cn(commonStyles.component, commonStyles[type], (_b = {}, _b[styles.error] = error, _b), className), "data-test-id": dataTestId, ref: ref },
37
+ return (React.createElement("div", __assign({ className: cn(commonStyles.component, commonStyles[type], (_b = {}, _b[styles.error] = error, _b), className), ref: ref, "data-test-id": dataTestId }, restProps),
38
38
  label ? (React.createElement("span", { className: cn(styles.label, (_c = {},
39
39
  _c[styles.tag] = type === 'tag',
40
40
  _c)), "data-test-id": getDataTestId(dataTestId, 'label') }, label)) : null,
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sources":["../../../src/components/base-radio-group/Component.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n Children,\n cloneElement,\n FocusEvent,\n forwardRef,\n isValidElement,\n MouseEvent,\n ReactElement,\n ReactNode,\n useState,\n} from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\nimport { useDidUpdateEffect } from '@alfalab/hooks';\n\nimport commonStyles from './index.module.css';\n\nexport type Direction = 'horizontal' | 'vertical';\nexport type RadioGroupType = 'radio' | 'tag';\n\nexport type BaseRadioGroupProps = {\n /**\n * Заголовок группы\n */\n label?: ReactNode;\n\n /**\n * Направление\n */\n direction?: Direction;\n\n /**\n * Тип компонента\n */\n type?: RadioGroupType;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для списка радио элементов\n */\n radioListClassName?: string;\n\n /**\n * Отображение ошибки\n */\n error?: ReactNode | boolean;\n\n /**\n * Текст подсказки снизу\n */\n hint?: ReactNode;\n\n /**\n * Дочерние элементы. Ожидаются компоненты `Radio` или `Tag`\n */\n children: ReactNode;\n\n /**\n * Обработчик изменения значения 'checked' одного из дочерних компонентов\n */\n onChange?: (\n event: ChangeEvent | MouseEvent,\n payload: {\n value: string;\n name?: string;\n },\n ) => void;\n\n /**\n * Обработчик блюра.\n */\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n\n /**\n * Обработчик фокуса.\n */\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n\n /**\n * Управление возможностью изменения состояния 'checked' дочерних компонентов Radio | Tag\n */\n disabled?: boolean;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n\n /**\n * Атрибут name для всех дочерних компонентов\n */\n name?: string;\n\n /**\n * Value выбранного дочернего элемента\n */\n value?: string | null;\n\n /**\n * Основные стили компонента.\n */\n styles: { [key: string]: string };\n};\n\nexport const BaseRadioGroup = forwardRef<HTMLDivElement, BaseRadioGroupProps>(\n (\n {\n children,\n className,\n radioListClassName,\n direction = 'vertical',\n label,\n error,\n hint,\n onChange,\n onBlur,\n onFocus,\n type = 'radio',\n dataTestId,\n disabled = false,\n name,\n value,\n styles,\n },\n ref,\n ) => {\n const [stateValue, setStateValue] = useState<BaseRadioGroupProps['value']>('');\n\n useDidUpdateEffect(() => {\n setStateValue(value);\n }, [value]);\n\n const isChecked = (childValue: string) =>\n value !== null && (value || stateValue) === childValue;\n\n const handleChange = (event: ChangeEvent | MouseEvent, childValue: string) => {\n setStateValue(childValue);\n if (onChange) {\n onChange(event, { name, value: childValue });\n }\n };\n\n const renderRadio = (child: ReactElement) => {\n const { className: childClassName, value: childValue } = child.props;\n\n return cloneElement(child, {\n onChange: (event: ChangeEvent) => handleChange(event, childValue),\n disabled,\n ...child.props,\n checked: isChecked(childValue),\n name,\n className: cn(childClassName, commonStyles[`${direction}Radio`]),\n });\n };\n\n const renderTag = (child: ReactElement) => {\n const childValue = child.props.value;\n const checked = isChecked(childValue);\n const clone = cloneElement(child, {\n onClick: (event: MouseEvent) => handleChange(event, childValue),\n disabled,\n ...child.props,\n checked,\n name,\n tabIndex: -1,\n });\n\n return (\n <label\n className={cn(\n commonStyles[`${direction}Radio`],\n commonStyles[`${direction}TagLabel`],\n commonStyles.tagLabel,\n )}\n >\n <input\n type='radio'\n autoComplete='off'\n onChange={(event: ChangeEvent) => handleChange(event, childValue)}\n disabled={disabled || child.props.disabled}\n name={name}\n checked={checked}\n className={commonStyles.hiddenInput}\n value={child.props.value}\n />\n {clone}\n </label>\n );\n };\n\n const errorMessage = typeof error === 'boolean' ? '' : error;\n\n return (\n <div\n className={cn(\n commonStyles.component,\n commonStyles[type],\n { [styles.error]: error },\n className,\n )}\n data-test-id={dataTestId}\n ref={ref}\n >\n {label ? (\n <span\n className={cn(styles.label, {\n [styles.tag]: type === 'tag',\n })}\n data-test-id={getDataTestId(dataTestId, 'label')}\n >\n {label}\n </span>\n ) : null}\n\n {children ? (\n <div\n className={cn(\n commonStyles.radioList,\n commonStyles[`${direction}RadioList`],\n radioListClassName,\n { [styles.radioList]: type === 'radio' },\n )}\n onBlur={onBlur}\n onFocus={onFocus}\n >\n {Children.map(children, (child) => {\n if (isValidElement(child)) {\n return type === 'radio' ? renderRadio(child) : renderTag(child);\n }\n\n return null;\n })}\n </div>\n ) : null}\n\n {errorMessage && (\n <span\n className={cn(\n styles.sub,\n {\n [styles.tag]: type === 'tag',\n },\n commonStyles.errorMessage,\n )}\n role='alert'\n data-test-id={getDataTestId(dataTestId, 'error')}\n >\n {errorMessage}\n </span>\n )}\n\n {hint && !errorMessage && (\n <span\n className={cn(\n styles.sub,\n {\n [styles.tag]: type === 'tag',\n },\n commonStyles.hint,\n )}\n data-test-id={getDataTestId(dataTestId, 'hint')}\n >\n {hint}\n </span>\n )}\n </div>\n );\n },\n);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Component.js","sources":["../../../src/components/base-radio-group/Component.tsx"],"sourcesContent":["import React, {\n AriaAttributes,\n ChangeEvent,\n Children,\n cloneElement,\n FocusEvent,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n MouseEvent,\n ReactElement,\n ReactNode,\n useState,\n} from 'react';\nimport cn from 'classnames';\n\nimport { getDataTestId } from '@alfalab/core-components-shared';\nimport { useDidUpdateEffect } from '@alfalab/hooks';\n\nimport commonStyles from './index.module.css';\n\nexport type Direction = 'horizontal' | 'vertical';\nexport type RadioGroupType = 'radio' | 'tag';\n\nexport interface BaseRadioGroupProps\n extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'onChange' | 'onBlur' | 'onFocus' | 'children' | 'className'\n >,\n AriaAttributes {\n /**\n * Заголовок группы\n */\n label?: ReactNode;\n\n /**\n * Направление\n */\n direction?: Direction;\n\n /**\n * Тип компонента\n */\n type?: RadioGroupType;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Дополнительный класс для списка радио элементов\n */\n radioListClassName?: string;\n\n /**\n * Отображение ошибки\n */\n error?: ReactNode | boolean;\n\n /**\n * Текст подсказки снизу\n */\n hint?: ReactNode;\n\n /**\n * Дочерние элементы. Ожидаются компоненты `Radio` или `Tag`\n */\n children: ReactNode;\n\n /**\n * Обработчик изменения значения 'checked' одного из дочерних компонентов\n */\n onChange?: (\n event: ChangeEvent | MouseEvent,\n payload: {\n value: string;\n name?: string;\n },\n ) => void;\n\n /**\n * Обработчик блюра.\n */\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n\n /**\n * Обработчик фокуса.\n */\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n\n /**\n * Управление возможностью изменения состояния 'checked' дочерних компонентов Radio | Tag\n */\n disabled?: boolean;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n\n /**\n * Атрибут name для всех дочерних компонентов\n */\n name?: string;\n\n /**\n * Value выбранного дочернего элемента\n */\n value?: string | null;\n\n /**\n * Основные стили компонента.\n */\n styles: { [key: string]: string };\n}\n\nexport const BaseRadioGroup = forwardRef<HTMLDivElement, BaseRadioGroupProps>(\n (\n {\n children,\n className,\n radioListClassName,\n direction = 'vertical',\n label,\n error,\n hint,\n onChange,\n onBlur,\n onFocus,\n type = 'radio',\n dataTestId,\n disabled = false,\n name,\n value,\n styles,\n ...restProps\n },\n ref,\n ) => {\n const [stateValue, setStateValue] = useState<BaseRadioGroupProps['value']>('');\n\n useDidUpdateEffect(() => {\n setStateValue(value);\n }, [value]);\n\n const isChecked = (childValue: string) =>\n value !== null && (value || stateValue) === childValue;\n\n const handleChange = (event: ChangeEvent | MouseEvent, childValue: string) => {\n setStateValue(childValue);\n if (onChange) {\n onChange(event, { name, value: childValue });\n }\n };\n\n const renderRadio = (child: ReactElement) => {\n const { className: childClassName, value: childValue } = child.props;\n\n return cloneElement(child, {\n onChange: (event: ChangeEvent) => handleChange(event, childValue),\n disabled,\n ...child.props,\n checked: isChecked(childValue),\n name,\n className: cn(childClassName, commonStyles[`${direction}Radio`]),\n });\n };\n\n const renderTag = (child: ReactElement) => {\n const childValue = child.props.value;\n const checked = isChecked(childValue);\n const clone = cloneElement(child, {\n onClick: (event: MouseEvent) => handleChange(event, childValue),\n disabled,\n ...child.props,\n checked,\n name,\n tabIndex: -1,\n });\n\n return (\n <label\n className={cn(\n commonStyles[`${direction}Radio`],\n commonStyles[`${direction}TagLabel`],\n commonStyles.tagLabel,\n )}\n >\n <input\n type='radio'\n autoComplete='off'\n onChange={(event: ChangeEvent) => handleChange(event, childValue)}\n disabled={disabled || child.props.disabled}\n name={name}\n checked={checked}\n className={commonStyles.hiddenInput}\n value={child.props.value}\n />\n {clone}\n </label>\n );\n };\n\n const errorMessage = typeof error === 'boolean' ? '' : error;\n\n return (\n <div\n className={cn(\n commonStyles.component,\n commonStyles[type],\n { [styles.error]: error },\n className,\n )}\n ref={ref}\n data-test-id={dataTestId}\n {...restProps}\n >\n {label ? (\n <span\n className={cn(styles.label, {\n [styles.tag]: type === 'tag',\n })}\n data-test-id={getDataTestId(dataTestId, 'label')}\n >\n {label}\n </span>\n ) : null}\n\n {children ? (\n <div\n className={cn(\n commonStyles.radioList,\n commonStyles[`${direction}RadioList`],\n radioListClassName,\n { [styles.radioList]: type === 'radio' },\n )}\n onBlur={onBlur}\n onFocus={onFocus}\n >\n {Children.map(children, (child) => {\n if (isValidElement(child)) {\n return type === 'radio' ? renderRadio(child) : renderTag(child);\n }\n\n return null;\n })}\n </div>\n ) : null}\n\n {errorMessage && (\n <span\n className={cn(\n styles.sub,\n {\n [styles.tag]: type === 'tag',\n },\n commonStyles.errorMessage,\n )}\n role='alert'\n data-test-id={getDataTestId(dataTestId, 'error')}\n >\n {errorMessage}\n </span>\n )}\n\n {hint && !errorMessage && (\n <span\n className={cn(\n styles.sub,\n {\n [styles.tag]: type === 'tag',\n },\n commonStyles.hint,\n )}\n data-test-id={getDataTestId(dataTestId, 'hint')}\n >\n {hint}\n </span>\n )}\n </div>\n );\n },\n);\n"],"names":[],"mappings":"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"}
@@ -17,43 +17,43 @@
17
17
  } :root {
18
18
  --radio-group-hint-color: var(--color-light-text-secondary);
19
19
  --radio-group-error-color: var(--color-light-text-negative);
20
- } .radio-group__component_zyivd {
20
+ } .radio-group__component_j2nm5 {
21
21
  display: flex;
22
22
  flex-direction: column;
23
- } .radio-group__radioList_zyivd {
23
+ } .radio-group__radioList_j2nm5 {
24
24
  display: flex;
25
- } .radio-group__verticalRadioList_zyivd {
25
+ } .radio-group__verticalRadioList_j2nm5 {
26
26
  flex-direction: column;
27
27
  align-items: flex-start;
28
- } .radio-group__horizontalRadioList_zyivd {
28
+ } .radio-group__horizontalRadioList_j2nm5 {
29
29
  flex-wrap: wrap;
30
30
  margin-bottom: var(--gap-8-neg);
31
- } .radio-group__verticalRadio_zyivd {
32
- margin-bottom: var(--gap-12)
33
- } .radio-group__verticalRadio_zyivd:last-child {
31
+ } .radio-group__verticalRadio_j2nm5 {
32
+ margin-bottom: var(--gap-12);
33
+ } .radio-group__verticalRadio_j2nm5:last-child {
34
34
  margin-bottom: var(--gap-0);
35
- } .radio-group__horizontalRadio_zyivd {
35
+ } .radio-group__horizontalRadio_j2nm5 {
36
36
  margin-right: var(--gap-24);
37
37
  margin-bottom: var(--gap-8);
38
- } .radio-group__horizontalTagLabel_zyivd {
38
+ } .radio-group__horizontalTagLabel_j2nm5 {
39
39
  margin-right: var(--gap-8);
40
- } .radio-group__horizontalRadio_zyivd:last-child,
41
- .radio-group__horizontalTagLabel_zyivd:last-child {
40
+ } .radio-group__horizontalRadio_j2nm5:last-child,
41
+ .radio-group__horizontalTagLabel_j2nm5:last-child {
42
42
  margin-right: var(--gap-0);
43
- } .radio-group__errorMessage_zyivd {
43
+ } .radio-group__errorMessage_j2nm5 {
44
44
  color: var(--radio-group-error-color);
45
- } .radio-group__hint_zyivd {
45
+ } .radio-group__hint_j2nm5 {
46
46
  color: var(--radio-group-hint-color);
47
- } .radio-group__hiddenInput_zyivd {
47
+ } .radio-group__hiddenInput_j2nm5 {
48
48
  position: absolute;
49
49
  z-index: -1;
50
50
  top: var(--gap-0);
51
51
  left: var(--gap-0);
52
- opacity: 0
53
- } .radio-group__hiddenInput_zyivd:focus ~ button {
52
+ opacity: 0;
53
+ } .radio-group__hiddenInput_j2nm5:focus ~ button {
54
54
  outline: 2px solid var(--focus-color);
55
55
  outline-offset: 2px;
56
- } .radio-group__tagLabel_zyivd {
56
+ } .radio-group__tagLabel_j2nm5 {
57
57
  position: relative;
58
58
  max-width: 100%;
59
59
  }
@@ -1,6 +1,6 @@
1
1
  import './index.css';
2
2
 
3
- var commonStyles = {"component":"radio-group__component_zyivd","radioList":"radio-group__radioList_zyivd","verticalRadioList":"radio-group__verticalRadioList_zyivd","horizontalRadioList":"radio-group__horizontalRadioList_zyivd","verticalRadio":"radio-group__verticalRadio_zyivd","horizontalRadio":"radio-group__horizontalRadio_zyivd","horizontalTagLabel":"radio-group__horizontalTagLabel_zyivd","errorMessage":"radio-group__errorMessage_zyivd","hint":"radio-group__hint_zyivd","hiddenInput":"radio-group__hiddenInput_zyivd","tagLabel":"radio-group__tagLabel_zyivd"};
3
+ var commonStyles = {"component":"radio-group__component_j2nm5","radioList":"radio-group__radioList_j2nm5","verticalRadioList":"radio-group__verticalRadioList_j2nm5","horizontalRadioList":"radio-group__horizontalRadioList_j2nm5","verticalRadio":"radio-group__verticalRadio_j2nm5","horizontalRadio":"radio-group__horizontalRadio_j2nm5","horizontalTagLabel":"radio-group__horizontalTagLabel_j2nm5","errorMessage":"radio-group__errorMessage_j2nm5","hint":"radio-group__hint_j2nm5","hiddenInput":"radio-group__hiddenInput_j2nm5","tagLabel":"radio-group__tagLabel_j2nm5"};
4
4
 
5
5
  export { commonStyles as default };
6
6
  //# sourceMappingURL=index.module.css.js.map
@@ -13,24 +13,24 @@
13
13
  --radio-group-list-padding-left: var(--gap-0);
14
14
  --radio-group-error-padding-left: var(--gap-8);
15
15
  --radio-group-error-border-left: 1px solid var(--color-light-status-negative);
16
- } .radio-group__radioList_1a60s {
16
+ } .radio-group__radioList_1qcbs {
17
17
  padding-left: var(--radio-group-list-padding-left);
18
- } .radio-group__label_1a60s {
18
+ } .radio-group__label_1qcbs {
19
19
  font-size: 16px;
20
20
  line-height: 24px;
21
21
  font-weight: 400;
22
22
  color: var(--radio-group-label-color);
23
23
  margin-bottom: var(--gap-12);
24
24
  padding-left: var(--radio-group-sub-padding-left);
25
- } .radio-group__sub_1a60s {
25
+ } .radio-group__sub_1qcbs {
26
26
  font-size: 14px;
27
27
  line-height: 18px;
28
28
  font-weight: 400;
29
29
  margin-top: var(--gap-12);
30
30
  padding-left: var(--radio-group-sub-padding-left);
31
- } .radio-group__error_1a60s {
31
+ } .radio-group__error_1qcbs {
32
32
  padding-left: var(--radio-group-error-padding-left);
33
- border-left: var(--radio-group-error-border-left)
34
- } .radio-group__error_1a60s.radio-group__tag_1a60s {
33
+ border-left: var(--radio-group-error-border-left);
34
+ } .radio-group__error_1qcbs.radio-group__tag_1qcbs {
35
35
  padding-left: var(--gap-8);
36
36
  }
@@ -1,6 +1,6 @@
1
1
  import './desktop.css';
2
2
 
3
- var styles = {"radioList":"radio-group__radioList_1a60s","label":"radio-group__label_1a60s","sub":"radio-group__sub_1a60s","error":"radio-group__error_1a60s","tag":"radio-group__tag_1a60s"};
3
+ var styles = {"radioList":"radio-group__radioList_1qcbs","label":"radio-group__label_1qcbs","sub":"radio-group__sub_1qcbs","error":"radio-group__error_1qcbs","tag":"radio-group__tag_1qcbs"};
4
4
 
5
5
  export { styles as default };
6
6
  //# sourceMappingURL=desktop.module.css.js.map