dk-plus
Version:
68 lines (67 loc) • 1.91 kB
JavaScript
import { defineComponent as o, reactive as k, ref as m, watch as l, nextTick as f, toRefs as x } from "vue";
import { switchProps as r } from "./index3.js";
import "../../_icon/index.js";
import { getSwitch as g } from "../../_hooks/get-switch/index.js";
const V = o({
name: "DkSwitch",
props: r,
emits: ["change", "update:modelValue"],
setup(e, { emit: u }) {
const { classList: d, styleList: s } = g(e), t = k({
modelValue: e.modelValue,
disabled: e.disabled,
checkedText: e.checkedText,
uncheckedText: e.uncheckedText,
checkText: e.uncheckedText,
checkIcon: e.uncheckedIcon,
loading: e.loading,
customIcon: e.checkedIcon
}), n = {
handleChange: (c) => {
const h = c.target;
let i = h.checked;
h.checked = i, u("update:modelValue", i), u("change", i);
},
refreshStatus: () => {
if (t.disabled = e.disabled || e.loading, t.disabled) {
if (d.value.includes("dk-switch_disabled"))
return;
d.value.push("dk-switch_disabled");
} else {
const c = d.value.indexOf("dk-switch_disabled");
if (c === -1)
return;
d.value.splice(c, 1);
}
}
}, a = m();
return l(
() => e.modelValue,
(c) => {
t.modelValue = c, t.checkText = c ? t.checkedText : t.uncheckedText, t.checkIcon = c ? e.checkedIcon : e.uncheckedIcon, t.customIcon = c ? e.checkedCustomIcon : e.uncheckedCustomIcon, n.refreshStatus(), f(() => {
a.value && (a.value.checked = c);
});
},
{
immediate: !0
}
), l(
() => e.loading,
(c) => {
t.loading = c, n.refreshStatus();
},
{
immediate: !0
}
), {
classList: d,
styleList: s,
...x(t),
...n,
switchRef: a
};
}
});
export {
V as default
};