UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

43 lines 1.31 kB
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