UNPKG

materialize-angular

Version:
168 lines 15.1 kB
/** * @fileoverview added by tsickle * Generated from: app/completed-components/tab-group/tab-group.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @license * Copyright Workylab. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://raw.githubusercontent.com/workylab/materialize-angular/master/LICENSE */ import { Component, ContentChildren, ElementRef, EventEmitter, Input, Output, QueryList, Renderer2, ViewChild } from '@angular/core'; import { config } from '../../config'; import { Router } from '@angular/router'; import { supportedEvents } from '../../utils/get-supported-events.util'; import { TabComponent } from './tab/tab.component'; export class TabGroupComponent { /** * @param {?} router * @param {?} renderer */ constructor(router, renderer) { this.router = router; this.renderer = renderer; this.className = TabGroupComponent.defaultProps.className; this.selectedIndex = TabGroupComponent.defaultProps.selectedIndex; this.transitionDuration = TabGroupComponent.defaultProps.transitionDuration; this.prefix = config.components.prefix; this.onTabSelectEmitter = new EventEmitter(); this.supportedEvents = supportedEvents(); this.update = this.update.bind(this); window.addEventListener(this.supportedEvents.resize, this.update); } /** * @return {?} */ ngAfterViewInit() { setTimeout(this.update, 250); } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { if (changes.selectedIndex && !changes.selectedIndex.isFirstChange()) { this.moveIndicator(changes.selectedIndex.currentValue, true); } } /** * @return {?} */ update() { this.moveIndicator(this.selectedIndex, false); } /** * @param {?} index * @return {?} */ selectTab(index) { /** @type {?} */ const tabs = this.tabs.toArray(); /** @type {?} */ const selectedTab = tabs[index]; if (!selectedTab.disabled) { this.selectedIndex = index; this.onTabSelectEmitter.emit(index); this.moveIndicator(this.selectedIndex, true); if (selectedTab.link) { setTimeout((/** * @return {?} */ () => { this.router.navigate([selectedTab.link]); }), this.transitionDuration); } } } /** * @param {?} index * @return {?} */ activateIndex(index) { this.tabs.forEach((/** * @param {?} tab * @param {?} i * @return {?} */ (tab, i) => { tab.isActive = i === index; })); } /** * @param {?} index * @param {?} hasAnimation * @return {?} */ moveIndicator(index, hasAnimation) { this.activateIndex(index); /** @type {?} */ const child = this.headerRef.nativeElement.children[index]; /** @type {?} */ const transitionDuration = hasAnimation ? `${this.transitionDuration}ms` : null; this.renderer.setStyle(this.indicatorRef.nativeElement, 'transitionDuration', transitionDuration); this.renderer.setStyle(this.indicatorRef.nativeElement, 'width', `${child.offsetWidth}px`); this.renderer.setStyle(this.indicatorRef.nativeElement, 'transform', `translateX(${child.offsetLeft}px)`); } } TabGroupComponent.defaultProps = { className: '', selectedIndex: 0, transitionDuration: 450 }; TabGroupComponent.decorators = [ { type: Component, args: [{ selector: `${config.components.prefix}-tab-group }`, template: "<div [ngClass]=\"className\">\n <ul [ngClass]=\"prefix + '-tab-group'\" #header>\n\n <li (click)=\"selectTab(i)\"\n *ngFor=\"let tab of tabs; let i = index\"\n\n [ngClass]=\"prefix + '-tab-group-item'\"\n [class.active]=\"i === selectedIndex\"\n [class.disabled]=\"tab.disabled\"\n [isRippleActive]=\"!tab.disabled\"\n\n materializeRipple\n >\n {{ tab.title }}\n </li>\n\n <div [ngClass]=\"prefix + '-tab-group-indicator-container'\" #indicator>\n <div [ngClass]=\"prefix + '-tab-group-indicator'\"></div>\n </div>\n </ul>\n \n <div>\n <ng-content select=\"materialize-tab\"></ng-content>\n </div>\n</div>\n" }] } ]; /** @nocollapse */ TabGroupComponent.ctorParameters = () => [ { type: Router }, { type: Renderer2 } ]; TabGroupComponent.propDecorators = { tabs: [{ type: ContentChildren, args: [TabComponent,] }], indicatorRef: [{ type: ViewChild, args: ['indicator', { static: true },] }], headerRef: [{ type: ViewChild, args: ['header', { static: true },] }], onTabSelectEmitter: [{ type: Output, args: ['onSelectTab',] }], className: [{ type: Input }], selectedIndex: [{ type: Input }], transitionDuration: [{ type: Input }] }; if (false) { /** @type {?} */ TabGroupComponent.defaultProps; /** @type {?} */ TabGroupComponent.prototype.tabs; /** @type {?} */ TabGroupComponent.prototype.indicatorRef; /** @type {?} */ TabGroupComponent.prototype.headerRef; /** @type {?} */ TabGroupComponent.prototype.onTabSelectEmitter; /** @type {?} */ TabGroupComponent.prototype.className; /** @type {?} */ TabGroupComponent.prototype.selectedIndex; /** @type {?} */ TabGroupComponent.prototype.transitionDuration; /** @type {?} */ TabGroupComponent.prototype.prefix; /** @type {?} */ TabGroupComponent.prototype.supportedEvents; /** * @type {?} * @private */ TabGroupComponent.prototype.router; /** * @type {?} * @private */ TabGroupComponent.prototype.renderer; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL21hdGVyaWFsaXplLWFuZ3VsYXIvIiwic291cmNlcyI6WyJhcHAvY29tcGxldGVkLWNvbXBvbmVudHMvdGFiLWdyb3VwL3RhYi1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBRVQsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFPbkQsTUFBTSxPQUFPLGlCQUFpQjs7Ozs7SUFxQjVCLFlBQW9CLE1BQWMsRUFBVSxRQUFtQjtRQUEzQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQVB0RCxjQUFTLEdBQVcsaUJBQWlCLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztRQUM3RCxrQkFBYSxHQUFXLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUM7UUFDckUsdUJBQWtCLEdBQVcsaUJBQWlCLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDO1FBRWpGLFdBQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUl2QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNyRCxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsRUFBRSxDQUFDO1FBRXpDLElBQUksQ0FBQyxNQUFNLEdBQUcs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U0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxHQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTyxjQUFjO2dCQUNyRCwwcUJBQXlDO2FBQzFDOzs7O1lBVFEsTUFBTTtZQUxiLFNBQVM7OzttQkFzQlIsZUFBZSxTQUFDLFlBQVk7MkJBRTVCLFNBQVMsU0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO3dCQUN2QyxTQUFTLFNBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtpQ0FFcEMsTUFBTSxTQUFDLGFBQWE7d0JBRXBCLEtBQUs7NEJBQ0wsS0FBSztpQ0FDTCxLQUFLOzs7O0lBZk4sK0JBSUU7O0lBRUYsaUNBQTZEOztJQUU3RCx5Q0FBbUU7O0lBQ25FLHNDQUE2RDs7SUFFN0QsK0NBQWdFOztJQUVoRSxzQ0FBc0U7O0lBQ3RFLDBDQUE4RTs7SUFDOUUsK0NBQXdGOztJQUV4RixtQ0FBeUM7O0lBQ3pDLDRDQUE2Qzs7Ozs7SUFFakMsbUNBQXNCOzs7OztJQUFFLHFDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBXb3JreWxhYi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vd29ya3lsYWIvbWF0ZXJpYWxpemUtYW5ndWxhci9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgc3VwcG9ydGVkRXZlbnRzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZ2V0LXN1cHBvcnRlZC1ldmVudHMudXRpbCc7XG5pbXBvcnQgeyBTdXBwb3J0ZWRFdmVudHNNb2RlbCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29tbW9uL21vZGVscy9zdXBwb3J0ZWQtZXZlbnRzLm1vZGVsJztcbmltcG9ydCB7IFRhYkNvbXBvbmVudCB9IGZyb20gJy4vdGFiL3RhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFiR3JvdXBNb2RlbCB9IGZyb20gJy4vdGFiLWdyb3VwLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBgJHsgY29uZmlnLmNvbXBvbmVudHMucHJlZml4IH0tdGFiLWdyb3VwIH1gLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLWdyb3VwLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBUYWJHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIHN0YXRpYyByZWFkb25seSBkZWZhdWx0UHJvcHM6IFRhYkdyb3VwTW9kZWwgPSB7XG4gICAgY2xhc3NOYW1lOiAnJyxcbiAgICBzZWxlY3RlZEluZGV4OiAwLFxuICAgIHRyYW5zaXRpb25EdXJhdGlvbjogNDUwXG4gIH07XG5cbiAgQENvbnRlbnRDaGlsZHJlbihUYWJDb21wb25lbnQpIHRhYnM6IFF1ZXJ5TGlzdDxUYWJDb21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ2luZGljYXRvcicsIHsgc3RhdGljOiB0cnVlIH0pIGluZGljYXRvclJlZjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaGVhZGVyJywgeyBzdGF0aWM6IHRydWUgfSkgaGVhZGVyUmVmOiBFbGVtZW50UmVmO1xuXG4gIEBPdXRwdXQoJ29uU2VsZWN0VGFiJykgb25UYWJTZWxlY3RFbWl0dGVyOiBFdmVudEVtaXR0ZXI8bnVtYmVyPjtcblxuICBASW5wdXQoKSBjbGFzc05hbWU6IHN0cmluZyA9IFRhYkdyb3VwQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5jbGFzc05hbWU7XG4gIEBJbnB1dCgpIHNlbGVjdGVkSW5kZXg6IG51bWJlciA9IFRhYkdyb3VwQ29tcG9uZW50LmRlZmF1bHRQcm9wcy5zZWxlY3RlZEluZGV4O1xuICBASW5wdXQoKSB0cmFuc2l0aW9uRHVyYXRpb246IG51bWJlciA9IFRhYkdyb3VwQ29tcG9uZW50LmRlZmF1bHRQcm9wcy50cmFuc2l0aW9uRHVyYXRpb247XG5cbiAgcHVibGljIHByZWZpeCA9IGNvbmZpZy5jb21wb25lbnRzLnByZWZpeDtcbiAgcHVibGljIHN1cHBvcnRlZEV2ZW50czogU3VwcG9ydGVkRXZlbnRzTW9kZWw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gICAgdGhpcy5vblRhYlNlbGVjdEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICB0aGlzLnN1cHBvcnRlZEV2ZW50cyA9IHN1cHBvcnRlZEV2ZW50cygpO1xuXG4gICAgdGhpcy51cGRhdGUgPSB0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5zdXBwb3J0ZWRFdmVudHMucmVzaXplLCB0aGlzLnVwZGF0ZSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2V0VGltZW91dCh0aGlzLnVwZGF0ZSwgMjUwKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5zZWxlY3RlZEluZGV4ICYmICFjaGFuZ2VzLnNlbGVjdGVkSW5kZXguaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICB0aGlzLm1vdmVJbmRpY2F0b3IoY2hhbmdlcy5zZWxlY3RlZEluZGV4LmN1cnJlbnRWYWx1ZSwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlKCkge1xuICAgIHRoaXMubW92ZUluZGljYXRvcih0aGlzLnNlbGVjdGVkSW5kZXgsIGZhbHNlKTtcbiAgfVxuXG4gIHNlbGVjdFRhYihpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgdGFicyA9IHRoaXMudGFicy50b0FycmF5KCk7XG4gICAgY29uc3Qgc2VsZWN0ZWRUYWIgPSB0YWJzW2luZGV4XTtcblxuICAgIGlmICghc2VsZWN0ZWRUYWIuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGluZGV4O1xuXG4gICAgICB0aGlzLm9uVGFiU2VsZWN0RW1pdHRlci5lbWl0KGluZGV4KTtcbiAgICAgIHRoaXMubW92ZUluZGljYXRvcih0aGlzLnNlbGVjdGVkSW5kZXgsIHRydWUpO1xuXG4gICAgICBpZiAoc2VsZWN0ZWRUYWIubGluaykge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbc2VsZWN0ZWRUYWIubGlua10pO1xuICAgICAgICB9LCB0aGlzLnRyYW5zaXRpb25EdXJhdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWN0aXZhdGVJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy50YWJzLmZvckVhY2goKHRhYiwgaSkgPT4ge1xuICAgICAgdGFiLmlzQWN0aXZlID0gaSA9PT0gaW5kZXg7XG4gICAgfSk7XG4gIH1cblxuICBtb3ZlSW5kaWNhdG9yKGluZGV4OiBudW1iZXIsIGhhc0FuaW1hdGlvbjogYm9vbGVhbikge1xuICAgIHRoaXMuYWN0aXZhdGVJbmRleChpbmRleCk7XG5cbiAgICBjb25zdCBjaGlsZCA9IHRoaXMuaGVhZGVyUmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5baW5kZXhdO1xuICAgIGNvbnN0IHRyYW5zaXRpb25EdXJhdGlvbiA9IGhhc0FuaW1hdGlvblxuICAgICAgPyBgJHsgdGhpcy50cmFuc2l0aW9uRHVyYXRpb24gfW1zYFxuICAgICAgOiBudWxsO1xuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmluZGljYXRvclJlZi5uYXRpdmVFbGVtZW50LCAndHJhbnNpdGlvbkR1cmF0aW9uJywgdHJhbnNpdGlvbkR1cmF0aW9uKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW5kaWNhdG9yUmVmLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAkeyBjaGlsZC5vZmZzZXRXaWR0aCB9cHhgKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaW5kaWNhdG9yUmVmLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlWCgkeyBjaGlsZC5vZmZzZXRMZWZ0IH1weClgKTtcbiAgfVxufVxuIl19