UNPKG

ngx-gem-spaas

Version:

This library contains services, components, images and styles to provide a unified look and way-of-working throughout GEM SPaaS.

57 lines 9.48 kB
import { Component, Input } from '@angular/core'; import { DateTime } from 'luxon'; import { takeUntil } from 'rxjs/operators'; import { DateModel } from "../_models/date.model"; import { BaseComponent } from "ngx-gem-spaas"; import * as i0 from "@angular/core"; import * as i1 from "../_services/date.service"; import * as i2 from "@angular/material/datepicker"; /** An inline calendar which is hooked up directly to the date service */ export class CalendarComponent extends BaseComponent { constructor(dateService) { super(); this.dateService = dateService; /** The title (H1) to be displayed above the calendar */ this.title = ''; /** A custom function to limit which dates can be chosen. * Takes DateTime as input and should return a boolean. */ this.dateConstraint = () => { return true; }; this.curDate = new DateModel(DateTime.now().toISO()); this.selDate = null; this.getDate(); } // ******************************************************************************************************** // LOAD DATA // ******************************************************************************************************** getDate() { this.dateService.onNewDate() .pipe(takeUntil(this.onDestroy$)) .subscribe((date) => { this.curDate = date; this.selDate = DateTime.fromISO(date.intraDay); }); } // ******************************************************************************************************** // UI // ******************************************************************************************************** onChangeDate(e) { // should be a DateTime object, but check anyway if (e?.toISO()) { this.curDate.intraDay = e.toUTC().toISO(); this.dateService.newDate(this.curDate); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarComponent, deps: [{ token: i1.DateService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CalendarComponent, selector: "spaas-calendar", inputs: { title: "title", dateConstraint: "dateConstraint" }, usesInheritance: true, ngImport: i0, template: "<div class=\"calendar pad-big-top\">\r\n @if (title) {\r\n <h1>{{ title }}</h1>\r\n }\r\n <mat-calendar (selectedChange)=\"onChangeDate($event)\"\r\n [dateFilter]=\"dateConstraint\"\r\n [selected]=\"selDate\"\r\n [startAt]=\"selDate\">\r\n </mat-calendar>\r\n</div>\r\n", styles: [".calendar{min-width:264px}\n"], dependencies: [{ kind: "component", type: i2.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CalendarComponent, decorators: [{ type: Component, args: [{ selector: 'spaas-calendar', template: "<div class=\"calendar pad-big-top\">\r\n @if (title) {\r\n <h1>{{ title }}</h1>\r\n }\r\n <mat-calendar (selectedChange)=\"onChangeDate($event)\"\r\n [dateFilter]=\"dateConstraint\"\r\n [selected]=\"selDate\"\r\n [startAt]=\"selDate\">\r\n </mat-calendar>\r\n</div>\r\n", styles: [".calendar{min-width:264px}\n"] }] }], ctorParameters: () => [{ type: i1.DateService }], propDecorators: { title: [{ type: Input }], dateConstraint: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWdlbS1zcGFhcy9kYXRlL3NyYy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZ2VtLXNwYWFzL2RhdGUvc3JjL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVoRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7O0FBRTVDLHlFQUF5RTtBQU96RSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsYUFBYTtJQWFsRCxZQUNVLFdBQXdCO1FBRWhDLEtBQUssRUFBRSxDQUFDO1FBRkEsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFabEMsd0RBQXdEO1FBQy9DLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDcEI7bUVBQzJEO1FBQ2xELG1CQUFjLEdBQXdDLEdBQUcsRUFBRTtZQUNsRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztRQUVGLFlBQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNoRCxZQUFPLEdBQTZCLElBQUksQ0FBQztRQU12QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELDJHQUEyRztJQUMzRyxZQUFZO0lBQ1osMkdBQTJHO0lBRW5HLE9BQU87UUFDYixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRTthQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNoQyxTQUFTLENBQ1IsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNQLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFzQixDQUFDO1FBQ3RFLENBQUMsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELDJHQUEyRztJQUMzRyxLQUFLO0lBQ0wsMkdBQTJHO0lBRTNHLFlBQVksQ0FBQyxDQUFNO1FBQ2pCLGdEQUFnRDtRQUNoRCxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQzsrR0E3Q1UsaUJBQWlCO21HQUFqQixpQkFBaUIsMklDZDlCLG1VQVVBOzs0RkRJYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0UsZ0JBQWdCO2dGQVFqQixLQUFLO3NCQUFiLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RGF0ZVRpbWV9IGZyb20gJ2x1eG9uJztcclxuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtEYXRlTW9kZWx9IGZyb20gXCIuLi9fbW9kZWxzL2RhdGUubW9kZWxcIjtcclxuaW1wb3J0IHtEYXRlU2VydmljZX0gZnJvbSBcIi4uL19zZXJ2aWNlcy9kYXRlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtCYXNlQ29tcG9uZW50fSBmcm9tIFwibmd4LWdlbS1zcGFhc1wiO1xyXG5cclxuLyoqIEFuIGlubGluZSBjYWxlbmRhciB3aGljaCBpcyBob29rZWQgdXAgZGlyZWN0bHkgdG8gdGhlIGRhdGUgc2VydmljZSAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NwYWFzLWNhbGVuZGFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xyXG5cclxuICAvKiogVGhlIHRpdGxlIChIMSkgdG8gYmUgZGlzcGxheWVkIGFib3ZlIHRoZSBjYWxlbmRhciAqL1xyXG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XHJcbiAgLyoqIEEgY3VzdG9tIGZ1bmN0aW9uIHRvIGxpbWl0IHdoaWNoIGRhdGVzIGNhbiBiZSBjaG9zZW4uXHJcbiAgICogIFRha2VzIERhdGVUaW1lIGFzIGlucHV0IGFuZCBzaG91bGQgcmV0dXJuIGEgYm9vbGVhbi4gKi9cclxuICBASW5wdXQoKSBkYXRlQ29uc3RyYWludDogKHNlbGVjdGVkRGF0ZTogRGF0ZVRpbWUpID0+IGJvb2xlYW4gPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9O1xyXG5cclxuICBjdXJEYXRlID0gbmV3IERhdGVNb2RlbChEYXRlVGltZS5ub3coKS50b0lTTygpKTtcclxuICBzZWxEYXRlOiAoRGF0ZVRpbWUgJiBEYXRlKSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGF0ZVNlcnZpY2U6IERhdGVTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuZ2V0RGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyBMT0FEIERBVEFcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICBwcml2YXRlIGdldERhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGVTZXJ2aWNlLm9uTmV3RGF0ZSgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIChkYXRlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmN1ckRhdGUgPSBkYXRlO1xyXG4gICAgICAgICAgdGhpcy5zZWxEYXRlID0gRGF0ZVRpbWUuZnJvbUlTTyhkYXRlLmludHJhRGF5KSBhcyAoRGF0ZVRpbWUgJiBEYXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vIFVJXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbiAgb25DaGFuZ2VEYXRlKGU6IGFueSk6IHZvaWQge1xyXG4gICAgLy8gc2hvdWxkIGJlIGEgRGF0ZVRpbWUgb2JqZWN0LCBidXQgY2hlY2sgYW55d2F5XHJcbiAgICBpZiAoZT8udG9JU08oKSkge1xyXG4gICAgICB0aGlzLmN1ckRhdGUuaW50cmFEYXkgPSBlLnRvVVRDKCkudG9JU08oKTtcclxuICAgICAgdGhpcy5kYXRlU2VydmljZS5uZXdEYXRlKHRoaXMuY3VyRGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FsZW5kYXIgcGFkLWJpZy10b3BcIj5cclxuICBAaWYgKHRpdGxlKSB7XHJcbiAgICA8aDE+e3sgdGl0bGUgfX08L2gxPlxyXG4gIH1cclxuICA8bWF0LWNhbGVuZGFyIChzZWxlY3RlZENoYW5nZSk9XCJvbkNoYW5nZURhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbZGF0ZUZpbHRlcl09XCJkYXRlQ29uc3RyYWludFwiXHJcbiAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwic2VsRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbc3RhcnRBdF09XCJzZWxEYXRlXCI+XHJcbiAgPC9tYXQtY2FsZW5kYXI+XHJcbjwvZGl2PlxyXG4iXX0=