@taiga-ui/kit 4.52.0-canary.6043e8f → 4.52.0-canary.65c65f9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/components/checkbox/checkbox.component.d.ts +18 -7
  2. package/components/checkbox/checkbox.options.d.ts +9 -5
  3. package/components/confirm/confirm.component.d.ts +0 -1
  4. package/components/confirm/confirm.service.d.ts +1 -2
  5. package/components/input-color/input-color.component.d.ts +2 -2
  6. package/components/like/like.component.d.ts +11 -4
  7. package/components/like/like.options.d.ts +3 -2
  8. package/components/pager/pager.component.d.ts +1 -1
  9. package/components/radio/radio.component.d.ts +8 -7
  10. package/components/radio/radio.directive.d.ts +2 -2
  11. package/components/radio/radio.options.d.ts +5 -2
  12. package/components/rating/rating.component.d.ts +5 -5
  13. package/components/rating/rating.options.d.ts +3 -5
  14. package/components/switch/switch.component.d.ts +19 -7
  15. package/components/switch/switch.options.d.ts +8 -4
  16. package/directives/copy/copy.directive.d.ts +2 -1
  17. package/directives/copy/copy.options.d.ts +1 -1
  18. package/fesm2022/taiga-ui-kit-components-checkbox.mjs +75 -18
  19. package/fesm2022/taiga-ui-kit-components-checkbox.mjs.map +1 -1
  20. package/fesm2022/taiga-ui-kit-components-confirm.mjs +7 -7
  21. package/fesm2022/taiga-ui-kit-components-confirm.mjs.map +1 -1
  22. package/fesm2022/taiga-ui-kit-components-data-list-wrapper.mjs +2 -2
  23. package/fesm2022/taiga-ui-kit-components-data-list-wrapper.mjs.map +1 -1
  24. package/fesm2022/taiga-ui-kit-components-input-chip.mjs +5 -10
  25. package/fesm2022/taiga-ui-kit-components-input-chip.mjs.map +1 -1
  26. package/fesm2022/taiga-ui-kit-components-input-color.mjs +6 -4
  27. package/fesm2022/taiga-ui-kit-components-input-color.mjs.map +1 -1
  28. package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs +2 -2
  29. package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs.map +1 -1
  30. package/fesm2022/taiga-ui-kit-components-input-date.mjs +2 -2
  31. package/fesm2022/taiga-ui-kit-components-input-date.mjs.map +1 -1
  32. package/fesm2022/taiga-ui-kit-components-input-month-range.mjs +2 -2
  33. package/fesm2022/taiga-ui-kit-components-input-month-range.mjs.map +1 -1
  34. package/fesm2022/taiga-ui-kit-components-input-month.mjs +2 -2
  35. package/fesm2022/taiga-ui-kit-components-input-month.mjs.map +1 -1
  36. package/fesm2022/taiga-ui-kit-components-input-pin.mjs +2 -2
  37. package/fesm2022/taiga-ui-kit-components-input-pin.mjs.map +1 -1
  38. package/fesm2022/taiga-ui-kit-components-input-range.mjs +4 -4
  39. package/fesm2022/taiga-ui-kit-components-input-range.mjs.map +1 -1
  40. package/fesm2022/taiga-ui-kit-components-input-time.mjs +2 -2
  41. package/fesm2022/taiga-ui-kit-components-input-time.mjs.map +1 -1
  42. package/fesm2022/taiga-ui-kit-components-input-year.mjs +2 -2
  43. package/fesm2022/taiga-ui-kit-components-input-year.mjs.map +1 -1
  44. package/fesm2022/taiga-ui-kit-components-like.mjs +31 -38
  45. package/fesm2022/taiga-ui-kit-components-like.mjs.map +1 -1
  46. package/fesm2022/taiga-ui-kit-components-multi-select.mjs +1 -1
  47. package/fesm2022/taiga-ui-kit-components-multi-select.mjs.map +1 -1
  48. package/fesm2022/taiga-ui-kit-components-pager.mjs +3 -3
  49. package/fesm2022/taiga-ui-kit-components-pager.mjs.map +1 -1
  50. package/fesm2022/taiga-ui-kit-components-pagination.mjs +2 -2
  51. package/fesm2022/taiga-ui-kit-components-pagination.mjs.map +1 -1
  52. package/fesm2022/taiga-ui-kit-components-radio.mjs +34 -29
  53. package/fesm2022/taiga-ui-kit-components-radio.mjs.map +1 -1
  54. package/fesm2022/taiga-ui-kit-components-rating.mjs +19 -15
  55. package/fesm2022/taiga-ui-kit-components-rating.mjs.map +1 -1
  56. package/fesm2022/taiga-ui-kit-components-select.mjs +1 -1
  57. package/fesm2022/taiga-ui-kit-components-select.mjs.map +1 -1
  58. package/fesm2022/taiga-ui-kit-components-switch.mjs +64 -18
  59. package/fesm2022/taiga-ui-kit-components-switch.mjs.map +1 -1
  60. package/fesm2022/taiga-ui-kit-components-tabs.mjs +5 -5
  61. package/fesm2022/taiga-ui-kit-components-tabs.mjs.map +1 -1
  62. package/fesm2022/taiga-ui-kit-directives-copy.mjs +6 -4
  63. package/fesm2022/taiga-ui-kit-directives-copy.mjs.map +1 -1
  64. package/fesm2022/taiga-ui-kit-directives-password.mjs +3 -3
  65. package/fesm2022/taiga-ui-kit-directives-password.mjs.map +1 -1
  66. package/fesm2022/taiga-ui-kit-directives-unfinished-validator.mjs +2 -1
  67. package/fesm2022/taiga-ui-kit-directives-unfinished-validator.mjs.map +1 -1
  68. package/fesm2022/taiga-ui-kit-pipes-field-error.mjs +147 -0
  69. package/fesm2022/taiga-ui-kit-pipes-field-error.mjs.map +1 -0
  70. package/fesm2022/taiga-ui-kit-pipes.mjs +1 -0
  71. package/fesm2022/taiga-ui-kit-pipes.mjs.map +1 -1
  72. package/fesm2022/taiga-ui-kit-tokens.mjs +6 -1
  73. package/fesm2022/taiga-ui-kit-tokens.mjs.map +1 -1
  74. package/package.json +25 -21
  75. package/pipes/field-error/field-error-content-pipe.d.ts +14 -0
  76. package/pipes/field-error/field-error-pipe.d.ts +29 -0
  77. package/pipes/field-error/index.d.ts +2 -0
  78. package/pipes/index.d.ts +1 -0
  79. package/styles/components/checkbox.less +11 -13
  80. package/styles/components/like.less +9 -4
  81. package/styles/components/switch.less +8 -8
  82. package/tokens/index.d.ts +1 -0
  83. package/tokens/validation-errors.d.ts +5 -0
@@ -1,10 +1,21 @@
1
- import { TuiRadioComponent } from '@taiga-ui/kit/components/radio';
2
- import { type TuiCheckboxOptions } from './checkbox.options';
1
+ import { type DoCheck, type OnInit } from '@angular/core';
2
+ import { NgControl } from '@angular/forms';
3
+ import { type TuiSizeS } from '@taiga-ui/core/types';
3
4
  import * as i0 from "@angular/core";
4
- import * as i1 from "@taiga-ui/core/directives/icons";
5
- export declare class TuiCheckbox extends TuiRadioComponent<TuiCheckboxOptions> {
6
- protected readonly check: import("@angular/core").Signal<string>;
7
- protected readonly indeterminate: import("@angular/core").Signal<string>;
5
+ import * as i1 from "@taiga-ui/core/directives/appearance";
6
+ import * as i2 from "@taiga-ui/cdk/directives/native-validator";
7
+ export declare class TuiCheckbox implements OnInit, DoCheck {
8
+ private readonly appearance;
9
+ private readonly options;
10
+ private readonly cdr;
11
+ private readonly resolver;
12
+ private readonly destroyRef;
13
+ private readonly el;
14
+ size: TuiSizeS;
15
+ readonly control: NgControl | null;
16
+ ngOnInit(): void;
17
+ ngDoCheck(): void;
18
+ protected getIcon(state: 'checked' | 'indeterminate'): string;
8
19
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiCheckbox, never>;
9
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiCheckbox, "input[type=\"checkbox\"][tuiCheckbox]", never, {}, {}, never, never, true, [{ directive: typeof i1.TuiIcons; inputs: {}; outputs: {}; }]>;
20
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiCheckbox, "input[type=\"checkbox\"][tuiCheckbox]", never, { "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.TuiAppearance; inputs: { "tuiAppearanceState": "tuiAppearanceState"; "tuiAppearanceFocus": "tuiAppearanceFocus"; "tuiAppearanceMode": "tuiAppearanceMode"; }; outputs: {}; }, { directive: typeof i2.TuiNativeValidator; inputs: {}; outputs: {}; }]>;
10
21
  }
@@ -1,10 +1,14 @@
1
+ import { InjectionToken, type Provider } from '@angular/core';
1
2
  import { type TuiStringHandler } from '@taiga-ui/cdk/types';
2
3
  import { type TuiSizeS } from '@taiga-ui/core/types';
3
- import { type TuiRadioOptions } from '@taiga-ui/kit/components/radio';
4
- export interface TuiCheckboxOptions extends TuiRadioOptions {
4
+ export interface TuiCheckboxOptions {
5
+ readonly size: TuiSizeS;
6
+ readonly appearance: TuiStringHandler<HTMLInputElement> | string;
5
7
  readonly icons: Readonly<{
6
- checked: TuiStringHandler<TuiSizeS>;
7
- indeterminate: TuiStringHandler<TuiSizeS>;
8
+ checked: TuiStringHandler<TuiSizeS> | string;
9
+ indeterminate: TuiStringHandler<TuiSizeS> | string;
8
10
  }>;
9
11
  }
10
- export declare const TUI_CHECKBOX_OPTIONS: import("@angular/core").InjectionToken<TuiCheckboxOptions>, tuiCheckboxOptionsProvider: (item: Partial<TuiCheckboxOptions> | (() => Partial<TuiCheckboxOptions>)) => import("@angular/core").FactoryProvider;
12
+ export declare const TUI_CHECKBOX_DEFAULT_OPTIONS: TuiCheckboxOptions;
13
+ export declare const TUI_CHECKBOX_OPTIONS: InjectionToken<TuiCheckboxOptions>;
14
+ export declare function tuiCheckboxOptionsProvider(options: Partial<TuiCheckboxOptions>): Provider;
@@ -19,4 +19,3 @@ export declare class TuiConfirm {
19
19
  static ɵcmp: i0.ɵɵComponentDeclaration<TuiConfirm, "tui-confirm", never, {}, {}, never, never, true, never>;
20
20
  }
21
21
  export declare const TUI_CONFIRM: PolymorpheusComponent<TuiConfirm>;
22
- export declare const TUI_CONFIRM_DIALOG: import("@angular/core").InjectionToken<PolymorpheusContent<TuiDialogContext<boolean, unknown>>>;
@@ -4,11 +4,10 @@ import { type TuiConfirmData } from './confirm.component';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class TuiConfirmService {
6
6
  private readonly dialogs;
7
- private readonly component;
8
7
  private dirty;
9
8
  markAsDirty(): void;
10
9
  markAsPristine(): void;
11
- withConfirm<T = TuiConfirmData>(options: Partial<TuiDialogOptions<NoInfer<T>>>): Observable<boolean>;
10
+ withConfirm(options: Partial<TuiDialogOptions<TuiConfirmData>>): Observable<boolean>;
12
11
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiConfirmService, never>;
13
12
  static ɵprov: i0.ɵɵInjectableDeclaration<TuiConfirmService>;
14
13
  }
@@ -10,8 +10,8 @@ export declare class TuiInputColor extends TuiControl<string> {
10
10
  protected readonly list: string | null;
11
11
  protected readonly format: import("@angular/core").WritableSignal<"hex" | "hexa">;
12
12
  protected readonly align: import("@angular/core").WritableSignal<TuiHorizontalDirection>;
13
- protected readonly left: string;
14
- protected readonly icon: import("@angular/core").Signal<string>;
13
+ protected readonly left: string | null | undefined;
14
+ protected readonly icon: import("@angular/core").Signal<string | null | undefined>;
15
15
  protected readonly maskito: import("@angular/core").Signal<import("@maskito/core").MaskitoOptions | null>;
16
16
  protected readonly filled: import("@angular/core").Signal<boolean>;
17
17
  protected readonly opacity: import("@angular/core").Signal<number>;
@@ -1,9 +1,16 @@
1
+ import { type TuiStringHandler } from '@taiga-ui/cdk/types';
2
+ import { type TuiSizeS } from '@taiga-ui/core/types';
3
+ import { type TuiLikeOptions } from './like.options';
1
4
  import * as i0 from "@angular/core";
2
5
  import * as i1 from "@taiga-ui/core/directives/appearance";
3
- import * as i2 from "@taiga-ui/core/directives/icons";
4
6
  export declare class TuiLike {
5
- readonly tuiLike: import("@angular/core").InputSignal<string>;
6
- readonly size: import("@angular/core").InputSignal<import("@taiga-ui/core/types").TuiSizeS>;
7
+ private readonly options;
8
+ private readonly resolver;
9
+ color: string;
10
+ uncheckedIcon: TuiStringHandler<TuiSizeS> | string;
11
+ checkedIcon: TuiStringHandler<TuiSizeS> | string;
12
+ size: TuiSizeS;
13
+ protected getIcon(state: keyof TuiLikeOptions['icons']): string;
7
14
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiLike, never>;
8
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiLike, "input[tuiLike][type=checkbox]", never, { "tuiLike": { "alias": "tuiLike"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.TuiWithAppearance; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiIcons; inputs: { "iconStart": "uncheckedIcon"; "iconEnd": "checkedIcon"; }; outputs: {}; }]>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiLike, "input[tuiLike][type=checkbox]", never, { "color": { "alias": "tuiLike"; "required": false; }; "uncheckedIcon": { "alias": "uncheckedIcon"; "required": false; }; "checkedIcon": { "alias": "checkedIcon"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.TuiWithAppearance; inputs: {}; outputs: {}; }]>;
9
16
  }
@@ -1,10 +1,11 @@
1
+ import { type TuiStringHandler } from '@taiga-ui/cdk/types';
1
2
  import { type TuiAppearanceOptions } from '@taiga-ui/core/directives';
2
3
  import { type TuiSizeS } from '@taiga-ui/core/types';
3
4
  export interface TuiLikeOptions extends TuiAppearanceOptions {
4
5
  readonly size: TuiSizeS;
5
6
  readonly icons: Readonly<{
6
- checked: string;
7
- unchecked: string;
7
+ checked: TuiStringHandler<TuiSizeS> | string;
8
+ unchecked: TuiStringHandler<TuiSizeS> | string;
8
9
  }>;
9
10
  }
10
11
  export declare const TUI_LIKE_OPTIONS: import("@angular/core").InjectionToken<TuiLikeOptions>, tuiLikeOptionsProvider: (item: Partial<TuiLikeOptions> | (() => Partial<TuiLikeOptions>)) => import("@angular/core").FactoryProvider;
@@ -6,7 +6,7 @@ export declare class TuiPager implements OnChanges, AfterViewInit {
6
6
  protected start: number;
7
7
  protected end: number;
8
8
  protected left: import("@angular/core").WritableSignal<number>;
9
- protected readonly maxWidth: import("@angular/core").Signal<number>;
9
+ protected readonly maxWidth: import("@angular/core").Signal<number | undefined>;
10
10
  max: number;
11
11
  count: number;
12
12
  size: TuiSizeS;
@@ -1,18 +1,19 @@
1
1
  import { type DoCheck, type OnInit } from '@angular/core';
2
2
  import { NgControl } from '@angular/forms';
3
- import { type TuiRadioOptions } from './radio.options';
3
+ import { type TuiSizeS } from '@taiga-ui/core/types';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@taiga-ui/core/directives/appearance";
6
6
  import * as i2 from "@taiga-ui/cdk/directives/native-validator";
7
- export declare class TuiRadioComponent<T extends TuiRadioOptions> implements DoCheck, OnInit {
7
+ export declare class TuiRadioComponent implements DoCheck, OnInit {
8
+ private readonly appearance;
8
9
  private readonly destroyRef;
10
+ private readonly cdr;
11
+ private readonly options;
9
12
  private readonly el;
10
- protected readonly options: T;
11
- protected readonly appearance: import("@angular/core").WritableSignal<string>;
12
13
  protected readonly control: NgControl | null;
13
- readonly size: import("@angular/core").InputSignal<import("@taiga-ui/core/types").TuiSizeS>;
14
+ size: TuiSizeS;
14
15
  ngOnInit(): void;
15
16
  ngDoCheck(): void;
16
- static ɵfac: i0.ɵɵFactoryDeclaration<TuiRadioComponent<any>, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiRadioComponent<any>, "input[type=\"radio\"][tuiRadio]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.TuiAppearance; inputs: { "tuiAppearanceState": "tuiAppearanceState"; "tuiAppearanceFocus": "tuiAppearanceFocus"; "tuiAppearanceMode": "tuiAppearanceMode"; }; outputs: {}; }, { directive: typeof i2.TuiNativeValidator; inputs: {}; outputs: {}; }]>;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiRadioComponent, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiRadioComponent, "input[type=\"radio\"][tuiRadio]", never, { "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.TuiAppearance; inputs: { "tuiAppearanceState": "tuiAppearanceState"; "tuiAppearanceFocus": "tuiAppearanceFocus"; "tuiAppearanceMode": "tuiAppearanceMode"; }; outputs: {}; }, { directive: typeof i2.TuiNativeValidator; inputs: {}; outputs: {}; }]>;
18
19
  }
@@ -1,8 +1,8 @@
1
1
  import { type TuiIdentityMatcher } from '@taiga-ui/cdk/types';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class TuiRadioDirective<T> {
4
- readonly identityMatcher: import("@angular/core").InputSignal<TuiIdentityMatcher<T>>;
4
+ identityMatcher: TuiIdentityMatcher<T>;
5
5
  constructor();
6
6
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiRadioDirective<any>, never>;
7
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiRadioDirective<any>, "input[type=\"radio\"][tuiRadio][identityMatcher]", never, { "identityMatcher": { "alias": "identityMatcher"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiRadioDirective<any>, "input[type=\"radio\"][tuiRadio][identityMatcher]", never, { "identityMatcher": { "alias": "identityMatcher"; "required": false; }; }, {}, never, never, true, never>;
8
8
  }
@@ -1,7 +1,10 @@
1
+ import { InjectionToken, type Provider } from '@angular/core';
1
2
  import { type TuiStringHandler } from '@taiga-ui/cdk/types';
2
3
  import { type TuiSizeS } from '@taiga-ui/core/types';
3
4
  export interface TuiRadioOptions {
4
- readonly appearance: TuiStringHandler<HTMLInputElement>;
5
+ readonly appearance: TuiStringHandler<HTMLInputElement> | string;
5
6
  readonly size: TuiSizeS;
6
7
  }
7
- export declare const TUI_RADIO_OPTIONS: import("@angular/core").InjectionToken<TuiRadioOptions>, tuiRadioOptionsProvider: (item: Partial<TuiRadioOptions> | (() => Partial<TuiRadioOptions>)) => import("@angular/core").FactoryProvider;
8
+ export declare const TUI_RADIO_DEFAULT_OPTIONS: TuiRadioOptions;
9
+ export declare const TUI_RADIO_OPTIONS: InjectionToken<TuiRadioOptions>;
10
+ export declare function tuiRadioOptionsProvider(options: Partial<TuiRadioOptions>): Provider;
@@ -1,11 +1,11 @@
1
1
  import { TuiControl } from '@taiga-ui/cdk/classes';
2
+ import { type TuiRatingOptions } from './rating.options';
2
3
  import * as i0 from "@angular/core";
3
4
  export declare class TuiRating extends TuiControl<number> {
4
5
  private readonly options;
5
- protected readonly active: import("@angular/core").WritableSignal<number>;
6
- protected readonly array: import("@angular/core").Signal<any[]>;
7
- readonly icon: import("@angular/core").InputSignal<import("@taiga-ui/polymorpheus").PolymorpheusContent<import("./rating.options").TuiRatingContext>>;
8
- readonly max: import("@angular/core").InputSignal<number>;
6
+ protected active: number;
7
+ icon: TuiRatingOptions['icon'];
8
+ max: number;
9
9
  protected onKeyDown(event: KeyboardEvent): void;
10
10
  protected onPointer(delta: number): void;
11
11
  protected onClick(value: number): void;
@@ -13,5 +13,5 @@ export declare class TuiRating extends TuiControl<number> {
13
13
  protected isFraction(index: number): boolean;
14
14
  protected getCut(index: number): number;
15
15
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiRating, never>;
16
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiRating, "tui-rating", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiRating, "tui-rating", never, { "icon": { "alias": "icon"; "required": false; }; "max": { "alias": "max"; "required": false; }; }, {}, never, never, true, never>;
17
17
  }
@@ -1,12 +1,10 @@
1
1
  import { InjectionToken, type Provider } from '@angular/core';
2
2
  import { type TuiContext } from '@taiga-ui/cdk/types';
3
3
  import { type PolymorpheusContent } from '@taiga-ui/polymorpheus';
4
- export interface TuiRatingContext extends TuiContext<number> {
5
- readonly value: number;
6
- readonly filled: boolean;
7
- }
8
4
  export interface TuiRatingOptions {
9
- readonly icon: PolymorpheusContent<TuiRatingContext>;
5
+ readonly icon: PolymorpheusContent<TuiContext<number> & {
6
+ value: number;
7
+ }>;
10
8
  readonly max: number;
11
9
  }
12
10
  export declare const TUI_RATING_DEFAULT_OPTIONS: TuiRatingOptions;
@@ -1,10 +1,22 @@
1
- import { TuiRadioComponent } from '@taiga-ui/kit/components/radio';
2
- import { type TuiSwitchOptions } from './switch.options';
1
+ import { type DoCheck, type OnInit } from '@angular/core';
2
+ import { NgControl } from '@angular/forms';
3
+ import { type TuiSizeS } from '@taiga-ui/core/types';
3
4
  import * as i0 from "@angular/core";
4
- import * as i1 from "@taiga-ui/core/directives/icons";
5
- export declare class TuiSwitch extends TuiRadioComponent<TuiSwitchOptions> {
6
- protected readonly icon: import("@angular/core").Signal<string>;
7
- readonly showIcons: import("@angular/core").InputSignal<boolean>;
5
+ import * as i1 from "@taiga-ui/core/directives/appearance";
6
+ import * as i2 from "@taiga-ui/cdk/directives/native-validator";
7
+ export declare class TuiSwitch implements DoCheck, OnInit {
8
+ private readonly appearance;
9
+ private readonly resolver;
10
+ private readonly destroyRef;
11
+ private readonly cdr;
12
+ private readonly options;
13
+ private readonly el;
14
+ protected readonly control: NgControl | null;
15
+ size: TuiSizeS;
16
+ showIcons: boolean;
17
+ ngOnInit(): void;
18
+ ngDoCheck(): void;
19
+ protected get icon(): string | null;
8
20
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiSwitch, never>;
9
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiSwitch, "input[type=\"checkbox\"][tuiSwitch]", never, { "showIcons": { "alias": "showIcons"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.TuiIcons; inputs: {}; outputs: {}; }]>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiSwitch, "input[type=\"checkbox\"][tuiSwitch]", never, { "size": { "alias": "size"; "required": false; }; "showIcons": { "alias": "showIcons"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.TuiAppearance; inputs: { "tuiAppearanceState": "tuiAppearanceState"; "tuiAppearanceFocus": "tuiAppearanceFocus"; "tuiAppearanceMode": "tuiAppearanceMode"; }; outputs: {}; }, { directive: typeof i2.TuiNativeValidator; inputs: {}; outputs: {}; }]>;
10
22
  }
@@ -1,8 +1,12 @@
1
+ import { InjectionToken, type Provider } from '@angular/core';
1
2
  import { type TuiStringHandler } from '@taiga-ui/cdk/types';
2
3
  import { type TuiSizeS } from '@taiga-ui/core/types';
3
- import { type TuiRadioOptions } from '@taiga-ui/kit/components/radio';
4
- export interface TuiSwitchOptions extends TuiRadioOptions {
4
+ export interface TuiSwitchOptions {
5
5
  readonly showIcons: boolean;
6
- readonly icon: TuiStringHandler<TuiSizeS>;
6
+ readonly size: TuiSizeS;
7
+ readonly icon: TuiStringHandler<TuiSizeS> | string;
8
+ readonly appearance: TuiStringHandler<HTMLInputElement>;
7
9
  }
8
- export declare const TUI_SWITCH_OPTIONS: import("@angular/core").InjectionToken<TuiSwitchOptions>, tuiSwitchOptionsProvider: (item: Partial<TuiSwitchOptions> | (() => Partial<TuiSwitchOptions>)) => import("@angular/core").FactoryProvider;
10
+ export declare const TUI_SWITCH_DEFAULT_OPTIONS: TuiSwitchOptions;
11
+ export declare const TUI_SWITCH_OPTIONS: InjectionToken<TuiSwitchOptions>;
12
+ export declare function tuiSwitchOptionsProvider(options: Partial<TuiSwitchOptions>): Provider;
@@ -3,11 +3,12 @@ import * as i0 from "@angular/core";
3
3
  import * as i1 from "@taiga-ui/core/directives/appearance";
4
4
  import * as i2 from "@taiga-ui/core/directives/hint";
5
5
  export declare class TuiCopyDirective {
6
+ private readonly options;
6
7
  private readonly copied$;
7
8
  private readonly doc;
8
9
  protected readonly textfield: TuiTextfieldComponent<any>;
9
- protected readonly icons: import("@angular/core").Signal<string>;
10
10
  protected readonly hint: import("@angular/core").Signal<string>;
11
+ protected readonly icons: import("@angular/core").Signal<string>;
11
12
  tuiCopy: string;
12
13
  protected get disabled(): boolean;
13
14
  protected copy(): void;
@@ -1,6 +1,6 @@
1
1
  import { type TuiStringHandler } from '@taiga-ui/cdk/types';
2
2
  import { type TuiSizeL, type TuiSizeS } from '@taiga-ui/core/types';
3
3
  export interface TuiCopyOptions {
4
- readonly icon: TuiStringHandler<TuiSizeL | TuiSizeS>;
4
+ readonly icon: TuiStringHandler<TuiSizeL | TuiSizeS> | string;
5
5
  }
6
6
  export declare const TUI_COPY_OPTIONS: import("@angular/core").InjectionToken<TuiCopyOptions>, tuiCopyOptionsProvider: (item: Partial<TuiCopyOptions> | (() => Partial<TuiCopyOptions>)) => import("@angular/core").FactoryProvider;
@@ -1,37 +1,94 @@
1
1
  import * as i0 from '@angular/core';
2
- import { computed, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
3
- import { tuiProvide } from '@taiga-ui/cdk/utils/miscellaneous';
4
- import * as i1 from '@taiga-ui/core/directives/icons';
5
- import { tuiIconStart, tuiIconEnd, TuiIcons } from '@taiga-ui/core/directives/icons';
6
- import { TuiRadioComponent, TUI_RADIO_OPTIONS } from '@taiga-ui/kit/components/radio';
7
- import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
2
+ import { InjectionToken, inject, ChangeDetectorRef, DestroyRef, Input, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { NgControl, NgModel } from '@angular/forms';
5
+ import * as i2 from '@taiga-ui/cdk/directives/native-validator';
6
+ import { TuiNativeValidator } from '@taiga-ui/cdk/directives/native-validator';
7
+ import { tuiControlValue, tuiWatch } from '@taiga-ui/cdk/observables';
8
+ import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
9
+ import { tuiProvideOptions, tuiSetSignal, tuiIsString } from '@taiga-ui/cdk/utils/miscellaneous';
10
+ import * as i1 from '@taiga-ui/core/directives/appearance';
11
+ import { TuiAppearance } from '@taiga-ui/core/directives/appearance';
12
+ import { tuiInjectIconResolver } from '@taiga-ui/core/tokens';
8
13
 
9
- const [TUI_CHECKBOX_OPTIONS, tuiCheckboxOptionsProvider] = tuiCreateOptions({
14
+ const TUI_CHECKBOX_DEFAULT_OPTIONS = {
10
15
  size: 'm',
11
16
  appearance: (el) => el.checked || el.indeterminate ? 'primary' : 'outline-grayscale',
12
17
  icons: {
13
- checked: () => '@tui.check',
14
- indeterminate: () => '@tui.minus',
18
+ checked: '@tui.check',
19
+ indeterminate: '@tui.minus',
15
20
  },
21
+ };
22
+ const TUI_CHECKBOX_OPTIONS = new InjectionToken(ngDevMode ? 'TUI_CHECKBOX_OPTIONS' : '', {
23
+ factory: () => TUI_CHECKBOX_DEFAULT_OPTIONS,
16
24
  });
25
+ function tuiCheckboxOptionsProvider(options) {
26
+ return tuiProvideOptions(TUI_CHECKBOX_OPTIONS, options, TUI_CHECKBOX_DEFAULT_OPTIONS);
27
+ }
17
28
 
18
- class TuiCheckbox extends TuiRadioComponent {
29
+ class TuiCheckbox {
19
30
  constructor() {
20
- super(...arguments);
21
- this.check = tuiIconStart(computed(() => this.options.icons.checked(this.size())));
22
- this.indeterminate = tuiIconEnd(computed(() => this.options.icons.indeterminate(this.size())));
31
+ this.appearance = inject(TuiAppearance);
32
+ this.options = inject(TUI_CHECKBOX_OPTIONS);
33
+ this.cdr = inject(ChangeDetectorRef);
34
+ this.resolver = tuiInjectIconResolver();
35
+ this.destroyRef = inject(DestroyRef);
36
+ this.el = tuiInjectElement();
37
+ this.size = this.options.size;
38
+ this.control = inject(NgControl, {
39
+ optional: true,
40
+ self: true,
41
+ });
42
+ }
43
+ ngOnInit() {
44
+ if (!this.control?.valueChanges) {
45
+ return;
46
+ }
47
+ tuiControlValue(this.control)
48
+ .pipe(tuiWatch(this.cdr), takeUntilDestroyed(this.destroyRef))
49
+ .subscribe((value) => {
50
+ // https://github.com/angular/angular/issues/14988
51
+ const fix = this.control instanceof NgModel && value === null
52
+ ? this.control.model
53
+ : value;
54
+ this.el.indeterminate = fix === null;
55
+ });
56
+ }
57
+ ngDoCheck() {
58
+ tuiSetSignal(this.appearance.tuiAppearance, tuiIsString(this.options.appearance)
59
+ ? this.options.appearance
60
+ : this.options.appearance(this.el));
61
+ }
62
+ getIcon(state) {
63
+ const option = this.options.icons[state];
64
+ const icon = tuiIsString(option) ? option : option(this.size);
65
+ return icon && `url(${this.resolver(icon)})`;
23
66
  }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiCheckbox, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
25
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: TuiCheckbox, isStandalone: true, selector: "input[type=\"checkbox\"][tuiCheckbox]", providers: [tuiProvide(TUI_RADIO_OPTIONS, TUI_CHECKBOX_OPTIONS)], usesInheritance: true, hostDirectives: [{ directive: i1.TuiIcons }], ngImport: i0, template: '', isInline: true, styles: ["[tuiCheckbox]{--t-size: 1.5rem;--t-radius: var(--tui-radius-s);inline-size:var(--t-size);block-size:var(--t-size);border-radius:var(--t-radius);cursor:pointer;margin:0;flex-shrink:0}[tuiCheckbox]:before{position:absolute;block-size:100%;inline-size:100%;font-size:1rem;-webkit-mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\"></svg>');mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\"></svg>');transform:scale(0);transition:transform var(--tui-duration) ease-in-out,mask 0s var(--tui-duration) ease-in-out}[tuiCheckbox]:after{display:none}[tuiCheckbox]:disabled._readonly{opacity:1;pointer-events:none}[tuiCheckbox]:checked:before,[tuiCheckbox]:indeterminate:before{-webkit-mask-image:var(--t-icon-start);mask-image:var(--t-icon-start);transform:scale(1);transition:transform var(--tui-duration) ease-in-out,mask 0s ease-in-out;transition-duration:inherit}[tuiCheckbox]:indeterminate:before{-webkit-mask-image:var(--t-icon-end);mask-image:var(--t-icon-end)}[tuiCheckbox][data-size=s]{--t-size: 1rem;--t-radius: var(--tui-radius-xs)}[tuiCheckbox][data-size=s]:before{font-size:.875rem}[tuiCheckbox]:invalid:not([data-mode]),[tuiCheckbox][data-mode~=invalid]{color:#fff}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
67
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiCheckbox, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
68
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: TuiCheckbox, isStandalone: true, selector: "input[type=\"checkbox\"][tuiCheckbox]", inputs: { size: "size" }, host: { properties: { "disabled": "!control || control.disabled", "attr.data-size": "size", "class._readonly": "!control", "style.--t-checked-icon": "getIcon(\"checked\")", "style.--t-indeterminate-icon": "getIcon(\"indeterminate\")" } }, hostDirectives: [{ directive: i1.TuiAppearance, inputs: ["tuiAppearanceState", "tuiAppearanceState", "tuiAppearanceFocus", "tuiAppearanceFocus", "tuiAppearanceMode", "tuiAppearanceMode"] }, { directive: i2.TuiNativeValidator }], ngImport: i0, template: '', isInline: true, styles: ["[tuiCheckbox]{--t-size: 1.5rem;--t-radius: var(--tui-radius-s);inline-size:var(--t-size);block-size:var(--t-size);border-radius:var(--t-radius);cursor:pointer;margin:0;flex-shrink:0}[tuiCheckbox]:before{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";font-size:1rem;background:currentColor;mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\"></svg>') no-repeat center / calc(min(1em,100%) + 10 * var(--tui-stroke-width, .125rem)) min(1em,100%) padding-box;transform:scale(0);transition:transform var(--tui-duration) ease-in-out,mask 0s var(--tui-duration) ease-in-out}[tuiCheckbox]:disabled._readonly{opacity:1;pointer-events:none}[tuiCheckbox]:checked:before,[tuiCheckbox]:indeterminate:before{-webkit-mask-image:var(--t-checked-icon);mask-image:var(--t-checked-icon);transform:scale(1);transition:transform var(--tui-duration) ease-in-out,mask 0s ease-in-out;transition-duration:inherit}[tuiCheckbox]:indeterminate:before{-webkit-mask-image:var(--t-indeterminate-icon);mask-image:var(--t-indeterminate-icon)}[tuiCheckbox][data-size=s]{--t-size: 1rem;--t-radius: var(--tui-radius-xs)}[tuiCheckbox][data-size=s]:before{font-size:.875rem}[tuiCheckbox]:invalid:not([data-mode]),[tuiCheckbox][data-mode~=invalid]{color:#fff}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
26
69
  }
27
70
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiCheckbox, decorators: [{
28
71
  type: Component,
29
- args: [{ standalone: true, selector: 'input[type="checkbox"][tuiCheckbox]', template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiProvide(TUI_RADIO_OPTIONS, TUI_CHECKBOX_OPTIONS)], hostDirectives: [TuiIcons], styles: ["[tuiCheckbox]{--t-size: 1.5rem;--t-radius: var(--tui-radius-s);inline-size:var(--t-size);block-size:var(--t-size);border-radius:var(--t-radius);cursor:pointer;margin:0;flex-shrink:0}[tuiCheckbox]:before{position:absolute;block-size:100%;inline-size:100%;font-size:1rem;-webkit-mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\"></svg>');mask-image:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\"></svg>');transform:scale(0);transition:transform var(--tui-duration) ease-in-out,mask 0s var(--tui-duration) ease-in-out}[tuiCheckbox]:after{display:none}[tuiCheckbox]:disabled._readonly{opacity:1;pointer-events:none}[tuiCheckbox]:checked:before,[tuiCheckbox]:indeterminate:before{-webkit-mask-image:var(--t-icon-start);mask-image:var(--t-icon-start);transform:scale(1);transition:transform var(--tui-duration) ease-in-out,mask 0s ease-in-out;transition-duration:inherit}[tuiCheckbox]:indeterminate:before{-webkit-mask-image:var(--t-icon-end);mask-image:var(--t-icon-end)}[tuiCheckbox][data-size=s]{--t-size: 1rem;--t-radius: var(--tui-radius-xs)}[tuiCheckbox][data-size=s]:before{font-size:.875rem}[tuiCheckbox]:invalid:not([data-mode]),[tuiCheckbox][data-mode~=invalid]{color:#fff}\n"] }]
30
- }] });
72
+ args: [{ standalone: true, selector: 'input[type="checkbox"][tuiCheckbox]', template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [
73
+ {
74
+ directive: TuiAppearance,
75
+ inputs: ['tuiAppearanceState', 'tuiAppearanceFocus', 'tuiAppearanceMode'],
76
+ },
77
+ TuiNativeValidator,
78
+ ], host: {
79
+ '[disabled]': '!control || control.disabled',
80
+ '[attr.data-size]': 'size',
81
+ '[class._readonly]': '!control',
82
+ '[style.--t-checked-icon]': 'getIcon("checked")',
83
+ '[style.--t-indeterminate-icon]': 'getIcon("indeterminate")',
84
+ }, styles: ["[tuiCheckbox]{--t-size: 1.5rem;--t-radius: var(--tui-radius-s);inline-size:var(--t-size);block-size:var(--t-size);border-radius:var(--t-radius);cursor:pointer;margin:0;flex-shrink:0}[tuiCheckbox]:before{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";font-size:1rem;background:currentColor;mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\"></svg>') no-repeat center / calc(min(1em,100%) + 10 * var(--tui-stroke-width, .125rem)) min(1em,100%) padding-box;transform:scale(0);transition:transform var(--tui-duration) ease-in-out,mask 0s var(--tui-duration) ease-in-out}[tuiCheckbox]:disabled._readonly{opacity:1;pointer-events:none}[tuiCheckbox]:checked:before,[tuiCheckbox]:indeterminate:before{-webkit-mask-image:var(--t-checked-icon);mask-image:var(--t-checked-icon);transform:scale(1);transition:transform var(--tui-duration) ease-in-out,mask 0s ease-in-out;transition-duration:inherit}[tuiCheckbox]:indeterminate:before{-webkit-mask-image:var(--t-indeterminate-icon);mask-image:var(--t-indeterminate-icon)}[tuiCheckbox][data-size=s]{--t-size: 1rem;--t-radius: var(--tui-radius-xs)}[tuiCheckbox][data-size=s]:before{font-size:.875rem}[tuiCheckbox]:invalid:not([data-mode]),[tuiCheckbox][data-mode~=invalid]{color:#fff}\n"] }]
85
+ }], propDecorators: { size: [{
86
+ type: Input
87
+ }] } });
31
88
 
32
89
  /**
33
90
  * Generated bundle index. Do not edit.
34
91
  */
35
92
 
36
- export { TUI_CHECKBOX_OPTIONS, TuiCheckbox, tuiCheckboxOptionsProvider };
93
+ export { TUI_CHECKBOX_DEFAULT_OPTIONS, TUI_CHECKBOX_OPTIONS, TuiCheckbox, tuiCheckboxOptionsProvider };
37
94
  //# sourceMappingURL=taiga-ui-kit-components-checkbox.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-checkbox.mjs","sources":["../../../projects/kit/components/checkbox/checkbox.options.ts","../../../projects/kit/components/checkbox/checkbox.component.ts","../../../projects/kit/components/checkbox/taiga-ui-kit-components-checkbox.ts"],"sourcesContent":["import {type TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiSizeS} from '@taiga-ui/core/types';\nimport {type TuiRadioOptions} from '@taiga-ui/kit/components/radio';\n\nexport interface TuiCheckboxOptions extends TuiRadioOptions {\n readonly icons: Readonly<{\n checked: TuiStringHandler<TuiSizeS>;\n indeterminate: TuiStringHandler<TuiSizeS>;\n }>;\n}\n\nexport const [TUI_CHECKBOX_OPTIONS, tuiCheckboxOptionsProvider] =\n tuiCreateOptions<TuiCheckboxOptions>({\n size: 'm',\n appearance: (el) =>\n el.checked || el.indeterminate ? 'primary' : 'outline-grayscale',\n icons: {\n checked: () => '@tui.check',\n indeterminate: () => '@tui.minus',\n },\n });\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ViewEncapsulation,\n} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiIconEnd, TuiIcons, tuiIconStart} from '@taiga-ui/core/directives/icons';\nimport {TUI_RADIO_OPTIONS, TuiRadioComponent} from '@taiga-ui/kit/components/radio';\n\nimport {TUI_CHECKBOX_OPTIONS, type TuiCheckboxOptions} from './checkbox.options';\n\n@Component({\n standalone: true,\n selector: 'input[type=\"checkbox\"][tuiCheckbox]',\n template: '',\n styles: ['@import \"@taiga-ui/kit/styles/components/checkbox.less\";'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiProvide(TUI_RADIO_OPTIONS, TUI_CHECKBOX_OPTIONS)],\n hostDirectives: [TuiIcons],\n})\nexport class TuiCheckbox extends TuiRadioComponent<TuiCheckboxOptions> {\n protected readonly check = tuiIconStart(\n computed(() => this.options.icons.checked(this.size())),\n );\n\n protected readonly indeterminate = tuiIconEnd(\n computed(() => this.options.icons.indeterminate(this.size())),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MAYa,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,GAC3D,gBAAgB,CAAqB;AACjC,IAAA,IAAI,EAAE,GAAG;IACT,UAAU,EAAE,CAAC,EAAE,KACX,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,aAAa,GAAG,SAAS,GAAG,mBAAmB;AACpE,IAAA,KAAK,EAAE;AACH,QAAA,OAAO,EAAE,MAAM,YAAY;AAC3B,QAAA,aAAa,EAAE,MAAM,YAAY;AACpC,KAAA;AACJ,CAAA;;ACCC,MAAO,WAAY,SAAQ,iBAAqC,CAAA;AAVtE,IAAA,WAAA,GAAA;;QAWuB,IAAK,CAAA,KAAA,GAAG,YAAY,CACnC,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAC1D;QAEkB,IAAa,CAAA,aAAA,GAAG,UAAU,CACzC,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAChE;AACJ;+GARY,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,SAAA,EAHT,CAAC,UAAU,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJtD,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2sCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAOH,WAAW,EAAA,UAAA,EAAA,CAAA;kBAVvB,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,qCAAqC,EAAA,QAAA,EACrC,EAAE,EAAA,aAAA,EAEG,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,aACpC,CAAC,UAAU,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC,EAAA,cAAA,EAChD,CAAC,QAAQ,CAAC,EAAA,MAAA,EAAA,CAAA,2sCAAA,CAAA,EAAA;;;ACpB9B;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-components-checkbox.mjs","sources":["../../../projects/kit/components/checkbox/checkbox.options.ts","../../../projects/kit/components/checkbox/checkbox.component.ts","../../../projects/kit/components/checkbox/taiga-ui-kit-components-checkbox.ts"],"sourcesContent":["import {InjectionToken, type Provider} from '@angular/core';\nimport {type TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {type TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiCheckboxOptions {\n readonly size: TuiSizeS;\n readonly appearance: TuiStringHandler<HTMLInputElement> | string;\n readonly icons: Readonly<{\n checked: TuiStringHandler<TuiSizeS> | string;\n indeterminate: TuiStringHandler<TuiSizeS> | string;\n }>;\n}\n\nexport const TUI_CHECKBOX_DEFAULT_OPTIONS: TuiCheckboxOptions = {\n size: 'm',\n appearance: (el) =>\n el.checked || el.indeterminate ? 'primary' : 'outline-grayscale',\n icons: {\n checked: '@tui.check',\n indeterminate: '@tui.minus',\n },\n};\n\nexport const TUI_CHECKBOX_OPTIONS = new InjectionToken(\n ngDevMode ? 'TUI_CHECKBOX_OPTIONS' : '',\n {\n factory: () => TUI_CHECKBOX_DEFAULT_OPTIONS,\n },\n);\n\nexport function tuiCheckboxOptionsProvider(\n options: Partial<TuiCheckboxOptions>,\n): Provider {\n return tuiProvideOptions(TUI_CHECKBOX_OPTIONS, options, TUI_CHECKBOX_DEFAULT_OPTIONS);\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n type DoCheck,\n inject,\n Input,\n type OnInit,\n ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {NgControl, NgModel} from '@angular/forms';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiControlValue, tuiWatch} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiIsString, tuiSetSignal} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiAppearance} from '@taiga-ui/core/directives/appearance';\nimport {tuiInjectIconResolver} from '@taiga-ui/core/tokens';\nimport {type TuiSizeS} from '@taiga-ui/core/types';\n\nimport {TUI_CHECKBOX_OPTIONS} from './checkbox.options';\n\n@Component({\n standalone: true,\n selector: 'input[type=\"checkbox\"][tuiCheckbox]',\n template: '',\n styles: ['@import \"@taiga-ui/kit/styles/components/checkbox.less\";'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: TuiAppearance,\n inputs: ['tuiAppearanceState', 'tuiAppearanceFocus', 'tuiAppearanceMode'],\n },\n\n TuiNativeValidator,\n ],\n host: {\n '[disabled]': '!control || control.disabled',\n '[attr.data-size]': 'size',\n '[class._readonly]': '!control',\n '[style.--t-checked-icon]': 'getIcon(\"checked\")',\n '[style.--t-indeterminate-icon]': 'getIcon(\"indeterminate\")',\n },\n})\nexport class TuiCheckbox implements OnInit, DoCheck {\n private readonly appearance = inject(TuiAppearance);\n private readonly options = inject(TUI_CHECKBOX_OPTIONS);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly resolver = tuiInjectIconResolver();\n private readonly destroyRef = inject(DestroyRef);\n private readonly el = tuiInjectElement<HTMLInputElement>();\n\n @Input()\n public size: TuiSizeS = this.options.size;\n\n public readonly control: NgControl | null = inject(NgControl, {\n optional: true,\n self: true,\n });\n\n public ngOnInit(): void {\n if (!this.control?.valueChanges) {\n return;\n }\n\n tuiControlValue(this.control)\n .pipe(tuiWatch(this.cdr), takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n // https://github.com/angular/angular/issues/14988\n const fix =\n this.control instanceof NgModel && value === null\n ? this.control.model\n : value;\n\n this.el.indeterminate = fix === null;\n });\n }\n\n public ngDoCheck(): void {\n tuiSetSignal(\n this.appearance.tuiAppearance,\n tuiIsString(this.options.appearance)\n ? this.options.appearance\n : this.options.appearance(this.el),\n );\n }\n\n protected getIcon(state: 'checked' | 'indeterminate'): string {\n const option = this.options.icons[state];\n const icon = tuiIsString(option) ? option : option(this.size);\n\n return icon && `url(${this.resolver(icon)})`;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@ import * as i0 from '@angular/core';
3
3
  import { inject, ChangeDetectionStrategy, Component, Injectable } from '@angular/core';
4
4
  import { TuiAutoFocus } from '@taiga-ui/cdk/directives/auto-focus';
5
5
  import { TUI_IS_MOBILE } from '@taiga-ui/cdk/tokens';
6
- import { tuiCreateToken } from '@taiga-ui/cdk/utils/miscellaneous';
7
6
  import { TuiButton } from '@taiga-ui/core/components/button';
8
7
  import { TUI_CONFIRM_WORDS } from '@taiga-ui/kit/tokens';
9
8
  import { injectContext, PolymorpheusOutlet, PolymorpheusComponent } from '@taiga-ui/polymorpheus';
@@ -21,19 +20,17 @@ class TuiConfirm {
21
20
  return this.isMobile ? 'secondary' : 'flat';
22
21
  }
23
22
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiConfirm, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiConfirm, isStandalone: true, selector: "tui-confirm", ngImport: i0, template: "<p\n *polymorpheusOutlet=\"context.data?.content as text\"\n class=\"t-content\"\n [innerHTML]=\"text\"\n></p>\n@if (words$ | async; as words) {\n <footer class=\"t-buttons\">\n <button\n size=\"m\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance\"\n (click)=\"context.completeWith(false)\"\n >\n {{ context.data?.no || words.no }}\n </button>\n <button\n size=\"m\"\n tuiAutoFocus\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"context.data?.appearance || 'primary'\"\n (click)=\"context.completeWith(true)\"\n >\n {{ context.data?.yes || words.yes }}\n </button>\n </footer>\n}\n", styles: [":host{display:block}.t-content:not(:empty){margin-block-end:.875rem;overflow-wrap:break-word}.t-buttons{display:flex;justify-content:flex-end;flex-wrap:wrap-reverse;margin:.375rem -.375rem -.375rem}.t-button{margin:.375rem;white-space:nowrap}:host-context(tui-root._mobile) .t-button{flex:1;overflow:visible}:host-context(tui-dialog[new]){margin-block-start:-.75rem}:host-context(tui-dialog[new]) .t-button{margin:0}:host-context(tui-dialog[new]) .t-buttons{margin-block-end:0;margin-inline-end:0;margin-inline-start:0}:host-context(tui-dialog[new]) .t-buttons:first-child{margin-block-start:2rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiConfirm, isStandalone: true, selector: "tui-confirm", ngImport: i0, template: "<p\n *polymorpheusOutlet=\"context.data?.content as text\"\n class=\"t-content\"\n [innerHTML]=\"text\"\n></p>\n@if (words$ | async; as words) {\n <footer class=\"t-buttons\">\n <button\n size=\"m\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance\"\n (click)=\"context.completeWith(false)\"\n >\n {{ context.data?.no || words.no }}\n </button>\n <button\n size=\"m\"\n tuiAutoFocus\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"context.data?.appearance || 'primary'\"\n (click)=\"context.completeWith(true)\"\n >\n {{ context.data?.yes || words.yes }}\n </button>\n </footer>\n}\n", styles: [":host{display:block}.t-content:not(:empty){margin-block-end:.875rem;overflow-wrap:break-word}.t-buttons{display:flex;justify-content:flex-end;flex-wrap:wrap-reverse;margin:.375rem -.375rem -.375rem}.t-button{margin:.375rem;white-space:nowrap}:host-context(tui-root._mobile) .t-button{flex:1;overflow:visible}:host-context(tui-dialog[new]){margin-block-start:-.75rem}:host-context(tui-dialog[new]) .t-button{margin:0}:host-context(tui-dialog[new]) .t-buttons{margin-block-end:0;margin-inline-end:0;margin-inline-start:0}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: TuiAutoFocus, selector: "[tuiAutoFocus]", inputs: ["tuiAutoFocus"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
24
  }
26
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiConfirm, decorators: [{
27
26
  type: Component,
28
- args: [{ selector: 'tui-confirm', imports: [AsyncPipe, PolymorpheusOutlet, TuiAutoFocus, TuiButton], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p\n *polymorpheusOutlet=\"context.data?.content as text\"\n class=\"t-content\"\n [innerHTML]=\"text\"\n></p>\n@if (words$ | async; as words) {\n <footer class=\"t-buttons\">\n <button\n size=\"m\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance\"\n (click)=\"context.completeWith(false)\"\n >\n {{ context.data?.no || words.no }}\n </button>\n <button\n size=\"m\"\n tuiAutoFocus\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"context.data?.appearance || 'primary'\"\n (click)=\"context.completeWith(true)\"\n >\n {{ context.data?.yes || words.yes }}\n </button>\n </footer>\n}\n", styles: [":host{display:block}.t-content:not(:empty){margin-block-end:.875rem;overflow-wrap:break-word}.t-buttons{display:flex;justify-content:flex-end;flex-wrap:wrap-reverse;margin:.375rem -.375rem -.375rem}.t-button{margin:.375rem;white-space:nowrap}:host-context(tui-root._mobile) .t-button{flex:1;overflow:visible}:host-context(tui-dialog[new]){margin-block-start:-.75rem}:host-context(tui-dialog[new]) .t-button{margin:0}:host-context(tui-dialog[new]) .t-buttons{margin-block-end:0;margin-inline-end:0;margin-inline-start:0}:host-context(tui-dialog[new]) .t-buttons:first-child{margin-block-start:2rem}\n"] }]
27
+ args: [{ selector: 'tui-confirm', imports: [AsyncPipe, PolymorpheusOutlet, TuiAutoFocus, TuiButton], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p\n *polymorpheusOutlet=\"context.data?.content as text\"\n class=\"t-content\"\n [innerHTML]=\"text\"\n></p>\n@if (words$ | async; as words) {\n <footer class=\"t-buttons\">\n <button\n size=\"m\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance\"\n (click)=\"context.completeWith(false)\"\n >\n {{ context.data?.no || words.no }}\n </button>\n <button\n size=\"m\"\n tuiAutoFocus\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"context.data?.appearance || 'primary'\"\n (click)=\"context.completeWith(true)\"\n >\n {{ context.data?.yes || words.yes }}\n </button>\n </footer>\n}\n", styles: [":host{display:block}.t-content:not(:empty){margin-block-end:.875rem;overflow-wrap:break-word}.t-buttons{display:flex;justify-content:flex-end;flex-wrap:wrap-reverse;margin:.375rem -.375rem -.375rem}.t-button{margin:.375rem;white-space:nowrap}:host-context(tui-root._mobile) .t-button{flex:1;overflow:visible}:host-context(tui-dialog[new]){margin-block-start:-.75rem}:host-context(tui-dialog[new]) .t-button{margin:0}:host-context(tui-dialog[new]) .t-buttons{margin-block-end:0;margin-inline-end:0;margin-inline-start:0}\n"] }]
29
28
  }] });
30
29
  const TUI_CONFIRM = new PolymorpheusComponent(TuiConfirm);
31
- const TUI_CONFIRM_DIALOG = tuiCreateToken(TUI_CONFIRM);
32
30
 
33
31
  class TuiConfirmService {
34
32
  constructor() {
35
33
  this.dialogs = inject(TuiDialogService);
36
- this.component = inject(TUI_CONFIRM_DIALOG);
37
34
  this.dirty = false;
38
35
  }
39
36
  markAsDirty() {
@@ -44,7 +41,10 @@ class TuiConfirmService {
44
41
  }
45
42
  withConfirm(options) {
46
43
  return defer(() => this.dirty
47
- ? this.dialogs.open(this.component, { size: 's', ...options })
44
+ ? this.dialogs.open(TUI_CONFIRM, {
45
+ size: 's',
46
+ ...options,
47
+ })
48
48
  : of(true));
49
49
  }
50
50
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiConfirmService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -58,5 +58,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
58
58
  * Generated bundle index. Do not edit.
59
59
  */
60
60
 
61
- export { TUI_CONFIRM, TUI_CONFIRM_DIALOG, TuiConfirm, TuiConfirmService };
61
+ export { TUI_CONFIRM, TuiConfirm, TuiConfirmService };
62
62
  //# sourceMappingURL=taiga-ui-kit-components-confirm.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-confirm.mjs","sources":["../../../projects/kit/components/confirm/confirm.component.ts","../../../projects/kit/components/confirm/confirm.template.html","../../../projects/kit/components/confirm/confirm.service.ts","../../../projects/kit/components/confirm/taiga-ui-kit-components-confirm.ts"],"sourcesContent":["import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {TuiAutoFocus} from '@taiga-ui/cdk/directives/auto-focus';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {type TuiDialogContext} from '@taiga-ui/core/components/dialog';\nimport {TUI_CONFIRM_WORDS} from '@taiga-ui/kit/tokens';\nimport {\n injectContext,\n PolymorpheusComponent,\n type PolymorpheusContent,\n PolymorpheusOutlet,\n} from '@taiga-ui/polymorpheus';\n\nexport interface TuiConfirmData {\n readonly content?: PolymorpheusContent;\n readonly no?: string;\n readonly yes?: string;\n readonly appearance?: string;\n}\n\n// TODO: Remove selector in v5\n@Component({\n selector: 'tui-confirm',\n imports: [AsyncPipe, PolymorpheusOutlet, TuiAutoFocus, TuiButton],\n templateUrl: './confirm.template.html',\n styleUrls: ['./confirm.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiConfirm {\n private readonly isMobile = inject(TUI_IS_MOBILE);\n protected readonly words$ = inject(TUI_CONFIRM_WORDS);\n\n public readonly context =\n injectContext<TuiDialogContext<boolean, TuiConfirmData | undefined>>();\n\n protected get appearance(): string {\n return this.isMobile ? 'secondary' : 'flat';\n }\n}\n\nexport const TUI_CONFIRM = new PolymorpheusComponent(TuiConfirm);\nexport const TUI_CONFIRM_DIALOG =\n tuiCreateToken<PolymorpheusContent<TuiDialogContext<boolean, unknown>>>(TUI_CONFIRM);\n","<p\n *polymorpheusOutlet=\"context.data?.content as text\"\n class=\"t-content\"\n [innerHTML]=\"text\"\n></p>\n@if (words$ | async; as words) {\n <footer class=\"t-buttons\">\n <button\n size=\"m\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance\"\n (click)=\"context.completeWith(false)\"\n >\n {{ context.data?.no || words.no }}\n </button>\n <button\n size=\"m\"\n tuiAutoFocus\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"context.data?.appearance || 'primary'\"\n (click)=\"context.completeWith(true)\"\n >\n {{ context.data?.yes || words.yes }}\n </button>\n </footer>\n}\n","import {inject, Injectable} from '@angular/core';\nimport {type TuiDialogOptions, TuiDialogService} from '@taiga-ui/core/components/dialog';\nimport {defer, type Observable, of} from 'rxjs';\n\nimport {TUI_CONFIRM_DIALOG, type TuiConfirmData} from './confirm.component';\n\n@Injectable()\nexport class TuiConfirmService {\n private readonly dialogs = inject(TuiDialogService);\n private readonly component = inject(TUI_CONFIRM_DIALOG);\n private dirty = false;\n\n public markAsDirty(): void {\n this.dirty = true;\n }\n\n public markAsPristine(): void {\n this.dirty = false;\n }\n\n public withConfirm<T = TuiConfirmData>(\n options: Partial<TuiDialogOptions<NoInfer<T>>>,\n ): Observable<boolean> {\n return defer(() =>\n this.dirty\n ? this.dialogs.open<boolean>(this.component, {size: 's', ...options})\n : of(true),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;AAsBA;MAQa,UAAU,CAAA;AAPvB,IAAA,WAAA,GAAA;AAQqB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC;AAC9B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAErC,IAAO,CAAA,OAAA,GACnB,aAAa,EAAyD;AAK7E;AAHG,IAAA,IAAc,UAAU,GAAA;QACpB,OAAO,IAAI,CAAC,QAAQ,GAAG,WAAW,GAAG,MAAM;;+GARtC,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BvB,y1BA8BA,EDLc,MAAA,EAAA,CAAA,ylBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,8CAAE,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAKvD,UAAU,EAAA,UAAA,EAAA,CAAA;kBAPtB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EACd,OAAA,EAAA,CAAC,SAAS,EAAE,kBAAkB,EAAE,YAAY,EAAE,SAAS,CAAC,EAGhD,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,y1BAAA,EAAA,MAAA,EAAA,CAAA,ylBAAA,CAAA,EAAA;;MActC,WAAW,GAAG,IAAI,qBAAqB,CAAC,UAAU;MAClD,kBAAkB,GAC3B,cAAc,CAA0D,WAAW;;MErC1E,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAClC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAC/C,IAAK,CAAA,KAAA,GAAG,KAAK;AAmBxB;IAjBU,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;;IAGd,cAAc,GAAA;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAGf,IAAA,WAAW,CACd,OAA8C,EAAA;AAE9C,QAAA,OAAO,KAAK,CAAC,MACT,IAAI,CAAC;AACD,cAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAU,IAAI,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,EAAC;AACpE,cAAE,EAAE,CAAC,IAAI,CAAC,CACjB;;+GApBI,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAjB,iBAAiB,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;ACND;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-components-confirm.mjs","sources":["../../../projects/kit/components/confirm/confirm.component.ts","../../../projects/kit/components/confirm/confirm.template.html","../../../projects/kit/components/confirm/confirm.service.ts","../../../projects/kit/components/confirm/taiga-ui-kit-components-confirm.ts"],"sourcesContent":["import {AsyncPipe} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {TuiAutoFocus} from '@taiga-ui/cdk/directives/auto-focus';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {type TuiDialogContext} from '@taiga-ui/core/components/dialog';\nimport {TUI_CONFIRM_WORDS} from '@taiga-ui/kit/tokens';\nimport {\n injectContext,\n PolymorpheusComponent,\n type PolymorpheusContent,\n PolymorpheusOutlet,\n} from '@taiga-ui/polymorpheus';\n\nexport interface TuiConfirmData {\n readonly content?: PolymorpheusContent;\n readonly no?: string;\n readonly yes?: string;\n readonly appearance?: string;\n}\n\n// TODO: Remove selector in v5\n@Component({\n selector: 'tui-confirm',\n imports: [AsyncPipe, PolymorpheusOutlet, TuiAutoFocus, TuiButton],\n templateUrl: './confirm.template.html',\n styleUrls: ['./confirm.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiConfirm {\n private readonly isMobile = inject(TUI_IS_MOBILE);\n protected readonly words$ = inject(TUI_CONFIRM_WORDS);\n\n public readonly context =\n injectContext<TuiDialogContext<boolean, TuiConfirmData | undefined>>();\n\n protected get appearance(): string {\n return this.isMobile ? 'secondary' : 'flat';\n }\n}\n\nexport const TUI_CONFIRM = new PolymorpheusComponent(TuiConfirm);\n","<p\n *polymorpheusOutlet=\"context.data?.content as text\"\n class=\"t-content\"\n [innerHTML]=\"text\"\n></p>\n@if (words$ | async; as words) {\n <footer class=\"t-buttons\">\n <button\n size=\"m\"\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"appearance\"\n (click)=\"context.completeWith(false)\"\n >\n {{ context.data?.no || words.no }}\n </button>\n <button\n size=\"m\"\n tuiAutoFocus\n tuiButton\n type=\"button\"\n class=\"t-button\"\n [appearance]=\"context.data?.appearance || 'primary'\"\n (click)=\"context.completeWith(true)\"\n >\n {{ context.data?.yes || words.yes }}\n </button>\n </footer>\n}\n","import {inject, Injectable} from '@angular/core';\nimport {type TuiDialogOptions, TuiDialogService} from '@taiga-ui/core/components/dialog';\nimport {defer, type Observable, of} from 'rxjs';\n\nimport {TUI_CONFIRM, type TuiConfirmData} from './confirm.component';\n\n@Injectable()\nexport class TuiConfirmService {\n private readonly dialogs = inject(TuiDialogService);\n private dirty = false;\n\n public markAsDirty(): void {\n this.dirty = true;\n }\n\n public markAsPristine(): void {\n this.dirty = false;\n }\n\n public withConfirm(\n options: Partial<TuiDialogOptions<TuiConfirmData>>,\n ): Observable<boolean> {\n return defer(() =>\n this.dirty\n ? this.dialogs.open<boolean>(TUI_CONFIRM, {\n size: 's',\n ...options,\n })\n : of(true),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAqBA;MAQa,UAAU,CAAA;AAPvB,IAAA,WAAA,GAAA;AAQqB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC;AAC9B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAErC,IAAO,CAAA,OAAA,GACnB,aAAa,EAAyD;AAK7E;AAHG,IAAA,IAAc,UAAU,GAAA;QACpB,OAAO,IAAI,CAAC,QAAQ,GAAG,WAAW,GAAG,MAAM;;+GARtC,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7BvB,y1BA8BA,EDNc,MAAA,EAAA,CAAA,2gBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,8CAAE,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAKvD,UAAU,EAAA,UAAA,EAAA,CAAA;kBAPtB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EACd,OAAA,EAAA,CAAC,SAAS,EAAE,kBAAkB,EAAE,YAAY,EAAE,SAAS,CAAC,EAGhD,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,y1BAAA,EAAA,MAAA,EAAA,CAAA,2gBAAA,CAAA,EAAA;;MActC,WAAW,GAAG,IAAI,qBAAqB,CAAC,UAAU;;MElClD,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAC3C,IAAK,CAAA,KAAA,GAAG,KAAK;AAsBxB;IApBU,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;;IAGd,cAAc,GAAA;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAGf,IAAA,WAAW,CACd,OAAkD,EAAA;AAElD,QAAA,OAAO,KAAK,CAAC,MACT,IAAI,CAAC;cACC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAU,WAAW,EAAE;AACpC,gBAAA,IAAI,EAAE,GAAG;AACT,gBAAA,GAAG,OAAO;aACb;AACH,cAAE,EAAE,CAAC,IAAI,CAAC,CACjB;;+GAtBI,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAjB,iBAAiB,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;ACND;;AAEG;;;;"}
@@ -7,7 +7,7 @@ import { TuiLoader } from '@taiga-ui/core/components/loader';
7
7
  import { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
8
8
  import { EMPTY_QUERY } from '@taiga-ui/cdk/constants';
9
9
  import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
10
- import { tuiIsFocused } from '@taiga-ui/cdk/utils/focus';
10
+ import { tuiIsNativeFocused } from '@taiga-ui/cdk/utils/focus';
11
11
  import { tuiIsPresent } from '@taiga-ui/cdk/utils/miscellaneous';
12
12
  import { TUI_ITEMS_HANDLERS } from '@taiga-ui/core/directives/items-handlers';
13
13
  import { TUI_ITEMS_HANDLERS as TUI_ITEMS_HANDLERS$1 } from '@taiga-ui/kit/tokens';
@@ -35,7 +35,7 @@ class TuiDataListWrapperComponent {
35
35
  : this.itemsHandlersLegacy.stringify($implicit);
36
36
  }
37
37
  getContext($implicit, { nativeElement }) {
38
- return { $implicit, active: tuiIsFocused(nativeElement) };
38
+ return { $implicit, active: tuiIsNativeFocused(nativeElement) };
39
39
  }
40
40
  // TODO(v5): delete
41
41
  getOptions(includeDisabled = false) {