From 9dd6abe54d5370f06a1a5b65fe291c2e8bf9055d Mon Sep 17 00:00:00 2001 From: tianwenjie Date: Mon, 18 Dec 2023 18:26:35 +0800 Subject: [PATCH] fix: drawer --- .changeset/stale-dots-speak.md | 5 +++++ src/drawer/drawer.service.ts | 37 +++++++++++++++++++++++----------- 2 files changed, 30 insertions(+), 12 deletions(-) create mode 100644 .changeset/stale-dots-speak.md diff --git a/.changeset/stale-dots-speak.md b/.changeset/stale-dots-speak.md new file mode 100644 index 000000000..ced2862e8 --- /dev/null +++ b/.changeset/stale-dots-speak.md @@ -0,0 +1,5 @@ +--- +'@alauda/ui': patch +--- + +- fix: no default config for using component mode diff --git a/src/drawer/drawer.service.ts b/src/drawer/drawer.service.ts index fada83d1e..caf19aa1b 100644 --- a/src/drawer/drawer.service.ts +++ b/src/drawer/drawer.service.ts @@ -8,14 +8,6 @@ import { DrawerRef } from './drawer-ref'; import { DrawerOptions, DrawerSize } from './types'; const DRAWER_OVERLAY_CLASS = 'aui-drawer-overlay'; -const DEFAULT_OPTIONS: DrawerOptions = { - size: DrawerSize.Medium, - offsetY: '0', - showClose: true, - hideOnClickOutside: false, - divider: true, - disposeWhenHide: true, -}; @Injectable() export class DrawerService< @@ -31,6 +23,15 @@ export class DrawerService< DrawerInternalComponent >; + private readonly DEFAULT_OPTIONS: DrawerOptions = { + size: DrawerSize.Medium, + offsetY: '0', + showClose: true, + hideOnClickOutside: false, + divider: true, + disposeWhenHide: true, + }; + constructor(private readonly overlay: Overlay) {} open(options: DrawerOptions) { @@ -46,10 +47,7 @@ export class DrawerService< } updateOptions(options: DrawerOptions): void { - this.options = { - ...(DEFAULT_OPTIONS as DrawerOptions), - ...options, - }; + this.options = merge>(this.DEFAULT_OPTIONS, options); } private createOverlay() { @@ -135,3 +133,18 @@ export class DrawerService< this.dispose(); } } + +function merge(target: T, source: T) { + return Object.keys(source).reduce( + (acc, _key) => { + const key = _key as keyof T; + if (source[key] !== undefined) { + acc[key] = source[key]; + } + return acc; + }, + { + ...target, + }, + ); +}