import { inject, getCurrentInstance, nextTick, computed, watch } from 'vue';
|
import '../../../form/index.mjs';
|
import '../../../../utils/index.mjs';
|
import { checkboxGroupContextKey } from '../constants.mjs';
|
import { useFormItem } from '../../../form/src/hooks/use-form-item.mjs';
|
import { debugWarn } from '../../../../utils/error.mjs';
|
|
const useCheckboxEvent = (props, {
|
model,
|
isLimitExceeded,
|
hasOwnLabel,
|
isDisabled,
|
isLabeledByFormItem
|
}) => {
|
const checkboxGroup = inject(checkboxGroupContextKey, void 0);
|
const { formItem } = useFormItem();
|
const { emit } = getCurrentInstance();
|
function getLabeledValue(value) {
|
var _a, _b;
|
return value === props.trueLabel || value === true ? (_a = props.trueLabel) != null ? _a : true : (_b = props.falseLabel) != null ? _b : false;
|
}
|
function emitChangeEvent(checked, e) {
|
emit("change", getLabeledValue(checked), e);
|
}
|
function handleChange(e) {
|
if (isLimitExceeded.value)
|
return;
|
const target = e.target;
|
emit("change", getLabeledValue(target.checked), e);
|
}
|
async function onClickRoot(e) {
|
if (isLimitExceeded.value)
|
return;
|
if (!hasOwnLabel.value && !isDisabled.value && isLabeledByFormItem.value) {
|
const eventTargets = e.composedPath();
|
const hasLabel = eventTargets.some((item) => item.tagName === "LABEL");
|
if (!hasLabel) {
|
model.value = getLabeledValue([false, props.falseLabel].includes(model.value));
|
await nextTick();
|
emitChangeEvent(model.value, e);
|
}
|
}
|
}
|
const validateEvent = computed(() => (checkboxGroup == null ? void 0 : checkboxGroup.validateEvent) || props.validateEvent);
|
watch(() => props.modelValue, () => {
|
if (validateEvent.value) {
|
formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn(err));
|
}
|
});
|
return {
|
handleChange,
|
onClickRoot
|
};
|
};
|
|
export { useCheckboxEvent };
|
//# sourceMappingURL=use-checkbox-event.mjs.map
|