105 lines
4.0 KiB
JavaScript
105 lines
4.0 KiB
JavaScript
import { w as withInstall } from "../badge/index2.js";
|
|
import { defineComponent, inject, computed, openBlock, createElementBlock, createElementVNode, unref, normalizeClass, withModifiers, renderSlot, createTextVNode, toDisplayString } from "vue";
|
|
var index = /* @__PURE__ */ (() => ".layui-radio[size=lg] .layui-form-radio>i{font-size:24px}.layui-radio[size=md] .layui-form-radio>i{font-size:22px}.layui-radio[size=sm] .layui-form-radio>i{font-size:20px}.layui-radio[size=xs] .layui-form-radio>i{font-size:18px}.layui-radio input[type=radio]{display:none}.layui-form-radio,.layui-form-radio *{display:inline-block;vertical-align:middle}.layui-form-radio{line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio *{font-size:14px}.layui-form-radio>i{margin-right:8px;font-size:22px;color:var(--global-neutral-color-8)}.layui-form-radio:hover *,.layui-form-radioed,.layui-form-radioed>i{color:var(--global-checked-color)}.layui-radio-disabled>i{color:var(--global-neutral-color-3)!important}.layui-radio-disabled *{color:var(--global-neutral-color-8)!important}\n")();
|
|
const _hoisted_1 = ["size"];
|
|
const _hoisted_2 = ["value", "name"];
|
|
const _hoisted_3 = ["onClick"];
|
|
const _hoisted_4 = {
|
|
key: 0,
|
|
class: "layui-anim layui-icon layui-anim-scaleSpring"
|
|
};
|
|
const _hoisted_5 = {
|
|
key: 1,
|
|
class: "layui-icon layui-form-radioed"
|
|
};
|
|
const __default__ = {
|
|
name: "LayRadio"
|
|
};
|
|
const _sfc_main = defineComponent({
|
|
...__default__,
|
|
props: {
|
|
name: null,
|
|
size: { default: "md" },
|
|
disabled: { type: Boolean },
|
|
modelValue: { type: [String, Boolean, Number] },
|
|
value: { type: [String, Boolean, Number] },
|
|
label: null
|
|
},
|
|
emits: ["update:modelValue", "change"],
|
|
setup(__props, { emit }) {
|
|
const props = __props;
|
|
const radioGroup = inject("radioGroup", {});
|
|
const isGroup = computed(() => {
|
|
return radioGroup != void 0 && (radioGroup == null ? void 0 : radioGroup.name) === "LayRadioGroup";
|
|
});
|
|
const naiveName = computed(() => {
|
|
if (radioGroup.naiveName) {
|
|
return radioGroup.naiveName;
|
|
} else {
|
|
return props.name;
|
|
}
|
|
});
|
|
const isChecked = computed({
|
|
get() {
|
|
if (isGroup.value) {
|
|
return radioGroup.modelValue.value === props.value;
|
|
} else {
|
|
return props.modelValue === props.value;
|
|
}
|
|
},
|
|
set(val) {
|
|
if (isGroup.value) {
|
|
radioGroup.modelValue.value = props.value;
|
|
} else {
|
|
if (val) {
|
|
emit("change", props.value);
|
|
emit("update:modelValue", props.value);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
const handleClick = function() {
|
|
if (!ifDisabled.value) {
|
|
isChecked.value = !isChecked.value;
|
|
}
|
|
};
|
|
const ifDisabled = computed(() => {
|
|
if (props.disabled) {
|
|
return true;
|
|
}
|
|
if (radioGroup.hasOwnProperty("disabled") && radioGroup.disabled.value) {
|
|
return true;
|
|
}
|
|
return false;
|
|
});
|
|
return (_ctx, _cache) => {
|
|
return openBlock(), createElementBlock("span", {
|
|
class: "layui-radio",
|
|
size: __props.size
|
|
}, [
|
|
createElementVNode("input", {
|
|
type: "radio",
|
|
value: __props.value,
|
|
name: unref(naiveName)
|
|
}, null, 8, _hoisted_2),
|
|
createElementVNode("div", {
|
|
class: normalizeClass(["layui-unselect layui-form-radio", {
|
|
"layui-form-radioed": unref(isChecked),
|
|
"layui-radio-disabled layui-disabled": unref(ifDisabled)
|
|
}]),
|
|
onClick: withModifiers(handleClick, ["stop"])
|
|
}, [
|
|
unref(isChecked) ? (openBlock(), createElementBlock("i", _hoisted_4, "\uE643")) : (openBlock(), createElementBlock("i", _hoisted_5, "\uE63F")),
|
|
createElementVNode("span", null, [
|
|
renderSlot(_ctx.$slots, "default", {}, () => [
|
|
createTextVNode(toDisplayString(__props.label), 1)
|
|
])
|
|
])
|
|
], 10, _hoisted_3)
|
|
], 8, _hoisted_1);
|
|
};
|
|
}
|
|
});
|
|
const component = withInstall(_sfc_main);
|
|
export { _sfc_main as _, component as c };
|