@taiga-ui/addon-mobile 4.52.0-canary.46625cf → 4.52.0-canary.49575ff

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +2 -2
  2. package/components/index.d.ts +0 -1
  3. package/components/mobile-calendar/calendar-date-stream.d.ts +6 -0
  4. package/components/mobile-calendar/index.d.ts +1 -0
  5. package/components/mobile-calendar/mobile-calendar.component.d.ts +7 -6
  6. package/components/mobile-calendar/mobile-calendar.strategy.d.ts +2 -5
  7. package/components/mobile-calendar-dropdown/mobile-calendar-dropdown.component.d.ts +6 -8
  8. package/components/mobile-calendar-dropdown/mobile-calendar-dropdown.directive.d.ts +6 -6
  9. package/components/sheet-dialog/sheet-dialog.component.d.ts +2 -2
  10. package/components/sheet-dialog/sheet-dialog.directive.d.ts +4 -3
  11. package/components/sheet-dialog/sheet-dialog.options.d.ts +3 -9
  12. package/components/sheet-dialog/sheet-dialog.service.d.ts +9 -4
  13. package/directives/dropdown-mobile/dropdown-mobile.component.d.ts +8 -2
  14. package/directives/dropdown-mobile/dropdown-mobile.directive.d.ts +1 -2
  15. package/directives/dropdown-sheet/dropdown-sheet.component.d.ts +14 -0
  16. package/directives/dropdown-sheet/dropdown-sheet.directive.d.ts +6 -0
  17. package/directives/dropdown-sheet/index.d.ts +2 -0
  18. package/directives/index.d.ts +1 -0
  19. package/directives/responsive-dialog/responsive-dialog.directive.d.ts +5 -4
  20. package/directives/responsive-dialog/responsive-dialog.service.d.ts +4 -7
  21. package/fesm2022/taiga-ui-addon-mobile-components-bottom-sheet.mjs +6 -5
  22. package/fesm2022/taiga-ui-addon-mobile-components-bottom-sheet.mjs.map +1 -1
  23. package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar-dropdown.mjs +24 -40
  24. package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar-dropdown.mjs.map +1 -1
  25. package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar-sheet.mjs +7 -10
  26. package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar-sheet.mjs.map +1 -1
  27. package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar.mjs +50 -44
  28. package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar.mjs.map +1 -1
  29. package/fesm2022/taiga-ui-addon-mobile-components-pull-to-refresh.mjs +14 -15
  30. package/fesm2022/taiga-ui-addon-mobile-components-pull-to-refresh.mjs.map +1 -1
  31. package/fesm2022/taiga-ui-addon-mobile-components-sheet-dialog.mjs +56 -54
  32. package/fesm2022/taiga-ui-addon-mobile-components-sheet-dialog.mjs.map +1 -1
  33. package/fesm2022/taiga-ui-addon-mobile-components-swipe-action.mjs +6 -7
  34. package/fesm2022/taiga-ui-addon-mobile-components-swipe-action.mjs.map +1 -1
  35. package/fesm2022/taiga-ui-addon-mobile-components-tab-bar.mjs +11 -13
  36. package/fesm2022/taiga-ui-addon-mobile-components-tab-bar.mjs.map +1 -1
  37. package/fesm2022/taiga-ui-addon-mobile-components.mjs +0 -1
  38. package/fesm2022/taiga-ui-addon-mobile-components.mjs.map +1 -1
  39. package/fesm2022/taiga-ui-addon-mobile-directives-dropdown-mobile.mjs +22 -65
  40. package/fesm2022/taiga-ui-addon-mobile-directives-dropdown-mobile.mjs.map +1 -1
  41. package/fesm2022/taiga-ui-addon-mobile-directives-dropdown-sheet.mjs +83 -0
  42. package/fesm2022/taiga-ui-addon-mobile-directives-dropdown-sheet.mjs.map +1 -0
  43. package/fesm2022/taiga-ui-addon-mobile-directives-elastic-sticky.mjs +7 -9
  44. package/fesm2022/taiga-ui-addon-mobile-directives-elastic-sticky.mjs.map +1 -1
  45. package/fesm2022/taiga-ui-addon-mobile-directives-responsive-dialog.mjs +44 -27
  46. package/fesm2022/taiga-ui-addon-mobile-directives-responsive-dialog.mjs.map +1 -1
  47. package/fesm2022/taiga-ui-addon-mobile-directives-ripple.mjs +6 -6
  48. package/fesm2022/taiga-ui-addon-mobile-directives-touchable.mjs +3 -4
  49. package/fesm2022/taiga-ui-addon-mobile-directives-touchable.mjs.map +1 -1
  50. package/fesm2022/taiga-ui-addon-mobile-directives.mjs +1 -0
  51. package/fesm2022/taiga-ui-addon-mobile-directives.mjs.map +1 -1
  52. package/fesm2022/taiga-ui-addon-mobile-services.mjs +34 -5
  53. package/fesm2022/taiga-ui-addon-mobile-services.mjs.map +1 -1
  54. package/package.json +9 -6
  55. package/services/index.d.ts +1 -0
  56. package/services/theme-color.service.d.ts +18 -0
  57. package/styles/android/app-bar.less +1 -1
  58. package/styles/android/switch.less +1 -0
  59. package/styles/common/badge-notification.less +1 -1
  60. package/styles/common/badge.less +2 -2
  61. package/styles/common/block-status.less +1 -1
  62. package/styles/common/button.less +1 -1
  63. package/styles/common/card-large.less +4 -0
  64. package/styles/common/chip.less +0 -20
  65. package/styles/common/header.less +1 -1
  66. package/styles/common/message.less +1 -1
  67. package/styles/common/segmented.less +1 -1
  68. package/styles/common/title.less +0 -1
  69. package/styles/common/toast.less +1 -1
  70. package/styles/ios/switch.less +50 -1
  71. package/styles/taiga-ui-mobile.less +6 -0
  72. package/components/mobile-dialog/index.d.ts +0 -3
  73. package/components/mobile-dialog/mobile-dialog.component.d.ts +0 -10
  74. package/components/mobile-dialog/mobile-dialog.options.d.ts +0 -12
  75. package/components/mobile-dialog/mobile-dialog.service.d.ts +0 -10
  76. package/directives/dropdown-mobile/dropdown-mobile-wrapper.component.d.ts +0 -20
  77. package/fesm2022/taiga-ui-addon-mobile-components-mobile-dialog.mjs +0 -64
  78. package/fesm2022/taiga-ui-addon-mobile-components-mobile-dialog.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-components-mobile-calendar-dropdown.mjs","sources":["../../../projects/addon-mobile/components/mobile-calendar-dropdown/mobile-calendar-dropdown.directive.ts","../../../projects/addon-mobile/components/mobile-calendar-dropdown/mobile-calendar-dropdown.component.ts","../../../projects/addon-mobile/components/mobile-calendar-dropdown/mobile-calendar-dropdown.template.html","../../../projects/addon-mobile/components/mobile-calendar-dropdown/taiga-ui-addon-mobile-components-mobile-calendar-dropdown.ts"],"sourcesContent":["import {ContentChild, Directive, inject} from '@angular/core';\nimport {type TuiDay, type TuiDayRange, type TuiTime} from '@taiga-ui/cdk/date-time';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {TUI_DROPDOWN_COMPONENT} from '@taiga-ui/core/directives/dropdown';\nimport {TuiItemsHandlersDirective} from '@taiga-ui/core/directives/items-handlers';\nimport {\n type TuiInputDateBase,\n TuiInputDateDirective,\n} from '@taiga-ui/kit/components/input-date';\nimport {TuiInputDateRangeDirective} from '@taiga-ui/kit/components/input-date-range';\nimport {TuiInputDateTimeDirective} from '@taiga-ui/kit/components/input-date-time';\n\nimport {TuiMobileCalendarDropdown} from './mobile-calendar-dropdown.component';\n\n// TODO: Rename to TuiMobileCalendarDropdown in v5\n@Directive({\n standalone: true,\n selector: '[tuiMobileCalendar]',\n providers: [\n {\n provide: TUI_DROPDOWN_COMPONENT,\n useFactory: () =>\n inject(TUI_IS_MOBILE)\n ? TuiMobileCalendarDropdown\n : inject(TUI_DROPDOWN_COMPONENT, {skipSelf: true}),\n },\n ],\n})\nexport class TuiMobileCalendarDropdownNew {\n @ContentChild(TuiInputDateDirective)\n public readonly single?: TuiInputDateDirective;\n\n @ContentChild(TuiInputDateRangeDirective)\n public readonly range?: TuiInputDateRangeDirective;\n\n @ContentChild(TuiInputDateTimeDirective)\n public readonly dateTime?: TuiInputDateTimeDirective;\n\n public readonly handlers = inject(TuiItemsHandlersDirective);\n\n public get date():\n | TuiInputDateBase<readonly [TuiDay, TuiTime | null]>\n | TuiInputDateBase<TuiDay>\n | TuiInputDateBase<TuiDayRange>\n | undefined {\n return this.single || this.range || this.dateTime;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n type ValueProvider,\n} from '@angular/core';\nimport {TuiMobileCalendar} from '@taiga-ui/addon-mobile/components/mobile-calendar';\nimport {TuiKeyboardService} from '@taiga-ui/addon-mobile/services';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiDay,\n type TuiDayLike,\n TuiDayRange,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiDropdownDirective} from '@taiga-ui/core/directives/dropdown';\nimport {\n calculateDisabledItemHandler,\n TUI_DAY_CAPS_MAPPER,\n} from '@taiga-ui/kit/components/calendar-range';\nimport {TUI_MOBILE_CALENDAR} from '@taiga-ui/kit/tokens';\nimport {injectContext} from '@taiga-ui/polymorpheus';\nimport {type Observer} from 'rxjs';\n\nimport {TuiMobileCalendarDropdownNew} from './mobile-calendar-dropdown.directive';\n\nexport interface TuiMobileCalendarData {\n disabledItemHandler?: TuiBooleanHandler<TuiDay>;\n max?: TuiDay | null;\n min?: TuiDay | null;\n multi?: boolean;\n single?: boolean;\n}\n\n// TODO: Rename to TuiMobileCalendarDropdownComponent in v5, this component is terrible and needs a complete rewrite\n@Component({\n selector: 'tui-mobile-calendar-dropdown',\n imports: [TuiMobileCalendar],\n templateUrl: './mobile-calendar-dropdown.template.html',\n styleUrl: './mobile-calendar-dropdown.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiActiveZone, TuiAnimated],\n})\nexport class TuiMobileCalendarDropdown {\n // TODO: Rework to use TuiDropdownOpenDirective so the focus returns to the field on closing\n private readonly dropdown = inject(TuiDropdownDirective, {optional: true});\n private readonly keyboard = inject(TuiKeyboardService);\n\n private readonly context = injectContext<Record<string, any>>({optional: true});\n private readonly observer?: Observer<unknown> = this.context?.$implicit;\n private readonly data: TuiMobileCalendarData = this.context?.data || {};\n\n private selectedPeriod: TuiDayRange | null = null;\n\n // TODO: Refactor to proper Date, DateMulti and DateRange components after they are added to kit\n protected readonly control: any = inject(TuiControl, {optional: true});\n protected readonly directive = inject(TuiMobileCalendarDropdownNew, {optional: true});\n protected readonly range = !!this.directive?.range || this.is('tui-input-date-range');\n protected readonly multi = this.data.multi || this.is('tui-input-date[multiple]');\n protected readonly single =\n !!this.directive?.single ||\n !!this.directive?.dateTime ||\n this.data.single || // TODO(v5): use `rangeMode` from DI token `TUI_CALENDAR_SHEET_DEFAULT_OPTIONS`\n this.is('tui-input-date:not([multiple])');\n\n protected readonly value = computed<TuiDay | TuiDayRange | null>(\n (value = this.directive?.date?.value()) =>\n Array.isArray(value) ? value[0] : value,\n );\n\n constructor() {\n this.keyboard.hide();\n }\n\n public max(): TuiDay {\n return (\n this.directive?.date?.max() ??\n (this.data.max ||\n (this.range\n ? TUI_DAY_CAPS_MAPPER(\n this.control.max,\n this.selectedPeriod,\n this.control.maxLength,\n false,\n )\n : this.control?.max) ||\n TUI_LAST_DAY)\n );\n }\n\n public min(): TuiDay {\n return (\n this.directive?.date?.min() ??\n (this.data.min ||\n (this.range\n ? TUI_DAY_CAPS_MAPPER(\n this.control.min,\n this.selectedPeriod,\n this.control.maxLength,\n true,\n )\n : this.control?.min) ||\n TUI_FIRST_DAY)\n );\n }\n\n public onValueChange(value: TuiDay | TuiDayRange | readonly TuiDay[] | null): void {\n if (!this.range) {\n return;\n }\n\n if (value === null || value instanceof TuiDayRange) {\n this.selectedPeriod = value;\n } else if (value instanceof TuiDay) {\n this.selectedPeriod = new TuiDayRange(value, value);\n }\n }\n\n protected get calculatedDisabledItemHandler(): TuiBooleanHandler<TuiDay> {\n return this.calculateDisabledItemHandler(\n this.directive?.handlers.disabledItemHandler() ||\n this.data.disabledItemHandler ||\n this.control?.disabledItemHandler ||\n TUI_FALSE_HANDLER,\n this.selectedPeriod,\n this.control?.minLength ?? null,\n );\n }\n\n protected close(): void {\n this.dropdown?.toggle(false);\n this.observer?.complete();\n this.keyboard.show();\n }\n\n protected confirm(value: TuiDay | TuiDayRange | readonly TuiDay[]): void {\n const normalizedValue = this.range ? this.selectedPeriod : value;\n\n if (this.control) {\n this.control.value = normalizedValue;\n }\n\n if (normalizedValue) {\n this.directive?.date?.setDate(normalizedValue);\n }\n\n this.observer?.next(normalizedValue);\n this.close();\n }\n\n @tuiPure\n private calculateDisabledItemHandler(\n disabledItemHandler: TuiBooleanHandler<TuiDay>,\n value: TuiDayRange | null,\n minLength: TuiDayLike | null,\n ): TuiBooleanHandler<TuiDay> {\n return calculateDisabledItemHandler(disabledItemHandler, value, minLength);\n }\n\n private is(selector: string): boolean {\n return !!this.dropdown?.el.closest(selector);\n }\n}\n\nexport function tuiProvideMobileCalendar(): ValueProvider {\n return {\n provide: TUI_MOBILE_CALENDAR,\n useValue: TuiMobileCalendarDropdown,\n };\n}\n","<tui-mobile-calendar\n [disabledItemHandler]=\"calculatedDisabledItemHandler\"\n [max]=\"max()\"\n [min]=\"min()\"\n [multi]=\"multi\"\n [single]=\"single\"\n [value]=\"value()\"\n (cancel)=\"close()\"\n (confirm)=\"confirm($event)\"\n (valueChange)=\"onValueChange($event)\"\n/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-mobile-components-mobile-calendar-dropdown.mjs","sources":["../../../projects/addon-mobile/components/mobile-calendar-dropdown/mobile-calendar-dropdown.directive.ts","../../../projects/addon-mobile/components/mobile-calendar-dropdown/mobile-calendar-dropdown.component.ts","../../../projects/addon-mobile/components/mobile-calendar-dropdown/mobile-calendar-dropdown.template.html","../../../projects/addon-mobile/components/mobile-calendar-dropdown/taiga-ui-addon-mobile-components-mobile-calendar-dropdown.ts"],"sourcesContent":["import {contentChild, Directive, inject} from '@angular/core';\nimport {type TuiDay, type TuiDayRange, type TuiTime} from '@taiga-ui/cdk/date-time';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {TuiItemsHandlersDirective} from '@taiga-ui/core/directives/items-handlers';\nimport {TUI_DROPDOWN_COMPONENT} from '@taiga-ui/core/portals/dropdown';\nimport {\n type TuiInputDateBase,\n TuiInputDateDirective,\n} from '@taiga-ui/kit/components/input-date';\nimport {TuiInputDateRangeDirective} from '@taiga-ui/kit/components/input-date-range';\nimport {TuiInputDateTimeDirective} from '@taiga-ui/kit/components/input-date-time';\n\nimport {TuiMobileCalendarDropdownComponent} from './mobile-calendar-dropdown.component';\n\n@Directive({\n selector: '[tuiMobileCalendar]',\n providers: [\n {\n provide: TUI_DROPDOWN_COMPONENT,\n useFactory: () =>\n inject(TUI_IS_MOBILE)\n ? TuiMobileCalendarDropdownComponent\n : inject(TUI_DROPDOWN_COMPONENT, {skipSelf: true}),\n },\n ],\n})\nexport class TuiMobileCalendarDropdown {\n public readonly single = contentChild(TuiInputDateDirective);\n public readonly range = contentChild(TuiInputDateRangeDirective);\n public readonly dateTime = contentChild(TuiInputDateTimeDirective);\n public readonly handlers = inject(TuiItemsHandlersDirective);\n\n public get date():\n | TuiInputDateBase<readonly [TuiDay, TuiTime | null]>\n | TuiInputDateBase<TuiDay>\n | TuiInputDateBase<TuiDayRange>\n | undefined {\n return this.single() || this.range() || this.dateTime();\n }\n}\n","import {ChangeDetectionStrategy, Component, computed, inject} from '@angular/core';\nimport {TuiMobileCalendar} from '@taiga-ui/addon-mobile/components/mobile-calendar';\nimport {TuiKeyboardService} from '@taiga-ui/addon-mobile/services';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiDay,\n type TuiDayLike,\n TuiDayRange,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiDropdownDirective} from '@taiga-ui/core/portals/dropdown';\nimport {\n calculateDisabledItemHandler,\n TUI_DAY_CAPS_MAPPER,\n} from '@taiga-ui/kit/components/calendar-range';\nimport {injectContext} from '@taiga-ui/polymorpheus';\nimport {type Observer} from 'rxjs';\n\nimport {TuiMobileCalendarDropdown} from './mobile-calendar-dropdown.directive';\n\nexport interface TuiMobileCalendarData {\n disabledItemHandler?: TuiBooleanHandler<TuiDay>;\n max?: TuiDay | null;\n min?: TuiDay | null;\n multi?: boolean;\n single?: boolean;\n}\n\n@Component({\n selector: 'tui-mobile-calendar-dropdown',\n imports: [TuiMobileCalendar],\n templateUrl: './mobile-calendar-dropdown.template.html',\n styleUrl: './mobile-calendar-dropdown.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiActiveZone, TuiAnimated],\n})\nexport class TuiMobileCalendarDropdownComponent {\n // TODO: Rework to use TuiDropdownOpenDirective so the focus returns to the field on closing\n private readonly dropdown = inject(TuiDropdownDirective, {optional: true});\n private readonly keyboard = inject(TuiKeyboardService);\n\n private readonly context = injectContext<Record<string, any>>({optional: true});\n private readonly observer?: Observer<unknown> = this.context?.$implicit;\n private readonly data: TuiMobileCalendarData = this.context?.data || {};\n\n private selectedPeriod: TuiDayRange | null = null;\n\n // TODO: Refactor to proper Date, DateMulti and DateRange components after they are added to kit\n protected readonly control: any = inject(TuiControl, {optional: true});\n protected readonly directive = inject(TuiMobileCalendarDropdown, {optional: true});\n protected readonly multi = this.data.multi || this.is('tui-input-date[multiple]');\n protected readonly range =\n !!this.directive?.range() || this.is('tui-input-date-range');\n\n protected readonly single =\n !!this.directive?.single() ||\n !!this.directive?.dateTime() ||\n this.data.single || // TODO(v5): use `rangeMode` from DI token `TUI_CALENDAR_SHEET_DEFAULT_OPTIONS`\n this.is('tui-input-date:not([multiple])');\n\n protected readonly value = computed<TuiDay | TuiDayRange | null>(\n (value = this.directive?.date?.value()) =>\n Array.isArray(value) ? value[0] : value,\n );\n\n constructor() {\n this.keyboard.hide();\n }\n\n public max(): TuiDay {\n return (\n this.directive?.date?.max() ??\n (this.data.max ||\n (this.range\n ? TUI_DAY_CAPS_MAPPER(\n this.control.max,\n this.selectedPeriod,\n this.control.maxLength,\n false,\n )\n : this.control?.max) ||\n TUI_LAST_DAY)\n );\n }\n\n public min(): TuiDay {\n return (\n this.directive?.date?.min() ??\n (this.data.min ||\n (this.range\n ? TUI_DAY_CAPS_MAPPER(\n this.control.min,\n this.selectedPeriod,\n this.control.maxLength,\n true,\n )\n : this.control?.min) ||\n TUI_FIRST_DAY)\n );\n }\n\n public onValueChange(value: TuiDay | TuiDayRange | readonly TuiDay[] | null): void {\n if (!this.range) {\n return;\n }\n\n if (value === null || value instanceof TuiDayRange) {\n this.selectedPeriod = value;\n } else if (value instanceof TuiDay) {\n this.selectedPeriod = new TuiDayRange(value, value);\n }\n }\n\n protected get calculatedDisabledItemHandler(): TuiBooleanHandler<TuiDay> {\n return this.calculateDisabledItemHandler(\n this.directive?.handlers.disabledItemHandler() ||\n this.data.disabledItemHandler ||\n this.control?.disabledItemHandler ||\n TUI_FALSE_HANDLER,\n this.selectedPeriod,\n this.control?.minLength ?? null,\n );\n }\n\n protected close(): void {\n this.dropdown?.toggle(false);\n this.observer?.complete();\n this.keyboard.show();\n }\n\n protected confirm(value: TuiDay | TuiDayRange | readonly TuiDay[]): void {\n const normalizedValue = this.range ? this.selectedPeriod : value;\n\n if (this.control) {\n this.control.value = normalizedValue;\n }\n\n if (normalizedValue) {\n this.directive?.date?.setDate(normalizedValue);\n }\n\n this.observer?.next(normalizedValue);\n this.close();\n }\n\n @tuiPure\n private calculateDisabledItemHandler(\n disabledItemHandler: TuiBooleanHandler<TuiDay>,\n value: TuiDayRange | null,\n minLength: TuiDayLike | null,\n ): TuiBooleanHandler<TuiDay> {\n return calculateDisabledItemHandler(disabledItemHandler, value, minLength);\n }\n\n private is(selector: string): boolean {\n return !!this.dropdown?.el.closest(selector);\n }\n}\n","<tui-mobile-calendar\n [disabledItemHandler]=\"calculatedDisabledItemHandler\"\n [max]=\"max()\"\n [min]=\"min()\"\n [multi]=\"multi\"\n [single]=\"single\"\n [value]=\"value()\"\n (cancel)=\"close()\"\n (confirm)=\"confirm($event)\"\n (valueChange)=\"onValueChange($event)\"\n/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,25 +1,22 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { TuiRipple } from '@taiga-ui/addon-mobile/directives';
4
- import { TuiLet } from '@taiga-ui/cdk/directives/let';
5
- import { TuiRepeatTimes } from '@taiga-ui/cdk/directives/repeat-times';
3
+ import { TuiRipple } from '@taiga-ui/addon-mobile/directives/ripple';
6
4
  import { TUI_IS_IOS } from '@taiga-ui/cdk/tokens';
7
- import { TuiCalendarSheet } from '@taiga-ui/core/components/calendar';
8
- import { TuiCalendarSheetPipe } from '@taiga-ui/core/pipes/calendar-sheet';
5
+ import { TuiCalendarSheet, TuiCalendarSheetPipe } from '@taiga-ui/core/components/calendar';
9
6
 
10
7
  class TuiMobileCalendarSheet extends TuiCalendarSheet {
11
8
  constructor() {
12
9
  super(...arguments);
13
10
  this.isIOS = inject(TUI_IS_IOS);
14
11
  }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiMobileCalendarSheet, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
16
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiMobileCalendarSheet, isStandalone: true, selector: "tui-mobile-calendar-sheet", host: { properties: { "class._ios": "isIOS" } }, usesInheritance: true, ngImport: i0, template: "<ng-container *tuiLet=\"month | tuiCalendarSheet as sheet\">\n <div\n *tuiRepeatTimes=\"let rowIndex of sheet.length\"\n automation-id=\"tui-primitive-calendar-mobile__row\"\n class=\"t-row\"\n >\n <div\n *tuiRepeatTimes=\"let index of 7 - (sheet[rowIndex]?.length ?? 0)\"\n class=\"t-cell t-cell_empty\"\n ></div>\n <ng-container *tuiRepeatTimes=\"let colIndex of sheet[rowIndex]?.length ?? 0\">\n @if (sheet[rowIndex]?.[colIndex]; as item) {\n <div\n automation-id=\"tui-primitive-calendar-mobile__cell\"\n tuiRipple\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"disabledItemHandler(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n (click)=\"onItemClick(item)\"\n >\n {{ item.day }}\n </div>\n }\n </ng-container>\n <div\n *tuiRepeatTimes=\"let index of 7 - (sheet[rowIndex]?.length ?? 0)\"\n class=\"t-cell t-cell_empty\"\n ></div>\n </div>\n</ng-container>\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-text-m)}.t-row:first-child{justify-content:flex-end}.t-row:last-child{justify-content:flex-start}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;line-height:2rem;isolation:isolate;cursor:pointer;overflow:hidden;border:.125rem solid transparent;box-sizing:border-box;mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem))}.t-cell:first-child{border-inline-start-color:transparent!important}.t-cell:last-child{border-inline-end-color:transparent!important}.t-cell:before,.t-cell:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat}.t-cell[data-range]:before{background:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]:not(:first-child):before{border-top-left-radius:0;border-bottom-left-radius:0}.t-cell[data-range=middle]:not(:last-child):before{border-top-right-radius:0;border-bottom-right-radius:0}.t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:not(:last-child):before{right:-1rem}.t-cell[data-range=start]:after{background:var(--tui-background-accent-1)}.t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{left:-1rem}.t-cell[data-range=end]:after{background:var(--tui-background-accent-1);transform:scaleX(-1)}.t-cell[data-range=active]{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range=active]:after{background:var(--tui-background-accent-1);mask:none}.t-cell_disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-cell_today{text-decoration:underline;text-underline-offset:.25rem}@media (hover: hover) and (pointer: fine){.t-cell:hover:not([data-range=start]):not([data-range=end]):before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:hover:after,.t-cell[data-range=end]:hover:after,.t-cell[data-range=active]:hover:after{background:var(--tui-background-accent-1-hover)}}:host{display:block;inline-size:20.75rem;max-inline-size:100vw}:host._ios{inline-size:22.625rem}:host._ios .t-row{block-size:3.125rem;font-size:1.0625rem}:host._ios .t-cell[data-range=start],:host._ios .t-cell[data-range=end],:host._ios .t-cell[data-range=active]{font-weight:600}.t-row{block-size:3rem;justify-content:space-between!important;font-family:inherit;font-size:1.125rem;padding:.125rem;box-sizing:border-box}.t-row:first-child .t-cell:not(.t-cell_empty)~.t-cell_empty,.t-row:last-child .t-cell_empty{display:none}.t-row:last-child .t-cell:not(.t-cell_empty)~.t-cell_empty{display:flex}.t-cell{inline-size:2.5rem;block-size:2.5rem;border-radius:100%;overflow:hidden;mask:none;border:none;text-decoration:none}.t-cell_empty{visibility:hidden}.t-cell_today:after{content:\"\\2022\";text-align:center;line-height:4rem;font-size:1.5rem;color:var(--tui-text-action)}.t-cell_today[data-range=start]:after,.t-cell_today[data-range=end]:after,.t-cell_today[data-range=active]:after{color:inherit}.t-cell[data-range=start],.t-cell[data-range=end],.t-cell[data-range=active]{font-weight:500}.t-cell:after{mask:none}\n"], dependencies: [{ kind: "pipe", type: TuiCalendarSheetPipe, name: "tuiCalendarSheet" }, { kind: "directive", type: TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "directive", type: TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }, { kind: "directive", type: TuiRipple, selector: "[tuiRipple]", inputs: ["tuiRipple"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiMobileCalendarSheet, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
13
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiMobileCalendarSheet, isStandalone: true, selector: "tui-mobile-calendar-sheet", host: { properties: { "class._ios": "isIOS" } }, usesInheritance: true, ngImport: i0, template: "@let sheet = month | tuiCalendarSheet;\n@for (_ of '-'.repeat(sheet.length); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-primitive-calendar-mobile__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(7 - (sheet[rowIndex]?.length ?? 0)); track $index) {\n <div class=\"t-cell t-cell_empty\"></div>\n }\n @for (_ of '-'.repeat(sheet[rowIndex]?.length ?? 0); track $index) {\n @if (sheet[rowIndex]?.[$index]; as item) {\n <div\n automation-id=\"tui-primitive-calendar-mobile__cell\"\n tuiRipple\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"disabledItemHandler(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n (click)=\"onItemClick(item)\"\n >\n {{ item.day }}\n </div>\n }\n }\n @for (_ of '-'.repeat(7 - (sheet[rowIndex]?.length ?? 0)); track $index) {\n <div class=\"t-cell t-cell_empty\"></div>\n }\n </div>\n}\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-body-m)}.t-row:first-child{justify-content:flex-end}.t-row:last-child{justify-content:flex-start}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;line-height:2rem;isolation:isolate;cursor:pointer;overflow:hidden;border:.125rem solid transparent;box-sizing:border-box;mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem))}.t-cell:first-child{border-inline-start-color:transparent!important}.t-cell:last-child{border-inline-end-color:transparent!important}.t-cell:before,.t-cell:after{position:absolute;inset:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat}.t-cell[data-range]:before{background:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]:not(:first-child):before{border-top-left-radius:0;border-bottom-left-radius:0}.t-cell[data-range=middle]:not(:last-child):before{border-top-right-radius:0;border-bottom-right-radius:0}.t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:not(:last-child):before{right:-1rem}.t-cell[data-range=start]:after{background:var(--tui-background-accent-1)}.t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{left:-1rem}.t-cell[data-range=end]:after{background:var(--tui-background-accent-1);transform:scaleX(-1)}.t-cell[data-range=active]{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range=active]:after{background:var(--tui-background-accent-1);mask:none}.t-cell_disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-cell_today{text-decoration:underline;text-underline-offset:.25rem}@media (hover: hover) and (pointer: fine){.t-cell:hover:not([data-range=start]):not([data-range=end]):before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:hover:after,.t-cell[data-range=end]:hover:after,.t-cell[data-range=active]:hover:after{background:var(--tui-background-accent-1-hover)}}:host{display:block;inline-size:20.75rem;max-inline-size:100vw}:host._ios{inline-size:22.625rem}:host._ios .t-row{block-size:3.125rem;font-size:1.0625rem}:host._ios .t-cell[data-range=start],:host._ios .t-cell[data-range=end],:host._ios .t-cell[data-range=active]{font-weight:600}.t-row{block-size:3rem;justify-content:space-between!important;font-family:inherit;font-size:1.125rem;padding:.125rem;box-sizing:border-box}.t-row:first-child .t-cell:not(.t-cell_empty)~.t-cell_empty,.t-row:last-child .t-cell_empty{display:none}.t-row:last-child .t-cell:not(.t-cell_empty)~.t-cell_empty{display:flex}.t-cell{inline-size:2.5rem;block-size:2.5rem;border-radius:100%;overflow:hidden;mask:none;border:none;text-decoration:none}.t-cell_empty{visibility:hidden}.t-cell_today:after{content:\"\\2022\";text-align:center;line-height:4rem;font-size:1.5rem;color:var(--tui-text-action)}.t-cell_today[data-range=start]:after,.t-cell_today[data-range=end]:after,.t-cell_today[data-range=active]:after{color:inherit}.t-cell[data-range=start],.t-cell[data-range=end],.t-cell[data-range=active]{font-weight:500}.t-cell:after{mask:none}\n"], dependencies: [{ kind: "pipe", type: TuiCalendarSheetPipe, name: "tuiCalendarSheet" }, { kind: "directive", type: TuiRipple, selector: "[tuiRipple]", inputs: ["tuiRipple"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
17
14
  }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiMobileCalendarSheet, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiMobileCalendarSheet, decorators: [{
19
16
  type: Component,
20
- args: [{ selector: 'tui-mobile-calendar-sheet', imports: [TuiCalendarSheetPipe, TuiLet, TuiRepeatTimes, TuiRipple], changeDetection: ChangeDetectionStrategy.OnPush, host: {
17
+ args: [{ selector: 'tui-mobile-calendar-sheet', imports: [TuiCalendarSheetPipe, TuiRipple], changeDetection: ChangeDetectionStrategy.OnPush, host: {
21
18
  '[class._ios]': 'isIOS',
22
- }, template: "<ng-container *tuiLet=\"month | tuiCalendarSheet as sheet\">\n <div\n *tuiRepeatTimes=\"let rowIndex of sheet.length\"\n automation-id=\"tui-primitive-calendar-mobile__row\"\n class=\"t-row\"\n >\n <div\n *tuiRepeatTimes=\"let index of 7 - (sheet[rowIndex]?.length ?? 0)\"\n class=\"t-cell t-cell_empty\"\n ></div>\n <ng-container *tuiRepeatTimes=\"let colIndex of sheet[rowIndex]?.length ?? 0\">\n @if (sheet[rowIndex]?.[colIndex]; as item) {\n <div\n automation-id=\"tui-primitive-calendar-mobile__cell\"\n tuiRipple\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"disabledItemHandler(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n (click)=\"onItemClick(item)\"\n >\n {{ item.day }}\n </div>\n }\n </ng-container>\n <div\n *tuiRepeatTimes=\"let index of 7 - (sheet[rowIndex]?.length ?? 0)\"\n class=\"t-cell t-cell_empty\"\n ></div>\n </div>\n</ng-container>\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-text-m)}.t-row:first-child{justify-content:flex-end}.t-row:last-child{justify-content:flex-start}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;line-height:2rem;isolation:isolate;cursor:pointer;overflow:hidden;border:.125rem solid transparent;box-sizing:border-box;mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem))}.t-cell:first-child{border-inline-start-color:transparent!important}.t-cell:last-child{border-inline-end-color:transparent!important}.t-cell:before,.t-cell:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat}.t-cell[data-range]:before{background:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]:not(:first-child):before{border-top-left-radius:0;border-bottom-left-radius:0}.t-cell[data-range=middle]:not(:last-child):before{border-top-right-radius:0;border-bottom-right-radius:0}.t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:not(:last-child):before{right:-1rem}.t-cell[data-range=start]:after{background:var(--tui-background-accent-1)}.t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{left:-1rem}.t-cell[data-range=end]:after{background:var(--tui-background-accent-1);transform:scaleX(-1)}.t-cell[data-range=active]{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range=active]:after{background:var(--tui-background-accent-1);mask:none}.t-cell_disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-cell_today{text-decoration:underline;text-underline-offset:.25rem}@media (hover: hover) and (pointer: fine){.t-cell:hover:not([data-range=start]):not([data-range=end]):before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:hover:after,.t-cell[data-range=end]:hover:after,.t-cell[data-range=active]:hover:after{background:var(--tui-background-accent-1-hover)}}:host{display:block;inline-size:20.75rem;max-inline-size:100vw}:host._ios{inline-size:22.625rem}:host._ios .t-row{block-size:3.125rem;font-size:1.0625rem}:host._ios .t-cell[data-range=start],:host._ios .t-cell[data-range=end],:host._ios .t-cell[data-range=active]{font-weight:600}.t-row{block-size:3rem;justify-content:space-between!important;font-family:inherit;font-size:1.125rem;padding:.125rem;box-sizing:border-box}.t-row:first-child .t-cell:not(.t-cell_empty)~.t-cell_empty,.t-row:last-child .t-cell_empty{display:none}.t-row:last-child .t-cell:not(.t-cell_empty)~.t-cell_empty{display:flex}.t-cell{inline-size:2.5rem;block-size:2.5rem;border-radius:100%;overflow:hidden;mask:none;border:none;text-decoration:none}.t-cell_empty{visibility:hidden}.t-cell_today:after{content:\"\\2022\";text-align:center;line-height:4rem;font-size:1.5rem;color:var(--tui-text-action)}.t-cell_today[data-range=start]:after,.t-cell_today[data-range=end]:after,.t-cell_today[data-range=active]:after{color:inherit}.t-cell[data-range=start],.t-cell[data-range=end],.t-cell[data-range=active]{font-weight:500}.t-cell:after{mask:none}\n"] }]
19
+ }, template: "@let sheet = month | tuiCalendarSheet;\n@for (_ of '-'.repeat(sheet.length); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-primitive-calendar-mobile__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(7 - (sheet[rowIndex]?.length ?? 0)); track $index) {\n <div class=\"t-cell t-cell_empty\"></div>\n }\n @for (_ of '-'.repeat(sheet[rowIndex]?.length ?? 0); track $index) {\n @if (sheet[rowIndex]?.[$index]; as item) {\n <div\n automation-id=\"tui-primitive-calendar-mobile__cell\"\n tuiRipple\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"disabledItemHandler(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n (click)=\"onItemClick(item)\"\n >\n {{ item.day }}\n </div>\n }\n }\n @for (_ of '-'.repeat(7 - (sheet[rowIndex]?.length ?? 0)); track $index) {\n <div class=\"t-cell t-cell_empty\"></div>\n }\n </div>\n}\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-body-m)}.t-row:first-child{justify-content:flex-end}.t-row:last-child{justify-content:flex-start}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;line-height:2rem;isolation:isolate;cursor:pointer;overflow:hidden;border:.125rem solid transparent;box-sizing:border-box;mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem))}.t-cell:first-child{border-inline-start-color:transparent!important}.t-cell:last-child{border-inline-end-color:transparent!important}.t-cell:before,.t-cell:after{position:absolute;inset:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat}.t-cell[data-range]:before{background:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]:not(:first-child):before{border-top-left-radius:0;border-bottom-left-radius:0}.t-cell[data-range=middle]:not(:last-child):before{border-top-right-radius:0;border-bottom-right-radius:0}.t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:not(:last-child):before{right:-1rem}.t-cell[data-range=start]:after{background:var(--tui-background-accent-1)}.t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{left:-1rem}.t-cell[data-range=end]:after{background:var(--tui-background-accent-1);transform:scaleX(-1)}.t-cell[data-range=active]{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range=active]:after{background:var(--tui-background-accent-1);mask:none}.t-cell_disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-cell_today{text-decoration:underline;text-underline-offset:.25rem}@media (hover: hover) and (pointer: fine){.t-cell:hover:not([data-range=start]):not([data-range=end]):before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:hover:after,.t-cell[data-range=end]:hover:after,.t-cell[data-range=active]:hover:after{background:var(--tui-background-accent-1-hover)}}:host{display:block;inline-size:20.75rem;max-inline-size:100vw}:host._ios{inline-size:22.625rem}:host._ios .t-row{block-size:3.125rem;font-size:1.0625rem}:host._ios .t-cell[data-range=start],:host._ios .t-cell[data-range=end],:host._ios .t-cell[data-range=active]{font-weight:600}.t-row{block-size:3rem;justify-content:space-between!important;font-family:inherit;font-size:1.125rem;padding:.125rem;box-sizing:border-box}.t-row:first-child .t-cell:not(.t-cell_empty)~.t-cell_empty,.t-row:last-child .t-cell_empty{display:none}.t-row:last-child .t-cell:not(.t-cell_empty)~.t-cell_empty{display:flex}.t-cell{inline-size:2.5rem;block-size:2.5rem;border-radius:100%;overflow:hidden;mask:none;border:none;text-decoration:none}.t-cell_empty{visibility:hidden}.t-cell_today:after{content:\"\\2022\";text-align:center;line-height:4rem;font-size:1.5rem;color:var(--tui-text-action)}.t-cell_today[data-range=start]:after,.t-cell_today[data-range=end]:after,.t-cell_today[data-range=active]:after{color:inherit}.t-cell[data-range=start],.t-cell[data-range=end],.t-cell[data-range=active]{font-weight:500}.t-cell:after{mask:none}\n"] }]
23
20
  }] });
24
21
 
25
22
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-components-mobile-calendar-sheet.mjs","sources":["../../../projects/addon-mobile/components/mobile-calendar-sheet/mobile-calendar-sheet.component.ts","../../../projects/addon-mobile/components/mobile-calendar-sheet/mobile-calendar-sheet.template.html","../../../projects/addon-mobile/components/mobile-calendar-sheet/taiga-ui-addon-mobile-components-mobile-calendar-sheet.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {TuiRipple} from '@taiga-ui/addon-mobile/directives';\nimport {TuiLet} from '@taiga-ui/cdk/directives/let';\nimport {TuiRepeatTimes} from '@taiga-ui/cdk/directives/repeat-times';\nimport {TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport {TuiCalendarSheet} from '@taiga-ui/core/components/calendar';\nimport {TuiCalendarSheetPipe} from '@taiga-ui/core/pipes/calendar-sheet';\n\n@Component({\n selector: 'tui-mobile-calendar-sheet',\n imports: [TuiCalendarSheetPipe, TuiLet, TuiRepeatTimes, TuiRipple],\n templateUrl: './mobile-calendar-sheet.template.html',\n styleUrl: './mobile-calendar-sheet.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._ios]': 'isIOS',\n },\n})\nexport class TuiMobileCalendarSheet extends TuiCalendarSheet {\n protected readonly isIOS = inject(TUI_IS_IOS);\n}\n","<ng-container *tuiLet=\"month | tuiCalendarSheet as sheet\">\n <div\n *tuiRepeatTimes=\"let rowIndex of sheet.length\"\n automation-id=\"tui-primitive-calendar-mobile__row\"\n class=\"t-row\"\n >\n <div\n *tuiRepeatTimes=\"let index of 7 - (sheet[rowIndex]?.length ?? 0)\"\n class=\"t-cell t-cell_empty\"\n ></div>\n <ng-container *tuiRepeatTimes=\"let colIndex of sheet[rowIndex]?.length ?? 0\">\n @if (sheet[rowIndex]?.[colIndex]; as item) {\n <div\n automation-id=\"tui-primitive-calendar-mobile__cell\"\n tuiRipple\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"disabledItemHandler(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n (click)=\"onItemClick(item)\"\n >\n {{ item.day }}\n </div>\n }\n </ng-container>\n <div\n *tuiRepeatTimes=\"let index of 7 - (sheet[rowIndex]?.length ?? 0)\"\n class=\"t-cell t-cell_empty\"\n ></div>\n </div>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAkBM,MAAO,sBAAuB,SAAQ,gBAAgB,CAAA;AAV5D,IAAA,WAAA,GAAA;;AAWuB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAChD;+GAFY,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBnC,iuCA+BA,EDrBc,MAAA,EAAA,CAAA,4lIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,oBAAoB,yDAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAQxD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAC5B,OAAA,EAAA,CAAC,oBAAoB,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC,EAAA,eAAA,EAGjD,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,cAAc,EAAE,OAAO;AAC1B,qBAAA,EAAA,QAAA,EAAA,iuCAAA,EAAA,MAAA,EAAA,CAAA,4lIAAA,CAAA,EAAA;;;AEhBL;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-mobile-components-mobile-calendar-sheet.mjs","sources":["../../../projects/addon-mobile/components/mobile-calendar-sheet/mobile-calendar-sheet.component.ts","../../../projects/addon-mobile/components/mobile-calendar-sheet/mobile-calendar-sheet.template.html","../../../projects/addon-mobile/components/mobile-calendar-sheet/taiga-ui-addon-mobile-components-mobile-calendar-sheet.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {TuiRipple} from '@taiga-ui/addon-mobile/directives/ripple';\nimport {TUI_IS_IOS} from '@taiga-ui/cdk/tokens';\nimport {TuiCalendarSheet, TuiCalendarSheetPipe} from '@taiga-ui/core/components/calendar';\n\n@Component({\n selector: 'tui-mobile-calendar-sheet',\n imports: [TuiCalendarSheetPipe, TuiRipple],\n templateUrl: './mobile-calendar-sheet.template.html',\n styleUrl: './mobile-calendar-sheet.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._ios]': 'isIOS',\n },\n})\nexport class TuiMobileCalendarSheet extends TuiCalendarSheet {\n protected readonly isIOS = inject(TUI_IS_IOS);\n}\n","@let sheet = month | tuiCalendarSheet;\n@for (_ of '-'.repeat(sheet.length); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-primitive-calendar-mobile__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(7 - (sheet[rowIndex]?.length ?? 0)); track $index) {\n <div class=\"t-cell t-cell_empty\"></div>\n }\n @for (_ of '-'.repeat(sheet[rowIndex]?.length ?? 0); track $index) {\n @if (sheet[rowIndex]?.[$index]; as item) {\n <div\n automation-id=\"tui-primitive-calendar-mobile__cell\"\n tuiRipple\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"disabledItemHandler(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n (click)=\"onItemClick(item)\"\n >\n {{ item.day }}\n </div>\n }\n }\n @for (_ of '-'.repeat(7 - (sheet[rowIndex]?.length ?? 0)); track $index) {\n <div class=\"t-cell t-cell_empty\"></div>\n }\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAeM,MAAO,sBAAuB,SAAQ,gBAAgB,CAAA;AAV5D,IAAA,WAAA,GAAA;;AAWuB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAChD;+GAFY,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,ECfnC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,irCA8BA,EDvBc,MAAA,EAAA,CAAA,skIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,oBAAoB,yDAAE,SAAS,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAQhC,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;+BACI,2BAA2B,EAAA,OAAA,EAC5B,CAAC,oBAAoB,EAAE,SAAS,CAAC,EAGzB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,cAAc,EAAE,OAAO;AAC1B,qBAAA,EAAA,QAAA,EAAA,irCAAA,EAAA,MAAA,EAAA,CAAA,skIAAA,CAAA,EAAA;;;AEbL;;AAEG;;;;"}
@@ -1,29 +1,44 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, Optional, Self, inject, DestroyRef, NgZone, EventEmitter, Input, Output, ViewChild, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { NgControl } from '@angular/forms';
4
+ import { tuiControlValue, tuiWatch, tuiZonefreeScheduler, tuiZonefree, tuiTypedFromEvent } from '@taiga-ui/cdk/observables';
5
+ import { of, map, Subject, distinctUntilChanged, EMPTY, BehaviorSubject, skip, timer, identity, delay, take, windowToggle, mergeMap, filter, switchMap, race, debounceTime, takeUntil } from 'rxjs';
1
6
  import { VIRTUAL_SCROLL_STRATEGY, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
2
7
  import { DOCUMENT, AsyncPipe } from '@angular/common';
3
- import * as i0 from '@angular/core';
4
- import { InjectionToken, Optional, inject, DestroyRef, NgZone, EventEmitter, Input, Output, ViewChild, ChangeDetectionStrategy, Component } from '@angular/core';
5
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
8
+ import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
6
9
  import { TuiMobileCalendarSheet } from '@taiga-ui/addon-mobile/components/mobile-calendar-sheet';
7
- import { TuiRipple, TuiTouchable } from '@taiga-ui/addon-mobile/directives';
10
+ import { TuiRipple } from '@taiga-ui/addon-mobile/directives/ripple';
11
+ import { TuiTouchable } from '@taiga-ui/addon-mobile/directives/touchable';
8
12
  import { TUI_FALSE_HANDLER } from '@taiga-ui/cdk/constants';
9
13
  import { MONTHS_IN_YEAR, TuiDay, TuiMonth, TUI_FIRST_DAY, TUI_LAST_DAY, TuiDayRange } from '@taiga-ui/cdk/date-time';
10
- import { tuiWatch, tuiZonefreeScheduler, tuiZonefree, tuiTypedFromEvent } from '@taiga-ui/cdk/observables';
11
14
  import { TuiMapperPipe } from '@taiga-ui/cdk/pipes/mapper';
12
15
  import { TUI_IS_IOS, TUI_IS_E2E } from '@taiga-ui/cdk/tokens';
13
16
  import { TuiButton } from '@taiga-ui/core/components/button';
14
- import { TUI_CALENDAR_SHEET_OPTIONS } from '@taiga-ui/core/components/calendar';
17
+ import { TUI_CALENDAR_SHEET_OPTIONS, TuiOrderWeekDaysPipe } from '@taiga-ui/core/components/calendar';
15
18
  import { TuiLink } from '@taiga-ui/core/components/link';
16
- import { TuiMonthPipe } from '@taiga-ui/core/pipes/month';
17
- import { TuiOrderWeekDaysPipe } from '@taiga-ui/core/pipes/order-week-days';
18
- import { TUI_ANIMATIONS_SPEED, TUI_COMMON_ICONS, TUI_CLOSE_WORD, TUI_SHORT_WEEK_DAYS } from '@taiga-ui/core/tokens';
19
+ import { TUI_ANIMATIONS_SPEED, TUI_COMMON_ICONS, TUI_CLOSE_WORD, TUI_MONTHS, TUI_SHORT_WEEK_DAYS } from '@taiga-ui/core/tokens';
19
20
  import { tuiGetDuration } from '@taiga-ui/core/utils/miscellaneous';
20
- import { TUI_CALENDAR_DATE_STREAM, TUI_CANCEL_WORD, TUI_DONE_WORD, TUI_CHOOSE_DAY_OR_RANGE_TEXTS } from '@taiga-ui/kit/tokens';
21
- import { tuiToggleDay } from '@taiga-ui/kit/utils';
22
- import { Subject, distinctUntilChanged, takeUntil, EMPTY, BehaviorSubject, skip, map, timer, identity, delay, take, windowToggle, mergeMap, filter, switchMap, race, debounceTime } from 'rxjs';
23
- import { TuiScrollService } from '@taiga-ui/cdk/services';
21
+ import { TUI_CANCEL_WORD, TUI_DONE_WORD, TUI_CHOOSE_DAY_OR_RANGE_TEXTS } from '@taiga-ui/kit/tokens';
24
22
  import { __decorate } from 'tslib';
25
23
  import { tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
26
24
 
25
+ const TUI_CALENDAR_DATE_STREAM = new InjectionToken(ngDevMode ? 'TUI_CALENDAR_DATE_STREAM' : '');
26
+ function tuiDateStreamWithTransformer(transformer) {
27
+ return {
28
+ provide: TUI_CALENDAR_DATE_STREAM,
29
+ deps: [
30
+ [new Optional(), new Self(), NgControl],
31
+ [new Optional(), transformer],
32
+ ],
33
+ useFactory: tuiControlValueFactory,
34
+ };
35
+ }
36
+ function tuiControlValueFactory(control, transformer) {
37
+ return control
38
+ ? tuiControlValue(control).pipe(map((value) => transformer ? transformer?.fromControlValue(value) : value))
39
+ : of(null);
40
+ }
41
+
27
42
  function getCycle(options) {
28
43
  return Array.from({ length: options.yearCycle }, (_, i) => Array.from({ length: MONTHS_IN_YEAR }, (_, month) => options.label +
29
44
  weekCount({ year: i, month, startingYear: options.startingYear }) *
@@ -70,17 +85,16 @@ function reduceCycle(cycle, lastYear = 28, lastMonth = 12) {
70
85
  : total, 0);
71
86
  }
72
87
  /**
73
- * This scroll strategy is hard wired with styles for iOS and Android.
88
+ * This scroll strategy is hard-wired with styles for iOS and Android.
74
89
  * It is dependent on month height on those platforms and is designed to
75
90
  * work for {@link TuiMobileCalendar} with years 1906 to 2102
76
91
  */
77
92
  class TuiMobileCalendarStrategy {
78
- constructor(isIOS, scrollService) {
79
- this.isIOS = isIOS;
80
- this.scrollService = scrollService;
93
+ constructor() {
94
+ this.isIOS = inject(TUI_IS_IOS);
95
+ this.destroy$ = new Subject();
81
96
  this.index$ = new Subject();
82
97
  this.viewport = null;
83
- this.destroy$ = new Subject();
84
98
  }
85
99
  get scrolledIndexChange() {
86
100
  return this.index$.pipe(distinctUntilChanged());
@@ -107,18 +121,7 @@ class TuiMobileCalendarStrategy {
107
121
  onContentRendered() { }
108
122
  onRenderedOffsetChanged() { }
109
123
  scrollToIndex(index, behavior) {
110
- if (!this.viewport) {
111
- return;
112
- }
113
- const scrollTop = this.getOffsetForIndex(index);
114
- if (behavior !== 'smooth') {
115
- this.viewport.scrollToOffset(scrollTop, behavior);
116
- return;
117
- }
118
- this.scrollService
119
- .scroll$(this.viewport.elementRef.nativeElement, scrollTop)
120
- .pipe(takeUntil(this.destroy$))
121
- .subscribe();
124
+ this.viewport?.scrollToOffset(this.getOffsetForIndex(index), behavior);
122
125
  }
123
126
  getOffsetForIndex(index) {
124
127
  const month = index % MONTHS_IN_YEAR;
@@ -184,10 +187,8 @@ __decorate([
184
187
  */
185
188
  const TUI_VALUE_STREAM = new InjectionToken(ngDevMode ? 'TUI_VALUE_STREAM' : '');
186
189
  const TUI_MOBILE_CALENDAR_PROVIDERS = [
187
- TuiScrollService,
188
190
  {
189
191
  provide: VIRTUAL_SCROLL_STRATEGY,
190
- deps: [TUI_IS_IOS, TuiScrollService],
191
192
  useClass: TuiMobileCalendarStrategy,
192
193
  },
193
194
  {
@@ -211,11 +212,12 @@ class TuiMobileCalendar {
211
212
  this.isIOS = inject(TUI_IS_IOS);
212
213
  this.isE2E = inject(TUI_IS_E2E);
213
214
  this.icons = inject(TUI_COMMON_ICONS);
214
- this.closeWord$ = inject(TUI_CLOSE_WORD);
215
- this.cancelWord$ = inject(TUI_CANCEL_WORD);
216
- this.doneWord$ = inject(TUI_DONE_WORD);
217
- this.unorderedWeekDays$ = inject(TUI_SHORT_WEEK_DAYS);
218
- this.chooseDayOrRangeTexts$ = inject(TUI_CHOOSE_DAY_OR_RANGE_TEXTS, {
215
+ this.closeWord = inject(TUI_CLOSE_WORD);
216
+ this.cancelWord = inject(TUI_CANCEL_WORD);
217
+ this.doneWord = inject(TUI_DONE_WORD);
218
+ this.monthNames = inject(TUI_MONTHS);
219
+ this.unorderedWeekDays$ = toObservable(inject(TUI_SHORT_WEEK_DAYS));
220
+ this.chooseDayOrRangeTexts = inject(TUI_CHOOSE_DAY_OR_RANGE_TEXTS, {
219
221
  optional: true,
220
222
  });
221
223
  this.years = Array.from({ length: RANGE }, (_, i) => i + STARTING_YEAR);
@@ -288,7 +290,7 @@ class TuiMobileCalendar {
288
290
  this.value = day;
289
291
  }
290
292
  else if (this.isMultiValue(this.value)) {
291
- this.value = tuiToggleDay(this.value, day);
293
+ this.value = toggleDay(this.value, day);
292
294
  }
293
295
  else if (this.value instanceof TuiDay) {
294
296
  this.value = TuiDayRange.sort(this.value, day);
@@ -429,10 +431,10 @@ class TuiMobileCalendar {
429
431
  getMonthOffset(year) {
430
432
  return (year - this.activeYear) * MONTHS_IN_YEAR;
431
433
  }
432
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiMobileCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
433
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TuiMobileCalendar, isStandalone: true, selector: "tui-mobile-calendar", inputs: { single: "single", multi: "multi", min: "min", max: "max", disabledItemHandler: "disabledItemHandler", value: "value" }, outputs: { cancel: "cancel", confirm: "confirm", valueChange: "valueChange" }, host: { listeners: { "mousedown.prevent": "0" }, properties: { "class._ios": "isIOS", "class._initialized": "initialized" } }, providers: TUI_MOBILE_CALENDAR_PROVIDERS, viewQueries: [{ propertyName: "yearsScrollRef", first: true, predicate: ["yearsScrollRef"], descendants: true }, { propertyName: "monthsScrollRef", first: true, predicate: ["monthsScrollRef"], descendants: true }], ngImport: i0, template: "@if (chooseDayOrRangeTexts$ | async; as texts) {\n <header class=\"t-header\">\n <button\n appearance=\"\"\n automation-id=\"tui-mobile-calendar__cancel\"\n tuiIconButton\n tuiRipple\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"onClose()\"\n >\n {{ closeWord$ | async }}\n </button>\n <button\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link t-link_close\"\n (click)=\"onClose()\"\n >\n {{ cancelWord$ | async }}\n </button>\n <h2\n automation-id=\"tui-mobile-calendar__label\"\n class=\"t-label\"\n >\n {{ single ? texts[0] : multi ? texts[2] : texts[1] }}\n </h2>\n <button\n automation-id=\"tui-mobile-calendar__confirm\"\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link\"\n (click)=\"onConfirm()\"\n >\n {{ doneWord$ | async }}\n </button>\n </header>\n}\n<cdk-virtual-scroll-viewport\n #yearsScrollRef\n orientation=\"horizontal\"\n class=\"t-years\"\n [itemSize]=\"yearWidth\"\n>\n <div class=\"t-years-wrapper\">\n <button\n *cdkVirtualFor=\"let index of years\"\n type=\"button\"\n class=\"t-year\"\n [attr.data-state]=\"getState(index)\"\n (click)=\"setYear(index)\"\n >\n {{ index }}\n </button>\n </div>\n</cdk-virtual-scroll-viewport>\n<div class=\"t-week\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div class=\"t-day\">\n {{ day }}\n </div>\n }\n</div>\n<cdk-virtual-scroll-viewport\n #monthsScrollRef\n itemSize=\"354\"\n maxBufferPx=\"5000\"\n minBufferPx=\"0\"\n class=\"t-months\"\n (scrolledIndexChange)=\"onMonthChange($event)\"\n>\n <section\n *cdkVirtualFor=\"let month of months; templateCacheSize: 10\"\n class=\"t-month-wrapper\"\n >\n <h2 class=\"t-month\">{{ month | tuiMonth | async }}</h2>\n <tui-mobile-calendar-sheet\n class=\"t-calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : min : max\"\n [month]=\"month\"\n [single]=\"single\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n />\n </section>\n</cdk-virtual-scroll-viewport>\n", styles: [":host{display:block;block-size:100%;font-family:-apple-system,BlinkMacSystemFont,Roboto,sans-serif;color:var(--tui-text-primary);overscroll-behavior:none;-webkit-tap-highlight-color:transparent}:host ::ng-deep .t-cell:before,:host ::ng-deep .t-cell:after{transform:translateZ(1px)}.t-header{position:relative;display:flex;align-items:center;block-size:3.5rem;padding:0 1rem;border-block-end:.5px solid var(--tui-border-normal)}:host._ios .t-header{block-size:2.75rem;border-block-end:none}.t-close{inline-size:1.5rem;block-size:1.5rem;margin-inline-end:2rem}:host._ios .t-close{display:none}.t-link{margin-inline-start:auto;flex-shrink:0;font-size:.875rem;line-height:1rem;font-weight:500;text-transform:uppercase;color:var(--tui-text-action)}.t-link_close{display:none}:host._ios .t-link{min-inline-size:3.75rem;text-align:end;font-size:.9375rem;line-height:1.125rem;font-weight:400;letter-spacing:.018125rem;text-transform:none}:host._ios .t-link_close{display:block;margin:0 auto 0 0;text-align:start}.t-label{flex-grow:1;margin:0;font-size:1.25rem;line-height:3.5rem;font-weight:500;letter-spacing:-.0125rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-label+.t-link{padding-inline-start:1rem}:host._ios .t-label{font-size:1.0625rem;font-weight:600;letter-spacing:-.025625rem;text-align:center}.t-years{scrollbar-width:none;-ms-overflow-style:none;block-size:4.0625rem;background-color:var(--tui-background-base);box-shadow:0 .5px var(--tui-border-normal)}.t-years::-webkit-scrollbar,.t-years::-webkit-scrollbar-thumb{display:none}:host._ios .t-years{background-color:transparent}.t-years-wrapper{display:flex;block-size:4.0625rem}.t-year{-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;outline:none;inline-size:20vw;flex-shrink:0;font-size:.9375rem;font-weight:700;letter-spacing:.015625rem;cursor:pointer;opacity:.1;transform:scale(.73);transition:color,opacity,transform .2s}.t-year[data-state=adjacent]{transform:scale(.86);opacity:.3}.t-year[data-state=active]{color:var(--tui-text-action);opacity:1;transform:scale(1)}.t-week{display:flex;align-items:center;block-size:1.875rem;inline-size:20.75rem;max-inline-size:100%;margin:0 auto;font-size:.75rem}:host._ios .t-week{inline-size:22.625rem;font-size:.6875rem;font-weight:500;color:var(--tui-text-secondary)}.t-day{flex:1;text-align:center}.t-months{scrollbar-width:none;-ms-overflow-style:none;block-size:calc(100% - 9.5rem);box-shadow:0 -1px var(--tui-border-normal);overflow-x:hidden}.t-months::-webkit-scrollbar,.t-months::-webkit-scrollbar-thumb{display:none}:host._ios .t-months{block-size:calc(100% - 8.75rem)}.t-month-wrapper{display:flex;margin:.625rem 0 -.625rem;block-size:22.125rem;flex-direction:column}.t-month{block-size:2.75rem;inline-size:100%;line-height:2.75rem;padding-inline-start:1rem;font-size:.875rem;font-weight:500;text-transform:uppercase;margin:0 0 1.25rem;box-sizing:border-box;border-block-end:.5px solid var(--tui-border-normal)}:host._ios .t-month{block-size:3.125rem;margin:0;border-block-end:none;text-transform:none;font-size:1.375rem;line-height:3.125rem;letter-spacing:.02rem;font-weight:700}.t-calendar{margin:0 auto;transition:opacity .2s}.t-week,.t-years,.t-months{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:0}:host(._initialized) .t-week,:host(._initialized) .t-years,:host(._initialized) .t-months{opacity:1}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "component", type: TuiMobileCalendarSheet, selector: "tui-mobile-calendar-sheet" }, { kind: "pipe", type: TuiMonthPipe, name: "tuiMonth" }, { kind: "pipe", type: TuiOrderWeekDaysPipe, name: "tuiOrderWeekDays" }, { kind: "directive", type: TuiRipple, selector: "[tuiRipple]", inputs: ["tuiRipple"] }, { kind: "directive", type: TuiTouchable, selector: "[tuiTouchable]", inputs: ["tuiTouchable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
434
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiMobileCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
435
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: TuiMobileCalendar, isStandalone: true, selector: "tui-mobile-calendar", inputs: { single: "single", multi: "multi", min: "min", max: "max", disabledItemHandler: "disabledItemHandler", value: "value" }, outputs: { cancel: "cancel", confirm: "confirm", valueChange: "valueChange" }, host: { listeners: { "mousedown.prevent": "0" }, properties: { "class._ios": "isIOS", "class._initialized": "initialized" } }, providers: TUI_MOBILE_CALENDAR_PROVIDERS, viewQueries: [{ propertyName: "yearsScrollRef", first: true, predicate: ["yearsScrollRef"], descendants: true }, { propertyName: "monthsScrollRef", first: true, predicate: ["monthsScrollRef"], descendants: true }], ngImport: i0, template: "@if (chooseDayOrRangeTexts?.(); as texts) {\n <header class=\"t-header\">\n <button\n appearance=\"\"\n automation-id=\"tui-mobile-calendar__cancel\"\n tuiIconButton\n tuiRipple\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"onClose()\"\n >\n {{ closeWord() }}\n </button>\n <button\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link t-link_close\"\n (click)=\"onClose()\"\n >\n {{ cancelWord() }}\n </button>\n <h2\n automation-id=\"tui-mobile-calendar__label\"\n class=\"t-label\"\n >\n {{ single ? texts[0] : multi ? texts[2] : texts[1] }}\n </h2>\n <button\n automation-id=\"tui-mobile-calendar__confirm\"\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link\"\n (click)=\"onConfirm()\"\n >\n {{ doneWord() }}\n </button>\n </header>\n}\n<cdk-virtual-scroll-viewport\n #yearsScrollRef\n orientation=\"horizontal\"\n class=\"t-years\"\n [itemSize]=\"yearWidth\"\n>\n <div class=\"t-years-wrapper\">\n <button\n *cdkVirtualFor=\"let index of years\"\n type=\"button\"\n class=\"t-year\"\n [attr.data-state]=\"getState(index)\"\n (click)=\"setYear(index)\"\n >\n {{ index }}\n </button>\n </div>\n</cdk-virtual-scroll-viewport>\n<div class=\"t-week\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div class=\"t-day\">\n {{ day }}\n </div>\n }\n</div>\n<cdk-virtual-scroll-viewport\n #monthsScrollRef\n itemSize=\"354\"\n maxBufferPx=\"5000\"\n minBufferPx=\"0\"\n class=\"t-months\"\n (scrolledIndexChange)=\"onMonthChange($event)\"\n>\n <section\n *cdkVirtualFor=\"let month of months; templateCacheSize: 10\"\n class=\"t-month-wrapper\"\n >\n <h2 class=\"t-month\">{{ monthNames()[month.month] }}</h2>\n <tui-mobile-calendar-sheet\n class=\"t-calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : min : max\"\n [month]=\"month\"\n [single]=\"single\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n />\n </section>\n</cdk-virtual-scroll-viewport>\n", styles: [":host{display:block;block-size:100%;color:var(--tui-text-primary);overscroll-behavior:none;-webkit-tap-highlight-color:transparent}:host ::ng-deep .t-cell:before,:host ::ng-deep .t-cell:after{transform:translateZ(1px)}.t-header{position:relative;display:flex;align-items:center;block-size:3.5rem;padding:0 1rem;border-block-end:.5px solid var(--tui-border-normal)}:host._ios .t-header{block-size:2.75rem;border-block-end:none}.t-close{inline-size:1.5rem;block-size:1.5rem;margin-inline-end:2rem}:host._ios .t-close{display:none}.t-link{margin-inline-start:auto;flex-shrink:0;font-size:.875rem;line-height:1rem;font-weight:500;text-transform:uppercase;color:var(--tui-text-action)}.t-link_close{display:none}:host._ios .t-link{min-inline-size:3.75rem;text-align:end;font-size:.9375rem;line-height:1.125rem;font-weight:400;letter-spacing:.018125rem;text-transform:none}:host._ios .t-link_close{display:block;margin:0 auto 0 0;text-align:start}.t-label{flex-grow:1;margin:0;font-size:1.25rem;line-height:3.5rem;font-weight:500;letter-spacing:-.0125rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-label+.t-link{padding-inline-start:1rem}:host._ios .t-label{font-size:1.0625rem;font-weight:600;letter-spacing:-.025625rem;text-align:center}.t-years{scrollbar-width:none;-ms-overflow-style:none;block-size:4.0625rem;background-color:var(--tui-background-base);box-shadow:0 .5px var(--tui-border-normal)}.t-years::-webkit-scrollbar,.t-years::-webkit-scrollbar-thumb{display:none}:host._ios .t-years{background-color:transparent}.t-years-wrapper{display:flex;block-size:4.0625rem}.t-year{-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;outline:none;inline-size:20vw;flex-shrink:0;font-size:.9375rem;font-weight:700;letter-spacing:.015625rem;cursor:pointer;opacity:.1;transform:scale(.73);transition:color,opacity,transform .2s}.t-year[data-state=adjacent]{transform:scale(.86);opacity:.3}.t-year[data-state=active]{color:var(--tui-text-action);opacity:1;transform:scale(1)}.t-week{display:flex;align-items:center;block-size:1.875rem;inline-size:20.75rem;max-inline-size:100%;margin:0 auto;font-size:.75rem}:host._ios .t-week{inline-size:22.625rem;font-size:.6875rem;font-weight:500;color:var(--tui-text-secondary)}.t-day{flex:1;text-align:center}.t-months{scrollbar-width:none;-ms-overflow-style:none;block-size:calc(100% - 9.5rem);box-shadow:0 -1px var(--tui-border-normal);overflow-x:hidden}.t-months::-webkit-scrollbar,.t-months::-webkit-scrollbar-thumb{display:none}:host._ios .t-months{block-size:calc(100% - 8.75rem)}.t-month-wrapper{display:flex;margin:.625rem 0 -.625rem;block-size:22.125rem;flex-direction:column}.t-month{block-size:2.75rem;inline-size:100%;line-height:2.75rem;padding-inline-start:1rem;font-size:.875rem;font-weight:500;text-transform:uppercase;margin:0 0 1.25rem;box-sizing:border-box;border-block-end:.5px solid var(--tui-border-normal)}:host._ios .t-month{block-size:3.125rem;margin:0;border-block-end:none;text-transform:none;font-size:1.375rem;line-height:3.125rem;letter-spacing:.02rem;font-weight:700}.t-calendar{margin:0 auto;transition:opacity .2s}.t-week,.t-years,.t-months{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:0}:host(._initialized) .t-week,:host(._initialized) .t-years,:host(._initialized) .t-months{opacity:1}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]" }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "component", type: TuiMobileCalendarSheet, selector: "tui-mobile-calendar-sheet" }, { kind: "pipe", type: TuiOrderWeekDaysPipe, name: "tuiOrderWeekDays" }, { kind: "directive", type: TuiRipple, selector: "[tuiRipple]", inputs: ["tuiRipple"] }, { kind: "directive", type: TuiTouchable, selector: "[tuiTouchable]", inputs: ["tuiTouchable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
434
436
  }
435
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TuiMobileCalendar, decorators: [{
437
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: TuiMobileCalendar, decorators: [{
436
438
  type: Component,
437
439
  args: [{ selector: 'tui-mobile-calendar', imports: [
438
440
  AsyncPipe,
@@ -443,7 +445,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
443
445
  TuiLink,
444
446
  TuiMapperPipe,
445
447
  TuiMobileCalendarSheet,
446
- TuiMonthPipe,
447
448
  TuiOrderWeekDaysPipe,
448
449
  TuiRipple,
449
450
  TuiTouchable,
@@ -451,7 +452,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
451
452
  '[class._ios]': 'isIOS',
452
453
  '[class._initialized]': 'initialized',
453
454
  '(mousedown.prevent)': '0',
454
- }, template: "@if (chooseDayOrRangeTexts$ | async; as texts) {\n <header class=\"t-header\">\n <button\n appearance=\"\"\n automation-id=\"tui-mobile-calendar__cancel\"\n tuiIconButton\n tuiRipple\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"onClose()\"\n >\n {{ closeWord$ | async }}\n </button>\n <button\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link t-link_close\"\n (click)=\"onClose()\"\n >\n {{ cancelWord$ | async }}\n </button>\n <h2\n automation-id=\"tui-mobile-calendar__label\"\n class=\"t-label\"\n >\n {{ single ? texts[0] : multi ? texts[2] : texts[1] }}\n </h2>\n <button\n automation-id=\"tui-mobile-calendar__confirm\"\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link\"\n (click)=\"onConfirm()\"\n >\n {{ doneWord$ | async }}\n </button>\n </header>\n}\n<cdk-virtual-scroll-viewport\n #yearsScrollRef\n orientation=\"horizontal\"\n class=\"t-years\"\n [itemSize]=\"yearWidth\"\n>\n <div class=\"t-years-wrapper\">\n <button\n *cdkVirtualFor=\"let index of years\"\n type=\"button\"\n class=\"t-year\"\n [attr.data-state]=\"getState(index)\"\n (click)=\"setYear(index)\"\n >\n {{ index }}\n </button>\n </div>\n</cdk-virtual-scroll-viewport>\n<div class=\"t-week\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div class=\"t-day\">\n {{ day }}\n </div>\n }\n</div>\n<cdk-virtual-scroll-viewport\n #monthsScrollRef\n itemSize=\"354\"\n maxBufferPx=\"5000\"\n minBufferPx=\"0\"\n class=\"t-months\"\n (scrolledIndexChange)=\"onMonthChange($event)\"\n>\n <section\n *cdkVirtualFor=\"let month of months; templateCacheSize: 10\"\n class=\"t-month-wrapper\"\n >\n <h2 class=\"t-month\">{{ month | tuiMonth | async }}</h2>\n <tui-mobile-calendar-sheet\n class=\"t-calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : min : max\"\n [month]=\"month\"\n [single]=\"single\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n />\n </section>\n</cdk-virtual-scroll-viewport>\n", styles: [":host{display:block;block-size:100%;font-family:-apple-system,BlinkMacSystemFont,Roboto,sans-serif;color:var(--tui-text-primary);overscroll-behavior:none;-webkit-tap-highlight-color:transparent}:host ::ng-deep .t-cell:before,:host ::ng-deep .t-cell:after{transform:translateZ(1px)}.t-header{position:relative;display:flex;align-items:center;block-size:3.5rem;padding:0 1rem;border-block-end:.5px solid var(--tui-border-normal)}:host._ios .t-header{block-size:2.75rem;border-block-end:none}.t-close{inline-size:1.5rem;block-size:1.5rem;margin-inline-end:2rem}:host._ios .t-close{display:none}.t-link{margin-inline-start:auto;flex-shrink:0;font-size:.875rem;line-height:1rem;font-weight:500;text-transform:uppercase;color:var(--tui-text-action)}.t-link_close{display:none}:host._ios .t-link{min-inline-size:3.75rem;text-align:end;font-size:.9375rem;line-height:1.125rem;font-weight:400;letter-spacing:.018125rem;text-transform:none}:host._ios .t-link_close{display:block;margin:0 auto 0 0;text-align:start}.t-label{flex-grow:1;margin:0;font-size:1.25rem;line-height:3.5rem;font-weight:500;letter-spacing:-.0125rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-label+.t-link{padding-inline-start:1rem}:host._ios .t-label{font-size:1.0625rem;font-weight:600;letter-spacing:-.025625rem;text-align:center}.t-years{scrollbar-width:none;-ms-overflow-style:none;block-size:4.0625rem;background-color:var(--tui-background-base);box-shadow:0 .5px var(--tui-border-normal)}.t-years::-webkit-scrollbar,.t-years::-webkit-scrollbar-thumb{display:none}:host._ios .t-years{background-color:transparent}.t-years-wrapper{display:flex;block-size:4.0625rem}.t-year{-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;outline:none;inline-size:20vw;flex-shrink:0;font-size:.9375rem;font-weight:700;letter-spacing:.015625rem;cursor:pointer;opacity:.1;transform:scale(.73);transition:color,opacity,transform .2s}.t-year[data-state=adjacent]{transform:scale(.86);opacity:.3}.t-year[data-state=active]{color:var(--tui-text-action);opacity:1;transform:scale(1)}.t-week{display:flex;align-items:center;block-size:1.875rem;inline-size:20.75rem;max-inline-size:100%;margin:0 auto;font-size:.75rem}:host._ios .t-week{inline-size:22.625rem;font-size:.6875rem;font-weight:500;color:var(--tui-text-secondary)}.t-day{flex:1;text-align:center}.t-months{scrollbar-width:none;-ms-overflow-style:none;block-size:calc(100% - 9.5rem);box-shadow:0 -1px var(--tui-border-normal);overflow-x:hidden}.t-months::-webkit-scrollbar,.t-months::-webkit-scrollbar-thumb{display:none}:host._ios .t-months{block-size:calc(100% - 8.75rem)}.t-month-wrapper{display:flex;margin:.625rem 0 -.625rem;block-size:22.125rem;flex-direction:column}.t-month{block-size:2.75rem;inline-size:100%;line-height:2.75rem;padding-inline-start:1rem;font-size:.875rem;font-weight:500;text-transform:uppercase;margin:0 0 1.25rem;box-sizing:border-box;border-block-end:.5px solid var(--tui-border-normal)}:host._ios .t-month{block-size:3.125rem;margin:0;border-block-end:none;text-transform:none;font-size:1.375rem;line-height:3.125rem;letter-spacing:.02rem;font-weight:700}.t-calendar{margin:0 auto;transition:opacity .2s}.t-week,.t-years,.t-months{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:0}:host(._initialized) .t-week,:host(._initialized) .t-years,:host(._initialized) .t-months{opacity:1}\n"] }]
455
+ }, template: "@if (chooseDayOrRangeTexts?.(); as texts) {\n <header class=\"t-header\">\n <button\n appearance=\"\"\n automation-id=\"tui-mobile-calendar__cancel\"\n tuiIconButton\n tuiRipple\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"onClose()\"\n >\n {{ closeWord() }}\n </button>\n <button\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link t-link_close\"\n (click)=\"onClose()\"\n >\n {{ cancelWord() }}\n </button>\n <h2\n automation-id=\"tui-mobile-calendar__label\"\n class=\"t-label\"\n >\n {{ single ? texts[0] : multi ? texts[2] : texts[1] }}\n </h2>\n <button\n automation-id=\"tui-mobile-calendar__confirm\"\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link\"\n (click)=\"onConfirm()\"\n >\n {{ doneWord() }}\n </button>\n </header>\n}\n<cdk-virtual-scroll-viewport\n #yearsScrollRef\n orientation=\"horizontal\"\n class=\"t-years\"\n [itemSize]=\"yearWidth\"\n>\n <div class=\"t-years-wrapper\">\n <button\n *cdkVirtualFor=\"let index of years\"\n type=\"button\"\n class=\"t-year\"\n [attr.data-state]=\"getState(index)\"\n (click)=\"setYear(index)\"\n >\n {{ index }}\n </button>\n </div>\n</cdk-virtual-scroll-viewport>\n<div class=\"t-week\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div class=\"t-day\">\n {{ day }}\n </div>\n }\n</div>\n<cdk-virtual-scroll-viewport\n #monthsScrollRef\n itemSize=\"354\"\n maxBufferPx=\"5000\"\n minBufferPx=\"0\"\n class=\"t-months\"\n (scrolledIndexChange)=\"onMonthChange($event)\"\n>\n <section\n *cdkVirtualFor=\"let month of months; templateCacheSize: 10\"\n class=\"t-month-wrapper\"\n >\n <h2 class=\"t-month\">{{ monthNames()[month.month] }}</h2>\n <tui-mobile-calendar-sheet\n class=\"t-calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : min : max\"\n [month]=\"month\"\n [single]=\"single\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n />\n </section>\n</cdk-virtual-scroll-viewport>\n", styles: [":host{display:block;block-size:100%;color:var(--tui-text-primary);overscroll-behavior:none;-webkit-tap-highlight-color:transparent}:host ::ng-deep .t-cell:before,:host ::ng-deep .t-cell:after{transform:translateZ(1px)}.t-header{position:relative;display:flex;align-items:center;block-size:3.5rem;padding:0 1rem;border-block-end:.5px solid var(--tui-border-normal)}:host._ios .t-header{block-size:2.75rem;border-block-end:none}.t-close{inline-size:1.5rem;block-size:1.5rem;margin-inline-end:2rem}:host._ios .t-close{display:none}.t-link{margin-inline-start:auto;flex-shrink:0;font-size:.875rem;line-height:1rem;font-weight:500;text-transform:uppercase;color:var(--tui-text-action)}.t-link_close{display:none}:host._ios .t-link{min-inline-size:3.75rem;text-align:end;font-size:.9375rem;line-height:1.125rem;font-weight:400;letter-spacing:.018125rem;text-transform:none}:host._ios .t-link_close{display:block;margin:0 auto 0 0;text-align:start}.t-label{flex-grow:1;margin:0;font-size:1.25rem;line-height:3.5rem;font-weight:500;letter-spacing:-.0125rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-label+.t-link{padding-inline-start:1rem}:host._ios .t-label{font-size:1.0625rem;font-weight:600;letter-spacing:-.025625rem;text-align:center}.t-years{scrollbar-width:none;-ms-overflow-style:none;block-size:4.0625rem;background-color:var(--tui-background-base);box-shadow:0 .5px var(--tui-border-normal)}.t-years::-webkit-scrollbar,.t-years::-webkit-scrollbar-thumb{display:none}:host._ios .t-years{background-color:transparent}.t-years-wrapper{display:flex;block-size:4.0625rem}.t-year{-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;outline:none;inline-size:20vw;flex-shrink:0;font-size:.9375rem;font-weight:700;letter-spacing:.015625rem;cursor:pointer;opacity:.1;transform:scale(.73);transition:color,opacity,transform .2s}.t-year[data-state=adjacent]{transform:scale(.86);opacity:.3}.t-year[data-state=active]{color:var(--tui-text-action);opacity:1;transform:scale(1)}.t-week{display:flex;align-items:center;block-size:1.875rem;inline-size:20.75rem;max-inline-size:100%;margin:0 auto;font-size:.75rem}:host._ios .t-week{inline-size:22.625rem;font-size:.6875rem;font-weight:500;color:var(--tui-text-secondary)}.t-day{flex:1;text-align:center}.t-months{scrollbar-width:none;-ms-overflow-style:none;block-size:calc(100% - 9.5rem);box-shadow:0 -1px var(--tui-border-normal);overflow-x:hidden}.t-months::-webkit-scrollbar,.t-months::-webkit-scrollbar-thumb{display:none}:host._ios .t-months{block-size:calc(100% - 8.75rem)}.t-month-wrapper{display:flex;margin:.625rem 0 -.625rem;block-size:22.125rem;flex-direction:column}.t-month{block-size:2.75rem;inline-size:100%;line-height:2.75rem;padding-inline-start:1rem;font-size:.875rem;font-weight:500;text-transform:uppercase;margin:0 0 1.25rem;box-sizing:border-box;border-block-end:.5px solid var(--tui-border-normal)}:host._ios .t-month{block-size:3.125rem;margin:0;border-block-end:none;text-transform:none;font-size:1.375rem;line-height:3.125rem;letter-spacing:.02rem;font-weight:700}.t-calendar{margin:0 auto;transition:opacity .2s}.t-week,.t-years,.t-months{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:0}:host(._initialized) .t-week,:host(._initialized) .t-years,:host(._initialized) .t-months{opacity:1}\n"] }]
455
456
  }], ctorParameters: () => [], propDecorators: { yearsScrollRef: [{
456
457
  type: ViewChild,
457
458
  args: ['yearsScrollRef']
@@ -477,10 +478,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
477
478
  }], value: [{
478
479
  type: Input
479
480
  }] } });
481
+ function toggleDay(days, day) {
482
+ return ((days?.find((item) => item.daySame(day))
483
+ ? days.filter((item) => !item.daySame(day))
484
+ : days?.concat(day)) || []);
485
+ }
480
486
 
481
487
  /**
482
488
  * Generated bundle index. Do not edit.
483
489
  */
484
490
 
485
- export { ANDROID_CYCLE, ANDROID_LABEL, ANDROID_WEEK, BUFFER, IOS_CYCLE, IOS_LABEL, IOS_WEEK, RANGE, SCROLL_DEBOUNCE_TIME, STARTING_YEAR, TUI_MOBILE_CALENDAR_PROVIDERS, TUI_VALUE_STREAM, TuiMobileCalendar, TuiMobileCalendarStrategy, YEARLY_CYCLE, YEARS_IN_ROW };
491
+ export { ANDROID_CYCLE, ANDROID_LABEL, ANDROID_WEEK, BUFFER, IOS_CYCLE, IOS_LABEL, IOS_WEEK, RANGE, SCROLL_DEBOUNCE_TIME, STARTING_YEAR, TUI_CALENDAR_DATE_STREAM, TUI_MOBILE_CALENDAR_PROVIDERS, TUI_VALUE_STREAM, TuiMobileCalendar, TuiMobileCalendarStrategy, YEARLY_CYCLE, YEARS_IN_ROW, tuiDateStreamWithTransformer };
486
492
  //# sourceMappingURL=taiga-ui-addon-mobile-components-mobile-calendar.mjs.map