@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.
Files changed (23) hide show
  1. package/bundles/taiga-ui-kit-components-input-count.umd.js +22 -2
  2. package/bundles/taiga-ui-kit-components-input-count.umd.js.map +1 -1
  3. package/bundles/taiga-ui-kit-components-input-count.umd.min.js +1 -1
  4. package/bundles/taiga-ui-kit-components-input-count.umd.min.js.map +1 -1
  5. package/bundles/taiga-ui-kit-components-tabs.umd.js +0 -3
  6. package/bundles/taiga-ui-kit-components-tabs.umd.js.map +1 -1
  7. package/bundles/taiga-ui-kit-components-tabs.umd.min.js +1 -1
  8. package/bundles/taiga-ui-kit-components-tabs.umd.min.js.map +1 -1
  9. package/components/input-count/input-count.component.d.ts +2 -0
  10. package/components/input-count/taiga-ui-kit-components-input-count.metadata.json +1 -1
  11. package/esm2015/components/input-count/input-count.component.js +20 -4
  12. package/esm2015/components/tabs/tabs-with-more/tabs-with-more.component.js +1 -4
  13. package/esm5/components/input-count/input-count.component.js +24 -4
  14. package/esm5/components/tabs/tabs-with-more/tabs-with-more.component.js +1 -4
  15. package/fesm2015/taiga-ui-kit-components-input-count.js +19 -3
  16. package/fesm2015/taiga-ui-kit-components-input-count.js.map +1 -1
  17. package/fesm2015/taiga-ui-kit-components-tabs.js +0 -3
  18. package/fesm2015/taiga-ui-kit-components-tabs.js.map +1 -1
  19. package/fesm5/taiga-ui-kit-components-input-count.js +23 -3
  20. package/fesm5/taiga-ui-kit-components-input-count.js.map +1 -1
  21. package/fesm5/taiga-ui-kit-components-tabs.js +0 -3
  22. package/fesm5/taiga-ui-kit-components-tabs.js.map +1 -1
  23. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-count.js","sources":["ng://@taiga-ui/kit/components/input-count/input-count-options.ts","ng://@taiga-ui/kit/components/input-count/input-count.component.ts","ng://@taiga-ui/kit/components/input-count/input-count.directive.ts","ng://@taiga-ui/kit/components/input-count/input-count.module.ts","ng://@taiga-ui/kit/components/input-count/taiga-ui-kit-components-input-count.ts"],"sourcesContent":["import {InjectionToken, ValueProvider} from '@angular/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nexport interface TuiInputCountOptions {\n readonly icons: Readonly<{\n up: PolymorpheusContent<Record<string, unknown>>;\n down: PolymorpheusContent<Record<string, unknown>>;\n }>;\n readonly appearance: string;\n readonly hideButtons: boolean;\n readonly min: number;\n readonly max: number;\n readonly step: number;\n readonly postfix: string;\n}\n\n/**\n * @deprecated: use TuiInputCountOptions instead\n * todo: remove in 3.0\n */\nexport type InputCountOptions = TuiInputCountOptions;\n\n// TODO: 3.0 remove in ivy compilation\nexport const PASSWORD_ICON_UP = `tuiIconPlus`;\nexport const PASSWORD_ICON_DOWN = `tuiIconMinus`;\n\n/** Default values for the input count options. */\nexport const TUI_INPUT_COUNT_DEFAULT_OPTIONS: TuiInputCountOptions = {\n icons: {\n up: PASSWORD_ICON_UP,\n down: PASSWORD_ICON_DOWN,\n },\n appearance: `textfield`,\n hideButtons: false,\n min: 0,\n max: Infinity,\n step: 1,\n postfix: ``,\n};\n\nexport const TUI_INPUT_COUNT_OPTIONS = new InjectionToken<TuiInputCountOptions>(\n `Default parameters for input count component`,\n {\n factory: () => TUI_INPUT_COUNT_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiInputCountOptionsProvider: (\n options: Partial<TuiInputCountOptions>,\n) => ValueProvider = (options: Partial<TuiInputCountOptions>) => ({\n provide: TUI_INPUT_COUNT_OPTIONS,\n useValue: {...TUI_INPUT_COUNT_DEFAULT_OPTIONS, ...options},\n});\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiControl,\n AbstractTuiNullableControl,\n clamp,\n isNativeFocused,\n isPresent,\n setNativeFocused,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TUI_IS_MOBILE,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {\n formatNumber,\n TUI_NUMBER_FORMAT,\n TUI_TEXTFIELD_APPEARANCE,\n TUI_TEXTFIELD_SIZE,\n tuiCreateNumberMask,\n TuiNumberFormatSettings,\n TuiPrimitiveTextfieldComponent,\n TuiSizeL,\n TuiSizeS,\n TuiTextfieldSizeDirective,\n TuiTextMaskOptions,\n TuiWithOptionalMinMax,\n} from '@taiga-ui/core';\nimport {TUI_PLUS_MINUS_TEXTS} from '@taiga-ui/kit/tokens';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {TextMaskConfig} from 'angular2-text-mask';\nimport {Observable} from 'rxjs';\n\nimport {TUI_INPUT_COUNT_OPTIONS, TuiInputCountOptions} from './input-count-options';\n\n// @dynamic\n@Component({\n selector: 'tui-input-count',\n templateUrl: './input-count.template.html',\n styleUrls: ['./input-count.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiInputCountComponent),\n },\n {\n provide: AbstractTuiControl,\n useExisting: forwardRef(() => TuiInputCountComponent),\n },\n ],\n})\nexport class TuiInputCountComponent\n extends AbstractTuiNullableControl<number>\n implements TuiWithOptionalMinMax<number>, TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly primitiveTextfield?: TuiPrimitiveTextfieldComponent;\n\n @Input()\n @tuiDefaultProp()\n step = this.options.step;\n\n @Input()\n @tuiDefaultProp()\n min = this.options.min;\n\n @Input()\n @tuiDefaultProp()\n max = this.options.max;\n\n @Input()\n @tuiDefaultProp()\n hideButtons = this.options.hideButtons;\n\n @Input()\n @tuiDefaultProp()\n prefix = '';\n\n @Input()\n @tuiDefaultProp()\n postfix = this.options.postfix;\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_TEXTFIELD_APPEARANCE)\n private readonly appearance: string,\n @Inject(TUI_TEXTFIELD_SIZE)\n private readonly textfieldSize: TuiTextfieldSizeDirective,\n @Inject(TUI_PLUS_MINUS_TEXTS)\n readonly minusTexts$: Observable<[string, string]>,\n @Inject(TUI_IS_MOBILE) private readonly isMobile: boolean,\n @Inject(TUI_INPUT_COUNT_OPTIONS)\n readonly options: TuiInputCountOptions,\n @Inject(TUI_NUMBER_FORMAT)\n private readonly numberFormat: TuiNumberFormatSettings,\n ) {\n super(control, changeDetectorRef);\n }\n\n @tuiPure\n getMask(allowNegative: boolean): TextMaskConfig {\n return {\n mask: tuiCreateNumberMask({\n allowNegative,\n decimalSymbol: this.numberFormat.decimalSeparator,\n thousandSymbol: this.numberFormat.thousandSeparator,\n }),\n guide: false,\n } as TuiTextMaskOptions as unknown as TextMaskConfig;\n }\n\n // TODO: 3.0 Remove in v.3\n @HostBinding('class._hide-buttons')\n get buttonsHidden(): boolean {\n return this.hideButtons || this.appearance === 'table';\n }\n\n get iconUp(): PolymorpheusContent<Record<string, unknown>> {\n return this.options.icons.up;\n }\n\n get iconDown(): PolymorpheusContent<Record<string, unknown>> {\n return this.options.icons.down;\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n return !this.primitiveTextfield || this.computedDisabled\n ? null\n : this.primitiveTextfield.nativeFocusableElement;\n }\n\n @HostBinding('attr.data-size')\n get size(): TuiSizeL | TuiSizeS {\n return this.textfieldSize.size;\n }\n\n get focused(): boolean {\n return isNativeFocused(this.nativeFocusableElement);\n }\n\n get exampleText(): string {\n return String(this.min);\n }\n\n get computedValue(): string {\n return this.focused ? this.nativeValue : this.formatNumber(this.value);\n }\n\n get minusButtonDisabled(): boolean {\n return !this.interactive || (isPresent(this.value) && this.value <= this.min);\n }\n\n get plusButtonDisabled(): boolean {\n return !this.interactive || (isPresent(this.value) && this.value >= this.max);\n }\n\n onButtonMouseDown(event: MouseEvent, disabled: boolean = false): void {\n if (disabled || !this.nativeFocusableElement || this.isMobile) {\n return;\n }\n\n event.preventDefault();\n setNativeFocused(this.nativeFocusableElement);\n }\n\n onFocused(focused: boolean): void {\n if (!focused) {\n this.onBlur();\n }\n\n this.updateFocused(focused);\n }\n\n onHovered(hovered: boolean): void {\n this.updateHovered(hovered);\n }\n\n onPressed(pressed: boolean): void {\n this.updatePressed(pressed);\n }\n\n onValueChange(): void {\n const capped = this.capValue(this.nativeNumberValue);\n\n if (this.isNotNumber(capped)) {\n this.updateValue(null);\n\n return;\n }\n\n const newValue = this.formatNumber(capped);\n\n if (this.nativeValue !== newValue) {\n this.nativeValue = newValue;\n }\n\n this.updateValue(capped);\n }\n\n decreaseValue(): void {\n if (this.readOnly) {\n return;\n }\n\n const newValue = (this.value || 0) - this.step;\n\n this.safeUpdateValue(newValue);\n }\n\n increaseValue(): void {\n if (this.readOnly) {\n return;\n }\n\n const newValue = (this.value || 0) + this.step;\n\n this.safeUpdateValue(newValue);\n }\n\n onKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowUp':\n case 'Up':\n this.increaseValue();\n event.preventDefault();\n break;\n case 'ArrowDown':\n case 'Down':\n this.decreaseValue();\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n\n private get nativeNumberValue(): number {\n return parseInt(\n this.nativeValue.split(this.numberFormat.thousandSeparator).join(''),\n 10,\n );\n }\n\n private get nativeValue(): string {\n return this.nativeFocusableElement ? this.nativeFocusableElement.value : '';\n }\n\n private set nativeValue(value: string) {\n if (!this.nativeFocusableElement) {\n return;\n }\n\n this.nativeFocusableElement.value = value;\n }\n\n private safeUpdateValue(newValue: number): void {\n const value = clamp(newValue, this.min, this.max);\n\n this.updateValue(value);\n this.nativeValue = this.formatNumber(value);\n }\n\n private capValue(value: number): number | null {\n const capped = Math.min(value, this.max);\n\n return Number.isNaN(capped) || capped < this.min ? null : capped;\n }\n\n private onBlur(): void {\n if (this.isNotNumber(this.value)) {\n this.updateValue(null);\n\n return;\n }\n\n const value = Math.max(this.nativeNumberValue || 0, this.min);\n const formattedValue = this.formatNumber(value);\n\n this.nativeValue = formattedValue;\n this.updateValue(value);\n\n if (this.primitiveTextfield) {\n this.primitiveTextfield.value = formattedValue;\n }\n }\n\n private formatNumber(value: number | null): string {\n return this.isNotNumber(value)\n ? ''\n : formatNumber(\n value,\n null,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n );\n }\n\n private isNotNumber(value: number | null): value is null {\n return !isPresent(value) || Number.isNaN(value);\n }\n}\n","import {Directive, forwardRef} from '@angular/core';\nimport {TUI_TEXTFIELD_HOST, TuiAbstractTextfieldHost} from '@taiga-ui/core';\n\nimport {TuiInputCountComponent} from './input-count.component';\n\n@Directive({\n selector: 'tui-input-count',\n providers: [\n {\n provide: TUI_TEXTFIELD_HOST,\n useExisting: forwardRef(() => TuiInputCountDirective),\n },\n ],\n})\nexport class TuiInputCountDirective extends TuiAbstractTextfieldHost<TuiInputCountComponent> {\n onValueChange(): void {\n this.host.onValueChange();\n }\n\n process(input: HTMLInputElement): void {\n input.autocomplete = 'off';\n input.inputMode = 'numeric';\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n TuiButtonModule,\n TuiPrimitiveTextfieldModule,\n TuiTextfieldComponent,\n TuiTextfieldControllerModule,\n} from '@taiga-ui/core';\nimport {TuiValueAccessorModule} from '@taiga-ui/kit/directives';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\nimport {TextMaskModule} from 'angular2-text-mask';\n\nimport {TuiInputCountComponent} from './input-count.component';\nimport {TuiInputCountDirective} from './input-count.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n TextMaskModule,\n TuiButtonModule,\n TuiPrimitiveTextfieldModule,\n TuiTextfieldControllerModule,\n TuiValueAccessorModule,\n PolymorpheusModule,\n ],\n declarations: [TuiInputCountComponent, TuiInputCountDirective],\n exports: [TuiInputCountComponent, TuiInputCountDirective, TuiTextfieldComponent],\n})\nexport class TuiInputCountModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-count.js","sources":["ng://@taiga-ui/kit/components/input-count/input-count-options.ts","ng://@taiga-ui/kit/components/input-count/input-count.component.ts","ng://@taiga-ui/kit/components/input-count/input-count.directive.ts","ng://@taiga-ui/kit/components/input-count/input-count.module.ts","ng://@taiga-ui/kit/components/input-count/taiga-ui-kit-components-input-count.ts"],"sourcesContent":["import {InjectionToken, ValueProvider} from '@angular/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nexport interface TuiInputCountOptions {\n readonly icons: Readonly<{\n up: PolymorpheusContent<Record<string, unknown>>;\n down: PolymorpheusContent<Record<string, unknown>>;\n }>;\n readonly appearance: string;\n readonly hideButtons: boolean;\n readonly min: number;\n readonly max: number;\n readonly step: number;\n readonly postfix: string;\n}\n\n/**\n * @deprecated: use TuiInputCountOptions instead\n * todo: remove in 3.0\n */\nexport type InputCountOptions = TuiInputCountOptions;\n\n// TODO: 3.0 remove in ivy compilation\nexport const PASSWORD_ICON_UP = `tuiIconPlus`;\nexport const PASSWORD_ICON_DOWN = `tuiIconMinus`;\n\n/** Default values for the input count options. */\nexport const TUI_INPUT_COUNT_DEFAULT_OPTIONS: TuiInputCountOptions = {\n icons: {\n up: PASSWORD_ICON_UP,\n down: PASSWORD_ICON_DOWN,\n },\n appearance: `textfield`,\n hideButtons: false,\n min: 0,\n max: Infinity,\n step: 1,\n postfix: ``,\n};\n\nexport const TUI_INPUT_COUNT_OPTIONS = new InjectionToken<TuiInputCountOptions>(\n `Default parameters for input count component`,\n {\n factory: () => TUI_INPUT_COUNT_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiInputCountOptionsProvider: (\n options: Partial<TuiInputCountOptions>,\n) => ValueProvider = (options: Partial<TuiInputCountOptions>) => ({\n provide: TUI_INPUT_COUNT_OPTIONS,\n useValue: {...TUI_INPUT_COUNT_DEFAULT_OPTIONS, ...options},\n});\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiControl,\n AbstractTuiNullableControl,\n clamp,\n isNativeFocused,\n isPresent,\n setNativeFocused,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TUI_IS_MOBILE,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {\n formatNumber,\n TUI_NUMBER_FORMAT,\n TUI_TEXTFIELD_APPEARANCE,\n TUI_TEXTFIELD_SIZE,\n tuiCreateNumberMask,\n tuiMaskedNumberStringToNumber,\n TuiNumberFormatSettings,\n TuiPrimitiveTextfieldComponent,\n TuiSizeL,\n TuiSizeS,\n TuiTextfieldSizeDirective,\n TuiTextMaskOptions,\n TuiWithOptionalMinMax,\n} from '@taiga-ui/core';\nimport {TUI_PLUS_MINUS_TEXTS} from '@taiga-ui/kit/tokens';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {TextMaskConfig} from 'angular2-text-mask';\nimport {Observable} from 'rxjs';\n\nimport {TUI_INPUT_COUNT_OPTIONS, TuiInputCountOptions} from './input-count-options';\n\n// @dynamic\n@Component({\n selector: 'tui-input-count',\n templateUrl: './input-count.template.html',\n styleUrls: ['./input-count.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiInputCountComponent),\n },\n {\n provide: AbstractTuiControl,\n useExisting: forwardRef(() => TuiInputCountComponent),\n },\n ],\n})\nexport class TuiInputCountComponent\n extends AbstractTuiNullableControl<number>\n implements TuiWithOptionalMinMax<number>, TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly primitiveTextfield?: TuiPrimitiveTextfieldComponent;\n\n private unfinishedValue: string | null = '';\n\n @Input()\n @tuiDefaultProp()\n step = this.options.step;\n\n @Input()\n @tuiDefaultProp()\n min = this.options.min;\n\n @Input()\n @tuiDefaultProp()\n max = this.options.max;\n\n @Input()\n @tuiDefaultProp()\n hideButtons = this.options.hideButtons;\n\n @Input()\n @tuiDefaultProp()\n prefix = '';\n\n @Input()\n @tuiDefaultProp()\n postfix = this.options.postfix;\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_TEXTFIELD_APPEARANCE)\n private readonly appearance: string,\n @Inject(TUI_TEXTFIELD_SIZE)\n private readonly textfieldSize: TuiTextfieldSizeDirective,\n @Inject(TUI_PLUS_MINUS_TEXTS)\n readonly minusTexts$: Observable<[string, string]>,\n @Inject(TUI_IS_MOBILE) private readonly isMobile: boolean,\n @Inject(TUI_INPUT_COUNT_OPTIONS)\n readonly options: TuiInputCountOptions,\n @Inject(TUI_NUMBER_FORMAT)\n private readonly numberFormat: TuiNumberFormatSettings,\n ) {\n super(control, changeDetectorRef);\n }\n\n @tuiPure\n getMask(allowNegative: boolean): TextMaskConfig {\n return {\n mask: tuiCreateNumberMask({\n allowNegative,\n decimalSymbol: this.numberFormat.decimalSeparator,\n thousandSymbol: this.numberFormat.thousandSeparator,\n }),\n guide: false,\n } as TuiTextMaskOptions as unknown as TextMaskConfig;\n }\n\n // TODO: 3.0 Remove in v.3\n @HostBinding('class._hide-buttons')\n get buttonsHidden(): boolean {\n return this.hideButtons || this.appearance === 'table';\n }\n\n get iconUp(): PolymorpheusContent<Record<string, unknown>> {\n return this.options.icons.up;\n }\n\n get iconDown(): PolymorpheusContent<Record<string, unknown>> {\n return this.options.icons.down;\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n return !this.primitiveTextfield || this.computedDisabled\n ? null\n : this.primitiveTextfield.nativeFocusableElement;\n }\n\n @HostBinding('attr.data-size')\n get size(): TuiSizeL | TuiSizeS {\n return this.textfieldSize.size;\n }\n\n get focused(): boolean {\n return isNativeFocused(this.nativeFocusableElement);\n }\n\n get exampleText(): string {\n return String(this.min);\n }\n\n get computedValue(): string {\n return this.focused ? this.nativeValue : this.formatNumber(this.value);\n }\n\n get minusButtonDisabled(): boolean {\n return !this.interactive || (isPresent(this.value) && this.value <= this.min);\n }\n\n get plusButtonDisabled(): boolean {\n return !this.interactive || (isPresent(this.value) && this.value >= this.max);\n }\n\n onButtonMouseDown(event: MouseEvent, disabled: boolean = false): void {\n if (disabled || !this.nativeFocusableElement || this.isMobile) {\n return;\n }\n\n event.preventDefault();\n setNativeFocused(this.nativeFocusableElement);\n }\n\n onFocused(focused: boolean): void {\n if (!focused) {\n this.onBlur();\n }\n\n this.updateFocused(focused);\n }\n\n onHovered(hovered: boolean): void {\n this.updateHovered(hovered);\n }\n\n onPressed(pressed: boolean): void {\n this.updatePressed(pressed);\n }\n\n onValueChange(): void {\n if (this.isNativeValueNotFinished) {\n this.unfinishedValue = this.nativeValue;\n\n return;\n }\n\n this.unfinishedValue = null;\n\n const capped = this.capValue(this.nativeNumberValue);\n\n if (this.isNotNumber(capped)) {\n this.updateValue(null);\n\n return;\n }\n\n const newValue = this.formatNumber(capped);\n\n if (this.nativeValue !== newValue) {\n this.nativeValue = newValue;\n }\n\n this.updateValue(capped);\n }\n\n decreaseValue(): void {\n if (this.readOnly) {\n return;\n }\n\n const newValue = (this.value || 0) - this.step;\n\n this.safeUpdateValue(newValue);\n }\n\n increaseValue(): void {\n if (this.readOnly) {\n return;\n }\n\n const newValue = (this.value || 0) + this.step;\n\n this.safeUpdateValue(newValue);\n }\n\n onKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowUp':\n case 'Up':\n this.increaseValue();\n event.preventDefault();\n break;\n case 'ArrowDown':\n case 'Down':\n this.decreaseValue();\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n\n private get nativeNumberValue(): number {\n return parseInt(\n this.nativeValue.split(this.numberFormat.thousandSeparator).join(''),\n 10,\n );\n }\n\n private get nativeValue(): string {\n return this.nativeFocusableElement ? this.nativeFocusableElement.value : '';\n }\n\n private set nativeValue(value: string) {\n if (!this.nativeFocusableElement) {\n return;\n }\n\n this.nativeFocusableElement.value = value;\n }\n\n private safeUpdateValue(newValue: number): void {\n const value = clamp(newValue, this.min, this.max);\n\n this.updateValue(value);\n this.nativeValue = this.formatNumber(value);\n }\n\n private capValue(value: number): number | null {\n const capped = Math.min(value, this.max);\n\n return Number.isNaN(capped) || capped < this.min ? null : capped;\n }\n\n private onBlur(): void {\n const nativeNumberValue = this.unfinishedValue\n ? tuiMaskedNumberStringToNumber(\n this.unfinishedValue,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n )\n : this.nativeNumberValue;\n\n this.unfinishedValue = null;\n\n if (this.isNotNumber(nativeNumberValue)) {\n this.updateValue(null);\n\n return;\n }\n\n const value = Math.max(nativeNumberValue || 0, this.min);\n const formattedValue = this.formatNumber(value);\n\n this.nativeValue = formattedValue;\n this.updateValue(value);\n\n if (this.primitiveTextfield) {\n this.primitiveTextfield.value = formattedValue;\n }\n }\n\n private formatNumber(value: number | null): string {\n return this.isNotNumber(value)\n ? ''\n : formatNumber(\n value,\n null,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n );\n }\n\n private isNotNumber(value: number | null): value is null {\n return !isPresent(value) || Number.isNaN(value);\n }\n\n private get isNativeValueNotFinished(): boolean {\n const {nativeNumberValue} = this;\n\n return nativeNumberValue < 0\n ? nativeNumberValue > this.max\n : nativeNumberValue < this.min;\n }\n}\n","import {Directive, forwardRef} from '@angular/core';\nimport {TUI_TEXTFIELD_HOST, TuiAbstractTextfieldHost} from '@taiga-ui/core';\n\nimport {TuiInputCountComponent} from './input-count.component';\n\n@Directive({\n selector: 'tui-input-count',\n providers: [\n {\n provide: TUI_TEXTFIELD_HOST,\n useExisting: forwardRef(() => TuiInputCountDirective),\n },\n ],\n})\nexport class TuiInputCountDirective extends TuiAbstractTextfieldHost<TuiInputCountComponent> {\n onValueChange(): void {\n this.host.onValueChange();\n }\n\n process(input: HTMLInputElement): void {\n input.autocomplete = 'off';\n input.inputMode = 'numeric';\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n TuiButtonModule,\n TuiPrimitiveTextfieldModule,\n TuiTextfieldComponent,\n TuiTextfieldControllerModule,\n} from '@taiga-ui/core';\nimport {TuiValueAccessorModule} from '@taiga-ui/kit/directives';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\nimport {TextMaskModule} from 'angular2-text-mask';\n\nimport {TuiInputCountComponent} from './input-count.component';\nimport {TuiInputCountDirective} from './input-count.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n TextMaskModule,\n TuiButtonModule,\n TuiPrimitiveTextfieldModule,\n TuiTextfieldControllerModule,\n TuiValueAccessorModule,\n PolymorpheusModule,\n ],\n declarations: [TuiInputCountComponent, TuiInputCountDirective],\n exports: [TuiInputCountComponent, TuiInputCountDirective, TuiTextfieldComponent],\n})\nexport class TuiInputCountModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -442,9 +442,6 @@ let TuiTabsWithMoreComponent = class TuiTabsWithMoreComponent {
442
442
  return -1;
443
443
  }
444
444
  updateActiveItemIndex(activeItemIndex) {
445
- if (this.activeItemIndex === activeItemIndex) {
446
- return;
447
- }
448
445
  this.activeItemIndex = activeItemIndex;
449
446
  this.activeItemIndexChange.emit(activeItemIndex);
450
447
  this.maxIndex = this.getMaxIndex();
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-tabs.js","sources":["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","ng://@taiga-ui/kit/components/tabs/taiga-ui-kit-components-tabs.ts"],"sourcesContent":["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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-tabs.js","sources":["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","ng://@taiga-ui/kit/components/tabs/taiga-ui-kit-components-tabs.ts"],"sourcesContent":["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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { __assign, __extends, __decorate, __param } from 'tslib';
2
2
  import { InjectionToken, Optional, Self, Inject, ChangeDetectorRef, ViewChild, Input, HostBinding, Component, ChangeDetectionStrategy, forwardRef, Directive, NgModule } from '@angular/core';
3
3
  import { NgControl } from '@angular/forms';
4
4
  import { isNativeFocused, isPresent, setNativeFocused, clamp, TUI_IS_MOBILE, tuiDefaultProp, tuiPure, TUI_FOCUSABLE_ITEM_ACCESSOR, AbstractTuiControl, AbstractTuiNullableControl } from '@taiga-ui/cdk';
5
- import { tuiCreateNumberMask, formatNumber, TUI_TEXTFIELD_APPEARANCE, TuiTextfieldSizeDirective, TUI_TEXTFIELD_SIZE, TUI_NUMBER_FORMAT, TuiPrimitiveTextfieldComponent, TUI_TEXTFIELD_HOST, TuiAbstractTextfieldHost, TuiButtonModule, TuiPrimitiveTextfieldModule, TuiTextfieldControllerModule, TuiTextfieldComponent } from '@taiga-ui/core';
5
+ import { tuiCreateNumberMask, tuiMaskedNumberStringToNumber, formatNumber, TUI_TEXTFIELD_APPEARANCE, TuiTextfieldSizeDirective, TUI_TEXTFIELD_SIZE, TUI_NUMBER_FORMAT, TuiPrimitiveTextfieldComponent, TUI_TEXTFIELD_HOST, TuiAbstractTextfieldHost, TuiButtonModule, TuiPrimitiveTextfieldModule, TuiTextfieldControllerModule, TuiTextfieldComponent } from '@taiga-ui/core';
6
6
  import { TUI_PLUS_MINUS_TEXTS } from '@taiga-ui/kit/tokens';
7
7
  import { Observable } from 'rxjs';
8
8
  import { CommonModule } from '@angular/common';
@@ -45,6 +45,7 @@ var TuiInputCountComponent = /** @class */ (function (_super) {
45
45
  _this.isMobile = isMobile;
46
46
  _this.options = options;
47
47
  _this.numberFormat = numberFormat;
48
+ _this.unfinishedValue = '';
48
49
  _this.step = _this.options.step;
49
50
  _this.min = _this.options.min;
50
51
  _this.max = _this.options.max;
@@ -158,6 +159,11 @@ var TuiInputCountComponent = /** @class */ (function (_super) {
158
159
  this.updatePressed(pressed);
159
160
  };
160
161
  TuiInputCountComponent.prototype.onValueChange = function () {
162
+ if (this.isNativeValueNotFinished) {
163
+ this.unfinishedValue = this.nativeValue;
164
+ return;
165
+ }
166
+ this.unfinishedValue = null;
161
167
  var capped = this.capValue(this.nativeNumberValue);
162
168
  if (this.isNotNumber(capped)) {
163
169
  this.updateValue(null);
@@ -229,11 +235,15 @@ var TuiInputCountComponent = /** @class */ (function (_super) {
229
235
  return Number.isNaN(capped) || capped < this.min ? null : capped;
230
236
  };
231
237
  TuiInputCountComponent.prototype.onBlur = function () {
232
- if (this.isNotNumber(this.value)) {
238
+ var nativeNumberValue = this.unfinishedValue
239
+ ? tuiMaskedNumberStringToNumber(this.unfinishedValue, this.numberFormat.decimalSeparator, this.numberFormat.thousandSeparator)
240
+ : this.nativeNumberValue;
241
+ this.unfinishedValue = null;
242
+ if (this.isNotNumber(nativeNumberValue)) {
233
243
  this.updateValue(null);
234
244
  return;
235
245
  }
236
- var value = Math.max(this.nativeNumberValue || 0, this.min);
246
+ var value = Math.max(nativeNumberValue || 0, this.min);
237
247
  var formattedValue = this.formatNumber(value);
238
248
  this.nativeValue = formattedValue;
239
249
  this.updateValue(value);
@@ -249,6 +259,16 @@ var TuiInputCountComponent = /** @class */ (function (_super) {
249
259
  TuiInputCountComponent.prototype.isNotNumber = function (value) {
250
260
  return !isPresent(value) || Number.isNaN(value);
251
261
  };
262
+ Object.defineProperty(TuiInputCountComponent.prototype, "isNativeValueNotFinished", {
263
+ get: function () {
264
+ var nativeNumberValue = this.nativeNumberValue;
265
+ return nativeNumberValue < 0
266
+ ? nativeNumberValue > this.max
267
+ : nativeNumberValue < this.min;
268
+ },
269
+ enumerable: true,
270
+ configurable: true
271
+ });
252
272
  var TuiInputCountComponent_1;
253
273
  TuiInputCountComponent.ctorParameters = function () { return [
254
274
  { type: NgControl, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NgControl,] }] },
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-count.js","sources":["ng://@taiga-ui/kit/components/input-count/input-count-options.ts","ng://@taiga-ui/kit/components/input-count/input-count.component.ts","ng://@taiga-ui/kit/components/input-count/input-count.directive.ts","ng://@taiga-ui/kit/components/input-count/input-count.module.ts","ng://@taiga-ui/kit/components/input-count/taiga-ui-kit-components-input-count.ts"],"sourcesContent":["import {InjectionToken, ValueProvider} from '@angular/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nexport interface TuiInputCountOptions {\n readonly icons: Readonly<{\n up: PolymorpheusContent<Record<string, unknown>>;\n down: PolymorpheusContent<Record<string, unknown>>;\n }>;\n readonly appearance: string;\n readonly hideButtons: boolean;\n readonly min: number;\n readonly max: number;\n readonly step: number;\n readonly postfix: string;\n}\n\n/**\n * @deprecated: use TuiInputCountOptions instead\n * todo: remove in 3.0\n */\nexport type InputCountOptions = TuiInputCountOptions;\n\n// TODO: 3.0 remove in ivy compilation\nexport const PASSWORD_ICON_UP = `tuiIconPlus`;\nexport const PASSWORD_ICON_DOWN = `tuiIconMinus`;\n\n/** Default values for the input count options. */\nexport const TUI_INPUT_COUNT_DEFAULT_OPTIONS: TuiInputCountOptions = {\n icons: {\n up: PASSWORD_ICON_UP,\n down: PASSWORD_ICON_DOWN,\n },\n appearance: `textfield`,\n hideButtons: false,\n min: 0,\n max: Infinity,\n step: 1,\n postfix: ``,\n};\n\nexport const TUI_INPUT_COUNT_OPTIONS = new InjectionToken<TuiInputCountOptions>(\n `Default parameters for input count component`,\n {\n factory: () => TUI_INPUT_COUNT_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiInputCountOptionsProvider: (\n options: Partial<TuiInputCountOptions>,\n) => ValueProvider = (options: Partial<TuiInputCountOptions>) => ({\n provide: TUI_INPUT_COUNT_OPTIONS,\n useValue: {...TUI_INPUT_COUNT_DEFAULT_OPTIONS, ...options},\n});\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiControl,\n AbstractTuiNullableControl,\n clamp,\n isNativeFocused,\n isPresent,\n setNativeFocused,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TUI_IS_MOBILE,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {\n formatNumber,\n TUI_NUMBER_FORMAT,\n TUI_TEXTFIELD_APPEARANCE,\n TUI_TEXTFIELD_SIZE,\n tuiCreateNumberMask,\n TuiNumberFormatSettings,\n TuiPrimitiveTextfieldComponent,\n TuiSizeL,\n TuiSizeS,\n TuiTextfieldSizeDirective,\n TuiTextMaskOptions,\n TuiWithOptionalMinMax,\n} from '@taiga-ui/core';\nimport {TUI_PLUS_MINUS_TEXTS} from '@taiga-ui/kit/tokens';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {TextMaskConfig} from 'angular2-text-mask';\nimport {Observable} from 'rxjs';\n\nimport {TUI_INPUT_COUNT_OPTIONS, TuiInputCountOptions} from './input-count-options';\n\n// @dynamic\n@Component({\n selector: 'tui-input-count',\n templateUrl: './input-count.template.html',\n styleUrls: ['./input-count.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiInputCountComponent),\n },\n {\n provide: AbstractTuiControl,\n useExisting: forwardRef(() => TuiInputCountComponent),\n },\n ],\n})\nexport class TuiInputCountComponent\n extends AbstractTuiNullableControl<number>\n implements TuiWithOptionalMinMax<number>, TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly primitiveTextfield?: TuiPrimitiveTextfieldComponent;\n\n @Input()\n @tuiDefaultProp()\n step = this.options.step;\n\n @Input()\n @tuiDefaultProp()\n min = this.options.min;\n\n @Input()\n @tuiDefaultProp()\n max = this.options.max;\n\n @Input()\n @tuiDefaultProp()\n hideButtons = this.options.hideButtons;\n\n @Input()\n @tuiDefaultProp()\n prefix = '';\n\n @Input()\n @tuiDefaultProp()\n postfix = this.options.postfix;\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_TEXTFIELD_APPEARANCE)\n private readonly appearance: string,\n @Inject(TUI_TEXTFIELD_SIZE)\n private readonly textfieldSize: TuiTextfieldSizeDirective,\n @Inject(TUI_PLUS_MINUS_TEXTS)\n readonly minusTexts$: Observable<[string, string]>,\n @Inject(TUI_IS_MOBILE) private readonly isMobile: boolean,\n @Inject(TUI_INPUT_COUNT_OPTIONS)\n readonly options: TuiInputCountOptions,\n @Inject(TUI_NUMBER_FORMAT)\n private readonly numberFormat: TuiNumberFormatSettings,\n ) {\n super(control, changeDetectorRef);\n }\n\n @tuiPure\n getMask(allowNegative: boolean): TextMaskConfig {\n return {\n mask: tuiCreateNumberMask({\n allowNegative,\n decimalSymbol: this.numberFormat.decimalSeparator,\n thousandSymbol: this.numberFormat.thousandSeparator,\n }),\n guide: false,\n } as TuiTextMaskOptions as unknown as TextMaskConfig;\n }\n\n // TODO: 3.0 Remove in v.3\n @HostBinding('class._hide-buttons')\n get buttonsHidden(): boolean {\n return this.hideButtons || this.appearance === 'table';\n }\n\n get iconUp(): PolymorpheusContent<Record<string, unknown>> {\n return this.options.icons.up;\n }\n\n get iconDown(): PolymorpheusContent<Record<string, unknown>> {\n return this.options.icons.down;\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n return !this.primitiveTextfield || this.computedDisabled\n ? null\n : this.primitiveTextfield.nativeFocusableElement;\n }\n\n @HostBinding('attr.data-size')\n get size(): TuiSizeL | TuiSizeS {\n return this.textfieldSize.size;\n }\n\n get focused(): boolean {\n return isNativeFocused(this.nativeFocusableElement);\n }\n\n get exampleText(): string {\n return String(this.min);\n }\n\n get computedValue(): string {\n return this.focused ? this.nativeValue : this.formatNumber(this.value);\n }\n\n get minusButtonDisabled(): boolean {\n return !this.interactive || (isPresent(this.value) && this.value <= this.min);\n }\n\n get plusButtonDisabled(): boolean {\n return !this.interactive || (isPresent(this.value) && this.value >= this.max);\n }\n\n onButtonMouseDown(event: MouseEvent, disabled: boolean = false): void {\n if (disabled || !this.nativeFocusableElement || this.isMobile) {\n return;\n }\n\n event.preventDefault();\n setNativeFocused(this.nativeFocusableElement);\n }\n\n onFocused(focused: boolean): void {\n if (!focused) {\n this.onBlur();\n }\n\n this.updateFocused(focused);\n }\n\n onHovered(hovered: boolean): void {\n this.updateHovered(hovered);\n }\n\n onPressed(pressed: boolean): void {\n this.updatePressed(pressed);\n }\n\n onValueChange(): void {\n const capped = this.capValue(this.nativeNumberValue);\n\n if (this.isNotNumber(capped)) {\n this.updateValue(null);\n\n return;\n }\n\n const newValue = this.formatNumber(capped);\n\n if (this.nativeValue !== newValue) {\n this.nativeValue = newValue;\n }\n\n this.updateValue(capped);\n }\n\n decreaseValue(): void {\n if (this.readOnly) {\n return;\n }\n\n const newValue = (this.value || 0) - this.step;\n\n this.safeUpdateValue(newValue);\n }\n\n increaseValue(): void {\n if (this.readOnly) {\n return;\n }\n\n const newValue = (this.value || 0) + this.step;\n\n this.safeUpdateValue(newValue);\n }\n\n onKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowUp':\n case 'Up':\n this.increaseValue();\n event.preventDefault();\n break;\n case 'ArrowDown':\n case 'Down':\n this.decreaseValue();\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n\n private get nativeNumberValue(): number {\n return parseInt(\n this.nativeValue.split(this.numberFormat.thousandSeparator).join(''),\n 10,\n );\n }\n\n private get nativeValue(): string {\n return this.nativeFocusableElement ? this.nativeFocusableElement.value : '';\n }\n\n private set nativeValue(value: string) {\n if (!this.nativeFocusableElement) {\n return;\n }\n\n this.nativeFocusableElement.value = value;\n }\n\n private safeUpdateValue(newValue: number): void {\n const value = clamp(newValue, this.min, this.max);\n\n this.updateValue(value);\n this.nativeValue = this.formatNumber(value);\n }\n\n private capValue(value: number): number | null {\n const capped = Math.min(value, this.max);\n\n return Number.isNaN(capped) || capped < this.min ? null : capped;\n }\n\n private onBlur(): void {\n if (this.isNotNumber(this.value)) {\n this.updateValue(null);\n\n return;\n }\n\n const value = Math.max(this.nativeNumberValue || 0, this.min);\n const formattedValue = this.formatNumber(value);\n\n this.nativeValue = formattedValue;\n this.updateValue(value);\n\n if (this.primitiveTextfield) {\n this.primitiveTextfield.value = formattedValue;\n }\n }\n\n private formatNumber(value: number | null): string {\n return this.isNotNumber(value)\n ? ''\n : formatNumber(\n value,\n null,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n );\n }\n\n private isNotNumber(value: number | null): value is null {\n return !isPresent(value) || Number.isNaN(value);\n }\n}\n","import {Directive, forwardRef} from '@angular/core';\nimport {TUI_TEXTFIELD_HOST, TuiAbstractTextfieldHost} from '@taiga-ui/core';\n\nimport {TuiInputCountComponent} from './input-count.component';\n\n@Directive({\n selector: 'tui-input-count',\n providers: [\n {\n provide: TUI_TEXTFIELD_HOST,\n useExisting: forwardRef(() => TuiInputCountDirective),\n },\n ],\n})\nexport class TuiInputCountDirective extends TuiAbstractTextfieldHost<TuiInputCountComponent> {\n onValueChange(): void {\n this.host.onValueChange();\n }\n\n process(input: HTMLInputElement): void {\n input.autocomplete = 'off';\n input.inputMode = 'numeric';\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n TuiButtonModule,\n TuiPrimitiveTextfieldModule,\n TuiTextfieldComponent,\n TuiTextfieldControllerModule,\n} from '@taiga-ui/core';\nimport {TuiValueAccessorModule} from '@taiga-ui/kit/directives';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\nimport {TextMaskModule} from 'angular2-text-mask';\n\nimport {TuiInputCountComponent} from './input-count.component';\nimport {TuiInputCountDirective} from './input-count.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n TextMaskModule,\n TuiButtonModule,\n TuiPrimitiveTextfieldModule,\n TuiTextfieldControllerModule,\n TuiValueAccessorModule,\n PolymorpheusModule,\n ],\n declarations: [TuiInputCountComponent, TuiInputCountDirective],\n exports: [TuiInputCountComponent, TuiInputCountDirective, TuiTextfieldComponent],\n})\nexport class TuiInputCountModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-count.js","sources":["ng://@taiga-ui/kit/components/input-count/input-count-options.ts","ng://@taiga-ui/kit/components/input-count/input-count.component.ts","ng://@taiga-ui/kit/components/input-count/input-count.directive.ts","ng://@taiga-ui/kit/components/input-count/input-count.module.ts","ng://@taiga-ui/kit/components/input-count/taiga-ui-kit-components-input-count.ts"],"sourcesContent":["import {InjectionToken, ValueProvider} from '@angular/core';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\n\nexport interface TuiInputCountOptions {\n readonly icons: Readonly<{\n up: PolymorpheusContent<Record<string, unknown>>;\n down: PolymorpheusContent<Record<string, unknown>>;\n }>;\n readonly appearance: string;\n readonly hideButtons: boolean;\n readonly min: number;\n readonly max: number;\n readonly step: number;\n readonly postfix: string;\n}\n\n/**\n * @deprecated: use TuiInputCountOptions instead\n * todo: remove in 3.0\n */\nexport type InputCountOptions = TuiInputCountOptions;\n\n// TODO: 3.0 remove in ivy compilation\nexport const PASSWORD_ICON_UP = `tuiIconPlus`;\nexport const PASSWORD_ICON_DOWN = `tuiIconMinus`;\n\n/** Default values for the input count options. */\nexport const TUI_INPUT_COUNT_DEFAULT_OPTIONS: TuiInputCountOptions = {\n icons: {\n up: PASSWORD_ICON_UP,\n down: PASSWORD_ICON_DOWN,\n },\n appearance: `textfield`,\n hideButtons: false,\n min: 0,\n max: Infinity,\n step: 1,\n postfix: ``,\n};\n\nexport const TUI_INPUT_COUNT_OPTIONS = new InjectionToken<TuiInputCountOptions>(\n `Default parameters for input count component`,\n {\n factory: () => TUI_INPUT_COUNT_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiInputCountOptionsProvider: (\n options: Partial<TuiInputCountOptions>,\n) => ValueProvider = (options: Partial<TuiInputCountOptions>) => ({\n provide: TUI_INPUT_COUNT_OPTIONS,\n useValue: {...TUI_INPUT_COUNT_DEFAULT_OPTIONS, ...options},\n});\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiControl,\n AbstractTuiNullableControl,\n clamp,\n isNativeFocused,\n isPresent,\n setNativeFocused,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TUI_IS_MOBILE,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n tuiPure,\n} from '@taiga-ui/cdk';\nimport {\n formatNumber,\n TUI_NUMBER_FORMAT,\n TUI_TEXTFIELD_APPEARANCE,\n TUI_TEXTFIELD_SIZE,\n tuiCreateNumberMask,\n tuiMaskedNumberStringToNumber,\n TuiNumberFormatSettings,\n TuiPrimitiveTextfieldComponent,\n TuiSizeL,\n TuiSizeS,\n TuiTextfieldSizeDirective,\n TuiTextMaskOptions,\n TuiWithOptionalMinMax,\n} from '@taiga-ui/core';\nimport {TUI_PLUS_MINUS_TEXTS} from '@taiga-ui/kit/tokens';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {TextMaskConfig} from 'angular2-text-mask';\nimport {Observable} from 'rxjs';\n\nimport {TUI_INPUT_COUNT_OPTIONS, TuiInputCountOptions} from './input-count-options';\n\n// @dynamic\n@Component({\n selector: 'tui-input-count',\n templateUrl: './input-count.template.html',\n styleUrls: ['./input-count.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiInputCountComponent),\n },\n {\n provide: AbstractTuiControl,\n useExisting: forwardRef(() => TuiInputCountComponent),\n },\n ],\n})\nexport class TuiInputCountComponent\n extends AbstractTuiNullableControl<number>\n implements TuiWithOptionalMinMax<number>, TuiFocusableElementAccessor\n{\n @ViewChild(TuiPrimitiveTextfieldComponent)\n private readonly primitiveTextfield?: TuiPrimitiveTextfieldComponent;\n\n private unfinishedValue: string | null = '';\n\n @Input()\n @tuiDefaultProp()\n step = this.options.step;\n\n @Input()\n @tuiDefaultProp()\n min = this.options.min;\n\n @Input()\n @tuiDefaultProp()\n max = this.options.max;\n\n @Input()\n @tuiDefaultProp()\n hideButtons = this.options.hideButtons;\n\n @Input()\n @tuiDefaultProp()\n prefix = '';\n\n @Input()\n @tuiDefaultProp()\n postfix = this.options.postfix;\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_TEXTFIELD_APPEARANCE)\n private readonly appearance: string,\n @Inject(TUI_TEXTFIELD_SIZE)\n private readonly textfieldSize: TuiTextfieldSizeDirective,\n @Inject(TUI_PLUS_MINUS_TEXTS)\n readonly minusTexts$: Observable<[string, string]>,\n @Inject(TUI_IS_MOBILE) private readonly isMobile: boolean,\n @Inject(TUI_INPUT_COUNT_OPTIONS)\n readonly options: TuiInputCountOptions,\n @Inject(TUI_NUMBER_FORMAT)\n private readonly numberFormat: TuiNumberFormatSettings,\n ) {\n super(control, changeDetectorRef);\n }\n\n @tuiPure\n getMask(allowNegative: boolean): TextMaskConfig {\n return {\n mask: tuiCreateNumberMask({\n allowNegative,\n decimalSymbol: this.numberFormat.decimalSeparator,\n thousandSymbol: this.numberFormat.thousandSeparator,\n }),\n guide: false,\n } as TuiTextMaskOptions as unknown as TextMaskConfig;\n }\n\n // TODO: 3.0 Remove in v.3\n @HostBinding('class._hide-buttons')\n get buttonsHidden(): boolean {\n return this.hideButtons || this.appearance === 'table';\n }\n\n get iconUp(): PolymorpheusContent<Record<string, unknown>> {\n return this.options.icons.up;\n }\n\n get iconDown(): PolymorpheusContent<Record<string, unknown>> {\n return this.options.icons.down;\n }\n\n get nativeFocusableElement(): HTMLInputElement | null {\n return !this.primitiveTextfield || this.computedDisabled\n ? null\n : this.primitiveTextfield.nativeFocusableElement;\n }\n\n @HostBinding('attr.data-size')\n get size(): TuiSizeL | TuiSizeS {\n return this.textfieldSize.size;\n }\n\n get focused(): boolean {\n return isNativeFocused(this.nativeFocusableElement);\n }\n\n get exampleText(): string {\n return String(this.min);\n }\n\n get computedValue(): string {\n return this.focused ? this.nativeValue : this.formatNumber(this.value);\n }\n\n get minusButtonDisabled(): boolean {\n return !this.interactive || (isPresent(this.value) && this.value <= this.min);\n }\n\n get plusButtonDisabled(): boolean {\n return !this.interactive || (isPresent(this.value) && this.value >= this.max);\n }\n\n onButtonMouseDown(event: MouseEvent, disabled: boolean = false): void {\n if (disabled || !this.nativeFocusableElement || this.isMobile) {\n return;\n }\n\n event.preventDefault();\n setNativeFocused(this.nativeFocusableElement);\n }\n\n onFocused(focused: boolean): void {\n if (!focused) {\n this.onBlur();\n }\n\n this.updateFocused(focused);\n }\n\n onHovered(hovered: boolean): void {\n this.updateHovered(hovered);\n }\n\n onPressed(pressed: boolean): void {\n this.updatePressed(pressed);\n }\n\n onValueChange(): void {\n if (this.isNativeValueNotFinished) {\n this.unfinishedValue = this.nativeValue;\n\n return;\n }\n\n this.unfinishedValue = null;\n\n const capped = this.capValue(this.nativeNumberValue);\n\n if (this.isNotNumber(capped)) {\n this.updateValue(null);\n\n return;\n }\n\n const newValue = this.formatNumber(capped);\n\n if (this.nativeValue !== newValue) {\n this.nativeValue = newValue;\n }\n\n this.updateValue(capped);\n }\n\n decreaseValue(): void {\n if (this.readOnly) {\n return;\n }\n\n const newValue = (this.value || 0) - this.step;\n\n this.safeUpdateValue(newValue);\n }\n\n increaseValue(): void {\n if (this.readOnly) {\n return;\n }\n\n const newValue = (this.value || 0) + this.step;\n\n this.safeUpdateValue(newValue);\n }\n\n onKeydown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'ArrowUp':\n case 'Up':\n this.increaseValue();\n event.preventDefault();\n break;\n case 'ArrowDown':\n case 'Down':\n this.decreaseValue();\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n\n private get nativeNumberValue(): number {\n return parseInt(\n this.nativeValue.split(this.numberFormat.thousandSeparator).join(''),\n 10,\n );\n }\n\n private get nativeValue(): string {\n return this.nativeFocusableElement ? this.nativeFocusableElement.value : '';\n }\n\n private set nativeValue(value: string) {\n if (!this.nativeFocusableElement) {\n return;\n }\n\n this.nativeFocusableElement.value = value;\n }\n\n private safeUpdateValue(newValue: number): void {\n const value = clamp(newValue, this.min, this.max);\n\n this.updateValue(value);\n this.nativeValue = this.formatNumber(value);\n }\n\n private capValue(value: number): number | null {\n const capped = Math.min(value, this.max);\n\n return Number.isNaN(capped) || capped < this.min ? null : capped;\n }\n\n private onBlur(): void {\n const nativeNumberValue = this.unfinishedValue\n ? tuiMaskedNumberStringToNumber(\n this.unfinishedValue,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n )\n : this.nativeNumberValue;\n\n this.unfinishedValue = null;\n\n if (this.isNotNumber(nativeNumberValue)) {\n this.updateValue(null);\n\n return;\n }\n\n const value = Math.max(nativeNumberValue || 0, this.min);\n const formattedValue = this.formatNumber(value);\n\n this.nativeValue = formattedValue;\n this.updateValue(value);\n\n if (this.primitiveTextfield) {\n this.primitiveTextfield.value = formattedValue;\n }\n }\n\n private formatNumber(value: number | null): string {\n return this.isNotNumber(value)\n ? ''\n : formatNumber(\n value,\n null,\n this.numberFormat.decimalSeparator,\n this.numberFormat.thousandSeparator,\n );\n }\n\n private isNotNumber(value: number | null): value is null {\n return !isPresent(value) || Number.isNaN(value);\n }\n\n private get isNativeValueNotFinished(): boolean {\n const {nativeNumberValue} = this;\n\n return nativeNumberValue < 0\n ? nativeNumberValue > this.max\n : nativeNumberValue < this.min;\n }\n}\n","import {Directive, forwardRef} from '@angular/core';\nimport {TUI_TEXTFIELD_HOST, TuiAbstractTextfieldHost} from '@taiga-ui/core';\n\nimport {TuiInputCountComponent} from './input-count.component';\n\n@Directive({\n selector: 'tui-input-count',\n providers: [\n {\n provide: TUI_TEXTFIELD_HOST,\n useExisting: forwardRef(() => TuiInputCountDirective),\n },\n ],\n})\nexport class TuiInputCountDirective extends TuiAbstractTextfieldHost<TuiInputCountComponent> {\n onValueChange(): void {\n this.host.onValueChange();\n }\n\n process(input: HTMLInputElement): void {\n input.autocomplete = 'off';\n input.inputMode = 'numeric';\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n TuiButtonModule,\n TuiPrimitiveTextfieldModule,\n TuiTextfieldComponent,\n TuiTextfieldControllerModule,\n} from '@taiga-ui/core';\nimport {TuiValueAccessorModule} from '@taiga-ui/kit/directives';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\nimport {TextMaskModule} from 'angular2-text-mask';\n\nimport {TuiInputCountComponent} from './input-count.component';\nimport {TuiInputCountDirective} from './input-count.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n TextMaskModule,\n TuiButtonModule,\n TuiPrimitiveTextfieldModule,\n TuiTextfieldControllerModule,\n TuiValueAccessorModule,\n PolymorpheusModule,\n ],\n declarations: [TuiInputCountComponent, TuiInputCountDirective],\n exports: [TuiInputCountComponent, TuiInputCountDirective, TuiTextfieldComponent],\n})\nexport class TuiInputCountModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;AAsBA;IACa,gBAAgB,GAAG,cAAc;IACjC,kBAAkB,GAAG,eAAe;AAEjD;IACa,+BAA+B,GAAyB;IACjE,KAAK,EAAE;QACH,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,kBAAkB;KAC3B;IACD,UAAU,EAAE,WAAW;IACvB,WAAW,EAAE,KAAK;IAClB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,EAAE;EACb;IAEW,uBAAuB,GAAG,IAAI,cAAc,CACrD,8CAA8C,EAC9C;IACI,OAAO,EAAE,cAAM,OAAA,+BAA+B,GAAA;CACjD,EACH;IAEW,4BAA4B,GAEpB,UAAC,OAAsC,IAAK,QAAC;IAC9D,OAAO,EAAE,uBAAuB;IAChC,QAAQ,wBAAM,+BAA+B,GAAK,OAAO,CAAC;CAC7D;;ACJD;;IAkBY,0CAAkC;IAgC1C,gCAII,OAAyB,EACE,iBAAoC,EAE9C,UAAkB,EAElB,aAAwC,EAEhD,WAAyC,EACV,QAAiB,EAEhD,OAA6B,EAErB,YAAqC;QAhB1D,YAkBI,kBAAM,OAAO,EAAE,iBAAiB,CAAC,SACpC;QAZoB,gBAAU,GAAV,UAAU,CAAQ;QAElB,mBAAa,GAAb,aAAa,CAA2B;QAEhD,iBAAW,GAAX,WAAW,CAA8B;QACV,cAAQ,GAAR,QAAQ,CAAS;QAEhD,aAAO,GAAP,OAAO,CAAsB;QAErB,kBAAY,GAAZ,YAAY,CAAyB;QA1ClD,qBAAe,GAAkB,EAAE,CAAC;QAI5C,UAAI,GAAG,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAIzB,SAAG,GAAG,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAIvB,SAAG,GAAG,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAIvB,iBAAW,GAAG,KAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAIvC,YAAM,GAAG,EAAE,CAAC;QAIZ,aAAO,GAAG,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC;;KAqB9B;+BApDQ,sBAAsB;IAuD/B,wCAAO,GAAP,UAAQ,aAAsB;QAC1B,OAAO;YACH,IAAI,EAAE,mBAAmB,CAAC;gBACtB,aAAa,eAAA;gBACb,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,gBAAgB;gBACjD,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,iBAAiB;aACtD,CAAC;YACF,KAAK,EAAE,KAAK;SACoC,CAAC;KACxD;IAID,sBAAI,iDAAa;;aAAjB;YACI,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,CAAC;SAC1D;;;OAAA;IAED,sBAAI,0CAAM;aAAV;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;SAChC;;;OAAA;IAED,sBAAI,4CAAQ;aAAZ;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;SAClC;;;OAAA;IAED,sBAAI,0DAAsB;aAA1B;YACI,OAAO,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,gBAAgB;kBAClD,IAAI;kBACJ,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC;SACxD;;;OAAA;IAGD,sBAAI,wCAAI;aAAR;YACI,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;SAClC;;;OAAA;IAED,sBAAI,2CAAO;aAAX;YACI,OAAO,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;SACvD;;;OAAA;IAED,sBAAI,+CAAW;aAAf;YACI,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC3B;;;OAAA;IAED,sBAAI,iDAAa;aAAjB;YACI,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC1E;;;OAAA;IAED,sBAAI,uDAAmB;aAAvB;YACI,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;SACjF;;;OAAA;IAED,sBAAI,sDAAkB;aAAtB;YACI,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;SACjF;;;OAAA;IAED,kDAAiB,GAAjB,UAAkB,KAAiB,EAAE,QAAyB;QAAzB,yBAAA,EAAA,gBAAyB;QAC1D,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC3D,OAAO;SACV;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;KACjD;IAED,0CAAS,GAAT,UAAU,OAAgB;QACtB,IAAI,CAAC,OAAO,EAAE;YACV,IAAI,CAAC,MAAM,EAAE,CAAC;SACjB;QAED,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KAC/B;IAED,0CAAS,GAAT,UAAU,OAAgB;QACtB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KAC/B;IAED,0CAAS,GAAT,UAAU,OAAgB;QACtB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KAC/B;IAED,8CAAa,GAAb;QACI,IAAI,IAAI,CAAC,wBAAwB,EAAE;YAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC;YAExC,OAAO;SACV;QAED,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;YAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAEvB,OAAO;SACV;QAED,IAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE;YAC/B,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;SAC/B;QAED,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;KAC5B;IAED,8CAAa,GAAb;QACI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;SACV;QAED,IAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;QAE/C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;KAClC;IAED,8CAAa,GAAb;QACI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO;SACV;QAED,IAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;QAE/C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;KAClC;IAED,0CAAS,GAAT,UAAU,KAAoB;QAC1B,QAAQ,KAAK,CAAC,GAAG;YACb,KAAK,SAAS,CAAC;YACf,KAAK,IAAI;gBACL,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;YACV,KAAK,WAAW,CAAC;YACjB,KAAK,MAAM;gBACP,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,MAAM;YACV;gBACI,MAAM;SACb;KACJ;IAED,sBAAY,qDAAiB;aAA7B;YACI,OAAO,QAAQ,CACX,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EACpE,EAAE,CACL,CAAC;SACL;;;OAAA;IAED,sBAAY,+CAAW;aAAvB;YACI,OAAO,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,GAAG,EAAE,CAAC;SAC/E;aAED,UAAwB,KAAa;YACjC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBAC9B,OAAO;aACV;YAED,IAAI,CAAC,sBAAsB,CAAC,KAAK,GAAG,KAAK,CAAC;SAC7C;;;OARA;IAUO,gDAAe,GAAvB,UAAwB,QAAgB;QACpC,IAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAElD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KAC/C;IAEO,yCAAQ,GAAhB,UAAiB,KAAa;QAC1B,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAEzC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC;KACpE;IAEO,uCAAM,GAAd;QACI,IAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe;cACxC,6BAA6B,CACzB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAClC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CACtC;cACD,IAAI,CAAC,iBAAiB,CAAC;QAE7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE;YACrC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAEvB,OAAO;SACV;QAED,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACzD,IAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAEhD,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAExB,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,kBAAkB,CAAC,KAAK,GAAG,cAAc,CAAC;SAClD;KACJ;IAEO,6CAAY,GAApB,UAAqB,KAAoB;QACrC,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;cACxB,EAAE;cACF,YAAY,CACR,KAAK,EACL,IAAI,EACJ,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAClC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CACtC,CAAC;KACX;IAEO,4CAAW,GAAnB,UAAoB,KAAoB;QACpC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACnD;IAED,sBAAY,4DAAwB;aAApC;YACW,IAAA,0CAAiB,CAAS;YAEjC,OAAO,iBAAiB,GAAG,CAAC;kBACtB,iBAAiB,GAAG,IAAI,CAAC,GAAG;kBAC5B,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC;SACtC;;;OAAA;;;gBAnPY,SAAS,uBAHjB,QAAQ,YACR,IAAI,YACJ,MAAM,SAAC,SAAS;gBAE6B,iBAAiB,uBAA9D,MAAM,SAAC,iBAAiB;6CACxB,MAAM,SAAC,wBAAwB;gBAGA,yBAAyB,uBADxD,MAAM,SAAC,kBAAkB;gBAGJ,UAAU,uBAD/B,MAAM,SAAC,oBAAoB;8CAE3B,MAAM,SAAC,aAAa;gDACpB,MAAM,SAAC,uBAAuB;gDAE9B,MAAM,SAAC,iBAAiB;;IA3C7B;QADC,SAAS,CAAC,8BAA8B,CAAC;sEAC2B;IAMrE;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;wDACQ;IAIzB;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;uDACM;IAIvB;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;uDACM;IAIvB;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;+DACsB;IAIvC;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;0DACL;IAIZ;QAFC,KAAK,EAAE;QACP,cAAc,EAAE;2DACc;IAwB/B;QADC,OAAO;yDAUP;IAID;QADC,WAAW,CAAC,qBAAqB,CAAC;+DAGlC;IAiBD;QADC,WAAW,CAAC,gBAAgB,CAAC;sDAG7B;IAzFQ,sBAAsB;QAhBlC,SAAS,CAAC;YACP,QAAQ,EAAE,iBAAiB;YAC3B,wyEAA0C;YAE1C,eAAe,EAAE,uBAAuB,CAAC,MAAM;YAC/C,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,2BAA2B;oBACpC,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,wBAAsB,GAAA,CAAC;iBACxD;gBACD;oBACI,OAAO,EAAE,kBAAkB;oBAC3B,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,wBAAsB,GAAA,CAAC;iBACxD;aACJ;;SACJ,CAAC;QAmCO,WAAA,QAAQ,EAAE,CAAA;QACV,WAAA,IAAI,EAAE,CAAA;QACN,WAAA,MAAM,CAAC,SAAS,CAAC,CAAA;QAEjB,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;QACzB,WAAA,MAAM,CAAC,wBAAwB,CAAC,CAAA;QAEhC,WAAA,MAAM,CAAC,kBAAkB,CAAC,CAAA;QAE1B,WAAA,MAAM,CAAC,oBAAoB,CAAC,CAAA;QAE5B,WAAA,MAAM,CAAC,aAAa,CAAC,CAAA;QACrB,WAAA,MAAM,CAAC,uBAAuB,CAAC,CAAA;QAE/B,WAAA,MAAM,CAAC,iBAAiB,CAAC,CAAA;OAhDrB,sBAAsB,CAyRlC;IAAD,6BAAC;CAAA,CAxRW,0BAA0B;;;ICpDM,0CAAgD;IAA5F;;KASC;+BATY,sBAAsB;IAC/B,8CAAa,GAAb;QACI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;KAC7B;IAED,wCAAO,GAAP,UAAQ,KAAuB;QAC3B,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;QAC3B,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;KAC/B;;IARQ,sBAAsB;QATlC,SAAS,CAAC;YACP,QAAQ,EAAE,iBAAiB;YAC3B,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,kBAAkB;oBAC3B,WAAW,EAAE,UAAU,CAAC,cAAM,OAAA,wBAAsB,GAAA,CAAC;iBACxD;aACJ;SACJ,CAAC;OACW,sBAAsB,CASlC;IAAD,6BAAC;CAAA,CAT2C,wBAAwB;;;ICcpE;KAAmC;IAAtB,mBAAmB;QAb/B,QAAQ,CAAC;YACN,OAAO,EAAE;gBACL,YAAY;gBACZ,cAAc;gBACd,eAAe;gBACf,2BAA2B;gBAC3B,4BAA4B;gBAC5B,sBAAsB;gBACtB,kBAAkB;aACrB;YACD,YAAY,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;YAC9D,OAAO,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,qBAAqB,CAAC;SACnF,CAAC;OACW,mBAAmB,CAAG;IAAD,0BAAC;CAAnC;;AC5BA;;;;;;"}
@@ -501,9 +501,6 @@ var TuiTabsWithMoreComponent = /** @class */ (function () {
501
501
  return -1;
502
502
  };
503
503
  TuiTabsWithMoreComponent.prototype.updateActiveItemIndex = function (activeItemIndex) {
504
- if (this.activeItemIndex === activeItemIndex) {
505
- return;
506
- }
507
504
  this.activeItemIndex = activeItemIndex;
508
505
  this.activeItemIndexChange.emit(activeItemIndex);
509
506
  this.maxIndex = this.getMaxIndex();