index.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import _extends from "@babel/runtime/helpers/esm/extends";
  3. import { createVNode as _createVNode, resolveDirective as _resolveDirective } from "vue";
  4. import { defineComponent, shallowRef, watch } from 'vue';
  5. import { popupProps } from './interface';
  6. import Mask from './Mask';
  7. import MobilePopupInner from './MobilePopupInner';
  8. import PopupInner from './PopupInner';
  9. export default defineComponent({
  10. compatConfig: {
  11. MODE: 3
  12. },
  13. name: 'Popup',
  14. inheritAttrs: false,
  15. props: popupProps,
  16. setup(props, _ref) {
  17. let {
  18. attrs,
  19. slots,
  20. expose
  21. } = _ref;
  22. const innerVisible = shallowRef(false);
  23. const inMobile = shallowRef(false);
  24. const popupRef = shallowRef();
  25. const rootRef = shallowRef();
  26. watch([() => props.visible, () => props.mobile], () => {
  27. innerVisible.value = props.visible;
  28. if (props.visible && props.mobile) {
  29. inMobile.value = true;
  30. }
  31. }, {
  32. immediate: true,
  33. flush: 'post'
  34. });
  35. expose({
  36. forceAlign: () => {
  37. var _a;
  38. (_a = popupRef.value) === null || _a === void 0 ? void 0 : _a.forceAlign();
  39. },
  40. getElement: () => {
  41. var _a;
  42. return (_a = popupRef.value) === null || _a === void 0 ? void 0 : _a.getElement();
  43. }
  44. });
  45. return () => {
  46. const cloneProps = _extends(_extends(_extends({}, props), attrs), {
  47. visible: innerVisible.value
  48. });
  49. const popupNode = inMobile.value ? _createVNode(MobilePopupInner, _objectSpread(_objectSpread({}, cloneProps), {}, {
  50. "mobile": props.mobile,
  51. "ref": popupRef
  52. }), {
  53. default: slots.default
  54. }) : _createVNode(PopupInner, _objectSpread(_objectSpread({}, cloneProps), {}, {
  55. "ref": popupRef
  56. }), {
  57. default: slots.default
  58. });
  59. return _createVNode("div", {
  60. "ref": rootRef
  61. }, [_createVNode(Mask, cloneProps, null), popupNode]);
  62. };
  63. }
  64. });