UNPKG

ng-devui

Version:

DevUI components based on Angular

1 lines 19.8 kB
{"version":3,"file":"ng-devui-back-top.mjs","sources":["../../devui/back-top/back-top.component.ts","../../devui/back-top/back-top.component.html","../../devui/back-top/back-top.module.ts","../../devui/back-top/ng-devui-back-top.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { Subscription, fromEvent } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'd-back-top',\r\n templateUrl: './back-top.component.html',\r\n styleUrls: ['./back-top.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n preserveWhitespaces: false,\r\n})\r\nexport class BackTopComponent implements OnChanges, OnInit, OnDestroy, AfterViewInit {\r\n @Input() customTemplate: TemplateRef<any>;\r\n @Input() visibleHeight = 300;\r\n @Input() bottom = '50px';\r\n @Input() right = '30px';\r\n @Input() scrollTarget: HTMLElement;\r\n @Input() draggable = false;\r\n @Output() backTopEvent = new EventEmitter<boolean>();\r\n @Output() dragEvent = new EventEmitter<boolean>();\r\n\r\n currScrollTop = 0;\r\n duration = 0;\r\n cursorTimer: any;\r\n dragBoundary: any;\r\n moveCursor = false;\r\n moveToggle = false;\r\n isVisible = false;\r\n target: HTMLElement | Window;\r\n subs: Subscription = new Subscription();\r\n document: Document;\r\n\r\n SCROLL_REFRESH_INTERVAL = 100;\r\n MOUSEDOWN_DELAY = 180;\r\n RESIZE_DELAY = 300;\r\n\r\n constructor(private cdr: ChangeDetectorRef, private el: ElementRef, @Inject(DOCUMENT) private doc: any) {\r\n this.document = this.doc;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.scrollTarget) {\r\n if (this.subs) {\r\n this.subs.unsubscribe();\r\n }\r\n this.subs = new Subscription();\r\n this.addScrollEvent();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.addScrollEvent();\r\n this.showButton();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.draggable) {\r\n // 窗口大小改变时,如缩放比例或组件超出显示范围重置到默认位置\r\n this.subs.add(\r\n fromEvent(window, 'resize')\r\n .pipe(debounceTime(this.RESIZE_DELAY))\r\n .subscribe(() => {\r\n const dom = this.dragBoundary?.dom || this.el.nativeElement.querySelector('div.devui-backtop');\r\n if (dom) {\r\n // 不显示时无法获取getBoundingClientRect,使用style获取\r\n const style = getComputedStyle(dom);\r\n const left = parseInt(style.left, 10) || 0;\r\n const top = parseInt(style.top, 10) || 0;\r\n if (window.devicePixelRatio !== 1 || left > window.innerWidth || top > window.innerHeight) {\r\n this.onMouseUp();\r\n this.duration = 0;\r\n dom.style.left = 'unset';\r\n dom.style.top = 'unset';\r\n }\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subs) {\r\n this.subs.unsubscribe();\r\n }\r\n }\r\n\r\n addScrollEvent() {\r\n this.subs.add(\r\n fromEvent(this.getScrollTarget(), 'scroll')\r\n .pipe(debounceTime(this.SCROLL_REFRESH_INTERVAL))\r\n .subscribe(() => {\r\n this.showButton();\r\n this.cdr.detectChanges();\r\n })\r\n );\r\n }\r\n\r\n getScrollTarget() {\r\n if (this.scrollTarget) {\r\n this.el.nativeElement.querySelector('.devui-backtop').style.position = 'absolute';\r\n this.scrollTarget.parentElement.style.position = 'relative';\r\n }\r\n this.target = this.scrollTarget || window;\r\n return this.target;\r\n }\r\n\r\n showButton() {\r\n this.currScrollTop =\r\n this.target === window\r\n ? window.pageYOffset || this.document.documentElement.scrollTop || this.document.body.scrollTop\r\n : this.scrollTarget.scrollTop;\r\n if (this.isVisible !== this.currScrollTop >= this.visibleHeight) {\r\n this.isVisible = !this.isVisible;\r\n }\r\n }\r\n\r\n goTop() {\r\n if (this.draggable && this.duration > this.MOUSEDOWN_DELAY) {\r\n this.duration = 0;\r\n return;\r\n }\r\n if (this.target === window) {\r\n this.document.documentElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest' });\r\n this.document.body.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest' });\r\n } else {\r\n this.scrollTarget.style.scrollBehavior = 'smooth';\r\n this.scrollTarget.scrollTop = 0;\r\n }\r\n this.duration = 0;\r\n this.backTopEvent.emit(true);\r\n }\r\n\r\n setDragBoundary() {\r\n const dom = this.el.nativeElement.querySelector('div.devui-backtop');\r\n let boxRect;\r\n let minLeft;\r\n let minTop;\r\n let maxLeft;\r\n let maxTop;\r\n if (dom) {\r\n const { width, height } = dom.getBoundingClientRect();\r\n if (this.scrollTarget) {\r\n boxRect = this.scrollTarget.getBoundingClientRect();\r\n minLeft = -1 * boxRect.x;\r\n minTop = -1 * boxRect.y;\r\n maxLeft = window.innerWidth - boxRect.x - width;\r\n maxTop = window.innerHeight - boxRect.y - height;\r\n } else {\r\n boxRect = { x: 0, y: 0 };\r\n minLeft = 0;\r\n minTop = 0;\r\n maxLeft = window.innerWidth - width;\r\n maxTop = window.innerHeight - height;\r\n }\r\n this.dragBoundary = { dom, boxRect, minLeft, minTop, maxLeft, maxTop };\r\n }\r\n }\r\n\r\n // mousedown mouseup click 按顺序触发且前一个结束触发下一个\r\n mousedownEvent(event: MouseEvent) {\r\n if (this.draggable) {\r\n event.preventDefault();\r\n this.setDragBoundary();\r\n this.duration = new Date().getTime();\r\n this.moveToggle = true;\r\n this.cursorTimer = setTimeout(() => {\r\n this.moveCursor = true;\r\n this.dragEvent.emit(true);\r\n }, this.MOUSEDOWN_DELAY);\r\n }\r\n }\r\n\r\n mouseleaveEvent() {\r\n if (this.draggable && this.cursorTimer) {\r\n clearTimeout(this.cursorTimer);\r\n }\r\n }\r\n\r\n @HostListener('document:mouseup', [])\r\n onMouseUp() {\r\n if (this.draggable) {\r\n if (this.cursorTimer) {\r\n clearTimeout(this.cursorTimer);\r\n }\r\n if (this.moveToggle) {\r\n this.moveToggle = false;\r\n this.moveCursor = false;\r\n this.dragEvent.emit(false);\r\n }\r\n this.duration = this.duration && new Date().getTime() - this.duration;\r\n }\r\n }\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n if (this.draggable && this.moveToggle && this.dragBoundary) {\r\n // 先判断再执行阻止默认事件,否则可能影响鼠标拖选功能\r\n event.preventDefault();\r\n this.moveCursor = true;\r\n const posX = event.movementX;\r\n const posY = event.movementY;\r\n const rect = this.dragBoundary.dom.getBoundingClientRect();\r\n const left = rect.x - this.dragBoundary.boxRect.x + posX;\r\n const top = rect.y - this.dragBoundary.boxRect.y + posY;\r\n const isLeft = left < this.dragBoundary.minLeft;\r\n const isRight = left > this.dragBoundary.maxLeft;\r\n const isTop = top < this.dragBoundary.minTop;\r\n const isBottom = top > this.dragBoundary.maxTop;\r\n const leftResult = isLeft ? this.dragBoundary.minLeft : left;\r\n const topResult = isTop ? this.dragBoundary.minTop : top;\r\n this.dragBoundary.dom.style.left = `${isRight ? this.dragBoundary.maxLeft : leftResult}px`;\r\n this.dragBoundary.dom.style.top = `${isBottom ? this.dragBoundary.maxTop : topResult}px`;\r\n // 如到达边界释放拖拽动作,避免鼠标偏移较大距离后返回主视窗仍可拖拽\r\n if ([isLeft, isRight, isTop, isBottom].includes(true)) {\r\n this.onMouseUp();\r\n this.duration = 0;\r\n }\r\n }\r\n }\r\n}\r\n","<div\n class=\"devui-backtop\"\n [ngStyle]=\"{\n display: isVisible ? 'block' : 'none',\n bottom: bottom,\n right: right,\n cursor: moveCursor && draggable ? 'move' : 'pointer'\n }\"\n (click)=\"goTop()\"\n>\n <div class=\"devui-backtop-drag-handle\" (mousedown)=\"mousedownEvent($event)\" (mouseleave)=\"mouseleaveEvent()\">\n <ng-template [ngTemplateOutlet]=\"customTemplate ? customTemplate : default\"></ng-template>\n <ng-template #default>\n <div class=\"devui-backtop-content\">\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M8.71335931,15.2865297 C8.61179683,16.2090609 7.32293758,16.1267953 7.27304695,15.2865297 C7.27175008,14.6475142 7.27175008,5.26479636 7.27175008,5.26479636 L2.83675052,9.54548344 C2.14185995,10.1440615 1.3143288,9.18731159 1.83135998,8.55773353 C3.79557855,6.65310872 7.3202657,3.24515592 7.40179694,3.16632781 C7.72696878,2.81306222 8.23887498,2.79476534 8.58495308,3.16632781 C9.23193739,3.7919215 14.0334057,8.42146792 14.1791557,8.58804603 C14.66614,9.19338972 13.8787807,10.0892021 13.2066089,9.58451469 C13.0329683,9.43717095 8.71468744,5.26462448 8.71468744,5.26462448 L8.71335931,15.2865297 Z M1.81868811,-8.54871729e-14 L14.1075619,-8.54871729e-14 L14.1075619,1.39509361 L1.81868811,1.39509361 L1.81868811,-8.54871729e-14 Z\"\n fill=\"#FFFFFF\"\n fill-rule=\"nonzero\"\n ></path>\n </g>\n </svg>\n </div>\n </ng-template>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BackTopComponent } from './back-top.component';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n exports: [BackTopComponent],\n declarations: [BackTopComponent]\n})\nexport class BackTopModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}