{"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    standalone: true,\n    selector: 'tui-mobile-calendar-dropdown',\n    imports: [TuiMobileCalendar],\n    templateUrl: './mobile-calendar-dropdown.template.html',\n    styleUrls: ['./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    private readonly context = injectContext<Record<string, any>>({optional: true});\n    private readonly observer?: Observer<any> = 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        if (this.directive?.date) {\n            return this.directive.date.max();\n        }\n\n        return (\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        if (this.directive?.date) {\n            return this.directive.date.min();\n        }\n\n        return (\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: any): void {\n        const normalizedValue = this.range ? this.selectedPeriod : value;\n\n        if (this.control) {\n            this.control.value = normalizedValue;\n        }\n\n        if (this.directive?.date) {\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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"}