index.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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 _interface = require("./interface");
  11. var _Mask = _interopRequireDefault(require("./Mask"));
  12. var _MobilePopupInner = _interopRequireDefault(require("./MobilePopupInner"));
  13. var _PopupInner = _interopRequireDefault(require("./PopupInner"));
  14. var _default = exports.default = (0, _vue.defineComponent)({
  15. compatConfig: {
  16. MODE: 3
  17. },
  18. name: 'Popup',
  19. inheritAttrs: false,
  20. props: _interface.popupProps,
  21. setup(props, _ref) {
  22. let {
  23. attrs,
  24. slots,
  25. expose
  26. } = _ref;
  27. const innerVisible = (0, _vue.shallowRef)(false);
  28. const inMobile = (0, _vue.shallowRef)(false);
  29. const popupRef = (0, _vue.shallowRef)();
  30. const rootRef = (0, _vue.shallowRef)();
  31. (0, _vue.watch)([() => props.visible, () => props.mobile], () => {
  32. innerVisible.value = props.visible;
  33. if (props.visible && props.mobile) {
  34. inMobile.value = true;
  35. }
  36. }, {
  37. immediate: true,
  38. flush: 'post'
  39. });
  40. expose({
  41. forceAlign: () => {
  42. var _a;
  43. (_a = popupRef.value) === null || _a === void 0 ? void 0 : _a.forceAlign();
  44. },
  45. getElement: () => {
  46. var _a;
  47. return (_a = popupRef.value) === null || _a === void 0 ? void 0 : _a.getElement();
  48. }
  49. });
  50. return () => {
  51. const cloneProps = (0, _extends2.default)((0, _extends2.default)((0, _extends2.default)({}, props), attrs), {
  52. visible: innerVisible.value
  53. });
  54. const popupNode = inMobile.value ? (0, _vue.createVNode)(_MobilePopupInner.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, cloneProps), {}, {
  55. "mobile": props.mobile,
  56. "ref": popupRef
  57. }), {
  58. default: slots.default
  59. }) : (0, _vue.createVNode)(_PopupInner.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, cloneProps), {}, {
  60. "ref": popupRef
  61. }), {
  62. default: slots.default
  63. });
  64. return (0, _vue.createVNode)("div", {
  65. "ref": rootRef
  66. }, [(0, _vue.createVNode)(_Mask.default, cloneProps, null), popupNode]);
  67. };
  68. }
  69. });