tooltip.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. module.exports =
  2. /******/ (function(modules) { // webpackBootstrap
  3. /******/ // The module cache
  4. /******/ var installedModules = {};
  5. /******/ // The require function
  6. /******/ function __webpack_require__(moduleId) {
  7. /******/ // Check if module is in cache
  8. /******/ if(installedModules[moduleId])
  9. /******/ return installedModules[moduleId].exports;
  10. /******/ // Create a new module (and put it into the cache)
  11. /******/ var module = installedModules[moduleId] = {
  12. /******/ exports: {},
  13. /******/ id: moduleId,
  14. /******/ loaded: false
  15. /******/ };
  16. /******/ // Execute the module function
  17. /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  18. /******/ // Flag the module as loaded
  19. /******/ module.loaded = true;
  20. /******/ // Return the exports of the module
  21. /******/ return module.exports;
  22. /******/ }
  23. /******/ // expose the modules object (__webpack_modules__)
  24. /******/ __webpack_require__.m = modules;
  25. /******/ // expose the module cache
  26. /******/ __webpack_require__.c = installedModules;
  27. /******/ // __webpack_public_path__
  28. /******/ __webpack_require__.p = "/dist/";
  29. /******/ // Load entry module and return exports
  30. /******/ return __webpack_require__(0);
  31. /******/ })
  32. /************************************************************************/
  33. /******/ ({
  34. /***/ 0:
  35. /***/ function(module, exports, __webpack_require__) {
  36. module.exports = __webpack_require__(340);
  37. /***/ },
  38. /***/ 13:
  39. /***/ function(module, exports) {
  40. module.exports = require("element-ui/lib/utils/vue-popper");
  41. /***/ },
  42. /***/ 46:
  43. /***/ function(module, exports) {
  44. module.exports = require("throttle-debounce/debounce");
  45. /***/ },
  46. /***/ 56:
  47. /***/ function(module, exports) {
  48. module.exports = require("vue");
  49. /***/ },
  50. /***/ 206:
  51. /***/ function(module, exports) {
  52. module.exports = require("element-ui/lib/utils/vdom");
  53. /***/ },
  54. /***/ 340:
  55. /***/ function(module, exports, __webpack_require__) {
  56. 'use strict';
  57. exports.__esModule = true;
  58. var _main = __webpack_require__(341);
  59. var _main2 = _interopRequireDefault(_main);
  60. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  61. /* istanbul ignore next */
  62. _main2.default.install = function (Vue) {
  63. Vue.component(_main2.default.name, _main2.default);
  64. };
  65. exports.default = _main2.default;
  66. /***/ },
  67. /***/ 341:
  68. /***/ function(module, exports, __webpack_require__) {
  69. 'use strict';
  70. exports.__esModule = true;
  71. var _vuePopper = __webpack_require__(13);
  72. var _vuePopper2 = _interopRequireDefault(_vuePopper);
  73. var _debounce = __webpack_require__(46);
  74. var _debounce2 = _interopRequireDefault(_debounce);
  75. var _vdom = __webpack_require__(206);
  76. var _vue = __webpack_require__(56);
  77. var _vue2 = _interopRequireDefault(_vue);
  78. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  79. exports.default = {
  80. name: 'ElTooltip',
  81. mixins: [_vuePopper2.default],
  82. props: {
  83. openDelay: {
  84. type: Number,
  85. default: 0
  86. },
  87. disabled: Boolean,
  88. manual: Boolean,
  89. effect: {
  90. type: String,
  91. default: 'dark'
  92. },
  93. popperClass: String,
  94. content: String,
  95. visibleArrow: {
  96. default: true
  97. },
  98. transition: {
  99. type: String,
  100. default: 'fade-in-linear'
  101. },
  102. popperOptions: {
  103. default: function _default() {
  104. return {
  105. boundariesPadding: 10,
  106. gpuAcceleration: false
  107. };
  108. }
  109. }
  110. },
  111. beforeCreate: function beforeCreate() {
  112. var _this = this;
  113. if (this.$isServer) return;
  114. this.popperVM = new _vue2.default({
  115. data: { node: '' },
  116. render: function render(h) {
  117. return this.node;
  118. }
  119. }).$mount();
  120. this.debounceClose = (0, _debounce2.default)(200, function () {
  121. return _this.handleClosePopper();
  122. });
  123. },
  124. render: function render(h) {
  125. var _this2 = this;
  126. if (this.popperVM) {
  127. this.popperVM.node = h(
  128. 'transition',
  129. {
  130. attrs: {
  131. name: this.transition
  132. },
  133. on: {
  134. 'afterLeave': this.doDestroy
  135. }
  136. },
  137. [h(
  138. 'div',
  139. {
  140. on: {
  141. 'mouseleave': function mouseleave() {
  142. _this2.debounceClose();_this2.togglePreventClose();
  143. },
  144. 'mouseenter': this.togglePreventClose
  145. },
  146. ref: 'popper',
  147. directives: [{
  148. name: 'show',
  149. value: !this.disabled && this.showPopper
  150. }],
  151. 'class': ['el-tooltip__popper', 'is-' + this.effect, this.popperClass] },
  152. [this.$slots.content || this.content]
  153. )]
  154. );
  155. }
  156. if (!this.$slots.default || !this.$slots.default.length) return this.$slots.default;
  157. var vnode = (0, _vdom.getFirstComponentChild)(this.$slots.default);
  158. if (!vnode) return vnode;
  159. var data = vnode.data = vnode.data || {};
  160. var on = vnode.data.on = vnode.data.on || {};
  161. on.mouseenter = this.addEventHandle(on.mouseenter, this.handleShowPopper);
  162. on.mouseleave = this.addEventHandle(on.mouseleave, this.debounceClose);
  163. data.staticClass = this.concatClass(data.staticClass, 'el-tooltip');
  164. return vnode;
  165. },
  166. mounted: function mounted() {
  167. this.referenceElm = this.$el;
  168. },
  169. methods: {
  170. addEventHandle: function addEventHandle(old, fn) {
  171. return old ? Array.isArray(old) ? old.concat(fn) : [old, fn] : fn;
  172. },
  173. concatClass: function concatClass(a, b) {
  174. if (a && a.indexOf(b) > -1) return a;
  175. return a ? b ? a + ' ' + b : a : b || '';
  176. },
  177. handleShowPopper: function handleShowPopper() {
  178. var _this3 = this;
  179. if (this.manual) return;
  180. clearTimeout(this.timeout);
  181. this.timeout = setTimeout(function () {
  182. _this3.showPopper = true;
  183. }, this.openDelay);
  184. },
  185. handleClosePopper: function handleClosePopper() {
  186. if (this.preventClose || this.manual) return;
  187. clearTimeout(this.timeout);
  188. this.showPopper = false;
  189. },
  190. togglePreventClose: function togglePreventClose() {
  191. this.preventClose = !this.preventClose;
  192. }
  193. }
  194. };
  195. /***/ }
  196. /******/ });