BasicModal.vue 755 B

123456789101112131415161718192021222324252627282930313233343536
  1. <template>
  2. <uni-popup v-bind="$attrs" ref="popup" @change="handleChange" :is-mask-click="isMack" :safe-area='false'>
  3. <slot></slot>
  4. </uni-popup>
  5. </template>
  6. <script setup>
  7. import { ref, computed, unref, watch } from 'vue';
  8. const props = defineProps({
  9. open: { type: Boolean, default: false },
  10. isMack: { type: Boolean, default: true }
  11. })
  12. const emit = defineEmits(['update:open'])
  13. const popup = ref()
  14. const getOpen = computed({
  15. get: () => props.open,
  16. set: val => emit('update:open', val)
  17. })
  18. watch(getOpen, (v) => {
  19. v && unref(popup).open()
  20. !v && unref(popup).close()
  21. })
  22. function handleChange({ show }){
  23. getOpen.value = show
  24. }
  25. </script>
  26. <style scoped lang="scss">
  27. :deep(.uni-popup) {
  28. z-index: 1000 !important;
  29. }
  30. </style>