@ng-nest/ui 14.0.13 → 14.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/date-picker/date-picker.component.d.ts +1 -1
- package/esm2020/date-picker/date-picker.component.mjs +7 -5
- package/esm2020/icon/icon.module.mjs +4 -5
- package/esm2020/icon/icon.service.mjs +10 -4
- package/esm2020/tree-file/tree-file.component.mjs +9 -4
- package/esm2020/tree-file/tree-file.module.mjs +4 -5
- package/esm2020/upload/upload.component.mjs +9 -4
- package/fesm2015/ng-nest-ui-date-picker.mjs +6 -4
- package/fesm2015/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-icon.mjs +13 -7
- package/fesm2015/ng-nest-ui-icon.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-tree-file.mjs +13 -7
- package/fesm2015/ng-nest-ui-tree-file.mjs.map +1 -1
- package/fesm2015/ng-nest-ui-upload.mjs +10 -3
- package/fesm2015/ng-nest-ui-upload.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-date-picker.mjs +6 -4
- package/fesm2020/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-icon.mjs +11 -7
- package/fesm2020/ng-nest-ui-icon.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-tree-file.mjs +11 -7
- package/fesm2020/ng-nest-ui-tree-file.mjs.map +1 -1
- package/fesm2020/ng-nest-ui-upload.mjs +8 -3
- package/fesm2020/ng-nest-ui-upload.mjs.map +1 -1
- package/icon/icon.module.d.ts +1 -2
- package/icon/icon.service.d.ts +1 -1
- package/package.json +1 -1
- package/tree-file/tree-file.component.d.ts +1 -1
- package/tree-file/tree-file.module.d.ts +7 -8
- package/upload/upload.component.d.ts +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, Input, SecurityContext, Injectable, ViewEncapsulation, ChangeDetectionStrategy,
|
|
2
|
+
import { Component, Input, SecurityContext, Injectable, Optional, ViewEncapsulation, ChangeDetectionStrategy, Inject, HostBinding, NgModule } from '@angular/core';
|
|
3
3
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
4
4
|
import { __decorate } from 'tslib';
|
|
5
5
|
import * as i2$1 from '@ng-nest/ui/core';
|
|
@@ -7,7 +7,6 @@ import { XProperty, XWithConfig, XInputNumber, XInputBoolean, XHasIn, XIsChange,
|
|
|
7
7
|
import { Observable } from 'rxjs';
|
|
8
8
|
import * as i1 from '@angular/platform-browser';
|
|
9
9
|
import * as i2 from '@angular/common/http';
|
|
10
|
-
import { HttpClientModule } from '@angular/common/http';
|
|
11
10
|
|
|
12
11
|
/**
|
|
13
12
|
* Icon
|
|
@@ -61,6 +60,9 @@ class XIconService {
|
|
|
61
60
|
this.activeTaskXm = 0;
|
|
62
61
|
this.isRunningTask = false;
|
|
63
62
|
this.limit = 10;
|
|
63
|
+
if (!http) {
|
|
64
|
+
throw new Error(`${XIconPrefix}: Not found 'HttpClient', You can import 'HttpClientModule' in your root module.`);
|
|
65
|
+
}
|
|
64
66
|
}
|
|
65
67
|
addTask(task) {
|
|
66
68
|
this.queue.push(task);
|
|
@@ -119,11 +121,13 @@ class XIconService {
|
|
|
119
121
|
return this.http.get(safeUrl, { responseType: 'text' });
|
|
120
122
|
}
|
|
121
123
|
}
|
|
122
|
-
/** @nocollapse */ XIconService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XIconService, deps: [{ token: i1.DomSanitizer }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
124
|
+
/** @nocollapse */ XIconService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XIconService, deps: [{ token: i1.DomSanitizer }, { token: i2.HttpClient, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
123
125
|
/** @nocollapse */ XIconService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XIconService });
|
|
124
126
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XIconService, decorators: [{
|
|
125
127
|
type: Injectable
|
|
126
|
-
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i2.HttpClient
|
|
128
|
+
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i2.HttpClient, decorators: [{
|
|
129
|
+
type: Optional
|
|
130
|
+
}] }]; } });
|
|
127
131
|
|
|
128
132
|
// 来源路径对应
|
|
129
133
|
const XSouceUrl = {
|
|
@@ -311,14 +315,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
311
315
|
class XIconModule {
|
|
312
316
|
}
|
|
313
317
|
/** @nocollapse */ XIconModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XIconModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
314
|
-
/** @nocollapse */ XIconModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: XIconModule, declarations: [XIconComponent, XIconProperty], imports: [CommonModule
|
|
315
|
-
/** @nocollapse */ XIconModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XIconModule, providers: [XIconService], imports: [CommonModule
|
|
318
|
+
/** @nocollapse */ XIconModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: XIconModule, declarations: [XIconComponent, XIconProperty], imports: [CommonModule], exports: [XIconComponent] });
|
|
319
|
+
/** @nocollapse */ XIconModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XIconModule, providers: [XIconService], imports: [CommonModule] });
|
|
316
320
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XIconModule, decorators: [{
|
|
317
321
|
type: NgModule,
|
|
318
322
|
args: [{
|
|
319
323
|
declarations: [XIconComponent, XIconProperty],
|
|
320
324
|
exports: [XIconComponent],
|
|
321
|
-
imports: [CommonModule
|
|
325
|
+
imports: [CommonModule],
|
|
322
326
|
providers: [XIconService]
|
|
323
327
|
}]
|
|
324
328
|
}] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-icon.mjs","sources":["../../../../lib/ng-nest/ui/icon/icon.property.ts","../../../../lib/ng-nest/ui/icon/icon.service.ts","../../../../lib/ng-nest/ui/icon/icon.component.ts","../../../../lib/ng-nest/ui/icon/icon.component.html","../../../../lib/ng-nest/ui/icon/icon.module.ts","../../../../lib/ng-nest/ui/icon/ng-nest-ui-icon.ts"],"sourcesContent":["import { XProperty, XInputNumber, XInputBoolean, XNumber, XBoolean, XWithConfig } from '@ng-nest/ui/core';\r\nimport { Input, Component } from '@angular/core';\r\n\r\n/**\r\n * Icon\r\n * @selector x-icon\r\n * @decorator component\r\n */\r\nexport const XIconPrefix = 'x-icon';\r\n\r\nconst X_CONFIG_NAME = 'icon';\r\n\r\nexport const XIconHref = 'https://ngnest.com/static/icons/';\r\n\r\n/**\r\n * Icon Property\r\n */\r\n@Component({ template: '' })\r\nexport class XIconProperty extends XProperty {\r\n /**\r\n * @zh_CN SVG 图标根路径地址,可以通过全局只配置一次,所有图标资源在 github 上的 ng-nest-icon 中\r\n * @en_US The root address of the SVG icon can be configured only once globally. All icon resources are in ng-nest-icon on github\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, XIconHref) href?: string;\r\n /**\r\n * @zh_CN 图标类型\r\n * @en_US Icon type\r\n */\r\n @Input() type?: string;\r\n /**\r\n * @zh_CN 图标颜色\r\n * @en_US Icon color\r\n */\r\n @Input() color?: string | string[];\r\n /**\r\n * @zh_CN 图标旋转角度\r\n * @en_US Icon rotation angle\r\n */\r\n @Input() @XInputNumber() rotate?: XNumber;\r\n /**\r\n * @zh_CN loading效果(图标一直旋转)\r\n * @en_US Loading effect (icon keeps rotating)\r\n */\r\n @Input() @XInputBoolean() spin?: XBoolean;\r\n /**\r\n * @zh_CN 变化为的图标(未实现)\r\n * @en_US Icon to change to (not implemented)\r\n */\r\n @Input() to?: string;\r\n}\r\n\r\n/**\r\n * @zh_CN 图标来源\r\n * @en_US Icon source\r\n */\r\nexport type XIconSource = 'ant-design' | 'eva' | 'feather' | 'font-awesome' | 'material-design';\r\n","import { Injectable, SecurityContext } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, Subscriber } from 'rxjs';\r\nimport { XHasIn } from '@ng-nest/ui/core';\r\n\r\ntype Task<T> = {\r\n name: string;\r\n observable: Observable<T>;\r\n callback: Function;\r\n};\r\n\r\n// @dynamic\r\n@Injectable()\r\nexport class XIconService {\r\n rootUrl = `https://ngnest.com/static/icons/`;\r\n caches: { [property: string]: any } = {};\r\n queue: Task<any>[] = [];\r\n activeTaskXm: number = 0;\r\n isRunningTask = false;\r\n limit: number = 10;\r\n\r\n constructor(private sanitizer: DomSanitizer, private http: HttpClient) {}\r\n\r\n public addTask<T>(task: Task<T>) {\r\n this.queue.push(task);\r\n this.runTask();\r\n }\r\n\r\n private execute<T>(task: Task<T>) {\r\n this.isRunningTask = true;\r\n if (XHasIn(this.caches, task.name)) {\r\n task.callback(this.caches[task.name]);\r\n this.activeTaskXm--;\r\n this.isRunningTask = false;\r\n this.runTask();\r\n return;\r\n }\r\n return task.observable.subscribe(\r\n (result) => {\r\n this.caches[task.name] = result;\r\n task.callback(result);\r\n return result;\r\n },\r\n (error) => {\r\n console.error(error);\r\n this.activeTaskXm--;\r\n this.isRunningTask = false;\r\n this.runTask();\r\n },\r\n () => {\r\n this.activeTaskXm--;\r\n this.isRunningTask = false;\r\n this.runTask();\r\n }\r\n );\r\n }\r\n\r\n private runTask() {\r\n if (!this.isRunningTask && this.activeTaskXm < this.limit && this.queue.length > 0) {\r\n const task = this.queue.shift();\r\n this.activeTaskXm++;\r\n this.execute(task!);\r\n }\r\n }\r\n\r\n getSvgs(...icons: string[]): Observable<string[]> {\r\n return Observable.create((subscriber: Subscriber<string[]>) => {\r\n let result: string[] = [];\r\n icons.forEach((icon, index) =>\r\n this.addTask({\r\n name: icon,\r\n observable: this.getSvgElement(icon),\r\n callback: (svg: string) => {\r\n result.push(svg);\r\n if (index === icons.length - 1) {\r\n subscriber.next(result);\r\n subscriber.complete();\r\n }\r\n }\r\n })\r\n );\r\n });\r\n }\r\n\r\n getSvgElement(icon: string): Observable<string> {\r\n const url = `${this.rootUrl}${icon}.svg`;\r\n const safeUrl = this.sanitizer.sanitize(SecurityContext.URL, url);\r\n return this.http.get(safeUrl as string, { responseType: 'text' });\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n Renderer2,\r\n ChangeDetectorRef,\r\n OnChanges,\r\n SimpleChanges,\r\n Inject,\r\n Optional,\r\n HostBinding\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { XIconPrefix, XIconProperty } from './icon.property';\r\nimport { XIconService } from './icon.service';\r\nimport { warnIconTypeNotFound, warnSVGTagNotFound, XIsChange, XIsEmpty, XConfigService } from '@ng-nest/ui/core';\r\n\r\n// 来源路径对应\r\nexport const XSouceUrl: { [property: string]: string } = {\r\n adf: `ant-design/fill/`,\r\n ado: `ant-design/outline/`,\r\n adt: `ant-design/twotone/`,\r\n eaf: `eva/fill/`,\r\n eao: `eva/outline/`,\r\n fto: `feather/`,\r\n fab: `font-awesome/brands/`,\r\n far: `font-awesome/regular/`,\r\n fas: `font-awesome/solid/`,\r\n mdf: `material-design/fill/`,\r\n mdo: `material-design/outline/`\r\n};\r\n\r\nexport const XViewBox = [\r\n // { souces: [\"adf\", \"ado\", \"adt\"], value: \"0 0 1024 1024\" },\r\n // { souces: [\"eaf\", \"eao\"], value: \"0 0 24 24\" },\r\n // { souces: [\"fto\"], value: \"0 0 24 24\" }\r\n];\r\n\r\n@Component({\r\n selector: `${XIconPrefix}`,\r\n templateUrl: './icon.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XIconComponent extends XIconProperty implements OnInit, OnChanges {\r\n private _svgElement!: SVGElement;\r\n private _loaded: boolean = false;\r\n\r\n @HostBinding('class.x-icon-spin') get getSpin() {\r\n return this.spin;\r\n }\r\n\r\n constructor(\r\n public elementRef: ElementRef,\r\n private renderer: Renderer2,\r\n public iconService: XIconService,\r\n private cdr: ChangeDetectorRef,\r\n @Optional() @Inject(DOCUMENT) private document: any,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n this.iconService.rootUrl = this.href as string;\r\n this.renderer.addClass(this.elementRef.nativeElement, XIconPrefix);\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { type, spin } = changes;\r\n if (XIsChange(type)) {\r\n this.setSvgElement();\r\n this.renderer.removeClass(this.elementRef.nativeElement, type.previousValue);\r\n this.renderer.addClass(this.elementRef.nativeElement, `${this.type}`);\r\n this.cdr.detectChanges();\r\n }\r\n if (XIsChange(spin)) {\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n getSvg() {\r\n if (this._loaded) return;\r\n let height = this.document.documentElement.clientHeight;\r\n let width = this.document.documentElement.clientWidth;\r\n let box = this.elementRef.nativeElement.getBoundingClientRect();\r\n if (box.top <= height && box.left <= width) {\r\n this.setSvgElement();\r\n this.renderer.addClass(this.elementRef.nativeElement, `${this.type}`);\r\n this._loaded = true;\r\n }\r\n }\r\n\r\n setSvgElement() {\r\n const typeIcon = this.setSourceUrl(this.type);\r\n const toIcon = this.setSourceUrl(this.to);\r\n let icons = [typeIcon];\r\n if (XIsEmpty(typeIcon)) return;\r\n if (!XIsEmpty(toIcon)) {\r\n icons = [...icons, toIcon];\r\n }\r\n this.iconService.getSvgs(...icons).subscribe((x) => this.setSvgs(x));\r\n }\r\n\r\n setSvgs(svgs: string[]) {\r\n if (svgs?.length > 0) {\r\n let firstChild = this.elementRef.nativeElement.firstChild;\r\n if (firstChild) {\r\n this.renderer.removeChild(this.elementRef.nativeElement, firstChild);\r\n }\r\n this._svgElement = this.buildSvg(svgs.shift() as string) as SVGAElement;\r\n // this.setAnimates(svgs);\r\n this.setAttributes(this._svgElement);\r\n this.renderer.appendChild(this.elementRef.nativeElement, this._svgElement);\r\n this.cdr.markForCheck();\r\n }\r\n }\r\n\r\n setSourceUrl(type?: string) {\r\n if (typeof type === 'undefined') return '';\r\n const split = type.split('-');\r\n const souce = split.shift();\r\n if (typeof souce === 'undefined') return '';\r\n const souceUrl = XSouceUrl[souce];\r\n const fileName = split.join('-');\r\n if (!souceUrl || !fileName) {\r\n warnIconTypeNotFound();\r\n }\r\n return `${souceUrl}${fileName}`;\r\n }\r\n\r\n setAttributes(svgEle: SVGElement) {\r\n if (svgEle) {\r\n this.renderer.setAttribute(svgEle, 'width', '1em');\r\n this.renderer.setAttribute(svgEle, 'height', '1em');\r\n }\r\n }\r\n\r\n buildSvg(svgStr: string): SVGAElement | undefined {\r\n const result = this.document.createElementNS('http://www.w3.org/2000/svg', 'svg') as SVGAElement;\r\n const svg = this.createSvg(svgStr);\r\n if (!svg) return;\r\n svg.children.forEach((x) => {\r\n x.removeAttribute('class');\r\n if (x.tagName === 'rect') {\r\n x.setAttribute('fill', 'none');\r\n }\r\n result.appendChild(x);\r\n });\r\n this.setAttribute(result, svg.ele, 'viewBox');\r\n this.setAttribute(result, svg.ele, 'fill', 'currentColor');\r\n this.setAttribute(result, svg.ele, 'stroke');\r\n this.setAttribute(result, svg.ele, 'stroke-width');\r\n this.setAttribute(result, svg.ele, 'stroke-linecap');\r\n this.setAttribute(result, svg.ele, 'stroke-linejoin');\r\n if (!result) {\r\n warnSVGTagNotFound();\r\n }\r\n\r\n return result;\r\n }\r\n\r\n createSvg(svgStr: string) {\r\n const div = this.document.createElement('div');\r\n div.innerHTML = svgStr;\r\n let svgEle = div.querySelector('svg') as SVGElement;\r\n if (!svgEle) return null;\r\n return {\r\n ele: svgEle,\r\n children: svgEle.querySelectorAll('path, polyline, polygon, circle, line, rect')\r\n };\r\n }\r\n\r\n setAttribute(svg: SVGElement, svgEle: SVGElement, attribute: string, def?: string) {\r\n let attr = svgEle.getAttribute(attribute);\r\n if (attr) {\r\n svg.setAttribute(attribute, attr);\r\n } else if (def) {\r\n svg.setAttribute(attribute, def);\r\n }\r\n }\r\n\r\n //<animate begin=\"mouseenter\" dur=\"500ms\" repeatCount=\"1\" attributeName=\"d\" from=\"M86.425,13.204l5.648,12.741H0.55 l0.125-12.616L0.55,0.544h91.523L86.425,13.204z\" to=\"M92.725,13.521l0.044,12.887H1.245 l7-12.616l-7-12.785h91.523L92.725,13.521z\" fill=\"freeze\"></animate>\r\n\r\n setAnimates(svgs: string[]) {\r\n if (svgs?.length > 0) {\r\n let svg = this.createSvg(svgs.shift() as string);\r\n for (let i = 0; i < this._svgElement.children.length; i++) {\r\n let child = this._svgElement.children[i];\r\n let toChild = svg?.children[i];\r\n if (child?.nodeName === 'path' && toChild?.nodeName === 'path') {\r\n let toAnimate = document.createElement('animate');\r\n toAnimate.setAttribute('dur', '500ms');\r\n toAnimate.setAttribute('repeatCount', '1');\r\n toAnimate.setAttribute('attributeName', 'd');\r\n toAnimate.setAttribute('fill', 'freeze');\r\n toAnimate.setAttribute('from', child.getAttribute('d') as string);\r\n toAnimate.setAttribute('to', toChild.getAttribute('d') as string);\r\n this.renderer.appendChild(child, toAnimate);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XIconComponent } from './icon.component';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { XIconService } from './icon.service';\r\nimport { XIconProperty } from './icon.property';\r\n\r\n@NgModule({\r\n declarations: [XIconComponent, XIconProperty],\r\n exports: [XIconComponent],\r\n imports: [CommonModule, HttpClientModule],\r\n providers: [XIconService]\r\n})\r\nexport class XIconModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-icon.mjs","sources":["../../../../lib/ng-nest/ui/icon/icon.property.ts","../../../../lib/ng-nest/ui/icon/icon.service.ts","../../../../lib/ng-nest/ui/icon/icon.component.ts","../../../../lib/ng-nest/ui/icon/icon.component.html","../../../../lib/ng-nest/ui/icon/icon.module.ts","../../../../lib/ng-nest/ui/icon/ng-nest-ui-icon.ts"],"sourcesContent":["import { XProperty, XInputNumber, XInputBoolean, XNumber, XBoolean, XWithConfig } from '@ng-nest/ui/core';\r\nimport { Input, Component } from '@angular/core';\r\n\r\n/**\r\n * Icon\r\n * @selector x-icon\r\n * @decorator component\r\n */\r\nexport const XIconPrefix = 'x-icon';\r\n\r\nconst X_CONFIG_NAME = 'icon';\r\n\r\nexport const XIconHref = 'https://ngnest.com/static/icons/';\r\n\r\n/**\r\n * Icon Property\r\n */\r\n@Component({ template: '' })\r\nexport class XIconProperty extends XProperty {\r\n /**\r\n * @zh_CN SVG 图标根路径地址,可以通过全局只配置一次,所有图标资源在 github 上的 ng-nest-icon 中\r\n * @en_US The root address of the SVG icon can be configured only once globally. All icon resources are in ng-nest-icon on github\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, XIconHref) href?: string;\r\n /**\r\n * @zh_CN 图标类型\r\n * @en_US Icon type\r\n */\r\n @Input() type?: string;\r\n /**\r\n * @zh_CN 图标颜色\r\n * @en_US Icon color\r\n */\r\n @Input() color?: string | string[];\r\n /**\r\n * @zh_CN 图标旋转角度\r\n * @en_US Icon rotation angle\r\n */\r\n @Input() @XInputNumber() rotate?: XNumber;\r\n /**\r\n * @zh_CN loading效果(图标一直旋转)\r\n * @en_US Loading effect (icon keeps rotating)\r\n */\r\n @Input() @XInputBoolean() spin?: XBoolean;\r\n /**\r\n * @zh_CN 变化为的图标(未实现)\r\n * @en_US Icon to change to (not implemented)\r\n */\r\n @Input() to?: string;\r\n}\r\n\r\n/**\r\n * @zh_CN 图标来源\r\n * @en_US Icon source\r\n */\r\nexport type XIconSource = 'ant-design' | 'eva' | 'feather' | 'font-awesome' | 'material-design';\r\n","import { Injectable, Optional, SecurityContext } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, Subscriber } from 'rxjs';\r\nimport { XHasIn } from '@ng-nest/ui/core';\r\nimport { XIconPrefix } from './icon.property';\r\n\r\ntype Task<T> = {\r\n name: string;\r\n observable: Observable<T>;\r\n callback: Function;\r\n};\r\n\r\n// @dynamic\r\n@Injectable()\r\nexport class XIconService {\r\n rootUrl = `https://ngnest.com/static/icons/`;\r\n caches: { [property: string]: any } = {};\r\n queue: Task<any>[] = [];\r\n activeTaskXm: number = 0;\r\n isRunningTask = false;\r\n limit: number = 10;\r\n\r\n constructor(private sanitizer: DomSanitizer, @Optional() private http: HttpClient) {\r\n if (!http) {\r\n throw new Error(`${XIconPrefix}: Not found 'HttpClient', You can import 'HttpClientModule' in your root module.`);\r\n }\r\n }\r\n\r\n public addTask<T>(task: Task<T>) {\r\n this.queue.push(task);\r\n this.runTask();\r\n }\r\n\r\n private execute<T>(task: Task<T>) {\r\n this.isRunningTask = true;\r\n if (XHasIn(this.caches, task.name)) {\r\n task.callback(this.caches[task.name]);\r\n this.activeTaskXm--;\r\n this.isRunningTask = false;\r\n this.runTask();\r\n return;\r\n }\r\n return task.observable.subscribe(\r\n (result) => {\r\n this.caches[task.name] = result;\r\n task.callback(result);\r\n return result;\r\n },\r\n (error) => {\r\n console.error(error);\r\n this.activeTaskXm--;\r\n this.isRunningTask = false;\r\n this.runTask();\r\n },\r\n () => {\r\n this.activeTaskXm--;\r\n this.isRunningTask = false;\r\n this.runTask();\r\n }\r\n );\r\n }\r\n\r\n private runTask() {\r\n if (!this.isRunningTask && this.activeTaskXm < this.limit && this.queue.length > 0) {\r\n const task = this.queue.shift();\r\n this.activeTaskXm++;\r\n this.execute(task!);\r\n }\r\n }\r\n\r\n getSvgs(...icons: string[]): Observable<string[]> {\r\n return Observable.create((subscriber: Subscriber<string[]>) => {\r\n let result: string[] = [];\r\n icons.forEach((icon, index) =>\r\n this.addTask({\r\n name: icon,\r\n observable: this.getSvgElement(icon),\r\n callback: (svg: string) => {\r\n result.push(svg);\r\n if (index === icons.length - 1) {\r\n subscriber.next(result);\r\n subscriber.complete();\r\n }\r\n }\r\n })\r\n );\r\n });\r\n }\r\n\r\n getSvgElement(icon: string): Observable<string> {\r\n const url = `${this.rootUrl}${icon}.svg`;\r\n const safeUrl = this.sanitizer.sanitize(SecurityContext.URL, url);\r\n return this.http.get(safeUrl as string, { responseType: 'text' });\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n Renderer2,\r\n ChangeDetectorRef,\r\n OnChanges,\r\n SimpleChanges,\r\n Inject,\r\n Optional,\r\n HostBinding\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { XIconPrefix, XIconProperty } from './icon.property';\r\nimport { XIconService } from './icon.service';\r\nimport { warnIconTypeNotFound, warnSVGTagNotFound, XIsChange, XIsEmpty, XConfigService } from '@ng-nest/ui/core';\r\n\r\n// 来源路径对应\r\nexport const XSouceUrl: { [property: string]: string } = {\r\n adf: `ant-design/fill/`,\r\n ado: `ant-design/outline/`,\r\n adt: `ant-design/twotone/`,\r\n eaf: `eva/fill/`,\r\n eao: `eva/outline/`,\r\n fto: `feather/`,\r\n fab: `font-awesome/brands/`,\r\n far: `font-awesome/regular/`,\r\n fas: `font-awesome/solid/`,\r\n mdf: `material-design/fill/`,\r\n mdo: `material-design/outline/`\r\n};\r\n\r\nexport const XViewBox = [\r\n // { souces: [\"adf\", \"ado\", \"adt\"], value: \"0 0 1024 1024\" },\r\n // { souces: [\"eaf\", \"eao\"], value: \"0 0 24 24\" },\r\n // { souces: [\"fto\"], value: \"0 0 24 24\" }\r\n];\r\n\r\n@Component({\r\n selector: `${XIconPrefix}`,\r\n templateUrl: './icon.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XIconComponent extends XIconProperty implements OnInit, OnChanges {\r\n private _svgElement!: SVGElement;\r\n private _loaded: boolean = false;\r\n\r\n @HostBinding('class.x-icon-spin') get getSpin() {\r\n return this.spin;\r\n }\r\n\r\n constructor(\r\n public elementRef: ElementRef,\r\n private renderer: Renderer2,\r\n public iconService: XIconService,\r\n private cdr: ChangeDetectorRef,\r\n @Optional() @Inject(DOCUMENT) private document: any,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n this.iconService.rootUrl = this.href as string;\r\n this.renderer.addClass(this.elementRef.nativeElement, XIconPrefix);\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { type, spin } = changes;\r\n if (XIsChange(type)) {\r\n this.setSvgElement();\r\n this.renderer.removeClass(this.elementRef.nativeElement, type.previousValue);\r\n this.renderer.addClass(this.elementRef.nativeElement, `${this.type}`);\r\n this.cdr.detectChanges();\r\n }\r\n if (XIsChange(spin)) {\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n getSvg() {\r\n if (this._loaded) return;\r\n let height = this.document.documentElement.clientHeight;\r\n let width = this.document.documentElement.clientWidth;\r\n let box = this.elementRef.nativeElement.getBoundingClientRect();\r\n if (box.top <= height && box.left <= width) {\r\n this.setSvgElement();\r\n this.renderer.addClass(this.elementRef.nativeElement, `${this.type}`);\r\n this._loaded = true;\r\n }\r\n }\r\n\r\n setSvgElement() {\r\n const typeIcon = this.setSourceUrl(this.type);\r\n const toIcon = this.setSourceUrl(this.to);\r\n let icons = [typeIcon];\r\n if (XIsEmpty(typeIcon)) return;\r\n if (!XIsEmpty(toIcon)) {\r\n icons = [...icons, toIcon];\r\n }\r\n this.iconService.getSvgs(...icons).subscribe((x) => this.setSvgs(x));\r\n }\r\n\r\n setSvgs(svgs: string[]) {\r\n if (svgs?.length > 0) {\r\n let firstChild = this.elementRef.nativeElement.firstChild;\r\n if (firstChild) {\r\n this.renderer.removeChild(this.elementRef.nativeElement, firstChild);\r\n }\r\n this._svgElement = this.buildSvg(svgs.shift() as string) as SVGAElement;\r\n // this.setAnimates(svgs);\r\n this.setAttributes(this._svgElement);\r\n this.renderer.appendChild(this.elementRef.nativeElement, this._svgElement);\r\n this.cdr.markForCheck();\r\n }\r\n }\r\n\r\n setSourceUrl(type?: string) {\r\n if (typeof type === 'undefined') return '';\r\n const split = type.split('-');\r\n const souce = split.shift();\r\n if (typeof souce === 'undefined') return '';\r\n const souceUrl = XSouceUrl[souce];\r\n const fileName = split.join('-');\r\n if (!souceUrl || !fileName) {\r\n warnIconTypeNotFound();\r\n }\r\n return `${souceUrl}${fileName}`;\r\n }\r\n\r\n setAttributes(svgEle: SVGElement) {\r\n if (svgEle) {\r\n this.renderer.setAttribute(svgEle, 'width', '1em');\r\n this.renderer.setAttribute(svgEle, 'height', '1em');\r\n }\r\n }\r\n\r\n buildSvg(svgStr: string): SVGAElement | undefined {\r\n const result = this.document.createElementNS('http://www.w3.org/2000/svg', 'svg') as SVGAElement;\r\n const svg = this.createSvg(svgStr);\r\n if (!svg) return;\r\n svg.children.forEach((x) => {\r\n x.removeAttribute('class');\r\n if (x.tagName === 'rect') {\r\n x.setAttribute('fill', 'none');\r\n }\r\n result.appendChild(x);\r\n });\r\n this.setAttribute(result, svg.ele, 'viewBox');\r\n this.setAttribute(result, svg.ele, 'fill', 'currentColor');\r\n this.setAttribute(result, svg.ele, 'stroke');\r\n this.setAttribute(result, svg.ele, 'stroke-width');\r\n this.setAttribute(result, svg.ele, 'stroke-linecap');\r\n this.setAttribute(result, svg.ele, 'stroke-linejoin');\r\n if (!result) {\r\n warnSVGTagNotFound();\r\n }\r\n\r\n return result;\r\n }\r\n\r\n createSvg(svgStr: string) {\r\n const div = this.document.createElement('div');\r\n div.innerHTML = svgStr;\r\n let svgEle = div.querySelector('svg') as SVGElement;\r\n if (!svgEle) return null;\r\n return {\r\n ele: svgEle,\r\n children: svgEle.querySelectorAll('path, polyline, polygon, circle, line, rect')\r\n };\r\n }\r\n\r\n setAttribute(svg: SVGElement, svgEle: SVGElement, attribute: string, def?: string) {\r\n let attr = svgEle.getAttribute(attribute);\r\n if (attr) {\r\n svg.setAttribute(attribute, attr);\r\n } else if (def) {\r\n svg.setAttribute(attribute, def);\r\n }\r\n }\r\n\r\n //<animate begin=\"mouseenter\" dur=\"500ms\" repeatCount=\"1\" attributeName=\"d\" from=\"M86.425,13.204l5.648,12.741H0.55 l0.125-12.616L0.55,0.544h91.523L86.425,13.204z\" to=\"M92.725,13.521l0.044,12.887H1.245 l7-12.616l-7-12.785h91.523L92.725,13.521z\" fill=\"freeze\"></animate>\r\n\r\n setAnimates(svgs: string[]) {\r\n if (svgs?.length > 0) {\r\n let svg = this.createSvg(svgs.shift() as string);\r\n for (let i = 0; i < this._svgElement.children.length; i++) {\r\n let child = this._svgElement.children[i];\r\n let toChild = svg?.children[i];\r\n if (child?.nodeName === 'path' && toChild?.nodeName === 'path') {\r\n let toAnimate = document.createElement('animate');\r\n toAnimate.setAttribute('dur', '500ms');\r\n toAnimate.setAttribute('repeatCount', '1');\r\n toAnimate.setAttribute('attributeName', 'd');\r\n toAnimate.setAttribute('fill', 'freeze');\r\n toAnimate.setAttribute('from', child.getAttribute('d') as string);\r\n toAnimate.setAttribute('to', toChild.getAttribute('d') as string);\r\n this.renderer.appendChild(child, toAnimate);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XIconComponent } from './icon.component';\r\nimport { XIconService } from './icon.service';\r\nimport { XIconProperty } from './icon.property';\r\n\r\n@NgModule({\r\n declarations: [XIconComponent, XIconProperty],\r\n exports: [XIconComponent],\r\n imports: [CommonModule],\r\n providers: [XIconService]\r\n})\r\nexport class XIconModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, Input, ViewEncapsulation, ChangeDetectionStrategy, NgModule } from '@angular/core';
|
|
2
|
+
import { Component, Input, ViewEncapsulation, ChangeDetectionStrategy, Optional, NgModule } from '@angular/core';
|
|
3
3
|
import { __decorate } from 'tslib';
|
|
4
4
|
import * as i2 from '@ng-nest/ui/core';
|
|
5
5
|
import { XDataConvert, XInputBoolean, XWithConfig, XInputNumber, XIsEmpty } from '@ng-nest/ui/core';
|
|
@@ -7,7 +7,6 @@ import * as i4 from '@ng-nest/ui/tree';
|
|
|
7
7
|
import { XTreeProperty, XTreeModule } from '@ng-nest/ui/tree';
|
|
8
8
|
import { delay } from 'rxjs/operators';
|
|
9
9
|
import * as i1 from '@angular/common/http';
|
|
10
|
-
import { HttpClientModule } from '@angular/common/http';
|
|
11
10
|
import * as i3 from '@angular/common';
|
|
12
11
|
import { CommonModule } from '@angular/common';
|
|
13
12
|
import * as i5 from '@ng-nest/ui/link';
|
|
@@ -127,6 +126,9 @@ class XTreeFileComponent extends XTreeFileProperty {
|
|
|
127
126
|
this.configService = configService;
|
|
128
127
|
this.loading = false;
|
|
129
128
|
this.timeout = 200;
|
|
129
|
+
if (!http) {
|
|
130
|
+
throw new Error(`${XTreeFilePrefix}: Not found 'HttpClient', You can import 'HttpClientModule' in your root module.`);
|
|
131
|
+
}
|
|
130
132
|
}
|
|
131
133
|
get catalogHeight() {
|
|
132
134
|
return Number(this.maxHeight);
|
|
@@ -201,24 +203,26 @@ class XTreeFileComponent extends XTreeFileProperty {
|
|
|
201
203
|
this.cdr.detectChanges();
|
|
202
204
|
}
|
|
203
205
|
}
|
|
204
|
-
/** @nocollapse */ XTreeFileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XTreeFileComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.HttpClient }, { token: i2.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
206
|
+
/** @nocollapse */ XTreeFileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XTreeFileComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.HttpClient, optional: true }, { token: i2.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
205
207
|
/** @nocollapse */ XTreeFileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: XTreeFileComponent, selector: "x-tree-file", usesInheritance: true, ngImport: i0, template: "<div #treeFile class=\"x-tree-file\" [ngClass]=\"classMap\" [class.x-tree-file-toggle]=\"toggle\">\r\n <div class=\"x-tree-file-catalog\" [style.max-height.rem]=\"catalogHeight\" *ngIf=\"showTree\">\r\n <x-tree\r\n [data]=\"data\"\r\n (activatedChange)=\"catalogChange($event)\"\r\n nodeOpen\r\n [expandedAll]=\"expandedAll\"\r\n [expandedLevel]=\"expandedLevel\"\r\n [expanded]=\"expanded\"\r\n [spacing]=\"spacing\"\r\n [activatedId]=\"activatedId\"\r\n ></x-tree>\r\n </div>\r\n <div class=\"x-tree-file-body\" [x-loading]=\"loading\">\r\n <div class=\"x-tree-file-crumb\" *ngIf=\"showCrumb\">\r\n <x-link icon=\"fto-menu\" *ngIf=\"showToggle && showTree\" (click)=\"menuToggle()\"></x-link>\r\n <x-crumb [data]=\"getCrumbData\" [separator]=\"separatorTpl\"></x-crumb>\r\n <ng-template #separatorTpl>\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </ng-template>\r\n </div>\r\n <div class=\"x-tree-file-content\" [style.max-height.rem]=\"codeHeight\" [ngSwitch]=\"activatedNode?.fileType\">\r\n <div *ngSwitchCase=\"'img'\" class=\"x-tree-file-img\"><img [src]=\"activatedNode?.url\" (load)=\"imgOnload()\"/></div>\r\n <x-highlight\r\n *ngSwitchCase=\"'code'\"\r\n [type]=\"activatedNode?.type\"\r\n [data]=\"activatedNode?.content\"\r\n [highlightLines]=\"getHighlightLines\"\r\n ></x-highlight>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".x-tree-file{margin:0;padding:0;display:flex;background-color:var(--x-background);border-radius:var(--x-border-radius);border:var(--x-border-width) var(--x-border-style) var(--x-border);color:var(--x-text)}.x-tree-file-catalog{width:0;overflow:auto;opacity:0;font-size:.8125rem;transition:var(--x-animation-duration-slow)}.x-tree-file-catalog .x-tree{padding:.5rem}.x-tree-file-catalog .x-tree-node-content{height:1.375rem}.x-tree-file-catalog .x-tree-node-content:hover,.x-tree-file-catalog .x-tree-node-content.x-activated{background-color:var(--x-border)}.x-tree-file-body{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.x-tree-file-crumb{background-color:var(--x-background);display:flex}.x-tree-file-crumb>x-link{line-height:1.5rem;height:1.5rem;transition:var(--x-animation-duration-base)}.x-tree-file-crumb>x-link>a{padding:0 .5rem}.x-tree-file-crumb>x-crumb{flex:1}.x-tree-file-crumb>x-crumb>.x-crumb{padding:0 .5rem;color:var(--x-text-300)}.x-tree-file-crumb>x-crumb>.x-crumb .x-crumb-separator{margin:0 .125rem}.x-tree-file-content{flex:1;overflow:auto;transition:var(--x-animation-duration-slow);display:flex;min-height:3rem}.x-tree-file-content>x-highlight{border:none}.x-tree-file-content>x-highlight>pre{overflow:inherit}.x-tree-file-content>.x-tree-file-img{margin:auto;padding:1.5rem;display:flex;align-items:center}.x-tree-file-content>.x-tree-file-img>img{max-width:100%;height:auto;margin:auto;box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);border-radius:var(--x-border-radius);background-color:var(--x-background-a100)}.x-tree-file-toggle>.x-tree-file-catalog{width:16rem;opacity:1;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4.XTreeComponent, selector: "x-tree" }, { kind: "component", type: i5.XLinkComponent, selector: "x-link" }, { kind: "component", type: i6.XCrumbComponent, selector: "x-crumb" }, { kind: "component", type: i7.XIconComponent, selector: "x-icon" }, { kind: "component", type: i8.XLoadingComponent, selector: "x-loading, [x-loading]" }, { kind: "component", type: i9.XHighlightComponent, selector: "x-highlight" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
206
208
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XTreeFileComponent, decorators: [{
|
|
207
209
|
type: Component,
|
|
208
210
|
args: [{ selector: `${XTreeFilePrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #treeFile class=\"x-tree-file\" [ngClass]=\"classMap\" [class.x-tree-file-toggle]=\"toggle\">\r\n <div class=\"x-tree-file-catalog\" [style.max-height.rem]=\"catalogHeight\" *ngIf=\"showTree\">\r\n <x-tree\r\n [data]=\"data\"\r\n (activatedChange)=\"catalogChange($event)\"\r\n nodeOpen\r\n [expandedAll]=\"expandedAll\"\r\n [expandedLevel]=\"expandedLevel\"\r\n [expanded]=\"expanded\"\r\n [spacing]=\"spacing\"\r\n [activatedId]=\"activatedId\"\r\n ></x-tree>\r\n </div>\r\n <div class=\"x-tree-file-body\" [x-loading]=\"loading\">\r\n <div class=\"x-tree-file-crumb\" *ngIf=\"showCrumb\">\r\n <x-link icon=\"fto-menu\" *ngIf=\"showToggle && showTree\" (click)=\"menuToggle()\"></x-link>\r\n <x-crumb [data]=\"getCrumbData\" [separator]=\"separatorTpl\"></x-crumb>\r\n <ng-template #separatorTpl>\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </ng-template>\r\n </div>\r\n <div class=\"x-tree-file-content\" [style.max-height.rem]=\"codeHeight\" [ngSwitch]=\"activatedNode?.fileType\">\r\n <div *ngSwitchCase=\"'img'\" class=\"x-tree-file-img\"><img [src]=\"activatedNode?.url\" (load)=\"imgOnload()\"/></div>\r\n <x-highlight\r\n *ngSwitchCase=\"'code'\"\r\n [type]=\"activatedNode?.type\"\r\n [data]=\"activatedNode?.content\"\r\n [highlightLines]=\"getHighlightLines\"\r\n ></x-highlight>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".x-tree-file{margin:0;padding:0;display:flex;background-color:var(--x-background);border-radius:var(--x-border-radius);border:var(--x-border-width) var(--x-border-style) var(--x-border);color:var(--x-text)}.x-tree-file-catalog{width:0;overflow:auto;opacity:0;font-size:.8125rem;transition:var(--x-animation-duration-slow)}.x-tree-file-catalog .x-tree{padding:.5rem}.x-tree-file-catalog .x-tree-node-content{height:1.375rem}.x-tree-file-catalog .x-tree-node-content:hover,.x-tree-file-catalog .x-tree-node-content.x-activated{background-color:var(--x-border)}.x-tree-file-body{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.x-tree-file-crumb{background-color:var(--x-background);display:flex}.x-tree-file-crumb>x-link{line-height:1.5rem;height:1.5rem;transition:var(--x-animation-duration-base)}.x-tree-file-crumb>x-link>a{padding:0 .5rem}.x-tree-file-crumb>x-crumb{flex:1}.x-tree-file-crumb>x-crumb>.x-crumb{padding:0 .5rem;color:var(--x-text-300)}.x-tree-file-crumb>x-crumb>.x-crumb .x-crumb-separator{margin:0 .125rem}.x-tree-file-content{flex:1;overflow:auto;transition:var(--x-animation-duration-slow);display:flex;min-height:3rem}.x-tree-file-content>x-highlight{border:none}.x-tree-file-content>x-highlight>pre{overflow:inherit}.x-tree-file-content>.x-tree-file-img{margin:auto;padding:1.5rem;display:flex;align-items:center}.x-tree-file-content>.x-tree-file-img>img{max-width:100%;height:auto;margin:auto;box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);border-radius:var(--x-border-radius);background-color:var(--x-background-a100)}.x-tree-file-toggle>.x-tree-file-catalog{width:16rem;opacity:1;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}\n"] }]
|
|
209
|
-
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.HttpClient
|
|
211
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.HttpClient, decorators: [{
|
|
212
|
+
type: Optional
|
|
213
|
+
}] }, { type: i2.XConfigService }]; } });
|
|
210
214
|
|
|
211
215
|
class XTreeFileModule {
|
|
212
216
|
}
|
|
213
217
|
/** @nocollapse */ XTreeFileModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XTreeFileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
214
|
-
/** @nocollapse */ XTreeFileModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: XTreeFileModule, declarations: [XTreeFileComponent, XTreeFileProperty], imports: [CommonModule,
|
|
215
|
-
/** @nocollapse */ XTreeFileModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XTreeFileModule, imports: [CommonModule,
|
|
218
|
+
/** @nocollapse */ XTreeFileModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: XTreeFileModule, declarations: [XTreeFileComponent, XTreeFileProperty], imports: [CommonModule, XTreeModule, XLinkModule, XCrumbModule, XIconModule, XLoadingModule, XHighlightModule], exports: [XTreeFileComponent] });
|
|
219
|
+
/** @nocollapse */ XTreeFileModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XTreeFileModule, imports: [CommonModule, XTreeModule, XLinkModule, XCrumbModule, XIconModule, XLoadingModule, XHighlightModule] });
|
|
216
220
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XTreeFileModule, decorators: [{
|
|
217
221
|
type: NgModule,
|
|
218
222
|
args: [{
|
|
219
223
|
declarations: [XTreeFileComponent, XTreeFileProperty],
|
|
220
224
|
exports: [XTreeFileComponent],
|
|
221
|
-
imports: [CommonModule,
|
|
225
|
+
imports: [CommonModule, XTreeModule, XLinkModule, XCrumbModule, XIconModule, XLoadingModule, XHighlightModule]
|
|
222
226
|
}]
|
|
223
227
|
}] });
|
|
224
228
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-tree-file.mjs","sources":["../../../../lib/ng-nest/ui/tree-file/tree-file.property.ts","../../../../lib/ng-nest/ui/tree-file/tree-file.component.ts","../../../../lib/ng-nest/ui/tree-file/tree-file.component.html","../../../../lib/ng-nest/ui/tree-file/tree-file.module.ts","../../../../lib/ng-nest/ui/tree-file/ng-nest-ui-tree-file.ts"],"sourcesContent":["import { XDataConvert, XData, XInputBoolean, XBoolean, XInputNumber, XNumber, XWithConfig } from '@ng-nest/ui/core';\r\nimport { Component, Input } from '@angular/core';\r\nimport { XTreeNode, XTreeProperty } from '@ng-nest/ui/tree';\r\nimport { XCrumbNode } from '@ng-nest/ui/crumb';\r\nimport { XHighlightLines } from '@ng-nest/ui/highlight';\r\n\r\n/**\r\n * TreeFile\r\n * @selector x-tree-file\r\n * @decorator component\r\n */\r\nexport const XTreeFilePrefix = 'x-tree-file';\r\nconst X_CONFIG_NAME = 'treeFile';\r\n\r\n/**\r\n * TreeFile Property\r\n */\r\n@Component({ template: '' })\r\nexport class XTreeFileProperty extends XTreeProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() @XDataConvert() override data: XData<XTreeFileNode> = [];\r\n /**\r\n * @zh_CN 文件绝对路径地址前缀,为空表示取当前运行的地址\r\n * @en_US File absolute path address prefix, empty means to take the address of the current operation\r\n */\r\n @Input() domain: string = '';\r\n /**\r\n * @zh_CN 切换状态\r\n * @en_US Switch state\r\n */\r\n @Input() @XInputBoolean() toggle: XBoolean = true;\r\n /**\r\n * @zh_CN 显示切换按钮\r\n * @en_US Show toggle button\r\n */\r\n @Input() @XInputBoolean() showToggle: XBoolean = true;\r\n /**\r\n * @zh_CN 显示树,为 true 的时候隐藏切换按钮\r\n * @en_US Show the tree, hide the toggle button when true\r\n */\r\n @Input() @XInputBoolean() showTree: XBoolean = true;\r\n /**\r\n * @zh_CN 显示面包屑\r\n * @en_US Show breadcrumbs\r\n */\r\n @Input() @XInputBoolean() showCrumb: XBoolean = true;\r\n /**\r\n * @zh_CN 最大高度,单位 rem\r\n * @en_US Maximum height, unit rem\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 37.5) @XInputNumber() maxHeight?: XNumber;\r\n /**\r\n * @zh_CN 单位间距,这个与层级的乘积算出节点的左边距,单位 rem\r\n * @en_US Unit spacing, the product of this and the level calculates the left margin of the node, the unit is rem\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 0.5) @XInputNumber() override spacing?: XNumber;\r\n}\r\n\r\n/**\r\n * @zh_CN TreeFile 数据对象\r\n * @en_US TreeFile data object\r\n */\r\nexport interface XTreeFileNode extends XTreeNode {\r\n /**\r\n * @zh_CN 子节点\r\n * @en_US Child node\r\n */\r\n children?: XTreeFileNode[];\r\n /**\r\n * @zh_CN 文件内容\r\n * @en_US Document content\r\n */\r\n content?: string;\r\n /**\r\n * @zh_CN 文件类型\r\n * @en_US File type\r\n */\r\n type?: string;\r\n /**\r\n * @zh_CN 文件分类\r\n * @en_US File classification\r\n */\r\n fileType?: XTreeFileType;\r\n /**\r\n * @zh_CN 文件地址,配置了地址将从 url 中加载文件内容\r\n * @en_US File address, the configured address will load the file content from url\r\n */\r\n url?: string;\r\n /**\r\n * @zh_CN 文件的面包屑数据\r\n * @en_US Breadcrumb data\r\n */\r\n crumbData?: XCrumbNode[];\r\n /**\r\n * @zh_CN 文件内容已经加载过\r\n * @en_US File content has been loaded\r\n */\r\n contentLoaded?: boolean;\r\n /**\r\n * @zh_CN 行高亮着色\r\n * @en_US Line highlight coloring\r\n */\r\n highlightLines?: XHighlightLines;\r\n}\r\n\r\n/**\r\n * @zh_CN 文件分类\r\n * @en_US File classification\r\n */\r\nexport type XTreeFileType = 'code' | 'img';\r\n\r\n/**\r\n * @zh_CN 支持显示的图片格式\r\n * @en_US Supported picture format\r\n */\r\nexport const XTreeFileImgs = ['webp', 'png', 'jpg', 'gif', 'jpeg', 'ico'];\r\n","import { Component, ViewEncapsulation, Renderer2, ElementRef, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { XTreeFilePrefix, XTreeFileProperty, XTreeFileNode, XTreeFileImgs } from './tree-file.property';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { XIsEmpty, XConfigService } from '@ng-nest/ui/core';\r\nimport { XCrumbNode } from '@ng-nest/ui/crumb';\r\nimport { delay } from 'rxjs/operators';\r\nimport { XHighlightLines } from '@ng-nest/ui/highlight';\r\n\r\n@Component({\r\n selector: `${XTreeFilePrefix}`,\r\n templateUrl: './tree-file.component.html',\r\n styleUrls: ['./tree-file.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeFileComponent extends XTreeFileProperty {\r\n activatedNode?: XTreeFileNode;\r\n loading: boolean = false;\r\n time!: number;\r\n timeout: number = 200;\r\n\r\n get catalogHeight() {\r\n return Number(this.maxHeight);\r\n }\r\n\r\n get codeHeight() {\r\n return Number(this.maxHeight) - (Boolean(this.showCrumb) ? 1.5 : 0);\r\n }\r\n\r\n get getCrumbData() {\r\n return this.activatedNode?.crumbData as XCrumbNode[];\r\n }\r\n\r\n get getHighlightLines() {\r\n return this.activatedNode?.highlightLines as XHighlightLines;\r\n }\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n public http: HttpClient,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.showTree && this.activatedId) {\r\n this.catalogChange((this.data as XTreeFileNode[]).find((x) => x.id == this.activatedId) as XTreeFileNode);\r\n }\r\n }\r\n\r\n catalogChange(node: XTreeFileNode) {\r\n if (node?.leaf) return;\r\n if (node.url && !node.contentLoaded) {\r\n this.time = new Date().getTime();\r\n this.loading = true;\r\n this.cdr.detectChanges();\r\n this.activatedNode = node;\r\n node.fileType = XTreeFileImgs.indexOf((node.type as string).toLowerCase()) !== -1 ? 'img' : 'code';\r\n node.crumbData = this.setCurmbData(node);\r\n node.url = node.url?.indexOf(this.domain) === 0 ? node.url : `${this.domain}/${node.url}`;\r\n switch (node.fileType) {\r\n case 'code':\r\n this.http\r\n .get(node.url, { responseType: 'text' })\r\n .pipe(delay(new Date().getTime() - this.time > this.timeout ? 0 : this.timeout - new Date().getTime() + this.time))\r\n .subscribe((x) => {\r\n node.content = x;\r\n node.contentLoaded = true;\r\n this.loading = false;\r\n this.cdr.detectChanges();\r\n });\r\n break;\r\n case 'img':\r\n this.cdr.detectChanges();\r\n break;\r\n }\r\n } else {\r\n this.activatedNode = node;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n imgOnload() {\r\n this.loading = false;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setCurmbData(node: XTreeFileNode) {\r\n let crumbData: XCrumbNode[] = [{ id: node.id, label: node.label }];\r\n const getParent = (child: XTreeFileNode) => {\r\n if (XIsEmpty(child.pid)) return;\r\n const parent = (this.data as XTreeFileNode[]).find((x) => x.id === child.pid) as XTreeFileNode;\r\n if (!XIsEmpty(parent)) {\r\n crumbData = [{ id: parent.id, label: parent.label }, ...crumbData];\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n\r\n return crumbData;\r\n }\r\n\r\n menuToggle() {\r\n this.toggle = !this.toggle;\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","<div #treeFile class=\"x-tree-file\" [ngClass]=\"classMap\" [class.x-tree-file-toggle]=\"toggle\">\r\n <div class=\"x-tree-file-catalog\" [style.max-height.rem]=\"catalogHeight\" *ngIf=\"showTree\">\r\n <x-tree\r\n [data]=\"data\"\r\n (activatedChange)=\"catalogChange($event)\"\r\n nodeOpen\r\n [expandedAll]=\"expandedAll\"\r\n [expandedLevel]=\"expandedLevel\"\r\n [expanded]=\"expanded\"\r\n [spacing]=\"spacing\"\r\n [activatedId]=\"activatedId\"\r\n ></x-tree>\r\n </div>\r\n <div class=\"x-tree-file-body\" [x-loading]=\"loading\">\r\n <div class=\"x-tree-file-crumb\" *ngIf=\"showCrumb\">\r\n <x-link icon=\"fto-menu\" *ngIf=\"showToggle && showTree\" (click)=\"menuToggle()\"></x-link>\r\n <x-crumb [data]=\"getCrumbData\" [separator]=\"separatorTpl\"></x-crumb>\r\n <ng-template #separatorTpl>\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </ng-template>\r\n </div>\r\n <div class=\"x-tree-file-content\" [style.max-height.rem]=\"codeHeight\" [ngSwitch]=\"activatedNode?.fileType\">\r\n <div *ngSwitchCase=\"'img'\" class=\"x-tree-file-img\"><img [src]=\"activatedNode?.url\" (load)=\"imgOnload()\"/></div>\r\n <x-highlight\r\n *ngSwitchCase=\"'code'\"\r\n [type]=\"activatedNode?.type\"\r\n [data]=\"activatedNode?.content\"\r\n [highlightLines]=\"getHighlightLines\"\r\n ></x-highlight>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { XTreeFileComponent } from './tree-file.component';\r\nimport { XTreeFileProperty } from './tree-file.property';\r\nimport { XTreeModule } from '@ng-nest/ui/tree';\r\nimport { XHighlightModule } from '@ng-nest/ui/highlight';\r\nimport { XCrumbModule } from '@ng-nest/ui/crumb';\r\nimport { XIconModule } from '@ng-nest/ui/icon';\r\nimport { XLinkModule } from '@ng-nest/ui/link';\r\nimport { XLoadingModule } from '@ng-nest/ui/loading';\r\n\r\n@NgModule({\r\n declarations: [XTreeFileComponent, XTreeFileProperty],\r\n exports: [XTreeFileComponent],\r\n imports: [CommonModule, HttpClientModule, XTreeModule, XLinkModule, XCrumbModule, XIconModule, XLoadingModule, XHighlightModule]\r\n})\r\nexport class XTreeFileModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAMA;;;;AAIG;AACI,MAAM,eAAe,GAAG,cAAc;AAC7C,MAAM,aAAa,GAAG,UAAU,CAAC;AAEjC;;AAEG;AAEG,MAAO,iBAAkB,SAAQ,aAAa,CAAA;AADpD,IAAA,WAAA,GAAA;;AAEE;;;AAGG;QAC+B,IAAI,CAAA,IAAA,GAAyB,EAAE,CAAC;AAClE;;;AAGG;QACM,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;AAC7B;;;AAGG;QACuB,IAAM,CAAA,MAAA,GAAa,IAAI,CAAC;AAClD;;;AAGG;QACuB,IAAU,CAAA,UAAA,GAAa,IAAI,CAAC;AACtD;;;AAGG;QACuB,IAAQ,CAAA,QAAA,GAAa,IAAI,CAAC;AACpD;;;AAGG;QACuB,IAAS,CAAA,SAAA,GAAa,IAAI,CAAC;AAWtD,KAAA;;kIAzCY,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,mBAAA,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,6PADP,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;AAMb,IAAA,YAAY,EAAE;AAA0C,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;AAUxD,IAAA,aAAa,EAAE;AAAyB,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;AAKxC,IAAA,aAAa,EAAE;AAA6B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;AAK5C,IAAA,aAAa,EAAE;AAA2B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;AAK1C,IAAA,aAAa,EAAE;AAA4B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;AAK3C,IAAA,WAAW,CAAU,aAAa,EAAE,IAAI,CAAC;AAAE,IAAA,YAAY,EAAE;AAAqB,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;AAK9E,IAAA,WAAW,CAAU,aAAa,EAAE,GAAG,CAAC;AAAE,IAAA,YAAY,EAAE;AAA4B,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;4FAxCnF,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,SAAS;mBAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;8BAMS,IAAI,EAAA,CAAA;sBAArC,KAAK;gBAKG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAKoB,MAAM,EAAA,CAAA;sBAA/B,KAAK;gBAKoB,UAAU,EAAA,CAAA;sBAAnC,KAAK;gBAKoB,QAAQ,EAAA,CAAA;sBAAjC,KAAK;gBAKoB,SAAS,EAAA,CAAA;sBAAlC,KAAK;gBAK8D,SAAS,EAAA,CAAA;sBAA5E,KAAK;gBAKsE,OAAO,EAAA,CAAA;sBAAlF,KAAK;;AAwDR;;;AAGG;AACU,MAAA,aAAa,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;;ACvGlE,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;IAsBvD,WACS,CAAA,QAAmB,EACnB,UAAsB,EACtB,GAAsB,EACtB,IAAgB,EAChB,aAA6B,EAAA;AAEpC,QAAA,KAAK,EAAE,CAAC;QAND,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QACtB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;QAChB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAgB;QAzBtC,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;QAEzB,IAAO,CAAA,OAAA,GAAW,GAAG,CAAC;KA0BrB;AAxBD,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC/B;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;KACrE;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,SAAyB,CAAC;KACtD;AAED,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,cAAiC,CAAC;KAC9D;IAYD,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;YACtC,IAAI,CAAC,aAAa,CAAE,IAAI,CAAC,IAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,CAAkB,CAAC,CAAC;AAC3G,SAAA;KACF;AAED,IAAA,aAAa,CAAC,IAAmB,EAAA;QAC/B,IAAI,IAAI,EAAE,IAAI;YAAE,OAAO;QACvB,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACnC,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AACjC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAE,IAAI,CAAC,IAAe,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC;YACnG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,CAAI,CAAA,EAAA,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1F,QAAQ,IAAI,CAAC,QAAQ;AACnB,gBAAA,KAAK,MAAM;AACT,oBAAA,IAAI,CAAC,IAAI;yBACN,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;AACvC,yBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AAClH,yBAAA,SAAS,CAAC,CAAC,CAAC,KAAI;AACf,wBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACjB,wBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,wBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,wBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3B,qBAAC,CAAC,CAAC;oBACL,MAAM;AACR,gBAAA,KAAK,KAAK;AACR,oBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;oBACzB,MAAM;AACT,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC1B,SAAA;KACF;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;AAED,IAAA,YAAY,CAAC,IAAmB,EAAA;AAC9B,QAAA,IAAI,SAAS,GAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AACnE,QAAA,MAAM,SAAS,GAAG,CAAC,KAAoB,KAAI;AACzC,YAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,OAAO;YAChC,MAAM,MAAM,GAAI,IAAI,CAAC,IAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,GAAG,CAAkB,CAAC;AAC/F,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACrB,gBAAA,SAAS,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,SAAS,CAAC,CAAC;gBACnE,SAAS,CAAC,MAAM,CAAC,CAAC;AACnB,aAAA;AACH,SAAC,CAAC;QACF,SAAS,CAAC,IAAI,CAAC,CAAC;AAEhB,QAAA,OAAO,SAAS,CAAC;KAClB;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;;mIA7FU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,mBAAA,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,0ECf/B,m8CAgCA,EAAA,MAAA,EAAA,CAAA,4rDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FDjBa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;+BACE,CAAG,EAAA,eAAe,EAAE,EAGf,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,m8CAAA,EAAA,MAAA,EAAA,CAAA,4rDAAA,CAAA,EAAA,CAAA;;;MEIpC,eAAe,CAAA;;gIAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;iIAAf,eAAe,EAAA,YAAA,EAAA,CAJX,kBAAkB,EAAE,iBAAiB,aAE1C,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CADrH,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAGjB,mBAAA,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAFhB,OAAA,EAAA,CAAA,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;4FAEpH,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;oBACrD,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC7B,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,CAAC;AACjI,iBAAA,CAAA;;;AChBD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-tree-file.mjs","sources":["../../../../lib/ng-nest/ui/tree-file/tree-file.property.ts","../../../../lib/ng-nest/ui/tree-file/tree-file.component.ts","../../../../lib/ng-nest/ui/tree-file/tree-file.component.html","../../../../lib/ng-nest/ui/tree-file/tree-file.module.ts","../../../../lib/ng-nest/ui/tree-file/ng-nest-ui-tree-file.ts"],"sourcesContent":["import { XDataConvert, XData, XInputBoolean, XBoolean, XInputNumber, XNumber, XWithConfig } from '@ng-nest/ui/core';\r\nimport { Component, Input } from '@angular/core';\r\nimport { XTreeNode, XTreeProperty } from '@ng-nest/ui/tree';\r\nimport { XCrumbNode } from '@ng-nest/ui/crumb';\r\nimport { XHighlightLines } from '@ng-nest/ui/highlight';\r\n\r\n/**\r\n * TreeFile\r\n * @selector x-tree-file\r\n * @decorator component\r\n */\r\nexport const XTreeFilePrefix = 'x-tree-file';\r\nconst X_CONFIG_NAME = 'treeFile';\r\n\r\n/**\r\n * TreeFile Property\r\n */\r\n@Component({ template: '' })\r\nexport class XTreeFileProperty extends XTreeProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() @XDataConvert() override data: XData<XTreeFileNode> = [];\r\n /**\r\n * @zh_CN 文件绝对路径地址前缀,为空表示取当前运行的地址\r\n * @en_US File absolute path address prefix, empty means to take the address of the current operation\r\n */\r\n @Input() domain: string = '';\r\n /**\r\n * @zh_CN 切换状态\r\n * @en_US Switch state\r\n */\r\n @Input() @XInputBoolean() toggle: XBoolean = true;\r\n /**\r\n * @zh_CN 显示切换按钮\r\n * @en_US Show toggle button\r\n */\r\n @Input() @XInputBoolean() showToggle: XBoolean = true;\r\n /**\r\n * @zh_CN 显示树,为 true 的时候隐藏切换按钮\r\n * @en_US Show the tree, hide the toggle button when true\r\n */\r\n @Input() @XInputBoolean() showTree: XBoolean = true;\r\n /**\r\n * @zh_CN 显示面包屑\r\n * @en_US Show breadcrumbs\r\n */\r\n @Input() @XInputBoolean() showCrumb: XBoolean = true;\r\n /**\r\n * @zh_CN 最大高度,单位 rem\r\n * @en_US Maximum height, unit rem\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 37.5) @XInputNumber() maxHeight?: XNumber;\r\n /**\r\n * @zh_CN 单位间距,这个与层级的乘积算出节点的左边距,单位 rem\r\n * @en_US Unit spacing, the product of this and the level calculates the left margin of the node, the unit is rem\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 0.5) @XInputNumber() override spacing?: XNumber;\r\n}\r\n\r\n/**\r\n * @zh_CN TreeFile 数据对象\r\n * @en_US TreeFile data object\r\n */\r\nexport interface XTreeFileNode extends XTreeNode {\r\n /**\r\n * @zh_CN 子节点\r\n * @en_US Child node\r\n */\r\n children?: XTreeFileNode[];\r\n /**\r\n * @zh_CN 文件内容\r\n * @en_US Document content\r\n */\r\n content?: string;\r\n /**\r\n * @zh_CN 文件类型\r\n * @en_US File type\r\n */\r\n type?: string;\r\n /**\r\n * @zh_CN 文件分类\r\n * @en_US File classification\r\n */\r\n fileType?: XTreeFileType;\r\n /**\r\n * @zh_CN 文件地址,配置了地址将从 url 中加载文件内容\r\n * @en_US File address, the configured address will load the file content from url\r\n */\r\n url?: string;\r\n /**\r\n * @zh_CN 文件的面包屑数据\r\n * @en_US Breadcrumb data\r\n */\r\n crumbData?: XCrumbNode[];\r\n /**\r\n * @zh_CN 文件内容已经加载过\r\n * @en_US File content has been loaded\r\n */\r\n contentLoaded?: boolean;\r\n /**\r\n * @zh_CN 行高亮着色\r\n * @en_US Line highlight coloring\r\n */\r\n highlightLines?: XHighlightLines;\r\n}\r\n\r\n/**\r\n * @zh_CN 文件分类\r\n * @en_US File classification\r\n */\r\nexport type XTreeFileType = 'code' | 'img';\r\n\r\n/**\r\n * @zh_CN 支持显示的图片格式\r\n * @en_US Supported picture format\r\n */\r\nexport const XTreeFileImgs = ['webp', 'png', 'jpg', 'gif', 'jpeg', 'ico'];\r\n","import { Component, ViewEncapsulation, Renderer2, ElementRef, ChangeDetectorRef, ChangeDetectionStrategy, Optional } from '@angular/core';\r\nimport { XTreeFilePrefix, XTreeFileProperty, XTreeFileNode, XTreeFileImgs } from './tree-file.property';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { XIsEmpty, XConfigService } from '@ng-nest/ui/core';\r\nimport { XCrumbNode } from '@ng-nest/ui/crumb';\r\nimport { delay } from 'rxjs/operators';\r\nimport { XHighlightLines } from '@ng-nest/ui/highlight';\r\n\r\n@Component({\r\n selector: `${XTreeFilePrefix}`,\r\n templateUrl: './tree-file.component.html',\r\n styleUrls: ['./tree-file.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeFileComponent extends XTreeFileProperty {\r\n activatedNode?: XTreeFileNode;\r\n loading: boolean = false;\r\n time!: number;\r\n timeout: number = 200;\r\n\r\n get catalogHeight() {\r\n return Number(this.maxHeight);\r\n }\r\n\r\n get codeHeight() {\r\n return Number(this.maxHeight) - (Boolean(this.showCrumb) ? 1.5 : 0);\r\n }\r\n\r\n get getCrumbData() {\r\n return this.activatedNode?.crumbData as XCrumbNode[];\r\n }\r\n\r\n get getHighlightLines() {\r\n return this.activatedNode?.highlightLines as XHighlightLines;\r\n }\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n @Optional() public http: HttpClient,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n if (!http) {\r\n throw new Error(`${XTreeFilePrefix}: Not found 'HttpClient', You can import 'HttpClientModule' in your root module.`);\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.showTree && this.activatedId) {\r\n this.catalogChange((this.data as XTreeFileNode[]).find((x) => x.id == this.activatedId) as XTreeFileNode);\r\n }\r\n }\r\n\r\n catalogChange(node: XTreeFileNode) {\r\n if (node?.leaf) return;\r\n if (node.url && !node.contentLoaded) {\r\n this.time = new Date().getTime();\r\n this.loading = true;\r\n this.cdr.detectChanges();\r\n this.activatedNode = node;\r\n node.fileType = XTreeFileImgs.indexOf((node.type as string).toLowerCase()) !== -1 ? 'img' : 'code';\r\n node.crumbData = this.setCurmbData(node);\r\n node.url = node.url?.indexOf(this.domain) === 0 ? node.url : `${this.domain}/${node.url}`;\r\n switch (node.fileType) {\r\n case 'code':\r\n this.http\r\n .get(node.url, { responseType: 'text' })\r\n .pipe(delay(new Date().getTime() - this.time > this.timeout ? 0 : this.timeout - new Date().getTime() + this.time))\r\n .subscribe((x) => {\r\n node.content = x;\r\n node.contentLoaded = true;\r\n this.loading = false;\r\n this.cdr.detectChanges();\r\n });\r\n break;\r\n case 'img':\r\n this.cdr.detectChanges();\r\n break;\r\n }\r\n } else {\r\n this.activatedNode = node;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n imgOnload() {\r\n this.loading = false;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setCurmbData(node: XTreeFileNode) {\r\n let crumbData: XCrumbNode[] = [{ id: node.id, label: node.label }];\r\n const getParent = (child: XTreeFileNode) => {\r\n if (XIsEmpty(child.pid)) return;\r\n const parent = (this.data as XTreeFileNode[]).find((x) => x.id === child.pid) as XTreeFileNode;\r\n if (!XIsEmpty(parent)) {\r\n crumbData = [{ id: parent.id, label: parent.label }, ...crumbData];\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n\r\n return crumbData;\r\n }\r\n\r\n menuToggle() {\r\n this.toggle = !this.toggle;\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","<div #treeFile class=\"x-tree-file\" [ngClass]=\"classMap\" [class.x-tree-file-toggle]=\"toggle\">\r\n <div class=\"x-tree-file-catalog\" [style.max-height.rem]=\"catalogHeight\" *ngIf=\"showTree\">\r\n <x-tree\r\n [data]=\"data\"\r\n (activatedChange)=\"catalogChange($event)\"\r\n nodeOpen\r\n [expandedAll]=\"expandedAll\"\r\n [expandedLevel]=\"expandedLevel\"\r\n [expanded]=\"expanded\"\r\n [spacing]=\"spacing\"\r\n [activatedId]=\"activatedId\"\r\n ></x-tree>\r\n </div>\r\n <div class=\"x-tree-file-body\" [x-loading]=\"loading\">\r\n <div class=\"x-tree-file-crumb\" *ngIf=\"showCrumb\">\r\n <x-link icon=\"fto-menu\" *ngIf=\"showToggle && showTree\" (click)=\"menuToggle()\"></x-link>\r\n <x-crumb [data]=\"getCrumbData\" [separator]=\"separatorTpl\"></x-crumb>\r\n <ng-template #separatorTpl>\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </ng-template>\r\n </div>\r\n <div class=\"x-tree-file-content\" [style.max-height.rem]=\"codeHeight\" [ngSwitch]=\"activatedNode?.fileType\">\r\n <div *ngSwitchCase=\"'img'\" class=\"x-tree-file-img\"><img [src]=\"activatedNode?.url\" (load)=\"imgOnload()\"/></div>\r\n <x-highlight\r\n *ngSwitchCase=\"'code'\"\r\n [type]=\"activatedNode?.type\"\r\n [data]=\"activatedNode?.content\"\r\n [highlightLines]=\"getHighlightLines\"\r\n ></x-highlight>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XTreeFileComponent } from './tree-file.component';\r\nimport { XTreeFileProperty } from './tree-file.property';\r\nimport { XTreeModule } from '@ng-nest/ui/tree';\r\nimport { XHighlightModule } from '@ng-nest/ui/highlight';\r\nimport { XCrumbModule } from '@ng-nest/ui/crumb';\r\nimport { XIconModule } from '@ng-nest/ui/icon';\r\nimport { XLinkModule } from '@ng-nest/ui/link';\r\nimport { XLoadingModule } from '@ng-nest/ui/loading';\r\n\r\n@NgModule({\r\n declarations: [XTreeFileComponent, XTreeFileProperty],\r\n exports: [XTreeFileComponent],\r\n imports: [CommonModule, XTreeModule, XLinkModule, XCrumbModule, XIconModule, XLoadingModule, XHighlightModule]\r\n})\r\nexport class XTreeFileModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i1$1 from '@angular/common/http';
|
|
2
2
|
import { HttpRequest, HttpHeaders, HttpEventType } from '@angular/common/http';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { EventEmitter, Component, Input, Output, ViewEncapsulation, ChangeDetectionStrategy, Inject, ViewChild, NgModule } from '@angular/core';
|
|
4
|
+
import { EventEmitter, Component, Input, Output, ViewEncapsulation, ChangeDetectionStrategy, Inject, ViewChild, Optional, NgModule } from '@angular/core';
|
|
5
5
|
import { __decorate } from 'tslib';
|
|
6
6
|
import * as i4 from '@ng-nest/ui/core';
|
|
7
7
|
import { XInputBoolean, XWithConfig, XInputNumber, XClamp, XIsTemplateRef, XIsArray } from '@ng-nest/ui/core';
|
|
@@ -342,6 +342,9 @@ class XUploadComponent extends XUploadProperty {
|
|
|
342
342
|
this.uploadNodes = [];
|
|
343
343
|
this.locale = {};
|
|
344
344
|
this._unSubject = new Subject();
|
|
345
|
+
if (!http) {
|
|
346
|
+
throw new Error(`${XUploadPrefix}: Not found 'HttpClient', You can import 'HttpClientModule' in your root module.`);
|
|
347
|
+
}
|
|
345
348
|
}
|
|
346
349
|
get getText() {
|
|
347
350
|
return this.text || this.locale.uploadText;
|
|
@@ -545,12 +548,14 @@ class XUploadComponent extends XUploadProperty {
|
|
|
545
548
|
this.cdr.detectChanges();
|
|
546
549
|
}
|
|
547
550
|
}
|
|
548
|
-
/** @nocollapse */ XUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XUploadComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1$1.HttpClient }, { token: i0.ChangeDetectorRef }, { token: i2.XPortalService }, { token: i0.ViewContainerRef }, { token: i3.XI18nService }, { token: i4.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
551
|
+
/** @nocollapse */ XUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XUploadComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1$1.HttpClient, optional: true }, { token: i0.ChangeDetectorRef }, { token: i2.XPortalService }, { token: i0.ViewContainerRef }, { token: i3.XI18nService }, { token: i4.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
549
552
|
/** @nocollapse */ XUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: XUploadComponent, selector: "x-upload", providers: [XValueAccessor(XUploadComponent)], viewQueries: [{ propertyName: "file", first: true, predicate: ["file"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div #upload class=\"x-upload x-upload-{{ type }}\" [class.x-disabled]=\"disabled\">\r\n <input type=\"file\" #file (change)=\"change($event)\" [attr.accept]=\"accept\" [multiple]=\"multiple\" style=\"display: none\" />\r\n\r\n <ng-container [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'list'\">\r\n <ng-container *ngTemplateOutlet=\"uploadBtnTpl\"></ng-container>\r\n <ng-container *xOutlet=\"filesTpl; context: { $files: files }\">\r\n <ul class=\"x-upload-files\">\r\n <li *ngFor=\"let file of files; index as i; trackBy: trackByItem\" [class.x-upload-disabled]=\"!download\">\r\n <ng-container *ngIf=\"download\">\r\n <a [href]=\"file.url\" target=\"_blank\" [title]=\"file.name\">\r\n <x-icon type=\"fto-file-text\"></x-icon>\r\n <span class=\"x-upload-filename\">{{ file.name }}</span>\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"!download\">\r\n <a>\r\n <x-icon type=\"fto-file-text\"></x-icon>\r\n <span class=\"x-upload-filename\">{{ file.name }}</span>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-container [ngSwitch]=\"file.state\">\r\n <x-icon class=\"x-upload-state\" *ngSwitchCase=\"'ready'\" type=\"fto-clock\"></x-icon>\r\n <span class=\"x-upload-percent\" *ngSwitchCase=\"'uploading'\">{{ file.percent }}%</span>\r\n <x-icon class=\"x-upload-state success\" *ngSwitchCase=\"'success'\" type=\"fto-check\"></x-icon>\r\n <x-icon class=\"x-upload-state error\" *ngSwitchCase=\"'error'\" type=\"fto-info\"></x-icon>\r\n </ng-container>\r\n <x-button *ngIf=\"file.state !== 'uploading'\" icon=\"fto-x\" (click)=\"remove(file, i)\" onlyIcon closable size=\"mini\"></x-button>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'img'\">\r\n <x-image-group>\r\n <ng-container *ngFor=\"let file of files; index as i; trackBy: trackByItem\">\r\n <x-image\r\n [src]=\"file.url\"\r\n (load)=\"imgLoad(file)\"\r\n (error)=\"imgError($event, file)\"\r\n class=\"{{ file.state }}\"\r\n [previewTpl]=\"previewTpl\"\r\n [fallback]=\"imgFallback\"\r\n >\r\n </x-image>\r\n <ng-template #previewTpl let-image=\"$image\">\r\n <div class=\"x-upload-uploading\" *ngIf=\"file.state == 'uploading'\">\r\n <x-progress [percent]=\"file.percent!\" info=\"false\"></x-progress>\r\n </div>\r\n <div class=\"x-image-overlay\">\r\n <ng-container [ngSwitch]=\"file.state\">\r\n <x-icon class=\"x-upload-state\" *ngSwitchCase=\"'ready'\" type=\"fto-clock\"></x-icon>\r\n <x-icon type=\"fto-eye\" *ngSwitchCase=\"'success'\" (click)=\"image.onPreview()\"></x-icon>\r\n </ng-container>\r\n <x-icon *ngIf=\"imgCut && file.state === 'success'\" type=\"fto-crop\" (click)=\"onImgCut(file, i)\"></x-icon>\r\n <x-icon *ngIf=\"file.state !== 'uploading'\" type=\"fto-trash-2\" (click)=\"remove(file, i)\"></x-icon>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"uploadBtnTpl\"></ng-container>\r\n </x-image-group>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #uploadBtnTpl>\r\n <div class=\"x-upload-buttons\" [class.x-upload-buttons-template]=\"isTemplateText\" (click)=\"uploadClick()\">\r\n <ng-container *xOutlet=\"getText\">\r\n <x-button icon=\"fto-upload\" [disabled]=\"disabled\" type=\"primary\">{{ getText }}</x-button>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: [".x-upload{margin:0;padding:0;color:var(--x-text);font-size:var(--x-font-size)}.x-upload-buttons{display:inline-flex}.x-upload-buttons>.x-button:not(:first-child){margin-left:.4rem}.x-upload-buttons-template{cursor:pointer}.x-upload-files{margin-top:.4rem}.x-upload-files>li{padding:0 .2rem;height:calc(var(--x-font-size) + .6rem);line-height:calc(var(--x-font-size) + .6rem);display:flex;align-items:center;overflow:hidden;cursor:pointer;border-radius:var(--x-border-radius)}.x-upload-files>li .x-icon{color:var(--x-text-400);font-size:1rem}.x-upload-files>li .x-icon.x-upload-state.success{color:var(--x-success)}.x-upload-files>li .x-icon.x-upload-state.error{color:var(--x-danger)}.x-upload-files>li a{flex:1;display:flex;align-items:center;height:calc(var(--x-font-size) + .6rem);line-height:calc(var(--x-font-size) + .6rem);color:inherit;text-decoration:none;overflow:hidden}.x-upload-files>li span.x-upload-filename{margin-left:.2rem;flex:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.x-upload-files>li span.x-upload-percent{color:var(--x-text-400)}.x-upload-files>li>.x-button{display:none;padding:0}.x-upload-files>li:not(:first-child){margin-top:.2rem}.x-upload-files>li.x-upload-disabled{cursor:default}.x-upload-files>li.x-upload-disabled>a{cursor:default}.x-upload-files>li:hover:not(.x-upload-disabled){color:var(--x-primary);background-color:var(--x-background)}.x-upload-files>li:hover>.x-button{display:inline-block}.x-upload-files>li:hover>.x-upload-state{display:none}.x-upload-img{display:flex;flex-wrap:wrap}.x-upload-img .x-upload-buttons-template{display:inline-flex;align-items:center;justify-content:center;flex-direction:column;width:6.25rem;height:6.25rem;margin-right:.5rem;margin-bottom:.5rem;border:var(--x-border-width) dashed var(--x-border);background:var(--x-background);border-radius:var(--x-border-radius);transition:border-color var(--x-animation-duration-base)}.x-upload-img .x-upload-buttons-template:hover{border-color:var(--x-primary)}.x-upload-img .x-image{height:6.25rem;width:6.25rem;padding:.325rem;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);transition:border-color var(--x-animation-duration-base);margin-right:.5rem;margin-bottom:.5rem;position:relative;display:flex;align-items:center;justify-content:center}.x-upload-img .x-image-overlay x-icon{font-size:1rem;color:#fffc;padding:.25rem;transition:color var(--x-animation-duration-base)}.x-upload-img .x-image-overlay x-icon:hover{color:#fff}.x-upload-img x-image.error .x-image{border-color:var(--x-danger)}.x-upload-img x-image.error .x-image-error-icon{color:var(--x-danger)}.x-upload-uploading{position:absolute;margin-top:3rem;width:calc(100% - 1rem)}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: i7.XButtonComponent, selector: "x-button" }, { kind: "component", type: i1.XIconComponent, selector: "x-icon" }, { kind: "component", type: i9.XImageComponent, selector: "x-image" }, { kind: "component", type: i9.XImageGroupComponent, selector: "x-image-group" }, { kind: "component", type: i10.XProgressComponent, selector: "x-progress" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
550
553
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: XUploadComponent, decorators: [{
|
|
551
554
|
type: Component,
|
|
552
555
|
args: [{ selector: `${XUploadPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XUploadComponent)], template: "<div #upload class=\"x-upload x-upload-{{ type }}\" [class.x-disabled]=\"disabled\">\r\n <input type=\"file\" #file (change)=\"change($event)\" [attr.accept]=\"accept\" [multiple]=\"multiple\" style=\"display: none\" />\r\n\r\n <ng-container [ngSwitch]=\"type\">\r\n <ng-container *ngSwitchCase=\"'list'\">\r\n <ng-container *ngTemplateOutlet=\"uploadBtnTpl\"></ng-container>\r\n <ng-container *xOutlet=\"filesTpl; context: { $files: files }\">\r\n <ul class=\"x-upload-files\">\r\n <li *ngFor=\"let file of files; index as i; trackBy: trackByItem\" [class.x-upload-disabled]=\"!download\">\r\n <ng-container *ngIf=\"download\">\r\n <a [href]=\"file.url\" target=\"_blank\" [title]=\"file.name\">\r\n <x-icon type=\"fto-file-text\"></x-icon>\r\n <span class=\"x-upload-filename\">{{ file.name }}</span>\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"!download\">\r\n <a>\r\n <x-icon type=\"fto-file-text\"></x-icon>\r\n <span class=\"x-upload-filename\">{{ file.name }}</span>\r\n </a>\r\n </ng-container>\r\n\r\n <ng-container [ngSwitch]=\"file.state\">\r\n <x-icon class=\"x-upload-state\" *ngSwitchCase=\"'ready'\" type=\"fto-clock\"></x-icon>\r\n <span class=\"x-upload-percent\" *ngSwitchCase=\"'uploading'\">{{ file.percent }}%</span>\r\n <x-icon class=\"x-upload-state success\" *ngSwitchCase=\"'success'\" type=\"fto-check\"></x-icon>\r\n <x-icon class=\"x-upload-state error\" *ngSwitchCase=\"'error'\" type=\"fto-info\"></x-icon>\r\n </ng-container>\r\n <x-button *ngIf=\"file.state !== 'uploading'\" icon=\"fto-x\" (click)=\"remove(file, i)\" onlyIcon closable size=\"mini\"></x-button>\r\n </li>\r\n </ul>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"'img'\">\r\n <x-image-group>\r\n <ng-container *ngFor=\"let file of files; index as i; trackBy: trackByItem\">\r\n <x-image\r\n [src]=\"file.url\"\r\n (load)=\"imgLoad(file)\"\r\n (error)=\"imgError($event, file)\"\r\n class=\"{{ file.state }}\"\r\n [previewTpl]=\"previewTpl\"\r\n [fallback]=\"imgFallback\"\r\n >\r\n </x-image>\r\n <ng-template #previewTpl let-image=\"$image\">\r\n <div class=\"x-upload-uploading\" *ngIf=\"file.state == 'uploading'\">\r\n <x-progress [percent]=\"file.percent!\" info=\"false\"></x-progress>\r\n </div>\r\n <div class=\"x-image-overlay\">\r\n <ng-container [ngSwitch]=\"file.state\">\r\n <x-icon class=\"x-upload-state\" *ngSwitchCase=\"'ready'\" type=\"fto-clock\"></x-icon>\r\n <x-icon type=\"fto-eye\" *ngSwitchCase=\"'success'\" (click)=\"image.onPreview()\"></x-icon>\r\n </ng-container>\r\n <x-icon *ngIf=\"imgCut && file.state === 'success'\" type=\"fto-crop\" (click)=\"onImgCut(file, i)\"></x-icon>\r\n <x-icon *ngIf=\"file.state !== 'uploading'\" type=\"fto-trash-2\" (click)=\"remove(file, i)\"></x-icon>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"uploadBtnTpl\"></ng-container>\r\n </x-image-group>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #uploadBtnTpl>\r\n <div class=\"x-upload-buttons\" [class.x-upload-buttons-template]=\"isTemplateText\" (click)=\"uploadClick()\">\r\n <ng-container *xOutlet=\"getText\">\r\n <x-button icon=\"fto-upload\" [disabled]=\"disabled\" type=\"primary\">{{ getText }}</x-button>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n", styles: [".x-upload{margin:0;padding:0;color:var(--x-text);font-size:var(--x-font-size)}.x-upload-buttons{display:inline-flex}.x-upload-buttons>.x-button:not(:first-child){margin-left:.4rem}.x-upload-buttons-template{cursor:pointer}.x-upload-files{margin-top:.4rem}.x-upload-files>li{padding:0 .2rem;height:calc(var(--x-font-size) + .6rem);line-height:calc(var(--x-font-size) + .6rem);display:flex;align-items:center;overflow:hidden;cursor:pointer;border-radius:var(--x-border-radius)}.x-upload-files>li .x-icon{color:var(--x-text-400);font-size:1rem}.x-upload-files>li .x-icon.x-upload-state.success{color:var(--x-success)}.x-upload-files>li .x-icon.x-upload-state.error{color:var(--x-danger)}.x-upload-files>li a{flex:1;display:flex;align-items:center;height:calc(var(--x-font-size) + .6rem);line-height:calc(var(--x-font-size) + .6rem);color:inherit;text-decoration:none;overflow:hidden}.x-upload-files>li span.x-upload-filename{margin-left:.2rem;flex:1;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.x-upload-files>li span.x-upload-percent{color:var(--x-text-400)}.x-upload-files>li>.x-button{display:none;padding:0}.x-upload-files>li:not(:first-child){margin-top:.2rem}.x-upload-files>li.x-upload-disabled{cursor:default}.x-upload-files>li.x-upload-disabled>a{cursor:default}.x-upload-files>li:hover:not(.x-upload-disabled){color:var(--x-primary);background-color:var(--x-background)}.x-upload-files>li:hover>.x-button{display:inline-block}.x-upload-files>li:hover>.x-upload-state{display:none}.x-upload-img{display:flex;flex-wrap:wrap}.x-upload-img .x-upload-buttons-template{display:inline-flex;align-items:center;justify-content:center;flex-direction:column;width:6.25rem;height:6.25rem;margin-right:.5rem;margin-bottom:.5rem;border:var(--x-border-width) dashed var(--x-border);background:var(--x-background);border-radius:var(--x-border-radius);transition:border-color var(--x-animation-duration-base)}.x-upload-img .x-upload-buttons-template:hover{border-color:var(--x-primary)}.x-upload-img .x-image{height:6.25rem;width:6.25rem;padding:.325rem;border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);transition:border-color var(--x-animation-duration-base);margin-right:.5rem;margin-bottom:.5rem;position:relative;display:flex;align-items:center;justify-content:center}.x-upload-img .x-image-overlay x-icon{font-size:1rem;color:#fffc;padding:.25rem;transition:color var(--x-animation-duration-base)}.x-upload-img .x-image-overlay x-icon:hover{color:#fff}.x-upload-img x-image.error .x-image{border-color:var(--x-danger)}.x-upload-img x-image.error .x-image-error-icon{color:var(--x-danger)}.x-upload-uploading{position:absolute;margin-top:3rem;width:calc(100% - 1rem)}\n"] }]
|
|
553
|
-
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1$1.HttpClient
|
|
556
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1$1.HttpClient, decorators: [{
|
|
557
|
+
type: Optional
|
|
558
|
+
}] }, { type: i0.ChangeDetectorRef }, { type: i2.XPortalService }, { type: i0.ViewContainerRef }, { type: i3.XI18nService }, { type: i4.XConfigService }]; }, propDecorators: { file: [{
|
|
554
559
|
type: ViewChild,
|
|
555
560
|
args: ['file', { static: true }]
|
|
556
561
|
}] } });
|