From 91855db70aee440fa0b09264a18f5bc6c6f14240 Mon Sep 17 00:00:00 2001 From: EnochGao Date: Thu, 1 Jun 2023 11:25:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20safeNull=E6=94=AF=E6=8C=81=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- devui/common/safe-null.pipe.ts | 12 ++++++++---- devui/utils/globalConfig/config.service.ts | 3 ++- devui/utils/globalConfig/config.ts | 2 ++ src/assets/i18n/en-us.json | 4 ++-- src/assets/i18n/zh-cn.json | 4 ++-- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/devui/common/safe-null.pipe.ts b/devui/common/safe-null.pipe.ts index ec795699..d0193fcb 100644 --- a/devui/common/safe-null.pipe.ts +++ b/devui/common/safe-null.pipe.ts @@ -1,12 +1,16 @@ -import { Pipe, PipeTransform } from '@angular/core'; +import { Pipe, PipeTransform, inject } from '@angular/core'; +import { DevConfigService, WithConfig } from 'ng-devui/utils'; @Pipe({ name: 'dSafeNullPipe', -}) + }) export class SafeNullPipe implements PipeTransform { - transform(value: unknown, replace = '--'): unknown { + @WithConfig() private placeholder = '--'; + private devConfigService: DevConfigService = inject(DevConfigService); + + transform(value: unknown, placeholder = this.placeholder): unknown { if (typeof value === 'undefined' || value === null || value === '') { - return replace; + return placeholder; } return value; } diff --git a/devui/utils/globalConfig/config.service.ts b/devui/utils/globalConfig/config.service.ts index 700ceb78..7dce8877 100644 --- a/devui/utils/globalConfig/config.service.ts +++ b/devui/utils/globalConfig/config.service.ts @@ -8,7 +8,7 @@ const isDefined = function (value?: any): boolean { }; @Injectable({ providedIn: 'root', -}) + }) export class DevConfigService { private configUpdated$ = new Subject(); private config: DevUIGlobalConfig; @@ -61,6 +61,7 @@ export function WithConfig(propertyKey?: T | string) { let name = this.constructor.name; name = name.replace('Directive', ''); name = name.replace('Component', ''); + name = name.replace('Pipe', ''); name = name.toLowerCase(); const componentConfig = this.devConfigService.config[name] || {}; diff --git a/devui/utils/globalConfig/config.ts b/devui/utils/globalConfig/config.ts index 22cfb575..bf9488ef 100644 --- a/devui/utils/globalConfig/config.ts +++ b/devui/utils/globalConfig/config.ts @@ -28,6 +28,7 @@ export type TagsinputConfig = IGlobalConfig; export type TimepickerConfig = IGlobalConfig; export type CheckboxConfig = IGlobalConfig; export type TypographyConfig = IGlobalConfig; +export type SafeNullConfig = { placeholder: string }; export interface DevUIGlobalConfig { tooltip?: TooltipConfig; dropdown?: DropdownConfig; @@ -52,6 +53,7 @@ export interface DevUIGlobalConfig { checkboxgroup?: CheckboxConfig; panel?: PanelConfig; typography?: TypographyConfig; + safenull?: SafeNullConfig; global?: GlobalConfig; } diff --git a/src/assets/i18n/en-us.json b/src/assets/i18n/en-us.json index f329beb8..981208d2 100644 --- a/src/assets/i18n/en-us.json +++ b/src/assets/i18n/en-us.json @@ -888,7 +888,7 @@ }, "dSafeNullPipe": { "title": "SafeNullPipe", - "description": "When the data is '', null, undefined can be specified any character placeholder display, the default is: '--'" + "description": "When the data is '', null, undefined can be specified any character placeholder display,support for global configuration the default is: '--'" } }, "browserDemo": { @@ -4496,4 +4496,4 @@ "group": "Wechat Group", "tabDesign": "Design" } -} \ No newline at end of file +} diff --git a/src/assets/i18n/zh-cn.json b/src/assets/i18n/zh-cn.json index a63af0b7..65d2ae67 100644 --- a/src/assets/i18n/zh-cn.json +++ b/src/assets/i18n/zh-cn.json @@ -1131,7 +1131,7 @@ }, "dSafeNullPipe": { "title": "空值占位管道", - "description": "当数据为 ''、null、undefined时可指定任意字符进行占位展示,默认为:'--'" + "description": "当数据为 ''、null、undefined时可指定任意字符进行占位展示,支持全局配置,默认为:'--'" } }, "browserDemo": { @@ -5016,4 +5016,4 @@ "group": "官方交流群", "tabDesign": "设计" } -} \ No newline at end of file +}