UNPKG

@kietpt2003/react-native-core-ui

Version:
33 lines (32 loc) 1.16 kB
import { jsx as _jsx } from "react/jsx-runtime"; import React from 'react'; const AccordionGroupContext = React.createContext(null); const AccordionGroup = ({ children, type = 'single', defaultOpenIds = [], }) => { const [openIds, setOpenIds] = React.useState(() => new Set(defaultOpenIds)); const toggle = React.useCallback((id) => { setOpenIds(prev => { const next = new Set(prev); if (type === 'single') { next.clear(); if (!prev.has(id)) next.add(id); } else { next.has(id) ? next.delete(id) : next.add(id); } return next; }); }, [type]); return (_jsx(AccordionGroupContext.Provider, { value: { openIds, toggle }, children: children })); }; export const useAccordionGroup = () => { const ctx = React.useContext(AccordionGroupContext); if (!ctx) { throw new Error('Accordion must be used inside AccordionGroup'); } return ctx; }; export const useOptionalAccordionGroup = () => { return React.useContext(AccordionGroupContext); }; export default AccordionGroup;