UNPKG

ng-devui

Version:

DevUI components based on Angular

1 lines 19.2 kB
{"version":3,"file":"ng-devui-progress.mjs","sources":["../../devui/progress/progress-template.directive.ts","../../devui/progress/progress.component.ts","../../devui/progress/progress.component.html","../../devui/progress/progress.module.ts","../../devui/progress/ng-devui-progress.ts"],"sourcesContent":["import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n /* eslint-disable */\n selector: 'ng-template[position], ng-template[dPosition]',\n})\nexport class ProgressTemplateDirective {\n @Input() position: 'center' | 'outer';\n @Input() dPosition: 'center' | 'outer';\n\n constructor(public template: TemplateRef<any>) {}\n}\n","import { AfterViewInit, Component, ContentChildren, Input, OnChanges, QueryList, SimpleChanges, TemplateRef } from '@angular/core';\nimport { merge } from 'lodash-es';\nimport { ProgressTemplateDirective } from './progress-template.directive';\nimport { IGradientColor, IProgressItem, ShowContentConfig } from './progress.types';\n\n@Component({\n selector: 'd-progress',\n templateUrl: './progress.component.html',\n styleUrls: ['./progress.component.scss'],\n preserveWhitespaces: false,\n})\nexport class ProgressComponent implements OnChanges, AfterViewInit {\n static ID_SEED = 0;\n @Input() isDynamic = true;\n @Input() percentage = 0;\n @Input() percentageText: string;\n /**\n * @deprecated\n * 用strokeColor替换\n */\n @Input() barbgcolor: string;\n @Input() strokeColor: string | IGradientColor[] = '';\n /**\n * @deprecated\n * 统一用strokeWidth\n */\n @Input() set height(value) {\n this.strokeWidth = parseInt(value, 10);\n }\n @Input() strokeWidth = 14; // 进度条的线条宽度\n /**\n * @deprecated\n * 用type类型替换\n */\n @Input() set isCircle(value: boolean) {\n this.type = value ? 'circle' : 'line';\n }\n @Input() type: 'line' | 'circle' = 'line';\n @Input() showContent: boolean | ShowContentConfig;\n @Input() multiProgressConfig: IProgressItem[] = [];\n @ContentChildren(ProgressTemplateDirective) templates: QueryList<ProgressTemplateDirective>;\n\n id: number;\n pathString: string;\n trailPath: { [key: string]: string };\n progressData: IProgressItem[] = [];\n gradientColor: IGradientColor[] = [];\n isGradient = false;\n showContentConfig = {\n showInnerContent: false,\n showOuterContent: false,\n showCenterContent: true,\n };\n centerTemplate: TemplateRef<any>;\n outerTemplate: TemplateRef<any>;\n\n get content() {\n return this.percentageText ? this.percentageText : `${this.percentage}%`;\n }\n\n constructor() {\n this.id = ProgressComponent.ID_SEED++;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { isCircle, multiProgressConfig, percentage, showContent, strokeColor, type } = changes;\n const hasChanged = [percentage, strokeColor, type, isCircle].some((change) => change);\n\n if (multiProgressConfig || (this.multiProgressConfig?.length && percentage) || (!this.multiProgressConfig?.length && hasChanged)) {\n this.render();\n }\n if (showContent) {\n this.showContentConfig =\n typeof this.showContent === 'boolean'\n ? {\n showInnerContent: this.showContent,\n showOuterContent: this.showContent,\n showCenterContent: false,\n }\n : { ...this.showContentConfig, ...this.showContent };\n }\n }\n\n ngAfterViewInit(): void {\n // 兼容之前line中自定义模板对应右侧模板,circle对应中间模板\n if (this.templates?.length) {\n const restItem = [];\n this.templates.forEach((item) => {\n const pos = item.position || item.dPosition;\n const name = pos && `${pos}Template`;\n if (name) {\n this[name] = item.template;\n } else {\n restItem.push(item);\n }\n });\n if (restItem.length) {\n this.outerTemplate = this.outerTemplate || restItem[0].template;\n this.centerTemplate = this.centerTemplate || restItem[restItem.length - 1]?.template;\n }\n }\n }\n\n render(): void {\n const data = this.multiProgressConfig?.length\n ? [...this.multiProgressConfig]\n : [\n {\n color: (this.checkStrokeColor() || this.barbgcolor) ?? '',\n percentage: this.percentage ?? 0,\n percentageText: this.percentageText ?? '',\n content: this.content ?? '',\n },\n ];\n\n if (this.type === 'line') {\n this.checkSumOfPercentages(data, (sum: number, item: IProgressItem) => {\n item.width = sum;\n });\n }\n\n if (this.type === 'circle') {\n this.setCircleProgress(data);\n }\n\n // 展示数据倒序输出,短的后输出,显示层级高\n data.reverse();\n\n if (this.isDynamic) {\n // merge方式覆盖数据,不改变数据源,避免重渲染dom导致动画失效\n merge(this.progressData, data);\n } else {\n this.progressData = [...data];\n }\n }\n\n setCircleProgress(data: IProgressItem[]): void {\n const radius = 50 - this.strokeWidth / 2;\n const beginPositionY = -radius;\n const endPositionY = radius * -2;\n const len = Math.PI * 2 * radius;\n\n this.pathString = `M 50,50 m 0,${beginPositionY}\n a ${radius},${radius} 0 1 1 0,${-endPositionY}\n a ${radius},${radius} 0 1 1 0,${endPositionY}`;\n\n this.trailPath = {\n strokeDasharray: `${len}px ${len}px`,\n strokeDashoffset: `0`,\n transition: 'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s',\n };\n this.checkSumOfPercentages(data, (sum: number, item: IProgressItem) => {\n item.strokePath = {\n stroke: item.color || this.checkStrokeColor() || this.barbgcolor || (null as any),\n strokeDasharray: `${(sum / 100) * len}px ${len}px`,\n strokeDashoffset: `0`,\n transition: 'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s',\n };\n });\n }\n\n checkSumOfPercentages(data: IProgressItem[], func: Function) {\n const result = data.reduce((sum: number, item: IProgressItem, index: number) => {\n sum += Number(item.percentage);\n sum = sum > 100 || (index > 0 && index === data.length - 1 && this.percentage === 100) ? 100 : sum;\n func(sum, item);\n return sum;\n }, 0);\n this.percentage = this.percentage >= 100 ? 100 : result;\n }\n\n checkStrokeColor(): string {\n if (Array.isArray(this.strokeColor)) {\n this.isGradient = true;\n this.gradientColor = this.strokeColor;\n if (this.type === 'line') {\n const colors = this.strokeColor.map((item) => `${item.color} ${item.percentage}`).join(', ');\n const result = `linear-gradient(to right, ${colors})`;\n return this.strokeColor.length ? result : '';\n }\n if (this.type === 'circle') {\n return `url(#devui-progress-gradient-${this.id}`;\n }\n } else {\n this.isGradient = false;\n this.strokeColor = this.strokeColor || '';\n return this.strokeColor;\n }\n }\n}\n","<ng-container *ngIf=\"type === 'line'\">\n <div id=\"devui-progress-line-{{ id }}\" class=\"devui-progress devui-progress-line\" [style.height]=\"strokeWidth + 'px'\">\n <div\n *ngFor=\"let bar of progressData\"\n class=\"devui-progress-bar\"\n [class.devui-progress-bar-default-bg]=\"!bar.color\"\n [style.background]=\"bar.color\"\n [style.width]=\"bar.width + '%'\"\n >\n <ng-template\n *ngIf=\"showContentConfig.showInnerContent\"\n [ngTemplateOutlet]=\"bar.template || defaultInnerContent\"\n [ngTemplateOutletContext]=\"{ $implicit: this, bar: bar }\"\n ></ng-template>\n </div>\n <ng-template\n *ngIf=\"showContentConfig.showCenterContent\"\n [ngTemplateOutlet]=\"centerTemplate || defaultCenterContent\"\n [ngTemplateOutletContext]=\"{ $implicit: this }\"\n ></ng-template>\n </div>\n <ng-template\n *ngIf=\"showContentConfig.showOuterContent\"\n [ngTemplateOutlet]=\"outerTemplate || defaultPercentageText\"\n [ngTemplateOutletContext]=\"{ $implicit: this, percentage: percentage }\"\n ></ng-template>\n</ng-container>\n\n<ng-container *ngIf=\"type === 'circle'\">\n <div id=\"devui-progress-circle-{{ id }}\" class=\"devui-progress devui-progress-circle\">\n <svg viewBox=\"0 0 100 100\">\n <defs *ngIf=\"isGradient\">\n <linearGradient id=\"devui-progress-gradient-{{ id }}\" x1=\"100%\" y1=\"0%\" x2=\"0%\" y2=\"0%\">\n <stop *ngFor=\"let color of gradientColor\" [attr.offset]=\"color.percentage\" [attr.stop-color]=\"color.color\"></stop>\n </linearGradient>\n </defs>\n <path\n class=\"devui-progress-circle-trail\"\n fill-opacity=\"0\"\n [attr.d]=\"pathString\"\n [attr.stroke-width]=\"strokeWidth\"\n [ngStyle]=\"trailPath\"\n ></path>\n <path\n *ngFor=\"let circle of progressData\"\n fill-opacity=\"0\"\n [attr.d]=\"pathString\"\n [attr.stroke]=\"circle.color\"\n [attr.stroke-linecap]=\"'round'\"\n [attr.stroke-width]=\"circle.percentage ? strokeWidth : 0\"\n [class.devui-progress-circle-path]=\"!isGradient\"\n [ngStyle]=\"circle.strokePath\"\n >\n <title>{{ circle.percentageText ? circle.percentageText : circle.percentage + '%' }}</title>\n </path>\n </svg>\n <ng-template\n *ngIf=\"showContentConfig.showCenterContent\"\n [ngTemplateOutlet]=\"centerTemplate || defaultPercentageText\"\n [ngTemplateOutletContext]=\"{ $implicit: this, percentage: percentage }\"\n ></ng-template>\n </div>\n</ng-container>\n\n<ng-template #defaultInnerContent let-bar=\"bar\">\n <span [style.line-height]=\"strokeWidth + 'px'\" [title]=\"bar.percentageText ? bar.percentageText : bar.percentage + '%'\">\n {{ bar.percentageText ? bar.percentageText : bar.percentage + '%' }}\n </span>\n</ng-template>\n\n<ng-template #defaultCenterContent>\n <span [style.line-height]=\"strokeWidth + 'px'\" [title]=\"content\">{{ content }}</span>\n</ng-template>\n\n<ng-template #defaultPercentageText>\n <div class=\"devui-progress-default-text\" [title]=\"content\">{{ content }}</div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ProgressTemplateDirective } from './progress-template.directive';\nimport { ProgressComponent } from './progress.component';\n\n@NgModule({\n imports: [CommonModule],\n exports: [ProgressComponent, ProgressTemplateDirective],\n declarations: [ProgressComponent, ProgressTemplateDirective],\n providers: [],\n})\nexport class ProgressModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}