From a8d5999d89880b6bfb8bf1f3dc1861a13e9ca4b8 Mon Sep 17 00:00:00 2001 From: uxuip <110730129+uxuip@users.noreply.github.com> Date: Mon, 19 Sep 2022 14:24:14 +0800 Subject: [PATCH] feat(Dialog): option context support function (#5043) --- packages/dialog/dialog.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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;