UNPKG

framework7-vue

Version:

Build full featured iOS & Android apps using Framework7 & Vue

55 lines 1.7 kB
import { createElementVNode as _createElementVNode, renderSlot as _renderSlot, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue"; const _hoisted_1 = ["name", "value", "disabled", "readonly", "checked"]; function render(_ctx, _cache) { return _openBlock(), _createElementBlock("label", { class: _normalizeClass(_ctx.classes) }, [_createElementVNode("input", { ref: "inputElRef", type: "radio", name: _ctx.name, value: _ctx.value, disabled: _ctx.disabled, readonly: _ctx.readonly, checked: _ctx.checked, onChange: _cache[0] || (_cache[0] = (...args) => _ctx.onChange && _ctx.onChange(...args)) }, null, 40, _hoisted_1), _cache[1] || (_cache[1] = _createElementVNode("i", { class: "icon-radio" }, null, -1)), _renderSlot(_ctx.$slots, "default")], 2); } import { ref, computed } from 'vue'; import { classNames } from '../shared/utils.js'; import { colorClasses, colorProps } from '../shared/mixins.js'; export default { name: 'f7-radio', render, props: { checked: Boolean, name: [Number, String], value: { type: [Number, String, Boolean], default: undefined }, disabled: Boolean, readonly: Boolean, ...colorProps }, emits: ['update:checked', 'change'], setup(props, { emit }) { const inputElRef = ref(null); const onChange = event => { emit('update:checked', event.target.checked); emit('change', event); }; const classes = computed(() => classNames({ radio: true, disabled: props.disabled }, colorClasses(props))); return { inputElRef, classes, onChange }; } };