Skip to content

Commit 3b084ff

Browse files
committed
refactor: extract defineModal api
1 parent 0128e53 commit 3b084ff

File tree

1 file changed

+24
-12
lines changed

1 file changed

+24
-12
lines changed

packages/vue-final-modal/src/useApi.ts

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,18 @@ export function useInternalVfm(): InternalVfm {
1919
}
2020

2121
/**
22-
* Create a dynamic modal.
22+
* Define a dynamic modal.
2323
*/
24-
export function useModal<
24+
export function defineModal<
2525
ModalProps extends ComponentProps,
2626
DefaultSlotProps extends ComponentProps = {},
2727
>(_options?: UseModalOptions<ModalProps, DefaultSlotProps>): UseModalReturnType<ModalProps, DefaultSlotProps> {
28-
const { dynamicModals } = useVfm()
29-
3028
const options = reactive({
3129
id: Symbol('useModal'),
3230
modelValue: false,
3331
..._options,
3432
}) as UseModalOptionsPrivate<ModalProps, DefaultSlotProps>
3533

36-
dynamicModals.push(options)
37-
38-
onUnmounted(() => {
39-
const index = dynamicModals.indexOf(options)
40-
if (index !== -1)
41-
dynamicModals.splice(index, 1)
42-
})
43-
4434
function open(): Promise<string> {
4535
if (options.modelValue)
4636
return Promise.resolve('[Vue Final Modal] modal is already opened')
@@ -75,6 +65,28 @@ export function useModal<
7565
}
7666
}
7767

68+
/**
69+
* Create a dynamic modal.
70+
*/
71+
export function useModal<
72+
ModalProps extends ComponentProps,
73+
DefaultSlotProps extends ComponentProps = {},
74+
>(_options?: UseModalOptions<ModalProps, DefaultSlotProps>): UseModalReturnType<ModalProps, DefaultSlotProps> {
75+
const { dynamicModals } = useVfm()
76+
77+
const modal = defineModal(_options)
78+
79+
dynamicModals.push(modal.options)
80+
81+
onUnmounted(() => {
82+
const index = dynamicModals.indexOf(modal.options)
83+
if (index !== -1)
84+
dynamicModals.splice(index, 1)
85+
})
86+
87+
return modal
88+
}
89+
7890
export function pickModalProps(props: any, modalProps: any) {
7991
return Object.keys(modalProps).reduce((acc, propName) => {
8092
acc[propName] = props[propName]

0 commit comments

Comments
 (0)