@taiga-ui/kit 5.0.0-rc.0 → 5.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ export declare class TuiInputRange extends TuiControl<readonly [number, number]>
8
8
  private readonly options;
9
9
  private readonly isMobile;
10
10
  private readonly quantumTransformer;
11
- protected readonly size: import("@angular/core").Signal<"m" | "s" | "l">;
11
+ protected readonly size: import("@angular/core").Signal<"m" | "l" | "s">;
12
12
  protected start: number;
13
13
  protected end: number;
14
14
  protected side: 'end' | 'start';
@@ -1,16 +1,13 @@
1
1
  import { ElementRef } from '@angular/core';
2
2
  import { TuiControl } from '@taiga-ui/cdk/classes';
3
- import { type TuiSizeS } from '@taiga-ui/core/types';
4
3
  import * as i0 from "@angular/core";
5
4
  import * as i1 from "./range-change.directive";
6
5
  export declare class TuiRange extends TuiControl<[number, number]> {
7
6
  private readonly el;
8
- protected readonly options: import("@taiga-ui/kit/components/slider").TuiSliderOptions;
9
7
  protected lastActiveThumb: 'end' | 'start';
10
8
  readonly min: import("@angular/core").InputSignal<number>;
11
9
  readonly max: import("@angular/core").InputSignal<number>;
12
10
  readonly step: import("@angular/core").InputSignal<number>;
13
- readonly size: import("@angular/core").InputSignal<TuiSizeS>;
14
11
  readonly segments: import("@angular/core").InputSignal<number>;
15
12
  readonly keySteps: import("@angular/core").InputSignal<[[0, number], ...[number, number][], [100, number]] | undefined>;
16
13
  readonly focusable: import("@angular/core").InputSignal<boolean>;
@@ -32,5 +29,5 @@ export declare class TuiRange extends TuiControl<[number, number]> {
32
29
  private updateEnd;
33
30
  private checkDistance;
34
31
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiRange, never>;
35
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiRange, "tui-range", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "segments": { "alias": "segments"; "required": false; "isSignal": true; }; "keySteps": { "alias": "keySteps"; "required": false; "isSignal": true; }; "focusable": { "alias": "focusable"; "required": false; "isSignal": true; }; "margin": { "alias": "margin"; "required": false; "isSignal": true; }; "limit": { "alias": "limit"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.TuiRangeChange; inputs: {}; outputs: { "activeThumbChange": "activeThumbChange"; }; }]>;
32
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiRange, "tui-range", never, { "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "segments": { "alias": "segments"; "required": false; "isSignal": true; }; "keySteps": { "alias": "keySteps"; "required": false; "isSignal": true; }; "focusable": { "alias": "focusable"; "required": false; "isSignal": true; }; "margin": { "alias": "margin"; "required": false; "isSignal": true; }; "limit": { "alias": "limit"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.TuiRangeChange; inputs: {}; outputs: { "activeThumbChange": "activeThumbChange"; }; }]>;
36
33
  }
@@ -4,4 +4,3 @@ export * from './helpers/slider-readonly.directive';
4
4
  export * from './helpers/slider-thumb-label.component';
5
5
  export * from './slider';
6
6
  export * from './slider.component';
7
- export * from './slider.options';
@@ -2,9 +2,7 @@ import { TuiSliderKeyStepsBase } from './helpers/slider-key-steps.directive';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class TuiSliderComponent {
4
4
  private readonly control;
5
- protected readonly options: import("./slider.options").TuiSliderOptions;
6
5
  protected readonly ticksGradient: import("@angular/core").Signal<string>;
7
- readonly size: import("@angular/core").InputSignal<import("@taiga-ui/core/types").TuiSizeS>;
8
6
  readonly segments: import("@angular/core").InputSignalWithTransform<readonly number[], number | readonly number[]>;
9
7
  readonly el: HTMLInputElement;
10
8
  readonly keySteps: TuiSliderKeyStepsBase | null;
@@ -20,5 +18,5 @@ export declare class TuiSliderComponent {
20
18
  set value(newValue: number);
21
19
  protected getTicksGradient(segments: readonly number[]): string;
22
20
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiSliderComponent, never>;
23
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiSliderComponent, "input[type=range][tuiSlider]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "segments": { "alias": "segments"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiSliderComponent, "input[type=range][tuiSlider]", never, { "segments": { "alias": "segments"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
24
22
  }
@@ -15,7 +15,7 @@ import * as i2 from '@taiga-ui/core/components/input';
15
15
  import { TuiWithInput } from '@taiga-ui/core/components/input';
16
16
  import { TuiIcons, tuiIconStart } from '@taiga-ui/core/directives/icons';
17
17
  import * as i4 from '@taiga-ui/kit/components/slider';
18
- import { tuiSliderOptionsProvider, TuiSlider } from '@taiga-ui/kit/components/slider';
18
+ import { TuiSlider } from '@taiga-ui/kit/components/slider';
19
19
  import { tuiMaskito } from '@taiga-ui/kit/utils';
20
20
  import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
21
21
 
@@ -55,19 +55,11 @@ class TuiInputColorComponent extends TuiControl {
55
55
  this.onChange(`${value}${toHex(opacity)}`);
56
56
  }
57
57
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiInputColorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
58
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiInputColorComponent, isStandalone: true, selector: "input[tuiInputColor]", inputs: { format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "ngSkipHydration": "true", "spellcheck": "false" }, listeners: { "input": "onChange($event.target.value)" }, properties: { "disabled": "disabled()", "value": "value()", "attr.list": "null" } }, providers: [
59
- tuiAsControl(TuiInputColorComponent),
60
- tuiFallbackValueProvider(''),
61
- tuiSliderOptionsProvider({ trackColor: 'transparent' }),
62
- ], usesInheritance: true, hostDirectives: [{ directive: i1.MaskitoDirective }, { directive: i2.TuiWithInput }], ngImport: i0, template: "<ng-container *tuiTextfieldContent>\n <input\n #input\n tabindex=\"-1\"\n type=\"color\"\n class=\"tui-input-color_picker\"\n [attr.list]=\"list\"\n [class.tui-input-color_start]=\"align() === 'start'\"\n [disabled]=\"!interactive()\"\n [style.--t-opacity]=\"filled() ? opacity() / 255 : 0\"\n [value]=\"value().length > 6 ? value().slice(0, 7) : ''\"\n (input)=\"onInput(input.value)\"\n />\n @if (format() === 'hexa' && interactive()) {\n <input\n max=\"255\"\n tuiSlider\n type=\"range\"\n [ngModel]=\"opacity()\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onOpacity($event)\"\n (pointerdown.stop)=\"el.focus()\"\n />\n }\n</ng-container>\n", styles: [".tui-input-color_picker.tui-input-color_picker{position:relative;font-size:1rem;inline-size:calc(var(--t-height) / 2);block-size:calc(var(--t-height) / 2);border:none;border-radius:100%;padding:0!important;overflow:hidden;cursor:pointer;order:100;background:repeating-conic-gradient(var(--tui-border-normal) 0% 25%,transparent 0% 50%);box-shadow:0 0 0 1px var(--tui-border-normal)}.tui-input-color_picker.tui-input-color_picker:disabled{cursor:default}tui-textfield[data-size=s] .tui-input-color_picker{margin-inline-end:.25rem}tui-textfield[data-size=l] .tui-input-color_picker{margin-inline-end:-.25rem}.tui-input-color_picker.tui-input-color_start{position:absolute;top:50%;inset-inline-start:calc(var(--t-height) / 4);transform:translateY(-50%)}.tui-input-color_picker::-webkit-color-swatch-wrapper{padding:0}.tui-input-color_picker::-webkit-color-swatch{border:none;opacity:var(--t-opacity)}.tui-input-color_picker::-moz-color-swatch{border:none;opacity:var(--t-opacity)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.TuiSliderComponent, selector: "input[type=range][tuiSlider]", inputs: ["size", "segments"] }, { kind: "directive", type: TuiTextfieldContent, selector: "ng-template[tuiTextfieldContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
58
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiInputColorComponent, isStandalone: true, selector: "input[tuiInputColor]", inputs: { format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "ngSkipHydration": "true", "spellcheck": "false" }, listeners: { "input": "onChange($event.target.value)" }, properties: { "disabled": "disabled()", "value": "value()", "attr.list": "null" } }, providers: [tuiAsControl(TuiInputColorComponent), tuiFallbackValueProvider('')], usesInheritance: true, hostDirectives: [{ directive: i1.MaskitoDirective }, { directive: i2.TuiWithInput }], ngImport: i0, template: "<ng-container *tuiTextfieldContent>\n <input\n #input\n tabindex=\"-1\"\n type=\"color\"\n class=\"tui-input-color_picker\"\n [attr.list]=\"list\"\n [class.tui-input-color_start]=\"align() === 'start'\"\n [disabled]=\"!interactive()\"\n [style.--t-opacity]=\"filled() ? opacity() / 255 : 0\"\n [value]=\"value().length > 6 ? value().slice(0, 7) : ''\"\n (input)=\"onInput(input.value)\"\n />\n @if (format() === 'hexa' && interactive()) {\n <input\n max=\"255\"\n tuiSlider\n type=\"range\"\n [ngModel]=\"opacity()\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onOpacity($event)\"\n (pointerdown.stop)=\"el.focus()\"\n />\n }\n</ng-container>\n", styles: [".tui-input-color_picker.tui-input-color_picker{position:relative;font-size:1rem;inline-size:calc(var(--t-height) / 2);block-size:calc(var(--t-height) / 2);border:none;border-radius:100%;padding:0!important;overflow:hidden;cursor:pointer;order:100;background:repeating-conic-gradient(var(--tui-border-normal) 0% 25%,transparent 0% 50%);box-shadow:0 0 0 1px var(--tui-border-normal)}.tui-input-color_picker.tui-input-color_picker:disabled{cursor:default}tui-textfield[data-size=s] .tui-input-color_picker{margin-inline-end:.25rem}tui-textfield[data-size=l] .tui-input-color_picker{margin-inline-end:-.25rem}.tui-input-color_picker.tui-input-color_start{position:absolute;top:50%;inset-inline-start:calc(var(--t-height) / 4);transform:translateY(-50%)}.tui-input-color_picker::-webkit-color-swatch-wrapper{padding:0}.tui-input-color_picker::-webkit-color-swatch{border:none;opacity:var(--t-opacity)}.tui-input-color_picker::-moz-color-swatch{border:none;opacity:var(--t-opacity)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.TuiSliderComponent, selector: "input[type=range][tuiSlider]", inputs: ["segments"] }, { kind: "directive", type: TuiTextfieldContent, selector: "ng-template[tuiTextfieldContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
63
59
  }
64
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiInputColorComponent, decorators: [{
65
61
  type: Component,
66
- args: [{ selector: 'input[tuiInputColor]', imports: [FormsModule, TuiSlider, TuiTextfieldContent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
67
- tuiAsControl(TuiInputColorComponent),
68
- tuiFallbackValueProvider(''),
69
- tuiSliderOptionsProvider({ trackColor: 'transparent' }),
70
- ], hostDirectives: [MaskitoDirective, TuiWithInput], host: {
62
+ args: [{ selector: 'input[tuiInputColor]', imports: [FormsModule, TuiSlider, TuiTextfieldContent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiAsControl(TuiInputColorComponent), tuiFallbackValueProvider('')], hostDirectives: [MaskitoDirective, TuiWithInput], host: {
71
63
  ngSkipHydration: 'true',
72
64
  spellcheck: 'false',
73
65
  '[disabled]': 'disabled()',
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-color.mjs","sources":["../../../projects/kit/components/input-color/input-color.options.ts","../../../projects/kit/components/input-color/input-color.component.ts","../../../projects/kit/components/input-color/input-color.template.html","../../../projects/kit/components/input-color/input-color.ts","../../../projects/kit/components/input-color/taiga-ui-kit-components-input-color.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiHorizontalDirection} from '@taiga-ui/core/types';\n\nexport interface TuiInputColorOptions {\n readonly format: 'hex' | 'hexa';\n readonly align: TuiHorizontalDirection;\n}\n\nexport const [TUI_INPUT_COLOR_OPTIONS, tuiInputColorOptionsProvider] =\n tuiCreateOptions<TuiInputColorOptions>({\n format: 'hex',\n align: 'start',\n });\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {\n maskitoAddOnFocusPlugin,\n maskitoPrefixPostprocessorGenerator,\n maskitoRemoveOnBlurPlugin,\n} from '@maskito/kit';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiWithInput} from '@taiga-ui/core/components/input';\nimport {TuiTextfieldContent} from '@taiga-ui/core/components/textfield';\nimport {TuiIcons, tuiIconStart} from '@taiga-ui/core/directives/icons';\nimport {TuiSlider, tuiSliderOptionsProvider} from '@taiga-ui/kit/components/slider';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {TUI_INPUT_COLOR_OPTIONS} from './input-color.options';\n\nconst REGEX = /[0-9a-fA-F]/;\nconst EMPTY = '\"data:image/svg+xml;utf8,<svg xmlns=http://www.w3.org/2000/svg></svg>\"';\n\n@Component({\n selector: 'input[tuiInputColor]',\n imports: [FormsModule, TuiSlider, TuiTextfieldContent],\n templateUrl: './input-color.template.html',\n styleUrl: './input-color.style.less',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsControl(TuiInputColorComponent),\n tuiFallbackValueProvider(''),\n tuiSliderOptionsProvider({trackColor: 'transparent'}),\n ],\n hostDirectives: [MaskitoDirective, TuiWithInput],\n host: {\n ngSkipHydration: 'true',\n spellcheck: 'false',\n '[disabled]': 'disabled()',\n '[value]': 'value()',\n '[attr.list]': 'null',\n '(input)': 'onChange($event.target.value)',\n },\n})\nexport class TuiInputColorComponent extends TuiControl<string> {\n protected readonly options = inject(TUI_INPUT_COLOR_OPTIONS);\n protected readonly el = tuiInjectElement<HTMLInputElement>();\n protected readonly list = inject(new HostAttributeToken('list'), {optional: true});\n protected readonly start = inject(TuiIcons).iconStart() || '';\n protected readonly icon = tuiIconStart(\n computed(() => (this.align() === 'start' ? EMPTY : this.start)),\n {},\n );\n\n protected readonly maskito = tuiMaskito(\n computed((length = this.format().length * 2) => ({\n mask: ['#', ...Array.from<RegExp>({length}).fill(REGEX)],\n postprocessors: [maskitoPrefixPostprocessorGenerator('#')],\n plugins: [maskitoAddOnFocusPlugin('#'), maskitoRemoveOnBlurPlugin('#')],\n overwriteMode: 'replace',\n })),\n );\n\n protected readonly filled = computed(() =>\n this.format() === 'hex' ? this.value().length === 7 : this.value().length === 9,\n );\n\n protected readonly opacity = computed(() =>\n this.filled() && this.format() === 'hexa'\n ? Number.parseInt(this.value().slice(-2), 16)\n : 255,\n );\n\n public readonly format = input(this.options.format);\n public readonly align = input(this.options.align);\n\n protected onInput(value: string): void {\n this.onChange(\n this.format() === 'hex' ? value : `${value}${toHex(this.opacity())}`,\n );\n }\n\n protected onOpacity(opacity: number): void {\n const value = this.filled() ? this.value().slice(0, 7) : '#000000';\n\n this.onChange(`${value}${toHex(opacity)}`);\n }\n}\n\nfunction toHex(value: number): string {\n return value.toString(16).padStart(2, '0');\n}\n","<ng-container *tuiTextfieldContent>\n <input\n #input\n tabindex=\"-1\"\n type=\"color\"\n class=\"tui-input-color_picker\"\n [attr.list]=\"list\"\n [class.tui-input-color_start]=\"align() === 'start'\"\n [disabled]=\"!interactive()\"\n [style.--t-opacity]=\"filled() ? opacity() / 255 : 0\"\n [value]=\"value().length > 6 ? value().slice(0, 7) : ''\"\n (input)=\"onInput(input.value)\"\n />\n @if (format() === 'hexa' && interactive()) {\n <input\n max=\"255\"\n tuiSlider\n type=\"range\"\n [ngModel]=\"opacity()\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onOpacity($event)\"\n (pointerdown.stop)=\"el.focus()\"\n />\n }\n</ng-container>\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputColorComponent} from './input-color.component';\n\nexport const TuiInputColor = [\n TuiInputColorComponent,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-color.mjs","sources":["../../../projects/kit/components/input-color/input-color.options.ts","../../../projects/kit/components/input-color/input-color.component.ts","../../../projects/kit/components/input-color/input-color.template.html","../../../projects/kit/components/input-color/input-color.ts","../../../projects/kit/components/input-color/taiga-ui-kit-components-input-color.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiHorizontalDirection} from '@taiga-ui/core/types';\n\nexport interface TuiInputColorOptions {\n readonly format: 'hex' | 'hexa';\n readonly align: TuiHorizontalDirection;\n}\n\nexport const [TUI_INPUT_COLOR_OPTIONS, tuiInputColorOptionsProvider] =\n tuiCreateOptions<TuiInputColorOptions>({\n format: 'hex',\n align: 'start',\n });\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {MaskitoDirective} from '@maskito/angular';\nimport {\n maskitoAddOnFocusPlugin,\n maskitoPrefixPostprocessorGenerator,\n maskitoRemoveOnBlurPlugin,\n} from '@maskito/kit';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiWithInput} from '@taiga-ui/core/components/input';\nimport {TuiTextfieldContent} from '@taiga-ui/core/components/textfield';\nimport {TuiIcons, tuiIconStart} from '@taiga-ui/core/directives/icons';\nimport {TuiSlider} from '@taiga-ui/kit/components/slider';\nimport {tuiMaskito} from '@taiga-ui/kit/utils';\n\nimport {TUI_INPUT_COLOR_OPTIONS} from './input-color.options';\n\nconst REGEX = /[0-9a-fA-F]/;\nconst EMPTY = '\"data:image/svg+xml;utf8,<svg xmlns=http://www.w3.org/2000/svg></svg>\"';\n\n@Component({\n selector: 'input[tuiInputColor]',\n imports: [FormsModule, TuiSlider, TuiTextfieldContent],\n templateUrl: './input-color.template.html',\n styleUrl: './input-color.style.less',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsControl(TuiInputColorComponent), tuiFallbackValueProvider('')],\n hostDirectives: [MaskitoDirective, TuiWithInput],\n host: {\n ngSkipHydration: 'true',\n spellcheck: 'false',\n '[disabled]': 'disabled()',\n '[value]': 'value()',\n '[attr.list]': 'null',\n '(input)': 'onChange($event.target.value)',\n },\n})\nexport class TuiInputColorComponent extends TuiControl<string> {\n protected readonly options = inject(TUI_INPUT_COLOR_OPTIONS);\n protected readonly el = tuiInjectElement<HTMLInputElement>();\n protected readonly list = inject(new HostAttributeToken('list'), {optional: true});\n protected readonly start = inject(TuiIcons).iconStart() || '';\n protected readonly icon = tuiIconStart(\n computed(() => (this.align() === 'start' ? EMPTY : this.start)),\n {},\n );\n\n protected readonly maskito = tuiMaskito(\n computed((length = this.format().length * 2) => ({\n mask: ['#', ...Array.from<RegExp>({length}).fill(REGEX)],\n postprocessors: [maskitoPrefixPostprocessorGenerator('#')],\n plugins: [maskitoAddOnFocusPlugin('#'), maskitoRemoveOnBlurPlugin('#')],\n overwriteMode: 'replace',\n })),\n );\n\n protected readonly filled = computed(() =>\n this.format() === 'hex' ? this.value().length === 7 : this.value().length === 9,\n );\n\n protected readonly opacity = computed(() =>\n this.filled() && this.format() === 'hexa'\n ? Number.parseInt(this.value().slice(-2), 16)\n : 255,\n );\n\n public readonly format = input(this.options.format);\n public readonly align = input(this.options.align);\n\n protected onInput(value: string): void {\n this.onChange(\n this.format() === 'hex' ? value : `${value}${toHex(this.opacity())}`,\n );\n }\n\n protected onOpacity(opacity: number): void {\n const value = this.filled() ? this.value().slice(0, 7) : '#000000';\n\n this.onChange(`${value}${toHex(opacity)}`);\n }\n}\n\nfunction toHex(value: number): string {\n return value.toString(16).padStart(2, '0');\n}\n","<ng-container *tuiTextfieldContent>\n <input\n #input\n tabindex=\"-1\"\n type=\"color\"\n class=\"tui-input-color_picker\"\n [attr.list]=\"list\"\n [class.tui-input-color_start]=\"align() === 'start'\"\n [disabled]=\"!interactive()\"\n [style.--t-opacity]=\"filled() ? opacity() / 255 : 0\"\n [value]=\"value().length > 6 ? value().slice(0, 7) : ''\"\n (input)=\"onInput(input.value)\"\n />\n @if (format() === 'hexa' && interactive()) {\n <input\n max=\"255\"\n tuiSlider\n type=\"range\"\n [ngModel]=\"opacity()\"\n [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onOpacity($event)\"\n (pointerdown.stop)=\"el.focus()\"\n />\n }\n</ng-container>\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiInputColorComponent} from './input-color.component';\n\nexport const TuiInputColor = [\n TuiInputColorComponent,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -13,7 +13,6 @@ import { TUI_TEXTFIELD_OPTIONS, TuiTextfield } from '@taiga-ui/core/components/t
13
13
  import * as i2 from '@taiga-ui/kit/components/input-number';
14
14
  import { TuiInputNumberDirective, TUI_INPUT_NUMBER_OPTIONS, TuiQuantumValueTransformerBase, TuiInputNumber } from '@taiga-ui/kit/components/input-number';
15
15
  import { TuiRange } from '@taiga-ui/kit/components/range';
16
- import { tuiSliderOptionsProvider } from '@taiga-ui/kit/components/slider';
17
16
  import { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
18
17
  import * as i3 from '@taiga-ui/core/components/label';
19
18
 
@@ -118,23 +117,15 @@ class TuiInputRange extends TuiControl {
118
117
  return !x || tuiIsString(x) || tuiIsNumber(x);
119
118
  }
120
119
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiInputRange, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
121
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiInputRange, isStandalone: true, selector: "tui-input-range", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, segments: { classPropertyName: "segments", publicName: "segments", isSignal: true, isRequired: false, transformFunction: null }, keySteps: { classPropertyName: "keySteps", publicName: "keySteps", isSignal: true, isRequired: false, transformFunction: null }, quantum: { classPropertyName: "quantum", publicName: "quantum", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, postfix: { classPropertyName: "postfix", publicName: "postfix", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()", "style.--t-icon-lock": "contentEnd() ? \"none\" : null" } }, providers: [
122
- tuiAsControl(TuiInputRange),
123
- tuiSliderOptionsProvider({ trackColor: 'transparent' }),
124
- tuiFallbackValueProvider([0, 0]),
125
- ], viewQueries: [{ propertyName: "inputs", predicate: TuiInputNumberDirective, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "range", first: true, predicate: TuiRange, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<tui-textfield [content]=\"contentStartHidden ? '' : contentStart()\">\n <label tuiLabel>\n <ng-content />\n </label>\n\n <input\n tuiInputNumber\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [max]=\"value()[1]\"\n [min]=\"min()\"\n [postfix]=\"postfix()[0]\"\n [prefix]=\"prefix()[0]\"\n [readOnly]=\"readOnly()\"\n [(ngModel)]=\"start\"\n (blur)=\"start = value()[0]\"\n (keydown.arrowDown)=\"takeStep($event, [-1, 0])\"\n (keydown.arrowUp)=\"takeStep($event, [1, 0])\"\n (ngModelChange)=\"onInput([$event, null])\"\n />\n\n <input\n tuiInputNumber\n class=\"t-end\"\n [class._hidden]=\"!contentEndHidden || !this.interactive()\"\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [max]=\"max()\"\n [min]=\"value()[0]\"\n [postfix]=\"postfix()[1]\"\n [prefix]=\"prefix()[1]\"\n [readOnly]=\"readOnly()\"\n [(ngModel)]=\"end\"\n (blur)=\"end = value()[1]\"\n (keydown.arrowDown)=\"takeStep($event, [0, -1])\"\n (keydown.arrowUp)=\"takeStep($event, [0, 1])\"\n (ngModelChange)=\"onInput([null, $event])\"\n />\n\n @if (!contentEndHidden && contentEnd()) {\n <div class=\"t-content-end\">\n <ng-container *polymorpheusOutlet=\"contentEnd() as text; context: {$implicit: value()[1]}\">\n {{ text }}\n </ng-container>\n </div>\n }\n\n @if (interactive()) {\n <tui-range\n [focusable]=\"false\"\n [keySteps]=\"keySteps()\"\n [max]=\"max()\"\n [min]=\"min()\"\n [ngModel]=\"value()\"\n [segments]=\"segments()\"\n [step]=\"step()\"\n (activeThumbChange)=\"side = $event\"\n (ngModelChange)=\"onExternalValueUpdate($event)\"\n (pointerdown.prevent.stop)=\"focusToTextfield()\"\n />\n }\n</tui-textfield>\n", styles: [":host{position:relative;display:block}:host-context([tuiTable]){block-size:100%}.t-end{inset-inline:auto 0;inline-size:50%;text-align:end;padding-inline-start:0}.t-content-end{color:var(--tui-text-primary)}tui-textfield._with-label .t-content-end{padding-block-start:calc(var(--t-height) / 3)}._hidden._hidden{opacity:0}tui-range{position:absolute;z-index:1;inset:100% var(--t-padding) auto;margin:calc(-1 * var(--tui-thickness)) 0 0;pointer-events:auto}tui-textfield::ng-deep [tuiButtonX]{display:none!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: i2.TuiInputNumberDirective, selector: "input[tuiInputNumber]" }, { kind: "directive", type: i3.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i4.TuiTextfieldComponent, selector: "tui-textfield:not([multi])", inputs: ["content", "filler"] }, { kind: "component", type: TuiRange, selector: "tui-range", inputs: ["min", "max", "step", "size", "segments", "keySteps", "focusable", "margin", "limit"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
120
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiInputRange, isStandalone: true, selector: "tui-input-range", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, step: { classPropertyName: "step", publicName: "step", isSignal: true, isRequired: false, transformFunction: null }, segments: { classPropertyName: "segments", publicName: "segments", isSignal: true, isRequired: false, transformFunction: null }, keySteps: { classPropertyName: "keySteps", publicName: "keySteps", isSignal: true, isRequired: false, transformFunction: null }, quantum: { classPropertyName: "quantum", publicName: "quantum", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, postfix: { classPropertyName: "postfix", publicName: "postfix", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()", "style.--t-icon-lock": "contentEnd() ? \"none\" : null" } }, providers: [tuiAsControl(TuiInputRange), tuiFallbackValueProvider([0, 0])], viewQueries: [{ propertyName: "inputs", predicate: TuiInputNumberDirective, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "range", first: true, predicate: TuiRange, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<tui-textfield [content]=\"contentStartHidden ? '' : contentStart()\">\n <label tuiLabel>\n <ng-content />\n </label>\n\n <input\n tuiInputNumber\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [max]=\"value()[1]\"\n [min]=\"min()\"\n [postfix]=\"postfix()[0]\"\n [prefix]=\"prefix()[0]\"\n [readOnly]=\"readOnly()\"\n [(ngModel)]=\"start\"\n (blur)=\"start = value()[0]\"\n (keydown.arrowDown)=\"takeStep($event, [-1, 0])\"\n (keydown.arrowUp)=\"takeStep($event, [1, 0])\"\n (ngModelChange)=\"onInput([$event, null])\"\n />\n\n <input\n tuiInputNumber\n class=\"t-end\"\n [class._hidden]=\"!contentEndHidden || !this.interactive()\"\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [max]=\"max()\"\n [min]=\"value()[0]\"\n [postfix]=\"postfix()[1]\"\n [prefix]=\"prefix()[1]\"\n [readOnly]=\"readOnly()\"\n [(ngModel)]=\"end\"\n (blur)=\"end = value()[1]\"\n (keydown.arrowDown)=\"takeStep($event, [0, -1])\"\n (keydown.arrowUp)=\"takeStep($event, [0, 1])\"\n (ngModelChange)=\"onInput([null, $event])\"\n />\n\n @if (!contentEndHidden && contentEnd()) {\n <div class=\"t-content-end\">\n <ng-container *polymorpheusOutlet=\"contentEnd() as text; context: {$implicit: value()[1]}\">\n {{ text }}\n </ng-container>\n </div>\n }\n\n @if (interactive()) {\n <tui-range\n [focusable]=\"false\"\n [keySteps]=\"keySteps()\"\n [max]=\"max()\"\n [min]=\"min()\"\n [ngModel]=\"value()\"\n [segments]=\"segments()\"\n [step]=\"step()\"\n (activeThumbChange)=\"side = $event\"\n (ngModelChange)=\"onExternalValueUpdate($event)\"\n (pointerdown.prevent.stop)=\"focusToTextfield()\"\n />\n }\n</tui-textfield>\n", styles: [":host{position:relative;display:block}:host-context([tuiTable]){block-size:100%}.t-end{inset-inline:auto 0;inline-size:50%;text-align:end;padding-inline-start:0}.t-content-end{color:var(--tui-text-primary)}tui-textfield._with-label .t-content-end{padding-block-start:calc(var(--t-height) / 3)}._hidden._hidden{opacity:0}tui-range{position:absolute;z-index:1;inset:100% var(--t-padding) auto;margin:calc(-1*max(calc(calc(var(--tui-thumb-size, .75rem) / 2) - .25rem),.125rem)) 0 0;pointer-events:auto;background-color:transparent}tui-textfield::ng-deep [tuiButtonX]{display:none!important}tui-textfield::ng-deep .t-content{margin-inline-end:0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: i2.TuiInputNumberDirective, selector: "input[tuiInputNumber]" }, { kind: "directive", type: i3.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i4.TuiTextfieldComponent, selector: "tui-textfield:not([multi])", inputs: ["content", "filler"] }, { kind: "component", type: TuiRange, selector: "tui-range", inputs: ["min", "max", "step", "segments", "keySteps", "focusable", "margin", "limit"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
126
121
  }
127
122
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiInputRange, decorators: [{
128
123
  type: Component,
129
- args: [{ selector: 'tui-input-range', imports: [FormsModule, PolymorpheusOutlet, TuiInputNumber, TuiRange, TuiTextfield], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
130
- tuiAsControl(TuiInputRange),
131
- tuiSliderOptionsProvider({ trackColor: 'transparent' }),
132
- tuiFallbackValueProvider([0, 0]),
133
- ], host: {
124
+ args: [{ selector: 'tui-input-range', imports: [FormsModule, PolymorpheusOutlet, TuiInputNumber, TuiRange, TuiTextfield], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiAsControl(TuiInputRange), tuiFallbackValueProvider([0, 0])], host: {
134
125
  '[attr.data-size]': 'size()',
135
126
  // TODO: Delete this line and put `tui-input-range:has(.t-content-end) {--t-icon-lock: none}` to proprietary styles
136
127
  '[style.--t-icon-lock]': 'contentEnd() ? "none" : null',
137
- }, template: "<tui-textfield [content]=\"contentStartHidden ? '' : contentStart()\">\n <label tuiLabel>\n <ng-content />\n </label>\n\n <input\n tuiInputNumber\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [max]=\"value()[1]\"\n [min]=\"min()\"\n [postfix]=\"postfix()[0]\"\n [prefix]=\"prefix()[0]\"\n [readOnly]=\"readOnly()\"\n [(ngModel)]=\"start\"\n (blur)=\"start = value()[0]\"\n (keydown.arrowDown)=\"takeStep($event, [-1, 0])\"\n (keydown.arrowUp)=\"takeStep($event, [1, 0])\"\n (ngModelChange)=\"onInput([$event, null])\"\n />\n\n <input\n tuiInputNumber\n class=\"t-end\"\n [class._hidden]=\"!contentEndHidden || !this.interactive()\"\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [max]=\"max()\"\n [min]=\"value()[0]\"\n [postfix]=\"postfix()[1]\"\n [prefix]=\"prefix()[1]\"\n [readOnly]=\"readOnly()\"\n [(ngModel)]=\"end\"\n (blur)=\"end = value()[1]\"\n (keydown.arrowDown)=\"takeStep($event, [0, -1])\"\n (keydown.arrowUp)=\"takeStep($event, [0, 1])\"\n (ngModelChange)=\"onInput([null, $event])\"\n />\n\n @if (!contentEndHidden && contentEnd()) {\n <div class=\"t-content-end\">\n <ng-container *polymorpheusOutlet=\"contentEnd() as text; context: {$implicit: value()[1]}\">\n {{ text }}\n </ng-container>\n </div>\n }\n\n @if (interactive()) {\n <tui-range\n [focusable]=\"false\"\n [keySteps]=\"keySteps()\"\n [max]=\"max()\"\n [min]=\"min()\"\n [ngModel]=\"value()\"\n [segments]=\"segments()\"\n [step]=\"step()\"\n (activeThumbChange)=\"side = $event\"\n (ngModelChange)=\"onExternalValueUpdate($event)\"\n (pointerdown.prevent.stop)=\"focusToTextfield()\"\n />\n }\n</tui-textfield>\n", styles: [":host{position:relative;display:block}:host-context([tuiTable]){block-size:100%}.t-end{inset-inline:auto 0;inline-size:50%;text-align:end;padding-inline-start:0}.t-content-end{color:var(--tui-text-primary)}tui-textfield._with-label .t-content-end{padding-block-start:calc(var(--t-height) / 3)}._hidden._hidden{opacity:0}tui-range{position:absolute;z-index:1;inset:100% var(--t-padding) auto;margin:calc(-1 * var(--tui-thickness)) 0 0;pointer-events:auto}tui-textfield::ng-deep [tuiButtonX]{display:none!important}\n"] }]
128
+ }, template: "<tui-textfield [content]=\"contentStartHidden ? '' : contentStart()\">\n <label tuiLabel>\n <ng-content />\n </label>\n\n <input\n tuiInputNumber\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [max]=\"value()[1]\"\n [min]=\"min()\"\n [postfix]=\"postfix()[0]\"\n [prefix]=\"prefix()[0]\"\n [readOnly]=\"readOnly()\"\n [(ngModel)]=\"start\"\n (blur)=\"start = value()[0]\"\n (keydown.arrowDown)=\"takeStep($event, [-1, 0])\"\n (keydown.arrowUp)=\"takeStep($event, [1, 0])\"\n (ngModelChange)=\"onInput([$event, null])\"\n />\n\n <input\n tuiInputNumber\n class=\"t-end\"\n [class._hidden]=\"!contentEndHidden || !this.interactive()\"\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [max]=\"max()\"\n [min]=\"value()[0]\"\n [postfix]=\"postfix()[1]\"\n [prefix]=\"prefix()[1]\"\n [readOnly]=\"readOnly()\"\n [(ngModel)]=\"end\"\n (blur)=\"end = value()[1]\"\n (keydown.arrowDown)=\"takeStep($event, [0, -1])\"\n (keydown.arrowUp)=\"takeStep($event, [0, 1])\"\n (ngModelChange)=\"onInput([null, $event])\"\n />\n\n @if (!contentEndHidden && contentEnd()) {\n <div class=\"t-content-end\">\n <ng-container *polymorpheusOutlet=\"contentEnd() as text; context: {$implicit: value()[1]}\">\n {{ text }}\n </ng-container>\n </div>\n }\n\n @if (interactive()) {\n <tui-range\n [focusable]=\"false\"\n [keySteps]=\"keySteps()\"\n [max]=\"max()\"\n [min]=\"min()\"\n [ngModel]=\"value()\"\n [segments]=\"segments()\"\n [step]=\"step()\"\n (activeThumbChange)=\"side = $event\"\n (ngModelChange)=\"onExternalValueUpdate($event)\"\n (pointerdown.prevent.stop)=\"focusToTextfield()\"\n />\n }\n</tui-textfield>\n", styles: [":host{position:relative;display:block}:host-context([tuiTable]){block-size:100%}.t-end{inset-inline:auto 0;inline-size:50%;text-align:end;padding-inline-start:0}.t-content-end{color:var(--tui-text-primary)}tui-textfield._with-label .t-content-end{padding-block-start:calc(var(--t-height) / 3)}._hidden._hidden{opacity:0}tui-range{position:absolute;z-index:1;inset:100% var(--t-padding) auto;margin:calc(-1*max(calc(calc(var(--tui-thumb-size, .75rem) / 2) - .25rem),.125rem)) 0 0;pointer-events:auto;background-color:transparent}tui-textfield::ng-deep [tuiButtonX]{display:none!important}tui-textfield::ng-deep .t-content{margin-inline-end:0}\n"] }]
138
129
  }] });
139
130
 
140
131
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-range.mjs","sources":["../../../projects/kit/components/input-range/input-range.component.ts","../../../projects/kit/components/input-range/input-range.template.html","../../../projects/kit/components/input-range/taiga-ui-kit-components-input-range.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {CHAR_EN_DASH, CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiIsFocused} from '@taiga-ui/cdk/utils/focus';\nimport {tuiIsNumber, tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_TEXTFIELD_OPTIONS, TuiTextfield} from '@taiga-ui/core/components/textfield';\nimport {\n TUI_INPUT_NUMBER_OPTIONS,\n TuiInputNumber,\n TuiInputNumberDirective,\n TuiQuantumValueTransformerBase,\n} from '@taiga-ui/kit/components/input-number';\nimport {TuiRange} from '@taiga-ui/kit/components/range';\nimport {\n type TuiKeySteps,\n tuiSliderOptionsProvider,\n} from '@taiga-ui/kit/components/slider';\nimport {\n type PolymorpheusContent,\n PolymorpheusOutlet,\n type PolymorpheusPrimitive,\n} from '@taiga-ui/polymorpheus';\n\nconst transform = (x?: readonly [string, string] | null): readonly [string, string] =>\n x ?? ['', ''];\n\n@Component({\n selector: 'tui-input-range',\n imports: [FormsModule, PolymorpheusOutlet, TuiInputNumber, TuiRange, TuiTextfield],\n templateUrl: './input-range.template.html',\n styleUrl: './input-range.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsControl(TuiInputRange),\n tuiSliderOptionsProvider({trackColor: 'transparent'}),\n tuiFallbackValueProvider([0, 0]),\n ],\n host: {\n '[attr.data-size]': 'size()',\n // TODO: Delete this line and put `tui-input-range:has(.t-content-end) {--t-icon-lock: none}` to proprietary styles\n '[style.--t-icon-lock]': 'contentEnd() ? \"none\" : null',\n },\n})\nexport class TuiInputRange extends TuiControl<readonly [number, number]> {\n private readonly inputs = viewChildren(TuiInputNumberDirective, {read: ElementRef});\n private readonly range = viewChild(TuiRange);\n private readonly options = inject(TUI_INPUT_NUMBER_OPTIONS);\n private readonly isMobile = inject(WA_IS_MOBILE);\n private readonly quantumTransformer = computed(\n () => new TuiQuantumValueTransformerBase(this.quantum()),\n );\n\n protected readonly size = inject(TUI_TEXTFIELD_OPTIONS).size;\n protected start = this.value()[0];\n protected end = this.value()[1];\n protected side: 'end' | 'start' = 'start';\n protected readonly contentStart = computed(() => {\n const [start, end] = this.content().map((x, i) => {\n const value = this.value()[i]!;\n\n return typeof x === 'function' ? x({$implicit: value}) : x || value;\n });\n\n if (this.interactive() || !this.isPrimitive(start) || !this.isPrimitive(end)) {\n return this.content()[0];\n }\n\n return `${start}${CHAR_NO_BREAK_SPACE}${CHAR_EN_DASH}${CHAR_NO_BREAK_SPACE}${end}`;\n });\n\n protected readonly contentEnd = computed(() =>\n this.contentStart() === this.content()[0] ? this.content()[1] : '',\n );\n\n public readonly min = input(0);\n public readonly max = input(100);\n public readonly step = input(1);\n public readonly segments = input(1);\n public readonly keySteps = input<TuiKeySteps>();\n public readonly quantum = input(0);\n public readonly prefix = input([this.options.prefix, this.options.prefix], {\n transform,\n });\n\n public readonly postfix = input([this.options.postfix, this.options.postfix], {\n transform,\n });\n\n public content = input<\n readonly [\n PolymorpheusContent<TuiContext<number>>,\n PolymorpheusContent<TuiContext<number>>,\n ]\n >(['', '']);\n\n public override writeValue(value: [number, number]): void {\n super.writeValue(value);\n this.setTextfieldValues(this.value());\n }\n\n protected get contentStartHidden(): boolean {\n return this.interactive() && tuiIsFocused(this.textfieldStart);\n }\n\n protected get contentEndHidden(): boolean {\n return (\n !this.content()[1] || (this.interactive() && tuiIsFocused(this.textfieldEnd))\n );\n }\n\n protected takeStep(\n event: Event | KeyboardEvent,\n coefficients: readonly [number, number],\n ): void {\n if (!this.interactive() || !this.range()) {\n return;\n }\n\n event.preventDefault();\n\n const [start, end] = this.value();\n const newValue = this.valueGuard(this.range()!.takeStep(coefficients));\n\n if (newValue[0] !== start || newValue[1] !== end) {\n this.onExternalValueUpdate(newValue);\n }\n }\n\n protected onInput([start, end]: [number | null, number | null]): void {\n this.setValue([start ?? this.value()[0], end ?? this.value()[1]]);\n }\n\n protected onExternalValueUpdate(value: readonly [number, number]): void {\n this.setValue(value);\n this.setTextfieldValues(this.value());\n\n setTimeout((end = Number.MAX_SAFE_INTEGER) => {\n if (tuiIsFocused(this.activeTextfield)) {\n this.activeTextfield?.setSelectionRange(end, end);\n }\n });\n }\n\n protected focusToTextfield(): void {\n if (!this.isMobile) {\n this.activeTextfield?.focus();\n }\n }\n\n protected setTextfieldValues([start, end]: readonly [number, number]): void {\n this.start = start;\n this.end = end;\n }\n\n private get textfieldStart(): HTMLInputElement | null {\n return this.inputs()[0]?.nativeElement || null;\n }\n\n private get textfieldEnd(): HTMLInputElement | null {\n return this.inputs()[this.inputs().length - 1]?.nativeElement || null;\n }\n\n private get activeTextfield(): HTMLInputElement | null {\n return this.side === 'start' ? this.textfieldStart : this.textfieldEnd;\n }\n\n private setValue(value: readonly [number, number]): void {\n this.onChange(this.valueGuard(value));\n }\n\n private valueGuard(value: readonly [number, number]): readonly [number, number] {\n const [prevStart, prevEnd] = this.value();\n const [start, end] = value.map(\n (x) => this.quantumTransformer().toControlValue(x) ?? x,\n ) as unknown as readonly [number, number];\n\n return [Math.min(start, prevEnd), Math.max(end, prevStart)];\n }\n\n private isPrimitive(x: PolymorpheusContent): x is PolymorpheusPrimitive {\n return !x || tuiIsString(x) || tuiIsNumber(x);\n }\n}\n","<tui-textfield [content]=\"contentStartHidden ? '' : contentStart()\">\n <label tuiLabel>\n <ng-content />\n </label>\n\n <input\n tuiInputNumber\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [max]=\"value()[1]\"\n [min]=\"min()\"\n [postfix]=\"postfix()[0]\"\n [prefix]=\"prefix()[0]\"\n [readOnly]=\"readOnly()\"\n [(ngModel)]=\"start\"\n (blur)=\"start = value()[0]\"\n (keydown.arrowDown)=\"takeStep($event, [-1, 0])\"\n (keydown.arrowUp)=\"takeStep($event, [1, 0])\"\n (ngModelChange)=\"onInput([$event, null])\"\n />\n\n <input\n tuiInputNumber\n class=\"t-end\"\n [class._hidden]=\"!contentEndHidden || !this.interactive()\"\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [max]=\"max()\"\n [min]=\"value()[0]\"\n [postfix]=\"postfix()[1]\"\n [prefix]=\"prefix()[1]\"\n [readOnly]=\"readOnly()\"\n [(ngModel)]=\"end\"\n (blur)=\"end = value()[1]\"\n (keydown.arrowDown)=\"takeStep($event, [0, -1])\"\n (keydown.arrowUp)=\"takeStep($event, [0, 1])\"\n (ngModelChange)=\"onInput([null, $event])\"\n />\n\n @if (!contentEndHidden && contentEnd()) {\n <div class=\"t-content-end\">\n <ng-container *polymorpheusOutlet=\"contentEnd() as text; context: {$implicit: value()[1]}\">\n {{ text }}\n </ng-container>\n </div>\n }\n\n @if (interactive()) {\n <tui-range\n [focusable]=\"false\"\n [keySteps]=\"keySteps()\"\n [max]=\"max()\"\n [min]=\"min()\"\n [ngModel]=\"value()\"\n [segments]=\"segments()\"\n [step]=\"step()\"\n (activeThumbChange)=\"side = $event\"\n (ngModelChange)=\"onExternalValueUpdate($event)\"\n (pointerdown.prevent.stop)=\"focusToTextfield()\"\n />\n }\n</tui-textfield>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-range.mjs","sources":["../../../projects/kit/components/input-range/input-range.component.ts","../../../projects/kit/components/input-range/input-range.template.html","../../../projects/kit/components/input-range/taiga-ui-kit-components-input-range.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {CHAR_EN_DASH, CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\nimport {tuiFallbackValueProvider} from '@taiga-ui/cdk/tokens';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {tuiIsFocused} from '@taiga-ui/cdk/utils/focus';\nimport {tuiIsNumber, tuiIsString} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_TEXTFIELD_OPTIONS, TuiTextfield} from '@taiga-ui/core/components/textfield';\nimport {\n TUI_INPUT_NUMBER_OPTIONS,\n TuiInputNumber,\n TuiInputNumberDirective,\n TuiQuantumValueTransformerBase,\n} from '@taiga-ui/kit/components/input-number';\nimport {TuiRange} from '@taiga-ui/kit/components/range';\nimport {type TuiKeySteps} from '@taiga-ui/kit/components/slider';\nimport {\n type PolymorpheusContent,\n PolymorpheusOutlet,\n type PolymorpheusPrimitive,\n} from '@taiga-ui/polymorpheus';\n\nconst transform = (x?: readonly [string, string] | null): readonly [string, string] =>\n x ?? ['', ''];\n\n@Component({\n selector: 'tui-input-range',\n imports: [FormsModule, PolymorpheusOutlet, TuiInputNumber, TuiRange, TuiTextfield],\n templateUrl: './input-range.template.html',\n styleUrl: './input-range.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsControl(TuiInputRange), tuiFallbackValueProvider([0, 0])],\n host: {\n '[attr.data-size]': 'size()',\n // TODO: Delete this line and put `tui-input-range:has(.t-content-end) {--t-icon-lock: none}` to proprietary styles\n '[style.--t-icon-lock]': 'contentEnd() ? \"none\" : null',\n },\n})\nexport class TuiInputRange extends TuiControl<readonly [number, number]> {\n private readonly inputs = viewChildren(TuiInputNumberDirective, {read: ElementRef});\n private readonly range = viewChild(TuiRange);\n private readonly options = inject(TUI_INPUT_NUMBER_OPTIONS);\n private readonly isMobile = inject(WA_IS_MOBILE);\n private readonly quantumTransformer = computed(\n () => new TuiQuantumValueTransformerBase(this.quantum()),\n );\n\n protected readonly size = inject(TUI_TEXTFIELD_OPTIONS).size;\n protected start = this.value()[0];\n protected end = this.value()[1];\n protected side: 'end' | 'start' = 'start';\n protected readonly contentStart = computed(() => {\n const [start, end] = this.content().map((x, i) => {\n const value = this.value()[i]!;\n\n return typeof x === 'function' ? x({$implicit: value}) : x || value;\n });\n\n if (this.interactive() || !this.isPrimitive(start) || !this.isPrimitive(end)) {\n return this.content()[0];\n }\n\n return `${start}${CHAR_NO_BREAK_SPACE}${CHAR_EN_DASH}${CHAR_NO_BREAK_SPACE}${end}`;\n });\n\n protected readonly contentEnd = computed(() =>\n this.contentStart() === this.content()[0] ? this.content()[1] : '',\n );\n\n public readonly min = input(0);\n public readonly max = input(100);\n public readonly step = input(1);\n public readonly segments = input(1);\n public readonly keySteps = input<TuiKeySteps>();\n public readonly quantum = input(0);\n public readonly prefix = input([this.options.prefix, this.options.prefix], {\n transform,\n });\n\n public readonly postfix = input([this.options.postfix, this.options.postfix], {\n transform,\n });\n\n public content = input<\n readonly [\n PolymorpheusContent<TuiContext<number>>,\n PolymorpheusContent<TuiContext<number>>,\n ]\n >(['', '']);\n\n public override writeValue(value: [number, number]): void {\n super.writeValue(value);\n this.setTextfieldValues(this.value());\n }\n\n protected get contentStartHidden(): boolean {\n return this.interactive() && tuiIsFocused(this.textfieldStart);\n }\n\n protected get contentEndHidden(): boolean {\n return (\n !this.content()[1] || (this.interactive() && tuiIsFocused(this.textfieldEnd))\n );\n }\n\n protected takeStep(\n event: Event | KeyboardEvent,\n coefficients: readonly [number, number],\n ): void {\n if (!this.interactive() || !this.range()) {\n return;\n }\n\n event.preventDefault();\n\n const [start, end] = this.value();\n const newValue = this.valueGuard(this.range()!.takeStep(coefficients));\n\n if (newValue[0] !== start || newValue[1] !== end) {\n this.onExternalValueUpdate(newValue);\n }\n }\n\n protected onInput([start, end]: [number | null, number | null]): void {\n this.setValue([start ?? this.value()[0], end ?? this.value()[1]]);\n }\n\n protected onExternalValueUpdate(value: readonly [number, number]): void {\n this.setValue(value);\n this.setTextfieldValues(this.value());\n\n setTimeout((end = Number.MAX_SAFE_INTEGER) => {\n if (tuiIsFocused(this.activeTextfield)) {\n this.activeTextfield?.setSelectionRange(end, end);\n }\n });\n }\n\n protected focusToTextfield(): void {\n if (!this.isMobile) {\n this.activeTextfield?.focus();\n }\n }\n\n protected setTextfieldValues([start, end]: readonly [number, number]): void {\n this.start = start;\n this.end = end;\n }\n\n private get textfieldStart(): HTMLInputElement | null {\n return this.inputs()[0]?.nativeElement || null;\n }\n\n private get textfieldEnd(): HTMLInputElement | null {\n return this.inputs()[this.inputs().length - 1]?.nativeElement || null;\n }\n\n private get activeTextfield(): HTMLInputElement | null {\n return this.side === 'start' ? this.textfieldStart : this.textfieldEnd;\n }\n\n private setValue(value: readonly [number, number]): void {\n this.onChange(this.valueGuard(value));\n }\n\n private valueGuard(value: readonly [number, number]): readonly [number, number] {\n const [prevStart, prevEnd] = this.value();\n const [start, end] = value.map(\n (x) => this.quantumTransformer().toControlValue(x) ?? x,\n ) as unknown as readonly [number, number];\n\n return [Math.min(start, prevEnd), Math.max(end, prevStart)];\n }\n\n private isPrimitive(x: PolymorpheusContent): x is PolymorpheusPrimitive {\n return !x || tuiIsString(x) || tuiIsNumber(x);\n }\n}\n","<tui-textfield [content]=\"contentStartHidden ? '' : contentStart()\">\n <label tuiLabel>\n <ng-content />\n </label>\n\n <input\n tuiInputNumber\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [max]=\"value()[1]\"\n [min]=\"min()\"\n [postfix]=\"postfix()[0]\"\n [prefix]=\"prefix()[0]\"\n [readOnly]=\"readOnly()\"\n [(ngModel)]=\"start\"\n (blur)=\"start = value()[0]\"\n (keydown.arrowDown)=\"takeStep($event, [-1, 0])\"\n (keydown.arrowUp)=\"takeStep($event, [1, 0])\"\n (ngModelChange)=\"onInput([$event, null])\"\n />\n\n <input\n tuiInputNumber\n class=\"t-end\"\n [class._hidden]=\"!contentEndHidden || !this.interactive()\"\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [max]=\"max()\"\n [min]=\"value()[0]\"\n [postfix]=\"postfix()[1]\"\n [prefix]=\"prefix()[1]\"\n [readOnly]=\"readOnly()\"\n [(ngModel)]=\"end\"\n (blur)=\"end = value()[1]\"\n (keydown.arrowDown)=\"takeStep($event, [0, -1])\"\n (keydown.arrowUp)=\"takeStep($event, [0, 1])\"\n (ngModelChange)=\"onInput([null, $event])\"\n />\n\n @if (!contentEndHidden && contentEnd()) {\n <div class=\"t-content-end\">\n <ng-container *polymorpheusOutlet=\"contentEnd() as text; context: {$implicit: value()[1]}\">\n {{ text }}\n </ng-container>\n </div>\n }\n\n @if (interactive()) {\n <tui-range\n [focusable]=\"false\"\n [keySteps]=\"keySteps()\"\n [max]=\"max()\"\n [min]=\"min()\"\n [ngModel]=\"value()\"\n [segments]=\"segments()\"\n [step]=\"step()\"\n (activeThumbChange)=\"side = $event\"\n (ngModelChange)=\"onExternalValueUpdate($event)\"\n (pointerdown.prevent.stop)=\"focusToTextfield()\"\n />\n }\n</tui-textfield>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -15,11 +15,11 @@ import { fromEvent, tap, filter, switchMap } from 'rxjs';
15
15
 
16
16
  class Styles {
17
17
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: Styles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: Styles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-input-slider" }, ngImport: i0, template: '', isInline: true, styles: ["tui-textfield [tuiInputSlider]~.t-content [tuiButtonX]{display:none!important}\n", "tui-textfield [tuiInputSlider]~[tuiSlider]:disabled{display:none}\n", "tui-textfield [tuiSlider]{--tui-slider-track-color: transparent !important}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: Styles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-input-slider" }, ngImport: i0, template: '', isInline: true, styles: ["tui-textfield [tuiInputSlider]~.t-content [tuiButtonX]{display:none!important}\n", "tui-textfield [tuiInputSlider]~[tuiSlider]:disabled{display:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
19
19
  }
20
20
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: Styles, decorators: [{
21
21
  type: Component,
22
- args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'tui-input-slider' }, styles: ["tui-textfield [tuiInputSlider]~.t-content [tuiButtonX]{display:none!important}\n", "tui-textfield [tuiInputSlider]~[tuiSlider]:disabled{display:none}\n", "tui-textfield [tuiSlider]{--tui-slider-track-color: transparent !important}\n"] }]
22
+ args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'tui-input-slider' }, styles: ["tui-textfield [tuiInputSlider]~.t-content [tuiButtonX]{display:none!important}\n", "tui-textfield [tuiInputSlider]~[tuiSlider]:disabled{display:none}\n"] }]
23
23
  }] });
24
24
  class TuiInputSliderDirective {
25
25
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-input-slider.mjs","sources":["../../../projects/kit/components/input-slider/input-slider.directive.ts","../../../projects/kit/components/input-slider/input-slider.ts","../../../projects/kit/components/input-slider/taiga-ui-kit-components-input-slider.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n effect,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {TuiNonNullableValueTransformer, TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiInjectAuxiliary} from '@taiga-ui/core/components/textfield';\nimport {\n TuiInputNumberDirective,\n tuiInputNumberOptionsProvider,\n TuiNumberMask,\n TuiQuantumValueTransformer,\n} from '@taiga-ui/kit/components/input-number';\nimport {TuiSliderComponent} from '@taiga-ui/kit/components/slider';\nimport {filter, fromEvent, switchMap, tap} from 'rxjs';\n\n@Component({\n template: '',\n styles: [\n // TODO: tui-textfield:has([tuiInputSlider]) [tuiButtonX]\n 'tui-textfield [tuiInputSlider] ~ .t-content [tuiButtonX] {display: none !important}',\n // TODO: tui-textfield:has([tuiInputSlider]) [tuiSlider]:disabled\n 'tui-textfield [tuiInputSlider] ~ [tuiSlider]:disabled {display: none}',\n 'tui-textfield [tuiSlider] { --tui-slider-track-color: transparent !important; }',\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {class: 'tui-input-slider'},\n})\nclass Styles {}\n\n@Directive({\n selector: 'input[tuiInputSlider]',\n providers: [\n tuiInputNumberOptionsProvider({\n valueTransformer: new TuiNonNullableValueTransformer(),\n }),\n ],\n hostDirectives: [\n {\n directive: TuiInputNumberDirective,\n inputs: ['invalid', 'readOnly'],\n },\n {\n directive: TuiQuantumValueTransformer,\n inputs: ['quantum'],\n },\n ],\n host: {\n '(blur)': 'inputNumber.setValue(value() ?? null)',\n '(keydown.arrowUp)': 'onStep(1)',\n '(keydown.arrowDown)': 'onStep(-1)',\n },\n})\nexport class TuiInputSliderDirective {\n private readonly isMobile = inject(WA_IS_MOBILE);\n private readonly el = tuiInjectElement<HTMLInputElement>();\n private readonly slider = tuiInjectAuxiliary<TuiSliderComponent>(\n (x) => x instanceof TuiSliderComponent,\n );\n\n private readonly controlTransformer = inject<TuiValueTransformer<string, number>>(\n TuiValueTransformer,\n {self: true},\n );\n\n protected readonly nothing = tuiWithStyles(Styles);\n protected readonly mask = inject(TuiNumberMask, {self: true});\n protected readonly inputNumber = inject(TuiInputNumberDirective, {self: true});\n protected readonly value = computed(() =>\n this.controlTransformer.toControlValue(this.inputNumber.value()),\n );\n\n protected readonly textfieldToSliderSync = effect(() => {\n const slider = this.slider();\n\n if (!slider) {\n return;\n }\n\n if (!slider.keySteps?.transformer()) {\n // Native <input type=\"range\" /> does not support BigInt\n slider.min = Number(this.mask.min());\n slider.max = Number(this.mask.max());\n slider.value = this.value();\n } else {\n slider.keySteps?.setControlValue(this.value());\n }\n\n slider.el.disabled = !this.inputNumber.interactive();\n });\n\n protected readonly sliderInit = effect((onCleanup) => {\n const slider = this.slider();\n\n if (!slider) {\n return;\n }\n\n slider.el.setAttribute('tabindex', '-1');\n\n if (slider.keySteps) {\n slider.keySteps.controlValue = this.value;\n }\n\n const subscription = fromEvent(slider.el, 'input')\n .pipe(\n tap(() =>\n this.inputNumber.setValue(\n slider.keySteps?.getControlValue() ?? slider.el.valueAsNumber,\n ),\n ),\n filter(() => !this.isMobile),\n switchMap(() =>\n fromEvent(this.el.ownerDocument, 'pointerup', {once: true}),\n ),\n )\n .subscribe(() => this.el.focus());\n\n onCleanup(() => subscription.unsubscribe());\n });\n\n protected onStep(coefficient: number): void {\n const slider = this.slider();\n\n if (slider && this.inputNumber.interactive()) {\n const newValue = tuiClamp(\n slider.keySteps?.takeStep(coefficient) ??\n slider.value + coefficient * slider.step,\n this.mask.min(),\n this.mask.max(),\n );\n\n this.inputNumber.setValue(newValue);\n }\n }\n}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\nimport {\n TuiSliderComponent,\n TuiSliderKeySteps,\n TuiSliderKeyStepsBase,\n} from '@taiga-ui/kit/components/slider';\n\nimport {TuiInputSliderDirective} from './input-slider.directive';\n\nexport const TuiInputSlider = [\n TuiSliderComponent,\n TuiSliderKeyStepsBase,\n TuiSliderKeySteps,\n TuiInputSliderDirective,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-input-slider.mjs","sources":["../../../projects/kit/components/input-slider/input-slider.directive.ts","../../../projects/kit/components/input-slider/input-slider.ts","../../../projects/kit/components/input-slider/taiga-ui-kit-components-input-slider.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n effect,\n inject,\n ViewEncapsulation,\n} from '@angular/core';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {TuiNonNullableValueTransformer, TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiInjectAuxiliary} from '@taiga-ui/core/components/textfield';\nimport {\n TuiInputNumberDirective,\n tuiInputNumberOptionsProvider,\n TuiNumberMask,\n TuiQuantumValueTransformer,\n} from '@taiga-ui/kit/components/input-number';\nimport {TuiSliderComponent} from '@taiga-ui/kit/components/slider';\nimport {filter, fromEvent, switchMap, tap} from 'rxjs';\n\n@Component({\n template: '',\n styles: [\n // TODO: tui-textfield:has([tuiInputSlider]) [tuiButtonX]\n 'tui-textfield [tuiInputSlider] ~ .t-content [tuiButtonX] {display: none !important}',\n // TODO: tui-textfield:has([tuiInputSlider]) [tuiSlider]:disabled\n 'tui-textfield [tuiInputSlider] ~ [tuiSlider]:disabled {display: none}',\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {class: 'tui-input-slider'},\n})\nclass Styles {}\n\n@Directive({\n selector: 'input[tuiInputSlider]',\n providers: [\n tuiInputNumberOptionsProvider({\n valueTransformer: new TuiNonNullableValueTransformer(),\n }),\n ],\n hostDirectives: [\n {\n directive: TuiInputNumberDirective,\n inputs: ['invalid', 'readOnly'],\n },\n {\n directive: TuiQuantumValueTransformer,\n inputs: ['quantum'],\n },\n ],\n host: {\n '(blur)': 'inputNumber.setValue(value() ?? null)',\n '(keydown.arrowUp)': 'onStep(1)',\n '(keydown.arrowDown)': 'onStep(-1)',\n },\n})\nexport class TuiInputSliderDirective {\n private readonly isMobile = inject(WA_IS_MOBILE);\n private readonly el = tuiInjectElement<HTMLInputElement>();\n private readonly slider = tuiInjectAuxiliary<TuiSliderComponent>(\n (x) => x instanceof TuiSliderComponent,\n );\n\n private readonly controlTransformer = inject<TuiValueTransformer<string, number>>(\n TuiValueTransformer,\n {self: true},\n );\n\n protected readonly nothing = tuiWithStyles(Styles);\n protected readonly mask = inject(TuiNumberMask, {self: true});\n protected readonly inputNumber = inject(TuiInputNumberDirective, {self: true});\n protected readonly value = computed(() =>\n this.controlTransformer.toControlValue(this.inputNumber.value()),\n );\n\n protected readonly textfieldToSliderSync = effect(() => {\n const slider = this.slider();\n\n if (!slider) {\n return;\n }\n\n if (!slider.keySteps?.transformer()) {\n // Native <input type=\"range\" /> does not support BigInt\n slider.min = Number(this.mask.min());\n slider.max = Number(this.mask.max());\n slider.value = this.value();\n } else {\n slider.keySteps?.setControlValue(this.value());\n }\n\n slider.el.disabled = !this.inputNumber.interactive();\n });\n\n protected readonly sliderInit = effect((onCleanup) => {\n const slider = this.slider();\n\n if (!slider) {\n return;\n }\n\n slider.el.setAttribute('tabindex', '-1');\n\n if (slider.keySteps) {\n slider.keySteps.controlValue = this.value;\n }\n\n const subscription = fromEvent(slider.el, 'input')\n .pipe(\n tap(() =>\n this.inputNumber.setValue(\n slider.keySteps?.getControlValue() ?? slider.el.valueAsNumber,\n ),\n ),\n filter(() => !this.isMobile),\n switchMap(() =>\n fromEvent(this.el.ownerDocument, 'pointerup', {once: true}),\n ),\n )\n .subscribe(() => this.el.focus());\n\n onCleanup(() => subscription.unsubscribe());\n });\n\n protected onStep(coefficient: number): void {\n const slider = this.slider();\n\n if (slider && this.inputNumber.interactive()) {\n const newValue = tuiClamp(\n slider.keySteps?.takeStep(coefficient) ??\n slider.value + coefficient * slider.step,\n this.mask.min(),\n this.mask.max(),\n );\n\n this.inputNumber.setValue(newValue);\n }\n }\n}\n","import {TuiLabel} from '@taiga-ui/core/components/label';\nimport {\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n} from '@taiga-ui/core/components/textfield';\nimport {TuiDropdownContent} from '@taiga-ui/core/portals/dropdown';\nimport {\n TuiSliderComponent,\n TuiSliderKeySteps,\n TuiSliderKeyStepsBase,\n} from '@taiga-ui/kit/components/slider';\n\nimport {TuiInputSliderDirective} from './input-slider.directive';\n\nexport const TuiInputSlider = [\n TuiSliderComponent,\n TuiSliderKeyStepsBase,\n TuiSliderKeySteps,\n TuiInputSliderDirective,\n TuiLabel,\n TuiTextfieldComponent,\n TuiTextfieldOptionsDirective,\n TuiDropdownContent,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -144,7 +144,7 @@ class TuiPreviewZoom {
144
144
  this.value.set(tuiClamp(value, this.min(), this.max()));
145
145
  }
146
146
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiPreviewZoom, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
147
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.17", type: TuiPreviewZoom, isStandalone: true, selector: "tui-preview-zoom", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", reset: "reset" }, ngImport: i0, template: "<section class=\"t-zoom\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_minus\"\n [disabled]=\"value() === min()\"\n [iconStart]=\"icons.zoomOut\"\n (click)=\"clamp(value() - 0.5)\"\n >\n {{ texts().zoomOut }}\n </button>\n <label tuiSliderThumbLabel>\n <div\n [tuiHint]=\"value() | percent\"\n [tuiHintManual]=\"hint()\"\n ></div>\n <input\n step=\"any\"\n tuiSlider\n tuiTheme=\"dark\"\n type=\"range\"\n class=\"t-slider\"\n [attr.aria-label]=\"sliderLabel()\"\n [attr.aria-valuetext]=\"value() | percent\"\n [max]=\"max()\"\n [min]=\"min()\"\n [ngModelOptions]=\"{standalone: true}\"\n [(ngModel)]=\"value\"\n />\n </label>\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_plus\"\n [disabled]=\"value() === max()\"\n [iconStart]=\"icons.zoomIn\"\n (click)=\"clamp(value() + 0.5)\"\n >\n {{ texts().zoomIn }}\n </button>\n</section>\n<button\n tuiHintAppearance=\"floating\"\n tuiHintDescribe\n tuiHintDirection=\"top-end\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-reset-button\"\n [class.t-invisible]=\"value() === this.min()\"\n [iconStart]=\"icons.zoomReset\"\n [tuiHint]=\"texts().reset\"\n (click)=\"reset.emit()\"\n>\n {{ texts().reset }}\n</button>\n", styles: [":host{position:relative;display:flex}.t-zoom{border-radius:1rem;background:#686868f5;color:#fff;display:flex;font:var(--tui-font-body-s);justify-content:space-between;align-items:center;inline-size:12rem}.t-slider{inline-size:7.5rem}.t-sign_minus{border-top-right-radius:0;border-bottom-right-radius:0}.t-sign_plus{border-top-left-radius:0;border-bottom-left-radius:0}.t-invisible{visibility:hidden}.t-reset-button{margin-inline-start:.3125rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: PercentPipe, name: "percent" }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i2.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"], outputs: ["tuiHintVisible"] }, { kind: "directive", type: i2.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: i2.TuiHintManual, selector: "[tuiHint][tuiHintManual]", inputs: ["tuiHintManual"] }, { kind: "directive", type: TuiPreviewAction, selector: "[tuiPreviewAction]" }, { kind: "component", type: i3.TuiSliderComponent, selector: "input[type=range][tuiSlider]", inputs: ["size", "segments"] }, { kind: "component", type: i3.TuiSliderThumbLabel, selector: "[tuiSliderThumbLabel]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
147
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.17", type: TuiPreviewZoom, isStandalone: true, selector: "tui-preview-zoom", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", reset: "reset" }, ngImport: i0, template: "<section class=\"t-zoom\">\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_minus\"\n [disabled]=\"value() === min()\"\n [iconStart]=\"icons.zoomOut\"\n (click)=\"clamp(value() - 0.5)\"\n >\n {{ texts().zoomOut }}\n </button>\n <label tuiSliderThumbLabel>\n <div\n [tuiHint]=\"value() | percent\"\n [tuiHintManual]=\"hint()\"\n ></div>\n <input\n step=\"any\"\n tuiSlider\n tuiTheme=\"dark\"\n type=\"range\"\n class=\"t-slider\"\n [attr.aria-label]=\"sliderLabel()\"\n [attr.aria-valuetext]=\"value() | percent\"\n [max]=\"max()\"\n [min]=\"min()\"\n [ngModelOptions]=\"{standalone: true}\"\n [(ngModel)]=\"value\"\n />\n </label>\n <button\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-sign_plus\"\n [disabled]=\"value() === max()\"\n [iconStart]=\"icons.zoomIn\"\n (click)=\"clamp(value() + 0.5)\"\n >\n {{ texts().zoomIn }}\n </button>\n</section>\n<button\n tuiHintAppearance=\"floating\"\n tuiHintDescribe\n tuiHintDirection=\"top-end\"\n tuiIconButton\n tuiPreviewAction\n type=\"button\"\n class=\"t-reset-button\"\n [class.t-invisible]=\"value() === this.min()\"\n [iconStart]=\"icons.zoomReset\"\n [tuiHint]=\"texts().reset\"\n (click)=\"reset.emit()\"\n>\n {{ texts().reset }}\n</button>\n", styles: [":host{position:relative;display:flex}.t-zoom{border-radius:1rem;background:#686868f5;color:#fff;display:flex;font:var(--tui-font-body-s);justify-content:space-between;align-items:center;inline-size:12rem}.t-slider{inline-size:7.5rem}.t-sign_minus{border-top-right-radius:0;border-bottom-right-radius:0}.t-sign_plus{border-top-left-radius:0;border-bottom-left-radius:0}.t-invisible{visibility:hidden}.t-reset-button{margin-inline-start:.3125rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: PercentPipe, name: "percent" }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i2.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"], outputs: ["tuiHintVisible"] }, { kind: "directive", type: i2.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: i2.TuiHintManual, selector: "[tuiHint][tuiHintManual]", inputs: ["tuiHintManual"] }, { kind: "directive", type: TuiPreviewAction, selector: "[tuiPreviewAction]" }, { kind: "component", type: i3.TuiSliderComponent, selector: "input[type=range][tuiSlider]", inputs: ["segments"] }, { kind: "component", type: i3.TuiSliderThumbLabel, selector: "[tuiSliderThumbLabel]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
148
148
  }
149
149
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiPreviewZoom, decorators: [{
150
150
  type: Component,