@taiga-ui/addon-mobile 5.19.0 → 5.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,8 @@
1
+ import { type OnDestroy } from '@angular/core';
1
2
  import { type TuiContext, type TuiHandler } from '@taiga-ui/cdk/types';
2
3
  import { type PolymorpheusContent } from '@taiga-ui/polymorpheus';
3
4
  import * as i0 from "@angular/core";
4
- export declare class TuiPullToRefresh {
5
+ export declare class TuiPullToRefresh implements OnDestroy {
5
6
  private readonly isIOS;
6
7
  private readonly threshold;
7
8
  private readonly service;
@@ -13,6 +14,7 @@ export declare class TuiPullToRefresh {
13
14
  readonly styleHandler: import("@angular/core").InputSignal<TuiHandler<number, Record<string, unknown> | null>>;
14
15
  readonly pulled: import("@angular/core").OutputRef<number>;
15
16
  constructor();
17
+ ngOnDestroy(): void;
16
18
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiPullToRefresh, never>;
17
19
  static ɵcmp: i0.ɵɵComponentDeclaration<TuiPullToRefresh, "tui-pull-to-refresh", never, { "styleHandler": { "alias": "styleHandler"; "required": false; "isSignal": true; }; }, { "pulled": "pulled"; }, never, ["*"], true, never>;
18
20
  }
@@ -4,6 +4,7 @@ import { Subject } from 'rxjs';
4
4
  import { type TuiSheetDialogOptions } from './sheet-dialog.options';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@taiga-ui/cdk/directives/animated";
7
+ import * as i2 from "@taiga-ui/core/components/scrollbar";
7
8
  export declare class TuiSheetDialogComponent<I> implements AfterViewInit {
8
9
  private readonly stops;
9
10
  private readonly el;
@@ -16,5 +17,5 @@ export declare class TuiSheetDialogComponent<I> implements AfterViewInit {
16
17
  private get initial();
17
18
  private close;
18
19
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiSheetDialogComponent<any>, never>;
19
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiSheetDialogComponent<any>, "tui-sheet-dialog", never, {}, {}, never, never, true, [{ directive: typeof i1.TuiAnimated; inputs: {}; outputs: {}; }]>;
20
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiSheetDialogComponent<any>, "tui-sheet-dialog", never, {}, {}, never, never, true, [{ directive: typeof i1.TuiAnimated; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiScrollRef; inputs: {}; outputs: {}; }]>;
20
21
  }
@@ -9,6 +9,13 @@ export interface TuiSheetDialogOptions<I = undefined> {
9
9
  readonly stops: readonly string[];
10
10
  readonly bar: boolean;
11
11
  readonly required: boolean;
12
+ /**
13
+ * Address-bar (`<meta name="theme-color">`) color applied while the sheet is
14
+ * open, matching the dimmed backdrop. Pass an empty string to leave the
15
+ * address bar untouched (e.g. apps that manage `theme-color` themselves, or
16
+ * need a value that tracks dark mode).
17
+ */
18
+ readonly themeColor: string;
12
19
  }
13
20
  export declare const TUI_SHEET_DIALOG_DEFAULT_OPTIONS: TuiSheetDialogOptions;
14
21
  /**
@@ -4,8 +4,8 @@ import { TuiSheetDialogComponent } from './sheet-dialog.component';
4
4
  import { type TuiSheetDialogOptions } from './sheet-dialog.options';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class TuiSheetDialogService extends TuiModalService<TuiSheetDialogOptions<any>> {
7
- private readonly theme;
8
- private readonly initial;
7
+ private readonly meta;
8
+ private initial;
9
9
  private count;
10
10
  protected readonly options: TuiSheetDialogOptions<undefined>;
11
11
  protected readonly content: typeof TuiSheetDialogComponent;
@@ -7,7 +7,7 @@ class TuiKeypad {
7
7
  this.columns = input(3);
8
8
  }
9
9
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiKeypad, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.25", type: TuiKeypad, isStandalone: true, selector: "tui-keypad", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-tui-version": "5.19.0" }, listeners: { "mousedown.zoneless.prevent": "(0)", "pointerdown.zoneless.prevent": "(0)" }, properties: { "style.--t-columns": "columns()" } }, ngImport: i0, template: '<ng-content />', isInline: true, styles: ["tui-keypad:where(*[data-tui-version=\"5.19.0\"]){display:grid;grid-template-columns:repeat(var(--t-columns, 3),1fr);grid-auto-rows:4rem;place-items:center;inline-size:100%;max-inline-size:37.5rem;margin-inline:auto;font:600 1.75rem/1 var(--tui-typography-family-display);color:var(--tui-text-primary);-webkit-user-select:none;user-select:none}tui-keypad:where(*[data-tui-version=\"5.19.0\"])>a,tui-keypad:where(*[data-tui-version=\"5.19.0\"])>button{display:flex;box-sizing:border-box;align-items:center;justify-content:center;block-size:3.5rem;inline-size:3.5rem;max-inline-size:100%;border:none;border-radius:50%;background:transparent;font:inherit;color:inherit;text-decoration:none;cursor:pointer;transition:background var(--tui-duration) ease-out,transform var(--tui-duration) var(--tui-curve-expressive-entrance)}@media(hover:hover)and (pointer:fine){tui-keypad:where(*[data-tui-version=\"5.19.0\"])>a:hover:not(:disabled),tui-keypad:where(*[data-tui-version=\"5.19.0\"])>button:hover:not(:disabled){background:var(--tui-background-neutral-1-hover)}}tui-keypad:where(*[data-tui-version=\"5.19.0\"])>a:active:not(:disabled),tui-keypad:where(*[data-tui-version=\"5.19.0\"])>button:active:not(:disabled){background:var(--tui-background-neutral-1-pressed);transform:scale(1.14)}tui-keypad:where(*[data-tui-version=\"5.19.0\"])>a:focus-visible,tui-keypad:where(*[data-tui-version=\"5.19.0\"])>button:focus-visible{outline:.125rem solid var(--tui-border-focus);outline-offset:.125rem}tui-keypad:where(*[data-tui-version=\"5.19.0\"])>a:disabled,tui-keypad:where(*[data-tui-version=\"5.19.0\"])>button:disabled{opacity:var(--tui-disabled-opacity);cursor:default}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.25", type: TuiKeypad, isStandalone: true, selector: "tui-keypad", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-tui-version": "5.20.0" }, listeners: { "mousedown.zoneless.prevent": "(0)", "pointerdown.zoneless.prevent": "(0)" }, properties: { "style.--t-columns": "columns()" } }, ngImport: i0, template: '<ng-content />', isInline: true, styles: ["tui-keypad:where(*[data-tui-version=\"5.20.0\"]){display:grid;grid-template-columns:repeat(var(--t-columns, 3),1fr);grid-auto-rows:4rem;place-items:center;inline-size:100%;max-inline-size:37.5rem;margin-inline:auto;font:600 1.75rem/1 var(--tui-typography-family-display);color:var(--tui-text-primary);-webkit-user-select:none;user-select:none}tui-keypad:where(*[data-tui-version=\"5.20.0\"])>a,tui-keypad:where(*[data-tui-version=\"5.20.0\"])>button{display:flex;box-sizing:border-box;align-items:center;justify-content:center;block-size:3.5rem;inline-size:3.5rem;max-inline-size:100%;border:none;border-radius:50%;background:transparent;font:inherit;color:inherit;text-decoration:none;cursor:pointer;transition:background var(--tui-duration) ease-out,transform var(--tui-duration) var(--tui-curve-expressive-entrance)}@media(hover:hover)and (pointer:fine){tui-keypad:where(*[data-tui-version=\"5.20.0\"])>a:hover:not(:disabled),tui-keypad:where(*[data-tui-version=\"5.20.0\"])>button:hover:not(:disabled){background:var(--tui-background-neutral-1-hover)}}tui-keypad:where(*[data-tui-version=\"5.20.0\"])>a:active:not(:disabled),tui-keypad:where(*[data-tui-version=\"5.20.0\"])>button:active:not(:disabled){background:var(--tui-background-neutral-1-pressed);transform:scale(1.14)}tui-keypad:where(*[data-tui-version=\"5.20.0\"])>a:focus-visible,tui-keypad:where(*[data-tui-version=\"5.20.0\"])>button:focus-visible{outline:.125rem solid var(--tui-border-focus);outline-offset:.125rem}tui-keypad:where(*[data-tui-version=\"5.20.0\"])>a:disabled,tui-keypad:where(*[data-tui-version=\"5.20.0\"])>button:disabled{opacity:var(--tui-disabled-opacity);cursor:default}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
11
11
  }
12
12
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiKeypad, decorators: [{
13
13
  type: Component,
@@ -17,7 +17,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
17
17
  // Keep the driven field focused on tap: iOS needs mousedown, Android longtap needs pointerdown
18
18
  '(mousedown.zoneless.prevent)': '(0)',
19
19
  '(pointerdown.zoneless.prevent)': '(0)',
20
- }, styles: ["tui-keypad:where(*[data-tui-version=\"5.19.0\"]){display:grid;grid-template-columns:repeat(var(--t-columns, 3),1fr);grid-auto-rows:4rem;place-items:center;inline-size:100%;max-inline-size:37.5rem;margin-inline:auto;font:600 1.75rem/1 var(--tui-typography-family-display);color:var(--tui-text-primary);-webkit-user-select:none;user-select:none}tui-keypad:where(*[data-tui-version=\"5.19.0\"])>a,tui-keypad:where(*[data-tui-version=\"5.19.0\"])>button{display:flex;box-sizing:border-box;align-items:center;justify-content:center;block-size:3.5rem;inline-size:3.5rem;max-inline-size:100%;border:none;border-radius:50%;background:transparent;font:inherit;color:inherit;text-decoration:none;cursor:pointer;transition:background var(--tui-duration) ease-out,transform var(--tui-duration) var(--tui-curve-expressive-entrance)}@media(hover:hover)and (pointer:fine){tui-keypad:where(*[data-tui-version=\"5.19.0\"])>a:hover:not(:disabled),tui-keypad:where(*[data-tui-version=\"5.19.0\"])>button:hover:not(:disabled){background:var(--tui-background-neutral-1-hover)}}tui-keypad:where(*[data-tui-version=\"5.19.0\"])>a:active:not(:disabled),tui-keypad:where(*[data-tui-version=\"5.19.0\"])>button:active:not(:disabled){background:var(--tui-background-neutral-1-pressed);transform:scale(1.14)}tui-keypad:where(*[data-tui-version=\"5.19.0\"])>a:focus-visible,tui-keypad:where(*[data-tui-version=\"5.19.0\"])>button:focus-visible{outline:.125rem solid var(--tui-border-focus);outline-offset:.125rem}tui-keypad:where(*[data-tui-version=\"5.19.0\"])>a:disabled,tui-keypad:where(*[data-tui-version=\"5.19.0\"])>button:disabled{opacity:var(--tui-disabled-opacity);cursor:default}\n"] }]
20
+ }, styles: ["tui-keypad:where(*[data-tui-version=\"5.20.0\"]){display:grid;grid-template-columns:repeat(var(--t-columns, 3),1fr);grid-auto-rows:4rem;place-items:center;inline-size:100%;max-inline-size:37.5rem;margin-inline:auto;font:600 1.75rem/1 var(--tui-typography-family-display);color:var(--tui-text-primary);-webkit-user-select:none;user-select:none}tui-keypad:where(*[data-tui-version=\"5.20.0\"])>a,tui-keypad:where(*[data-tui-version=\"5.20.0\"])>button{display:flex;box-sizing:border-box;align-items:center;justify-content:center;block-size:3.5rem;inline-size:3.5rem;max-inline-size:100%;border:none;border-radius:50%;background:transparent;font:inherit;color:inherit;text-decoration:none;cursor:pointer;transition:background var(--tui-duration) ease-out,transform var(--tui-duration) var(--tui-curve-expressive-entrance)}@media(hover:hover)and (pointer:fine){tui-keypad:where(*[data-tui-version=\"5.20.0\"])>a:hover:not(:disabled),tui-keypad:where(*[data-tui-version=\"5.20.0\"])>button:hover:not(:disabled){background:var(--tui-background-neutral-1-hover)}}tui-keypad:where(*[data-tui-version=\"5.20.0\"])>a:active:not(:disabled),tui-keypad:where(*[data-tui-version=\"5.20.0\"])>button:active:not(:disabled){background:var(--tui-background-neutral-1-pressed);transform:scale(1.14)}tui-keypad:where(*[data-tui-version=\"5.20.0\"])>a:focus-visible,tui-keypad:where(*[data-tui-version=\"5.20.0\"])>button:focus-visible{outline:.125rem solid var(--tui-border-focus);outline-offset:.125rem}tui-keypad:where(*[data-tui-version=\"5.20.0\"])>a:disabled,tui-keypad:where(*[data-tui-version=\"5.20.0\"])>button:disabled{opacity:var(--tui-disabled-opacity);cursor:default}\n"] }]
21
21
  }] });
22
22
 
23
23
  /**
@@ -141,10 +141,16 @@ class TuiPullToRefresh {
141
141
  tuiScrollFrom(this.el.nativeElement)
142
142
  .pipe(startWith(null), tuiZonefree(), takeUntilDestroyed())
143
143
  .subscribe(() => {
144
- this.el.nativeElement.style.setProperty('touch-action', this.el.nativeElement.scrollTop ? '' : 'pan-down');
144
+ const { style, scrollTop } = this.el.nativeElement;
145
+ style.setProperty('touch-action', scrollTop > 0 ? '' : 'pan-down');
146
+ style.setProperty('overscroll-behavior', scrollTop > 0 ? '' : 'none');
145
147
  });
146
148
  }
147
149
  }
150
+ ngOnDestroy() {
151
+ this.el.nativeElement.style.removeProperty('touch-action');
152
+ this.el.nativeElement.style.removeProperty('overscroll-behavior');
153
+ }
148
154
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiPullToRefresh, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
149
155
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.25", type: TuiPullToRefresh, isStandalone: true, selector: "tui-pull-to-refresh", inputs: { styleHandler: { classPropertyName: "styleHandler", publicName: "styleHandler", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pulled: "pulled" }, providers: [TuiPullToRefreshService], ngImport: i0, template: "<ng-container *polymorpheusOutlet=\"component; context: {$implicit: pulling()}\" />\n\n<div\n [class.t-drop]=\"dropped()\"\n [style.position]=\"'relative'\"\n [style]=\"style()\"\n>\n <ng-content />\n</div>\n", styles: [".t-drop{transition:all var(--tui-duration) cubic-bezier(.4,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
150
156
  }
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-components-pull-to-refresh.mjs","sources":["../../../projects/addon-mobile/components/pull-to-refresh/loader-ios/loader-ios.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-ios/loader-ios.template.html","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.providers.ts","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.service.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-android/loader-android.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-android/loader-android.template.html","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.template.html","../../../projects/addon-mobile/components/pull-to-refresh/taiga-ui-addon-mobile-components-pull-to-refresh.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {injectContext, PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TUI_PULL_TO_REFRESH_THRESHOLD} from '../pull-to-refresh.providers';\n\nconst LOADED_STEP = 8;\nconst ROTATE_X_STEP = 30;\n\n@Component({\n selector: 'tui-mobile-ios-loader',\n templateUrl: './loader-ios.template.html',\n styleUrl: './loader-ios.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiMobileLoaderIOS {\n private readonly context = injectContext<TuiContext<number>>();\n private readonly threshold = inject(TUI_PULL_TO_REFRESH_THRESHOLD);\n\n protected readonly steps = 12;\n\n protected get finished(): boolean {\n return this.percent >= 100;\n }\n\n protected get percent(): number {\n return (this.context.$implicit * 100) / this.threshold;\n }\n\n protected isShown(index: number): boolean {\n return this.percent > (index + 1) * LOADED_STEP;\n }\n\n protected calculateTransform(index: number): string {\n return `rotate(${index * ROTATE_X_STEP} 50 50)`;\n }\n\n protected calculateAnimationBegin(index: number): string {\n return `${(index * LOADED_STEP) / 100}s`;\n }\n}\n\nexport const TUI_IOS_LOADER = new PolymorpheusComponent(TuiMobileLoaderIOS);\n","<svg\n height=\"36\"\n preserveAspectRatio=\"xMidYMid\"\n viewBox=\"0 0 100 100\"\n width=\"36\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n @for (_ of '-'.repeat(steps); track $index) {\n @if (isShown($index)) {\n <g [attr.transform]=\"calculateTransform($index)\">\n <rect\n fill=\"#c7c9cc\"\n height=\"16\"\n rx=\"7.05\"\n ry=\"3.3\"\n width=\"6\"\n x=\"47\"\n y=\"22\"\n >\n @if (finished) {\n <animate\n attributeName=\"opacity\"\n dur=\"1s\"\n keyTimes=\"0;1\"\n repeatCount=\"indefinite\"\n values=\"1;0\"\n [attr.begin]=\"calculateAnimationBegin($index)\"\n />\n }\n </rect>\n </g>\n }\n }\n</svg>\n","import {inject, InjectionToken} from '@angular/core';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {EMPTY, type Observable} from 'rxjs';\n\nimport {TUI_ANDROID_LOADER} from './loader-android/loader-android.component';\nimport {TUI_IOS_LOADER} from './loader-ios/loader-ios.component';\n\n/**\n * Stream that emits when loading is over\n */\nexport const TUI_PULL_TO_REFRESH_LOADED = new InjectionToken<Observable<unknown>>(\n ngDevMode ? 'TUI_PULL_TO_REFRESH_LOADED' : '',\n {factory: () => EMPTY},\n);\n\n/**\n * Pull threshold in pixels until loading starts\n */\nexport const TUI_PULL_TO_REFRESH_THRESHOLD = new InjectionToken(\n ngDevMode ? 'TUI_PULL_TO_REFRESH_THRESHOLD' : '',\n {factory: () => 50},\n);\n\n/**\n * Loading indicator component that gets current pull distance in pixels as context\n */\nexport const TUI_PULL_TO_REFRESH_COMPONENT = new InjectionToken<\n PolymorpheusContent<TuiContext<number>>\n>(ngDevMode ? 'TUI_PULL_TO_REFRESH_COMPONENT' : '', {\n factory: () => (inject(WA_IS_IOS) ? TUI_IOS_LOADER : TUI_ANDROID_LOADER),\n});\n","import {type ElementRef, inject, Injectable} from '@angular/core';\nimport {\n tuiScrollFrom,\n tuiTypedFromEvent,\n tuiZonefreeScheduler,\n tuiZoneOptimized,\n} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core/components/scrollbar';\nimport {\n debounceTime,\n distinctUntilChanged,\n EMPTY,\n endWith,\n filter,\n map,\n Observable,\n scan,\n share,\n startWith,\n switchMap,\n takeUntil,\n takeWhile,\n tap,\n} from 'rxjs';\n\nimport {\n TUI_PULL_TO_REFRESH_COMPONENT,\n TUI_PULL_TO_REFRESH_LOADED,\n TUI_PULL_TO_REFRESH_THRESHOLD,\n} from './pull-to-refresh.providers';\n\nexport const MICRO_OFFSET = 10 ** -6;\n\nconst EXCLUSION_SELECTORS =\n 'tui-dialog, tui-sheet-dialog, tui-dropdown, tui-dropdown-mobile';\n\n@Injectable()\nexport class TuiPullToRefreshService extends Observable<number> {\n private readonly el = tuiInjectElement();\n private readonly scrollRef: ElementRef<HTMLElement> = inject(TUI_SCROLL_REF);\n private readonly loaded$ = inject(TUI_PULL_TO_REFRESH_LOADED);\n private readonly threshold = inject(TUI_PULL_TO_REFRESH_THRESHOLD);\n\n // Hack for iOS to determine if pulling stopped due to scroll\n // because Safari does not support `touch-action: pan-down`\n private touched = false;\n\n private readonly pulling$ = inject(TUI_PULL_TO_REFRESH_COMPONENT)\n ? this.loaded$.pipe(\n startWith(null),\n switchMap(() =>\n tuiTypedFromEvent(this.el, 'touchstart', {passive: true}).pipe(\n filter(\n () =>\n !this.scrollRef.nativeElement.scrollTop &&\n !this.el.querySelector(EXCLUSION_SELECTORS),\n ),\n map(({touches}) => touches[0]?.clientY ?? 0),\n switchMap((start) =>\n tuiTypedFromEvent(this.el, 'touchmove').pipe(\n tap((): void => {\n this.touched = true;\n }),\n map(({touches}) => (touches[0]?.clientY ?? 0) - start),\n filter((distance) => distance > 0),\n takeUntil(\n tuiTypedFromEvent(this.el, 'touchend').pipe(\n tap((): void => {\n this.touched = false;\n }),\n ),\n ),\n takeUntil(tuiScrollFrom(this.scrollRef.nativeElement)),\n endWith(0),\n ),\n ),\n scan(\n (prev, current) =>\n !current && !this.touched && prev > this.threshold\n ? this.threshold\n : current + current * MICRO_OFFSET,\n 0,\n ),\n takeWhile((distance) => distance !== this.threshold, true),\n startWith(0),\n ),\n ),\n debounceTime(0, tuiZonefreeScheduler()),\n distinctUntilChanged(),\n tuiZoneOptimized(),\n share(),\n )\n : EMPTY;\n\n constructor() {\n super((subscriber) => this.pulling$.subscribe(subscriber));\n }\n}\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {injectContext, PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TUI_PULL_TO_REFRESH_THRESHOLD} from '../pull-to-refresh.providers';\nimport {MICRO_OFFSET} from '../pull-to-refresh.service';\n\nconst ROTATE_X_DEFAULT = 180;\nconst ROTATE_X_MAX = 500;\nconst ROTATE_X_MULTIPLIER = 2.3;\n\n@Component({\n selector: 'tui-mobile-android-loader',\n imports: [TuiLoader],\n templateUrl: './loader-android.template.html',\n styleUrl: './loader-android.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._dropped]': 'dropped',\n '[class._visible]': 'percent',\n '[style.transform]': 'hostTransform',\n },\n})\nexport class TuiMobileLoaderAndroid {\n private readonly context = injectContext<TuiContext<number>>();\n private readonly threshold = inject(TUI_PULL_TO_REFRESH_THRESHOLD);\n\n protected get percent(): number {\n return (this.context.$implicit * 100) / this.threshold;\n }\n\n protected get dropped(): boolean {\n return (\n this.context.$implicit <= MICRO_OFFSET ||\n this.context.$implicit === this.threshold\n );\n }\n\n protected get hostTransform(): string {\n return `translateY(${Math.min(this.context.$implicit, this.threshold * 1.5)}px)`;\n }\n\n protected get opacity(): number {\n return this.context.$implicit / (this.threshold * 1.5);\n }\n\n protected get transform(): string {\n const rotateX = Math.min(\n ROTATE_X_DEFAULT + this.percent * ROTATE_X_MULTIPLIER,\n ROTATE_X_MAX,\n );\n\n return `rotate(${rotateX} 0 0)`;\n }\n}\n\nexport const TUI_ANDROID_LOADER = new PolymorpheusComponent(TuiMobileLoaderAndroid);\n","<div class=\"t-wrapper\">\n @if (percent !== 100) {\n <svg\n fill=\"none\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.transform]=\"transform\"\n [style.opacity]=\"opacity\"\n >\n <defs>\n <mask id=\"mask-1\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"white\"\n fill-rule=\"evenodd\"\n />\n </mask>\n </defs>\n <g mask=\"url(#mask-1)\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"black\"\n fill-rule=\"evenodd\"\n />\n </g>\n </svg>\n } @else {\n <tui-loader\n size=\"s\"\n class=\"t-loader\"\n [inheritColor]=\"true\"\n />\n }\n</div>\n","import {ChangeDetectionStrategy, Component, computed, inject, input} from '@angular/core';\nimport {\n outputFromObservable,\n takeUntilDestroyed,\n toSignal,\n} from '@angular/core/rxjs-interop';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {tuiScrollFrom, tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {type TuiContext, type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core/components/scrollbar';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {distinctUntilChanged, filter, map, startWith} from 'rxjs';\n\nimport {\n TUI_PULL_TO_REFRESH_COMPONENT,\n TUI_PULL_TO_REFRESH_THRESHOLD,\n} from './pull-to-refresh.providers';\nimport {MICRO_OFFSET, TuiPullToRefreshService} from './pull-to-refresh.service';\n\n@Component({\n selector: 'tui-pull-to-refresh',\n imports: [PolymorpheusOutlet],\n templateUrl: './pull-to-refresh.template.html',\n styleUrl: './pull-to-refresh.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiPullToRefreshService],\n})\nexport class TuiPullToRefresh {\n private readonly isIOS = inject(WA_IS_IOS);\n private readonly threshold = inject(TUI_PULL_TO_REFRESH_THRESHOLD);\n private readonly service = inject(TuiPullToRefreshService);\n private readonly el = inject(TUI_SCROLL_REF);\n\n protected readonly pulling = toSignal(this.service, {initialValue: 0});\n\n protected readonly component = inject<PolymorpheusContent<TuiContext<number>>>(\n TUI_PULL_TO_REFRESH_COMPONENT,\n );\n\n protected readonly style = computed(() => this.styleHandler()(this.pulling()));\n\n protected readonly dropped = toSignal(\n this.service.pipe(\n map((distance) => distance <= MICRO_OFFSET || distance === this.threshold),\n distinctUntilChanged(),\n ),\n );\n\n public readonly styleHandler = input<\n TuiHandler<number, Record<string, unknown> | null>\n >(this.isIOS ? (distance) => ({top: tuiPx(distance / 2)}) : () => null);\n\n public readonly pulled = outputFromObservable(\n this.service.pipe(filter((distance) => distance === this.threshold)),\n );\n\n constructor() {\n if (this.component) {\n tuiScrollFrom(this.el.nativeElement)\n .pipe(startWith(null), tuiZonefree(), takeUntilDestroyed())\n .subscribe(() => {\n this.el.nativeElement.style.setProperty(\n 'touch-action',\n this.el.nativeElement.scrollTop ? '' : 'pan-down',\n );\n });\n }\n }\n}\n","<ng-container *polymorpheusOutlet=\"component; context: {$implicit: pulling()}\" />\n\n<div\n [class.t-drop]=\"dropped()\"\n [style.position]=\"'relative'\"\n [style]=\"style()\"\n>\n <ng-content />\n</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-pull-to-refresh.mjs","sources":["../../../projects/addon-mobile/components/pull-to-refresh/loader-ios/loader-ios.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-ios/loader-ios.template.html","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.providers.ts","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.service.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-android/loader-android.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-android/loader-android.template.html","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.template.html","../../../projects/addon-mobile/components/pull-to-refresh/taiga-ui-addon-mobile-components-pull-to-refresh.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {injectContext, PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TUI_PULL_TO_REFRESH_THRESHOLD} from '../pull-to-refresh.providers';\n\nconst LOADED_STEP = 8;\nconst ROTATE_X_STEP = 30;\n\n@Component({\n selector: 'tui-mobile-ios-loader',\n templateUrl: './loader-ios.template.html',\n styleUrl: './loader-ios.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiMobileLoaderIOS {\n private readonly context = injectContext<TuiContext<number>>();\n private readonly threshold = inject(TUI_PULL_TO_REFRESH_THRESHOLD);\n\n protected readonly steps = 12;\n\n protected get finished(): boolean {\n return this.percent >= 100;\n }\n\n protected get percent(): number {\n return (this.context.$implicit * 100) / this.threshold;\n }\n\n protected isShown(index: number): boolean {\n return this.percent > (index + 1) * LOADED_STEP;\n }\n\n protected calculateTransform(index: number): string {\n return `rotate(${index * ROTATE_X_STEP} 50 50)`;\n }\n\n protected calculateAnimationBegin(index: number): string {\n return `${(index * LOADED_STEP) / 100}s`;\n }\n}\n\nexport const TUI_IOS_LOADER = new PolymorpheusComponent(TuiMobileLoaderIOS);\n","<svg\n height=\"36\"\n preserveAspectRatio=\"xMidYMid\"\n viewBox=\"0 0 100 100\"\n width=\"36\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n @for (_ of '-'.repeat(steps); track $index) {\n @if (isShown($index)) {\n <g [attr.transform]=\"calculateTransform($index)\">\n <rect\n fill=\"#c7c9cc\"\n height=\"16\"\n rx=\"7.05\"\n ry=\"3.3\"\n width=\"6\"\n x=\"47\"\n y=\"22\"\n >\n @if (finished) {\n <animate\n attributeName=\"opacity\"\n dur=\"1s\"\n keyTimes=\"0;1\"\n repeatCount=\"indefinite\"\n values=\"1;0\"\n [attr.begin]=\"calculateAnimationBegin($index)\"\n />\n }\n </rect>\n </g>\n }\n }\n</svg>\n","import {inject, InjectionToken} from '@angular/core';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {EMPTY, type Observable} from 'rxjs';\n\nimport {TUI_ANDROID_LOADER} from './loader-android/loader-android.component';\nimport {TUI_IOS_LOADER} from './loader-ios/loader-ios.component';\n\n/**\n * Stream that emits when loading is over\n */\nexport const TUI_PULL_TO_REFRESH_LOADED = new InjectionToken<Observable<unknown>>(\n ngDevMode ? 'TUI_PULL_TO_REFRESH_LOADED' : '',\n {factory: () => EMPTY},\n);\n\n/**\n * Pull threshold in pixels until loading starts\n */\nexport const TUI_PULL_TO_REFRESH_THRESHOLD = new InjectionToken(\n ngDevMode ? 'TUI_PULL_TO_REFRESH_THRESHOLD' : '',\n {factory: () => 50},\n);\n\n/**\n * Loading indicator component that gets current pull distance in pixels as context\n */\nexport const TUI_PULL_TO_REFRESH_COMPONENT = new InjectionToken<\n PolymorpheusContent<TuiContext<number>>\n>(ngDevMode ? 'TUI_PULL_TO_REFRESH_COMPONENT' : '', {\n factory: () => (inject(WA_IS_IOS) ? TUI_IOS_LOADER : TUI_ANDROID_LOADER),\n});\n","import {type ElementRef, inject, Injectable} from '@angular/core';\nimport {\n tuiScrollFrom,\n tuiTypedFromEvent,\n tuiZonefreeScheduler,\n tuiZoneOptimized,\n} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core/components/scrollbar';\nimport {\n debounceTime,\n distinctUntilChanged,\n EMPTY,\n endWith,\n filter,\n map,\n Observable,\n scan,\n share,\n startWith,\n switchMap,\n takeUntil,\n takeWhile,\n tap,\n} from 'rxjs';\n\nimport {\n TUI_PULL_TO_REFRESH_COMPONENT,\n TUI_PULL_TO_REFRESH_LOADED,\n TUI_PULL_TO_REFRESH_THRESHOLD,\n} from './pull-to-refresh.providers';\n\nexport const MICRO_OFFSET = 10 ** -6;\n\nconst EXCLUSION_SELECTORS =\n 'tui-dialog, tui-sheet-dialog, tui-dropdown, tui-dropdown-mobile';\n\n@Injectable()\nexport class TuiPullToRefreshService extends Observable<number> {\n private readonly el = tuiInjectElement();\n private readonly scrollRef: ElementRef<HTMLElement> = inject(TUI_SCROLL_REF);\n private readonly loaded$ = inject(TUI_PULL_TO_REFRESH_LOADED);\n private readonly threshold = inject(TUI_PULL_TO_REFRESH_THRESHOLD);\n\n // Hack for iOS to determine if pulling stopped due to scroll\n // because Safari does not support `touch-action: pan-down`\n private touched = false;\n\n private readonly pulling$ = inject(TUI_PULL_TO_REFRESH_COMPONENT)\n ? this.loaded$.pipe(\n startWith(null),\n switchMap(() =>\n tuiTypedFromEvent(this.el, 'touchstart', {passive: true}).pipe(\n filter(\n () =>\n !this.scrollRef.nativeElement.scrollTop &&\n !this.el.querySelector(EXCLUSION_SELECTORS),\n ),\n map(({touches}) => touches[0]?.clientY ?? 0),\n switchMap((start) =>\n tuiTypedFromEvent(this.el, 'touchmove').pipe(\n tap((): void => {\n this.touched = true;\n }),\n map(({touches}) => (touches[0]?.clientY ?? 0) - start),\n filter((distance) => distance > 0),\n takeUntil(\n tuiTypedFromEvent(this.el, 'touchend').pipe(\n tap((): void => {\n this.touched = false;\n }),\n ),\n ),\n takeUntil(tuiScrollFrom(this.scrollRef.nativeElement)),\n endWith(0),\n ),\n ),\n scan(\n (prev, current) =>\n !current && !this.touched && prev > this.threshold\n ? this.threshold\n : current + current * MICRO_OFFSET,\n 0,\n ),\n takeWhile((distance) => distance !== this.threshold, true),\n startWith(0),\n ),\n ),\n debounceTime(0, tuiZonefreeScheduler()),\n distinctUntilChanged(),\n tuiZoneOptimized(),\n share(),\n )\n : EMPTY;\n\n constructor() {\n super((subscriber) => this.pulling$.subscribe(subscriber));\n }\n}\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {injectContext, PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TUI_PULL_TO_REFRESH_THRESHOLD} from '../pull-to-refresh.providers';\nimport {MICRO_OFFSET} from '../pull-to-refresh.service';\n\nconst ROTATE_X_DEFAULT = 180;\nconst ROTATE_X_MAX = 500;\nconst ROTATE_X_MULTIPLIER = 2.3;\n\n@Component({\n selector: 'tui-mobile-android-loader',\n imports: [TuiLoader],\n templateUrl: './loader-android.template.html',\n styleUrl: './loader-android.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._dropped]': 'dropped',\n '[class._visible]': 'percent',\n '[style.transform]': 'hostTransform',\n },\n})\nexport class TuiMobileLoaderAndroid {\n private readonly context = injectContext<TuiContext<number>>();\n private readonly threshold = inject(TUI_PULL_TO_REFRESH_THRESHOLD);\n\n protected get percent(): number {\n return (this.context.$implicit * 100) / this.threshold;\n }\n\n protected get dropped(): boolean {\n return (\n this.context.$implicit <= MICRO_OFFSET ||\n this.context.$implicit === this.threshold\n );\n }\n\n protected get hostTransform(): string {\n return `translateY(${Math.min(this.context.$implicit, this.threshold * 1.5)}px)`;\n }\n\n protected get opacity(): number {\n return this.context.$implicit / (this.threshold * 1.5);\n }\n\n protected get transform(): string {\n const rotateX = Math.min(\n ROTATE_X_DEFAULT + this.percent * ROTATE_X_MULTIPLIER,\n ROTATE_X_MAX,\n );\n\n return `rotate(${rotateX} 0 0)`;\n }\n}\n\nexport const TUI_ANDROID_LOADER = new PolymorpheusComponent(TuiMobileLoaderAndroid);\n","<div class=\"t-wrapper\">\n @if (percent !== 100) {\n <svg\n fill=\"none\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.transform]=\"transform\"\n [style.opacity]=\"opacity\"\n >\n <defs>\n <mask id=\"mask-1\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"white\"\n fill-rule=\"evenodd\"\n />\n </mask>\n </defs>\n <g mask=\"url(#mask-1)\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"black\"\n fill-rule=\"evenodd\"\n />\n </g>\n </svg>\n } @else {\n <tui-loader\n size=\"s\"\n class=\"t-loader\"\n [inheritColor]=\"true\"\n />\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n type OnDestroy,\n} from '@angular/core';\nimport {\n outputFromObservable,\n takeUntilDestroyed,\n toSignal,\n} from '@angular/core/rxjs-interop';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {tuiScrollFrom, tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {type TuiContext, type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core/components/scrollbar';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {distinctUntilChanged, filter, map, startWith} from 'rxjs';\n\nimport {\n TUI_PULL_TO_REFRESH_COMPONENT,\n TUI_PULL_TO_REFRESH_THRESHOLD,\n} from './pull-to-refresh.providers';\nimport {MICRO_OFFSET, TuiPullToRefreshService} from './pull-to-refresh.service';\n\n@Component({\n selector: 'tui-pull-to-refresh',\n imports: [PolymorpheusOutlet],\n templateUrl: './pull-to-refresh.template.html',\n styleUrl: './pull-to-refresh.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiPullToRefreshService],\n})\nexport class TuiPullToRefresh implements OnDestroy {\n private readonly isIOS = inject(WA_IS_IOS);\n private readonly threshold = inject(TUI_PULL_TO_REFRESH_THRESHOLD);\n private readonly service = inject(TuiPullToRefreshService);\n private readonly el = inject(TUI_SCROLL_REF);\n\n protected readonly pulling = toSignal(this.service, {initialValue: 0});\n\n protected readonly component = inject<PolymorpheusContent<TuiContext<number>>>(\n TUI_PULL_TO_REFRESH_COMPONENT,\n );\n\n protected readonly style = computed(() => this.styleHandler()(this.pulling()));\n\n protected readonly dropped = toSignal(\n this.service.pipe(\n map((distance) => distance <= MICRO_OFFSET || distance === this.threshold),\n distinctUntilChanged(),\n ),\n );\n\n public readonly styleHandler = input<\n TuiHandler<number, Record<string, unknown> | null>\n >(this.isIOS ? (distance) => ({top: tuiPx(distance / 2)}) : () => null);\n\n public readonly pulled = outputFromObservable(\n this.service.pipe(filter((distance) => distance === this.threshold)),\n );\n\n constructor() {\n if (this.component) {\n tuiScrollFrom(this.el.nativeElement)\n .pipe(startWith(null), tuiZonefree(), takeUntilDestroyed())\n .subscribe(() => {\n const {style, scrollTop} = this.el.nativeElement;\n\n style.setProperty('touch-action', scrollTop > 0 ? '' : 'pan-down');\n style.setProperty('overscroll-behavior', scrollTop > 0 ? '' : 'none');\n });\n }\n }\n\n public ngOnDestroy(): void {\n this.el.nativeElement.style.removeProperty('touch-action');\n this.el.nativeElement.style.removeProperty('overscroll-behavior');\n }\n}\n","<ng-container *polymorpheusOutlet=\"component; context: {$implicit: pulling()}\" />\n\n<div\n [class.t-drop]=\"dropped()\"\n [style.position]=\"'relative'\"\n [style]=\"style()\"\n>\n <ng-content />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -5,17 +5,18 @@ import { TUI_TRUE_HANDLER } from '@taiga-ui/cdk/constants';
5
5
  import * as i1 from '@taiga-ui/cdk/directives/animated';
6
6
  import { TuiAnimated } from '@taiga-ui/cdk/directives/animated';
7
7
  import { tuiCloseWatcher, tuiZonefull } from '@taiga-ui/cdk/observables';
8
- import { tuiProvide, tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
9
8
  import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
10
9
  import { TuiButton } from '@taiga-ui/core/components/button';
11
- import { TUI_SCROLL_REF } from '@taiga-ui/core/components/scrollbar';
10
+ import * as i2 from '@taiga-ui/core/components/scrollbar';
11
+ import { TuiScrollRef } from '@taiga-ui/core/components/scrollbar';
12
12
  import { TUI_DIALOGS_CLOSE } from '@taiga-ui/core/portals/dialog';
13
13
  import { injectContext, PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
14
14
  import { Subject, merge, map, exhaustMap, isObservable, take, of, filter } from 'rxjs';
15
15
  import * as i1$1 from '@taiga-ui/cdk/portals';
16
16
  import { tuiAsPortal, TuiPortalDirective } from '@taiga-ui/cdk/portals';
17
- import { TuiThemeColorService } from '@taiga-ui/addon-mobile/services';
17
+ import { Meta } from '@angular/platform-browser';
18
18
  import { TuiModalService } from '@taiga-ui/core/portals/modal';
19
+ import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
19
20
 
20
21
  const REQUIRED_ERROR = new Error(ngDevMode ? 'Required dialog was dismissed' : '');
21
22
  class TuiSheetDialogComponent {
@@ -62,11 +63,11 @@ class TuiSheetDialogComponent {
62
63
  }
63
64
  }
64
65
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiSheetDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiSheetDialogComponent, isStandalone: true, selector: "tui-sheet-dialog", host: { listeners: { "click.self": "close$.next()", "document:touchcancel.zoneless": "onPointerChange(-1)", "document:touchend.zoneless": "onPointerChange(-1)", "document:touchstart.passive.zoneless": "onPointerChange(1)", "scroll.zoneless": "onPointerChange(0)" }, properties: { "attr.data-appearance": "context.appearance", "class._bar": "context.bar", "class._closeable": "context.closable", "style.--tui-offset.px": "context.offset" } }, providers: [tuiProvide(TUI_SCROLL_REF, ElementRef)], viewQueries: [{ propertyName: "stops", predicate: ["stops"], descendants: true, read: ElementRef, isSignal: true }], hostDirectives: [{ directive: i1.TuiAnimated }], ngImport: i0, template: "<div class=\"t-stops\">\n @for (stop of context.stops; track stop) {\n <div\n #stops\n class=\"t-stop\"\n [style.margin-block-start]=\"stop\"\n ></div>\n }\n</div>\n<div class=\"t-sheet\">\n <div class=\"t-bar\"></div>\n <div class=\"t-content\">\n @if (context.label) {\n <header\n [id]=\"context.id\"\n [innerHTML]=\"context.label\"\n ></header>\n }\n <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n <div [innerHTML]=\"text\"></div>\n @if (context.closable) {\n <footer>\n <button\n tuiButton\n type=\"button\"\n (click)=\"context.$implicit.complete()\"\n >\n {{ context.data || 'OK' }}\n </button>\n </footer>\n }\n </ng-container>\n </div>\n</div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:sticky;display:flex;inset-inline-start:0;inline-size:100%;max-inline-size:40rem;block-size:calc(100% - max(var(--tui-offset),env(safe-area-inset-top)));flex-direction:column;font:var(--tui-typography-body-m);overflow-y:scroll;overscroll-behavior:none;scroll-snap-type:y mandatory;margin:max(var(--tui-offset),env(safe-area-inset-top)) auto 0;border-radius:.75rem .75rem 0 0;box-shadow:0 5rem var(--tui-background-elevation-1);--t-top: 0}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}@supports (-webkit-touch-callout: none){:host{overscroll-behavior:contain}}:host.tui-enter,:host.tui-leave{animation-name:tuiSlide;animation-timing-function:var(--tui-curve-expressive-exit)}:host.tui-enter{animation-duration:calc(var(--tui-duration) / .6);animation-timing-function:var(--tui-curve-expressive-entrance)}:host:before{position:fixed;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;content:\"\";z-index:-1}:host._bar{--t-top: 1.5rem}:host._bar .t-bar{display:block}:host._closeable{display:block}:host._closeable .t-stops{display:flex}:host[data-appearance~=fullscreen]{display:block}:host[data-appearance~=fullscreen] .t-sheet{min-block-size:100%}:host ::ng-deep tui-data-list[data-size]{padding:0}:host ::ng-deep tui-data-list[data-size] [tuiOption][data-size]{box-sizing:content-box;margin-inline:-.5rem;padding-inline:.5rem}.t-stops{display:none;block-size:100%;scroll-snap-stop:always;scroll-snap-align:start;pointer-events:none}.t-stop{position:relative;inset-block-start:env(safe-area-inset-bottom);scroll-snap-stop:normal;scroll-snap-align:start;block-size:1rem;inline-size:1rem}.t-sheet{display:flex;inline-size:100%;flex-direction:column;box-shadow:var(--tui-shadow-small);border-radius:inherit;padding:0 1rem;margin-block-start:auto;background:var(--tui-background-elevation-1);box-sizing:border-box;scroll-snap-stop:always;scroll-snap-align:start}.t-bar{position:sticky;z-index:1;display:none;inset-block-start:0;block-size:1.5rem;margin:0 -1rem;border-radius:inherit;background:var(--tui-background-elevation-1)}.t-bar:after{position:absolute;left:50%;transform:translate(-50%);content:\"\";inset-block-start:.5rem;inline-size:2rem;block-size:.25rem;background:var(--tui-border-normal);border-radius:1rem}.t-content{position:relative;display:flex;flex-direction:column;flex-grow:1;border-radius:inherit;isolation:isolate;padding-block-end:max(1.5rem,env(safe-area-inset-bottom))}.t-content:after{content:\"\";position:relative;z-index:-1;display:block;inset-block-start:max(1.5rem,env(safe-area-inset-bottom));scroll-snap-stop:always;scroll-snap-align:end;border-image:conic-gradient(var(--tui-background-elevation-1) 0 0) fill 0/0/0 100vh 100vh}* ::ng-deep>header,* ::ng-deep>[tuiSlides]>*>header,* ::ng-deep>ng-component>header,* ::ng-deep>ng-component>[tuiSlides]>*>header{position:sticky;z-index:1;inset-block-start:var(--t-top);margin:0 -1rem;padding:.75rem 1rem;border-radius:inherit;background:var(--tui-background-elevation-1);font:var(--tui-typography-heading-h6)}* ::ng-deep>footer:not([tuiFloatingContainer]),* ::ng-deep>[tuiSlides]>*>footer:not([tuiFloatingContainer]),* ::ng-deep>ng-component>footer:not([tuiFloatingContainer]),* ::ng-deep>ng-component>[tuiSlides]>*>footer:not([tuiFloatingContainer]){display:flex;flex-direction:column-reverse;gap:.5rem;margin-block-start:1rem}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
66
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiSheetDialogComponent, isStandalone: true, selector: "tui-sheet-dialog", host: { listeners: { "click.self": "close$.next()", "document:touchcancel.zoneless": "onPointerChange(-1)", "document:touchend.zoneless": "onPointerChange(-1)", "document:touchstart.passive.zoneless": "onPointerChange(1)", "scroll.zoneless": "onPointerChange(0)" }, properties: { "attr.data-appearance": "context.appearance", "class._bar": "context.bar", "class._closeable": "context.closable", "style.--tui-offset.px": "context.offset" } }, viewQueries: [{ propertyName: "stops", predicate: ["stops"], descendants: true, read: ElementRef, isSignal: true }], hostDirectives: [{ directive: i1.TuiAnimated }, { directive: i2.TuiScrollRef }], ngImport: i0, template: "<div class=\"t-stops\">\n @for (stop of context.stops; track stop) {\n <div\n #stops\n class=\"t-stop\"\n [style.margin-block-start]=\"stop\"\n ></div>\n }\n</div>\n<div class=\"t-sheet\">\n <div class=\"t-bar\"></div>\n <div class=\"t-content\">\n @if (context.label) {\n <header\n [id]=\"context.id\"\n [innerHTML]=\"context.label\"\n ></header>\n }\n <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n <div [innerHTML]=\"text\"></div>\n @if (context.closable) {\n <footer>\n <button\n tuiButton\n type=\"button\"\n (click)=\"context.$implicit.complete()\"\n >\n {{ context.data || 'OK' }}\n </button>\n </footer>\n }\n </ng-container>\n </div>\n</div>\n", styles: [":host{position:sticky;display:flex;inset-inline-start:0;inline-size:100%;max-inline-size:40rem;block-size:calc(100% - max(var(--tui-offset),env(safe-area-inset-top)));flex-direction:column;font:var(--tui-typography-body-m);overflow-y:scroll;overscroll-behavior:none;scroll-snap-type:y mandatory;margin:max(var(--tui-offset),env(safe-area-inset-top)) auto 0;border-radius:.75rem .75rem 0 0;box-shadow:0 5rem var(--tui-background-elevation-1);--t-top: 0}@supports (-webkit-touch-callout: none){:host{overscroll-behavior:contain}}:host.tui-enter,:host.tui-leave{animation-name:tuiSlide;animation-timing-function:var(--tui-curve-expressive-exit)}:host.tui-enter{animation-duration:calc(var(--tui-duration) / .6);animation-timing-function:var(--tui-curve-expressive-standard)}:host:before{position:fixed;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;content:\"\";z-index:-1}:host._bar{--t-top: 1.5rem}:host._bar .t-bar{display:block}:host._closeable{display:block}:host._closeable .t-stops{display:flex}:host[data-appearance~=fullscreen]{display:block}:host[data-appearance~=fullscreen] .t-sheet{min-block-size:100%}:host ::ng-deep tui-data-list[data-size]{padding:0}:host ::ng-deep tui-data-list[data-size] [tuiOption][data-size]{box-sizing:content-box;margin-inline:-.5rem;padding-inline:.5rem}.t-stops{display:none;block-size:100%;scroll-snap-stop:always;scroll-snap-align:start;pointer-events:none}.t-stop{position:relative;inset-block-start:env(safe-area-inset-bottom);scroll-snap-stop:normal;scroll-snap-align:start;block-size:1rem;inline-size:1rem}.t-sheet{display:flex;inline-size:100%;flex-direction:column;box-shadow:var(--tui-shadow-small);border-radius:inherit;padding:0 1rem;margin-block-start:auto;background:var(--tui-background-elevation-1);box-sizing:border-box;scroll-snap-stop:always;scroll-snap-align:start}.t-bar{position:sticky;z-index:1;display:none;inset-block-start:0;block-size:1.5rem;margin:0 -1rem;border-radius:inherit;background:var(--tui-background-elevation-1)}.t-bar:after{position:absolute;left:50%;transform:translate(-50%);content:\"\";inset-block-start:.5rem;inline-size:2rem;block-size:.25rem;background:var(--tui-border-normal);border-radius:1rem}.t-content{position:relative;display:flex;flex-direction:column;flex-grow:1;border-radius:inherit;isolation:isolate;padding-block-end:max(1.5rem,env(safe-area-inset-bottom))}.t-content:after{content:\"\";position:relative;z-index:-1;display:block;inset-block-start:max(1.5rem,env(safe-area-inset-bottom));scroll-snap-stop:always;scroll-snap-align:end;border-image:conic-gradient(var(--tui-background-elevation-1) 0 0) fill 0/0/0 100vh 100vh}* ::ng-deep>header,* ::ng-deep>[tuiSlides]>*>header,* ::ng-deep>ng-component>header,* ::ng-deep>ng-component>[tuiSlides]>*>header{position:sticky;z-index:1;inset-block-start:var(--t-top);margin:0 -1rem;padding:.75rem 1rem;border-radius:inherit;background:var(--tui-background-elevation-1);font:var(--tui-typography-heading-h6)}* ::ng-deep>footer:not([tuiFloatingContainer]),* ::ng-deep>[tuiSlides]>*>footer:not([tuiFloatingContainer]),* ::ng-deep>ng-component>footer:not([tuiFloatingContainer]),* ::ng-deep>ng-component>[tuiSlides]>*>footer:not([tuiFloatingContainer]){display:flex;flex-direction:column-reverse;gap:.5rem;margin-block-start:1rem}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
66
67
  }
67
68
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiSheetDialogComponent, decorators: [{
68
69
  type: Component,
69
- args: [{ selector: 'tui-sheet-dialog', imports: [PolymorpheusOutlet, TuiButton], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiProvide(TUI_SCROLL_REF, ElementRef)], hostDirectives: [TuiAnimated], host: {
70
+ args: [{ selector: 'tui-sheet-dialog', imports: [PolymorpheusOutlet, TuiButton], changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [TuiAnimated, TuiScrollRef], host: {
70
71
  '[attr.data-appearance]': 'context.appearance',
71
72
  '[class._bar]': 'context.bar',
72
73
  '[class._closeable]': 'context.closable',
@@ -76,7 +77,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
76
77
  '(document:touchend.zoneless)': 'onPointerChange(-1)',
77
78
  '(document:touchstart.passive.zoneless)': 'onPointerChange(1)',
78
79
  '(scroll.zoneless)': 'onPointerChange(0)',
79
- }, template: "<div class=\"t-stops\">\n @for (stop of context.stops; track stop) {\n <div\n #stops\n class=\"t-stop\"\n [style.margin-block-start]=\"stop\"\n ></div>\n }\n</div>\n<div class=\"t-sheet\">\n <div class=\"t-bar\"></div>\n <div class=\"t-content\">\n @if (context.label) {\n <header\n [id]=\"context.id\"\n [innerHTML]=\"context.label\"\n ></header>\n }\n <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n <div [innerHTML]=\"text\"></div>\n @if (context.closable) {\n <footer>\n <button\n tuiButton\n type=\"button\"\n (click)=\"context.$implicit.complete()\"\n >\n {{ context.data || 'OK' }}\n </button>\n </footer>\n }\n </ng-container>\n </div>\n</div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:sticky;display:flex;inset-inline-start:0;inline-size:100%;max-inline-size:40rem;block-size:calc(100% - max(var(--tui-offset),env(safe-area-inset-top)));flex-direction:column;font:var(--tui-typography-body-m);overflow-y:scroll;overscroll-behavior:none;scroll-snap-type:y mandatory;margin:max(var(--tui-offset),env(safe-area-inset-top)) auto 0;border-radius:.75rem .75rem 0 0;box-shadow:0 5rem var(--tui-background-elevation-1);--t-top: 0}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}@supports (-webkit-touch-callout: none){:host{overscroll-behavior:contain}}:host.tui-enter,:host.tui-leave{animation-name:tuiSlide;animation-timing-function:var(--tui-curve-expressive-exit)}:host.tui-enter{animation-duration:calc(var(--tui-duration) / .6);animation-timing-function:var(--tui-curve-expressive-entrance)}:host:before{position:fixed;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;content:\"\";z-index:-1}:host._bar{--t-top: 1.5rem}:host._bar .t-bar{display:block}:host._closeable{display:block}:host._closeable .t-stops{display:flex}:host[data-appearance~=fullscreen]{display:block}:host[data-appearance~=fullscreen] .t-sheet{min-block-size:100%}:host ::ng-deep tui-data-list[data-size]{padding:0}:host ::ng-deep tui-data-list[data-size] [tuiOption][data-size]{box-sizing:content-box;margin-inline:-.5rem;padding-inline:.5rem}.t-stops{display:none;block-size:100%;scroll-snap-stop:always;scroll-snap-align:start;pointer-events:none}.t-stop{position:relative;inset-block-start:env(safe-area-inset-bottom);scroll-snap-stop:normal;scroll-snap-align:start;block-size:1rem;inline-size:1rem}.t-sheet{display:flex;inline-size:100%;flex-direction:column;box-shadow:var(--tui-shadow-small);border-radius:inherit;padding:0 1rem;margin-block-start:auto;background:var(--tui-background-elevation-1);box-sizing:border-box;scroll-snap-stop:always;scroll-snap-align:start}.t-bar{position:sticky;z-index:1;display:none;inset-block-start:0;block-size:1.5rem;margin:0 -1rem;border-radius:inherit;background:var(--tui-background-elevation-1)}.t-bar:after{position:absolute;left:50%;transform:translate(-50%);content:\"\";inset-block-start:.5rem;inline-size:2rem;block-size:.25rem;background:var(--tui-border-normal);border-radius:1rem}.t-content{position:relative;display:flex;flex-direction:column;flex-grow:1;border-radius:inherit;isolation:isolate;padding-block-end:max(1.5rem,env(safe-area-inset-bottom))}.t-content:after{content:\"\";position:relative;z-index:-1;display:block;inset-block-start:max(1.5rem,env(safe-area-inset-bottom));scroll-snap-stop:always;scroll-snap-align:end;border-image:conic-gradient(var(--tui-background-elevation-1) 0 0) fill 0/0/0 100vh 100vh}* ::ng-deep>header,* ::ng-deep>[tuiSlides]>*>header,* ::ng-deep>ng-component>header,* ::ng-deep>ng-component>[tuiSlides]>*>header{position:sticky;z-index:1;inset-block-start:var(--t-top);margin:0 -1rem;padding:.75rem 1rem;border-radius:inherit;background:var(--tui-background-elevation-1);font:var(--tui-typography-heading-h6)}* ::ng-deep>footer:not([tuiFloatingContainer]),* ::ng-deep>[tuiSlides]>*>footer:not([tuiFloatingContainer]),* ::ng-deep>ng-component>footer:not([tuiFloatingContainer]),* ::ng-deep>ng-component>[tuiSlides]>*>footer:not([tuiFloatingContainer]){display:flex;flex-direction:column-reverse;gap:.5rem;margin-block-start:1rem}\n"] }]
80
+ }, template: "<div class=\"t-stops\">\n @for (stop of context.stops; track stop) {\n <div\n #stops\n class=\"t-stop\"\n [style.margin-block-start]=\"stop\"\n ></div>\n }\n</div>\n<div class=\"t-sheet\">\n <div class=\"t-bar\"></div>\n <div class=\"t-content\">\n @if (context.label) {\n <header\n [id]=\"context.id\"\n [innerHTML]=\"context.label\"\n ></header>\n }\n <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n <div [innerHTML]=\"text\"></div>\n @if (context.closable) {\n <footer>\n <button\n tuiButton\n type=\"button\"\n (click)=\"context.$implicit.complete()\"\n >\n {{ context.data || 'OK' }}\n </button>\n </footer>\n }\n </ng-container>\n </div>\n</div>\n", styles: [":host{position:sticky;display:flex;inset-inline-start:0;inline-size:100%;max-inline-size:40rem;block-size:calc(100% - max(var(--tui-offset),env(safe-area-inset-top)));flex-direction:column;font:var(--tui-typography-body-m);overflow-y:scroll;overscroll-behavior:none;scroll-snap-type:y mandatory;margin:max(var(--tui-offset),env(safe-area-inset-top)) auto 0;border-radius:.75rem .75rem 0 0;box-shadow:0 5rem var(--tui-background-elevation-1);--t-top: 0}@supports (-webkit-touch-callout: none){:host{overscroll-behavior:contain}}:host.tui-enter,:host.tui-leave{animation-name:tuiSlide;animation-timing-function:var(--tui-curve-expressive-exit)}:host.tui-enter{animation-duration:calc(var(--tui-duration) / .6);animation-timing-function:var(--tui-curve-expressive-standard)}:host:before{position:fixed;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;content:\"\";z-index:-1}:host._bar{--t-top: 1.5rem}:host._bar .t-bar{display:block}:host._closeable{display:block}:host._closeable .t-stops{display:flex}:host[data-appearance~=fullscreen]{display:block}:host[data-appearance~=fullscreen] .t-sheet{min-block-size:100%}:host ::ng-deep tui-data-list[data-size]{padding:0}:host ::ng-deep tui-data-list[data-size] [tuiOption][data-size]{box-sizing:content-box;margin-inline:-.5rem;padding-inline:.5rem}.t-stops{display:none;block-size:100%;scroll-snap-stop:always;scroll-snap-align:start;pointer-events:none}.t-stop{position:relative;inset-block-start:env(safe-area-inset-bottom);scroll-snap-stop:normal;scroll-snap-align:start;block-size:1rem;inline-size:1rem}.t-sheet{display:flex;inline-size:100%;flex-direction:column;box-shadow:var(--tui-shadow-small);border-radius:inherit;padding:0 1rem;margin-block-start:auto;background:var(--tui-background-elevation-1);box-sizing:border-box;scroll-snap-stop:always;scroll-snap-align:start}.t-bar{position:sticky;z-index:1;display:none;inset-block-start:0;block-size:1.5rem;margin:0 -1rem;border-radius:inherit;background:var(--tui-background-elevation-1)}.t-bar:after{position:absolute;left:50%;transform:translate(-50%);content:\"\";inset-block-start:.5rem;inline-size:2rem;block-size:.25rem;background:var(--tui-border-normal);border-radius:1rem}.t-content{position:relative;display:flex;flex-direction:column;flex-grow:1;border-radius:inherit;isolation:isolate;padding-block-end:max(1.5rem,env(safe-area-inset-bottom))}.t-content:after{content:\"\";position:relative;z-index:-1;display:block;inset-block-start:max(1.5rem,env(safe-area-inset-bottom));scroll-snap-stop:always;scroll-snap-align:end;border-image:conic-gradient(var(--tui-background-elevation-1) 0 0) fill 0/0/0 100vh 100vh}* ::ng-deep>header,* ::ng-deep>[tuiSlides]>*>header,* ::ng-deep>ng-component>header,* ::ng-deep>ng-component>[tuiSlides]>*>header{position:sticky;z-index:1;inset-block-start:var(--t-top);margin:0 -1rem;padding:.75rem 1rem;border-radius:inherit;background:var(--tui-background-elevation-1);font:var(--tui-typography-heading-h6)}* ::ng-deep>footer:not([tuiFloatingContainer]),* ::ng-deep>[tuiSlides]>*>footer:not([tuiFloatingContainer]),* ::ng-deep>ng-component>footer:not([tuiFloatingContainer]),* ::ng-deep>ng-component>[tuiSlides]>*>footer:not([tuiFloatingContainer]){display:flex;flex-direction:column-reverse;gap:.5rem;margin-block-start:1rem}\n"] }]
80
81
  }] });
81
82
 
82
83
  const TUI_SHEET_DIALOG_DEFAULT_OPTIONS = {
@@ -89,31 +90,44 @@ const TUI_SHEET_DIALOG_DEFAULT_OPTIONS = {
89
90
  data: undefined,
90
91
  bar: true,
91
92
  required: false,
93
+ themeColor: '#404040',
92
94
  };
93
95
  /**
94
96
  * Default parameters for mobile dialog component
95
97
  */
96
98
  const [TUI_SHEET_DIALOG_OPTIONS, tuiSheetDialogOptionsProvider] = tuiCreateOptions(TUI_SHEET_DIALOG_DEFAULT_OPTIONS);
97
99
 
98
- const THEME = '#404040';
100
+ const THEME_COLOR = 'name="theme-color"';
99
101
  class TuiSheetDialogService extends TuiModalService {
100
102
  constructor() {
101
103
  super(...arguments);
102
- this.theme = inject(TuiThemeColorService);
103
- this.initial = this.theme.color;
104
+ this.meta = inject(Meta);
105
+ this.initial = '';
104
106
  this.count = 0;
105
107
  this.options = inject(TUI_SHEET_DIALOG_OPTIONS);
106
108
  this.content = TuiSheetDialogComponent;
107
109
  }
108
110
  add(component) {
109
- this.count++;
110
- this.theme.color = THEME;
111
+ // Read the live tag at open time, not at construction: a color set later
112
+ // (an app-level dark mode effect) would otherwise be lost on revert.
113
+ if (!this.count++ && this.options.themeColor) {
114
+ this.initial = this.meta.getTag(THEME_COLOR)?.content ?? '';
115
+ this.meta.updateTag({
116
+ name: 'theme-color',
117
+ content: this.options.themeColor,
118
+ });
119
+ }
111
120
  const cleanup = super.add(component);
112
121
  return () => {
113
122
  cleanup();
114
- this.count--;
115
- if (!this.count) {
116
- this.theme.color = this.initial;
123
+ if (--this.count || !this.options.themeColor) {
124
+ return;
125
+ }
126
+ if (this.initial) {
127
+ this.meta.updateTag({ name: 'theme-color', content: this.initial });
128
+ }
129
+ else {
130
+ this.meta.removeTag(THEME_COLOR);
117
131
  }
118
132
  };
119
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-components-sheet-dialog.mjs","sources":["../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.component.ts","../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.template.html","../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.options.ts","../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.service.ts","../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.directive.ts","../../../projects/addon-mobile/components/sheet-dialog/taiga-ui-addon-mobile-components-sheet-dialog.ts"],"sourcesContent":["import {\n type AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n viewChildren,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {tuiCloseWatcher, tuiZonefull} from '@taiga-ui/cdk/observables';\nimport {type TuiPortalContext} from '@taiga-ui/cdk/portals';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core/components/scrollbar';\nimport {TUI_DIALOGS_CLOSE} from '@taiga-ui/core/portals/dialog';\nimport {injectContext, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {exhaustMap, filter, isObservable, map, merge, of, Subject, take} from 'rxjs';\n\nimport {type TuiSheetDialogOptions} from './sheet-dialog.options';\n\nconst REQUIRED_ERROR = new Error(ngDevMode ? 'Required dialog was dismissed' : '');\n\n@Component({\n selector: 'tui-sheet-dialog',\n imports: [PolymorpheusOutlet, TuiButton],\n templateUrl: './sheet-dialog.template.html',\n styleUrl: './sheet-dialog.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiProvide(TUI_SCROLL_REF, ElementRef)],\n hostDirectives: [TuiAnimated],\n host: {\n '[attr.data-appearance]': 'context.appearance',\n '[class._bar]': 'context.bar',\n '[class._closeable]': 'context.closable',\n '[style.--tui-offset.px]': 'context.offset',\n '(click.self)': 'close$.next()',\n '(document:touchcancel.zoneless)': 'onPointerChange(-1)',\n '(document:touchend.zoneless)': 'onPointerChange(-1)',\n '(document:touchstart.passive.zoneless)': 'onPointerChange(1)',\n '(scroll.zoneless)': 'onPointerChange(0)',\n },\n})\nexport class TuiSheetDialogComponent<I> implements AfterViewInit {\n private readonly stops = viewChildren('stops', {read: ElementRef});\n private readonly el = tuiInjectElement();\n private pointers = 0;\n\n protected readonly context =\n injectContext<TuiPortalContext<TuiSheetDialogOptions<I>, any>>();\n\n protected readonly close$ = new Subject<void>();\n\n protected readonly $ = merge(\n this.close$,\n tuiCloseWatcher(),\n inject(TUI_DIALOGS_CLOSE).pipe(map(TUI_TRUE_HANDLER)),\n )\n .pipe(\n tuiZonefull(),\n exhaustMap(() => {\n if (isObservable(this.context.closable)) {\n if (this.el.scrollTop <= 0) {\n this.el.scrollTo({top: this.initial, behavior: 'smooth'});\n }\n\n return this.context.closable.pipe(take(1));\n }\n\n return of(this.context.closable);\n }),\n filter(Boolean),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.close());\n\n public ngAfterViewInit(): void {\n this.el.scrollTop = this.initial || 0;\n }\n\n protected onPointerChange(delta: number): void {\n this.pointers = Math.max(this.pointers + delta, 0);\n\n if (!this.pointers && this.el.scrollTop <= 0) {\n this.close$.next();\n }\n }\n\n private get initial(): number | undefined {\n return this.context.closable\n ? this.stops()\n .map((e) => e.nativeElement.offsetTop - this.context.offset)\n .concat(this.el.clientHeight ?? Infinity)[this.context.initial]\n : 0;\n }\n\n private close(): void {\n if (this.context.required) {\n this.context.$implicit.error(REQUIRED_ERROR);\n } else {\n this.context.$implicit.complete();\n }\n }\n}\n","<div class=\"t-stops\">\n @for (stop of context.stops; track stop) {\n <div\n #stops\n class=\"t-stop\"\n [style.margin-block-start]=\"stop\"\n ></div>\n }\n</div>\n<div class=\"t-sheet\">\n <div class=\"t-bar\"></div>\n <div class=\"t-content\">\n @if (context.label) {\n <header\n [id]=\"context.id\"\n [innerHTML]=\"context.label\"\n ></header>\n }\n <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n <div [innerHTML]=\"text\"></div>\n @if (context.closable) {\n <footer>\n <button\n tuiButton\n type=\"button\"\n (click)=\"context.$implicit.complete()\"\n >\n {{ context.data || 'OK' }}\n </button>\n </footer>\n }\n </ng-container>\n </div>\n</div>\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type Observable} from 'rxjs';\n\nexport interface TuiSheetDialogOptions<I = undefined> {\n readonly appearance: string;\n readonly closable: Observable<boolean> | boolean;\n readonly data: I extends void ? undefined : I;\n readonly initial: number;\n readonly label: string;\n readonly offset: number;\n readonly stops: readonly string[];\n readonly bar: boolean;\n readonly required: boolean;\n}\n\nexport const TUI_SHEET_DIALOG_DEFAULT_OPTIONS: TuiSheetDialogOptions = {\n label: '',\n appearance: '',\n stops: [],\n initial: 0,\n offset: 16,\n closable: true,\n data: undefined,\n bar: true,\n required: false,\n};\n\n/**\n * Default parameters for mobile dialog component\n */\nexport const [TUI_SHEET_DIALOG_OPTIONS, tuiSheetDialogOptionsProvider] = tuiCreateOptions(\n TUI_SHEET_DIALOG_DEFAULT_OPTIONS,\n);\n","import {inject, Injectable} from '@angular/core';\nimport {TuiThemeColorService} from '@taiga-ui/addon-mobile/services';\nimport {type TuiModalComponent, TuiModalService} from '@taiga-ui/core/portals/modal';\nimport {type PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TuiSheetDialogComponent} from './sheet-dialog.component';\nimport {\n TUI_SHEET_DIALOG_OPTIONS,\n type TuiSheetDialogOptions,\n} from './sheet-dialog.options';\n\nconst THEME = '#404040';\n\n@Injectable({providedIn: 'root'})\nexport class TuiSheetDialogService extends TuiModalService<TuiSheetDialogOptions<any>> {\n private readonly theme = inject(TuiThemeColorService);\n private readonly initial = this.theme.color;\n private count = 0;\n\n protected readonly options = inject(TUI_SHEET_DIALOG_OPTIONS);\n protected readonly content = TuiSheetDialogComponent;\n\n protected override add(\n component: PolymorpheusComponent<TuiModalComponent<TuiSheetDialogOptions>>,\n ): () => void {\n this.count++;\n this.theme.color = THEME;\n\n const cleanup = super.add(component);\n\n return () => {\n cleanup();\n this.count--;\n\n if (!this.count) {\n this.theme.color = this.initial;\n }\n };\n }\n}\n","import {Directive, input} from '@angular/core';\nimport {tuiAsPortal, TuiPortalDirective} from '@taiga-ui/cdk/portals';\n\nimport {type TuiSheetDialogOptions} from './sheet-dialog.options';\nimport {TuiSheetDialogService} from './sheet-dialog.service';\n\n@Directive({\n selector: 'ng-template[tuiSheetDialog]',\n providers: [tuiAsPortal(TuiSheetDialogService)],\n hostDirectives: [\n {\n directive: TuiPortalDirective,\n inputs: ['options: tuiSheetDialogOptions', 'open: tuiSheetDialog'],\n outputs: ['openChange: tuiSheetDialogChange'],\n },\n ],\n})\nexport class TuiSheetDialog {\n public readonly tuiSheetDialogOptions = input<Partial<TuiSheetDialogOptions>>({});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-mobile-components-sheet-dialog.mjs","sources":["../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.component.ts","../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.template.html","../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.options.ts","../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.service.ts","../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.directive.ts","../../../projects/addon-mobile/components/sheet-dialog/taiga-ui-addon-mobile-components-sheet-dialog.ts"],"sourcesContent":["import {\n type AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n viewChildren,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {tuiCloseWatcher, tuiZonefull} from '@taiga-ui/cdk/observables';\nimport {type TuiPortalContext} from '@taiga-ui/cdk/portals';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiScrollRef} from '@taiga-ui/core/components/scrollbar';\nimport {TUI_DIALOGS_CLOSE} from '@taiga-ui/core/portals/dialog';\nimport {injectContext, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {exhaustMap, filter, isObservable, map, merge, of, Subject, take} from 'rxjs';\n\nimport {type TuiSheetDialogOptions} from './sheet-dialog.options';\n\nconst REQUIRED_ERROR = new Error(ngDevMode ? 'Required dialog was dismissed' : '');\n\n@Component({\n selector: 'tui-sheet-dialog',\n imports: [PolymorpheusOutlet, TuiButton],\n templateUrl: './sheet-dialog.template.html',\n styleUrl: './sheet-dialog.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiAnimated, TuiScrollRef],\n host: {\n '[attr.data-appearance]': 'context.appearance',\n '[class._bar]': 'context.bar',\n '[class._closeable]': 'context.closable',\n '[style.--tui-offset.px]': 'context.offset',\n '(click.self)': 'close$.next()',\n '(document:touchcancel.zoneless)': 'onPointerChange(-1)',\n '(document:touchend.zoneless)': 'onPointerChange(-1)',\n '(document:touchstart.passive.zoneless)': 'onPointerChange(1)',\n '(scroll.zoneless)': 'onPointerChange(0)',\n },\n})\nexport class TuiSheetDialogComponent<I> implements AfterViewInit {\n private readonly stops = viewChildren('stops', {read: ElementRef});\n private readonly el = tuiInjectElement();\n private pointers = 0;\n\n protected readonly context =\n injectContext<TuiPortalContext<TuiSheetDialogOptions<I>, any>>();\n\n protected readonly close$ = new Subject<void>();\n\n protected readonly $ = merge(\n this.close$,\n tuiCloseWatcher(),\n inject(TUI_DIALOGS_CLOSE).pipe(map(TUI_TRUE_HANDLER)),\n )\n .pipe(\n tuiZonefull(),\n exhaustMap(() => {\n if (isObservable(this.context.closable)) {\n if (this.el.scrollTop <= 0) {\n this.el.scrollTo({top: this.initial, behavior: 'smooth'});\n }\n\n return this.context.closable.pipe(take(1));\n }\n\n return of(this.context.closable);\n }),\n filter(Boolean),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.close());\n\n public ngAfterViewInit(): void {\n this.el.scrollTop = this.initial || 0;\n }\n\n protected onPointerChange(delta: number): void {\n this.pointers = Math.max(this.pointers + delta, 0);\n\n if (!this.pointers && this.el.scrollTop <= 0) {\n this.close$.next();\n }\n }\n\n private get initial(): number | undefined {\n return this.context.closable\n ? this.stops()\n .map((e) => e.nativeElement.offsetTop - this.context.offset)\n .concat(this.el.clientHeight ?? Infinity)[this.context.initial]\n : 0;\n }\n\n private close(): void {\n if (this.context.required) {\n this.context.$implicit.error(REQUIRED_ERROR);\n } else {\n this.context.$implicit.complete();\n }\n }\n}\n","<div class=\"t-stops\">\n @for (stop of context.stops; track stop) {\n <div\n #stops\n class=\"t-stop\"\n [style.margin-block-start]=\"stop\"\n ></div>\n }\n</div>\n<div class=\"t-sheet\">\n <div class=\"t-bar\"></div>\n <div class=\"t-content\">\n @if (context.label) {\n <header\n [id]=\"context.id\"\n [innerHTML]=\"context.label\"\n ></header>\n }\n <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n <div [innerHTML]=\"text\"></div>\n @if (context.closable) {\n <footer>\n <button\n tuiButton\n type=\"button\"\n (click)=\"context.$implicit.complete()\"\n >\n {{ context.data || 'OK' }}\n </button>\n </footer>\n }\n </ng-container>\n </div>\n</div>\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type Observable} from 'rxjs';\n\nexport interface TuiSheetDialogOptions<I = undefined> {\n readonly appearance: string;\n readonly closable: Observable<boolean> | boolean;\n readonly data: I extends void ? undefined : I;\n readonly initial: number;\n readonly label: string;\n readonly offset: number;\n readonly stops: readonly string[];\n readonly bar: boolean;\n readonly required: boolean;\n /**\n * Address-bar (`<meta name=\"theme-color\">`) color applied while the sheet is\n * open, matching the dimmed backdrop. Pass an empty string to leave the\n * address bar untouched (e.g. apps that manage `theme-color` themselves, or\n * need a value that tracks dark mode).\n */\n readonly themeColor: string;\n}\n\nexport const TUI_SHEET_DIALOG_DEFAULT_OPTIONS: TuiSheetDialogOptions = {\n label: '',\n appearance: '',\n stops: [],\n initial: 0,\n offset: 16,\n closable: true,\n data: undefined,\n bar: true,\n required: false,\n themeColor: '#404040',\n};\n\n/**\n * Default parameters for mobile dialog component\n */\nexport const [TUI_SHEET_DIALOG_OPTIONS, tuiSheetDialogOptionsProvider] = tuiCreateOptions(\n TUI_SHEET_DIALOG_DEFAULT_OPTIONS,\n);\n","import {inject, Injectable} from '@angular/core';\nimport {Meta} from '@angular/platform-browser';\nimport {type TuiModalComponent, TuiModalService} from '@taiga-ui/core/portals/modal';\nimport {type PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TuiSheetDialogComponent} from './sheet-dialog.component';\nimport {\n TUI_SHEET_DIALOG_OPTIONS,\n type TuiSheetDialogOptions,\n} from './sheet-dialog.options';\n\nconst THEME_COLOR = 'name=\"theme-color\"';\n\n@Injectable({providedIn: 'root'})\nexport class TuiSheetDialogService extends TuiModalService<TuiSheetDialogOptions<any>> {\n private readonly meta = inject(Meta);\n private initial = '';\n private count = 0;\n\n protected readonly options = inject(TUI_SHEET_DIALOG_OPTIONS);\n protected readonly content = TuiSheetDialogComponent;\n\n protected override add(\n component: PolymorpheusComponent<TuiModalComponent<TuiSheetDialogOptions>>,\n ): () => void {\n // Read the live tag at open time, not at construction: a color set later\n // (an app-level dark mode effect) would otherwise be lost on revert.\n if (!this.count++ && this.options.themeColor) {\n this.initial = this.meta.getTag(THEME_COLOR)?.content ?? '';\n this.meta.updateTag({\n name: 'theme-color',\n content: this.options.themeColor,\n });\n }\n\n const cleanup = super.add(component);\n\n return () => {\n cleanup();\n\n if (--this.count || !this.options.themeColor) {\n return;\n }\n\n if (this.initial) {\n this.meta.updateTag({name: 'theme-color', content: this.initial});\n } else {\n this.meta.removeTag(THEME_COLOR);\n }\n };\n }\n}\n","import {Directive, input} from '@angular/core';\nimport {tuiAsPortal, TuiPortalDirective} from '@taiga-ui/cdk/portals';\n\nimport {type TuiSheetDialogOptions} from './sheet-dialog.options';\nimport {TuiSheetDialogService} from './sheet-dialog.service';\n\n@Directive({\n selector: 'ng-template[tuiSheetDialog]',\n providers: [tuiAsPortal(TuiSheetDialogService)],\n hostDirectives: [\n {\n directive: TuiPortalDirective,\n inputs: ['options: tuiSheetDialogOptions', 'open: tuiSheetDialog'],\n outputs: ['openChange: tuiSheetDialogChange'],\n },\n ],\n})\nexport class TuiSheetDialog {\n public readonly tuiSheetDialogOptions = input<Partial<TuiSheetDialogOptions>>({});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
@@ -47,11 +47,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
47
47
 
48
48
  class Styles {
49
49
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Styles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
50
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-swipe-actions-5.19.0"], ngImport: i0, template: '', isInline: true, styles: ["tui-swipe-actions._onboarding:where(*[data-tui-version=\"5.19.0\"]){scroll-snap-type:none}tui-swipe-actions._onboarding:where(*[data-tui-version=\"5.19.0\"])>*{animation:tuiOnboardingEnter calc(var(--tui-duration) / .6) var(--tui-curve-expressive-entrance),tuiOnboardingShow var(--tui-duration) linear calc(var(--tui-duration) / .6),tuiOnboardingExit calc(var(--tui-duration) / .6) var(--tui-curve-expressive-entrance) calc(calc(var(--tui-duration) / .6) + var(--tui-duration))}@keyframes tuiOnboardingEnter{0%{transform:translate(0)}to{transform:translate(calc(-1px * var(--t-actions-width)))}}@keyframes tuiOnboardingShow{0%{transform:translate(calc(-1px * var(--t-actions-width)))}to{transform:translate(calc(-1px * var(--t-actions-width)))}}@keyframes tuiOnboardingExit{0%{transform:translate(calc(-1px * var(--t-actions-width)))}to{transform:translate(0)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
50
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-swipe-actions-5.20.0"], ngImport: i0, template: '', isInline: true, styles: ["tui-swipe-actions._onboarding:where(*[data-tui-version=\"5.20.0\"]){scroll-snap-type:none}tui-swipe-actions._onboarding:where(*[data-tui-version=\"5.20.0\"])>*{animation:tuiOnboardingEnter calc(var(--tui-duration) / .6) var(--tui-curve-expressive-entrance),tuiOnboardingShow var(--tui-duration) linear calc(var(--tui-duration) / .6),tuiOnboardingExit calc(var(--tui-duration) / .6) var(--tui-curve-expressive-entrance) calc(calc(var(--tui-duration) / .6) + var(--tui-duration))}@keyframes tuiOnboardingEnter{0%{transform:translate(0)}to{transform:translate(calc(-1px * var(--t-actions-width)))}}@keyframes tuiOnboardingShow{0%{transform:translate(calc(-1px * var(--t-actions-width)))}to{transform:translate(calc(-1px * var(--t-actions-width)))}}@keyframes tuiOnboardingExit{0%{transform:translate(calc(-1px * var(--t-actions-width)))}to{transform:translate(0)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
51
51
  }
52
52
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Styles, decorators: [{
53
53
  type: Component,
54
- args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-swipe-actions-${TUI_VERSION}`, styles: ["tui-swipe-actions._onboarding:where(*[data-tui-version=\"5.19.0\"]){scroll-snap-type:none}tui-swipe-actions._onboarding:where(*[data-tui-version=\"5.19.0\"])>*{animation:tuiOnboardingEnter calc(var(--tui-duration) / .6) var(--tui-curve-expressive-entrance),tuiOnboardingShow var(--tui-duration) linear calc(var(--tui-duration) / .6),tuiOnboardingExit calc(var(--tui-duration) / .6) var(--tui-curve-expressive-entrance) calc(calc(var(--tui-duration) / .6) + var(--tui-duration))}@keyframes tuiOnboardingEnter{0%{transform:translate(0)}to{transform:translate(calc(-1px * var(--t-actions-width)))}}@keyframes tuiOnboardingShow{0%{transform:translate(calc(-1px * var(--t-actions-width)))}to{transform:translate(calc(-1px * var(--t-actions-width)))}}@keyframes tuiOnboardingExit{0%{transform:translate(calc(-1px * var(--t-actions-width)))}to{transform:translate(0)}}\n"] }]
54
+ args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-swipe-actions-${TUI_VERSION}`, styles: ["tui-swipe-actions._onboarding:where(*[data-tui-version=\"5.20.0\"]){scroll-snap-type:none}tui-swipe-actions._onboarding:where(*[data-tui-version=\"5.20.0\"])>*{animation:tuiOnboardingEnter calc(var(--tui-duration) / .6) var(--tui-curve-expressive-entrance),tuiOnboardingShow var(--tui-duration) linear calc(var(--tui-duration) / .6),tuiOnboardingExit calc(var(--tui-duration) / .6) var(--tui-curve-expressive-entrance) calc(calc(var(--tui-duration) / .6) + var(--tui-duration))}@keyframes tuiOnboardingEnter{0%{transform:translate(0)}to{transform:translate(calc(-1px * var(--t-actions-width)))}}@keyframes tuiOnboardingShow{0%{transform:translate(calc(-1px * var(--t-actions-width)))}to{transform:translate(calc(-1px * var(--t-actions-width)))}}@keyframes tuiOnboardingExit{0%{transform:translate(calc(-1px * var(--t-actions-width)))}to{transform:translate(0)}}\n"] }]
55
55
  }] });
56
56
  class TuiSwipeActionsOnboarding {
57
57
  constructor() {
@@ -59,7 +59,7 @@ class TuiSwipeActionsOnboarding {
59
59
  this.nothing = tuiWithStyles(Styles);
60
60
  }
61
61
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiSwipeActionsOnboarding, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
62
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", type: TuiSwipeActionsOnboarding, isStandalone: true, selector: "tui-swipe-actions[onboarding]", inputs: { onboarding: { classPropertyName: "onboarding", publicName: "onboarding", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onboarding: "onboardingChange" }, host: { attributes: { "data-tui-version": "5.19.0" }, listeners: { "animationend": "onboarding.set($event.animationName !== \"tuiOnboardingExit\")" }, properties: { "class._onboarding": "onboarding()" } }, ngImport: i0 }); }
62
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.25", type: TuiSwipeActionsOnboarding, isStandalone: true, selector: "tui-swipe-actions[onboarding]", inputs: { onboarding: { classPropertyName: "onboarding", publicName: "onboarding", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onboarding: "onboardingChange" }, host: { attributes: { "data-tui-version": "5.20.0" }, listeners: { "animationend": "onboarding.set($event.animationName !== \"tuiOnboardingExit\")" }, properties: { "class._onboarding": "onboarding()" } }, ngImport: i0 }); }
63
63
  }
64
64
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiSwipeActionsOnboarding, decorators: [{
65
65
  type: Directive,
@@ -69,13 +69,13 @@ class TuiDropdownMobileComponent {
69
69
  return this.dropdown.el.contains(tuiGetFocused(this.doc));
70
70
  }
71
71
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiDropdownMobileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
72
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: TuiDropdownMobileComponent, isStandalone: true, selector: "tui-dropdown-mobile", host: { attributes: { "data-tui-version": "5.19.0" }, listeners: { "document:click.zoneless.capture": "onClick($event)", "pointerdown.prevent": "0", "visualViewport>resize.zoneless": "refresh()", "visualViewport>scroll.zoneless": "refresh()", "window>scroll.zoneless.capture": "refresh()" } }, hostDirectives: [{ directive: i1.TuiAnimated }, { directive: i2.TuiActiveZone }], ngImport: i0, template: `
72
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: TuiDropdownMobileComponent, isStandalone: true, selector: "tui-dropdown-mobile", host: { attributes: { "data-tui-version": "5.20.0" }, listeners: { "document:click.zoneless.capture": "onClick($event)", "pointerdown.prevent": "0", "visualViewport>resize.zoneless": "refresh()", "visualViewport>scroll.zoneless": "refresh()", "window>scroll.zoneless.capture": "refresh()" } }, hostDirectives: [{ directive: i1.TuiAnimated }, { directive: i2.TuiActiveZone }], ngImport: i0, template: `
73
73
  <div class="t-container">
74
74
  <ng-container *polymorpheusOutlet="dropdown.content() as text; context: ctx">
75
75
  {{ text }}
76
76
  </ng-container>
77
77
  </div>
78
- `, isInline: true, styles: ["tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]){scrollbar-width:none;-ms-overflow-style:none;position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;visibility:visible!important;background:var(--tui-background-base);overscroll-behavior:contain;overflow:auto;box-shadow:0 -.5rem .5rem var(--tui-background-base),0 10rem var(--tui-background-base),0 20rem var(--tui-background-base),0 30rem var(--tui-background-base);box-sizing:border-box;padding-block-end:env(safe-area-inset-bottom);pointer-events:auto}tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"])::-webkit-scrollbar,tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"])::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]).tui-enter,tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]).tui-leave{animation-name:tuiFade,tuiSlide}tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]):after{content:\"\";display:block;block-size:1px}tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"])>.t-container{scrollbar-width:none;-ms-overflow-style:none;position:sticky;inset-block-start:0;block-size:100%;overflow:auto;padding:0 1rem;touch-action:pan-y!important}tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"])>.t-container::-webkit-scrollbar,tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"])>.t-container::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"])>.t-container tui-data-list{padding:0;margin:0 -.5rem}tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]) [tuiDropdownButton][tuiDropdownButton]{position:fixed;display:inline-flex;inset-inline-end:1rem;inset-block-end:max(1rem,env(safe-area-inset-bottom))}tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]) tui-data-list [tuiOption]{box-sizing:content-box}.t-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]){touch-action:none;visibility:hidden}.t-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]) *{touch-action:inherit;visibility:inherit}.t-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]) tui-root{visibility:visible}.t-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]) tui-root .t-root-content,.t-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]) tui-root tui-dialogs{visibility:hidden}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
78
+ `, isInline: true, styles: ["tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]){scrollbar-width:none;-ms-overflow-style:none;position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;visibility:visible!important;background:var(--tui-background-base);overscroll-behavior:contain;overflow:auto;box-shadow:0 -.5rem .5rem var(--tui-background-base),0 10rem var(--tui-background-base),0 20rem var(--tui-background-base),0 30rem var(--tui-background-base);box-sizing:border-box;padding-block-end:env(safe-area-inset-bottom);pointer-events:auto}tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"])::-webkit-scrollbar,tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"])::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]).tui-enter,tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]).tui-leave{animation-name:tuiFade,tuiSlide}tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]):after{content:\"\";display:block;block-size:1px}tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"])>.t-container{scrollbar-width:none;-ms-overflow-style:none;position:sticky;inset-block-start:0;block-size:100%;overflow:auto;padding:0 1rem;touch-action:pan-y!important}tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"])>.t-container::-webkit-scrollbar,tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"])>.t-container::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"])>.t-container tui-data-list{padding:0;margin:0 -.5rem}tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]) [tuiDropdownButton][tuiDropdownButton]{position:fixed;display:inline-flex;inset-inline-end:1rem;inset-block-end:max(1rem,env(safe-area-inset-bottom))}tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]) tui-data-list [tuiOption]{box-sizing:content-box}.t-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]){touch-action:none;visibility:hidden}.t-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]) *{touch-action:inherit;visibility:inherit}.t-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]) tui-root{visibility:visible}.t-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]) tui-root .t-root-content,.t-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]) tui-root tui-dialogs{visibility:hidden}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
79
79
  }
80
80
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiDropdownMobileComponent, decorators: [{
81
81
  type: Component,
@@ -92,7 +92,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
92
92
  '(visualViewport>resize.zoneless)': 'refresh()',
93
93
  '(visualViewport>scroll.zoneless)': 'refresh()',
94
94
  '(window>scroll.zoneless.capture)': 'refresh()',
95
- }, styles: ["tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]){scrollbar-width:none;-ms-overflow-style:none;position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;visibility:visible!important;background:var(--tui-background-base);overscroll-behavior:contain;overflow:auto;box-shadow:0 -.5rem .5rem var(--tui-background-base),0 10rem var(--tui-background-base),0 20rem var(--tui-background-base),0 30rem var(--tui-background-base);box-sizing:border-box;padding-block-end:env(safe-area-inset-bottom);pointer-events:auto}tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"])::-webkit-scrollbar,tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"])::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]).tui-enter,tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]).tui-leave{animation-name:tuiFade,tuiSlide}tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]):after{content:\"\";display:block;block-size:1px}tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"])>.t-container{scrollbar-width:none;-ms-overflow-style:none;position:sticky;inset-block-start:0;block-size:100%;overflow:auto;padding:0 1rem;touch-action:pan-y!important}tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"])>.t-container::-webkit-scrollbar,tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"])>.t-container::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"])>.t-container tui-data-list{padding:0;margin:0 -.5rem}tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]) [tuiDropdownButton][tuiDropdownButton]{position:fixed;display:inline-flex;inset-inline-end:1rem;inset-block-end:max(1rem,env(safe-area-inset-bottom))}tui-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]) tui-data-list [tuiOption]{box-sizing:content-box}.t-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]){touch-action:none;visibility:hidden}.t-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]) *{touch-action:inherit;visibility:inherit}.t-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]) tui-root{visibility:visible}.t-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]) tui-root .t-root-content,.t-dropdown-mobile:where(*[data-tui-version=\"5.19.0\"]) tui-root tui-dialogs{visibility:hidden}\n"] }]
95
+ }, styles: ["tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]){scrollbar-width:none;-ms-overflow-style:none;position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;visibility:visible!important;background:var(--tui-background-base);overscroll-behavior:contain;overflow:auto;box-shadow:0 -.5rem .5rem var(--tui-background-base),0 10rem var(--tui-background-base),0 20rem var(--tui-background-base),0 30rem var(--tui-background-base);box-sizing:border-box;padding-block-end:env(safe-area-inset-bottom);pointer-events:auto}tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"])::-webkit-scrollbar,tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"])::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]).tui-enter,tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]).tui-leave{animation-name:tuiFade,tuiSlide}tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]):after{content:\"\";display:block;block-size:1px}tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"])>.t-container{scrollbar-width:none;-ms-overflow-style:none;position:sticky;inset-block-start:0;block-size:100%;overflow:auto;padding:0 1rem;touch-action:pan-y!important}tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"])>.t-container::-webkit-scrollbar,tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"])>.t-container::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"])>.t-container tui-data-list{padding:0;margin:0 -.5rem}tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]) [tuiDropdownButton][tuiDropdownButton]{position:fixed;display:inline-flex;inset-inline-end:1rem;inset-block-end:max(1rem,env(safe-area-inset-bottom))}tui-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]) tui-data-list [tuiOption]{box-sizing:content-box}.t-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]){touch-action:none;visibility:hidden}.t-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]) *{touch-action:inherit;visibility:inherit}.t-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]) tui-root{visibility:visible}.t-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]) tui-root .t-root-content,.t-dropdown-mobile:where(*[data-tui-version=\"5.20.0\"]) tui-root tui-dialogs{visibility:hidden}\n"] }]
96
96
  }], ctorParameters: () => [] });
97
97
 
98
98
  class TuiDropdownMobile {
@@ -13,11 +13,11 @@ const TO = [{ transform: 'scale(0)', opacity: '0.12' }, { opacity: '0.12' }];
13
13
  const FROM = [{ opacity: '0.12' }, { opacity: '0' }];
14
14
  class Styles {
15
15
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Styles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-ripple-5.19.0"], ngImport: i0, template: '', isInline: true, styles: [".tui-ripple:where(*[data-tui-version=\"5.19.0\"]){position:absolute;z-index:100;opacity:.12;border-radius:100%;background:var(--tui-ripple-background, currentColor);animation-fill-mode:forwards;pointer-events:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-ripple-5.20.0"], ngImport: i0, template: '', isInline: true, styles: [".tui-ripple:where(*[data-tui-version=\"5.20.0\"]){position:absolute;z-index:100;opacity:.12;border-radius:100%;background:var(--tui-ripple-background, currentColor);animation-fill-mode:forwards;pointer-events:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
17
17
  }
18
18
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Styles, decorators: [{
19
19
  type: Component,
20
- args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-ripple-${TUI_VERSION}`, styles: [".tui-ripple:where(*[data-tui-version=\"5.19.0\"]){position:absolute;z-index:100;opacity:.12;border-radius:100%;background:var(--tui-ripple-background, currentColor);animation-fill-mode:forwards;pointer-events:none}\n"] }]
20
+ args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-ripple-${TUI_VERSION}`, styles: [".tui-ripple:where(*[data-tui-version=\"5.20.0\"]){position:absolute;z-index:100;opacity:.12;border-radius:100%;background:var(--tui-ripple-background, currentColor);animation-fill-mode:forwards;pointer-events:none}\n"] }]
21
21
  }] });
22
22
  class TuiRipple {
23
23
  constructor() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/addon-mobile",
3
- "version": "5.19.0",
3
+ "version": "5.20.0",
4
4
  "description": "Extension package for Taiga UI that adds support for mobile specific behaviors such as custom data pickers, dropdowns, etc.",
5
5
  "keywords": [
6
6
  "angular",
@@ -52,6 +52,10 @@
52
52
  "types": "./components/bottom-sheet/index.d.ts",
53
53
  "default": "./fesm2022/taiga-ui-addon-mobile-components-bottom-sheet.mjs"
54
54
  },
55
+ "./components/keypad": {
56
+ "types": "./components/keypad/index.d.ts",
57
+ "default": "./fesm2022/taiga-ui-addon-mobile-components-keypad.mjs"
58
+ },
55
59
  "./components/mobile-calendar": {
56
60
  "types": "./components/mobile-calendar/index.d.ts",
57
61
  "default": "./fesm2022/taiga-ui-addon-mobile-components-mobile-calendar.mjs"
@@ -68,10 +72,6 @@
68
72
  "types": "./components/pull-to-refresh/index.d.ts",
69
73
  "default": "./fesm2022/taiga-ui-addon-mobile-components-pull-to-refresh.mjs"
70
74
  },
71
- "./components/keypad": {
72
- "types": "./components/keypad/index.d.ts",
73
- "default": "./fesm2022/taiga-ui-addon-mobile-components-keypad.mjs"
74
- },
75
75
  "./components/sheet-dialog": {
76
76
  "types": "./components/sheet-dialog/index.d.ts",
77
77
  "default": "./fesm2022/taiga-ui-addon-mobile-components-sheet-dialog.mjs"
@@ -115,10 +115,10 @@
115
115
  "@angular/core": ">=19.0.0",
116
116
  "@ng-web-apis/common": "^5.3.0",
117
117
  "@ng-web-apis/platform": "^5.3.0",
118
- "@taiga-ui/cdk": "5.19.0",
119
- "@taiga-ui/core": "5.19.0",
120
- "@taiga-ui/kit": "5.19.0",
121
- "@taiga-ui/layout": "5.19.0",
118
+ "@taiga-ui/cdk": "5.20.0",
119
+ "@taiga-ui/core": "5.20.0",
120
+ "@taiga-ui/kit": "5.20.0",
121
+ "@taiga-ui/layout": "5.20.0",
122
122
  "@taiga-ui/polymorpheus": "^5.0.1",
123
123
  "rxjs": ">=7.0.0"
124
124
  },
@@ -0,0 +1,24 @@
1
+ &.tui-liquid-glass {
2
+ nav[tuiTabBar] {
3
+ backdrop-filter: none;
4
+
5
+ &::before {
6
+ background: var(--tui-background-base);
7
+ box-shadow: 0 -0.25rem 0.25rem -0.25rem rgba(0, 0, 0, 0.16);
8
+ opacity: 1;
9
+ }
10
+
11
+ [tuiTabBarItem] {
12
+ .t-icon {
13
+ inline-size: 1.5rem;
14
+ block-size: 1.5rem;
15
+ margin-block-start: 0.5rem;
16
+ border: 0;
17
+ }
18
+
19
+ .t-text {
20
+ font: var(--tui-typography-ui-xs);
21
+ }
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,12 @@
1
+ tui-counter {
2
+ border-radius: 1rem;
3
+
4
+ &[data-size='m'] {
5
+ border-radius: 0.75rem;
6
+ }
7
+
8
+ &[data-size='s'],
9
+ &[data-size='xs'] {
10
+ border-radius: 2rem;
11
+ }
12
+ }
@@ -6,6 +6,7 @@
6
6
  @import 'android/checkbox.less';
7
7
  @import 'android/radio.less';
8
8
  @import 'android/switch.less';
9
+ @import 'android/tab-bar.less';
9
10
 
10
11
  tui-badge-notification[data-size='l'] {
11
12
  --t-size: 1.375rem;
@@ -45,6 +46,7 @@
45
46
  @import 'common/title.less';
46
47
  @import 'common/card-large.less';
47
48
  @import 'common/chip.less';
49
+ @import 'common/counter.less';
48
50
  @import 'common/file.less';
49
51
  @import 'common/segmented.less';
50
52
  @import 'common/header.less';