@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
44 lines • 1.28 kB
JavaScript
import React, { useCallback, useMemo } from 'react';
import Toggle from "../Toggle/Toggle.js";
import useDependencePaths from "./useDependencePaths.js";
import { jsx as _jsx } from "react/jsx-runtime";
export default function Indeterminate(props) {
const {
dependencePaths,
propagateIndeterminateState = 'checked',
valueOn = true,
valueOff = false,
value: valueProp,
onChange,
...rest
} = props;
const {
indeterminate,
internalValue,
setAllStates,
ariaControlsIds
} = useDependencePaths(dependencePaths, propagateIndeterminateState);
const changeHandler = useCallback(value => {
setAllStates(value === valueOn);
onChange?.(value === valueOn ? valueOn : valueOff);
}, [onChange, setAllStates, valueOff, valueOn]);
const value = useMemo(() => {
if (typeof internalValue !== 'undefined') {
return internalValue ? valueOn : valueOff;
}
return valueProp;
}, [valueProp, internalValue, valueOn, valueOff]);
return _jsx(Toggle, {
...rest,
variant: "checkbox",
htmlAttributes: {
indeterminate,
['aria-controls']: ariaControlsIds
},
valueOn: valueOn,
valueOff: valueOff,
value: value,
onChange: changeHandler
});
}
//# sourceMappingURL=Indeterminate.js.map