nixa-react-native-accordion
Version:
React Native Accordion: Reanimated Collapsible Sections for React Native.
54 lines • 1.62 kB
JavaScript
import React, { Children, cloneElement, createContext, useMemo } from 'react';
import { View } from 'react-native';
import styles from './style';
import { jsx as _jsx } from "react/jsx-runtime";
export const AccordionContext = /*#__PURE__*/createContext({});
const AccordionList = props => {
const {
containerStyle,
compact = false,
animationDuration = 300,
children,
androidRipple = {
color: 'rgba(0,0,0,0.3)',
foreground: true
},
rightIcon,
titleStyle,
subTitleStyle,
headerStyle,
titleContainerStyle,
itemContainerStyle,
contentContainerStyle,
contentWrapperStyle
} = props;
const accordionContextValue = useMemo(() => ({
compact,
animationDuration,
androidRipple,
rightIcon,
titleStyle,
subTitleStyle,
headerStyle,
titleContainerStyle,
itemContainerStyle,
contentContainerStyle,
contentWrapperStyle
}), [compact, animationDuration, androidRipple, rightIcon, titleStyle, subTitleStyle, headerStyle, titleContainerStyle, itemContainerStyle, contentContainerStyle, contentWrapperStyle]);
const renderChildren = () => {
return Children.map(children, (child, index) => {
return /*#__PURE__*/cloneElement(child, {
index
});
});
};
return /*#__PURE__*/_jsx(AccordionContext.Provider, {
value: accordionContextValue,
children: /*#__PURE__*/_jsx(View, {
style: [styles.accordion, compact && styles.compactAccordion, containerStyle],
children: renderChildren()
})
});
};
export default AccordionList;
//# sourceMappingURL=AccordionList.js.map