mirror of
https://github.com/vbenjs/vue-vben-admin.git
synced 2025-02-02 18:28:40 +08:00
perf: modal and drawer api support chain calls (#5351)
* perf: modal and drawer api support chain calls * fix: typo
This commit is contained in:
parent
b8bffd884c
commit
1a04a05b79
@ -133,13 +133,13 @@ const [Drawer, drawerApi] = useVbenDrawer({
|
|||||||
| close-icon | 关闭按钮图标 |
|
| close-icon | 关闭按钮图标 |
|
||||||
| extra | 额外内容(标题右侧) |
|
| extra | 额外内容(标题右侧) |
|
||||||
|
|
||||||
### modalApi
|
### drawerApi
|
||||||
|
|
||||||
| 事件名 | 描述 | 类型 |
|
| 方法 | 描述 | 类型 |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| setState | 动态设置弹窗状态属性 | `setState(props) \| setState((prev)=>(props))` |
|
| setState | 动态设置弹窗状态属性 | `(((prev: ModalState) => Partial<ModalState>)\| Partial<ModalState>)=>drawerApi` |
|
||||||
| open | 打开弹窗 | `()=>void` |
|
| open | 打开弹窗 | `()=>void` |
|
||||||
| close | 关闭弹窗 | `()=>void` |
|
| close | 关闭弹窗 | `()=>void` |
|
||||||
| setData | 设置共享数据 | `<T>(data:T)=>void` |
|
| setData | 设置共享数据 | `<T>(data:T)=>drawerApi` |
|
||||||
| getData | 获取共享数据 | `<T>()=>T` |
|
| getData | 获取共享数据 | `<T>()=>T` |
|
||||||
| useStore | 获取可响应式状态 | - |
|
| useStore | 获取可响应式状态 | - |
|
||||||
|
@ -143,11 +143,11 @@ const [Modal, modalApi] = useVbenModal({
|
|||||||
|
|
||||||
### modalApi
|
### modalApi
|
||||||
|
|
||||||
| 事件名 | 描述 | 类型 |
|
| 方法 | 描述 | 类型 |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| setState | 动态设置弹窗状态属性 | `setState(props) \| setState((prev)=>(props))` |
|
| setState | 动态设置弹窗状态属性 | `(((prev: ModalState) => Partial<ModalState>)\| Partial<ModalState>)=>modalApi` |
|
||||||
| open | 打开弹窗 | `()=>void` |
|
| open | 打开弹窗 | `()=>void` |
|
||||||
| close | 关闭弹窗 | `()=>void` |
|
| close | 关闭弹窗 | `()=>void` |
|
||||||
| setData | 设置共享数据 | `<T>(data:T)=>void` |
|
| setData | 设置共享数据 | `<T>(data:T)=>modalApi` |
|
||||||
| getData | 获取共享数据 | `<T>()=>T` |
|
| getData | 获取共享数据 | `<T>()=>T` |
|
||||||
| useStore | 获取可响应式状态 | - |
|
| useStore | 获取可响应式状态 | - |
|
||||||
|
@ -13,8 +13,7 @@ function open() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function handleUpdateTitle() {
|
function handleUpdateTitle() {
|
||||||
drawerApi.setState({ title: '外部动态标题' });
|
drawerApi.setState({ title: '外部动态标题' }).open();
|
||||||
drawerApi.open();
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -9,11 +9,12 @@ const [Drawer, drawerApi] = useVbenDrawer({
|
|||||||
});
|
});
|
||||||
|
|
||||||
function open() {
|
function open() {
|
||||||
drawerApi.setData({
|
drawerApi
|
||||||
|
.setData({
|
||||||
content: '外部传递的数据 content',
|
content: '外部传递的数据 content',
|
||||||
payload: '外部传递的数据 payload',
|
payload: '外部传递的数据 payload',
|
||||||
});
|
})
|
||||||
drawerApi.open();
|
.open();
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -13,8 +13,7 @@ function openModal() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function handleUpdateTitle() {
|
function handleUpdateTitle() {
|
||||||
modalApi.setState({ title: '外部动态标题' });
|
modalApi.setState({ title: '外部动态标题' }).open();
|
||||||
modalApi.open();
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -9,11 +9,12 @@ const [Modal, modalApi] = useVbenModal({
|
|||||||
});
|
});
|
||||||
|
|
||||||
function openModal() {
|
function openModal() {
|
||||||
modalApi.setData({
|
modalApi
|
||||||
|
.setData({
|
||||||
content: '外部传递的数据 content',
|
content: '外部传递的数据 content',
|
||||||
payload: '外部传递的数据 payload',
|
payload: '外部传递的数据 payload',
|
||||||
});
|
})
|
||||||
modalApi.open();
|
.open();
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -141,6 +141,7 @@ export class DrawerApi {
|
|||||||
|
|
||||||
setData<T>(payload: T) {
|
setData<T>(payload: T) {
|
||||||
this.sharedData.payload = payload;
|
this.sharedData.payload = payload;
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
setState(
|
setState(
|
||||||
@ -153,5 +154,6 @@ export class DrawerApi {
|
|||||||
} else {
|
} else {
|
||||||
this.store.setState((prev) => ({ ...prev, ...stateOrFn }));
|
this.store.setState((prev) => ({ ...prev, ...stateOrFn }));
|
||||||
}
|
}
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -151,6 +151,7 @@ export class ModalApi {
|
|||||||
|
|
||||||
setData<T>(payload: T) {
|
setData<T>(payload: T) {
|
||||||
this.sharedData.payload = payload;
|
this.sharedData.payload = payload;
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
setState(
|
setState(
|
||||||
@ -163,5 +164,6 @@ export class ModalApi {
|
|||||||
} else {
|
} else {
|
||||||
this.store.setState((prev) => ({ ...prev, ...stateOrFn }));
|
this.store.setState((prev) => ({ ...prev, ...stateOrFn }));
|
||||||
}
|
}
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type { DrawerPlacement } from '@vben/common-ui';
|
import type { DrawerPlacement, DrawerState } from '@vben/common-ui';
|
||||||
|
|
||||||
import { Page, useVbenDrawer } from '@vben/common-ui';
|
import { Page, useVbenDrawer } from '@vben/common-ui';
|
||||||
|
|
||||||
@ -42,25 +42,21 @@ const [FormDrawer, formDrawerApi] = useVbenDrawer({
|
|||||||
});
|
});
|
||||||
|
|
||||||
function openBaseDrawer(placement: DrawerPlacement = 'right') {
|
function openBaseDrawer(placement: DrawerPlacement = 'right') {
|
||||||
baseDrawerApi.setState({ placement });
|
baseDrawerApi.setState({ placement }).open();
|
||||||
baseDrawerApi.open();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function openInContentDrawer(placement: DrawerPlacement = 'right') {
|
function openInContentDrawer(placement: DrawerPlacement = 'right') {
|
||||||
inContentDrawerApi.setState({ class: '', placement });
|
const state: Partial<DrawerState> = { class: '', placement };
|
||||||
if (placement === 'top') {
|
if (placement === 'top') {
|
||||||
// 页面顶部区域的层级只有200,所以设置一个低于200的值,抽屉从顶部滑出来的时候才比较合适
|
// 页面顶部区域的层级只有200,所以设置一个低于200的值,抽屉从顶部滑出来的时候才比较合适
|
||||||
inContentDrawerApi.setState({ zIndex: 199 });
|
state.zIndex = 199;
|
||||||
} else {
|
|
||||||
inContentDrawerApi.setState({ zIndex: undefined });
|
|
||||||
}
|
}
|
||||||
inContentDrawerApi.open();
|
inContentDrawerApi.setState(state).open();
|
||||||
}
|
}
|
||||||
|
|
||||||
function openMaxContentDrawer() {
|
function openMaxContentDrawer() {
|
||||||
// 这里只是用来演示方便。实际上自己使用的时候可以直接将这些配置卸载Drawer的属性里
|
// 这里只是用来演示方便。实际上自己使用的时候可以直接将这些配置卸载Drawer的属性里
|
||||||
inContentDrawerApi.setState({ class: 'w-full', placement: 'right' });
|
inContentDrawerApi.setState({ class: 'w-full', placement: 'right' }).open();
|
||||||
inContentDrawerApi.open();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function openAutoHeightDrawer() {
|
function openAutoHeightDrawer() {
|
||||||
@ -72,24 +68,25 @@ function openDynamicDrawer() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function handleUpdateTitle() {
|
function handleUpdateTitle() {
|
||||||
dynamicDrawerApi.setState({ title: '外部动态标题' });
|
dynamicDrawerApi.setState({ title: '外部动态标题' }).open();
|
||||||
dynamicDrawerApi.open();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function openSharedDrawer() {
|
function openSharedDrawer() {
|
||||||
sharedDrawerApi.setData({
|
sharedDrawerApi
|
||||||
|
.setData({
|
||||||
content: '外部传递的数据 content',
|
content: '外部传递的数据 content',
|
||||||
payload: '外部传递的数据 payload',
|
payload: '外部传递的数据 payload',
|
||||||
});
|
})
|
||||||
sharedDrawerApi.open();
|
.open();
|
||||||
}
|
}
|
||||||
|
|
||||||
function openFormDrawer() {
|
function openFormDrawer() {
|
||||||
formDrawerApi.setData({
|
formDrawerApi
|
||||||
|
.setData({
|
||||||
// 表单值
|
// 表单值
|
||||||
values: { field1: 'abc', field2: '123' },
|
values: { field1: 'abc', field2: '123' },
|
||||||
});
|
})
|
||||||
formDrawerApi.open();
|
.open();
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -63,24 +63,25 @@ function openDynamicModal() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function openSharedModal() {
|
function openSharedModal() {
|
||||||
sharedModalApi.setData({
|
sharedModalApi
|
||||||
|
.setData({
|
||||||
content: '外部传递的数据 content',
|
content: '外部传递的数据 content',
|
||||||
payload: '外部传递的数据 payload',
|
payload: '外部传递的数据 payload',
|
||||||
});
|
})
|
||||||
sharedModalApi.open();
|
.open();
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleUpdateTitle() {
|
function handleUpdateTitle() {
|
||||||
dynamicModalApi.setState({ title: '外部动态标题' });
|
dynamicModalApi.setState({ title: '外部动态标题' }).open();
|
||||||
dynamicModalApi.open();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function openFormModal() {
|
function openFormModal() {
|
||||||
formModalApi.setData({
|
formModalApi
|
||||||
|
.setData({
|
||||||
// 表单值
|
// 表单值
|
||||||
values: { field1: 'abc' },
|
values: { field1: 'abc' },
|
||||||
});
|
})
|
||||||
formModalApi.open();
|
.open();
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user