context.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.useProvidePortal = exports.useInjectPortal = void 0;
  6. var _vue = require("vue");
  7. const PortalContextKey = Symbol('PortalContextKey');
  8. const useProvidePortal = function (instance) {
  9. let config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
  10. inTriggerContext: true
  11. };
  12. (0, _vue.provide)(PortalContextKey, {
  13. inTriggerContext: config.inTriggerContext,
  14. shouldRender: (0, _vue.computed)(() => {
  15. const {
  16. sPopupVisible,
  17. popupRef,
  18. forceRender,
  19. autoDestroy
  20. } = instance || {};
  21. // if (popPortal) return true;
  22. let shouldRender = false;
  23. if (sPopupVisible || popupRef || forceRender) {
  24. shouldRender = true;
  25. }
  26. if (!sPopupVisible && autoDestroy) {
  27. shouldRender = false;
  28. }
  29. return shouldRender;
  30. })
  31. });
  32. };
  33. exports.useProvidePortal = useProvidePortal;
  34. const useInjectPortal = () => {
  35. useProvidePortal({}, {
  36. inTriggerContext: false
  37. });
  38. const portalContext = (0, _vue.inject)(PortalContextKey, {
  39. shouldRender: (0, _vue.computed)(() => false),
  40. inTriggerContext: false
  41. });
  42. return {
  43. shouldRender: (0, _vue.computed)(() => portalContext.shouldRender.value || portalContext.inTriggerContext === false)
  44. };
  45. };
  46. exports.useInjectPortal = useInjectPortal;