@taiga-ui/addon-mobile 2.42.0 → 2.45.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.
- package/bundles/taiga-ui-addon-mobile-components-mobile-calendar.umd.js.map +1 -1
- package/bundles/taiga-ui-addon-mobile-components-mobile-calendar.umd.min.js.map +1 -1
- package/bundles/taiga-ui-addon-mobile-components-mobile-dialog.umd.js.map +1 -1
- package/bundles/taiga-ui-addon-mobile-components-mobile-dialog.umd.min.js.map +1 -1
- package/bundles/taiga-ui-addon-mobile-components-pull-to-refresh.umd.js +1 -1
- package/bundles/taiga-ui-addon-mobile-components-pull-to-refresh.umd.js.map +1 -1
- package/bundles/taiga-ui-addon-mobile-components-pull-to-refresh.umd.min.js +1 -1
- package/bundles/taiga-ui-addon-mobile-components-pull-to-refresh.umd.min.js.map +1 -1
- package/bundles/taiga-ui-addon-mobile-components-sheet.umd.js +21 -24
- package/bundles/taiga-ui-addon-mobile-components-sheet.umd.js.map +1 -1
- package/bundles/taiga-ui-addon-mobile-components-sheet.umd.min.js +1 -1
- package/bundles/taiga-ui-addon-mobile-components-sheet.umd.min.js.map +1 -1
- package/bundles/taiga-ui-addon-mobile-directives-sidebar.umd.js.map +1 -1
- package/bundles/taiga-ui-addon-mobile-directives-sidebar.umd.min.js.map +1 -1
- package/bundles/taiga-ui-addon-mobile-directives-touchable.umd.js.map +1 -1
- package/bundles/taiga-ui-addon-mobile-directives-touchable.umd.min.js.map +1 -1
- package/components/pull-to-refresh/taiga-ui-addon-mobile-components-pull-to-refresh.metadata.json +1 -1
- package/components/sheet/components/sheet/sheet.providers.d.ts +1 -0
- package/components/sheet/components/sheets-host/sheets-host.component.d.ts +1 -3
- package/components/sheet/directives/sheet-top/sheet-top.directive.d.ts +3 -2
- package/components/sheet/directives/sheet-wrapper/sheet-wrapper.directive.d.ts +2 -2
- package/components/sheet/sheet-options.d.ts +2 -1
- package/components/sheet/sheet.d.ts +1 -1
- package/components/sheet/taiga-ui-addon-mobile-components-sheet.metadata.json +1 -1
- package/directives/sidebar/sidebar.directive.d.ts +3 -3
- package/directives/sidebar/taiga-ui-addon-mobile-directives-sidebar.metadata.json +1 -1
- package/esm2015/components/mobile-calendar/mobile-calendar.component.js +1 -1
- package/esm2015/components/mobile-calendar/mobile-calendar.strategy.js +1 -1
- package/esm2015/components/mobile-dialog/mobile-dialog.component.js +1 -1
- package/esm2015/components/pull-to-refresh/pull-to-refresh.component.js +2 -2
- package/esm2015/components/sheet/components/sheet/sheet.component.js +1 -1
- package/esm2015/components/sheet/components/sheet/sheet.providers.js +2 -1
- package/esm2015/components/sheet/components/sheet-bar/sheet-bar.component.js +1 -1
- package/esm2015/components/sheet/components/sheet-heading/sheet-heading.component.js +1 -1
- package/esm2015/components/sheet/components/sheets-host/sheets-host.component.js +6 -13
- package/esm2015/components/sheet/directives/sheet-top/sheet-top.directive.js +9 -8
- package/esm2015/components/sheet/directives/sheet-wrapper/sheet-wrapper.directive.js +11 -10
- package/esm2015/components/sheet/ios.hacks.js +1 -1
- package/esm2015/components/sheet/sheet-options.js +5 -3
- package/esm2015/components/sheet/sheet.js +1 -1
- package/esm2015/components/sheet/sheet.service.js +1 -1
- package/esm2015/directives/sidebar/sidebar.component.js +1 -1
- package/esm2015/directives/sidebar/sidebar.directive.js +1 -1
- package/esm2015/directives/touchable/touchable.directive.js +1 -1
- package/esm5/components/mobile-calendar/mobile-calendar.component.js +1 -1
- package/esm5/components/mobile-calendar/mobile-calendar.strategy.js +1 -1
- package/esm5/components/mobile-dialog/mobile-dialog.component.js +1 -1
- package/esm5/components/pull-to-refresh/pull-to-refresh.component.js +2 -2
- package/esm5/components/sheet/components/sheet/sheet.component.js +1 -1
- package/esm5/components/sheet/components/sheet/sheet.providers.js +2 -1
- package/esm5/components/sheet/components/sheet-bar/sheet-bar.component.js +1 -1
- package/esm5/components/sheet/components/sheet-heading/sheet-heading.component.js +1 -1
- package/esm5/components/sheet/components/sheets-host/sheets-host.component.js +6 -13
- package/esm5/components/sheet/directives/sheet-top/sheet-top.directive.js +9 -8
- package/esm5/components/sheet/directives/sheet-wrapper/sheet-wrapper.directive.js +11 -10
- package/esm5/components/sheet/ios.hacks.js +1 -1
- package/esm5/components/sheet/sheet-options.js +6 -3
- package/esm5/components/sheet/sheet.js +1 -1
- package/esm5/components/sheet/sheet.service.js +1 -1
- package/esm5/directives/sidebar/sidebar.component.js +1 -1
- package/esm5/directives/sidebar/sidebar.directive.js +1 -1
- package/esm5/directives/touchable/touchable.directive.js +1 -1
- package/fesm2015/taiga-ui-addon-mobile-components-mobile-calendar.js.map +1 -1
- package/fesm2015/taiga-ui-addon-mobile-components-mobile-dialog.js.map +1 -1
- package/fesm2015/taiga-ui-addon-mobile-components-pull-to-refresh.js +1 -1
- package/fesm2015/taiga-ui-addon-mobile-components-pull-to-refresh.js.map +1 -1
- package/fesm2015/taiga-ui-addon-mobile-components-sheet.js +22 -25
- package/fesm2015/taiga-ui-addon-mobile-components-sheet.js.map +1 -1
- package/fesm2015/taiga-ui-addon-mobile-directives-sidebar.js.map +1 -1
- package/fesm2015/taiga-ui-addon-mobile-directives-touchable.js.map +1 -1
- package/fesm5/taiga-ui-addon-mobile-components-mobile-calendar.js.map +1 -1
- package/fesm5/taiga-ui-addon-mobile-components-mobile-dialog.js.map +1 -1
- package/fesm5/taiga-ui-addon-mobile-components-pull-to-refresh.js +1 -1
- package/fesm5/taiga-ui-addon-mobile-components-pull-to-refresh.js.map +1 -1
- package/fesm5/taiga-ui-addon-mobile-components-sheet.js +22 -25
- package/fesm5/taiga-ui-addon-mobile-components-sheet.js.map +1 -1
- package/fesm5/taiga-ui-addon-mobile-directives-sidebar.js.map +1 -1
- package/fesm5/taiga-ui-addon-mobile-directives-touchable.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-addon-mobile-components-mobile-calendar.js","sources":["ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.const.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.strategy.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.providers.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.component.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.module.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/taiga-ui-addon-mobile-components-mobile-calendar.ts"],"sourcesContent":["import {MONTHS_IN_YEAR} from '@taiga-ui/cdk';\n\nexport const SCROLL_DEBOUNCE_TIME = 80;\nexport const YEARS_IN_ROW = 5;\nexport const STARTING_YEAR = 1900;\nexport const RANGE = 196;\nexport const BUFFER = 500;\nexport const ANDROID_LABEL = 64;\nexport const ANDROID_WEEK = 48;\nexport const IOS_LABEL = 50;\nexport const IOS_WEEK = 50;\nexport const YEARLY_CYCLE = 28;\nexport const ANDROID_CYCLE = getCycle(ANDROID_LABEL, ANDROID_WEEK);\nexport const IOS_CYCLE = getCycle(IOS_LABEL, IOS_WEEK);\n\nfunction getCycle(label: number, week: number): ReadonlyArray<readonly number[]> {\n return Array.from({length: YEARLY_CYCLE}, (_, i) =>\n Array.from(\n {length: MONTHS_IN_YEAR},\n (_, month) => label + weekCount(i, month) * week,\n ),\n );\n}\n\nfunction weekCount(year: number, month: number): number {\n const firstOfMonth = new Date(year + STARTING_YEAR, month, 1);\n const lastOfMonth = new Date(year + STARTING_YEAR, month + 1, 0);\n const days = lastOfMonth.getDate() + (firstOfMonth.getDay() || 7) - 1;\n\n return Math.ceil(days / 7);\n}\n","import {CdkVirtualScrollViewport, VirtualScrollStrategy} from '@angular/cdk/scrolling';\nimport {MONTHS_IN_YEAR, tuiPure, TuiScrollService} from '@taiga-ui/cdk';\nimport {Observable, Subject} from 'rxjs';\nimport {distinctUntilChanged} from 'rxjs/operators';\n\nimport {\n ANDROID_CYCLE,\n BUFFER,\n IOS_CYCLE,\n RANGE,\n YEARLY_CYCLE,\n} from './mobile-calendar.const';\n\nconst ANDROID_CYCLE_HEIGHT = reduceCycle(ANDROID_CYCLE);\nconst IOS_CYCLE_HEIGHT = reduceCycle(IOS_CYCLE);\n\nfunction reduceCycle(\n cycle: ReadonlyArray<readonly number[]>,\n lastYear: number = 28,\n lastMonth: number = 12,\n): number {\n return cycle.reduce(\n (total, year, yearIndex) =>\n yearIndex <= lastYear\n ? total +\n year.reduce(\n (sum, month, monthIndex) =>\n yearIndex < lastYear ||\n (yearIndex === lastYear && monthIndex < lastMonth)\n ? sum + month\n : sum,\n 0,\n )\n : total,\n 0,\n );\n}\n\n/**\n * This scroll strategy is hard wired with styles for iOS and Android.\n * It is dependent on month height on those platforms and is designed to\n * work for {@link TuiMobileCalendarComponent} with years 1906 to 2102\n */\nexport class TuiMobileCalendarStrategy implements VirtualScrollStrategy {\n private readonly index$ = new Subject<number>();\n\n private viewport: CdkVirtualScrollViewport | null = null;\n\n constructor(\n private readonly isIos: boolean,\n private readonly scrollService: TuiScrollService,\n ) {}\n\n @tuiPure\n get scrolledIndexChange(): Observable<number> {\n return this.index$.pipe(distinctUntilChanged());\n }\n\n attach(viewport: CdkVirtualScrollViewport) {\n const cycle = this.isIos ? IOS_CYCLE_HEIGHT : ANDROID_CYCLE_HEIGHT;\n\n this.viewport = viewport;\n this.viewport.setTotalContentSize(cycle * 7);\n this.updateRenderedRange(this.viewport);\n }\n\n detach() {\n this.index$.complete();\n this.viewport = null;\n }\n\n onContentScrolled() {\n if (this.viewport) {\n this.updateRenderedRange(this.viewport);\n }\n }\n\n /** These do not matter for this case */\n onDataLengthChanged() {}\n onContentRendered() {}\n onRenderedOffsetChanged() {}\n\n scrollToIndex(index: number, behavior: ScrollBehavior) {\n if (!this.viewport) {\n return;\n }\n\n const scrollTop = this.getOffsetForIndex(index);\n\n if (behavior !== 'smooth') {\n this.viewport.scrollToOffset(scrollTop, behavior);\n\n return;\n }\n\n this.scrollService\n .scroll$(this.viewport.elementRef.nativeElement, scrollTop)\n .subscribe();\n }\n\n private getOffsetForIndex(index: number): number {\n const month = index % MONTHS_IN_YEAR;\n const year = (index - month) / MONTHS_IN_YEAR;\n\n return this.computeHeight(year, month);\n }\n\n private getIndexForOffset(offset: number): number {\n const cycle = this.isIos ? IOS_CYCLE : ANDROID_CYCLE;\n const cycleHeight = this.isIos ? IOS_CYCLE_HEIGHT : ANDROID_CYCLE_HEIGHT;\n const remainder = offset % cycleHeight;\n const years = ((offset - remainder) / cycleHeight) * YEARLY_CYCLE;\n\n let accumulator = 0;\n\n for (let year = 0; year < cycle.length; year++) {\n for (let month = 0; month < cycle[year].length; month++) {\n accumulator += cycle[year][month];\n\n if (accumulator - cycle[year][month] / 2 > remainder) {\n return Math.max((years + year) * MONTHS_IN_YEAR + month, 0);\n }\n }\n }\n\n return RANGE;\n }\n\n private computeHeight(year: number, month?: number): number {\n const cycle = this.isIos ? IOS_CYCLE : ANDROID_CYCLE;\n const remainder = year % YEARLY_CYCLE;\n const remainderHeight = reduceCycle(cycle, remainder, month);\n const fullCycles = (year - remainder) / YEARLY_CYCLE;\n const fullCyclesHeight = this.isIos\n ? fullCycles * IOS_CYCLE_HEIGHT\n : fullCycles * ANDROID_CYCLE_HEIGHT;\n\n return fullCyclesHeight + remainderHeight;\n }\n\n private updateRenderedRange(viewport: CdkVirtualScrollViewport) {\n const offset = viewport.measureScrollOffset();\n const {start, end} = viewport.getRenderedRange();\n const viewportSize = viewport.getViewportSize();\n const dataLength = viewport.getDataLength();\n const newRange = {start, end};\n const firstVisibleIndex = this.getIndexForOffset(offset);\n const startBuffer = offset - this.getOffsetForIndex(start);\n\n if (startBuffer < BUFFER && start !== 0) {\n newRange.start = Math.max(0, this.getIndexForOffset(offset - BUFFER * 2));\n newRange.end = Math.min(\n dataLength,\n this.getIndexForOffset(offset + viewportSize + BUFFER),\n );\n } else {\n const endBuffer = this.getOffsetForIndex(end) - offset - viewportSize;\n\n if (endBuffer < BUFFER && end !== dataLength) {\n newRange.start = Math.max(0, this.getIndexForOffset(offset - BUFFER));\n newRange.end = Math.min(\n dataLength,\n this.getIndexForOffset(offset + viewportSize + BUFFER * 2),\n );\n }\n }\n\n viewport.setRenderedRange(newRange);\n viewport.setRenderedContentOffset(this.getOffsetForIndex(newRange.start));\n this.index$.next(firstVisibleIndex);\n }\n}\n","import {VIRTUAL_SCROLL_STRATEGY} from '@angular/cdk/scrolling';\nimport {ChangeDetectorRef, InjectionToken, Optional, Provider} from '@angular/core';\nimport {\n TUI_IS_IOS,\n TuiDayRange,\n TuiDestroyService,\n TuiScrollService,\n watch,\n} from '@taiga-ui/cdk';\nimport {TUI_CALENDAR_DATA_STREAM} from '@taiga-ui/kit';\nimport {EMPTY, Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {TuiMobileCalendarStrategy} from './mobile-calendar.strategy';\n\nexport const TUI_VALUE_STREAM = new InjectionToken<Observable<TuiDayRange | null>>(\n 'Stream for updating value',\n);\nexport const TUI_MOBILE_CALENDAR_PROVIDERS: Provider[] = [\n TuiDestroyService,\n TuiScrollService,\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n deps: [TUI_IS_IOS, TuiScrollService],\n useClass: TuiMobileCalendarStrategy,\n },\n {\n provide: TUI_VALUE_STREAM,\n deps: [\n [new Optional(), TUI_CALENDAR_DATA_STREAM],\n TuiDestroyService,\n ChangeDetectorRef,\n ],\n useFactory: valueStreamFactory,\n },\n];\n\nexport function valueStreamFactory(\n value$: Observable<TuiDayRange | null> | null,\n destroy$: Observable<void>,\n changeDetectorRef: ChangeDetectorRef,\n): Observable<TuiDayRange | null> {\n return (value$ || EMPTY).pipe(watch(changeDetectorRef), takeUntil(destroy$));\n}\n","import {CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\nimport {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n ALWAYS_FALSE_HANDLER,\n MONTHS_IN_YEAR,\n TUI_FIRST_DAY,\n TUI_IS_IOS,\n TUI_LAST_DAY,\n TuiBooleanHandler,\n TuiDay,\n TuiDayRange,\n tuiDefaultProp,\n TuiDestroyService,\n TuiMapper,\n TuiMonth,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {TUI_CLOSE_WORD, TUI_ORDERED_SHORT_WEEK_DAYS} from '@taiga-ui/core';\nimport {\n TUI_CANCEL_WORD,\n TUI_CHOOSE_DAY_OR_RANGE_TEXTS,\n TUI_DONE_WORD,\n} from '@taiga-ui/kit';\nimport {identity, MonoTypeOperatorFunction, Observable, race, timer} from 'rxjs';\nimport {\n debounceTime,\n delay,\n filter,\n flatMap,\n map,\n switchMap,\n switchMapTo,\n take,\n takeUntil,\n windowToggle,\n} from 'rxjs/operators';\n\nimport {\n RANGE,\n SCROLL_DEBOUNCE_TIME,\n STARTING_YEAR,\n YEARS_IN_ROW,\n} from './mobile-calendar.const';\nimport {\n TUI_MOBILE_CALENDAR_PROVIDERS,\n TUI_VALUE_STREAM,\n} from './mobile-calendar.providers';\n\n// @dynamic\n@Component({\n selector: 'tui-mobile-calendar',\n templateUrl: './mobile-calendar.template.html',\n styleUrls: ['./mobile-calendar.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_MOBILE_CALENDAR_PROVIDERS,\n host: {'[class._ios]': 'isIOS'},\n})\nexport class TuiMobileCalendarComponent {\n @ViewChild('yearsScrollRef')\n private readonly yearsScrollRef?: CdkVirtualScrollViewport;\n\n @ViewChild('monthsScrollRef')\n private readonly monthsScrollRef?: CdkVirtualScrollViewport;\n\n private readonly today = TuiDay.currentLocal();\n private activeYear = this.initialYear;\n private activeMonth = this.initialMonth;\n\n @Input()\n @tuiDefaultProp()\n single = true;\n\n @Input()\n @tuiDefaultProp()\n min = TUI_FIRST_DAY;\n\n @Input()\n @tuiDefaultProp()\n max = TUI_LAST_DAY;\n\n @Input()\n @tuiDefaultProp()\n disabledItemHandler: TuiBooleanHandler<TuiDay> = ALWAYS_FALSE_HANDLER;\n\n @Output()\n readonly cancel = new EventEmitter<void>();\n\n @Output()\n readonly confirm = new EventEmitter<TuiDayRange | TuiDay>();\n\n value: TuiDay | TuiDayRange | null = null;\n\n readonly years = Array.from({length: RANGE}, (_, i) => i + STARTING_YEAR);\n\n readonly months = Array.from(\n {length: RANGE * 12},\n (_, i) =>\n new TuiMonth(\n Math.floor(i / MONTHS_IN_YEAR) + STARTING_YEAR,\n i % MONTHS_IN_YEAR,\n ),\n );\n\n constructor(\n @Inject(TUI_IS_IOS) readonly isIOS: boolean,\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(TuiDestroyService)\n private readonly destroy$: TuiDestroyService,\n @Inject(TUI_VALUE_STREAM) valueChanges: Observable<TuiDayRange | null>,\n @Inject(TUI_CLOSE_WORD) readonly closeWord$: Observable<string>,\n @Inject(TUI_CANCEL_WORD) readonly cancelWord$: Observable<string>,\n @Inject(TUI_DONE_WORD) readonly doneWord$: Observable<string>,\n @Inject(TUI_ORDERED_SHORT_WEEK_DAYS)\n readonly weekDays$: Observable<\n [string, string, string, string, string, string, string]\n >,\n @Inject(TUI_CHOOSE_DAY_OR_RANGE_TEXTS)\n readonly chooseDayOrRangeTexts$: Observable<[string, string]>,\n ) {\n valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\n this.value = value;\n });\n }\n\n get yearWidth(): number {\n return this.documentRef.documentElement.clientWidth / YEARS_IN_ROW;\n }\n\n ngAfterViewInit() {\n // Virtual scroll has not yet rendered items even in ngAfterViewInit\n this.waitScrolledChange();\n }\n\n onClose() {\n this.cancel.emit();\n }\n\n onConfirm() {\n if (this.value) {\n this.confirm.emit(this.value);\n } else {\n this.cancel.emit();\n }\n }\n\n onDayClick(day: TuiDay) {\n if (this.single) {\n this.value = day;\n\n return;\n }\n\n if (\n this.value === null ||\n this.value instanceof TuiDay ||\n !this.value.isSingleDay\n ) {\n this.value = new TuiDayRange(day, day);\n\n return;\n }\n\n this.value = TuiDayRange.sort(this.value.from, day);\n }\n\n getState(index: number): 'active' | 'adjacent' | null {\n if (this.isYearActive(index)) {\n return 'active';\n }\n\n if (this.isYearActive(index - 1) || this.isYearActive(index + 1)) {\n return 'adjacent';\n }\n\n return null;\n }\n\n onMonthChange(month: number) {\n // Skipping initial callback where index === 0\n if (!month || this.activeMonth === month) {\n return;\n }\n\n this.activeMonth = month;\n\n const activeYear = this.monthToYear(month);\n\n if (activeYear === this.activeYear) {\n return;\n }\n\n this.activeYear = activeYear;\n this.scrollToActiveYear();\n }\n\n setYear(year: number) {\n if (this.activeYear === year) {\n return;\n }\n\n this.activeMonth += this.getMonthOffset(year);\n this.activeYear = year;\n this.scrollToActiveYear('smooth');\n\n // Delay is required to run months scroll in the next frame to prevent flicker\n setTimeout(() => {\n this.scrollToActiveMonth();\n });\n }\n\n readonly disabledItemHandlerMapper: TuiMapper<\n TuiBooleanHandler<TuiDay>,\n TuiBooleanHandler<TuiDay>\n > = (disabledItemHandler, min: TuiDay, max: TuiDay) => item =>\n item.dayBefore(min) ||\n (max !== null && item.dayAfter(max)) ||\n disabledItemHandler(item);\n\n private get initialYear(): number {\n if (!this.value) {\n return this.today.year;\n }\n\n if (this.value instanceof TuiDay) {\n return this.value.year;\n }\n\n return this.value.from.year;\n }\n\n private get initialMonth(): number {\n if (!this.value) {\n return this.today.month + (this.today.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n }\n\n if (this.value instanceof TuiDay) {\n return this.value.month + (this.value.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n }\n\n return (\n this.value.from.month +\n (this.value.from.year - STARTING_YEAR) * MONTHS_IN_YEAR\n );\n }\n\n private getYearsViewportSize() {\n return this.yearsScrollRef?.getViewportSize() || 0;\n }\n\n private updateViewportDimension() {\n this.yearsScrollRef?.checkViewportSize();\n this.monthsScrollRef?.checkViewportSize();\n }\n\n private lateInit(): MonoTypeOperatorFunction<number> {\n return this.getYearsViewportSize() > 0 ? identity : delay(200);\n }\n\n private waitScrolledChange() {\n this.updateViewportDimension();\n\n this.monthsScrollRef?.scrolledIndexChange\n .pipe(this.lateInit(), take(1), takeUntil(this.destroy$))\n .subscribe(() => {\n this.updateViewportDimension();\n this.initYearScroll();\n this.initMonthScroll();\n this.scrollToActiveYear();\n this.scrollToActiveMonth();\n });\n }\n\n private initYearScroll() {\n const {yearsScrollRef} = this;\n\n if (!yearsScrollRef) {\n return;\n }\n\n const touchstart$ = typedFromEvent(\n yearsScrollRef.elementRef.nativeElement,\n 'touchstart',\n );\n const touchend$ = typedFromEvent(\n yearsScrollRef.elementRef.nativeElement,\n 'touchend',\n );\n const click$ = typedFromEvent(yearsScrollRef.elementRef.nativeElement, 'click');\n\n // Refresh activeYear\n yearsScrollRef\n .elementScrolled()\n .pipe(\n // Ignore smooth scroll resulting from click on the exact year\n windowToggle(touchstart$, () => click$),\n flatMap(x => x),\n // Delay is required to run months scroll in the next frame to prevent flicker\n delay(0),\n map(\n () =>\n Math.round(\n yearsScrollRef.measureScrollOffset() / this.yearWidth,\n ) +\n Math.floor(YEARS_IN_ROW / 2) +\n STARTING_YEAR,\n ),\n filter(activeYear => activeYear !== this.activeYear),\n takeUntil(this.destroy$),\n )\n .subscribe(activeYear => {\n this.activeMonth += this.getMonthOffset(activeYear);\n this.activeYear = activeYear;\n this.scrollToActiveMonth();\n });\n\n // Smooth scroll to activeYear after scrolling is done\n touchstart$\n .pipe(\n switchMap(() => touchend$),\n switchMap(() =>\n race<unknown>(\n yearsScrollRef.elementScrolled(),\n timer(SCROLL_DEBOUNCE_TIME),\n ).pipe(\n debounceTime(SCROLL_DEBOUNCE_TIME * 2),\n take(1),\n takeUntil(touchstart$),\n ),\n ),\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this.scrollToActiveYear('smooth');\n });\n }\n\n private initMonthScroll() {\n const {monthsScrollRef} = this;\n\n if (!monthsScrollRef) {\n return;\n }\n\n const touchstart$ = typedFromEvent(\n monthsScrollRef.elementRef.nativeElement,\n 'touchstart',\n {passive: true},\n );\n const touchend$ = typedFromEvent(\n monthsScrollRef.elementRef.nativeElement,\n 'touchend',\n );\n\n // Smooth scroll to the closest month after scrolling is done\n touchstart$\n .pipe(\n switchMapTo(touchend$),\n switchMapTo(\n race<unknown>(\n monthsScrollRef.elementScrolled(),\n timer(SCROLL_DEBOUNCE_TIME),\n ).pipe(\n debounceTime(SCROLL_DEBOUNCE_TIME * 2),\n take(1),\n takeUntil(touchstart$),\n ),\n ),\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this.scrollToActiveMonth('smooth');\n });\n }\n\n private scrollToActiveYear(behavior?: ScrollBehavior) {\n this.yearsScrollRef?.scrollToIndex(\n Math.max(this.activeYear - STARTING_YEAR - 2, 0),\n behavior,\n );\n }\n\n private scrollToActiveMonth(behavior?: ScrollBehavior) {\n this.monthsScrollRef?.scrollToIndex(this.activeMonth, behavior);\n }\n\n private isYearActive(index: number): boolean {\n return index === this.activeYear;\n }\n\n private monthToYear(month: number): number {\n return Math.ceil((month + 1) / MONTHS_IN_YEAR) + STARTING_YEAR - 1;\n }\n\n private getMonthOffset(year: number): number {\n return (year - this.activeYear) * MONTHS_IN_YEAR;\n }\n}\n","import {ScrollingModule} from '@angular/cdk/scrolling';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiRippleModule} from '@taiga-ui/addon-mobile/directives/ripple';\nimport {TuiTouchableModule} from '@taiga-ui/addon-mobile/directives/touchable';\nimport {TuiPrimitiveCalendarMobileModule} from '@taiga-ui/addon-mobile/internal/primitive-calendar-mobile';\nimport {TuiMapperPipeModule} from '@taiga-ui/cdk';\nimport {TuiButtonModule, TuiLinkModule, TuiMonthPipeModule} from '@taiga-ui/core';\n\nimport {TuiMobileCalendarComponent} from './mobile-calendar.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ScrollingModule,\n TuiTouchableModule,\n TuiRippleModule,\n TuiMapperPipeModule,\n TuiLinkModule,\n TuiPrimitiveCalendarMobileModule,\n TuiButtonModule,\n TuiMonthPipeModule,\n ],\n declarations: [TuiMobileCalendarComponent],\n exports: [TuiMobileCalendarComponent],\n})\nexport class TuiMobileCalendarModule {}\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-mobile-calendar.js","sources":["ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.const.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.strategy.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.providers.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.component.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/mobile-calendar.module.ts","ng://@taiga-ui/addon-mobile/components/mobile-calendar/taiga-ui-addon-mobile-components-mobile-calendar.ts"],"sourcesContent":["import {MONTHS_IN_YEAR} from '@taiga-ui/cdk';\n\nexport const SCROLL_DEBOUNCE_TIME = 80;\nexport const YEARS_IN_ROW = 5;\nexport const STARTING_YEAR = 1900;\nexport const RANGE = 196;\nexport const BUFFER = 500;\nexport const ANDROID_LABEL = 64;\nexport const ANDROID_WEEK = 48;\nexport const IOS_LABEL = 50;\nexport const IOS_WEEK = 50;\nexport const YEARLY_CYCLE = 28;\nexport const ANDROID_CYCLE = getCycle(ANDROID_LABEL, ANDROID_WEEK);\nexport const IOS_CYCLE = getCycle(IOS_LABEL, IOS_WEEK);\n\nfunction getCycle(label: number, week: number): ReadonlyArray<readonly number[]> {\n return Array.from({length: YEARLY_CYCLE}, (_, i) =>\n Array.from(\n {length: MONTHS_IN_YEAR},\n (_, month) => label + weekCount(i, month) * week,\n ),\n );\n}\n\nfunction weekCount(year: number, month: number): number {\n const firstOfMonth = new Date(year + STARTING_YEAR, month, 1);\n const lastOfMonth = new Date(year + STARTING_YEAR, month + 1, 0);\n const days = lastOfMonth.getDate() + (firstOfMonth.getDay() || 7) - 1;\n\n return Math.ceil(days / 7);\n}\n","import {CdkVirtualScrollViewport, VirtualScrollStrategy} from '@angular/cdk/scrolling';\nimport {MONTHS_IN_YEAR, tuiPure, TuiScrollService} from '@taiga-ui/cdk';\nimport {Observable, Subject} from 'rxjs';\nimport {distinctUntilChanged} from 'rxjs/operators';\n\nimport {\n ANDROID_CYCLE,\n BUFFER,\n IOS_CYCLE,\n RANGE,\n YEARLY_CYCLE,\n} from './mobile-calendar.const';\n\nconst ANDROID_CYCLE_HEIGHT = reduceCycle(ANDROID_CYCLE);\nconst IOS_CYCLE_HEIGHT = reduceCycle(IOS_CYCLE);\n\nfunction reduceCycle(\n cycle: ReadonlyArray<readonly number[]>,\n lastYear: number = 28,\n lastMonth: number = 12,\n): number {\n return cycle.reduce(\n (total, year, yearIndex) =>\n yearIndex <= lastYear\n ? total +\n year.reduce(\n (sum, month, monthIndex) =>\n yearIndex < lastYear ||\n (yearIndex === lastYear && monthIndex < lastMonth)\n ? sum + month\n : sum,\n 0,\n )\n : total,\n 0,\n );\n}\n\n/**\n * This scroll strategy is hard wired with styles for iOS and Android.\n * It is dependent on month height on those platforms and is designed to\n * work for {@link TuiMobileCalendarComponent} with years 1906 to 2102\n */\nexport class TuiMobileCalendarStrategy implements VirtualScrollStrategy {\n private readonly index$ = new Subject<number>();\n\n private viewport: CdkVirtualScrollViewport | null = null;\n\n constructor(\n private readonly isIos: boolean,\n private readonly scrollService: TuiScrollService,\n ) {}\n\n @tuiPure\n get scrolledIndexChange(): Observable<number> {\n return this.index$.pipe(distinctUntilChanged());\n }\n\n attach(viewport: CdkVirtualScrollViewport): void {\n const cycle = this.isIos ? IOS_CYCLE_HEIGHT : ANDROID_CYCLE_HEIGHT;\n\n this.viewport = viewport;\n this.viewport.setTotalContentSize(cycle * 7);\n this.updateRenderedRange(this.viewport);\n }\n\n detach(): void {\n this.index$.complete();\n this.viewport = null;\n }\n\n onContentScrolled(): void {\n if (this.viewport) {\n this.updateRenderedRange(this.viewport);\n }\n }\n\n /** These do not matter for this case */\n onDataLengthChanged(): void {}\n onContentRendered(): void {}\n onRenderedOffsetChanged(): void {}\n\n scrollToIndex(index: number, behavior: ScrollBehavior): void {\n if (!this.viewport) {\n return;\n }\n\n const scrollTop = this.getOffsetForIndex(index);\n\n if (behavior !== 'smooth') {\n this.viewport.scrollToOffset(scrollTop, behavior);\n\n return;\n }\n\n this.scrollService\n .scroll$(this.viewport.elementRef.nativeElement, scrollTop)\n .subscribe();\n }\n\n private getOffsetForIndex(index: number): number {\n const month = index % MONTHS_IN_YEAR;\n const year = (index - month) / MONTHS_IN_YEAR;\n\n return this.computeHeight(year, month);\n }\n\n private getIndexForOffset(offset: number): number {\n const cycle = this.isIos ? IOS_CYCLE : ANDROID_CYCLE;\n const cycleHeight = this.isIos ? IOS_CYCLE_HEIGHT : ANDROID_CYCLE_HEIGHT;\n const remainder = offset % cycleHeight;\n const years = ((offset - remainder) / cycleHeight) * YEARLY_CYCLE;\n\n let accumulator = 0;\n\n for (let year = 0; year < cycle.length; year++) {\n for (let month = 0; month < cycle[year].length; month++) {\n accumulator += cycle[year][month];\n\n if (accumulator - cycle[year][month] / 2 > remainder) {\n return Math.max((years + year) * MONTHS_IN_YEAR + month, 0);\n }\n }\n }\n\n return RANGE;\n }\n\n private computeHeight(year: number, month?: number): number {\n const cycle = this.isIos ? IOS_CYCLE : ANDROID_CYCLE;\n const remainder = year % YEARLY_CYCLE;\n const remainderHeight = reduceCycle(cycle, remainder, month);\n const fullCycles = (year - remainder) / YEARLY_CYCLE;\n const fullCyclesHeight = this.isIos\n ? fullCycles * IOS_CYCLE_HEIGHT\n : fullCycles * ANDROID_CYCLE_HEIGHT;\n\n return fullCyclesHeight + remainderHeight;\n }\n\n private updateRenderedRange(viewport: CdkVirtualScrollViewport): void {\n const offset = viewport.measureScrollOffset();\n const {start, end} = viewport.getRenderedRange();\n const viewportSize = viewport.getViewportSize();\n const dataLength = viewport.getDataLength();\n const newRange = {start, end};\n const firstVisibleIndex = this.getIndexForOffset(offset);\n const startBuffer = offset - this.getOffsetForIndex(start);\n\n if (startBuffer < BUFFER && start !== 0) {\n newRange.start = Math.max(0, this.getIndexForOffset(offset - BUFFER * 2));\n newRange.end = Math.min(\n dataLength,\n this.getIndexForOffset(offset + viewportSize + BUFFER),\n );\n } else {\n const endBuffer = this.getOffsetForIndex(end) - offset - viewportSize;\n\n if (endBuffer < BUFFER && end !== dataLength) {\n newRange.start = Math.max(0, this.getIndexForOffset(offset - BUFFER));\n newRange.end = Math.min(\n dataLength,\n this.getIndexForOffset(offset + viewportSize + BUFFER * 2),\n );\n }\n }\n\n viewport.setRenderedRange(newRange);\n viewport.setRenderedContentOffset(this.getOffsetForIndex(newRange.start));\n this.index$.next(firstVisibleIndex);\n }\n}\n","import {VIRTUAL_SCROLL_STRATEGY} from '@angular/cdk/scrolling';\nimport {ChangeDetectorRef, InjectionToken, Optional, Provider} from '@angular/core';\nimport {\n TUI_IS_IOS,\n TuiDayRange,\n TuiDestroyService,\n TuiScrollService,\n watch,\n} from '@taiga-ui/cdk';\nimport {TUI_CALENDAR_DATA_STREAM} from '@taiga-ui/kit';\nimport {EMPTY, Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\nimport {TuiMobileCalendarStrategy} from './mobile-calendar.strategy';\n\nexport const TUI_VALUE_STREAM = new InjectionToken<Observable<TuiDayRange | null>>(\n 'Stream for updating value',\n);\nexport const TUI_MOBILE_CALENDAR_PROVIDERS: Provider[] = [\n TuiDestroyService,\n TuiScrollService,\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n deps: [TUI_IS_IOS, TuiScrollService],\n useClass: TuiMobileCalendarStrategy,\n },\n {\n provide: TUI_VALUE_STREAM,\n deps: [\n [new Optional(), TUI_CALENDAR_DATA_STREAM],\n TuiDestroyService,\n ChangeDetectorRef,\n ],\n useFactory: valueStreamFactory,\n },\n];\n\nexport function valueStreamFactory(\n value$: Observable<TuiDayRange | null> | null,\n destroy$: Observable<void>,\n changeDetectorRef: ChangeDetectorRef,\n): Observable<TuiDayRange | null> {\n return (value$ || EMPTY).pipe(watch(changeDetectorRef), takeUntil(destroy$));\n}\n","import {CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\nimport {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Inject,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n ALWAYS_FALSE_HANDLER,\n MONTHS_IN_YEAR,\n TUI_FIRST_DAY,\n TUI_IS_IOS,\n TUI_LAST_DAY,\n TuiBooleanHandler,\n TuiDay,\n TuiDayRange,\n tuiDefaultProp,\n TuiDestroyService,\n TuiMapper,\n TuiMonth,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {TUI_CLOSE_WORD, TUI_ORDERED_SHORT_WEEK_DAYS} from '@taiga-ui/core';\nimport {\n TUI_CANCEL_WORD,\n TUI_CHOOSE_DAY_OR_RANGE_TEXTS,\n TUI_DONE_WORD,\n} from '@taiga-ui/kit';\nimport {identity, MonoTypeOperatorFunction, Observable, race, timer} from 'rxjs';\nimport {\n debounceTime,\n delay,\n filter,\n flatMap,\n map,\n switchMap,\n switchMapTo,\n take,\n takeUntil,\n windowToggle,\n} from 'rxjs/operators';\n\nimport {\n RANGE,\n SCROLL_DEBOUNCE_TIME,\n STARTING_YEAR,\n YEARS_IN_ROW,\n} from './mobile-calendar.const';\nimport {\n TUI_MOBILE_CALENDAR_PROVIDERS,\n TUI_VALUE_STREAM,\n} from './mobile-calendar.providers';\n\n// @dynamic\n@Component({\n selector: 'tui-mobile-calendar',\n templateUrl: './mobile-calendar.template.html',\n styleUrls: ['./mobile-calendar.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_MOBILE_CALENDAR_PROVIDERS,\n host: {'[class._ios]': 'isIOS'},\n})\nexport class TuiMobileCalendarComponent {\n @ViewChild('yearsScrollRef')\n private readonly yearsScrollRef?: CdkVirtualScrollViewport;\n\n @ViewChild('monthsScrollRef')\n private readonly monthsScrollRef?: CdkVirtualScrollViewport;\n\n private readonly today = TuiDay.currentLocal();\n private activeYear = this.initialYear;\n private activeMonth = this.initialMonth;\n\n @Input()\n @tuiDefaultProp()\n single = true;\n\n @Input()\n @tuiDefaultProp()\n min = TUI_FIRST_DAY;\n\n @Input()\n @tuiDefaultProp()\n max = TUI_LAST_DAY;\n\n @Input()\n @tuiDefaultProp()\n disabledItemHandler: TuiBooleanHandler<TuiDay> = ALWAYS_FALSE_HANDLER;\n\n @Output()\n readonly cancel = new EventEmitter<void>();\n\n @Output()\n readonly confirm = new EventEmitter<TuiDayRange | TuiDay>();\n\n value: TuiDay | TuiDayRange | null = null;\n\n readonly years = Array.from({length: RANGE}, (_, i) => i + STARTING_YEAR);\n\n readonly months = Array.from(\n {length: RANGE * 12},\n (_, i) =>\n new TuiMonth(\n Math.floor(i / MONTHS_IN_YEAR) + STARTING_YEAR,\n i % MONTHS_IN_YEAR,\n ),\n );\n\n constructor(\n @Inject(TUI_IS_IOS) readonly isIOS: boolean,\n @Inject(DOCUMENT) private readonly documentRef: Document,\n @Inject(TuiDestroyService)\n private readonly destroy$: TuiDestroyService,\n @Inject(TUI_VALUE_STREAM) valueChanges: Observable<TuiDayRange | null>,\n @Inject(TUI_CLOSE_WORD) readonly closeWord$: Observable<string>,\n @Inject(TUI_CANCEL_WORD) readonly cancelWord$: Observable<string>,\n @Inject(TUI_DONE_WORD) readonly doneWord$: Observable<string>,\n @Inject(TUI_ORDERED_SHORT_WEEK_DAYS)\n readonly weekDays$: Observable<\n [string, string, string, string, string, string, string]\n >,\n @Inject(TUI_CHOOSE_DAY_OR_RANGE_TEXTS)\n readonly chooseDayOrRangeTexts$: Observable<[string, string]>,\n ) {\n valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\n this.value = value;\n });\n }\n\n get yearWidth(): number {\n return this.documentRef.documentElement.clientWidth / YEARS_IN_ROW;\n }\n\n ngAfterViewInit(): void {\n // Virtual scroll has not yet rendered items even in ngAfterViewInit\n this.waitScrolledChange();\n }\n\n onClose(): void {\n this.cancel.emit();\n }\n\n onConfirm(): void {\n if (this.value) {\n this.confirm.emit(this.value);\n } else {\n this.cancel.emit();\n }\n }\n\n onDayClick(day: TuiDay): void {\n if (this.single) {\n this.value = day;\n\n return;\n }\n\n if (\n this.value === null ||\n this.value instanceof TuiDay ||\n !this.value.isSingleDay\n ) {\n this.value = new TuiDayRange(day, day);\n\n return;\n }\n\n this.value = TuiDayRange.sort(this.value.from, day);\n }\n\n getState(index: number): 'active' | 'adjacent' | null {\n if (this.isYearActive(index)) {\n return 'active';\n }\n\n if (this.isYearActive(index - 1) || this.isYearActive(index + 1)) {\n return 'adjacent';\n }\n\n return null;\n }\n\n onMonthChange(month: number): void {\n // Skipping initial callback where index === 0\n if (!month || this.activeMonth === month) {\n return;\n }\n\n this.activeMonth = month;\n\n const activeYear = this.monthToYear(month);\n\n if (activeYear === this.activeYear) {\n return;\n }\n\n this.activeYear = activeYear;\n this.scrollToActiveYear();\n }\n\n setYear(year: number): void {\n if (this.activeYear === year) {\n return;\n }\n\n this.activeMonth += this.getMonthOffset(year);\n this.activeYear = year;\n this.scrollToActiveYear('smooth');\n\n // Delay is required to run months scroll in the next frame to prevent flicker\n setTimeout(() => {\n this.scrollToActiveMonth();\n });\n }\n\n readonly disabledItemHandlerMapper: TuiMapper<\n TuiBooleanHandler<TuiDay>,\n TuiBooleanHandler<TuiDay>\n > = (disabledItemHandler, min: TuiDay, max: TuiDay) => item =>\n item.dayBefore(min) ||\n (max !== null && item.dayAfter(max)) ||\n disabledItemHandler(item);\n\n private get initialYear(): number {\n if (!this.value) {\n return this.today.year;\n }\n\n if (this.value instanceof TuiDay) {\n return this.value.year;\n }\n\n return this.value.from.year;\n }\n\n private get initialMonth(): number {\n if (!this.value) {\n return this.today.month + (this.today.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n }\n\n if (this.value instanceof TuiDay) {\n return this.value.month + (this.value.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n }\n\n return (\n this.value.from.month +\n (this.value.from.year - STARTING_YEAR) * MONTHS_IN_YEAR\n );\n }\n\n private getYearsViewportSize(): number {\n return this.yearsScrollRef?.getViewportSize() || 0;\n }\n\n private updateViewportDimension(): void {\n this.yearsScrollRef?.checkViewportSize();\n this.monthsScrollRef?.checkViewportSize();\n }\n\n private lateInit(): MonoTypeOperatorFunction<number> {\n return this.getYearsViewportSize() > 0 ? identity : delay(200);\n }\n\n private waitScrolledChange(): void {\n this.updateViewportDimension();\n\n this.monthsScrollRef?.scrolledIndexChange\n .pipe(this.lateInit(), take(1), takeUntil(this.destroy$))\n .subscribe(() => {\n this.updateViewportDimension();\n this.initYearScroll();\n this.initMonthScroll();\n this.scrollToActiveYear();\n this.scrollToActiveMonth();\n });\n }\n\n private initYearScroll(): void {\n const {yearsScrollRef} = this;\n\n if (!yearsScrollRef) {\n return;\n }\n\n const touchstart$ = typedFromEvent(\n yearsScrollRef.elementRef.nativeElement,\n 'touchstart',\n );\n const touchend$ = typedFromEvent(\n yearsScrollRef.elementRef.nativeElement,\n 'touchend',\n );\n const click$ = typedFromEvent(yearsScrollRef.elementRef.nativeElement, 'click');\n\n // Refresh activeYear\n yearsScrollRef\n .elementScrolled()\n .pipe(\n // Ignore smooth scroll resulting from click on the exact year\n windowToggle(touchstart$, () => click$),\n flatMap(x => x),\n // Delay is required to run months scroll in the next frame to prevent flicker\n delay(0),\n map(\n () =>\n Math.round(\n yearsScrollRef.measureScrollOffset() / this.yearWidth,\n ) +\n Math.floor(YEARS_IN_ROW / 2) +\n STARTING_YEAR,\n ),\n filter(activeYear => activeYear !== this.activeYear),\n takeUntil(this.destroy$),\n )\n .subscribe(activeYear => {\n this.activeMonth += this.getMonthOffset(activeYear);\n this.activeYear = activeYear;\n this.scrollToActiveMonth();\n });\n\n // Smooth scroll to activeYear after scrolling is done\n touchstart$\n .pipe(\n switchMap(() => touchend$),\n switchMap(() =>\n race<unknown>(\n yearsScrollRef.elementScrolled(),\n timer(SCROLL_DEBOUNCE_TIME),\n ).pipe(\n debounceTime(SCROLL_DEBOUNCE_TIME * 2),\n take(1),\n takeUntil(touchstart$),\n ),\n ),\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this.scrollToActiveYear('smooth');\n });\n }\n\n private initMonthScroll(): void {\n const {monthsScrollRef} = this;\n\n if (!monthsScrollRef) {\n return;\n }\n\n const touchstart$ = typedFromEvent(\n monthsScrollRef.elementRef.nativeElement,\n 'touchstart',\n {passive: true},\n );\n const touchend$ = typedFromEvent(\n monthsScrollRef.elementRef.nativeElement,\n 'touchend',\n );\n\n // Smooth scroll to the closest month after scrolling is done\n touchstart$\n .pipe(\n switchMapTo(touchend$),\n switchMapTo(\n race<unknown>(\n monthsScrollRef.elementScrolled(),\n timer(SCROLL_DEBOUNCE_TIME),\n ).pipe(\n debounceTime(SCROLL_DEBOUNCE_TIME * 2),\n take(1),\n takeUntil(touchstart$),\n ),\n ),\n takeUntil(this.destroy$),\n )\n .subscribe(() => {\n this.scrollToActiveMonth('smooth');\n });\n }\n\n private scrollToActiveYear(behavior?: ScrollBehavior): void {\n this.yearsScrollRef?.scrollToIndex(\n Math.max(this.activeYear - STARTING_YEAR - 2, 0),\n behavior,\n );\n }\n\n private scrollToActiveMonth(behavior?: ScrollBehavior): void {\n this.monthsScrollRef?.scrollToIndex(this.activeMonth, behavior);\n }\n\n private isYearActive(index: number): boolean {\n return index === this.activeYear;\n }\n\n private monthToYear(month: number): number {\n return Math.ceil((month + 1) / MONTHS_IN_YEAR) + STARTING_YEAR - 1;\n }\n\n private getMonthOffset(year: number): number {\n return (year - this.activeYear) * MONTHS_IN_YEAR;\n }\n}\n","import {ScrollingModule} from '@angular/cdk/scrolling';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiRippleModule} from '@taiga-ui/addon-mobile/directives/ripple';\nimport {TuiTouchableModule} from '@taiga-ui/addon-mobile/directives/touchable';\nimport {TuiPrimitiveCalendarMobileModule} from '@taiga-ui/addon-mobile/internal/primitive-calendar-mobile';\nimport {TuiMapperPipeModule} from '@taiga-ui/cdk';\nimport {TuiButtonModule, TuiLinkModule, TuiMonthPipeModule} from '@taiga-ui/core';\n\nimport {TuiMobileCalendarComponent} from './mobile-calendar.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ScrollingModule,\n TuiTouchableModule,\n TuiRippleModule,\n TuiMapperPipeModule,\n TuiLinkModule,\n TuiPrimitiveCalendarMobileModule,\n TuiButtonModule,\n TuiMonthPipeModule,\n ],\n declarations: [TuiMobileCalendarComponent],\n exports: [TuiMobileCalendarComponent],\n})\nexport class TuiMobileCalendarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-addon-mobile-components-mobile-dialog.js","sources":["ng://@taiga-ui/addon-mobile/components/mobile-dialog/mobile-dialog.component.ts","ng://@taiga-ui/addon-mobile/components/mobile-dialog/mobile-dialog.service.ts","ng://@taiga-ui/addon-mobile/components/mobile-dialog/mobile-dialog.module.ts","ng://@taiga-ui/addon-mobile/components/mobile-dialog/taiga-ui-addon-mobile-components-mobile-dialog.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, Inject} from '@angular/core';\nimport {TUI_IS_IOS, TuiDialog} from '@taiga-ui/cdk';\nimport {POLYMORPHEUS_CONTEXT} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiMobileDialogOptions} from './mobile-dialog-options';\n\n// @dynamic\n@Component({\n selector: 'tui-mobile-dialog',\n templateUrl: './mobile-dialog.template.html',\n styleUrls: ['./mobile-dialog.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._ios]': 'isIOS',\n },\n})\nexport class TuiMobileDialogComponent<I> {\n constructor(\n @Inject(TUI_IS_IOS) readonly isIOS: boolean,\n @Inject(POLYMORPHEUS_CONTEXT)\n readonly context: TuiDialog<TuiMobileDialogOptions<I>, number>,\n ) {}\n\n onAction(index: number) {\n this.context.completeWith(index);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {AbstractTuiDialogService, TuiBaseDialogContext} from '@taiga-ui/cdk';\nimport {PolymorpheusComponent, PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {Observable} from 'rxjs';\n\nimport {TuiMobileDialogComponent} from './mobile-dialog.component';\nimport {TuiMobileDialogOptions} from './mobile-dialog-options';\n\nconst DIALOG = new PolymorpheusComponent(TuiMobileDialogComponent);\nconst DEFAULT_OPTIONS = {\n label: '',\n actions: ['OK'],\n} as const;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiMobileDialogService extends AbstractTuiDialogService<\n TuiMobileDialogOptions<any>\n> {\n protected readonly component = DIALOG;\n protected readonly defaultOptions: TuiMobileDialogOptions<any> =\n DEFAULT_OPTIONS as any;\n\n open<I, O = number>(\n content: PolymorpheusContent<TuiBaseDialogContext<O> & TuiMobileDialogOptions<I>>,\n options: Partial<TuiMobileDialogOptions<I>> = {},\n ): Observable<O> {\n return super.open(content, options);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiRippleModule} from '@taiga-ui/addon-mobile/directives/ripple';\nimport {TUI_DIALOGS} from '@taiga-ui/cdk';\nimport {TuiButtonModule} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiMobileDialogComponent} from './mobile-dialog.component';\nimport {TuiMobileDialogService} from './mobile-dialog.service';\n\n@NgModule({\n imports: [CommonModule, TuiButtonModule, TuiRippleModule, PolymorpheusModule],\n declarations: [TuiMobileDialogComponent],\n exports: [TuiMobileDialogComponent],\n providers: [\n {\n provide: TUI_DIALOGS,\n useExisting: TuiMobileDialogService,\n multi: true,\n },\n ],\n entryComponents: [TuiMobileDialogComponent],\n})\nexport class TuiMobileDialogModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAMA;;IAWI,kCACiC,KAAc,EAElC,OAAqD;QAFjC,UAAK,GAAL,KAAK,CAAS;QAElC,YAAO,GAAP,OAAO,CAA8C;KAC9D;IAEJ,2CAAQ,GAAR,UAAS,KAAa;QAClB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KACpC;;8CAPI,MAAM,SAAC,UAAU;gDACjB,MAAM,SAAC,oBAAoB;;IAHvB,wBAAwB;QATpC,SAAS,CAAC;YACP,QAAQ,EAAE,mBAAmB;YAC7B,+jBAA4C;YAE5C,eAAe,EAAE,uBAAuB,CAAC,MAAM;YAC/C,IAAI,EAAE;gBACF,cAAc,EAAE,OAAO;aAC1B;;SACJ,CAAC;QAGO,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;QAClB,WAAA,MAAM,CAAC,oBAAoB,CAAC,CAAA;OAHxB,wBAAwB,CAUpC;IAAD,+BAAC;CAVD;;ACRA,IAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,wBAAwB,CAAC,CAAC;AACnE,IAAM,eAAe,GAAG;IACpB,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,CAAC,IAAI,CAAC;CACT,CAAC;;IAKiC,0CAE3C;IAFD;QAAA,qEAaC;QAVsB,eAAS,GAAG,MAAM,CAAC;QACnB,oBAAc,GAC7B,eAAsB,CAAC;;KAQ9B;IANG,qCAAI,GAAJ,UACI,OAAiF,EACjF,OAAgD;QAAhD,wBAAA,EAAA,YAAgD;QAEhD,OAAO,iBAAM,IAAI,YAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KACvC;;IAZQ,sBAAsB;QAHlC,UAAU,CAAC;YACR,UAAU,EAAE,MAAM;SACrB,CAAC;OACW,sBAAsB,CAalC;iCA9BD;CA8BC,CAb2C,wBAAwB;;;ICMpE;KAAqC;IAAxB,qBAAqB;QAbjC,QAAQ,CAAC;YACN,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,CAAC;YAC7E,YAAY,EAAE,CAAC,wBAAwB,CAAC;YACxC,OAAO,EAAE,CAAC,wBAAwB,CAAC;YACnC,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,WAAW;oBACpB,WAAW,EAAE,sBAAsB;oBACnC,KAAK,EAAE,IAAI;iBACd;aACJ;YACD,eAAe,EAAE,CAAC,wBAAwB,CAAC;SAC9C,CAAC;OACW,qBAAqB,CAAG;IAAD,4BAAC;CAArC;;ACvBA;;;;;;"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-addon-mobile-components-mobile-dialog.js","sources":["ng://@taiga-ui/addon-mobile/components/mobile-dialog/mobile-dialog.component.ts","ng://@taiga-ui/addon-mobile/components/mobile-dialog/mobile-dialog.service.ts","ng://@taiga-ui/addon-mobile/components/mobile-dialog/mobile-dialog.module.ts","ng://@taiga-ui/addon-mobile/components/mobile-dialog/taiga-ui-addon-mobile-components-mobile-dialog.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, Inject} from '@angular/core';\nimport {TUI_IS_IOS, TuiDialog} from '@taiga-ui/cdk';\nimport {POLYMORPHEUS_CONTEXT} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiMobileDialogOptions} from './mobile-dialog-options';\n\n// @dynamic\n@Component({\n selector: 'tui-mobile-dialog',\n templateUrl: './mobile-dialog.template.html',\n styleUrls: ['./mobile-dialog.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._ios]': 'isIOS',\n },\n})\nexport class TuiMobileDialogComponent<I> {\n constructor(\n @Inject(TUI_IS_IOS) readonly isIOS: boolean,\n @Inject(POLYMORPHEUS_CONTEXT)\n readonly context: TuiDialog<TuiMobileDialogOptions<I>, number>,\n ) {}\n\n onAction(index: number): void {\n this.context.completeWith(index);\n }\n}\n","import {Injectable} from '@angular/core';\nimport {AbstractTuiDialogService, TuiBaseDialogContext} from '@taiga-ui/cdk';\nimport {PolymorpheusComponent, PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {Observable} from 'rxjs';\n\nimport {TuiMobileDialogComponent} from './mobile-dialog.component';\nimport {TuiMobileDialogOptions} from './mobile-dialog-options';\n\nconst DIALOG = new PolymorpheusComponent(TuiMobileDialogComponent);\nconst DEFAULT_OPTIONS = {\n label: '',\n actions: ['OK'],\n} as const;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TuiMobileDialogService extends AbstractTuiDialogService<\n TuiMobileDialogOptions<any>\n> {\n protected readonly component = DIALOG;\n protected readonly defaultOptions: TuiMobileDialogOptions<any> =\n DEFAULT_OPTIONS as any;\n\n open<I, O = number>(\n content: PolymorpheusContent<TuiBaseDialogContext<O> & TuiMobileDialogOptions<I>>,\n options: Partial<TuiMobileDialogOptions<I>> = {},\n ): Observable<O> {\n return super.open(content, options);\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiRippleModule} from '@taiga-ui/addon-mobile/directives/ripple';\nimport {TUI_DIALOGS} from '@taiga-ui/cdk';\nimport {TuiButtonModule} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiMobileDialogComponent} from './mobile-dialog.component';\nimport {TuiMobileDialogService} from './mobile-dialog.service';\n\n@NgModule({\n imports: [CommonModule, TuiButtonModule, TuiRippleModule, PolymorpheusModule],\n declarations: [TuiMobileDialogComponent],\n exports: [TuiMobileDialogComponent],\n providers: [\n {\n provide: TUI_DIALOGS,\n useExisting: TuiMobileDialogService,\n multi: true,\n },\n ],\n entryComponents: [TuiMobileDialogComponent],\n})\nexport class TuiMobileDialogModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAMA;;IAWI,kCACiC,KAAc,EAElC,OAAqD;QAFjC,UAAK,GAAL,KAAK,CAAS;QAElC,YAAO,GAAP,OAAO,CAA8C;KAC9D;IAEJ,2CAAQ,GAAR,UAAS,KAAa;QAClB,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KACpC;;8CAPI,MAAM,SAAC,UAAU;gDACjB,MAAM,SAAC,oBAAoB;;IAHvB,wBAAwB;QATpC,SAAS,CAAC;YACP,QAAQ,EAAE,mBAAmB;YAC7B,+jBAA4C;YAE5C,eAAe,EAAE,uBAAuB,CAAC,MAAM;YAC/C,IAAI,EAAE;gBACF,cAAc,EAAE,OAAO;aAC1B;;SACJ,CAAC;QAGO,WAAA,MAAM,CAAC,UAAU,CAAC,CAAA;QAClB,WAAA,MAAM,CAAC,oBAAoB,CAAC,CAAA;OAHxB,wBAAwB,CAUpC;IAAD,+BAAC;CAVD;;ACRA,IAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,wBAAwB,CAAC,CAAC;AACnE,IAAM,eAAe,GAAG;IACpB,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,CAAC,IAAI,CAAC;CACT,CAAC;;IAKiC,0CAE3C;IAFD;QAAA,qEAaC;QAVsB,eAAS,GAAG,MAAM,CAAC;QACnB,oBAAc,GAC7B,eAAsB,CAAC;;KAQ9B;IANG,qCAAI,GAAJ,UACI,OAAiF,EACjF,OAAgD;QAAhD,wBAAA,EAAA,YAAgD;QAEhD,OAAO,iBAAM,IAAI,YAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KACvC;;IAZQ,sBAAsB;QAHlC,UAAU,CAAC;YACR,UAAU,EAAE,MAAM;SACrB,CAAC;OACW,sBAAsB,CAalC;iCA9BD;CA8BC,CAb2C,wBAAwB;;;ICMpE;KAAqC;IAAxB,qBAAqB;QAbjC,QAAQ,CAAC;YACN,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,CAAC;YAC7E,YAAY,EAAE,CAAC,wBAAwB,CAAC;YACxC,OAAO,EAAE,CAAC,wBAAwB,CAAC;YACnC,SAAS,EAAE;gBACP;oBACI,OAAO,EAAE,WAAW;oBACpB,WAAW,EAAE,sBAAsB;oBACnC,KAAK,EAAE,IAAI;iBACd;aACJ;YACD,eAAe,EAAE,CAAC,wBAAwB,CAAC;SAC9C,CAAC;OACW,qBAAqB,CAAG;IAAD,4BAAC;CAArC;;ACvBA;;;;;;"}
|
|
@@ -148,7 +148,7 @@ var TuiPullToRefreshComponent = /** @class */ (function () {
|
|
|
148
148
|
TuiPullToRefreshComponent = __decorate([
|
|
149
149
|
Component({
|
|
150
150
|
selector: 'tui-pull-to-refresh',
|
|
151
|
-
template: "<div\n tuiOverscroll\n [class.t-drop-animation]=\"dropped$ | async\"\n [style.transform]=\"contentTransform$ | async\"\n>\n <ng-content></ng-content>\n</div>\n\n<tui-mobile-ios-loader\n *ngIf=\"isIOS; else
|
|
151
|
+
template: "<div\n tuiOverscroll\n [class.t-drop-animation]=\"dropped$ | async\"\n [style.transform]=\"contentTransform$ | async\"\n>\n <ng-content></ng-content>\n</div>\n\n<tui-mobile-ios-loader\n *ngIf=\"isIOS; else androidLoader\"\n class=\"t-ios-spinner\"\n [pulled]=\"(pulledInPercent$ | async) || 0\"\n></tui-mobile-ios-loader>\n\n<ng-template #androidLoader>\n <tui-mobile-android-loader\n class=\"t-android-loader\"\n [class.t-drop-animation]=\"dropped$ | async\"\n [style.transform]=\"loaderTransform$ | async\"\n [pulled]=\"(pulledInPercent$ | async) || 0\"\n ></tui-mobile-android-loader>\n</ng-template>\n",
|
|
152
152
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
153
153
|
providers: [TUI_PULL_TO_REFRESH_PROVIDERS],
|
|
154
154
|
styles: [":host{position:relative;display:block;overflow:hidden}.t-ios-spinner{position:absolute;top:-.5rem;left:50%;margin-left:-1.125rem}.t-android-loader{position:absolute;top:-1.5rem;left:50%;margin-left:-1.125rem}.t-drop-animation{transition:all var(--tui-duration) cubic-bezier(.4,0,.2,1)}"]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-addon-mobile-components-pull-to-refresh.js","sources":["ng://@taiga-ui/addon-mobile/components/pull-to-refresh/loader-android/loader-android.component.ts","ng://@taiga-ui/addon-mobile/components/pull-to-refresh/loader-iOS/loader-iOS.component.ts","ng://@taiga-ui/addon-mobile/components/pull-to-refresh/pull-to-refresh.providers.ts","ng://@taiga-ui/addon-mobile/components/pull-to-refresh/pull-to-refresh.component.ts","ng://@taiga-ui/addon-mobile/components/pull-to-refresh/pull-to-refresh.module.ts","ng://@taiga-ui/addon-mobile/components/pull-to-refresh/taiga-ui-addon-mobile-components-pull-to-refresh.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, HostBinding, Input} from '@angular/core';\n\nconst HIDDEN_DISTANCE = 2;\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 templateUrl: './loader-android.template.html',\n styleUrls: ['./loader-android.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiMobileLoaderAndroidComponent {\n @Input()\n pulled = 0;\n\n get transform(): string {\n const rotateX = Math.min(\n ROTATE_X_DEFAULT + this.pulled * ROTATE_X_MULTIPLIER,\n ROTATE_X_MAX,\n );\n\n return `rotate(${rotateX} 0 0)`;\n }\n\n @HostBinding('class._hidden')\n get hidden(): boolean {\n return this.pulled < HIDDEN_DISTANCE;\n }\n}\n","import {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TuiDestroyService} from '@taiga-ui/cdk';\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 changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiDestroyService],\n})\nexport class TuiMobileLoaderIOSComponent {\n @Input()\n pulled = 0;\n\n readonly steps = 12;\n\n get finished(): boolean {\n return this.pulled >= 100;\n }\n\n isShown(index: number): boolean {\n return this.pulled > (index + 1) * LOADED_STEP;\n }\n\n calculateTransform(index: number): string {\n return `rotate(${index * ROTATE_X_STEP} 50 50)`;\n }\n\n calculateAnimationBegin(index: number): string {\n return `${(index * LOADED_STEP) / 100}s`;\n }\n}\n","import {ElementRef, InjectionToken, Provider} from '@angular/core';\nimport {TUI_LOADED} from '@taiga-ui/addon-mobile/tokens';\nimport {TUI_IS_IOS, typedFromEvent} from '@taiga-ui/cdk';\nimport {merge, Observable} from 'rxjs';\nimport {endWith, filter, map, mapTo, scan, switchMap, takeUntil} from 'rxjs/operators';\n\nexport const MICRO_OFFSET = 10 ** -6;\nexport const PULLED_DISTANCE = 50;\n\nexport const TUI_PULLING = new InjectionToken<Observable<number>>(\n 'Stream that emits content pulling',\n);\n\nexport const TUI_PULL_TO_REFRESH_PROVIDERS: Provider[] = [\n {\n provide: TUI_PULLING,\n deps: [TUI_IS_IOS, TUI_LOADED, ElementRef],\n useFactory: pullingFactory,\n },\n];\n\nexport function pullingFactory(\n isIOS: boolean,\n loaded$: Observable<unknown>,\n {nativeElement}: ElementRef<HTMLElement>,\n): Observable<number> {\n return merge(\n typedFromEvent(nativeElement, 'touchstart', {passive: true}).pipe(\n filter(() => nativeElement.scrollTop === 0),\n switchMap(touchStart =>\n typedFromEvent(nativeElement, 'touchmove').pipe(\n map(\n touchMove =>\n touchMove.touches[0].clientY - touchStart.touches[0].clientY,\n ),\n takeUntil(typedFromEvent(nativeElement, 'touchend')),\n endWith(0),\n ),\n ),\n ),\n loaded$.pipe(mapTo(NaN)),\n ).pipe(\n scan((max, current) => {\n if (isNaN(current)) {\n return 0;\n }\n\n const androidLoading = !isIOS && max === PULLED_DISTANCE;\n const dropped = current === 0 && max > PULLED_DISTANCE;\n\n return androidLoading || dropped ? PULLED_DISTANCE : current + MICRO_OFFSET;\n }, 0),\n );\n}\n","import {ChangeDetectionStrategy, Component, Inject, Output} from '@angular/core';\nimport {TUI_IS_IOS, tuiPure} from '@taiga-ui/cdk';\nimport {Observable, of} from 'rxjs';\nimport {distinctUntilChanged, filter, map, mapTo} from 'rxjs/operators';\n\nimport {\n MICRO_OFFSET,\n PULLED_DISTANCE,\n TUI_PULL_TO_REFRESH_PROVIDERS,\n TUI_PULLING,\n} from './pull-to-refresh.providers';\n\nconst IOS_LOADING_DISTANCE = PULLED_DISTANCE / 2;\nconst ANDROID_MAX_DISTANCE = PULLED_DISTANCE * 1.5;\n\nfunction translateY(distance: number): string {\n return `translateY(${distance}px)`;\n}\n\n@Component({\n selector: 'tui-pull-to-refresh',\n templateUrl: './pull-to-refresh.template.html',\n styleUrls: ['./pull-to-refresh.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TUI_PULL_TO_REFRESH_PROVIDERS],\n})\nexport class TuiPullToRefreshComponent {\n @Output()\n readonly pulled: Observable<void> = this.pulling$.pipe(\n distinctUntilChanged(),\n filter(distance => distance === PULLED_DISTANCE),\n mapTo(undefined),\n );\n\n readonly pulledInPercent$: Observable<number> = this.pulling$.pipe(\n map(distance => (distance * 100) / PULLED_DISTANCE),\n );\n\n readonly dropped$: Observable<boolean> = this.pulling$.pipe(\n map(distance => distance <= MICRO_OFFSET || distance === PULLED_DISTANCE),\n distinctUntilChanged(),\n );\n\n readonly contentTransform$: Observable<string | null> = this.isIOS\n ? this.pulling$.pipe(\n map(distance =>\n distance === PULLED_DISTANCE ? IOS_LOADING_DISTANCE : distance,\n ),\n map(translateY),\n )\n : of(null);\n\n constructor(\n @Inject(TUI_IS_IOS) readonly isIOS: boolean,\n @Inject(TUI_PULLING) private readonly pulling$: Observable<number>,\n ) {}\n\n @tuiPure\n get loaderTransform$(): Observable<string> {\n return this.pulling$.pipe(\n map(distance => translateY(Math.min(distance, ANDROID_MAX_DISTANCE))),\n );\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiOverscrollModule, TuiRepeatTimesModule} from '@taiga-ui/cdk';\nimport {TuiSvgModule} from '@taiga-ui/core';\n\nimport {TuiMobileLoaderAndroidComponent} from './loader-android/loader-android.component';\nimport {TuiMobileLoaderIOSComponent} from './loader-iOS/loader-iOS.component';\nimport {TuiPullToRefreshComponent} from './pull-to-refresh.component';\n\n@NgModule({\n imports: [CommonModule, TuiSvgModule, TuiOverscrollModule, TuiRepeatTimesModule],\n declarations: [\n TuiPullToRefreshComponent,\n TuiMobileLoaderAndroidComponent,\n TuiMobileLoaderIOSComponent,\n ],\n exports: [TuiPullToRefreshComponent],\n})\nexport class TuiPullToRefreshModule {}\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.js","sources":["ng://@taiga-ui/addon-mobile/components/pull-to-refresh/loader-android/loader-android.component.ts","ng://@taiga-ui/addon-mobile/components/pull-to-refresh/loader-iOS/loader-iOS.component.ts","ng://@taiga-ui/addon-mobile/components/pull-to-refresh/pull-to-refresh.providers.ts","ng://@taiga-ui/addon-mobile/components/pull-to-refresh/pull-to-refresh.component.ts","ng://@taiga-ui/addon-mobile/components/pull-to-refresh/pull-to-refresh.module.ts","ng://@taiga-ui/addon-mobile/components/pull-to-refresh/taiga-ui-addon-mobile-components-pull-to-refresh.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, HostBinding, Input} from '@angular/core';\n\nconst HIDDEN_DISTANCE = 2;\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 templateUrl: './loader-android.template.html',\n styleUrls: ['./loader-android.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiMobileLoaderAndroidComponent {\n @Input()\n pulled = 0;\n\n get transform(): string {\n const rotateX = Math.min(\n ROTATE_X_DEFAULT + this.pulled * ROTATE_X_MULTIPLIER,\n ROTATE_X_MAX,\n );\n\n return `rotate(${rotateX} 0 0)`;\n }\n\n @HostBinding('class._hidden')\n get hidden(): boolean {\n return this.pulled < HIDDEN_DISTANCE;\n }\n}\n","import {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {TuiDestroyService} from '@taiga-ui/cdk';\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 changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiDestroyService],\n})\nexport class TuiMobileLoaderIOSComponent {\n @Input()\n pulled = 0;\n\n readonly steps = 12;\n\n get finished(): boolean {\n return this.pulled >= 100;\n }\n\n isShown(index: number): boolean {\n return this.pulled > (index + 1) * LOADED_STEP;\n }\n\n calculateTransform(index: number): string {\n return `rotate(${index * ROTATE_X_STEP} 50 50)`;\n }\n\n calculateAnimationBegin(index: number): string {\n return `${(index * LOADED_STEP) / 100}s`;\n }\n}\n","import {ElementRef, InjectionToken, Provider} from '@angular/core';\nimport {TUI_LOADED} from '@taiga-ui/addon-mobile/tokens';\nimport {TUI_IS_IOS, typedFromEvent} from '@taiga-ui/cdk';\nimport {merge, Observable} from 'rxjs';\nimport {endWith, filter, map, mapTo, scan, switchMap, takeUntil} from 'rxjs/operators';\n\nexport const MICRO_OFFSET = 10 ** -6;\nexport const PULLED_DISTANCE = 50;\n\nexport const TUI_PULLING = new InjectionToken<Observable<number>>(\n 'Stream that emits content pulling',\n);\n\nexport const TUI_PULL_TO_REFRESH_PROVIDERS: Provider[] = [\n {\n provide: TUI_PULLING,\n deps: [TUI_IS_IOS, TUI_LOADED, ElementRef],\n useFactory: pullingFactory,\n },\n];\n\nexport function pullingFactory(\n isIOS: boolean,\n loaded$: Observable<unknown>,\n {nativeElement}: ElementRef<HTMLElement>,\n): Observable<number> {\n return merge(\n typedFromEvent(nativeElement, 'touchstart', {passive: true}).pipe(\n filter(() => nativeElement.scrollTop === 0),\n switchMap(touchStart =>\n typedFromEvent(nativeElement, 'touchmove').pipe(\n map(\n touchMove =>\n touchMove.touches[0].clientY - touchStart.touches[0].clientY,\n ),\n takeUntil(typedFromEvent(nativeElement, 'touchend')),\n endWith(0),\n ),\n ),\n ),\n loaded$.pipe(mapTo(NaN)),\n ).pipe(\n scan((max, current) => {\n if (isNaN(current)) {\n return 0;\n }\n\n const androidLoading = !isIOS && max === PULLED_DISTANCE;\n const dropped = current === 0 && max > PULLED_DISTANCE;\n\n return androidLoading || dropped ? PULLED_DISTANCE : current + MICRO_OFFSET;\n }, 0),\n );\n}\n","import {ChangeDetectionStrategy, Component, Inject, Output} from '@angular/core';\nimport {TUI_IS_IOS, tuiPure} from '@taiga-ui/cdk';\nimport {Observable, of} from 'rxjs';\nimport {distinctUntilChanged, filter, map, mapTo} from 'rxjs/operators';\n\nimport {\n MICRO_OFFSET,\n PULLED_DISTANCE,\n TUI_PULL_TO_REFRESH_PROVIDERS,\n TUI_PULLING,\n} from './pull-to-refresh.providers';\n\nconst IOS_LOADING_DISTANCE = PULLED_DISTANCE / 2;\nconst ANDROID_MAX_DISTANCE = PULLED_DISTANCE * 1.5;\n\nfunction translateY(distance: number): string {\n return `translateY(${distance}px)`;\n}\n\n@Component({\n selector: 'tui-pull-to-refresh',\n templateUrl: './pull-to-refresh.template.html',\n styleUrls: ['./pull-to-refresh.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TUI_PULL_TO_REFRESH_PROVIDERS],\n})\nexport class TuiPullToRefreshComponent {\n @Output()\n readonly pulled: Observable<void> = this.pulling$.pipe(\n distinctUntilChanged(),\n filter(distance => distance === PULLED_DISTANCE),\n mapTo(undefined),\n );\n\n readonly pulledInPercent$: Observable<number> = this.pulling$.pipe(\n map(distance => (distance * 100) / PULLED_DISTANCE),\n );\n\n readonly dropped$: Observable<boolean> = this.pulling$.pipe(\n map(distance => distance <= MICRO_OFFSET || distance === PULLED_DISTANCE),\n distinctUntilChanged(),\n );\n\n readonly contentTransform$: Observable<string | null> = this.isIOS\n ? this.pulling$.pipe(\n map(distance =>\n distance === PULLED_DISTANCE ? IOS_LOADING_DISTANCE : distance,\n ),\n map(translateY),\n )\n : of(null);\n\n constructor(\n @Inject(TUI_IS_IOS) readonly isIOS: boolean,\n @Inject(TUI_PULLING) private readonly pulling$: Observable<number>,\n ) {}\n\n @tuiPure\n get loaderTransform$(): Observable<string> {\n return this.pulling$.pipe(\n map(distance => translateY(Math.min(distance, ANDROID_MAX_DISTANCE))),\n );\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiOverscrollModule, TuiRepeatTimesModule} from '@taiga-ui/cdk';\nimport {TuiSvgModule} from '@taiga-ui/core';\n\nimport {TuiMobileLoaderAndroidComponent} from './loader-android/loader-android.component';\nimport {TuiMobileLoaderIOSComponent} from './loader-iOS/loader-iOS.component';\nimport {TuiPullToRefreshComponent} from './pull-to-refresh.component';\n\n@NgModule({\n imports: [CommonModule, TuiSvgModule, TuiOverscrollModule, TuiRepeatTimesModule],\n declarations: [\n TuiPullToRefreshComponent,\n TuiMobileLoaderAndroidComponent,\n TuiMobileLoaderIOSComponent,\n ],\n exports: [TuiPullToRefreshComponent],\n})\nexport class TuiPullToRefreshModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __read, __decorate, __param, __assign, __spread, __extends } from 'tslib';
|
|
2
|
-
import { Inject, ElementRef, Component, ChangeDetectionStrategy, InjectionToken, NgZone, ViewChild, ViewChildren, Input, HostListener, ɵɵdefineInjectable, ɵɵinject, Injectable, Output, Directive, ContentChild, ChangeDetectorRef, TemplateRef, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
|
|
2
|
+
import { Inject, ElementRef, Component, ChangeDetectionStrategy, InjectionToken, NgZone, ViewChild, ViewChildren, Input, HostListener, inject, ɵɵdefineInjectable, ɵɵinject, Injectable, Output, Directive, forwardRef, ContentChild, ChangeDetectorRef, TemplateRef, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
|
|
3
3
|
import { typedFromEvent, tuiZonefree, TuiIdService, TUI_IS_IOS, EMPTY_QUERY, tuiZonefull, tuiPure, clamp, TUI_WINDOW_HEIGHT, TuiDestroyService, tuiDefaultProp, tuiRequiredSetter, TuiLetModule, TuiOverscrollModule } from '@taiga-ui/cdk';
|
|
4
4
|
import { TUI_CLOSE_WORD, TUI_SCROLL_REF, tuiSlideInTop, tuiZonefulMap, TUI_ANIMATION_OPTIONS, tuiFadeIn, TuiButtonModule, TuiScrollbarModule } from '@taiga-ui/core';
|
|
5
5
|
import { TUI_MORE_WORD } from '@taiga-ui/kit';
|
|
@@ -80,6 +80,7 @@ var TuiSheetHeadingComponent = /** @class */ (function () {
|
|
|
80
80
|
|
|
81
81
|
var TUI_SHEET_SCROLL = new InjectionToken('Current scrollTop of a sheet');
|
|
82
82
|
var TUI_SHEET_DRAGGED = new InjectionToken('The sheet is being dragged');
|
|
83
|
+
/** @deprecated use option argument for each Sheet */
|
|
83
84
|
var TUI_SHEET_OFFSET = new InjectionToken('Offset from the top at which the sheet stops', {
|
|
84
85
|
factory: function () { return 16; },
|
|
85
86
|
});
|
|
@@ -289,11 +290,12 @@ var TUI_SHEET_DEFAULT_OPTIONS = {
|
|
|
289
290
|
imageSlide: true,
|
|
290
291
|
stops: [],
|
|
291
292
|
initial: 0,
|
|
293
|
+
offset: 16,
|
|
292
294
|
closeable: true,
|
|
293
295
|
overlay: false,
|
|
294
296
|
};
|
|
295
297
|
var TUI_SHEET_OPTIONS = new InjectionToken('Default parameters for sheet component', {
|
|
296
|
-
factory: function () { return TUI_SHEET_DEFAULT_OPTIONS; },
|
|
298
|
+
factory: function () { return (__assign(__assign({}, TUI_SHEET_DEFAULT_OPTIONS), { offset: inject(TUI_SHEET_OFFSET) })); },
|
|
297
299
|
});
|
|
298
300
|
|
|
299
301
|
var TuiSheetService = /** @class */ (function () {
|
|
@@ -333,8 +335,7 @@ var TuiSheetService = /** @class */ (function () {
|
|
|
333
335
|
|
|
334
336
|
// @dynamic
|
|
335
337
|
var TuiSheetsHostComponent = /** @class */ (function () {
|
|
336
|
-
function TuiSheetsHostComponent(
|
|
337
|
-
this.offset = offset;
|
|
338
|
+
function TuiSheetsHostComponent(options, service, height$) {
|
|
338
339
|
this.options = options;
|
|
339
340
|
this.service = service;
|
|
340
341
|
this.height$ = height$;
|
|
@@ -345,11 +346,7 @@ var TuiSheetsHostComponent = /** @class */ (function () {
|
|
|
345
346
|
$implicit.complete();
|
|
346
347
|
}
|
|
347
348
|
};
|
|
348
|
-
TuiSheetsHostComponent.prototype.getHeight = function (height) {
|
|
349
|
-
return (height !== null && height !== void 0 ? height : 0) - this.offset;
|
|
350
|
-
};
|
|
351
349
|
TuiSheetsHostComponent.ctorParameters = function () { return [
|
|
352
|
-
{ type: Number, decorators: [{ type: Inject, args: [TUI_SHEET_OFFSET,] }] },
|
|
353
350
|
{ type: undefined, decorators: [{ type: Inject, args: [TUI_ANIMATION_OPTIONS,] }] },
|
|
354
351
|
{ type: TuiSheetService, decorators: [{ type: Inject, args: [TuiSheetService,] }] },
|
|
355
352
|
{ type: Observable, decorators: [{ type: Inject, args: [TUI_WINDOW_HEIGHT,] }] }
|
|
@@ -357,15 +354,14 @@ var TuiSheetsHostComponent = /** @class */ (function () {
|
|
|
357
354
|
TuiSheetsHostComponent = __decorate([
|
|
358
355
|
Component({
|
|
359
356
|
selector: 'tui-sheets-host',
|
|
360
|
-
template: "<ng-container *ngIf=\"service.sheets$ | async as items\">\n <div\n *ngFor=\"let item of items\"\n
|
|
357
|
+
template: "<ng-container *ngIf=\"service.sheets$ | async as items\">\n <div\n *ngFor=\"let item of items\"\n class=\"t-wrapper\"\n [@tuiSlideInTop]=\"options\"\n [@tuiFadeIn]=\"options\"\n [tuiSheetWrapper]=\"item.offset\"\n [class.t-wrapper_overlay]=\"item.overlay\"\n [class.t-wrapper_closeable]=\"item.closeable\"\n >\n <tui-sheet\n tuiScrollRef\n tuiOverscroll=\"all\"\n [style.height.px]=\"((height$ | async) || 0) - item.offset\"\n [item]=\"item\"\n (close)=\"close(item)\"\n ></tui-sheet>\n </div>\n <div\n class=\"t-overlay\"\n (click)=\"close(items[0])\"\n ></div>\n</ng-container>\n",
|
|
361
358
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
362
359
|
animations: [tuiSlideInTop, tuiFadeIn],
|
|
363
360
|
styles: [":host{position:-webkit-sticky;position:sticky;bottom:0;display:block;height:0}.t-overlay{transition-property:opacity;transition-duration:var(--tui-duration,300ms);transition-timing-function:ease-in-out;position:fixed;top:0;left:0;width:100%;z-index:-1;height:100vh;background:#000;opacity:.001;pointer-events:none}._overlay~.t-overlay,.t-wrapper_overlay~.t-overlay{opacity:.8;pointer-events:auto;touch-action:none}.t-wrapper{position:absolute;bottom:0;z-index:0;width:100%;height:100vh;overflow:hidden}.t-wrapper._overlay,.t-wrapper._visible,.t-wrapper_overlay{overflow:visible}"]
|
|
364
361
|
}),
|
|
365
|
-
__param(0, Inject(
|
|
366
|
-
__param(1, Inject(
|
|
367
|
-
__param(2, Inject(
|
|
368
|
-
__param(3, Inject(TUI_WINDOW_HEIGHT))
|
|
362
|
+
__param(0, Inject(TUI_ANIMATION_OPTIONS)),
|
|
363
|
+
__param(1, Inject(TuiSheetService)),
|
|
364
|
+
__param(2, Inject(TUI_WINDOW_HEIGHT))
|
|
369
365
|
], TuiSheetsHostComponent);
|
|
370
366
|
return TuiSheetsHostComponent;
|
|
371
367
|
}());
|
|
@@ -457,10 +453,10 @@ var TuiSheetStopDirective = /** @class */ (function () {
|
|
|
457
453
|
var OFFSET = 10;
|
|
458
454
|
// @dynamic
|
|
459
455
|
var TuiSheetTopDirective = /** @class */ (function () {
|
|
460
|
-
function TuiSheetTopDirective(scroll$,
|
|
456
|
+
function TuiSheetTopDirective(scroll$, component, windowRef) {
|
|
461
457
|
var _this = this;
|
|
462
458
|
this.scroll$ = scroll$;
|
|
463
|
-
this.
|
|
459
|
+
this.component = component;
|
|
464
460
|
this.windowRef = windowRef;
|
|
465
461
|
this.stop = 0;
|
|
466
462
|
this.transform$ = this.scroll$.pipe(map(function (y) { return "translateY(" + _this.getY(y) + "%) scaleX(-1)"; }));
|
|
@@ -469,12 +465,12 @@ var TuiSheetTopDirective = /** @class */ (function () {
|
|
|
469
465
|
}
|
|
470
466
|
TuiSheetTopDirective.prototype.getY = function (scrollTop) {
|
|
471
467
|
var value = scrollTop - this.stop;
|
|
472
|
-
var total = this.windowRef.innerHeight - this.offset - this.stop;
|
|
468
|
+
var total = this.windowRef.innerHeight - this.component.item.offset - this.stop;
|
|
473
469
|
return this.stop && clamp(100 - (value / total) * 100, 0, 100);
|
|
474
470
|
};
|
|
475
471
|
TuiSheetTopDirective.ctorParameters = function () { return [
|
|
476
472
|
{ type: Observable, decorators: [{ type: Inject, args: [TUI_SHEET_SCROLL,] }] },
|
|
477
|
-
{ type:
|
|
473
|
+
{ type: TuiSheetComponent, decorators: [{ type: Inject, args: [forwardRef(function () { return TuiSheetComponent; }),] }] },
|
|
478
474
|
{ type: Window, decorators: [{ type: Inject, args: [WINDOW,] }] }
|
|
479
475
|
]; };
|
|
480
476
|
__decorate([
|
|
@@ -494,7 +490,7 @@ var TuiSheetTopDirective = /** @class */ (function () {
|
|
|
494
490
|
},
|
|
495
491
|
}),
|
|
496
492
|
__param(0, Inject(TUI_SHEET_SCROLL)),
|
|
497
|
-
__param(1, Inject(
|
|
493
|
+
__param(1, Inject(forwardRef(function () { return TuiSheetComponent; }))),
|
|
498
494
|
__param(2, Inject(WINDOW))
|
|
499
495
|
], TuiSheetTopDirective);
|
|
500
496
|
return TuiSheetTopDirective;
|
|
@@ -504,16 +500,16 @@ var TuiSheetTopDirective = /** @class */ (function () {
|
|
|
504
500
|
var OFFSET$1 = 16;
|
|
505
501
|
// @dynamic
|
|
506
502
|
var TuiSheetWrapperDirective = /** @class */ (function () {
|
|
507
|
-
function TuiSheetWrapperDirective(windowRef
|
|
503
|
+
function TuiSheetWrapperDirective(windowRef) {
|
|
508
504
|
this.windowRef = windowRef;
|
|
509
|
-
this.
|
|
505
|
+
this.tuiSheetWrapper = 16;
|
|
510
506
|
// Trying to get overflow: visible as early as possible for Safari
|
|
511
507
|
this.touched = false;
|
|
512
508
|
}
|
|
513
509
|
Object.defineProperty(TuiSheetWrapperDirective.prototype, "overlay$", {
|
|
514
510
|
get: function () {
|
|
515
511
|
var _this = this;
|
|
516
|
-
return this.scroll$.pipe(map(function (y) { return y + 16 > _this.windowRef.innerHeight - _this.
|
|
512
|
+
return this.scroll$.pipe(map(function (y) { return y + 16 > _this.windowRef.innerHeight - _this.tuiSheetWrapper; }));
|
|
517
513
|
},
|
|
518
514
|
enumerable: true,
|
|
519
515
|
configurable: true
|
|
@@ -544,8 +540,7 @@ var TuiSheetWrapperDirective = /** @class */ (function () {
|
|
|
544
540
|
: value - this.sheet.imageHeight;
|
|
545
541
|
};
|
|
546
542
|
TuiSheetWrapperDirective.ctorParameters = function () { return [
|
|
547
|
-
{ type: Window, decorators: [{ type: Inject, args: [WINDOW,] }] }
|
|
548
|
-
{ type: Number, decorators: [{ type: Inject, args: [TUI_SHEET_OFFSET,] }] }
|
|
543
|
+
{ type: Window, decorators: [{ type: Inject, args: [WINDOW,] }] }
|
|
549
544
|
]; };
|
|
550
545
|
__decorate([
|
|
551
546
|
ContentChild(TuiSheetComponent)
|
|
@@ -556,6 +551,9 @@ var TuiSheetWrapperDirective = /** @class */ (function () {
|
|
|
556
551
|
__decorate([
|
|
557
552
|
ContentChild(TuiSheetComponent, { read: TUI_SHEET_SCROLL })
|
|
558
553
|
], TuiSheetWrapperDirective.prototype, "scroll$", void 0);
|
|
554
|
+
__decorate([
|
|
555
|
+
Input()
|
|
556
|
+
], TuiSheetWrapperDirective.prototype, "tuiSheetWrapper", void 0);
|
|
559
557
|
__decorate([
|
|
560
558
|
tuiPure
|
|
561
559
|
], TuiSheetWrapperDirective.prototype, "overlay$", null);
|
|
@@ -577,8 +575,7 @@ var TuiSheetWrapperDirective = /** @class */ (function () {
|
|
|
577
575
|
'($.style.height.px)': 'height$',
|
|
578
576
|
},
|
|
579
577
|
}),
|
|
580
|
-
__param(0, Inject(WINDOW))
|
|
581
|
-
__param(1, Inject(TUI_SHEET_OFFSET))
|
|
578
|
+
__param(0, Inject(WINDOW))
|
|
582
579
|
], TuiSheetWrapperDirective);
|
|
583
580
|
return TuiSheetWrapperDirective;
|
|
584
581
|
}());
|