UNPKG

@audira/carbon-react-native

Version:

Build React Native apps with component and shared patterns using Carbon

56 lines (55 loc) 1.69 kB
"use strict"; 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