@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
43 lines • 1.55 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
const _excluded = ["dependencePaths", "propagateIndeterminateState", "valueOn", "valueOff", "value", "onChange"];
import React, { useCallback, useMemo } from 'react';
import Toggle from '../Toggle/Toggle';
import useDependencePaths from './useDependencePaths';
export default function Indeterminate(props) {
const {
dependencePaths,
propagateIndeterminateState = 'checked',
valueOn = true,
valueOff = false,
value: valueProp,
onChange
} = props,
rest = _objectWithoutProperties(props, _excluded);
const {
indeterminate,
internalValue,
setAllStates
} = useDependencePaths(dependencePaths, propagateIndeterminateState);
const changeHandler = useCallback(value => {
setAllStates(value === valueOn);
onChange === null || onChange === void 0 ? void 0 : onChange(value === valueOn ? valueOn : valueOff);
}, [onChange, setAllStates, valueOff, valueOn]);
const value = useMemo(() => {
if (typeof valueProp !== 'undefined') {
return valueProp;
}
return internalValue ? valueOn : valueOff;
}, [valueProp, internalValue, valueOn, valueOff]);
return React.createElement(Toggle, _extends({}, rest, {
variant: "checkbox",
htmlAttributes: {
indeterminate
},
valueOn: valueOn,
valueOff: valueOff,
value: value,
onChange: changeHandler
}));
}
//# sourceMappingURL=Indeterminate.js.map