UNPKG

@progress/kendo-angular-dateinputs

Version:

Kendo UI for Angular Date Inputs Package - Everything you need to add date selection functionality to apps (DatePicker, TimePicker, DateInput, DateRangePicker, DateTimePicker, Calendar, and MultiViewCalendar).

84 lines (83 loc) 3.09 kB
/**----------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the project root for more information *-------------------------------------------------------------------------------------------*/ import { EventEmitter, Injectable, Injector } from '@angular/core'; import { CenturyViewService } from '../services/century-view.service'; import { DecadeViewService } from '../services/decade-view.service'; import { MonthViewService } from '../services/month-view.service'; import { YearViewService } from '../services/year-view.service'; import { CalendarViewEnum } from '../models/view.enum'; import * as i0 from "@angular/core"; const services = { [CalendarViewEnum.month]: MonthViewService, [CalendarViewEnum.year]: YearViewService, [CalendarViewEnum.decade]: DecadeViewService, [CalendarViewEnum.century]: CenturyViewService }; const viewOffset = (view, offset) => { const candidate = CalendarViewEnum[CalendarViewEnum[view + offset]]; return candidate !== undefined ? candidate : view; }; let nextCalendarId = 0; /** * @hidden */ export class BusViewService { injector; viewChanged = new EventEmitter(); bottom = CalendarViewEnum.month; top = CalendarViewEnum.century; calendarId; constructor(injector) { this.injector = injector; this.calendarId = nextCalendarId++; } configure(bottom, top) { this.bottom = bottom; this.top = top; } service(view) { const serviceType = services[view]; return serviceType ? this.injector.get(serviceType) : null; } moveDown(view) { this.move(view, -1); } moveUp(view) { this.move(view, 1); } moveToBottom(activeView) { if (activeView === this.bottom) { return; } this.viewChanged.emit({ view: this.bottom }); } canMoveDown(view) { return this.bottom < view; } canMoveUp(view) { return view < this.top; } clamp(view) { if (view < this.bottom) { return this.bottom; } if (view > this.top) { return this.top; } return view; } move(view, offset) { const candidate = this.clamp(viewOffset(view, offset)); if (candidate === view) { return; } this.viewChanged.emit({ view: candidate }); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BusViewService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BusViewService }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BusViewService, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i0.Injector }]; } });