ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
99 lines • 16.1 kB
JavaScript
import { Component, Input, Output, ContentChildren, QueryList, HostBinding, EventEmitter } from '@angular/core';
import { TabBarItemComponent } from './tab-bar-item.component';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "ng-zorro-antd-mobile/tabs";
export class TabBarComponent {
get activeTab() {
return this._activeTab;
}
set activeTab(tab) {
this._activeTab = tab;
if (this.tabBarItems && this.tabBarItems.length > 0) {
this.selectTabBarItem(tab);
}
}
get tintColor() {
return this._tintColor;
}
set tintColor(color) {
this._tintColor = color;
if (this.tabBarItems && this.tabBarItems.length > 0) {
this.tabBarItems.forEach((tabBarItem) => {
tabBarItem.tintColor = this._tintColor;
});
}
}
get unselectedTintColor() {
return this._unselectedTintColor;
}
set unselectedTintColor(color) {
this._unselectedTintColor = color;
if (this.tabBarItems && this.tabBarItems.length > 0) {
this.tabBarItems.forEach((tabBarItem) => {
tabBarItem.unselectedTintColor = this._unselectedTintColor;
});
}
}
constructor() {
this.prefixCls = 'am-tab-bar';
this._activeTab = 0;
this._tintColor = '#108ee9';
this._unselectedTintColor = '#888';
this.hidden = false;
this.prerenderingSiblingsNumber = -1;
this.barTintColor = 'white';
this.tabBarPosition = 'bottom';
this.onPress = new EventEmitter();
this.tabBar = true;
}
selectTabBarItem(index) {
if (this.tabBarItems && this.tabBarItems.length > 0) {
this.tabBarItems.forEach((tabBarItem) => {
tabBarItem.selected = false;
});
this.tabBarItems.toArray()[index].selected = true;
}
}
tabBarTabOnPress(pressParam) {
this.onPress.emit(pressParam);
}
ngAfterContentInit() {
if (this.tabBarItems && this.tabBarItems.length > 0) {
this.tabBarItems.forEach((tabBarItem) => {
tabBarItem.tintColor = this._tintColor;
tabBarItem.unselectedTintColor = this._unselectedTintColor;
});
}
this.selectTabBarItem(this.activeTab);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TabBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: TabBarComponent, selector: "TabBar, nzm-tab-bar", inputs: { hidden: "hidden", prerenderingSiblingsNumber: "prerenderingSiblingsNumber", activeTab: "activeTab", barTintColor: "barTintColor", tabBarPosition: "tabBarPosition", tintColor: "tintColor", unselectedTintColor: "unselectedTintColor" }, outputs: { onPress: "onPress" }, host: { properties: { "class.am-tab-bar": "this.tabBar" } }, queries: [{ propertyName: "tabBarItems", predicate: TabBarItemComponent, descendants: true }], ngImport: i0, template: "<Tabs\n [animated]=\"false\"\n [useOnPan]=\"false\"\n [swipeable]=\"false\"\n [activeTab]=\"activeTab\"\n [renderTabBar]=\"TabBarBar\"\n [tabDirection]=\"'horizontal'\"\n [tabPanesContent]=\"tabBarItems\"\n [tabBarPosition]=\"tabBarPosition\"\n [prerenderingSiblingsNumber]=\"prerenderingSiblingsNumber\"\n></Tabs>\n\n<ng-template #TabBarBar>\n <div class=\"am-tabs-tab-bar-wrap\">\n <div\n class=\"{{ prefixCls }}-bar\"\n [ngClass]=\"{\n 'am-tab-bar-bar-hidden-top': 'top' === tabBarPosition && hidden,\n 'am-tab-bar-bar-hidden-bottom': 'bottom' === tabBarPosition && hidden\n }\"\n [style.background-color]=\"barTintColor\"\n >\n <div\n class=\"am-tab-bar-tab\"\n *ngFor=\"let tabBarItem of tabBarItems; let i = index\"\n (click)=\"tabBarTabOnPress({ index: i, key: tabBarItem.key, title: tabBarItem.title })\"\n >\n <ng-container [ngTemplateOutlet]=\"tabBarItem.tabBarTab\"></ng-container>\n </div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.TabsComponent, selector: "Tabs, nzm-tabs", inputs: ["page", "swipeable", "useOnPan", "animated", "tabBarUnderlineStyle", "distanceToChangeTab", "tabTitleSize", "tabBarActiveTextColor", "tabBarInactiveTextColor", "renderTabBar", "tabBarBackgroundColor", "prerenderingSiblingsNumber", "tabBarTextStyle", "tabPanesContent", "activeTab", "tabBarPosition", "tabDirection"], outputs: ["onChange", "onTabClick"] }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: TabBarComponent, decorators: [{
type: Component,
args: [{ selector: 'TabBar, nzm-tab-bar', template: "<Tabs\n [animated]=\"false\"\n [useOnPan]=\"false\"\n [swipeable]=\"false\"\n [activeTab]=\"activeTab\"\n [renderTabBar]=\"TabBarBar\"\n [tabDirection]=\"'horizontal'\"\n [tabPanesContent]=\"tabBarItems\"\n [tabBarPosition]=\"tabBarPosition\"\n [prerenderingSiblingsNumber]=\"prerenderingSiblingsNumber\"\n></Tabs>\n\n<ng-template #TabBarBar>\n <div class=\"am-tabs-tab-bar-wrap\">\n <div\n class=\"{{ prefixCls }}-bar\"\n [ngClass]=\"{\n 'am-tab-bar-bar-hidden-top': 'top' === tabBarPosition && hidden,\n 'am-tab-bar-bar-hidden-bottom': 'bottom' === tabBarPosition && hidden\n }\"\n [style.background-color]=\"barTintColor\"\n >\n <div\n class=\"am-tab-bar-tab\"\n *ngFor=\"let tabBarItem of tabBarItems; let i = index\"\n (click)=\"tabBarTabOnPress({ index: i, key: tabBarItem.key, title: tabBarItem.title })\"\n >\n <ng-container [ngTemplateOutlet]=\"tabBarItem.tabBarTab\"></ng-container>\n </div>\n </div>\n </div>\n</ng-template>\n" }]
}], ctorParameters: () => [], propDecorators: { tabBarItems: [{
type: ContentChildren,
args: [TabBarItemComponent, { descendants: true }]
}], hidden: [{
type: Input
}], prerenderingSiblingsNumber: [{
type: Input
}], activeTab: [{
type: Input
}], barTintColor: [{
type: Input
}], tabBarPosition: [{
type: Input
}], tintColor: [{
type: Input
}], unselectedTintColor: [{
type: Input
}], onPress: [{
type: Output
}], tabBar: [{
type: HostBinding,
args: ['class.am-tab-bar']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL3RhYi1iYXIvdGFiLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9jb21wb25lbnRzL3RhYi1iYXIvdGFiLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sZUFBZSxFQUNmLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBYS9ELE1BQU0sT0FBTyxlQUFlO0lBYTFCLElBQ0ksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsR0FBVztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25ELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFLRCxJQUNJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLEtBQWE7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQStCLEVBQUUsRUFBRTtnQkFDM0QsVUFBVSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFB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IENvbXBvbmVudCxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBRdWVyeUxpc3QsXG4gIEhvc3RCaW5kaW5nLFxuICBFdmVudEVtaXR0ZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJCYXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi90YWItYmFyLWl0ZW0uY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgVGFiQmFyVGFiUG9zaXRpb25UeXBlID0gJ3RvcCcgfCAnYm90dG9tJztcbmV4cG9ydCBpbnRlcmZhY2UgVGFiQmFyT25QcmVzc0V2ZW50IHtcbiAgaW5kZXg6IG51bWJlcjtcbiAgdGl0bGU6IHN0cmluZztcbiAga2V5OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1RhYkJhciwgbnptLXRhYi1iYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLWJhci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGFiQmFyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIHByZWZpeENsczogc3RyaW5nID0gJ2FtLXRhYi1iYXInO1xuICBwcml2YXRlIF9hY3RpdmVUYWI6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX3RpbnRDb2xvcjogc3RyaW5nID0gJyMxMDhlZTknO1xuICBwcml2YXRlIF91bnNlbGVjdGVkVGludENvbG9yOiBzdHJpbmcgPSAnIzg4OCc7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihUYWJCYXJJdGVtQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHRhYkJhckl0ZW1zOiBRdWVyeUxpc3Q8VGFiQmFySXRlbUNvbXBvbmVudD47XG5cbiAgQElucHV0KClcbiAgaGlkZGVuOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHByZXJlbmRlcmluZ1NpYmxpbmdzTnVtYmVyOiBudW1iZXIgPSAtMTtcbiAgQElucHV0KClcbiAgZ2V0IGFjdGl2ZVRhYigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVUYWI7XG4gIH1cbiAgc2V0IGFjdGl2ZVRhYih0YWI6IG51bWJlcikge1xuICAgIHRoaXMuX2FjdGl2ZVRhYiA9IHRhYjtcbiAgICBpZiAodGhpcy50YWJCYXJJdGVtcyAmJiB0aGlzLnRhYkJhckl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0VGFiQmFySXRlbSh0YWIpO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKVxuICBiYXJUaW50Q29sb3I6IHN0cmluZyA9ICd3aGl0ZSc7XG4gIEBJbnB1dCgpXG4gIHRhYkJhclBvc2l0aW9uOiBUYWJCYXJUYWJQb3NpdGlvblR5cGUgPSAnYm90dG9tJztcbiAgQElucHV0KClcbiAgZ2V0IHRpbnRDb2xvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90aW50Q29sb3I7XG4gIH1cbiAgc2V0IHRpbnRDb2xvcihjb2xvcjogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGludENvbG9yID0gY29sb3I7XG4gICAgaWYgKHRoaXMudGFiQmFySXRlbXMgJiYgdGhpcy50YWJCYXJJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnRhYkJhckl0ZW1zLmZvckVhY2goKHRhYkJhckl0ZW06IFRhYkJhckl0ZW1Db21wb25lbnQpID0+IHtcbiAgICAgICAgdGFiQmFySXRlbS50aW50Q29sb3IgPSB0aGlzLl90aW50Q29sb3I7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IHVuc2VsZWN0ZWRUaW50Q29sb3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdW5zZWxlY3RlZFRpbnRDb2xvcjtcbiAgfVxuICBzZXQgdW5zZWxlY3RlZFRpbnRDb2xvcihjb2xvcjogc3RyaW5nKSB7XG4gICAgdGhpcy5fdW5zZWxlY3RlZFRpbnRDb2xvciA9IGNvbG9yO1xuICAgIGlmICh0aGlzLnRhYkJhckl0ZW1zICYmIHRoaXMudGFiQmFySXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50YWJCYXJJdGVtcy5mb3JFYWNoKCh0YWJCYXJJdGVtOiBUYWJCYXJJdGVtQ29tcG9uZW50KSA9PiB7XG4gICAgICAgIHRhYkJhckl0ZW0udW5zZWxlY3RlZFRpbnRDb2xvciA9IHRoaXMuX3Vuc2VsZWN0ZWRUaW50Q29sb3I7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgQE91dHB1dCgpXG4gIG9uUHJlc3M6IEV2ZW50RW1pdHRlcjxUYWJCYXJPblByZXNzRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJCYXJPblByZXNzRXZlbnQ+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hbS10YWItYmFyJylcbiAgdGFiQmFyOiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgc2VsZWN0VGFiQmFySXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMudGFiQmFySXRlbXMgJiYgdGhpcy50YWJCYXJJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnRhYkJhckl0ZW1zLmZvckVhY2goKHRhYkJhckl0ZW06IFRhYkJhckl0ZW1Db21wb25lbnQpID0+IHtcbiAgICAgICAgdGFiQmFySXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnRhYkJhckl0ZW1zLnRvQXJyYXkoKVtpbmRleF0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHRhYkJhclRhYk9uUHJlc3MocHJlc3NQYXJhbTogVGFiQmFyT25QcmVzc0V2ZW50KSB7XG4gICAgdGhpcy5vblByZXNzLmVtaXQocHJlc3NQYXJhbSk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgaWYgKHRoaXMudGFiQmFySXRlbXMgJiYgdGhpcy50YWJCYXJJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnRhYkJhckl0ZW1zLmZvckVhY2goKHRhYkJhckl0ZW06IFRhYkJhckl0ZW1Db21wb25lbnQpID0+IHtcbiAgICAgICAgdGFiQmFySXRlbS50aW50Q29sb3IgPSB0aGlzLl90aW50Q29sb3I7XG4gICAgICAgIHRhYkJhckl0ZW0udW5zZWxlY3RlZFRpbnRDb2xvciA9IHRoaXMuX3Vuc2VsZWN0ZWRUaW50Q29sb3I7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RUYWJCYXJJdGVtKHRoaXMuYWN0aXZlVGFiKTtcbiAgfVxufVxuIiwiPFRhYnNcbiAgW2FuaW1hdGVkXT1cImZhbHNlXCJcbiAgW3VzZU9uUGFuXT1cImZhbHNlXCJcbiAgW3N3aXBlYWJsZV09XCJmYWxzZVwiXG4gIFthY3RpdmVUYWJdPVwiYWN0aXZlVGFiXCJcbiAgW3JlbmRlclRhYkJhcl09XCJUYWJCYXJCYXJcIlxuICBbdGFiRGlyZWN0aW9uXT1cIidob3Jpem9udGFsJ1wiXG4gIFt0YWJQYW5lc0NvbnRlbnRdPVwidGFiQmFySXRlbXNcIlxuICBbdGFiQmFyUG9zaXRpb25dPVwidGFiQmFyUG9zaXRpb25cIlxuICBbcHJlcmVuZGVyaW5nU2libGluZ3NOdW1iZXJdPVwicHJlcmVuZGVyaW5nU2libGluZ3NOdW1iZXJcIlxuPjwvVGFicz5cblxuPG5nLXRlbXBsYXRlICNUYWJCYXJCYXI+XG4gIDxkaXYgY2xhc3M9XCJhbS10YWJzLXRhYi1iYXItd3JhcFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwie3sgcHJlZml4Q2xzIH19LWJhclwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdhbS10YWItYmFyLWJhci1oaWRkZW4tdG9wJzogJ3RvcCcgPT09IHRhYkJhclBvc2l0aW9uICYmIGhpZGRlbixcbiAgICAgICAgJ2FtLXRhYi1iYXItYmFyLWhpZGRlbi1ib3R0b20nOiAnYm90dG9tJyA9PT0gdGFiQmFyUG9zaXRpb24gJiYgaGlkZGVuXG4gICAgICB9XCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImJhclRpbnRDb2xvclwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImFtLXRhYi1iYXItdGFiXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHRhYkJhckl0ZW0gb2YgdGFiQmFySXRlbXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAoY2xpY2spPVwidGFiQmFyVGFiT25QcmVzcyh7IGluZGV4OiBpLCBrZXk6IHRhYkJhckl0ZW0ua2V5LCB0aXRsZTogdGFiQmFySXRlbS50aXRsZSB9KVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiQmFySXRlbS50YWJCYXJUYWJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=