From 5f07067efd96c90035341e5127859e294478ffce Mon Sep 17 00:00:00 2001 From: rex Date: Tue, 22 Sep 2020 20:16:19 +0800 Subject: [PATCH] fix(dialog): adjust type definition (#3630) fix #3587 --- packages/dialog/dialog.ts | 81 ++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 43 deletions(-) diff --git a/packages/dialog/dialog.ts b/packages/dialog/dialog.ts index 668243a6..3efce27e 100644 --- a/packages/dialog/dialog.ts +++ b/packages/dialog/dialog.ts @@ -1,6 +1,5 @@ let queue = []; -type DialogAction = 'confirm' | 'cancel'; type DialogOptions = { lang?: string; show?: boolean; @@ -36,27 +35,41 @@ type DialogOptions = { confirmButtonOpenType?: string; }; -interface Dialog { - (options: DialogOptions): Promise; - alert?: (options: DialogOptions) => Promise; - confirm?: (options: DialogOptions) => Promise; - close?: () => void; - stopLoading?: () => void; - install?: () => void; - setDefaultOptions?: (options: DialogOptions) => void; - resetDefaultOptions?: () => void; - defaultOptions?: DialogOptions; - currentOptions?: DialogOptions; -} +const defaultOptions: DialogOptions = { + show: false, + title: '', + width: null, + theme: 'default', + message: '', + zIndex: 100, + overlay: true, + selector: '#van-dialog', + className: '', + asyncClose: false, + transition: 'scale', + customStyle: '', + messageAlign: '', + overlayStyle: '', + confirmButtonText: '确认', + cancelButtonText: '取消', + showConfirmButton: true, + showCancelButton: false, + closeOnClickOverlay: false, + confirmButtonOpenType: '', +}; + +let currentOptions: DialogOptions = { ...defaultOptions }; function getContext() { const pages = getCurrentPages(); return pages[pages.length - 1]; } -const Dialog: Dialog = (options) => { +const Dialog = ( + options: DialogOptions +): Promise => { options = { - ...Dialog.currentOptions, + ...currentOptions, ...options, }; @@ -87,32 +100,9 @@ const Dialog: Dialog = (options) => { }); }; -Dialog.defaultOptions = { - show: false, - title: '', - width: null, - theme: 'default', - message: '', - zIndex: 100, - overlay: true, - selector: '#van-dialog', - className: '', - asyncClose: false, - transition: 'scale', - customStyle: '', - messageAlign: '', - overlayStyle: '', - confirmButtonText: '确认', - cancelButtonText: '取消', - showConfirmButton: true, - showCancelButton: false, - closeOnClickOverlay: false, - confirmButtonOpenType: '', -}; +Dialog.alert = (options: DialogOptions) => Dialog(options); -Dialog.alert = Dialog; - -Dialog.confirm = (options) => +Dialog.confirm = (options: DialogOptions) => Dialog({ showCancelButton: true, ...options, @@ -131,12 +121,17 @@ Dialog.stopLoading = () => { }); }; -Dialog.setDefaultOptions = (options) => { - Object.assign(Dialog.currentOptions, options); +Dialog.currentOptions = currentOptions; +Dialog.defaultOptions = defaultOptions; + +Dialog.setDefaultOptions = (options: DialogOptions) => { + currentOptions = { ...currentOptions, ...options }; + Dialog.currentOptions = currentOptions; }; Dialog.resetDefaultOptions = () => { - Dialog.currentOptions = { ...Dialog.defaultOptions }; + currentOptions = { ...defaultOptions }; + Dialog.currentOptions = currentOptions; }; Dialog.resetDefaultOptions();