ng-devui
Version:
DevUI components based on Angular
1 lines • 40.2 kB
Source Map (JSON)
{"version":3,"file":"ng-devui-common.mjs","sources":["../../devui/common/auto-focus.directive.ts","../../devui/common/clipboard.directive.ts","../../devui/common/date-pipe.ts","../../devui/common/safe-null.pipe.ts","../../devui/common/helper-utils.ts","../../devui/common/iframe-event-propagate.directive.ts","../../devui/common/shapeIconHoverable.directive.ts","../../devui/common/common.module.ts","../../devui/common/ng-devui-common.ts"],"sourcesContent":["import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n selector: '[dAutoFocus]',\n})\nexport class AutoFocusDirective implements AfterViewInit {\n\n @Input('dAutoFocus') autoFocus: boolean;\n\n constructor(private elementRef: ElementRef) {\n }\n\n ngAfterViewInit(): void {\n if (this.autoFocus) {\n setTimeout(() => {\n this.elementRef.nativeElement.focus();\n });\n }\n }\n}\n","import { Clipboard } from '@angular/cdk/clipboard';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef\n} from '@angular/core';\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\nimport { OverlayContainerRef } from 'ng-devui/overlay-container';\nimport { PopoverComponent } from 'ng-devui/popover';\nimport { PositionType } from 'ng-devui/tooltip';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n selector: '[dClipboard]'\n})\nexport class ClipboardDirective implements OnInit , OnDestroy {\n @Input('dClipboard') devuiTargetElm: HTMLInputElement | HTMLTextAreaElement | undefined | '';\n @Input() container: HTMLElement;\n @Input() content: string | undefined;\n @Input() position: PositionType = 'top';\n @Input() sticky = false;\n @Input() tipContent: string | HTMLElement | TemplateRef<any>;\n @Output() copyResultEvent = new EventEmitter<any>();\n popoverComponentRef: ComponentRef<PopoverComponent>;\n i18nCommonText: I18nInterface['common'];\n i18nSubscription: Subscription;\n document: Document;\n\n constructor(\n private elm: ElementRef,\n private clipboard: Clipboard,\n private i18n: I18nService,\n private overlayContainerRef: OverlayContainerRef,\n private componentFactoryResolver: ComponentFactoryResolver,\n @Inject(DOCUMENT) private doc: any) {\n this.document = this.doc;\n }\n\n ngOnInit(): void {\n this.setI18nText();\n }\n\n setI18nText() {\n this.i18nCommonText = this.i18n.getI18nText().common;\n this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\n this.i18nCommonText = data.common;\n });\n }\n\n @HostListener('click')\n onClickEvent() {\n let isSucceeded = false;\n const isSupported = !!this.document.queryCommandSupported && !!this.document.queryCommandSupported('copy') && !!window;\n if (isSupported && this.content) {\n isSucceeded = this.clipboard.copy(this.content);\n if (isSucceeded) {\n this.tipContent = this.tipContent || this.i18nCommonText.copied;\n this.createPopover();\n }\n const result = { isSupported: isSupported, isSucceeded: isSucceeded, content: this.content };\n this.copyResultEvent.emit(result);\n }\n }\n\n createPopover() {\n if (this.popoverComponentRef) {\n this.popoverComponentRef.destroy();\n }\n this.popoverComponentRef = this.overlayContainerRef.createComponent(\n this.componentFactoryResolver.resolveComponentFactory(PopoverComponent)\n );\n Object.assign(this.popoverComponentRef.instance, {\n content: this.tipContent,\n triggerElementRef: this.elm,\n position: this.position,\n popType: 'default',\n popMaxWidth: 200,\n appendToBody: true,\n zIndex: 1060\n });\n this.document.addEventListener('click', this.onDocumentClick);\n if (!this.sticky) {\n setTimeout(() => this.destroy(), 3000);\n }\n }\n\n destroy() {\n if (this.popoverComponentRef) {\n this.popoverComponentRef.destroy();\n this.popoverComponentRef = null;\n }\n this.document.removeEventListener('click', this.onDocumentClick);\n }\n\n onDocumentClick = (event) => {\n event.stopPropagation();\n if (!this.elm.nativeElement.contains(event.target)) {\n this.destroy();\n }\n };\n\n ngOnDestroy() {\n if (this.i18nSubscription) {\n this.i18nSubscription.unsubscribe();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { I18nFormat } from 'ng-devui/i18n';\n\n@Pipe({\n name: 'dDatePipe'\n})\nexport class DatePipe implements PipeTransform {\n transform(date: any, pattern: any): any {\n if (!date) {\n return;\n }\n return I18nFormat.formatDate(date, pattern);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'dSafeNullPipe',\n})\nexport class SafeNullPipe implements PipeTransform {\n transform(value: unknown, replace = '--'): unknown {\n if (typeof value === 'undefined' || value === null || value === '') {\n return replace;\n }\n return value;\n }\n}\n","import { HttpClient, HttpErrorResponse, HttpEvent, HttpEventType, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http';\r\nimport { Directive, HostListener, Input } from '@angular/core';\r\n\r\nconst enum Browser {\r\n IE = 'IE',\r\n ClassicEdge = 'ClassicEdge',\r\n Firefox = 'Firefox',\r\n Opera = 'Opera',\r\n Edge = 'Edge',\r\n Chrome = 'Chrome',\r\n Safari = 'Safari',\r\n Other = 'Other',\r\n}\r\ndeclare type HttpObserve = 'body' | 'events' | 'response';\r\ndeclare type ResponseType = 'arraybuffer' | 'blob' | 'json' | 'text';\r\nexport class HelperUtils {\r\n private static _browserName: Browser = null;\r\n private static _browserVersion = null;\r\n\r\n static getBrowserName() {\r\n !this._browserName && this.getBrowserInfo();\r\n return this._browserName;\r\n }\r\n\r\n static getBrowserVersion() {\r\n !this._browserVersion && this.getBrowserInfo();\r\n return this._browserVersion;\r\n }\r\n\r\n private static getBrowserInfo() {\r\n if (typeof navigator !== 'undefined') {\r\n const ua = navigator.userAgent.toLowerCase();\r\n const results = [\r\n ua.match(/rv:([\\d.]+)\\) like gecko/) || ua.match(/msie ([\\d\\.]+)/),\r\n ua.match(/edge\\/([\\d\\.]+)/),\r\n ua.match(/firefox\\/([\\d\\.]+)/),\r\n ua.match(/(?:opera|opr).([\\d\\.]+)/),\r\n ua.match(/edg\\/([\\d\\.]+)/),\r\n ua.match(/chrome\\/([\\d\\.]+)/),\r\n ua.match(/version\\/([\\d\\.]+).*safari/),\r\n ];\r\n const index = results.findIndex((item) => item);\r\n const infos = results[index];\r\n const browserNames = [Browser.IE, Browser.ClassicEdge, Browser.Firefox, Browser.Opera, Browser.Edge, Browser.Chrome, Browser.Safari];\r\n this._browserName = browserNames[index] || Browser.Other;\r\n this._browserVersion = infos ? parseInt(infos[1], 10) : 0;\r\n }\r\n }\r\n\r\n static jumpOuterUrl(url, target = '_blank') {\r\n if (url !== undefined && typeof document !== 'undefined') {\r\n const tempLink = document.createElement('a');\r\n tempLink.style.display = 'none'; // for IE 11\r\n tempLink.target = target;\r\n tempLink.href = url;\r\n document.body.appendChild(tempLink); // for IE 11, IE11需要append到document.body里面的a链接才会生效\r\n const event = document.createEvent('MouseEvents');\r\n event.initEvent('click', false, true);\r\n tempLink.dispatchEvent(event);\r\n document.body.removeChild(tempLink); // for IE 11\r\n }\r\n }\r\n\r\n static downloadFile(\r\n url: string,\r\n option?: {\r\n method?: 'POST' | 'GET' | 'post' | 'get';\r\n params?: { [property: string]: string };\r\n enctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';\r\n iframename?: string;\r\n },\r\n onError?: (response) => void\r\n ) {\r\n if (typeof document === 'undefined') {\r\n return;\r\n }\r\n if (document.querySelector(`iframe[name='${option?.iframename || 'download'}]`)) {\r\n document.body.removeChild(document.querySelector(`iframe[name='${option?.iframename || 'download'}]`));\r\n }\r\n const tempiframe = document.createElement('iframe');\r\n tempiframe.name = (option && option.iframename) || 'download';\r\n tempiframe.style.display = 'none';\r\n\r\n const tempform = document.createElement('form');\r\n tempform.action = url;\r\n tempform.method = (option && option.method) || 'post';\r\n tempform.target = (option && option.iframename) || 'download';\r\n tempform.enctype = (option && option.enctype) || 'application/x-www-form-urlencoded';\r\n tempform.style.display = 'none';\r\n\r\n if (option && option.params) {\r\n Object.keys(option.params).forEach((key) => {\r\n const opt = document.createElement('input');\r\n opt.name = key;\r\n opt.value = option.params[key];\r\n tempform.appendChild(opt);\r\n });\r\n }\r\n\r\n const submit = document.createElement('input');\r\n submit.type = 'submit';\r\n\r\n tempform.appendChild(submit);\r\n tempiframe.appendChild(tempform);\r\n document.body.appendChild(tempiframe);\r\n\r\n // 下载错误处理。下载成功并不会响应,因为响应头中带有Content-Disposition(下载头)的url,无法监听iframe的load事件,load事件不会触发\r\n tempiframe.addEventListener('load', (event) => {\r\n try {\r\n const iframeDoc = tempiframe.contentDocument;\r\n if (onError !== undefined) {\r\n let response;\r\n try {\r\n response = JSON.parse(iframeDoc.body && iframeDoc.body.textContent);\r\n } catch (e) {\r\n response = iframeDoc.body && iframeDoc.body.textContent;\r\n }\r\n if (!response) {\r\n response = 'Error';\r\n }\r\n onError(response);\r\n }\r\n } catch (e) {\r\n onError('Error');\r\n }\r\n document.body.removeChild(tempiframe);\r\n });\r\n tempform.submit();\r\n }\r\n\r\n static downloadFileByHttpClient(\r\n httpClient: HttpClient,\r\n url: string,\r\n option?: {\r\n method?: 'POST' | 'GET' | 'post' | 'get';\r\n params?: { [property: string]: string };\r\n enctype?: 'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain';\r\n header?: {\r\n [header: string]: string | string[];\r\n };\r\n observe?: 'events' | 'response';\r\n responseOption?: 'response' | 'body' | 'json';\r\n responseType?: 'blob' | 'arraybuffer';\r\n reportProgress?: boolean;\r\n filename?: string;\r\n withCredentials?: boolean;\r\n downloadWithoutDispositionHeader?: boolean;\r\n },\r\n onError?: (response) => void,\r\n onSuccess?: (response) => void,\r\n onProgress?: (response) => void\r\n ) {\r\n const requestMethod = (option && option.method && option.method.toLowerCase()) || 'post';\r\n const requestHeaderContentType = option.enctype || 'application/x-www-form-urlencoded';\r\n const requestParams = option.params\r\n ? new HttpParams({\r\n fromObject: option.params,\r\n })\r\n : null;\r\n\r\n const requestUrl = url;\r\n const requestOptionParams = requestMethod === 'get' ? requestParams : undefined;\r\n const requestBody = requestMethod === 'post' ? requestParams && requestParams.toString() : undefined;\r\n\r\n const responseOption = option.responseOption;\r\n /* eslint-disable-next-line prefer-object-spread */\r\n const requestOption = Object.assign(\r\n {},\r\n {\r\n body: requestBody,\r\n observe: (option.observe || option.reportProgress ? 'events' : 'response') as HttpObserve,\r\n params: requestOptionParams,\r\n headers: {\r\n 'Content-Type': requestHeaderContentType,\r\n },\r\n withCredentials: option.withCredentials,\r\n reportProgress: option.reportProgress,\r\n responseType: (option.responseType || option.reportProgress ? 'blob' : 'arraybuffer') as ResponseType,\r\n },\r\n {\r\n headers: option.header,\r\n }\r\n );\r\n\r\n const handleResponse = ((resOption) => {\r\n switch (resOption) {\r\n case 'response':\r\n return (res: HttpResponse<ArrayBuffer>) => res;\r\n case 'body':\r\n return (res: HttpResponse<ArrayBuffer> | HttpErrorResponse) => {\r\n const arrayBuffer = <ArrayBuffer>(<HttpResponse<ArrayBuffer>>res).body || (<HttpErrorResponse>res).error;\r\n const body = HelperUtils.utf8ArrayToStr(arrayBuffer);\r\n return body;\r\n };\r\n case 'json':\r\n default:\r\n return (res: HttpResponse<ArrayBuffer> | HttpErrorResponse) => {\r\n const arrayBuffer = <ArrayBuffer>(<HttpResponse<ArrayBuffer>>res).body || (<HttpErrorResponse>res).error;\r\n let response;\r\n try {\r\n const body = HelperUtils.utf8ArrayToStr(arrayBuffer);\r\n try {\r\n response = JSON.parse(body);\r\n } catch (e) {\r\n const parser = new DOMParser();\r\n const html = parser.parseFromString(body, 'text/html');\r\n response = html.body.textContent;\r\n }\r\n } catch (e) {\r\n throw new Error('Parsing Error:' + e);\r\n }\r\n if (!response) {\r\n response = 'Error';\r\n }\r\n return response;\r\n };\r\n }\r\n })(responseOption);\r\n\r\n const downloadFileFromArrayBuffer = (data: ArrayBuffer, filename: string, contentType: string) => {\r\n if (typeof document === 'undefined' || typeof window === 'undefined') {\r\n return;\r\n }\r\n if ((window.navigator as any)?.msSaveOrOpenBlob) {\r\n // IE11 support\r\n const blob = new Blob([data], { type: contentType });\r\n (window.navigator as any).msSaveOrOpenBlob(blob, filename);\r\n } else {\r\n // other browsers\r\n if ('download' in document.createElement('a')) {\r\n const blob = new Blob([data], { type: contentType });\r\n const link = document.createElement('a');\r\n link.href = URL.createObjectURL(blob);\r\n link.download = filename;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n URL.revokeObjectURL(link.href);\r\n } else {\r\n // not support tag a download attribute use file download, filename won't support\r\n const file = new File([data], filename, { type: contentType });\r\n const exportUrl = URL.createObjectURL(file);\r\n window.location.assign(exportUrl);\r\n URL.revokeObjectURL(exportUrl);\r\n }\r\n }\r\n };\r\n\r\n const getFilenameFromDisposition = (disposition: string) => {\r\n const filenamePair = disposition\r\n .split(';')\r\n .filter((str) => /^filename=/.test(str.trim()))\r\n .pop();\r\n if (filenamePair) {\r\n let str = filenamePair.trim();\r\n str = str.split('=')[1];\r\n str = str.replace(/['\"]/g, '');\r\n return decodeURIComponent(str);\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n const subscriber = httpClient.request(requestMethod, requestUrl, requestOption).subscribe(\r\n (res: HttpEvent<any>) => {\r\n if (res.type === HttpEventType.DownloadProgress) {\r\n if (onProgress) {\r\n onProgress(res);\r\n }\r\n } else if (res.type === HttpEventType.Response) {\r\n const httpResponse = res as HttpResponse<any>;\r\n const disposition = (<HttpHeaders>httpResponse.headers).get('content-disposition');\r\n const contentType = (<HttpHeaders>httpResponse.headers).get('content-type');\r\n\r\n if (/^attachment/i.test(disposition) || option.downloadWithoutDispositionHeader) {\r\n const downloadFilename = option.filename || (disposition && getFilenameFromDisposition(disposition)) || url;\r\n downloadFileFromArrayBuffer(httpResponse.body, downloadFilename, contentType);\r\n if (onSuccess) {\r\n onSuccess(httpResponse);\r\n }\r\n } else {\r\n if (onError) {\r\n let response;\r\n try {\r\n response = handleResponse(httpResponse);\r\n } catch (e) {\r\n response = httpResponse;\r\n }\r\n onError(response);\r\n }\r\n }\r\n }\r\n },\r\n (err) => {\r\n if (onError) {\r\n let response;\r\n try {\r\n response = handleResponse(err);\r\n } catch (e) {\r\n response = err;\r\n }\r\n onError(response);\r\n }\r\n }\r\n );\r\n\r\n return subscriber;\r\n }\r\n\r\n private static utf8ArrayToStr(arrayBuffer) {\r\n if (typeof TextDecoder !== 'undefined') {\r\n return new TextDecoder('utf-8').decode(arrayBuffer);\r\n } else {\r\n /**\r\n * fallback 方案,无TextDecoder场景使用直接解析,英文无问题,中文会存在乱码\r\n * ie 11 下支持中文需要使用MDN推荐的 fastestsmallesttextencoderdecoder以支持TextDecoder\r\n * npm install fastestsmallesttextencoderdecoder\r\n * polyfill.ts includes\r\n * ```\r\n * // polyfill for TextDecoder on IE 11\r\n * import 'fastestsmallesttextencoderdecoder';\r\n * ```\r\n */\r\n return String.fromCharCode.apply(null, new Uint8Array(arrayBuffer));\r\n }\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[dSimulateATag]',\r\n})\r\nexport class SimulateATagDirective {\r\n @Input() href: string;\r\n @Input() target: '_blank' | '_self' | '_parent' | '_top' | string = '_blank';\r\n constructor() {}\r\n @HostListener('click') onClick() {\r\n HelperUtils.jumpOuterUrl(this.href, this.target);\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { AfterViewInit, Directive, ElementRef, Inject, Input } from '@angular/core';\r\n@Directive({\r\n selector: '[dIframeEventPropagate]',\r\n})\r\nexport class IframeEventPropagateDirective implements AfterViewInit {\r\n @Input() event = 'click';\r\n element: HTMLSelectElement;\r\n document: Document;\r\n constructor(el: ElementRef, @Inject(DOCUMENT) private doc: any) {\r\n this.element = el.nativeElement;\r\n this.document = this.doc;\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.element.addEventListener('DOMSubtreeModified', this.AddIframeContentDocumentClickListener);\r\n if (this.element.querySelector('iframe') !== null) {\r\n this.AddIframeContentDocumentClickListener();\r\n }\r\n }\r\n AddIframeContentDocumentClickListener = () => {\r\n const iframe = this.element.querySelector('iframe');\r\n\r\n if (iframe !== null) {\r\n if (iframe.contentDocument !== null) {\r\n iframe.contentDocument.addEventListener(this.event, this.dispatchClickEvent);\r\n } else {\r\n const loadHandler = () => {\r\n iframe.contentDocument.addEventListener(this.event, this.dispatchClickEvent);\r\n iframe.removeEventListener('load', loadHandler);\r\n };\r\n iframe.addEventListener('load', loadHandler);\r\n }\r\n\r\n this.element.removeEventListener('DOMSubtreeModified', this.AddIframeContentDocumentClickListener);\r\n }\r\n };\r\n\r\n dispatchClickEvent = ($event) => {\r\n const event: any = this.document.createEvent('MouseEvents');\r\n event.initEvent(this.event, true, true);\r\n event.originEvent = $event;\r\n this.element.dispatchEvent(event);\r\n };\r\n}\r\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[dShapeIconHoverable]'\n})\nexport class ShapeIconHoverableDirective{\n @HostBinding('class.devui-shape-icon')\n getStyle() {\n return true;\n }\n}\n\n","import { ClipboardModule } from '@angular/cdk/clipboard';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AutoFocusDirective } from './auto-focus.directive';\nimport { ClipboardDirective } from './clipboard.directive';\nimport { DatePipe } from './date-pipe';\nimport { SafeNullPipe } from './safe-null.pipe';\nimport { SimulateATagDirective } from './helper-utils';\nimport { IframeEventPropagateDirective } from './iframe-event-propagate.directive';\nimport { ShapeIconHoverableDirective } from \"./shapeIconHoverable.directive\";\n\n@NgModule({\n imports: [\n CommonModule,\n ClipboardModule\n ],\n exports: [\n SafeNullPipe,\n AutoFocusDirective,\n DatePipe,\n SimulateATagDirective,\n IframeEventPropagateDirective,\n ClipboardDirective,\n ShapeIconHoverableDirective,\n ],\n declarations: [\n SafeNullPipe,\n AutoFocusDirective,\n DatePipe,\n SimulateATagDirective,\n IframeEventPropagateDirective,\n ClipboardDirective,\n ShapeIconHoverableDirective\n ],\n providers: [],\n})\nexport class DCommonModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}