Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | 1x 15x 15x 1x 1x | import PropTypes from 'prop-types'
import useControlledState from '@s-ui/react-hooks/lib/useControlledState/index.js'
import {BEHAVIOR} from '../settings.js'
import AccordionContext, {defaultAccordionContext} from './index.js'
const AccordionProvider = ({children, values, defaultValues, onChange, behavior, ...props}) => {
const [stateValues, setStateValues] = useControlledState(values, defaultValues)
return (
<AccordionContext.Provider
value={{
...defaultAccordionContext,
...props,
behavior,
onChange,
values: stateValues,
setValues: setStateValues
}}
>
{children}
</AccordionContext.Provider>
)
}
AccordionProvider.displayName = 'AccordionProvider'
AccordionProvider.propTypes = {
/** The change default behavior **/
behavior: PropTypes.oneOf(Object.values(BEHAVIOR)),
/** the inner element **/
children: PropTypes.node,
/** function fired everytime a panel toggles its status */
onChange: PropTypes.func,
/** The initial opened values **/
defaultValues: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
/** The opened values **/
values: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))
}
export default AccordionProvider
|