DialogWrap.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _vue = require("vue");
  8. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  9. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  10. var _Dialog = _interopRequireDefault(require("./Dialog"));
  11. var _IDialogPropTypes = _interopRequireDefault(require("./IDialogPropTypes"));
  12. var _PortalWrapper = _interopRequireDefault(require("../_util/PortalWrapper"));
  13. var _context = require("../vc-trigger/context");
  14. var _propsUtil = require("../_util/props-util");
  15. const IDialogPropTypes = (0, _IDialogPropTypes.default)();
  16. const DialogWrap = (0, _vue.defineComponent)({
  17. compatConfig: {
  18. MODE: 3
  19. },
  20. name: 'DialogWrap',
  21. inheritAttrs: false,
  22. props: (0, _propsUtil.initDefaultProps)(IDialogPropTypes, {
  23. visible: false
  24. }),
  25. setup(props, _ref) {
  26. let {
  27. attrs,
  28. slots
  29. } = _ref;
  30. const animatedVisible = (0, _vue.ref)(props.visible);
  31. (0, _context.useProvidePortal)({}, {
  32. inTriggerContext: false
  33. });
  34. (0, _vue.watch)(() => props.visible, () => {
  35. if (props.visible) {
  36. animatedVisible.value = true;
  37. }
  38. }, {
  39. flush: 'post'
  40. });
  41. return () => {
  42. const {
  43. visible,
  44. getContainer,
  45. forceRender,
  46. destroyOnClose = false,
  47. afterClose
  48. } = props;
  49. let dialogProps = (0, _extends2.default)((0, _extends2.default)((0, _extends2.default)({}, props), attrs), {
  50. ref: '_component',
  51. key: 'dialog'
  52. });
  53. // 渲染在当前 dom 里;
  54. if (getContainer === false) {
  55. return (0, _vue.createVNode)(_Dialog.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, dialogProps), {}, {
  56. "getOpenCount": () => 2
  57. }), slots);
  58. }
  59. // Destroy on close will remove wrapped div
  60. if (!forceRender && destroyOnClose && !animatedVisible.value) {
  61. return null;
  62. }
  63. return (0, _vue.createVNode)(_PortalWrapper.default, {
  64. "autoLock": true,
  65. "visible": visible,
  66. "forceRender": forceRender,
  67. "getContainer": getContainer
  68. }, {
  69. default: childProps => {
  70. dialogProps = (0, _extends2.default)((0, _extends2.default)((0, _extends2.default)({}, dialogProps), childProps), {
  71. afterClose: () => {
  72. afterClose === null || afterClose === void 0 ? void 0 : afterClose();
  73. animatedVisible.value = false;
  74. }
  75. });
  76. return (0, _vue.createVNode)(_Dialog.default, dialogProps, slots);
  77. }
  78. });
  79. };
  80. }
  81. });
  82. var _default = exports.default = DialogWrap;