@wocwin/t-ui-plus
Version:
Page level components developed based on Element Plus.
92 lines (89 loc) • 2.85 kB
JavaScript
import { defineComponent, computed, ref, resolveComponent, createBlock, openBlock, mergeProps, withCtx, renderSlot, createElementBlock, Fragment, renderList, resolveDynamicComponent, normalizeProps, guardReactiveProps, createTextVNode, toDisplayString } from 'vue';
var _sfc_main = /* @__PURE__ */ defineComponent({
...{
name: "TRadio"
},
__name: "index",
props: {
type: {
type: String,
validator: (value) => ["radio", "button"].includes(value),
default: "radio"
},
options: {
type: Array,
default: () => []
},
size: {
type: String,
validator: (value) => ["large", "default", "small"].includes(value),
default: "default"
},
border: {
type: Boolean,
default: false
},
props: {
type: Object,
default: () => ({})
}
},
setup(__props) {
const radioProps = __props;
const radioType = computed(() => {
var _a;
const obj = {
radio: "el-radio",
button: "el-radio-button"
};
return (_a = obj[radioProps.type]) != null ? _a : "el-radio";
});
const optionsProps = ref({
...{
value: "value",
label: "label",
disabled: "disabled"
},
...radioProps.props
});
return (_ctx, _cache) => {
const _component_el_radio_group = resolveComponent("el-radio-group");
return openBlock(), createBlock(_component_el_radio_group, mergeProps(_ctx.$attrs, { size: __props.size }), {
default: withCtx(() => [
renderSlot(_ctx.$slots, "default", {}, () => [
(openBlock(true), createElementBlock(
Fragment,
null,
renderList(__props.options, (item, index) => {
return openBlock(), createBlock(resolveDynamicComponent(radioType.value), mergeProps(item, {
key: index,
value: item[optionsProps.value.value],
label: item[optionsProps.value.value],
border: __props.border,
disabled: item[optionsProps.value.disabled]
}), {
default: withCtx(() => [
renderSlot(_ctx.$slots, item.slot, normalizeProps(guardReactiveProps(item)), () => [
createTextVNode(
toDisplayString(item[optionsProps.value.label]),
1
/* TEXT */
)
])
]),
_: 2
/* DYNAMIC */
}, 1040, ["value", "label", "border", "disabled"]);
}),
128
/* KEYED_FRAGMENT */
))
])
]),
_: 3
/* FORWARDED */
}, 16, ["size"]);
};
}
});
export { _sfc_main as default };