UNPKG

ng-zorro-antd-mobile

Version:

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

173 lines 14.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, Input, Output, EventEmitter } from '@angular/core'; import { IconHandler } from '../core/util/icon'; import * as util from './util'; export class NoticeBarComponent { /** * @param {?} _iconHandler */ constructor(_iconHandler) { this._iconHandler = _iconHandler; this.visiable = false; this.marqueeScroll = 'scrolling'; this.style = {}; this._option = { mode: '', icon: '', action: '', content: '', fontSize: '14px', scrolling: true, marqueeProps: { loop: true, leading: 500, trailing: 8000, fps: 200, style: {} } }; this.onClick = new EventEmitter(); this._iconHandler.load(); } /** * @return {?} */ get option() { return this._option; } /** * @param {?} value * @return {?} */ set option(value) { Object.assign(this._option, value); this.dataProcess(); if (this._option.scrolling) { this.marqueeScroll = 'scrolling'; } else { this.marqueeScroll = 'scrolling-stop'; } } /** * @return {?} */ click() { this.onClick.emit(this._option.mode); if (this._option.mode === 'closable') { this.visiable = false; } } /** * @return {?} */ dataProcess() { this.visiable = true; this.style = { width: '200%' }; this._width = util.getTextWidth(this._option.content, this._option.fontSize); if (util.getWidthHeight().width < this._width) { /** @type {?} */ const count = this._option.marqueeProps.loop ? 'infinite' : 1; /** @type {?} */ let animationName = `noticebarmarquee_${this._width}`; this.style = { width: this._width * 2 + 'px', 'animation-name': animationName, 'animation-delay': `${this._option.marqueeProps.leading}ms`, 'animation-duration': `${(((1 / this._option.marqueeProps.fps) * this._width) / util.getWidthHeight().width) * 1000}s`, 'animation-iteration-count': `${count}` }; this.marqueeScroll = 'scrolling'; this.insetKeyframe(animationName); } else { this.marqueeScroll = 'scrolling-stop'; } } /** * @param {?} animationName * @return {?} */ insetKeyframe(animationName) { util.insertKeyFrame(`@keyframes ${animationName} { 0% { left: 0px; } 100% { left: -${this._width}px } }`, 'notice_bar_animation_cls'); util.insertKeyFrame(`@-webkit-keyframes ${animationName} { 0% { left: 0px; } 100% { left: -${this._width}px } }`, 'notice_bar_animation_cls'); util.insertKeyFrame(`@-moz-keyframes ${animationName} { 0% { left: 0px; } 100% { left: -${this._width}px } }`, 'notice_bar_animation_cls'); util.insertKeyFrame(`@-o-keyframes ${animationName} { 0% { left: 0px; } 100% { left: -${this._width}px } }`, 'notice_bar_animation_cls'); } /** * @return {?} */ ngOnInit() { document.addEventListener('touchstart', (/** * @return {?} */ () => { this.marqueeScroll = 'scrolling-stop'; })); document.addEventListener('touchend', (/** * @return {?} */ () => { this.marqueeScroll = 'scrolling'; })); } /** * @return {?} */ ngOnDestroy() { util.deleteKeyFrame('notice_bar_animation_cls'); } } NoticeBarComponent.decorators = [ { type: Component, args: [{ selector: 'NoticeBar, nzm-notice-bar', template: "<div role=\"alert\" *ngIf=\"visiable\" class=\"am-notice-bar\" (click)=\"click()\">\n <div *ngIf=\"option.icon !== null\" class=\"am-notice-bar-icon\">\n <ng-template [ngTemplateOutlet]=\"option.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>{{ option.content }}</span>\n <span>{{ option.content }}</span>\n </div>\n </div>\n </div>\n <div role=\"button\" *ngIf=\"option.mode && option.action !== null\" class=\"am-notice-bar-operation\">\n <ng-template *ngIf=\"option.mode === 'closable'\" [ngTemplateOutlet]=\"option.action || cross\"></ng-template>\n <ng-template *ngIf=\"option.mode === 'link'\" [ngTemplateOutlet]=\"option.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 = { option: [{ type: Input }], onClick: [{ type: Output }] }; if (false) { /** @type {?} */ NoticeBarComponent.prototype.visiable; /** @type {?} */ NoticeBarComponent.prototype.marqueeScroll; /** @type {?} */ NoticeBarComponent.prototype.style; /** * @type {?} * @private */ NoticeBarComponent.prototype._width; /** * @type {?} * @private */ NoticeBarComponent.prototype._option; /** @type {?} */ NoticeBarComponent.prototype.onClick; /** * @type {?} * @private */ NoticeBarComponent.prototype._iconHandler; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWNlLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkLW1vYmlsZS8iLCJzb3VyY2VzIjpbIm5vdGljZS1iYXIvbm90aWNlLWJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxJQUFJLE1BQU0sUUFBUSxDQUFDO0FBTS9CLE1BQU0sT0FBTyxrQkFBa0I7Ozs7SUE4QjdCLFlBQW9CLFlBQXlCO1FBQXpCLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBN0I3QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsV0FBVyxDQUFDO1FBQzVCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFSCxZQUFPLEdBQUc7WUFDaEIsSUFBSSxFQUFFLEVBQUU7WUFDUixJQUFJLEVBQUUsRUFBRTtZQUNSLE1BQU0sRUFBRSxFQUFFO1lBQ1YsT0FBTyxFQUFFLEVBQUU7WUFDWCxRQUFRLEVBQUUsTUFBTTtZQUNoQixTQUFTLEVBQUUsSUFBSTtZQUNmLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtTQUNoRixDQUFDO1FBZUYsWUFBTyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRzlDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7OztJQWxCRCxJQUNJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQzs7Ozs7SUFDRCxJQUFJLE1BQU0s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WTs7O1FBQUUsR0FBRyxFQUFFO1lBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUM7UUFDeEMsQ0FBQyxFQUFDLENBQUM7UUFFSCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsVUFBVTs7O1FBQUUsR0FBRyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDO1FBQ25DLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDbEQsQ0FBQzs7O1lBakhGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsMkJBQTJCO2dCQUNyQyw0bUNBQTBDO2dCQUMxQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUM7YUFDekI7Ozs7WUFOUSxXQUFXOzs7cUJBcUJqQixLQUFLO3NCQWFMLE1BQU07Ozs7SUExQlAsc0NBQWlCOztJQUNqQiwyQ0FBNEI7O0lBQzVCLG1DQUFXOzs7OztJQUNYLG9DQUFlOzs7OztJQUNmLHFDQVFFOztJQWNGLHFDQUNnRDs7Ozs7SUFFcEMsMENBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJY29uSGFuZGxlciB9IGZyb20gJy4uL2NvcmUvdXRpbC9pY29uJztcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSAnLi91dGlsJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ05vdGljZUJhciwgbnptLW5vdGljZS1iYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWNlLWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW0ljb25IYW5kbGVyXVxufSlcbmV4cG9ydCBjbGFzcyBOb3RpY2VCYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHZpc2lhYmxlID0gZmFsc2U7XG4gIG1hcnF1ZWVTY3JvbGwgPSAnc2Nyb2xsaW5nJztcbiAgc3R5bGUgPSB7fTtcbiAgcHJpdmF0ZSBfd2lkdGg7XG4gIHByaXZhdGUgX29wdGlvbiA9IHtcbiAgICBtb2RlOiAnJyxcbiAgICBpY29uOiAnJyxcbiAgICBhY3Rpb246ICcnLFxuICAgIGNvbnRlbnQ6ICcnLFxuICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgc2Nyb2xsaW5nOiB0cnVlLFxuICAgIG1hcnF1ZWVQcm9wczogeyBsb29wOiB0cnVlLCBsZWFkaW5nOiA1MDAsIHRyYWlsaW5nOiA4MDAwLCBmcHM6IDIwMCwgc3R5bGU6IHt9IH1cbiAgfTtcbiAgQElucHV0KClcbiAgZ2V0IG9wdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9uO1xuICB9XG4gIHNldCBvcHRpb24odmFsdWUpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuX29wdGlvbiwgdmFsdWUpO1xuICAgIHRoaXMuZGF0YVByb2Nlc3MoKTtcbiAgICBpZiAodGhpcy5fb3B0aW9uLnNjcm9sbGluZykge1xuICAgICAgdGhpcy5tYXJxdWVlU2Nyb2xsID0gJ3Njcm9sbGluZyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFycXVlZVNjcm9sbCA9ICdzY3JvbGxpbmctc3RvcCc7XG4gICAgfVxuICB9XG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9pY29uSGFuZGxlcjogSWNvbkhhbmRsZXIpIHtcbiAgICB0aGlzLl9pY29uSGFuZGxlci5sb2FkKCk7XG4gIH1cblxuICBjbGljaygpIHtcbiAgICB0aGlzLm9uQ2xpY2suZW1pdCh0aGlzLl9vcHRpb24ubW9kZSk7XG4gICAgaWYgKHRoaXMuX29wdGlvbi5tb2RlID09PSAnY2xvc2FibGUnKSB7XG4gICAgICB0aGlzLnZpc2lhYmxlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZGF0YVByb2Nlc3MoKSB7XG4gICAgdGhpcy52aXNpYWJsZSA9IHRydWU7XG4gICAgdGhpcy5zdHlsZSA9IHtcbiAgICAgIHdpZHRoOiAnMjAwJSdcbiAgICB9O1xuICAgIHRoaXMuX3dpZHRoID0gdXRpbC5nZXRUZXh0V2lkdGgodGhpcy5fb3B0aW9uLmNvbnRlbnQsIHRoaXMuX29wdGlvbi5mb250U2l6ZSk7XG4gICAgaWYgKHV0aWwuZ2V0V2lkdGhIZWlnaHQoKS53aWR0aCA8IHRoaXMuX3dpZHRoKSB7XG4gICAgICBjb25zdCBjb3VudCA9IHRoaXMuX29wdGlvbi5tYXJxdWVlUHJvcHMubG9vcCA/ICdpbmZpbml0ZScgOiAxO1xuICAgICAgbGV0IGFuaW1hdGlvbk5hbWUgPSBgbm90aWNlYmFybWFycXVlZV8ke3RoaXMuX3dpZHRofWA7XG4gICAgICB0aGlzLnN0eWxlID0ge1xuICAgICAgICB3aWR0aDogdGhpcy5fd2lkdGggKiAyICsgJ3B4JyxcbiAgICAgICAgJ2FuaW1hdGlvbi1uYW1lJzogYW5pbWF0aW9uTmFtZSxcbiAgICAgICAgJ2FuaW1hdGlvbi1kZWxheSc6IGAke3RoaXMuX29wdGlvbi5tYXJxdWVlUHJvcHMubGVhZGluZ31tc2AsXG4gICAgICAgICdhbmltYXRpb24tZHVyYXRpb24nOiBgJHsoKCgxIC8gdGhpcy5fb3B0aW9uLm1hcnF1ZWVQcm9wcy5mcHMpICogdGhpcy5fd2lkdGgpIC8gdXRpbC5nZXRXaWR0aEhlaWdodCgpLndpZHRoKSAqXG4gICAgICAgICAgMTAwMH1zYCxcbiAgICAgICAgJ2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQnOiBgJHtjb3VudH1gXG4gICAgICB9O1xuICAgICAgdGhpcy5tYXJxdWVlU2Nyb2xsID0gJ3Njcm9sbGluZyc7XG4gICAgICB0aGlzLmluc2V0S2V5ZnJhbWUoYW5pbWF0aW9uTmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFycXVlZVNjcm9sbCA9ICdzY3JvbGxpbmctc3RvcCc7XG4gICAgfVxuICB9XG5cbiAgaW5zZXRLZXlmcmFtZShhbmltYXRpb25OYW1lKSB7XG4gICAgdXRpbC5pbnNlcnRLZXlGcmFtZShcbiAgICAgIGBAa2V5ZnJhbWVzICR7YW5pbWF0aW9uTmFtZX0ge1xuICAgICAgMCUgeyBsZWZ0OiAwcHg7IH1cbiAgICAgIDEwMCUgeyBsZWZ0OiAtJHt0aGlzLl93aWR0aH1weCB9XG4gICAgfWAsXG4gICAgICAnbm90aWNlX2Jhcl9hbmltYXRpb25fY2xzJ1xuICAgICk7XG4gICAgdXRpbC5pbnNlcnRLZXlGcmFtZShcbiAgICAgIGBALXdlYmtpdC1rZXlmcmFtZXMgJHthbmltYXRpb25OYW1lfSB7XG4gICAgICAwJSB7IGxlZnQ6IDBweDsgfVxuICAgICAgMTAwJSB7IGxlZnQ6IC0ke3RoaXMuX3dpZHRofXB4IH1cbiAgICB9YCxcbiAgICAgICdub3RpY2VfYmFyX2FuaW1hdGlvbl9jbHMnXG4gICAgKTtcbiAgICB1dGlsLmluc2VydEtleUZyYW1lKFxuICAgICAgYEAtbW96LWtleWZyYW1lcyAke2FuaW1hdGlvbk5hbWV9IHtcbiAgICAgIDAlIHsgbGVmdDogMHB4OyB9XG4gICAgICAxMDAlIHsgbGVmdDogLSR7dGhpcy5fd2lkdGh9cHggfVxuICAgIH1gLFxuICAgICAgJ25vdGljZV9iYXJfYW5pbWF0aW9uX2NscydcbiAgICApO1xuICAgIHV0aWwuaW5zZXJ0S2V5RnJhbWUoXG4gICAgICBgQC1vLWtleWZyYW1lcyAke2FuaW1hdGlvbk5hbWV9IHtcbiAgICAgIDAlIHsgbGVmdDogMHB4OyB9XG4gICAgICAxMDAlIHsgbGVmdDogLSR7dGhpcy5fd2lkdGh9cHggfVxuICAgIH1gLFxuICAgICAgJ25vdGljZV9iYXJfYW5pbWF0aW9uX2NscydcbiAgICApO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsICgpID0+IHtcbiAgICAgIHRoaXMubWFycXVlZVNjcm9sbCA9ICdzY3JvbGxpbmctc3RvcCc7XG4gICAgfSk7XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsICgpID0+IHtcbiAgICAgIHRoaXMubWFycXVlZVNjcm9sbCA9ICdzY3JvbGxpbmcnO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdXRpbC5kZWxldGVLZXlGcmFtZSgnbm90aWNlX2Jhcl9hbmltYXRpb25fY2xzJyk7XG4gIH1cbn1cbiJdfQ==