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).

63 lines (62 loc) 2.9 kB
/**----------------------------------------------------------------------------------------- * 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 }]; } });