@dereekb/dbx-form 9.23.9 → 9.23.11
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/lib/calendar.schedule.selection.store.d.ts +36 -4
- package/calendar/lib/field/schedule/calendar.schedule.field.component.d.ts +9 -4
- package/esm2020/calendar/lib/calendar.schedule.selection.store.mjs +133 -37
- package/esm2020/calendar/lib/field/schedule/calendar.schedule.field.component.mjs +24 -3
- package/esm2020/calendar/lib/field/schedule/calendar.schedule.field.mjs +6 -3
- package/fesm2015/dereekb-dbx-form-calendar.mjs +161 -41
- package/fesm2015/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/fesm2020/dereekb-dbx-form-calendar.mjs +161 -41
- package/fesm2020/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/lib/extension/calendar/_calendar.scss +2 -0
- package/mapbox/package.json +4 -4
- package/package.json +4 -4
|
@@ -20,6 +20,7 @@ export class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
|
|
|
20
20
|
this._syncSub = new SubscriptionObject();
|
|
21
21
|
this._valueSub = new SubscriptionObject();
|
|
22
22
|
this._filterSub = new SubscriptionObject();
|
|
23
|
+
this._exclusionsSub = new SubscriptionObject();
|
|
23
24
|
this._formControlObs = new BehaviorSubject(undefined);
|
|
24
25
|
this.formControl$ = this._formControlObs.pipe(filterMaybe());
|
|
25
26
|
this.value$ = this.formControl$.pipe(switchMap((control) => control.valueChanges.pipe(startWith(control.value))), shareReplay(1));
|
|
@@ -45,6 +46,15 @@ export class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
|
|
|
45
46
|
get filter() {
|
|
46
47
|
return this.props.filter;
|
|
47
48
|
}
|
|
49
|
+
get exclusions() {
|
|
50
|
+
return this.props.exclusions;
|
|
51
|
+
}
|
|
52
|
+
get initialSelectionState() {
|
|
53
|
+
return this.props.initialSelectionState;
|
|
54
|
+
}
|
|
55
|
+
get computeSelectionResultRelativeToFilter() {
|
|
56
|
+
return this.props.computeSelectionResultRelativeToFilter;
|
|
57
|
+
}
|
|
48
58
|
ngOnInit() {
|
|
49
59
|
this._formControlObs.next(this.formControl);
|
|
50
60
|
this._syncSub.subscription = this.value$.pipe(distinctUntilChanged(isSameDateScheduleRange)).subscribe((x) => {
|
|
@@ -53,17 +63,28 @@ export class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
|
|
|
53
63
|
this._valueSub.subscription = this.dbxCalendarScheduleSelectionStore.currentDateScheduleRangeValue$.subscribe((x) => {
|
|
54
64
|
this.formControl.setValue(x);
|
|
55
65
|
});
|
|
56
|
-
const filter = this
|
|
66
|
+
const { filter, exclusions } = this;
|
|
57
67
|
if (filter != null) {
|
|
58
68
|
this._filterSub.subscription = this.dbxCalendarScheduleSelectionStore.setFilter(asObservable(filter));
|
|
59
69
|
}
|
|
70
|
+
if (exclusions != null) {
|
|
71
|
+
this._exclusionsSub.subscription = this.dbxCalendarScheduleSelectionStore.setExclusions(asObservable(exclusions));
|
|
72
|
+
}
|
|
73
|
+
if (this.initialSelectionState !== undefined) {
|
|
74
|
+
this.dbxCalendarScheduleSelectionStore.setInitialSelectionState(this.initialSelectionState);
|
|
75
|
+
}
|
|
76
|
+
if (this.computeSelectionResultRelativeToFilter != null) {
|
|
77
|
+
this.dbxCalendarScheduleSelectionStore.setComputeSelectionResultRelativeToFilter(this.computeSelectionResultRelativeToFilter);
|
|
78
|
+
}
|
|
79
|
+
// TODO: Also add ability to set min/max dates independent of the filter
|
|
60
80
|
}
|
|
61
81
|
ngOnDestroy() {
|
|
62
82
|
super.ngOnDestroy();
|
|
63
83
|
this._syncSub.destroy();
|
|
64
84
|
this._valueSub.destroy();
|
|
65
|
-
this._formControlObs.complete();
|
|
66
85
|
this._filterSub.destroy();
|
|
86
|
+
this._exclusionsSub.destroy();
|
|
87
|
+
this._formControlObs.complete();
|
|
67
88
|
}
|
|
68
89
|
}
|
|
69
90
|
DbxFormCalendarDateScheduleRangeFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormCalendarDateScheduleRangeFieldComponent, deps: [{ token: i1.CompactContextStore, optional: true }, { token: i2.DbxCalendarScheduleSelectionStore }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -89,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
89
110
|
}], ctorParameters: function () { return [{ type: i1.CompactContextStore, decorators: [{
|
|
90
111
|
type: Optional
|
|
91
112
|
}] }, { type: i2.DbxCalendarScheduleSelectionStore }, { type: i0.NgZone }]; } });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vY2FsZW5kYXIvc3JjL2xpYi9maWVsZC9zY2hlZHVsZS9jYWxlbmRhci5zY2hlZHVsZS5maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUcsT0FBTyxFQUFFLFdBQVcsRUFBcUIsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBZ0MsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDNUYsT0FBTyxFQUFFLDBEQUEwRCxFQUFFLE1BQU0saURBQWlELENBQUM7Ozs7OztBQW1CN0gsTUFBTSxPQUFPLDhDQUFrSixTQUFRLFNBQTZCO0lBYWxNLFlBQWlDLE9BQTRCLEVBQVcsaUNBQW9FLEVBQVcsTUFBYztRQUNuSyxLQUFLLEVBQUUsQ0FBQztRQUR1QixZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUFXLHNDQUFpQyxHQUFqQyxpQ0FBaUMsQ0FBbUM7UUFBVyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWjdKLGFBQVEsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7UUFDcEMsY0FBUyxHQUFHLElBQUksa0JB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U0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUU7Ozs7OztHQU1UO29CQUNELFNBQVMsRUFBRSxDQUFDLDBEQUEwRCxFQUFFLENBQUM7aUJBQzFFOzswQkFjYyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21wYWN0Q29udGV4dFN0b3JlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGVDb25maWcsIEZvcm1seUZpZWxkUHJvcHMgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyTWF5YmUsIE9ic2VydmFibGVPclZhbHVlLCBTdWJzY3JpcHRpb25PYmplY3QsIGFzT2JzZXJ2YWJsZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgRGF0ZVNjaGVkdWxlRGF0ZUZpbHRlckNvbmZpZywgaXNTYW1lRGF0ZVNjaGVkdWxlUmFuZ2UgfSBmcm9tICdAZGVyZWVrYi9kYXRlJztcbmltcG9ydCB7IERieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZSB9IGZyb20gJy4uLy4uL2NhbGVuZGFyLnNjaGVkdWxlLnNlbGVjdGlvbi5zdG9yZSc7XG5pbXBvcnQgeyBwcm92aWRlQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlSWZQYXJlbnRJc1VuYXZhaWxhYmxlIH0gZnJvbSAnLi4vLi4vY2FsZW5kYXIuc2NoZWR1bGUuc2VsZWN0aW9uLnN0b3JlLnByb3ZpZGUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZvcm1DYWxlbmRhckRhdGVTY2hlZHVsZVJhbmdlRmllbGRQcm9wcyBleHRlbmRzIFBpY2s8Rm9ybWx5RmllbGRQcm9wcywgJ2xhYmVsJyB8ICdkZXNjcmlwdGlvbicgfCAncmVhZG9ubHknIHwgJ3JlcXVpcmVkJz4ge1xuICBhcHBlYXJhbmNlPzogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZTtcbiAgaGlkZUN1c3RvbWl6ZT86IGJvb2xlYW47XG4gIGZpbHRlcj86IE9ic2VydmFibGVPclZhbHVlPE1heWJlPERhdGVTY2hlZHVsZURhdGVGaWx0ZXJDb25maWc+Pjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImRieC1zY2hlZHVsZS1zZWxlY3Rpb24tZmllbGRcIj5cbiAgICAgIDxkYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyLWRhdGUtcmFuZ2UgW3Nob3dDdXN0b21pemVdPVwic2hvd0N1c3RvbWl6ZVwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtkaXNhYmxlZF09XCJpc1JlYWRvbmx5T3JEaXNhYmxlZFwiIFtsYWJlbF09XCJsYWJlbFwiIFtoaW50XT1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgIDxkYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyLWRhdGUtZGlhbG9nLWJ1dHRvbiBjdXN0b21pemVCdXR0b24+PC9kYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyLWRhdGUtZGlhbG9nLWJ1dHRvbj5cbiAgICAgIDwvZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1jYWxlbmRhci1kYXRlLXJhbmdlPlxuICAgIDwvZGl2PlxuICBgLFxuICBwcm92aWRlcnM6IFtwcm92aWRlQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlSWZQYXJlbnRJc1VuYXZhaWxhYmxlKCldXG59KVxuZXhwb3J0IGNsYXNzIERieEZvcm1DYWxlbmRhckRhdGVTY2hlZHVsZVJhbmdlRmllbGRDb21wb25lbnQ8VCBleHRlbmRzIERieEZvcm1DYWxlbmRhckRhdGVTY2hlZHVsZVJhbmdlRmllbGRQcm9wcyA9IERieEZvcm1DYWxlbmRhckRhdGVTY2hlZHVsZVJhbmdlRmllbGRQcm9wcz4gZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPFQ+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfc3luY1N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfdmFsdWVTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgX2ZpbHRlclN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICBwcml2YXRlIF9mb3JtQ29udHJvbE9icyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8QWJzdHJhY3RDb250cm9sPj4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgZm9ybUNvbnRyb2wkID0gdGhpcy5fZm9ybUNvbnRyb2xPYnMucGlwZShmaWx0ZXJNYXliZSgpKTtcblxuICByZWFkb25seSB2YWx1ZSQgPSB0aGlzLmZvcm1Db250cm9sJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoY29udHJvbCkgPT4gY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgoY29udHJvbC52YWx1ZSkpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHJlYWRvbmx5IGNvbXBhY3Q6IENvbXBhY3RDb250ZXh0U3RvcmUsIHJlYWRvbmx5IGRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZTogRGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLCByZWFkb25seSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBnZXQgZm9ybUdyb3VwTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLmtleSBhcyBzdHJpbmc7XG4gIH1cblxuICBnZXQgZm9ybUdyb3VwKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICBnZXQgbGFiZWwoKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHM/LmxhYmVsO1xuICB9XG5cbiAgZ2V0IGRlc2NyaXB0aW9uKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IGlzUmVhZG9ubHlPckRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQ7XG4gIH1cblxuICBnZXQgc2hvd0N1c3RvbWl6ZSgpIHtcbiAgICByZXR1cm4gIXRoaXMucHJvcHMuaGlkZUN1c3RvbWl6ZTtcbiAgfVxuXG4gIGdldCBmaWx0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZmlsdGVyO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMubmV4dCh0aGlzLmZvcm1Db250cm9sKTtcblxuICAgIHRoaXMuX3N5bmNTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy52YWx1ZSQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZChpc1NhbWVEYXRlU2NoZWR1bGVSYW5nZSkpLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuc2V0RGF0ZVNjaGVkdWxlUmFuZ2VWYWx1ZSh4KTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZhbHVlU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLmN1cnJlbnREYXRlU2NoZWR1bGVSYW5nZVZhbHVlJC5zdWJzY3JpYmUoKHgpID0+IHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoeCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmZpbHRlcjtcblxuICAgIGlmIChmaWx0ZXIgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fZmlsdGVyU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLnNldEZpbHRlcihhc09ic2VydmFibGUoZmlsdGVyKSkgYXMgU3Vic2NyaXB0aW9uO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5fc3luY1N1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fdmFsdWVTdWIuZGVzdHJveSgpO1xuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZmlsdGVyU3ViLmRlc3Ryb3koKTtcbiAgfVxufVxuIl19
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vY2FsZW5kYXIvc3JjL2xpYi9maWVsZC9zY2hlZHVsZS9jYWxlbmRhci5zY2hlZHVsZS5maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUcsT0FBTyxFQUFFLFdBQVcsRUFBcUIsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBaUcsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkosT0FBTyxFQUFrQyxpQ0FBaUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzVILE9BQU8sRUFBRSwwREFBMEQsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOzs7Ozs7QUFvQjdILE1BQU0sT0FBTyw4Q0FBa0osU0FBUSxTQUE2QjtJQWNsTSxZQUFpQyxPQUE0QixFQUFXLGlDQUFvRSxFQUFXLE1BQWM7UUFDbkssS0FBSyxFQUFFLENBQUM7UUFEdUIsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFBVyxzQ0FBaUMsR0FBakMsaUNBQWlDLENBQW1DO1FBQVcsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQWI3SixhQUFRLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BDLGNBQVMsR0FBRyxJQUFJLGtC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QUcsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQWlCLENBQUM7U0FDbkk7UUFFRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxTQUFTLEVBQUU7WUFDNUMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQzdGO1FBRUQsSUFBSSxJQUFJLENBQUMsc0NBQXNDLElBQUksSUFBSSxFQUFFO1lBQ3ZELElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyx5Q0FBeUMsQ0FBQyxJQUFJLENBQUMsc0NBQXNDLENBQUMsQ0FBQztTQUMvSDtRQUVELHdFQUF3RTtJQUMxRSxDQUFDO0lBRVEsV0FBVztRQUNsQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7OzRJQWpHVSw4Q0FBOEM7Z0lBQTlDLDhDQUE4Qyx1Q0FGOUMsQ0FBQywwREFBMEQsRUFBRSxDQUFDLGlEQVAvRDs7Ozs7O0dBTVQ7NEZBR1UsOENBQThDO2tCQVYxRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRTs7Ozs7O0dBTVQ7b0JBQ0QsU0FBUyxFQUFFLENBQUMsMERBQTBELEVBQUUsQ0FBQztpQkFDMUU7OzBCQWVjLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbXBhY3RDb250ZXh0U3RvcmUgfSBmcm9tICdAZGVyZWVrYi9kYngtd2ViJztcbmltcG9ydCB7IENvbXBvbmVudCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpZWxkVHlwZUNvbmZpZywgRm9ybWx5RmllbGRQcm9wcyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgQWxsT3JOb25lU2VsZWN0aW9uLCBBcnJheU9yVmFsdWUsIE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBTdWJzY3JpcHRpb24sIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyTWF5YmUsIE9ic2VydmFibGVPclZhbHVlLCBTdWJzY3JpcHRpb25PYmplY3QsIGFzT2JzZXJ2YWJsZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgRGF0ZUJsb2NrSW5kZXgsIERhdGVPckRhdGVSYW5nZU9yRGF0ZUJsb2NrSW5kZXhPckRhdGVCbG9ja1JhbmdlLCBEYXRlU2NoZWR1bGVEYXRlRmlsdGVyQ29uZmlnLCBpc1NhbWVEYXRlU2NoZWR1bGVSYW5nZSB9IGZyb20gJ0BkZXJlZWtiL2RhdGUnO1xuaW1wb3J0IHsgQ2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0YXRlLCBEYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUgfSBmcm9tICcuLi8uLi9jYWxlbmRhci5zY2hlZHVsZS5zZWxlY3Rpb24uc3RvcmUnO1xuaW1wb3J0IHsgcHJvdmlkZUNhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZUlmUGFyZW50SXNVbmF2YWlsYWJsZSB9IGZyb20gJy4uLy4uL2NhbGVuZGFyLnNjaGVkdWxlLnNlbGVjdGlvbi5zdG9yZS5wcm92aWRlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGb3JtQ2FsZW5kYXJEYXRlU2NoZWR1bGVSYW5nZUZpZWxkUHJvcHMgZXh0ZW5kcyBQaWNrPEZvcm1seUZpZWxkUHJvcHMsICdsYWJlbCcgfCAnZGVzY3JpcHRpb24nIHwgJ3JlYWRvbmx5JyB8ICdyZXF1aXJlZCc+LCBQaWNrPENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdGF0ZSwgJ2NvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyJyB8ICdpbml0aWFsU2VsZWN0aW9uU3RhdGUnPiB7XG4gIGFwcGVhcmFuY2U/OiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlO1xuICBoaWRlQ3VzdG9taXplPzogYm9vbGVhbjtcbiAgZmlsdGVyPzogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8RGF0ZVNjaGVkdWxlRGF0ZUZpbHRlckNvbmZpZz4+O1xuICBleGNsdXNpb25zPzogT2JzZXJ2YWJsZU9yVmFsdWU8TWF5YmU8QXJyYXlPclZhbHVlPERhdGVPckRhdGVSYW5nZU9yRGF0ZUJsb2NrSW5kZXhPckRhdGVCbG9ja1JhbmdlPj4+O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LXNjaGVkdWxlLXNlbGVjdGlvbi1maWVsZFwiPlxuICAgICAgPGRieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1yYW5nZSBbc2hvd0N1c3RvbWl6ZV09XCJzaG93Q3VzdG9taXplXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW2Rpc2FibGVkXT1cImlzUmVhZG9ubHlPckRpc2FibGVkXCIgW2xhYmVsXT1cImxhYmVsXCIgW2hpbnRdPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgPGRieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1kaWFsb2ctYnV0dG9uIGN1c3RvbWl6ZUJ1dHRvbj48L2RieC1zY2hlZHVsZS1zZWxlY3Rpb24tY2FsZW5kYXItZGF0ZS1kaWFsb2ctYnV0dG9uPlxuICAgICAgPC9kYngtc2NoZWR1bGUtc2VsZWN0aW9uLWNhbGVuZGFyLWRhdGUtcmFuZ2U+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHByb3ZpZGVyczogW3Byb3ZpZGVDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmVJZlBhcmVudElzVW5hdmFpbGFibGUoKV1cbn0pXG5leHBvcnQgY2xhc3MgRGJ4Rm9ybUNhbGVuZGFyRGF0ZVNjaGVkdWxlUmFuZ2VGaWVsZENvbXBvbmVudDxUIGV4dGVuZHMgRGJ4Rm9ybUNhbGVuZGFyRGF0ZVNjaGVkdWxlUmFuZ2VGaWVsZFByb3BzID0gRGJ4Rm9ybUNhbGVuZGFyRGF0ZVNjaGVkdWxlUmFuZ2VGaWVsZFByb3BzPiBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc8VD4+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9zeW5jU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF92YWx1ZVN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfZmlsdGVyU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIF9leGNsdXNpb25zU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHByaXZhdGUgX2Zvcm1Db250cm9sT2JzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBYnN0cmFjdENvbnRyb2w+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBmb3JtQ29udHJvbCQgPSB0aGlzLl9mb3JtQ29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHJlYWRvbmx5IHZhbHVlJCA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcmVhZG9ubHkgY29tcGFjdDogQ29tcGFjdENvbnRleHRTdG9yZSwgcmVhZG9ubHkgZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlOiBEYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUsIHJlYWRvbmx5IG5nWm9uZTogTmdab25lKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdldCBmb3JtR3JvdXBOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQua2V5IGFzIHN0cmluZztcbiAgfVxuXG4gIGdldCBmb3JtR3JvdXAoKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtIGFzIEZvcm1Hcm91cDtcbiAgfVxuXG4gIGdldCBsYWJlbCgpOiBNYXliZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5wcm9wcz8ubGFiZWw7XG4gIH1cblxuICBnZXQgZGVzY3JpcHRpb24oKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZGVzY3JpcHRpb247XG4gIH1cblxuICBnZXQgaXNSZWFkb25seU9yRGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZDtcbiAgfVxuXG4gIGdldCBzaG93Q3VzdG9taXplKCkge1xuICAgIHJldHVybiAhdGhpcy5wcm9wcy5oaWRlQ3VzdG9taXplO1xuICB9XG5cbiAgZ2V0IGZpbHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5maWx0ZXI7XG4gIH1cblxuICBnZXQgZXhjbHVzaW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5leGNsdXNpb25zO1xuICB9XG5cbiAgZ2V0IGluaXRpYWxTZWxlY3Rpb25TdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5pbml0aWFsU2VsZWN0aW9uU3RhdGU7XG4gIH1cblxuICBnZXQgY29tcHV0ZVNlbGVjdGlvblJlc3VsdFJlbGF0aXZlVG9GaWx0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY29tcHV0ZVNlbGVjdGlvblJlc3VsdFJlbGF0aXZlVG9GaWx0ZXI7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuXG4gICAgdGhpcy5fc3luY1N1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLnZhbHVlJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKGlzU2FtZURhdGVTY2hlZHVsZVJhbmdlKSkuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zZXREYXRlU2NoZWR1bGVSYW5nZVZhbHVlKHgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fdmFsdWVTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuY3VycmVudERhdGVTY2hlZHVsZVJhbmdlVmFsdWUkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh4KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHsgZmlsdGVyLCBleGNsdXNpb25zIH0gPSB0aGlzO1xuXG4gICAgaWYgKGZpbHRlciAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9maWx0ZXJTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5kYnhDYWxlbmRhclNjaGVkdWxlU2VsZWN0aW9uU3RvcmUuc2V0RmlsdGVyKGFzT2JzZXJ2YWJsZShmaWx0ZXIpKSBhcyBTdWJzY3JpcHRpb247XG4gICAgfVxuXG4gICAgaWYgKGV4Y2x1c2lvbnMgIT0gbnVsbCkge1xuICAgICAgdGhpcy5fZXhjbHVzaW9uc1N1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zZXRFeGNsdXNpb25zKGFzT2JzZXJ2YWJsZShleGNsdXNpb25zKSkgYXMgU3Vic2NyaXB0aW9uO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmluaXRpYWxTZWxlY3Rpb25TdGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmRieENhbGVuZGFyU2NoZWR1bGVTZWxlY3Rpb25TdG9yZS5zZXRJbml0aWFsU2VsZWN0aW9uU3RhdGUodGhpcy5pbml0aWFsU2VsZWN0aW9uU3RhdGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZGJ4Q2FsZW5kYXJTY2hlZHVsZVNlbGVjdGlvblN0b3JlLnNldENvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyKHRoaXMuY29tcHV0ZVNlbGVjdGlvblJlc3VsdFJlbGF0aXZlVG9GaWx0ZXIpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IEFsc28gYWRkIGFiaWxpdHkgdG8gc2V0IG1pbi9tYXggZGF0ZXMgaW5kZXBlbmRlbnQgb2YgdGhlIGZpbHRlclxuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9zeW5jU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl92YWx1ZVN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fZmlsdGVyU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9leGNsdXNpb25zU3ViLmRlc3Ryb3koKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { formlyField, propsAndConfigForFieldConfig } from '@dereekb/dbx-form';
|
|
2
2
|
export function dateScheduleRangeField(config = {}) {
|
|
3
|
-
const { key = 'schedule', filter } = config;
|
|
3
|
+
const { key = 'schedule', filter, initialSelectionState, computeSelectionResultRelativeToFilter, exclusions } = config;
|
|
4
4
|
const fieldConfig = {
|
|
5
5
|
...formlyField({
|
|
6
6
|
key,
|
|
7
7
|
type: 'date-schedule-range',
|
|
8
8
|
...propsAndConfigForFieldConfig(config, {
|
|
9
9
|
label: config.label ?? 'Schedule',
|
|
10
|
-
filter
|
|
10
|
+
filter,
|
|
11
|
+
computeSelectionResultRelativeToFilter,
|
|
12
|
+
initialSelectionState,
|
|
13
|
+
exclusions
|
|
11
14
|
})
|
|
12
15
|
})
|
|
13
16
|
};
|
|
14
17
|
return fieldConfig;
|
|
15
18
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9jYWxlbmRhci9zcmMvbGliL2ZpZWxkL3NjaGVkdWxlL2NhbGVuZGFyLnNjaGVkdWxlLmZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUMsV0FBVyxFQUFzQiw0QkFBNEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBTXZJLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxTQUF1QyxFQUFFO0lBQzlFLE1BQU0sRUFBRSxHQUFHLEdBQUcsVUFBVSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxzQ0FBc0MsRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDdkgsTUFBTSxXQUFXLEdBQXNCO1FBQ3JDLEdBQUcsV0FBVyxDQUFDO1lBQ2IsR0FBRztZQUNILElBQUksRUFBRSxxQkFBcUI7WUFDM0IsR0FBRyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3RDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxJQUFJLFVBQVU7Z0JBQ2pDLE1BQU07Z0JBQ04sc0NBQXNDO2dCQUN0QyxxQkFBcUI7Z0JBQ3JCLFVBQVU7YUFDWCxDQUFDO1NBQ0gsQ0FBQztLQUNILENBQUM7SUFFRixPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgRmllbGRDb25maWcsIGZvcm1seUZpZWxkLCBMYWJlbGVkRmllbGRDb25maWcsIHByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcgfSBmcm9tICdAZGVyZWVrYi9kYngtZm9ybSc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRGJ4Rm9ybUNhbGVuZGFyRGF0ZVNjaGVkdWxlUmFuZ2VGaWVsZFByb3BzIH0gZnJvbSAnLi9jYWxlbmRhci5zY2hlZHVsZS5maWVsZC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVTY2hlZHVsZVJhbmdlRmllbGRDb25maWcgZXh0ZW5kcyBPbWl0PExhYmVsZWRGaWVsZENvbmZpZywgJ2tleScgfCAncGxhY2Vob2xkZXInPiwgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgUGFydGlhbDxGaWVsZENvbmZpZz4sIERieEZvcm1DYWxlbmRhckRhdGVTY2hlZHVsZVJhbmdlRmllbGRQcm9wcyB7fVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVNjaGVkdWxlUmFuZ2VGaWVsZChjb25maWc6IERhdGVTY2hlZHVsZVJhbmdlRmllbGRDb25maWcgPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyBrZXkgPSAnc2NoZWR1bGUnLCBmaWx0ZXIsIGluaXRpYWxTZWxlY3Rpb25TdGF0ZSwgY29tcHV0ZVNlbGVjdGlvblJlc3VsdFJlbGF0aXZlVG9GaWx0ZXIsIGV4Y2x1c2lvbnMgfSA9IGNvbmZpZztcbiAgY29uc3QgZmllbGRDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgIC4uLmZvcm1seUZpZWxkKHtcbiAgICAgIGtleSxcbiAgICAgIHR5cGU6ICdkYXRlLXNjaGVkdWxlLXJhbmdlJyxcbiAgICAgIC4uLnByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcoY29uZmlnLCB7XG4gICAgICAgIGxhYmVsOiBjb25maWcubGFiZWwgPz8gJ1NjaGVkdWxlJyxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBjb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcixcbiAgICAgICAgaW5pdGlhbFNlbGVjdGlvblN0YXRlLFxuICAgICAgICBleGNsdXNpb25zXG4gICAgICB9KVxuICAgIH0pXG4gIH07XG5cbiAgcmV0dXJuIGZpZWxkQ29uZmlnO1xufVxuIl19
|
|
@@ -5,10 +5,10 @@ import { Injectable, SkipSelf, Directive, Injector, Optional, Component, Inject,
|
|
|
5
5
|
import { FieldType } from '@ngx-formly/material';
|
|
6
6
|
import { map, distinctUntilChanged, shareReplay, BehaviorSubject, switchMap, of, startWith, filter, throttleTime, first } from 'rxjs';
|
|
7
7
|
import { filterMaybe, SubscriptionObject, asObservable } from '@dereekb/rxjs';
|
|
8
|
-
import { DateScheduleDayCode, expandDateScheduleDayCodesToDayOfWeekSet, dateTimingRelativeIndexFactory, dateBlockDayOfWeekFactory, isSameDate, isSameDateRange, isSameDateScheduleRange,
|
|
9
|
-
import { setsAreEquivalent, iterableToArray, toggleInSet, addToSet, isIndexNumberInIndexRangeFunction,
|
|
8
|
+
import { DateScheduleDayCode, expandDateScheduleDayCodesToDayOfWeekSet, dateTimingRelativeIndexFactory, dateBlockDayOfWeekFactory, findMaxDate, findMinDate, isSameDate, isSameDateRange, isSameDateScheduleRange, isSameDateDay, dateTimingRelativeIndexArrayFactory, copyDateScheduleDateFilterConfig, dateScheduleDateFilter, expandDateScheduleDayCodes, isDateInDateRangeFunction, isDateWithinDateBlockRangeFunction, dateScheduleEncodedWeek, dateBlockTimingDateFactory, enabledDaysFromDateScheduleDayCodes, dateScheduleDayCodesFromEnabledDays, formatToMonthDayString } from '@dereekb/date';
|
|
9
|
+
import { setsAreEquivalent, unique, mergeArrays, range, iterableToArray, toggleInSet, addToSet, isIndexNumberInIndexRangeFunction, minAndMaxNumber, randomNumberFactory, getDaysOfWeekNames } from '@dereekb/util';
|
|
10
10
|
import { ComponentStore } from '@ngrx/component-store';
|
|
11
|
-
import { startOfDay
|
|
11
|
+
import { startOfDay } from 'date-fns';
|
|
12
12
|
import * as i1$1 from '@dereekb/dbx-web';
|
|
13
13
|
import { AbstractPopoverDirective, AbstractDialogDirective, DbxActionModule, DbxButtonModule, DbxDialogInteractionModule, DbxPopoverInteractionModule, DbxTextModule } from '@dereekb/dbx-web';
|
|
14
14
|
import * as i3 from '@angular/forms';
|
|
@@ -37,10 +37,13 @@ import { FlexLayoutModule } from '@angular/flex-layout';
|
|
|
37
37
|
|
|
38
38
|
function dateScheduleRangeField(config = {}) {
|
|
39
39
|
var _a;
|
|
40
|
-
const { key = 'schedule', filter } = config;
|
|
40
|
+
const { key = 'schedule', filter, initialSelectionState, computeSelectionResultRelativeToFilter, exclusions } = config;
|
|
41
41
|
const fieldConfig = Object.assign({}, formlyField(Object.assign({ key, type: 'date-schedule-range' }, propsAndConfigForFieldConfig(config, {
|
|
42
42
|
label: (_a = config.label) !== null && _a !== void 0 ? _a : 'Schedule',
|
|
43
|
-
filter
|
|
43
|
+
filter,
|
|
44
|
+
computeSelectionResultRelativeToFilter,
|
|
45
|
+
initialSelectionState,
|
|
46
|
+
exclusions
|
|
44
47
|
}))));
|
|
45
48
|
return fieldConfig;
|
|
46
49
|
}
|
|
@@ -91,11 +94,26 @@ function initialCalendarScheduleSelectionState() {
|
|
|
91
94
|
indexDayOfWeek,
|
|
92
95
|
isEnabledFilterDay: () => true,
|
|
93
96
|
isEnabledDay: () => false,
|
|
94
|
-
minDate:
|
|
95
|
-
maxDate:
|
|
97
|
+
minDate: null,
|
|
98
|
+
maxDate: null,
|
|
99
|
+
computeSelectionResultRelativeToFilter: true,
|
|
96
100
|
cellContentFactory: defaultCalendarScheduleSelectionCellContentFactory
|
|
97
101
|
};
|
|
98
102
|
}
|
|
103
|
+
function calendarScheduleMinDate(x) {
|
|
104
|
+
var _a;
|
|
105
|
+
return findMaxDate([(_a = x.filter) === null || _a === void 0 ? void 0 : _a.start, x.minDate]);
|
|
106
|
+
}
|
|
107
|
+
function calendarScheduleMaxDate(x) {
|
|
108
|
+
var _a;
|
|
109
|
+
return findMinDate([(_a = x.filter) === null || _a === void 0 ? void 0 : _a.end, x.maxDate]);
|
|
110
|
+
}
|
|
111
|
+
function calendarScheduleMinAndMaxDate(x) {
|
|
112
|
+
return {
|
|
113
|
+
minDate: calendarScheduleMinDate(x),
|
|
114
|
+
maxDate: calendarScheduleMaxDate(x)
|
|
115
|
+
};
|
|
116
|
+
}
|
|
99
117
|
class DbxCalendarScheduleSelectionStore extends ComponentStore {
|
|
100
118
|
constructor() {
|
|
101
119
|
super(initialCalendarScheduleSelectionState());
|
|
@@ -116,18 +134,22 @@ class DbxCalendarScheduleSelectionStore extends ComponentStore {
|
|
|
116
134
|
this.isEnabledFilterDayFunction$ = this.state$.pipe(map((x) => x.isEnabledFilterDay), shareReplay(1));
|
|
117
135
|
this.isEnabledDayFunction$ = this.state$.pipe(map((x) => x.isEnabledDay), shareReplay(1));
|
|
118
136
|
this.currentDateRange$ = this.state$.pipe(map(computeCalendarScheduleSelectionRange), distinctUntilChanged((a, b) => isSameDateRange(a, b)), shareReplay(1));
|
|
137
|
+
this.computeSelectionResultRelativeToFilter$ = this.state$.pipe(map((x) => x.computeSelectionResultRelativeToFilter), shareReplay(1));
|
|
138
|
+
this.startBeingUsedFromFilter$ = this.state$.pipe(map((x) => { var _a; return x.computeSelectionResultRelativeToFilter && ((_a = x.filter) === null || _a === void 0 ? void 0 : _a.start) != null; }), shareReplay(1));
|
|
119
139
|
this.dateRange$ = this.currentDateRange$.pipe(filterMaybe(), shareReplay(1));
|
|
120
140
|
this.scheduleDays$ = this.state$.pipe(map((x) => x.scheduleDays), distinctUntilChanged(setsAreEquivalent), shareReplay(1));
|
|
121
141
|
this.currentSelectionValue$ = this.state$.pipe(map((x) => x.currentSelectionValue), shareReplay(1));
|
|
122
142
|
this.selectionValue$ = this.currentSelectionValue$.pipe(filterMaybe(), shareReplay(1));
|
|
123
143
|
this.currentDateScheduleRangeValue$ = this.currentSelectionValue$.pipe(map((x) => x === null || x === void 0 ? void 0 : x.dateScheduleRange), distinctUntilChanged(isSameDateScheduleRange), shareReplay(1));
|
|
124
144
|
this.dateScheduleRangeValue$ = this.currentDateScheduleRangeValue$.pipe(filterMaybe(), shareReplay(1));
|
|
125
|
-
this.minDate$ = this.state$.pipe(map(
|
|
126
|
-
this.maxDate$ = this.state$.pipe(map(
|
|
145
|
+
this.minDate$ = this.state$.pipe(map(calendarScheduleMinDate), distinctUntilChanged(isSameDateDay), shareReplay(1));
|
|
146
|
+
this.maxDate$ = this.state$.pipe(map(calendarScheduleMaxDate), distinctUntilChanged(isSameDateDay), shareReplay(1));
|
|
127
147
|
this.cellContentFactory$ = this.state$.pipe(map((x) => x.cellContentFactory), distinctUntilChanged(), shareReplay(1));
|
|
128
148
|
this.isCustomized$ = this.state$.pipe(map((x) => x.selectedIndexes.size > 0), distinctUntilChanged(), shareReplay(1));
|
|
129
149
|
// MARK: State Changes
|
|
130
150
|
this.setFilter = this.updater((state, filter) => updateStateWithFilter(state, filter));
|
|
151
|
+
this.setExclusions = this.updater((state, exclusions) => updateStateWithExclusions(state, exclusions));
|
|
152
|
+
this.setComputeSelectionResultRelativeToFilter = this.updater((state, computeSelectionResultRelativeToFilter) => updateStateWithComputeSelectionResultRelativeToFilter(state, computeSelectionResultRelativeToFilter));
|
|
131
153
|
this.clearFilter = this.updater((state) => updateStateWithFilter(state, undefined));
|
|
132
154
|
this.setTimezone = this.updater((state, timezone) => (Object.assign(Object.assign({}, state), { timezone })));
|
|
133
155
|
this.setInputRange = this.updater((state, range) => updateStateWithChangedRange(state, range));
|
|
@@ -135,6 +157,8 @@ class DbxCalendarScheduleSelectionStore extends ComponentStore {
|
|
|
135
157
|
this.addSelectedDates = this.updater((state, add) => updateStateWithChangedDates(state, { add }));
|
|
136
158
|
this.removeSelectedDates = this.updater((state, remove) => updateStateWithChangedDates(state, { remove }));
|
|
137
159
|
this.setSelectedDates = this.updater((state, set) => updateStateWithChangedDates(state, { set }));
|
|
160
|
+
this.selectAllDates = this.updater((state, selectAll = 'all') => updateStateWithChangedDates(state, { selectAll }));
|
|
161
|
+
this.setInitialSelectionState = this.updater((state, initialSelectionState) => updateStateWithInitialSelectionState(state, initialSelectionState));
|
|
138
162
|
this.setScheduleDays = this.updater((state, scheduleDays) => updateStateWithChangedScheduleDays(state, scheduleDays));
|
|
139
163
|
this.setAllowAllScheduleDays = this.updater((state) => updateStateWithChangedScheduleDays(state, null));
|
|
140
164
|
this.setDateScheduleRangeValue = this.updater((state, value) => updateStateWithDateScheduleRangeValue(state, value));
|
|
@@ -146,12 +170,64 @@ DbxCalendarScheduleSelectionStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersi
|
|
|
146
170
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxCalendarScheduleSelectionStore, decorators: [{
|
|
147
171
|
type: Injectable
|
|
148
172
|
}], ctorParameters: function () { return []; } });
|
|
149
|
-
function
|
|
173
|
+
function updateStateWithInitialSelectionState(state, initialSelectionState) {
|
|
174
|
+
const { selectedIndexes } = state;
|
|
175
|
+
if (selectedIndexes.size === 0 && initialSelectionState === 'all') {
|
|
176
|
+
state = updateStateWithChangedDates(state, { selectAll: initialSelectionState });
|
|
177
|
+
}
|
|
178
|
+
return Object.assign(Object.assign({}, state), { initialSelectionState });
|
|
179
|
+
}
|
|
180
|
+
function updateStateWithComputeSelectionResultRelativeToFilter(currentState, computeSelectionResultRelativeToFilter) {
|
|
181
|
+
let state = Object.assign(Object.assign({}, currentState), { computeSelectionResultRelativeToFilter });
|
|
182
|
+
if (Boolean(currentState.computeSelectionResultRelativeToFilter) !== Boolean(computeSelectionResultRelativeToFilter)) {
|
|
183
|
+
state = updateStateWithChangedDates(state, {}); // recalculate if change occurs as it will affect the output value
|
|
184
|
+
}
|
|
185
|
+
return state;
|
|
186
|
+
}
|
|
187
|
+
function updateStateWithExclusions(state, inputExclusions) {
|
|
188
|
+
let computedExclusions;
|
|
189
|
+
if (inputExclusions) {
|
|
190
|
+
const { indexFactory } = state;
|
|
191
|
+
const indexArrayFactory = dateTimingRelativeIndexArrayFactory(indexFactory);
|
|
192
|
+
computedExclusions = indexArrayFactory(inputExclusions);
|
|
193
|
+
}
|
|
194
|
+
state = Object.assign(Object.assign({}, state), { inputExclusions, computedExclusions });
|
|
195
|
+
return updateStateWithFilter(state, state.filter);
|
|
196
|
+
}
|
|
197
|
+
function updateStateWithFilter(state, inputFilter) {
|
|
198
|
+
const { computedExclusions: exclusions } = state;
|
|
150
199
|
let isEnabledFilterDay = () => true;
|
|
151
|
-
|
|
152
|
-
|
|
200
|
+
let filter = null;
|
|
201
|
+
if (inputFilter || (exclusions === null || exclusions === void 0 ? void 0 : exclusions.length)) {
|
|
202
|
+
let enabledFilter;
|
|
203
|
+
if (inputFilter) {
|
|
204
|
+
filter = copyDateScheduleDateFilterConfig(inputFilter); // copy filter
|
|
205
|
+
if (exclusions === null || exclusions === void 0 ? void 0 : exclusions.length) {
|
|
206
|
+
enabledFilter = Object.assign(Object.assign({}, filter), { ex: unique(mergeArrays([filter.ex, exclusions])) });
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
enabledFilter = filter;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
enabledFilter = {
|
|
214
|
+
w: '89',
|
|
215
|
+
ex: exclusions
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
isEnabledFilterDay = dateScheduleDateFilter(enabledFilter);
|
|
153
219
|
}
|
|
154
|
-
|
|
220
|
+
state = Object.assign(Object.assign({}, state), { filter, isEnabledFilterDay });
|
|
221
|
+
// attempt to re-apply the initial selection state once filter is applied
|
|
222
|
+
if (state.initialSelectionState) {
|
|
223
|
+
state = updateStateWithInitialSelectionState(state, state.initialSelectionState);
|
|
224
|
+
}
|
|
225
|
+
// re-calculate the selection given the filter
|
|
226
|
+
const { inputStart, inputEnd } = state;
|
|
227
|
+
if (inputStart && inputEnd) {
|
|
228
|
+
state = updateStateWithChangedRange(state, { inputStart, inputEnd });
|
|
229
|
+
}
|
|
230
|
+
return state;
|
|
155
231
|
}
|
|
156
232
|
function updateStateWithDateScheduleRangeValue(state, change) {
|
|
157
233
|
var _a;
|
|
@@ -162,7 +238,7 @@ function updateStateWithDateScheduleRangeValue(state, change) {
|
|
|
162
238
|
else {
|
|
163
239
|
if (change != null) {
|
|
164
240
|
const nextState = Object.assign(Object.assign({}, state), { inputStart: change.start, inputEnd: change.end, selectedIndexes: new Set(change.ex) });
|
|
165
|
-
return updateStateWithChangedScheduleDays(finalizeNewCalendarScheduleSelectionState(nextState),
|
|
241
|
+
return updateStateWithChangedScheduleDays(finalizeNewCalendarScheduleSelectionState(nextState), expandDateScheduleDayCodes(change.w));
|
|
166
242
|
}
|
|
167
243
|
else {
|
|
168
244
|
return noSelectionCalendarScheduleSelectionState(state); // clear selection, retain disabled days
|
|
@@ -182,10 +258,26 @@ function updateStateWithChangedScheduleDays(state, change) {
|
|
|
182
258
|
}
|
|
183
259
|
}
|
|
184
260
|
function updateStateWithChangedDates(state, change) {
|
|
261
|
+
var _a;
|
|
185
262
|
const { indexFactory, allowedDaysOfWeek, indexDayOfWeek } = state;
|
|
263
|
+
const { minDate, maxDate } = calendarScheduleMinAndMaxDate(state);
|
|
186
264
|
let selectedIndexes;
|
|
187
|
-
if (change.set) {
|
|
188
|
-
|
|
265
|
+
if (change.reset || change.selectAll != null || change.set) {
|
|
266
|
+
let set = (_a = change.set) !== null && _a !== void 0 ? _a : [];
|
|
267
|
+
let selectAll = change.reset === true ? state.initialSelectionState : change.selectAll;
|
|
268
|
+
switch (selectAll) {
|
|
269
|
+
case 'all':
|
|
270
|
+
if (minDate != null && maxDate != null) {
|
|
271
|
+
const minIndex = indexFactory(minDate);
|
|
272
|
+
const maxIndex = indexFactory(maxDate);
|
|
273
|
+
set = range(minIndex, maxIndex);
|
|
274
|
+
}
|
|
275
|
+
break;
|
|
276
|
+
case 'none':
|
|
277
|
+
set = [];
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
selectedIndexes = new Set(iterableToArray(set).map(indexFactory));
|
|
189
281
|
}
|
|
190
282
|
else {
|
|
191
283
|
selectedIndexes = new Set(state.selectedIndexes);
|
|
@@ -211,22 +303,22 @@ function updateStateWithChangedDates(state, change) {
|
|
|
211
303
|
}
|
|
212
304
|
else {
|
|
213
305
|
// no selected days
|
|
214
|
-
return noSelectionCalendarScheduleSelectionState(
|
|
306
|
+
return noSelectionCalendarScheduleSelectionState(nextState);
|
|
215
307
|
}
|
|
216
308
|
}
|
|
217
309
|
function noSelectionCalendarScheduleSelectionState(state) {
|
|
218
310
|
return finalizeNewCalendarScheduleSelectionState(Object.assign(Object.assign({}, state), { selectedIndexes: new Set(), inputStart: null, inputEnd: null }));
|
|
219
311
|
}
|
|
220
312
|
function updateStateWithChangedRange(state, change) {
|
|
221
|
-
const { inputStart: currentInputStart, inputEnd: currentInputEnd, indexFactory, minDate, maxDate } = state;
|
|
222
|
-
|
|
223
|
-
|
|
313
|
+
const { inputStart: currentInputStart, inputEnd: currentInputEnd, indexFactory, minDate, maxDate, filter, computeSelectionResultRelativeToFilter } = state;
|
|
314
|
+
let inputStart = startOfDay(change.inputStart);
|
|
315
|
+
let inputEnd = startOfDay(change.inputEnd);
|
|
224
316
|
const isValidRange = minDate != null || maxDate != null ? isDateInDateRangeFunction({ start: minDate !== null && minDate !== void 0 ? minDate : undefined, end: maxDate !== null && maxDate !== void 0 ? maxDate : undefined }) : () => true;
|
|
225
317
|
if (!isValidRange(inputStart) || !isValidRange(inputEnd) || (isSameDateDay(inputStart, currentInputStart) && isSameDateDay(inputEnd, currentInputEnd))) {
|
|
226
318
|
return state; // if no change, return the current state.
|
|
227
319
|
}
|
|
228
320
|
// retain all indexes that are within the new range
|
|
229
|
-
const minIndex = indexFactory(inputStart);
|
|
321
|
+
const minIndex = computeSelectionResultRelativeToFilter && (filter === null || filter === void 0 ? void 0 : filter.start) ? indexFactory(filter === null || filter === void 0 ? void 0 : filter.start) : indexFactory(inputStart);
|
|
230
322
|
const maxIndex = indexFactory(inputEnd) + 1;
|
|
231
323
|
const currentIndexes = Array.from(state.selectedIndexes);
|
|
232
324
|
const isInCurrentRange = isIndexNumberInIndexRangeFunction({ minIndex, maxIndex });
|
|
@@ -259,19 +351,30 @@ function isEnabledDayInCalendarScheduleSelectionState(state) {
|
|
|
259
351
|
};
|
|
260
352
|
}
|
|
261
353
|
function computeScheduleSelectionValue(state) {
|
|
262
|
-
const { scheduleDays, allowedDaysOfWeek, indexDayOfWeek } = state;
|
|
354
|
+
const { indexFactory, scheduleDays, allowedDaysOfWeek, indexDayOfWeek, computeSelectionResultRelativeToFilter, filter } = state;
|
|
263
355
|
const rangeAndExclusion = computeScheduleSelectionRangeAndExclusion(state);
|
|
264
356
|
if (rangeAndExclusion == null) {
|
|
265
357
|
return null;
|
|
266
358
|
}
|
|
267
|
-
const { start, end, excluded, dateBlockRange } = rangeAndExclusion;
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
359
|
+
const { start: rangeStart, end, excluded: allExcluded, dateBlockRange } = rangeAndExclusion;
|
|
360
|
+
let filterOffsetExcludedRange = [];
|
|
361
|
+
let indexOffset = dateBlockRange.i;
|
|
362
|
+
let start = rangeStart;
|
|
363
|
+
// If computeSelectionResultRelativeToFilter is true, then we need to offset the values to be relative to that start.
|
|
364
|
+
if (computeSelectionResultRelativeToFilter && (filter === null || filter === void 0 ? void 0 : filter.start)) {
|
|
365
|
+
start = filter.start;
|
|
366
|
+
const filterStartIndexOffset = indexFactory(rangeStart) - indexFactory(start);
|
|
367
|
+
filterOffsetExcludedRange = range(0, filterStartIndexOffset);
|
|
368
|
+
indexOffset = indexOffset - filterStartIndexOffset;
|
|
369
|
+
}
|
|
370
|
+
const excluded = computeSelectionResultRelativeToFilter
|
|
371
|
+
? allExcluded.filter((x) => {
|
|
372
|
+
const isExcludedIndex = allowedDaysOfWeek.has(indexDayOfWeek(x)); // ???
|
|
373
|
+
return isExcludedIndex;
|
|
374
|
+
})
|
|
375
|
+
: allExcluded;
|
|
376
|
+
const offsetExcluded = excluded.map((x) => x - indexOffset); // set to the proper offset
|
|
377
|
+
const ex = [...filterOffsetExcludedRange, ...offsetExcluded];
|
|
275
378
|
const w = dateScheduleEncodedWeek(scheduleDays);
|
|
276
379
|
const d = []; // "included" blocks are never used/calculated.
|
|
277
380
|
const dateScheduleRange = {
|
|
@@ -287,7 +390,7 @@ function computeScheduleSelectionValue(state) {
|
|
|
287
390
|
};
|
|
288
391
|
}
|
|
289
392
|
function computeScheduleSelectionRangeAndExclusion(state) {
|
|
290
|
-
const { isEnabledDay } = state;
|
|
393
|
+
const { isEnabledDay, isEnabledFilterDay } = state;
|
|
291
394
|
const dateFactory = dateBlockTimingDateFactory(state);
|
|
292
395
|
const dateBlockRange = computeCalendarScheduleSelectionDateBlockRange(state);
|
|
293
396
|
if (dateBlockRange == null) {
|
|
@@ -296,7 +399,7 @@ function computeScheduleSelectionRangeAndExclusion(state) {
|
|
|
296
399
|
const start = dateFactory(dateBlockRange.i);
|
|
297
400
|
const end = dateFactory(dateBlockRange.to);
|
|
298
401
|
const excluded = range(dateBlockRange.i, dateBlockRange.to + 1).filter((x) => {
|
|
299
|
-
const isExcludedIndex = !isEnabledDay(x);
|
|
402
|
+
const isExcludedIndex = !isEnabledDay(x) || !isEnabledFilterDay(x);
|
|
300
403
|
return isExcludedIndex;
|
|
301
404
|
});
|
|
302
405
|
const result = {
|
|
@@ -310,12 +413,8 @@ function computeScheduleSelectionRangeAndExclusion(state) {
|
|
|
310
413
|
function computeCalendarScheduleSelectionRange(state) {
|
|
311
414
|
const dateFactory = dateBlockTimingDateFactory(state);
|
|
312
415
|
const dateBlockRange = computeCalendarScheduleSelectionDateBlockRange(state);
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
}
|
|
316
|
-
else {
|
|
317
|
-
return undefined;
|
|
318
|
-
}
|
|
416
|
+
const dateRange = dateBlockRange != null ? { start: dateFactory(dateBlockRange.i), end: dateFactory(dateBlockRange.to) } : undefined;
|
|
417
|
+
return dateRange;
|
|
319
418
|
}
|
|
320
419
|
function computeCalendarScheduleSelectionDateBlockRange(state) {
|
|
321
420
|
const { indexFactory, inputStart, inputEnd, allowedDaysOfWeek, indexDayOfWeek, isEnabledDay, isEnabledFilterDay } = state;
|
|
@@ -823,6 +922,7 @@ class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
|
|
|
823
922
|
this._syncSub = new SubscriptionObject();
|
|
824
923
|
this._valueSub = new SubscriptionObject();
|
|
825
924
|
this._filterSub = new SubscriptionObject();
|
|
925
|
+
this._exclusionsSub = new SubscriptionObject();
|
|
826
926
|
this._formControlObs = new BehaviorSubject(undefined);
|
|
827
927
|
this.formControl$ = this._formControlObs.pipe(filterMaybe());
|
|
828
928
|
this.value$ = this.formControl$.pipe(switchMap((control) => control.valueChanges.pipe(startWith(control.value))), shareReplay(1));
|
|
@@ -849,6 +949,15 @@ class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
|
|
|
849
949
|
get filter() {
|
|
850
950
|
return this.props.filter;
|
|
851
951
|
}
|
|
952
|
+
get exclusions() {
|
|
953
|
+
return this.props.exclusions;
|
|
954
|
+
}
|
|
955
|
+
get initialSelectionState() {
|
|
956
|
+
return this.props.initialSelectionState;
|
|
957
|
+
}
|
|
958
|
+
get computeSelectionResultRelativeToFilter() {
|
|
959
|
+
return this.props.computeSelectionResultRelativeToFilter;
|
|
960
|
+
}
|
|
852
961
|
ngOnInit() {
|
|
853
962
|
this._formControlObs.next(this.formControl);
|
|
854
963
|
this._syncSub.subscription = this.value$.pipe(distinctUntilChanged(isSameDateScheduleRange)).subscribe((x) => {
|
|
@@ -857,17 +966,28 @@ class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
|
|
|
857
966
|
this._valueSub.subscription = this.dbxCalendarScheduleSelectionStore.currentDateScheduleRangeValue$.subscribe((x) => {
|
|
858
967
|
this.formControl.setValue(x);
|
|
859
968
|
});
|
|
860
|
-
const filter = this
|
|
969
|
+
const { filter, exclusions } = this;
|
|
861
970
|
if (filter != null) {
|
|
862
971
|
this._filterSub.subscription = this.dbxCalendarScheduleSelectionStore.setFilter(asObservable(filter));
|
|
863
972
|
}
|
|
973
|
+
if (exclusions != null) {
|
|
974
|
+
this._exclusionsSub.subscription = this.dbxCalendarScheduleSelectionStore.setExclusions(asObservable(exclusions));
|
|
975
|
+
}
|
|
976
|
+
if (this.initialSelectionState !== undefined) {
|
|
977
|
+
this.dbxCalendarScheduleSelectionStore.setInitialSelectionState(this.initialSelectionState);
|
|
978
|
+
}
|
|
979
|
+
if (this.computeSelectionResultRelativeToFilter != null) {
|
|
980
|
+
this.dbxCalendarScheduleSelectionStore.setComputeSelectionResultRelativeToFilter(this.computeSelectionResultRelativeToFilter);
|
|
981
|
+
}
|
|
982
|
+
// TODO: Also add ability to set min/max dates independent of the filter
|
|
864
983
|
}
|
|
865
984
|
ngOnDestroy() {
|
|
866
985
|
super.ngOnDestroy();
|
|
867
986
|
this._syncSub.destroy();
|
|
868
987
|
this._valueSub.destroy();
|
|
869
|
-
this._formControlObs.complete();
|
|
870
988
|
this._filterSub.destroy();
|
|
989
|
+
this._exclusionsSub.destroy();
|
|
990
|
+
this._formControlObs.complete();
|
|
871
991
|
}
|
|
872
992
|
}
|
|
873
993
|
DbxFormCalendarDateScheduleRangeFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormCalendarDateScheduleRangeFieldComponent, deps: [{ token: i1$1.CompactContextStore, optional: true }, { token: DbxCalendarScheduleSelectionStore }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -1061,5 +1181,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
1061
1181
|
* Generated bundle index. Do not edit.
|
|
1062
1182
|
*/
|
|
1063
1183
|
|
|
1064
|
-
export { CalendarScheduleSelectionDayState, DEFAULT_SCHEDULE_SELECTION_CALENDAR_DATE_POPOVER_KEY, DbxCalendarScheduleSelectionStore, DbxCalendarScheduleSelectionStoreInjectionBlockDirective, DbxCalendarScheduleSelectionStoreProviderBlock, DbxFormCalendarDateScheduleRangeFieldComponent, DbxFormCalendarModule, DbxFormDateScheduleRangeFieldModule, DbxScheduleSelectionCalendarCellComponent, DbxScheduleSelectionCalendarComponent, DbxScheduleSelectionCalendarDateDaysComponent, DbxScheduleSelectionCalendarDateDaysFormComponent, DbxScheduleSelectionCalendarDateDialogButtonComponent, DbxScheduleSelectionCalendarDateDialogComponent, DbxScheduleSelectionCalendarDatePopoverButtonComponent, DbxScheduleSelectionCalendarDatePopoverComponent, DbxScheduleSelectionCalendarDatePopoverContentComponent, DbxScheduleSelectionCalendarDateRangeComponent, computeCalendarScheduleSelectionDateBlockRange, computeCalendarScheduleSelectionRange, computeScheduleSelectionRangeAndExclusion, computeScheduleSelectionValue, dateScheduleRangeField, dbxScheduleSelectionCalendarDateDaysFormDayFields, dbxScheduleSelectionCalendarDateDaysFormFields, defaultCalendarScheduleSelectionCellContentFactory, finalizeNewCalendarScheduleSelectionState, initialCalendarScheduleSelectionState, isEnabledDayInCalendarScheduleSelectionState, noSelectionCalendarScheduleSelectionState, provideCalendarScheduleSelectionStoreIfParentIsUnavailable, updateStateWithChangedDates, updateStateWithChangedRange, updateStateWithChangedScheduleDays, updateStateWithDateScheduleRangeValue, updateStateWithFilter };
|
|
1184
|
+
export { CalendarScheduleSelectionDayState, DEFAULT_SCHEDULE_SELECTION_CALENDAR_DATE_POPOVER_KEY, DbxCalendarScheduleSelectionStore, DbxCalendarScheduleSelectionStoreInjectionBlockDirective, DbxCalendarScheduleSelectionStoreProviderBlock, DbxFormCalendarDateScheduleRangeFieldComponent, DbxFormCalendarModule, DbxFormDateScheduleRangeFieldModule, DbxScheduleSelectionCalendarCellComponent, DbxScheduleSelectionCalendarComponent, DbxScheduleSelectionCalendarDateDaysComponent, DbxScheduleSelectionCalendarDateDaysFormComponent, DbxScheduleSelectionCalendarDateDialogButtonComponent, DbxScheduleSelectionCalendarDateDialogComponent, DbxScheduleSelectionCalendarDatePopoverButtonComponent, DbxScheduleSelectionCalendarDatePopoverComponent, DbxScheduleSelectionCalendarDatePopoverContentComponent, DbxScheduleSelectionCalendarDateRangeComponent, calendarScheduleMaxDate, calendarScheduleMinAndMaxDate, calendarScheduleMinDate, computeCalendarScheduleSelectionDateBlockRange, computeCalendarScheduleSelectionRange, computeScheduleSelectionRangeAndExclusion, computeScheduleSelectionValue, dateScheduleRangeField, dbxScheduleSelectionCalendarDateDaysFormDayFields, dbxScheduleSelectionCalendarDateDaysFormFields, defaultCalendarScheduleSelectionCellContentFactory, finalizeNewCalendarScheduleSelectionState, initialCalendarScheduleSelectionState, isEnabledDayInCalendarScheduleSelectionState, noSelectionCalendarScheduleSelectionState, provideCalendarScheduleSelectionStoreIfParentIsUnavailable, updateStateWithChangedDates, updateStateWithChangedRange, updateStateWithChangedScheduleDays, updateStateWithComputeSelectionResultRelativeToFilter, updateStateWithDateScheduleRangeValue, updateStateWithExclusions, updateStateWithFilter, updateStateWithInitialSelectionState };
|
|
1065
1185
|
//# sourceMappingURL=dereekb-dbx-form-calendar.mjs.map
|