@taiga-ui/kit 2.54.1 → 2.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/taiga-ui-kit-components-input-files.umd.js +11 -5
- package/bundles/taiga-ui-kit-components-input-files.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-files.umd.min.js +1 -1
- package/bundles/taiga-ui-kit-components-input-files.umd.min.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-month-range.umd.js +1 -2
- package/bundles/taiga-ui-kit-components-input-month-range.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-month-range.umd.min.js +1 -1
- package/bundles/taiga-ui-kit-components-input-month-range.umd.min.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-phone-international.umd.js +1 -0
- package/bundles/taiga-ui-kit-components-input-phone-international.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-phone-international.umd.min.js +1 -1
- package/bundles/taiga-ui-kit-components-input-phone-international.umd.min.js.map +1 -1
- package/bundles/taiga-ui-kit-components-slider.umd.js +136 -84
- package/bundles/taiga-ui-kit-components-slider.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-slider.umd.min.js +1 -1
- package/bundles/taiga-ui-kit-components-slider.umd.min.js.map +1 -1
- package/bundles/taiga-ui-kit-components-tabs.umd.js +4 -2
- package/bundles/taiga-ui-kit-components-tabs.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-tabs.umd.min.js +1 -1
- package/bundles/taiga-ui-kit-components-tabs.umd.min.js.map +1 -1
- package/components/input-files/taiga-ui-kit-components-input-files.metadata.json +1 -1
- package/components/input-phone-international/taiga-ui-kit-components-input-phone-international.metadata.json +1 -1
- package/components/slider/{slider-key-steps.directive.d.ts → helpers/slider-key-steps.directive.d.ts} +1 -1
- package/components/slider/{slider-readonly.directive.d.ts → helpers/slider-readonly.directive.d.ts} +0 -0
- package/components/slider/helpers/slider-thumb-label/slider-thumb-label.component.d.ts +12 -0
- package/components/slider/index.d.ts +3 -2
- package/components/slider/slider.component.d.ts +1 -1
- package/components/slider/taiga-ui-kit-components-slider.metadata.json +1 -1
- package/components/tabs/taiga-ui-kit-components-tabs.metadata.json +1 -1
- package/esm2015/components/input-files/input-files.module.js +10 -3
- package/esm2015/components/input-month-range/input-month-range.component.js +3 -4
- package/esm2015/components/input-phone-international/const/countries.js +2 -1
- package/esm2015/components/slider/helpers/slider-key-steps.directive.js +103 -0
- package/esm2015/components/slider/helpers/slider-readonly.directive.js +79 -0
- package/esm2015/components/slider/helpers/slider-thumb-label/slider-thumb-label.component.js +40 -0
- package/esm2015/components/slider/index.js +4 -3
- package/esm2015/components/slider/slider.component.js +1 -1
- package/esm2015/components/slider/slider.module.js +6 -3
- package/esm2015/components/tabs/tabs-with-more/tabs-with-more.component.js +6 -4
- package/esm5/components/input-files/input-files.module.js +10 -3
- package/esm5/components/input-month-range/input-month-range.component.js +3 -4
- package/esm5/components/input-phone-international/const/countries.js +2 -1
- package/esm5/components/slider/helpers/slider-key-steps.directive.js +129 -0
- package/esm5/components/slider/helpers/slider-readonly.directive.js +87 -0
- package/esm5/components/slider/helpers/slider-thumb-label/slider-thumb-label.component.js +55 -0
- package/esm5/components/slider/index.js +4 -3
- package/esm5/components/slider/slider.component.js +1 -1
- package/esm5/components/slider/slider.module.js +6 -3
- package/esm5/components/tabs/tabs-with-more/tabs-with-more.component.js +6 -4
- package/fesm2015/taiga-ui-kit-components-input-files.js +9 -2
- package/fesm2015/taiga-ui-kit-components-input-files.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-month-range.js +2 -3
- package/fesm2015/taiga-ui-kit-components-input-month-range.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-phone-international.js +1 -0
- package/fesm2015/taiga-ui-kit-components-input-phone-international.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-slider.js +110 -74
- package/fesm2015/taiga-ui-kit-components-slider.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-tabs.js +5 -3
- package/fesm2015/taiga-ui-kit-components-tabs.js.map +1 -1
- package/fesm5/taiga-ui-kit-components-input-files.js +9 -2
- package/fesm5/taiga-ui-kit-components-input-files.js.map +1 -1
- package/fesm5/taiga-ui-kit-components-input-month-range.js +2 -3
- package/fesm5/taiga-ui-kit-components-input-month-range.js.map +1 -1
- package/fesm5/taiga-ui-kit-components-input-phone-international.js +1 -0
- package/fesm5/taiga-ui-kit-components-input-phone-international.js.map +1 -1
- package/fesm5/taiga-ui-kit-components-slider.js +137 -86
- package/fesm5/taiga-ui-kit-components-slider.js.map +1 -1
- package/fesm5/taiga-ui-kit-components-tabs.js +5 -3
- package/fesm5/taiga-ui-kit-components-tabs.js.map +1 -1
- package/package.json +4 -4
- package/esm2015/components/slider/slider-key-steps.directive.js +0 -103
- package/esm2015/components/slider/slider-readonly.directive.js +0 -79
- package/esm5/components/slider/slider-key-steps.directive.js +0 -129
- package/esm5/components/slider/slider-readonly.directive.js +0 -87
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-kit-components-slider.js","sources":["ng://@taiga-ui/kit/components/slider/slider-options.ts","ng://@taiga-ui/kit/components/slider/slider.component.ts","ng://@taiga-ui/kit/components/slider/slider-key-steps.directive.ts","ng://@taiga-ui/kit/components/slider/slider-old.component.ts","ng://@taiga-ui/kit/components/slider/slider-readonly.directive.ts","ng://@taiga-ui/kit/components/slider/slider.module.ts","ng://@taiga-ui/kit/components/slider/taiga-ui-kit-components-slider.ts"],"sourcesContent":["import {InjectionToken, ValueProvider} from '@angular/core';\nimport {TuiSizeS} from '@taiga-ui/core';\n\nexport interface TuiSliderOptions {\n readonly size: TuiSizeS;\n readonly trackColor: string;\n}\n\nexport const TUI_SLIDER_DEFAULT_OPTIONS: TuiSliderOptions = {\n size: 'm',\n trackColor: 'var(--tui-base-03)',\n};\n\nexport const TUI_SLIDER_OPTIONS = new InjectionToken<TuiSliderOptions>(\n 'Default parameters for Slider component',\n {factory: () => TUI_SLIDER_DEFAULT_OPTIONS},\n);\n\nexport function tuiSliderOptionsProvider(\n options: Partial<TuiSliderOptions>,\n): ValueProvider {\n return {\n provide: TUI_SLIDER_OPTIONS,\n useValue: {...TUI_SLIDER_DEFAULT_OPTIONS, ...options},\n };\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n Optional,\n Self,\n} from '@angular/core';\nimport {NgControl, NgModel} from '@angular/forms';\nimport {USER_AGENT} from '@ng-web-apis/common';\nimport {\n CHROMIUM_EDGE_START_VERSION,\n isEdgeOlderThan,\n tuiDefaultProp,\n watch,\n} from '@taiga-ui/cdk';\nimport {TuiSizeS} from '@taiga-ui/core';\nimport {take} from 'rxjs/operators';\n\nimport {TUI_SLIDER_OPTIONS, TuiSliderOptions} from './slider-options';\n\n@Component({\n /**\n * We have to call our component as `<input tuiSlider type=\"range\" ... />`\n * because otherwise built-in angular\n * {@link https://github.com/angular/angular/blob/master/packages/forms/src/directives/range_value_accessor.ts#L45 RangeValueAccessor}\n * cannot be matched by its CSS selector.\n */\n selector: 'input[type=range][tuiSlider]',\n template: ``,\n styleUrls: ['./slider.style.less'],\n host: {\n /**\n * For change detection.\n * Webkit does not have built-in method for customization of filling progress (as Firefox).\n * We draw filling of progress by `background: linear-gradient(...)` of the track.\n * This function triggers change detection (for {@link valuePercentage} function) when we drag thumb of the input.\n */\n '(input)': '0',\n '[style.--tui-slider-track-color]': 'options.trackColor',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiSliderComponent {\n @Input()\n @HostBinding('attr.data-size')\n @tuiDefaultProp()\n size: TuiSizeS = this.options.size;\n\n @Input()\n @tuiDefaultProp()\n segments = 1;\n\n get min(): number {\n return Number(this.elementRef.nativeElement.min);\n }\n\n get max(): number {\n return Number(this.elementRef.nativeElement.max || 100);\n }\n\n get step(): number {\n return Number(this.elementRef.nativeElement.step) || 1;\n }\n\n get value(): number {\n const {elementRef, control} = this;\n const noKeySteps = !elementRef.nativeElement.hasAttribute('data-key-steps');\n\n if (noKeySteps && control instanceof NgModel) {\n /**\n * If developer uses `[(ngModel)]` and programmatically change value,\n * the `elementRef.nativeElement.value` is equal to the previous value at this moment.\n */\n return control.viewModel;\n }\n\n return Number(elementRef.nativeElement.value) || 0;\n }\n\n set value(newValue: number) {\n this.elementRef.nativeElement.value = `${newValue}`;\n }\n\n @HostBinding('style.--tui-slider-fill-percentage.%')\n get valuePercentage(): number {\n return (100 * (this.value - this.min)) / (this.max - this.min) || 0;\n }\n\n @HostBinding('style.--tui-slider-segment-width.%')\n get segmentWidth(): number {\n return 100 / Math.max(1, this.segments);\n }\n\n @HostBinding('class._old-edge')\n get isOldEdge(): boolean {\n return isEdgeOlderThan(CHROMIUM_EDGE_START_VERSION, this.userAgent);\n }\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n private readonly control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_SLIDER_OPTIONS) readonly options: TuiSliderOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLInputElement>,\n @Inject(USER_AGENT) private readonly userAgent: string,\n ) {\n if (control instanceof NgModel) {\n /**\n * The ValueAccessor.writeValue method is called twice on any value accessor during component initialization,\n * when a control is bound using [(ngModel)], first time with a phantom null value.\n * With `changeDetection: ChangeDetectionStrategy.OnPush` the second call of writeValue with real value don't re-render the view.\n * ___\n * See this {@link https://github.com/angular/angular/issues/14988 issue}\n */\n control.valueChanges?.pipe(watch(changeDetectorRef), take(1)).subscribe();\n }\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Input,\n Optional,\n Output,\n Pipe,\n PipeTransform,\n Self,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiControl,\n clamp,\n isNativeFocused,\n tuiAssert,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {TuiKeySteps} from '@taiga-ui/kit/types';\nimport {\n tuiCheckKeyStepsHaveMinMaxPercents,\n tuiKeyStepValueToPercentage,\n tuiPercentageToKeyStepValue,\n} from '@taiga-ui/kit/utils';\nimport {map} from 'rxjs/operators';\n\nimport {TuiSliderComponent} from './slider.component';\n\n// @dynamic\n@Directive({\n selector: 'input[tuiSlider][keySteps]',\n host: {\n '[attr.data-key-steps]': 'true',\n '[attr.aria-valuenow]': 'controlValue',\n '[attr.aria-valuemin]': 'min',\n '[attr.aria-valuemax]': 'max',\n },\n})\nexport class TuiSliderKeyStepsDirective\n extends AbstractTuiControl<number>\n implements TuiFocusableElementAccessor\n{\n @Input()\n @tuiDefaultProp(\n tuiCheckKeyStepsHaveMinMaxPercents,\n 'Should contain min and max values',\n )\n keySteps: TuiKeySteps = [];\n\n @Output()\n keyStepsInput = typedFromEvent(this.elementRef.nativeElement, 'input').pipe(\n map(() => this.controlValue),\n );\n\n get nativeFocusableElement(): HTMLInputElement | null {\n return this.computedDisabled ? null : this.elementRef.nativeElement;\n }\n\n get focused(): boolean {\n return isNativeFocused(this.nativeFocusableElement);\n }\n\n get min(): number {\n return this.keySteps[0]?.[1] || 0;\n }\n\n get max(): number {\n return this.keySteps[this.keySteps.length - 1]?.[1] || 100;\n }\n\n get controlValue(): number {\n return tuiPercentageToKeyStepValue(this.slider.valuePercentage, this.keySteps);\n }\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLInputElement>,\n @Inject(TuiSliderComponent) private readonly slider: TuiSliderComponent,\n ) {\n super(control, changeDetectorRef);\n }\n\n @HostListener('change')\n updateControlValue(): void {\n this.updateValue(this.controlValue);\n }\n\n writeValue(controlValue: number | null): void {\n if (controlValue === null) {\n return;\n }\n\n const clampedControlValue = clamp(controlValue, this.min, this.max);\n\n tuiAssert.assert(\n controlValue === clampedControlValue,\n '\\n[SliderKeySteps]: You cannot programmatically set value which is less/more than min/max',\n );\n\n this.slider.value = this.transformToNativeValue(clampedControlValue);\n }\n\n protected getFallbackValue(): number {\n return 0;\n }\n\n private transformToNativeValue(controlValue: number): number {\n const {min, max} = this.slider;\n const newValuePercentage = tuiKeyStepValueToPercentage(\n controlValue,\n this.keySteps,\n );\n\n return (newValuePercentage * (max - min)) / 100 + min;\n }\n}\n\n/**\n * @deprecated DONT USE IT! It is just temporary solution for internal purposes only. We will delete it in next major release.\n * TODO delete it in v3.0\n *\n */\n@Pipe({name: 'tuiSliderTickLabel'})\nexport class TuiSliderTickLabelPipe implements PipeTransform {\n transform(tickIndex: number, totalSegments: number, keySteps: TuiKeySteps): number {\n const percentage = (100 / totalSegments) * tickIndex;\n\n return tuiPercentageToKeyStepValue(percentage, keySteps);\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n Inject,\n Optional,\n Self,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n isNativeFocused,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TuiFocusableElementAccessor,\n TuiNativeFocusableElement,\n} from '@taiga-ui/cdk';\nimport {AbstractTuiSlider} from '@taiga-ui/kit/abstract';\nimport {TUI_FROM_TO_TEXTS} from '@taiga-ui/kit/tokens';\nimport {Observable} from 'rxjs';\n\n/**\n * @deprecated use {@link TuiSliderComponent} instead\n * TODO: 3.0 remove\n */\n// @dynamic\n@Component({\n selector: 'tui-slider',\n templateUrl: '../../abstract/slider/slider.common.template.html',\n styleUrls: [\n '../../abstract/slider/slider.common.style.less',\n './slider-old.style.less',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiSliderOldComponent),\n },\n ],\n})\nexport class TuiSliderOldComponent\n extends AbstractTuiSlider<number>\n implements TuiFocusableElementAccessor\n{\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(DOCUMENT) documentRef: Document,\n @Inject(TUI_FROM_TO_TEXTS) fromToTexts$: Observable<[string, string]>,\n ) {\n super(control, changeDetectorRef, documentRef, fromToTexts$);\n }\n\n get nativeFocusableElement(): TuiNativeFocusableElement | null {\n return this.dotRight ? this.dotRight.nativeElement : null;\n }\n\n get focused(): boolean {\n return isNativeFocused(this.nativeFocusableElement);\n }\n\n get left(): number {\n return 0;\n }\n\n get right(): number {\n return 100 - 100 * this.getFractionFromValue(this.value);\n }\n\n processValue(value: number): void {\n this.updateValue(this.valueGuard(value));\n }\n\n decrement(): void {\n this.processStep(false);\n }\n\n increment(): void {\n this.processStep(true);\n }\n\n protected getFallbackValue(): number {\n return 0;\n }\n\n protected processStep(increment: boolean): void {\n const fraction = this.getFractionFromValue(this.value);\n const step = this.computedStep;\n const value = this.getValueFromFraction(\n increment ? fraction + step : fraction - step,\n );\n\n this.processValue(value);\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {Directive, ElementRef, HostListener, Inject, Input} from '@angular/core';\nimport {\n tuiCoerceBooleanProperty,\n tuiDefaultProp,\n TuiDestroyService,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {combineLatest, merge, Observable} from 'rxjs';\nimport {filter, mapTo, takeUntil, tap} from 'rxjs/operators';\n\nconst SLIDER_INTERACTION_KEYS = new Set([\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n]);\n\n/**\n * Native <input type='range' readonly> doesn't work.\n * This directive imitates this native behaviour.\n */\n// @dynamic\n@Directive({\n selector: 'input[tuiSlider][readonly]',\n providers: [TuiDestroyService],\n})\nexport class TuiSliderReadonlyDirective {\n @Input()\n @tuiDefaultProp()\n readonly: string | boolean = true;\n\n constructor(\n @Inject(ElementRef) elementRef: ElementRef<HTMLInputElement>,\n @Inject(DOCUMENT) documentRef: Document,\n @Inject(TuiDestroyService)\n destroy$: Observable<unknown>,\n ) {\n const touchStart$ = typedFromEvent(elementRef.nativeElement, 'touchstart', {\n passive: false,\n });\n const touchMove$ = typedFromEvent(documentRef, 'touchmove', {\n passive: false,\n });\n const touchEnd$ = typedFromEvent(documentRef, 'touchend', {\n passive: true,\n });\n\n const shouldPreventMove$ = merge(\n touchStart$.pipe(\n tap(e => this.preventEvent(e)),\n mapTo(true),\n ),\n touchEnd$.pipe(mapTo(false)),\n );\n\n /**\n * @bad TODO think about another solution.\n * Keep in mind that preventing touch event (on slider) inside `@HostListener('touchstart')` doesn't work for mobile chrome.\n */\n combineLatest([touchMove$, shouldPreventMove$])\n .pipe(\n filter(([_, shouldPreventMove]) => shouldPreventMove),\n takeUntil(destroy$),\n )\n .subscribe(([moveEvent]) => this.preventEvent(moveEvent));\n }\n\n @HostListener('mousedown', ['$event'])\n preventEvent(event: Event): void {\n if (event.cancelable && tuiCoerceBooleanProperty(this.readonly)) {\n event.preventDefault();\n }\n }\n\n @HostListener('keydown', ['$event'])\n preventKeyboardInteraction(event: KeyboardEvent): void {\n if (SLIDER_INTERACTION_KEYS.has(event.key)) {\n this.preventEvent(event);\n }\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n TuiActiveZoneModule,\n TuiFocusableModule,\n TuiFocusVisibleModule,\n TuiRepeatTimesModule,\n} from '@taiga-ui/cdk';\nimport {TuiFormatNumberPipeModule} from '@taiga-ui/core';\n\nimport {TuiSliderComponent} from './slider.component';\nimport {\n TuiSliderKeyStepsDirective,\n TuiSliderTickLabelPipe,\n} from './slider-key-steps.directive';\nimport {TuiSliderOldComponent} from './slider-old.component';\nimport {TuiSliderReadonlyDirective} from './slider-readonly.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n TuiRepeatTimesModule,\n TuiFocusableModule,\n TuiFocusVisibleModule,\n TuiActiveZoneModule,\n TuiFormatNumberPipeModule,\n ],\n declarations: [\n TuiSliderComponent,\n TuiSliderKeyStepsDirective,\n TuiSliderReadonlyDirective,\n TuiSliderTickLabelPipe,\n TuiSliderOldComponent,\n ],\n exports: [\n TuiSliderComponent,\n TuiSliderKeyStepsDirective,\n TuiSliderReadonlyDirective,\n TuiSliderTickLabelPipe,\n TuiSliderOldComponent,\n ],\n})\nexport class TuiSliderModule {}\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-slider.js","sources":["ng://@taiga-ui/kit/components/slider/slider-options.ts","ng://@taiga-ui/kit/components/slider/slider.component.ts","ng://@taiga-ui/kit/components/slider/helpers/slider-key-steps.directive.ts","ng://@taiga-ui/kit/components/slider/helpers/slider-readonly.directive.ts","ng://@taiga-ui/kit/components/slider/helpers/slider-thumb-label/slider-thumb-label.component.ts","ng://@taiga-ui/kit/components/slider/slider-old.component.ts","ng://@taiga-ui/kit/components/slider/slider.module.ts","ng://@taiga-ui/kit/components/slider/taiga-ui-kit-components-slider.ts"],"sourcesContent":["import {InjectionToken, ValueProvider} from '@angular/core';\nimport {TuiSizeS} from '@taiga-ui/core';\n\nexport interface TuiSliderOptions {\n readonly size: TuiSizeS;\n readonly trackColor: string;\n}\n\nexport const TUI_SLIDER_DEFAULT_OPTIONS: TuiSliderOptions = {\n size: 'm',\n trackColor: 'var(--tui-base-03)',\n};\n\nexport const TUI_SLIDER_OPTIONS = new InjectionToken<TuiSliderOptions>(\n 'Default parameters for Slider component',\n {factory: () => TUI_SLIDER_DEFAULT_OPTIONS},\n);\n\nexport function tuiSliderOptionsProvider(\n options: Partial<TuiSliderOptions>,\n): ValueProvider {\n return {\n provide: TUI_SLIDER_OPTIONS,\n useValue: {...TUI_SLIDER_DEFAULT_OPTIONS, ...options},\n };\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n Optional,\n Self,\n} from '@angular/core';\nimport {NgControl, NgModel} from '@angular/forms';\nimport {USER_AGENT} from '@ng-web-apis/common';\nimport {\n CHROMIUM_EDGE_START_VERSION,\n isEdgeOlderThan,\n tuiDefaultProp,\n watch,\n} from '@taiga-ui/cdk';\nimport {TuiSizeS} from '@taiga-ui/core';\nimport {take} from 'rxjs/operators';\n\nimport {TUI_SLIDER_OPTIONS, TuiSliderOptions} from './slider-options';\n\n@Component({\n /**\n * We have to call our component as `<input tuiSlider type=\"range\" ... />`\n * because otherwise built-in angular\n * {@link https://github.com/angular/angular/blob/master/packages/forms/src/directives/range_value_accessor.ts#L45 RangeValueAccessor}\n * cannot be matched by its CSS selector.\n */\n selector: 'input[type=range][tuiSlider]',\n template: ``,\n styleUrls: ['./slider.style.less'],\n host: {\n /**\n * For change detection.\n * Webkit does not have built-in method for customization of filling progress (as Firefox).\n * We draw filling of progress by `background: linear-gradient(...)` of the track.\n * This function triggers change detection (for {@link valuePercentage} function) when we drag thumb of the input.\n */\n '(input)': '0',\n '[style.--tui-slider-track-color]': 'options.trackColor',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiSliderComponent {\n @Input()\n @HostBinding('attr.data-size')\n @tuiDefaultProp()\n size: TuiSizeS = this.options.size;\n\n @Input()\n @tuiDefaultProp()\n segments = 1;\n\n get min(): number {\n return Number(this.elementRef.nativeElement.min);\n }\n\n get max(): number {\n return Number(this.elementRef.nativeElement.max || 100);\n }\n\n get step(): number {\n return Number(this.elementRef.nativeElement.step) || 1;\n }\n\n get value(): number {\n const {elementRef, control} = this;\n const noKeySteps = !elementRef.nativeElement.hasAttribute('data-key-steps');\n\n if (noKeySteps && control instanceof NgModel) {\n /**\n * If developer uses `[(ngModel)]` and programmatically change value,\n * the `elementRef.nativeElement.value` is equal to the previous value at this moment.\n */\n return control.viewModel;\n }\n\n return Number(elementRef.nativeElement.value) || 0;\n }\n\n set value(newValue: number) {\n this.elementRef.nativeElement.value = `${newValue}`;\n }\n\n @HostBinding('style.--tui-slider-fill-percentage.%')\n get valuePercentage(): number {\n return (100 * (this.value - this.min)) / (this.max - this.min) || 0;\n }\n\n @HostBinding('style.--tui-slider-segment-width.%')\n get segmentWidth(): number {\n return 100 / Math.max(1, this.segments);\n }\n\n @HostBinding('class._old-edge')\n get isOldEdge(): boolean {\n return isEdgeOlderThan(CHROMIUM_EDGE_START_VERSION, this.userAgent);\n }\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n private readonly control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_SLIDER_OPTIONS) readonly options: TuiSliderOptions,\n @Inject(ElementRef) readonly elementRef: ElementRef<HTMLInputElement>,\n @Inject(USER_AGENT) private readonly userAgent: string,\n ) {\n if (control instanceof NgModel) {\n /**\n * The ValueAccessor.writeValue method is called twice on any value accessor during component initialization,\n * when a control is bound using [(ngModel)], first time with a phantom null value.\n * With `changeDetection: ChangeDetectionStrategy.OnPush` the second call of writeValue with real value don't re-render the view.\n * ___\n * See this {@link https://github.com/angular/angular/issues/14988 issue}\n */\n control.valueChanges?.pipe(watch(changeDetectorRef), take(1)).subscribe();\n }\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Input,\n Optional,\n Output,\n Pipe,\n PipeTransform,\n Self,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n AbstractTuiControl,\n clamp,\n isNativeFocused,\n tuiAssert,\n tuiDefaultProp,\n TuiFocusableElementAccessor,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {TuiKeySteps} from '@taiga-ui/kit/types';\nimport {\n tuiCheckKeyStepsHaveMinMaxPercents,\n tuiKeyStepValueToPercentage,\n tuiPercentageToKeyStepValue,\n} from '@taiga-ui/kit/utils';\nimport {map} from 'rxjs/operators';\n\nimport {TuiSliderComponent} from '../slider.component';\n\n// @dynamic\n@Directive({\n selector: 'input[tuiSlider][keySteps]',\n host: {\n '[attr.data-key-steps]': 'true',\n '[attr.aria-valuenow]': 'controlValue',\n '[attr.aria-valuemin]': 'min',\n '[attr.aria-valuemax]': 'max',\n },\n})\nexport class TuiSliderKeyStepsDirective\n extends AbstractTuiControl<number>\n implements TuiFocusableElementAccessor\n{\n @Input()\n @tuiDefaultProp(\n tuiCheckKeyStepsHaveMinMaxPercents,\n 'Should contain min and max values',\n )\n keySteps: TuiKeySteps = [];\n\n @Output()\n keyStepsInput = typedFromEvent(this.elementRef.nativeElement, 'input').pipe(\n map(() => this.controlValue),\n );\n\n get nativeFocusableElement(): HTMLInputElement | null {\n return this.computedDisabled ? null : this.elementRef.nativeElement;\n }\n\n get focused(): boolean {\n return isNativeFocused(this.nativeFocusableElement);\n }\n\n get min(): number {\n return this.keySteps[0]?.[1] || 0;\n }\n\n get max(): number {\n return this.keySteps[this.keySteps.length - 1]?.[1] || 100;\n }\n\n get controlValue(): number {\n return tuiPercentageToKeyStepValue(this.slider.valuePercentage, this.keySteps);\n }\n\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLInputElement>,\n @Inject(TuiSliderComponent) private readonly slider: TuiSliderComponent,\n ) {\n super(control, changeDetectorRef);\n }\n\n @HostListener('change')\n updateControlValue(): void {\n this.updateValue(this.controlValue);\n }\n\n writeValue(controlValue: number | null): void {\n if (controlValue === null) {\n return;\n }\n\n const clampedControlValue = clamp(controlValue, this.min, this.max);\n\n tuiAssert.assert(\n controlValue === clampedControlValue,\n '\\n[SliderKeySteps]: You cannot programmatically set value which is less/more than min/max',\n );\n\n this.slider.value = this.transformToNativeValue(clampedControlValue);\n }\n\n protected getFallbackValue(): number {\n return 0;\n }\n\n private transformToNativeValue(controlValue: number): number {\n const {min, max} = this.slider;\n const newValuePercentage = tuiKeyStepValueToPercentage(\n controlValue,\n this.keySteps,\n );\n\n return (newValuePercentage * (max - min)) / 100 + min;\n }\n}\n\n/**\n * @deprecated DONT USE IT! It is just temporary solution for internal purposes only. We will delete it in next major release.\n * TODO delete it in v3.0\n *\n */\n@Pipe({name: 'tuiSliderTickLabel'})\nexport class TuiSliderTickLabelPipe implements PipeTransform {\n transform(tickIndex: number, totalSegments: number, keySteps: TuiKeySteps): number {\n const percentage = (100 / totalSegments) * tickIndex;\n\n return tuiPercentageToKeyStepValue(percentage, keySteps);\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {Directive, ElementRef, HostListener, Inject, Input} from '@angular/core';\nimport {\n tuiCoerceBooleanProperty,\n tuiDefaultProp,\n TuiDestroyService,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {combineLatest, merge, Observable} from 'rxjs';\nimport {filter, mapTo, takeUntil, tap} from 'rxjs/operators';\n\nconst SLIDER_INTERACTION_KEYS = new Set([\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n]);\n\n/**\n * Native <input type='range' readonly> doesn't work.\n * This directive imitates this native behaviour.\n */\n// @dynamic\n@Directive({\n selector: 'input[tuiSlider][readonly]',\n providers: [TuiDestroyService],\n})\nexport class TuiSliderReadonlyDirective {\n @Input()\n @tuiDefaultProp()\n readonly: string | boolean = true;\n\n constructor(\n @Inject(ElementRef) elementRef: ElementRef<HTMLInputElement>,\n @Inject(DOCUMENT) documentRef: Document,\n @Inject(TuiDestroyService)\n destroy$: Observable<unknown>,\n ) {\n const touchStart$ = typedFromEvent(elementRef.nativeElement, 'touchstart', {\n passive: false,\n });\n const touchMove$ = typedFromEvent(documentRef, 'touchmove', {\n passive: false,\n });\n const touchEnd$ = typedFromEvent(documentRef, 'touchend', {\n passive: true,\n });\n\n const shouldPreventMove$ = merge(\n touchStart$.pipe(\n tap(e => this.preventEvent(e)),\n mapTo(true),\n ),\n touchEnd$.pipe(mapTo(false)),\n );\n\n /**\n * @bad TODO think about another solution.\n * Keep in mind that preventing touch event (on slider) inside `@HostListener('touchstart')` doesn't work for mobile chrome.\n */\n combineLatest([touchMove$, shouldPreventMove$])\n .pipe(\n filter(([_, shouldPreventMove]) => shouldPreventMove),\n takeUntil(destroy$),\n )\n .subscribe(([moveEvent]) => this.preventEvent(moveEvent));\n }\n\n @HostListener('mousedown', ['$event'])\n preventEvent(event: Event): void {\n if (event.cancelable && tuiCoerceBooleanProperty(this.readonly)) {\n event.preventDefault();\n }\n }\n\n @HostListener('keydown', ['$event'])\n preventKeyboardInteraction(event: KeyboardEvent): void {\n if (SLIDER_INTERACTION_KEYS.has(event.key)) {\n this.preventEvent(event);\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {tuiAssert} from '@taiga-ui/cdk';\nimport {TuiSizeS} from '@taiga-ui/core';\n\nimport {TuiSliderComponent} from '../../slider.component';\n\n@Component({\n selector: '[tuiSliderThumbLabel]',\n templateUrl: './slider-thumb-label.template.html',\n styleUrls: ['./slider-thumb-label.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiSliderThumbLabelComponent implements AfterContentInit {\n @ContentChild(TuiSliderComponent)\n readonly slider?: TuiSliderComponent;\n\n @ContentChild(NgControl)\n readonly control?: NgControl;\n\n get size(): TuiSizeS {\n return this.slider?.size || 'm';\n }\n\n get ratio(): number {\n return (this.slider?.valuePercentage || 0) / 100;\n }\n\n get ghostLeft(): number {\n return this.ratio * (this.slider?.elementRef.nativeElement.offsetWidth || 0);\n }\n\n ngAfterContentInit(): void {\n tuiAssert.assert(\n Boolean(this.control?.valueChanges),\n `\\n[tuiSliderThumbLabel] expected <input tuiSlider type=\"range\" /> to use Angular Forms.\\n` +\n 'Use [(ngModel)] or [formControl] or formControlName for correct work.',\n );\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n Inject,\n Optional,\n Self,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {\n isNativeFocused,\n TUI_FOCUSABLE_ITEM_ACCESSOR,\n TuiFocusableElementAccessor,\n TuiNativeFocusableElement,\n} from '@taiga-ui/cdk';\nimport {AbstractTuiSlider} from '@taiga-ui/kit/abstract';\nimport {TUI_FROM_TO_TEXTS} from '@taiga-ui/kit/tokens';\nimport {Observable} from 'rxjs';\n\n/**\n * @deprecated use {@link TuiSliderComponent} instead\n * TODO: 3.0 remove\n */\n// @dynamic\n@Component({\n selector: 'tui-slider',\n templateUrl: '../../abstract/slider/slider.common.template.html',\n styleUrls: [\n '../../abstract/slider/slider.common.style.less',\n './slider-old.style.less',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: TUI_FOCUSABLE_ITEM_ACCESSOR,\n useExisting: forwardRef(() => TuiSliderOldComponent),\n },\n ],\n})\nexport class TuiSliderOldComponent\n extends AbstractTuiSlider<number>\n implements TuiFocusableElementAccessor\n{\n constructor(\n @Optional()\n @Self()\n @Inject(NgControl)\n control: NgControl | null,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(DOCUMENT) documentRef: Document,\n @Inject(TUI_FROM_TO_TEXTS) fromToTexts$: Observable<[string, string]>,\n ) {\n super(control, changeDetectorRef, documentRef, fromToTexts$);\n }\n\n get nativeFocusableElement(): TuiNativeFocusableElement | null {\n return this.dotRight ? this.dotRight.nativeElement : null;\n }\n\n get focused(): boolean {\n return isNativeFocused(this.nativeFocusableElement);\n }\n\n get left(): number {\n return 0;\n }\n\n get right(): number {\n return 100 - 100 * this.getFractionFromValue(this.value);\n }\n\n processValue(value: number): void {\n this.updateValue(this.valueGuard(value));\n }\n\n decrement(): void {\n this.processStep(false);\n }\n\n increment(): void {\n this.processStep(true);\n }\n\n protected getFallbackValue(): number {\n return 0;\n }\n\n protected processStep(increment: boolean): void {\n const fraction = this.getFractionFromValue(this.value);\n const step = this.computedStep;\n const value = this.getValueFromFraction(\n increment ? fraction + step : fraction - step,\n );\n\n this.processValue(value);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {\n TuiActiveZoneModule,\n TuiFocusableModule,\n TuiFocusVisibleModule,\n TuiRepeatTimesModule,\n} from '@taiga-ui/cdk';\nimport {TuiFormatNumberPipeModule} from '@taiga-ui/core';\n\nimport {\n TuiSliderKeyStepsDirective,\n TuiSliderTickLabelPipe,\n} from './helpers/slider-key-steps.directive';\nimport {TuiSliderReadonlyDirective} from './helpers/slider-readonly.directive';\nimport {TuiSliderThumbLabelComponent} from './helpers/slider-thumb-label/slider-thumb-label.component';\nimport {TuiSliderComponent} from './slider.component';\nimport {TuiSliderOldComponent} from './slider-old.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TuiRepeatTimesModule,\n TuiFocusableModule,\n TuiFocusVisibleModule,\n TuiActiveZoneModule,\n TuiFormatNumberPipeModule,\n ],\n declarations: [\n TuiSliderComponent,\n TuiSliderThumbLabelComponent,\n TuiSliderKeyStepsDirective,\n TuiSliderReadonlyDirective,\n TuiSliderTickLabelPipe,\n TuiSliderOldComponent,\n ],\n exports: [\n TuiSliderComponent,\n TuiSliderThumbLabelComponent,\n TuiSliderKeyStepsDirective,\n TuiSliderReadonlyDirective,\n TuiSliderTickLabelPipe,\n TuiSliderOldComponent,\n ],\n})\nexport class TuiSliderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __decorate, __param, __assign } from 'tslib';
|
|
2
2
|
import { TemplateRef, Inject, Directive, InjectionToken, ElementRef, Optional, HostBinding, Component, ChangeDetectionStrategy, EventEmitter, Renderer2, ChangeDetectorRef, ContentChildren, forwardRef, Input, Output, HostListener, ViewChild, NgZone, NgModule } from '@angular/core';
|
|
3
3
|
import { RouterLinkActive } from '@angular/router';
|
|
4
|
-
import { TuiDestroyService, TuiFocusVisibleService, typedFromEvent, tuiCustomEvent, isNativeFocused, setNativeFocused, TUI_IS_IOS, TUI_IS_ANDROID, EMPTY_QUERY, moveFocus, TuiResizeService, tuiDefaultProp, tuiAssertIsHTMLElement, getClosestFocusable, toInt, tuiZonefree, px, TuiFocusableModule } from '@taiga-ui/cdk';
|
|
4
|
+
import { TuiDestroyService, TuiFocusVisibleService, typedFromEvent, tuiCustomEvent, isNativeFocused, setNativeFocused, TUI_IS_IOS, TUI_IS_ANDROID, EMPTY_QUERY, moveFocus, TuiResizeService, tuiDefaultProp, tuiClamp, tuiAssertIsHTMLElement, getClosestFocusable, toInt, tuiZonefree, px, TuiFocusableModule } from '@taiga-ui/cdk';
|
|
5
5
|
import { TuiRouterLinkActiveService, MODE_PROVIDER, TUI_MODE, TuiHostedDropdownModule, TuiSvgModule } from '@taiga-ui/core';
|
|
6
6
|
import { TUI_TAB_MARGIN, TUI_MOBILE_AWARE, TUI_MORE_WORD } from '@taiga-ui/kit/tokens';
|
|
7
7
|
import { EMPTY, merge, identity, Observable, ReplaySubject, of } from 'rxjs';
|
|
@@ -363,8 +363,10 @@ var TuiTabsWithMoreComponent = /** @class */ (function () {
|
|
|
363
363
|
Object.defineProperty(TuiTabsWithMoreComponent.prototype, "activeElement", {
|
|
364
364
|
get: function () {
|
|
365
365
|
var _a;
|
|
366
|
-
|
|
367
|
-
|
|
366
|
+
var tabs = this.tabs;
|
|
367
|
+
var safeActiveIndex = tuiClamp(this.activeItemIndex || 0, 0, tabs.length - 2);
|
|
368
|
+
return this.options.exposeActive || this.lastVisibleIndex >= safeActiveIndex
|
|
369
|
+
? tabs[safeActiveIndex] || null
|
|
368
370
|
: ((_a = this.moreButton) === null || _a === void 0 ? void 0 : _a.nativeElement) || null;
|
|
369
371
|
},
|
|
370
372
|
enumerable: true,
|
|
@@ -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: `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}\n\nexport const TUI_TABS_DEFAULT_OPTIONS: TuiTabsOptions = {\n underline: true,\n exposeActive: true,\n itemsLimit: Infinity,\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 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 return this.options.exposeActive || this.lastVisibleIndex >= this.activeItemIndex\n ? this.tabs[this.activeItemIndex] || 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 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 {clientWidth} = this.elementRef.nativeElement;\n const activeWidth = tabs[activeItemIndex] ? tabs[activeItemIndex].scrollWidth : 0;\n const moreWidth = tabs[tabs.length - 1].scrollWidth;\n let maxIndex = tabs.length - 2;\n let total =\n tabs.reduce((acc, {scrollWidth}) => acc + scrollWidth, 0) +\n maxIndex * margin -\n moreWidth;\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 =\n this.options.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 0;\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: `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}\n\nexport const TUI_TABS_DEFAULT_OPTIONS: TuiTabsOptions = {\n underline: true,\n exposeActive: true,\n itemsLimit: Infinity,\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 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 {clientWidth} = this.elementRef.nativeElement;\n const activeWidth = tabs[activeItemIndex] ? tabs[activeItemIndex].scrollWidth : 0;\n const moreWidth = tabs[tabs.length - 1].scrollWidth;\n let maxIndex = tabs.length - 2;\n let total =\n tabs.reduce((acc, {scrollWidth}) => acc + scrollWidth, 0) +\n maxIndex * margin -\n moreWidth;\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 =\n this.options.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 0;\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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taiga-ui/kit",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.55.0",
|
|
4
4
|
"description": "Taiga UI Angular main components kit",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -24,9 +24,9 @@
|
|
|
24
24
|
"@angular/router": ">=9.0.0",
|
|
25
25
|
"@ng-web-apis/common": ">=1.12.1 < 2",
|
|
26
26
|
"@ng-web-apis/mutation-observer": ">=1.1.0 < 2",
|
|
27
|
-
"@taiga-ui/cdk": ">=2.
|
|
28
|
-
"@taiga-ui/core": ">=2.
|
|
29
|
-
"@taiga-ui/i18n": ">=2.
|
|
27
|
+
"@taiga-ui/cdk": ">=2.55.0",
|
|
28
|
+
"@taiga-ui/core": ">=2.55.0",
|
|
29
|
+
"@taiga-ui/i18n": ">=2.55.0",
|
|
30
30
|
"@tinkoff/ng-polymorpheus": ">=3.1.12 < 4",
|
|
31
31
|
"rxjs": ">=6.0.0"
|
|
32
32
|
},
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { __decorate, __param } from "tslib";
|
|
2
|
-
import { ChangeDetectorRef, Directive, ElementRef, HostListener, Inject, Input, Optional, Output, Pipe, PipeTransform, Self, } from '@angular/core';
|
|
3
|
-
import { NgControl } from '@angular/forms';
|
|
4
|
-
import { AbstractTuiControl, clamp, isNativeFocused, tuiAssert, tuiDefaultProp, typedFromEvent, } from '@taiga-ui/cdk';
|
|
5
|
-
import { tuiCheckKeyStepsHaveMinMaxPercents, tuiKeyStepValueToPercentage, tuiPercentageToKeyStepValue, } from '@taiga-ui/kit/utils';
|
|
6
|
-
import { map } from 'rxjs/operators';
|
|
7
|
-
import { TuiSliderComponent } from './slider.component';
|
|
8
|
-
// @dynamic
|
|
9
|
-
let TuiSliderKeyStepsDirective = class TuiSliderKeyStepsDirective extends AbstractTuiControl {
|
|
10
|
-
constructor(control, changeDetectorRef, elementRef, slider) {
|
|
11
|
-
super(control, changeDetectorRef);
|
|
12
|
-
this.elementRef = elementRef;
|
|
13
|
-
this.slider = slider;
|
|
14
|
-
this.keySteps = [];
|
|
15
|
-
this.keyStepsInput = typedFromEvent(this.elementRef.nativeElement, 'input').pipe(map(() => this.controlValue));
|
|
16
|
-
}
|
|
17
|
-
get nativeFocusableElement() {
|
|
18
|
-
return this.computedDisabled ? null : this.elementRef.nativeElement;
|
|
19
|
-
}
|
|
20
|
-
get focused() {
|
|
21
|
-
return isNativeFocused(this.nativeFocusableElement);
|
|
22
|
-
}
|
|
23
|
-
get min() {
|
|
24
|
-
var _a;
|
|
25
|
-
return ((_a = this.keySteps[0]) === null || _a === void 0 ? void 0 : _a[1]) || 0;
|
|
26
|
-
}
|
|
27
|
-
get max() {
|
|
28
|
-
var _a;
|
|
29
|
-
return ((_a = this.keySteps[this.keySteps.length - 1]) === null || _a === void 0 ? void 0 : _a[1]) || 100;
|
|
30
|
-
}
|
|
31
|
-
get controlValue() {
|
|
32
|
-
return tuiPercentageToKeyStepValue(this.slider.valuePercentage, this.keySteps);
|
|
33
|
-
}
|
|
34
|
-
updateControlValue() {
|
|
35
|
-
this.updateValue(this.controlValue);
|
|
36
|
-
}
|
|
37
|
-
writeValue(controlValue) {
|
|
38
|
-
if (controlValue === null) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
const clampedControlValue = clamp(controlValue, this.min, this.max);
|
|
42
|
-
tuiAssert.assert(controlValue === clampedControlValue, '\n[SliderKeySteps]: You cannot programmatically set value which is less/more than min/max');
|
|
43
|
-
this.slider.value = this.transformToNativeValue(clampedControlValue);
|
|
44
|
-
}
|
|
45
|
-
getFallbackValue() {
|
|
46
|
-
return 0;
|
|
47
|
-
}
|
|
48
|
-
transformToNativeValue(controlValue) {
|
|
49
|
-
const { min, max } = this.slider;
|
|
50
|
-
const newValuePercentage = tuiKeyStepValueToPercentage(controlValue, this.keySteps);
|
|
51
|
-
return (newValuePercentage * (max - min)) / 100 + min;
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
TuiSliderKeyStepsDirective.ctorParameters = () => [
|
|
55
|
-
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NgControl,] }] },
|
|
56
|
-
{ type: ChangeDetectorRef, decorators: [{ type: Inject, args: [ChangeDetectorRef,] }] },
|
|
57
|
-
{ type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
|
|
58
|
-
{ type: TuiSliderComponent, decorators: [{ type: Inject, args: [TuiSliderComponent,] }] }
|
|
59
|
-
];
|
|
60
|
-
__decorate([
|
|
61
|
-
Input(),
|
|
62
|
-
tuiDefaultProp(tuiCheckKeyStepsHaveMinMaxPercents, 'Should contain min and max values')
|
|
63
|
-
], TuiSliderKeyStepsDirective.prototype, "keySteps", void 0);
|
|
64
|
-
__decorate([
|
|
65
|
-
Output()
|
|
66
|
-
], TuiSliderKeyStepsDirective.prototype, "keyStepsInput", void 0);
|
|
67
|
-
__decorate([
|
|
68
|
-
HostListener('change')
|
|
69
|
-
], TuiSliderKeyStepsDirective.prototype, "updateControlValue", null);
|
|
70
|
-
TuiSliderKeyStepsDirective = __decorate([
|
|
71
|
-
Directive({
|
|
72
|
-
selector: 'input[tuiSlider][keySteps]',
|
|
73
|
-
host: {
|
|
74
|
-
'[attr.data-key-steps]': 'true',
|
|
75
|
-
'[attr.aria-valuenow]': 'controlValue',
|
|
76
|
-
'[attr.aria-valuemin]': 'min',
|
|
77
|
-
'[attr.aria-valuemax]': 'max',
|
|
78
|
-
},
|
|
79
|
-
}),
|
|
80
|
-
__param(0, Optional()),
|
|
81
|
-
__param(0, Self()),
|
|
82
|
-
__param(0, Inject(NgControl)),
|
|
83
|
-
__param(1, Inject(ChangeDetectorRef)),
|
|
84
|
-
__param(2, Inject(ElementRef)),
|
|
85
|
-
__param(3, Inject(TuiSliderComponent))
|
|
86
|
-
], TuiSliderKeyStepsDirective);
|
|
87
|
-
export { TuiSliderKeyStepsDirective };
|
|
88
|
-
/**
|
|
89
|
-
* @deprecated DONT USE IT! It is just temporary solution for internal purposes only. We will delete it in next major release.
|
|
90
|
-
* TODO delete it in v3.0
|
|
91
|
-
*
|
|
92
|
-
*/
|
|
93
|
-
let TuiSliderTickLabelPipe = class TuiSliderTickLabelPipe {
|
|
94
|
-
transform(tickIndex, totalSegments, keySteps) {
|
|
95
|
-
const percentage = (100 / totalSegments) * tickIndex;
|
|
96
|
-
return tuiPercentageToKeyStepValue(percentage, keySteps);
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
TuiSliderTickLabelPipe = __decorate([
|
|
100
|
-
Pipe({ name: 'tuiSliderTickLabel' })
|
|
101
|
-
], TuiSliderTickLabelPipe);
|
|
102
|
-
export { TuiSliderTickLabelPipe };
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLWtleS1zdGVwcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvc2xpZGVyLyIsInNvdXJjZXMiOlsic2xpZGVyLWtleS1zdGVwcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixhQUFhLEVBQ2IsSUFBSSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLEtBQUssRUFDTCxlQUFlLEVBQ2YsU0FBUyxFQUNULGNBQWMsRUFFZCxjQUFjLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDSCxrQ0FBa0MsRUFDbEMsMkJBQTJCLEVBQzNCLDJCQUEyQixHQUM5QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RCxXQUFXO0FBVVgsSUFBYSwwQkFBMEIsR0FBdkMsTUFBYSwwQkFDVCxTQUFRLGtCQUEwQjtJQW1DbEMsWUFJSSxPQUF5QixFQUNFLGlCQUFvQyxFQUMxQixVQUF3QyxFQUNoQyxNQUEwQjtRQUV2RSxLQUFLLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFIRyxlQUFVLEdBQVYsVUFBVSxDQUE4QjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQWxDM0UsYUFBUSxHQUFnQixFQUFFLENBQUM7UUFHM0Isa0JBQWEsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFh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QUE7SUFDVixXQUFBLElBQUksRUFBRSxDQUFBO0lBQ04sV0FBQSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7SUFFakIsV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUN6QixXQUFBLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNsQixXQUFBLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO0dBM0N0QiwwQkFBMEIsQ0FpRnRDO1NBakZZLDBCQUEwQjtBQW1GdkM7Ozs7R0FJRztBQUVILElBQWEsc0JBQXNCLEdBQW5DLE1BQWEsc0JBQXNCO0lBQy9CLFNBQVMsQ0FBQyxTQUFpQixFQUFFLGFBQXFCLEVBQUUsUUFBcUI7UUFDckUsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBRXJELE9BQU8sMkJBQTJCLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdELENBQUM7Q0FDSixDQUFBO0FBTlksc0JBQXNCO0lBRGxDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBQyxDQUFDO0dBQ3RCLHNCQUFzQixDQU1sQztTQU5ZLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUGlwZSxcbiAgICBQaXBlVHJhbnNmb3JtLFxuICAgIFNlbGYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RUdWlDb250cm9sLFxuICAgIGNsYW1wLFxuICAgIGlzTmF0aXZlRm9jdXNlZCxcbiAgICB0dWlBc3NlcnQsXG4gICAgdHVpRGVmYXVsdFByb3AsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIHR5cGVkRnJvbUV2ZW50LFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7VHVpS2V5U3RlcHN9IGZyb20gJ0B0YWlnYS11aS9raXQvdHlwZXMnO1xuaW1wb3J0IHtcbiAgICB0dWlDaGVja0tleVN0ZXBzSGF2ZU1pbk1heFBlcmNlbnRzLFxuICAgIHR1aUtleVN0ZXBWYWx1ZVRvUGVyY2VudGFnZSxcbiAgICB0dWlQZXJjZW50YWdlVG9LZXlTdGVwVmFsdWUsXG59IGZyb20gJ0B0YWlnYS11aS9raXQvdXRpbHMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtUdWlTbGlkZXJDb21wb25lbnR9IGZyb20gJy4vc2xpZGVyLmNvbXBvbmVudCc7XG5cbi8vIEBkeW5hbWljXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2lucHV0W3R1aVNsaWRlcl1ba2V5U3RlcHNdJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5kYXRhLWtleS1zdGVwc10nOiAndHJ1ZScsXG4gICAgICAgICdbYXR0ci5hcmlhLXZhbHVlbm93XSc6ICdjb250cm9sVmFsdWUnLFxuICAgICAgICAnW2F0dHIuYXJpYS12YWx1ZW1pbl0nOiAnbWluJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtdmFsdWVtYXhdJzogJ21heCcsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpU2xpZGVyS2V5U3RlcHNEaXJlY3RpdmVcbiAgICBleHRlbmRzIEFic3RyYWN0VHVpQ29udHJvbDxudW1iZXI+XG4gICAgaW1wbGVtZW50cyBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3JcbntcbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcChcbiAgICAgICAgdHVpQ2hlY2tLZXlTdGVwc0hhdmVNaW5NYXhQZXJjZW50cyxcbiAgICAgICAgJ1Nob3VsZCBjb250YWluIG1pbiBhbmQgbWF4IHZhbHVlcycsXG4gICAgKVxuICAgIGtleVN0ZXBzOiBUdWlLZXlTdGVwcyA9IFtdO1xuXG4gICAgQE91dHB1dCgpXG4gICAga2V5U3RlcHNJbnB1dCA9IHR5cGVkRnJvbUV2ZW50KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnaW5wdXQnKS5waXBlKFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5jb250cm9sVmFsdWUpLFxuICAgICk7XG5cbiAgICBnZXQgbmF0aXZlRm9jdXNhYmxlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVkRGlzYWJsZWQgPyBudWxsIDogdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc05hdGl2ZUZvY3VzZWQodGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBnZXQgbWluKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmtleVN0ZXBzWzBdPy5bMV0gfHwgMDtcbiAgICB9XG5cbiAgICBnZXQgbWF4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmtleVN0ZXBzW3RoaXMua2V5U3RlcHMubGVuZ3RoIC0gMV0/LlsxXSB8fCAxMDA7XG4gICAgfVxuXG4gICAgZ2V0IGNvbnRyb2xWYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdHVpUGVyY2VudGFnZVRvS2V5U3RlcFZhbHVlKHRoaXMuc2xpZGVyLnZhbHVlUGVyY2VudGFnZSwgdGhpcy5rZXlTdGVwcyk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoVHVpU2xpZGVyQ29tcG9uZW50KSBwcml2YXRlIHJlYWRvbmx5IHNsaWRlcjogVHVpU2xpZGVyQ29tcG9uZW50LFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2hhbmdlJylcbiAgICB1cGRhdGVDb250cm9sVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy5jb250cm9sVmFsdWUpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUoY29udHJvbFZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIGlmIChjb250cm9sVmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNsYW1wZWRDb250cm9sVmFsdWUgPSBjbGFtcChjb250cm9sVmFsdWUsIHRoaXMubWluLCB0aGlzLm1heCk7XG5cbiAgICAgICAgdHVpQXNzZXJ0LmFzc2VydChcbiAgICAgICAgICAgIGNvbnRyb2xWYWx1ZSA9PT0gY2xhbXBlZENvbnRyb2xWYWx1ZSxcbiAgICAgICAgICAgICdcXG5bU2xpZGVyS2V5U3RlcHNdOiBZb3UgY2Fubm90IHByb2dyYW1tYXRpY2FsbHkgc2V0IHZhbHVlIHdoaWNoIGlzIGxlc3MvbW9yZSB0aGFuIG1pbi9tYXgnLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc2xpZGVyLnZhbHVlID0gdGhpcy50cmFuc2Zvcm1Ub05hdGl2ZVZhbHVlKGNsYW1wZWRDb250cm9sVmFsdWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGYWxsYmFja1ZhbHVlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgdHJhbnNmb3JtVG9OYXRpdmVWYWx1ZShjb250cm9sVmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHttaW4sIG1heH0gPSB0aGlzLnNsaWRlcjtcbiAgICAgICAgY29uc3QgbmV3VmFsdWVQZXJjZW50YWdlID0gdHVpS2V5U3RlcFZhbHVlVG9QZXJjZW50YWdlKFxuICAgICAgICAgICAgY29udHJvbFZhbHVlLFxuICAgICAgICAgICAgdGhpcy5rZXlTdGVwcyxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gKG5ld1ZhbHVlUGVyY2VudGFnZSAqIChtYXggLSBtaW4pKSAvIDEwMCArIG1pbjtcbiAgICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgRE9OVCBVU0UgSVQhIEl0IGlzIGp1c3QgdGVtcG9yYXJ5IHNvbHV0aW9uIGZvciBpbnRlcm5hbCBwdXJwb3NlcyBvbmx5LiBXZSB3aWxsIGRlbGV0ZSBpdCBpbiBuZXh0IG1ham9yIHJlbGVhc2UuXG4gKiBUT0RPIGRlbGV0ZSBpdCBpbiB2My4wXG4gKlxuICovXG5AUGlwZSh7bmFtZTogJ3R1aVNsaWRlclRpY2tMYWJlbCd9KVxuZXhwb3J0IGNsYXNzIFR1aVNsaWRlclRpY2tMYWJlbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0odGlja0luZGV4OiBudW1iZXIsIHRvdGFsU2VnbWVudHM6IG51bWJlciwga2V5U3RlcHM6IFR1aUtleVN0ZXBzKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgcGVyY2VudGFnZSA9ICgxMDAgLyB0b3RhbFNlZ21lbnRzKSAqIHRpY2tJbmRleDtcblxuICAgICAgICByZXR1cm4gdHVpUGVyY2VudGFnZVRvS2V5U3RlcFZhbHVlKHBlcmNlbnRhZ2UsIGtleVN0ZXBzKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { __decorate, __param } from "tslib";
|
|
2
|
-
import { DOCUMENT } from '@angular/common';
|
|
3
|
-
import { Directive, ElementRef, HostListener, Inject, Input } from '@angular/core';
|
|
4
|
-
import { tuiCoerceBooleanProperty, tuiDefaultProp, TuiDestroyService, typedFromEvent, } from '@taiga-ui/cdk';
|
|
5
|
-
import { combineLatest, merge, Observable } from 'rxjs';
|
|
6
|
-
import { filter, mapTo, takeUntil, tap } from 'rxjs/operators';
|
|
7
|
-
const SLIDER_INTERACTION_KEYS = new Set([
|
|
8
|
-
'ArrowLeft',
|
|
9
|
-
'ArrowRight',
|
|
10
|
-
'ArrowUp',
|
|
11
|
-
'ArrowDown',
|
|
12
|
-
'Home',
|
|
13
|
-
'End',
|
|
14
|
-
'PageUp',
|
|
15
|
-
'PageDown',
|
|
16
|
-
]);
|
|
17
|
-
/**
|
|
18
|
-
* Native <input type='range' readonly> doesn't work.
|
|
19
|
-
* This directive imitates this native behaviour.
|
|
20
|
-
*/
|
|
21
|
-
// @dynamic
|
|
22
|
-
let TuiSliderReadonlyDirective = class TuiSliderReadonlyDirective {
|
|
23
|
-
constructor(elementRef, documentRef, destroy$) {
|
|
24
|
-
this.readonly = true;
|
|
25
|
-
const touchStart$ = typedFromEvent(elementRef.nativeElement, 'touchstart', {
|
|
26
|
-
passive: false,
|
|
27
|
-
});
|
|
28
|
-
const touchMove$ = typedFromEvent(documentRef, 'touchmove', {
|
|
29
|
-
passive: false,
|
|
30
|
-
});
|
|
31
|
-
const touchEnd$ = typedFromEvent(documentRef, 'touchend', {
|
|
32
|
-
passive: true,
|
|
33
|
-
});
|
|
34
|
-
const shouldPreventMove$ = merge(touchStart$.pipe(tap(e => this.preventEvent(e)), mapTo(true)), touchEnd$.pipe(mapTo(false)));
|
|
35
|
-
/**
|
|
36
|
-
* @bad TODO think about another solution.
|
|
37
|
-
* Keep in mind that preventing touch event (on slider) inside `@HostListener('touchstart')` doesn't work for mobile chrome.
|
|
38
|
-
*/
|
|
39
|
-
combineLatest([touchMove$, shouldPreventMove$])
|
|
40
|
-
.pipe(filter(([_, shouldPreventMove]) => shouldPreventMove), takeUntil(destroy$))
|
|
41
|
-
.subscribe(([moveEvent]) => this.preventEvent(moveEvent));
|
|
42
|
-
}
|
|
43
|
-
preventEvent(event) {
|
|
44
|
-
if (event.cancelable && tuiCoerceBooleanProperty(this.readonly)) {
|
|
45
|
-
event.preventDefault();
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
preventKeyboardInteraction(event) {
|
|
49
|
-
if (SLIDER_INTERACTION_KEYS.has(event.key)) {
|
|
50
|
-
this.preventEvent(event);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
TuiSliderReadonlyDirective.ctorParameters = () => [
|
|
55
|
-
{ type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
|
|
56
|
-
{ type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
57
|
-
{ type: Observable, decorators: [{ type: Inject, args: [TuiDestroyService,] }] }
|
|
58
|
-
];
|
|
59
|
-
__decorate([
|
|
60
|
-
Input(),
|
|
61
|
-
tuiDefaultProp()
|
|
62
|
-
], TuiSliderReadonlyDirective.prototype, "readonly", void 0);
|
|
63
|
-
__decorate([
|
|
64
|
-
HostListener('mousedown', ['$event'])
|
|
65
|
-
], TuiSliderReadonlyDirective.prototype, "preventEvent", null);
|
|
66
|
-
__decorate([
|
|
67
|
-
HostListener('keydown', ['$event'])
|
|
68
|
-
], TuiSliderReadonlyDirective.prototype, "preventKeyboardInteraction", null);
|
|
69
|
-
TuiSliderReadonlyDirective = __decorate([
|
|
70
|
-
Directive({
|
|
71
|
-
selector: 'input[tuiSlider][readonly]',
|
|
72
|
-
providers: [TuiDestroyService],
|
|
73
|
-
}),
|
|
74
|
-
__param(0, Inject(ElementRef)),
|
|
75
|
-
__param(1, Inject(DOCUMENT)),
|
|
76
|
-
__param(2, Inject(TuiDestroyService))
|
|
77
|
-
], TuiSliderReadonlyDirective);
|
|
78
|
-
export { TuiSliderReadonlyDirective };
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLXJlYWRvbmx5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9zbGlkZXIvIiwic291cmNlcyI6WyJzbGlkZXItcmVhZG9ubHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUNILHdCQUF3QixFQUN4QixjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLGNBQWMsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RCxNQUFNLHVCQUF1QixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ3BDLFdBQVc7SUFDWCxZQUFZO0lBQ1osU0FBUztJQUNULFdBQVc7SUFDWCxNQUFNO0lBQ04sS0FBSztJQUNMLFFBQVE7SUFDUixVQUFVO0NBQ2IsQ0FBQyxDQUFDO0FBRUg7OztHQUdHO0FBQ0gsV0FBVztBQUtYLElBQWEsMEJBQTBCLEdBQXZDLE1BQWEsMEJBQTBCO0lBS25DLFlBQ3dCLFVBQXdDLEVBQzFDLFdBQXFCLEVBRXZDLFFBQTZCO1FBTmpDLGFBQVEsR0FBcUIsSUFBSSxDQUFDO1FBUTlCLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRTtZQUN2RSxPQUFPLEVBQUUsS0FBSztTQUNqQixDQUFDLENBQUM7UUFDSCxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRTtZQUN4RCxPQUFPLEVBQUUsS0FBSztTQUNqQixDQUFDLENBQUM7UUFDSCxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRTtZQUN0RCxPQUFPLEVBQUUsSUFBSTtTQUNoQixDQUFDLENBQUM7UUFFSCxNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FDNUIsV0FBVyxDQUFDLElBQUksQ0FDWixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzlCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FDZCxFQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQy9CLENBQUM7UUFFRjs7O1dBR0c7UUFDSCxhQUFhLENBQUMsQ0FBQyxVQUFVLEVBQUUsa0JBQWtCLENBQUMsQ0FBQzthQUMxQyxJQUFJLENBQ0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFDckQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUN0QjthQUNBLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBR0QsWUFBWSxDQUFDLEtBQVk7UUFDckIsSUFBSSxLQUFLLENBQUMsVUFBVSxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM3RCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDMUI7SUFDTCxDQUFDO0lBR0QsMEJBQTBCLENBQUMsS0FBb0I7UUFDM0MsSUFBSSx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7SUFDTCxDQUFDO0NBQ0osQ0FBQTs7WUFoRHVDLFVBQVUsdUJBQXpDLE1BQU0sU0FBQyxVQUFVO1lBQ2EsUUFBUSx1QkFBdEMsTUFBTSxTQUFDLFFBQVE7WUFFTixVQUFVLHVCQURuQixNQUFNLFNBQUMsaUJBQWlCOztBQUw3QjtJQUZDLEtBQUssRUFBRTtJQUNQLGNBQWMsRUFBRTs0REFDaUI7QUF1Q2xDO0lBREMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzhEQUtyQztBQUdEO0lBREMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRFQUtuQztBQXJEUSwwQkFBMEI7SUFKdEMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLDRCQUE0QjtRQUN0QyxTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztLQUNqQyxDQUFDO0lBT08sV0FBQSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDbEIsV0FBQSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDaEIsV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtHQVJyQiwwQkFBMEIsQ0FzRHRDO1NBdERZLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgdHVpQ29lcmNlQm9vbGVhblByb3BlcnR5LFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aURlc3Ryb3lTZXJ2aWNlLFxuICAgIHR5cGVkRnJvbUV2ZW50LFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgbWVyZ2UsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcFRvLCB0YWtlVW50aWwsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCBTTElERVJfSU5URVJBQ1RJT05fS0VZUyA9IG5ldyBTZXQoW1xuICAgICdBcnJvd0xlZnQnLFxuICAgICdBcnJvd1JpZ2h0JyxcbiAgICAnQXJyb3dVcCcsXG4gICAgJ0Fycm93RG93bicsXG4gICAgJ0hvbWUnLFxuICAgICdFbmQnLFxuICAgICdQYWdlVXAnLFxuICAgICdQYWdlRG93bicsXG5dKTtcblxuLyoqXG4gKiBOYXRpdmUgPGlucHV0IHR5cGU9J3JhbmdlJyByZWFkb25seT4gZG9lc24ndCB3b3JrLlxuICogVGhpcyBkaXJlY3RpdmUgaW1pdGF0ZXMgdGhpcyBuYXRpdmUgYmVoYXZpb3VyLlxuICovXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdpbnB1dFt0dWlTbGlkZXJdW3JlYWRvbmx5XScsXG4gICAgcHJvdmlkZXJzOiBbVHVpRGVzdHJveVNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlTbGlkZXJSZWFkb25seURpcmVjdGl2ZSB7XG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHJlYWRvbmx5OiBzdHJpbmcgfCBib29sZWFuID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50UmVmOiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChUdWlEZXN0cm95U2VydmljZSlcbiAgICAgICAgZGVzdHJveSQ6IE9ic2VydmFibGU8dW5rbm93bj4sXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IHRvdWNoU3RhcnQkID0gdHlwZWRGcm9tRXZlbnQoZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndG91Y2hzdGFydCcsIHtcbiAgICAgICAgICAgIHBhc3NpdmU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdG91Y2hNb3ZlJCA9IHR5cGVkRnJvbUV2ZW50KGRvY3VtZW50UmVmLCAndG91Y2htb3ZlJywge1xuICAgICAgICAgICAgcGFzc2l2ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB0b3VjaEVuZCQgPSB0eXBlZEZyb21FdmVudChkb2N1bWVudFJlZiwgJ3RvdWNoZW5kJywge1xuICAgICAgICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc2hvdWxkUHJldmVudE1vdmUkID0gbWVyZ2UoXG4gICAgICAgICAgICB0b3VjaFN0YXJ0JC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcChlID0+IHRoaXMucHJldmVudEV2ZW50KGUpKSxcbiAgICAgICAgICAgICAgICBtYXBUbyh0cnVlKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0b3VjaEVuZCQucGlwZShtYXBUbyhmYWxzZSkpLFxuICAgICAgICApO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAYmFkIFRPRE8gdGhpbmsgYWJvdXQgYW5vdGhlciBzb2x1dGlvbi5cbiAgICAgICAgICogS2VlcCBpbiBtaW5kIHRoYXQgcHJldmVudGluZyB0b3VjaCBldmVudCAob24gc2xpZGVyKSBpbnNpZGUgYEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnKWAgZG9lc24ndCB3b3JrIGZvciBtb2JpbGUgY2hyb21lLlxuICAgICAgICAgKi9cbiAgICAgICAgY29tYmluZUxhdGVzdChbdG91Y2hNb3ZlJCwgc2hvdWxkUHJldmVudE1vdmUkXSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoW18sIHNob3VsZFByZXZlbnRNb3ZlXSkgPT4gc2hvdWxkUHJldmVudE1vdmUpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbChkZXN0cm95JCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChbbW92ZUV2ZW50XSkgPT4gdGhpcy5wcmV2ZW50RXZlbnQobW92ZUV2ZW50KSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBwcmV2ZW50RXZlbnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5jYW5jZWxhYmxlICYmIHR1aUNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh0aGlzLnJlYWRvbmx5KSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIHByZXZlbnRLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChTTElERVJfSU5URVJBQ1RJT05fS0VZUy5oYXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgdGhpcy5wcmV2ZW50RXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|