song-ui-u
Version:
vue3 + js的PC前端组件库
42 lines (38 loc) • 1.39 kB
JavaScript
;
var vue = require('vue');
var types = require('../../../../utils/types.cjs');
require('song-ui-pro-icon');
function useCheckboxEvent({ props, model, checkboxGroupKey, isDisabled, isGroup, isLoading }) {
const { emit } = vue.getCurrentInstance();
const changeEvent = (e) => emit("change", e.target.checked, e);
const beforeChange = vue.computed(() => isGroup ? checkboxGroupKey?.beforeChange?.value : props.beforeChange);
const isBeforeChange = vue.computed(() => types.types().isFunction(beforeChange.value));
const clickEvent = (e) => {
if (isBeforeChange.value || isDisabled.value || isLoading.value) {
const ev = e || window.event;
ev.preventDefault();
if (isBeforeChange.value && !isDisabled.value && !isLoading.value) {
isLoading.value = true;
beforeChange.value().then(() => {
updateData();
isLoading.value = false;
}).catch(() => {
isLoading.value = false;
});
}
}
};
const updateData = () => {
if (isGroup) {
const index = model.value.findIndex((v) => v === props.value)(index !== -1) ? model.value.splice(index, 1) : model.value.push(props.value);
} else {
model.value = !model.value;
}
};
return {
changeEvent,
clickEvent
};
}
exports.useCheckboxEvent = useCheckboxEvent;
//# sourceMappingURL=use-checkbox-event.cjs.map