@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).
63 lines (62 loc) • 2.9 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 { Injectable } from '@angular/core';
import { isEqual } from '@progress/kendo-date-math';
import { last, sortDates } from '../../util';
import { BusViewService } from './bus-view.service';
import * as i0 from "@angular/core";
import * as i1 from "./bus-view.service";
/**
* @hidden
*/
export class SelectionService {
bus;
constructor(bus) {
this.bus = bus;
}
lastClicked;
performSelection(args) {
/* eslint prefer-const: ["error", {"destructuring": "all"}] */
let { date, modifiers, selectionMode, activeViewEnum, rangePivot } = args;
let selectedDates = args.selectedDates.slice();
if (selectionMode === 'multiple') {
if (modifiers.ctrlKey || modifiers.metaKey) {
if (this.isDateSelected(selectedDates, date)) {
selectedDates = selectedDates.filter(item => !isEqual(item, date));
}
else {
selectedDates.push(date);
}
rangePivot = date;
}
else if (modifiers.shiftKey) {
const [start, end] = sortDates([rangePivot || date, date]);
selectedDates = this.bus.service(activeViewEnum).dateRange(start, end);
rangePivot = date > selectedDates[0] ? selectedDates[0] : last(selectedDates);
if (modifiers.anyArrow) {
const [start, end] = sortDates([this.lastClicked || date, date]);
selectedDates = this.bus.service(0).dateRange(start, end);
}
}
else {
selectedDates = [date];
rangePivot = date;
}
}
else {
selectedDates = [date];
rangePivot = date;
}
return { selectedDates, rangePivot };
}
isDateSelected(selectedDates, date) {
return selectedDates.some(item => isEqual(item, date));
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectionService, deps: [{ token: i1.BusViewService }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectionService });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SelectionService, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.BusViewService }]; } });