UNPKG

@ariakit/react

Version:

Toolkit for building accessible web apps with React

124 lines (91 loc) 3.96 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _ZGRVC6GZcjs = require('./ZGRVC6GZ.cjs'); var _HEDXFQCWcjs = require('./HEDXFQCW.cjs'); var _FHQLDZSWcjs = require('./FHQLDZSW.cjs'); var _5FQZLBJ7cjs = require('./5FQZLBJ7.cjs'); var _LZ6L3ECGcjs = require('./LZ6L3ECG.cjs'); // ../ariakit-react-components/dist/radio/radio-group.js var _jsxruntime = require('react/jsx-runtime'); var TagName = "div"; function isCheckedRadio(element) { if (!element) return false; if (element.tagName === "INPUT") { const { type, checked } = element; if (type === "radio") return checked; } if (element.getAttribute("role") !== "radio") return false; return element.getAttribute("aria-checked") === "true"; } function getCheckedRadioId(store) { var _a; const { renderedItems } = store.getState(); return (_a = renderedItems.find((item) => isCheckedRadio(item.element))) == null ? void 0 : _a.id; } var useRadioGroup = _LZ6L3ECGcjs.createHook.call(void 0, function useRadioGroup2({ store, ...props }) { const context = _ZGRVC6GZcjs.useRadioProviderContext.call(void 0, ); store = store || context; _LZ6L3ECGcjs.invariant.call(void 0, store, process.env.NODE_ENV !== "production" && "RadioGroup must receive a `store` prop or be wrapped in a RadioProvider component."); props = _LZ6L3ECGcjs.useWrapElement.call(void 0, props, (element) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ZGRVC6GZcjs.RadioScopedContextProvider, { value: store, children: element }), [store]); const onBlurCaptureProp = props.onBlurCapture; const onBlurCapture = _LZ6L3ECGcjs.useEvent.call(void 0, (event) => { onBlurCaptureProp == null ? void 0 : onBlurCaptureProp(event); if (event.defaultPrevented) return; if (!_LZ6L3ECGcjs.isFocusEventOutside.call(void 0, event)) return; const checkedId = getCheckedRadioId(store); if (!checkedId) return; store.setActiveId(checkedId); }); props = { role: "radiogroup", ...props, onBlurCapture }; props = _HEDXFQCWcjs.useComposite.call(void 0, { store, ...props }); return props; }); var RadioGroup = _LZ6L3ECGcjs.forwardRef.call(void 0, function RadioGroup2(props) { return _LZ6L3ECGcjs.createElement.call(void 0, TagName, useRadioGroup(props)); }); // ../ariakit-components/dist/radio/radio-store.js function createRadioStore(props = {}) { var _a; const syncState = (_a = props.store) == null ? void 0 : _a.getState(); const composite = _FHQLDZSWcjs.createCompositeStore.call(void 0, { ...props, focusLoop: _LZ6L3ECGcjs.defaultValue.call(void 0, props.focusLoop, syncState == null ? void 0 : syncState.focusLoop, true) }); const radio = _5FQZLBJ7cjs.createStore.call(void 0, { ...composite.getState(), value: _LZ6L3ECGcjs.defaultValue.call(void 0, props.value, syncState == null ? void 0 : syncState.value, props.defaultValue, null) }, composite, props.store); return { ...composite, ...radio, setValue: (value) => radio.setState("value", value) }; } // ../ariakit-react-components/dist/radio/radio-store.js function useRadioStoreProps(store, update, props) { store = _HEDXFQCWcjs.useCompositeStoreProps.call(void 0, store, update, props); _5FQZLBJ7cjs.useStoreProps.call(void 0, store, props, "value", "setValue"); return store; } function useRadioStore(props = {}) { props = _HEDXFQCWcjs.useCompositeStoreOptions.call(void 0, props); const [store, update] = _5FQZLBJ7cjs.useStore.call(void 0, createRadioStore, props); return useRadioStoreProps(store, update, props); } // ../ariakit-react-components/dist/radio/radio-provider.js function RadioProvider(props = {}) { return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _ZGRVC6GZcjs.RadioContextProvider, { value: useRadioStore(props), children: props.children }); } exports.RadioGroup = RadioGroup; exports.useRadioStore = useRadioStore; exports.RadioProvider = RadioProvider;