@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
JavaScript
/**-----------------------------------------------------------------------------------------
* 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 }]; } });