@ux-aspects/ux-aspects
Version:
Open source user interface framework for building modern, responsive, mobile big data applications
77 lines • 10.4 kB
JavaScript
import { Subject } from 'rxjs';
import { compareDays, isDateAfter, isDateBefore } from '../date-time-picker/date-time-picker.utils';
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
export class DateRangeService {
constructor() {
/** Indicate whether we want to show a date range */
this.isRange = false;
/** Specify the direction of the selection */
this.direction = DateRangePicker.Start;
/** Emit whenever the start date changes */
this.onStartChange = new Subject();
/** Emit whenever the end date changes */
this.onEndChange = new Subject();
/** Emit whenever the range has changed */
this.onRangeChange = new Subject();
/** Emit whenever the hover date changes */
this.onHoverChange = new Subject();
/** Emit whenever the range is cleared */
this.onClear = new Subject();
/** Indicate if we should show time */
this.showTime = false;
/** Defines the aria label for the range start picker */
this.startPickerAriaLabel = 'Selecting the start date';
/** Defines the aria label for the range end picker */
this.endPickerAriaLabel = 'Selecting the end date';
/** Indicate if we are currently changing the time */
this.isChangingTime = false;
/** Store the current start time */
this.startTime = { hours: 0, minutes: 0, seconds: 0 };
/** Store the current end time */
this.endTime = { hours: 23, minutes: 59, seconds: 59 };
}
setStartDate(date) {
// if the start date is after the end date the clear the end date
if (date && this.end && isDateAfter(date, this.end)) {
this.clear();
}
this.start = date;
this.onStartChange.next(this.start);
this.onRangeChange.next();
}
setEndDate(date) {
// if the end date is before the start date the clear the start date
if (date && this.start && isDateBefore(date, this.start)) {
this.clear();
}
this.end = date;
this.onEndChange.next(this.end);
this.onRangeChange.next();
}
clear() {
this.setStartDate(null);
this.setEndDate(null);
this.onClear.next();
}
setDateMouseEnter(date) {
this.hover = date;
this.onHoverChange.next();
}
setDateMouseLeave(date) {
if (date && this.hover && compareDays(date, this.hover)) {
this.setDateMouseEnter(null);
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DateRangeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DateRangeService }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DateRangeService, decorators: [{
type: Injectable
}] });
export var DateRangePicker;
(function (DateRangePicker) {
DateRangePicker["Start"] = "start";
DateRangePicker["End"] = "end";
})(DateRangePicker || (DateRangePicker = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvZGF0ZS1yYW5nZS1waWNrZXIvZGF0ZS1yYW5nZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGdCQUFnQjtJQUQ3QjtRQUdJLG9EQUFvRDtRQUNwRCxZQUFPLEdBQVksS0FBSyxDQUFDO1FBRXpCLDZDQUE2QztRQUM3QyxjQUFTLEdBQW9CLGVBQWUsQ0FBQyxLQUFLLENBQUM7UUFXbkQsMkNBQTJDO1FBQzNDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVwQyx5Q0FBeUM7UUFDekMsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRWxDLDBDQUEwQztRQUMxQyxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFcEMsMkNBQTJDO1FBQzNDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVwQyx5Q0FBeUM7UUFDekMsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFOUIsc0NBQXNDO1FBQ3RDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUIsd0RBQXdEO1FBQ3hELHlCQUFvQixHQUFXLDBCQUEwQixDQUFDO1FBRTFELHNEQUFzRDtRQUN0RCx1QkFBa0IsR0FBVyx3QkFBd0IsQ0FBQztRQUV0RCxxREFBcUQ7UUFDckQsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFFaEMsbUNBQW1DO1FBQ25DLGNBQVMsR0FBa0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRWhFLGlDQUFpQztRQUNqQyxZQUFPLEdBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztLQTBDcEU7SUF4Q0csWUFBWSxDQUFDLElBQWlCO1FBRTFCLGlFQUFpRTtRQUNqRSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pCLENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQWlCO1FBRXhCLG9FQUFvRTtRQUNwRSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pCLENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztRQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsS0FBSztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFpQjtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFVO1FBQ3hCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNMLENBQUM7K0dBekZRLGdCQUFnQjttSEFBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVOztBQTZGWCxNQUFNLENBQU4sSUFBWSxlQUdYO0FBSEQsV0FBWSxlQUFlO0lBQ3ZCLGtDQUFlLENBQUE7SUFDZiw4QkFBVyxDQUFBO0FBQ2YsQ0FBQyxFQUhXLGVBQWUsS0FBZixlQUFlLFFBRzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29tcGFyZURheXMsIGlzRGF0ZUFmdGVyLCBpc0RhdGVCZWZvcmUgfSBmcm9tICcuLi9kYXRlLXRpbWUtcGlja2VyL2RhdGUtdGltZS1waWNrZXIudXRpbHMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlU2VydmljZSB7XG5cbiAgICAvKiogSW5kaWNhdGUgd2hldGhlciB3ZSB3YW50IHRvIHNob3cgYSBkYXRlIHJhbmdlICovXG4gICAgaXNSYW5nZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFNwZWNpZnkgdGhlIGRpcmVjdGlvbiBvZiB0aGUgc2VsZWN0aW9uICovXG4gICAgZGlyZWN0aW9uOiBEYXRlUmFuZ2VQaWNrZXIgPSBEYXRlUmFuZ2VQaWNrZXIuU3RhcnQ7XG5cbiAgICAvKiogU3BlY2lmeSB0aGUgc3RhcnQgb2YgdGhlIHJhbmdlICovXG4gICAgc3RhcnQ6IERhdGU7XG5cbiAgICAvKiogU3BlY2lmeSB0aGUgZW5kIG9mIHRoZSByYW5nZSAqL1xuICAgIGVuZDogRGF0ZTtcblxuICAgIC8qKiBTcGVjaWZ5IHRoZSBkYXRlIHdlIGFyZSBob3ZlcmluZyBvdmVyICovXG4gICAgaG92ZXI6IERhdGU7XG5cbiAgICAvKiogRW1pdCB3aGVuZXZlciB0aGUgc3RhcnQgZGF0ZSBjaGFuZ2VzICovXG4gICAgb25TdGFydENoYW5nZSA9IG5ldyBTdWJqZWN0PERhdGU+KCk7XG5cbiAgICAvKiogRW1pdCB3aGVuZXZlciB0aGUgZW5kIGRhdGUgY2hhbmdlcyAqL1xuICAgIG9uRW5kQ2hhbmdlID0gbmV3IFN1YmplY3Q8RGF0ZT4oKTtcblxuICAgIC8qKiBFbWl0IHdoZW5ldmVyIHRoZSByYW5nZSBoYXMgY2hhbmdlZCAqL1xuICAgIG9uUmFuZ2VDaGFuZ2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEVtaXQgd2hlbmV2ZXIgdGhlIGhvdmVyIGRhdGUgY2hhbmdlcyAqL1xuICAgIG9uSG92ZXJDaGFuZ2UgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEVtaXQgd2hlbmV2ZXIgdGhlIHJhbmdlIGlzIGNsZWFyZWQgKi9cbiAgICBvbkNsZWFyID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBJbmRpY2F0ZSBpZiB3ZSBzaG91bGQgc2hvdyB0aW1lICovXG4gICAgc2hvd1RpbWU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBEZWZpbmVzIHRoZSBhcmlhIGxhYmVsIGZvciB0aGUgcmFuZ2Ugc3RhcnQgcGlja2VyICovXG4gICAgc3RhcnRQaWNrZXJBcmlhTGFiZWw6IHN0cmluZyA9ICdTZWxlY3RpbmcgdGhlIHN0YXJ0IGRhdGUnO1xuXG4gICAgLyoqIERlZmluZXMgdGhlIGFyaWEgbGFiZWwgZm9yIHRoZSByYW5nZSBlbmQgcGlja2VyICovXG4gICAgZW5kUGlja2VyQXJpYUxhYmVsOiBzdHJpbmcgPSAnU2VsZWN0aW5nIHRoZSBlbmQgZGF0ZSc7XG5cbiAgICAvKiogSW5kaWNhdGUgaWYgd2UgYXJlIGN1cnJlbnRseSBjaGFuZ2luZyB0aGUgdGltZSAqL1xuICAgIGlzQ2hhbmdpbmdUaW1lOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogU3RvcmUgdGhlIGN1cnJlbnQgc3RhcnQgdGltZSAqL1xuICAgIHN0YXJ0VGltZTogRGF0ZVJhbmdlVGltZSA9IHsgaG91cnM6IDAsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfTtcblxuICAgIC8qKiBTdG9yZSB0aGUgY3VycmVudCBlbmQgdGltZSAqL1xuICAgIGVuZFRpbWU6IERhdGVSYW5nZVRpbWUgPSB7IGhvdXJzOiAyMywgbWludXRlczogNTksIHNlY29uZHM6IDU5IH07XG5cbiAgICBzZXRTdGFydERhdGUoZGF0ZTogRGF0ZSB8IG51bGwpOiB2b2lkIHtcblxuICAgICAgICAvLyBpZiB0aGUgc3RhcnQgZGF0ZSBpcyBhZnRlciB0aGUgZW5kIGRhdGUgdGhlIGNsZWFyIHRoZSBlbmQgZGF0ZVxuICAgICAgICBpZiAoZGF0ZSAmJiB0aGlzLmVuZCAmJiBpc0RhdGVBZnRlcihkYXRlLCB0aGlzLmVuZCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RhcnQgPSBkYXRlO1xuICAgICAgICB0aGlzLm9uU3RhcnRDaGFuZ2UubmV4dCh0aGlzLnN0YXJ0KTtcbiAgICAgICAgdGhpcy5vblJhbmdlQ2hhbmdlLm5leHQoKTtcbiAgICB9XG5cbiAgICBzZXRFbmREYXRlKGRhdGU6IERhdGUgfCBudWxsKTogdm9pZCB7XG5cbiAgICAgICAgLy8gaWYgdGhlIGVuZCBkYXRlIGlzIGJlZm9yZSB0aGUgc3RhcnQgZGF0ZSB0aGUgY2xlYXIgdGhlIHN0YXJ0IGRhdGVcbiAgICAgICAgaWYgKGRhdGUgJiYgdGhpcy5zdGFydCAmJiBpc0RhdGVCZWZvcmUoZGF0ZSwgdGhpcy5zdGFydCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZW5kID0gZGF0ZTtcbiAgICAgICAgdGhpcy5vbkVuZENoYW5nZS5uZXh0KHRoaXMuZW5kKTtcbiAgICAgICAgdGhpcy5vblJhbmdlQ2hhbmdlLm5leHQoKTtcbiAgICB9XG5cbiAgICBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRTdGFydERhdGUobnVsbCk7XG4gICAgICAgIHRoaXMuc2V0RW5kRGF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5vbkNsZWFyLm5leHQoKTtcbiAgICB9XG5cbiAgICBzZXREYXRlTW91c2VFbnRlcihkYXRlOiBEYXRlIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhvdmVyID0gZGF0ZTtcbiAgICAgICAgdGhpcy5vbkhvdmVyQ2hhbmdlLm5leHQoKTtcbiAgICB9XG5cbiAgICBzZXREYXRlTW91c2VMZWF2ZShkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgICAgIGlmIChkYXRlICYmIHRoaXMuaG92ZXIgJiYgY29tcGFyZURheXMoZGF0ZSwgdGhpcy5ob3ZlcikpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0ZU1vdXNlRW50ZXIobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBlbnVtIERhdGVSYW5nZVBpY2tlciB7XG4gICAgU3RhcnQgPSAnc3RhcnQnLFxuICAgIEVuZCA9ICdlbmQnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZVJhbmdlVGltZSB7XG4gICAgaG91cnM6IG51bWJlcjtcbiAgICBtaW51dGVzOiBudW1iZXI7XG4gICAgc2Vjb25kczogbnVtYmVyO1xufVxuIl19