@taiga-ui/kit 2.78.0 → 2.80.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/taiga-ui-kit-components-input-count.umd.js +22 -2
- package/bundles/taiga-ui-kit-components-input-count.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-count.umd.min.js +1 -1
- package/bundles/taiga-ui-kit-components-input-count.umd.min.js.map +1 -1
- package/bundles/taiga-ui-kit-components-tabs.umd.js +0 -3
- package/bundles/taiga-ui-kit-components-tabs.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-tabs.umd.min.js +1 -1
- package/bundles/taiga-ui-kit-components-tabs.umd.min.js.map +1 -1
- package/components/input-count/input-count.component.d.ts +2 -0
- package/components/input-count/taiga-ui-kit-components-input-count.metadata.json +1 -1
- package/esm2015/components/input-count/input-count.component.js +20 -4
- package/esm2015/components/tabs/tabs-with-more/tabs-with-more.component.js +1 -4
- package/esm5/components/input-count/input-count.component.js +24 -4
- package/esm5/components/tabs/tabs-with-more/tabs-with-more.component.js +1 -4
- package/fesm2015/taiga-ui-kit-components-input-count.js +19 -3
- package/fesm2015/taiga-ui-kit-components-input-count.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-tabs.js +0 -3
- package/fesm2015/taiga-ui-kit-components-tabs.js.map +1 -1
- package/fesm5/taiga-ui-kit-components-input-count.js +23 -3
- package/fesm5/taiga-ui-kit-components-input-count.js.map +1 -1
- package/fesm5/taiga-ui-kit-components-tabs.js +0 -3
- package/fesm5/taiga-ui-kit-components-tabs.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/router"),require("@taiga-ui/cdk"),require("@taiga-ui/core"),require("@taiga-ui/kit/tokens"),require("rxjs"),require("@angular/common"),require("@ng-web-apis/mutation-observer"),require("rxjs/operators"),require("@tinkoff/ng-polymorpheus"),require("@ng-web-apis/common"),require("@tinkoff/ng-event-plugins")):"function"==typeof define&&define.amd?define("@taiga-ui/kit/components/tabs",["exports","@angular/core","@angular/router","@taiga-ui/cdk","@taiga-ui/core","@taiga-ui/kit/tokens","rxjs","@angular/common","@ng-web-apis/mutation-observer","rxjs/operators","@tinkoff/ng-polymorpheus","@ng-web-apis/common","@tinkoff/ng-event-plugins"],t):t(((e=e||self)["taiga-ui"]=e["taiga-ui"]||{},e["taiga-ui"].kit=e["taiga-ui"].kit||{},e["taiga-ui"].kit.components=e["taiga-ui"].kit.components||{},e["taiga-ui"].kit.components.tabs={}),e.ng.core,e.ng.router,e.cdk,e.core$1,e["taiga-ui"].kit.tokens,e.rxjs,e.ng.common,e.mutationObserver,e.rxjs.operators,e.ngPolymorpheus,e.common$1,e.ngEventPlugins)}(this,(function(e,t,n,i,o,r,a,s,c,u,l,d,p){"use strict";var h=function(){return(h=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function m(e,t,n,i){var o,r=arguments.length,a=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(r<3?o(a):r>3?o(t,n,a):o(t,n))||a);return r>3&&a&&Object.defineProperty(t,n,a),a}function f(e,t){return function(n,i){t(n,i,e)}}Object.create;Object.create;var v=function(){function e(e){this.template=e}return e.ctorParameters=function(){return[{type:t.TemplateRef,decorators:[{type:t.Inject,args:[t.TemplateRef]}]}]},e=m([t.Directive({selector:"ng-template[tuiTab]"}),f(0,t.Inject(t.TemplateRef))],e)}(),g=new t.InjectionToken("Stream of tab activation events"),I=[i.TuiDestroyService,i.TuiFocusVisibleService,o.TuiRouterLinkActiveService,{provide:g,deps:[t.ElementRef,s.DOCUMENT,o.TuiRouterLinkActiveService,[new t.Optional,c.MutationObserverService],[new t.Optional,n.RouterLinkActive]],useFactory:b},o.MODE_PROVIDER];function b(e,t,n,o,r){var s=e.nativeElement,c=r&&o?o.pipe(u.filter((function(){return r.isActive}))):a.EMPTY;return a.merge(c,n.pipe(u.filter(a.identity)),s.matches("button")?i.typedFromEvent(s,"click"):a.EMPTY).pipe(u.map((function(){return s.dispatchEvent(i.tuiCustomEvent("tui-tab-activate",{bubbles:!0},t))})))}var y=function(){function e(e,t,n,i,o,r,a,s,c){var u=this;this.routerLinkActive=e,this.elementRef=t,this.mode$=n,this.event$=i,this.margin=o,this.focusVisible=!1,this.isIos=r&&a,this.isAndroid=r&&s,c.subscribe((function(e){u.focusVisible=e}))}return Object.defineProperty(e.prototype,"isActive",{get:function(){return!!this.routerLinkActive&&this.routerLinkActive.isActive},enumerable:!0,configurable:!0}),e.prototype.ngOnDestroy=function(){i.isNativeFocused(this.elementRef.nativeElement)&&i.setNativeFocused(this.elementRef.nativeElement,!1)},e.ctorParameters=function(){return[{type:n.RouterLinkActive,decorators:[{type:t.Optional},{type:t.Inject,args:[n.RouterLinkActive]}]},{type:t.ElementRef,decorators:[{type:t.Inject,args:[t.ElementRef]}]},{type:a.Observable,decorators:[{type:t.Inject,args:[o.TUI_MODE]}]},{type:a.Observable,decorators:[{type:t.Inject,args:[g]}]},{type:Number,decorators:[{type:t.Inject,args:[r.TUI_TAB_MARGIN]}]},{type:Boolean,decorators:[{type:t.Inject,args:[r.TUI_MOBILE_AWARE]}]},{type:Boolean,decorators:[{type:t.Inject,args:[i.TUI_IS_IOS]}]},{type:Boolean,decorators:[{type:t.Inject,args:[i.TUI_IS_ANDROID]}]},{type:i.TuiFocusVisibleService,decorators:[{type:t.Inject,args:[i.TuiFocusVisibleService]}]}]},m([t.HostBinding("class._ios")],e.prototype,"isIos",void 0),m([t.HostBinding("class._android")],e.prototype,"isAndroid",void 0),m([t.HostBinding("class._focus-visible")],e.prototype,"focusVisible",void 0),m([t.HostBinding("class._active")],e.prototype,"isActive",null),e=m([t.Component({selector:"a[tuiTab]:not([routerLink]), a[tuiTab][routerLink][routerLinkActive], button[tuiTab]",template:'<ng-container *ngIf="event$ | async"></ng-container>\n<span class="t-highlight">\n <ng-content></ng-content>\n</span>\n',changeDetection:t.ChangeDetectionStrategy.OnPush,providers:I,host:{"($.data-mode.attr)":"mode$","[style.--tui-tab-margin.px]":"margin",type:"button"},styles:[":host-context(._underline):hover{box-shadow:inset 0 -2px var(--tui-base-03)}:host-context([tuiTabs]>):first-child,:host-context([tuiTabs]>:first-child),:host-context(tui-tabs>):first-child,:host-context(tui-tabs>:first-child){margin-left:0}:host{transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;border:0;background:0 0;font-size:inherit;line-height:inherit;position:relative;display:flex;flex-shrink:0;height:100%;box-sizing:border-box;justify-content:space-between;align-items:center;white-space:nowrap;cursor:pointer;outline:0;text-decoration:none;color:inherit;transition-property:color,box-shadow,opacity;margin-left:var(--tui-tab-margin,1.5rem)}:host:disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}:host:not([data-mode])._active{opacity:1;color:var(--tui-text-01);box-shadow:none}:host[data-mode=onDark]{color:rgba(255,255,255,.72)}:host[data-mode=onDark]._active,:host[data-mode=onDark]:hover{color:#fff}:host[data-mode=onDark]._focus-visible .t-highlight{background:var(--tui-clear-inverse);color:var(--tui-text-01)}:host[data-mode=onLight]{color:var(--tui-text-02)}:host[data-mode=onLight]._active,:host[data-mode=onLight]:hover{color:var(--tui-text-01)}:host[data-mode=onLight]._focus-visible .t-highlight{background:var(--tui-text-01);color:#fff}:host._focus-visible .t-highlight{background:var(--tui-selection)}:host._android{transition-property:opacity;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;height:3rem;flex:1;flex-shrink:0;justify-content:center;margin:0;text-transform:uppercase;color:var(--tui-base-09);opacity:.5;font-size:.875rem;font-weight:500;letter-spacing:-.008125rem;font-family:-apple-system,BlinkMacSystemFont,Roboto,'Helvetica Neue',sans-serif}:host._android:hover{box-shadow:none}:host._android._active{opacity:1;color:var(--tui-base-09)}:host._android .t-highlight{width:auto}:host._ios{height:1.75rem;flex:1;flex-shrink:0;justify-content:center;margin:0;color:var(--tui-base-01);opacity:1;font-size:.8125rem;font-weight:500;letter-spacing:-.005rem;font-family:-apple-system,BlinkMacSystemFont,Roboto,'Helvetica Neue',sans-serif}:host._ios:hover{box-shadow:none}:host._ios._active{font-size:.875rem;font-weight:600;color:var(--tui-link)}:host._ios .t-highlight{width:auto}@media (hover:hover){:host:hover{color:var(--tui-text-01)}}.t-highlight{display:inline-flex;width:100%;align-items:center;justify-content:inherit}.t-highlight ::ng-deep>*{flex-shrink:0}"]}),f(0,t.Optional()),f(0,t.Inject(n.RouterLinkActive)),f(1,t.Inject(t.ElementRef)),f(2,t.Inject(o.TUI_MODE)),f(3,t.Inject(g)),f(4,t.Inject(r.TUI_TAB_MARGIN)),f(5,t.Inject(r.TUI_MOBILE_AWARE)),f(6,t.Inject(i.TUI_IS_IOS)),f(7,t.Inject(i.TUI_IS_ANDROID)),f(8,t.Inject(i.TuiFocusVisibleService))],e)}(),x={underline:!0,exposeActive:!0,itemsLimit:1/0,minMoreWidth:0},T=new t.InjectionToken("Default parameters for tabs component",{factory:function(){return x}}),_={childList:!0},w=function(){function e(e,n,o,r,a,s,c,l){var d=this;this.options=e,this.elementRef=n,this.renderer=o,this.children=i.EMPTY_QUERY,this.underline=this.options.underline,this.activeItemIndexChange=new t.EventEmitter,this.activeItemIndex=0,this.isIos=l&&s,this.isAndroid=l&&c,a.pipe(u.filter((function(){return d.underline}))).subscribe((function(){r.detectChanges()}))}return Object.defineProperty(e.prototype,"activeItemIndexSetter",{set:function(e){this.activeItemIndex=e,this.scrollTo(this.tabs[e])},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tabs",{get:function(){return Array.from(this.elementRef.nativeElement.querySelectorAll("[tuiTab]"))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"activeElement",{get:function(){return this.tabs[this.activeItemIndex]||null},enumerable:!0,configurable:!0}),e.prototype.onActivate=function(e){var t=this.tabs.findIndex((function(t){return t===e}));t!==this.activeItemIndex&&(this.activeItemIndexSetter=t,this.activeItemIndexChange.emit(t))},e.prototype.onKeyDownArrow=function(e,t){var n=this.tabs;i.moveFocus(n.indexOf(e),n,t)},e.prototype.ngAfterViewChecked=function(){var e=this,t=this.tabs,n=this.activeElement;t.forEach((function(t){e.renderer.removeClass(t,"_active"),e.renderer.setAttribute(t,"tabIndex","-1")})),n&&(this.renderer.addClass(n,"_active"),this.renderer.setAttribute(n,"tabIndex","0"))},e.prototype.scrollTo=function(e){if(e){var t=e.offsetLeft,n=e.offsetWidth,i=this.elementRef.nativeElement;t<i.scrollLeft&&(i.scrollLeft=t),t+n>i.scrollLeft+i.offsetWidth&&(i.scrollLeft=t+n-i.offsetWidth)}},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[T]}]},{type:t.ElementRef,decorators:[{type:t.Inject,args:[t.ElementRef]}]},{type:t.Renderer2,decorators:[{type:t.Inject,args:[t.Renderer2]}]},{type:t.ChangeDetectorRef,decorators:[{type:t.Inject,args:[t.ChangeDetectorRef]}]},{type:a.Observable,decorators:[{type:t.Inject,args:[i.TuiResizeService]}]},{type:Boolean,decorators:[{type:t.Inject,args:[i.TUI_IS_IOS]}]},{type:Boolean,decorators:[{type:t.Inject,args:[i.TUI_IS_ANDROID]}]},{type:Boolean,decorators:[{type:t.Inject,args:[r.TUI_MOBILE_AWARE]}]}]},m([t.ContentChildren(t.forwardRef((function(){return y})))],e.prototype,"children",void 0),m([t.Input(),t.HostBinding("class._underline"),i.tuiDefaultProp()],e.prototype,"underline",void 0),m([t.Input("activeItemIndex")],e.prototype,"activeItemIndexSetter",null),m([t.Output()],e.prototype,"activeItemIndexChange",void 0),m([t.HostBinding("class._ios")],e.prototype,"isIos",void 0),m([t.HostBinding("class._android")],e.prototype,"isAndroid",void 0),m([t.HostListener("tui-tab-activate.stop",["$event.target"])],e.prototype,"onActivate",null),m([t.HostListener("keydown.arrowRight.prevent",["$event.target","1"]),t.HostListener("keydown.arrowLeft.prevent",["$event.target","-1"])],e.prototype,"onKeyDownArrow",null),e=m([t.Component({selector:"tui-tabs, nav[tuiTabs]",template:'<ng-container *ngIf="children.changes | async"></ng-container>\n<ng-content></ng-content>\n<tui-underline\n *ngIf="underline"\n class="t-underline"\n [element]="activeElement"\n></tui-underline>\n',changeDetection:t.ChangeDetectionStrategy.OnPush,providers:[i.TuiDestroyService,i.TuiResizeService,c.MutationObserverService,{provide:c.MUTATION_OBSERVER_INIT,useValue:_}],styles:[":host{scrollbar-width:none;-ms-overflow-style:none;position:relative;z-index:0;display:flex;font:var(--tui-font-text-m);height:var(--tui-height-l);color:var(--tui-text-02);box-shadow:inset 0 -1px var(--tui-base-03);overflow:auto}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{background:0 0;width:0;height:0}:host._android{height:auto}:host._ios{height:auto;border:2px solid transparent;border-radius:.5625rem;background:var(--tui-link);box-shadow:none}.t-underline{z-index:-1}"]}),f(0,t.Inject(T)),f(1,t.Inject(t.ElementRef)),f(2,t.Inject(t.Renderer2)),f(3,t.Inject(t.ChangeDetectorRef)),f(4,t.Inject(i.TuiResizeService)),f(5,t.Inject(i.TUI_IS_IOS)),f(6,t.Inject(i.TUI_IS_ANDROID)),f(7,t.Inject(r.TUI_MOBILE_AWARE))],e)}();function A(e,t,n,i,o,r){var s=i.body,c=o.nativeElement;return a.merge(e,t.pipe(u.tap((function(){return r.detectChanges()})))).pipe(u.filter((function(){return s.contains(c)})),u.debounceTime(0),u.startWith(null),u.takeUntil(n))}var R={childList:!0,subtree:!0,characterData:!0},O=new t.InjectionToken("Refresh stream"),j=[i.TuiResizeService,i.TuiDestroyService,c.MutationObserverService,{provide:c.MUTATION_OBSERVER_INIT,useValue:R},{provide:O,deps:[i.TuiResizeService,c.MutationObserverService,i.TuiDestroyService,s.DOCUMENT,t.ElementRef,t.ChangeDetectorRef],useFactory:A}],E=function(){function e(e,n,o,r,a,s){this.options=e,this.margin=n,this.refresh$=o,this.elementRef=r,this.changeDetectorRef=a,this.moreWord$=s,this.maxIndex=1/0,this.moreContent="",this.dropdownContent="",this.underline=this.options.underline,this.activeItemIndex=0,this.itemsLimit=this.options.itemsLimit,this.activeItemIndexChange=new t.EventEmitter,this.items=i.EMPTY_QUERY,this.open=!1}return Object.defineProperty(e.prototype,"tabs",{get:function(){return Array.from(this.elementRef.nativeElement.querySelectorAll("[tuiTab]"))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"activeElement",{get:function(){var e,t=this.tabs,n=i.tuiClamp(this.activeItemIndex||0,0,t.length-2);return this.options.exposeActive||this.lastVisibleIndex>=n?t[n]||null:(null===(e=this.moreButton)||void 0===e?void 0:e.nativeElement)||null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isMoreVisible",{get:function(){return this.lastVisibleIndex<this.items.length-1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isMoreFocusable",{get:function(){return!!this.moreButton&&i.isNativeFocused(this.moreButton.nativeElement)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isMoreActive",{get:function(){return this.open||!this.options.exposeActive&&this.lastVisibleIndex<this.activeItemIndex},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isMoreAlone",{get:function(){return this.lastVisibleIndex<0&&!this.options.exposeActive},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"lastVisibleIndex",{get:function(){if(this.itemsLimit+1>=this.items.length)return this.maxIndex;var e=this.itemsLimit-1>this.activeItemIndex||!this.options.exposeActive?1:2;return Math.min(this.itemsLimit-e,this.maxIndex)},enumerable:!0,configurable:!0}),e.prototype.ngAfterViewInit=function(){var e=this;this.refresh$.pipe(u.map((function(){return e.getMaxIndex()})),u.filter((function(t){return e.maxIndex!==t}))).subscribe((function(t){e.maxIndex=t,e.changeDetectorRef.detectChanges()}))},e.prototype.onActiveItemIndexChange=function(e){this.updateActiveItemIndex(e)},e.prototype.onClick=function(e){this.open=!1,this.focusMore(),this.updateActiveItemIndex(e)},e.prototype.onArrowRight=function(e){i.tuiAssertIsHTMLElement(e.target),i.isNativeFocused(e.target)&&this.focusMore()},e.prototype.onArrowLeft=function(){for(var e=this.tabs,t=e.length-2;t>=0;){if(i.setNativeFocused(e[t]),i.isNativeFocused(e[t]))return;t--}},e.prototype.onWrapperArrow=function(e,t,n){var o=e.target,r=i.getClosestFocusable(o,n,t);r&&i.setNativeFocused(r)},e.prototype.isOverflown=function(e){return e!==this.activeItemIndex||!this.options.exposeActive},e.prototype.shouldShow=function(e){return e>this.lastVisibleIndex&&this.isOverflown(e)},e.prototype.focusMore=function(){this.moreButton&&i.setNativeFocused(this.moreButton.nativeElement)},e.prototype.getMaxIndex=function(){var e=this.tabs,t=this.activeItemIndex,n=this.margin;if(e.length<2)return 0;var o=this.options,r=o.exposeActive,a=o.minMoreWidth,s=this.elementRef.nativeElement.clientWidth,c=e[t]?e[t].scrollWidth:0,u=Math.max(e[e.length-1].scrollWidth,a),l=e.length-2,d=e.reduce((function(e,t){return e+t.scrollWidth}),0)+l*n-e[e.length-1].scrollWidth;if(d<=s)return 1/0;for(;l;){if(d-=e[l].scrollWidth+n,l--,d+(r&&t>l?c+n:0)+u+n+i.toInt(this.maxIndex===l-1)<s)return l}return-1},e.prototype.updateActiveItemIndex=function(e){this.activeItemIndex!==e&&(this.activeItemIndex=e,this.activeItemIndexChange.emit(e),this.maxIndex=this.getMaxIndex())},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[T]}]},{type:Number,decorators:[{type:t.Inject,args:[r.TUI_TAB_MARGIN]}]},{type:a.Observable,decorators:[{type:t.Inject,args:[O]}]},{type:t.ElementRef,decorators:[{type:t.Inject,args:[t.ElementRef]}]},{type:t.ChangeDetectorRef,decorators:[{type:t.Inject,args:[t.ChangeDetectorRef]}]},{type:a.Observable,decorators:[{type:t.Inject,args:[r.TUI_MORE_WORD]}]}]},m([t.ViewChild(y,{read:t.ElementRef})],e.prototype,"moreButton",void 0),m([t.Input(),i.tuiDefaultProp()],e.prototype,"moreContent",void 0),m([t.Input(),i.tuiDefaultProp()],e.prototype,"dropdownContent",void 0),m([t.Input(),t.HostBinding("class._underline"),i.tuiDefaultProp()],e.prototype,"underline",void 0),m([t.Input(),i.tuiDefaultProp()],e.prototype,"activeItemIndex",void 0),m([t.Input(),i.tuiDefaultProp()],e.prototype,"itemsLimit",void 0),m([t.Output()],e.prototype,"activeItemIndexChange",void 0),m([t.ContentChildren(v,{read:t.TemplateRef})],e.prototype,"items",void 0),e=m([t.Component({selector:"tui-tabs-with-more, nav[tuiTabsWithMore]",template:'<ng-container *ngIf="items.changes | async"></ng-container>\n<div class="t-wrapper">\n <tui-tabs\n class="t-tabs"\n [underline]="false"\n [activeItemIndex]="activeItemIndex"\n (activeItemIndexChange)="onActiveItemIndexChange($event)"\n (keydown.arrowRight)="onArrowRight($event)"\n >\n <ng-container *ngFor="let item of items; let index = index">\n <ng-container\n *ngIf="index <= lastVisibleIndex; else hidden"\n [ngTemplateOutlet]="item"\n ></ng-container>\n <ng-template #hidden>\n <div [class.t-overflown]="isOverflown(index)">\n <ng-container [ngTemplateOutlet]="item"></ng-container>\n </div>\n </ng-template>\n </ng-container>\n </tui-tabs>\n <tui-hosted-dropdown\n class="t-more_wrapper"\n [class.t-overflown]="!isMoreVisible"\n [content]="dropdownContent || dropdown"\n [(open)]="open"\n >\n <button\n tuiTab\n [class._active]="isMoreActive"\n [class.t-no-margin]="isMoreAlone"\n [tuiFocusable]="isMoreFocusable"\n (keydown.arrowLeft.prevent)="onArrowLeft()"\n >\n <span\n polymorpheus-outlet\n [content]="moreContent || more"\n ></span>\n </button>\n <ng-template #more>\n {{ moreWord$ | async }}\n <tui-svg\n src="tuiIconChevronDown"\n class="t-icon"\n [class.t-icon_rotated]="open"\n ></tui-svg>\n </ng-template>\n </tui-hosted-dropdown>\n <ng-template #dropdown>\n <div\n #element\n class="t-dropdown"\n (keydown.arrowUp.prevent)="onWrapperArrow($event, element, true)"\n (keydown.arrowDown.prevent)="onWrapperArrow($event, element, false)"\n >\n <div\n *ngFor="let item of items; let index = index"\n (tui-tab-activate)="onClick(index)"\n >\n <ng-container\n *ngIf="shouldShow(index)"\n [ngTemplateOutlet]="item"\n ></ng-container>\n </div>\n </div>\n </ng-template>\n <tui-underline\n *ngIf="underline"\n [element]="activeElement"\n ></tui-underline>\n</div>\n',changeDetection:t.ChangeDetectionStrategy.OnPush,providers:j,styles:[":host{position:relative;display:flex;font:var(--tui-font-text-m);height:var(--tui-height-l);box-sizing:border-box;color:var(--tui-text-02);box-shadow:inset 0 -1px var(--tui-base-03);overflow:hidden}.t-wrapper{position:relative;display:flex}.t-tabs{height:inherit;font-size:inherit;font-weight:inherit;overflow:visible;box-shadow:none;color:inherit}.t-overflown{display:flex;margin:0;width:0;max-width:0;overflow:hidden;visibility:hidden}.t-more_wrapper{height:100%;pointer-events:none}.t-more_wrapper button{pointer-events:auto}.t-icon{transition-property:transform;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;margin-right:-.25rem;vertical-align:bottom}.t-icon_rotated{transform:rotate(180deg)}.t-dropdown{padding:.5rem 0}.t-dropdown ::ng-deep [tuiTab]{width:100%;height:2.75rem;justify-content:flex-start;margin:0;padding:0 1rem;color:var(--tui-text-02)}.t-dropdown ::ng-deep [tuiTab]:before{display:none}.t-dropdown ::ng-deep [tuiTab]._active,.t-dropdown ::ng-deep [tuiTab]:focus,.t-dropdown ::ng-deep [tuiTab]:hover{box-shadow:none;color:var(--tui-base-08);background:var(--tui-base-02)}.t-no-margin{margin-left:0}"]}),f(0,t.Inject(T)),f(1,t.Inject(r.TUI_TAB_MARGIN)),f(2,t.Inject(O)),f(3,t.Inject(t.ElementRef)),f(4,t.Inject(t.ChangeDetectorRef)),f(5,t.Inject(r.TUI_MORE_WORD))],e)}(),D=function(){function e(e,t,n,o,r,s,c){var l=this,d=e.nativeElement;this.ngZone=t,this.animationFrame$=n,this.mobileAware=o,this.ios=r,this.android=s,this.mode$=c,this.element$=new a.ReplaySubject(1),this.refresh$=this.element$.pipe(u.switchMap((function(e){return e?l.animationFrame$.pipe(u.mapTo(e),i.tuiZonefree(l.ngZone)):a.of(null)})),u.share()),this.isIos=this.mobileAware&&this.ios,this.isAndroid=this.mobileAware&&this.android,this.transition$=p.asCallable(this.element$.pipe(u.map((function(e){return e&&"all"})),u.debounceTime(50))),this.transform$=p.asCallable(this.refresh$.pipe(u.map((function(e){return e?"translate3d("+i.px(e.offsetLeft)+", 0, 0)":null})))),this.width$=p.asCallable(this.refresh$.pipe(u.map((function(e){return(null==e?void 0:e.clientWidth)||0})))),d["$.style.transitionProperty"]=this.transition$,d["$.style.transform"]=this.transform$,d["$.style.width.px"]=this.width$}return Object.defineProperty(e.prototype,"element",{set:function(e){this.element$.next(e)},enumerable:!0,configurable:!0}),e.ctorParameters=function(){return[{type:t.ElementRef,decorators:[{type:t.Inject,args:[t.ElementRef]}]},{type:t.NgZone,decorators:[{type:t.Inject,args:[t.NgZone]}]},{type:a.Observable,decorators:[{type:t.Inject,args:[d.ANIMATION_FRAME]}]},{type:Boolean,decorators:[{type:t.Inject,args:[r.TUI_MOBILE_AWARE]}]},{type:Boolean,decorators:[{type:t.Inject,args:[i.TUI_IS_IOS]}]},{type:Boolean,decorators:[{type:t.Inject,args:[i.TUI_IS_ANDROID]}]},{type:a.Observable,decorators:[{type:t.Inject,args:[o.TUI_MODE]}]}]},m([t.Input(),i.tuiDefaultProp()],e.prototype,"element",null),m([t.HostBinding("class._ios")],e.prototype,"isIos",void 0),m([t.HostBinding("class._android")],e.prototype,"isAndroid",void 0),m([t.HostListener("$.style.transitionProperty")],e.prototype,"transition$",void 0),m([t.HostListener("$.style.transform")],e.prototype,"transform$",void 0),m([t.HostListener("$.style.width.px")],e.prototype,"width$",void 0),e=m([t.Component({selector:"tui-underline",template:"",changeDetection:t.ChangeDetectionStrategy.OnPush,providers:[o.MODE_PROVIDER],host:{"($.data-mode.attr)":"mode$"},styles:[":host{transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;position:absolute;left:0;height:100%;color:var(--tui-primary);transform:scale(0);box-shadow:inset 0 -.1875rem 0 -.0625rem;transition-property:none;pointer-events:none}:host._ios{border-radius:.4375rem;background:var(--tui-base-01);box-shadow:0 .1875rem .0625rem rgba(0,0,0,.04),0 .1875rem .5rem rgba(0,0,0,.12)}:host._android{box-shadow:inset 0 -.1875rem var(--tui-link)}:host[data-mode=onDark]{color:var(--tui-text-01-night)}:host[data-mode=onLight]{color:var(--tui-text-02)}"]}),f(0,t.Inject(t.ElementRef)),f(1,t.Inject(t.NgZone)),f(2,t.Inject(d.ANIMATION_FRAME)),f(3,t.Inject(r.TUI_MOBILE_AWARE)),f(4,t.Inject(i.TUI_IS_IOS)),f(5,t.Inject(i.TUI_IS_ANDROID)),f(6,t.Inject(o.TUI_MODE))],e)}(),k=function(){function e(){}return e=m([t.NgModule({imports:[s.CommonModule,o.TuiHostedDropdownModule,o.TuiSvgModule,i.TuiFocusableModule,l.PolymorpheusModule],declarations:[E,w,y,D,v],exports:[E,w,y,v]})],e)}();e.MUTATION_CONFIG=R,e.OBSERVER_INIT=_,e.TABS_PROVIDERS=j,e.TABS_REFRESH=O,e.TUI_TABS_DEFAULT_OPTIONS=x,e.TUI_TABS_OPTIONS=T,e.TUI_TAB_ACTIVATE="tui-tab-activate",e.TUI_TAB_EVENT=g,e.TUI_TAB_PROVIDERS=I,e.TuiTabComponent=y,e.TuiTabDirective=v,e.TuiTabsComponent=w,e.TuiTabsModule=k,e.TuiTabsWithMoreComponent=E,e.TuiUnderlineComponent=D,e.tabActiveFactory=b,e.tabsRefreshFactory=A,e.tuiTabsOptionsProvider=function(e){return{provide:T,useValue:h(h({},x),e)}},Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/router"),require("@taiga-ui/cdk"),require("@taiga-ui/core"),require("@taiga-ui/kit/tokens"),require("rxjs"),require("@angular/common"),require("@ng-web-apis/mutation-observer"),require("rxjs/operators"),require("@tinkoff/ng-polymorpheus"),require("@ng-web-apis/common"),require("@tinkoff/ng-event-plugins")):"function"==typeof define&&define.amd?define("@taiga-ui/kit/components/tabs",["exports","@angular/core","@angular/router","@taiga-ui/cdk","@taiga-ui/core","@taiga-ui/kit/tokens","rxjs","@angular/common","@ng-web-apis/mutation-observer","rxjs/operators","@tinkoff/ng-polymorpheus","@ng-web-apis/common","@tinkoff/ng-event-plugins"],t):t(((e=e||self)["taiga-ui"]=e["taiga-ui"]||{},e["taiga-ui"].kit=e["taiga-ui"].kit||{},e["taiga-ui"].kit.components=e["taiga-ui"].kit.components||{},e["taiga-ui"].kit.components.tabs={}),e.ng.core,e.ng.router,e.cdk,e.core$1,e["taiga-ui"].kit.tokens,e.rxjs,e.ng.common,e.mutationObserver,e.rxjs.operators,e.ngPolymorpheus,e.common$1,e.ngEventPlugins)}(this,(function(e,t,n,i,o,r,a,s,c,u,l,p,d){"use strict";var h=function(){return(h=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function m(e,t,n,i){var o,r=arguments.length,a=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(r<3?o(a):r>3?o(t,n,a):o(t,n))||a);return r>3&&a&&Object.defineProperty(t,n,a),a}function f(e,t){return function(n,i){t(n,i,e)}}Object.create;Object.create;var v=function(){function e(e){this.template=e}return e.ctorParameters=function(){return[{type:t.TemplateRef,decorators:[{type:t.Inject,args:[t.TemplateRef]}]}]},e=m([t.Directive({selector:"ng-template[tuiTab]"}),f(0,t.Inject(t.TemplateRef))],e)}(),g=new t.InjectionToken("Stream of tab activation events"),I=[i.TuiDestroyService,i.TuiFocusVisibleService,o.TuiRouterLinkActiveService,{provide:g,deps:[t.ElementRef,s.DOCUMENT,o.TuiRouterLinkActiveService,[new t.Optional,c.MutationObserverService],[new t.Optional,n.RouterLinkActive]],useFactory:b},o.MODE_PROVIDER];function b(e,t,n,o,r){var s=e.nativeElement,c=r&&o?o.pipe(u.filter((function(){return r.isActive}))):a.EMPTY;return a.merge(c,n.pipe(u.filter(a.identity)),s.matches("button")?i.typedFromEvent(s,"click"):a.EMPTY).pipe(u.map((function(){return s.dispatchEvent(i.tuiCustomEvent("tui-tab-activate",{bubbles:!0},t))})))}var y=function(){function e(e,t,n,i,o,r,a,s,c){var u=this;this.routerLinkActive=e,this.elementRef=t,this.mode$=n,this.event$=i,this.margin=o,this.focusVisible=!1,this.isIos=r&&a,this.isAndroid=r&&s,c.subscribe((function(e){u.focusVisible=e}))}return Object.defineProperty(e.prototype,"isActive",{get:function(){return!!this.routerLinkActive&&this.routerLinkActive.isActive},enumerable:!0,configurable:!0}),e.prototype.ngOnDestroy=function(){i.isNativeFocused(this.elementRef.nativeElement)&&i.setNativeFocused(this.elementRef.nativeElement,!1)},e.ctorParameters=function(){return[{type:n.RouterLinkActive,decorators:[{type:t.Optional},{type:t.Inject,args:[n.RouterLinkActive]}]},{type:t.ElementRef,decorators:[{type:t.Inject,args:[t.ElementRef]}]},{type:a.Observable,decorators:[{type:t.Inject,args:[o.TUI_MODE]}]},{type:a.Observable,decorators:[{type:t.Inject,args:[g]}]},{type:Number,decorators:[{type:t.Inject,args:[r.TUI_TAB_MARGIN]}]},{type:Boolean,decorators:[{type:t.Inject,args:[r.TUI_MOBILE_AWARE]}]},{type:Boolean,decorators:[{type:t.Inject,args:[i.TUI_IS_IOS]}]},{type:Boolean,decorators:[{type:t.Inject,args:[i.TUI_IS_ANDROID]}]},{type:i.TuiFocusVisibleService,decorators:[{type:t.Inject,args:[i.TuiFocusVisibleService]}]}]},m([t.HostBinding("class._ios")],e.prototype,"isIos",void 0),m([t.HostBinding("class._android")],e.prototype,"isAndroid",void 0),m([t.HostBinding("class._focus-visible")],e.prototype,"focusVisible",void 0),m([t.HostBinding("class._active")],e.prototype,"isActive",null),e=m([t.Component({selector:"a[tuiTab]:not([routerLink]), a[tuiTab][routerLink][routerLinkActive], button[tuiTab]",template:'<ng-container *ngIf="event$ | async"></ng-container>\n<span class="t-highlight">\n <ng-content></ng-content>\n</span>\n',changeDetection:t.ChangeDetectionStrategy.OnPush,providers:I,host:{"($.data-mode.attr)":"mode$","[style.--tui-tab-margin.px]":"margin",type:"button"},styles:[":host-context(._underline):hover{box-shadow:inset 0 -2px var(--tui-base-03)}:host-context([tuiTabs]>):first-child,:host-context([tuiTabs]>:first-child),:host-context(tui-tabs>):first-child,:host-context(tui-tabs>:first-child){margin-left:0}:host{transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;border:0;background:0 0;font-size:inherit;line-height:inherit;position:relative;display:flex;flex-shrink:0;height:100%;box-sizing:border-box;justify-content:space-between;align-items:center;white-space:nowrap;cursor:pointer;outline:0;text-decoration:none;color:inherit;transition-property:color,box-shadow,opacity;margin-left:var(--tui-tab-margin,1.5rem)}:host:disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}:host:not([data-mode])._active{opacity:1;color:var(--tui-text-01);box-shadow:none}:host[data-mode=onDark]{color:rgba(255,255,255,.72)}:host[data-mode=onDark]._active,:host[data-mode=onDark]:hover{color:#fff}:host[data-mode=onDark]._focus-visible .t-highlight{background:var(--tui-clear-inverse);color:var(--tui-text-01)}:host[data-mode=onLight]{color:var(--tui-text-02)}:host[data-mode=onLight]._active,:host[data-mode=onLight]:hover{color:var(--tui-text-01)}:host[data-mode=onLight]._focus-visible .t-highlight{background:var(--tui-text-01);color:#fff}:host._focus-visible .t-highlight{background:var(--tui-selection)}:host._android{transition-property:opacity;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;height:3rem;flex:1;flex-shrink:0;justify-content:center;margin:0;text-transform:uppercase;color:var(--tui-base-09);opacity:.5;font-size:.875rem;font-weight:500;letter-spacing:-.008125rem;font-family:-apple-system,BlinkMacSystemFont,Roboto,'Helvetica Neue',sans-serif}:host._android:hover{box-shadow:none}:host._android._active{opacity:1;color:var(--tui-base-09)}:host._android .t-highlight{width:auto}:host._ios{height:1.75rem;flex:1;flex-shrink:0;justify-content:center;margin:0;color:var(--tui-base-01);opacity:1;font-size:.8125rem;font-weight:500;letter-spacing:-.005rem;font-family:-apple-system,BlinkMacSystemFont,Roboto,'Helvetica Neue',sans-serif}:host._ios:hover{box-shadow:none}:host._ios._active{font-size:.875rem;font-weight:600;color:var(--tui-link)}:host._ios .t-highlight{width:auto}@media (hover:hover){:host:hover{color:var(--tui-text-01)}}.t-highlight{display:inline-flex;width:100%;align-items:center;justify-content:inherit}.t-highlight ::ng-deep>*{flex-shrink:0}"]}),f(0,t.Optional()),f(0,t.Inject(n.RouterLinkActive)),f(1,t.Inject(t.ElementRef)),f(2,t.Inject(o.TUI_MODE)),f(3,t.Inject(g)),f(4,t.Inject(r.TUI_TAB_MARGIN)),f(5,t.Inject(r.TUI_MOBILE_AWARE)),f(6,t.Inject(i.TUI_IS_IOS)),f(7,t.Inject(i.TUI_IS_ANDROID)),f(8,t.Inject(i.TuiFocusVisibleService))],e)}(),x={underline:!0,exposeActive:!0,itemsLimit:1/0,minMoreWidth:0},T=new t.InjectionToken("Default parameters for tabs component",{factory:function(){return x}}),_={childList:!0},w=function(){function e(e,n,o,r,a,s,c,l){var p=this;this.options=e,this.elementRef=n,this.renderer=o,this.children=i.EMPTY_QUERY,this.underline=this.options.underline,this.activeItemIndexChange=new t.EventEmitter,this.activeItemIndex=0,this.isIos=l&&s,this.isAndroid=l&&c,a.pipe(u.filter((function(){return p.underline}))).subscribe((function(){r.detectChanges()}))}return Object.defineProperty(e.prototype,"activeItemIndexSetter",{set:function(e){this.activeItemIndex=e,this.scrollTo(this.tabs[e])},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tabs",{get:function(){return Array.from(this.elementRef.nativeElement.querySelectorAll("[tuiTab]"))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"activeElement",{get:function(){return this.tabs[this.activeItemIndex]||null},enumerable:!0,configurable:!0}),e.prototype.onActivate=function(e){var t=this.tabs.findIndex((function(t){return t===e}));t!==this.activeItemIndex&&(this.activeItemIndexSetter=t,this.activeItemIndexChange.emit(t))},e.prototype.onKeyDownArrow=function(e,t){var n=this.tabs;i.moveFocus(n.indexOf(e),n,t)},e.prototype.ngAfterViewChecked=function(){var e=this,t=this.tabs,n=this.activeElement;t.forEach((function(t){e.renderer.removeClass(t,"_active"),e.renderer.setAttribute(t,"tabIndex","-1")})),n&&(this.renderer.addClass(n,"_active"),this.renderer.setAttribute(n,"tabIndex","0"))},e.prototype.scrollTo=function(e){if(e){var t=e.offsetLeft,n=e.offsetWidth,i=this.elementRef.nativeElement;t<i.scrollLeft&&(i.scrollLeft=t),t+n>i.scrollLeft+i.offsetWidth&&(i.scrollLeft=t+n-i.offsetWidth)}},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[T]}]},{type:t.ElementRef,decorators:[{type:t.Inject,args:[t.ElementRef]}]},{type:t.Renderer2,decorators:[{type:t.Inject,args:[t.Renderer2]}]},{type:t.ChangeDetectorRef,decorators:[{type:t.Inject,args:[t.ChangeDetectorRef]}]},{type:a.Observable,decorators:[{type:t.Inject,args:[i.TuiResizeService]}]},{type:Boolean,decorators:[{type:t.Inject,args:[i.TUI_IS_IOS]}]},{type:Boolean,decorators:[{type:t.Inject,args:[i.TUI_IS_ANDROID]}]},{type:Boolean,decorators:[{type:t.Inject,args:[r.TUI_MOBILE_AWARE]}]}]},m([t.ContentChildren(t.forwardRef((function(){return y})))],e.prototype,"children",void 0),m([t.Input(),t.HostBinding("class._underline"),i.tuiDefaultProp()],e.prototype,"underline",void 0),m([t.Input("activeItemIndex")],e.prototype,"activeItemIndexSetter",null),m([t.Output()],e.prototype,"activeItemIndexChange",void 0),m([t.HostBinding("class._ios")],e.prototype,"isIos",void 0),m([t.HostBinding("class._android")],e.prototype,"isAndroid",void 0),m([t.HostListener("tui-tab-activate.stop",["$event.target"])],e.prototype,"onActivate",null),m([t.HostListener("keydown.arrowRight.prevent",["$event.target","1"]),t.HostListener("keydown.arrowLeft.prevent",["$event.target","-1"])],e.prototype,"onKeyDownArrow",null),e=m([t.Component({selector:"tui-tabs, nav[tuiTabs]",template:'<ng-container *ngIf="children.changes | async"></ng-container>\n<ng-content></ng-content>\n<tui-underline\n *ngIf="underline"\n class="t-underline"\n [element]="activeElement"\n></tui-underline>\n',changeDetection:t.ChangeDetectionStrategy.OnPush,providers:[i.TuiDestroyService,i.TuiResizeService,c.MutationObserverService,{provide:c.MUTATION_OBSERVER_INIT,useValue:_}],styles:[":host{scrollbar-width:none;-ms-overflow-style:none;position:relative;z-index:0;display:flex;font:var(--tui-font-text-m);height:var(--tui-height-l);color:var(--tui-text-02);box-shadow:inset 0 -1px var(--tui-base-03);overflow:auto}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{background:0 0;width:0;height:0}:host._android{height:auto}:host._ios{height:auto;border:2px solid transparent;border-radius:.5625rem;background:var(--tui-link);box-shadow:none}.t-underline{z-index:-1}"]}),f(0,t.Inject(T)),f(1,t.Inject(t.ElementRef)),f(2,t.Inject(t.Renderer2)),f(3,t.Inject(t.ChangeDetectorRef)),f(4,t.Inject(i.TuiResizeService)),f(5,t.Inject(i.TUI_IS_IOS)),f(6,t.Inject(i.TUI_IS_ANDROID)),f(7,t.Inject(r.TUI_MOBILE_AWARE))],e)}();function A(e,t,n,i,o,r){var s=i.body,c=o.nativeElement;return a.merge(e,t.pipe(u.tap((function(){return r.detectChanges()})))).pipe(u.filter((function(){return s.contains(c)})),u.debounceTime(0),u.startWith(null),u.takeUntil(n))}var R={childList:!0,subtree:!0,characterData:!0},O=new t.InjectionToken("Refresh stream"),j=[i.TuiResizeService,i.TuiDestroyService,c.MutationObserverService,{provide:c.MUTATION_OBSERVER_INIT,useValue:R},{provide:O,deps:[i.TuiResizeService,c.MutationObserverService,i.TuiDestroyService,s.DOCUMENT,t.ElementRef,t.ChangeDetectorRef],useFactory:A}],E=function(){function e(e,n,o,r,a,s){this.options=e,this.margin=n,this.refresh$=o,this.elementRef=r,this.changeDetectorRef=a,this.moreWord$=s,this.maxIndex=1/0,this.moreContent="",this.dropdownContent="",this.underline=this.options.underline,this.activeItemIndex=0,this.itemsLimit=this.options.itemsLimit,this.activeItemIndexChange=new t.EventEmitter,this.items=i.EMPTY_QUERY,this.open=!1}return Object.defineProperty(e.prototype,"tabs",{get:function(){return Array.from(this.elementRef.nativeElement.querySelectorAll("[tuiTab]"))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"activeElement",{get:function(){var e,t=this.tabs,n=i.tuiClamp(this.activeItemIndex||0,0,t.length-2);return this.options.exposeActive||this.lastVisibleIndex>=n?t[n]||null:(null===(e=this.moreButton)||void 0===e?void 0:e.nativeElement)||null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isMoreVisible",{get:function(){return this.lastVisibleIndex<this.items.length-1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isMoreFocusable",{get:function(){return!!this.moreButton&&i.isNativeFocused(this.moreButton.nativeElement)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isMoreActive",{get:function(){return this.open||!this.options.exposeActive&&this.lastVisibleIndex<this.activeItemIndex},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isMoreAlone",{get:function(){return this.lastVisibleIndex<0&&!this.options.exposeActive},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"lastVisibleIndex",{get:function(){if(this.itemsLimit+1>=this.items.length)return this.maxIndex;var e=this.itemsLimit-1>this.activeItemIndex||!this.options.exposeActive?1:2;return Math.min(this.itemsLimit-e,this.maxIndex)},enumerable:!0,configurable:!0}),e.prototype.ngAfterViewInit=function(){var e=this;this.refresh$.pipe(u.map((function(){return e.getMaxIndex()})),u.filter((function(t){return e.maxIndex!==t}))).subscribe((function(t){e.maxIndex=t,e.changeDetectorRef.detectChanges()}))},e.prototype.onActiveItemIndexChange=function(e){this.updateActiveItemIndex(e)},e.prototype.onClick=function(e){this.open=!1,this.focusMore(),this.updateActiveItemIndex(e)},e.prototype.onArrowRight=function(e){i.tuiAssertIsHTMLElement(e.target),i.isNativeFocused(e.target)&&this.focusMore()},e.prototype.onArrowLeft=function(){for(var e=this.tabs,t=e.length-2;t>=0;){if(i.setNativeFocused(e[t]),i.isNativeFocused(e[t]))return;t--}},e.prototype.onWrapperArrow=function(e,t,n){var o=e.target,r=i.getClosestFocusable(o,n,t);r&&i.setNativeFocused(r)},e.prototype.isOverflown=function(e){return e!==this.activeItemIndex||!this.options.exposeActive},e.prototype.shouldShow=function(e){return e>this.lastVisibleIndex&&this.isOverflown(e)},e.prototype.focusMore=function(){this.moreButton&&i.setNativeFocused(this.moreButton.nativeElement)},e.prototype.getMaxIndex=function(){var e=this.tabs,t=this.activeItemIndex,n=this.margin;if(e.length<2)return 0;var o=this.options,r=o.exposeActive,a=o.minMoreWidth,s=this.elementRef.nativeElement.clientWidth,c=e[t]?e[t].scrollWidth:0,u=Math.max(e[e.length-1].scrollWidth,a),l=e.length-2,p=e.reduce((function(e,t){return e+t.scrollWidth}),0)+l*n-e[e.length-1].scrollWidth;if(p<=s)return 1/0;for(;l;){if(p-=e[l].scrollWidth+n,l--,p+(r&&t>l?c+n:0)+u+n+i.toInt(this.maxIndex===l-1)<s)return l}return-1},e.prototype.updateActiveItemIndex=function(e){this.activeItemIndex=e,this.activeItemIndexChange.emit(e),this.maxIndex=this.getMaxIndex()},e.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[T]}]},{type:Number,decorators:[{type:t.Inject,args:[r.TUI_TAB_MARGIN]}]},{type:a.Observable,decorators:[{type:t.Inject,args:[O]}]},{type:t.ElementRef,decorators:[{type:t.Inject,args:[t.ElementRef]}]},{type:t.ChangeDetectorRef,decorators:[{type:t.Inject,args:[t.ChangeDetectorRef]}]},{type:a.Observable,decorators:[{type:t.Inject,args:[r.TUI_MORE_WORD]}]}]},m([t.ViewChild(y,{read:t.ElementRef})],e.prototype,"moreButton",void 0),m([t.Input(),i.tuiDefaultProp()],e.prototype,"moreContent",void 0),m([t.Input(),i.tuiDefaultProp()],e.prototype,"dropdownContent",void 0),m([t.Input(),t.HostBinding("class._underline"),i.tuiDefaultProp()],e.prototype,"underline",void 0),m([t.Input(),i.tuiDefaultProp()],e.prototype,"activeItemIndex",void 0),m([t.Input(),i.tuiDefaultProp()],e.prototype,"itemsLimit",void 0),m([t.Output()],e.prototype,"activeItemIndexChange",void 0),m([t.ContentChildren(v,{read:t.TemplateRef})],e.prototype,"items",void 0),e=m([t.Component({selector:"tui-tabs-with-more, nav[tuiTabsWithMore]",template:'<ng-container *ngIf="items.changes | async"></ng-container>\n<div class="t-wrapper">\n <tui-tabs\n class="t-tabs"\n [underline]="false"\n [activeItemIndex]="activeItemIndex"\n (activeItemIndexChange)="onActiveItemIndexChange($event)"\n (keydown.arrowRight)="onArrowRight($event)"\n >\n <ng-container *ngFor="let item of items; let index = index">\n <ng-container\n *ngIf="index <= lastVisibleIndex; else hidden"\n [ngTemplateOutlet]="item"\n ></ng-container>\n <ng-template #hidden>\n <div [class.t-overflown]="isOverflown(index)">\n <ng-container [ngTemplateOutlet]="item"></ng-container>\n </div>\n </ng-template>\n </ng-container>\n </tui-tabs>\n <tui-hosted-dropdown\n class="t-more_wrapper"\n [class.t-overflown]="!isMoreVisible"\n [content]="dropdownContent || dropdown"\n [(open)]="open"\n >\n <button\n tuiTab\n [class._active]="isMoreActive"\n [class.t-no-margin]="isMoreAlone"\n [tuiFocusable]="isMoreFocusable"\n (keydown.arrowLeft.prevent)="onArrowLeft()"\n >\n <span\n polymorpheus-outlet\n [content]="moreContent || more"\n ></span>\n </button>\n <ng-template #more>\n {{ moreWord$ | async }}\n <tui-svg\n src="tuiIconChevronDown"\n class="t-icon"\n [class.t-icon_rotated]="open"\n ></tui-svg>\n </ng-template>\n </tui-hosted-dropdown>\n <ng-template #dropdown>\n <div\n #element\n class="t-dropdown"\n (keydown.arrowUp.prevent)="onWrapperArrow($event, element, true)"\n (keydown.arrowDown.prevent)="onWrapperArrow($event, element, false)"\n >\n <div\n *ngFor="let item of items; let index = index"\n (tui-tab-activate)="onClick(index)"\n >\n <ng-container\n *ngIf="shouldShow(index)"\n [ngTemplateOutlet]="item"\n ></ng-container>\n </div>\n </div>\n </ng-template>\n <tui-underline\n *ngIf="underline"\n [element]="activeElement"\n ></tui-underline>\n</div>\n',changeDetection:t.ChangeDetectionStrategy.OnPush,providers:j,styles:[":host{position:relative;display:flex;font:var(--tui-font-text-m);height:var(--tui-height-l);box-sizing:border-box;color:var(--tui-text-02);box-shadow:inset 0 -1px var(--tui-base-03);overflow:hidden}.t-wrapper{position:relative;display:flex}.t-tabs{height:inherit;font-size:inherit;font-weight:inherit;overflow:visible;box-shadow:none;color:inherit}.t-overflown{display:flex;margin:0;width:0;max-width:0;overflow:hidden;visibility:hidden}.t-more_wrapper{height:100%;pointer-events:none}.t-more_wrapper button{pointer-events:auto}.t-icon{transition-property:transform;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;margin-right:-.25rem;vertical-align:bottom}.t-icon_rotated{transform:rotate(180deg)}.t-dropdown{padding:.5rem 0}.t-dropdown ::ng-deep [tuiTab]{width:100%;height:2.75rem;justify-content:flex-start;margin:0;padding:0 1rem;color:var(--tui-text-02)}.t-dropdown ::ng-deep [tuiTab]:before{display:none}.t-dropdown ::ng-deep [tuiTab]._active,.t-dropdown ::ng-deep [tuiTab]:focus,.t-dropdown ::ng-deep [tuiTab]:hover{box-shadow:none;color:var(--tui-base-08);background:var(--tui-base-02)}.t-no-margin{margin-left:0}"]}),f(0,t.Inject(T)),f(1,t.Inject(r.TUI_TAB_MARGIN)),f(2,t.Inject(O)),f(3,t.Inject(t.ElementRef)),f(4,t.Inject(t.ChangeDetectorRef)),f(5,t.Inject(r.TUI_MORE_WORD))],e)}(),D=function(){function e(e,t,n,o,r,s,c){var l=this,p=e.nativeElement;this.ngZone=t,this.animationFrame$=n,this.mobileAware=o,this.ios=r,this.android=s,this.mode$=c,this.element$=new a.ReplaySubject(1),this.refresh$=this.element$.pipe(u.switchMap((function(e){return e?l.animationFrame$.pipe(u.mapTo(e),i.tuiZonefree(l.ngZone)):a.of(null)})),u.share()),this.isIos=this.mobileAware&&this.ios,this.isAndroid=this.mobileAware&&this.android,this.transition$=d.asCallable(this.element$.pipe(u.map((function(e){return e&&"all"})),u.debounceTime(50))),this.transform$=d.asCallable(this.refresh$.pipe(u.map((function(e){return e?"translate3d("+i.px(e.offsetLeft)+", 0, 0)":null})))),this.width$=d.asCallable(this.refresh$.pipe(u.map((function(e){return(null==e?void 0:e.clientWidth)||0})))),p["$.style.transitionProperty"]=this.transition$,p["$.style.transform"]=this.transform$,p["$.style.width.px"]=this.width$}return Object.defineProperty(e.prototype,"element",{set:function(e){this.element$.next(e)},enumerable:!0,configurable:!0}),e.ctorParameters=function(){return[{type:t.ElementRef,decorators:[{type:t.Inject,args:[t.ElementRef]}]},{type:t.NgZone,decorators:[{type:t.Inject,args:[t.NgZone]}]},{type:a.Observable,decorators:[{type:t.Inject,args:[p.ANIMATION_FRAME]}]},{type:Boolean,decorators:[{type:t.Inject,args:[r.TUI_MOBILE_AWARE]}]},{type:Boolean,decorators:[{type:t.Inject,args:[i.TUI_IS_IOS]}]},{type:Boolean,decorators:[{type:t.Inject,args:[i.TUI_IS_ANDROID]}]},{type:a.Observable,decorators:[{type:t.Inject,args:[o.TUI_MODE]}]}]},m([t.Input(),i.tuiDefaultProp()],e.prototype,"element",null),m([t.HostBinding("class._ios")],e.prototype,"isIos",void 0),m([t.HostBinding("class._android")],e.prototype,"isAndroid",void 0),m([t.HostListener("$.style.transitionProperty")],e.prototype,"transition$",void 0),m([t.HostListener("$.style.transform")],e.prototype,"transform$",void 0),m([t.HostListener("$.style.width.px")],e.prototype,"width$",void 0),e=m([t.Component({selector:"tui-underline",template:"",changeDetection:t.ChangeDetectionStrategy.OnPush,providers:[o.MODE_PROVIDER],host:{"($.data-mode.attr)":"mode$"},styles:[":host{transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;position:absolute;left:0;height:100%;color:var(--tui-primary);transform:scale(0);box-shadow:inset 0 -.1875rem 0 -.0625rem;transition-property:none;pointer-events:none}:host._ios{border-radius:.4375rem;background:var(--tui-base-01);box-shadow:0 .1875rem .0625rem rgba(0,0,0,.04),0 .1875rem .5rem rgba(0,0,0,.12)}:host._android{box-shadow:inset 0 -.1875rem var(--tui-link)}:host[data-mode=onDark]{color:var(--tui-text-01-night)}:host[data-mode=onLight]{color:var(--tui-text-02)}"]}),f(0,t.Inject(t.ElementRef)),f(1,t.Inject(t.NgZone)),f(2,t.Inject(p.ANIMATION_FRAME)),f(3,t.Inject(r.TUI_MOBILE_AWARE)),f(4,t.Inject(i.TUI_IS_IOS)),f(5,t.Inject(i.TUI_IS_ANDROID)),f(6,t.Inject(o.TUI_MODE))],e)}(),k=function(){function e(){}return e=m([t.NgModule({imports:[s.CommonModule,o.TuiHostedDropdownModule,o.TuiSvgModule,i.TuiFocusableModule,l.PolymorpheusModule],declarations:[E,w,y,D,v],exports:[E,w,y,v]})],e)}();e.MUTATION_CONFIG=R,e.OBSERVER_INIT=_,e.TABS_PROVIDERS=j,e.TABS_REFRESH=O,e.TUI_TABS_DEFAULT_OPTIONS=x,e.TUI_TABS_OPTIONS=T,e.TUI_TAB_ACTIVATE="tui-tab-activate",e.TUI_TAB_EVENT=g,e.TUI_TAB_PROVIDERS=I,e.TuiTabComponent=y,e.TuiTabDirective=v,e.TuiTabsComponent=w,e.TuiTabsModule=k,e.TuiTabsWithMoreComponent=E,e.TuiUnderlineComponent=D,e.tabActiveFactory=b,e.tabsRefreshFactory=A,e.tuiTabsOptionsProvider=function(e){return{provide:T,useValue:h(h({},x),e)}},Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
2
|
//# sourceMappingURL=taiga-ui-kit-components-tabs.umd.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@taiga-ui/kit/components/tabs/tab.directive.ts","ng://@taiga-ui/kit/components/tabs/tab/tab.providers.ts","ng://@taiga-ui/kit/components/tabs/tab/tab.component.ts","ng://@taiga-ui/kit/components/tabs/tabs-options.ts","ng://@taiga-ui/kit/components/tabs/tabs/tabs.component.ts","ng://@taiga-ui/kit/components/tabs/tabs-with-more/tabs-with-more.providers.ts","ng://@taiga-ui/kit/components/tabs/tabs-with-more/tabs-with-more.component.ts","ng://@taiga-ui/kit/components/tabs/underline/underline.component.ts","ng://@taiga-ui/kit/components/tabs/tabs.module.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","create","TuiTabDirective","template","TemplateRef","type","Inject","args","Directive","selector","TUI_TAB_EVENT","InjectionToken","TUI_TAB_PROVIDERS","TuiDestroyService","TuiFocusVisibleService","TuiRouterLinkActiveService","provide","deps","ElementRef","DOCUMENT","Optional","MutationObserverService","RouterLinkActive","useFactory","tabActiveFactory","MODE_PROVIDER","_a","documentRef","routerLinkActiveService","mutationObserverService","routerLinkActive","nativeElement","mutationObserver","pipe","filter","isActive","EMPTY","merge","identity","matches","typedFromEvent","map","dispatchEvent","tuiCustomEvent","bubbles","TuiTabComponent","elementRef","mode$","event$","margin","mobileAware","isIos","isAndroid","focusVisible$","_this","focusVisible","subscribe","visible","ngOnDestroy","isNativeFocused","setNativeFocused","Observable","TUI_MODE","TUI_TAB_MARGIN","TUI_MOBILE_AWARE","TUI_IS_IOS","TUI_IS_ANDROID","HostBinding","Component","changeDetection","ChangeDetectionStrategy","OnPush","providers","host","($.data-mode.attr)","[style.--tui-tab-margin.px]","TUI_TABS_DEFAULT_OPTIONS","underline","exposeActive","itemsLimit","Infinity","minMoreWidth","TUI_TABS_OPTIONS","factory","OBSERVER_INIT","childList","TuiTabsComponent","options","renderer","changeDetectorRef","resize$","children","EMPTY_QUERY","activeItemIndexChange","EventEmitter","activeItemIndex","detectChanges","index","scrollTo","tabs","Array","from","querySelectorAll","onActivate","element","findIndex","tab","activeItemIndexSetter","emit","onKeyDownArrow","current","step","moveFocus","indexOf","ngAfterViewChecked","activeElement","forEach","removeClass","setAttribute","addClass","offsetLeft","offsetWidth","scrollLeft","Renderer2","ChangeDetectorRef","TuiResizeService","ContentChildren","forwardRef","Input","tuiDefaultProp","Output","HostListener","TUI_TAB_ACTIVATE","MUTATION_OBSERVER_INIT","useValue","tabsRefreshFactory","mutations$","destroy$","_b","body","tap","contains","debounceTime","startWith","takeUntil","MUTATION_CONFIG","subtree","characterData","TABS_REFRESH","TABS_PROVIDERS","TuiTabsWithMoreComponent","refresh$","moreWord$","maxIndex","moreContent","dropdownContent","items","open","safeActiveIndex","tuiClamp","lastVisibleIndex","moreButton","offset","Math","min","ngAfterViewInit","getMaxIndex","onActiveItemIndexChange","updateActiveItemIndex","onClick","focusMore","onArrowRight","event","tuiAssertIsHTMLElement","onArrowLeft","onWrapperArrow","wrapper","prev","button","getClosestFocusable","isOverflown","shouldShow","clientWidth","activeWidth","scrollWidth","moreWidth","max","total","reduce","acc","toInt","TUI_MORE_WORD","ViewChild","read","TuiUnderlineComponent","ngZone","animationFrame$","ios","android","element$","ReplaySubject","switchMap","mapTo","tuiZonefree","of","share","transition$","asCallable","transform$","px","width$","next","NgZone","ANIMATION_FRAME","TuiTabsModule","NgModule","imports","CommonModule","TuiHostedDropdownModule","TuiSvgModule","TuiFocusableModule","PolymorpheusModule","declarations","exports"],"mappings":"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","sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import {Directive, Inject, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: 'ng-template[tuiTab]',\n})\nexport class TuiTabDirective {\n constructor(\n @Inject(TemplateRef) readonly template: TemplateRef<Record<string, unknown>>,\n ) {}\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, InjectionToken, Optional, Provider} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {MutationObserverService} from '@ng-web-apis/mutation-observer';\nimport {\n tuiCustomEvent,\n TuiDestroyService,\n TuiFocusVisibleService,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER, TuiRouterLinkActiveService} from '@taiga-ui/core';\nimport {EMPTY, identity, merge, Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nexport const TUI_TAB_ACTIVATE = `tui-tab-activate`;\nexport const TUI_TAB_EVENT = new InjectionToken<Observable<Event>>(\n `Stream of tab activation events`,\n);\nexport const TUI_TAB_PROVIDERS: Provider[] = [\n TuiDestroyService,\n TuiFocusVisibleService,\n TuiRouterLinkActiveService,\n {\n provide: TUI_TAB_EVENT,\n deps: [\n ElementRef,\n DOCUMENT,\n TuiRouterLinkActiveService,\n [new Optional(), MutationObserverService],\n [new Optional(), RouterLinkActive],\n ],\n useFactory: tabActiveFactory,\n },\n MODE_PROVIDER,\n];\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function tabActiveFactory(\n {nativeElement}: ElementRef<HTMLElement>,\n documentRef: Document,\n routerLinkActiveService: Observable<boolean>,\n mutationObserverService: MutationObserverService | null,\n routerLinkActive: RouterLinkActive | null,\n): Observable<unknown> {\n const mutationObserver =\n routerLinkActive && mutationObserverService\n ? mutationObserverService.pipe(filter(() => routerLinkActive.isActive))\n : EMPTY;\n\n return merge(\n mutationObserver,\n routerLinkActiveService.pipe(filter(identity)),\n nativeElement.matches(`button`) ? typedFromEvent(nativeElement, `click`) : EMPTY,\n ).pipe(\n map(() =>\n nativeElement.dispatchEvent(\n tuiCustomEvent(TUI_TAB_ACTIVATE, {bubbles: true}, documentRef),\n ),\n ),\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n OnDestroy,\n Optional,\n} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {\n isNativeFocused,\n setNativeFocused,\n TUI_IS_ANDROID,\n TUI_IS_IOS,\n TuiFocusVisibleService,\n} from '@taiga-ui/cdk';\nimport {TUI_MODE, TuiBrightness} from '@taiga-ui/core';\nimport {TUI_MOBILE_AWARE, TUI_TAB_MARGIN} from '@taiga-ui/kit/tokens';\nimport {Observable} from 'rxjs';\n\nimport {TUI_TAB_EVENT, TUI_TAB_PROVIDERS} from './tab.providers';\n\n@Component({\n selector:\n 'a[tuiTab]:not([routerLink]), a[tuiTab][routerLink][routerLinkActive], button[tuiTab]',\n templateUrl: './tab.template.html',\n styleUrls: ['./tab.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_TAB_PROVIDERS,\n host: {\n '($.data-mode.attr)': 'mode$',\n '[style.--tui-tab-margin.px]': 'margin',\n type: 'button',\n },\n})\nexport class TuiTabComponent implements OnDestroy {\n @HostBinding('class._ios')\n readonly isIos: boolean;\n\n @HostBinding('class._android')\n readonly isAndroid: boolean;\n\n @HostBinding('class._focus-visible')\n focusVisible = false;\n\n constructor(\n @Optional()\n @Inject(RouterLinkActive)\n private readonly routerLinkActive: RouterLinkActive | null,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n @Inject(TUI_TAB_EVENT) readonly event$: Observable<Event>,\n @Inject(TUI_TAB_MARGIN) readonly margin: number,\n @Inject(TUI_MOBILE_AWARE) mobileAware: boolean,\n @Inject(TUI_IS_IOS) isIos: boolean,\n @Inject(TUI_IS_ANDROID) isAndroid: boolean,\n @Inject(TuiFocusVisibleService) focusVisible$: TuiFocusVisibleService,\n ) {\n this.isIos = mobileAware && isIos;\n this.isAndroid = mobileAware && isAndroid;\n\n focusVisible$.subscribe(visible => {\n this.focusVisible = visible;\n });\n }\n\n @HostBinding('class._active')\n get isActive(): boolean {\n return !!this.routerLinkActive && this.routerLinkActive.isActive;\n }\n\n ngOnDestroy(): void {\n if (isNativeFocused(this.elementRef.nativeElement)) {\n setNativeFocused(this.elementRef.nativeElement, false);\n }\n }\n}\n","import {InjectionToken, ValueProvider} from '@angular/core';\n\nexport interface TuiTabsOptions {\n readonly underline: boolean;\n readonly exposeActive: boolean;\n readonly itemsLimit: number;\n readonly minMoreWidth: number;\n}\n\nexport const TUI_TABS_DEFAULT_OPTIONS: TuiTabsOptions = {\n underline: true,\n exposeActive: true,\n itemsLimit: Infinity,\n minMoreWidth: 0,\n};\n\nexport const TUI_TABS_OPTIONS = new InjectionToken<TuiTabsOptions>(\n `Default parameters for tabs component`,\n {\n factory: () => TUI_TABS_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiTabsOptionsProvider: (\n options: Partial<TuiTabsOptions>,\n) => ValueProvider = (options: Partial<TuiTabsOptions>) => ({\n provide: TUI_TABS_OPTIONS,\n useValue: {...TUI_TABS_DEFAULT_OPTIONS, ...options},\n});\n","import {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n QueryList,\n Renderer2,\n} from '@angular/core';\nimport {\n MUTATION_OBSERVER_INIT,\n MutationObserverService,\n} from '@ng-web-apis/mutation-observer';\nimport {\n EMPTY_QUERY,\n moveFocus,\n TUI_IS_ANDROID,\n TUI_IS_IOS,\n tuiDefaultProp,\n TuiDestroyService,\n TuiResizeService,\n} from '@taiga-ui/cdk';\nimport {TUI_MOBILE_AWARE} from '@taiga-ui/kit/tokens';\nimport {Observable} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {TuiTabComponent} from '../tab/tab.component';\nimport {TUI_TAB_ACTIVATE} from '../tab/tab.providers';\nimport {TUI_TABS_OPTIONS, TuiTabsOptions} from '../tabs-options';\n\nconst TAB_ACTIVE_CLASS = '_active';\n\n// TODO: 3.0 remove in ivy compilation\nexport const OBSERVER_INIT = {\n childList: true,\n};\n\n// @dynamic\n@Component({\n selector: 'tui-tabs, nav[tuiTabs]',\n templateUrl: './tabs.template.html',\n styleUrls: ['./tabs.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TuiDestroyService,\n TuiResizeService,\n MutationObserverService,\n {\n provide: MUTATION_OBSERVER_INIT,\n useValue: OBSERVER_INIT,\n },\n ],\n})\nexport class TuiTabsComponent implements AfterViewChecked {\n @ContentChildren(forwardRef(() => TuiTabComponent))\n readonly children: QueryList<unknown> = EMPTY_QUERY;\n\n @Input()\n @HostBinding('class._underline')\n @tuiDefaultProp()\n underline = this.options.underline;\n\n @Input('activeItemIndex')\n set activeItemIndexSetter(index: number) {\n this.activeItemIndex = index;\n this.scrollTo(this.tabs[index]);\n }\n\n @Output()\n readonly activeItemIndexChange = new EventEmitter<number>();\n\n @HostBinding('class._ios')\n readonly isIos: boolean;\n\n @HostBinding('class._android')\n readonly isAndroid: boolean;\n\n activeItemIndex = 0;\n\n constructor(\n @Inject(TUI_TABS_OPTIONS) private readonly options: TuiTabsOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(Renderer2) private readonly renderer: Renderer2,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TuiResizeService) resize$: Observable<void>,\n @Inject(TUI_IS_IOS) isIos: boolean,\n @Inject(TUI_IS_ANDROID) isAndroid: boolean,\n @Inject(TUI_MOBILE_AWARE) mobileAware: boolean,\n ) {\n this.isIos = mobileAware && isIos;\n this.isAndroid = mobileAware && isAndroid;\n\n resize$.pipe(filter(() => this.underline)).subscribe(() => {\n changeDetectorRef.detectChanges();\n });\n }\n\n get tabs(): readonly HTMLElement[] {\n return Array.from(\n this.elementRef.nativeElement.querySelectorAll<HTMLElement>('[tuiTab]'),\n );\n }\n\n get activeElement(): HTMLElement | null {\n return this.tabs[this.activeItemIndex] || null;\n }\n\n @HostListener(`${TUI_TAB_ACTIVATE}.stop`, ['$event.target'])\n onActivate(element: HTMLElement): void {\n const index = this.tabs.findIndex(tab => tab === element);\n\n if (index === this.activeItemIndex) {\n return;\n }\n\n this.activeItemIndexSetter = index;\n this.activeItemIndexChange.emit(index);\n }\n\n @HostListener('keydown.arrowRight.prevent', ['$event.target', '1'])\n @HostListener('keydown.arrowLeft.prevent', ['$event.target', '-1'])\n onKeyDownArrow(current: HTMLElement, step: number): void {\n const {tabs} = this;\n\n moveFocus(tabs.indexOf(current), tabs, step);\n }\n\n ngAfterViewChecked(): void {\n const {tabs, activeElement} = this;\n\n tabs.forEach(nativeElement => {\n this.renderer.removeClass(nativeElement, TAB_ACTIVE_CLASS);\n this.renderer.setAttribute(nativeElement, 'tabIndex', '-1');\n });\n\n if (activeElement) {\n this.renderer.addClass(activeElement, TAB_ACTIVE_CLASS);\n this.renderer.setAttribute(activeElement, 'tabIndex', '0');\n }\n }\n\n private scrollTo(element?: HTMLElement): void {\n if (!element) {\n return;\n }\n\n const {offsetLeft, offsetWidth} = element;\n const {nativeElement} = this.elementRef;\n\n if (offsetLeft < nativeElement.scrollLeft) {\n nativeElement.scrollLeft = offsetLeft;\n }\n\n if (\n offsetLeft + offsetWidth >\n nativeElement.scrollLeft + nativeElement.offsetWidth\n ) {\n nativeElement.scrollLeft =\n offsetLeft + offsetWidth - nativeElement.offsetWidth;\n }\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ChangeDetectorRef, ElementRef, InjectionToken, Provider} from '@angular/core';\nimport {\n MUTATION_OBSERVER_INIT,\n MutationObserverService,\n} from '@ng-web-apis/mutation-observer';\nimport {TuiDestroyService, TuiResizeService} from '@taiga-ui/cdk';\nimport {merge, Observable} from 'rxjs';\nimport {debounceTime, filter, startWith, takeUntil, tap} from 'rxjs/operators';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function tabsRefreshFactory(\n resize$: Observable<unknown>,\n mutations$: Observable<unknown>,\n destroy$: Observable<unknown>,\n {body}: Document,\n {nativeElement}: ElementRef<Node>,\n changeDetectorRef: ChangeDetectorRef,\n): Observable<unknown> {\n return merge(\n resize$,\n mutations$.pipe(tap(() => changeDetectorRef.detectChanges())),\n ).pipe(\n // Ignoring cases when host is detached from DOM\n filter(() => body.contains(nativeElement)),\n debounceTime(0),\n startWith(null),\n takeUntil(destroy$),\n );\n}\n\n// TODO: 3.0 remove in ivy compilation\nexport const MUTATION_CONFIG = {\n childList: true,\n subtree: true,\n characterData: true,\n};\nexport const TABS_REFRESH = new InjectionToken<Observable<unknown>>(`Refresh stream`);\nexport const TABS_PROVIDERS: Provider[] = [\n TuiResizeService,\n TuiDestroyService,\n MutationObserverService,\n {\n provide: MUTATION_OBSERVER_INIT,\n useValue: MUTATION_CONFIG,\n },\n {\n provide: TABS_REFRESH,\n deps: [\n TuiResizeService,\n MutationObserverService,\n TuiDestroyService,\n DOCUMENT,\n ElementRef,\n ChangeDetectorRef,\n ],\n useFactory: tabsRefreshFactory,\n },\n];\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n EMPTY_QUERY,\n getClosestFocusable,\n isNativeFocused,\n setNativeFocused,\n toInt,\n TuiActiveZoneDirective,\n tuiAssertIsHTMLElement,\n tuiClamp,\n TuiContextWithImplicit,\n tuiDefaultProp,\n} from '@taiga-ui/cdk';\nimport {TUI_MORE_WORD, TUI_TAB_MARGIN} from '@taiga-ui/kit/tokens';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {TuiTabDirective} from '../tab.directive';\nimport {TuiTabComponent} from '../tab/tab.component';\nimport {TUI_TABS_OPTIONS, TuiTabsOptions} from '../tabs-options';\nimport {TABS_PROVIDERS, TABS_REFRESH} from './tabs-with-more.providers';\n\n// @dynamic\n@Component({\n selector: 'tui-tabs-with-more, nav[tuiTabsWithMore]',\n templateUrl: './tabs-with-more.template.html',\n styleUrls: ['./tabs-with-more.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TABS_PROVIDERS,\n})\nexport class TuiTabsWithMoreComponent implements AfterViewInit {\n @ViewChild(TuiTabComponent, {read: ElementRef})\n private readonly moreButton?: ElementRef<HTMLButtonElement>;\n\n private maxIndex = Infinity;\n\n @Input()\n @tuiDefaultProp()\n moreContent: PolymorpheusContent = '';\n\n @Input()\n @tuiDefaultProp()\n dropdownContent: PolymorpheusContent<TuiContextWithImplicit<TuiActiveZoneDirective>> =\n '';\n\n @Input()\n @HostBinding('class._underline')\n @tuiDefaultProp()\n underline = this.options.underline;\n\n @Input()\n @tuiDefaultProp()\n activeItemIndex = 0;\n\n @Input()\n @tuiDefaultProp()\n itemsLimit = this.options.itemsLimit;\n\n @Output()\n readonly activeItemIndexChange = new EventEmitter<number>();\n\n @ContentChildren(TuiTabDirective, {read: TemplateRef})\n readonly items: QueryList<TemplateRef<Record<string, unknown>>> = EMPTY_QUERY;\n\n open = false;\n\n constructor(\n @Inject(TUI_TABS_OPTIONS) private readonly options: TuiTabsOptions,\n @Inject(TUI_TAB_MARGIN) private readonly margin: number,\n @Inject(TABS_REFRESH) private readonly refresh$: Observable<unknown>,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(ChangeDetectorRef) private readonly changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_MORE_WORD) readonly moreWord$: Observable<string>,\n ) {}\n\n // TODO: Improve performance\n get tabs(): readonly HTMLElement[] {\n return Array.from<HTMLElement>(\n this.elementRef.nativeElement.querySelectorAll('[tuiTab]'),\n );\n }\n\n get activeElement(): HTMLElement | null {\n const {tabs} = this;\n const safeActiveIndex = tuiClamp(this.activeItemIndex || 0, 0, tabs.length - 2);\n\n return this.options.exposeActive || this.lastVisibleIndex >= safeActiveIndex\n ? tabs[safeActiveIndex] || null\n : this.moreButton?.nativeElement || null;\n }\n\n get isMoreVisible(): boolean {\n return this.lastVisibleIndex < this.items.length - 1;\n }\n\n get isMoreFocusable(): boolean {\n return !!this.moreButton && isNativeFocused(this.moreButton.nativeElement);\n }\n\n get isMoreActive(): boolean {\n return (\n this.open ||\n (!this.options.exposeActive && this.lastVisibleIndex < this.activeItemIndex)\n );\n }\n\n get isMoreAlone(): boolean {\n return this.lastVisibleIndex < 0 && !this.options.exposeActive;\n }\n\n get lastVisibleIndex(): number {\n if (this.itemsLimit + 1 >= this.items.length) {\n return this.maxIndex;\n }\n\n const offset =\n this.itemsLimit - 1 > this.activeItemIndex || !this.options.exposeActive\n ? 1\n : 2;\n\n return Math.min(this.itemsLimit - offset, this.maxIndex);\n }\n\n ngAfterViewInit(): void {\n this.refresh$\n .pipe(\n map(() => this.getMaxIndex()),\n filter(maxIndex => this.maxIndex !== maxIndex),\n )\n .subscribe(maxIndex => {\n this.maxIndex = maxIndex;\n this.changeDetectorRef.detectChanges();\n });\n }\n\n onActiveItemIndexChange(activeItemIndex: number): void {\n this.updateActiveItemIndex(activeItemIndex);\n }\n\n onClick(index: number): void {\n this.open = false;\n this.focusMore();\n this.updateActiveItemIndex(index);\n }\n\n onArrowRight(event: Event): void {\n tuiAssertIsHTMLElement(event.target);\n\n if (isNativeFocused(event.target)) {\n this.focusMore();\n }\n }\n\n onArrowLeft(): void {\n const {tabs} = this;\n let index = tabs.length - 2;\n\n while (index >= 0) {\n setNativeFocused(tabs[index]);\n\n if (isNativeFocused(tabs[index])) {\n return;\n }\n\n index--;\n }\n }\n\n onWrapperArrow(event: Event, wrapper: HTMLElement, prev: boolean): void {\n const button: HTMLButtonElement = event.target as HTMLButtonElement;\n const target = getClosestFocusable(button, prev, wrapper);\n\n if (target) {\n setNativeFocused(target);\n }\n }\n\n isOverflown(index: number): boolean {\n return index !== this.activeItemIndex || !this.options.exposeActive;\n }\n\n shouldShow(index: number): boolean {\n return index > this.lastVisibleIndex && this.isOverflown(index);\n }\n\n private focusMore(): void {\n if (this.moreButton) {\n setNativeFocused(this.moreButton.nativeElement);\n }\n }\n\n private getMaxIndex(): number {\n const {tabs, activeItemIndex, margin} = this;\n\n if (tabs.length < 2) {\n return 0;\n }\n\n const {exposeActive, minMoreWidth} = this.options;\n const {clientWidth} = this.elementRef.nativeElement;\n const activeWidth = tabs[activeItemIndex] ? tabs[activeItemIndex].scrollWidth : 0;\n const moreWidth = Math.max(tabs[tabs.length - 1].scrollWidth, minMoreWidth);\n let maxIndex = tabs.length - 2;\n let total =\n tabs.reduce((acc, {scrollWidth}) => acc + scrollWidth, 0) +\n maxIndex * margin -\n tabs[tabs.length - 1].scrollWidth;\n\n if (total <= clientWidth) {\n return Infinity;\n }\n\n while (maxIndex) {\n total -= tabs[maxIndex].scrollWidth + margin;\n maxIndex--;\n\n const activeDisplaced = exposeActive && activeItemIndex > maxIndex;\n const activeOffset = activeDisplaced ? activeWidth + margin : 0;\n const currentWidth = total + activeOffset + moreWidth + margin;\n // Needed for different rounding of visible and hidden elements scrollWidth\n const safetyOffset = toInt(this.maxIndex === maxIndex - 1);\n\n if (currentWidth + safetyOffset < clientWidth) {\n return maxIndex;\n }\n }\n\n return -1;\n }\n\n private updateActiveItemIndex(activeItemIndex: number): void {\n if (this.activeItemIndex === activeItemIndex) {\n return;\n }\n\n this.activeItemIndex = activeItemIndex;\n this.activeItemIndexChange.emit(activeItemIndex);\n this.maxIndex = this.getMaxIndex();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n NgZone,\n} from '@angular/core';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {px, TUI_IS_ANDROID, TUI_IS_IOS, tuiDefaultProp, tuiZonefree} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER, TUI_MODE, TuiBrightness} from '@taiga-ui/core';\nimport {TUI_MOBILE_AWARE} from '@taiga-ui/kit/tokens';\nimport {asCallable} from '@tinkoff/ng-event-plugins';\nimport {Observable, of, ReplaySubject} from 'rxjs';\nimport {debounceTime, map, mapTo, share, switchMap} from 'rxjs/operators';\n\n@Component({\n selector: 'tui-underline',\n template: '',\n styleUrls: ['./underline.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [MODE_PROVIDER],\n host: {\n '($.data-mode.attr)': 'mode$',\n },\n})\nexport class TuiUnderlineComponent {\n private readonly element$ = new ReplaySubject<HTMLElement | null>(1);\n\n private readonly refresh$ = this.element$.pipe(\n switchMap(element =>\n element\n ? this.animationFrame$.pipe(mapTo(element), tuiZonefree(this.ngZone))\n : of(null),\n ),\n share(),\n );\n\n @Input()\n @tuiDefaultProp()\n set element(element: HTMLElement | null) {\n this.element$.next(element);\n }\n\n @HostBinding('class._ios')\n readonly isIos = this.mobileAware && this.ios;\n\n @HostBinding('class._android')\n readonly isAndroid = this.mobileAware && this.android;\n\n @HostListener('$.style.transitionProperty')\n readonly transition$ = asCallable(\n this.element$.pipe(\n map(element => element && 'all'),\n debounceTime(50),\n ),\n );\n\n @HostListener('$.style.transform')\n readonly transform$ = asCallable(\n this.refresh$.pipe(\n map(element =>\n element ? `translate3d(${px(element.offsetLeft)}, 0, 0)` : null,\n ),\n ),\n );\n\n @HostListener('$.style.width.px')\n readonly width$ = asCallable(\n this.refresh$.pipe(map(element => element?.clientWidth || 0)),\n );\n\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(ANIMATION_FRAME) private readonly animationFrame$: Observable<number>,\n @Inject(TUI_MOBILE_AWARE) private readonly mobileAware: boolean,\n @Inject(TUI_IS_IOS) private readonly ios: boolean,\n @Inject(TUI_IS_ANDROID) private readonly android: boolean,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n ) {\n nativeElement['$.style.transitionProperty'] = this.transition$;\n nativeElement['$.style.transform'] = this.transform$;\n nativeElement['$.style.width.px'] = this.width$;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiFocusableModule} from '@taiga-ui/cdk';\nimport {TuiHostedDropdownModule, TuiSvgModule} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiTabDirective} from './tab.directive';\nimport {TuiTabComponent} from './tab/tab.component';\nimport {TuiTabsComponent} from './tabs/tabs.component';\nimport {TuiTabsWithMoreComponent} from './tabs-with-more/tabs-with-more.component';\nimport {TuiUnderlineComponent} from './underline/underline.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TuiHostedDropdownModule,\n TuiSvgModule,\n TuiFocusableModule,\n PolymorpheusModule,\n ],\n declarations: [\n TuiTabsWithMoreComponent,\n TuiTabsComponent,\n TuiTabComponent,\n TuiUnderlineComponent,\n TuiTabDirective,\n ],\n exports: [\n TuiTabsWithMoreComponent,\n TuiTabsComponent,\n TuiTabComponent,\n TuiTabDirective,\n ],\n})\nexport class TuiTabsModule {}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://@taiga-ui/kit/components/tabs/tab.directive.ts","ng://@taiga-ui/kit/components/tabs/tab/tab.providers.ts","ng://@taiga-ui/kit/components/tabs/tab/tab.component.ts","ng://@taiga-ui/kit/components/tabs/tabs-options.ts","ng://@taiga-ui/kit/components/tabs/tabs/tabs.component.ts","ng://@taiga-ui/kit/components/tabs/tabs-with-more/tabs-with-more.providers.ts","ng://@taiga-ui/kit/components/tabs/tabs-with-more/tabs-with-more.component.ts","ng://@taiga-ui/kit/components/tabs/underline/underline.component.ts","ng://@taiga-ui/kit/components/tabs/tabs.module.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","create","TuiTabDirective","template","TemplateRef","type","Inject","args","Directive","selector","TUI_TAB_EVENT","InjectionToken","TUI_TAB_PROVIDERS","TuiDestroyService","TuiFocusVisibleService","TuiRouterLinkActiveService","provide","deps","ElementRef","DOCUMENT","Optional","MutationObserverService","RouterLinkActive","useFactory","tabActiveFactory","MODE_PROVIDER","_a","documentRef","routerLinkActiveService","mutationObserverService","routerLinkActive","nativeElement","mutationObserver","pipe","filter","isActive","EMPTY","merge","identity","matches","typedFromEvent","map","dispatchEvent","tuiCustomEvent","bubbles","TuiTabComponent","elementRef","mode$","event$","margin","mobileAware","isIos","isAndroid","focusVisible$","_this","focusVisible","subscribe","visible","ngOnDestroy","isNativeFocused","setNativeFocused","Observable","TUI_MODE","TUI_TAB_MARGIN","TUI_MOBILE_AWARE","TUI_IS_IOS","TUI_IS_ANDROID","HostBinding","Component","changeDetection","ChangeDetectionStrategy","OnPush","providers","host","($.data-mode.attr)","[style.--tui-tab-margin.px]","TUI_TABS_DEFAULT_OPTIONS","underline","exposeActive","itemsLimit","Infinity","minMoreWidth","TUI_TABS_OPTIONS","factory","OBSERVER_INIT","childList","TuiTabsComponent","options","renderer","changeDetectorRef","resize$","children","EMPTY_QUERY","activeItemIndexChange","EventEmitter","activeItemIndex","detectChanges","index","scrollTo","tabs","Array","from","querySelectorAll","onActivate","element","findIndex","tab","activeItemIndexSetter","emit","onKeyDownArrow","current","step","moveFocus","indexOf","ngAfterViewChecked","activeElement","forEach","removeClass","setAttribute","addClass","offsetLeft","offsetWidth","scrollLeft","Renderer2","ChangeDetectorRef","TuiResizeService","ContentChildren","forwardRef","Input","tuiDefaultProp","Output","HostListener","TUI_TAB_ACTIVATE","MUTATION_OBSERVER_INIT","useValue","tabsRefreshFactory","mutations$","destroy$","_b","body","tap","contains","debounceTime","startWith","takeUntil","MUTATION_CONFIG","subtree","characterData","TABS_REFRESH","TABS_PROVIDERS","TuiTabsWithMoreComponent","refresh$","moreWord$","maxIndex","moreContent","dropdownContent","items","open","safeActiveIndex","tuiClamp","lastVisibleIndex","moreButton","offset","Math","min","ngAfterViewInit","getMaxIndex","onActiveItemIndexChange","updateActiveItemIndex","onClick","focusMore","onArrowRight","event","tuiAssertIsHTMLElement","onArrowLeft","onWrapperArrow","wrapper","prev","button","getClosestFocusable","isOverflown","shouldShow","clientWidth","activeWidth","scrollWidth","moreWidth","max","total","reduce","acc","toInt","TUI_MORE_WORD","ViewChild","read","TuiUnderlineComponent","ngZone","animationFrame$","ios","android","element$","ReplaySubject","switchMap","mapTo","tuiZonefree","of","share","transition$","asCallable","transform$","px","width$","next","NgZone","ANIMATION_FRAME","TuiTabsModule","NgModule","imports","CommonModule","TuiHostedDropdownModule","TuiSvgModule","TuiFocusableModule","PolymorpheusModule","declarations","exports"],"mappings":"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","sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import {Directive, Inject, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: 'ng-template[tuiTab]',\n})\nexport class TuiTabDirective {\n constructor(\n @Inject(TemplateRef) readonly template: TemplateRef<Record<string, unknown>>,\n ) {}\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, InjectionToken, Optional, Provider} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {MutationObserverService} from '@ng-web-apis/mutation-observer';\nimport {\n tuiCustomEvent,\n TuiDestroyService,\n TuiFocusVisibleService,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER, TuiRouterLinkActiveService} from '@taiga-ui/core';\nimport {EMPTY, identity, merge, Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nexport const TUI_TAB_ACTIVATE = `tui-tab-activate`;\nexport const TUI_TAB_EVENT = new InjectionToken<Observable<Event>>(\n `Stream of tab activation events`,\n);\nexport const TUI_TAB_PROVIDERS: Provider[] = [\n TuiDestroyService,\n TuiFocusVisibleService,\n TuiRouterLinkActiveService,\n {\n provide: TUI_TAB_EVENT,\n deps: [\n ElementRef,\n DOCUMENT,\n TuiRouterLinkActiveService,\n [new Optional(), MutationObserverService],\n [new Optional(), RouterLinkActive],\n ],\n useFactory: tabActiveFactory,\n },\n MODE_PROVIDER,\n];\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function tabActiveFactory(\n {nativeElement}: ElementRef<HTMLElement>,\n documentRef: Document,\n routerLinkActiveService: Observable<boolean>,\n mutationObserverService: MutationObserverService | null,\n routerLinkActive: RouterLinkActive | null,\n): Observable<unknown> {\n const mutationObserver =\n routerLinkActive && mutationObserverService\n ? mutationObserverService.pipe(filter(() => routerLinkActive.isActive))\n : EMPTY;\n\n return merge(\n mutationObserver,\n routerLinkActiveService.pipe(filter(identity)),\n nativeElement.matches(`button`) ? typedFromEvent(nativeElement, `click`) : EMPTY,\n ).pipe(\n map(() =>\n nativeElement.dispatchEvent(\n tuiCustomEvent(TUI_TAB_ACTIVATE, {bubbles: true}, documentRef),\n ),\n ),\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n OnDestroy,\n Optional,\n} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {\n isNativeFocused,\n setNativeFocused,\n TUI_IS_ANDROID,\n TUI_IS_IOS,\n TuiFocusVisibleService,\n} from '@taiga-ui/cdk';\nimport {TUI_MODE, TuiBrightness} from '@taiga-ui/core';\nimport {TUI_MOBILE_AWARE, TUI_TAB_MARGIN} from '@taiga-ui/kit/tokens';\nimport {Observable} from 'rxjs';\n\nimport {TUI_TAB_EVENT, TUI_TAB_PROVIDERS} from './tab.providers';\n\n@Component({\n selector:\n 'a[tuiTab]:not([routerLink]), a[tuiTab][routerLink][routerLinkActive], button[tuiTab]',\n templateUrl: './tab.template.html',\n styleUrls: ['./tab.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_TAB_PROVIDERS,\n host: {\n '($.data-mode.attr)': 'mode$',\n '[style.--tui-tab-margin.px]': 'margin',\n type: 'button',\n },\n})\nexport class TuiTabComponent implements OnDestroy {\n @HostBinding('class._ios')\n readonly isIos: boolean;\n\n @HostBinding('class._android')\n readonly isAndroid: boolean;\n\n @HostBinding('class._focus-visible')\n focusVisible = false;\n\n constructor(\n @Optional()\n @Inject(RouterLinkActive)\n private readonly routerLinkActive: RouterLinkActive | null,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n @Inject(TUI_TAB_EVENT) readonly event$: Observable<Event>,\n @Inject(TUI_TAB_MARGIN) readonly margin: number,\n @Inject(TUI_MOBILE_AWARE) mobileAware: boolean,\n @Inject(TUI_IS_IOS) isIos: boolean,\n @Inject(TUI_IS_ANDROID) isAndroid: boolean,\n @Inject(TuiFocusVisibleService) focusVisible$: TuiFocusVisibleService,\n ) {\n this.isIos = mobileAware && isIos;\n this.isAndroid = mobileAware && isAndroid;\n\n focusVisible$.subscribe(visible => {\n this.focusVisible = visible;\n });\n }\n\n @HostBinding('class._active')\n get isActive(): boolean {\n return !!this.routerLinkActive && this.routerLinkActive.isActive;\n }\n\n ngOnDestroy(): void {\n if (isNativeFocused(this.elementRef.nativeElement)) {\n setNativeFocused(this.elementRef.nativeElement, false);\n }\n }\n}\n","import {InjectionToken, ValueProvider} from '@angular/core';\n\nexport interface TuiTabsOptions {\n readonly underline: boolean;\n readonly exposeActive: boolean;\n readonly itemsLimit: number;\n readonly minMoreWidth: number;\n}\n\nexport const TUI_TABS_DEFAULT_OPTIONS: TuiTabsOptions = {\n underline: true,\n exposeActive: true,\n itemsLimit: Infinity,\n minMoreWidth: 0,\n};\n\nexport const TUI_TABS_OPTIONS = new InjectionToken<TuiTabsOptions>(\n `Default parameters for tabs component`,\n {\n factory: () => TUI_TABS_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiTabsOptionsProvider: (\n options: Partial<TuiTabsOptions>,\n) => ValueProvider = (options: Partial<TuiTabsOptions>) => ({\n provide: TUI_TABS_OPTIONS,\n useValue: {...TUI_TABS_DEFAULT_OPTIONS, ...options},\n});\n","import {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n QueryList,\n Renderer2,\n} from '@angular/core';\nimport {\n MUTATION_OBSERVER_INIT,\n MutationObserverService,\n} from '@ng-web-apis/mutation-observer';\nimport {\n EMPTY_QUERY,\n moveFocus,\n TUI_IS_ANDROID,\n TUI_IS_IOS,\n tuiDefaultProp,\n TuiDestroyService,\n TuiResizeService,\n} from '@taiga-ui/cdk';\nimport {TUI_MOBILE_AWARE} from '@taiga-ui/kit/tokens';\nimport {Observable} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {TuiTabComponent} from '../tab/tab.component';\nimport {TUI_TAB_ACTIVATE} from '../tab/tab.providers';\nimport {TUI_TABS_OPTIONS, TuiTabsOptions} from '../tabs-options';\n\nconst TAB_ACTIVE_CLASS = '_active';\n\n// TODO: 3.0 remove in ivy compilation\nexport const OBSERVER_INIT = {\n childList: true,\n};\n\n// @dynamic\n@Component({\n selector: 'tui-tabs, nav[tuiTabs]',\n templateUrl: './tabs.template.html',\n styleUrls: ['./tabs.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TuiDestroyService,\n TuiResizeService,\n MutationObserverService,\n {\n provide: MUTATION_OBSERVER_INIT,\n useValue: OBSERVER_INIT,\n },\n ],\n})\nexport class TuiTabsComponent implements AfterViewChecked {\n @ContentChildren(forwardRef(() => TuiTabComponent))\n readonly children: QueryList<unknown> = EMPTY_QUERY;\n\n @Input()\n @HostBinding('class._underline')\n @tuiDefaultProp()\n underline = this.options.underline;\n\n @Input('activeItemIndex')\n set activeItemIndexSetter(index: number) {\n this.activeItemIndex = index;\n this.scrollTo(this.tabs[index]);\n }\n\n @Output()\n readonly activeItemIndexChange = new EventEmitter<number>();\n\n @HostBinding('class._ios')\n readonly isIos: boolean;\n\n @HostBinding('class._android')\n readonly isAndroid: boolean;\n\n activeItemIndex = 0;\n\n constructor(\n @Inject(TUI_TABS_OPTIONS) private readonly options: TuiTabsOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(Renderer2) private readonly renderer: Renderer2,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TuiResizeService) resize$: Observable<void>,\n @Inject(TUI_IS_IOS) isIos: boolean,\n @Inject(TUI_IS_ANDROID) isAndroid: boolean,\n @Inject(TUI_MOBILE_AWARE) mobileAware: boolean,\n ) {\n this.isIos = mobileAware && isIos;\n this.isAndroid = mobileAware && isAndroid;\n\n resize$.pipe(filter(() => this.underline)).subscribe(() => {\n changeDetectorRef.detectChanges();\n });\n }\n\n get tabs(): readonly HTMLElement[] {\n return Array.from(\n this.elementRef.nativeElement.querySelectorAll<HTMLElement>('[tuiTab]'),\n );\n }\n\n get activeElement(): HTMLElement | null {\n return this.tabs[this.activeItemIndex] || null;\n }\n\n @HostListener(`${TUI_TAB_ACTIVATE}.stop`, ['$event.target'])\n onActivate(element: HTMLElement): void {\n const index = this.tabs.findIndex(tab => tab === element);\n\n if (index === this.activeItemIndex) {\n return;\n }\n\n this.activeItemIndexSetter = index;\n this.activeItemIndexChange.emit(index);\n }\n\n @HostListener('keydown.arrowRight.prevent', ['$event.target', '1'])\n @HostListener('keydown.arrowLeft.prevent', ['$event.target', '-1'])\n onKeyDownArrow(current: HTMLElement, step: number): void {\n const {tabs} = this;\n\n moveFocus(tabs.indexOf(current), tabs, step);\n }\n\n ngAfterViewChecked(): void {\n const {tabs, activeElement} = this;\n\n tabs.forEach(nativeElement => {\n this.renderer.removeClass(nativeElement, TAB_ACTIVE_CLASS);\n this.renderer.setAttribute(nativeElement, 'tabIndex', '-1');\n });\n\n if (activeElement) {\n this.renderer.addClass(activeElement, TAB_ACTIVE_CLASS);\n this.renderer.setAttribute(activeElement, 'tabIndex', '0');\n }\n }\n\n private scrollTo(element?: HTMLElement): void {\n if (!element) {\n return;\n }\n\n const {offsetLeft, offsetWidth} = element;\n const {nativeElement} = this.elementRef;\n\n if (offsetLeft < nativeElement.scrollLeft) {\n nativeElement.scrollLeft = offsetLeft;\n }\n\n if (\n offsetLeft + offsetWidth >\n nativeElement.scrollLeft + nativeElement.offsetWidth\n ) {\n nativeElement.scrollLeft =\n offsetLeft + offsetWidth - nativeElement.offsetWidth;\n }\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ChangeDetectorRef, ElementRef, InjectionToken, Provider} from '@angular/core';\nimport {\n MUTATION_OBSERVER_INIT,\n MutationObserverService,\n} from '@ng-web-apis/mutation-observer';\nimport {TuiDestroyService, TuiResizeService} from '@taiga-ui/cdk';\nimport {merge, Observable} from 'rxjs';\nimport {debounceTime, filter, startWith, takeUntil, tap} from 'rxjs/operators';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function tabsRefreshFactory(\n resize$: Observable<unknown>,\n mutations$: Observable<unknown>,\n destroy$: Observable<unknown>,\n {body}: Document,\n {nativeElement}: ElementRef<Node>,\n changeDetectorRef: ChangeDetectorRef,\n): Observable<unknown> {\n return merge(\n resize$,\n mutations$.pipe(tap(() => changeDetectorRef.detectChanges())),\n ).pipe(\n // Ignoring cases when host is detached from DOM\n filter(() => body.contains(nativeElement)),\n debounceTime(0),\n startWith(null),\n takeUntil(destroy$),\n );\n}\n\n// TODO: 3.0 remove in ivy compilation\nexport const MUTATION_CONFIG = {\n childList: true,\n subtree: true,\n characterData: true,\n};\nexport const TABS_REFRESH = new InjectionToken<Observable<unknown>>(`Refresh stream`);\nexport const TABS_PROVIDERS: Provider[] = [\n TuiResizeService,\n TuiDestroyService,\n MutationObserverService,\n {\n provide: MUTATION_OBSERVER_INIT,\n useValue: MUTATION_CONFIG,\n },\n {\n provide: TABS_REFRESH,\n deps: [\n TuiResizeService,\n MutationObserverService,\n TuiDestroyService,\n DOCUMENT,\n ElementRef,\n ChangeDetectorRef,\n ],\n useFactory: tabsRefreshFactory,\n },\n];\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n EMPTY_QUERY,\n getClosestFocusable,\n isNativeFocused,\n setNativeFocused,\n toInt,\n TuiActiveZoneDirective,\n tuiAssertIsHTMLElement,\n tuiClamp,\n TuiContextWithImplicit,\n tuiDefaultProp,\n} from '@taiga-ui/cdk';\nimport {TUI_MORE_WORD, TUI_TAB_MARGIN} from '@taiga-ui/kit/tokens';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {TuiTabDirective} from '../tab.directive';\nimport {TuiTabComponent} from '../tab/tab.component';\nimport {TUI_TABS_OPTIONS, TuiTabsOptions} from '../tabs-options';\nimport {TABS_PROVIDERS, TABS_REFRESH} from './tabs-with-more.providers';\n\n// @dynamic\n@Component({\n selector: 'tui-tabs-with-more, nav[tuiTabsWithMore]',\n templateUrl: './tabs-with-more.template.html',\n styleUrls: ['./tabs-with-more.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TABS_PROVIDERS,\n})\nexport class TuiTabsWithMoreComponent implements AfterViewInit {\n @ViewChild(TuiTabComponent, {read: ElementRef})\n private readonly moreButton?: ElementRef<HTMLButtonElement>;\n\n private maxIndex = Infinity;\n\n @Input()\n @tuiDefaultProp()\n moreContent: PolymorpheusContent = '';\n\n @Input()\n @tuiDefaultProp()\n dropdownContent: PolymorpheusContent<TuiContextWithImplicit<TuiActiveZoneDirective>> =\n '';\n\n @Input()\n @HostBinding('class._underline')\n @tuiDefaultProp()\n underline = this.options.underline;\n\n @Input()\n @tuiDefaultProp()\n activeItemIndex = 0;\n\n @Input()\n @tuiDefaultProp()\n itemsLimit = this.options.itemsLimit;\n\n @Output()\n readonly activeItemIndexChange = new EventEmitter<number>();\n\n @ContentChildren(TuiTabDirective, {read: TemplateRef})\n readonly items: QueryList<TemplateRef<Record<string, unknown>>> = EMPTY_QUERY;\n\n open = false;\n\n constructor(\n @Inject(TUI_TABS_OPTIONS) private readonly options: TuiTabsOptions,\n @Inject(TUI_TAB_MARGIN) private readonly margin: number,\n @Inject(TABS_REFRESH) private readonly refresh$: Observable<unknown>,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(ChangeDetectorRef) private readonly changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_MORE_WORD) readonly moreWord$: Observable<string>,\n ) {}\n\n // TODO: Improve performance\n get tabs(): readonly HTMLElement[] {\n return Array.from<HTMLElement>(\n this.elementRef.nativeElement.querySelectorAll('[tuiTab]'),\n );\n }\n\n get activeElement(): HTMLElement | null {\n const {tabs} = this;\n const safeActiveIndex = tuiClamp(this.activeItemIndex || 0, 0, tabs.length - 2);\n\n return this.options.exposeActive || this.lastVisibleIndex >= safeActiveIndex\n ? tabs[safeActiveIndex] || null\n : this.moreButton?.nativeElement || null;\n }\n\n get isMoreVisible(): boolean {\n return this.lastVisibleIndex < this.items.length - 1;\n }\n\n get isMoreFocusable(): boolean {\n return !!this.moreButton && isNativeFocused(this.moreButton.nativeElement);\n }\n\n get isMoreActive(): boolean {\n return (\n this.open ||\n (!this.options.exposeActive && this.lastVisibleIndex < this.activeItemIndex)\n );\n }\n\n get isMoreAlone(): boolean {\n return this.lastVisibleIndex < 0 && !this.options.exposeActive;\n }\n\n get lastVisibleIndex(): number {\n if (this.itemsLimit + 1 >= this.items.length) {\n return this.maxIndex;\n }\n\n const offset =\n this.itemsLimit - 1 > this.activeItemIndex || !this.options.exposeActive\n ? 1\n : 2;\n\n return Math.min(this.itemsLimit - offset, this.maxIndex);\n }\n\n ngAfterViewInit(): void {\n this.refresh$\n .pipe(\n map(() => this.getMaxIndex()),\n filter(maxIndex => this.maxIndex !== maxIndex),\n )\n .subscribe(maxIndex => {\n this.maxIndex = maxIndex;\n this.changeDetectorRef.detectChanges();\n });\n }\n\n onActiveItemIndexChange(activeItemIndex: number): void {\n this.updateActiveItemIndex(activeItemIndex);\n }\n\n onClick(index: number): void {\n this.open = false;\n this.focusMore();\n this.updateActiveItemIndex(index);\n }\n\n onArrowRight(event: Event): void {\n tuiAssertIsHTMLElement(event.target);\n\n if (isNativeFocused(event.target)) {\n this.focusMore();\n }\n }\n\n onArrowLeft(): void {\n const {tabs} = this;\n let index = tabs.length - 2;\n\n while (index >= 0) {\n setNativeFocused(tabs[index]);\n\n if (isNativeFocused(tabs[index])) {\n return;\n }\n\n index--;\n }\n }\n\n onWrapperArrow(event: Event, wrapper: HTMLElement, prev: boolean): void {\n const button: HTMLButtonElement = event.target as HTMLButtonElement;\n const target = getClosestFocusable(button, prev, wrapper);\n\n if (target) {\n setNativeFocused(target);\n }\n }\n\n isOverflown(index: number): boolean {\n return index !== this.activeItemIndex || !this.options.exposeActive;\n }\n\n shouldShow(index: number): boolean {\n return index > this.lastVisibleIndex && this.isOverflown(index);\n }\n\n private focusMore(): void {\n if (this.moreButton) {\n setNativeFocused(this.moreButton.nativeElement);\n }\n }\n\n private getMaxIndex(): number {\n const {tabs, activeItemIndex, margin} = this;\n\n if (tabs.length < 2) {\n return 0;\n }\n\n const {exposeActive, minMoreWidth} = this.options;\n const {clientWidth} = this.elementRef.nativeElement;\n const activeWidth = tabs[activeItemIndex] ? tabs[activeItemIndex].scrollWidth : 0;\n const moreWidth = Math.max(tabs[tabs.length - 1].scrollWidth, minMoreWidth);\n let maxIndex = tabs.length - 2;\n let total =\n tabs.reduce((acc, {scrollWidth}) => acc + scrollWidth, 0) +\n maxIndex * margin -\n tabs[tabs.length - 1].scrollWidth;\n\n if (total <= clientWidth) {\n return Infinity;\n }\n\n while (maxIndex) {\n total -= tabs[maxIndex].scrollWidth + margin;\n maxIndex--;\n\n const activeDisplaced = exposeActive && activeItemIndex > maxIndex;\n const activeOffset = activeDisplaced ? activeWidth + margin : 0;\n const currentWidth = total + activeOffset + moreWidth + margin;\n // Needed for different rounding of visible and hidden elements scrollWidth\n const safetyOffset = toInt(this.maxIndex === maxIndex - 1);\n\n if (currentWidth + safetyOffset < clientWidth) {\n return maxIndex;\n }\n }\n\n return -1;\n }\n\n private updateActiveItemIndex(activeItemIndex: number): void {\n this.activeItemIndex = activeItemIndex;\n this.activeItemIndexChange.emit(activeItemIndex);\n this.maxIndex = this.getMaxIndex();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n NgZone,\n} from '@angular/core';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {px, TUI_IS_ANDROID, TUI_IS_IOS, tuiDefaultProp, tuiZonefree} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER, TUI_MODE, TuiBrightness} from '@taiga-ui/core';\nimport {TUI_MOBILE_AWARE} from '@taiga-ui/kit/tokens';\nimport {asCallable} from '@tinkoff/ng-event-plugins';\nimport {Observable, of, ReplaySubject} from 'rxjs';\nimport {debounceTime, map, mapTo, share, switchMap} from 'rxjs/operators';\n\n@Component({\n selector: 'tui-underline',\n template: '',\n styleUrls: ['./underline.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [MODE_PROVIDER],\n host: {\n '($.data-mode.attr)': 'mode$',\n },\n})\nexport class TuiUnderlineComponent {\n private readonly element$ = new ReplaySubject<HTMLElement | null>(1);\n\n private readonly refresh$ = this.element$.pipe(\n switchMap(element =>\n element\n ? this.animationFrame$.pipe(mapTo(element), tuiZonefree(this.ngZone))\n : of(null),\n ),\n share(),\n );\n\n @Input()\n @tuiDefaultProp()\n set element(element: HTMLElement | null) {\n this.element$.next(element);\n }\n\n @HostBinding('class._ios')\n readonly isIos = this.mobileAware && this.ios;\n\n @HostBinding('class._android')\n readonly isAndroid = this.mobileAware && this.android;\n\n @HostListener('$.style.transitionProperty')\n readonly transition$ = asCallable(\n this.element$.pipe(\n map(element => element && 'all'),\n debounceTime(50),\n ),\n );\n\n @HostListener('$.style.transform')\n readonly transform$ = asCallable(\n this.refresh$.pipe(\n map(element =>\n element ? `translate3d(${px(element.offsetLeft)}, 0, 0)` : null,\n ),\n ),\n );\n\n @HostListener('$.style.width.px')\n readonly width$ = asCallable(\n this.refresh$.pipe(map(element => element?.clientWidth || 0)),\n );\n\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(ANIMATION_FRAME) private readonly animationFrame$: Observable<number>,\n @Inject(TUI_MOBILE_AWARE) private readonly mobileAware: boolean,\n @Inject(TUI_IS_IOS) private readonly ios: boolean,\n @Inject(TUI_IS_ANDROID) private readonly android: boolean,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n ) {\n nativeElement['$.style.transitionProperty'] = this.transition$;\n nativeElement['$.style.transform'] = this.transform$;\n nativeElement['$.style.width.px'] = this.width$;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiFocusableModule} from '@taiga-ui/cdk';\nimport {TuiHostedDropdownModule, TuiSvgModule} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiTabDirective} from './tab.directive';\nimport {TuiTabComponent} from './tab/tab.component';\nimport {TuiTabsComponent} from './tabs/tabs.component';\nimport {TuiTabsWithMoreComponent} from './tabs-with-more/tabs-with-more.component';\nimport {TuiUnderlineComponent} from './underline/underline.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TuiHostedDropdownModule,\n TuiSvgModule,\n TuiFocusableModule,\n PolymorpheusModule,\n ],\n declarations: [\n TuiTabsWithMoreComponent,\n TuiTabsComponent,\n TuiTabComponent,\n TuiUnderlineComponent,\n TuiTabDirective,\n ],\n exports: [\n TuiTabsWithMoreComponent,\n TuiTabsComponent,\n TuiTabComponent,\n TuiTabDirective,\n ],\n})\nexport class TuiTabsModule {}\n"]}
|
|
@@ -14,6 +14,7 @@ export declare class TuiInputCountComponent extends AbstractTuiNullableControl<n
|
|
|
14
14
|
readonly options: TuiInputCountOptions;
|
|
15
15
|
private readonly numberFormat;
|
|
16
16
|
private readonly primitiveTextfield?;
|
|
17
|
+
private unfinishedValue;
|
|
17
18
|
step: number;
|
|
18
19
|
min: number;
|
|
19
20
|
max: number;
|
|
@@ -48,4 +49,5 @@ export declare class TuiInputCountComponent extends AbstractTuiNullableControl<n
|
|
|
48
49
|
private onBlur;
|
|
49
50
|
private formatNumber;
|
|
50
51
|
private isNotNumber;
|
|
52
|
+
private get isNativeValueNotFinished();
|
|
51
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"TuiInputCountComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"AbstractTuiNullableControl","line":65,"character":12},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":48,"character":1},"arguments":[{"selector":"tui-input-count","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":52,"character":21},"member":"OnPush"},"providers":[{"provide":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TUI_FOCUSABLE_ITEM_ACCESSOR","line":55,"character":21},"useExisting":{"__symbolic":"reference","name":"TuiInputCountComponent"}},{"provide":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"AbstractTuiControl","line":59,"character":21},"useExisting":{"__symbolic":"reference","name":"TuiInputCountComponent"}}],"template":"<tui-primitive-textfield\n tuiValueAccessor\n tuiTextfieldAutocomplete=\"off\"\n tuiTextfieldInputMode=\"numeric\"\n class=\"t-textfield\"\n [tuiTextfieldMaxLength]=\"18\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n [pseudoPressed]=\"pseudoPressed\"\n [focusable]=\"focusable\"\n [nativeId]=\"nativeId\"\n [prefix]=\"prefix\"\n [postfix]=\"postfix\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [textMask]=\"getMask(min < 0)\"\n [invalid]=\"computedInvalid\"\n [value]=\"computedValue\"\n (valueChange)=\"onValueChange()\"\n (keydown)=\"onKeydown($event)\"\n (focusedChange)=\"onFocused($event)\"\n (hoveredChange)=\"onHovered($event)\"\n (pressedChange)=\"onPressed($event)\"\n>\n <ng-content></ng-content>\n <ng-content\n select=\"input\"\n ngProjectAs=\"input\"\n ></ng-content>\n</tui-primitive-textfield>\n<ng-container *ngIf=\"!buttonsHidden\">\n <ng-container *ngIf=\"minusTexts$ | async as texts\">\n <section class=\"t-buttons\">\n <button\n tuiIconButton\n type=\"button\"\n automation-id=\"tui-input-count__plus-button\"\n size=\"s\"\n class=\"t-button t-button_plus\"\n [icon]=\"iconUp\"\n [appearance]=\"options.appearance\"\n [title]=\"texts[0]\"\n [disabled]=\"plusButtonDisabled\"\n [focusable]=\"false\"\n (mousedown)=\"onButtonMouseDown($event, plusButtonDisabled)\"\n (click)=\"increaseValue()\"\n ></button>\n <button\n tuiIconButton\n type=\"button\"\n automation-id=\"tui-input-count__minus-button\"\n size=\"s\"\n class=\"t-button t-button_minus\"\n [icon]=\"iconDown\"\n [appearance]=\"options.appearance\"\n [disabled]=\"minusButtonDisabled\"\n [focusable]=\"false\"\n [title]=\"texts[1]\"\n (mousedown)=\"onButtonMouseDown($event, minusButtonDisabled)\"\n (click)=\"decreaseValue()\"\n ></button>\n </section>\n </ng-container>\n</ng-container>\n","styles":[":host{display:flex;font:var(--tui-font-text-s);border-radius:var(--tui-radius-m);height:var(--tui-height-m);color:var(--tui-text-01);text-align:left}:host._disabled{pointer-events:none}:host[data-size='l']{font:var(--tui-font-text-m);height:var(--tui-height-l)}.t-textfield{position:relative;border-radius:inherit;text-align:inherit;flex-grow:1;min-width:0}:host:not(._hide-buttons) .t-textfield{border-top-right-radius:0;border-bottom-right-radius:0}.t-buttons{display:flex;flex-direction:column;margin-left:.125rem;height:100%}.t-buttons .t-button{display:flex;width:calc(var(--tui-height-m) * .75);height:calc(50% - .0625rem)}.t-buttons .t-button_plus{margin-bottom:.125rem;border-radius:0 var(--tui-radius-m) 0 0}.t-buttons .t-button_minus{border-radius:0 0 var(--tui-radius-m)}:host[data-size='l'] .t-buttons .t-button{width:calc(var(--tui-height-l) * .75)}"]}]}],"members":{"primitiveTextfield":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":68,"character":5},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiPrimitiveTextfieldComponent","line":68,"character":15}]}]}],"step":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":71,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":72,"character":5}}]}],"min":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":76,"character":5}}]}],"max":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":79,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":80,"character":5}}]}],"hideButtons":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":83,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":84,"character":5}}]}],"prefix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":87,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":88,"character":5}}]}],"postfix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":91,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":92,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":96,"character":9}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":97,"character":9}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":98,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/forms","name":"NgControl","line":98,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":100,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":100,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":101,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core","name":"TUI_TEXTFIELD_APPEARANCE","line":101,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":103,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core","name":"TUI_TEXTFIELD_SIZE","line":103,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":105,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/kit/tokens","name":"TUI_PLUS_MINUS_TEXTS","line":105,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":107,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TUI_IS_MOBILE","line":107,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":108,"character":9},"arguments":[{"__symbolic":"reference","name":"TUI_INPUT_COUNT_OPTIONS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":110,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core","name":"TUI_NUMBER_FORMAT","line":110,"character":16}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"NgControl","line":99,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":100,"character":54},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiTextfieldSizeDirective","line":104,"character":40},{"__symbolic":"reference","name":"Observable","module":"rxjs","arguments":[{"__symbolic":"error","message":"Expression form not supported","line":106,"character":41,"module":"./input-count.component"}]},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"TuiInputCountOptions"},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiNumberFormatSettings","line":111,"character":39}]}],"getMask":[{"__symbolic":"method","decorators":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiPure","line":116,"character":5}]}],"buttonsHidden":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":129,"character":5},"arguments":["class._hide-buttons"]}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":148,"character":5},"arguments":["attr.data-size"]}]}],"onButtonMouseDown":[{"__symbolic":"method"}],"onFocused":[{"__symbolic":"method"}],"onHovered":[{"__symbolic":"method"}],"onPressed":[{"__symbolic":"method"}],"onValueChange":[{"__symbolic":"method"}],"decreaseValue":[{"__symbolic":"method"}],"increaseValue":[{"__symbolic":"method"}],"onKeydown":[{"__symbolic":"method"}],"safeUpdateValue":[{"__symbolic":"method"}],"capValue":[{"__symbolic":"method"}],"onBlur":[{"__symbolic":"method"}],"formatNumber":[{"__symbolic":"method"}],"isNotNumber":[{"__symbolic":"method"}]}},"TuiInputCountDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiAbstractTextfieldHost","line":14,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"tui-input-count","providers":[{"provide":{"__symbolic":"reference","module":"@taiga-ui/core","name":"TUI_TEXTFIELD_HOST","line":9,"character":21},"useExisting":{"__symbolic":"reference","name":"TuiInputCountDirective"}}]}]}],"members":{"onValueChange":[{"__symbolic":"method"}],"process":[{"__symbolic":"method"}]}},"TuiInputCountModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":15,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":17,"character":8},{"__symbolic":"reference","module":"angular2-text-mask","name":"TextMaskModule","line":18,"character":8},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiButtonModule","line":19,"character":8},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiPrimitiveTextfieldModule","line":20,"character":8},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiTextfieldControllerModule","line":21,"character":8},{"__symbolic":"reference","module":"@taiga-ui/kit/directives","name":"TuiValueAccessorModule","line":22,"character":8},{"__symbolic":"reference","module":"@tinkoff/ng-polymorpheus","name":"PolymorpheusModule","line":23,"character":8}],"declarations":[{"__symbolic":"reference","name":"TuiInputCountComponent"},{"__symbolic":"reference","name":"TuiInputCountDirective"}],"exports":[{"__symbolic":"reference","name":"TuiInputCountComponent"},{"__symbolic":"reference","name":"TuiInputCountDirective"},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiTextfieldComponent","line":26,"character":62}]}]}],"members":{}},"TuiInputCountOptions":{"__symbolic":"interface"},"InputCountOptions":{"__symbolic":"interface"},"PASSWORD_ICON_UP":"tuiIconPlus","PASSWORD_ICON_DOWN":"tuiIconMinus","TUI_INPUT_COUNT_DEFAULT_OPTIONS":{"icons":{"up":{"__symbolic":"reference","name":"PASSWORD_ICON_UP"},"down":{"__symbolic":"reference","name":"PASSWORD_ICON_DOWN"}},"appearance":"textfield","hideButtons":false,"min":0,"max":{"__symbolic":"reference","name":"Infinity"},"step":1,"postfix":""},"TUI_INPUT_COUNT_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":40,"character":43},"arguments":["Default parameters for input count component",{"__symbolic":"error","message":"Lambda not supported","line":43,"character":17,"module":"./input-count-options"}]},"tuiInputCountOptionsProvider":{"__symbolic":"error","message":"Lambda not supported","line":49,"character":21,"module":"./input-count-options"}},"origins":{"TuiInputCountComponent":"./input-count.component","TuiInputCountDirective":"./input-count.directive","TuiInputCountModule":"./input-count.module","TuiInputCountOptions":"./input-count-options","InputCountOptions":"./input-count-options","PASSWORD_ICON_UP":"./input-count-options","PASSWORD_ICON_DOWN":"./input-count-options","TUI_INPUT_COUNT_DEFAULT_OPTIONS":"./input-count-options","TUI_INPUT_COUNT_OPTIONS":"./input-count-options","tuiInputCountOptionsProvider":"./input-count-options"},"importAs":"@taiga-ui/kit/components/input-count"}
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"TuiInputCountComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"AbstractTuiNullableControl","line":66,"character":12},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":49,"character":1},"arguments":[{"selector":"tui-input-count","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":53,"character":21},"member":"OnPush"},"providers":[{"provide":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TUI_FOCUSABLE_ITEM_ACCESSOR","line":56,"character":21},"useExisting":{"__symbolic":"reference","name":"TuiInputCountComponent"}},{"provide":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"AbstractTuiControl","line":60,"character":21},"useExisting":{"__symbolic":"reference","name":"TuiInputCountComponent"}}],"template":"<tui-primitive-textfield\n tuiValueAccessor\n tuiTextfieldAutocomplete=\"off\"\n tuiTextfieldInputMode=\"numeric\"\n class=\"t-textfield\"\n [tuiTextfieldMaxLength]=\"18\"\n [pseudoFocused]=\"pseudoFocused\"\n [pseudoHovered]=\"pseudoHovered\"\n [pseudoPressed]=\"pseudoPressed\"\n [focusable]=\"focusable\"\n [nativeId]=\"nativeId\"\n [prefix]=\"prefix\"\n [postfix]=\"postfix\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [textMask]=\"getMask(min < 0)\"\n [invalid]=\"computedInvalid\"\n [value]=\"computedValue\"\n (valueChange)=\"onValueChange()\"\n (keydown)=\"onKeydown($event)\"\n (focusedChange)=\"onFocused($event)\"\n (hoveredChange)=\"onHovered($event)\"\n (pressedChange)=\"onPressed($event)\"\n>\n <ng-content></ng-content>\n <ng-content\n select=\"input\"\n ngProjectAs=\"input\"\n ></ng-content>\n</tui-primitive-textfield>\n<ng-container *ngIf=\"!buttonsHidden\">\n <ng-container *ngIf=\"minusTexts$ | async as texts\">\n <section class=\"t-buttons\">\n <button\n tuiIconButton\n type=\"button\"\n automation-id=\"tui-input-count__plus-button\"\n size=\"s\"\n class=\"t-button t-button_plus\"\n [icon]=\"iconUp\"\n [appearance]=\"options.appearance\"\n [title]=\"texts[0]\"\n [disabled]=\"plusButtonDisabled\"\n [focusable]=\"false\"\n (mousedown)=\"onButtonMouseDown($event, plusButtonDisabled)\"\n (click)=\"increaseValue()\"\n ></button>\n <button\n tuiIconButton\n type=\"button\"\n automation-id=\"tui-input-count__minus-button\"\n size=\"s\"\n class=\"t-button t-button_minus\"\n [icon]=\"iconDown\"\n [appearance]=\"options.appearance\"\n [disabled]=\"minusButtonDisabled\"\n [focusable]=\"false\"\n [title]=\"texts[1]\"\n (mousedown)=\"onButtonMouseDown($event, minusButtonDisabled)\"\n (click)=\"decreaseValue()\"\n ></button>\n </section>\n </ng-container>\n</ng-container>\n","styles":[":host{display:flex;font:var(--tui-font-text-s);border-radius:var(--tui-radius-m);height:var(--tui-height-m);color:var(--tui-text-01);text-align:left}:host._disabled{pointer-events:none}:host[data-size='l']{font:var(--tui-font-text-m);height:var(--tui-height-l)}.t-textfield{position:relative;border-radius:inherit;text-align:inherit;flex-grow:1;min-width:0}:host:not(._hide-buttons) .t-textfield{border-top-right-radius:0;border-bottom-right-radius:0}.t-buttons{display:flex;flex-direction:column;margin-left:.125rem;height:100%}.t-buttons .t-button{display:flex;width:calc(var(--tui-height-m) * .75);height:calc(50% - .0625rem)}.t-buttons .t-button_plus{margin-bottom:.125rem;border-radius:0 var(--tui-radius-m) 0 0}.t-buttons .t-button_minus{border-radius:0 0 var(--tui-radius-m)}:host[data-size='l'] .t-buttons .t-button{width:calc(var(--tui-height-l) * .75)}"]}]}],"members":{"primitiveTextfield":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":69,"character":5},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiPrimitiveTextfieldComponent","line":69,"character":15}]}]}],"step":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":74,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":75,"character":5}}]}],"min":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":78,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":79,"character":5}}]}],"max":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":83,"character":5}}]}],"hideButtons":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":87,"character":5}}]}],"prefix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":91,"character":5}}]}],"postfix":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":94,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiDefaultProp","line":95,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":99,"character":9}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":100,"character":9}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":101,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/forms","name":"NgControl","line":101,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":103,"character":9},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":103,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":104,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core","name":"TUI_TEXTFIELD_APPEARANCE","line":104,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":106,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core","name":"TUI_TEXTFIELD_SIZE","line":106,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":108,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/kit/tokens","name":"TUI_PLUS_MINUS_TEXTS","line":108,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":110,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"TUI_IS_MOBILE","line":110,"character":16}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":111,"character":9},"arguments":[{"__symbolic":"reference","name":"TUI_INPUT_COUNT_OPTIONS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":113,"character":9},"arguments":[{"__symbolic":"reference","module":"@taiga-ui/core","name":"TUI_NUMBER_FORMAT","line":113,"character":16}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"NgControl","line":102,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":103,"character":54},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiTextfieldSizeDirective","line":107,"character":40},{"__symbolic":"reference","name":"Observable","module":"rxjs","arguments":[{"__symbolic":"error","message":"Expression form not supported","line":109,"character":41,"module":"./input-count.component"}]},{"__symbolic":"reference","name":"boolean"},{"__symbolic":"reference","name":"TuiInputCountOptions"},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiNumberFormatSettings","line":114,"character":39}]}],"getMask":[{"__symbolic":"method","decorators":[{"__symbolic":"reference","module":"@taiga-ui/cdk","name":"tuiPure","line":119,"character":5}]}],"buttonsHidden":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":132,"character":5},"arguments":["class._hide-buttons"]}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":151,"character":5},"arguments":["attr.data-size"]}]}],"onButtonMouseDown":[{"__symbolic":"method"}],"onFocused":[{"__symbolic":"method"}],"onHovered":[{"__symbolic":"method"}],"onPressed":[{"__symbolic":"method"}],"onValueChange":[{"__symbolic":"method"}],"decreaseValue":[{"__symbolic":"method"}],"increaseValue":[{"__symbolic":"method"}],"onKeydown":[{"__symbolic":"method"}],"safeUpdateValue":[{"__symbolic":"method"}],"capValue":[{"__symbolic":"method"}],"onBlur":[{"__symbolic":"method"}],"formatNumber":[{"__symbolic":"method"}],"isNotNumber":[{"__symbolic":"method"}]}},"TuiInputCountDirective":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiAbstractTextfieldHost","line":14,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"tui-input-count","providers":[{"provide":{"__symbolic":"reference","module":"@taiga-ui/core","name":"TUI_TEXTFIELD_HOST","line":9,"character":21},"useExisting":{"__symbolic":"reference","name":"TuiInputCountDirective"}}]}]}],"members":{"onValueChange":[{"__symbolic":"method"}],"process":[{"__symbolic":"method"}]}},"TuiInputCountModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":15,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":17,"character":8},{"__symbolic":"reference","module":"angular2-text-mask","name":"TextMaskModule","line":18,"character":8},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiButtonModule","line":19,"character":8},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiPrimitiveTextfieldModule","line":20,"character":8},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiTextfieldControllerModule","line":21,"character":8},{"__symbolic":"reference","module":"@taiga-ui/kit/directives","name":"TuiValueAccessorModule","line":22,"character":8},{"__symbolic":"reference","module":"@tinkoff/ng-polymorpheus","name":"PolymorpheusModule","line":23,"character":8}],"declarations":[{"__symbolic":"reference","name":"TuiInputCountComponent"},{"__symbolic":"reference","name":"TuiInputCountDirective"}],"exports":[{"__symbolic":"reference","name":"TuiInputCountComponent"},{"__symbolic":"reference","name":"TuiInputCountDirective"},{"__symbolic":"reference","module":"@taiga-ui/core","name":"TuiTextfieldComponent","line":26,"character":62}]}]}],"members":{}},"TuiInputCountOptions":{"__symbolic":"interface"},"InputCountOptions":{"__symbolic":"interface"},"PASSWORD_ICON_UP":"tuiIconPlus","PASSWORD_ICON_DOWN":"tuiIconMinus","TUI_INPUT_COUNT_DEFAULT_OPTIONS":{"icons":{"up":{"__symbolic":"reference","name":"PASSWORD_ICON_UP"},"down":{"__symbolic":"reference","name":"PASSWORD_ICON_DOWN"}},"appearance":"textfield","hideButtons":false,"min":0,"max":{"__symbolic":"reference","name":"Infinity"},"step":1,"postfix":""},"TUI_INPUT_COUNT_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":40,"character":43},"arguments":["Default parameters for input count component",{"__symbolic":"error","message":"Lambda not supported","line":43,"character":17,"module":"./input-count-options"}]},"tuiInputCountOptionsProvider":{"__symbolic":"error","message":"Lambda not supported","line":49,"character":21,"module":"./input-count-options"}},"origins":{"TuiInputCountComponent":"./input-count.component","TuiInputCountDirective":"./input-count.directive","TuiInputCountModule":"./input-count.module","TuiInputCountOptions":"./input-count-options","InputCountOptions":"./input-count-options","PASSWORD_ICON_UP":"./input-count-options","PASSWORD_ICON_DOWN":"./input-count-options","TUI_INPUT_COUNT_DEFAULT_OPTIONS":"./input-count-options","TUI_INPUT_COUNT_OPTIONS":"./input-count-options","tuiInputCountOptionsProvider":"./input-count-options"},"importAs":"@taiga-ui/kit/components/input-count"}
|