@ishitatsuyuki/oruga-next
Version:
UI components for Vue.js and CSS framework agnostic
86 lines (80 loc) • 3.06 kB
JavaScript
;
var vue = require('vue');
var BaseComponentMixin = require('./BaseComponentMixin-a03c02e3.js');
var CheckRadioMixin = require('./CheckRadioMixin-2a894e60.js');
/**
* Select an option from a set
* @displayName Radio
* @style _radio.scss
*/
var script = vue.defineComponent({
name: 'ORadio',
mixins: [BaseComponentMixin.BaseComponentMixin, CheckRadioMixin.CheckRadioMixin],
configField: 'radio',
emits: [
'input'
],
props: {
rootClass: [String, Function, Array],
disabledClass: [String, Function, Array],
checkCheckedClass: [String, Function, Array],
checkClass: [String, Function, Array],
labelClass: [String, Function, Array],
sizeClass: [String, Function, Array],
variantClass: [String, Function, Array]
},
computed: {
isChecked() {
return this.modelValue === this.nativeValue;
},
rootClasses() {
return [
this.computedClass('rootClass', 'o-radio'),
{ [this.computedClass('checkedClass', 'o-radio--checked')]: this.isChecked },
{ [this.computedClass('sizeClass', 'o-radio--', this.size)]: this.size },
{ [this.computedClass('disabledClass', 'o-radio--disabled')]: this.disabled },
{ [this.computedClass('variantClass', 'o-radio--', this.variant)]: this.variant }
];
},
checkClasses() {
return [
this.computedClass('checkClass', 'o-radio__check'),
{ [this.computedClass('checkCheckedClass', 'o-radio__check--checked')]: this.isChecked },
];
},
labelClasses() {
return [
this.computedClass('labelClass', 'o-radio__label')
];
}
}
});
function render(_ctx, _cache, $props, $setup, $data, $options) {
return vue.openBlock(), vue.createBlock("label", {
class: _ctx.rootClasses,
ref: "label",
onClick: _cache[3] || (_cache[3] = vue.withModifiers((...args) => _ctx.focus(...args), ["stop"])),
onKeydown: _cache[4] || (_cache[4] = vue.withKeys(vue.withModifiers($event => _ctx.$refs.label.click(), ["prevent"]), ["enter"]))
}, [vue.withDirectives(vue.createVNode("input", {
"onUpdate:modelValue": _cache[1] || (_cache[1] = $event => _ctx.computedValue = $event),
type: "radio",
ref: "input",
onClick: _cache[2] || (_cache[2] = vue.withModifiers(() => {}, ["stop"])),
class: _ctx.checkClasses,
disabled: _ctx.disabled,
required: _ctx.required,
name: _ctx.name,
value: _ctx.nativeValue
}, null, 10
/* CLASS, PROPS */
, ["disabled", "required", "name", "value"]), [[vue.vModelRadio, _ctx.computedValue]]), vue.createVNode("span", {
class: _ctx.labelClasses
}, [vue.renderSlot(_ctx.$slots, "default")], 2
/* CLASS */
)], 34
/* CLASS, HYDRATE_EVENTS */
);
}
script.render = render;
script.__file = "src/components/radio/Radio.vue";
exports.script = script;