@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
51 lines (50 loc) • 1.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = Indeterminate;
var _react = require("react");
var _Toggle = _interopRequireDefault(require("../Toggle/Toggle.js"));
var _useDependencePaths = _interopRequireDefault(require("./useDependencePaths.js"));
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function Indeterminate(props) {
const {
dependencePaths,
propagateIndeterminateState = 'checked',
valueOn = true,
valueOff = false,
value: valueProp,
onChange,
...rest
} = props;
const {
indeterminate,
internalValue,
setAllStates,
ariaControlsIds
} = (0, _useDependencePaths.default)(dependencePaths, propagateIndeterminateState);
const changeHandler = (0, _react.useCallback)(value => {
setAllStates(value === valueOn);
onChange === null || onChange === void 0 || onChange(value === valueOn ? valueOn : valueOff);
}, [onChange, setAllStates, valueOff, valueOn]);
const value = (0, _react.useMemo)(() => {
if (typeof internalValue !== 'undefined') {
return internalValue ? valueOn : valueOff;
}
return valueProp;
}, [valueProp, internalValue, valueOn, valueOff]);
return (0, _jsxRuntime.jsx)(_Toggle.default, {
...rest,
variant: "checkbox",
htmlAttributes: {
indeterminate,
['aria-controls']: ariaControlsIds
},
valueOn: valueOn,
valueOff: valueOff,
value: value,
onChange: changeHandler
});
}
//# sourceMappingURL=Indeterminate.js.map