index.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.SpaceProps = exports.SpaceSizeType = undefined;
  6. var _babelHelperVueJsxMergeProps = require('babel-helper-vue-jsx-merge-props');
  7. var _babelHelperVueJsxMergeProps2 = _interopRequireDefault(_babelHelperVueJsxMergeProps);
  8. var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
  9. var _defineProperty3 = _interopRequireDefault(_defineProperty2);
  10. var _vueTypes = require('../_util/vue-types');
  11. var _vueTypes2 = _interopRequireDefault(_vueTypes);
  12. var _propsUtil = require('../_util/props-util');
  13. var _configConsumerProps = require('../config-provider/configConsumerProps');
  14. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  15. var SpaceSizeType = exports.SpaceSizeType = _vueTypes2['default'].oneOfType([_vueTypes2['default'].number, _vueTypes2['default'].oneOf(['small', 'middle', 'large'])]);
  16. var spaceSize = {
  17. small: 8,
  18. middle: 16,
  19. large: 24
  20. };
  21. var SpaceProps = exports.SpaceProps = {
  22. prefixCls: _vueTypes2['default'].string,
  23. size: SpaceSizeType,
  24. direction: _vueTypes2['default'].oneOf(['horizontal', 'vertical']),
  25. align: _vueTypes2['default'].oneOf(['start', 'end', 'center', 'baseline'])
  26. };
  27. var Space = {
  28. functional: true,
  29. name: 'ASpace',
  30. props: (0, _propsUtil.initDefaultProps)(SpaceProps, {
  31. size: 'small',
  32. direction: 'horizontal'
  33. }),
  34. inject: {
  35. configProvider: { 'default': function _default() {
  36. return _configConsumerProps.ConfigConsumerProps;
  37. } }
  38. },
  39. render: function render(h, content) {
  40. var _ref;
  41. var customizePrefixCls = content.prefixCls,
  42. configProvider = content.injections.configProvider,
  43. children = content.children;
  44. var _content$props = content.props,
  45. align = _content$props.align,
  46. size = _content$props.size,
  47. direction = _content$props.direction;
  48. var getPrefixCls = configProvider.getPrefixCls;
  49. var prefixCls = getPrefixCls('space', customizePrefixCls);
  50. var items = (0, _propsUtil.filterEmpty)(children);
  51. var len = items.length;
  52. if (len === 0) {
  53. return null;
  54. }
  55. var mergedAlign = align === undefined && direction === 'horizontal' ? 'center' : align;
  56. var someSpaceClass = [(_ref = {}, (0, _defineProperty3['default'])(_ref, prefixCls, true), (0, _defineProperty3['default'])(_ref, prefixCls + '-' + direction, true), (0, _defineProperty3['default'])(_ref, prefixCls + '-align-' + mergedAlign, mergedAlign), _ref)];
  57. if (content.data['class']) {
  58. someSpaceClass.push(content.data['class']);
  59. }
  60. var itemClassName = prefixCls + '-item';
  61. var marginDirection = 'marginRight'; // directionConfig === 'rtl' ? 'marginLeft' : 'marginRight';
  62. return h(
  63. 'div',
  64. (0, _babelHelperVueJsxMergeProps2['default'])([content.data, { 'class': someSpaceClass }]),
  65. [items.map(function (child, i) {
  66. return h(
  67. 'div',
  68. {
  69. 'class': itemClassName,
  70. key: itemClassName + '-' + i,
  71. style: i === len - 1 ? {} : (0, _defineProperty3['default'])({}, direction === 'vertical' ? 'marginBottom' : marginDirection, typeof size === 'string' ? spaceSize[size] + 'px' : size + 'px')
  72. },
  73. [child]
  74. );
  75. })]
  76. );
  77. }
  78. };
  79. /* istanbul ignore next */
  80. Space.install = function (Vue) {
  81. Vue.component(Space.name, Space);
  82. };
  83. exports['default'] = Space;