diff --git a/packages/dialog/dialog.ts b/packages/dialog/dialog.ts index effa0037..db5b1be6 100644 --- a/packages/dialog/dialog.ts +++ b/packages/dialog/dialog.ts @@ -1,6 +1,10 @@ let queue: WechatMiniprogram.Component.TrivialInstance[] = []; export type Action = 'confirm' | 'cancel' | 'overlay'; +type DialogContext = + | WechatMiniprogram.Page.TrivialInstance + | WechatMiniprogram.Component.TrivialInstance; + interface DialogOptions { lang?: string; show?: boolean; @@ -8,9 +12,7 @@ interface DialogOptions { width?: string | number | null; zIndex?: number; theme?: string; - context?: - | WechatMiniprogram.Page.TrivialInstance - | WechatMiniprogram.Component.TrivialInstance; + context?: (() => DialogContext) | DialogContext; message?: string; overlay?: boolean; selector?: string; @@ -79,7 +81,10 @@ const Dialog = (options: DialogOptions) => { return new Promise( (resolve, reject) => { - const context = options.context || getContext(); + const context = + (typeof options.context === 'function' + ? options.context() + : options.context) || getContext(); const dialog = context.selectComponent(options.selector as string); delete options.context;