@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
43 lines • 1.31 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import React, { useCallback, useMemo } from 'react';
import Toggle from "../Toggle/Toggle.js";
import useDependencePaths from "./useDependencePaths.js";
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 React.createElement(Toggle, _extends({}, rest, {
variant: "checkbox",
htmlAttributes: {
indeterminate,
['aria-controls']: ariaControlsIds
},
valueOn: valueOn,
valueOff: valueOff,
value: value,
onChange: changeHandler
}));
}
//# sourceMappingURL=Indeterminate.js.map