@razorpay/blade
Version:
The Design System that powers Razorpay
93 lines (90 loc) • 3.01 kB
JavaScript
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