UNPKG

react-aria

Version:
89 lines (81 loc) 4.5 kB
import {useCheckbox as $0fae26137bfab991$export$e375f10ce42261c5} from "./useCheckbox.js"; import {checkboxGroupData as $0069a8b5d4762b71$export$ec98120685d4f57d} from "./utils.js"; import {useFormValidationState as $63EDi$useFormValidationState, DEFAULT_VALIDATION_RESULT as $63EDi$DEFAULT_VALIDATION_RESULT, privateValidationStateProp as $63EDi$privateValidationStateProp} from "react-stately/private/form/useFormValidationState"; import {useRef as $63EDi$useRef, useEffect as $63EDi$useEffect} from "react"; import {useToggleState as $63EDi$useToggleState} from "react-stately/useToggleState"; /* * Copyright 2020 Adobe. All rights reserved. * This file is licensed to you 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 REPRESENTATIONS * OF ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ function $ea8a8390483ca53d$export$353b32fc6898d37d(props, state, inputRef) { const toggleState = (0, $63EDi$useToggleState)({ isReadOnly: props.isReadOnly || state.isReadOnly, isSelected: state.isSelected(props.value), defaultSelected: state.defaultValue.includes(props.value), onChange (isSelected) { if (isSelected) state.addValue(props.value); else state.removeValue(props.value); if (props.onChange) props.onChange(isSelected); } }); let { name: name, form: form, descriptionId: descriptionId, errorMessageId: errorMessageId, validationBehavior: validationBehavior } = (0, $0069a8b5d4762b71$export$ec98120685d4f57d).get(state); var _props_validationBehavior; validationBehavior = (_props_validationBehavior = props.validationBehavior) !== null && _props_validationBehavior !== void 0 ? _props_validationBehavior : validationBehavior; // Local validation for this checkbox. let { realtimeValidation: realtimeValidation } = (0, $63EDi$useFormValidationState)({ ...props, value: toggleState.isSelected, // Server validation is handled at the group level. name: undefined, validationBehavior: 'aria' }); // Update the checkbox group state when realtime validation changes. let nativeValidation = (0, $63EDi$useRef)((0, $63EDi$DEFAULT_VALIDATION_RESULT)); let updateValidation = ()=>{ state.setInvalid(props.value, realtimeValidation.isInvalid ? realtimeValidation : nativeValidation.current); }; (0, $63EDi$useEffect)(updateValidation); // Combine group and checkbox level validation. let combinedRealtimeValidation = state.realtimeValidation.isInvalid ? state.realtimeValidation : realtimeValidation; let displayValidation = validationBehavior === 'native' ? state.displayValidation : combinedRealtimeValidation; var _props_isRequired; let res = (0, $0fae26137bfab991$export$e375f10ce42261c5)({ ...props, isReadOnly: props.isReadOnly || state.isReadOnly, isDisabled: props.isDisabled || state.isDisabled, name: props.name || name, form: props.form || form, isRequired: (_props_isRequired = props.isRequired) !== null && _props_isRequired !== void 0 ? _props_isRequired : state.isRequired, validationBehavior: validationBehavior, [(0, $63EDi$privateValidationStateProp)]: { realtimeValidation: combinedRealtimeValidation, displayValidation: displayValidation, resetValidation: state.resetValidation, commitValidation: state.commitValidation, updateValidation (v) { nativeValidation.current = v; updateValidation(); } } }, toggleState, inputRef); return { ...res, inputProps: { ...res.inputProps, 'aria-describedby': [ res.inputProps['aria-describedby'], state.isInvalid ? errorMessageId : null, descriptionId ].filter(Boolean).join(' ') || undefined } }; } export {$ea8a8390483ca53d$export$353b32fc6898d37d as useCheckboxGroupItem}; //# sourceMappingURL=useCheckboxGroupItem.js.map