feat(naive-ui): 添加 Modal 命令式 API 支持并完善类型声明
This commit is contained in:
@@ -13,6 +13,7 @@ const themeOverrides: GlobalThemeOverrides = {
|
|||||||
|
|
||||||
const ContextHolder: FunctionalComponent = () => {
|
const ContextHolder: FunctionalComponent = () => {
|
||||||
window.$nLoadingBar = useLoadingBar();
|
window.$nLoadingBar = useLoadingBar();
|
||||||
|
window.$nModal = useModal();
|
||||||
window.$nDialog = useDialog();
|
window.$nDialog = useDialog();
|
||||||
window.$nMessage = useMessage();
|
window.$nMessage = useMessage();
|
||||||
window.$nNotification = useNotification();
|
window.$nNotification = useNotification();
|
||||||
@@ -24,6 +25,7 @@ const ContextHolder: FunctionalComponent = () => {
|
|||||||
declare global {
|
declare global {
|
||||||
export interface Window {
|
export interface Window {
|
||||||
$nLoadingBar?: import('naive-ui').LoadingBarProviderInst;
|
$nLoadingBar?: import('naive-ui').LoadingBarProviderInst;
|
||||||
|
$nModal?: import('naive-ui').ModalProviderInst;
|
||||||
$nDialog?: import('naive-ui').DialogProviderInst;
|
$nDialog?: import('naive-ui').DialogProviderInst;
|
||||||
$nMessage?: import('naive-ui').MessageProviderInst;
|
$nMessage?: import('naive-ui').MessageProviderInst;
|
||||||
$nNotification?: import('naive-ui').NotificationProviderInst;
|
$nNotification?: import('naive-ui').NotificationProviderInst;
|
||||||
@@ -41,15 +43,17 @@ declare global {
|
|||||||
:theme="appStore.isDark ? darkTheme : null"
|
:theme="appStore.isDark ? darkTheme : null"
|
||||||
abstract
|
abstract
|
||||||
>
|
>
|
||||||
<NLoadingBarProvider>
|
<n-loading-bar-provider>
|
||||||
<NDialogProvider>
|
<n-message-provider>
|
||||||
<NNotificationProvider>
|
<n-notification-provider>
|
||||||
<NMessageProvider>
|
<n-modal-provider>
|
||||||
<ContextHolder />
|
<n-dialog-provider>
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
</NMessageProvider>
|
<ContextHolder />
|
||||||
</NNotificationProvider>
|
</n-dialog-provider>
|
||||||
</NDialogProvider>
|
</n-modal-provider>
|
||||||
</NLoadingBarProvider>
|
</n-notification-provider>
|
||||||
|
</n-message-provider>
|
||||||
|
</n-loading-bar-provider>
|
||||||
</NConfigProvider>
|
</NConfigProvider>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useDialog, useMessage } from 'naive-ui';
|
import { useDialog, useMessage, useModal } from 'naive-ui';
|
||||||
import type { MessageType } from 'naive-ui';
|
import type { MessageType } from 'naive-ui';
|
||||||
|
|
||||||
definePage({ meta: {} });
|
definePage({ meta: {} });
|
||||||
|
|
||||||
const message = useMessage();
|
const message = useMessage();
|
||||||
const dialog = useDialog();
|
const dialog = useDialog();
|
||||||
|
const modal = useModal();
|
||||||
|
|
||||||
const messageTypes = ['info', 'success', 'warning', 'error', 'loading'] satisfies MessageType[];
|
const messageTypes = ['info', 'success', 'warning', 'error', 'loading'] satisfies MessageType[];
|
||||||
const dialogTypes = ['info', 'success', 'warning', 'error'] as const;
|
const dialogTypes = ['info', 'success', 'warning', 'error'] as const;
|
||||||
@@ -35,6 +36,23 @@ const openDialog = (type: (typeof dialogTypes)[number]) => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const openModal = () => {
|
||||||
|
modal.create({
|
||||||
|
title: '命令式 Modal 示例',
|
||||||
|
content: '这是一个命令式 API 创建的 Modal 示例,使用 preset="dialog"。',
|
||||||
|
preset: 'dialog',
|
||||||
|
maskClosable: false,
|
||||||
|
onPositiveClick: () => {
|
||||||
|
message.success('点击了确定');
|
||||||
|
},
|
||||||
|
onNegativeClick: () => {
|
||||||
|
message.error('点击了取消');
|
||||||
|
},
|
||||||
|
positiveText: '确定',
|
||||||
|
negativeText: '取消',
|
||||||
|
});
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -70,6 +88,12 @@ const openDialog = (type: (typeof dialogTypes)[number]) => {
|
|||||||
</NButton>
|
</NButton>
|
||||||
</NSpace>
|
</NSpace>
|
||||||
</NCard>
|
</NCard>
|
||||||
|
|
||||||
|
<NCard title="Modal 弹窗 (命令式 API)" class="mt-4">
|
||||||
|
<NSpace>
|
||||||
|
<NButton @click="openModal"> 打开 Modal </NButton>
|
||||||
|
</NSpace>
|
||||||
|
</NCard>
|
||||||
</NCard>
|
</NCard>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
Reference in New Issue
Block a user