2026-01-24 17:45:54 +03:30
|
|
|
<template>
|
|
|
|
|
<div>
|
|
|
|
|
<a-modal
|
|
|
|
|
v-model:visible="localValue"
|
|
|
|
|
:title="props.title"
|
2026-06-03 17:51:27 +03:30
|
|
|
:z-index="props.zIndex"
|
2026-01-24 17:45:54 +03:30
|
|
|
centered
|
|
|
|
|
@ok="emits('ok')"
|
|
|
|
|
@cancel="emits('close')"
|
|
|
|
|
@close="emits('close')"
|
|
|
|
|
:confirm-loading="props.confirmLoading"
|
|
|
|
|
:width="props.width"
|
|
|
|
|
:ok-text="props.okText"
|
|
|
|
|
:cancel-text="props.cancelText"
|
|
|
|
|
:wrapClassName="props.wrapClassName"
|
|
|
|
|
>
|
|
|
|
|
<template v-if="props.customFooter" #footer>
|
|
|
|
|
<slot name="footer" />
|
|
|
|
|
</template>
|
|
|
|
|
<a-spin :spinning="props.loading">
|
|
|
|
|
<div class="overflow-y-auto py-2 px-1 relative max-h-[80vh]" id="body">
|
|
|
|
|
<slot />
|
|
|
|
|
</div>
|
|
|
|
|
</a-spin>
|
|
|
|
|
</a-modal>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
2026-06-03 17:51:27 +03:30
|
|
|
import { MODAL_ABOVE_ACTION_SHEET_Z_INDEX } from '@/constants/overlayZIndex'
|
|
|
|
|
|
2026-01-24 17:45:54 +03:30
|
|
|
//define emit
|
|
|
|
|
const emits = defineEmits(['ok', 'close', 'update:visible'])
|
|
|
|
|
|
|
|
|
|
//define props
|
|
|
|
|
interface Prop {
|
|
|
|
|
visible: boolean
|
|
|
|
|
title?: string
|
|
|
|
|
okText?: string
|
|
|
|
|
width?: string
|
|
|
|
|
cancelText?: string
|
|
|
|
|
customFooter?: boolean
|
|
|
|
|
confirmLoading?: boolean
|
|
|
|
|
loading?: boolean
|
|
|
|
|
wrapClassName?: string
|
2026-06-03 17:51:27 +03:30
|
|
|
zIndex?: number
|
2026-01-24 17:45:54 +03:30
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const props = withDefaults(defineProps<Prop>(), {
|
|
|
|
|
visible: false,
|
|
|
|
|
cancelText: 'انصراف',
|
|
|
|
|
okText: 'ثبت',
|
|
|
|
|
customFooter: false,
|
|
|
|
|
confirmLoading: false,
|
|
|
|
|
loading: false,
|
2026-06-03 17:51:27 +03:30
|
|
|
wrapClassName: '',
|
|
|
|
|
zIndex: MODAL_ABOVE_ACTION_SHEET_Z_INDEX
|
2026-01-24 17:45:54 +03:30
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const localValue = computed({
|
|
|
|
|
get() {
|
|
|
|
|
return props.visible
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
set(value) {
|
|
|
|
|
emits('update:visible', value)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
.ant-modal-content {
|
|
|
|
|
border-radius: 0.6rem;
|
|
|
|
|
padding-top: 0.5rem;
|
|
|
|
|
}
|
|
|
|
|
</style>
|