@vuesax-alpha/nightly
Version:
A Component Library for Vue 3
129 lines (124 loc) • 4.73 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
require('../../../hooks/index.js');
require('../../../utils/index.js');
var index$4 = require('../../icon/index.js');
var radio = require('./radio2.js');
var useRadio = require('./use-radio.js');
var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
var index = require('../../../hooks/use-namespace/index.js');
var index$1 = require('../../../hooks/use-id/index.js');
var index$2 = require('../../../hooks/use-common-props/index.js');
var index$3 = require('../../../hooks/use-base-component/index.js');
var color = require('../../../utils/color.js');
const _hoisted_1 = ["id", "disabled", "readonly", "name"];
const _hoisted_2 = ["for"];
const __default__ = vue.defineComponent({
name: "VsRadio"
});
const _sfc_main = vue.defineComponent({
...__default__,
props: radio.radioProps,
emits: radio.radioEmits,
setup(__props, { emit }) {
const props = __props;
const ns = index.useNamespace("radio");
const uid = index$1.useId();
const { isDisabled, loading, model, focus, checked } = useRadio.useRadio(props, emit);
const color$1 = index$2.useColor("primary");
const vsBaseClasses = index$3.useVuesaxBaseComponent(color$1);
const radioKls = vue.computed(() => [
vsBaseClasses,
ns.b("wrapper"),
ns.is("loading", loading.value),
ns.is("disabled", isDisabled.value),
ns.is("active", checked.value),
ns.is("label-before", props.labelBefore)
]);
const radioStyles = vue.computed(() => [
ns.cssVar({
color: color.getVsColor(color$1.value)
})
]);
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock(
"div",
{
class: vue.normalizeClass(radioKls.value),
style: vue.normalizeStyle(radioStyles.value)
},
[
vue.createElementVNode(
"div",
{
class: vue.normalizeClass(vue.unref(ns).b())
},
[
vue.withDirectives(vue.createElementVNode("input", {
id: vue.unref(uid),
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => vue.isRef(model) ? model.value = $event : null),
type: "radio",
disabled: vue.unref(isDisabled),
readonly: vue.unref(isDisabled),
name: _ctx.name,
onFocus: _cache[1] || (_cache[1] = ($event) => focus.value = true),
onBlur: _cache[2] || (_cache[2] = ($event) => focus.value = false)
}, null, 40, _hoisted_1), [
[vue.vModelRadio, vue.unref(model)]
]),
vue.createElementVNode(
"span",
{
class: vue.normalizeClass(vue.unref(ns).e("effect"))
},
[
_ctx.$slots.icon ? (vue.openBlock(), vue.createElementBlock(
"span",
{
key: 0,
class: vue.normalizeClass(vue.unref(ns).em("effect", "icon"))
},
[
vue.renderSlot(_ctx.$slots, "icon")
],
2
)) : vue.createCommentVNode("v-if", true),
vue.unref(loading) ? (vue.openBlock(), vue.createElementBlock(
"span",
{
key: 1,
class: vue.normalizeClass(vue.unref(ns).em("effect", "loading"))
},
[
vue.createVNode(vue.unref(index$4.IconLoading))
],
2
)) : vue.createCommentVNode("v-if", true)
],
2
)
],
2
),
_ctx.$slots.default || _ctx.label ? (vue.openBlock(), vue.createElementBlock("label", {
key: 0,
for: vue.unref(uid),
class: vue.normalizeClass(vue.unref(ns).e("label"))
}, [
vue.renderSlot(_ctx.$slots, "default", {}, () => [
vue.createTextVNode(
vue.toDisplayString(_ctx.label),
1
)
])
], 10, _hoisted_2)) : vue.createCommentVNode("v-if", true)
],
6
);
};
}
});
var Radio = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["__file", "/home/runner/work/vuesax-alpha/vuesax-alpha/packages/components/radio/src/radio.vue"]]);
exports["default"] = Radio;
//# sourceMappingURL=radio.js.map