UNPKG

@meve/ui

Version:

Argon design system components library

184 lines (165 loc) 6.09 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import Ripple from '../ripple'; import FormItem from '../form-item'; import { createNamespace } from '../utils/create'; import { props } from './props'; import { createChildrenMixin } from '../utils/mixins/relation'; var _createNamespace = createNamespace('radio'), createComponent = _createNamespace.createComponent, namespace = _createNamespace.namespace; var RadioPlugin = createComponent({ props: props, mixins: [createChildrenMixin('radioGroup', { parentKey: 'radioGroup', childrenKey: 'radios' }), createChildrenMixin('form', { parentKey: 'form', childrenKey: 'formComponents' })], directives: { Ripple: Ripple }, data: function data() { return { localValue: false, errorMessage: '' }; }, computed: { checked: function checked() { return this.localValue === this.checkedValue; } }, watch: { value: { handler: function handler(newValue) { this.localValue = newValue; }, immediate: true } }, methods: { // expose reset: function reset() { this.$emit('input', this.uncheckedValue); this.resetValidation(); }, // expose validate: function validate() { this.$refs.formItem.validate(); }, // expose resetValidation: function resetValidation() { this.$refs.formItem.resetValidation(); }, // expose toggle: function toggle(changedValue) { var uncheckedValue = this.uncheckedValue, checkedValue = this.checkedValue; var shouldReverse = ![uncheckedValue, checkedValue].includes(changedValue); if (shouldReverse) { changedValue = this.checked ? uncheckedValue : checkedValue; } this.change(changedValue); }, nextTickValidateWithTrigger: function nextTickValidateWithTrigger(trigger) { var _this = this; this.$nextTick(function () { var _this$$refs$formItem; (_this$$refs$formItem = _this.$refs.formItem) == null ? void 0 : _this$$refs$formItem.validateWithTrigger(_this.validateTrigger, trigger, _this.rules, _this.value); }); }, change: function change(changedValue) { var _this$radioGroup; if (this.radioGroup && this.localValue === this.checkedValue) { return; } this.localValue = changedValue; this.$emit('input', changedValue); this.$emit('change', changedValue); (_this$radioGroup = this.radioGroup) == null ? void 0 : _this$radioGroup.onToggle(this.checkedValue); this.nextTickValidateWithTrigger('onChange'); }, handleClick: function handleClick(event) { var _this$form, _this$form2; var disabled = this.disabled, readonly = this.readonly, uncheckedValue = this.uncheckedValue, checkedValue = this.checkedValue; if ((_this$form = this.form) != null && _this$form.disabled || disabled) { return; } this.$emit('click', event); this.nextTickValidateWithTrigger('onClick'); if ((_this$form2 = this.form) != null && _this$form2.readonly || readonly) { return; } this.change(this.checked ? uncheckedValue : checkedValue); }, sync: function sync(value) { this.localValue = value === this.checkedValue ? this.checkedValue : this.uncheckedValue; }, handleErrorMessageChange: function handleErrorMessageChange(errorMessage) { this.errorMessage = errorMessage; } }, render: function render() { var h = arguments[0]; var label = this.label, value = this.value, rules = this.rules, checked = this.checked, ripple = this.ripple, size = this.size, handleClick = this.handleClick, disabled = this.disabled, readonly = this.readonly, form = this.form, errorMessage = this.errorMessage, radioGroup = this.radioGroup, handleErrorMessageChange = this.handleErrorMessageChange; return h(FormItem, { "attrs": { "radio-cover": true, "label": label, "value": value, "rules": rules }, "ref": "formItem", "on": _extends({}, { 'error-message-change': handleErrorMessageChange }) }, [h("label", { "class": [namespace(), 'm--box', namespace("--" + size), form != null && form.disabled || disabled ? namespace('--text-disabled') : null, radioGroup != null && radioGroup.errorMessage || errorMessage ? namespace('--text-error') : null] }, [h("input", { "class": namespace('__input'), "attrs": { "type": "radio", "disabled": (form == null ? void 0 : form.disabled) || disabled, "readOnly": (form == null ? void 0 : form.readonly) || readonly }, "on": _extends({}, { "click": function click($event) { for (var _len = arguments.length, attrs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { attrs[_key - 1] = arguments[_key]; } handleClick.apply(void 0, [$event].concat(attrs)); } }) }), h("div", { "class": [namespace('__radio-container'), namespace("--" + size + "-radio-container")], "directives": [{ name: "ripple", value: { disabled: !ripple || disabled || readonly || (form == null ? void 0 : form.disabled) || (form == null ? void 0 : form.readonly) } }] }, [h("div", { "class": [namespace('__radio'), namespace("--" + size + "-radio"), checked ? namespace("--" + size + "-svg") : null, checked ? null : namespace("--border-visible"), checked ? namespace('--checked') : null, radioGroup != null && radioGroup.errorMessage || errorMessage ? checked ? namespace('--background-error') : namespace('--border-error') : null, form != null && form.disabled || disabled ? namespace('--disabled') : null] })]), h("div", { "class": namespace('__label') }, [this.slots()])])]); } }); export var _RadioComponent = RadioPlugin; export default RadioPlugin;