UNPKG

song-ui-u

Version:

vue3 + js的PC前端组件库

42 lines (38 loc) 1.39 kB
'use strict'; 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