UNPKG

@razorpay/blade

Version:

The Design System that powers Razorpay

93 lines (90 loc) 3.01 kB
import _slicedToArray from '@babel/runtime/helpers/slicedToArray'; import React__default from 'react'; import isUndefined from '../../../utils/lodashButBetter/isUndefined.js'; import { useControllableState } from '../../../utils/useControllable.js'; import '../../BladeProvider/index.js'; import { useId } from '../../../utils/useId.js'; import useTheme from '../../BladeProvider/useTheme.js'; var useRadioGroup = function useRadioGroup(_ref) { var value = _ref.value, defaultValue = _ref.defaultValue, isDisabled = _ref.isDisabled, isRequired = _ref.isRequired, labelPosition = _ref.labelPosition, _onChange = _ref.onChange, validationState = _ref.validationState, necessityIndicator = _ref.necessityIndicator, name = _ref.name, size = _ref.size; var _useTheme = useTheme(), platform = _useTheme.platform; var idBase = useId('radio-group'); var labelId = "".concat(idBase, "-label"); var fallbackName = name !== null && name !== void 0 ? name : idBase; var _useControllableState = useControllableState({ value: value, defaultValue: defaultValue, onChange: function onChange(v, event) { _onChange === null || _onChange === void 0 ? void 0 : _onChange({ value: v, name: fallbackName, event: event }); } }), _useControllableState2 = _slicedToArray(_useControllableState, 2), checkedValue = _useControllableState2[0], setValue = _useControllableState2[1]; var state = React__default.useMemo(function () { return { value: checkedValue, setValue: function (_setValue) { function setValue(_x, _x2) { return _setValue.apply(this, arguments); } setValue.toString = function () { return _setValue.toString(); }; return setValue; }(function (v, event) { if (isDisabled) { return; } setValue(function () { return v; }, false, event); }), removeValue: function removeValue() { if (isDisabled) { return; } setValue(undefined); }, isChecked: function isChecked(v) { if (isUndefined(v) || isUndefined(checkedValue)) return false; return checkedValue === v; } }; }, [checkedValue, isDisabled, setValue]); var contextValue = React__default.useMemo(function () { return { necessityIndicator: necessityIndicator, validationState: validationState, isDisabled: isDisabled, isRequired: isRequired, labelPosition: platform === 'onMobile' ? 'top' : labelPosition, name: fallbackName, state: state, size: size }; }, [validationState, isDisabled, isRequired, platform, labelPosition, state, fallbackName, necessityIndicator, size]); return { state: state, contextValue: contextValue, ids: { labelId: labelId } }; }; export { useRadioGroup }; //# sourceMappingURL=useRadioGroup.js.map