BreadcrumbItem.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. var _vueTypes = require('../_util/vue-types');
  6. var _vueTypes2 = _interopRequireDefault(_vueTypes);
  7. var _propsUtil = require('../_util/props-util');
  8. var _configConsumerProps = require('../config-provider/configConsumerProps');
  9. var _dropdown = require('../dropdown/dropdown');
  10. var _dropdown2 = _interopRequireDefault(_dropdown);
  11. var _icon = require('../icon');
  12. var _icon2 = _interopRequireDefault(_icon);
  13. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  14. exports['default'] = {
  15. name: 'ABreadcrumbItem',
  16. __ANT_BREADCRUMB_ITEM: true,
  17. props: {
  18. prefixCls: _vueTypes2['default'].string,
  19. href: _vueTypes2['default'].string,
  20. separator: _vueTypes2['default'].any.def('/'),
  21. overlay: _vueTypes2['default'].any
  22. },
  23. inject: {
  24. configProvider: { 'default': function _default() {
  25. return _configConsumerProps.ConfigConsumerProps;
  26. } }
  27. },
  28. methods: {
  29. /**
  30. * if overlay is have
  31. * Wrap a DropDown
  32. */
  33. renderBreadcrumbNode: function renderBreadcrumbNode(breadcrumbItem, prefixCls) {
  34. var h = this.$createElement;
  35. var overlay = (0, _propsUtil.getComponentFromProp)(this, 'overlay');
  36. if (overlay) {
  37. return h(
  38. _dropdown2['default'],
  39. {
  40. attrs: { overlay: overlay, placement: 'bottomCenter' }
  41. },
  42. [h(
  43. 'span',
  44. { 'class': prefixCls + '-overlay-link' },
  45. [breadcrumbItem, h(_icon2['default'], {
  46. attrs: { type: 'down' }
  47. })]
  48. )]
  49. );
  50. }
  51. return breadcrumbItem;
  52. }
  53. },
  54. render: function render() {
  55. var h = arguments[0];
  56. var customizePrefixCls = this.prefixCls,
  57. $slots = this.$slots;
  58. var getPrefixCls = this.configProvider.getPrefixCls;
  59. var prefixCls = getPrefixCls('breadcrumb', customizePrefixCls);
  60. var separator = (0, _propsUtil.getComponentFromProp)(this, 'separator');
  61. var children = $slots['default'];
  62. var link = void 0;
  63. if ((0, _propsUtil.hasProp)(this, 'href')) {
  64. link = h(
  65. 'a',
  66. { 'class': prefixCls + '-link' },
  67. [children]
  68. );
  69. } else {
  70. link = h(
  71. 'span',
  72. { 'class': prefixCls + '-link' },
  73. [children]
  74. );
  75. }
  76. // wrap to dropDown
  77. link = this.renderBreadcrumbNode(link, prefixCls);
  78. if (children) {
  79. return h('span', [link, separator && separator !== '' && h(
  80. 'span',
  81. { 'class': prefixCls + '-separator' },
  82. [separator]
  83. )]);
  84. }
  85. return null;
  86. }
  87. };