trigger2.mjs 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { defineComponent, inject, ref, toRef, openBlock, createBlock, unref, normalizeClass, withCtx, renderSlot } from 'vue';
  2. import '../../popper/index.mjs';
  3. import { TOOLTIP_INJECTION_KEY } from './constants.mjs';
  4. import { useTooltipTriggerProps } from './trigger.mjs';
  5. import { whenTrigger } from './utils.mjs';
  6. import _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';
  7. import ElPopperTrigger from '../../popper/src/trigger2.mjs';
  8. import { composeEventHandlers } from '../../../utils/dom/event.mjs';
  9. import { useNamespace } from '../../../hooks/use-namespace/index.mjs';
  10. const __default__ = defineComponent({
  11. name: "ElTooltipTrigger"
  12. });
  13. const _sfc_main = /* @__PURE__ */ defineComponent({
  14. ...__default__,
  15. props: useTooltipTriggerProps,
  16. setup(__props, { expose }) {
  17. const props = __props;
  18. const ns = useNamespace("tooltip");
  19. const { controlled, id, open, onOpen, onClose, onToggle } = inject(TOOLTIP_INJECTION_KEY, void 0);
  20. const triggerRef = ref(null);
  21. const stopWhenControlledOrDisabled = () => {
  22. if (unref(controlled) || props.disabled) {
  23. return true;
  24. }
  25. };
  26. const trigger = toRef(props, "trigger");
  27. const onMouseenter = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "hover", onOpen));
  28. const onMouseleave = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "hover", onClose));
  29. const onClick = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "click", (e) => {
  30. if (e.button === 0) {
  31. onToggle(e);
  32. }
  33. }));
  34. const onFocus = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "focus", onOpen));
  35. const onBlur = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "focus", onClose));
  36. const onContextMenu = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "contextmenu", (e) => {
  37. e.preventDefault();
  38. onToggle(e);
  39. }));
  40. const onKeydown = composeEventHandlers(stopWhenControlledOrDisabled, (e) => {
  41. const { code } = e;
  42. if (props.triggerKeys.includes(code)) {
  43. e.preventDefault();
  44. onToggle(e);
  45. }
  46. });
  47. expose({
  48. triggerRef
  49. });
  50. return (_ctx, _cache) => {
  51. return openBlock(), createBlock(unref(ElPopperTrigger), {
  52. id: unref(id),
  53. "virtual-ref": _ctx.virtualRef,
  54. open: unref(open),
  55. "virtual-triggering": _ctx.virtualTriggering,
  56. class: normalizeClass(unref(ns).e("trigger")),
  57. onBlur: unref(onBlur),
  58. onClick: unref(onClick),
  59. onContextmenu: unref(onContextMenu),
  60. onFocus: unref(onFocus),
  61. onMouseenter: unref(onMouseenter),
  62. onMouseleave: unref(onMouseleave),
  63. onKeydown: unref(onKeydown)
  64. }, {
  65. default: withCtx(() => [
  66. renderSlot(_ctx.$slots, "default")
  67. ]),
  68. _: 3
  69. }, 8, ["id", "virtual-ref", "open", "virtual-triggering", "class", "onBlur", "onClick", "onContextmenu", "onFocus", "onMouseenter", "onMouseleave", "onKeydown"]);
  70. };
  71. }
  72. });
  73. var ElTooltipTrigger = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "trigger.vue"]]);
  74. export { ElTooltipTrigger as default };
  75. //# sourceMappingURL=trigger2.mjs.map