Overlay.mjs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import { ref, defineComponent, Teleport, Transition, vShow as _vShow, createVNode as _createVNode, withDirectives as _withDirectives } from "vue";
  2. import { isDef, extend, truthProp, numericProp, unknownProp, preventDefault, createNamespace, getZIndexStyle } from "../utils/index.mjs";
  3. import { useEventListener } from "@vant/use";
  4. import { useLazyRender } from "../composables/use-lazy-render.mjs";
  5. const [name, bem] = createNamespace("overlay");
  6. const overlayProps = {
  7. show: Boolean,
  8. zIndex: numericProp,
  9. duration: numericProp,
  10. className: unknownProp,
  11. lockScroll: truthProp,
  12. lazyRender: truthProp,
  13. customStyle: Object,
  14. teleport: [String, Object]
  15. };
  16. var stdin_default = defineComponent({
  17. name,
  18. props: overlayProps,
  19. setup(props, {
  20. slots
  21. }) {
  22. const root = ref();
  23. const lazyRender = useLazyRender(() => props.show || !props.lazyRender);
  24. const onTouchMove = (event) => {
  25. if (props.lockScroll) {
  26. preventDefault(event, true);
  27. }
  28. };
  29. const renderOverlay = lazyRender(() => {
  30. var _a;
  31. const style = extend(getZIndexStyle(props.zIndex), props.customStyle);
  32. if (isDef(props.duration)) {
  33. style.animationDuration = `${props.duration}s`;
  34. }
  35. return _withDirectives(_createVNode("div", {
  36. "ref": root,
  37. "style": style,
  38. "class": [bem(), props.className]
  39. }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]), [[_vShow, props.show]]);
  40. });
  41. useEventListener("touchmove", onTouchMove, {
  42. target: root
  43. });
  44. return () => {
  45. const Content = _createVNode(Transition, {
  46. "name": "van-fade",
  47. "appear": true
  48. }, {
  49. default: renderOverlay
  50. });
  51. if (props.teleport) {
  52. return _createVNode(Teleport, {
  53. "to": props.teleport
  54. }, {
  55. default: () => [Content]
  56. });
  57. }
  58. return Content;
  59. };
  60. }
  61. });
  62. export {
  63. stdin_default as default,
  64. overlayProps
  65. };