@gluestack-ui-nightly/core
Version:
Universal UI components for React Native, Expo, and Next.js
44 lines • 1.38 kB
JavaScript
export const useAccordion = (props) => {
const { type, isCollapsible, selectedValues, setSelectedValues } = props;
const toggleItem = (itemValue, isDisabled = false) => {
if (isDisabled || !itemValue)
return;
if (type === 'single') {
if (isCollapsible) {
if (selectedValues.includes(itemValue)) {
setSelectedValues([]);
}
else {
setSelectedValues([itemValue]);
}
}
else {
if (selectedValues.includes(itemValue))
return;
setSelectedValues([itemValue]);
}
}
else {
if (isCollapsible) {
if (selectedValues.includes(itemValue)) {
setSelectedValues(selectedValues.filter((v) => v !== itemValue));
}
else {
setSelectedValues([...selectedValues, itemValue]);
}
}
else {
if (selectedValues.includes(itemValue))
return;
setSelectedValues([...selectedValues, itemValue]);
}
}
};
return {
state: {
selectedValues,
toggleItem,
},
};
};
//# sourceMappingURL=useAccordion.js.map