element-plus
Version:
A Component Library for Vue 3
36 lines (34 loc) • 1.27 kB
JavaScript
import { UPDATE_MODEL_EVENT } from "../../../../constants/event.mjs";
import { isArray, isUndefined } from "../../../../utils/types.mjs";
import { checkboxGroupContextKey } from "../constants.mjs";
import { computed, getCurrentInstance, inject, ref } from "vue";
//#region ../../packages/components/checkbox/src/composables/use-checkbox-model.ts
const useCheckboxModel = (props) => {
const selfModel = ref(false);
const { emit } = getCurrentInstance();
const checkboxGroup = inject(checkboxGroupContextKey, void 0);
const isGroup = computed(() => isUndefined(checkboxGroup) === false);
const isLimitExceeded = ref(false);
const model = computed({
get() {
return isGroup.value ? checkboxGroup?.modelValue?.value : props.modelValue ?? selfModel.value;
},
set(val) {
if (isGroup.value && isArray(val)) {
isLimitExceeded.value = checkboxGroup?.max?.value !== void 0 && val.length > checkboxGroup?.max.value && val.length > model.value.length;
isLimitExceeded.value === false && checkboxGroup?.changeEvent?.(val);
} else {
emit(UPDATE_MODEL_EVENT, val);
selfModel.value = val;
}
}
});
return {
model,
isGroup,
isLimitExceeded
};
};
//#endregion
export { useCheckboxModel };
//# sourceMappingURL=use-checkbox-model.mjs.map