@kobalte/core
Version:
Unstyled components and primitives for building accessible web apps and design systems with SolidJS.
28 lines (25 loc) • 763 B
JavaScript
import { createControllableBooleanSignal } from './BLN63FDC.js';
import { access } from '@kobalte/utils';
function createToggleState(props = {}) {
const [isSelected, _setIsSelected] = createControllableBooleanSignal({
value: () => access(props.isSelected),
defaultValue: () => !!access(props.defaultIsSelected),
onChange: (value) => props.onSelectedChange?.(value)
});
const setIsSelected = (value) => {
if (!access(props.isReadOnly) && !access(props.isDisabled)) {
_setIsSelected(value);
}
};
const toggle = () => {
if (!access(props.isReadOnly) && !access(props.isDisabled)) {
_setIsSelected(!isSelected());
}
};
return {
isSelected,
setIsSelected,
toggle
};
}
export { createToggleState };