@taiga-ui/kit 4.52.0-canary.c91900a → 4.52.0-canary.ca43bcb

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 (168) hide show
  1. package/components/combo-box/combo-box.d.ts +2 -0
  2. package/components/combo-box/combo-box.directive.d.ts +5 -5
  3. package/components/combo-box/index.d.ts +1 -0
  4. package/components/confirm/confirm.component.d.ts +1 -1
  5. package/components/confirm/confirm.service.d.ts +1 -1
  6. package/components/copy/copy.directive.d.ts +1 -2
  7. package/components/input-chip/input-chip.component.d.ts +1 -1
  8. package/components/input-chip/input-chip.d.ts +1 -1
  9. package/components/input-chip/input-chip.directive.d.ts +2 -2
  10. package/components/input-color/index.d.ts +1 -0
  11. package/components/input-color/input-color.component.d.ts +4 -4
  12. package/components/input-color/input-color.d.ts +2 -0
  13. package/components/input-date/input-date.d.ts +1 -1
  14. package/components/input-date/input-date.directive.d.ts +5 -5
  15. package/components/input-date-multi/input-date-multi.d.ts +1 -2
  16. package/components/input-date-multi/input-date-multi.directive.d.ts +1 -1
  17. package/components/input-date-range/input-date-range.d.ts +1 -1
  18. package/components/input-date-range/input-date-range.directive.d.ts +3 -3
  19. package/components/input-date-time/input-date-time.d.ts +1 -1
  20. package/components/input-date-time/input-date-time.directive.d.ts +3 -3
  21. package/components/input-month/input-month.d.ts +1 -1
  22. package/components/input-month/input-month.directive.d.ts +5 -4
  23. package/components/input-month-range/input-month-range.d.ts +1 -1
  24. package/components/input-month-range/input-month-range.directive.d.ts +5 -4
  25. package/components/input-number/input-number.d.ts +1 -1
  26. package/components/input-number/input-number.directive.d.ts +3 -3
  27. package/components/input-phone/index.d.ts +1 -0
  28. package/components/input-phone/input-phone.d.ts +2 -0
  29. package/components/input-phone/input-phone.directive.d.ts +7 -7
  30. package/components/input-phone-international/index.d.ts +1 -0
  31. package/components/input-phone-international/input-phone-international.component.d.ts +1 -6
  32. package/components/input-phone-international/input-phone-international.d.ts +2 -0
  33. package/components/input-pin/index.d.ts +1 -0
  34. package/components/input-pin/input-pin.component.d.ts +3 -3
  35. package/components/input-pin/input-pin.d.ts +2 -0
  36. package/components/input-range/input-range.component.d.ts +8 -40
  37. package/components/input-slider/input-slider.d.ts +1 -1
  38. package/components/input-time/input-time.component.d.ts +1 -3
  39. package/components/input-time/input-time.d.ts +1 -1
  40. package/components/input-time/input-time.directive.d.ts +3 -3
  41. package/components/input-year/input-year.d.ts +1 -1
  42. package/components/input-year/input-year.directive.d.ts +4 -4
  43. package/components/line-clamp/line-clamp-box.component.d.ts +1 -1
  44. package/components/notification-middle/notification-middle.service.d.ts +1 -1
  45. package/components/preview/dialog/preview-dialog.service.d.ts +1 -1
  46. package/components/push/push-alert.component.d.ts +1 -1
  47. package/components/push/push.options.d.ts +1 -1
  48. package/components/push/push.service.d.ts +1 -1
  49. package/components/routable-dialog/generate-dialogable-route.d.ts +1 -1
  50. package/components/select/native-select/native-select.component.d.ts +4 -4
  51. package/components/select/select.d.ts +1 -1
  52. package/components/select/select.directive.d.ts +4 -3
  53. package/components/textarea/index.d.ts +2 -1
  54. package/components/textarea/textarea.component.d.ts +4 -4
  55. package/components/textarea/textarea.d.ts +3 -0
  56. package/components/textarea/textarea.directive.d.ts +13 -0
  57. package/components/toast/toast.component.d.ts +1 -1
  58. package/components/toast/toast.options.d.ts +1 -1
  59. package/components/toast/toast.service.d.ts +1 -1
  60. package/directives/button-select/button-select.directive.d.ts +1 -1
  61. package/directives/index.d.ts +0 -1
  62. package/directives/password/password.directive.d.ts +1 -1
  63. package/directives/tooltip/tooltip.directive.d.ts +1 -1
  64. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs +3 -3
  65. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs.map +1 -1
  66. package/fesm2022/taiga-ui-kit-components-combo-box.mjs +25 -22
  67. package/fesm2022/taiga-ui-kit-components-combo-box.mjs.map +1 -1
  68. package/fesm2022/taiga-ui-kit-components-confirm.mjs +1 -1
  69. package/fesm2022/taiga-ui-kit-components-confirm.mjs.map +1 -1
  70. package/fesm2022/taiga-ui-kit-components-copy.mjs +5 -8
  71. package/fesm2022/taiga-ui-kit-components-copy.mjs.map +1 -1
  72. package/fesm2022/taiga-ui-kit-components-files.mjs +1 -1
  73. package/fesm2022/taiga-ui-kit-components-files.mjs.map +1 -1
  74. package/fesm2022/taiga-ui-kit-components-filter.mjs +1 -1
  75. package/fesm2022/taiga-ui-kit-components-filter.mjs.map +1 -1
  76. package/fesm2022/taiga-ui-kit-components-input-chip.mjs +16 -10
  77. package/fesm2022/taiga-ui-kit-components-input-chip.mjs.map +1 -1
  78. package/fesm2022/taiga-ui-kit-components-input-color.mjs +16 -13
  79. package/fesm2022/taiga-ui-kit-components-input-color.mjs.map +1 -1
  80. package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs +6 -5
  81. package/fesm2022/taiga-ui-kit-components-input-date-multi.mjs.map +1 -1
  82. package/fesm2022/taiga-ui-kit-components-input-date-range.mjs +12 -7
  83. package/fesm2022/taiga-ui-kit-components-input-date-range.mjs.map +1 -1
  84. package/fesm2022/taiga-ui-kit-components-input-date-time.mjs +13 -10
  85. package/fesm2022/taiga-ui-kit-components-input-date-time.mjs.map +1 -1
  86. package/fesm2022/taiga-ui-kit-components-input-date.mjs +13 -10
  87. package/fesm2022/taiga-ui-kit-components-input-date.mjs.map +1 -1
  88. package/fesm2022/taiga-ui-kit-components-input-month-range.mjs +11 -8
  89. package/fesm2022/taiga-ui-kit-components-input-month-range.mjs.map +1 -1
  90. package/fesm2022/taiga-ui-kit-components-input-month.mjs +12 -9
  91. package/fesm2022/taiga-ui-kit-components-input-month.mjs.map +1 -1
  92. package/fesm2022/taiga-ui-kit-components-input-number.mjs +12 -10
  93. package/fesm2022/taiga-ui-kit-components-input-number.mjs.map +1 -1
  94. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs +74 -64
  95. package/fesm2022/taiga-ui-kit-components-input-phone-international.mjs.map +1 -1
  96. package/fesm2022/taiga-ui-kit-components-input-phone.mjs +21 -18
  97. package/fesm2022/taiga-ui-kit-components-input-phone.mjs.map +1 -1
  98. package/fesm2022/taiga-ui-kit-components-input-pin.mjs +8 -6
  99. package/fesm2022/taiga-ui-kit-components-input-pin.mjs.map +1 -1
  100. package/fesm2022/taiga-ui-kit-components-input-range.mjs +52 -49
  101. package/fesm2022/taiga-ui-kit-components-input-range.mjs.map +1 -1
  102. package/fesm2022/taiga-ui-kit-components-input-slider.mjs +2 -1
  103. package/fesm2022/taiga-ui-kit-components-input-slider.mjs.map +1 -1
  104. package/fesm2022/taiga-ui-kit-components-input-time.mjs +23 -24
  105. package/fesm2022/taiga-ui-kit-components-input-time.mjs.map +1 -1
  106. package/fesm2022/taiga-ui-kit-components-input-year.mjs +14 -9
  107. package/fesm2022/taiga-ui-kit-components-input-year.mjs.map +1 -1
  108. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs +2 -2
  109. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs.map +1 -1
  110. package/fesm2022/taiga-ui-kit-components-multi-select.mjs +1 -1
  111. package/fesm2022/taiga-ui-kit-components-notification-middle.mjs +1 -1
  112. package/fesm2022/taiga-ui-kit-components-notification-middle.mjs.map +1 -1
  113. package/fesm2022/taiga-ui-kit-components-preview.mjs +3 -3
  114. package/fesm2022/taiga-ui-kit-components-preview.mjs.map +1 -1
  115. package/fesm2022/taiga-ui-kit-components-push.mjs +6 -7
  116. package/fesm2022/taiga-ui-kit-components-push.mjs.map +1 -1
  117. package/fesm2022/taiga-ui-kit-components-routable-dialog.mjs +1 -1
  118. package/fesm2022/taiga-ui-kit-components-routable-dialog.mjs.map +1 -1
  119. package/fesm2022/taiga-ui-kit-components-select.mjs +31 -16
  120. package/fesm2022/taiga-ui-kit-components-select.mjs.map +1 -1
  121. package/fesm2022/taiga-ui-kit-components-slider.mjs +1 -1
  122. package/fesm2022/taiga-ui-kit-components-slider.mjs.map +1 -1
  123. package/fesm2022/taiga-ui-kit-components-tabs.mjs +2 -2
  124. package/fesm2022/taiga-ui-kit-components-tabs.mjs.map +1 -1
  125. package/fesm2022/taiga-ui-kit-components-textarea.mjs +43 -45
  126. package/fesm2022/taiga-ui-kit-components-textarea.mjs.map +1 -1
  127. package/fesm2022/taiga-ui-kit-components-toast.mjs +2 -2
  128. package/fesm2022/taiga-ui-kit-components-toast.mjs.map +1 -1
  129. package/fesm2022/taiga-ui-kit-directives-button-select.mjs +2 -2
  130. package/fesm2022/taiga-ui-kit-directives-button-select.mjs.map +1 -1
  131. package/fesm2022/taiga-ui-kit-directives-chevron.mjs +1 -1
  132. package/fesm2022/taiga-ui-kit-directives-chevron.mjs.map +1 -1
  133. package/fesm2022/taiga-ui-kit-directives-data-list-dropdown-manager.mjs +1 -1
  134. package/fesm2022/taiga-ui-kit-directives-data-list-dropdown-manager.mjs.map +1 -1
  135. package/fesm2022/taiga-ui-kit-directives-password.mjs +2 -2
  136. package/fesm2022/taiga-ui-kit-directives-password.mjs.map +1 -1
  137. package/fesm2022/taiga-ui-kit-directives-tooltip.mjs +2 -2
  138. package/fesm2022/taiga-ui-kit-directives-tooltip.mjs.map +1 -1
  139. package/fesm2022/taiga-ui-kit-directives.mjs +0 -1
  140. package/fesm2022/taiga-ui-kit-directives.mjs.map +1 -1
  141. package/fesm2022/taiga-ui-kit-pipes-auto-color.mjs +43 -0
  142. package/fesm2022/taiga-ui-kit-pipes-auto-color.mjs.map +1 -0
  143. package/fesm2022/taiga-ui-kit-pipes-flag.mjs +31 -0
  144. package/fesm2022/taiga-ui-kit-pipes-flag.mjs.map +1 -0
  145. package/fesm2022/taiga-ui-kit-pipes-initials.mjs +28 -0
  146. package/fesm2022/taiga-ui-kit-pipes-initials.mjs.map +1 -0
  147. package/fesm2022/taiga-ui-kit-pipes.mjs +3 -0
  148. package/fesm2022/taiga-ui-kit-pipes.mjs.map +1 -1
  149. package/fesm2022/taiga-ui-kit-tokens.mjs +1 -1
  150. package/fesm2022/taiga-ui-kit-tokens.mjs.map +1 -1
  151. package/fesm2022/taiga-ui-kit-utils.mjs +1 -7
  152. package/fesm2022/taiga-ui-kit-utils.mjs.map +1 -1
  153. package/package.json +26 -18
  154. package/pipes/auto-color/auto-color.pipe.d.ts +13 -0
  155. package/pipes/auto-color/index.d.ts +1 -0
  156. package/pipes/flag/flag.pipe.d.ts +14 -0
  157. package/pipes/flag/index.d.ts +1 -0
  158. package/pipes/index.d.ts +3 -0
  159. package/pipes/initials/index.d.ts +1 -0
  160. package/pipes/initials/initials.pipe.d.ts +7 -0
  161. package/utils/index.d.ts +0 -1
  162. package/components/textarea/textarea-limit.directive.d.ts +0 -26
  163. package/directives/lazy-loading/index.d.ts +0 -2
  164. package/directives/lazy-loading/lazy-loading.directive.d.ts +0 -18
  165. package/directives/lazy-loading/lazy-loading.service.d.ts +0 -12
  166. package/fesm2022/taiga-ui-kit-directives-lazy-loading.mjs +0 -80
  167. package/fesm2022/taiga-ui-kit-directives-lazy-loading.mjs.map +0 -1
  168. package/utils/phone.d.ts +0 -3
@@ -1,12 +1,12 @@
1
1
  import { TuiControl } from '@taiga-ui/cdk/classes';
2
2
  import { TuiCalendarYear } from '@taiga-ui/core/components/calendar';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "@taiga-ui/core/components/textfield";
4
+ import * as i1 from "@taiga-ui/core/components/input";
5
5
  import * as i2 from "@maskito/angular";
6
- import * as i3 from "@taiga-ui/core/directives/dropdown";
6
+ import * as i3 from "@taiga-ui/core/portals/dropdown";
7
7
  export declare class TuiInputYearDirective extends TuiControl<number | null> {
8
8
  private readonly options;
9
- private readonly textfield;
9
+ private readonly input;
10
10
  private readonly open;
11
11
  private readonly initialItem;
12
12
  protected readonly dropdownEnabled: import("@angular/core").Signal<boolean>;
@@ -27,5 +27,5 @@ export declare class TuiInputYearDirective extends TuiControl<number | null> {
27
27
  protected toggle(): void;
28
28
  protected onInput(raw: string): void;
29
29
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiInputYearDirective, never>;
30
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiInputYearDirective, "input[tuiInputYear]", never, { "minSetter": { "alias": "min"; "required": false; }; "maxSetter": { "alias": "max"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.TuiWithTextfield; inputs: {}; outputs: {}; }, { directive: typeof i2.MaskitoDirective; inputs: {}; outputs: {}; }, { directive: typeof i3.TuiDropdownAuto; inputs: {}; outputs: {}; }]>;
30
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiInputYearDirective, "input[tuiInputYear]", never, { "minSetter": { "alias": "min"; "required": false; }; "maxSetter": { "alias": "max"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.TuiWithInput; inputs: {}; outputs: {}; }, { directive: typeof i2.MaskitoDirective; inputs: {}; outputs: {}; }, { directive: typeof i3.TuiDropdownAuto; inputs: {}; outputs: {}; }]>;
31
31
  }
@@ -1,4 +1,4 @@
1
- import { TuiHintComponent } from '@taiga-ui/core/directives/hint';
1
+ import { TuiHintComponent } from '@taiga-ui/core/portals/hint';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class TuiLineClampBox extends TuiHintComponent {
4
4
  protected get width(): number;
@@ -1,4 +1,4 @@
1
- import { TuiModalService } from '@taiga-ui/core/components/modal';
1
+ import { TuiModalService } from '@taiga-ui/core/portals/modal';
2
2
  import { TuiNotificationMiddleComponent, type TuiNotificationMiddleOptions } from './notification-middle.component';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class TuiNotificationMiddleService extends TuiModalService<TuiNotificationMiddleOptions> {
@@ -1,4 +1,4 @@
1
- import { TuiModalService } from '@taiga-ui/core/components/modal';
1
+ import { TuiModalService } from '@taiga-ui/core/portals/modal';
2
2
  import { TuiPreviewDialog } from './preview-dialog.component';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class TuiPreviewDialogService extends TuiModalService<unknown> {
@@ -2,7 +2,7 @@ import { type TuiPortalContext } from '@taiga-ui/cdk/portals';
2
2
  import { type TuiPushOptions } from './push.options';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@taiga-ui/cdk/directives/animated";
5
- import * as i2 from "@taiga-ui/core/directives/alert";
5
+ import * as i2 from "@taiga-ui/core/portals/alert";
6
6
  export declare class TuiPushAlert {
7
7
  protected readonly context: TuiPortalContext<TuiPushOptions, string>;
8
8
  protected get isDirective(): boolean;
@@ -1,5 +1,5 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- import { type TuiPositionOptions } from '@taiga-ui/core/directives/alert';
2
+ import { type TuiPositionOptions } from '@taiga-ui/core/portals/alert';
3
3
  export interface TuiPushOptions extends TuiPositionOptions {
4
4
  readonly buttons: readonly string[];
5
5
  readonly heading: string;
@@ -1,4 +1,4 @@
1
- import { TuiAlertService } from '@taiga-ui/core/directives/alert';
1
+ import { TuiAlertService } from '@taiga-ui/core/portals/alert';
2
2
  import { type TuiPushOptions } from './push.options';
3
3
  import { TuiPushAlert } from './push-alert.component';
4
4
  import * as i0 from "@angular/core";
@@ -1,6 +1,6 @@
1
1
  import { type Type } from '@angular/core';
2
2
  import { type DefaultExport, type Route } from '@angular/router';
3
- import { type TuiDialogOptions } from '@taiga-ui/core/components/dialog';
3
+ import { type TuiDialogOptions } from '@taiga-ui/core/portals/dialog';
4
4
  export declare function tuiGenerateDialogableRoute<I>(component: Type<any> | (() => Promise<DefaultExport<Type<any>> | Type<any>>), { path, outlet, ...dialogOptions }?: Partial<TuiDialogOptions<I>> & {
5
5
  path?: string;
6
6
  outlet?: string;
@@ -3,13 +3,13 @@ import { type TuiTextfieldAccessor } from '@taiga-ui/core/components/textfield';
3
3
  import { type TuiItemsHandlers } from '@taiga-ui/core/directives/items-handlers';
4
4
  import { tuiIsFlat } from '@taiga-ui/kit/utils';
5
5
  import * as i0 from "@angular/core";
6
- import * as i1 from "@taiga-ui/core/components/textfield";
6
+ import * as i1 from "@taiga-ui/core/components/input";
7
7
  export declare class TuiNativeSelect<T> extends TuiControl<T | null> implements TuiTextfieldAccessor<T> {
8
- private readonly textfield;
8
+ private readonly input;
9
+ private readonly options;
9
10
  protected readonly isFlat: typeof tuiIsFlat;
10
11
  protected readonly itemsHandlers: TuiItemsHandlers<T>;
11
12
  protected readonly stringified: import("@angular/core").Signal<string>;
12
- protected readonly showPlaceholder: import("@angular/core").Signal<boolean | "">;
13
13
  protected readonly isSelected: import("@angular/core").Signal<(x: T) => boolean>;
14
14
  protected readonly valueEffect: import("@angular/core").EffectRef;
15
15
  readonly items: import("@angular/core").InputSignal<readonly T[] | readonly (readonly T[])[] | null>;
@@ -18,5 +18,5 @@ export declare class TuiNativeSelect<T> extends TuiControl<T | null> implements
18
18
  setValue(value: T | null): void;
19
19
  protected selectOption(index: number): void;
20
20
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiNativeSelect<any>, never>;
21
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiNativeSelect<any>, "select[tuiSelect]", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.TuiWithTextfield; inputs: {}; outputs: {}; }]>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiNativeSelect<any>, "select[tuiSelect]", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.TuiWithInput; inputs: {}; outputs: {}; }]>;
22
22
  }
@@ -1,3 +1,3 @@
1
1
  import { TuiNativeSelect } from './native-select/native-select.component';
2
2
  import { TuiSelectDirective } from './select.directive';
3
- export declare const TuiSelect: readonly [typeof TuiSelectDirective, typeof TuiNativeSelect];
3
+ export declare const TuiSelect: readonly [typeof TuiSelectDirective, typeof TuiNativeSelect, readonly [typeof import("@taiga-ui/cdk/directives/item").TuiItem, typeof import("@taiga-ui/core/components/label").TuiLabel, typeof import("@taiga-ui/core/components/textfield").TuiTextfieldComponent, typeof import("@taiga-ui/core/components/textfield").TuiTextfieldOptionsDirective, typeof import("@taiga-ui/core/components/textfield").TuiTextfieldMultiComponent, typeof import("@taiga-ui/core/portals/dropdown").TuiDropdownContent]];
@@ -1,14 +1,15 @@
1
1
  import { TuiControl } from '@taiga-ui/cdk/classes';
2
2
  import { type TuiTextfieldAccessor } from '@taiga-ui/core/components/textfield';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "@taiga-ui/core/components/textfield";
4
+ import * as i1 from "@taiga-ui/core/components/input";
5
+ import * as i2 from "@taiga-ui/core/components/textfield";
5
6
  export declare class TuiSelectDirective<T> extends TuiControl<T | null> implements TuiTextfieldAccessor<T> {
6
- private readonly textfield;
7
+ private readonly input;
7
8
  private readonly open;
8
9
  private readonly itemsHandlers;
9
10
  protected readonly dropdownEnabled: import("@angular/core").Signal<boolean>;
10
11
  protected readonly valueEffect: import("@angular/core").EffectRef;
11
12
  setValue(value: T | null): void;
12
13
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiSelectDirective<any>, never>;
13
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiSelectDirective<any>, "input[tuiSelect]", never, {}, {}, never, never, true, [{ directive: typeof i1.TuiWithTextfield; inputs: {}; outputs: {}; }, { directive: typeof i1.TuiSelectLike; inputs: {}; outputs: {}; }]>;
14
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiSelectDirective<any>, "input[tuiSelect]", never, {}, {}, never, never, true, [{ directive: typeof i1.TuiWithInput; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiSelectLike; inputs: {}; outputs: {}; }]>;
14
15
  }
@@ -1,3 +1,4 @@
1
+ export * from './textarea';
1
2
  export * from './textarea.component';
3
+ export * from './textarea.directive';
2
4
  export * from './textarea.options';
3
- export * from './textarea-limit.directive';
@@ -2,8 +2,8 @@ import { type AfterViewInit, ElementRef } from '@angular/core';
2
2
  import { TuiTextfieldComponent } from '@taiga-ui/core/components/textfield';
3
3
  import { type TuiTextareaOptions } from './textarea.options';
4
4
  import * as i0 from "@angular/core";
5
- import * as i1 from "@taiga-ui/core/components/textfield";
6
- export declare class TuiTextarea implements AfterViewInit {
5
+ import * as i1 from "@taiga-ui/core/components/input";
6
+ export declare class TuiTextareaComponent implements AfterViewInit {
7
7
  private readonly template?;
8
8
  private readonly options;
9
9
  private readonly vcr;
@@ -16,6 +16,6 @@ export declare class TuiTextarea implements AfterViewInit {
16
16
  content: TuiTextareaOptions['content'];
17
17
  ngAfterViewInit(): void;
18
18
  protected onScroll(): void;
19
- static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextarea, never>;
20
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiTextarea, "textarea[tuiTextarea]", never, { "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "content": { "alias": "content"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.TuiWithTextfield; inputs: {}; outputs: {}; }]>;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextareaComponent, never>;
20
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiTextareaComponent, "textarea[tuiTextarea]", never, { "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "content": { "alias": "content"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.TuiWithInput; inputs: {}; outputs: {}; }]>;
21
21
  }
@@ -0,0 +1,3 @@
1
+ import { TuiTextareaComponent } from './textarea.component';
2
+ import { TuiTextareaDirective } from './textarea.directive';
3
+ export declare const TuiTextarea: readonly [typeof TuiTextareaComponent, typeof TuiTextareaDirective, readonly [typeof import("@taiga-ui/cdk/directives/item").TuiItem, typeof import("@taiga-ui/core/components/label").TuiLabel, typeof import("@taiga-ui/core/components/textfield").TuiTextfieldComponent, typeof import("@taiga-ui/core/components/textfield").TuiTextfieldOptionsDirective, typeof import("@taiga-ui/core/components/textfield").TuiTextfieldMultiComponent, typeof import("@taiga-ui/core/portals/dropdown").TuiDropdownContent]];
@@ -0,0 +1,13 @@
1
+ import { type DoCheck } from '@angular/core';
2
+ import { type AbstractControl, type ValidationErrors, type Validator } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ export declare class TuiTextareaDirective implements Validator, DoCheck {
5
+ private readonly textfield;
6
+ private readonly ref;
7
+ readonly size: import("@angular/core").Signal<"m" | "l" | "s">;
8
+ readonly limit: import("@angular/core").InputSignal<number>;
9
+ ngDoCheck(): void;
10
+ validate(control: AbstractControl): ValidationErrors | null;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextareaDirective, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiTextareaDirective, "[tuiTextarea][limit]", never, { "limit": { "alias": "limit"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
13
+ }
@@ -3,7 +3,7 @@ import { type TuiPortalContext } from '@taiga-ui/cdk/portals';
3
3
  import { type TuiToastOptions } from './toast.options';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@taiga-ui/cdk/directives/animated";
6
- import * as i2 from "@taiga-ui/core/directives/alert";
6
+ import * as i2 from "@taiga-ui/core/portals/alert";
7
7
  export declare class TuiToastComponent<O, I> implements AfterViewInit {
8
8
  private readonly close;
9
9
  private readonly el;
@@ -1,5 +1,5 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- import { type TuiPositionOptions } from '@taiga-ui/core/directives/alert';
2
+ import { type TuiPositionOptions } from '@taiga-ui/core/portals/alert';
3
3
  export interface TuiToastOptions<I> extends TuiPositionOptions {
4
4
  readonly autoClose: number;
5
5
  readonly closable: boolean;
@@ -1,4 +1,4 @@
1
- import { TuiAlertService } from '@taiga-ui/core/directives/alert';
1
+ import { TuiAlertService } from '@taiga-ui/core/portals/alert';
2
2
  import { TuiToastComponent } from './toast.component';
3
3
  import { type TuiToastOptions } from './toast.options';
4
4
  import * as i0 from "@angular/core";
@@ -1,7 +1,7 @@
1
1
  import { TuiControl } from '@taiga-ui/cdk/classes';
2
2
  import { type TuiDataListHost } from '@taiga-ui/core/components/data-list';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "@taiga-ui/core/directives/dropdown";
4
+ import * as i1 from "@taiga-ui/core/portals/dropdown";
5
5
  import * as i2 from "@taiga-ui/cdk/directives/native-validator";
6
6
  export declare class TuiButtonSelect<T> extends TuiControl<T | T[]> implements TuiDataListHost<T> {
7
7
  private readonly open;
@@ -7,7 +7,6 @@ export * from '@taiga-ui/kit/directives/data-list-dropdown-manager';
7
7
  export * from '@taiga-ui/kit/directives/fade';
8
8
  export * from '@taiga-ui/kit/directives/fluid-typography';
9
9
  export * from '@taiga-ui/kit/directives/highlight';
10
- export * from '@taiga-ui/kit/directives/lazy-loading';
11
10
  export * from '@taiga-ui/kit/directives/password';
12
11
  export * from '@taiga-ui/kit/directives/present';
13
12
  export * from '@taiga-ui/kit/directives/sensitive';
@@ -1,7 +1,7 @@
1
1
  import { TuiTextfieldComponent } from '@taiga-ui/core/components/textfield';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@taiga-ui/core/directives/appearance";
4
- import * as i2 from "@taiga-ui/core/directives/hint";
4
+ import * as i2 from "@taiga-ui/core/portals/hint";
5
5
  export declare class TuiPassword {
6
6
  private readonly options;
7
7
  private readonly texts;
@@ -2,7 +2,7 @@ import { type DoCheck, type Signal } from '@angular/core';
2
2
  import { type TuiSizeS } from '@taiga-ui/core/types';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@taiga-ui/core/directives/appearance";
5
- import * as i2 from "@taiga-ui/core/directives/hint";
5
+ import * as i2 from "@taiga-ui/core/portals/hint";
6
6
  export declare class TuiTooltip implements DoCheck {
7
7
  private readonly textfield;
8
8
  private readonly isMobile;
@@ -9,9 +9,9 @@ import * as i1 from '@taiga-ui/core/components/data-list';
9
9
  import { TuiDataList } from '@taiga-ui/core/components/data-list';
10
10
  import { TuiIcon } from '@taiga-ui/core/components/icon';
11
11
  import { tuiLinkOptionsProvider } from '@taiga-ui/core/components/link';
12
- import * as i2 from '@taiga-ui/core/directives/dropdown';
13
- import { TuiDropdown } from '@taiga-ui/core/directives/dropdown';
14
- import { tuiHintOptionsProvider } from '@taiga-ui/core/directives/hint';
12
+ import * as i2 from '@taiga-ui/core/portals/dropdown';
13
+ import { TuiDropdown } from '@taiga-ui/core/portals/dropdown';
14
+ import { tuiHintOptionsProvider } from '@taiga-ui/core/portals/hint';
15
15
  import { TUI_COMMON_ICONS } from '@taiga-ui/core/tokens';
16
16
  import * as i3 from '@taiga-ui/kit/components/items-with-more';
17
17
  import { TuiItemsWithMore } from '@taiga-ui/kit/components/items-with-more';
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-breadcrumbs.mjs","sources":["../../../projects/kit/components/breadcrumbs/breadcrumbs.options.ts","../../../projects/kit/components/breadcrumbs/breadcrumbs.component.ts","../../../projects/kit/components/breadcrumbs/breadcrumbs.template.html","../../../projects/kit/components/breadcrumbs/taiga-ui-kit-components-breadcrumbs.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiSizeL} from '@taiga-ui/core/types';\n\nexport interface TuiBreadcrumbsOptions {\n readonly icon: string;\n readonly size: TuiSizeL;\n readonly itemsLimit: number;\n}\n\nexport const TUI_BREADCRUMBS_DEFAULT_OPTIONS: TuiBreadcrumbsOptions = {\n icon: '@tui.chevron-right',\n size: 'm',\n itemsLimit: 0,\n};\n\nexport const [TUI_BREADCRUMBS_OPTIONS, tuiBreadcrumbsOptionsProvider] = tuiCreateOptions(\n TUI_BREADCRUMBS_DEFAULT_OPTIONS,\n);\n","import {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n inject,\n Input,\n type QueryList,\n TemplateRef,\n} from '@angular/core';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {tuiLinkOptionsProvider} from '@taiga-ui/core/components/link';\nimport {TuiDropdown} from '@taiga-ui/core/directives/dropdown';\nimport {tuiHintOptionsProvider} from '@taiga-ui/core/directives/hint';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {TuiItemsWithMore} from '@taiga-ui/kit/components/items-with-more';\nimport {TUI_MORE_WORD} from '@taiga-ui/kit/tokens';\n\nimport {TUI_BREADCRUMBS_OPTIONS, type TuiBreadcrumbsOptions} from './breadcrumbs.options';\n\n@Component({\n selector: 'tui-breadcrumbs',\n imports: [\n AsyncPipe,\n NgTemplateOutlet,\n TuiButton,\n TuiDataList,\n TuiDropdown,\n TuiIcon,\n TuiItemsWithMore,\n ],\n templateUrl: './breadcrumbs.template.html',\n styleUrl: './breadcrumbs.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiLinkOptionsProvider({appearance: 'action-grayscale'}),\n tuiHintOptionsProvider({direction: 'bottom'}),\n ],\n host: {\n '[attr.data-size]': 'size',\n },\n})\nexport class TuiBreadcrumbs {\n @ContentChildren(TuiItem, {read: TemplateRef})\n protected readonly items: QueryList<TemplateRef<Record<string, unknown>>> =\n EMPTY_QUERY;\n\n protected readonly options = inject(TUI_BREADCRUMBS_OPTIONS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly more = inject(TUI_MORE_WORD);\n\n @Input()\n public size: TuiBreadcrumbsOptions['size'] = this.options.size;\n\n @Input()\n public itemsLimit = this.options.itemsLimit;\n\n protected get limit(): number {\n return this.itemsLimit ? this.itemsLimit - 2 : Infinity;\n }\n\n protected get offset(): number {\n return this.itemsLimit === 2 ? 1 : 0;\n }\n}\n","@if (items.changes | async) {}\n@if (itemsLimit > 1) {\n @if (itemsLimit !== 2) {\n <ng-container [ngTemplateOutlet]=\"items.first\" />\n <ng-container [ngTemplateOutlet]=\"separator\" />\n }\n <tui-items-with-more\n side=\"start\"\n [itemsLimit]=\"itemsLimit - 2\"\n [required]=\"items.length + offset - 2\"\n >\n @for (item of items; track item) {\n @if (item !== items.first || itemsLimit === 2) {\n <ng-container *tuiItem>\n <ng-container [ngTemplateOutlet]=\"item\" />\n @if (!$last) {\n <ng-container [ngTemplateOutlet]=\"separator\" />\n }\n </ng-container>\n }\n }\n <ng-template\n let-index\n tuiMore\n >\n <span class=\"t-more\">\n <button\n appearance=\"flat\"\n size=\"xs\"\n tuiDropdownAuto\n tuiIconButton\n type=\"button\"\n [iconStart]=\"icons.ellipsis\"\n [tuiDropdown]=\"dropdown\"\n >\n {{ more() }}\n </button>\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </span>\n <ng-template #dropdown>\n <tui-data-list size=\"s\">\n @for (item of items; track item) {\n @if ($index + offset && $index <= index && item !== items.last) {\n <span\n tuiOption\n class=\"t-option\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </span>\n }\n }\n </tui-data-list>\n </ng-template>\n </ng-template>\n </tui-items-with-more>\n} @else {\n @for (item of items; track item) {\n <ng-container [ngTemplateOutlet]=\"item\" />\n @if (!$last) {\n <ng-container [ngTemplateOutlet]=\"separator\" />\n }\n }\n}\n<ng-template #separator>\n @if (options.icon.length > 1) {\n <tui-icon\n class=\"t-icon\"\n [icon]=\"options.icon\"\n />\n } @else {\n <span class=\"t-char\">{{ options.icon }}</span>\n }\n</ng-template>\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-breadcrumbs.mjs","sources":["../../../projects/kit/components/breadcrumbs/breadcrumbs.options.ts","../../../projects/kit/components/breadcrumbs/breadcrumbs.component.ts","../../../projects/kit/components/breadcrumbs/breadcrumbs.template.html","../../../projects/kit/components/breadcrumbs/taiga-ui-kit-components-breadcrumbs.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type TuiSizeL} from '@taiga-ui/core/types';\n\nexport interface TuiBreadcrumbsOptions {\n readonly icon: string;\n readonly size: TuiSizeL;\n readonly itemsLimit: number;\n}\n\nexport const TUI_BREADCRUMBS_DEFAULT_OPTIONS: TuiBreadcrumbsOptions = {\n icon: '@tui.chevron-right',\n size: 'm',\n itemsLimit: 0,\n};\n\nexport const [TUI_BREADCRUMBS_OPTIONS, tuiBreadcrumbsOptionsProvider] = tuiCreateOptions(\n TUI_BREADCRUMBS_DEFAULT_OPTIONS,\n);\n","import {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n inject,\n Input,\n type QueryList,\n TemplateRef,\n} from '@angular/core';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {tuiLinkOptionsProvider} from '@taiga-ui/core/components/link';\nimport {TuiDropdown} from '@taiga-ui/core/portals/dropdown';\nimport {tuiHintOptionsProvider} from '@taiga-ui/core/portals/hint';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {TuiItemsWithMore} from '@taiga-ui/kit/components/items-with-more';\nimport {TUI_MORE_WORD} from '@taiga-ui/kit/tokens';\n\nimport {TUI_BREADCRUMBS_OPTIONS, type TuiBreadcrumbsOptions} from './breadcrumbs.options';\n\n@Component({\n selector: 'tui-breadcrumbs',\n imports: [\n AsyncPipe,\n NgTemplateOutlet,\n TuiButton,\n TuiDataList,\n TuiDropdown,\n TuiIcon,\n TuiItemsWithMore,\n ],\n templateUrl: './breadcrumbs.template.html',\n styleUrl: './breadcrumbs.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiLinkOptionsProvider({appearance: 'action-grayscale'}),\n tuiHintOptionsProvider({direction: 'bottom'}),\n ],\n host: {\n '[attr.data-size]': 'size',\n },\n})\nexport class TuiBreadcrumbs {\n @ContentChildren(TuiItem, {read: TemplateRef})\n protected readonly items: QueryList<TemplateRef<Record<string, unknown>>> =\n EMPTY_QUERY;\n\n protected readonly options = inject(TUI_BREADCRUMBS_OPTIONS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly more = inject(TUI_MORE_WORD);\n\n @Input()\n public size: TuiBreadcrumbsOptions['size'] = this.options.size;\n\n @Input()\n public itemsLimit = this.options.itemsLimit;\n\n protected get limit(): number {\n return this.itemsLimit ? this.itemsLimit - 2 : Infinity;\n }\n\n protected get offset(): number {\n return this.itemsLimit === 2 ? 1 : 0;\n }\n}\n","@if (items.changes | async) {}\n@if (itemsLimit > 1) {\n @if (itemsLimit !== 2) {\n <ng-container [ngTemplateOutlet]=\"items.first\" />\n <ng-container [ngTemplateOutlet]=\"separator\" />\n }\n <tui-items-with-more\n side=\"start\"\n [itemsLimit]=\"itemsLimit - 2\"\n [required]=\"items.length + offset - 2\"\n >\n @for (item of items; track item) {\n @if (item !== items.first || itemsLimit === 2) {\n <ng-container *tuiItem>\n <ng-container [ngTemplateOutlet]=\"item\" />\n @if (!$last) {\n <ng-container [ngTemplateOutlet]=\"separator\" />\n }\n </ng-container>\n }\n }\n <ng-template\n let-index\n tuiMore\n >\n <span class=\"t-more\">\n <button\n appearance=\"flat\"\n size=\"xs\"\n tuiDropdownAuto\n tuiIconButton\n type=\"button\"\n [iconStart]=\"icons.ellipsis\"\n [tuiDropdown]=\"dropdown\"\n >\n {{ more() }}\n </button>\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </span>\n <ng-template #dropdown>\n <tui-data-list size=\"s\">\n @for (item of items; track item) {\n @if ($index + offset && $index <= index && item !== items.last) {\n <span\n tuiOption\n class=\"t-option\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </span>\n }\n }\n </tui-data-list>\n </ng-template>\n </ng-template>\n </tui-items-with-more>\n} @else {\n @for (item of items; track item) {\n <ng-container [ngTemplateOutlet]=\"item\" />\n @if (!$last) {\n <ng-container [ngTemplateOutlet]=\"separator\" />\n }\n }\n}\n<ng-template #separator>\n @if (options.icon.length > 1) {\n <tui-icon\n class=\"t-icon\"\n [icon]=\"options.icon\"\n />\n } @else {\n <span class=\"t-char\">{{ options.icon }}</span>\n }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,19 +1,20 @@
1
+ import { TuiTextfieldComponent, tuiInjectAuxiliary, tuiAsTextfieldAccessor, TuiTextfield } from '@taiga-ui/core/components/textfield';
1
2
  import * as i0 from '@angular/core';
2
3
  import { inject, signal, isSignal, computed, effect, untracked, Input, Directive } from '@angular/core';
3
4
  import { TuiControl, tuiAsControl } from '@taiga-ui/cdk/classes';
4
5
  import { TUI_STRICT_MATCHER } from '@taiga-ui/cdk/constants';
5
6
  import { tuiAsOptionContent } from '@taiga-ui/core/components/data-list';
6
- import * as i1 from '@taiga-ui/core/components/textfield';
7
- import { TuiTextfieldComponent, TuiTextfieldDirective, tuiInjectAuxiliary, tuiAsTextfieldAccessor, TuiWithTextfield } from '@taiga-ui/core/components/textfield';
8
- import { TuiDropdownOpen, tuiDropdownEnabled, TuiDropdownDirective } from '@taiga-ui/core/directives/dropdown';
7
+ import * as i1 from '@taiga-ui/core/components/input';
8
+ import { TuiInputDirective, TuiWithInput } from '@taiga-ui/core/components/input';
9
9
  import { TUI_ITEMS_HANDLERS } from '@taiga-ui/core/directives/items-handlers';
10
+ import { TuiDropdownOpen, tuiDropdownEnabled, TuiDropdownDirective } from '@taiga-ui/core/portals/dropdown';
10
11
  import { TuiSelectOption } from '@taiga-ui/kit/components/select';
11
12
 
12
- class TuiComboBox extends TuiControl {
13
+ class TuiComboBoxDirective extends TuiControl {
13
14
  constructor() {
14
15
  super(...arguments);
15
16
  this.host = inject(TuiTextfieldComponent);
16
- this.textfield = inject(TuiTextfieldDirective);
17
+ this.input = inject(TuiInputDirective);
17
18
  this.open = inject(TuiDropdownOpen).open;
18
19
  this.dropdownEnabled = tuiDropdownEnabled(this.interactive);
19
20
  this.dropdown = inject(TuiDropdownDirective);
@@ -27,8 +28,8 @@ class TuiComboBox extends TuiControl {
27
28
  this.nonStrictControlEffect = effect(() => {
28
29
  if (!this.options().length &&
29
30
  !this.strict() &&
30
- this.stringify(this.value()) !== this.textfield.value()) {
31
- this.onChange(this.textfield.value() || null);
31
+ this.stringify(this.value()) !== this.input.value()) {
32
+ this.onChange(this.input.value() || null);
32
33
  }
33
34
  });
34
35
  this.matchingEffect = effect(() => {
@@ -37,7 +38,7 @@ class TuiComboBox extends TuiControl {
37
38
  if (!options.length || !matcher) {
38
39
  return;
39
40
  }
40
- const textfieldValue = this.textfield.value();
41
+ const textfieldValue = this.input.value();
41
42
  const selectedOption = options.find((x) => matcher(x, textfieldValue, this.handlers.stringify()));
42
43
  const value = untracked(() => this.value());
43
44
  const unchanged = this.stringify(value) === textfieldValue;
@@ -53,12 +54,12 @@ class TuiComboBox extends TuiControl {
53
54
  });
54
55
  this.newValueEffect = effect(() => {
55
56
  const stringified = this.stringify(this.value());
56
- this.textfield.value.update((x) => stringified || x);
57
+ this.input.value.update((x) => stringified || x);
57
58
  });
58
59
  this.blurEffect = effect(() => {
59
60
  const incomplete = untracked(() => this.strict() && this.value() === null);
60
61
  if (!this.host.focused() && incomplete) {
61
- this.textfield.value.set('');
62
+ this.input.value.set('');
62
63
  }
63
64
  });
64
65
  }
@@ -71,7 +72,7 @@ class TuiComboBox extends TuiControl {
71
72
  this.matcher.set(x);
72
73
  }
73
74
  setValue(value) {
74
- this.textfield.setValue(value);
75
+ this.input.setValue(value);
75
76
  this.onChange(value);
76
77
  if (!value) {
77
78
  this.toggleDropdown(true);
@@ -82,7 +83,7 @@ class TuiComboBox extends TuiControl {
82
83
  const changed = untracked(() => value !== this.value());
83
84
  if (changed || reset) {
84
85
  super.writeValue(value);
85
- untracked(() => this.textfield.value.set(this.stringify(value)));
86
+ untracked(() => this.input.value.set(this.stringify(value)));
86
87
  }
87
88
  }
88
89
  toggleDropdown(open = !this.open()) {
@@ -104,23 +105,23 @@ class TuiComboBox extends TuiControl {
104
105
  stringify(value) {
105
106
  return value != null ? this.handlers.stringify()(value) : '';
106
107
  }
107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiComboBox, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
108
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiComboBox, isStandalone: true, selector: "input[tuiComboBox]", inputs: { strictSetter: ["strict", "strictSetter"], matcherSetter: ["matcher", "matcherSetter"] }, host: { listeners: { "click": "toggleDropdown()", "input": "toggleDropdown(true)", "keydown.enter": "keydownEnter($event)" }, properties: { "disabled": "disabled()" } }, providers: [
108
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiComboBoxDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
109
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiComboBoxDirective, isStandalone: true, selector: "input[tuiComboBox]", inputs: { strictSetter: ["strict", "strictSetter"], matcherSetter: ["matcher", "matcherSetter"] }, host: { listeners: { "click": "toggleDropdown()", "input": "toggleDropdown(true)", "keydown.enter": "keydownEnter($event)" }, properties: { "disabled": "disabled()" } }, providers: [
109
110
  tuiAsOptionContent(TuiSelectOption),
110
- tuiAsTextfieldAccessor(TuiComboBox),
111
- tuiAsControl(TuiComboBox),
112
- ], usesInheritance: true, hostDirectives: [{ directive: i1.TuiWithTextfield }], ngImport: i0 }); }
111
+ tuiAsTextfieldAccessor(TuiComboBoxDirective),
112
+ tuiAsControl(TuiComboBoxDirective),
113
+ ], usesInheritance: true, hostDirectives: [{ directive: i1.TuiWithInput }], ngImport: i0 }); }
113
114
  }
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiComboBox, decorators: [{
115
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiComboBoxDirective, decorators: [{
115
116
  type: Directive,
116
117
  args: [{
117
118
  selector: 'input[tuiComboBox]',
118
119
  providers: [
119
120
  tuiAsOptionContent(TuiSelectOption),
120
- tuiAsTextfieldAccessor(TuiComboBox),
121
- tuiAsControl(TuiComboBox),
121
+ tuiAsTextfieldAccessor(TuiComboBoxDirective),
122
+ tuiAsControl(TuiComboBoxDirective),
122
123
  ],
123
- hostDirectives: [TuiWithTextfield],
124
+ hostDirectives: [TuiWithInput],
124
125
  host: {
125
126
  '[disabled]': 'disabled()',
126
127
  '(click)': 'toggleDropdown()',
@@ -136,9 +137,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
136
137
  args: ['matcher']
137
138
  }] } });
138
139
 
140
+ const TuiComboBox = [TuiComboBoxDirective, TuiTextfield];
141
+
139
142
  /**
140
143
  * Generated bundle index. Do not edit.
141
144
  */
142
145
 
143
- export { TuiComboBox };
146
+ export { TuiComboBox, TuiComboBoxDirective };
144
147
  //# sourceMappingURL=taiga-ui-kit-components-combo-box.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-combo-box.mjs","sources":["../../../projects/kit/components/combo-box/combo-box.directive.ts","../../../projects/kit/components/combo-box/taiga-ui-kit-components-combo-box.ts"],"sourcesContent":["import {\n computed,\n Directive,\n effect,\n inject,\n Input,\n isSignal,\n signal,\n untracked,\n} from '@angular/core';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {TUI_STRICT_MATCHER} from '@taiga-ui/cdk/constants';\nimport {type TuiStringMatcher} from '@taiga-ui/cdk/types';\nimport {\n tuiAsOptionContent,\n type TuiDataListAccessor,\n} from '@taiga-ui/core/components/data-list';\nimport {\n tuiAsTextfieldAccessor,\n tuiInjectAuxiliary,\n type TuiTextfieldAccessor,\n TuiTextfieldComponent,\n TuiTextfieldDirective,\n TuiWithTextfield,\n} from '@taiga-ui/core/components/textfield';\nimport {\n TuiDropdownDirective,\n tuiDropdownEnabled,\n TuiDropdownOpen,\n} from '@taiga-ui/core/directives/dropdown';\nimport {\n TUI_ITEMS_HANDLERS,\n type TuiItemsHandlers,\n} from '@taiga-ui/core/directives/items-handlers';\nimport {TuiSelectOption} from '@taiga-ui/kit/components/select';\n\n@Directive({\n selector: 'input[tuiComboBox]',\n providers: [\n tuiAsOptionContent(TuiSelectOption),\n tuiAsTextfieldAccessor(TuiComboBox),\n tuiAsControl(TuiComboBox),\n ],\n hostDirectives: [TuiWithTextfield],\n host: {\n '[disabled]': 'disabled()',\n '(click)': 'toggleDropdown()',\n '(input)': 'toggleDropdown(true)',\n '(keydown.enter)': 'keydownEnter($event)',\n },\n})\nexport class TuiComboBox<T>\n extends TuiControl<T | string | null>\n implements TuiTextfieldAccessor<T>\n{\n private readonly host: TuiTextfieldComponent<T> = inject(TuiTextfieldComponent);\n private readonly textfield: TuiTextfieldDirective<T> = inject(TuiTextfieldDirective);\n private readonly open = inject(TuiDropdownOpen).open;\n private readonly dropdownEnabled = tuiDropdownEnabled(this.interactive);\n private readonly dropdown = inject(TuiDropdownDirective);\n private readonly handlers: TuiItemsHandlers<T | string> = inject(TUI_ITEMS_HANDLERS);\n\n private readonly matcher = signal<TuiStringMatcher<T> | null>(TUI_STRICT_MATCHER);\n private readonly strict = signal(true);\n private readonly datalist = tuiInjectAuxiliary<TuiDataListAccessor<T>>(\n (x) => x !== this && 'options' in x && isSignal(x.options),\n );\n\n private readonly options = computed(\n () =>\n this.datalist()\n ?.options?.() // TODO(v5): remove optional call `?.()`\n .filter((x) => !this.handlers.disabledItemHandler()(x)) ?? [],\n );\n\n protected readonly nonStrictControlEffect = effect(() => {\n if (\n !this.options().length &&\n !this.strict() &&\n this.stringify(this.value()) !== this.textfield.value()\n ) {\n this.onChange(this.textfield.value() || null);\n }\n });\n\n protected readonly matchingEffect = effect(() => {\n const options = this.options();\n const matcher = this.matcher();\n\n if (!options.length || !matcher) {\n return;\n }\n\n const textfieldValue = this.textfield.value();\n const selectedOption = options.find((x) =>\n matcher(x, textfieldValue, this.handlers.stringify()),\n );\n const value = untracked(() => this.value());\n const unchanged = this.stringify(value) === textfieldValue;\n const fallback = this.strict() || !textfieldValue ? null : textfieldValue;\n\n this.onChange(\n selectedOption ??\n /**\n * Don't clear already not-null form control value on new `this.options()` array.\n * Otherwise, `ComboBox` becomes incompatible with virtual scroll\n * (which displays large lists of elements by only rendering the items that fit on-screen).\n * Users can still able to patch form value with `null` on new items if they wish the such behavior.\n */\n (unchanged ? value : fallback),\n );\n });\n\n protected readonly newValueEffect = effect(() => {\n const stringified = this.stringify(this.value());\n\n this.textfield.value.update((x) => stringified || x);\n });\n\n protected readonly blurEffect = effect(() => {\n const incomplete = untracked(() => this.strict() && this.value() === null);\n\n if (!this.host.focused() && incomplete) {\n this.textfield.value.set('');\n }\n });\n\n // TODO(v5): use signal input\n @Input('strict')\n public set strictSetter(x: boolean) {\n this.strict.set(x);\n }\n\n // TODO(v5): use signal input\n @Input('matcher')\n public set matcherSetter(x: TuiStringMatcher<T> | null) {\n this.matcher.set(x);\n }\n\n public setValue(value: T | null): void {\n this.textfield.setValue(value);\n this.onChange(value);\n\n if (!value) {\n this.toggleDropdown(true);\n }\n }\n\n public override writeValue(value: T | string | null): void {\n const reset = this.control.pristine && this.control.untouched && !value;\n const changed = untracked(() => value !== this.value());\n\n if (changed || reset) {\n super.writeValue(value);\n untracked(() => this.textfield.value.set(this.stringify(value)));\n }\n }\n\n protected toggleDropdown(open = !this.open()): void {\n if (this.dropdownEnabled() && this.dropdown.content()) {\n this.open.set(open);\n }\n }\n\n protected keydownEnter(event: KeyboardEvent): void {\n if (!this.open()) {\n return;\n }\n\n event.preventDefault();\n\n const options = this.options();\n\n if (options.length === 1 && options[0]) {\n this.setValue(options[0]);\n this.toggleDropdown(false);\n }\n }\n\n private stringify(value?: T | string | null): string {\n return value != null ? this.handlers.stringify()(value) : '';\n }\n}\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-combo-box.mjs","sources":["../../../projects/kit/components/combo-box/combo-box.directive.ts","../../../projects/kit/components/combo-box/combo-box.ts","../../../projects/kit/components/combo-box/taiga-ui-kit-components-combo-box.ts"],"sourcesContent":["import {\n computed,\n Directive,\n effect,\n inject,\n Input,\n isSignal,\n signal,\n untracked,\n} from '@angular/core';\nimport {tuiAsControl, TuiControl} from '@taiga-ui/cdk/classes';\nimport {TUI_STRICT_MATCHER} from '@taiga-ui/cdk/constants';\nimport {type TuiStringMatcher} from '@taiga-ui/cdk/types';\nimport {\n tuiAsOptionContent,\n type TuiDataListAccessor,\n} from '@taiga-ui/core/components/data-list';\nimport {TuiInputDirective, TuiWithInput} from '@taiga-ui/core/components/input';\nimport {\n tuiAsTextfieldAccessor,\n tuiInjectAuxiliary,\n type TuiTextfieldAccessor,\n TuiTextfieldComponent,\n} from '@taiga-ui/core/components/textfield';\nimport {\n TUI_ITEMS_HANDLERS,\n type TuiItemsHandlers,\n} from '@taiga-ui/core/directives/items-handlers';\nimport {\n TuiDropdownDirective,\n tuiDropdownEnabled,\n TuiDropdownOpen,\n} from '@taiga-ui/core/portals/dropdown';\nimport {TuiSelectOption} from '@taiga-ui/kit/components/select';\n\n@Directive({\n selector: 'input[tuiComboBox]',\n providers: [\n tuiAsOptionContent(TuiSelectOption),\n tuiAsTextfieldAccessor(TuiComboBoxDirective),\n tuiAsControl(TuiComboBoxDirective),\n ],\n hostDirectives: [TuiWithInput],\n host: {\n '[disabled]': 'disabled()',\n '(click)': 'toggleDropdown()',\n '(input)': 'toggleDropdown(true)',\n '(keydown.enter)': 'keydownEnter($event)',\n },\n})\nexport class TuiComboBoxDirective<T>\n extends TuiControl<T | string | null>\n implements TuiTextfieldAccessor<T>\n{\n private readonly host: TuiTextfieldComponent<T> = inject(TuiTextfieldComponent);\n private readonly input: TuiInputDirective<T> = inject(TuiInputDirective);\n private readonly open = inject(TuiDropdownOpen).open;\n private readonly dropdownEnabled = tuiDropdownEnabled(this.interactive);\n private readonly dropdown = inject(TuiDropdownDirective);\n private readonly handlers: TuiItemsHandlers<T | string> = inject(TUI_ITEMS_HANDLERS);\n\n private readonly matcher = signal<TuiStringMatcher<T> | null>(TUI_STRICT_MATCHER);\n private readonly strict = signal(true);\n private readonly datalist = tuiInjectAuxiliary<TuiDataListAccessor<T>>(\n (x) => x !== this && 'options' in x && isSignal(x.options),\n );\n\n private readonly options = computed(\n () =>\n this.datalist()\n ?.options?.() // TODO(v5): remove optional call `?.()`\n .filter((x) => !this.handlers.disabledItemHandler()(x)) ?? [],\n );\n\n protected readonly nonStrictControlEffect = effect(() => {\n if (\n !this.options().length &&\n !this.strict() &&\n this.stringify(this.value()) !== this.input.value()\n ) {\n this.onChange(this.input.value() || null);\n }\n });\n\n protected readonly matchingEffect = effect(() => {\n const options = this.options();\n const matcher = this.matcher();\n\n if (!options.length || !matcher) {\n return;\n }\n\n const textfieldValue = this.input.value();\n const selectedOption = options.find((x) =>\n matcher(x, textfieldValue, this.handlers.stringify()),\n );\n const value = untracked(() => this.value());\n const unchanged = this.stringify(value) === textfieldValue;\n const fallback = this.strict() || !textfieldValue ? null : textfieldValue;\n\n this.onChange(\n selectedOption ??\n /**\n * Don't clear already not-null form control value on new `this.options()` array.\n * Otherwise, `ComboBox` becomes incompatible with virtual scroll\n * (which displays large lists of elements by only rendering the items that fit on-screen).\n * Users can still able to patch form value with `null` on new items if they wish the such behavior.\n */\n (unchanged ? value : fallback),\n );\n });\n\n protected readonly newValueEffect = effect(() => {\n const stringified = this.stringify(this.value());\n\n this.input.value.update((x) => stringified || x);\n });\n\n protected readonly blurEffect = effect(() => {\n const incomplete = untracked(() => this.strict() && this.value() === null);\n\n if (!this.host.focused() && incomplete) {\n this.input.value.set('');\n }\n });\n\n // TODO(v5): use signal input\n @Input('strict')\n public set strictSetter(x: boolean) {\n this.strict.set(x);\n }\n\n // TODO(v5): use signal input\n @Input('matcher')\n public set matcherSetter(x: TuiStringMatcher<T> | null) {\n this.matcher.set(x);\n }\n\n public setValue(value: T | null): void {\n this.input.setValue(value);\n this.onChange(value);\n\n if (!value) {\n this.toggleDropdown(true);\n }\n }\n\n public override writeValue(value: T | string | null): void {\n const reset = this.control.pristine && this.control.untouched && !value;\n const changed = untracked(() => value !== this.value());\n\n if (changed || reset) {\n super.writeValue(value);\n untracked(() => this.input.value.set(this.stringify(value)));\n }\n }\n\n protected toggleDropdown(open = !this.open()): void {\n if (this.dropdownEnabled() && this.dropdown.content()) {\n this.open.set(open);\n }\n }\n\n protected keydownEnter(event: KeyboardEvent): void {\n if (!this.open()) {\n return;\n }\n\n event.preventDefault();\n\n const options = this.options();\n\n if (options.length === 1 && options[0]) {\n this.setValue(options[0]);\n this.toggleDropdown(false);\n }\n }\n\n private stringify(value?: T | string | null): string {\n return value != null ? this.handlers.stringify()(value) : '';\n }\n}\n","import {TuiTextfield} from '@taiga-ui/core/components/textfield';\n\nimport {TuiComboBoxDirective} from './combo-box.directive';\n\nexport const TuiComboBox = [TuiComboBoxDirective, TuiTextfield] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { TUI_IS_MOBILE } from '@taiga-ui/cdk/tokens';
5
5
  import { TuiButton } from '@taiga-ui/core/components/button';
6
6
  import { TUI_CONFIRM_WORDS } from '@taiga-ui/kit/tokens';
7
7
  import { injectContext, PolymorpheusOutlet, PolymorpheusComponent } from '@taiga-ui/polymorpheus';
8
- import { TuiDialogService } from '@taiga-ui/core/components/dialog';
8
+ import { TuiDialogService } from '@taiga-ui/core/portals/dialog';
9
9
  import { defer, of } from 'rxjs';
10
10
 
11
11
  class TuiConfirm {
@@ -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 {ChangeDetectionStrategy, Component, inject, InjectionToken} 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@Component({\n imports: [PolymorpheusOutlet, TuiAutoFocus, TuiButton],\n templateUrl: './confirm.template.html',\n styleUrl: './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 = new InjectionToken<\n PolymorpheusContent<TuiDialogContext<boolean, unknown>>\n>(ngDevMode ? 'TUI_CONFIRM_DIALOG' : '', {factory: () => TUI_CONFIRM});\n","<p\n *polymorpheusOutlet=\"context.data?.content as text\"\n class=\"t-content\"\n [innerHTML]=\"text\"\n></p>\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","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":";;;;;;;;;;MA0Ba,UAAU,CAAA;AANvB,IAAA,WAAA,GAAA;AAOqB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC;AAC9B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAEpC,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;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,UAAU,wEC1BvB,4tBA4BA,EAAA,MAAA,EAAA,CAAA,qkBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDPc,kBAAkB,EAAE,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,YAAY,qFAAE,SAAS,EAAA,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAK5C,UAAU,EAAA,UAAA,EAAA,CAAA;kBANtB,SAAS;8BACG,CAAC,kBAAkB,EAAE,YAAY,EAAE,SAAS,CAAC,EAAA,eAAA,EAGrC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4tBAAA,EAAA,MAAA,EAAA,CAAA,qkBAAA,CAAA,EAAA;;MActC,WAAW,GAAG,IAAI,qBAAqB,CAAC,UAAU;AAClD,MAAA,kBAAkB,GAAG,IAAI,cAAc,CAElD,SAAS,GAAG,oBAAoB,GAAG,EAAE,EAAE,EAAC,OAAO,EAAE,MAAM,WAAW,EAAC;;MElCxD,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 {ChangeDetectionStrategy, Component, inject, InjectionToken} 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/portals/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@Component({\n imports: [PolymorpheusOutlet, TuiAutoFocus, TuiButton],\n templateUrl: './confirm.template.html',\n styleUrl: './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 = new InjectionToken<\n PolymorpheusContent<TuiDialogContext<boolean, unknown>>\n>(ngDevMode ? 'TUI_CONFIRM_DIALOG' : '', {factory: () => TUI_CONFIRM});\n","<p\n *polymorpheusOutlet=\"context.data?.content as text\"\n class=\"t-content\"\n [innerHTML]=\"text\"\n></p>\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","import {inject, Injectable} from '@angular/core';\nimport {type TuiDialogOptions, TuiDialogService} from '@taiga-ui/core/portals/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":";;;;;;;;;;MA0Ba,UAAU,CAAA;AANvB,IAAA,WAAA,GAAA;AAOqB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC;AAC9B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAEpC,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;AAAV,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,UAAU,wEC1BvB,4tBA4BA,EAAA,MAAA,EAAA,CAAA,qkBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDPc,kBAAkB,EAAE,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,YAAY,qFAAE,SAAS,EAAA,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAK5C,UAAU,EAAA,UAAA,EAAA,CAAA;kBANtB,SAAS;8BACG,CAAC,kBAAkB,EAAE,YAAY,EAAE,SAAS,CAAC,EAAA,eAAA,EAGrC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4tBAAA,EAAA,MAAA,EAAA,CAAA,qkBAAA,CAAA,EAAA;;MActC,WAAW,GAAG,IAAI,qBAAqB,CAAC,UAAU;AAClD,MAAA,kBAAkB,GAAG,IAAI,cAAc,CAElD,SAAS,GAAG,oBAAoB,GAAG,EAAE,EAAE,EAAC,OAAO,EAAE,MAAM,WAAW,EAAC;;MElCxD,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;;;;"}
@@ -8,8 +8,8 @@ import { tuiIsString } from '@taiga-ui/cdk/utils/miscellaneous';
8
8
  import { TuiButton } from '@taiga-ui/core/components/button';
9
9
  import { TuiIcon } from '@taiga-ui/core/components/icon';
10
10
  import { TUI_NOTIFICATION_OPTIONS } from '@taiga-ui/core/components/notification';
11
- import * as i2 from '@taiga-ui/core/directives/hint';
12
- import { TuiHint, TuiHintDirective } from '@taiga-ui/core/directives/hint';
11
+ import * as i2 from '@taiga-ui/core/portals/hint';
12
+ import { TuiHint, TuiHintDirective } from '@taiga-ui/core/portals/hint';
13
13
  import { TUI_COPY_TEXTS } from '@taiga-ui/kit/tokens';
14
14
  import { BehaviorSubject, switchMap, timer, map, startWith, Subject } from 'rxjs';
15
15
  import { tuiCreateOptions, tuiDirectiveBinding } from '@taiga-ui/cdk/utils/di';
@@ -61,16 +61,13 @@ class TuiCopyDirective {
61
61
  this.copyTexts = inject(TUI_COPY_TEXTS);
62
62
  this.hint = tuiDirectiveBinding(TuiHintDirective, 'content', toSignal(toObservable(inject(TUI_COPY_TEXTS)).pipe(switchMap(([copy, copied]) => this.copied$.pipe(switchMap(() => timer(3000).pipe(map(() => copy), startWith(copied))), startWith(copy)))), { initialValue: '' }));
63
63
  }
64
- get disabled() {
65
- return !this.textfield.input()?.nativeElement.value;
66
- }
67
64
  copy() {
68
65
  this.textfield.input()?.nativeElement.select();
69
66
  this.doc.execCommand('copy');
70
67
  this.copied$.next();
71
68
  }
72
69
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiCopyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
73
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiCopyDirective, isStandalone: true, selector: "tui-icon[tuiCopy]", host: { listeners: { "click": "copy()" }, properties: { "style.pointer-events": "disabled ? \"none\" : null", "style.opacity": "disabled ? \"var(--tui-disabled-opacity)\" : null", "style.border-width.rem": "textfield.options.size() === \"l\" ? null : 0.25" }, styleAttribute: "cursor: pointer" }, providers: [
70
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: TuiCopyDirective, isStandalone: true, selector: "tui-icon[tuiCopy]", host: { listeners: { "click": "copy()" }, properties: { "style.pointer-events": "textfield.value() ? null : \"none\"", "style.opacity": "textfield.value() ? null : \"var(--tui-disabled-opacity)\"", "style.border-width.rem": "textfield.options.size() === \"l\" ? null : 0.25" }, styleAttribute: "cursor: pointer" }, providers: [
74
71
  {
75
72
  provide: TUI_APPEARANCE_OPTIONS,
76
73
  useValue: { appearance: 'icon' },
@@ -97,8 +94,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
97
94
  host: {
98
95
  style: 'cursor: pointer',
99
96
  '(click)': 'copy()',
100
- '[style.pointer-events]': 'disabled ? "none" : null',
101
- '[style.opacity]': 'disabled ? "var(--tui-disabled-opacity)" : null',
97
+ '[style.pointer-events]': 'textfield.value() ? null : "none"',
98
+ '[style.opacity]': 'textfield.value() ? null : "var(--tui-disabled-opacity)"',
102
99
  '[style.border-width.rem]': 'textfield.options.size() === "l" ? null : 0.25',
103
100
  },
104
101
  }]