UNPKG

@kietpt2003/react-native-core-ui

Version:
20 lines (19 loc) 1.15 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import React from 'react'; import { Pressable, View } from 'react-native'; import Animated, { FadeIn, FadeOut, LinearTransition, } from 'react-native-reanimated'; const Accordion = ({ header, children, expanded, defaultExpanded = false, onChange, style, disabled, }) => { const isControlled = expanded !== undefined; const [internalExpanded, setInternalExpanded] = React.useState(defaultExpanded); const isExpanded = isControlled ? expanded : internalExpanded; const toggle = React.useCallback(() => { const next = !isExpanded; if (!isControlled) { setInternalExpanded(next); } onChange === null || onChange === void 0 ? void 0 : onChange(next); }, [isExpanded, isControlled, onChange]); return (_jsxs(View, { style: style, children: [_jsx(Pressable, { disabled: disabled, onPress: toggle, children: header }), isExpanded && (_jsx(Animated.View, { entering: FadeIn, exiting: FadeOut, layout: LinearTransition.springify(), children: children }))] })); }; Accordion.displayName = 'Accordion'; export default Accordion;