ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
1 lines • 23.4 kB
Source Map (JSON)
{"version":3,"file":"ng-zorro-antd-core-config.mjs","sources":["../../components/core/config/config.ts","../../components/core/config/css-variables.ts","../../components/core/config/config.service.ts","../../components/core/config/public-api.ts","../../components/core/config/ng-zorro-antd-core-config.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Direction } from '@angular/cdk/bidi';\nimport { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, TemplateRef, Type } from '@angular/core';\nimport { SafeUrl } from '@angular/platform-browser';\n\nimport { ThemeType } from '@ant-design/icons-angular';\n\nimport { NzBreakpointEnum } from 'ng-zorro-antd/core/services';\nimport {\n NzSafeAny,\n NzShapeSCType,\n NzSizeDSType,\n NzSizeLDSType,\n NzSizeMDSType,\n NzTSType\n} from 'ng-zorro-antd/core/types';\n\ninterface MonacoEnvironment {\n globalAPI?: boolean;\n baseUrl?: string;\n getWorker?(workerId: string, label: string): Promise<Worker> | Worker;\n getWorkerUrl?(workerId: string, label: string): string;\n}\n\nexport interface NzConfig {\n affix?: AffixConfig;\n select?: SelectConfig;\n alert?: AlertConfig;\n anchor?: AnchorConfig;\n avatar?: AvatarConfig;\n backTop?: BackTopConfig;\n badge?: BadgeConfig;\n button?: ButtonConfig;\n card?: CardConfig;\n carousel?: CarouselConfig;\n cascader?: CascaderConfig;\n codeEditor?: CodeEditorConfig;\n collapse?: CollapseConfig;\n collapsePanel?: CollapsePanelConfig;\n datePicker?: DatePickerConfig;\n descriptions?: DescriptionsConfig;\n drawer?: DrawerConfig;\n dropDown?: DropDownConfig;\n empty?: EmptyConfig;\n filterTrigger?: FilterTriggerConfig;\n form?: FormConfig;\n icon?: IconConfig;\n message?: MessageConfig;\n modal?: ModalConfig;\n notification?: NotificationConfig;\n pageHeader?: PageHeaderConfig;\n pagination?: PaginationConfig;\n progress?: ProgressConfig;\n rate?: RateConfig;\n segmented?: SegmentedConfig;\n space?: SpaceConfig;\n spin?: SpinConfig;\n switch?: SwitchConfig;\n table?: TableConfig;\n tabs?: TabsConfig;\n timePicker?: TimePickerConfig;\n tree?: TreeConfig;\n treeSelect?: TreeSelectConfig;\n typography?: TypographyConfig;\n image?: ImageConfig;\n popconfirm?: PopConfirmConfig;\n popover?: PopoverConfig;\n imageExperimental?: ImageExperimentalConfig;\n theme?: Theme;\n prefixCls?: PrefixCls;\n}\n\nexport interface PrefixCls {\n prefixCls?: string;\n iconPrefixCls?: string;\n}\n\nexport interface Theme {\n primaryColor?: string;\n infoColor?: string;\n successColor?: string;\n processingColor?: string;\n errorColor?: string;\n warningColor?: string;\n [key: string]: string | undefined;\n}\n\nexport interface SelectConfig {\n nzBorderless?: boolean;\n nzSuffixIcon?: TemplateRef<NzSafeAny> | string | null;\n nzBackdrop?: boolean;\n nzOptionHeightPx?: number;\n}\n\nexport interface AffixConfig {\n nzOffsetBottom?: number;\n nzOffsetTop?: number;\n}\n\nexport interface AlertConfig {\n nzCloseable?: boolean;\n nzShowIcon?: boolean;\n}\n\nexport interface AvatarConfig {\n nzShape?: NzShapeSCType;\n nzSize?: NzSizeLDSType | number;\n nzGap?: number;\n}\n\nexport interface AnchorConfig {\n nzBounds?: number;\n nzOffsetBottom?: number;\n nzOffsetTop?: number;\n nzShowInkInFixed?: boolean;\n}\n\nexport interface BackTopConfig {\n nzVisibilityHeight?: number;\n}\n\nexport interface BadgeConfig {\n nzColor?: number;\n nzOverflowCount?: number;\n nzShowZero?: number;\n}\n\nexport interface ButtonConfig {\n nzSize?: 'large' | 'default' | 'small';\n}\n\nexport interface CodeEditorConfig {\n assetsRoot?: string | SafeUrl;\n extraConfig?: NzSafeAny;\n defaultEditorOption?: NzSafeAny;\n useStaticLoading?: boolean;\n monacoEnvironment?: MonacoEnvironment;\n\n onLoad?(): void;\n\n onFirstEditorInit?(): void;\n\n onInit?(): void;\n}\n\nexport interface CardConfig {\n nzSize?: NzSizeDSType;\n nzHoverable?: boolean;\n nzBordered?: boolean;\n}\n\nexport interface CarouselConfig {\n nzAutoPlay?: boolean;\n nzAutoPlaySpeed?: boolean;\n nzDots?: boolean;\n nzEffect?: 'scrollx' | 'fade' | string;\n nzEnableSwipe?: boolean;\n nzVertical?: boolean;\n nzLoop?: boolean;\n}\n\nexport interface CascaderConfig {\n nzSize?: string;\n nzBackdrop?: boolean;\n}\n\nexport interface CollapseConfig {\n nzAccordion?: boolean;\n nzBordered?: boolean;\n nzGhost?: boolean;\n}\n\nexport interface CollapsePanelConfig {\n nzShowArrow?: boolean;\n}\n\nexport interface DatePickerConfig {\n nzSeparator?: string;\n nzSuffixIcon?: string | TemplateRef<NzSafeAny>;\n nzBackdrop?: boolean;\n}\n\nexport interface DescriptionsConfig {\n nzBordered?: boolean;\n nzColumn?: Partial<Record<NzBreakpointEnum, number>> | number;\n nzSize?: 'default' | 'middle' | 'small';\n nzColon?: boolean;\n}\n\nexport interface DrawerConfig {\n nzMask?: boolean;\n nzMaskClosable?: boolean;\n nzCloseOnNavigation?: boolean;\n nzDirection?: Direction;\n}\n\nexport interface DropDownConfig {\n nzBackdrop?: boolean;\n}\n\nexport interface EmptyConfig {\n nzDefaultEmptyContent?: Type<NzSafeAny> | TemplateRef<string> | string | undefined;\n}\n\nexport interface FilterTriggerConfig {\n nzBackdrop?: boolean;\n}\n\nexport interface FormConfig {\n nzNoColon?: boolean;\n nzAutoTips?: Record<string, Record<string, string>>;\n nzTooltipIcon?: string | { type: string; theme: ThemeType };\n}\n\nexport interface IconConfig {\n nzTheme?: 'fill' | 'outline' | 'twotone';\n nzTwotoneColor?: string;\n}\n\nexport interface MessageConfig {\n nzAnimate?: boolean;\n nzDuration?: number;\n nzMaxStack?: number;\n nzPauseOnHover?: boolean;\n nzTop?: number | string;\n nzDirection?: Direction;\n}\n\nexport interface ModalConfig {\n nzMask?: boolean;\n nzMaskClosable?: boolean;\n nzCloseOnNavigation?: boolean;\n nzDirection?: Direction;\n}\n\nexport interface NotificationConfig extends MessageConfig {\n nzTop?: string | number;\n nzBottom?: string | number;\n nzPlacement?: 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight' | 'top' | 'bottom';\n}\n\nexport interface PageHeaderConfig {\n nzGhost: boolean;\n}\n\nexport interface PaginationConfig {\n nzSize?: 'default' | 'small';\n nzPageSizeOptions?: number[];\n nzShowSizeChanger?: boolean;\n nzShowQuickJumper?: boolean;\n nzSimple?: boolean;\n}\n\nexport interface ProgressConfig {\n nzGapDegree?: number;\n nzGapPosition?: 'top' | 'right' | 'bottom' | 'left';\n nzShowInfo?: boolean;\n nzStrokeSwitch?: number;\n nzStrokeWidth?: number;\n nzSize?: 'default' | 'small';\n nzStrokeLinecap?: 'round' | 'square';\n nzStrokeColor?: string;\n}\n\nexport interface RateConfig {\n nzAllowClear?: boolean;\n nzAllowHalf?: boolean;\n}\n\nexport interface SegmentedConfig {\n nzSize?: NzSizeLDSType;\n}\n\nexport interface SpaceConfig {\n nzSize?: 'small' | 'middle' | 'large' | number;\n}\n\nexport interface SpinConfig {\n nzIndicator?: TemplateRef<NzSafeAny>;\n}\n\nexport interface SwitchConfig {\n nzSize: NzSizeDSType;\n}\n\nexport interface TableConfig {\n nzBordered?: boolean;\n nzSize?: NzSizeMDSType;\n nzShowQuickJumper?: boolean;\n nzLoadingIndicator?: TemplateRef<NzSafeAny>;\n nzShowSizeChanger?: boolean;\n nzSimple?: boolean;\n nzHideOnSinglePage?: boolean;\n /**\n * @see {@link NzTableSortOrder}\n */\n nzSortDirections?: Array<string | 'ascend' | 'descend' | null>;\n}\n\nexport interface TabsConfig {\n nzAnimated?:\n | boolean\n | {\n inkBar: boolean;\n tabPane: boolean;\n };\n nzSize?: NzSizeLDSType;\n nzType?: 'line' | 'card';\n nzTabBarGutter?: number;\n nzShowPagination?: boolean;\n}\n\nexport interface TimePickerConfig {\n nzAllowEmpty?: boolean;\n nzClearText?: string;\n nzNowText?: string;\n nzOkText?: string;\n nzFormat?: string;\n nzHourStep?: number;\n nzMinuteStep?: number;\n nzSecondStep?: number;\n nzPopupClassName?: string;\n nzUse12Hours?: string;\n nzSuffixIcon?: string | TemplateRef<NzSafeAny>;\n nzBackdrop?: boolean;\n}\n\nexport interface TreeConfig {\n nzBlockNode?: boolean;\n nzShowIcon?: boolean;\n nzHideUnMatched?: boolean;\n}\n\nexport interface TreeSelectConfig {\n nzShowIcon?: string;\n nzShowLine?: boolean;\n nzDropdownMatchSelectWidth?: boolean;\n nzHideUnMatched?: boolean;\n nzSize?: 'large' | 'small' | 'default';\n nzBackdrop?: boolean;\n}\n\nexport interface TypographyConfig {\n nzEllipsisRows?: number;\n nzCopyTooltips?: [NzTSType, NzTSType] | null;\n nzCopyIcons: [NzTSType, NzTSType];\n nzEditTooltip?: null | NzTSType;\n nzEditIcon: NzTSType;\n}\n\nexport interface ImageConfig {\n nzFallback?: string;\n nzPlaceholder?: string;\n nzDisablePreview?: string;\n nzCloseOnNavigation?: boolean;\n nzDirection?: Direction;\n nzScaleStep?: number;\n}\n\nexport interface ImageExperimentalConfig {\n nzFallback?: string;\n nzPlaceholder?: string;\n nzDisablePreview?: string;\n nzCloseOnNavigation?: boolean;\n nzDirection?: Direction;\n nzAutoSrcset?: boolean;\n nzSrcLoader?(params: { src: string; width: number }): string;\n}\n\nexport interface PopConfirmConfig {\n nzPopconfirmBackdrop?: boolean;\n nzAutofocus?: null | 'ok' | 'cancel';\n}\n\nexport interface PopoverConfig {\n nzPopoverBackdrop?: boolean;\n}\n\nexport type NzConfigKey = keyof NzConfig;\n\n/**\n * User should provide an object implements this interface to set global configurations.\n */\nexport const NZ_CONFIG = new InjectionToken<NzConfig>('nz-config');\n\nexport function provideNzConfig(config: NzConfig): EnvironmentProviders {\n return makeEnvironmentProviders([{ provide: NZ_CONFIG, useValue: config }]);\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Sync from @ant-design/colors(https://github.com/ant-design/ant-design-colors)\n */\nimport { TinyColor } from '@ctrl/tinycolor';\n\nimport { generate } from 'ng-zorro-antd/core/color';\nimport { warn } from 'ng-zorro-antd/core/logger';\nimport { canUseDom, updateCSS } from 'ng-zorro-antd/core/util';\n\nimport { Theme } from './config';\n\nconst dynamicStyleMark = `-ant-${Date.now()}-${Math.random()}`;\n\nexport function getStyle(globalPrefixCls: string, theme: Theme): string {\n const variables: Record<string, string> = {};\n\n const formatColor = (color: TinyColor, updater?: (cloneColor: TinyColor) => TinyColor | undefined): string => {\n let clone = color.clone();\n clone = updater?.(clone) || clone;\n return clone.toRgbString();\n };\n\n const fillColor = (colorVal: string, type: string): void => {\n const baseColor = new TinyColor(colorVal);\n const colorPalettes = generate(baseColor.toRgbString());\n\n variables[`${type}-color`] = formatColor(baseColor);\n variables[`${type}-color-disabled`] = colorPalettes[1];\n variables[`${type}-color-hover`] = colorPalettes[4];\n variables[`${type}-color-active`] = colorPalettes[7];\n variables[`${type}-color-outline`] = baseColor.clone().setAlpha(0.2).toRgbString();\n variables[`${type}-color-deprecated-bg`] = colorPalettes[1];\n variables[`${type}-color-deprecated-border`] = colorPalettes[3];\n };\n\n // ================ Primary Color ================\n if (theme.primaryColor) {\n fillColor(theme.primaryColor, 'primary');\n\n const primaryColor = new TinyColor(theme.primaryColor);\n const primaryColors = generate(primaryColor.toRgbString());\n\n // Legacy - We should use semantic naming standard\n primaryColors.forEach((color, index) => {\n variables[`primary-${index + 1}`] = color;\n });\n // Deprecated\n variables['primary-color-deprecated-l-35'] = formatColor(primaryColor, c => c.lighten(35));\n variables['primary-color-deprecated-l-20'] = formatColor(primaryColor, c => c.lighten(20));\n variables['primary-color-deprecated-t-20'] = formatColor(primaryColor, c => c.tint(20));\n variables['primary-color-deprecated-t-50'] = formatColor(primaryColor, c => c.tint(50));\n variables['primary-color-deprecated-f-12'] = formatColor(primaryColor, c => c.setAlpha(c.getAlpha() * 0.12));\n\n const primaryActiveColor = new TinyColor(primaryColors[0]);\n variables['primary-color-active-deprecated-f-30'] = formatColor(primaryActiveColor, c =>\n c.setAlpha(c.getAlpha() * 0.3)\n );\n variables['primary-color-active-deprecated-d-02'] = formatColor(primaryActiveColor, c => c.darken(2));\n }\n\n // ================ Success Color ================\n if (theme.successColor) {\n fillColor(theme.successColor, 'success');\n }\n\n // ================ Warning Color ================\n if (theme.warningColor) {\n fillColor(theme.warningColor, 'warning');\n }\n\n // ================= Error Color =================\n if (theme.errorColor) {\n fillColor(theme.errorColor, 'error');\n }\n\n // ================= Info Color ==================\n if (theme.infoColor) {\n fillColor(theme.infoColor, 'info');\n }\n\n // Convert to css variables\n const cssList = Object.keys(variables).map(key => `--${globalPrefixCls}-${key}: ${variables[key]};`);\n\n return `\n :root {\n ${cssList.join('\\n')}\n }\n `.trim();\n}\n\nexport function registerTheme(globalPrefixCls: string, theme: Theme, cspNonce: string | null | undefined): void {\n const style = getStyle(globalPrefixCls, theme);\n\n if (canUseDom()) {\n updateCSS(style, `${dynamicStyleMark}-dynamic-theme`, { cspNonce });\n } else {\n warn(`NzConfigService: SSR do not support dynamic theme with css variables.`);\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { CSP_NONCE, Injectable, inject } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { NZ_CONFIG, NzConfig, NzConfigKey } from './config';\nimport { registerTheme } from './css-variables';\n\nconst isDefined = function (value?: NzSafeAny): boolean {\n return value !== undefined;\n};\n\nconst defaultPrefixCls = 'ant';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NzConfigService {\n private configUpdated$ = new Subject<keyof NzConfig>();\n\n /** Global config holding property. */\n private readonly config: NzConfig = inject(NZ_CONFIG, { optional: true }) || {};\n\n private readonly cspNonce: string | null = inject(CSP_NONCE, { optional: true });\n\n constructor() {\n if (this.config.theme) {\n // If theme is set with NZ_CONFIG, register theme to make sure css variables work\n registerTheme(this.getConfig().prefixCls?.prefixCls || defaultPrefixCls, this.config.theme, this.cspNonce);\n }\n }\n\n getConfig(): NzConfig {\n return this.config;\n }\n\n getConfigForComponent<T extends NzConfigKey>(componentName: T): NzConfig[T] {\n return this.config[componentName];\n }\n\n getConfigChangeEventForComponent(componentName: NzConfigKey): Observable<void> {\n return this.configUpdated$.pipe(\n filter(n => n === componentName),\n map(() => undefined)\n );\n }\n\n set<T extends NzConfigKey>(componentName: T, value: NzConfig[T]): void {\n this.config[componentName] = { ...this.config[componentName], ...value };\n if (componentName === 'theme' && this.config.theme) {\n registerTheme(this.getConfig().prefixCls?.prefixCls || defaultPrefixCls, this.config.theme, this.cspNonce);\n }\n this.configUpdated$.next(componentName);\n }\n}\n\n/**\n * This decorator is used to decorate class field. If a class field is decorated and unassigned, it would try to load default value from `NZ_CONFIG`\n *\n * @note that the class must have `_nzModuleName`({@link NzConfigKey}) property.\n * @example\n * ```ts\n * class ExampleComponent {\n * private readonly _nzModuleName: NzConfigKey = 'button';\n * @WithConfig() size: string = 'default';\n * }\n * ```\n */\nexport function WithConfig<This, Value>() {\n return function (_value: undefined, context: ClassFieldDecoratorContext<This, Value>) {\n context.addInitializer(function () {\n const nzConfigService = inject(NzConfigService);\n const originalValue = this[context.name as keyof This];\n\n let value: Value;\n let assignedByUser = false;\n\n Object.defineProperty(this, context.name, {\n get: () => {\n const configValue = nzConfigService.getConfigForComponent(\n this['_nzModuleName' as keyof This] as NzConfigKey\n )?.[context.name as keyof NzConfig[NzConfigKey]];\n\n if (assignedByUser) {\n return value;\n }\n\n if (isDefined(configValue)) {\n return configValue;\n }\n\n return originalValue;\n },\n set: (newValue: Value) => {\n // if the newValue is undefined, we also consider it as not assigned by user\n assignedByUser = isDefined(newValue);\n value = newValue;\n },\n enumerable: true,\n configurable: true\n });\n });\n };\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './config.service';\nexport * from './config';\nexport * from './css-variables';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}