DialogWrap.js 3.0 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 _Dialog = _interopRequireDefault(require("./Dialog"));
  10. var _IDialogPropTypes = _interopRequireDefault(require("./IDialogPropTypes"));
  11. var _PortalWrapper = _interopRequireDefault(require("../_util/PortalWrapper"));
  12. var _context = require("../vc-trigger/context");
  13. var _propsUtil = require("../_util/props-util");
  14. var IDialogPropTypes = (0, _IDialogPropTypes.default)();
  15. var DialogWrap = (0, _vue.defineComponent)({
  16. compatConfig: {
  17. MODE: 3
  18. },
  19. name: 'DialogWrap',
  20. inheritAttrs: false,
  21. props: (0, _propsUtil.initDefaultProps)(IDialogPropTypes, {
  22. visible: false
  23. }),
  24. setup: function setup(props, _ref) {
  25. var attrs = _ref.attrs,
  26. slots = _ref.slots;
  27. var animatedVisible = (0, _vue.ref)(props.visible);
  28. (0, _context.useProvidePortal)({}, {
  29. inTriggerContext: false
  30. });
  31. (0, _vue.watch)(function () {
  32. return props.visible;
  33. }, function () {
  34. if (props.visible) {
  35. animatedVisible.value = true;
  36. }
  37. }, {
  38. flush: 'post'
  39. });
  40. return function () {
  41. var visible = props.visible,
  42. getContainer = props.getContainer,
  43. forceRender = props.forceRender,
  44. _props$destroyOnClose = props.destroyOnClose,
  45. destroyOnClose = _props$destroyOnClose === void 0 ? false : _props$destroyOnClose,
  46. _afterClose = props.afterClose;
  47. var dialogProps = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), attrs), {}, {
  48. ref: '_component',
  49. key: 'dialog'
  50. });
  51. // 渲染在当前 dom 里;
  52. if (getContainer === false) {
  53. return (0, _vue.createVNode)(_Dialog.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, dialogProps), {}, {
  54. "getOpenCount": function getOpenCount() {
  55. return 2;
  56. }
  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. "visible": visible,
  65. "forceRender": forceRender,
  66. "getContainer": getContainer
  67. }, {
  68. default: function _default(childProps) {
  69. dialogProps = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, dialogProps), childProps), {}, {
  70. afterClose: function afterClose() {
  71. _afterClose === null || _afterClose === void 0 ? void 0 : _afterClose();
  72. animatedVisible.value = false;
  73. }
  74. });
  75. return (0, _vue.createVNode)(_Dialog.default, dialogProps, slots);
  76. }
  77. });
  78. };
  79. }
  80. });
  81. var _default2 = DialogWrap;
  82. exports.default = _default2;