UNPKG

@ishitatsuyuki/oruga-next

Version:

UI components for Vue.js and CSS framework agnostic

86 lines (80 loc) 3.06 kB
'use strict'; 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;