UNPKG

@blueprintjs/core

Version:
38 lines 1.64 kB
"use strict"; /* * 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. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.useCheckedControl = void 0; const react_1 = require("react"); /** * Keep track of a control's checked state in both controlled and uncontrolled modes */ function useCheckedControl(props) { const [checkedStateForUncontrolledMode, setChecked] = (0, react_1.useState)(() => props.defaultChecked ?? false); // 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. const checked = props.checked ?? checkedStateForUncontrolledMode; const onChange = (0, react_1.useCallback)(e => { setChecked(c => !c); props.onChange?.(e); }, // eslint-disable-next-line react-hooks/exhaustive-deps [props.onChange]); return { checked, onChange }; } exports.useCheckedControl = useCheckedControl; //# sourceMappingURL=useCheckedControl.js.map