9d0e98823e4cb2cf0695c47d5caf39f4a9dcb96e74279f96e1920112c6b6e26ade0a753bd8d433ef0fac178446a57b86e38aaa954d548e970902fdd1133d19 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var constants = require('./constants.js');
  5. var forwardRef = require('./forward-ref.js');
  6. var trigger = require('./trigger.js');
  7. var common = require('./common.js');
  8. var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
  9. var event = require('../../../utils/dom/event.js');
  10. const __default__ = vue.defineComponent({
  11. name: "ElTooltipV2Trigger"
  12. });
  13. const _sfc_main = /* @__PURE__ */ vue.defineComponent({
  14. ...__default__,
  15. props: {
  16. ...common.tooltipV2CommonProps,
  17. ...trigger.tooltipV2TriggerProps
  18. },
  19. setup(__props) {
  20. const props = __props;
  21. const { onClose, onOpen, onDelayOpen, triggerRef, contentId } = vue.inject(constants.tooltipV2RootKey);
  22. let isMousedown = false;
  23. const setTriggerRef = (el) => {
  24. triggerRef.value = el;
  25. };
  26. const onMouseup = () => {
  27. isMousedown = false;
  28. };
  29. const onMouseenter = event.composeEventHandlers(props.onMouseEnter, onDelayOpen);
  30. const onMouseleave = event.composeEventHandlers(props.onMouseLeave, onClose);
  31. const onMousedown = event.composeEventHandlers(props.onMouseDown, () => {
  32. onClose();
  33. isMousedown = true;
  34. document.addEventListener("mouseup", onMouseup, { once: true });
  35. });
  36. const onFocus = event.composeEventHandlers(props.onFocus, () => {
  37. if (!isMousedown)
  38. onOpen();
  39. });
  40. const onBlur = event.composeEventHandlers(props.onBlur, onClose);
  41. const onClick = event.composeEventHandlers(props.onClick, (e) => {
  42. if (e.detail === 0)
  43. onClose();
  44. });
  45. const events = {
  46. blur: onBlur,
  47. click: onClick,
  48. focus: onFocus,
  49. mousedown: onMousedown,
  50. mouseenter: onMouseenter,
  51. mouseleave: onMouseleave
  52. };
  53. const setEvents = (el, events2, type) => {
  54. if (el) {
  55. Object.entries(events2).forEach(([name, handler]) => {
  56. el[type](name, handler);
  57. });
  58. }
  59. };
  60. vue.watch(triggerRef, (triggerEl, previousTriggerEl) => {
  61. setEvents(triggerEl, events, "addEventListener");
  62. setEvents(previousTriggerEl, events, "removeEventListener");
  63. if (triggerEl) {
  64. triggerEl.setAttribute("aria-describedby", contentId.value);
  65. }
  66. });
  67. vue.onBeforeUnmount(() => {
  68. setEvents(triggerRef.value, events, "removeEventListener");
  69. document.removeEventListener("mouseup", onMouseup);
  70. });
  71. return (_ctx, _cache) => {
  72. return _ctx.nowrap ? (vue.openBlock(), vue.createBlock(vue.unref(forwardRef["default"]), {
  73. key: 0,
  74. "set-ref": setTriggerRef,
  75. "only-child": ""
  76. }, {
  77. default: vue.withCtx(() => [
  78. vue.renderSlot(_ctx.$slots, "default")
  79. ]),
  80. _: 3
  81. })) : (vue.openBlock(), vue.createElementBlock("button", vue.mergeProps({
  82. key: 1,
  83. ref_key: "triggerRef",
  84. ref: triggerRef
  85. }, _ctx.$attrs), [
  86. vue.renderSlot(_ctx.$slots, "default")
  87. ], 16));
  88. };
  89. }
  90. });
  91. var TooltipV2Trigger = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["__file", "trigger.vue"]]);
  92. exports["default"] = TooltipV2Trigger;
  93. //# sourceMappingURL=trigger2.js.map