@@ -26,6 +26,8 @@ import { TabControlServiceModal } from './TabControlServiceModal';
2626import { TabControlService } from './tabControl.service' ;
2727import { Menu } from '../../nav/menu' ;
2828
29+ declare var $ ;
30+
2931export class Md2TabChangeEvent {
3032 index : number ;
3133 tab : Md2Tab ;
@@ -87,7 +89,7 @@ export class Md2TabLabel {
8789 [class.disabled]="tab.disabled" (click)="goToTab(tab.reallyTab)">
8890 <span [md2Transclude]="tab.labelRef">{{tab.label}}</span>
8991 </div>
90- <button mdl-button #btn1="mdlButton" (click)="m1. toggle($event, btn1)" id="tab_manage_btn" mdl-ripple>
92+ <button mdl-button #btn1="mdlButton" (click)="toggle(m1, $event, btn1)" id="tab_manage_btn" mdl-ripple>
9193 <i class="fa fa-sort-down fa-lg white"></i>
9294 </button>
9395 <mdl-menu #m1="mdlMenu" mdl-menu-position="bottom-left">
@@ -315,17 +317,33 @@ export class Md2Tabs implements OnInit, AfterContentInit {
315317 canvasWidth -= tab . offsetWidth ;
316318 } ) ;
317319 this . shouldPaginate = canvasWidth < 0 ;
318- // TODO: need improve
319- if ( this . tabsModel . tabs . length <= 6 ) {
320- this . shouldPaginate = false ;
320+
321+ const manageBtn = $ ( '#tab_manage_btn' ) ,
322+ canvas = $ ( '.md2-tabs-canvas' ) ;
323+ if ( this . shouldPaginate ) {
324+ manageBtn . addClass ( 'fixed-manage-btn' ) ;
325+ canvas . css ( 'overflow' , 'hidden' ) ;
326+ } else {
327+ manageBtn . removeClass ( 'fixed-manage-btn' ) ;
328+ canvas . css ( 'overflow' , '' ) ;
329+ }
330+ }
331+
332+ toggle ( target , $event , btn1 ) {
333+ target . toggle ( event , btn1 ) ;
334+ const menuContainer = $ ( '.mdl-menu__container' ) ;
335+ if ( this . shouldPaginate ) {
336+ setTimeout ( ( ) => menuContainer . css ( { 'position' : 'fixed' , 'left' : '' , 'right' : '0' } ) ) ;
337+ } else {
338+ setTimeout ( ( ) => menuContainer . css ( { 'position' : '' , 'right' : '' } ) ) ;
321339 }
322340 }
323341
324342 /**
325343 * 调整tabs的位移
326344 * @param index
327345 */
328- adjustOffset ( index : number ) {
346+ adjustOffset ( index : number = this . tabsModel . activeTab ) {
329347 let elements = this . element ;
330348 let tabsWidth = 0 ;
331349 if ( ! elements . tabs [ index ] ) { return ; }
0 commit comments