song-ui-u
Version:
vue3 + js的PC前端组件库
121 lines (110 loc) • 4.22 kB
JavaScript
import { mergeModels, useModel, resolveComponent, openBlock, createBlock, resolveDynamicComponent, normalizeClass, withCtx, createElementVNode, withModifiers, createElementBlock, createVNode, renderSlot } from 'vue';
import { useCheckbox } from './composables/use-checkbox.mjs';
import { useNamespace } from '../../../hook/use-namespace/index.mjs';
import { Loader } from 'song-ui-pro-icon';
import '../../../hook/use-zindex/index.mjs';
import _export_sfc from '../../../_virtual/_plugin-vue_export-helper.mjs';
const __default__ = { name: "x-radio" };
const _sfc_main = /*#__PURE__*/Object.assign(__default__, {
props: /*#__PURE__*/mergeModels({
value: {
type: [String, Boolean, Number, Object],
default: undefined,
},
tag: {
type: String,
default: "label",
},
type: {
type: String,
default: "default",
},
size: {
type: String,
default: "default",
},
checked: Boolean,
disabled: Boolean,
beforeChange: Function,
}, {
"modelValue": {},
"modelModifiers": {},
}),
emits: /*#__PURE__*/mergeModels(["change"], ["update:modelValue"]),
setup(__props, { expose: __expose, emit: __emit }) {
__expose();
const ns = useNamespace("radio");
const checkboxModel = useModel(__props, "modelValue");
const emit = __emit;
/** props */
const props = __props;
const {
checkboxSize,
isDisabled,
model,
isChecked,
isLoading,
changeEvent,
clickEvent,
} = useCheckbox({ props, checkboxModel });
const __returned__ = { ns, checkboxModel, emit, props, checkboxSize, isDisabled, model, isChecked, isLoading, changeEvent, clickEvent, get useCheckbox() { return useCheckbox }, get useNamespace() { return useNamespace }, get Loader() { return Loader } };
Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true });
return __returned__
}
});
const _hoisted_1 = ["value"];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_x_icon = resolveComponent("x-icon");
return (openBlock(), createBlock(resolveDynamicComponent($props.tag), {
class: normalizeClass([
$setup.ns.b(),
$setup.ns.m($props.type),
$setup.ns.is('checked', $setup.isChecked),
$setup.ns.is('loading', $setup.isLoading),
$setup.ns.is('disabled', $setup.isDisabled || $setup.isLoading),
$setup.ns.m('size', $setup.checkboxSize),
]),
onClick: $setup.clickEvent
}, {
default: withCtx(() => [
createElementVNode("span", {
class: normalizeClass([$setup.ns.e('wrapper')])
}, [
createElementVNode("input", {
class: normalizeClass([$setup.ns.e('input')]),
type: "radio",
value: $props.value,
name: "abc",
onChange: _cache[0] || (_cache[0] = (...args) => ($setup.changeEvent && $setup.changeEvent(...args))),
onClick: _cache[1] || (_cache[1] = withModifiers(() => {}, ["stop"]))
}, null, 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_1),
createElementVNode("span", {
class: normalizeClass([$setup.ns.e('inner')])
}, [
(!$setup.isLoading)
? (openBlock(), createElementBlock("i", {
key: 0,
class: normalizeClass([$setup.ns.e('spot')])
}, null, 2 /* CLASS */))
: (openBlock(), createBlock(_component_x_icon, { key: 1 }, {
default: withCtx(() => [
createVNode($setup["Loader"], {
class: normalizeClass([`${$setup.ns.is('loading-transition', $setup.isLoading)}`])
}, null, 8 /* PROPS */, ["class"])
]),
_: 1 /* STABLE */
}))
], 2 /* CLASS */)
], 2 /* CLASS */),
createElementVNode("span", {
class: normalizeClass([$setup.ns.e('label')])
}, [
renderSlot(_ctx.$slots, "default")
], 2 /* CLASS */)
]),
_: 3 /* FORWARDED */
}, 8 /* PROPS */, ["class", "onClick"]))
}
var Radio = /*#__PURE__*/_export_sfc(_sfc_main, [['render',_sfc_render],['__file',"E:\\code\\my-code\\song-ui-ultra\\packages\\components\\radio\\src\\radio.vue"]]);
export { Radio as default };
//# sourceMappingURL=radio.vue.mjs.map