Radio.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. var _babelHelperVueJsxMergeProps = require('babel-helper-vue-jsx-merge-props');
  6. var _babelHelperVueJsxMergeProps2 = _interopRequireDefault(_babelHelperVueJsxMergeProps);
  7. var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
  8. var _defineProperty3 = _interopRequireDefault(_defineProperty2);
  9. var _extends2 = require('babel-runtime/helpers/extends');
  10. var _extends3 = _interopRequireDefault(_extends2);
  11. var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
  12. var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
  13. var _vueTypes = require('../_util/vue-types');
  14. var _vueTypes2 = _interopRequireDefault(_vueTypes);
  15. var _vcCheckbox = require('../vc-checkbox');
  16. var _vcCheckbox2 = _interopRequireDefault(_vcCheckbox);
  17. var _classnames = require('classnames');
  18. var _classnames2 = _interopRequireDefault(_classnames);
  19. var _propsUtil = require('../_util/props-util');
  20. var _configConsumerProps = require('../config-provider/configConsumerProps');
  21. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  22. function noop() {}
  23. exports['default'] = {
  24. name: 'ARadio',
  25. model: {
  26. prop: 'checked'
  27. },
  28. props: {
  29. prefixCls: _vueTypes2['default'].string,
  30. defaultChecked: Boolean,
  31. checked: { type: Boolean, 'default': undefined },
  32. disabled: Boolean,
  33. isGroup: Boolean,
  34. value: _vueTypes2['default'].any,
  35. name: String,
  36. id: String,
  37. autoFocus: Boolean,
  38. type: _vueTypes2['default'].string.def('radio')
  39. },
  40. inject: {
  41. radioGroupContext: { 'default': undefined },
  42. configProvider: { 'default': function _default() {
  43. return _configConsumerProps.ConfigConsumerProps;
  44. } }
  45. },
  46. methods: {
  47. focus: function focus() {
  48. this.$refs.vcCheckbox.focus();
  49. },
  50. blur: function blur() {
  51. this.$refs.vcCheckbox.blur();
  52. },
  53. handleChange: function handleChange(event) {
  54. var targetChecked = event.target.checked;
  55. this.$emit('input', targetChecked);
  56. this.$emit('change', event);
  57. },
  58. onChange: function onChange(e) {
  59. this.$emit('change', e);
  60. if (this.radioGroupContext && this.radioGroupContext.onRadioChange) {
  61. this.radioGroupContext.onRadioChange(e);
  62. }
  63. }
  64. },
  65. render: function render() {
  66. var _classNames;
  67. var h = arguments[0];
  68. var $slots = this.$slots,
  69. radioGroup = this.radioGroupContext;
  70. var props = (0, _propsUtil.getOptionProps)(this);
  71. var children = $slots['default'];
  72. var _getListeners = (0, _propsUtil.getListeners)(this),
  73. _getListeners$mouseen = _getListeners.mouseenter,
  74. mouseenter = _getListeners$mouseen === undefined ? noop : _getListeners$mouseen,
  75. _getListeners$mousele = _getListeners.mouseleave,
  76. mouseleave = _getListeners$mousele === undefined ? noop : _getListeners$mousele,
  77. restListeners = (0, _objectWithoutProperties3['default'])(_getListeners, ['mouseenter', 'mouseleave']);
  78. var customizePrefixCls = props.prefixCls,
  79. restProps = (0, _objectWithoutProperties3['default'])(props, ['prefixCls']);
  80. var getPrefixCls = this.configProvider.getPrefixCls;
  81. var prefixCls = getPrefixCls('radio', customizePrefixCls);
  82. var radioProps = {
  83. props: (0, _extends3['default'])({}, restProps, { prefixCls: prefixCls }),
  84. on: restListeners,
  85. attrs: (0, _propsUtil.getAttrs)(this)
  86. };
  87. if (radioGroup) {
  88. radioProps.props.name = radioGroup.name;
  89. radioProps.on.change = this.onChange;
  90. radioProps.props.checked = props.value === radioGroup.stateValue;
  91. radioProps.props.disabled = props.disabled || radioGroup.disabled;
  92. } else {
  93. radioProps.on.change = this.handleChange;
  94. }
  95. var wrapperClassString = (0, _classnames2['default'])((_classNames = {}, (0, _defineProperty3['default'])(_classNames, prefixCls + '-wrapper', true), (0, _defineProperty3['default'])(_classNames, prefixCls + '-wrapper-checked', radioProps.props.checked), (0, _defineProperty3['default'])(_classNames, prefixCls + '-wrapper-disabled', radioProps.props.disabled), _classNames));
  96. return h(
  97. 'label',
  98. { 'class': wrapperClassString, on: {
  99. 'mouseenter': mouseenter,
  100. 'mouseleave': mouseleave
  101. }
  102. },
  103. [h(_vcCheckbox2['default'], (0, _babelHelperVueJsxMergeProps2['default'])([radioProps, { ref: 'vcCheckbox' }])), children !== undefined ? h('span', [children]) : null]
  104. );
  105. }
  106. };