@audira/carbon-react-native
Version:
Build React Native apps with component and shared patterns using Carbon
56 lines (55 loc) • 1.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Item = void 0;
var _react = require("react");
var _index = require("../radio-button/index.js");
var _itemContext = require("./_item-context.js");
var _jsxRuntime = require("react/jsx-runtime");
const Item = exports.Item = /*#__PURE__*/(0, _react.forwardRef)(function Item({
value: valueProp,
onPress,
...props
}, forwardedRef) {
const {
controlled,
value,
setValue,
setOnChangeGroupEffect,
onChangeGroup
} = (0, _react.useContext)(_itemContext.ItemContext),
radioButtonRef = (0, _react.useRef)(null),
pressHandler = (0, _react.useCallback)(event => {
onPress?.(event);
if (!controlled) {
setOnChangeGroupEffect?.(true);
setValue?.(valueProp);
} else {
onChangeGroup?.(valueProp);
}
}, [controlled, valueProp, setValue, setOnChangeGroupEffect, onChangeGroup, onPress]);
(0, _react.useImperativeHandle)(forwardedRef, () => {
return Object.assign(radioButtonRef.current ?? {}, {
setChecked(checkedParam) {
if (!controlled) {
let checked;
if (typeof checkedParam === 'boolean') {
checked = checkedParam;
} else {
checked = checkedParam(!!radioButtonRef.current?.checked);
}
setValue?.(checked ? valueProp : undefined);
}
}
});
}, [controlled, valueProp, setValue]);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.RadioButton, {
...props,
value: value,
checked: value === valueProp,
onPress: pressHandler,
ref: radioButtonRef
});
});
//# sourceMappingURL=_Item.js.map