various-ui
Version:
This is a test version of the Vue 3 component library
55 lines (51 loc) • 1.74 kB
JavaScript
;
var vue = require('vue');
require('../../../../utils/index.js');
var lodashEs = require('lodash-es');
const useComposable = (define, emits) => {
const status = vue.computed(() => {
if (define.loading) return { is: true, name: "loading" };
else if (define.disabled) return { is: false, name: "disabled" };
else if (define.readonly) return { is: false, name: "readonly" };
else {
return { is: false, name: "default" };
}
});
const computeds = {
//* 主体样式
style: vue.computed(() => {
if (!define.width) return {};
else if (lodashEs.isNumber(define.width)) {
return { "min-width": define.width + "px" };
} else {
return { "min-width": define.width };
}
}),
//* 禁用状态
disabled: vue.computed(() => {
return ["loading", "disabled", "readonly"].includes(status.value.name);
}),
//* 主体类名
className: vue.computed(() => {
const result = [];
if (define.simple) result.push("ui-button-simple");
if (define.size != "default") result.push(`ui-${define.size}`);
if (define.type != "info") result.push(`ui-${define.type}-type`);
if (status.value.name == "loading") result.push("ui-loading-status");
else if (status.value.name == "disabled") result.push("ui-disabled-status");
else if (status.value.name == "readonly") result.push("ui-readonly-status");
return result.join(" ");
})
};
const methods = {
click: (ev) => {
if (computeds.disabled.value) return;
else {
emits("click", ev);
}
}
};
return { status, computeds, methods };
};
exports.useComposable = useComposable;
//# sourceMappingURL=composable.js.map