TimelineItem.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import _defineProperty from 'babel-runtime/helpers/defineProperty';
  2. import classNames from 'classnames';
  3. import PropTypes from '../_util/vue-types';
  4. import { getOptionProps, initDefaultProps, getComponentFromProp, getListeners } from '../_util/props-util';
  5. import { ConfigConsumerProps } from '../config-provider/configConsumerProps';
  6. export var TimeLineItemProps = {
  7. prefixCls: PropTypes.string,
  8. color: PropTypes.string,
  9. dot: PropTypes.any,
  10. pending: PropTypes.bool,
  11. position: PropTypes.oneOf(['left', 'right', '']).def('')
  12. };
  13. export default {
  14. name: 'ATimelineItem',
  15. props: initDefaultProps(TimeLineItemProps, {
  16. color: 'blue',
  17. pending: false
  18. }),
  19. inject: {
  20. configProvider: { 'default': function _default() {
  21. return ConfigConsumerProps;
  22. } }
  23. },
  24. render: function render() {
  25. var _classNames, _classNames2;
  26. var h = arguments[0];
  27. var _getOptionProps = getOptionProps(this),
  28. customizePrefixCls = _getOptionProps.prefixCls,
  29. _getOptionProps$color = _getOptionProps.color,
  30. color = _getOptionProps$color === undefined ? '' : _getOptionProps$color,
  31. pending = _getOptionProps.pending;
  32. var getPrefixCls = this.configProvider.getPrefixCls;
  33. var prefixCls = getPrefixCls('timeline', customizePrefixCls);
  34. var dot = getComponentFromProp(this, 'dot');
  35. var itemClassName = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + '-item', true), _defineProperty(_classNames, prefixCls + '-item-pending', pending), _classNames));
  36. var dotClassName = classNames((_classNames2 = {}, _defineProperty(_classNames2, prefixCls + '-item-head', true), _defineProperty(_classNames2, prefixCls + '-item-head-custom', dot), _defineProperty(_classNames2, prefixCls + '-item-head-' + color, true), _classNames2));
  37. var liProps = {
  38. 'class': itemClassName,
  39. on: getListeners(this)
  40. };
  41. return h(
  42. 'li',
  43. liProps,
  44. [h('div', { 'class': prefixCls + '-item-tail' }), h(
  45. 'div',
  46. {
  47. 'class': dotClassName,
  48. style: { borderColor: /blue|red|green|gray/.test(color) ? undefined : color }
  49. },
  50. [dot]
  51. ), h(
  52. 'div',
  53. { 'class': prefixCls + '-item-content' },
  54. [this.$slots['default']]
  55. )]
  56. );
  57. }
  58. };