overlay.mjs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { defineComponent, createVNode, renderSlot, h } from 'vue';
  2. import { useSameTarget } from '../../../hooks/use-same-target/index.mjs';
  3. import { PatchFlags } from '../../../utils/vue/vnode.mjs';
  4. import { buildProps, definePropType } from '../../../utils/vue/props/runtime.mjs';
  5. import { useNamespace } from '../../../hooks/use-namespace/index.mjs';
  6. const overlayProps = buildProps({
  7. mask: {
  8. type: Boolean,
  9. default: true
  10. },
  11. customMaskEvent: Boolean,
  12. overlayClass: {
  13. type: definePropType([
  14. String,
  15. Array,
  16. Object
  17. ])
  18. },
  19. zIndex: {
  20. type: definePropType([String, Number])
  21. }
  22. });
  23. const overlayEmits = {
  24. click: (evt) => evt instanceof MouseEvent
  25. };
  26. const BLOCK = "overlay";
  27. var Overlay = defineComponent({
  28. name: "ElOverlay",
  29. props: overlayProps,
  30. emits: overlayEmits,
  31. setup(props, { slots, emit }) {
  32. const ns = useNamespace(BLOCK);
  33. const onMaskClick = (e) => {
  34. emit("click", e);
  35. };
  36. const { onClick, onMousedown, onMouseup } = useSameTarget(props.customMaskEvent ? void 0 : onMaskClick);
  37. return () => {
  38. return props.mask ? createVNode("div", {
  39. class: [ns.b(), props.overlayClass],
  40. style: {
  41. zIndex: props.zIndex
  42. },
  43. onClick,
  44. onMousedown,
  45. onMouseup
  46. }, [renderSlot(slots, "default")], PatchFlags.STYLE | PatchFlags.CLASS | PatchFlags.PROPS, ["onClick", "onMouseup", "onMousedown"]) : h("div", {
  47. class: props.overlayClass,
  48. style: {
  49. zIndex: props.zIndex,
  50. position: "fixed",
  51. top: "0px",
  52. right: "0px",
  53. bottom: "0px",
  54. left: "0px"
  55. }
  56. }, [renderSlot(slots, "default")]);
  57. };
  58. }
  59. });
  60. export { Overlay as default, overlayEmits, overlayProps };
  61. //# sourceMappingURL=overlay.mjs.map