button-group.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import _defineProperty from 'babel-runtime/helpers/defineProperty';
  2. import { filterEmpty } from '../_util/props-util';
  3. import PropTypes from '../_util/vue-types';
  4. import { ConfigConsumerProps } from '../config-provider/configConsumerProps';
  5. var ButtonGroupProps = {
  6. prefixCls: PropTypes.string,
  7. size: {
  8. validator: function validator(value) {
  9. return ['small', 'large', 'default'].includes(value);
  10. }
  11. }
  12. };
  13. export { ButtonGroupProps };
  14. export default {
  15. name: 'AButtonGroup',
  16. props: ButtonGroupProps,
  17. inject: {
  18. configProvider: { 'default': function _default() {
  19. return ConfigConsumerProps;
  20. } }
  21. },
  22. data: function data() {
  23. return {
  24. sizeMap: {
  25. large: 'lg',
  26. small: 'sm'
  27. }
  28. };
  29. },
  30. render: function render() {
  31. var _classes;
  32. var h = arguments[0];
  33. var customizePrefixCls = this.prefixCls,
  34. size = this.size,
  35. $slots = this.$slots;
  36. var getPrefixCls = this.configProvider.getPrefixCls;
  37. var prefixCls = getPrefixCls('btn-group', customizePrefixCls);
  38. // large => lg
  39. // small => sm
  40. var sizeCls = '';
  41. switch (size) {
  42. case 'large':
  43. sizeCls = 'lg';
  44. break;
  45. case 'small':
  46. sizeCls = 'sm';
  47. break;
  48. default:
  49. break;
  50. }
  51. var classes = (_classes = {}, _defineProperty(_classes, '' + prefixCls, true), _defineProperty(_classes, prefixCls + '-' + sizeCls, sizeCls), _classes);
  52. return h(
  53. 'div',
  54. { 'class': classes },
  55. [filterEmpty($slots['default'])]
  56. );
  57. }
  58. };