UNPKG

ng-zorro-antd-mobile

Version:

An enterprise-class mobile UI components based on Ant Design and Angular

209 lines (208 loc) 15.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Component, Input, Output, EventEmitter } from '@angular/core'; import { IconHandler } from '../core/util/icon'; export class NoticeBarComponent { /** * @param {?} _iconHandler */ constructor(_iconHandler) { this._iconHandler = _iconHandler; this.isShow = false; this.isStopScroll = false; this.marqueeScroll = 'scrolling'; this.style = {}; this._timer = null; this.marqueeProps = { loop: true, leading: 500, trailing: 8000, fps: 200, style: {} }; this.noticeBarcontent = ''; this.onClick = new EventEmitter(); this._iconHandler.load(); } /** * @param {?} value * @return {?} */ set stopScrolling(value) { this.isStopScroll = value; if (value) { this.marqueeScroll = 'scrolling-stop'; clearTimeout(this._timer); this._timer = setTimeout(function () { this.marqueeScroll = 'scrolling'; }, 1000); } } /** * @return {?} */ get mode() { return this._mode; } /** * @param {?} value * @return {?} */ set mode(value) { this._mode = value; } /** * @return {?} */ get icon() { return this._icon; } /** * @param {?} value * @return {?} */ set icon(value) { this._icon = value; } /** * @return {?} */ get action() { return this._action; } /** * @param {?} value * @return {?} */ set action(value) { this._action = value; } /** * @return {?} */ click() { this.onClick.emit(this._mode); if (this._mode === 'closable') { this.isShow = false; } } /** * @return {?} */ dataProcess() { this.isShow = true; this.style = { width: '200%' }; if (window.innerWidth < this._width) { /** @type {?} */ const count = this.marqueeProps.loop ? 'infinite' : 1; this.style = { width: this._width * 2 + 'px', 'animation-delay': `${this.marqueeProps.leading}ms`, 'animation-duration': `${(1 / this.marqueeProps.fps) * 1000}s`, 'animation-iteration-count': `${count}` }; scroll.call(this); } else { this.marqueeScroll = 'scrolling-stop'; } } /** * @return {?} */ ngOnInit() { document.addEventListener('touchstart', () => { this.marqueeScroll = 'scrolling-stop'; }); document.addEventListener('touchend', () => { this.marqueeScroll = 'scrolling'; }); this._width = getRectWidth(this.noticeBarcontent); this.dataProcess(); } } NoticeBarComponent.decorators = [ { type: Component, args: [{ selector: 'NoticeBar, nzm-notice-bar', template: "<div role=\"alert\" *ngIf=\"isShow\" class=\"am-notice-bar\" (click)=\"click()\">\n <div *ngIf=\"icon !== null\" class=\"am-notice-bar-icon\">\n <ng-template [ngTemplateOutlet]=\"icon || voice\"></ng-template>\n </div>\n <div class=\"am-notice-bar-content\">\n <div class=\"marquee\">\n <div [ngClass]=\"marqueeScroll\" [ngStyle]=\"style\">\n <span>{{noticeBarcontent}}</span>\n <span>{{noticeBarcontent}}</span>\n </div>\n </div>\n </div>\n <div role=\"button\" *ngIf=\"mode && action !== null\" class=\"am-notice-bar-operation\">\n <ng-template *ngIf=\"mode === 'closable'\" [ngTemplateOutlet]=\"action || cross\"></ng-template>\n <ng-template *ngIf=\"mode === 'link'\" [ngTemplateOutlet]=\"action || right\"></ng-template>\n </div>\n</div>\n\n<ng-template #voice>\n <Icon [type]=\"'voice'\" [size]=\"'xxs'\"></Icon>\n</ng-template>\n<ng-template #cross>\n <Icon [type]=\"'cross'\" [size]=\"'md'\"></Icon>\n</ng-template>\n<ng-template #right>\n <Icon [type]=\"'right'\" [size]=\"'md'\"></Icon>\n</ng-template>\n", providers: [IconHandler] }] } ]; /** @nocollapse */ NoticeBarComponent.ctorParameters = () => [ { type: IconHandler } ]; NoticeBarComponent.propDecorators = { stopScrolling: [{ type: Input }], mode: [{ type: Input }], icon: [{ type: Input }], action: [{ type: Input }], marqueeProps: [{ type: Input }], noticeBarcontent: [{ type: Input }], onClick: [{ type: Output }] }; if (false) { /** @type {?} */ NoticeBarComponent.prototype.actionDom; /** @type {?} */ NoticeBarComponent.prototype.isShow; /** @type {?} */ NoticeBarComponent.prototype.isStopScroll; /** @type {?} */ NoticeBarComponent.prototype.styleDom; /** @type {?} */ NoticeBarComponent.prototype.rate; /** @type {?} */ NoticeBarComponent.prototype.marqueeScroll; /** @type {?} */ NoticeBarComponent.prototype.style; /** @type {?} */ NoticeBarComponent.prototype._mode; /** @type {?} */ NoticeBarComponent.prototype._icon; /** @type {?} */ NoticeBarComponent.prototype._action; /** @type {?} */ NoticeBarComponent.prototype._timer; /** @type {?} */ NoticeBarComponent.prototype._width; /** @type {?} */ NoticeBarComponent.prototype.marqueeProps; /** @type {?} */ NoticeBarComponent.prototype.noticeBarcontent; /** @type {?} */ NoticeBarComponent.prototype.onClick; /** @type {?} */ NoticeBarComponent.prototype._iconHandler; } /** * @return {?} */ function scroll() { /** @type {?} */ let styleDom = document.getElementById('notice_bar_animation_cls'); if (styleDom) { return; } styleDom = document.createElement('style'); styleDom.setAttribute('id', 'notice_bar_animation_cls'); styleDom.innerHTML = `@-webkit-keyframes noticebarmarquee{ 0% { left: 0px; } 100% { left: -${this._width}px; }}`; document.body.appendChild(styleDom); } /** * @param {?} text * @return {?} */ function getRectWidth(text) { /** @type {?} */ const _dom = document.createElement('div'); _dom.innerHTML = text; _dom.style.position = 'absolute'; _dom.style.left = '-9999'; _dom.style.whiteSpace = 'nowrap'; _dom.style.fontSize = '14px'; document.body.appendChild(_dom); /** @type {?} */ const _w = _dom.clientWidth + 20; document.body.removeChild(_dom); return _w; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWNlLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkLW1vYmlsZS8iLCJzb3VyY2VzIjpbIm5vdGljZS1iYXIvbm90aWNlLWJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBT2hELE1BQU07Ozs7SUFzREosWUFBb0IsWUFBeUI7UUFBekIsaUJBQVksR0FBWixZQUFZLENBQWE7c0JBbkRwQyxLQUFLOzRCQUNDLEtBQUs7NkJBR0osV0FBVztxQkFDbkIsRUFBRTtzQkFJTyxJQUFJOzRCQW9DTixFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtnQ0FFN0QsRUFBRTt1QkFFUSxJQUFJLFlBQVksRUFBRTtRQUc3QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0tBQzFCOzs7OztJQXpDRCxJQUNJLGFBQWEsQ0FBQyxLQUFLO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQztZQUN0QyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDO2dCQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQzthQUNsQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ1Y7S0FDRjs7OztJQUNELElBQ0ksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtB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QyxZQUFZLENBQUMsSUFBSSxFQUFFLDBCQUEwQixDQUFDLENBQUM7SUFDeEQsUUFBUSxDQUFDLFNBQVMsR0FBRyx3RUFBd0UsSUFBSSxDQUFDLE1BQU0sUUFBUSxDQUFDO0lBQ2pILFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0NBQ3JDOzs7OztBQUVELHNCQUFzQixJQUFJOztJQUN4QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7SUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO0lBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztJQUM3QixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7SUFDaEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsT0FBTyxFQUFFLENBQUM7Q0FDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEljb25IYW5kbGVyIH0gZnJvbSAnLi4vY29yZS91dGlsL2ljb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdOb3RpY2VCYXIsIG56bS1ub3RpY2UtYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25vdGljZS1iYXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtJY29uSGFuZGxlcl1cbn0pXG5leHBvcnQgY2xhc3MgTm90aWNlQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgYWN0aW9uRG9tOiBhbnk7XG5cbiAgaXNTaG93ID0gZmFsc2U7XG4gIGlzU3RvcFNjcm9sbCA9IGZhbHNlO1xuICBzdHlsZURvbTogYW55O1xuICByYXRlO1xuICBtYXJxdWVlU2Nyb2xsID0gJ3Njcm9sbGluZyc7XG4gIHN0eWxlID0ge307XG4gIHByaXZhdGUgX21vZGU7XG4gIHByaXZhdGUgX2ljb247XG4gIHByaXZhdGUgX2FjdGlvbjtcbiAgcHJpdmF0ZSBfdGltZXIgPSBudWxsO1xuICBwcml2YXRlIF93aWR0aDtcblxuICBASW5wdXQoKVxuICBzZXQgc3RvcFNjcm9sbGluZyh2YWx1ZSkge1xuICAgIHRoaXMuaXNTdG9wU2Nyb2xsID0gdmFsdWU7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLm1hcnF1ZWVTY3JvbGwgPSAnc2Nyb2xsaW5nLXN0b3AnO1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVyKTtcbiAgICAgIHRoaXMuX3RpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5tYXJxdWVlU2Nyb2xsID0gJ3Njcm9sbGluZyc7XG4gICAgICB9LCAxMDAwKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IG1vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGU7XG4gIH1cbiAgc2V0IG1vZGUodmFsdWUpIHtcbiAgICB0aGlzLl9tb2RlID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IGljb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ljb247XG4gIH1cbiAgc2V0IGljb24odmFsdWUpIHtcbiAgICB0aGlzLl9pY29uID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IGFjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9uO1xuICB9XG4gIHNldCBhY3Rpb24odmFsdWUpIHtcbiAgICB0aGlzLl9hY3Rpb24gPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBtYXJxdWVlUHJvcHMgPSB7IGxvb3A6IHRydWUsIGxlYWRpbmc6IDUwMCwgdHJhaWxpbmc6IDgwMDAsIGZwczogMjAwLCBzdHlsZToge30gfTtcbiAgQElucHV0KClcbiAgbm90aWNlQmFyY29udGVudCA9ICcnO1xuICBAT3V0cHV0KClcbiAgb25DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaWNvbkhhbmRsZXI6IEljb25IYW5kbGVyKSB7XG4gICAgdGhpcy5faWNvbkhhbmRsZXIubG9hZCgpO1xuICB9XG5cbiAgY2xpY2soKSB7XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQodGhpcy5fbW9kZSk7XG4gICAgaWYgKHRoaXMuX21vZGUgPT09ICdjbG9zYWJsZScpIHtcbiAgICAgIHRoaXMuaXNTaG93ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZGF0YVByb2Nlc3MoKSB7XG4gICAgdGhpcy5pc1Nob3cgPSB0cnVlO1xuICAgIHRoaXMuc3R5bGUgPSB7XG4gICAgICB3aWR0aDogJzIwMCUnXG4gICAgfTtcbiAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCB0aGlzLl93aWR0aCkge1xuICAgICAgY29uc3QgY291bnQgPSB0aGlzLm1hcnF1ZWVQcm9wcy5sb29wID8gJ2luZmluaXRlJyA6IDE7XG4gICAgICB0aGlzLnN0eWxlID0ge1xuICAgICAgICB3aWR0aDogdGhpcy5fd2lkdGggKiAyICsgJ3B4JyxcbiAgICAgICAgJ2FuaW1hdGlvbi1kZWxheSc6IGAke3RoaXMubWFycXVlZVByb3BzLmxlYWRpbmd9bXNgLFxuICAgICAgICAnYW5pbWF0aW9uLWR1cmF0aW9uJzogYCR7KDEgLyB0aGlzLm1hcnF1ZWVQcm9wcy5mcHMpICogMTAwMH1zYCxcbiAgICAgICAgJ2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQnOiBgJHtjb3VudH1gXG4gICAgICB9O1xuXG4gICAgICBzY3JvbGwuY2FsbCh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tYXJxdWVlU2Nyb2xsID0gJ3Njcm9sbGluZy1zdG9wJztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgKCkgPT4ge1xuICAgICAgdGhpcy5tYXJxdWVlU2Nyb2xsID0gJ3Njcm9sbGluZy1zdG9wJztcbiAgICB9KTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgKCkgPT4ge1xuICAgICAgdGhpcy5tYXJxdWVlU2Nyb2xsID0gJ3Njcm9sbGluZyc7XG4gICAgfSk7XG4gICAgdGhpcy5fd2lkdGggPSBnZXRSZWN0V2lkdGgodGhpcy5ub3RpY2VCYXJjb250ZW50KTtcbiAgICB0aGlzLmRhdGFQcm9jZXNzKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2Nyb2xsKCkge1xuICBsZXQgc3R5bGVEb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm90aWNlX2Jhcl9hbmltYXRpb25fY2xzJyk7XG4gIGlmIChzdHlsZURvbSkge1xuICAgIHJldHVybjtcbiAgfVxuICBzdHlsZURvbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gIHN0eWxlRG9tLnNldEF0dHJpYnV0ZSgnaWQnLCAnbm90aWNlX2Jhcl9hbmltYXRpb25fY2xzJyk7XG4gIHN0eWxlRG9tLmlubmVySFRNTCA9IGBALXdlYmtpdC1rZXlmcmFtZXMgbm90aWNlYmFybWFycXVlZXsgMCUgeyBsZWZ0OiAwcHg7IH0gMTAwJSB7IGxlZnQ6IC0ke3RoaXMuX3dpZHRofXB4OyB9fWA7XG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc3R5bGVEb20pO1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0V2lkdGgodGV4dCkge1xuICBjb25zdCBfZG9tID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIF9kb20uaW5uZXJIVE1MID0gdGV4dDtcbiAgX2RvbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gIF9kb20uc3R5bGUubGVmdCA9ICctOTk5OSc7XG4gIF9kb20uc3R5bGUud2hpdGVTcGFjZSA9ICdub3dyYXAnO1xuICBfZG9tLnN0eWxlLmZvbnRTaXplID0gJzE0cHgnO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKF9kb20pO1xuICBjb25zdCBfdyA9IF9kb20uY2xpZW50V2lkdGggKyAyMDtcbiAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChfZG9tKTtcbiAgcmV0dXJuIF93O1xufVxuIl19