MenuItem.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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 _extends2 = require('babel-runtime/helpers/extends');
  8. var _extends3 = _interopRequireDefault(_extends2);
  9. var _vcMenu = require('../vc-menu');
  10. var _propsUtil = require('../_util/props-util');
  11. var _tooltip = require('../tooltip');
  12. var _tooltip2 = _interopRequireDefault(_tooltip);
  13. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  14. function noop() {}
  15. exports['default'] = {
  16. name: 'MenuItem',
  17. inheritAttrs: false,
  18. props: _vcMenu.itemProps,
  19. inject: {
  20. getInlineCollapsed: { 'default': function _default() {
  21. return noop;
  22. } },
  23. layoutSiderContext: { 'default': function _default() {
  24. return {};
  25. } }
  26. },
  27. isMenuItem: true,
  28. methods: {
  29. onKeyDown: function onKeyDown(e) {
  30. this.$refs.menuItem.onKeyDown(e);
  31. }
  32. },
  33. render: function render() {
  34. var h = arguments[0];
  35. var props = (0, _propsUtil.getOptionProps)(this);
  36. var level = props.level,
  37. title = props.title,
  38. rootPrefixCls = props.rootPrefixCls;
  39. var getInlineCollapsed = this.getInlineCollapsed,
  40. $slots = this.$slots,
  41. attrs = this.$attrs;
  42. var inlineCollapsed = getInlineCollapsed();
  43. var tooltipTitle = title;
  44. if (typeof title === 'undefined') {
  45. tooltipTitle = level === 1 ? $slots['default'] : '';
  46. } else if (title === false) {
  47. tooltipTitle = '';
  48. }
  49. var tooltipProps = {
  50. title: tooltipTitle
  51. };
  52. var siderCollapsed = this.layoutSiderContext.sCollapsed;
  53. if (!siderCollapsed && !inlineCollapsed) {
  54. tooltipProps.title = null;
  55. // Reset `visible` to fix control mode tooltip display not correct
  56. // ref: https://github.com/ant-design/ant-design/issues/16742
  57. tooltipProps.visible = false;
  58. }
  59. var itemProps = {
  60. props: (0, _extends3['default'])({}, props, {
  61. title: title
  62. }),
  63. attrs: attrs,
  64. on: (0, _propsUtil.getListeners)(this)
  65. };
  66. var toolTipProps = {
  67. props: (0, _extends3['default'])({}, tooltipProps, {
  68. placement: 'right',
  69. overlayClassName: rootPrefixCls + '-inline-collapsed-tooltip'
  70. })
  71. };
  72. return h(
  73. _tooltip2['default'],
  74. toolTipProps,
  75. [h(
  76. _vcMenu.Item,
  77. (0, _babelHelperVueJsxMergeProps2['default'])([itemProps, { ref: 'menuItem' }]),
  78. [$slots['default']]
  79. )]
  80. );
  81. }
  82. };