tass-ui
Version:
A high quality UI Toolkit built on Vue.js3+.
53 lines (52 loc) • 1.42 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const vue = require("vue");
const event = require("../../../constants/event.js");
function useModel(props) {
const { emit } = vue.getCurrentInstance();
const useProvide = vue.inject("TassCheckboxGroup", {});
const model = vue.computed({
get() {
return useProvide.modelValue ? useProvide.modelValue.value : props.modelValue;
},
set(val) {
var _a;
if (useProvide.modelValue) {
return (_a = useProvide.handlerChange) == null ? void 0 : _a.call(useProvide, val);
}
emit(event.UPDATE_MODEL_EVENT, val);
}
});
return model;
}
function useCheckbox(props, model) {
const isChecked = vue.computed(() => {
const value = model.value;
if (Array.isArray(value)) {
return value.includes(props.label);
} else {
return value;
}
});
return isChecked;
}
function useEvent() {
const { emit } = vue.getCurrentInstance();
function handlerChange(e) {
const target = e.target;
const val = target.checked ? true : false;
emit(event.CHANGE_EVENT, val);
}
return handlerChange;
}
const useCheckBoxProps = (props) => {
const model = useModel(props);
const isChecked = useCheckbox(props, model);
const handlerChange = useEvent();
return {
model,
isChecked,
handlerChange
};
};
exports.useCheckBoxProps = useCheckBoxProps;