Skip to content

Commit

Permalink
fix(comp:modal): use destroy in onOk
Browse files Browse the repository at this point in the history
  • Loading branch information
kovsu committed Mar 27, 2023
1 parent 7f91513 commit b48ca8d
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 5 deletions.
1 change: 0 additions & 1 deletion packages/components/modal/src/Modal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,6 @@ function useTrigger(props: ModalProps, setVisible: (value: boolean) => void) {
const okLoading = ref(false)
const ok = async (evt?: Event | unknown) => {
let result = callEmit(props.onOk, evt)
callEmit(props.onAfterClose)
if (isPromise(result)) {
okLoading.value = true
result = await result
Expand Down
16 changes: 12 additions & 4 deletions packages/components/modal/src/ModalProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
*/

import type { ModalInstance, ModalOptions, ModalRef } from './types'
import type { VKey } from '@idux/cdk/utils'
import type { MaybeArray, VKey } from '@idux/cdk/utils'

import { cloneVNode, defineComponent, isVNode, provide, shallowRef } from 'vue'

Expand All @@ -28,12 +28,20 @@ export default defineComponent({
return () => {
const children = modals.value.map(item => {
// The default value for `visible`, onDestroy should not be passed in Modal
const { key, visible = true, destroyOnHide, onDestroy, content, contentProps, ...restProps } = item
const { key, visible = true, destroyOnHide, onDestroy, content, contentProps, onOk, ...restProps } = item
const setRef = (instance: unknown) => setModalRef(key!, instance as ModalInstance | null)
const onUpdateVisible = (visible: boolean) => update(key!, { visible })
const onAfterClose = destroyOnHide ? () => destroy(key!) : undefined
const mergedProps = { key, visible, ref: setRef, 'onUpdate:visible': onUpdateVisible, onAfterClose }
const _onOk: MaybeArray<(evt?: unknown) => unknown> = [
() => {
destroy(key!)
},
]

if (onOk) {
Array.isArray(onOk) ? _onOk.unshift(...onOk) : _onOk.unshift(onOk)
}

const mergedProps = { key, visible, ref: setRef, 'onUpdate:visible': onUpdateVisible, onOk: _onOk }
const contentNode = isVNode(content) ? cloneVNode(content, contentProps, true) : content
return <Modal {...mergedProps} {...restProps} __content_node={contentNode} />
})
Expand Down

0 comments on commit b48ca8d

Please sign in to comment.