@dereekb/dbx-form 9.23.22 → 9.23.24

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.
@@ -1,6 +1,6 @@
1
1
  import { formlyField, propsAndConfigForFieldConfig } from '@dereekb/dbx-form';
2
2
  export function dateScheduleRangeField(config = {}) {
3
- const { key = 'schedule', filter, initialSelectionState, computeSelectionResultRelativeToFilter, exclusions, minMaxDateRange } = config;
3
+ const { key = 'schedule', filter, timezone, initialSelectionState, computeSelectionResultRelativeToFilter, exclusions, minMaxDateRange } = config;
4
4
  const fieldConfig = {
5
5
  ...formlyField({
6
6
  key,
@@ -9,6 +9,7 @@ export function dateScheduleRangeField(config = {}) {
9
9
  label: config.label ?? 'Schedule',
10
10
  minMaxDateRange,
11
11
  filter,
12
+ timezone,
12
13
  computeSelectionResultRelativeToFilter,
13
14
  initialSelectionState,
14
15
  exclusions
@@ -17,4 +18,4 @@ export function dateScheduleRangeField(config = {}) {
17
18
  };
18
19
  return fieldConfig;
19
20
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9jYWxlbmRhci9zcmMvbGliL2ZpZWxkL3NjaGVkdWxlL2NhbGVuZGFyLnNjaGVkdWxlLmZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUMsV0FBVyxFQUFzQiw0QkFBNEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBTXZJLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxTQUF1QyxFQUFFO0lBQzlFLE1BQU0sRUFBRSxHQUFHLEdBQUcsVUFBVSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxzQ0FBc0MsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3hJLE1BQU0sV0FBVyxHQUFzQjtRQUNyQyxHQUFHLFdBQVcsQ0FBQztZQUNiLEdBQUc7WUFDSCxJQUFJLEVBQUUscUJBQXFCO1lBQzNCLEdBQUcsNEJBQTRCLENBQUMsTUFBTSxFQUFFO2dCQUN0QyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssSUFBSSxVQUFVO2dCQUNqQyxlQUFlO2dCQUNmLE1BQU07Z0JBQ04sc0NBQXNDO2dCQUN0QyxxQkFBcUI7Z0JBQ3JCLFVBQVU7YUFDWCxDQUFDO1NBQ0gsQ0FBQztLQUNILENBQUM7SUFFRixPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgRmllbGRDb25maWcsIGZvcm1seUZpZWxkLCBMYWJlbGVkRmllbGRDb25maWcsIHByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcgfSBmcm9tICdAZGVyZWVrYi9kYngtZm9ybSc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRGJ4Rm9ybUNhbGVuZGFyRGF0ZVNjaGVkdWxlUmFuZ2VGaWVsZFByb3BzIH0gZnJvbSAnLi9jYWxlbmRhci5zY2hlZHVsZS5maWVsZC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVTY2hlZHVsZVJhbmdlRmllbGRDb25maWcgZXh0ZW5kcyBPbWl0PExhYmVsZWRGaWVsZENvbmZpZywgJ2tleScgfCAncGxhY2Vob2xkZXInPiwgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgUGFydGlhbDxGaWVsZENvbmZpZz4sIERieEZvcm1DYWxlbmRhckRhdGVTY2hlZHVsZVJhbmdlRmllbGRQcm9wcyB7fVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVNjaGVkdWxlUmFuZ2VGaWVsZChjb25maWc6IERhdGVTY2hlZHVsZVJhbmdlRmllbGRDb25maWcgPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyBrZXkgPSAnc2NoZWR1bGUnLCBmaWx0ZXIsIGluaXRpYWxTZWxlY3Rpb25TdGF0ZSwgY29tcHV0ZVNlbGVjdGlvblJlc3VsdFJlbGF0aXZlVG9GaWx0ZXIsIGV4Y2x1c2lvbnMsIG1pbk1heERhdGVSYW5nZSB9ID0gY29uZmlnO1xuICBjb25zdCBmaWVsZENvbmZpZzogRm9ybWx5RmllbGRDb25maWcgPSB7XG4gICAgLi4uZm9ybWx5RmllbGQoe1xuICAgICAga2V5LFxuICAgICAgdHlwZTogJ2RhdGUtc2NoZWR1bGUtcmFuZ2UnLFxuICAgICAgLi4ucHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZyhjb25maWcsIHtcbiAgICAgICAgbGFiZWw6IGNvbmZpZy5sYWJlbCA/PyAnU2NoZWR1bGUnLFxuICAgICAgICBtaW5NYXhEYXRlUmFuZ2UsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgY29tcHV0ZVNlbGVjdGlvblJlc3VsdFJlbGF0aXZlVG9GaWx0ZXIsXG4gICAgICAgIGluaXRpYWxTZWxlY3Rpb25TdGF0ZSxcbiAgICAgICAgZXhjbHVzaW9uc1xuICAgICAgfSlcbiAgICB9KVxuICB9O1xuXG4gIHJldHVybiBmaWVsZENvbmZpZztcbn1cbiJdfQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2NoZWR1bGUuZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9jYWxlbmRhci9zcmMvbGliL2ZpZWxkL3NjaGVkdWxlL2NhbGVuZGFyLnNjaGVkdWxlLmZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUMsV0FBVyxFQUFzQiw0QkFBNEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBTXZJLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxTQUF1QyxFQUFFO0lBQzlFLE1BQU0sRUFBRSxHQUFHLEdBQUcsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsc0NBQXNDLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNsSixNQUFNLFdBQVcsR0FBc0I7UUFDckMsR0FBRyxXQUFXLENBQUM7WUFDYixHQUFHO1lBQ0gsSUFBSSxFQUFFLHFCQUFxQjtZQUMzQixHQUFHLDRCQUE0QixDQUFDLE1BQU0sRUFBRTtnQkFDdEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksVUFBVTtnQkFDakMsZUFBZTtnQkFDZixNQUFNO2dCQUNOLFFBQVE7Z0JBQ1Isc0NBQXNDO2dCQUN0QyxxQkFBcUI7Z0JBQ3JCLFVBQVU7YUFDWCxDQUFDO1NBQ0gsQ0FBQztLQUNILENBQUM7SUFFRixPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgRmllbGRDb25maWcsIGZvcm1seUZpZWxkLCBMYWJlbGVkRmllbGRDb25maWcsIHByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcgfSBmcm9tICdAZGVyZWVrYi9kYngtZm9ybSc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRGJ4Rm9ybUNhbGVuZGFyRGF0ZVNjaGVkdWxlUmFuZ2VGaWVsZFByb3BzIH0gZnJvbSAnLi9jYWxlbmRhci5zY2hlZHVsZS5maWVsZC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVTY2hlZHVsZVJhbmdlRmllbGRDb25maWcgZXh0ZW5kcyBPbWl0PExhYmVsZWRGaWVsZENvbmZpZywgJ2tleScgfCAncGxhY2Vob2xkZXInPiwgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgUGFydGlhbDxGaWVsZENvbmZpZz4sIERieEZvcm1DYWxlbmRhckRhdGVTY2hlZHVsZVJhbmdlRmllbGRQcm9wcyB7fVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVNjaGVkdWxlUmFuZ2VGaWVsZChjb25maWc6IERhdGVTY2hlZHVsZVJhbmdlRmllbGRDb25maWcgPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyBrZXkgPSAnc2NoZWR1bGUnLCBmaWx0ZXIsIHRpbWV6b25lLCBpbml0aWFsU2VsZWN0aW9uU3RhdGUsIGNvbXB1dGVTZWxlY3Rpb25SZXN1bHRSZWxhdGl2ZVRvRmlsdGVyLCBleGNsdXNpb25zLCBtaW5NYXhEYXRlUmFuZ2UgfSA9IGNvbmZpZztcbiAgY29uc3QgZmllbGRDb25maWc6IEZvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgIC4uLmZvcm1seUZpZWxkKHtcbiAgICAgIGtleSxcbiAgICAgIHR5cGU6ICdkYXRlLXNjaGVkdWxlLXJhbmdlJyxcbiAgICAgIC4uLnByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcoY29uZmlnLCB7XG4gICAgICAgIGxhYmVsOiBjb25maWcubGFiZWwgPz8gJ1NjaGVkdWxlJyxcbiAgICAgICAgbWluTWF4RGF0ZVJhbmdlLFxuICAgICAgICBmaWx0ZXIsXG4gICAgICAgIHRpbWV6b25lLFxuICAgICAgICBjb21wdXRlU2VsZWN0aW9uUmVzdWx0UmVsYXRpdmVUb0ZpbHRlcixcbiAgICAgICAgaW5pdGlhbFNlbGVjdGlvblN0YXRlLFxuICAgICAgICBleGNsdXNpb25zXG4gICAgICB9KVxuICAgIH0pXG4gIH07XG5cbiAgcmV0dXJuIGZpZWxkQ29uZmlnO1xufVxuIl19
@@ -3,9 +3,9 @@ import { formlyField, propsAndConfigForFieldConfig, flexLayoutWrapper, toggleFie
3
3
  import * as i0 from '@angular/core';
4
4
  import { Injectable, SkipSelf, Directive, Injector, Optional, Component, Inject, Input, ElementRef, ViewChild, ChangeDetectionStrategy, EventEmitter, Output, NgModule } from '@angular/core';
5
5
  import { FieldType } from '@ngx-formly/material';
6
- import { switchMap, first, tap, map, distinctUntilChanged, shareReplay, BehaviorSubject, of, startWith, filter, throttleTime } from 'rxjs';
6
+ import { switchMap, first, tap, map, distinctUntilChanged, shareReplay, combineLatestWith, BehaviorSubject, of, startWith, filter, throttleTime } from 'rxjs';
7
7
  import { filterMaybe, SubscriptionObject, asObservable } from '@dereekb/rxjs';
8
- import { DateScheduleDayCode, expandDateScheduleDayCodesToDayOfWeekSet, dateTimingRelativeIndexFactory, dateBlockDayOfWeekFactory, findMaxDate, findMinDate, isSameDateRange, isSameDateDay, isSameDate, isSameDateScheduleRange, dateTimingRelativeIndexArrayFactory, isInfiniteDateRange, copyDateScheduleDateFilterConfig, dateScheduleDateFilter, expandDateScheduleDayCodes, isDateInDateRangeFunction, isDateWithinDateBlockRangeFunction, copyHoursAndMinutesFromDate, dateScheduleEncodedWeek, dateBlockTimingDateFactory, enabledDaysFromDateScheduleDayCodes, dateScheduleDayCodesFromEnabledDays, formatToMonthDayString } from '@dereekb/date';
8
+ import { DateScheduleDayCode, expandDateScheduleDayCodesToDayOfWeekSet, dateTimingRelativeIndexFactory, dateBlockDayOfWeekFactory, findMaxDate, findMinDate, isSameDateRange, isSameDateDay, isSameDate, isSameDateScheduleRange, dateTimingRelativeIndexArrayFactory, isInfiniteDateRange, copyDateScheduleDateFilterConfig, dateScheduleDateFilter, dateTimezoneUtcNormal, expandDateScheduleDayCodes, isDateInDateRangeFunction, isDateWithinDateBlockRangeFunction, copyHoursAndMinutesFromDate, dateScheduleEncodedWeek, dateBlockTimingDateFactory, enabledDaysFromDateScheduleDayCodes, dateScheduleDayCodesFromEnabledDays, formatToMonthDayString } from '@dereekb/date';
9
9
  import { setsAreEquivalent, unique, mergeArrays, iterableToArray, toggleInSet, addToSet, isIndexNumberInIndexRangeFunction, range, minAndMaxNumber, getDaysOfWeekNames } from '@dereekb/util';
10
10
  import { ComponentStore } from '@ngrx/component-store';
11
11
  import { startOfDay, endOfDay, isBefore } from 'date-fns';
@@ -22,7 +22,7 @@ import { CommonModule } from '@angular/common';
22
22
  import * as i7 from '@angular/material/datepicker';
23
23
  import { MatDatepickerModule } from '@angular/material/datepicker';
24
24
  import * as i3$1 from '@dereekb/dbx-core';
25
- import { switchMapDbxInjectionComponentConfig, DbxInjectionComponentModule } from '@dereekb/dbx-core';
25
+ import { switchMapDbxInjectionComponentConfig, DbxInjectionComponentModule, DbxDatePipeModule } from '@dereekb/dbx-core';
26
26
  import * as i6 from 'angular-calendar';
27
27
  import { CalendarModule, CalendarDayModule, CalendarWeekModule } from 'angular-calendar';
28
28
  import * as i3$2 from '@angular/material/icon';
@@ -38,11 +38,12 @@ import { FlexLayoutModule } from '@angular/flex-layout';
38
38
 
39
39
  function dateScheduleRangeField(config = {}) {
40
40
  var _a;
41
- const { key = 'schedule', filter, initialSelectionState, computeSelectionResultRelativeToFilter, exclusions, minMaxDateRange } = config;
41
+ const { key = 'schedule', filter, timezone, initialSelectionState, computeSelectionResultRelativeToFilter, exclusions, minMaxDateRange } = config;
42
42
  const fieldConfig = Object.assign({}, formlyField(Object.assign({ key, type: 'date-schedule-range' }, propsAndConfigForFieldConfig(config, {
43
43
  label: (_a = config.label) !== null && _a !== void 0 ? _a : 'Schedule',
44
44
  minMaxDateRange,
45
45
  filter,
46
+ timezone,
46
47
  computeSelectionResultRelativeToFilter,
47
48
  initialSelectionState,
48
49
  exclusions
@@ -114,6 +115,10 @@ function calendarScheduleMinAndMaxDateRange(x) {
114
115
  end: calendarScheduleMaxDate(x) || undefined
115
116
  };
116
117
  }
118
+ function calendarScheduleStartBeingUsedFromFilter(x) {
119
+ var _a;
120
+ return x.computeSelectionResultRelativeToFilter && ((_a = x.filter) === null || _a === void 0 ? void 0 : _a.start) != null;
121
+ }
117
122
  class DbxCalendarScheduleSelectionStore extends ComponentStore {
118
123
  constructor() {
119
124
  super(initialCalendarScheduleSelectionState());
@@ -145,10 +150,23 @@ class DbxCalendarScheduleSelectionStore extends ComponentStore {
145
150
  this.isEnabledDayFunction$ = this.state$.pipe(map((x) => x.isEnabledDay), shareReplay(1));
146
151
  this.currentDateRange$ = this.state$.pipe(map(computeCalendarScheduleSelectionRange), distinctUntilChanged((a, b) => isSameDateRange(a, b)), shareReplay(1));
147
152
  this.computeSelectionResultRelativeToFilter$ = this.state$.pipe(map((x) => x.computeSelectionResultRelativeToFilter), shareReplay(1));
148
- 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));
153
+ this.startBeingUsedFromFilter$ = this.state$.pipe(
154
+ //
155
+ map(calendarScheduleStartBeingUsedFromFilter), distinctUntilChanged(), shareReplay(1));
149
156
  this.dateRange$ = this.currentDateRange$.pipe(filterMaybe(), shareReplay(1));
150
157
  this.scheduleDays$ = this.state$.pipe(map((x) => x.scheduleDays), distinctUntilChanged(setsAreEquivalent), shareReplay(1));
158
+ this.currentTimezone$ = this.state$.pipe(map((x) => x.timezone), distinctUntilChanged(), shareReplay(1));
159
+ this.effectiveTimezone$ = this.state$.pipe(map((x) => (!calendarScheduleStartBeingUsedFromFilter(x) && x.timezone ? x.timezone : undefined)), distinctUntilChanged(), shareReplay(1));
160
+ this.effectiveTimezoneNormal$ = this.state$.pipe(map((x) => (!calendarScheduleStartBeingUsedFromFilter(x) && x.timezoneNormal ? x.timezoneNormal : undefined)), distinctUntilChanged(), shareReplay(1));
151
161
  this.currentSelectionValue$ = this.state$.pipe(map((x) => x.currentSelectionValue), shareReplay(1));
162
+ this.currentSelectionValueWithTimezone$ = this.currentSelectionValue$.pipe(combineLatestWith(this.effectiveTimezoneNormal$), map(([x, timezoneNormal]) => {
163
+ if (x && timezoneNormal) {
164
+ x = {
165
+ dateScheduleRange: Object.assign(Object.assign({}, x.dateScheduleRange), { start: timezoneNormal.targetDateToSystemDate(x.dateScheduleRange.start), end: timezoneNormal.targetDateToSystemDate(x.dateScheduleRange.end) })
166
+ };
167
+ }
168
+ return x;
169
+ }), distinctUntilChanged(), shareReplay(1));
152
170
  this.nextToggleSelection$ = this.hasConfiguredMinMaxRange$.pipe(switchMap((hasConfiguredMinMaxRange) => {
153
171
  let obs;
154
172
  if (hasConfiguredMinMaxRange) {
@@ -159,26 +177,26 @@ class DbxCalendarScheduleSelectionStore extends ComponentStore {
159
177
  }
160
178
  return obs;
161
179
  }), shareReplay(1));
162
- this.selectionValue$ = this.currentSelectionValue$.pipe(filterMaybe(), shareReplay(1));
163
- this.currentDateScheduleRangeValue$ = this.currentSelectionValue$.pipe(map((x) => x === null || x === void 0 ? void 0 : x.dateScheduleRange), distinctUntilChanged(isSameDateScheduleRange), shareReplay(1));
180
+ this.selectionValue$ = this.currentSelectionValueWithTimezone$.pipe(filterMaybe(), shareReplay(1));
181
+ this.currentDateScheduleRangeValue$ = this.currentSelectionValueWithTimezone$.pipe(map((x) => x === null || x === void 0 ? void 0 : x.dateScheduleRange), distinctUntilChanged(isSameDateScheduleRange), shareReplay(1));
164
182
  this.dateScheduleRangeValue$ = this.currentDateScheduleRangeValue$.pipe(filterMaybe(), shareReplay(1));
165
183
  this.cellContentFactory$ = this.state$.pipe(map((x) => x.cellContentFactory), distinctUntilChanged(), shareReplay(1));
166
184
  this.isCustomized$ = this.state$.pipe(map((x) => x.selectedIndexes.size > 0), distinctUntilChanged(), shareReplay(1));
167
185
  // MARK: State Changes
168
- this.setMinMaxDateRange = this.updater((state, filter) => updateStateWithMinMaxDateRange(state, filter));
169
- this.setFilter = this.updater((state, filter) => updateStateWithFilter(state, filter));
170
- this.setExclusions = this.updater((state, exclusions) => updateStateWithExclusions(state, exclusions));
171
- this.setComputeSelectionResultRelativeToFilter = this.updater((state, computeSelectionResultRelativeToFilter) => updateStateWithComputeSelectionResultRelativeToFilter(state, computeSelectionResultRelativeToFilter));
186
+ this.setMinMaxDateRange = this.updater(updateStateWithMinMaxDateRange);
187
+ this.setFilter = this.updater(updateStateWithFilter);
188
+ this.setExclusions = this.updater(updateStateWithExclusions);
189
+ this.setComputeSelectionResultRelativeToFilter = this.updater(updateStateWithComputeSelectionResultRelativeToFilter);
172
190
  this.clearFilter = this.updater((state) => updateStateWithFilter(state, undefined));
173
- this.setTimezone = this.updater((state, timezone) => (Object.assign(Object.assign({}, state), { timezone })));
174
- this.setInputRange = this.updater((state, range) => updateStateWithChangedRange(state, range));
191
+ this.setTimezone = this.updater(updateStateWithTimezoneValue);
192
+ this.setInputRange = this.updater(updateStateWithChangedRange);
175
193
  this.toggleSelectedDates = this.updater((state, toggle) => updateStateWithChangedDates(state, { toggle }));
176
194
  this.addSelectedDates = this.updater((state, add) => updateStateWithChangedDates(state, { add }));
177
195
  this.removeSelectedDates = this.updater((state, remove) => updateStateWithChangedDates(state, { remove }));
178
196
  this.setSelectedDates = this.updater((state, set) => updateStateWithChangedDates(state, { set }));
179
197
  this.selectAllDates = this.updater((state, selectAll = 'all') => updateStateWithChangedDates(state, { selectAll }));
180
- this.setInitialSelectionState = this.updater((state, initialSelectionState) => updateStateWithInitialSelectionState(state, initialSelectionState));
181
- this.setScheduleDays = this.updater((state, scheduleDays) => updateStateWithChangedScheduleDays(state, scheduleDays));
198
+ this.setInitialSelectionState = this.updater(updateStateWithInitialSelectionState);
199
+ this.setScheduleDays = this.updater(updateStateWithChangedScheduleDays);
182
200
  this.setAllowAllScheduleDays = this.updater((state) => updateStateWithChangedScheduleDays(state, null));
183
201
  this.setDateScheduleRangeValue = this.updater((state, value) => updateStateWithDateScheduleRangeValue(state, value));
184
202
  this.setCellContentFactory = this.updater((state, cellContentFactory) => (Object.assign(Object.assign({}, state), { cellContentFactory })));
@@ -280,16 +298,40 @@ function updateStateWithFilter(state, inputFilter) {
280
298
  }
281
299
  return state;
282
300
  }
301
+ function updateStateWithTimezoneValue(state, timezone) {
302
+ const { currentSelectionValue } = state;
303
+ const timezoneNormal = timezone ? dateTimezoneUtcNormal({ timezone }) : undefined;
304
+ if (timezoneNormal && currentSelectionValue) {
305
+ // update the selection value to reflect the timezone changes.
306
+ const { dateScheduleRange: currentDateScheduleRange } = currentSelectionValue;
307
+ const start = timezoneNormal.targetDateToSystemDate(currentDateScheduleRange.start);
308
+ const end = timezoneNormal.targetDateToSystemDate(currentDateScheduleRange.end);
309
+ const newRange = Object.assign(Object.assign({}, currentSelectionValue.dateScheduleRange), { start,
310
+ end });
311
+ return updateStateWithDateScheduleRangeValue(Object.assign(Object.assign({}, state), { timezone, timezoneNormal }), newRange);
312
+ }
313
+ else {
314
+ return Object.assign(Object.assign({}, state), { timezone, timezoneNormal }); // no change in value
315
+ }
316
+ }
283
317
  function updateStateWithDateScheduleRangeValue(state, change) {
284
- var _a;
285
- const isSameValue = isSameDateScheduleRange((_a = state.currentSelectionValue) === null || _a === void 0 ? void 0 : _a.dateScheduleRange, change);
318
+ const { timezoneNormal, currentSelectionValue } = state;
319
+ let currentDateScheduleRange = currentSelectionValue === null || currentSelectionValue === void 0 ? void 0 : currentSelectionValue.dateScheduleRange; // current range is always in system time
320
+ if (!calendarScheduleStartBeingUsedFromFilter(state) && timezoneNormal) {
321
+ // When using timezones, always return from the start of the day. Inputs are converted to the system time and used as the start of the day.
322
+ // Outputs remain accurate.
323
+ if (change) {
324
+ change = Object.assign(Object.assign({}, change), { start: startOfDay(timezoneNormal.systemDateToTargetDate(change.start)), end: startOfDay(timezoneNormal.systemDateToTargetDate(change.end)) });
325
+ }
326
+ }
327
+ const isSameValue = isSameDateScheduleRange(currentDateScheduleRange, change);
286
328
  if (isSameValue) {
287
329
  return state;
288
330
  }
289
331
  else {
290
332
  if (change != null) {
291
333
  const nextState = Object.assign(Object.assign({}, state), { inputStart: change.start, inputEnd: change.end, selectedIndexes: new Set(change.ex) });
292
- return updateStateWithChangedScheduleDays(finalizeNewCalendarScheduleSelectionState(nextState), expandDateScheduleDayCodes(change.w));
334
+ return updateStateWithChangedScheduleDays(finalizeNewCalendarScheduleSelectionState(nextState), expandDateScheduleDayCodes(change.w || '89'));
293
335
  }
294
336
  else {
295
337
  return noSelectionCalendarScheduleSelectionState(state); // clear selection, retain disabled days
@@ -583,6 +625,7 @@ class DbxScheduleSelectionCalendarDateRangeComponent {
583
625
  this.matFormFieldDefaultOptions = matFormFieldDefaultOptions;
584
626
  this._required = new BehaviorSubject(false);
585
627
  this.required$ = this._required.asObservable();
628
+ this.timezone$ = this.dbxCalendarScheduleSelectionStore.currentTimezone$;
586
629
  this.label = 'Enter a date range';
587
630
  this.showCustomize = false;
588
631
  this._pickerOpened = new BehaviorSubject(false);
@@ -605,6 +648,10 @@ class DbxScheduleSelectionCalendarDateRangeComponent {
605
648
  };
606
649
  this.minDate$ = this.dbxCalendarScheduleSelectionStore.minDate$;
607
650
  this.maxDate$ = this.dbxCalendarScheduleSelectionStore.maxDate$;
651
+ this.timezoneReleventDate$ = this.dbxCalendarScheduleSelectionStore.currentDateRange$.pipe(map((currentDateRange) => {
652
+ var _a;
653
+ return currentDateRange ? (_a = currentDateRange.start) !== null && _a !== void 0 ? _a : currentDateRange.end : undefined !== null && undefined !== void 0 ? undefined : new Date();
654
+ }), shareReplay(1));
608
655
  this.isCustomized$ = this.dbxCalendarScheduleSelectionStore.isCustomized$;
609
656
  this.pickerOpened$ = this._pickerOpened.asObservable();
610
657
  }
@@ -677,10 +724,10 @@ class DbxScheduleSelectionCalendarDateRangeComponent {
677
724
  }
678
725
  }
679
726
  DbxScheduleSelectionCalendarDateRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxScheduleSelectionCalendarDateRangeComponent, deps: [{ token: i1.DbxCalendarStore }, { token: DbxCalendarScheduleSelectionStore }, { token: MAT_FORM_FIELD_DEFAULT_OPTIONS }], target: i0.ɵɵFactoryTarget.Component });
680
- DbxScheduleSelectionCalendarDateRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxScheduleSelectionCalendarDateRangeComponent, selector: "dbx-schedule-selection-calendar-date-range", inputs: { label: "label", hint: "hint", disabled: "disabled", showCustomize: "showCustomize", required: "required" }, ngImport: i0, template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div *ngIf=\"showCustomize && (isCustomized$ | async)\" class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input [required]=\"required$ | async\" [min]=\"minDate$ | async\" [max]=\"maxDate$ | async\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input [errorStateMatcher]=\"errorStateMatcher\" matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input [errorStateMatcher]=\"errorStateMatcher\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n <div *ngIf=\"showCustomize\">\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n <mat-error *ngIf=\"range.hasError('required')\">Date range is required</mat-error>\n <mat-error *ngIf=\"range.controls.start.hasError('matStartDateInvalid')\">Invalid start date</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matEndDateInvalid')\">Invalid end date</mat-error>\n <mat-error *ngIf=\"range.controls.start.hasError('matDatepickerMin')\">Start date is too early</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matDatepickerMin')\">End date is too early.</mat-error>\n <mat-error *ngIf=\"range.controls.start.hasError('matDatepickerMax')\">Start date is too late.</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matDatepickerMax')\">End date is too late</mat-error>\n <mat-hint>{{ hint }}</mat-hint>\n</mat-form-field>\n", dependencies: [{ kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$1.DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "component", type: i7.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i7.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i7.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i7.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i7.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
727
+ DbxScheduleSelectionCalendarDateRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxScheduleSelectionCalendarDateRangeComponent, selector: "dbx-schedule-selection-calendar-date-range", inputs: { label: "label", hint: "hint", disabled: "disabled", showCustomize: "showCustomize", required: "required" }, ngImport: i0, template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div *ngIf=\"showCustomize && (isCustomized$ | async)\" class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input [required]=\"required$ | async\" [min]=\"minDate$ | async\" [max]=\"maxDate$ | async\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input [errorStateMatcher]=\"errorStateMatcher\" matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input [errorStateMatcher]=\"errorStateMatcher\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n <span *ngIf=\"timezone$ | async\" class=\"dbx-flex-bar dbx-faint dbx-nowrap dbx-icon-spacer\">{{ timezone$ | async | timezoneAbbreviation: (timezoneReleventDate$ | async) }}</span>\n <div *ngIf=\"showCustomize\">\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n <mat-error *ngIf=\"range.hasError('required')\">Date range is required</mat-error>\n <mat-error *ngIf=\"range.controls.start.hasError('matStartDateInvalid')\">Invalid start date</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matEndDateInvalid')\">Invalid end date</mat-error>\n <mat-error *ngIf=\"range.controls.start.hasError('matDatepickerMin')\">Start date is too early</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matDatepickerMin')\">End date is too early.</mat-error>\n <mat-error *ngIf=\"range.controls.start.hasError('matDatepickerMax')\">Start date is too late.</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matDatepickerMax')\">End date is too late</mat-error>\n <mat-hint>{{ hint }}</mat-hint>\n</mat-form-field>\n", dependencies: [{ kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$1.DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "component", type: i7.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i7.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i7.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i7.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i7.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TimezoneAbbreviationPipe, name: "timezoneAbbreviation" }] });
681
728
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxScheduleSelectionCalendarDateRangeComponent, decorators: [{
682
729
  type: Component,
683
- args: [{ selector: 'dbx-schedule-selection-calendar-date-range', template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div *ngIf=\"showCustomize && (isCustomized$ | async)\" class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input [required]=\"required$ | async\" [min]=\"minDate$ | async\" [max]=\"maxDate$ | async\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input [errorStateMatcher]=\"errorStateMatcher\" matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input [errorStateMatcher]=\"errorStateMatcher\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n <div *ngIf=\"showCustomize\">\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n <mat-error *ngIf=\"range.hasError('required')\">Date range is required</mat-error>\n <mat-error *ngIf=\"range.controls.start.hasError('matStartDateInvalid')\">Invalid start date</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matEndDateInvalid')\">Invalid end date</mat-error>\n <mat-error *ngIf=\"range.controls.start.hasError('matDatepickerMin')\">Start date is too early</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matDatepickerMin')\">End date is too early.</mat-error>\n <mat-error *ngIf=\"range.controls.start.hasError('matDatepickerMax')\">Start date is too late.</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matDatepickerMax')\">End date is too late</mat-error>\n <mat-hint>{{ hint }}</mat-hint>\n</mat-form-field>\n" }]
730
+ args: [{ selector: 'dbx-schedule-selection-calendar-date-range', template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div *ngIf=\"showCustomize && (isCustomized$ | async)\" class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input [required]=\"required$ | async\" [min]=\"minDate$ | async\" [max]=\"maxDate$ | async\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input [errorStateMatcher]=\"errorStateMatcher\" matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input [errorStateMatcher]=\"errorStateMatcher\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n <span *ngIf=\"timezone$ | async\" class=\"dbx-flex-bar dbx-faint dbx-nowrap dbx-icon-spacer\">{{ timezone$ | async | timezoneAbbreviation: (timezoneReleventDate$ | async) }}</span>\n <div *ngIf=\"showCustomize\">\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n <mat-error *ngIf=\"range.hasError('required')\">Date range is required</mat-error>\n <mat-error *ngIf=\"range.controls.start.hasError('matStartDateInvalid')\">Invalid start date</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matEndDateInvalid')\">Invalid end date</mat-error>\n <mat-error *ngIf=\"range.controls.start.hasError('matDatepickerMin')\">Start date is too early</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matDatepickerMin')\">End date is too early.</mat-error>\n <mat-error *ngIf=\"range.controls.start.hasError('matDatepickerMax')\">Start date is too late.</mat-error>\n <mat-error *ngIf=\"range.controls.end.hasError('matDatepickerMax')\">End date is too late</mat-error>\n <mat-hint>{{ hint }}</mat-hint>\n</mat-form-field>\n" }]
684
731
  }], ctorParameters: function () {
685
732
  return [{ type: i1.DbxCalendarStore }, { type: DbxCalendarScheduleSelectionStore }, { type: undefined, decorators: [{
686
733
  type: Inject,
@@ -1083,6 +1130,7 @@ class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
1083
1130
  this.ngZone = ngZone;
1084
1131
  this._syncSub = new SubscriptionObject();
1085
1132
  this._valueSub = new SubscriptionObject();
1133
+ this._timezoneSub = new SubscriptionObject();
1086
1134
  this._minMaxDateRangeSub = new SubscriptionObject();
1087
1135
  this._filterSub = new SubscriptionObject();
1088
1136
  this._exclusionsSub = new SubscriptionObject();
@@ -1118,6 +1166,9 @@ class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
1118
1166
  get exclusions() {
1119
1167
  return this.props.exclusions;
1120
1168
  }
1169
+ get timezone() {
1170
+ return this.props.timezone;
1171
+ }
1121
1172
  get initialSelectionState() {
1122
1173
  return this.props.initialSelectionState;
1123
1174
  }
@@ -1132,7 +1183,7 @@ class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
1132
1183
  this._valueSub.subscription = this.dbxCalendarScheduleSelectionStore.currentDateScheduleRangeValue$.subscribe((x) => {
1133
1184
  this.formControl.setValue(x);
1134
1185
  });
1135
- const { minMaxDateRange, filter, exclusions } = this;
1186
+ const { timezone, minMaxDateRange, filter, exclusions } = this;
1136
1187
  if (filter != null) {
1137
1188
  this._filterSub.subscription = this.dbxCalendarScheduleSelectionStore.setFilter(asObservable(filter));
1138
1189
  }
@@ -1142,6 +1193,9 @@ class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
1142
1193
  if (exclusions != null) {
1143
1194
  this._exclusionsSub.subscription = this.dbxCalendarScheduleSelectionStore.setExclusions(asObservable(exclusions));
1144
1195
  }
1196
+ if (timezone != null) {
1197
+ this.dbxCalendarScheduleSelectionStore.setTimezone(asObservable(this.timezone));
1198
+ }
1145
1199
  if (this.initialSelectionState !== undefined) {
1146
1200
  this.dbxCalendarScheduleSelectionStore.setInitialSelectionState(this.initialSelectionState);
1147
1201
  }
@@ -1154,6 +1208,7 @@ class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
1154
1208
  this._syncSub.destroy();
1155
1209
  this._valueSub.destroy();
1156
1210
  this._filterSub.destroy();
1211
+ this._timezoneSub.destroy();
1157
1212
  this._minMaxDateRangeSub.destroy();
1158
1213
  this._exclusionsSub.destroy();
1159
1214
  this._formControlObs.complete();
@@ -1238,7 +1293,8 @@ DbxFormCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", v
1238
1293
  CalendarModule,
1239
1294
  CalendarDayModule,
1240
1295
  FlexLayoutModule,
1241
- CalendarWeekModule
1296
+ CalendarWeekModule,
1297
+ DbxDatePipeModule
1242
1298
  ], exports: [
1243
1299
  //
1244
1300
  DbxScheduleSelectionCalendarComponent,
@@ -1275,7 +1331,8 @@ DbxFormCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", v
1275
1331
  CalendarModule,
1276
1332
  CalendarDayModule,
1277
1333
  FlexLayoutModule,
1278
- CalendarWeekModule
1334
+ CalendarWeekModule,
1335
+ DbxDatePipeModule
1279
1336
  ] });
1280
1337
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormCalendarModule, decorators: [{
1281
1338
  type: NgModule,
@@ -1301,7 +1358,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
1301
1358
  CalendarModule,
1302
1359
  CalendarDayModule,
1303
1360
  FlexLayoutModule,
1304
- CalendarWeekModule
1361
+ CalendarWeekModule,
1362
+ DbxDatePipeModule
1305
1363
  ],
1306
1364
  declarations,
1307
1365
  exports: declarations
@@ -1356,5 +1414,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
1356
1414
  * Generated bundle index. Do not edit.
1357
1415
  */
1358
1416
 
1359
- 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, DbxScheduleSelectionCalendarSelectionToggleButtonComponent, calendarScheduleMaxDate, calendarScheduleMinAndMaxDateRange, calendarScheduleMinDate, computeCalendarScheduleSelectionDateBlockRange, computeCalendarScheduleSelectionRange, computeScheduleSelectionRangeAndExclusion, computeScheduleSelectionValue, dateScheduleRangeField, dbxScheduleSelectionCalendarDateDaysFormDayFields, dbxScheduleSelectionCalendarDateDaysFormFields, defaultCalendarScheduleSelectionCellContentFactory, finalizeNewCalendarScheduleSelectionState, initialCalendarScheduleSelectionState, isEnabledDayInCalendarScheduleSelectionState, noSelectionCalendarScheduleSelectionState, provideCalendarScheduleSelectionStoreIfParentIsUnavailable, updateStateWithChangedDates, updateStateWithChangedRange, updateStateWithChangedScheduleDays, updateStateWithComputeSelectionResultRelativeToFilter, updateStateWithDateScheduleRangeValue, updateStateWithExclusions, updateStateWithFilter, updateStateWithInitialSelectionState, updateStateWithMinMaxDateRange };
1417
+ 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, DbxScheduleSelectionCalendarSelectionToggleButtonComponent, calendarScheduleMaxDate, calendarScheduleMinAndMaxDateRange, calendarScheduleMinDate, calendarScheduleStartBeingUsedFromFilter, computeCalendarScheduleSelectionDateBlockRange, computeCalendarScheduleSelectionRange, computeScheduleSelectionRangeAndExclusion, computeScheduleSelectionValue, dateScheduleRangeField, dbxScheduleSelectionCalendarDateDaysFormDayFields, dbxScheduleSelectionCalendarDateDaysFormFields, defaultCalendarScheduleSelectionCellContentFactory, finalizeNewCalendarScheduleSelectionState, initialCalendarScheduleSelectionState, isEnabledDayInCalendarScheduleSelectionState, noSelectionCalendarScheduleSelectionState, provideCalendarScheduleSelectionStoreIfParentIsUnavailable, updateStateWithChangedDates, updateStateWithChangedRange, updateStateWithChangedScheduleDays, updateStateWithComputeSelectionResultRelativeToFilter, updateStateWithDateScheduleRangeValue, updateStateWithExclusions, updateStateWithFilter, updateStateWithInitialSelectionState, updateStateWithMinMaxDateRange, updateStateWithTimezoneValue };
1360
1418
  //# sourceMappingURL=dereekb-dbx-form-calendar.mjs.map