@dereekb/dbx-web 9.23.18 → 9.23.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/calendar/esm2020/lib/calendar.base.component.mjs +4 -3
- package/calendar/esm2020/lib/calendar.store.mjs +3 -1
- package/calendar/fesm2015/dereekb-dbx-web-calendar.mjs +5 -2
- package/calendar/fesm2015/dereekb-dbx-web-calendar.mjs.map +1 -1
- package/calendar/fesm2020/dereekb-dbx-web-calendar.mjs +5 -2
- package/calendar/fesm2020/dereekb-dbx-web-calendar.mjs.map +1 -1
- package/calendar/lib/calendar.base.component.d.ts +2 -1
- package/calendar/lib/calendar.store.d.ts +1 -0
- package/calendar/package.json +3 -2
- package/esm2020/calendar/lib/calendar.base.component.mjs +4 -3
- package/esm2020/calendar/lib/calendar.store.mjs +3 -1
- package/esm2020/lib/layout/text/address.component.mjs +6 -5
- package/esm2020/lib/router/layout/anchor/anchor.component.mjs +15 -3
- package/esm2020/lib/router/layout/sidenav/index.mjs +3 -1
- package/esm2020/lib/router/layout/sidenav/sidenav.button.component.mjs +3 -2
- package/esm2020/lib/router/layout/sidenav/sidenav.component.mjs +2 -8
- package/esm2020/lib/router/layout/sidenav/sidenav.ifdisplaymode.directive.mjs +42 -0
- package/esm2020/lib/router/layout/sidenav/sidenav.mjs +8 -0
- package/esm2020/lib/router/layout/sidenav/sidenav.module.mjs +6 -4
- package/esm2020/lib/router/layout/sidenav/sidenav.page.component.mjs +3 -2
- package/esm2020/mapbox/lib/index.mjs +4 -1
- package/esm2020/mapbox/lib/mapbox.injection.component.mjs +32 -0
- package/esm2020/mapbox/lib/mapbox.injection.store.mjs +39 -0
- package/esm2020/mapbox/lib/mapbox.injection.store.provide.mjs +52 -0
- package/esm2020/mapbox/lib/mapbox.marker.component.mjs +6 -6
- package/esm2020/mapbox/lib/mapbox.marker.mjs +1 -1
- package/esm2020/mapbox/lib/mapbox.module.mjs +5 -1
- package/fesm2015/dereekb-dbx-web-calendar.mjs +5 -2
- package/fesm2015/dereekb-dbx-web-calendar.mjs.map +1 -1
- package/fesm2015/dereekb-dbx-web-mapbox.mjs +122 -9
- package/fesm2015/dereekb-dbx-web-mapbox.mjs.map +1 -1
- package/fesm2015/dereekb-dbx-web.mjs +81 -30
- package/fesm2015/dereekb-dbx-web.mjs.map +1 -1
- package/fesm2020/dereekb-dbx-web-calendar.mjs +5 -2
- package/fesm2020/dereekb-dbx-web-calendar.mjs.map +1 -1
- package/fesm2020/dereekb-dbx-web-mapbox.mjs +118 -8
- package/fesm2020/dereekb-dbx-web-mapbox.mjs.map +1 -1
- package/fesm2020/dereekb-dbx-web.mjs +72 -23
- package/fesm2020/dereekb-dbx-web.mjs.map +1 -1
- package/lib/router/layout/anchor/anchor.component.d.ts +2 -0
- package/lib/router/layout/sidenav/_sidenav.scss +4 -1
- package/lib/router/layout/sidenav/index.d.ts +2 -0
- package/lib/router/layout/sidenav/sidenav.button.component.d.ts +2 -1
- package/lib/router/layout/sidenav/sidenav.component.d.ts +1 -6
- package/lib/router/layout/sidenav/sidenav.d.ts +6 -0
- package/lib/router/layout/sidenav/sidenav.ifdisplaymode.directive.d.ts +20 -0
- package/lib/router/layout/sidenav/sidenav.module.d.ts +19 -18
- package/mapbox/esm2020/lib/index.mjs +4 -1
- package/mapbox/esm2020/lib/mapbox.injection.component.mjs +32 -0
- package/mapbox/esm2020/lib/mapbox.injection.store.mjs +39 -0
- package/mapbox/esm2020/lib/mapbox.injection.store.provide.mjs +52 -0
- package/mapbox/esm2020/lib/mapbox.marker.component.mjs +6 -6
- package/mapbox/esm2020/lib/mapbox.marker.mjs +1 -1
- package/mapbox/esm2020/lib/mapbox.module.mjs +5 -1
- package/mapbox/fesm2015/dereekb-dbx-web-mapbox.mjs +122 -9
- package/mapbox/fesm2015/dereekb-dbx-web-mapbox.mjs.map +1 -1
- package/mapbox/fesm2020/dereekb-dbx-web-mapbox.mjs +118 -8
- package/mapbox/fesm2020/dereekb-dbx-web-mapbox.mjs.map +1 -1
- package/mapbox/lib/index.d.ts +3 -0
- package/mapbox/lib/mapbox.injection.component.d.ts +16 -0
- package/mapbox/lib/mapbox.injection.store.d.ts +45 -0
- package/mapbox/lib/mapbox.injection.store.provide.d.ts +24 -0
- package/mapbox/lib/mapbox.marker.component.d.ts +3 -2
- package/mapbox/lib/mapbox.marker.d.ts +4 -3
- package/mapbox/lib/mapbox.module.d.ts +14 -13
- package/mapbox/package.json +3 -3
- package/package.json +3 -3
- package/table/package.json +3 -3
|
@@ -2,6 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Injectable, Component, EventEmitter, Output, NgModule } from '@angular/core';
|
|
3
3
|
import { startOfDay, endOfDay, startOfWeek, endOfWeek, startOfMonth, endOfMonth, differenceInDays, isBefore, isAfter, addDays, isSameDay, isSameMonth } from 'date-fns';
|
|
4
4
|
import { isDateInDateRange, isSameDateRange, isSameDateDay, isFullDateRange, clampDateToDateRange, formatToTimeAndDurationString, sortDateRangeStartAscendingCompareFunction } from '@dereekb/date';
|
|
5
|
+
import { invertDecision, reduceBooleansWithAndFn } from '@dereekb/util';
|
|
5
6
|
import { ComponentStore } from '@ngrx/component-store';
|
|
6
7
|
import { distinctUntilChanged, switchMap, first, tap, map, shareReplay, combineLatest, withLatestFrom } from 'rxjs';
|
|
7
8
|
import * as i2 from '@angular/common';
|
|
@@ -125,6 +126,7 @@ class DbxCalendarStore extends ComponentStore {
|
|
|
125
126
|
this.isLookingAtToday$ = this.visibleDateRange$.pipe(map((x) => isDateInDateRange(new Date(), x)), distinctUntilChanged(), shareReplay(1));
|
|
126
127
|
this.isLookingAtMinimumDate$ = this.visibleDateRange$.pipe(map((x) => x.isMinDateVisible), distinctUntilChanged(), shareReplay(1));
|
|
127
128
|
this.isLookingAtMaximumDate$ = this.visibleDateRange$.pipe(map((x) => x.isMaxDateVisible), distinctUntilChanged(), shareReplay(1));
|
|
129
|
+
this.hasMultiplePages$ = combineLatest([this.isLookingAtMinimumDate$, this.isLookingAtMaximumDate$]).pipe(map(invertDecision(reduceBooleansWithAndFn(true))), distinctUntilChanged(), shareReplay(1));
|
|
128
130
|
this.displayType$ = this.state$.pipe(map((x) => x.type), distinctUntilChanged((a, b) => a === b), shareReplay(1));
|
|
129
131
|
this.navigationRangeLimit$ = this.state$.pipe(map((x) => x.navigationRangeLimit), distinctUntilChanged(isSameDateRange), shareReplay(1));
|
|
130
132
|
this.minNavigationDate$ = this.navigationRangeLimit$.pipe(map((x) => x?.start), distinctUntilChanged(isSameDateDay), shareReplay(1));
|
|
@@ -219,6 +221,7 @@ class DbxCalendarBaseComponent {
|
|
|
219
221
|
this.canJumpToToday$ = this.calendarStore.canJumpToToday$;
|
|
220
222
|
this.isLookingAtMinimumDate$ = this.calendarStore.isLookingAtMinimumDate$;
|
|
221
223
|
this.isLookingAtMaximumDate$ = this.calendarStore.isLookingAtMaximumDate$;
|
|
224
|
+
this.hasMultiplePages$ = this.calendarStore.hasMultiplePages$;
|
|
222
225
|
this.showPageButtons$ = this.calendarStore.canShowPageButtons$;
|
|
223
226
|
this.activeDayIsOpen$ = this.calendarStore.eventsForDateState$.pipe(withLatestFrom(this.calendarStore.date$), map(([x, date]) => {
|
|
224
227
|
if (x.events.length && isSameMonth(x.date, date)) {
|
|
@@ -248,10 +251,10 @@ class DbxCalendarBaseComponent {
|
|
|
248
251
|
}
|
|
249
252
|
}
|
|
250
253
|
DbxCalendarBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxCalendarBaseComponent, deps: [{ token: DbxCalendarStore }], target: i0.ɵɵFactoryTarget.Component });
|
|
251
|
-
DbxCalendarBaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxCalendarBaseComponent, selector: "dbx-calendar-base", ngImport: i0, template: "<div class=\"dbx-calendar\">\n <h3 class=\"dbx-calendar-title\">{{ (viewDate$ | async)! | calendarDate: (displayType$ | async) + 'ViewTitle':'en' }}</h3>\n <div class=\"dbx-calendar-header\">\n <div class=\"dbx-calendar-controls\" fxLayout=\"row\" fxLayout.xs=\"column\" ngClass.xs=\"dbx-calendar-controls-compact\">\n <span class=\"dbx-calendar-controls-left\" fxFlex=\"nogrow\">\n <button *ngIf=\"showTodayButton$ | async\" mat-stroked-button [disabled]=\"!(canJumpToToday$ | async)\" (click)=\"todayClicked()\">Today</button>\n <dbx-button-spacer></dbx-button-spacer>\n <div class=\"d-iblock\">\n <button *ngIf=\"showPageButtons$ | async\" mat-icon-button [disabled]=\"isLookingAtMinimumDate$ | async\" aria-label=\"first page button\" (click)=\"firstPageButtonClicked()\">\n <mat-icon>first_page</mat-icon>\n </button>\n <button mat-icon-button [disabled]=\"isLookingAtMinimumDate$ | async\" [attr.aria-label]=\"'Previous ' + (displayType$ | async) + ' button'\" (click)=\"previousButtonClicked()\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n <button mat-icon-button [disabled]=\"isLookingAtMaximumDate$ | async\" [attr.aria-label]=\"'Next' + (displayType$ | async)! + ' button'\" (click)=\"nextButtonClicked()\">\n <mat-icon>navigate_next</mat-icon>\n </button>\n <button *ngIf=\"showPageButtons$ | async\" mat-icon-button [disabled]=\"isLookingAtMaximumDate$ | async\" aria-label=\"last page button\" (click)=\"lastPageButtonClicked()\">\n <mat-icon>last_page</mat-icon>\n </button>\n </div>\n </span>\n <span class=\"spacer\"></span>\n <span class=\"dbx-calendar-controls-right\" fxFlex=\"nogrow\">\n <ng-content select=\"[controls]\"></ng-content>\n </span>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i5.DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i7.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4$1.ɵCalendarDatePipe, name: "calendarDate" }] });
|
|
254
|
+
DbxCalendarBaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxCalendarBaseComponent, selector: "dbx-calendar-base", ngImport: i0, template: "<div class=\"dbx-calendar\">\n <h3 class=\"dbx-calendar-title\">{{ (viewDate$ | async)! | calendarDate: (displayType$ | async) + 'ViewTitle':'en' }}</h3>\n <div class=\"dbx-calendar-header\">\n <div class=\"dbx-calendar-controls\" fxLayout=\"row\" fxLayout.xs=\"column\" ngClass.xs=\"dbx-calendar-controls-compact\">\n <span class=\"dbx-calendar-controls-left\" fxFlex=\"nogrow\">\n <button *ngIf=\"showTodayButton$ | async\" mat-stroked-button [disabled]=\"!(canJumpToToday$ | async)\" (click)=\"todayClicked()\">Today</button>\n <dbx-button-spacer></dbx-button-spacer>\n <div class=\"d-iblock\" *ngIf=\"hasMultiplePages$ | async\">\n <button *ngIf=\"showPageButtons$ | async\" mat-icon-button [disabled]=\"isLookingAtMinimumDate$ | async\" aria-label=\"first page button\" (click)=\"firstPageButtonClicked()\">\n <mat-icon>first_page</mat-icon>\n </button>\n <button mat-icon-button [disabled]=\"isLookingAtMinimumDate$ | async\" [attr.aria-label]=\"'Previous ' + (displayType$ | async) + ' button'\" (click)=\"previousButtonClicked()\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n <button mat-icon-button [disabled]=\"isLookingAtMaximumDate$ | async\" [attr.aria-label]=\"'Next' + (displayType$ | async)! + ' button'\" (click)=\"nextButtonClicked()\">\n <mat-icon>navigate_next</mat-icon>\n </button>\n <button *ngIf=\"showPageButtons$ | async\" mat-icon-button [disabled]=\"isLookingAtMaximumDate$ | async\" aria-label=\"last page button\" (click)=\"lastPageButtonClicked()\">\n <mat-icon>last_page</mat-icon>\n </button>\n </div>\n </span>\n <span class=\"spacer\"></span>\n <span class=\"dbx-calendar-controls-right\" fxFlex=\"nogrow\">\n <ng-content select=\"[controls]\"></ng-content>\n </span>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i5.DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "directive", type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i6.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i7.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4$1.ɵCalendarDatePipe, name: "calendarDate" }] });
|
|
252
255
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxCalendarBaseComponent, decorators: [{
|
|
253
256
|
type: Component,
|
|
254
|
-
args: [{ selector: 'dbx-calendar-base', template: "<div class=\"dbx-calendar\">\n <h3 class=\"dbx-calendar-title\">{{ (viewDate$ | async)! | calendarDate: (displayType$ | async) + 'ViewTitle':'en' }}</h3>\n <div class=\"dbx-calendar-header\">\n <div class=\"dbx-calendar-controls\" fxLayout=\"row\" fxLayout.xs=\"column\" ngClass.xs=\"dbx-calendar-controls-compact\">\n <span class=\"dbx-calendar-controls-left\" fxFlex=\"nogrow\">\n <button *ngIf=\"showTodayButton$ | async\" mat-stroked-button [disabled]=\"!(canJumpToToday$ | async)\" (click)=\"todayClicked()\">Today</button>\n <dbx-button-spacer></dbx-button-spacer>\n <div class=\"d-iblock\">\n <button *ngIf=\"showPageButtons$ | async\" mat-icon-button [disabled]=\"isLookingAtMinimumDate$ | async\" aria-label=\"first page button\" (click)=\"firstPageButtonClicked()\">\n <mat-icon>first_page</mat-icon>\n </button>\n <button mat-icon-button [disabled]=\"isLookingAtMinimumDate$ | async\" [attr.aria-label]=\"'Previous ' + (displayType$ | async) + ' button'\" (click)=\"previousButtonClicked()\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n <button mat-icon-button [disabled]=\"isLookingAtMaximumDate$ | async\" [attr.aria-label]=\"'Next' + (displayType$ | async)! + ' button'\" (click)=\"nextButtonClicked()\">\n <mat-icon>navigate_next</mat-icon>\n </button>\n <button *ngIf=\"showPageButtons$ | async\" mat-icon-button [disabled]=\"isLookingAtMaximumDate$ | async\" aria-label=\"last page button\" (click)=\"lastPageButtonClicked()\">\n <mat-icon>last_page</mat-icon>\n </button>\n </div>\n </span>\n <span class=\"spacer\"></span>\n <span class=\"dbx-calendar-controls-right\" fxFlex=\"nogrow\">\n <ng-content select=\"[controls]\"></ng-content>\n </span>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n" }]
|
|
257
|
+
args: [{ selector: 'dbx-calendar-base', template: "<div class=\"dbx-calendar\">\n <h3 class=\"dbx-calendar-title\">{{ (viewDate$ | async)! | calendarDate: (displayType$ | async) + 'ViewTitle':'en' }}</h3>\n <div class=\"dbx-calendar-header\">\n <div class=\"dbx-calendar-controls\" fxLayout=\"row\" fxLayout.xs=\"column\" ngClass.xs=\"dbx-calendar-controls-compact\">\n <span class=\"dbx-calendar-controls-left\" fxFlex=\"nogrow\">\n <button *ngIf=\"showTodayButton$ | async\" mat-stroked-button [disabled]=\"!(canJumpToToday$ | async)\" (click)=\"todayClicked()\">Today</button>\n <dbx-button-spacer></dbx-button-spacer>\n <div class=\"d-iblock\" *ngIf=\"hasMultiplePages$ | async\">\n <button *ngIf=\"showPageButtons$ | async\" mat-icon-button [disabled]=\"isLookingAtMinimumDate$ | async\" aria-label=\"first page button\" (click)=\"firstPageButtonClicked()\">\n <mat-icon>first_page</mat-icon>\n </button>\n <button mat-icon-button [disabled]=\"isLookingAtMinimumDate$ | async\" [attr.aria-label]=\"'Previous ' + (displayType$ | async) + ' button'\" (click)=\"previousButtonClicked()\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n <button mat-icon-button [disabled]=\"isLookingAtMaximumDate$ | async\" [attr.aria-label]=\"'Next' + (displayType$ | async)! + ' button'\" (click)=\"nextButtonClicked()\">\n <mat-icon>navigate_next</mat-icon>\n </button>\n <button *ngIf=\"showPageButtons$ | async\" mat-icon-button [disabled]=\"isLookingAtMaximumDate$ | async\" aria-label=\"last page button\" (click)=\"lastPageButtonClicked()\">\n <mat-icon>last_page</mat-icon>\n </button>\n </div>\n </span>\n <span class=\"spacer\"></span>\n <span class=\"dbx-calendar-controls-right\" fxFlex=\"nogrow\">\n <ng-content select=\"[controls]\"></ng-content>\n </span>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n" }]
|
|
255
258
|
}], ctorParameters: function () { return [{ type: DbxCalendarStore }]; } });
|
|
256
259
|
|
|
257
260
|
class DbxCalendarComponent {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dereekb-dbx-web-calendar.mjs","sources":["../../../../packages/dbx-web/calendar/src/lib/calendar.store.ts","../../../../packages/dbx-web/calendar/src/lib/calendar.ts","../../../../packages/dbx-web/calendar/src/lib/calendar.base.component.ts","../../../../packages/dbx-web/calendar/src/lib/calendar.base.component.html","../../../../packages/dbx-web/calendar/src/lib/calendar.component.ts","../../../../packages/dbx-web/calendar/src/lib/calendar.component.html","../../../../packages/dbx-web/calendar/src/lib/calendar.module.ts","../../../../packages/dbx-web/calendar/src/dereekb-dbx-web-calendar.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { clampDateToDateRange, DateRange, isDateInDateRange, isFullDateRange, isSameDateDay, isSameDateRange } from '@dereekb/date';\nimport { Maybe } from '@dereekb/util';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { CalendarEvent } from 'angular-calendar';\nimport { differenceInDays, addDays, endOfDay, endOfMonth, endOfWeek, isSameDay, startOfDay, startOfMonth, startOfWeek, isBefore, isAfter } from 'date-fns';\nimport { Observable, distinctUntilChanged, first, map, shareReplay, switchMap, tap, combineLatest } from 'rxjs';\n\nexport enum CalendarDisplayType {\n MONTH = 'month',\n WEEK = 'week',\n DAY = 'day'\n}\n\nexport interface CalendarViewDateRange {\n type: CalendarDisplayType;\n start: Date;\n end: Date;\n distance: number;\n /**\n * Whether or not the min navigation date is currently visible. This implies that we're at the minimum date.\n */\n isMinDateVisible: boolean;\n /**\n * Whether or not the maximum navigation date is visible. This implies that we're at the maximum date.\n */\n isMaxDateVisible: boolean;\n}\n\nexport interface CalendarState<T = any> {\n /**\n * Calendar display mode\n */\n readonly type: CalendarDisplayType;\n /**\n * Whether or not to show the today button. Defaults to true.\n */\n readonly showTodayButton?: boolean;\n /**\n * Date that is selected.\n */\n readonly date: Date;\n /**\n * Whether or not the day was tapped/set twice.\n */\n readonly dateTappedTwice: boolean;\n /**\n * Set of calendar events.\n */\n readonly events: CalendarEvent<T>[];\n /**\n * Optional navigation range limitation that limits which dates can be navigated to.\n */\n readonly navigationRangeLimit?: Maybe<Partial<DateRange>>;\n /**\n * Whether or not to display the page buttons when applicable. Can only be displayed when a navigationRangeLimit is set.\n */\n readonly showPageButtons?: boolean;\n}\n\nexport function visibleDateRangeForCalendarState(calendarState: CalendarState): CalendarViewDateRange {\n const { navigationRangeLimit, type, date } = calendarState;\n let start: Date;\n let end: Date;\n let distance: number;\n\n switch (type) {\n case CalendarDisplayType.MONTH:\n start = startOfDay(startOfWeek(startOfMonth(date), { weekStartsOn: 0 }));\n end = endOfWeek(endOfMonth(date));\n distance = differenceInDays(end, start) + 1;\n break;\n case CalendarDisplayType.WEEK:\n start = startOfWeek(date);\n end = endOfWeek(start);\n distance = 7; // 7 days in a week.\n break;\n case CalendarDisplayType.DAY:\n start = startOfDay(date);\n end = endOfDay(date);\n distance = 1;\n break;\n }\n\n const isMinDateVisible: boolean = navigationRangeLimit?.start != null ? isBefore(start, navigationRangeLimit.start) : false;\n const isMaxDateVisible: boolean = navigationRangeLimit?.end != null ? isAfter(end, navigationRangeLimit.end) : false;\n\n return {\n type,\n start,\n end,\n distance,\n isMinDateVisible,\n isMaxDateVisible\n };\n}\n\nconst distinctUntilDateOrTypeOrEventsChanged = distinctUntilChanged<CalendarState>((a, b) => a?.date === b?.date && a?.type === b?.type && a?.events === b?.events);\n\n@Injectable()\nexport class DbxCalendarStore<T = any> extends ComponentStore<CalendarState<T>> {\n constructor() {\n super({\n type: CalendarDisplayType.MONTH,\n showTodayButton: true,\n date: new Date(),\n dateTappedTwice: false,\n events: []\n });\n }\n\n // MARK: Effects\n readonly tapFirstPage = this.effect((input: Observable<void>) => {\n return input.pipe(\n switchMap(() =>\n this.minNavigationDate$.pipe(\n first(),\n tap((x) => {\n if (x) {\n this.tapDay(x);\n }\n })\n )\n )\n );\n });\n\n readonly tapNext = this.effect((input: Observable<void>) => {\n return input.pipe(\n switchMap(() =>\n this.visibleDateRange$.pipe(\n first(),\n tap(({ end, isMaxDateVisible }) => {\n if (!isMaxDateVisible) {\n this.tapDay(addDays(end, 1));\n }\n })\n )\n )\n );\n });\n\n readonly tapPrevious = this.effect((input: Observable<void>) => {\n return input.pipe(\n switchMap(() =>\n this.visibleDateRange$.pipe(\n first(),\n tap(({ start, isMinDateVisible }) => {\n if (!isMinDateVisible) {\n this.tapDay(addDays(start, -1));\n }\n })\n )\n )\n );\n });\n\n readonly tapLastPage = this.effect((input: Observable<void>) => {\n return input.pipe(\n switchMap(() =>\n this.maxNavigationDate$.pipe(\n first(),\n tap((x) => {\n if (x) {\n this.tapDay(x);\n }\n })\n )\n )\n );\n });\n\n // MARK: Accessors\n\n readonly showTodayButton$ = this.state$.pipe(\n map((x) => x.showTodayButton),\n distinctUntilChanged(),\n shareReplay()\n );\n\n readonly date$ = this.state$.pipe(map((x) => x.date));\n readonly dateTappedTwice$ = this.state$.pipe(map((x) => x.dateTappedTwice));\n\n readonly events$ = this.state$.pipe(map((x) => x.events));\n\n // TODO: Filter to be events that will only be displayed based on the current calendar.\n readonly visibleEvents$ = this.state$.pipe(\n map((x) => x.events),\n shareReplay(1)\n );\n\n readonly eventsForDateState$ = this.state$.pipe(\n distinctUntilDateOrTypeOrEventsChanged,\n map((state) => ({\n date: state.date,\n events: state.events.filter((x) => isSameDay(x.start, state.date) || (x.end && isBefore(x.start, state.date) && isAfter(x.end, state.date))),\n dateTappedTwice: state.dateTappedTwice\n })),\n shareReplay(1)\n );\n\n readonly eventsForDate$ = this.eventsForDateState$.pipe(map((state) => state.events));\n\n readonly visibleDateRange$: Observable<CalendarViewDateRange> = this.state$.pipe(\n // If the date or type changes, check again.\n distinctUntilChanged((a, b) => a?.date === b?.date && a?.type === b?.type),\n map(visibleDateRangeForCalendarState),\n distinctUntilChanged((a, b) => {\n if (a.type === b.type) {\n return isSameDay(a.start, b.start);\n } else {\n return false; // Type changed, date range changed.\n }\n }),\n shareReplay(1)\n );\n\n readonly isLookingAtToday$ = this.visibleDateRange$.pipe(\n map((x) => isDateInDateRange(new Date(), x)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isLookingAtMinimumDate$ = this.visibleDateRange$.pipe(\n map((x) => x.isMinDateVisible),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isLookingAtMaximumDate$ = this.visibleDateRange$.pipe(\n map((x) => x.isMaxDateVisible),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly displayType$ = this.state$.pipe(\n map((x) => x.type),\n distinctUntilChanged((a, b) => a === b),\n shareReplay(1)\n );\n\n readonly navigationRangeLimit$ = this.state$.pipe(\n map((x) => x.navigationRangeLimit),\n distinctUntilChanged(isSameDateRange),\n shareReplay(1)\n );\n\n readonly minNavigationDate$: Observable<Maybe<Date>> = this.navigationRangeLimit$.pipe(\n map((x) => x?.start),\n distinctUntilChanged(isSameDateDay),\n shareReplay(1)\n );\n\n readonly maxNavigationDate$: Observable<Maybe<Date>> = this.navigationRangeLimit$.pipe(\n map((x) => x?.end),\n distinctUntilChanged(isSameDateDay),\n shareReplay(1)\n );\n\n readonly isTodayInNavigationRangeLimit$ = this.navigationRangeLimit$.pipe(\n map((x) => isDateInDateRange(new Date(), x ?? {})),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly canJumpToToday$ = combineLatest([this.isLookingAtToday$, this.isTodayInNavigationRangeLimit$]).pipe(\n map(([isLookingAtToday, isTodayInNavigationRangeLimit]) => !isLookingAtToday && isTodayInNavigationRangeLimit),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly canShowPageButtons$ = this.state$.pipe(\n map((x) => x.showPageButtons && x.navigationRangeLimit && isFullDateRange(x.navigationRangeLimit)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n // MARK: State Changes\n /**\n * Tap a day.\n *\n * - If the same day is presented, dateTappedTwice is flipped.\n */\n readonly tapDay = this.updater((state, date: Date) => updateCalendarStateWithTappedDate(state, date));\n\n /**\n * Set all events on the calendar.\n */\n readonly setEvents = this.updater((state, events: CalendarEvent<T>[]) => ({ ...state, events }));\n\n /**\n * Set all events on the calendar.\n */\n readonly setDisplayType = this.updater((state, type: CalendarDisplayType) => ({ ...state, type }));\n\n /**\n * Sets the navigation limit.\n */\n readonly setNavigationRangeLimit = this.updater((state, navigationRangeLimit: Maybe<Partial<DateRange>>) => updateCalendarStateWithNavigationRangeLimit(state, navigationRangeLimit));\n\n readonly setShowTodayButton = this.updater((state, showTodayButton: Maybe<boolean>) => ({ ...state, showTodayButton: showTodayButton != null ? showTodayButton : true }));\n readonly setShowPageButtons = this.updater((state, showPageButtons: Maybe<boolean>) => ({ ...state, showPageButtons: showPageButtons != null ? showPageButtons : false }));\n}\n\nexport function updateCalendarStateWithTappedDate(state: CalendarState, date: Date) {\n // only update the date if it is different\n if (!isSameDateDay(state.date, date)) {\n // Only update the date if it is within the date range\n if (!state.navigationRangeLimit || isDateInDateRange(date, state.navigationRangeLimit)) {\n state = { ...state, date, dateTappedTwice: isSameDay(date, state.date) ? !state.dateTappedTwice : false };\n }\n }\n\n return state;\n}\n\nexport function updateCalendarStateWithNavigationRangeLimit(state: CalendarState, navigationRangeLimit: Maybe<Partial<DateRange>>) {\n const { date } = state;\n\n // cap the date if it doesn't fall within the range.\n if (navigationRangeLimit && !isDateInDateRange(date, navigationRangeLimit)) {\n const clampedDate = clampDateToDateRange(date, navigationRangeLimit);\n return { ...state, date: clampedDate, navigationRangeLimit };\n } else {\n return { ...state, navigationRangeLimit };\n }\n}\n","import { formatToTimeAndDurationString, sortDateRangeStartAscendingCompareFunction } from '@dereekb/date';\nimport { CalendarEvent } from 'angular-calendar';\n\nexport interface DbxCalendarEvent<T> {\n event: CalendarEvent<T>;\n action?: string;\n}\n\nfunction timeSubtitleForEvent(event: CalendarEvent): string {\n let subtitle;\n\n if (event.allDay) {\n subtitle = `(All Day)`;\n } else {\n subtitle = formatToTimeAndDurationString(event.start, event.end ?? new Date());\n }\n\n return subtitle;\n}\n\nexport function prepareAndSortCalendarEvents(events: CalendarEvent[]): CalendarEvent[] {\n return events\n .map((event: CalendarEvent) => {\n const subtitle = timeSubtitleForEvent(event);\n let title;\n\n if (event.allDay) {\n title = event.title + ' ' + subtitle;\n } else {\n title = `${event.title} - ${subtitle}`;\n }\n\n return {\n ...event,\n title\n };\n })\n .sort(sortDateRangeStartAscendingCompareFunction);\n}\n","import { Component } from '@angular/core';\nimport { isSameMonth } from 'date-fns';\nimport { DbxCalendarStore } from './calendar.store';\nimport { map, withLatestFrom } from 'rxjs';\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\n\n@Component({\n selector: 'dbx-calendar-base',\n templateUrl: './calendar.base.component.html'\n})\nexport class DbxCalendarBaseComponent<T> {\n readonly viewDate$ = this.calendarStore.date$;\n\n readonly showTodayButton$ = this.calendarStore.showTodayButton$;\n readonly canJumpToToday$ = this.calendarStore.canJumpToToday$;\n\n readonly isLookingAtMinimumDate$ = this.calendarStore.isLookingAtMinimumDate$;\n readonly isLookingAtMaximumDate$ = this.calendarStore.isLookingAtMaximumDate$;\n readonly showPageButtons$ = this.calendarStore.canShowPageButtons$;\n\n readonly activeDayIsOpen$ = this.calendarStore.eventsForDateState$.pipe(\n withLatestFrom(this.calendarStore.date$),\n map(([x, date]) => {\n if (x.events.length && isSameMonth(x.date, date)) {\n return !x.dateTappedTwice;\n }\n\n return false;\n })\n );\n\n readonly displayType$ = this.calendarStore.displayType$;\n\n constructor(public readonly calendarStore: DbxCalendarStore<T>) {}\n\n todayClicked(): void {\n this.calendarStore.tapDay(new Date());\n }\n\n firstPageButtonClicked(): void {\n this.calendarStore.tapFirstPage();\n }\n\n nextButtonClicked(): void {\n this.calendarStore.tapNext();\n }\n\n previousButtonClicked(): void {\n this.calendarStore.tapPrevious();\n }\n\n lastPageButtonClicked(): void {\n this.calendarStore.tapLastPage();\n }\n\n typeToggleChanged(event: MatButtonToggleChange): void {\n this.calendarStore.setDisplayType(event.value);\n }\n}\n","<div class=\"dbx-calendar\">\n <h3 class=\"dbx-calendar-title\">{{ (viewDate$ | async)! | calendarDate: (displayType$ | async) + 'ViewTitle':'en' }}</h3>\n <div class=\"dbx-calendar-header\">\n <div class=\"dbx-calendar-controls\" fxLayout=\"row\" fxLayout.xs=\"column\" ngClass.xs=\"dbx-calendar-controls-compact\">\n <span class=\"dbx-calendar-controls-left\" fxFlex=\"nogrow\">\n <button *ngIf=\"showTodayButton$ | async\" mat-stroked-button [disabled]=\"!(canJumpToToday$ | async)\" (click)=\"todayClicked()\">Today</button>\n <dbx-button-spacer></dbx-button-spacer>\n <div class=\"d-iblock\">\n <button *ngIf=\"showPageButtons$ | async\" mat-icon-button [disabled]=\"isLookingAtMinimumDate$ | async\" aria-label=\"first page button\" (click)=\"firstPageButtonClicked()\">\n <mat-icon>first_page</mat-icon>\n </button>\n <button mat-icon-button [disabled]=\"isLookingAtMinimumDate$ | async\" [attr.aria-label]=\"'Previous ' + (displayType$ | async) + ' button'\" (click)=\"previousButtonClicked()\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n <button mat-icon-button [disabled]=\"isLookingAtMaximumDate$ | async\" [attr.aria-label]=\"'Next' + (displayType$ | async)! + ' button'\" (click)=\"nextButtonClicked()\">\n <mat-icon>navigate_next</mat-icon>\n </button>\n <button *ngIf=\"showPageButtons$ | async\" mat-icon-button [disabled]=\"isLookingAtMaximumDate$ | async\" aria-label=\"last page button\" (click)=\"lastPageButtonClicked()\">\n <mat-icon>last_page</mat-icon>\n </button>\n </div>\n </span>\n <span class=\"spacer\"></span>\n <span class=\"dbx-calendar-controls-right\" fxFlex=\"nogrow\">\n <ng-content select=\"[controls]\"></ng-content>\n </span>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n","import { Component, EventEmitter, Output, OnDestroy } from '@angular/core';\nimport { isSameMonth } from 'date-fns';\nimport { CalendarEvent } from 'angular-calendar';\nimport { DbxCalendarStore } from './calendar.store';\nimport { map, shareReplay, withLatestFrom } from 'rxjs';\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\nimport { DbxCalendarEvent, prepareAndSortCalendarEvents } from './calendar';\n\n@Component({\n selector: 'dbx-calendar',\n templateUrl: './calendar.component.html'\n})\nexport class DbxCalendarComponent<T> implements OnDestroy {\n @Output()\n clickEvent = new EventEmitter<DbxCalendarEvent<T>>();\n\n readonly viewDate$ = this.calendarStore.date$;\n\n readonly events$ = this.calendarStore.visibleEvents$.pipe(map(prepareAndSortCalendarEvents), shareReplay(1));\n\n readonly activeDayIsOpen$ = this.calendarStore.eventsForDateState$.pipe(\n withLatestFrom(this.calendarStore.date$),\n map(([x, date]) => {\n if (x.events.length && isSameMonth(x.date, date)) {\n return !x.dateTappedTwice;\n }\n\n return false;\n })\n );\n\n readonly displayType$ = this.calendarStore.displayType$;\n\n constructor(readonly calendarStore: DbxCalendarStore<T>) {}\n\n ngOnDestroy(): void {\n this.clickEvent.complete();\n }\n\n todayClicked(): void {\n this.dayClicked({ date: new Date() });\n }\n\n nextButtonClicked(): void {\n this.calendarStore.tapNext();\n }\n\n previousButtonClicked(): void {\n this.calendarStore.tapPrevious();\n }\n\n dayClicked({ date }: { date: Date }): void {\n this.calendarStore.tapDay(date);\n }\n\n eventClicked(action: string, event: CalendarEvent<T>): void {\n this.clickEvent.emit({ action, event });\n }\n\n typeToggleChanged(event: MatButtonToggleChange): void {\n this.calendarStore.setDisplayType(event.value);\n }\n}\n","<dbx-calendar-base>\n <ng-container controls>\n <mat-button-toggle-group name=\"calendarDisplayStyle\" [value]=\"(displayType$ | async)!\" (change)=\"typeToggleChanged($event)\" aria-label=\"Display Style\">\n <mat-button-toggle value=\"month\">Month</mat-button-toggle>\n <mat-button-toggle value=\"week\">Week</mat-button-toggle>\n <mat-button-toggle value=\"day\">Day</mat-button-toggle>\n </mat-button-toggle-group>\n </ng-container>\n <div class=\"dbx-calendar-content\" [ngClass]=\"'dbx-calendar-content-' + (displayType$ | async)!\" [ngSwitch]=\"displayType$ | async\">\n <mwl-calendar-month-view *ngSwitchCase=\"'month'\" [viewDate]=\"(viewDate$ | async)!\" [events]=\"(events$ | async)!\" [activeDayIsOpen]=\"(activeDayIsOpen$ | async)!\" (dayClicked)=\"dayClicked($event.day)\" (eventClicked)=\"eventClicked('Clicked', $event.event)\"></mwl-calendar-month-view>\n <mwl-calendar-week-view *ngSwitchCase=\"'week'\" [viewDate]=\"(viewDate$ | async)!\" [events]=\"(events$ | async)!\" (eventClicked)=\"eventClicked('Clicked', $event.event)\"></mwl-calendar-week-view>\n <mwl-calendar-day-view *ngSwitchCase=\"'day'\" [viewDate]=\"(viewDate$ | async)!\" [events]=\"(events$ | async)!\" (eventClicked)=\"eventClicked('Clicked', $event.event)\"></mwl-calendar-day-view>\n </div>\n</dbx-calendar-base>\n","import { NgModule } from '@angular/core';\nimport { DbxCalendarComponent } from './calendar.component';\nimport { CalendarDayModule, CalendarModule, CalendarWeekModule, DateAdapter } from 'angular-calendar';\nimport { CommonModule } from '@angular/common';\nimport { DbxButtonModule, DbxPopoverInteractionModule } from '@dereekb/dbx-web';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { adapterFactory as dateAdapterFactory } from 'angular-calendar/date-adapters/date-fns';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { DbxCalendarBaseComponent } from './calendar.base.component';\n\nconst declarations = [\n //\n DbxCalendarBaseComponent,\n DbxCalendarComponent\n];\n\n@NgModule({\n imports: [\n //\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatButtonToggleModule,\n DbxButtonModule,\n DbxPopoverInteractionModule,\n CalendarModule,\n CalendarDayModule,\n FlexLayoutModule,\n CalendarWeekModule\n ],\n declarations,\n exports: declarations\n})\nexport class DbxCalendarModule {}\n\n/**\n * Provides default configuration for the DbxCalendarModule\n */\n@NgModule({\n imports: [CalendarModule.forRoot({ provide: DateAdapter, useFactory: dateAdapterFactory })],\n exports: [DbxCalendarModule]\n})\nexport class DbxCalendarRootModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DbxCalendarStore","i8","i3","i4","i5","i6.DbxCalendarBaseComponent","dateAdapterFactory"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dereekb-dbx-web-calendar.mjs","sources":["../../../../packages/dbx-web/calendar/src/lib/calendar.store.ts","../../../../packages/dbx-web/calendar/src/lib/calendar.ts","../../../../packages/dbx-web/calendar/src/lib/calendar.base.component.ts","../../../../packages/dbx-web/calendar/src/lib/calendar.base.component.html","../../../../packages/dbx-web/calendar/src/lib/calendar.component.ts","../../../../packages/dbx-web/calendar/src/lib/calendar.component.html","../../../../packages/dbx-web/calendar/src/lib/calendar.module.ts","../../../../packages/dbx-web/calendar/src/dereekb-dbx-web-calendar.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { clampDateToDateRange, DateRange, isDateInDateRange, isFullDateRange, isSameDateDay, isSameDateRange } from '@dereekb/date';\nimport { invertDecision, Maybe, reduceBooleansWithAndFn } from '@dereekb/util';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { CalendarEvent } from 'angular-calendar';\nimport { differenceInDays, addDays, endOfDay, endOfMonth, endOfWeek, isSameDay, startOfDay, startOfMonth, startOfWeek, isBefore, isAfter } from 'date-fns';\nimport { Observable, distinctUntilChanged, first, map, shareReplay, switchMap, tap, combineLatest } from 'rxjs';\n\nexport enum CalendarDisplayType {\n MONTH = 'month',\n WEEK = 'week',\n DAY = 'day'\n}\n\nexport interface CalendarViewDateRange {\n type: CalendarDisplayType;\n start: Date;\n end: Date;\n distance: number;\n /**\n * Whether or not the min navigation date is currently visible. This implies that we're at the minimum date.\n */\n isMinDateVisible: boolean;\n /**\n * Whether or not the maximum navigation date is visible. This implies that we're at the maximum date.\n */\n isMaxDateVisible: boolean;\n}\n\nexport interface CalendarState<T = any> {\n /**\n * Calendar display mode\n */\n readonly type: CalendarDisplayType;\n /**\n * Whether or not to show the today button. Defaults to true.\n */\n readonly showTodayButton?: boolean;\n /**\n * Date that is selected.\n */\n readonly date: Date;\n /**\n * Whether or not the day was tapped/set twice.\n */\n readonly dateTappedTwice: boolean;\n /**\n * Set of calendar events.\n */\n readonly events: CalendarEvent<T>[];\n /**\n * Optional navigation range limitation that limits which dates can be navigated to.\n */\n readonly navigationRangeLimit?: Maybe<Partial<DateRange>>;\n /**\n * Whether or not to display the page buttons when applicable. Can only be displayed when a navigationRangeLimit is set.\n */\n readonly showPageButtons?: boolean;\n}\n\nexport function visibleDateRangeForCalendarState(calendarState: CalendarState): CalendarViewDateRange {\n const { navigationRangeLimit, type, date } = calendarState;\n let start: Date;\n let end: Date;\n let distance: number;\n\n switch (type) {\n case CalendarDisplayType.MONTH:\n start = startOfDay(startOfWeek(startOfMonth(date), { weekStartsOn: 0 }));\n end = endOfWeek(endOfMonth(date));\n distance = differenceInDays(end, start) + 1;\n break;\n case CalendarDisplayType.WEEK:\n start = startOfWeek(date);\n end = endOfWeek(start);\n distance = 7; // 7 days in a week.\n break;\n case CalendarDisplayType.DAY:\n start = startOfDay(date);\n end = endOfDay(date);\n distance = 1;\n break;\n }\n\n const isMinDateVisible: boolean = navigationRangeLimit?.start != null ? isBefore(start, navigationRangeLimit.start) : false;\n const isMaxDateVisible: boolean = navigationRangeLimit?.end != null ? isAfter(end, navigationRangeLimit.end) : false;\n\n return {\n type,\n start,\n end,\n distance,\n isMinDateVisible,\n isMaxDateVisible\n };\n}\n\nconst distinctUntilDateOrTypeOrEventsChanged = distinctUntilChanged<CalendarState>((a, b) => a?.date === b?.date && a?.type === b?.type && a?.events === b?.events);\n\n@Injectable()\nexport class DbxCalendarStore<T = any> extends ComponentStore<CalendarState<T>> {\n constructor() {\n super({\n type: CalendarDisplayType.MONTH,\n showTodayButton: true,\n date: new Date(),\n dateTappedTwice: false,\n events: []\n });\n }\n\n // MARK: Effects\n readonly tapFirstPage = this.effect((input: Observable<void>) => {\n return input.pipe(\n switchMap(() =>\n this.minNavigationDate$.pipe(\n first(),\n tap((x) => {\n if (x) {\n this.tapDay(x);\n }\n })\n )\n )\n );\n });\n\n readonly tapNext = this.effect((input: Observable<void>) => {\n return input.pipe(\n switchMap(() =>\n this.visibleDateRange$.pipe(\n first(),\n tap(({ end, isMaxDateVisible }) => {\n if (!isMaxDateVisible) {\n this.tapDay(addDays(end, 1));\n }\n })\n )\n )\n );\n });\n\n readonly tapPrevious = this.effect((input: Observable<void>) => {\n return input.pipe(\n switchMap(() =>\n this.visibleDateRange$.pipe(\n first(),\n tap(({ start, isMinDateVisible }) => {\n if (!isMinDateVisible) {\n this.tapDay(addDays(start, -1));\n }\n })\n )\n )\n );\n });\n\n readonly tapLastPage = this.effect((input: Observable<void>) => {\n return input.pipe(\n switchMap(() =>\n this.maxNavigationDate$.pipe(\n first(),\n tap((x) => {\n if (x) {\n this.tapDay(x);\n }\n })\n )\n )\n );\n });\n\n // MARK: Accessors\n\n readonly showTodayButton$ = this.state$.pipe(\n map((x) => x.showTodayButton),\n distinctUntilChanged(),\n shareReplay()\n );\n\n readonly date$ = this.state$.pipe(map((x) => x.date));\n readonly dateTappedTwice$ = this.state$.pipe(map((x) => x.dateTappedTwice));\n\n readonly events$ = this.state$.pipe(map((x) => x.events));\n\n // TODO: Filter to be events that will only be displayed based on the current calendar.\n readonly visibleEvents$ = this.state$.pipe(\n map((x) => x.events),\n shareReplay(1)\n );\n\n readonly eventsForDateState$ = this.state$.pipe(\n distinctUntilDateOrTypeOrEventsChanged,\n map((state) => ({\n date: state.date,\n events: state.events.filter((x) => isSameDay(x.start, state.date) || (x.end && isBefore(x.start, state.date) && isAfter(x.end, state.date))),\n dateTappedTwice: state.dateTappedTwice\n })),\n shareReplay(1)\n );\n\n readonly eventsForDate$ = this.eventsForDateState$.pipe(map((state) => state.events));\n\n readonly visibleDateRange$: Observable<CalendarViewDateRange> = this.state$.pipe(\n // If the date or type changes, check again.\n distinctUntilChanged((a, b) => a?.date === b?.date && a?.type === b?.type),\n map(visibleDateRangeForCalendarState),\n distinctUntilChanged((a, b) => {\n if (a.type === b.type) {\n return isSameDay(a.start, b.start);\n } else {\n return false; // Type changed, date range changed.\n }\n }),\n shareReplay(1)\n );\n\n readonly isLookingAtToday$ = this.visibleDateRange$.pipe(\n map((x) => isDateInDateRange(new Date(), x)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isLookingAtMinimumDate$ = this.visibleDateRange$.pipe(\n map((x) => x.isMinDateVisible),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly isLookingAtMaximumDate$ = this.visibleDateRange$.pipe(\n map((x) => x.isMaxDateVisible),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly hasMultiplePages$ = combineLatest([this.isLookingAtMinimumDate$, this.isLookingAtMaximumDate$]).pipe(map(invertDecision(reduceBooleansWithAndFn(true))), distinctUntilChanged(), shareReplay(1));\n\n readonly displayType$ = this.state$.pipe(\n map((x) => x.type),\n distinctUntilChanged((a, b) => a === b),\n shareReplay(1)\n );\n\n readonly navigationRangeLimit$ = this.state$.pipe(\n map((x) => x.navigationRangeLimit),\n distinctUntilChanged(isSameDateRange),\n shareReplay(1)\n );\n\n readonly minNavigationDate$: Observable<Maybe<Date>> = this.navigationRangeLimit$.pipe(\n map((x) => x?.start),\n distinctUntilChanged(isSameDateDay),\n shareReplay(1)\n );\n\n readonly maxNavigationDate$: Observable<Maybe<Date>> = this.navigationRangeLimit$.pipe(\n map((x) => x?.end),\n distinctUntilChanged(isSameDateDay),\n shareReplay(1)\n );\n\n readonly isTodayInNavigationRangeLimit$ = this.navigationRangeLimit$.pipe(\n map((x) => isDateInDateRange(new Date(), x ?? {})),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly canJumpToToday$ = combineLatest([this.isLookingAtToday$, this.isTodayInNavigationRangeLimit$]).pipe(\n map(([isLookingAtToday, isTodayInNavigationRangeLimit]) => !isLookingAtToday && isTodayInNavigationRangeLimit),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly canShowPageButtons$ = this.state$.pipe(\n map((x) => x.showPageButtons && x.navigationRangeLimit && isFullDateRange(x.navigationRangeLimit)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n // MARK: State Changes\n /**\n * Tap a day.\n *\n * - If the same day is presented, dateTappedTwice is flipped.\n */\n readonly tapDay = this.updater((state, date: Date) => updateCalendarStateWithTappedDate(state, date));\n\n /**\n * Set all events on the calendar.\n */\n readonly setEvents = this.updater((state, events: CalendarEvent<T>[]) => ({ ...state, events }));\n\n /**\n * Set all events on the calendar.\n */\n readonly setDisplayType = this.updater((state, type: CalendarDisplayType) => ({ ...state, type }));\n\n /**\n * Sets the navigation limit.\n */\n readonly setNavigationRangeLimit = this.updater((state, navigationRangeLimit: Maybe<Partial<DateRange>>) => updateCalendarStateWithNavigationRangeLimit(state, navigationRangeLimit));\n\n readonly setShowTodayButton = this.updater((state, showTodayButton: Maybe<boolean>) => ({ ...state, showTodayButton: showTodayButton != null ? showTodayButton : true }));\n readonly setShowPageButtons = this.updater((state, showPageButtons: Maybe<boolean>) => ({ ...state, showPageButtons: showPageButtons != null ? showPageButtons : false }));\n}\n\nexport function updateCalendarStateWithTappedDate(state: CalendarState, date: Date) {\n // only update the date if it is different\n if (!isSameDateDay(state.date, date)) {\n // Only update the date if it is within the date range\n if (!state.navigationRangeLimit || isDateInDateRange(date, state.navigationRangeLimit)) {\n state = { ...state, date, dateTappedTwice: isSameDay(date, state.date) ? !state.dateTappedTwice : false };\n }\n }\n\n return state;\n}\n\nexport function updateCalendarStateWithNavigationRangeLimit(state: CalendarState, navigationRangeLimit: Maybe<Partial<DateRange>>) {\n const { date } = state;\n\n // cap the date if it doesn't fall within the range.\n if (navigationRangeLimit && !isDateInDateRange(date, navigationRangeLimit)) {\n const clampedDate = clampDateToDateRange(date, navigationRangeLimit);\n return { ...state, date: clampedDate, navigationRangeLimit };\n } else {\n return { ...state, navigationRangeLimit };\n }\n}\n","import { formatToTimeAndDurationString, sortDateRangeStartAscendingCompareFunction } from '@dereekb/date';\nimport { CalendarEvent } from 'angular-calendar';\n\nexport interface DbxCalendarEvent<T> {\n event: CalendarEvent<T>;\n action?: string;\n}\n\nfunction timeSubtitleForEvent(event: CalendarEvent): string {\n let subtitle;\n\n if (event.allDay) {\n subtitle = `(All Day)`;\n } else {\n subtitle = formatToTimeAndDurationString(event.start, event.end ?? new Date());\n }\n\n return subtitle;\n}\n\nexport function prepareAndSortCalendarEvents(events: CalendarEvent[]): CalendarEvent[] {\n return events\n .map((event: CalendarEvent) => {\n const subtitle = timeSubtitleForEvent(event);\n let title;\n\n if (event.allDay) {\n title = event.title + ' ' + subtitle;\n } else {\n title = `${event.title} - ${subtitle}`;\n }\n\n return {\n ...event,\n title\n };\n })\n .sort(sortDateRangeStartAscendingCompareFunction);\n}\n","import { Component } from '@angular/core';\nimport { isSameMonth } from 'date-fns';\nimport { DbxCalendarStore } from './calendar.store';\nimport { combineLatest, map, shareReplay, withLatestFrom } from 'rxjs';\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\nimport { reduceBooleansWithAnd, reduceBooleansWithAndFn } from '@dereekb/util';\n\n@Component({\n selector: 'dbx-calendar-base',\n templateUrl: './calendar.base.component.html'\n})\nexport class DbxCalendarBaseComponent<T> {\n readonly viewDate$ = this.calendarStore.date$;\n\n readonly showTodayButton$ = this.calendarStore.showTodayButton$;\n readonly canJumpToToday$ = this.calendarStore.canJumpToToday$;\n\n readonly isLookingAtMinimumDate$ = this.calendarStore.isLookingAtMinimumDate$;\n readonly isLookingAtMaximumDate$ = this.calendarStore.isLookingAtMaximumDate$;\n readonly hasMultiplePages$ = this.calendarStore.hasMultiplePages$;\n\n readonly showPageButtons$ = this.calendarStore.canShowPageButtons$;\n\n readonly activeDayIsOpen$ = this.calendarStore.eventsForDateState$.pipe(\n withLatestFrom(this.calendarStore.date$),\n map(([x, date]) => {\n if (x.events.length && isSameMonth(x.date, date)) {\n return !x.dateTappedTwice;\n }\n\n return false;\n })\n );\n\n readonly displayType$ = this.calendarStore.displayType$;\n\n constructor(public readonly calendarStore: DbxCalendarStore<T>) {}\n\n todayClicked(): void {\n this.calendarStore.tapDay(new Date());\n }\n\n firstPageButtonClicked(): void {\n this.calendarStore.tapFirstPage();\n }\n\n nextButtonClicked(): void {\n this.calendarStore.tapNext();\n }\n\n previousButtonClicked(): void {\n this.calendarStore.tapPrevious();\n }\n\n lastPageButtonClicked(): void {\n this.calendarStore.tapLastPage();\n }\n\n typeToggleChanged(event: MatButtonToggleChange): void {\n this.calendarStore.setDisplayType(event.value);\n }\n}\n","<div class=\"dbx-calendar\">\n <h3 class=\"dbx-calendar-title\">{{ (viewDate$ | async)! | calendarDate: (displayType$ | async) + 'ViewTitle':'en' }}</h3>\n <div class=\"dbx-calendar-header\">\n <div class=\"dbx-calendar-controls\" fxLayout=\"row\" fxLayout.xs=\"column\" ngClass.xs=\"dbx-calendar-controls-compact\">\n <span class=\"dbx-calendar-controls-left\" fxFlex=\"nogrow\">\n <button *ngIf=\"showTodayButton$ | async\" mat-stroked-button [disabled]=\"!(canJumpToToday$ | async)\" (click)=\"todayClicked()\">Today</button>\n <dbx-button-spacer></dbx-button-spacer>\n <div class=\"d-iblock\" *ngIf=\"hasMultiplePages$ | async\">\n <button *ngIf=\"showPageButtons$ | async\" mat-icon-button [disabled]=\"isLookingAtMinimumDate$ | async\" aria-label=\"first page button\" (click)=\"firstPageButtonClicked()\">\n <mat-icon>first_page</mat-icon>\n </button>\n <button mat-icon-button [disabled]=\"isLookingAtMinimumDate$ | async\" [attr.aria-label]=\"'Previous ' + (displayType$ | async) + ' button'\" (click)=\"previousButtonClicked()\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n <button mat-icon-button [disabled]=\"isLookingAtMaximumDate$ | async\" [attr.aria-label]=\"'Next' + (displayType$ | async)! + ' button'\" (click)=\"nextButtonClicked()\">\n <mat-icon>navigate_next</mat-icon>\n </button>\n <button *ngIf=\"showPageButtons$ | async\" mat-icon-button [disabled]=\"isLookingAtMaximumDate$ | async\" aria-label=\"last page button\" (click)=\"lastPageButtonClicked()\">\n <mat-icon>last_page</mat-icon>\n </button>\n </div>\n </span>\n <span class=\"spacer\"></span>\n <span class=\"dbx-calendar-controls-right\" fxFlex=\"nogrow\">\n <ng-content select=\"[controls]\"></ng-content>\n </span>\n </div>\n </div>\n <ng-content></ng-content>\n</div>\n","import { Component, EventEmitter, Output, OnDestroy } from '@angular/core';\nimport { isSameMonth } from 'date-fns';\nimport { CalendarEvent } from 'angular-calendar';\nimport { DbxCalendarStore } from './calendar.store';\nimport { map, shareReplay, withLatestFrom } from 'rxjs';\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\nimport { DbxCalendarEvent, prepareAndSortCalendarEvents } from './calendar';\n\n@Component({\n selector: 'dbx-calendar',\n templateUrl: './calendar.component.html'\n})\nexport class DbxCalendarComponent<T> implements OnDestroy {\n @Output()\n clickEvent = new EventEmitter<DbxCalendarEvent<T>>();\n\n readonly viewDate$ = this.calendarStore.date$;\n\n readonly events$ = this.calendarStore.visibleEvents$.pipe(map(prepareAndSortCalendarEvents), shareReplay(1));\n\n readonly activeDayIsOpen$ = this.calendarStore.eventsForDateState$.pipe(\n withLatestFrom(this.calendarStore.date$),\n map(([x, date]) => {\n if (x.events.length && isSameMonth(x.date, date)) {\n return !x.dateTappedTwice;\n }\n\n return false;\n })\n );\n\n readonly displayType$ = this.calendarStore.displayType$;\n\n constructor(readonly calendarStore: DbxCalendarStore<T>) {}\n\n ngOnDestroy(): void {\n this.clickEvent.complete();\n }\n\n todayClicked(): void {\n this.dayClicked({ date: new Date() });\n }\n\n nextButtonClicked(): void {\n this.calendarStore.tapNext();\n }\n\n previousButtonClicked(): void {\n this.calendarStore.tapPrevious();\n }\n\n dayClicked({ date }: { date: Date }): void {\n this.calendarStore.tapDay(date);\n }\n\n eventClicked(action: string, event: CalendarEvent<T>): void {\n this.clickEvent.emit({ action, event });\n }\n\n typeToggleChanged(event: MatButtonToggleChange): void {\n this.calendarStore.setDisplayType(event.value);\n }\n}\n","<dbx-calendar-base>\n <ng-container controls>\n <mat-button-toggle-group name=\"calendarDisplayStyle\" [value]=\"(displayType$ | async)!\" (change)=\"typeToggleChanged($event)\" aria-label=\"Display Style\">\n <mat-button-toggle value=\"month\">Month</mat-button-toggle>\n <mat-button-toggle value=\"week\">Week</mat-button-toggle>\n <mat-button-toggle value=\"day\">Day</mat-button-toggle>\n </mat-button-toggle-group>\n </ng-container>\n <div class=\"dbx-calendar-content\" [ngClass]=\"'dbx-calendar-content-' + (displayType$ | async)!\" [ngSwitch]=\"displayType$ | async\">\n <mwl-calendar-month-view *ngSwitchCase=\"'month'\" [viewDate]=\"(viewDate$ | async)!\" [events]=\"(events$ | async)!\" [activeDayIsOpen]=\"(activeDayIsOpen$ | async)!\" (dayClicked)=\"dayClicked($event.day)\" (eventClicked)=\"eventClicked('Clicked', $event.event)\"></mwl-calendar-month-view>\n <mwl-calendar-week-view *ngSwitchCase=\"'week'\" [viewDate]=\"(viewDate$ | async)!\" [events]=\"(events$ | async)!\" (eventClicked)=\"eventClicked('Clicked', $event.event)\"></mwl-calendar-week-view>\n <mwl-calendar-day-view *ngSwitchCase=\"'day'\" [viewDate]=\"(viewDate$ | async)!\" [events]=\"(events$ | async)!\" (eventClicked)=\"eventClicked('Clicked', $event.event)\"></mwl-calendar-day-view>\n </div>\n</dbx-calendar-base>\n","import { NgModule } from '@angular/core';\nimport { DbxCalendarComponent } from './calendar.component';\nimport { CalendarDayModule, CalendarModule, CalendarWeekModule, DateAdapter } from 'angular-calendar';\nimport { CommonModule } from '@angular/common';\nimport { DbxButtonModule, DbxPopoverInteractionModule } from '@dereekb/dbx-web';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { adapterFactory as dateAdapterFactory } from 'angular-calendar/date-adapters/date-fns';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { DbxCalendarBaseComponent } from './calendar.base.component';\n\nconst declarations = [\n //\n DbxCalendarBaseComponent,\n DbxCalendarComponent\n];\n\n@NgModule({\n imports: [\n //\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatButtonToggleModule,\n DbxButtonModule,\n DbxPopoverInteractionModule,\n CalendarModule,\n CalendarDayModule,\n FlexLayoutModule,\n CalendarWeekModule\n ],\n declarations,\n exports: declarations\n})\nexport class DbxCalendarModule {}\n\n/**\n * Provides default configuration for the DbxCalendarModule\n */\n@NgModule({\n imports: [CalendarModule.forRoot({ provide: DateAdapter, useFactory: dateAdapterFactory })],\n exports: [DbxCalendarModule]\n})\nexport class DbxCalendarRootModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DbxCalendarStore","i8","i3","i4","i5","i6.DbxCalendarBaseComponent","dateAdapterFactory"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Host, Optional, Inject,
|
|
2
|
+
import { Injectable, Host, Optional, Inject, Component, ChangeDetectionStrategy, SkipSelf, Directive, Injector, ElementRef, ViewChild, Input, NgModule } from '@angular/core';
|
|
3
3
|
import * as i2 from '@dereekb/dbx-core';
|
|
4
4
|
import { safeMarkForCheck, safeDetectChanges, AbstractSubscriptionDirective, DbxInjectionComponentModule } from '@dereekb/dbx-core';
|
|
5
|
-
import { cleanup, filterMaybe, onTrueToFalse, SubscriptionObject, asObservable } from '@dereekb/rxjs';
|
|
5
|
+
import { cleanup, filterMaybe, onTrueToFalse, SubscriptionObject, distinctUntilMapHasDifferentKeys, asObservable } from '@dereekb/rxjs';
|
|
6
6
|
import { switchMap, NEVER, defaultIfEmpty, map, tap, EMPTY, distinctUntilChanged, shareReplay, of, combineLatest, filter, first, startWith, interval, Subject, merge, throttleTime, BehaviorSubject, combineLatestWith } from 'rxjs';
|
|
7
7
|
import { latLngPointFunction, latLngBoundFunction, latLngBoundFromInput, filterUndefinedValues, isSameLatLngPoint, isDefaultLatLngPoint, swMostLatLngPoint, neMostLatLngPoint, isSameLatLngBound, diffLatLngBoundPoints, latLngBoundWrapsMap, isWithinLatLngBoundFunction, overlapsLatLngBoundFunction, vectorsAreEqual, latLngBoundCenterPoint, addLatLngPoints, latLngPoint, DestroyFunctionObject, getValueFromGetter, LAT_LONG_10M_PRECISION, roundNumberToStepFunction } from '@dereekb/util';
|
|
8
8
|
import { ComponentStore } from '@ngrx/component-store';
|
|
@@ -557,6 +557,113 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
557
557
|
}]
|
|
558
558
|
}], ctorParameters: function () { return [{ type: DbxMapboxMapStore }]; } });
|
|
559
559
|
|
|
560
|
+
/**
|
|
561
|
+
* Store used for storing injectable content into the map.
|
|
562
|
+
*/
|
|
563
|
+
class DbxMapboxInjectionStore extends ComponentStore {
|
|
564
|
+
constructor() {
|
|
565
|
+
super({
|
|
566
|
+
map: new Map()
|
|
567
|
+
});
|
|
568
|
+
this.map$ = this.state$.pipe(map((x) => x.map), distinctUntilMapHasDifferentKeys(), shareReplay(1));
|
|
569
|
+
this.allInjectionConfigs$ = this.map$.pipe(map((x) => Array.from(x.values())), shareReplay(1));
|
|
570
|
+
// MARK: State Changes
|
|
571
|
+
this.addInjectionConfig = this.updater(updateDbxMapboxMapInjectionStoreStateWithInjectionConfig);
|
|
572
|
+
this.removeInjectionConfigWithKey = this.updater(updateDbxMapboxMapInjectionStoreStateWithRemovedKey);
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
DbxMapboxInjectionStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxInjectionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
576
|
+
DbxMapboxInjectionStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxInjectionStore });
|
|
577
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxInjectionStore, decorators: [{
|
|
578
|
+
type: Injectable
|
|
579
|
+
}], ctorParameters: function () { return []; } });
|
|
580
|
+
function updateDbxMapboxMapInjectionStoreStateWithInjectionConfig(state, config) {
|
|
581
|
+
const map = new Map(state.map).set(config.key, config);
|
|
582
|
+
return { ...state, map };
|
|
583
|
+
}
|
|
584
|
+
function updateDbxMapboxMapInjectionStoreStateWithRemovedKey(state, key) {
|
|
585
|
+
// only create a new state if the key is going to get removed
|
|
586
|
+
if (state.map.has(key)) {
|
|
587
|
+
const map = new Map(state.map);
|
|
588
|
+
map.delete(key);
|
|
589
|
+
state = { ...state, map };
|
|
590
|
+
}
|
|
591
|
+
return state;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
/**
|
|
595
|
+
* Injects the components configured in the DbxMapboxInjectionStore into the view.
|
|
596
|
+
*/
|
|
597
|
+
class DbxMapboxInjectionComponent {
|
|
598
|
+
constructor(dbxMapboxMapKeyInjectionStore, injector) {
|
|
599
|
+
this.dbxMapboxMapKeyInjectionStore = dbxMapboxMapKeyInjectionStore;
|
|
600
|
+
this.injector = injector;
|
|
601
|
+
this.entries$ = this.dbxMapboxMapKeyInjectionStore.allInjectionConfigs$.pipe(shareReplay(1));
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
DbxMapboxInjectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxInjectionComponent, deps: [{ token: DbxMapboxInjectionStore }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
605
|
+
DbxMapboxInjectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxMapboxInjectionComponent, selector: "dbx-mapbox-injection", ngImport: i0, template: `
|
|
606
|
+
<dbx-injection-array [entries]="entries$ | async"></dbx-injection-array>
|
|
607
|
+
`, isInline: true, dependencies: [{ kind: "component", type: i2.DbxInjectionArrayComponent, selector: "dbx-injection-array", inputs: ["entries"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
608
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxInjectionComponent, decorators: [{
|
|
609
|
+
type: Component,
|
|
610
|
+
args: [{
|
|
611
|
+
selector: 'dbx-mapbox-injection',
|
|
612
|
+
template: `
|
|
613
|
+
<dbx-injection-array [entries]="entries$ | async"></dbx-injection-array>
|
|
614
|
+
`,
|
|
615
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
616
|
+
}]
|
|
617
|
+
}], ctorParameters: function () { return [{ type: DbxMapboxInjectionStore }, { type: i0.Injector }]; } });
|
|
618
|
+
|
|
619
|
+
/**
|
|
620
|
+
* Token used by provideMapboxInjectionStoreIfDoesNotExist() to prevent injecting a parent DbxMapboxInjectionStore into the child view.
|
|
621
|
+
*/
|
|
622
|
+
class DbxMapboxInjectionStoreProviderBlock {
|
|
623
|
+
constructor(dbxMapboxInjectionStore) {
|
|
624
|
+
this.dbxMapboxInjectionStore = dbxMapboxInjectionStore;
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
DbxMapboxInjectionStoreProviderBlock.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxInjectionStoreProviderBlock, deps: [{ token: DbxMapboxInjectionStore, skipSelf: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
628
|
+
DbxMapboxInjectionStoreProviderBlock.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxInjectionStoreProviderBlock });
|
|
629
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxInjectionStoreProviderBlock, decorators: [{
|
|
630
|
+
type: Injectable
|
|
631
|
+
}], ctorParameters: function () { return [{ type: DbxMapboxInjectionStore, decorators: [{
|
|
632
|
+
type: SkipSelf
|
|
633
|
+
}] }]; } });
|
|
634
|
+
class DbxMapboxInjectionStoreInjectionBlockDirective {
|
|
635
|
+
}
|
|
636
|
+
DbxMapboxInjectionStoreInjectionBlockDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxInjectionStoreInjectionBlockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
637
|
+
DbxMapboxInjectionStoreInjectionBlockDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: DbxMapboxInjectionStoreInjectionBlockDirective, selector: "[dbxMapboxInjectionStoreParentBlocker]", providers: [DbxMapboxInjectionStoreProviderBlock], ngImport: i0 });
|
|
638
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxInjectionStoreInjectionBlockDirective, decorators: [{
|
|
639
|
+
type: Directive,
|
|
640
|
+
args: [{
|
|
641
|
+
selector: '[dbxMapboxInjectionStoreParentBlocker]',
|
|
642
|
+
providers: [DbxMapboxInjectionStoreProviderBlock]
|
|
643
|
+
}]
|
|
644
|
+
}] });
|
|
645
|
+
/**
|
|
646
|
+
* Creates a Provider that initializes a new DbxMapboxInjectionStore if a parent does not exist.
|
|
647
|
+
*
|
|
648
|
+
* If a DbxMapboxInjectionStoreInjectionBlock is available in the context, and references the same dbxMapboxInjectionStore that is attempting to be injected, a new DbxMapboxInjectionStore is created.
|
|
649
|
+
*
|
|
650
|
+
* @returns
|
|
651
|
+
*/
|
|
652
|
+
function provideMapboxInjectionStoreIfParentIsUnavailable() {
|
|
653
|
+
return {
|
|
654
|
+
provide: DbxMapboxInjectionStore,
|
|
655
|
+
useFactory: (parentInjector, dbxMapboxInjectionStoreInjectionBlock, dbxMapboxInjectionStore) => {
|
|
656
|
+
if (!dbxMapboxInjectionStore || (dbxMapboxInjectionStore && dbxMapboxInjectionStoreInjectionBlock != null && dbxMapboxInjectionStoreInjectionBlock.dbxMapboxInjectionStore === dbxMapboxInjectionStore)) {
|
|
657
|
+
// create a new dbxMapboxInjectionStore to use
|
|
658
|
+
const injector = Injector.create({ providers: [{ provide: DbxMapboxInjectionStore }], parent: parentInjector });
|
|
659
|
+
dbxMapboxInjectionStore = injector.get(DbxMapboxInjectionStore);
|
|
660
|
+
}
|
|
661
|
+
return dbxMapboxInjectionStore;
|
|
662
|
+
},
|
|
663
|
+
deps: [Injector, [new Optional(), DbxMapboxInjectionStoreProviderBlock], [new Optional(), new SkipSelf(), DbxMapboxInjectionStore]]
|
|
664
|
+
};
|
|
665
|
+
}
|
|
666
|
+
|
|
560
667
|
/**
|
|
561
668
|
* Directive that configures a MapComponent with content from DbxMapboxService. Connects a host MapService to a parent DbxMapboxMapStore if available.
|
|
562
669
|
*/
|
|
@@ -973,11 +1080,11 @@ class DbxMapboxMarkerComponent {
|
|
|
973
1080
|
return style;
|
|
974
1081
|
}
|
|
975
1082
|
get presentation() {
|
|
976
|
-
return this._marker
|
|
1083
|
+
return this._marker?.presentation ?? 'normal';
|
|
977
1084
|
}
|
|
978
1085
|
get presentationClasses() {
|
|
979
1086
|
const presentation = this.presentation;
|
|
980
|
-
const markerClasses = this._marker
|
|
1087
|
+
const markerClasses = this._marker?.markerClasses;
|
|
981
1088
|
let cssClasses = '';
|
|
982
1089
|
switch (presentation) {
|
|
983
1090
|
case 'chip':
|
|
@@ -992,7 +1099,7 @@ class DbxMapboxMarkerComponent {
|
|
|
992
1099
|
cssClasses += ' dbx-mapbox-marker-no-icon';
|
|
993
1100
|
}
|
|
994
1101
|
if (markerClasses) {
|
|
995
|
-
cssClasses += ` markerClasses`;
|
|
1102
|
+
cssClasses += ` ${markerClasses}`;
|
|
996
1103
|
}
|
|
997
1104
|
return cssClasses;
|
|
998
1105
|
}
|
|
@@ -1003,7 +1110,7 @@ class DbxMapboxMarkerComponent {
|
|
|
1003
1110
|
DbxMapboxMarkerComponent._latLngPoint = latLngPointFunction({ wrap: true });
|
|
1004
1111
|
DbxMapboxMarkerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxMarkerComponent, deps: [{ token: DbxMapboxChangeService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
1005
1112
|
DbxMapboxMarkerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxMapboxMarkerComponent, selector: "dbx-mapbox-marker", inputs: { marker: "marker" }, ngImport: i0, template: `
|
|
1006
|
-
<mgl-marker [lngLat]="latLng">
|
|
1113
|
+
<mgl-marker *ngIf="marker" [lngLat]="latLng">
|
|
1007
1114
|
<dbx-anchor [anchor]="anchor">
|
|
1008
1115
|
<div class="dbx-mapbox-marker" [ngClass]="presentationClasses">
|
|
1009
1116
|
<div class="dbx-mapbox-marker-icon-content" [ngStyle]="style">
|
|
@@ -1017,7 +1124,7 @@ DbxMapboxMarkerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0
|
|
|
1017
1124
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxMapboxMarkerComponent, decorators: [{
|
|
1018
1125
|
type: Component,
|
|
1019
1126
|
args: [{ selector: 'dbx-mapbox-marker', template: `
|
|
1020
|
-
<mgl-marker [lngLat]="latLng">
|
|
1127
|
+
<mgl-marker *ngIf="marker" [lngLat]="latLng">
|
|
1021
1128
|
<dbx-anchor [anchor]="anchor">
|
|
1022
1129
|
<div class="dbx-mapbox-marker" [ngClass]="presentationClasses">
|
|
1023
1130
|
<div class="dbx-mapbox-marker-icon-content" [ngStyle]="style">
|
|
@@ -1094,6 +1201,7 @@ const declarations = [
|
|
|
1094
1201
|
DbxMapboxMapDirective,
|
|
1095
1202
|
DbxMapboxLayoutComponent,
|
|
1096
1203
|
DbxMapboxLayoutDrawerComponent,
|
|
1204
|
+
DbxMapboxInjectionComponent,
|
|
1097
1205
|
DbxMapboxMenuComponent,
|
|
1098
1206
|
DbxMapboxMarkerComponent,
|
|
1099
1207
|
DbxMapboxMarkersComponent,
|
|
@@ -1118,6 +1226,7 @@ DbxMapboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version
|
|
|
1118
1226
|
DbxMapboxMapDirective,
|
|
1119
1227
|
DbxMapboxLayoutComponent,
|
|
1120
1228
|
DbxMapboxLayoutDrawerComponent,
|
|
1229
|
+
DbxMapboxInjectionComponent,
|
|
1121
1230
|
DbxMapboxMenuComponent,
|
|
1122
1231
|
DbxMapboxMarkerComponent,
|
|
1123
1232
|
DbxMapboxMarkersComponent,
|
|
@@ -1135,6 +1244,7 @@ DbxMapboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version
|
|
|
1135
1244
|
DbxMapboxMapDirective,
|
|
1136
1245
|
DbxMapboxLayoutComponent,
|
|
1137
1246
|
DbxMapboxLayoutDrawerComponent,
|
|
1247
|
+
DbxMapboxInjectionComponent,
|
|
1138
1248
|
DbxMapboxMenuComponent,
|
|
1139
1249
|
DbxMapboxMarkerComponent,
|
|
1140
1250
|
DbxMapboxMarkersComponent,
|
|
@@ -1255,5 +1365,5 @@ function mapboxZoomLevel(input) {
|
|
|
1255
1365
|
* Generated bundle index. Do not edit.
|
|
1256
1366
|
*/
|
|
1257
1367
|
|
|
1258
|
-
export { DEFAULT_MAPBOX_CENTER, DEFAULT_MAPBOX_MAP_STORE_TIMER_REFRESH_PERIOD, DEFAULT_MAPBOX_STYLE, DEFAULT_MAPBOX_ZOOM, DbxMapboxChangeDetectorRefService, DbxMapboxChangeService, DbxMapboxConfig, DbxMapboxLayoutComponent, DbxMapboxLayoutDrawerComponent, DbxMapboxMapDirective, DbxMapboxMapStore, DbxMapboxMapStoreInjectionBlockDirective, DbxMapboxMapStoreProviderBlock, DbxMapboxMarkerComponent, DbxMapboxMarkersComponent, DbxMapboxMenuComponent, DbxMapboxModule, DbxMapboxService, KNOWN_MAPBOX_STYLES, MAPBOX_MAX_ZOOM_LEVEL, MAPBOX_MIN_ZOOM_LEVEL, dbxMapboxColoredDotStyle, filterByMapboxViewportBound, mapboxViewportBoundFunction, mapboxZoomLevel, provideMapboxStoreIfParentIsUnavailable };
|
|
1368
|
+
export { DEFAULT_MAPBOX_CENTER, DEFAULT_MAPBOX_MAP_STORE_TIMER_REFRESH_PERIOD, DEFAULT_MAPBOX_STYLE, DEFAULT_MAPBOX_ZOOM, DbxMapboxChangeDetectorRefService, DbxMapboxChangeService, DbxMapboxConfig, DbxMapboxInjectionComponent, DbxMapboxInjectionStore, DbxMapboxInjectionStoreInjectionBlockDirective, DbxMapboxInjectionStoreProviderBlock, DbxMapboxLayoutComponent, DbxMapboxLayoutDrawerComponent, DbxMapboxMapDirective, DbxMapboxMapStore, DbxMapboxMapStoreInjectionBlockDirective, DbxMapboxMapStoreProviderBlock, DbxMapboxMarkerComponent, DbxMapboxMarkersComponent, DbxMapboxMenuComponent, DbxMapboxModule, DbxMapboxService, KNOWN_MAPBOX_STYLES, MAPBOX_MAX_ZOOM_LEVEL, MAPBOX_MIN_ZOOM_LEVEL, dbxMapboxColoredDotStyle, filterByMapboxViewportBound, mapboxViewportBoundFunction, mapboxZoomLevel, provideMapboxInjectionStoreIfParentIsUnavailable, provideMapboxStoreIfParentIsUnavailable, updateDbxMapboxMapInjectionStoreStateWithInjectionConfig, updateDbxMapboxMapInjectionStoreStateWithRemovedKey };
|
|
1259
1369
|
//# sourceMappingURL=dereekb-dbx-web-mapbox.mjs.map
|