@taiga-ui/kit 3.6.0 → 3.7.1

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.
Files changed (154) hide show
  1. package/bundles/taiga-ui-kit-components-accordion.umd.js +1 -1
  2. package/bundles/taiga-ui-kit-components-accordion.umd.js.map +1 -1
  3. package/bundles/taiga-ui-kit-components-action.umd.js +1 -1
  4. package/bundles/taiga-ui-kit-components-action.umd.js.map +1 -1
  5. package/bundles/taiga-ui-kit-components-arrow.umd.js +1 -1
  6. package/bundles/taiga-ui-kit-components-arrow.umd.js.map +1 -1
  7. package/bundles/taiga-ui-kit-components-avatar.umd.js +2 -2
  8. package/bundles/taiga-ui-kit-components-avatar.umd.js.map +1 -1
  9. package/bundles/taiga-ui-kit-components-badge.umd.js +1 -1
  10. package/bundles/taiga-ui-kit-components-badge.umd.js.map +1 -1
  11. package/bundles/taiga-ui-kit-components-carousel.umd.js +1 -1
  12. package/bundles/taiga-ui-kit-components-carousel.umd.js.map +1 -1
  13. package/bundles/taiga-ui-kit-components-files.umd.js +1 -1
  14. package/bundles/taiga-ui-kit-components-files.umd.js.map +1 -1
  15. package/bundles/taiga-ui-kit-components-input-phone-international.umd.js +1 -1
  16. package/bundles/taiga-ui-kit-components-input-phone-international.umd.js.map +1 -1
  17. package/bundles/taiga-ui-kit-components-input-tag.umd.js +1 -1
  18. package/bundles/taiga-ui-kit-components-input-tag.umd.js.map +1 -1
  19. package/bundles/taiga-ui-kit-components-line-clamp.umd.js +1 -1
  20. package/bundles/taiga-ui-kit-components-line-clamp.umd.js.map +1 -1
  21. package/bundles/taiga-ui-kit-components-marker-icon.umd.js +1 -1
  22. package/bundles/taiga-ui-kit-components-marker-icon.umd.js.map +1 -1
  23. package/bundles/taiga-ui-kit-components-multi-select-option.umd.js +1 -1
  24. package/bundles/taiga-ui-kit-components-multi-select-option.umd.js.map +1 -1
  25. package/bundles/taiga-ui-kit-components-multi-select.umd.js +7 -40
  26. package/bundles/taiga-ui-kit-components-multi-select.umd.js.map +1 -1
  27. package/bundles/taiga-ui-kit-components-pdf-viewer.umd.js +1 -1
  28. package/bundles/taiga-ui-kit-components-pdf-viewer.umd.js.map +1 -1
  29. package/bundles/taiga-ui-kit-components-progress.umd.js +3 -3
  30. package/bundles/taiga-ui-kit-components-progress.umd.js.map +1 -1
  31. package/bundles/taiga-ui-kit-components-push.umd.js.map +1 -1
  32. package/bundles/taiga-ui-kit-components-select-option.umd.js +1 -1
  33. package/bundles/taiga-ui-kit-components-select-option.umd.js.map +1 -1
  34. package/bundles/taiga-ui-kit-components-slider.umd.js.map +1 -1
  35. package/bundles/taiga-ui-kit-components-stepper.umd.js +1 -1
  36. package/bundles/taiga-ui-kit-components-stepper.umd.js.map +1 -1
  37. package/bundles/taiga-ui-kit-components-tabs.umd.js +148 -59
  38. package/bundles/taiga-ui-kit-components-tabs.umd.js.map +1 -1
  39. package/bundles/taiga-ui-kit-components-tag.umd.js +1 -1
  40. package/bundles/taiga-ui-kit-components-tag.umd.js.map +1 -1
  41. package/bundles/taiga-ui-kit-components-text-area.umd.js +1 -1
  42. package/bundles/taiga-ui-kit-components-text-area.umd.js.map +1 -1
  43. package/bundles/taiga-ui-kit-components-toggle.umd.js +1 -1
  44. package/bundles/taiga-ui-kit-components-toggle.umd.js.map +1 -1
  45. package/bundles/taiga-ui-kit-components-tree.umd.js +2 -2
  46. package/bundles/taiga-ui-kit-components-tree.umd.js.map +1 -1
  47. package/bundles/taiga-ui-kit-constants.umd.js +0 -3
  48. package/bundles/taiga-ui-kit-constants.umd.js.map +1 -1
  49. package/components/multi-select/multi-select.component.d.ts +3 -11
  50. package/components/tabs/index.d.ts +2 -0
  51. package/components/tabs/tabs/tabs.component.d.ts +9 -9
  52. package/components/tabs/tabs-vertical/tabs-vertical.component.d.ts +11 -0
  53. package/components/tabs/tabs.directive.d.ts +15 -0
  54. package/components/tabs/tabs.module.d.ts +8 -6
  55. package/components/tree/components/tree-item/tree-item.component.d.ts +1 -1
  56. package/components/tree/components/tree-item-content/tree-item-content.component.d.ts +1 -1
  57. package/components/tree/misc/tree.constants.d.ts +1 -1
  58. package/components/tree/misc/tree.tokens.d.ts +1 -1
  59. package/constants/index.d.ts +0 -1
  60. package/esm2015/components/accordion/accordion-item/accordion-item.component.js +1 -1
  61. package/esm2015/components/action/action.component.js +1 -1
  62. package/esm2015/components/arrow/arrow-options.js +3 -1
  63. package/esm2015/components/arrow/arrow.component.js +4 -2
  64. package/esm2015/components/avatar/avatar.component.js +3 -3
  65. package/esm2015/components/badge/badge.component.js +1 -1
  66. package/esm2015/components/carousel/carousel.component.js +1 -1
  67. package/esm2015/components/files/file/file.component.js +1 -1
  68. package/esm2015/components/input-phone-international/input-phone-international.component.js +2 -2
  69. package/esm2015/components/input-tag/input-tag.component.js +2 -2
  70. package/esm2015/components/line-clamp/line-clamp.component.js +1 -1
  71. package/esm2015/components/marker-icon/marker-icon.component.js +1 -1
  72. package/esm2015/components/multi-select/multi-select.component.js +5 -30
  73. package/esm2015/components/multi-select-option/multi-select-option.component.js +1 -1
  74. package/esm2015/components/pdf-viewer/pdf-viewer.component.js +2 -2
  75. package/esm2015/components/progress/progress-bar/progress-bar.component.js +1 -1
  76. package/esm2015/components/progress/progress-circle/progress-circle.component.js +1 -1
  77. package/esm2015/components/progress/progress-segmented/progress-segmented.component.js +1 -1
  78. package/esm2015/components/push/push-alert.component.js +3 -1
  79. package/esm2015/components/push/push-alert.directive.js +3 -1
  80. package/esm2015/components/push/push.service.js +3 -1
  81. package/esm2015/components/select-option/select-option.component.js +1 -1
  82. package/esm2015/components/slider/helpers/slider-key-steps.directive.js +3 -1
  83. package/esm2015/components/slider/slider.component.js +3 -1
  84. package/esm2015/components/stepper/step/step.component.js +4 -2
  85. package/esm2015/components/stepper/stepper.component.js +3 -1
  86. package/esm2015/components/tabs/index.js +3 -1
  87. package/esm2015/components/tabs/tab/tab.component.js +1 -1
  88. package/esm2015/components/tabs/tabs/tabs.component.js +29 -51
  89. package/esm2015/components/tabs/tabs-vertical/tabs-vertical.component.js +48 -0
  90. package/esm2015/components/tabs/tabs-with-more/tabs-with-more.component.js +8 -7
  91. package/esm2015/components/tabs/tabs.directive.js +60 -0
  92. package/esm2015/components/tabs/tabs.module.js +14 -4
  93. package/esm2015/components/tabs/underline/underline.component.js +1 -1
  94. package/esm2015/components/tag/tag.component.js +1 -1
  95. package/esm2015/components/text-area/text-area.component.js +1 -1
  96. package/esm2015/components/toggle/toggle.component.js +1 -1
  97. package/esm2015/components/tree/components/tree-item/tree-item.component.js +5 -2
  98. package/esm2015/components/tree/components/tree-item/tree-item.providers.js +4 -1
  99. package/esm2015/components/tree/components/tree-item-content/tree-item-content.component.js +5 -2
  100. package/esm2015/components/tree/misc/tree.constants.js +3 -1
  101. package/esm2015/components/tree/misc/tree.interfaces.js +1 -1
  102. package/esm2015/components/tree/misc/tree.tokens.js +3 -1
  103. package/esm2015/constants/index.js +1 -2
  104. package/fesm2015/taiga-ui-kit-components-accordion.js +1 -1
  105. package/fesm2015/taiga-ui-kit-components-accordion.js.map +1 -1
  106. package/fesm2015/taiga-ui-kit-components-action.js +1 -1
  107. package/fesm2015/taiga-ui-kit-components-action.js.map +1 -1
  108. package/fesm2015/taiga-ui-kit-components-arrow.js +1 -1
  109. package/fesm2015/taiga-ui-kit-components-arrow.js.map +1 -1
  110. package/fesm2015/taiga-ui-kit-components-avatar.js +2 -2
  111. package/fesm2015/taiga-ui-kit-components-avatar.js.map +1 -1
  112. package/fesm2015/taiga-ui-kit-components-badge.js +1 -1
  113. package/fesm2015/taiga-ui-kit-components-badge.js.map +1 -1
  114. package/fesm2015/taiga-ui-kit-components-carousel.js +1 -1
  115. package/fesm2015/taiga-ui-kit-components-carousel.js.map +1 -1
  116. package/fesm2015/taiga-ui-kit-components-files.js +1 -1
  117. package/fesm2015/taiga-ui-kit-components-files.js.map +1 -1
  118. package/fesm2015/taiga-ui-kit-components-input-phone-international.js +1 -1
  119. package/fesm2015/taiga-ui-kit-components-input-phone-international.js.map +1 -1
  120. package/fesm2015/taiga-ui-kit-components-input-tag.js +1 -1
  121. package/fesm2015/taiga-ui-kit-components-input-tag.js.map +1 -1
  122. package/fesm2015/taiga-ui-kit-components-line-clamp.js +1 -1
  123. package/fesm2015/taiga-ui-kit-components-line-clamp.js.map +1 -1
  124. package/fesm2015/taiga-ui-kit-components-marker-icon.js +1 -1
  125. package/fesm2015/taiga-ui-kit-components-marker-icon.js.map +1 -1
  126. package/fesm2015/taiga-ui-kit-components-multi-select-option.js +1 -1
  127. package/fesm2015/taiga-ui-kit-components-multi-select-option.js.map +1 -1
  128. package/fesm2015/taiga-ui-kit-components-multi-select.js +4 -29
  129. package/fesm2015/taiga-ui-kit-components-multi-select.js.map +1 -1
  130. package/fesm2015/taiga-ui-kit-components-pdf-viewer.js +1 -1
  131. package/fesm2015/taiga-ui-kit-components-pdf-viewer.js.map +1 -1
  132. package/fesm2015/taiga-ui-kit-components-progress.js +3 -3
  133. package/fesm2015/taiga-ui-kit-components-progress.js.map +1 -1
  134. package/fesm2015/taiga-ui-kit-components-push.js.map +1 -1
  135. package/fesm2015/taiga-ui-kit-components-select-option.js +1 -1
  136. package/fesm2015/taiga-ui-kit-components-select-option.js.map +1 -1
  137. package/fesm2015/taiga-ui-kit-components-slider.js.map +1 -1
  138. package/fesm2015/taiga-ui-kit-components-stepper.js +1 -1
  139. package/fesm2015/taiga-ui-kit-components-stepper.js.map +1 -1
  140. package/fesm2015/taiga-ui-kit-components-tabs.js +137 -55
  141. package/fesm2015/taiga-ui-kit-components-tabs.js.map +1 -1
  142. package/fesm2015/taiga-ui-kit-components-tag.js +1 -1
  143. package/fesm2015/taiga-ui-kit-components-tag.js.map +1 -1
  144. package/fesm2015/taiga-ui-kit-components-text-area.js +1 -1
  145. package/fesm2015/taiga-ui-kit-components-text-area.js.map +1 -1
  146. package/fesm2015/taiga-ui-kit-components-toggle.js +1 -1
  147. package/fesm2015/taiga-ui-kit-components-toggle.js.map +1 -1
  148. package/fesm2015/taiga-ui-kit-components-tree.js +2 -2
  149. package/fesm2015/taiga-ui-kit-components-tree.js.map +1 -1
  150. package/fesm2015/taiga-ui-kit-constants.js +1 -3
  151. package/fesm2015/taiga-ui-kit-constants.js.map +1 -1
  152. package/package.json +4 -4
  153. package/constants/icon-blank.d.ts +0 -1
  154. package/esm2015/constants/icon-blank.js +0 -2
@@ -1,9 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, ElementRef, Optional, Component, ChangeDetectionStrategy, Inject, HostBinding, NgZone, Input, HostListener, EventEmitter, Renderer2, ChangeDetectorRef, ContentChildren, forwardRef, Output, TemplateRef, ViewChild, NgModule } from '@angular/core';
2
+ import { InjectionToken, ElementRef, Optional, Component, ChangeDetectionStrategy, Inject, HostBinding, EventEmitter, Directive, Input, Output, HostListener, NgZone, ChangeDetectorRef, ContentChildren, forwardRef, TemplateRef, ViewChild, NgModule } from '@angular/core';
3
3
  import * as i2 from '@angular/router';
4
4
  import { RouterLinkActive } from '@angular/router';
5
5
  import * as i4 from '@taiga-ui/cdk';
6
- import { TuiDestroyService, TuiFocusVisibleService, tuiTypedFromEvent, tuiIsNativeFocused, tuiZonefree, tuiDefaultProp, EMPTY_QUERY, tuiMoveFocus, TuiResizeService, tuiClamp, tuiIsElement, tuiGetClosestFocusable, tuiToInt, TuiItemDirective, TuiFocusableModule, TuiItemModule } from '@taiga-ui/cdk';
6
+ import { TuiDestroyService, TuiFocusVisibleService, tuiTypedFromEvent, tuiIsNativeFocused, tuiMoveFocus, tuiDefaultProp, tuiZonefree, EMPTY_QUERY, TuiResizeService, tuiPure, tuiClamp, tuiIsElement, tuiGetClosestFocusable, tuiToInt, TuiItemDirective, TuiFocusableModule, TuiItemModule } from '@taiga-ui/cdk';
7
7
  import * as i2$1 from '@taiga-ui/core';
8
8
  import { TuiRouterLinkActiveService, MODE_PROVIDER, TUI_MODE, TuiHostedDropdownModule, TuiSvgModule } from '@taiga-ui/core';
9
9
  import { TUI_TAB_MARGIN, TUI_MORE_WORD } from '@taiga-ui/kit/tokens';
@@ -13,9 +13,9 @@ import { EMPTY, merge, identity, ReplaySubject, of } from 'rxjs';
13
13
  import { filter, map, switchMap, mapTo, share, debounceTime, tap, startWith, takeUntil } from 'rxjs/operators';
14
14
  import * as i5 from '@angular/common';
15
15
  import { DOCUMENT, CommonModule } from '@angular/common';
16
- import * as i7 from '@tinkoff/ng-polymorpheus';
17
- import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
18
16
  import { __decorate } from 'tslib';
17
+ import * as i8 from '@tinkoff/ng-polymorpheus';
18
+ import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
19
19
  import { ANIMATION_FRAME } from '@ng-web-apis/common';
20
20
  import { asCallable } from '@tinkoff/ng-event-plugins';
21
21
 
@@ -67,7 +67,7 @@ class TuiTabComponent {
67
67
  }
68
68
  }
69
69
  TuiTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiTabComponent, deps: [{ token: RouterLinkActive, optional: true }, { token: ElementRef }, { token: TUI_MODE }, { token: TUI_TAB_EVENT }, { token: TUI_TAB_MARGIN }, { token: TuiFocusVisibleService }], target: i0.ɵɵFactoryTarget.Component });
70
- TuiTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TuiTabComponent, selector: "a[tuiTab]:not([routerLink]), a[tuiTab][routerLink][routerLinkActive], button[tuiTab]", host: { attributes: { "type": "button" }, listeners: { "$.data-mode.attr": "mode$" }, properties: { "style.--tui-tab-margin.px": "margin", "class._focus-visible": "this.focusVisible", "class._active": "this.isActive" } }, providers: TUI_TAB_PROVIDERS, ngImport: i0, template: "<ng-container *ngIf=\"event$ | async\"></ng-container>\n<span class=\"t-highlight\"><ng-content></ng-content></span>\n", styles: [":host-context(._underline):hover{box-shadow:inset 0 -2px var(--tui-base-03)}:host-context(tui-tabs >):first-child,:host-context([tuiTabs] >):first-child,:host-context(tui-tabs > :first-child),:host-context([tuiTabs] > :first-child){margin-left:0}:host{transition-property:all;transition-duration:.3s;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;border:0;background:none;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:none;text-decoration:none;color:inherit;transition-property:color,box-shadow,opacity;margin-left:1.5rem;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]:hover,:host[data-mode=onDark]._active{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]:hover,:host[data-mode=onLight]._active{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:.3s;transition-duration:var(--tui-duration, .3s);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}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i5.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
70
+ TuiTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TuiTabComponent, selector: "a[tuiTab]:not([routerLink]), a[tuiTab][routerLink][routerLinkActive], button[tuiTab]", host: { attributes: { "type": "button" }, listeners: { "$.data-mode.attr": "mode$" }, properties: { "style.--tui-tab-margin.px": "margin", "class._focus-visible": "this.focusVisible", "class._active": "this.isActive" } }, providers: TUI_TAB_PROVIDERS, ngImport: i0, template: "<ng-container *ngIf=\"event$ | async\"></ng-container>\n<span class=\"t-highlight\"><ng-content></ng-content></span>\n", styles: [":host-context(._underline):hover{box-shadow:inset 0 -2px var(--tui-base-03)}:host-context(tui-tabs >):first-child,:host-context([tuiTabs] >):first-child,:host-context(tui-tabs > :first-child),:host-context([tuiTabs] > :first-child){margin-left:0}:host{transition-property:all;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;border:0;background:none;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:none;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]:hover,:host[data-mode=onDark]._active{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]:hover,:host[data-mode=onLight]._active{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, .3s);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}:host-context(tui-tabs[data-vertical]),:host-context([tuiTabs][data-vertical]){min-height:2.75rem;height:auto;white-space:normal;margin:0;text-align:left;padding:.25rem 1.25rem .25rem 0}:host-context(tui-tabs[data-vertical]):after,:host-context([tuiTabs][data-vertical]):after{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;content:\"\";position:absolute;top:0;bottom:0;right:0;width:2px;background:var(--tui-primary);transform:scaleX(0);transform-origin:right}:host-context(tui-tabs[data-vertical]):hover,:host-context([tuiTabs][data-vertical]):hover{box-shadow:inset -2px 0 var(--tui-base-03)}:host-context(tui-tabs[data-vertical])._active:after,:host-context([tuiTabs][data-vertical])._active:after{transform:none}:host-context(tui-tabs[data-vertical=\"right\"]),:host-context([tuiTabs][data-vertical=\"right\"]){text-align:right;padding:.25rem 0 .25rem 1.25rem}:host-context(tui-tabs[data-vertical=\"right\"]):after,:host-context([tuiTabs][data-vertical=\"right\"]):after{right:auto;left:0;transform-origin:left}:host-context(tui-tabs[data-vertical=\"right\"]):hover,:host-context([tuiTabs][data-vertical=\"right\"]):hover{box-shadow:inset 2px 0 var(--tui-base-03)}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i5.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
71
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiTabComponent, decorators: [{
72
72
  type: Component,
73
73
  args: [{
@@ -110,6 +110,61 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
110
110
  args: [`class._active`]
111
111
  }] } });
112
112
 
113
+ class TuiTabsDirective {
114
+ constructor(elementRef) {
115
+ this.elementRef = elementRef;
116
+ this.activeItemIndex = 0;
117
+ this.activeItemIndexChange = new EventEmitter();
118
+ }
119
+ get tabs() {
120
+ return Array.from(this.elementRef.nativeElement.querySelectorAll(`[tuiTab]`));
121
+ }
122
+ get activeElement() {
123
+ return this.tabs[this.activeItemIndex] || null;
124
+ }
125
+ onActivate(element) {
126
+ const index = this.tabs.findIndex(tab => tab === element);
127
+ if (index === this.activeItemIndex) {
128
+ return;
129
+ }
130
+ this.activeItemIndexChange.emit(index);
131
+ this.activeItemIndex = index;
132
+ }
133
+ moveFocus(current, step) {
134
+ const { tabs } = this;
135
+ tuiMoveFocus(tabs.indexOf(current), tabs, step);
136
+ }
137
+ ngAfterViewChecked() {
138
+ const { tabs, activeElement } = this;
139
+ tabs.forEach(nativeElement => {
140
+ const active = nativeElement === activeElement;
141
+ nativeElement.classList.toggle(`_active`, active);
142
+ nativeElement.setAttribute(`tabIndex`, active ? `0` : `-1`);
143
+ });
144
+ }
145
+ }
146
+ TuiTabsDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiTabsDirective, deps: [{ token: ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
147
+ TuiTabsDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: TuiTabsDirective, selector: "tui-tabs, nav[tuiTabs]", inputs: { activeItemIndex: "activeItemIndex" }, outputs: { activeItemIndexChange: "activeItemIndexChange" }, host: { listeners: { "tui-tab-activate.stop": "onActivate($event.target)" } }, ngImport: i0 });
148
+ __decorate([
149
+ tuiDefaultProp()
150
+ ], TuiTabsDirective.prototype, "activeItemIndex", void 0);
151
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiTabsDirective, decorators: [{
152
+ type: Directive,
153
+ args: [{
154
+ selector: `tui-tabs, nav[tuiTabs]`,
155
+ }]
156
+ }], ctorParameters: function () { return [{ type: i0.ElementRef, decorators: [{
157
+ type: Inject,
158
+ args: [ElementRef]
159
+ }] }]; }, propDecorators: { activeItemIndex: [{
160
+ type: Input
161
+ }], activeItemIndexChange: [{
162
+ type: Output
163
+ }], onActivate: [{
164
+ type: HostListener,
165
+ args: [`${TUI_TAB_ACTIVATE}.stop`, [`$event.target`]]
166
+ }] } });
167
+
113
168
  const TUI_TABS_DEFAULT_OPTIONS = {
114
169
  underline: true,
115
170
  exposeActive: true,
@@ -144,7 +199,7 @@ class TuiUnderlineComponent {
144
199
  }
145
200
  }
146
201
  TuiUnderlineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiUnderlineComponent, deps: [{ token: ElementRef }, { token: NgZone }, { token: ANIMATION_FRAME }, { token: TUI_MODE }], target: i0.ɵɵFactoryTarget.Component });
147
- TuiUnderlineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TuiUnderlineComponent, selector: "tui-underline", inputs: { element: "element" }, host: { listeners: { "$.data-mode.attr": "mode$", "$.style.transitionProperty": "transition$()", "$.style.transform": "transform$()", "$.style.width.px": "width$()" } }, providers: [MODE_PROVIDER], ngImport: i0, template: ``, isInline: true, styles: [":host{transition-property:all;transition-duration:.3s;transition-duration:var(--tui-duration, .3s);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[data-mode=onDark]{color:var(--tui-text-01-night)}:host[data-mode=onLight]{color:var(--tui-text-02)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
202
+ TuiUnderlineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TuiUnderlineComponent, selector: "tui-underline", inputs: { element: "element" }, host: { listeners: { "$.data-mode.attr": "mode$", "$.style.transitionProperty": "transition$()", "$.style.transform": "transform$()", "$.style.width.px": "width$()" } }, providers: [MODE_PROVIDER], ngImport: i0, template: ``, isInline: true, styles: [":host{transition-property:all;transition-duration:var(--tui-duration, .3s);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[data-mode=onDark]{color:var(--tui-text-01-night)}:host[data-mode=onLight]{color:var(--tui-text-02)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
148
203
  __decorate([
149
204
  tuiDefaultProp()
150
205
  ], TuiUnderlineComponent.prototype, "element", null);
@@ -185,54 +240,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
185
240
  args: [`$.style.width.px`]
186
241
  }] } });
187
242
 
188
- const TAB_ACTIVE_CLASS = `_active`;
189
243
  class TuiTabsComponent {
190
- constructor(options, elementRef, renderer, changeDetectorRef, resize$) {
244
+ constructor(options, elementRef, tabs, changeDetectorRef, resize$) {
191
245
  this.options = options;
192
246
  this.elementRef = elementRef;
193
- this.renderer = renderer;
247
+ this.tabs = tabs;
194
248
  this.children = EMPTY_QUERY;
195
249
  this.underline = this.options.underline;
196
- this.activeItemIndexChange = new EventEmitter();
197
- this.activeItemIndex = 0;
198
250
  resize$.pipe(filter(() => this.underline)).subscribe(() => {
199
251
  changeDetectorRef.detectChanges();
200
252
  });
201
253
  }
202
- set activeItemIndexSetter(index) {
203
- this.activeItemIndex = index;
204
- this.scrollTo(this.tabs[index]);
254
+ /** @deprecated use `activeItemIndex` from {@link TuiTabsDirective} instead */
255
+ get activeItemIndex() {
256
+ return this.tabs.activeItemIndex;
205
257
  }
206
- get tabs() {
207
- return Array.from(this.elementRef.nativeElement.querySelectorAll(`[tuiTab]`));
258
+ /** @deprecated use `activeItemIndex` from {@link TuiTabsDirective} instead */
259
+ set activeItemIndex(index) {
260
+ this.tabs.activeItemIndex = index;
208
261
  }
209
262
  get activeElement() {
210
- return this.tabs[this.activeItemIndex] || null;
211
- }
212
- onActivate(element) {
213
- const index = this.tabs.findIndex(tab => tab === element);
214
- if (index === this.activeItemIndex) {
215
- return;
216
- }
217
- this.activeItemIndexSetter = index;
218
- this.activeItemIndexChange.emit(index);
263
+ return this.tabs.activeElement;
219
264
  }
220
265
  onKeyDownArrow(current, step) {
221
- const { tabs } = this;
222
- tuiMoveFocus(tabs.indexOf(current), tabs, step);
266
+ this.tabs.moveFocus(current, step);
223
267
  }
224
268
  ngAfterViewChecked() {
225
- const { tabs, activeElement } = this;
226
- tabs.forEach(nativeElement => {
227
- this.renderer.removeClass(nativeElement, TAB_ACTIVE_CLASS);
228
- this.renderer.setAttribute(nativeElement, `tabIndex`, `-1`);
229
- });
230
- if (activeElement) {
231
- this.renderer.addClass(activeElement, TAB_ACTIVE_CLASS);
232
- this.renderer.setAttribute(activeElement, `tabIndex`, `0`);
233
- }
269
+ this.scrollTo(this.tabs.activeItemIndex);
234
270
  }
235
- scrollTo(element) {
271
+ scrollTo(index) {
272
+ const element = this.tabs.tabs[index];
236
273
  if (!element) {
237
274
  return;
238
275
  }
@@ -248,8 +285,8 @@ class TuiTabsComponent {
248
285
  }
249
286
  }
250
287
  }
251
- TuiTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiTabsComponent, deps: [{ token: TUI_TABS_OPTIONS }, { token: ElementRef }, { token: Renderer2 }, { token: ChangeDetectorRef }, { token: TuiResizeService }], target: i0.ɵɵFactoryTarget.Component });
252
- TuiTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TuiTabsComponent, selector: "tui-tabs, nav[tuiTabs]", inputs: { underline: "underline", activeItemIndexSetter: ["activeItemIndex", "activeItemIndexSetter"] }, outputs: { activeItemIndexChange: "activeItemIndexChange" }, host: { listeners: { "tui-tab-activate.stop": "onActivate($event.target)", "keydown.arrowRight.prevent": "onKeyDownArrow($event.target,1)", "keydown.arrowLeft.prevent": "onKeyDownArrow($event.target,-1)" }, properties: { "class._underline": "this.underline" } }, providers: [
288
+ TuiTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiTabsComponent, deps: [{ token: TUI_TABS_OPTIONS }, { token: ElementRef }, { token: TuiTabsDirective }, { token: ChangeDetectorRef }, { token: TuiResizeService }], target: i0.ɵɵFactoryTarget.Component });
289
+ TuiTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TuiTabsComponent, selector: "tui-tabs:not([vertical]), nav[tuiTabs]:not([vertical])", inputs: { underline: "underline" }, host: { listeners: { "keydown.arrowRight.prevent": "onKeyDownArrow($event.target,1)", "keydown.arrowLeft.prevent": "onKeyDownArrow($event.target,-1)" }, properties: { "class._underline": "this.underline" } }, providers: [
253
290
  TuiDestroyService,
254
291
  TuiResizeService,
255
292
  MutationObserverService,
@@ -263,10 +300,13 @@ TuiTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versi
263
300
  __decorate([
264
301
  tuiDefaultProp()
265
302
  ], TuiTabsComponent.prototype, "underline", void 0);
303
+ __decorate([
304
+ tuiPure
305
+ ], TuiTabsComponent.prototype, "scrollTo", null);
266
306
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiTabsComponent, decorators: [{
267
307
  type: Component,
268
308
  args: [{
269
- selector: `tui-tabs, nav[tuiTabs]`,
309
+ selector: `tui-tabs:not([vertical]), nav[tuiTabs]:not([vertical])`,
270
310
  templateUrl: `./tabs.template.html`,
271
311
  styleUrls: [`./tabs.style.less`],
272
312
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -288,9 +328,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
288
328
  }] }, { type: i0.ElementRef, decorators: [{
289
329
  type: Inject,
290
330
  args: [ElementRef]
291
- }] }, { type: i0.Renderer2, decorators: [{
331
+ }] }, { type: TuiTabsDirective, decorators: [{
292
332
  type: Inject,
293
- args: [Renderer2]
333
+ args: [TuiTabsDirective]
294
334
  }] }, { type: i0.ChangeDetectorRef, decorators: [{
295
335
  type: Inject,
296
336
  args: [ChangeDetectorRef]
@@ -305,20 +345,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
305
345
  }, {
306
346
  type: HostBinding,
307
347
  args: [`class._underline`]
308
- }], activeItemIndexSetter: [{
309
- type: Input,
310
- args: [`activeItemIndex`]
311
- }], activeItemIndexChange: [{
312
- type: Output
313
- }], onActivate: [{
314
- type: HostListener,
315
- args: [`${TUI_TAB_ACTIVATE}.stop`, [`$event.target`]]
316
348
  }], onKeyDownArrow: [{
317
349
  type: HostListener,
318
350
  args: [`keydown.arrowRight.prevent`, [`$event.target`, `1`]]
319
351
  }, {
320
352
  type: HostListener,
321
353
  args: [`keydown.arrowLeft.prevent`, [`$event.target`, `-1`]]
354
+ }], scrollTo: [] } });
355
+
356
+ class TuiTabsVerticalComponent {
357
+ constructor(tabs) {
358
+ this.tabs = tabs;
359
+ this.vertical = `left`;
360
+ }
361
+ onKeyDownArrow(current, step) {
362
+ this.tabs.moveFocus(current, step);
363
+ }
364
+ }
365
+ TuiTabsVerticalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiTabsVerticalComponent, deps: [{ token: TuiTabsDirective }], target: i0.ɵɵFactoryTarget.Component });
366
+ TuiTabsVerticalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TuiTabsVerticalComponent, selector: "tui-tabs[vertical], nav[tuiTabs][vertical]", inputs: { vertical: "vertical" }, host: { listeners: { "keydown.arrowDown.prevent": "onKeyDownArrow($event.target,1)", "keydown.arrowUp.prevent": "onKeyDownArrow($event.target,-1)" }, properties: { "attr.data-vertical": "this.vertical" } }, ngImport: i0, template: `
367
+ <ng-content></ng-content>
368
+ `, isInline: true, styles: [":host{display:flex;flex-direction:column;font:var(--tui-font-text-m);color:var(--tui-text-02);box-shadow:inset -1px 0 var(--tui-base-03)}:host[data-vertical=right]{box-shadow:inset 1px 0 var(--tui-base-03)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
369
+ __decorate([
370
+ tuiDefaultProp()
371
+ ], TuiTabsVerticalComponent.prototype, "vertical", void 0);
372
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiTabsVerticalComponent, decorators: [{
373
+ type: Component,
374
+ args: [{
375
+ selector: `tui-tabs[vertical], nav[tuiTabs][vertical]`,
376
+ template: `
377
+ <ng-content></ng-content>
378
+ `,
379
+ styleUrls: [`./tabs-vertical.style.less`],
380
+ changeDetection: ChangeDetectionStrategy.OnPush,
381
+ }]
382
+ }], ctorParameters: function () { return [{ type: TuiTabsDirective, decorators: [{
383
+ type: Inject,
384
+ args: [TuiTabsDirective]
385
+ }] }]; }, propDecorators: { vertical: [{
386
+ type: Input
387
+ }, {
388
+ type: HostBinding,
389
+ args: [`attr.data-vertical`]
390
+ }], onKeyDownArrow: [{
391
+ type: HostListener,
392
+ args: [`keydown.arrowDown.prevent`, [`$event.target`, `1`]]
393
+ }, {
394
+ type: HostListener,
395
+ args: [`keydown.arrowUp.prevent`, [`$event.target`, `-1`]]
322
396
  }] } });
323
397
 
324
398
  const TUI_TABS_REFRESH = new InjectionToken(`[TUI_TABS_REFRESH]: Refresh stream`);
@@ -493,7 +567,7 @@ class TuiTabsWithMoreComponent {
493
567
  }
494
568
  }
495
569
  TuiTabsWithMoreComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiTabsWithMoreComponent, deps: [{ token: TUI_TABS_OPTIONS }, { token: TUI_TAB_MARGIN }, { token: TUI_TABS_REFRESH }, { token: ElementRef }, { token: ChangeDetectorRef }, { token: TUI_MORE_WORD }], target: i0.ɵɵFactoryTarget.Component });
496
- TuiTabsWithMoreComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TuiTabsWithMoreComponent, selector: "tui-tabs-with-more, nav[tuiTabsWithMore]", inputs: { moreContent: "moreContent", dropdownContent: "dropdownContent", underline: "underline", activeItemIndex: "activeItemIndex", itemsLimit: "itemsLimit" }, outputs: { activeItemIndexChange: "activeItemIndexChange" }, host: { properties: { "class._underline": "this.underline" } }, providers: TUI_TABS_PROVIDERS, queries: [{ propertyName: "items", predicate: TuiItemDirective, read: TemplateRef }], viewQueries: [{ propertyName: "moreButton", first: true, predicate: TuiTabComponent, descendants: true, read: ElementRef }], ngImport: i0, 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 <ng-container *polymorpheusOutlet=\"moreContent || more as text\">\n {{ text }}\n </ng-container>\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", 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:.3s;transition-duration:var(--tui-duration, .3s);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]:hover,.t-dropdown ::ng-deep *[tuiTab]:focus,.t-dropdown ::ng-deep *[tuiTab]._active{box-shadow:none;color:var(--tui-base-08);background:var(--tui-base-02)}.t-no-margin{margin-left:0}\n"], components: [{ type: TuiTabsComponent, selector: "tui-tabs, nav[tuiTabs]", inputs: ["underline", "activeItemIndex"], outputs: ["activeItemIndexChange"] }, { type: i2$1.TuiHostedDropdownComponent, selector: "tui-hosted-dropdown", inputs: ["content", "canOpen", "open"], outputs: ["openChange", "focusedChange"] }, { type: TuiTabComponent, selector: "a[tuiTab]:not([routerLink]), a[tuiTab][routerLink][routerLinkActive], button[tuiTab]" }, { type: i2$1.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { type: TuiUnderlineComponent, selector: "tui-underline", inputs: ["element"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.TuiFocusableDirective, selector: "[tuiFocusable]", inputs: ["tuiFocusable"] }, { type: i7.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], pipes: { "async": i5.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
570
+ TuiTabsWithMoreComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: TuiTabsWithMoreComponent, selector: "tui-tabs-with-more, nav[tuiTabsWithMore]", inputs: { moreContent: "moreContent", dropdownContent: "dropdownContent", underline: "underline", activeItemIndex: "activeItemIndex", itemsLimit: "itemsLimit" }, outputs: { activeItemIndexChange: "activeItemIndexChange" }, host: { properties: { "class._underline": "this.underline" } }, providers: TUI_TABS_PROVIDERS, queries: [{ propertyName: "items", predicate: TuiItemDirective, read: TemplateRef }], viewQueries: [{ propertyName: "moreButton", first: true, predicate: TuiTabComponent, descendants: true, read: ElementRef }], ngImport: i0, 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 <ng-container *polymorpheusOutlet=\"moreContent || more as text\">\n {{ text }}\n </ng-container>\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", 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, .3s);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]:hover,.t-dropdown ::ng-deep *[tuiTab]:focus,.t-dropdown ::ng-deep *[tuiTab]._active{box-shadow:none;color:var(--tui-base-08);background:var(--tui-base-02)}.t-no-margin{margin-left:0}\n"], components: [{ type: TuiTabsComponent, selector: "tui-tabs:not([vertical]), nav[tuiTabs]:not([vertical])", inputs: ["underline"] }, { type: i2$1.TuiHostedDropdownComponent, selector: "tui-hosted-dropdown", inputs: ["content", "canOpen", "open"], outputs: ["openChange", "focusedChange"] }, { type: TuiTabComponent, selector: "a[tuiTab]:not([routerLink]), a[tuiTab][routerLink][routerLinkActive], button[tuiTab]" }, { type: i2$1.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { type: TuiUnderlineComponent, selector: "tui-underline", inputs: ["element"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: TuiTabsDirective, selector: "tui-tabs, nav[tuiTabs]", inputs: ["activeItemIndex"], outputs: ["activeItemIndexChange"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.TuiFocusableDirective, selector: "[tuiFocusable]", inputs: ["tuiFocusable"] }, { type: i8.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], pipes: { "async": i5.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
497
571
  __decorate([
498
572
  tuiDefaultProp()
499
573
  ], TuiTabsWithMoreComponent.prototype, "moreContent", void 0);
@@ -564,22 +638,26 @@ class TuiTabsModule {
564
638
  TuiTabsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiTabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
565
639
  TuiTabsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiTabsModule, declarations: [TuiTabsWithMoreComponent,
566
640
  TuiTabsComponent,
641
+ TuiTabsDirective,
642
+ TuiTabsVerticalComponent,
567
643
  TuiTabComponent,
568
644
  TuiUnderlineComponent], imports: [CommonModule,
645
+ PolymorpheusModule,
569
646
  TuiHostedDropdownModule,
570
647
  TuiSvgModule,
571
648
  TuiFocusableModule,
572
- PolymorpheusModule,
573
649
  TuiItemModule], exports: [TuiTabsWithMoreComponent,
574
650
  TuiTabsComponent,
651
+ TuiTabsDirective,
652
+ TuiTabsVerticalComponent,
575
653
  TuiTabComponent,
576
654
  TuiItemDirective] });
577
655
  TuiTabsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiTabsModule, imports: [[
578
656
  CommonModule,
657
+ PolymorpheusModule,
579
658
  TuiHostedDropdownModule,
580
659
  TuiSvgModule,
581
660
  TuiFocusableModule,
582
- PolymorpheusModule,
583
661
  TuiItemModule,
584
662
  ]] });
585
663
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: TuiTabsModule, decorators: [{
@@ -587,21 +665,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
587
665
  args: [{
588
666
  imports: [
589
667
  CommonModule,
668
+ PolymorpheusModule,
590
669
  TuiHostedDropdownModule,
591
670
  TuiSvgModule,
592
671
  TuiFocusableModule,
593
- PolymorpheusModule,
594
672
  TuiItemModule,
595
673
  ],
596
674
  declarations: [
597
675
  TuiTabsWithMoreComponent,
598
676
  TuiTabsComponent,
677
+ TuiTabsDirective,
678
+ TuiTabsVerticalComponent,
599
679
  TuiTabComponent,
600
680
  TuiUnderlineComponent,
601
681
  ],
602
682
  exports: [
603
683
  TuiTabsWithMoreComponent,
604
684
  TuiTabsComponent,
685
+ TuiTabsDirective,
686
+ TuiTabsVerticalComponent,
605
687
  TuiTabComponent,
606
688
  TuiItemDirective,
607
689
  ],
@@ -612,5 +694,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
612
694
  * Generated bundle index. Do not edit.
613
695
  */
614
696
 
615
- export { TUI_TABS_DEFAULT_OPTIONS, TUI_TABS_OPTIONS, TUI_TABS_PROVIDERS, TUI_TABS_REFRESH, TUI_TAB_ACTIVATE, TUI_TAB_EVENT, TUI_TAB_PROVIDERS, TuiTabComponent, TuiTabsComponent, TuiTabsModule, TuiTabsWithMoreComponent, TuiUnderlineComponent, tuiTabsOptionsProvider };
697
+ export { TUI_TABS_DEFAULT_OPTIONS, TUI_TABS_OPTIONS, TUI_TABS_PROVIDERS, TUI_TABS_REFRESH, TUI_TAB_ACTIVATE, TUI_TAB_EVENT, TUI_TAB_PROVIDERS, TuiTabComponent, TuiTabsComponent, TuiTabsDirective, TuiTabsModule, TuiTabsVerticalComponent, TuiTabsWithMoreComponent, TuiUnderlineComponent, tuiTabsOptionsProvider };
616
698
  //# sourceMappingURL=taiga-ui-kit-components-tabs.js.map