UNPKG

@blueprintjs/core

Version:

Core styles & components

36 lines 1.72 kB
/* * Copyright 2023 Palantir Technologies, Inc. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import * as React from "react"; /** * Keep track of a control's checked state in both controlled and uncontrolled modes */ export function useCheckedControl(props) { var _a; var _b = React.useState(function () { var _a; return (_a = props.defaultChecked) !== null && _a !== void 0 ? _a : false; }), checkedStateForUncontrolledMode = _b[0], setChecked = _b[1]; // If the checked prop is passed, this input is in "controlled mode" and // should always reflect the value of the controlled prop. Any internal // state tracked for "uncontrolled mode" should be ignored. var checked = (_a = props.checked) !== null && _a !== void 0 ? _a : checkedStateForUncontrolledMode; var onChange = React.useCallback(function (e) { var _a; setChecked(function (c) { return !c; }); (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, e); }, // eslint-disable-next-line react-hooks/exhaustive-deps [props.onChange]); return { checked: checked, onChange: onChange }; } //# sourceMappingURL=useCheckedControl.js.map