@taiga-ui/addon-mobile 4.52.0-canary.c107f6a → 4.52.0-canary.c8448e0

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 (78) hide show
  1. package/README.md +2 -2
  2. package/components/bottom-sheet/bottom-sheet.component.d.ts +3 -3
  3. package/components/index.d.ts +0 -1
  4. package/components/mobile-calendar/calendar-date-stream.d.ts +6 -0
  5. package/components/mobile-calendar/index.d.ts +1 -0
  6. package/components/mobile-calendar/mobile-calendar.component.d.ts +16 -18
  7. package/components/mobile-calendar/mobile-calendar.strategy.d.ts +3 -7
  8. package/components/mobile-calendar-dropdown/mobile-calendar-dropdown.component.d.ts +10 -12
  9. package/components/mobile-calendar-dropdown/mobile-calendar-dropdown.directive.d.ts +6 -6
  10. package/components/pull-to-refresh/pull-to-refresh.component.d.ts +8 -7
  11. package/components/sheet-dialog/sheet-dialog.component.d.ts +2 -2
  12. package/components/sheet-dialog/sheet-dialog.options.d.ts +3 -9
  13. package/components/sheet-dialog/sheet-dialog.service.d.ts +2 -2
  14. package/components/swipe-action/swipe-actions-auto-close.directive.d.ts +2 -2
  15. package/components/tab-bar/tab-bar-item.component.d.ts +3 -3
  16. package/components/tab-bar/tab-bar.component.d.ts +4 -7
  17. package/directives/dropdown-mobile/dropdown-mobile.component.d.ts +1 -1
  18. package/directives/dropdown-sheet/dropdown-sheet.component.d.ts +1 -1
  19. package/directives/elastic-sticky/elastic-sticky.directive.d.ts +1 -2
  20. package/directives/responsive-dialog/responsive-dialog.directive.d.ts +5 -4
  21. package/directives/responsive-dialog/responsive-dialog.service.d.ts +4 -7
  22. package/directives/ripple/ripple.directive.d.ts +2 -2
  23. package/directives/touchable/touchable.directive.d.ts +5 -5
  24. package/fesm2022/taiga-ui-addon-mobile-components-bottom-sheet.mjs +15 -22
  25. package/fesm2022/taiga-ui-addon-mobile-components-bottom-sheet.mjs.map +1 -1
  26. package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar-dropdown.mjs +32 -53
  27. package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar-dropdown.mjs.map +1 -1
  28. package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar-sheet.mjs +7 -9
  29. package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar-sheet.mjs.map +1 -1
  30. package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar.mjs +119 -152
  31. package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar.mjs.map +1 -1
  32. package/fesm2022/taiga-ui-addon-mobile-components-pull-to-refresh.mjs +42 -53
  33. package/fesm2022/taiga-ui-addon-mobile-components-pull-to-refresh.mjs.map +1 -1
  34. package/fesm2022/taiga-ui-addon-mobile-components-sheet-dialog.mjs +27 -37
  35. package/fesm2022/taiga-ui-addon-mobile-components-sheet-dialog.mjs.map +1 -1
  36. package/fesm2022/taiga-ui-addon-mobile-components-swipe-action.mjs +12 -19
  37. package/fesm2022/taiga-ui-addon-mobile-components-swipe-action.mjs.map +1 -1
  38. package/fesm2022/taiga-ui-addon-mobile-components-tab-bar.mjs +31 -50
  39. package/fesm2022/taiga-ui-addon-mobile-components-tab-bar.mjs.map +1 -1
  40. package/fesm2022/taiga-ui-addon-mobile-components.mjs +0 -1
  41. package/fesm2022/taiga-ui-addon-mobile-components.mjs.map +1 -1
  42. package/fesm2022/taiga-ui-addon-mobile-directives-dropdown-mobile.mjs +8 -8
  43. package/fesm2022/taiga-ui-addon-mobile-directives-dropdown-mobile.mjs.map +1 -1
  44. package/fesm2022/taiga-ui-addon-mobile-directives-dropdown-sheet.mjs +9 -9
  45. package/fesm2022/taiga-ui-addon-mobile-directives-dropdown-sheet.mjs.map +1 -1
  46. package/fesm2022/taiga-ui-addon-mobile-directives-elastic-sticky.mjs +11 -14
  47. package/fesm2022/taiga-ui-addon-mobile-directives-elastic-sticky.mjs.map +1 -1
  48. package/fesm2022/taiga-ui-addon-mobile-directives-responsive-dialog.mjs +44 -26
  49. package/fesm2022/taiga-ui-addon-mobile-directives-responsive-dialog.mjs.map +1 -1
  50. package/fesm2022/taiga-ui-addon-mobile-directives-ripple.mjs +10 -12
  51. package/fesm2022/taiga-ui-addon-mobile-directives-ripple.mjs.map +1 -1
  52. package/fesm2022/taiga-ui-addon-mobile-directives-touchable.mjs +18 -24
  53. package/fesm2022/taiga-ui-addon-mobile-directives-touchable.mjs.map +1 -1
  54. package/fesm2022/taiga-ui-addon-mobile-services.mjs +34 -5
  55. package/fesm2022/taiga-ui-addon-mobile-services.mjs.map +1 -1
  56. package/package.json +1 -5
  57. package/services/index.d.ts +1 -0
  58. package/services/theme-color.service.d.ts +18 -0
  59. package/styles/android/app-bar.less +5 -1
  60. package/styles/android/switch.less +1 -0
  61. package/styles/common/badge-notification.less +1 -1
  62. package/styles/common/badge.less +2 -2
  63. package/styles/common/block-status.less +1 -1
  64. package/styles/common/button.less +1 -1
  65. package/styles/common/card-large.less +1 -1
  66. package/styles/common/header.less +1 -1
  67. package/styles/common/message.less +1 -1
  68. package/styles/common/segmented.less +1 -1
  69. package/styles/common/title.less +0 -1
  70. package/styles/common/toast.less +1 -1
  71. package/styles/ios/switch.less +50 -1
  72. package/styles/taiga-ui-mobile.less +6 -0
  73. package/components/mobile-dialog/index.d.ts +0 -3
  74. package/components/mobile-dialog/mobile-dialog.component.d.ts +0 -10
  75. package/components/mobile-dialog/mobile-dialog.options.d.ts +0 -12
  76. package/components/mobile-dialog/mobile-dialog.service.d.ts +0 -10
  77. package/fesm2022/taiga-ui-addon-mobile-components-mobile-dialog.mjs +0 -64
  78. package/fesm2022/taiga-ui-addon-mobile-components-mobile-dialog.mjs.map +0 -1
package/README.md CHANGED
@@ -17,13 +17,13 @@ consisting of multiple base libraries and several add-ons
17
17
 
18
18
  Install base packages:
19
19
 
20
- ```
20
+ ```bash
21
21
  npm i @taiga-ui/{cdk,core,kit}
22
22
  ```
23
23
 
24
24
  Install addon-mobile:
25
25
 
26
- ```
26
+ ```bash
27
27
  npm i @taiga-ui/addon-mobile
28
28
  ```
29
29
 
@@ -1,10 +1,10 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class TuiBottomSheet {
3
3
  private readonly elements;
4
- private readonly content?;
4
+ private readonly content;
5
5
  private readonly el;
6
- stops: readonly string[];
6
+ readonly stops: import("@angular/core").InputSignal<readonly string[]>;
7
7
  protected onScroll(): void;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiBottomSheet, never>;
9
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiBottomSheet, "tui-bottom-sheet", never, { "stops": { "alias": "stops"; "required": false; }; }, {}, never, ["*"], true, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiBottomSheet, "tui-bottom-sheet", never, { "stops": { "alias": "stops"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
10
10
  }
@@ -2,7 +2,6 @@ export * from '@taiga-ui/addon-mobile/components/bottom-sheet';
2
2
  export * from '@taiga-ui/addon-mobile/components/mobile-calendar';
3
3
  export * from '@taiga-ui/addon-mobile/components/mobile-calendar-dropdown';
4
4
  export * from '@taiga-ui/addon-mobile/components/mobile-calendar-sheet';
5
- export * from '@taiga-ui/addon-mobile/components/mobile-dialog';
6
5
  export * from '@taiga-ui/addon-mobile/components/pull-to-refresh';
7
6
  export * from '@taiga-ui/addon-mobile/components/sheet-dialog';
8
7
  export * from '@taiga-ui/addon-mobile/components/swipe-action';
@@ -0,0 +1,6 @@
1
+ import { InjectionToken, type Provider } from '@angular/core';
2
+ import { type TuiValueTransformer } from '@taiga-ui/cdk/classes';
3
+ import { type TuiDay, type TuiDayRange } from '@taiga-ui/cdk/date-time';
4
+ import { type Observable } from 'rxjs';
5
+ export declare const TUI_CALENDAR_DATE_STREAM: InjectionToken<Observable<TuiDay | TuiDayRange | null>>;
6
+ export declare function tuiDateStreamWithTransformer(transformer: InjectionToken<TuiValueTransformer<any>>): Provider;
@@ -1,3 +1,4 @@
1
+ export * from './calendar-date-stream';
1
2
  export * from './mobile-calendar.component';
2
3
  export * from './mobile-calendar.const';
3
4
  export * from './mobile-calendar.providers';
@@ -1,11 +1,10 @@
1
- import { type AfterViewInit, EventEmitter } from '@angular/core';
1
+ import { type AfterViewInit } from '@angular/core';
2
2
  import { TuiDay, TuiDayRange, TuiMonth } from '@taiga-ui/cdk/date-time';
3
3
  import { type TuiBooleanHandler, type TuiMapper } from '@taiga-ui/cdk/types';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class TuiMobileCalendar implements AfterViewInit {
6
- private readonly yearsScrollRef?;
7
- private readonly monthsScrollRef?;
8
- private readonly value$;
6
+ private readonly yearsScroll;
7
+ private readonly monthsScroll;
9
8
  private readonly today;
10
9
  private activeYear;
11
10
  private activeMonth;
@@ -13,6 +12,9 @@ export declare class TuiMobileCalendar implements AfterViewInit {
13
12
  private readonly doc;
14
13
  private readonly speed;
15
14
  private readonly ngZone;
15
+ private readonly getYearsViewportSize;
16
+ private readonly initialYear;
17
+ private readonly initialMonth;
16
18
  protected initialized: boolean;
17
19
  protected readonly isIOS: boolean;
18
20
  protected readonly isE2E: boolean;
@@ -20,6 +22,7 @@ export declare class TuiMobileCalendar implements AfterViewInit {
20
22
  protected readonly closeWord: import("@angular/core").Signal<string>;
21
23
  protected readonly cancelWord: import("@angular/core").Signal<string>;
22
24
  protected readonly doneWord: import("@angular/core").Signal<string>;
25
+ protected readonly monthNames: import("@angular/core").Signal<readonly [January: string, February: string, March: string, April: string, May: string, June: string, July: string, August: string, September: string, October: string, November: string, December: string]>;
23
26
  protected readonly unorderedWeekDays$: import("rxjs").Observable<readonly [Monday: string, Tuesday: string, Wednesday: string, Thursday: string, Friday: string, Saturday: string, Sunday: string]>;
24
27
  protected readonly chooseDayOrRangeTexts: import("@angular/core").Signal<readonly [choose_day: string, choose_range: string, choose_days: string]> | null;
25
28
  protected readonly years: number[];
@@ -31,17 +34,15 @@ export declare class TuiMobileCalendar implements AfterViewInit {
31
34
  * ```
32
35
  * TODO(v5): delete it
33
36
  */
34
- single: boolean;
35
- multi: boolean;
36
- min: TuiDay;
37
- max: TuiDay;
38
- disabledItemHandler: TuiBooleanHandler<TuiDay>;
39
- readonly cancel: EventEmitter<void>;
40
- readonly confirm: EventEmitter<TuiDayRange | TuiDay | readonly TuiDay[]>;
41
- readonly valueChange: import("rxjs").Observable<TuiDayRange | TuiDay | readonly TuiDay[] | null>;
37
+ readonly single: import("@angular/core").InputSignal<boolean>;
38
+ readonly multi: import("@angular/core").InputSignal<boolean>;
39
+ readonly min: import("@angular/core").InputSignal<TuiDay>;
40
+ readonly max: import("@angular/core").InputSignal<TuiDay>;
41
+ readonly disabledItemHandler: import("@angular/core").InputSignal<TuiBooleanHandler<TuiDay>>;
42
+ readonly cancel: import("@angular/core").OutputEmitterRef<void>;
43
+ readonly confirm: import("@angular/core").OutputEmitterRef<TuiDay | TuiDayRange | readonly TuiDay[]>;
44
+ readonly value: import("@angular/core").ModelSignal<TuiDay | TuiDayRange | readonly TuiDay[] | null>;
42
45
  constructor();
43
- set value(value: TuiDay | TuiDayRange | readonly TuiDay[] | null | undefined);
44
- get value(): TuiDay | TuiDayRange | readonly TuiDay[] | null;
45
46
  ngAfterViewInit(): void;
46
47
  setYear(year: number): void;
47
48
  protected get yearWidth(): number;
@@ -55,10 +56,7 @@ export declare class TuiMobileCalendar implements AfterViewInit {
55
56
  TuiDay,
56
57
  TuiDay
57
58
  ], TuiBooleanHandler<TuiDay>>;
58
- private get initialYear();
59
- private get initialMonth();
60
59
  private isMultiValue;
61
- private getYearsViewportSize;
62
60
  private updateViewportDimension;
63
61
  private lateInit;
64
62
  private waitScrolledChange;
@@ -70,5 +68,5 @@ export declare class TuiMobileCalendar implements AfterViewInit {
70
68
  private monthToYear;
71
69
  private getMonthOffset;
72
70
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiMobileCalendar, never>;
73
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiMobileCalendar, "tui-mobile-calendar", never, { "single": { "alias": "single"; "required": false; }; "multi": { "alias": "multi"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "disabledItemHandler": { "alias": "disabledItemHandler"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "cancel": "cancel"; "confirm": "confirm"; "valueChange": "valueChange"; }, never, never, true, never>;
71
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiMobileCalendar, "tui-mobile-calendar", never, { "single": { "alias": "single"; "required": false; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "disabledItemHandler": { "alias": "disabledItemHandler"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "cancel": "cancel"; "confirm": "confirm"; "value": "valueChange"; }, never, never, true, never>;
74
72
  }
@@ -1,19 +1,15 @@
1
1
  import { type CdkVirtualScrollViewport, type VirtualScrollStrategy } from '@angular/cdk/scrolling';
2
- import { type TuiScrollService } from '@taiga-ui/cdk/services';
3
- import { type Observable } from 'rxjs';
4
2
  /**
5
- * This scroll strategy is hard wired with styles for iOS and Android.
3
+ * This scroll strategy is hard-wired with styles for iOS and Android.
6
4
  * It is dependent on month height on those platforms and is designed to
7
5
  * work for {@link TuiMobileCalendar} with years 1906 to 2102
8
6
  */
9
7
  export declare class TuiMobileCalendarStrategy implements VirtualScrollStrategy {
10
8
  private readonly isIOS;
11
- private readonly scrollService;
9
+ private readonly destroy$;
12
10
  private readonly index$;
13
11
  private viewport;
14
- private readonly destroy$;
15
- constructor(isIOS: boolean, scrollService: TuiScrollService);
16
- get scrolledIndexChange(): Observable<number>;
12
+ readonly scrolledIndexChange: import("rxjs").Observable<number>;
17
13
  attach(viewport: CdkVirtualScrollViewport): void;
18
14
  detach(): void;
19
15
  onContentScrolled(): void;
@@ -1,7 +1,6 @@
1
- import { type ValueProvider } from '@angular/core';
2
- import { TuiDay, TuiDayRange } from '@taiga-ui/cdk/date-time';
1
+ import { TuiDay, type TuiDayLike, TuiDayRange } from '@taiga-ui/cdk/date-time';
3
2
  import { type TuiBooleanHandler } from '@taiga-ui/cdk/types';
4
- import { TuiMobileCalendarDropdownNew } from './mobile-calendar-dropdown.directive';
3
+ import { TuiMobileCalendarDropdown } from './mobile-calendar-dropdown.directive';
5
4
  import * as i0 from "@angular/core";
6
5
  import * as i1 from "@taiga-ui/cdk/directives/active-zone";
7
6
  import * as i2 from "@taiga-ui/cdk/directives/animated";
@@ -12,29 +11,28 @@ export interface TuiMobileCalendarData {
12
11
  multi?: boolean;
13
12
  single?: boolean;
14
13
  }
15
- export declare class TuiMobileCalendarDropdown {
14
+ export declare class TuiMobileCalendarDropdownComponent {
16
15
  private readonly dropdown;
17
16
  private readonly keyboard;
18
17
  private readonly context;
19
18
  private readonly observer?;
20
19
  private readonly data;
21
- private selectedPeriod;
20
+ protected selectedPeriod: TuiDayRange | null;
22
21
  protected readonly control: any;
23
- protected readonly directive: TuiMobileCalendarDropdownNew | null;
24
- protected readonly range: boolean;
22
+ protected readonly directive: TuiMobileCalendarDropdown | null;
25
23
  protected readonly multi: boolean;
24
+ protected readonly range: boolean;
26
25
  protected readonly single: boolean;
27
26
  protected readonly value: import("@angular/core").Signal<TuiDay | TuiDayRange | null>;
28
27
  constructor();
29
28
  max(): TuiDay;
30
29
  min(): TuiDay;
31
30
  onValueChange(value: TuiDay | TuiDayRange | readonly TuiDay[] | null): void;
32
- protected get calculatedDisabledItemHandler(): TuiBooleanHandler<TuiDay>;
31
+ protected get handler(): TuiBooleanHandler<TuiDay>;
33
32
  protected close(): void;
34
33
  protected confirm(value: TuiDay | TuiDayRange | readonly TuiDay[]): void;
35
- private calculateDisabledItemHandler;
34
+ protected readonly mapper: (disabledItemHandler: TuiBooleanHandler<TuiDay>, value: TuiDayRange | null, minLength?: TuiDayLike | null) => TuiBooleanHandler<TuiDay>;
36
35
  private is;
37
- static ɵfac: i0.ɵɵFactoryDeclaration<TuiMobileCalendarDropdown, never>;
38
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiMobileCalendarDropdown, "tui-mobile-calendar-dropdown", never, {}, {}, never, never, true, [{ directive: typeof i1.TuiActiveZone; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiAnimated; inputs: {}; outputs: {}; }]>;
36
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiMobileCalendarDropdownComponent, never>;
37
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiMobileCalendarDropdownComponent, "tui-mobile-calendar-dropdown", never, {}, {}, never, never, true, [{ directive: typeof i1.TuiActiveZone; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiAnimated; inputs: {}; outputs: {}; }]>;
39
38
  }
40
- export declare function tuiProvideMobileCalendar(): ValueProvider;
@@ -4,12 +4,12 @@ import { type TuiInputDateBase, TuiInputDateDirective } from '@taiga-ui/kit/comp
4
4
  import { TuiInputDateRangeDirective } from '@taiga-ui/kit/components/input-date-range';
5
5
  import { TuiInputDateTimeDirective } from '@taiga-ui/kit/components/input-date-time';
6
6
  import * as i0 from "@angular/core";
7
- export declare class TuiMobileCalendarDropdownNew {
8
- readonly single?: TuiInputDateDirective;
9
- readonly range?: TuiInputDateRangeDirective;
10
- readonly dateTime?: TuiInputDateTimeDirective;
7
+ export declare class TuiMobileCalendarDropdown {
8
+ readonly single: import("@angular/core").Signal<TuiInputDateDirective | undefined>;
9
+ readonly range: import("@angular/core").Signal<TuiInputDateRangeDirective | undefined>;
10
+ readonly dateTime: import("@angular/core").Signal<TuiInputDateTimeDirective | undefined>;
11
11
  readonly handlers: TuiItemsHandlersDirective<any>;
12
12
  get date(): TuiInputDateBase<readonly [TuiDay, TuiTime | null]> | TuiInputDateBase<TuiDay> | TuiInputDateBase<TuiDayRange> | undefined;
13
- static ɵfac: i0.ɵɵFactoryDeclaration<TuiMobileCalendarDropdownNew, never>;
14
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiMobileCalendarDropdownNew, "[tuiMobileCalendar]", never, {}, {}, ["single", "range", "dateTime"], never, true, never>;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiMobileCalendarDropdown, never>;
14
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiMobileCalendarDropdown, "[tuiMobileCalendar]", never, {}, {}, ["single", "range", "dateTime"], never, true, never>;
15
15
  }
@@ -1,17 +1,18 @@
1
1
  import { type TuiContext, type TuiHandler } from '@taiga-ui/cdk/types';
2
2
  import { type PolymorpheusContent } from '@taiga-ui/polymorpheus';
3
- import { type Observable } from 'rxjs';
4
- import { TuiPullToRefreshService } from './pull-to-refresh.service';
5
3
  import * as i0 from "@angular/core";
6
4
  export declare class TuiPullToRefresh {
7
5
  private readonly isIOS;
8
6
  private readonly threshold;
9
- protected readonly pulling$: TuiPullToRefreshService;
7
+ private readonly service;
8
+ private readonly el;
9
+ protected readonly pulling: import("@angular/core").Signal<number>;
10
10
  protected readonly component: PolymorpheusContent<TuiContext<number>>;
11
- protected readonly dropped$: Observable<boolean>;
12
- styleHandler: TuiHandler<number, Record<string, unknown> | null>;
13
- readonly pulled: Observable<unknown>;
11
+ protected readonly style: import("@angular/core").Signal<Record<string, unknown> | null>;
12
+ protected readonly dropped: import("@angular/core").Signal<boolean | undefined>;
13
+ readonly styleHandler: import("@angular/core").InputSignal<TuiHandler<number, Record<string, unknown> | null>>;
14
+ readonly pulled: import("@angular/core").OutputRef<number>;
14
15
  constructor();
15
16
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiPullToRefresh, never>;
16
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiPullToRefresh, "tui-pull-to-refresh", never, { "styleHandler": { "alias": "styleHandler"; "required": false; }; }, { "pulled": "pulled"; }, never, ["*"], true, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiPullToRefresh, "tui-pull-to-refresh", never, { "styleHandler": { "alias": "styleHandler"; "required": false; "isSignal": true; }; }, { "pulled": "pulled"; }, never, ["*"], true, never>;
17
18
  }
@@ -1,5 +1,5 @@
1
1
  import { type AfterViewInit } from '@angular/core';
2
- import { type TuiPopover } from '@taiga-ui/cdk/services';
2
+ import { type TuiPortalContext } from '@taiga-ui/cdk/portals';
3
3
  import { Subject } from 'rxjs';
4
4
  import { type TuiSheetDialogOptions } from './sheet-dialog.options';
5
5
  import * as i0 from "@angular/core";
@@ -8,7 +8,7 @@ export declare class TuiSheetDialogComponent<I> implements AfterViewInit {
8
8
  private readonly stops;
9
9
  private readonly el;
10
10
  private pointers;
11
- protected readonly context: TuiPopover<TuiSheetDialogOptions<I>, any>;
11
+ protected readonly context: TuiPortalContext<TuiSheetDialogOptions<I>, any>;
12
12
  protected readonly close$: Subject<void>;
13
13
  protected readonly $: import("rxjs").Subscription;
14
14
  ngAfterViewInit(): void;
@@ -1,23 +1,17 @@
1
- import { InjectionToken, type Provider } from '@angular/core';
2
- import { type TuiPopover } from '@taiga-ui/cdk/services';
3
- import { type PolymorpheusContent } from '@taiga-ui/polymorpheus';
4
1
  import { type Observable } from 'rxjs';
5
2
  export interface TuiSheetDialogOptions<I = undefined> {
6
3
  readonly appearance: string;
7
4
  readonly closable: Observable<boolean> | boolean;
8
- readonly data: I;
5
+ readonly data: I extends void ? undefined : I;
9
6
  readonly initial: number;
10
- readonly label: PolymorpheusContent<TuiPopover<TuiSheetDialogOptions<I>, any>>;
7
+ readonly label: string;
11
8
  readonly offset: number;
12
9
  readonly stops: readonly string[];
13
10
  readonly bar: boolean;
14
- /** @deprecated add 'fullscreen' in appearance string */
15
- readonly fullscreen: boolean;
16
11
  readonly required: boolean;
17
12
  }
18
13
  export declare const TUI_SHEET_DIALOG_DEFAULT_OPTIONS: TuiSheetDialogOptions;
19
14
  /**
20
15
  * Default parameters for mobile dialog component
21
16
  */
22
- export declare const TUI_SHEET_DIALOG_OPTIONS: InjectionToken<TuiSheetDialogOptions<undefined>>;
23
- export declare function tuiSheetDialogOptionsProvider(options: Partial<TuiSheetDialogOptions>): Provider;
17
+ export declare const TUI_SHEET_DIALOG_OPTIONS: import("@angular/core").InjectionToken<TuiSheetDialogOptions<undefined>>, tuiSheetDialogOptionsProvider: (item: Partial<TuiSheetDialogOptions<undefined>> | (() => Partial<TuiSheetDialogOptions<undefined>>)) => import("@angular/core").FactoryProvider;
@@ -1,4 +1,4 @@
1
- import { type TuiModal, TuiModalService } from '@taiga-ui/core/components/modal';
1
+ import { type TuiModalComponent, TuiModalService } from '@taiga-ui/core/portals/modal';
2
2
  import { type PolymorpheusComponent } from '@taiga-ui/polymorpheus';
3
3
  import { TuiSheetDialogComponent } from './sheet-dialog.component';
4
4
  import { type TuiSheetDialogOptions } from './sheet-dialog.options';
@@ -9,7 +9,7 @@ export declare class TuiSheetDialogService extends TuiModalService<TuiSheetDialo
9
9
  private count;
10
10
  protected readonly options: TuiSheetDialogOptions<undefined>;
11
11
  protected readonly content: typeof TuiSheetDialogComponent;
12
- protected add(component: PolymorpheusComponent<TuiModal<TuiSheetDialogOptions>>): () => void;
12
+ protected add(component: PolymorpheusComponent<TuiModalComponent<TuiSheetDialogOptions>>): () => void;
13
13
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiSheetDialogService, never>;
14
14
  static ɵprov: i0.ɵɵInjectableDeclaration<TuiSheetDialogService>;
15
15
  }
@@ -1,8 +1,8 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class TuiSwipeActionsAutoClose {
3
3
  private readonly el;
4
- autoClose: boolean | string;
4
+ readonly autoClose: import("@angular/core").InputSignal<string | boolean>;
5
5
  protected handleEvent(event: Event): void;
6
6
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiSwipeActionsAutoClose, never>;
7
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiSwipeActionsAutoClose, "tui-swipe-actions[autoClose]", never, { "autoClose": { "alias": "autoClose"; "required": false; }; }, {}, never, never, true, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiSwipeActionsAutoClose, "tui-swipe-actions[autoClose]", never, { "autoClose": { "alias": "autoClose"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
8
8
  }
@@ -1,8 +1,8 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class TuiTabBarItem {
3
- icon: string;
4
- badge?: number | null;
3
+ readonly icon: import("@angular/core").InputSignal<string>;
4
+ readonly badge: import("@angular/core").InputSignal<number | undefined>;
5
5
  protected format(value: number): string;
6
6
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTabBarItem, never>;
7
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiTabBarItem, "button[tuiTabBarItem], a[tuiTabBarItem]", never, { "icon": { "alias": "icon"; "required": false; }; "badge": { "alias": "badge"; "required": false; }; }, {}, never, ["*"], true, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiTabBarItem, "button[tuiTabBarItem], a[tuiTabBarItem]", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
8
8
  }
@@ -1,13 +1,10 @@
1
- import { EventEmitter } from '@angular/core';
2
1
  import * as i0 from "@angular/core";
3
2
  export declare class TuiTabBarComponent {
4
3
  private readonly tabs;
5
- quantity: number;
6
- activeItemIndex: number;
7
- readonly activeItemIndexChange: EventEmitter<number>;
8
- setActive(tab: EventTarget): void;
9
- protected get style(): string;
4
+ readonly quantity: import("@angular/core").InputSignal<number>;
5
+ readonly activeItemIndex: import("@angular/core").ModelSignal<number>;
6
+ setActive(tab: Element): void;
10
7
  private updateIndex;
11
8
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTabBarComponent, never>;
12
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiTabBarComponent, "nav[tuiTabBar]", never, { "quantity": { "alias": "quantity"; "required": false; }; "activeItemIndex": { "alias": "activeItemIndex"; "required": false; }; }, { "activeItemIndexChange": "activeItemIndexChange"; }, ["tabs"], ["*"], true, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiTabBarComponent, "nav[tuiTabBar]", never, { "quantity": { "alias": "quantity"; "required": false; "isSignal": true; }; "activeItemIndex": { "alias": "activeItemIndex"; "required": false; "isSignal": true; }; }, { "activeItemIndex": "activeItemIndexChange"; }, ["tabs"], ["*"], true, never>;
13
10
  }
@@ -1,5 +1,5 @@
1
1
  import { type OnDestroy } from '@angular/core';
2
- import { TuiDropdownDirective } from '@taiga-ui/core/directives/dropdown';
2
+ import { TuiDropdownDirective } from '@taiga-ui/core/portals/dropdown';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@taiga-ui/cdk/directives/animated";
5
5
  import * as i2 from "@taiga-ui/cdk/directives/active-zone";
@@ -1,4 +1,4 @@
1
- import { TuiDropdownDirective } from '@taiga-ui/core/directives/dropdown';
1
+ import { TuiDropdownDirective } from '@taiga-ui/core/portals/dropdown';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class TuiDropdownSheetComponent {
4
4
  private readonly content;
@@ -1,7 +1,6 @@
1
- import { TuiElasticStickyService } from './elastic-sticky.service';
2
1
  import * as i0 from "@angular/core";
3
2
  export declare class TuiElasticSticky {
4
- readonly tuiElasticSticky: TuiElasticStickyService;
3
+ readonly tuiElasticSticky: import("@angular/core").OutputRef<number>;
5
4
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiElasticSticky, never>;
6
5
  static ɵdir: i0.ɵɵDirectiveDeclaration<TuiElasticSticky, "[tuiElasticSticky]", ["tuiElasticSticky"], {}, { "tuiElasticSticky": "tuiElasticSticky"; }, never, never, true, never>;
7
6
  }
@@ -1,7 +1,8 @@
1
- import { TuiPopoverDirective } from '@taiga-ui/cdk/directives/popover';
2
1
  import { type TuiResponsiveDialogOptions } from './responsive-dialog.service';
3
2
  import * as i0 from "@angular/core";
4
- export declare class TuiResponsiveDialog extends TuiPopoverDirective<TuiResponsiveDialogOptions> {
5
- static ɵfac: i0.ɵɵFactoryDeclaration<TuiResponsiveDialog, never>;
6
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiResponsiveDialog, "ng-template[tuiResponsiveDialog]", never, { "options": { "alias": "tuiResponsiveDialogOptions"; "required": false; }; "open": { "alias": "tuiResponsiveDialog"; "required": false; }; }, { "openChange": "tuiResponsiveDialogChange"; }, never, never, true, never>;
3
+ import * as i1 from "@taiga-ui/cdk/portals";
4
+ export declare class TuiResponsiveDialog<T> {
5
+ readonly tuiResponsiveDialogOptions: import("@angular/core").InputSignal<Partial<TuiResponsiveDialogOptions<T>>>;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiResponsiveDialog<any>, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiResponsiveDialog<any>, "ng-template[tuiResponsiveDialog]", never, { "tuiResponsiveDialogOptions": { "alias": "tuiResponsiveDialogOptions"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.TuiPortalDirective; inputs: { "options": "tuiResponsiveDialogOptions"; "open": "tuiResponsiveDialog"; }; outputs: { "openChange": "tuiResponsiveDialogChange"; }; }]>;
7
8
  }
@@ -1,13 +1,10 @@
1
1
  import { type TuiSheetDialogOptions } from '@taiga-ui/addon-mobile/components/sheet-dialog';
2
- import { type TuiDialogContext, type TuiDialogOptions } from '@taiga-ui/core/components/dialog';
2
+ import { type TuiPortalContext } from '@taiga-ui/cdk/portals';
3
+ import { type TuiDialogOptions } from '@taiga-ui/core/portals/dialog';
3
4
  import { type PolymorpheusContent } from '@taiga-ui/polymorpheus';
4
5
  import { type Observable } from 'rxjs';
5
6
  import * as i0 from "@angular/core";
6
- export interface TuiResponsiveDialogOptions<I = undefined> extends Omit<TuiDialogOptions<I>, 'label'>, TuiSheetDialogOptions<unknown> {
7
- readonly data: I extends void ? undefined : I & {
8
- button?: string;
9
- };
10
- readonly label: PolymorpheusContent;
7
+ export interface TuiResponsiveDialogOptions<I = undefined> extends TuiDialogOptions<I>, TuiSheetDialogOptions<I> {
11
8
  }
12
9
  /**
13
10
  * Same as `TuiDialogService` but automatically switches to `TuiSheetDialogService` on mobile
@@ -16,7 +13,7 @@ export declare class TuiResponsiveDialogService {
16
13
  private readonly isMobile;
17
14
  private readonly dialogs;
18
15
  private readonly sheets;
19
- open<G = void>(content: PolymorpheusContent<TuiDialogContext<G> & TuiResponsiveDialogOptions<any>>, options?: Partial<TuiResponsiveDialogOptions<any>>): Observable<G>;
16
+ open<G = void>(content: PolymorpheusContent<TuiPortalContext<TuiResponsiveDialogOptions, G>>, options?: Partial<TuiResponsiveDialogOptions<any>>): Observable<G>;
20
17
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiResponsiveDialogService, never>;
21
18
  static ɵprov: i0.ɵɵInjectableDeclaration<TuiResponsiveDialogService>;
22
19
  }
@@ -4,9 +4,9 @@ export declare class TuiRipple {
4
4
  private readonly destroyRef;
5
5
  private readonly duration;
6
6
  protected readonly nothing: undefined;
7
- tuiRipple: string;
7
+ readonly tuiRipple: import("@angular/core").InputSignal<string>;
8
8
  protected start(x: number, y: number, target: HTMLElement, el: HTMLElement): void;
9
9
  private createRipple;
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiRipple, never>;
11
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiRipple, "[tuiRipple]", never, { "tuiRipple": { "alias": "tuiRipple"; "required": false; }; }, {}, never, never, true, never>;
11
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiRipple, "[tuiRipple]", never, { "tuiRipple": { "alias": "tuiRipple"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12
12
  }
@@ -1,13 +1,13 @@
1
1
  import * as i0 from "@angular/core";
2
- export declare function tuiFindTouchIndex(touches: TouchList, id: number): number;
3
2
  export declare class TuiTouchable {
4
3
  private readonly isIOS;
5
4
  private readonly el;
6
- tuiTouchable: '' | 'background' | 'opacity' | 'transform';
5
+ private readonly doc;
6
+ protected readonly style: import("@angular/core").Signal<"background" | "opacity" | "transform">;
7
+ readonly tuiTouchable: import("@angular/core").InputSignal<"" | "background" | "opacity" | "transform">;
7
8
  constructor();
8
- protected get style(): 'background' | 'opacity' | 'transform';
9
- private hasTouchLeft;
9
+ private hasTouches;
10
10
  private onTouchStart;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTouchable, never>;
12
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiTouchable, "[tuiTouchable]", never, { "tuiTouchable": { "alias": "tuiTouchable"; "required": false; }; }, {}, never, never, true, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiTouchable, "[tuiTouchable]", never, { "tuiTouchable": { "alias": "tuiTouchable"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
13
13
  }
@@ -1,8 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Input, ViewChild, ViewChildren, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { EMPTY_QUERY } from '@taiga-ui/cdk/constants';
2
+ import { viewChildren, viewChild, input, ChangeDetectionStrategy, Component } from '@angular/core';
4
3
  import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
5
- import { tuiHeaderOptionsProvider } from '@taiga-ui/core/components/header';
4
+ import { tuiHeaderOptionsProvider } from '@taiga-ui/layout/components/header';
6
5
 
7
6
  const OPTIONS = {
8
7
  duration: 20,
@@ -11,40 +10,34 @@ const OPTIONS = {
11
10
  };
12
11
  class TuiBottomSheet {
13
12
  constructor() {
14
- this.elements = EMPTY_QUERY;
13
+ this.elements = viewChildren('stops');
14
+ this.content = viewChild('content');
15
15
  this.el = tuiInjectElement();
16
- this.stops = ['1.5rem'];
16
+ this.stops = input(['1.5rem']);
17
17
  }
18
18
  onScroll() {
19
19
  const { clientHeight, scrollTop, scrollHeight } = this.el;
20
- const top = this.elements.get(0)?.nativeElement.clientHeight || 0;
21
- const max = this.content?.nativeElement.clientHeight || Infinity;
20
+ const top = this.elements()[0]?.nativeElement.clientHeight || 0;
21
+ const max = this.content()?.nativeElement.clientHeight || Infinity;
22
22
  const height = Math.min(clientHeight, max);
23
23
  const scrolled = Math.min(scrollTop, height - top);
24
24
  const transform = `translate3d(0, ${-1 * scrolled}px, 0)`;
25
25
  this.el.style.setProperty('--t-height', `${scrollHeight}px`);
26
+ this.el.style.setProperty('overflow', 'scroll');
26
27
  this.el.animate([{ transform }], OPTIONS);
27
28
  }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiBottomSheet, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiBottomSheet, isStandalone: true, selector: "tui-bottom-sheet", inputs: { stops: "stops" }, host: { listeners: { "scroll.zoneless": "onScroll()", "resize": "onScroll()" }, properties: { "style.--t-initial": "stops[0]", "style.scroll-snap-type": "stops.length > 1 ? \"y mandatory\" : null" } }, providers: [tuiHeaderOptionsProvider({ size: 'h5' })], viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "elements", predicate: ["stops"], descendants: true }], ngImport: i0, template: "@for (stop of stops; track stop) {\n <div\n #stops\n class=\"t-stop\"\n [style.inset-block-start]=\"stop\"\n ></div>\n}\n<div\n #content\n class=\"t-content\"\n (resize)=\"onScroll()\"\n>\n <ng-content />\n</div>\n<div class=\"t-bottom\"></div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:absolute;top:100%;left:0;right:0;display:block;block-size:calc(100% - 1rem);max-inline-size:40rem;margin:calc(-1 * var(--t-initial)) auto 0;background:var(--tui-background-elevation-1);border-top-left-radius:var(--tui-radius-l);border-top-right-radius:var(--tui-radius-l);overflow:auto;box-shadow:0 1rem var(--tui-background-elevation-1),var(--tui-shadow-medium)}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}:host:before{content:\"\";position:sticky;top:.625rem;left:50%;z-index:1;display:block;inset-inline-start:50%;inline-size:2rem;block-size:.25rem;margin-block-end:-.25rem;transform:translate(calc(-50% * var(--tui-inline)));background:var(--tui-background-elevation-1);box-shadow:0 0 0 20rem var(--tui-background-elevation-1),inset 0 0 0 1rem var(--tui-border-normal);border-radius:1rem;clip-path:polygon(-100vw -1rem,100vw -1rem,100vw calc(100% + .625rem),-100vw calc(100% + .625rem))}:host:after{content:\"\";position:absolute;top:calc(100% - var(--t-initial));inline-size:1rem;block-size:calc(var(--t-height) - 100% + var(--t-initial));scroll-snap-align:start;scroll-snap-stop:always}.t-content{position:sticky;top:0;padding:2.25rem 1rem 1.5rem}.t-bottom{block-size:calc(100% - var(--t-initial))}.t-stop{position:absolute;block-size:var(--t-initial);inline-size:1rem;pointer-events:none;transform:translateY(-100%);scroll-snap-align:start;scroll-snap-stop:always}.t-stop:last-child{scroll-snap-align:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiBottomSheet, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiBottomSheet, isStandalone: true, selector: "tui-bottom-sheet", inputs: { stops: { classPropertyName: "stops", publicName: "stops", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "scroll.zoneless": "onScroll()", "resize": "onScroll()" }, properties: { "style.--t-initial": "stops()[0]", "style.scroll-snap-type": "stops().length > 1 ? \"y mandatory\" : null" } }, providers: [tuiHeaderOptionsProvider({ size: 'h5' })], viewQueries: [{ propertyName: "elements", predicate: ["stops"], descendants: true, isSignal: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, isSignal: true }], ngImport: i0, template: "@for (stop of stops(); track $index) {\n <div\n #stops\n class=\"t-stop\"\n [style.inset-block-start]=\"stop\"\n ></div>\n}\n<div\n #content\n class=\"t-content\"\n (resize)=\"onScroll()\"\n>\n <ng-content />\n</div>\n<div class=\"t-bottom\"></div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:absolute;top:100%;left:0;right:0;display:block;block-size:calc(100% - 1rem);max-inline-size:40rem;margin:calc(-1 * var(--t-initial)) auto 0;background:var(--tui-background-elevation-1);border-top-left-radius:var(--tui-radius-l);border-top-right-radius:var(--tui-radius-l);overflow:auto;box-shadow:0 1rem var(--tui-background-elevation-1),var(--tui-shadow-medium)}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}:host:before{content:\"\";position:sticky;top:.625rem;left:50%;z-index:1;display:block;inset-inline-start:50%;inline-size:2rem;block-size:.25rem;margin-block-end:-.25rem;transform:translate(calc(-50% * var(--tui-inline)));background:var(--tui-background-elevation-1);box-shadow:0 0 0 20rem var(--tui-background-elevation-1),inset 0 0 0 1rem var(--tui-border-normal);border-radius:1rem;clip-path:polygon(-100vw -1rem,100vw -1rem,100vw calc(100% + .625rem),-100vw calc(100% + .625rem))}:host:after{content:\"\";position:absolute;top:calc(100% - var(--t-initial));inline-size:1rem;block-size:calc(var(--t-height) - 100% + var(--t-initial));scroll-snap-align:start;scroll-snap-stop:always}.t-content{position:sticky;top:0;padding:2.25rem 1rem 1.5rem}.t-bottom{block-size:calc(100% - var(--t-initial))}.t-stop{position:absolute;block-size:var(--t-initial);inline-size:1rem;pointer-events:none;transform:translateY(-100%);scroll-snap-align:start;scroll-snap-stop:always}.t-stop:last-child{scroll-snap-align:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
31
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiBottomSheet, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiBottomSheet, decorators: [{
32
33
  type: Component,
33
34
  args: [{ selector: 'tui-bottom-sheet', changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiHeaderOptionsProvider({ size: 'h5' })], host: {
34
- '[style.--t-initial]': 'stops[0]',
35
- '[style.scroll-snap-type]': 'stops.length > 1 ? "y mandatory" : null',
35
+ '[style.--t-initial]': 'stops()[0]',
36
+ '[style.scroll-snap-type]': 'stops().length > 1 ? "y mandatory" : null',
36
37
  '(scroll.zoneless)': 'onScroll()',
37
38
  '(resize)': 'onScroll()',
38
- }, template: "@for (stop of stops; track stop) {\n <div\n #stops\n class=\"t-stop\"\n [style.inset-block-start]=\"stop\"\n ></div>\n}\n<div\n #content\n class=\"t-content\"\n (resize)=\"onScroll()\"\n>\n <ng-content />\n</div>\n<div class=\"t-bottom\"></div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:absolute;top:100%;left:0;right:0;display:block;block-size:calc(100% - 1rem);max-inline-size:40rem;margin:calc(-1 * var(--t-initial)) auto 0;background:var(--tui-background-elevation-1);border-top-left-radius:var(--tui-radius-l);border-top-right-radius:var(--tui-radius-l);overflow:auto;box-shadow:0 1rem var(--tui-background-elevation-1),var(--tui-shadow-medium)}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}:host:before{content:\"\";position:sticky;top:.625rem;left:50%;z-index:1;display:block;inset-inline-start:50%;inline-size:2rem;block-size:.25rem;margin-block-end:-.25rem;transform:translate(calc(-50% * var(--tui-inline)));background:var(--tui-background-elevation-1);box-shadow:0 0 0 20rem var(--tui-background-elevation-1),inset 0 0 0 1rem var(--tui-border-normal);border-radius:1rem;clip-path:polygon(-100vw -1rem,100vw -1rem,100vw calc(100% + .625rem),-100vw calc(100% + .625rem))}:host:after{content:\"\";position:absolute;top:calc(100% - var(--t-initial));inline-size:1rem;block-size:calc(var(--t-height) - 100% + var(--t-initial));scroll-snap-align:start;scroll-snap-stop:always}.t-content{position:sticky;top:0;padding:2.25rem 1rem 1.5rem}.t-bottom{block-size:calc(100% - var(--t-initial))}.t-stop{position:absolute;block-size:var(--t-initial);inline-size:1rem;pointer-events:none;transform:translateY(-100%);scroll-snap-align:start;scroll-snap-stop:always}.t-stop:last-child{scroll-snap-align:none}\n"] }]
39
- }], propDecorators: { elements: [{
40
- type: ViewChildren,
41
- args: ['stops']
42
- }], content: [{
43
- type: ViewChild,
44
- args: ['content']
45
- }], stops: [{
46
- type: Input
47
- }] } });
39
+ }, template: "@for (stop of stops(); track $index) {\n <div\n #stops\n class=\"t-stop\"\n [style.inset-block-start]=\"stop\"\n ></div>\n}\n<div\n #content\n class=\"t-content\"\n (resize)=\"onScroll()\"\n>\n <ng-content />\n</div>\n<div class=\"t-bottom\"></div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:absolute;top:100%;left:0;right:0;display:block;block-size:calc(100% - 1rem);max-inline-size:40rem;margin:calc(-1 * var(--t-initial)) auto 0;background:var(--tui-background-elevation-1);border-top-left-radius:var(--tui-radius-l);border-top-right-radius:var(--tui-radius-l);overflow:auto;box-shadow:0 1rem var(--tui-background-elevation-1),var(--tui-shadow-medium)}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}:host:before{content:\"\";position:sticky;top:.625rem;left:50%;z-index:1;display:block;inset-inline-start:50%;inline-size:2rem;block-size:.25rem;margin-block-end:-.25rem;transform:translate(calc(-50% * var(--tui-inline)));background:var(--tui-background-elevation-1);box-shadow:0 0 0 20rem var(--tui-background-elevation-1),inset 0 0 0 1rem var(--tui-border-normal);border-radius:1rem;clip-path:polygon(-100vw -1rem,100vw -1rem,100vw calc(100% + .625rem),-100vw calc(100% + .625rem))}:host:after{content:\"\";position:absolute;top:calc(100% - var(--t-initial));inline-size:1rem;block-size:calc(var(--t-height) - 100% + var(--t-initial));scroll-snap-align:start;scroll-snap-stop:always}.t-content{position:sticky;top:0;padding:2.25rem 1rem 1.5rem}.t-bottom{block-size:calc(100% - var(--t-initial))}.t-stop{position:absolute;block-size:var(--t-initial);inline-size:1rem;pointer-events:none;transform:translateY(-100%);scroll-snap-align:start;scroll-snap-stop:always}.t-stop:last-child{scroll-snap-align:none}\n"] }]
40
+ }] });
48
41
 
49
42
  /**
50
43
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-components-bottom-sheet.mjs","sources":["../../../projects/addon-mobile/components/bottom-sheet/bottom-sheet.component.ts","../../../projects/addon-mobile/components/bottom-sheet/bottom-sheet.template.html","../../../projects/addon-mobile/components/bottom-sheet/taiga-ui-addon-mobile-components-bottom-sheet.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n type ElementRef,\n Input,\n type QueryList,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiHeaderOptionsProvider} from '@taiga-ui/core/components/header';\n\nconst OPTIONS = {\n duration: 20,\n easing: 'ease-in',\n fill: 'forwards',\n} as const;\n\n@Component({\n selector: 'tui-bottom-sheet',\n templateUrl: './bottom-sheet.template.html',\n styleUrl: './bottom-sheet.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiHeaderOptionsProvider({size: 'h5'})],\n host: {\n '[style.--t-initial]': 'stops[0]',\n '[style.scroll-snap-type]': 'stops.length > 1 ? \"y mandatory\" : null',\n '(scroll.zoneless)': 'onScroll()',\n '(resize)': 'onScroll()',\n },\n})\nexport class TuiBottomSheet {\n @ViewChildren('stops')\n private readonly elements: QueryList<ElementRef<HTMLElement>> = EMPTY_QUERY;\n\n @ViewChild('content')\n private readonly content?: ElementRef<HTMLElement>;\n\n private readonly el = tuiInjectElement();\n\n @Input()\n public stops: readonly string[] = ['1.5rem'];\n\n protected onScroll(): void {\n const {clientHeight, scrollTop, scrollHeight} = this.el;\n const top = this.elements.get(0)?.nativeElement.clientHeight || 0;\n const max = this.content?.nativeElement.clientHeight || Infinity;\n const height = Math.min(clientHeight, max);\n const scrolled = Math.min(scrollTop, height - top);\n const transform = `translate3d(0, ${-1 * scrolled}px, 0)`;\n\n this.el.style.setProperty('--t-height', `${scrollHeight}px`);\n this.el.animate([{transform}], OPTIONS);\n }\n}\n","@for (stop of stops; track stop) {\n <div\n #stops\n class=\"t-stop\"\n [style.inset-block-start]=\"stop\"\n ></div>\n}\n<div\n #content\n class=\"t-content\"\n (resize)=\"onScroll()\"\n>\n <ng-content />\n</div>\n<div class=\"t-bottom\"></div>\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-addon-mobile-components-bottom-sheet.mjs","sources":["../../../projects/addon-mobile/components/bottom-sheet/bottom-sheet.component.ts","../../../projects/addon-mobile/components/bottom-sheet/bottom-sheet.template.html","../../../projects/addon-mobile/components/bottom-sheet/taiga-ui-addon-mobile-components-bottom-sheet.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n type ElementRef,\n input,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiHeaderOptionsProvider} from '@taiga-ui/layout/components/header';\n\nconst OPTIONS = {\n duration: 20,\n easing: 'ease-in',\n fill: 'forwards',\n} as const;\n\n@Component({\n selector: 'tui-bottom-sheet',\n templateUrl: './bottom-sheet.template.html',\n styleUrl: './bottom-sheet.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiHeaderOptionsProvider({size: 'h5'})],\n host: {\n '[style.--t-initial]': 'stops()[0]',\n '[style.scroll-snap-type]': 'stops().length > 1 ? \"y mandatory\" : null',\n '(scroll.zoneless)': 'onScroll()',\n '(resize)': 'onScroll()',\n },\n})\nexport class TuiBottomSheet {\n private readonly elements = viewChildren<ElementRef<HTMLElement>>('stops');\n private readonly content = viewChild<ElementRef<HTMLElement>>('content');\n private readonly el = tuiInjectElement();\n\n public readonly stops = input<readonly string[]>(['1.5rem']);\n\n protected onScroll(): void {\n const {clientHeight, scrollTop, scrollHeight} = this.el;\n const top = this.elements()[0]?.nativeElement.clientHeight || 0;\n const max = this.content()?.nativeElement.clientHeight || Infinity;\n const height = Math.min(clientHeight, max);\n const scrolled = Math.min(scrollTop, height - top);\n const transform = `translate3d(0, ${-1 * scrolled}px, 0)`;\n\n this.el.style.setProperty('--t-height', `${scrollHeight}px`);\n this.el.style.setProperty('overflow', 'scroll');\n this.el.animate([{transform}], OPTIONS);\n }\n}\n","@for (stop of stops(); track $index) {\n <div\n #stops\n class=\"t-stop\"\n [style.inset-block-start]=\"stop\"\n ></div>\n}\n<div\n #content\n class=\"t-content\"\n (resize)=\"onScroll()\"\n>\n <ng-content />\n</div>\n<div class=\"t-bottom\"></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}