{"version":3,"file":"taiga-ui-kit-components-calendar-month.mjs","sources":["../../../projects/kit/components/calendar-month/calendar-month.options.ts","../../../projects/kit/components/calendar-month/calendar-month.component.ts","../../../projects/kit/components/calendar-month/calendar-month.template.html","../../../projects/kit/components/calendar-month/taiga-ui-kit-components-calendar-month.ts"],"sourcesContent":["import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiCalendarMonthOptions {\n    rangeMode: boolean;\n}\n\nexport const TUI_CALENDAR_MONTH_DEFAULT_OPTIONS: TuiCalendarMonthOptions = {\n    rangeMode: false,\n};\n\nexport const [TUI_CALENDAR_MONTH_OPTIONS, tuiCalendarMonthOptionsProvider] =\n    tuiCreateOptions(TUI_CALENDAR_MONTH_DEFAULT_OPTIONS);\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    inject,\n    input,\n    linkedSignal,\n    model,\n    output,\n    untracked,\n} from '@angular/core';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {\n    TUI_FIRST_DAY,\n    TUI_LAST_DAY,\n    TuiDay,\n    TuiMonth,\n    TuiMonthRange,\n    TuiYear,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiNullableSame} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiCalendarYear} from '@taiga-ui/core/components/calendar';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {TuiSpinButton} from '@taiga-ui/core/components/spin-button';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\nimport {TUI_CALENDAR_MONTHS} from '@taiga-ui/kit/tokens';\n\nimport {TUI_CALENDAR_MONTH_OPTIONS} from './calendar-month.options';\n\nconst TODAY = TuiDay.currentLocal();\n\n@Component({\n    selector: 'tui-calendar-month',\n    imports: [TuiCalendarYear, TuiHovered, TuiLink, TuiScrollbar, TuiSpinButton],\n    templateUrl: './calendar-month.template.html',\n    styleUrl: './calendar-month.style.less',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [tuiAsAuxiliary(TuiCalendarMonth)],\n    host: {'[class._picking]': 'isRangePicking()'},\n})\nexport class TuiCalendarMonth {\n    private hoveredItem: TuiMonth | null = null;\n    protected isYearPickerShown = false;\n    protected readonly months = inject(TUI_CALENDAR_MONTHS);\n\n    protected readonly isRangePicking = computed(\n        (x = this.value()) =>\n            (!this.options.rangeMode && x instanceof TuiMonthRange && x.isSingleMonth) || // TODO(v5): remove this condition\n            (this.options.rangeMode && x instanceof TuiMonth),\n    );\n\n    protected readonly handler = computed(() =>\n        this.calculateDisabledItemHandlerWithMinMax(\n            this.disabledItemHandler(),\n            this.value(),\n            this.isRangePicking(),\n            this.min(),\n            this.max(),\n            this.minLength(),\n            this.maxLength(),\n        ),\n    );\n\n    protected readonly activeYear = linkedSignal<TuiYear>(() => {\n        const year = this.year();\n\n        if (year) {\n            return year;\n        }\n\n        const value = untracked(this.value);\n\n        if (value instanceof TuiMonth) {\n            return value;\n        }\n\n        return value instanceof TuiMonthRange ? value.from : TODAY;\n    });\n\n    public readonly value = input<TuiMonth | TuiMonthRange | null>(null);\n    public readonly minLength = input<number | null>(null);\n    public readonly maxLength = input<number | null>(null);\n\n    public readonly disabledItemHandler =\n        input<TuiBooleanHandler<TuiMonth>>(TUI_FALSE_HANDLER);\n\n    public readonly min = input(TUI_FIRST_DAY, {\n        transform: (x: TuiMonth | null) => x ?? TUI_FIRST_DAY,\n    });\n\n    public readonly max = input(TUI_LAST_DAY, {\n        transform: (x: TuiMonth | null) => x ?? TUI_LAST_DAY,\n    });\n\n    public readonly year = model<TuiYear>();\n    public readonly monthClick = output<TuiMonth>();\n    public readonly hoveredItemChange = output<TuiMonth | null>();\n    public readonly options = inject(TUI_CALENDAR_MONTH_OPTIONS);\n\n    public onNextYear(): void {\n        this.updateActiveYear(this.activeYear().append({year: 1}));\n    }\n\n    public onPreviousYear(): void {\n        this.updateActiveYear(this.activeYear().append({year: -1}));\n    }\n\n    public getItemRange(item: TuiMonth): 'active' | 'end' | 'middle' | 'start' | null {\n        const value = this.value();\n        const {hoveredItem} = this;\n\n        if (!value) {\n            return null;\n        }\n\n        if (!this.options.rangeMode && value instanceof TuiMonth) {\n            return value?.monthSame(item) ? 'active' : null;\n        }\n\n        const selectedRange =\n            value instanceof TuiMonth ? new TuiMonthRange(value, value) : value;\n\n        const months = item.month + item.year * 12;\n        const hovered = hoveredItem ? hoveredItem.month + hoveredItem.year * 12 : null;\n        const from = selectedRange.from.month + selectedRange.from.year * 12;\n        const to = selectedRange.to.month + selectedRange.to.year * 12;\n        const picking = this.isRangePicking() ? hovered : null;\n        const min = Math.min(from, to, picking ?? from);\n        const max = Math.max(from, to, picking ?? from);\n\n        if (min === max && min === months) {\n            return 'active';\n        }\n\n        if (min === months) {\n            return 'start';\n        }\n\n        if (max === months) {\n            return 'end';\n        }\n\n        return min < months && months < max ? 'middle' : null;\n    }\n\n    protected getTuiMonth(monthNumber: number, yearNumber: number): TuiMonth {\n        return new TuiMonth(yearNumber, monthNumber);\n    }\n\n    protected isItemToday(item: TuiMonth): boolean {\n        return TODAY.monthSame(item);\n    }\n\n    protected onPickerYearClick(year: number): void {\n        this.isYearPickerShown = false;\n\n        if (this.activeYear().year !== year) {\n            this.updateActiveYear(new TuiYear(year));\n        }\n    }\n\n    protected onItemClick(month: TuiMonth): void {\n        if (!this.handler()(month)) {\n            this.monthClick.emit(month);\n        }\n    }\n\n    protected onYearClick(): void {\n        this.isYearPickerShown = true;\n    }\n\n    protected onItemHovered(hovered: boolean, item: TuiMonth): void {\n        this.updateHoveredItem(hovered ? item : null);\n    }\n\n    // eslint-disable-next-line @typescript-eslint/max-params,max-params\n    private calculateDisabledItemHandlerWithMinMax(\n        disabledItemHandler: TuiBooleanHandler<TuiMonth>,\n        value: TuiMonth | TuiMonthRange | null,\n        isRangePicking: boolean,\n        min: TuiMonth,\n        max: TuiMonth,\n        minLength: number | null,\n        maxLength: number | null,\n    ): TuiBooleanHandler<TuiMonth> {\n        return (item) => {\n            const selectedMonth = value instanceof TuiMonthRange ? value.from : value;\n\n            const delta =\n                isRangePicking && selectedMonth\n                    ? Math.abs(\n                          item.year * 12 +\n                              item.month -\n                              selectedMonth.year * 12 -\n                              selectedMonth.month,\n                      )\n                    : 0;\n\n            const tooLong = delta && maxLength && delta > maxLength;\n            const tooShort = delta && minLength && delta < minLength;\n\n            return (\n                tooLong ||\n                tooShort ||\n                item.monthBefore(min) ||\n                item.monthAfter(max) ||\n                disabledItemHandler(item)\n            );\n        };\n    }\n\n    private updateHoveredItem(month: TuiMonth | null): void {\n        if (tuiNullableSame(this.hoveredItem, month, (a, b) => a.monthSame(b))) {\n            return;\n        }\n\n        this.hoveredItem = month;\n        this.hoveredItemChange.emit(month);\n    }\n\n    private updateActiveYear(year: TuiYear): void {\n        this.activeYear.set(year);\n        this.year.set(year);\n    }\n}\n","@if (isYearPickerShown) {\n    <tui-scrollbar class=\"t-scrollbar\">\n        <tui-calendar-year\n            [initialItem]=\"activeYear().year\"\n            [max]=\"max().year\"\n            [min]=\"min().year\"\n            [rangeMode]=\"options.rangeMode\"\n            [value]=\"value()\"\n            (yearClick)=\"onPickerYearClick($event)\"\n        />\n    </tui-scrollbar>\n} @else {\n    <tui-spin-button\n        class=\"t-spin\"\n        [focusable]=\"false\"\n        [leftDisabled]=\"activeYear().yearSameOrBefore(min())\"\n        [rightDisabled]=\"activeYear().yearSameOrAfter(max())\"\n        (leftClick)=\"onPreviousYear()\"\n        (rightClick)=\"onNextYear()\"\n    >\n        <button\n            automation-id=\"tui-calendar-month__active-year\"\n            tabIndex=\"-1\"\n            tuiLink\n            type=\"button\"\n            (click)=\"onYearClick()\"\n        >\n            {{ activeYear().formattedYear }}\n        </button>\n    </tui-spin-button>\n    @for (_ of '-'.repeat(3); track $index) {\n        @let row = $index;\n        <div class=\"t-row\">\n            @for (_ of '-'.repeat(4); track $index) {\n                @let item = getTuiMonth(row * 4 + $index, activeYear().year);\n                <div\n                    class=\"t-cell\"\n                    [attr.data-range]=\"getItemRange(item)\"\n                    [class.t-cell_disabled]=\"handler()(item)\"\n                    [class.t-cell_today]=\"isItemToday(item)\"\n                    (click)=\"onItemClick(item)\"\n                    (tuiHoveredChange)=\"onItemHovered($event, item)\"\n                >\n                    {{ months()[row * 4 + $index] }}\n                </div>\n            }\n        </div>\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}