@kobalte/core
Version:
Unstyled components and primitives for building accessible web apps and design systems with SolidJS.
33 lines (30 loc) • 829 B
JSX
import {
createControllableBooleanSignal
} from "./FN6EICGO.jsx";
// src/primitives/create-toggle-state/create-toggle-state.ts
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
};