UNPKG

ng-cw-v12

Version:

Angular UI Component Library

111 lines 16.1 kB
import { Component, Input } from '@angular/core'; import * as i0 from "@angular/core"; export class ScrollListComponent { constructor(eleRef, cdr) { this.eleRef = eleRef; this.cdr = cdr; /** 滚动时间,多少秒滚动一行 */ this.ncTime = 1; //多少秒滚动一格 /** 移入暂停 */ this._pause = false; } set ncPause(value) { this._pause = value !== null && value !== undefined && value !== false && value !== 'false'; } get ncPause() { return this._pause; } ngAfterViewInit() { this.initializeScrollList(); this.setupMutationObserver(); } initializeScrollList() { var _a; const scoll = this.eleRef.nativeElement.querySelector('.scroll'); // 清空现有内容 while (scoll.childNodes.length > 1) { scoll.removeChild(scoll.lastChild); } // 克隆并添加新内容 const clone = (_a = scoll.firstElementChild) === null || _a === void 0 ? void 0 : _a.cloneNode(true); if (clone) { scoll.appendChild(clone); } const scollList = this.eleRef.nativeElement.querySelectorAll('.scroll-list'); let eleCount = scollList[0].childElementCount; // 重置动画 scollList.forEach(element => { element.style.animation = 'none'; element.offsetHeight; // 触发重排 element.style.animation = `scroll calc(${this.ncTime} * ${eleCount} * 1s) linear infinite`; }); if (this.ncPause) { // 移除旧的事件监听器 if (this.mouseenterHandler) { scoll.removeEventListener('mouseenter', this.mouseenterHandler); } if (this.mouseleaveHandler) { scoll.removeEventListener('mouseleave', this.mouseleaveHandler); } // 创建新的事件处理函数 this.mouseenterHandler = () => { scollList[0].style.animationPlayState = 'paused'; scollList[1].style.animationPlayState = 'paused'; }; this.mouseleaveHandler = () => { scollList[0].style.animationPlayState = 'running'; scollList[1].style.animationPlayState = 'running'; }; // 添加新的事件监听器 scoll.addEventListener('mouseenter', this.mouseenterHandler); scoll.addEventListener('mouseleave', this.mouseleaveHandler); //mouseleave:仅在鼠标指针离开被选元素时触发,不会因为鼠标移动到任何子元素上而触发;不会向上冒泡到父元素。 //mouseout:会在鼠标指针离开被选元素或其任何子元素时触发;会冒泡到父元素,如果父元素上绑定了mouseout事件监听器,那么鼠标在子元素上移动也可能触发该监听器。 } this.cdr.detectChanges(); } setupMutationObserver() { const list = this.eleRef.nativeElement.querySelector('#scroll-container'); if (!list) return; this.observer = new MutationObserver(() => { // console.log('数据发生变化'); this.initializeScrollList(); }); this.observer.observe(list, { // childList: true,//该项开启后非常卡顿,initializeCarousel会一直执行 subtree: true, characterData: true }); } ngOnDestroy() { // 在组件销毁时清理事件监听器 const scoll = this.eleRef.nativeElement.querySelector('.scroll'); if (scoll) { if (this.mouseenterHandler) { scoll.removeEventListener('mouseenter', this.mouseenterHandler); } if (this.mouseleaveHandler) { scoll.removeEventListener('mouseleave', this.mouseleaveHandler); } } if (this.observer) { this.observer.disconnect(); } } } ScrollListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: ScrollListComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); ScrollListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: ScrollListComponent, selector: "nc-scroll-list", inputs: { ncTime: "ncTime", ncPause: "ncPause" }, ngImport: i0, template: "<div class=\"scroll\" id=\"scroll-container\">\r\n <div class=\"scroll-list\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>", styles: [".scroll{width:100%;height:100%;overflow:hidden}@keyframes scroll{0%{transform:translateY(0)}to{transform:translateY(-100%)}}\n"] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: ScrollListComponent, decorators: [{ type: Component, args: [{ selector: 'nc-scroll-list', templateUrl: './scroll-list.component.html', styleUrls: ['./scroll-list.component.less'] }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { ncTime: [{ type: Input }], ncPause: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zY3JvbGwtbGlzdC9zY3JvbGwtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3Njcm9sbC1saXN0L3Njcm9sbC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUErQyxNQUFNLGVBQWUsQ0FBQzs7QUFPMUcsTUFBTSxPQUFPLG1CQUFtQjtJQWdCOUIsWUFBb0IsTUFBa0IsRUFBVSxHQUFzQjtRQUFsRCxXQUFNLEdBQU4sTUFBTSxDQUFZO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFmdEUsbUJBQW1CO1FBQ1YsV0FBTSxHQUFXLENBQUMsQ0FBQyxDQUFBLFNBQVM7UUFDckMsV0FBVztRQUNILFdBQU0sR0FBWSxLQUFLLENBQUM7SUFZMEMsQ0FBQztJQVgzRSxJQUFhLE9BQU8sQ0FBQyxLQUF1QjtRQUMxQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssS0FBSyxJQUFJLEtBQUssS0FBSyxPQUFPLENBQUM7SUFDOUYsQ0FBQztJQUNELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBUUQsZUFBZTtRQUNiLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTyxvQkFBb0I7O1FBQzFCLE1BQU0sS0FBSyxHQUFnQixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFOUUsU0FBUztRQUNULE9BQU8sS0FBSyxDQUFD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LENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULGdCQUFnQjtRQUNoQixNQUFNLEtBQUssR0FBZ0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlFLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0JBQzFCLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDakU7WUFDRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFDMUIsS0FBSyxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQzthQUNqRTtTQUNGO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDOztnSEExR1UsbUJBQW1CO29HQUFuQixtQkFBbUIsd0dDUGhDLGdKQUlNOzJGREdPLG1CQUFtQjtrQkFML0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixXQUFXLEVBQUUsOEJBQThCO29CQUMzQyxTQUFTLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztpQkFDNUM7aUlBR1UsTUFBTTtzQkFBZCxLQUFLO2dCQUdPLE9BQU87c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25jLXNjcm9sbC1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2Nyb2xsLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Njcm9sbC1saXN0LmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNjcm9sbExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8qKiDmu5rliqjml7bpl7TvvIzlpJrlsJHnp5Lmu5rliqjkuIDooYwgKi9cclxuICBASW5wdXQoKSBuY1RpbWU6IG51bWJlciA9IDE7Ly/lpJrlsJHnp5Lmu5rliqjkuIDmoLxcclxuICAvKiog56e75YWl5pqC5YGcICovXHJcbiAgcHJpdmF0ZSBfcGF1c2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZXQgbmNQYXVzZSh2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xyXG4gICAgdGhpcy5fcGF1c2UgPSB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBmYWxzZSAmJiB2YWx1ZSAhPT0gJ2ZhbHNlJztcclxuICB9XHJcbiAgZ2V0IG5jUGF1c2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGF1c2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9ic2VydmVyITogTXV0YXRpb25PYnNlcnZlcjtcclxuICBwcml2YXRlIG1vdXNlZW50ZXJIYW5kbGVyPzogKCkgPT4gdm9pZDtcclxuICBwcml2YXRlIG1vdXNlbGVhdmVIYW5kbGVyPzogKCkgPT4gdm9pZDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVNjcm9sbExpc3QoKTtcclxuICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVTY3JvbGxMaXN0KCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2NvbGw6IEhUTUxFbGVtZW50ID0gdGhpcy5lbGVSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc2Nyb2xsJyk7XHJcblxyXG4gICAgLy8g5riF56m6546w5pyJ5YaF5a65XHJcbiAgICB3aGlsZSAoc2NvbGwuY2hpbGROb2Rlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHNjb2xsLnJlbW92ZUNoaWxkKHNjb2xsLmxhc3RDaGlsZCEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWFi+mahuW5tua3u+WKoOaWsOWGheWuuVxyXG4gICAgY29uc3QgY2xvbmUgPSBzY29sbC5maXJzdEVsZW1lbnRDaGlsZD8uY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgaWYgKGNsb25lKSB7XHJcbiAgICAgIHNjb2xsLmFwcGVuZENoaWxkKGNsb25lKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzY29sbExpc3Q6IEFycmF5PEhUTUxFbGVtZW50PiA9IHRoaXMuZWxlUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnNjcm9sbC1saXN0Jyk7XHJcbiAgICBsZXQgZWxlQ291bnQgPSBzY29sbExpc3RbMF0uY2hpbGRFbGVtZW50Q291bnQ7XHJcblxyXG4gICAgLy8g6YeN572u5Yqo55S7XHJcbiAgICBzY29sbExpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgZWxlbWVudC5zdHlsZS5hbmltYXRpb24gPSAnbm9uZSc7XHJcbiAgICAgIGVsZW1lbnQub2Zmc2V0SGVpZ2h0OyAvLyDop6blj5Hph43mjpJcclxuICAgICAgZWxlbWVudC5zdHlsZS5hbmltYXRpb24gPSBgc2Nyb2xsIGNhbGMoJHt0aGlzLm5jVGltZX0gKiAke2VsZUNvdW50fSAqIDFzKSBsaW5lYXIgaW5maW5pdGVgO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMubmNQYXVzZSkge1xyXG4gICAgICAvLyDnp7vpmaTml6fnmoTkuovku7bnm5HlkKzlmahcclxuICAgICAgaWYgKHRoaXMubW91c2VlbnRlckhhbmRsZXIpIHtcclxuICAgICAgICBzY29sbC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgdGhpcy5tb3VzZWVudGVySGFuZGxlcik7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMubW91c2VsZWF2ZUhhbmRsZXIpIHtcclxuICAgICAgICBzY29sbC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5tb3VzZWxlYXZlSGFuZGxlcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOWIm+W7uuaWsOeahOS6i+S7tuWkhOeQhuWHveaVsFxyXG4gICAgICB0aGlzLm1vdXNlZW50ZXJIYW5kbGVyID0gKCkgPT4ge1xyXG4gICAgICAgIHNjb2xsTGlzdFswXS5zdHlsZS5hbmltYXRpb25QbGF5U3RhdGUgPSAncGF1c2VkJztcclxuICAgICAgICBzY29sbExpc3RbMV0uc3R5bGUuYW5pbWF0aW9uUGxheVN0YXRlID0gJ3BhdXNlZCc7XHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMubW91c2VsZWF2ZUhhbmRsZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgc2NvbGxMaXN0WzBdLnN0eWxlLmFuaW1hdGlvblBsYXlTdGF0ZSA9ICdydW5uaW5nJztcclxuICAgICAgICBzY29sbExpc3RbMV0uc3R5bGUuYW5pbWF0aW9uUGxheVN0YXRlID0gJ3J1bm5pbmcnO1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy8g5re75Yqg5paw55qE5LqL5Lu255uR5ZCs5ZmoXHJcbiAgICAgIHNjb2xsLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCB0aGlzLm1vdXNlZW50ZXJIYW5kbGVyKTtcclxuICAgICAgc2NvbGwuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIHRoaXMubW91c2VsZWF2ZUhhbmRsZXIpO1xyXG4gICAgICAvL21vdXNlbGVhdmXvvJrku4XlnKjpvKDmoIfmjIfpkojnprvlvIDooqvpgInlhYPntKDml7bop6blj5HvvIzkuI3kvJrlm6DkuLrpvKDmoIfnp7vliqjliLDku7vkvZXlrZDlhYPntKDkuIrogIzop6blj5HvvJvkuI3kvJrlkJHkuIrlhpLms6HliLDniLblhYPntKDjgIJcclxuICAgICAgLy9tb3VzZW91dO+8muS8muWcqOm8oOagh+aMh+mSiOemu+W8gOiiq+mAieWFg+e0oOaIluWFtuS7u+S9leWtkOWFg+e0oOaXtuinpuWPke+8m+S8muWGkuazoeWIsOeItuWFg+e0oO+8jOWmguaenOeItuWFg+e0oOS4iue7keWumuS6hm1vdXNlb3V05LqL5Lu255uR5ZCs5Zmo77yM6YKj5LmI6byg5qCH5Zyo5a2Q5YWD57Sg5LiK56e75Yqo5Lmf5Y+v6IO96Kem5Y+R6K+l55uR5ZCs5Zmo44CCXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIoKTogdm9pZCB7XHJcbiAgICBjb25zdCBsaXN0OiBIVE1MRWxlbWVudCA9IHRoaXMuZWxlUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignI3Njcm9sbC1jb250YWluZXInKTtcclxuICAgIGlmICghbGlzdCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKCfmlbDmja7lj5HnlJ/lj5jljJYnKTtcclxuICAgICAgdGhpcy5pbml0aWFsaXplU2Nyb2xsTGlzdCgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKGxpc3QsIHtcclxuICAgICAgLy8gY2hpbGRMaXN0OiB0cnVlLC8v6K+l6aG55byA5ZCv5ZCO6Z2e5bi45Y2h6aG/77yMaW5pdGlhbGl6ZUNhcm91c2Vs5Lya5LiA55u05omn6KGMXHJcbiAgICAgIHN1YnRyZWU6IHRydWUsXHJcbiAgICAgIGNoYXJhY3RlckRhdGE6IHRydWVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAvLyDlnKjnu4Tku7bplIDmr4Hml7bmuIXnkIbkuovku7bnm5HlkKzlmahcclxuICAgIGNvbnN0IHNjb2xsOiBIVE1MRWxlbWVudCA9IHRoaXMuZWxlUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNjcm9sbCcpO1xyXG4gICAgaWYgKHNjb2xsKSB7XHJcbiAgICAgIGlmICh0aGlzLm1vdXNlZW50ZXJIYW5kbGVyKSB7XHJcbiAgICAgICAgc2NvbGwucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIHRoaXMubW91c2VlbnRlckhhbmRsZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLm1vdXNlbGVhdmVIYW5kbGVyKSB7XHJcbiAgICAgICAgc2NvbGwucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIHRoaXMubW91c2VsZWF2ZUhhbmRsZXIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vYnNlcnZlcikge1xyXG4gICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInNjcm9sbFwiIGlkPVwic2Nyb2xsLWNvbnRhaW5lclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNjcm9sbC1saXN0XCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==