double-ui-vue
Version:
87 lines (86 loc) • 1.93 kB
JavaScript
import { defineComponent, getCurrentInstance, createVNode } from "vue";
var style = "";
var V = (e, t) => {
let r = e.tagName.toLocaleLowerCase();
return r === "body" || t.some((o) => o.toLocaleLowerCase() === r) ? e : V(e.parentNode, t);
}, M = V;
var _t = (e, t) => {
let r = e.target;
t && (r = M(r, [t]));
let { clientWidth: o, scrollWidth: n } = r;
n > o ? r.title = r.innerText : r.title = "";
}, Kt = _t;
const Checkbox = defineComponent({
name: "DCheckbox",
props: {
checked: {
type: String,
default: "uncheck"
},
disabled: {
type: Boolean,
default: false
},
stopPropagation: {
type: Boolean,
default: false
},
attr: {
type: String
},
onChange: {
type: Function,
default: () => {
}
}
},
setup(props, {
emit
}) {
const {
vnode
} = getCurrentInstance();
const handleChange = (e) => {
const {
disabled,
checked,
stopPropagation,
attr
} = props;
if (stopPropagation)
e.stopPropagation();
if (disabled)
return;
let status;
if (checked === "checked")
status = "uncheck";
else
status = "checked";
if (vnode.props.onChange)
emit("change", status, attr, e);
else
emit("update:checked", status);
};
return {
handleChange
};
},
render() {
const {
$slots: slots,
disabled,
checked,
handleChange
} = this;
return createVNode("div", {
"class": ["d-checkbox", disabled && "d-checkbox-disabled"],
"onClick": handleChange
}, [createVNode("i", {
"class": ["d-checkbox-box", `d-checkbox-${checked}`]
}, null), slots.default && createVNode("span", {
"class": "d-checkbox-text",
"onMouseenter": Kt
}, [slots.default()])]);
}
});
export { Checkbox as default };