@dereekb/dbx-form 13.4.1 → 13.5.0

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.
Files changed (38) hide show
  1. package/fesm2022/dereekb-dbx-form-calendar.mjs +310 -98
  2. package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
  3. package/fesm2022/dereekb-dbx-form-mapbox.mjs +33 -21
  4. package/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
  5. package/fesm2022/dereekb-dbx-form-quiz.mjs +81 -64
  6. package/fesm2022/dereekb-dbx-form-quiz.mjs.map +1 -1
  7. package/fesm2022/dereekb-dbx-form.mjs +613 -400
  8. package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
  9. package/lib/extension/_extension.scss +0 -13
  10. package/lib/extension/calendar/_calendar.scss +0 -19
  11. package/lib/form/_form.scss +0 -19
  12. package/lib/formly/_formly.scss +0 -19
  13. package/lib/formly/field/_field.scss +0 -6
  14. package/lib/formly/field/checklist/_checklist.scss +0 -24
  15. package/lib/formly/field/component/_component.scss +0 -19
  16. package/lib/formly/field/selection/_selection.scss +0 -4
  17. package/lib/formly/field/selection/list/_list.scss +0 -19
  18. package/lib/formly/field/selection/pickable/_pickable.scss +0 -19
  19. package/lib/formly/field/selection/searchable/_searchable.scss +0 -19
  20. package/lib/formly/field/selection/sourceselect/_sourceselect.scss +0 -19
  21. package/lib/formly/field/texteditor/_texteditor.scss +10 -40
  22. package/lib/formly/field/value/_value.scss +0 -6
  23. package/lib/formly/field/value/array/_array.scss +3 -32
  24. package/lib/formly/field/value/boolean/_boolean.scss +0 -19
  25. package/lib/formly/field/value/date/_date.scss +1 -24
  26. package/lib/formly/field/value/number/_number.scss +0 -18
  27. package/lib/formly/field/value/phone/_phone.scss +4 -35
  28. package/lib/formly/field/value/text/_text.scss +0 -19
  29. package/lib/formly/field/wrapper/_wrapper.scss +0 -19
  30. package/lib/formly/form/_form.scss +0 -19
  31. package/lib/layout/_layout.scss +0 -19
  32. package/lib/style/_all-typography.scss +0 -13
  33. package/lib/style/_theming.scss +1 -200
  34. package/package.json +16 -16
  35. package/types/dereekb-dbx-form-calendar.d.ts +208 -0
  36. package/types/dereekb-dbx-form-mapbox.d.ts +12 -0
  37. package/types/dereekb-dbx-form-quiz.d.ts +17 -0
  38. package/types/dereekb-dbx-form.d.ts +401 -91
@@ -15,8 +15,7 @@ import * as i1$1 from '@dereekb/dbx-core';
15
15
  import { TimezoneAbbreviationPipe, switchMapDbxInjectionComponentConfig, DbxInjectionComponent } from '@dereekb/dbx-core';
16
16
  import { toSignal, toObservable } from '@angular/core/rxjs-interop';
17
17
  import { MatDialog } from '@angular/material/dialog';
18
- import * as i1$5 from 'angular-calendar';
19
- import { CalendarModule } from 'angular-calendar';
18
+ import { CalendarMonthViewComponent, CalendarDatePipe } from 'angular-calendar';
20
19
  import { DbxCalendarStore, prepareAndSortCalendarEvents, DbxCalendarBaseComponent } from '@dereekb/dbx-web/calendar';
21
20
  import * as i2 from '@angular/forms';
22
21
  import { FormGroup, FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
@@ -27,9 +26,15 @@ import { MatDatepickerModule } from '@angular/material/datepicker';
27
26
  import { NgClass } from '@angular/common';
28
27
  import * as i1$4 from '@angular/material/icon';
29
28
  import { MatIconModule } from '@angular/material/icon';
30
- import * as i1$6 from '@ngx-formly/core';
29
+ import * as i1$5 from '@ngx-formly/core';
31
30
  import { FormlyModule } from '@ngx-formly/core';
32
31
 
32
+ /**
33
+ * Creates a Formly field configuration for a date schedule range picker with calendar-based selection.
34
+ *
35
+ * @param config - Optional schedule range field configuration overrides
36
+ * @returns A validated Formly field configuration for date schedule range selection
37
+ */
33
38
  function dateScheduleRangeField(config = {}) {
34
39
  const { key = 'schedule', appearance, hideCustomize, allowTextInput, filter, outputTimezone, initialSelectionState, computeSelectionResultRelativeToFilter, exclusions, defaultScheduleDays, minMaxDateRange, cellContentFactory, dialogContentConfig, customDetailsConfig } = config;
35
40
  const fieldConfig = {
@@ -80,6 +85,9 @@ const defaultCalendarScheduleSelectionCellContentFactory = (day) => {
80
85
  icon = 'check_box_outline_blank';
81
86
  text = 'Add';
82
87
  break;
88
+ default:
89
+ // meta.state is undefined when no metadata is attached to the day cell
90
+ break;
83
91
  }
84
92
  const result = {
85
93
  icon,
@@ -88,6 +96,12 @@ const defaultCalendarScheduleSelectionCellContentFactory = (day) => {
88
96
  return result;
89
97
  };
90
98
 
99
+ /**
100
+ * Creates the default initial state for the calendar schedule selection store,
101
+ * using the current system timezone and all days of the week enabled.
102
+ *
103
+ * @returns A fresh CalendarScheduleSelectionState with default values
104
+ */
91
105
  function initialCalendarScheduleSelectionState() {
92
106
  const defaultScheduleDays = new Set([DateCellScheduleDayCode.WEEKDAY, DateCellScheduleDayCode.WEEKEND]);
93
107
  const allowedDaysOfWeek = expandDateCellScheduleDayCodesToDayOfWeekSet(defaultScheduleDays);
@@ -134,18 +148,42 @@ function calendarScheduleMinAndMaxDateRangeRelativeToFilter(x) {
134
148
  }
135
149
  return calendarScheduleMinAndMaxDateRange(input);
136
150
  }
151
+ /**
152
+ * Computes the effective min and max date range by combining the filter and the explicit minMaxDateRange constraints.
153
+ *
154
+ * @param x - State containing filter and minMaxDateRange to compute from
155
+ * @returns A partial date range with the effective start and end boundaries
156
+ */
137
157
  function calendarScheduleMinAndMaxDateRange(x) {
138
158
  return {
139
159
  start: calendarScheduleMinDate(x) || undefined,
140
160
  end: calendarScheduleMaxDate(x) || undefined
141
161
  };
142
162
  }
163
+ /**
164
+ * Returns the effective minimum date by taking the latest start date between the filter and minMaxDateRange.
165
+ *
166
+ * @param x - State containing filter and minMaxDateRange
167
+ * @returns The latest start date, or undefined if none
168
+ */
143
169
  function calendarScheduleMinDate(x) {
144
170
  return findMaxDate([x.filter?.start, x.minMaxDateRange?.start]);
145
171
  }
172
+ /**
173
+ * Returns the effective maximum date by taking the earliest end date between the filter and minMaxDateRange.
174
+ *
175
+ * @param x - State containing filter and minMaxDateRange
176
+ * @returns The earliest end date, or undefined if none
177
+ */
146
178
  function calendarScheduleMaxDate(x) {
147
179
  return findMinDate([x.filter?.end, x.minMaxDateRange?.end]);
148
180
  }
181
+ /**
182
+ * Returns whether the filter's start date is being used as the effective start for the selection result computation.
183
+ *
184
+ * @param x - State containing filter and computeSelectionResultRelativeToFilter
185
+ * @returns True if the filter start is being used for the selection result
186
+ */
149
187
  function calendarScheduleStartBeingUsedFromFilter(x) {
150
188
  return x.computeSelectionResultRelativeToFilter && x.filter?.start != null; // may be using either
151
189
  }
@@ -165,7 +203,7 @@ class DbxCalendarScheduleSelectionStore extends ComponentStore {
165
203
  minMaxDateRange$ = this.state$.pipe(map(calendarScheduleMinAndMaxDateRange), distinctUntilChanged(isSameDateRange), shareReplay(1));
166
204
  minDate$ = this.minMaxDateRange$.pipe(map((x) => x?.start), distinctUntilChanged(isSameDateDay), shareReplay(1));
167
205
  maxDate$ = this.minMaxDateRange$.pipe(map((x) => x?.end), distinctUntilChanged(isSameDateDay), shareReplay(1));
168
- hasConfiguredMinMaxRange$ = this.minMaxDateRange$.pipe(map((x) => x != null && x.start != null && x.end != null), distinctUntilChanged(), shareReplay(1));
206
+ hasConfiguredMinMaxRange$ = this.minMaxDateRange$.pipe(map((x) => x?.start != null && x.end != null), distinctUntilChanged(), shareReplay(1));
169
207
  inputStart$ = this.state$.pipe(map((x) => x.inputStart), distinctUntilChanged(isSameDate), shareReplay(1));
170
208
  inputEnd$ = this.state$.pipe(map((x) => x.inputEnd), distinctUntilChanged(isSameDate), shareReplay(1));
171
209
  currentInputRange$ = this.state$.pipe(map(({ inputStart, inputEnd }) => ({ start: inputStart, end: inputEnd })), distinctUntilChanged((a, b) => isSameDateRange(a, b)), map((x) => ({ inputStart: x.start, inputEnd: x.end })), map((x) => {
@@ -273,12 +311,19 @@ class DbxCalendarScheduleSelectionStore extends ComponentStore {
273
311
  * Should typically not be used by the user directly with the intention of the parent synchronizing to this state.
274
312
  */
275
313
  setViewReadonlyState = this.updater((state, isViewReadonly) => ({ ...state, isViewReadonly }));
276
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxCalendarScheduleSelectionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
277
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxCalendarScheduleSelectionStore });
314
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxCalendarScheduleSelectionStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
315
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxCalendarScheduleSelectionStore });
278
316
  }
279
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxCalendarScheduleSelectionStore, decorators: [{
317
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxCalendarScheduleSelectionStore, decorators: [{
280
318
  type: Injectable
281
319
  }], ctorParameters: () => [] });
320
+ /**
321
+ * Updates the state with an initial selection (all or none) and applies it when no dates are currently toggled.
322
+ *
323
+ * @param state - The current selection state
324
+ * @param initialSelectionState - The initial selection mode ('all' or 'none')
325
+ * @returns The updated selection state
326
+ */
282
327
  function updateStateWithInitialSelectionState(state, initialSelectionState) {
283
328
  const { toggledIndexes } = state;
284
329
  if (toggledIndexes.size === 0 && initialSelectionState === 'all') {
@@ -286,6 +331,13 @@ function updateStateWithInitialSelectionState(state, initialSelectionState) {
286
331
  }
287
332
  return { ...state, initialSelectionState };
288
333
  }
334
+ /**
335
+ * Updates the computeSelectionResultRelativeToFilter flag and recalculates the state if the value changed.
336
+ *
337
+ * @param currentState - The current selection state
338
+ * @param computeSelectionResultRelativeToFilter - Whether to compute results relative to the filter
339
+ * @returns The updated selection state
340
+ */
289
341
  function updateStateWithComputeSelectionResultRelativeToFilter(currentState, computeSelectionResultRelativeToFilter) {
290
342
  let state = { ...currentState, computeSelectionResultRelativeToFilter };
291
343
  if (Boolean(currentState.computeSelectionResultRelativeToFilter) !== Boolean(computeSelectionResultRelativeToFilter)) {
@@ -293,6 +345,13 @@ function updateStateWithComputeSelectionResultRelativeToFilter(currentState, com
293
345
  }
294
346
  return state;
295
347
  }
348
+ /**
349
+ * Updates the state with date exclusions, converting input dates/ranges to cell indexes and reapplying the filter.
350
+ *
351
+ * @param state - The current selection state
352
+ * @param inputExclusions - Dates, date ranges, or cell indexes to exclude
353
+ * @returns The updated selection state with exclusions applied
354
+ */
296
355
  function updateStateWithExclusions(state, inputExclusions) {
297
356
  let computedExclusions;
298
357
  if (inputExclusions) {
@@ -303,6 +362,13 @@ function updateStateWithExclusions(state, inputExclusions) {
303
362
  state = { ...state, inputExclusions, computedExclusions };
304
363
  return updateStateWithFilter(state, state.filter);
305
364
  }
365
+ /**
366
+ * Sets the min/max date range constraint on the state, normalizing start to startOfDay and end to endOfDay.
367
+ *
368
+ * @param state - The current selection state
369
+ * @param minMaxDateRange - The min/max boundary dates to enforce
370
+ * @returns The updated selection state with the boundary applied
371
+ */
306
372
  function updateStateWithMinMaxDateRange(state, minMaxDateRange) {
307
373
  if (minMaxDateRange != null && !isInfiniteDateRange(minMaxDateRange)) {
308
374
  state = {
@@ -318,6 +384,23 @@ function updateStateWithMinMaxDateRange(state, minMaxDateRange) {
318
384
  }
319
385
  return updateStateWithFilter(state, state.filter);
320
386
  }
387
+ /**
388
+ * Applies a date cell schedule filter to the selection state, computing the enabled day function
389
+ * from the filter, exclusions, and min/max date range constraints.
390
+ *
391
+ * @param currentState - The current selection state
392
+ * @param inputFilter - The filter configuration to apply
393
+ * @returns The updated selection state with the filter applied
394
+ */
395
+ /**
396
+ * Applies a date cell schedule filter to the selection state, computing the enabled day function
397
+ * from the filter, exclusions, and min/max date range constraints.
398
+ *
399
+ * @param currentState - The current selection state
400
+ * @param inputFilter - The filter configuration to apply
401
+ * @returns The updated selection state with the filter applied
402
+ */
403
+ // eslint-disable-next-line sonarjs/cognitive-complexity
321
404
  function updateStateWithFilter(currentState, inputFilter) {
322
405
  const { computedExclusions: exclusions, minMaxDateRange, systemTimezone } = currentState;
323
406
  let isEnabledFilterDay = () => true;
@@ -412,7 +495,7 @@ function updateStateWithFilter(currentState, inputFilter) {
412
495
  }
413
496
  let nextState = { ...currentState, filter, isEnabledFilterDay };
414
497
  // For the same reason as above, use the filter's start date as the relative start if applicable.
415
- if (filter && filter.start) {
498
+ if (filter?.start) {
416
499
  let startForSystemTimezone = filter.start;
417
500
  if (filter.timezone) {
418
501
  const timezoneNormal = dateTimezoneUtcNormal(filter.timezone);
@@ -433,6 +516,13 @@ function updateStateWithFilter(currentState, inputFilter) {
433
516
  }
434
517
  return nextState;
435
518
  }
519
+ /**
520
+ * Updates the output timezone and transforms the current selection value to reflect the new timezone.
521
+ *
522
+ * @param state - The current selection state
523
+ * @param timezone - The target timezone string
524
+ * @returns The updated selection state with timezone-adjusted values
525
+ */
436
526
  function updateStateWithTimezoneValue(state, timezone) {
437
527
  const { currentSelectionValue } = state;
438
528
  const timezoneNormal = timezone ? dateTimezoneUtcNormal({ timezone }) : undefined;
@@ -452,6 +542,14 @@ function updateStateWithTimezoneValue(state, timezone) {
452
542
  return { ...state, outputTimezone: timezone, outputTimezoneNormal: timezoneNormal }; // no change in value
453
543
  }
454
544
  }
545
+ /**
546
+ * Updates the state from an external date cell schedule range value, converting timezone-aware inputs
547
+ * to system time and synchronizing the internal selection indexes.
548
+ *
549
+ * @param state - The current selection state
550
+ * @param inputChange - The date cell schedule range to apply
551
+ * @returns The updated selection state
552
+ */
455
553
  function updateStateWithDateCellScheduleRangeValue(state, inputChange) {
456
554
  const { currentSelectionValue, systemTimezone } = state;
457
555
  const currentDateCellScheduleRange = currentSelectionValue?.dateScheduleRange; // current range is always in system time
@@ -492,6 +590,13 @@ function updateStateWithDateCellScheduleRangeValue(state, inputChange) {
492
590
  }
493
591
  }
494
592
  }
593
+ /**
594
+ * Updates the default schedule day codes (used when no explicit schedule days are set) and recalculates allowed days.
595
+ *
596
+ * @param state - The current selection state
597
+ * @param change - The new default schedule day codes
598
+ * @returns The updated selection state
599
+ */
495
600
  function updateStateWithChangedDefaultScheduleDays(state, change) {
496
601
  const { defaultScheduleDays: currentDefaultScheduleDays } = state;
497
602
  const defaultScheduleDays = new Set(change ?? fullWeekDateCellScheduleDayCodes());
@@ -502,6 +607,13 @@ function updateStateWithChangedDefaultScheduleDays(state, change) {
502
607
  return finalizeUpdateStateWithChangedScheduleDays(state, { ...state, defaultScheduleDays });
503
608
  }
504
609
  }
610
+ /**
611
+ * Updates the explicit schedule day codes override and recalculates allowed days of the week.
612
+ *
613
+ * @param state - The current selection state
614
+ * @param change - The new schedule day codes, or null/undefined to clear the override
615
+ * @returns The updated selection state
616
+ */
505
617
  function updateStateWithChangedScheduleDays(state, change) {
506
618
  const { scheduleDays: currentScheduleDays } = state;
507
619
  const scheduleDays = new Set(change ?? []);
@@ -524,6 +636,13 @@ function updateStateWithChangedScheduleDays(state, change) {
524
636
  return finalizeUpdateStateWithChangedScheduleDays(state, { ...state, scheduleDays: newScheduleDays ?? undefined });
525
637
  }
526
638
  }
639
+ /**
640
+ * Switches between single and multiple selection mode, trimming the selection to a single value when switching to single mode.
641
+ *
642
+ * @param state - The current selection state
643
+ * @param selectionMode - The new selection mode
644
+ * @returns The updated selection state
645
+ */
527
646
  function updateStateWithSelectionMode(state, selectionMode) {
528
647
  const { selectionMode: currentSelectionMode } = state;
529
648
  if (currentSelectionMode !== selectionMode) {
@@ -540,6 +659,13 @@ function updateStateWithSelectionMode(state, selectionMode) {
540
659
  return state;
541
660
  }
542
661
  }
662
+ /**
663
+ * Finalizes a schedule days change by recalculating allowed days of the week and updating toggled indexes accordingly.
664
+ *
665
+ * @param previousState - The state before the schedule days change
666
+ * @param nextState - The state with updated schedule day codes
667
+ * @returns The finalized selection state with recalculated allowed days and toggled indexes
668
+ */
543
669
  function finalizeUpdateStateWithChangedScheduleDays(previousState, nextState) {
544
670
  const previousScheduleDays = previousState.effectiveScheduleDays;
545
671
  const nextScheduleDays = nextState.scheduleDays ?? nextState.defaultScheduleDays;
@@ -557,8 +683,25 @@ function finalizeUpdateStateWithChangedScheduleDays(previousState, nextState) {
557
683
  });
558
684
  }
559
685
  }
686
+ /**
687
+ * Applies date changes (toggle, add, remove, set, selectAll, or reset) to the calendar selection state,
688
+ * updating toggled indexes and input start/end accordingly.
689
+ *
690
+ * @param state - The current selection state
691
+ * @param change - The date changes to apply
692
+ * @returns The updated selection state
693
+ */
694
+ /**
695
+ * Applies date changes (toggle, add, remove, set, selectAll, or reset) to the calendar selection state,
696
+ * updating toggled indexes and input start/end accordingly.
697
+ *
698
+ * @param state - The current selection state
699
+ * @param change - The date changes to apply
700
+ * @returns The updated selection state
701
+ */
702
+ // eslint-disable-next-line sonarjs/cognitive-complexity
560
703
  function updateStateWithChangedDates(state, change) {
561
- const { selectionMode, allowedDaysOfWeek, indexFactory, indexDayOfWeek, inputStart: currentInputStart, inputEnd: currentInputEnd, minMaxDateRange, filter } = state;
704
+ const { selectionMode, allowedDaysOfWeek, indexFactory, indexDayOfWeek, inputStart: currentInputStart, inputEnd: currentInputEnd, minMaxDateRange: _minMaxDateRange, filter: _filter } = state;
562
705
  const { start: minDateFromFilter, end: maxDateFromFilter } = calendarScheduleMinAndMaxDateRangeRelativeToFilter(state);
563
706
  let inputStart = currentInputStart;
564
707
  let inputEnd = currentInputEnd;
@@ -612,6 +755,9 @@ function updateStateWithChangedDates(state, change) {
612
755
  inputEnd = null;
613
756
  set = [];
614
757
  break;
758
+ default:
759
+ // selectAll is undefined or null; no bulk selection change needed
760
+ break;
615
761
  }
616
762
  const inputSetIndexes = asIndexes(set);
617
763
  toggledIndexes = new Set(inputSetIndexes);
@@ -691,9 +837,22 @@ function updateStateWithChangedDates(state, change) {
691
837
  return noSelectionCalendarScheduleSelectionState(nextState);
692
838
  }
693
839
  }
840
+ /**
841
+ * Clears all date selections from the state, retaining other configuration like schedule days and filter.
842
+ *
843
+ * @param state - The current selection state
844
+ * @returns The state with all selections cleared
845
+ */
694
846
  function noSelectionCalendarScheduleSelectionState(state) {
695
847
  return finalizeNewCalendarScheduleSelectionState({ ...state, toggledIndexes: new Set(), inputStart: null, inputEnd: null });
696
848
  }
849
+ /**
850
+ * Updates the selection state with a new start/end date range, retaining toggled indexes within the new range bounds.
851
+ *
852
+ * @param state - The current selection state
853
+ * @param change - The new input start and end dates
854
+ * @returns The updated selection state
855
+ */
697
856
  function updateStateWithChangedRange(state, change) {
698
857
  const { inputStart: currentInputStart, inputEnd: currentInputEnd, indexFactory } = state;
699
858
  const { start: minDate, end: maxDate } = calendarScheduleMinAndMaxDateRange(state);
@@ -706,18 +865,30 @@ function updateStateWithChangedRange(state, change) {
706
865
  // retain all indexes that are within the new range
707
866
  const minIndex = indexFactory(inputStart);
708
867
  const maxIndex = indexFactory(inputEnd) + 1;
709
- const currentIndexes = Array.from(state.toggledIndexes);
868
+ const currentIndexes = [...state.toggledIndexes];
710
869
  const isInCurrentRange = isIndexNumberInIndexRangeFunction({ minIndex, maxIndex });
711
870
  const excludedIndexesInNewRange = currentIndexes.filter(isInCurrentRange);
712
871
  const toggledIndexes = new Set(excludedIndexesInNewRange);
713
872
  const nextState = { ...state, toggledIndexes, inputStart, inputEnd };
714
873
  return finalizeNewCalendarScheduleSelectionState(nextState);
715
874
  }
875
+ /**
876
+ * Finalizes a partially-built state by recomputing the isEnabledDay function and the current selection value.
877
+ *
878
+ * @param nextState - The partially-built selection state to finalize
879
+ * @returns The finalized selection state
880
+ */
716
881
  function finalizeNewCalendarScheduleSelectionState(nextState) {
717
882
  nextState.isEnabledDay = isEnabledDayInCalendarScheduleSelectionState(nextState);
718
883
  nextState.currentSelectionValue = computeScheduleSelectionValue(nextState);
719
884
  return nextState;
720
885
  }
886
+ /**
887
+ * Builds a decision function that determines whether a given day index is enabled (selected) in the current state.
888
+ *
889
+ * @param state - The selection state to derive the enabled-day function from
890
+ * @returns A function that returns true if the given day is enabled/selected
891
+ */
721
892
  function isEnabledDayInCalendarScheduleSelectionState(state) {
722
893
  const { allowedDaysOfWeek, indexFactory, inputStart, inputEnd, indexDayOfWeek, systemTimezone } = state;
723
894
  let isInStartAndEndRange;
@@ -733,10 +904,16 @@ function isEnabledDayInCalendarScheduleSelectionState(state) {
733
904
  const isInSelectedRange = isInStartAndEndRange(index);
734
905
  const isSelected = state.toggledIndexes.has(index);
735
906
  const isAllowedDayOfWeek = allowedDaysOfWeek.has(dayOfWeek);
736
- const result = isAllowedDayOfWeek && ((isInSelectedRange && !isSelected) || (isSelected && !isInSelectedRange));
737
- return result;
907
+ return isAllowedDayOfWeek && ((isInSelectedRange && !isSelected) || (isSelected && !isInSelectedRange));
738
908
  };
739
909
  }
910
+ /**
911
+ * Computes the output DateCellScheduleDateRange value from the current selection state,
912
+ * applying timezone offsets and filter-relative computations as needed.
913
+ *
914
+ * @param state - The current selection state to compute from
915
+ * @returns The computed selection value, or null if nothing is selected
916
+ */
740
917
  function computeScheduleSelectionValue(state) {
741
918
  const { indexFactory: systemIndexFactory, allowedDaysOfWeek, effectiveScheduleDays, indexDayOfWeek, computeSelectionResultRelativeToFilter, filter, systemTimezone } = state;
742
919
  let timezone = systemTimezone;
@@ -767,8 +944,8 @@ function computeScheduleSelectionValue(state) {
767
944
  }
768
945
  const excluded = computeSelectionResultRelativeToFilter
769
946
  ? allExcluded.filter((x) => {
770
- const isExcludedIndex = allowedDaysOfWeek.has(indexDayOfWeek(x)); // ???
771
- return isExcludedIndex;
947
+ // ???
948
+ return allowedDaysOfWeek.has(indexDayOfWeek(x));
772
949
  })
773
950
  : allExcluded;
774
951
  const offsetExcluded = excluded.map((x) => x - indexOffset); // set to the proper offset
@@ -792,6 +969,13 @@ function computeScheduleSelectionValue(state) {
792
969
  minMaxRange: { start, end }
793
970
  };
794
971
  }
972
+ /**
973
+ * Computes the selected date range with its corresponding cell range and all excluded day indexes.
974
+ * Returns null if no days are selected.
975
+ *
976
+ * @param state - The current selection state
977
+ * @returns The range and exclusion data, or null if nothing is selected
978
+ */
795
979
  function computeScheduleSelectionRangeAndExclusion(state) {
796
980
  const { start: currentStart, isEnabledDay, isEnabledFilterDay, systemTimezone } = state;
797
981
  const dateFactory = dateCellTimingStartDateFactory({ startsAt: currentStart, timezone: systemTimezone });
@@ -802,8 +986,7 @@ function computeScheduleSelectionRangeAndExclusion(state) {
802
986
  const start = dateFactory(dateCellRange.i);
803
987
  const end = dateFactory(dateCellRange.to);
804
988
  const excluded = range(dateCellRange.i, dateCellRange.to + 1).filter((x) => {
805
- const isExcludedIndex = !isEnabledDay(x) || !isEnabledFilterDay(x);
806
- return isExcludedIndex;
989
+ return !isEnabledDay(x) || !isEnabledFilterDay(x);
807
990
  });
808
991
  const result = {
809
992
  dateCellRange,
@@ -813,15 +996,27 @@ function computeScheduleSelectionRangeAndExclusion(state) {
813
996
  };
814
997
  return result;
815
998
  }
999
+ /**
1000
+ * Computes the selected date range (start and end dates) from the current selection state.
1001
+ *
1002
+ * @param state - The current selection state
1003
+ * @returns The selected date range, or undefined if nothing is selected
1004
+ */
816
1005
  function computeCalendarScheduleSelectionRange(state) {
817
1006
  const dateFactory = dateCellTimingDateFactory({ startsAt: state.start, timezone: state.systemTimezone });
818
1007
  const dateCellRange = computeCalendarScheduleSelectionDateCellRange(state);
819
1008
  const dateRange = dateCellRange != null ? { start: dateFactory(dateCellRange.i), end: dateFactory(dateCellRange.to) } : undefined;
820
1009
  return dateRange;
821
1010
  }
1011
+ /**
1012
+ * Computes the date cell index range (i, to) that spans all selected and toggled days in the current state.
1013
+ *
1014
+ * @param state - The current selection state
1015
+ * @returns The cell range spanning all selected days, or undefined if nothing is selected
1016
+ */
822
1017
  function computeCalendarScheduleSelectionDateCellRange(state) {
823
1018
  const { allowedDaysOfWeek, indexFactory, inputStart, inputEnd, indexDayOfWeek, isEnabledDay, isEnabledFilterDay } = state;
824
- const enabledExclusionIndexes = Array.from(state.toggledIndexes).filter((i) => allowedDaysOfWeek.has(indexDayOfWeek(i)));
1019
+ const enabledExclusionIndexes = [...state.toggledIndexes].filter((i) => allowedDaysOfWeek.has(indexDayOfWeek(i)));
825
1020
  const minAndMaxSelectedValues = minAndMaxNumber(enabledExclusionIndexes);
826
1021
  let startRange;
827
1022
  let endRange;
@@ -869,17 +1064,17 @@ function computeCalendarScheduleSelectionDateCellRange(state) {
869
1064
  */
870
1065
  class DbxCalendarScheduleSelectionStoreProviderBlock {
871
1066
  dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore, { skipSelf: true });
872
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxCalendarScheduleSelectionStoreProviderBlock, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
873
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxCalendarScheduleSelectionStoreProviderBlock });
1067
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxCalendarScheduleSelectionStoreProviderBlock, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1068
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxCalendarScheduleSelectionStoreProviderBlock });
874
1069
  }
875
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxCalendarScheduleSelectionStoreProviderBlock, decorators: [{
1070
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxCalendarScheduleSelectionStoreProviderBlock, decorators: [{
876
1071
  type: Injectable
877
1072
  }] });
878
1073
  class DbxCalendarScheduleSelectionStoreInjectionBlockDirective {
879
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxCalendarScheduleSelectionStoreInjectionBlockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
880
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DbxCalendarScheduleSelectionStoreInjectionBlockDirective, isStandalone: true, selector: "[dbxCalendarScheduleSelectionStoreParentBlocker]", providers: [DbxCalendarScheduleSelectionStoreProviderBlock], ngImport: i0 });
1074
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxCalendarScheduleSelectionStoreInjectionBlockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1075
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.3", type: DbxCalendarScheduleSelectionStoreInjectionBlockDirective, isStandalone: true, selector: "[dbxCalendarScheduleSelectionStoreParentBlocker]", providers: [DbxCalendarScheduleSelectionStoreProviderBlock], ngImport: i0 });
881
1076
  }
882
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxCalendarScheduleSelectionStoreInjectionBlockDirective, decorators: [{
1077
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxCalendarScheduleSelectionStoreInjectionBlockDirective, decorators: [{
883
1078
  type: Directive,
884
1079
  args: [{
885
1080
  selector: '[dbxCalendarScheduleSelectionStoreParentBlocker]',
@@ -898,7 +1093,7 @@ function provideCalendarScheduleSelectionStoreIfParentIsUnavailable() {
898
1093
  return {
899
1094
  provide: DbxCalendarScheduleSelectionStore,
900
1095
  useFactory: (parentInjector, dbxCalendarScheduleSelectionStoreInjectionBlock, dbxCalendarScheduleSelectionStore) => {
901
- if (!dbxCalendarScheduleSelectionStore || (dbxCalendarScheduleSelectionStore && dbxCalendarScheduleSelectionStoreInjectionBlock != null && dbxCalendarScheduleSelectionStoreInjectionBlock.dbxCalendarScheduleSelectionStore === dbxCalendarScheduleSelectionStore)) {
1096
+ if (!dbxCalendarScheduleSelectionStore || (dbxCalendarScheduleSelectionStore && dbxCalendarScheduleSelectionStoreInjectionBlock?.dbxCalendarScheduleSelectionStore === dbxCalendarScheduleSelectionStore)) {
902
1097
  // create a new dbxCalendarScheduleSelectionStore to use
903
1098
  const injector = Injector.create({ providers: [{ provide: DbxCalendarScheduleSelectionStore }], parent: parentInjector });
904
1099
  dbxCalendarScheduleSelectionStore = injector.get(DbxCalendarScheduleSelectionStore);
@@ -909,10 +1104,21 @@ function provideCalendarScheduleSelectionStoreIfParentIsUnavailable() {
909
1104
  };
910
1105
  }
911
1106
 
1107
+ /**
1108
+ * Creates form fields for selecting which days of the week are enabled in a schedule selection calendar,
1109
+ * wrapped in a responsive flex layout.
1110
+ *
1111
+ * @returns An array of Formly field configs with toggle fields for each day of the week
1112
+ */
912
1113
  function dbxScheduleSelectionCalendarDateDaysFormFields() {
913
1114
  const fields = dbxScheduleSelectionCalendarDateDaysFormDayFields();
914
1115
  return [flexLayoutWrapper(fields, { relative: true, size: 3 })];
915
1116
  }
1117
+ /**
1118
+ * Creates an array of toggle field configs, one for each day of the week, keyed by lowercase day name.
1119
+ *
1120
+ * @returns An array of toggle Formly field configs for each day of the week
1121
+ */
916
1122
  function dbxScheduleSelectionCalendarDateDaysFormDayFields() {
917
1123
  return getDaysOfWeekNames(false).map((dayOfWeekName) => {
918
1124
  return toggleField({
@@ -924,10 +1130,10 @@ function dbxScheduleSelectionCalendarDateDaysFormDayFields() {
924
1130
 
925
1131
  class DbxScheduleSelectionCalendarDateDaysFormComponent extends AbstractSyncFormlyFormDirective {
926
1132
  fields = dbxScheduleSelectionCalendarDateDaysFormFields();
927
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarDateDaysFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
928
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxScheduleSelectionCalendarDateDaysFormComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-date-days-form", providers: dbxFormlyFormComponentProviders(), usesInheritance: true, ngImport: i0, template: "<dbx-formly></dbx-formly>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxFormlyFormComponentImportsModule }, { kind: "component", type: i1.DbxFormlyComponent, selector: "dbx-formly", exportAs: ["formly"] }, { kind: "ngmodule", type: DbxFormFormlyWrapperModule }, { kind: "ngmodule", type: DbxFormFormlyBooleanFieldModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1133
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarDateDaysFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1134
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxScheduleSelectionCalendarDateDaysFormComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-date-days-form", providers: dbxFormlyFormComponentProviders(), usesInheritance: true, ngImport: i0, template: "<dbx-formly></dbx-formly>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxFormlyFormComponentImportsModule }, { kind: "component", type: i1.DbxFormlyComponent, selector: "dbx-formly", exportAs: ["formly"] }, { kind: "ngmodule", type: DbxFormFormlyWrapperModule }, { kind: "ngmodule", type: DbxFormFormlyBooleanFieldModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
929
1135
  }
930
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarDateDaysFormComponent, decorators: [{
1136
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarDateDaysFormComponent, decorators: [{
931
1137
  type: Component,
932
1138
  args: [{
933
1139
  selector: 'dbx-schedule-selection-calendar-date-days-form',
@@ -946,22 +1152,21 @@ class DbxScheduleSelectionCalendarDateDaysComponent {
946
1152
  isFormModified = (value) => {
947
1153
  const newSetValue = new Set(dateCellScheduleDayCodesFromEnabledDays(value));
948
1154
  return this.dbxCalendarScheduleSelectionStore.scheduleDays$.pipe(map((currentSet) => {
949
- const result = !dateCellScheduleDayCodesAreSetsEquivalent(newSetValue, currentSet);
950
- return result;
1155
+ return !dateCellScheduleDayCodesAreSetsEquivalent(newSetValue, currentSet);
951
1156
  }));
952
1157
  };
953
1158
  updateScheduleDays = (value) => {
954
1159
  this.dbxCalendarScheduleSelectionStore.setScheduleDays(new Set(dateCellScheduleDayCodesFromEnabledDays(value)));
955
1160
  return of(true);
956
1161
  };
957
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarDateDaysComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
958
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxScheduleSelectionCalendarDateDaysComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-date-days", ngImport: i0, template: `
1162
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarDateDaysComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1163
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxScheduleSelectionCalendarDateDaysComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-date-days", ngImport: i0, template: `
959
1164
  <div class="dbx-schedule-selection-calendar-date-days" dbxAction dbxActionAutoTrigger dbxActionEnforceModified [useInstantTriggerPreset]="true" [dbxActionHandler]="updateScheduleDays">
960
1165
  <dbx-schedule-selection-calendar-date-days-form dbxActionForm [dbxFormSource]="template$" [dbxActionFormIsModified]="isFormModified"></dbx-schedule-selection-calendar-date-days-form>
961
1166
  </div>
962
1167
  `, isInline: true, dependencies: [{ kind: "component", type: DbxScheduleSelectionCalendarDateDaysFormComponent, selector: "dbx-schedule-selection-calendar-date-days-form" }, { kind: "directive", type: DbxFormSourceDirective, selector: "[dbxFormSource]", inputs: ["dbxFormSourceMode", "dbxFormSource"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i1$1.DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i1$1.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i1$1.DbxActionEnforceModifiedDirective, selector: "[dbxActionEnforceModified]", inputs: ["dbxActionEnforceModified"] }, { kind: "directive", type: i1$1.DbxActionAutoTriggerDirective, selector: "dbxActionAutoTrigger,[dbxActionAutoTrigger]", inputs: ["triggerDebounce", "triggerThrottle", "triggerErrorThrottle", "maxErrorsForThrottle", "triggerLimit", "dbxActionAutoTrigger", "useFastTriggerPreset", "useInstantTriggerPreset"] }, { kind: "directive", type: DbxActionFormDirective, selector: "[dbxActionForm]", inputs: ["dbxActionFormDisabledOnWorking", "dbxActionFormIsValid", "dbxActionFormIsEqual", "dbxActionFormIsModified", "dbxActionFormMapValue"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
963
1168
  }
964
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarDateDaysComponent, decorators: [{
1169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarDateDaysComponent, decorators: [{
965
1170
  type: Component,
966
1171
  args: [{
967
1172
  selector: 'dbx-schedule-selection-calendar-date-days',
@@ -981,12 +1186,12 @@ class DbxScheduleSelectionCalendarDateRangeComponent {
981
1186
  dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);
982
1187
  matFormFieldDefaultOptions = inject(MAT_FORM_FIELD_DEFAULT_OPTIONS, { optional: true });
983
1188
  picker = viewChild.required('picker');
984
- required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : []));
985
- openPickerOnTextClick = input(true, ...(ngDevMode ? [{ debugName: "openPickerOnTextClick" }] : []));
986
- label = input('Enter a date range', ...(ngDevMode ? [{ debugName: "label" }] : []));
987
- hint = input(...(ngDevMode ? [undefined, { debugName: "hint" }] : []));
988
- disabled = input(...(ngDevMode ? [undefined, { debugName: "disabled" }] : []));
989
- showCustomize = input(false, ...(ngDevMode ? [{ debugName: "showCustomize" }] : []));
1189
+ required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
1190
+ openPickerOnTextClick = input(true, ...(ngDevMode ? [{ debugName: "openPickerOnTextClick" }] : /* istanbul ignore next */ []));
1191
+ label = input('Enter a date range', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
1192
+ hint = input(...(ngDevMode ? [undefined, { debugName: "hint" }] : /* istanbul ignore next */ []));
1193
+ disabled = input(...(ngDevMode ? [undefined, { debugName: "disabled" }] : /* istanbul ignore next */ []));
1194
+ showCustomize = input(false, ...(ngDevMode ? [{ debugName: "showCustomize" }] : /* istanbul ignore next */ []));
990
1195
  timezone$ = this.dbxCalendarScheduleSelectionStore.effectiveOutputTimezone$;
991
1196
  _disabledEffect = effect(() => {
992
1197
  const disabled = this.disabled();
@@ -996,7 +1201,7 @@ class DbxScheduleSelectionCalendarDateRangeComponent {
996
1201
  else {
997
1202
  this.range.enable();
998
1203
  }
999
- }, ...(ngDevMode ? [{ debugName: "_disabledEffect" }] : []));
1204
+ }, ...(ngDevMode ? [{ debugName: "_disabledEffect" }] : /* istanbul ignore next */ []));
1000
1205
  _pickerOpened = new BehaviorSubject(false);
1001
1206
  _syncSub = new SubscriptionObject();
1002
1207
  _valueSub = new SubscriptionObject();
@@ -1005,7 +1210,7 @@ class DbxScheduleSelectionCalendarDateRangeComponent {
1005
1210
  end: new FormControl(null)
1006
1211
  });
1007
1212
  errorStateMatcher = {
1008
- isErrorState: (control, form) => {
1213
+ isErrorState: (control, _form) => {
1009
1214
  if (control) {
1010
1215
  return (control.invalid && (control.dirty || control.touched)) || (control.touched && this.range.invalid);
1011
1216
  }
@@ -1050,15 +1255,14 @@ class DbxScheduleSelectionCalendarDateRangeComponent {
1050
1255
  }), shareReplay(1));
1051
1256
  datePickerFilter$ = combineLatest([this.dbxCalendarScheduleSelectionStore.isEnabledFilterDayFunction$, this.dbxCalendarScheduleSelectionStore.isInAllowedDaysOfWeekFunction$]).pipe(map(([isEnabled, isAllowedDayOfWeek]) => {
1052
1257
  const fn = (date) => {
1053
- const result = date ? isAllowedDayOfWeek(date) && isEnabled(date) : true;
1054
- return result;
1258
+ return date ? isAllowedDayOfWeek(date) && isEnabled(date) : true;
1055
1259
  };
1056
1260
  return fn;
1057
1261
  }), shareReplay(1));
1058
1262
  timezoneSignal = toSignal(this.timezone$);
1059
1263
  timezoneReleventDateSignal = toSignal(this.timezoneReleventDate$, { initialValue: new Date() });
1060
1264
  isCustomizedSignal = toSignal(this.isCustomized$, { initialValue: false });
1061
- showCustomLabelSignal = computed(() => this.showCustomize() && this.isCustomizedSignal(), ...(ngDevMode ? [{ debugName: "showCustomLabelSignal" }] : []));
1265
+ showCustomLabelSignal = computed(() => this.showCustomize() && this.isCustomizedSignal(), ...(ngDevMode ? [{ debugName: "showCustomLabelSignal" }] : /* istanbul ignore next */ []));
1062
1266
  currentErrorMessageSignal = toSignal(this.currentErrorMessage$);
1063
1267
  datePickerFilterSignal = toSignal(this.datePickerFilter$, { initialValue: (() => true) });
1064
1268
  _requiredUpdateValidatorsEffect = effect(() => {
@@ -1066,7 +1270,7 @@ class DbxScheduleSelectionCalendarDateRangeComponent {
1066
1270
  ? [
1067
1271
  (control) => {
1068
1272
  const range = control.value;
1069
- if (!range || !range.start || !range.end) {
1273
+ if (!range?.start || !range.end) {
1070
1274
  return { required: true };
1071
1275
  }
1072
1276
  return null;
@@ -1074,7 +1278,7 @@ class DbxScheduleSelectionCalendarDateRangeComponent {
1074
1278
  ]
1075
1279
  : [];
1076
1280
  this.range.setValidators(validators);
1077
- }, ...(ngDevMode ? [{ debugName: "_requiredUpdateValidatorsEffect" }] : []));
1281
+ }, ...(ngDevMode ? [{ debugName: "_requiredUpdateValidatorsEffect" }] : /* istanbul ignore next */ []));
1078
1282
  ngOnInit() {
1079
1283
  this._syncSub.subscription = this.dbxCalendarScheduleSelectionStore.currentInputRange$.subscribe((x) => {
1080
1284
  this.range.setValue({
@@ -1117,17 +1321,17 @@ class DbxScheduleSelectionCalendarDateRangeComponent {
1117
1321
  pickerClosed() {
1118
1322
  this._pickerOpened.next(false);
1119
1323
  }
1120
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarDateRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1121
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DbxScheduleSelectionCalendarDateRangeComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-date-range", inputs: { required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, openPickerOnTextClick: { classPropertyName: "openPickerOnTextClick", publicName: "openPickerOnTextClick", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, showCustomize: { classPropertyName: "showCustomize", publicName: "showCustomize", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true, isSignal: true }], ngImport: i0, template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n <div class=\"dbx-schedule-selection-calendar-date-range-field-content\">\n <!-- Primary Content -->\n <div class=\"dbx-flex-bar\">\n @if (showCustomLabelSignal()) {\n <div class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n }\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle class=\"mat-datepicker-button-highlight\" matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input (click)=\"clickedDateRangeInput()\" [required]=\"required()\" [dateFilter]=\"datePickerFilterSignal()\" [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 @if (timezoneSignal()) {\n <span class=\"dbx-schedule-selection-timezone dbx-faint dbx-nowrap dbx-icon-spacer\">{{ timezoneSignal() | timezoneAbbreviation: timezoneReleventDateSignal() }}</span>\n }\n @if (showCustomize()) {\n <div>\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n }\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n </div>\n <!-- Custom Content -->\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n @if (currentErrorMessageSignal()) {\n <mat-error>{{ currentErrorMessageSignal() }}</mat-error>\n }\n <mat-hint>{{ hint() }}</mat-hint>\n</mat-form-field>\n", dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i1$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i3.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i3.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i3.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i3.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "pipe", type: TimezoneAbbreviationPipe, name: "timezoneAbbreviation" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1324
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarDateRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1325
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: DbxScheduleSelectionCalendarDateRangeComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-date-range", inputs: { required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, openPickerOnTextClick: { classPropertyName: "openPickerOnTextClick", publicName: "openPickerOnTextClick", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, showCustomize: { classPropertyName: "showCustomize", publicName: "showCustomize", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true, isSignal: true }], ngImport: i0, template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n <div class=\"dbx-schedule-selection-calendar-date-range-field-content\">\n <!-- Primary Content -->\n <div class=\"dbx-flex-bar\">\n @if (showCustomLabelSignal()) {\n <div class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n }\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle class=\"mat-datepicker-button-highlight\" matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input (click)=\"clickedDateRangeInput()\" [required]=\"required()\" [dateFilter]=\"datePickerFilterSignal()\" [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 @if (timezoneSignal()) {\n <span class=\"dbx-schedule-selection-timezone dbx-faint dbx-nowrap dbx-icon-spacer\">{{ timezoneSignal() | timezoneAbbreviation: timezoneReleventDateSignal() }}</span>\n }\n @if (showCustomize()) {\n <div>\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n }\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n </div>\n <!-- Custom Content -->\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n @if (currentErrorMessageSignal()) {\n <mat-error>{{ currentErrorMessageSignal() }}</mat-error>\n }\n <mat-hint>{{ hint() }}</mat-hint>\n</mat-form-field>\n", dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i1$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i3.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i3.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i3.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i3.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "pipe", type: TimezoneAbbreviationPipe, name: "timezoneAbbreviation" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1122
1326
  }
1123
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarDateRangeComponent, decorators: [{
1327
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarDateRangeComponent, decorators: [{
1124
1328
  type: Component,
1125
1329
  args: [{ selector: 'dbx-schedule-selection-calendar-date-range', imports: [MatFormFieldModule, FormsModule, ReactiveFormsModule, DbxButtonSpacerDirective, MatDatepickerModule, TimezoneAbbreviationPipe], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n @if (label()) {\n <mat-label>{{ label() }}</mat-label>\n }\n <div class=\"dbx-schedule-selection-calendar-date-range-field-content\">\n <!-- Primary Content -->\n <div class=\"dbx-flex-bar\">\n @if (showCustomLabelSignal()) {\n <div class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n }\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle class=\"mat-datepicker-button-highlight\" matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input (click)=\"clickedDateRangeInput()\" [required]=\"required()\" [dateFilter]=\"datePickerFilterSignal()\" [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 @if (timezoneSignal()) {\n <span class=\"dbx-schedule-selection-timezone dbx-faint dbx-nowrap dbx-icon-spacer\">{{ timezoneSignal() | timezoneAbbreviation: timezoneReleventDateSignal() }}</span>\n }\n @if (showCustomize()) {\n <div>\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n }\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n </div>\n <!-- Custom Content -->\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n @if (currentErrorMessageSignal()) {\n <mat-error>{{ currentErrorMessageSignal() }}</mat-error>\n }\n <mat-hint>{{ hint() }}</mat-hint>\n</mat-form-field>\n" }]
1126
1330
  }], propDecorators: { picker: [{ type: i0.ViewChild, args: ['picker', { isSignal: true }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], openPickerOnTextClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "openPickerOnTextClick", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], showCustomize: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCustomize", required: false }] }] } });
1127
1331
 
1128
1332
  class DbxScheduleSelectionCalendarDatePopoverContentComponent {
1129
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarDatePopoverContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1130
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxScheduleSelectionCalendarDatePopoverContentComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-date-popover-content", ngImport: i0, template: `
1333
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarDatePopoverContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1334
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxScheduleSelectionCalendarDatePopoverContentComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-date-popover-content", ngImport: i0, template: `
1131
1335
  <dbx-content-container padding="min" topPadding="normal">
1132
1336
  <dbx-schedule-selection-calendar-date-range [openPickerOnTextClick]="false"></dbx-schedule-selection-calendar-date-range>
1133
1337
  <dbx-label-block header="Allowed Days Of Week">
@@ -1136,7 +1340,7 @@ class DbxScheduleSelectionCalendarDatePopoverContentComponent {
1136
1340
  </dbx-content-container>
1137
1341
  `, isInline: true, dependencies: [{ kind: "directive", type: DbxContentContainerDirective, selector: "dbx-content-container,[dbxContentContainer],.dbx-content-container", inputs: ["grow", "padding", "topPadding"] }, { kind: "component", type: DbxScheduleSelectionCalendarDateRangeComponent, selector: "dbx-schedule-selection-calendar-date-range", inputs: ["required", "openPickerOnTextClick", "label", "hint", "disabled", "showCustomize"] }, { kind: "component", type: DbxLabelBlockComponent, selector: "dbx-label-block", inputs: ["header"] }, { kind: "component", type: DbxScheduleSelectionCalendarDateDaysComponent, selector: "dbx-schedule-selection-calendar-date-days" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1138
1342
  }
1139
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarDatePopoverContentComponent, decorators: [{
1343
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarDatePopoverContentComponent, decorators: [{
1140
1344
  type: Component,
1141
1345
  args: [{
1142
1346
  selector: 'dbx-schedule-selection-calendar-date-popover-content',
@@ -1164,8 +1368,8 @@ class DbxScheduleSelectionCalendarDatePopoverComponent extends AbstractPopoverDi
1164
1368
  injector
1165
1369
  });
1166
1370
  }
1167
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarDatePopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1168
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxScheduleSelectionCalendarDatePopoverComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-date-popover", usesInheritance: true, ngImport: i0, template: `
1371
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarDatePopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1372
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxScheduleSelectionCalendarDatePopoverComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-date-popover", usesInheritance: true, ngImport: i0, template: `
1169
1373
  <dbx-popover-content>
1170
1374
  <dbx-popover-scroll-content>
1171
1375
  <dbx-schedule-selection-calendar-date-popover-content></dbx-schedule-selection-calendar-date-popover-content>
@@ -1173,7 +1377,7 @@ class DbxScheduleSelectionCalendarDatePopoverComponent extends AbstractPopoverDi
1173
1377
  </dbx-popover-content>
1174
1378
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: DbxPopoverInteractionModule }, { kind: "component", type: i1$3.DbxPopoverContentComponent, selector: "dbx-popover-content" }, { kind: "directive", type: i1$3.DbxPopoverScrollContentDirective, selector: "dbx-popover-scroll-content,[dbxPopoverScrollContent],.dbx-popover-scroll-content" }, { kind: "component", type: DbxScheduleSelectionCalendarDatePopoverContentComponent, selector: "dbx-schedule-selection-calendar-date-popover-content" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1175
1379
  }
1176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarDatePopoverComponent, decorators: [{
1380
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarDatePopoverComponent, decorators: [{
1177
1381
  type: Component,
1178
1382
  args: [{
1179
1383
  selector: 'dbx-schedule-selection-calendar-date-popover',
@@ -1214,12 +1418,12 @@ class DbxScheduleSelectionCalendarDatePopoverButtonComponent {
1214
1418
  DbxScheduleSelectionCalendarDatePopoverComponent.openPopover(this.popoverService, { origin: buttonElement, injector: this.injector });
1215
1419
  }
1216
1420
  }
1217
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarDatePopoverButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1218
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: DbxScheduleSelectionCalendarDatePopoverButtonComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-date-popover-button", viewQueries: [{ propertyName: "buttonPopoverOrigin", first: true, predicate: ["buttonPopoverOrigin"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
1421
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarDatePopoverButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1422
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.3", type: DbxScheduleSelectionCalendarDatePopoverButtonComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-date-popover-button", viewQueries: [{ propertyName: "buttonPopoverOrigin", first: true, predicate: ["buttonPopoverOrigin"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
1219
1423
  <dbx-button #buttonPopoverOrigin icon="date_range" [disabled]="disabledSignal()" [raised]="true" color="accent" [text]="buttonTextSignal()" (buttonClick)="openPopover()"></dbx-button>
1220
- `, isInline: true, dependencies: [{ kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1424
+ `, isInline: true, dependencies: [{ kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "allowClickPropagation", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1221
1425
  }
1222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarDatePopoverButtonComponent, decorators: [{
1426
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarDatePopoverButtonComponent, decorators: [{
1223
1427
  type: Component,
1224
1428
  args: [{
1225
1429
  selector: 'dbx-schedule-selection-calendar-date-popover-button',
@@ -1234,21 +1438,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1234
1438
 
1235
1439
  class DbxScheduleSelectionCalendarCellComponent {
1236
1440
  dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);
1237
- day = input.required(...(ngDevMode ? [{ debugName: "day" }] : []));
1441
+ day = input.required(...(ngDevMode ? [{ debugName: "day" }] : /* istanbul ignore next */ []));
1238
1442
  day$ = toObservable(this.day);
1239
1443
  cellContent$ = this.dbxCalendarScheduleSelectionStore.cellContentFactory$.pipe(switchMap((fn) => this.day$.pipe(map((x) => fn(x)))), shareReplay(1));
1240
1444
  contentSignal = toSignal(this.cellContent$, { initialValue: {} });
1241
- iconSignal = computed(() => this.contentSignal().icon, ...(ngDevMode ? [{ debugName: "iconSignal" }] : []));
1242
- textSignal = computed(() => this.contentSignal().text, ...(ngDevMode ? [{ debugName: "textSignal" }] : []));
1243
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1244
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DbxScheduleSelectionCalendarCellComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-cell", inputs: { day: { classPropertyName: "day", publicName: "day", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "dbx-schedule-selection-calendar-cell" }, ngImport: i0, template: `
1445
+ iconSignal = computed(() => this.contentSignal().icon, ...(ngDevMode ? [{ debugName: "iconSignal" }] : /* istanbul ignore next */ []));
1446
+ textSignal = computed(() => this.contentSignal().text, ...(ngDevMode ? [{ debugName: "textSignal" }] : /* istanbul ignore next */ []));
1447
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1448
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: DbxScheduleSelectionCalendarCellComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-cell", inputs: { day: { classPropertyName: "day", publicName: "day", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "dbx-schedule-selection-calendar-cell" }, ngImport: i0, template: `
1245
1449
  @if (iconSignal()) {
1246
1450
  <mat-icon>{{ iconSignal() }}</mat-icon>
1247
1451
  }
1248
1452
  <span>{{ textSignal() }}</span>
1249
1453
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1250
1454
  }
1251
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarCellComponent, decorators: [{
1455
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarCellComponent, decorators: [{
1252
1456
  type: Component,
1253
1457
  args: [{
1254
1458
  selector: 'dbx-schedule-selection-calendar-cell',
@@ -1271,7 +1475,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1271
1475
  * Toggle button for selecting and clearing the current selection.
1272
1476
  */
1273
1477
  class DbxScheduleSelectionCalendarSelectionToggleButtonComponent {
1274
- disabled = input(...(ngDevMode ? [undefined, { debugName: "disabled" }] : []));
1478
+ disabled = input(...(ngDevMode ? [undefined, { debugName: "disabled" }] : /* istanbul ignore next */ []));
1275
1479
  dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);
1276
1480
  selectionModeSignal = toSignal(this.dbxCalendarScheduleSelectionStore.selectionMode$, { initialValue: 'multiple' });
1277
1481
  nextToggleSelectionSignal = toSignal(this.dbxCalendarScheduleSelectionStore.nextToggleSelection$, { initialValue: 'none' });
@@ -1286,7 +1490,7 @@ class DbxScheduleSelectionCalendarSelectionToggleButtonComponent {
1286
1490
  disableButton = !nextToggleSelection;
1287
1491
  }
1288
1492
  return disableButton;
1289
- }, ...(ngDevMode ? [{ debugName: "disableButtonSignal" }] : []));
1493
+ }, ...(ngDevMode ? [{ debugName: "disableButtonSignal" }] : /* istanbul ignore next */ []));
1290
1494
  buttonDisplaySignal = computed(() => {
1291
1495
  const selectionMode = this.selectionModeSignal();
1292
1496
  const nextToggleSelection = this.nextToggleSelectionSignal();
@@ -1307,16 +1511,16 @@ class DbxScheduleSelectionCalendarSelectionToggleButtonComponent {
1307
1511
  break;
1308
1512
  }
1309
1513
  return buttonDisplay;
1310
- }, ...(ngDevMode ? [{ debugName: "buttonDisplaySignal" }] : []));
1514
+ }, ...(ngDevMode ? [{ debugName: "buttonDisplaySignal" }] : /* istanbul ignore next */ []));
1311
1515
  toggleSelection() {
1312
1516
  this.dbxCalendarScheduleSelectionStore.toggleSelection();
1313
1517
  }
1314
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarSelectionToggleButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1315
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: DbxScheduleSelectionCalendarSelectionToggleButtonComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-selection-toggle-button", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
1518
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarSelectionToggleButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1519
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.3", type: DbxScheduleSelectionCalendarSelectionToggleButtonComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-selection-toggle-button", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
1316
1520
  <dbx-button [disabled]="disableButtonSignal()" [buttonDisplay]="buttonDisplaySignal()" [raised]="true" (buttonClick)="toggleSelection()"></dbx-button>
1317
- `, isInline: true, dependencies: [{ kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1521
+ `, isInline: true, dependencies: [{ kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "allowClickPropagation", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1318
1522
  }
1319
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarSelectionToggleButtonComponent, decorators: [{
1523
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarSelectionToggleButtonComponent, decorators: [{
1320
1524
  type: Component,
1321
1525
  args: [{
1322
1526
  selector: 'dbx-schedule-selection-calendar-selection-toggle-button',
@@ -1329,7 +1533,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1329
1533
  }]
1330
1534
  }], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
1331
1535
 
1536
+ /**
1537
+ * Creates a factory that produces a beforeMonthViewRender handler for the schedule selection calendar.
1538
+ * The handler applies CSS classes and metadata to each day cell based on the current selection state.
1539
+ *
1540
+ * @param inputModifyFn - Optional function to further customize each day cell after default processing
1541
+ * @returns A factory function that accepts a state observable and produces a render handler
1542
+ */
1332
1543
  function dbxScheduleSelectionCalendarBeforeMonthViewRenderFactory(inputModifyFn) {
1544
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
1333
1545
  const modifyFn = inputModifyFn || (() => { });
1334
1546
  return (state$) => {
1335
1547
  return (renderEvent) => {
@@ -1373,8 +1585,8 @@ class DbxScheduleSelectionCalendarComponent {
1373
1585
  calendarStore = inject((DbxCalendarStore));
1374
1586
  dbxCalendarScheduleSelectionStore = inject(DbxCalendarScheduleSelectionStore);
1375
1587
  clickEvent = output();
1376
- config = input(...(ngDevMode ? [undefined, { debugName: "config" }] : []));
1377
- readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : []));
1588
+ config = input(...(ngDevMode ? [undefined, { debugName: "config" }] : /* istanbul ignore next */ []));
1589
+ readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
1378
1590
  _centerRangeSub = new SubscriptionObject();
1379
1591
  config$ = toObservable(this.config).pipe(distinctUntilChanged(), shareReplay(1));
1380
1592
  readonly$ = this.config$.pipe(switchMap((x) => (x?.readonly != null ? asObservableFromGetter(x.readonly) : of(undefined))), combineLatestWith(toObservable(this.readonly)), map(([configReadonly, inputReadonly]) => {
@@ -1458,12 +1670,12 @@ class DbxScheduleSelectionCalendarComponent {
1458
1670
  beforeMonthViewRender(renderEvent) {
1459
1671
  this.beforeMonthViewRenderSignal()?.(renderEvent);
1460
1672
  }
1461
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1462
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DbxScheduleSelectionCalendarComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clickEvent: "clickEvent" }, providers: [DbxCalendarStore], ngImport: i0, template: "<dbx-calendar-base class=\"dbx-schedule-selection-calendar\" [ngClass]=\"readonlySignal() ? 'dbx-schedule-selection-calendar-readonly' : ''\">\n <ng-container controls>\n @if (showClearSelectionButtonSignal()) {\n <dbx-schedule-selection-calendar-selection-toggle-button [disabled]=\"readonlySignal()\"></dbx-schedule-selection-calendar-selection-toggle-button>\n <dbx-button-spacer></dbx-button-spacer>\n }\n <dbx-injection [config]=\"datePopoverButtonInjectionConfigSignal()\"></dbx-injection>\n </ng-container>\n <div class=\"dbx-calendar-content dbx-calendar-content-month\">\n <mwl-calendar-month-view [refresh]=\"refresh$\" [viewDate]=\"viewDateSignal()!\" [events]=\"eventsSignal()\" (dayClicked)=\"dayClicked($event.day)\" (eventClicked)=\"eventClicked('Clicked', $event.event)\" (beforeViewRender)=\"beforeMonthViewRender($event)\" [cellTemplate]=\"monthDayCellTemplate\"></mwl-calendar-month-view>\n </div>\n</dbx-calendar-base>\n\n<!-- Cell -->\n<ng-template #monthDayCellTemplate let-day=\"day\" let-locale=\"locale\">\n <div class=\"cal-cell-top\">\n @if (day.badgeTotal > 0) {\n <span class=\"cal-day-badge\">{{ day.badgeTotal }}</span>\n }\n <span class=\"cal-day-number\">{{ day.date | calendarDate: 'monthViewDayNumber' : locale }}</span>\n </div>\n <dbx-schedule-selection-calendar-cell [day]=\"day\"></dbx-schedule-selection-calendar-cell>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "component", type: i1$5.CalendarMonthViewComponent, selector: "mwl-calendar-month-view", inputs: ["viewDate", "events", "excludeDays", "activeDayIsOpen", "activeDay", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "cellTemplate", "openDayEventsTemplate", "eventTitleTemplate", "eventActionsTemplate", "weekendDays"], outputs: ["beforeViewRender", "dayClicked", "eventClicked", "columnHeaderClicked", "eventTimesChanged"] }, { kind: "component", type: DbxCalendarBaseComponent, selector: "dbx-calendar-base" }, { kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }, { kind: "directive", type: DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "component", type: DbxScheduleSelectionCalendarCellComponent, selector: "dbx-schedule-selection-calendar-cell", inputs: ["day"] }, { kind: "component", type: DbxScheduleSelectionCalendarSelectionToggleButtonComponent, selector: "dbx-schedule-selection-calendar-selection-toggle-button", inputs: ["disabled"] }, { kind: "pipe", type: i1$5.CalendarDatePipe, name: "calendarDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1673
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1674
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.3", type: DbxScheduleSelectionCalendarComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clickEvent: "clickEvent" }, providers: [DbxCalendarStore], ngImport: i0, template: "<dbx-calendar-base class=\"dbx-schedule-selection-calendar\" [ngClass]=\"readonlySignal() ? 'dbx-schedule-selection-calendar-readonly' : ''\">\n <ng-container controls>\n @if (showClearSelectionButtonSignal()) {\n <dbx-schedule-selection-calendar-selection-toggle-button [disabled]=\"readonlySignal()\"></dbx-schedule-selection-calendar-selection-toggle-button>\n <dbx-button-spacer></dbx-button-spacer>\n }\n <dbx-injection [config]=\"datePopoverButtonInjectionConfigSignal()\"></dbx-injection>\n </ng-container>\n <div class=\"dbx-calendar-content dbx-calendar-content-month\">\n <mwl-calendar-month-view [refresh]=\"refresh$\" [viewDate]=\"viewDateSignal()!\" [events]=\"eventsSignal()\" (dayClicked)=\"dayClicked($event.day)\" (eventClicked)=\"eventClicked('Clicked', $event.event)\" (beforeViewRender)=\"beforeMonthViewRender($event)\" [cellTemplate]=\"monthDayCellTemplate\"></mwl-calendar-month-view>\n </div>\n</dbx-calendar-base>\n\n<!-- Cell -->\n<ng-template #monthDayCellTemplate let-day=\"day\" let-locale=\"locale\">\n <div class=\"cal-cell-top\">\n @if (day.badgeTotal > 0) {\n <span class=\"cal-day-badge\">{{ day.badgeTotal }}</span>\n }\n <span class=\"cal-day-number\">{{ day.date | calendarDate: 'monthViewDayNumber' : locale }}</span>\n </div>\n <dbx-schedule-selection-calendar-cell [day]=\"day\"></dbx-schedule-selection-calendar-cell>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: CalendarMonthViewComponent, selector: "mwl-calendar-month-view", inputs: ["viewDate", "events", "excludeDays", "activeDayIsOpen", "activeDay", "refresh", "locale", "tooltipPlacement", "tooltipTemplate", "tooltipAppendToBody", "tooltipDelay", "weekStartsOn", "headerTemplate", "cellTemplate", "openDayEventsTemplate", "eventTitleTemplate", "eventActionsTemplate", "weekendDays"], outputs: ["beforeViewRender", "dayClicked", "eventClicked", "columnHeaderClicked", "eventTimesChanged"] }, { kind: "component", type: DbxCalendarBaseComponent, selector: "dbx-calendar-base" }, { kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }, { kind: "directive", type: DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "component", type: DbxScheduleSelectionCalendarCellComponent, selector: "dbx-schedule-selection-calendar-cell", inputs: ["day"] }, { kind: "component", type: DbxScheduleSelectionCalendarSelectionToggleButtonComponent, selector: "dbx-schedule-selection-calendar-selection-toggle-button", inputs: ["disabled"] }, { kind: "pipe", type: CalendarDatePipe, name: "calendarDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1463
1675
  }
1464
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarComponent, decorators: [{
1676
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarComponent, decorators: [{
1465
1677
  type: Component,
1466
- args: [{ selector: 'dbx-schedule-selection-calendar', imports: [NgClass, CalendarModule, DbxCalendarBaseComponent, DbxInjectionComponent, DbxButtonSpacerDirective, DbxScheduleSelectionCalendarCellComponent, DbxScheduleSelectionCalendarSelectionToggleButtonComponent], providers: [DbxCalendarStore], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<dbx-calendar-base class=\"dbx-schedule-selection-calendar\" [ngClass]=\"readonlySignal() ? 'dbx-schedule-selection-calendar-readonly' : ''\">\n <ng-container controls>\n @if (showClearSelectionButtonSignal()) {\n <dbx-schedule-selection-calendar-selection-toggle-button [disabled]=\"readonlySignal()\"></dbx-schedule-selection-calendar-selection-toggle-button>\n <dbx-button-spacer></dbx-button-spacer>\n }\n <dbx-injection [config]=\"datePopoverButtonInjectionConfigSignal()\"></dbx-injection>\n </ng-container>\n <div class=\"dbx-calendar-content dbx-calendar-content-month\">\n <mwl-calendar-month-view [refresh]=\"refresh$\" [viewDate]=\"viewDateSignal()!\" [events]=\"eventsSignal()\" (dayClicked)=\"dayClicked($event.day)\" (eventClicked)=\"eventClicked('Clicked', $event.event)\" (beforeViewRender)=\"beforeMonthViewRender($event)\" [cellTemplate]=\"monthDayCellTemplate\"></mwl-calendar-month-view>\n </div>\n</dbx-calendar-base>\n\n<!-- Cell -->\n<ng-template #monthDayCellTemplate let-day=\"day\" let-locale=\"locale\">\n <div class=\"cal-cell-top\">\n @if (day.badgeTotal > 0) {\n <span class=\"cal-day-badge\">{{ day.badgeTotal }}</span>\n }\n <span class=\"cal-day-number\">{{ day.date | calendarDate: 'monthViewDayNumber' : locale }}</span>\n </div>\n <dbx-schedule-selection-calendar-cell [day]=\"day\"></dbx-schedule-selection-calendar-cell>\n</ng-template>\n" }]
1678
+ args: [{ selector: 'dbx-schedule-selection-calendar', imports: [NgClass, CalendarMonthViewComponent, CalendarDatePipe, DbxCalendarBaseComponent, DbxInjectionComponent, DbxButtonSpacerDirective, DbxScheduleSelectionCalendarCellComponent, DbxScheduleSelectionCalendarSelectionToggleButtonComponent], providers: [DbxCalendarStore], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<dbx-calendar-base class=\"dbx-schedule-selection-calendar\" [ngClass]=\"readonlySignal() ? 'dbx-schedule-selection-calendar-readonly' : ''\">\n <ng-container controls>\n @if (showClearSelectionButtonSignal()) {\n <dbx-schedule-selection-calendar-selection-toggle-button [disabled]=\"readonlySignal()\"></dbx-schedule-selection-calendar-selection-toggle-button>\n <dbx-button-spacer></dbx-button-spacer>\n }\n <dbx-injection [config]=\"datePopoverButtonInjectionConfigSignal()\"></dbx-injection>\n </ng-container>\n <div class=\"dbx-calendar-content dbx-calendar-content-month\">\n <mwl-calendar-month-view [refresh]=\"refresh$\" [viewDate]=\"viewDateSignal()!\" [events]=\"eventsSignal()\" (dayClicked)=\"dayClicked($event.day)\" (eventClicked)=\"eventClicked('Clicked', $event.event)\" (beforeViewRender)=\"beforeMonthViewRender($event)\" [cellTemplate]=\"monthDayCellTemplate\"></mwl-calendar-month-view>\n </div>\n</dbx-calendar-base>\n\n<!-- Cell -->\n<ng-template #monthDayCellTemplate let-day=\"day\" let-locale=\"locale\">\n <div class=\"cal-cell-top\">\n @if (day.badgeTotal > 0) {\n <span class=\"cal-day-badge\">{{ day.badgeTotal }}</span>\n }\n <span class=\"cal-day-number\">{{ day.date | calendarDate: 'monthViewDayNumber' : locale }}</span>\n </div>\n <dbx-schedule-selection-calendar-cell [day]=\"day\"></dbx-schedule-selection-calendar-cell>\n</ng-template>\n" }]
1467
1679
  }], propDecorators: { clickEvent: [{ type: i0.Output, args: ["clickEvent"] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }] } });
1468
1680
 
1469
1681
  /**
@@ -1494,8 +1706,8 @@ class DbxScheduleSelectionCalendarDateDialogComponent extends AbstractDialogDire
1494
1706
  }
1495
1707
  });
1496
1708
  }
1497
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarDateDialogComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1498
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxScheduleSelectionCalendarDateDialogComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
1709
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarDateDialogComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1710
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxScheduleSelectionCalendarDateDialogComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
1499
1711
  <dbx-dialog-content class="dbx-schedule-selection-calendar-date-dialog">
1500
1712
  <dbx-dialog-content-close (close)="close()"></dbx-dialog-content-close>
1501
1713
  <dbx-schedule-selection-calendar></dbx-schedule-selection-calendar>
@@ -1503,7 +1715,7 @@ class DbxScheduleSelectionCalendarDateDialogComponent extends AbstractDialogDire
1503
1715
  </dbx-dialog-content>
1504
1716
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: DbxDialogModule }, { kind: "directive", type: i1$3.DbxDialogContentDirective, selector: "dbx-dialog-content,[dbxDialogContent],.dbx-dialog-content", inputs: ["width"] }, { kind: "component", type: i1$3.DbxDialogContentFooterComponent, selector: "dbx-dialog-content-footer", inputs: ["config", "closeText", "buttonColor"], outputs: ["close"] }, { kind: "component", type: i1$3.DbxDialogContentCloseComponent, selector: "dbx-dialog-content-close", inputs: ["padded"], outputs: ["close"] }, { kind: "component", type: DbxScheduleSelectionCalendarComponent, selector: "dbx-schedule-selection-calendar", inputs: ["config", "readonly"], outputs: ["clickEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1505
1717
  }
1506
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarDateDialogComponent, decorators: [{
1718
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarDateDialogComponent, decorators: [{
1507
1719
  type: Component,
1508
1720
  args: [{
1509
1721
  template: `
@@ -1522,18 +1734,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1522
1734
  class DbxScheduleSelectionCalendarDateDialogButtonComponent {
1523
1735
  injector = inject(Injector);
1524
1736
  matDialog = inject(MatDialog);
1525
- buttonText = input('Customize', ...(ngDevMode ? [{ debugName: "buttonText" }] : []));
1526
- disabled = input(...(ngDevMode ? [undefined, { debugName: "disabled" }] : []));
1527
- contentConfig = input(...(ngDevMode ? [undefined, { debugName: "contentConfig" }] : []));
1737
+ buttonText = input('Customize', ...(ngDevMode ? [{ debugName: "buttonText" }] : /* istanbul ignore next */ []));
1738
+ disabled = input(...(ngDevMode ? [undefined, { debugName: "disabled" }] : /* istanbul ignore next */ []));
1739
+ contentConfig = input(...(ngDevMode ? [undefined, { debugName: "contentConfig" }] : /* istanbul ignore next */ []));
1528
1740
  clickCustomize() {
1529
1741
  DbxScheduleSelectionCalendarDateDialogComponent.openDialog(this.matDialog, { injector: this.injector, contentConfig: this.contentConfig() });
1530
1742
  }
1531
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarDateDialogButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1532
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: DbxScheduleSelectionCalendarDateDialogButtonComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-date-dialog-button", inputs: { buttonText: { classPropertyName: "buttonText", publicName: "buttonText", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, contentConfig: { classPropertyName: "contentConfig", publicName: "contentConfig", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
1743
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarDateDialogButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1744
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.3", type: DbxScheduleSelectionCalendarDateDialogButtonComponent, isStandalone: true, selector: "dbx-schedule-selection-calendar-date-dialog-button", inputs: { buttonText: { classPropertyName: "buttonText", publicName: "buttonText", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, contentConfig: { classPropertyName: "contentConfig", publicName: "contentConfig", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
1533
1745
  <dbx-button [raised]="true" color="accent" [text]="buttonText()" [disabled]="disabled()" (buttonClick)="clickCustomize()"></dbx-button>
1534
- `, isInline: true, dependencies: [{ kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1746
+ `, isInline: true, dependencies: [{ kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "allowClickPropagation", "mode"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1535
1747
  }
1536
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxScheduleSelectionCalendarDateDialogButtonComponent, decorators: [{
1748
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxScheduleSelectionCalendarDateDialogButtonComponent, decorators: [{
1537
1749
  type: Component,
1538
1750
  args: [{
1539
1751
  selector: 'dbx-schedule-selection-calendar-date-dialog-button',
@@ -1659,8 +1871,8 @@ class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
1659
1871
  this._exclusionsSub.destroy();
1660
1872
  this._formControlObs.complete();
1661
1873
  }
1662
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFormCalendarDateScheduleRangeFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1663
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DbxFormCalendarDateScheduleRangeFieldComponent, isStandalone: true, selector: "ng-component", providers: [provideCalendarScheduleSelectionStoreIfParentIsUnavailable()], usesInheritance: true, ngImport: i0, template: `
1874
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFormCalendarDateScheduleRangeFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1875
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.3", type: DbxFormCalendarDateScheduleRangeFieldComponent, isStandalone: true, selector: "ng-component", providers: [provideCalendarScheduleSelectionStoreIfParentIsUnavailable()], usesInheritance: true, ngImport: i0, template: `
1664
1876
  <div class="dbx-schedule-selection-field">
1665
1877
  <dbx-schedule-selection-calendar-date-range [openPickerOnTextClick]="openPickerOnTextClick" [showCustomize]="showCustomize" [required]="required" [disabled]="isReadonlyOrDisabled" [label]="label" [hint]="description">
1666
1878
  <dbx-schedule-selection-calendar-date-dialog-button customizeButton [disabled]="disabledSignal()" [contentConfig]="dialogContentConfig"></dbx-schedule-selection-calendar-date-dialog-button>
@@ -1669,7 +1881,7 @@ class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
1669
1881
  </div>
1670
1882
  `, isInline: true, dependencies: [{ kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }, { kind: "component", type: DbxScheduleSelectionCalendarDateRangeComponent, selector: "dbx-schedule-selection-calendar-date-range", inputs: ["required", "openPickerOnTextClick", "label", "hint", "disabled", "showCustomize"] }, { kind: "component", type: DbxScheduleSelectionCalendarDateDialogButtonComponent, selector: "dbx-schedule-selection-calendar-date-dialog-button", inputs: ["buttonText", "disabled", "contentConfig"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1671
1883
  }
1672
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFormCalendarDateScheduleRangeFieldComponent, decorators: [{
1884
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFormCalendarDateScheduleRangeFieldComponent, decorators: [{
1673
1885
  type: Component,
1674
1886
  args: [{
1675
1887
  template: `
@@ -1689,13 +1901,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1689
1901
 
1690
1902
  const importsAndExports$1 = [DbxFormCalendarDateScheduleRangeFieldComponent];
1691
1903
  class DbxFormDateScheduleRangeFieldModule {
1692
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFormDateScheduleRangeFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1693
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: DbxFormDateScheduleRangeFieldModule, imports: [DbxFormCalendarDateScheduleRangeFieldComponent, i1$6.FormlyModule], exports: [DbxFormCalendarDateScheduleRangeFieldComponent] });
1694
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFormDateScheduleRangeFieldModule, imports: [importsAndExports$1, FormlyModule.forChild({
1904
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFormDateScheduleRangeFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1905
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.3", ngImport: i0, type: DbxFormDateScheduleRangeFieldModule, imports: [DbxFormCalendarDateScheduleRangeFieldComponent, i1$5.FormlyModule], exports: [DbxFormCalendarDateScheduleRangeFieldComponent] });
1906
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFormDateScheduleRangeFieldModule, imports: [importsAndExports$1, FormlyModule.forChild({
1695
1907
  types: [{ name: 'date-schedule-range', component: DbxFormCalendarDateScheduleRangeFieldComponent }]
1696
1908
  })] });
1697
1909
  }
1698
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFormDateScheduleRangeFieldModule, decorators: [{
1910
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFormDateScheduleRangeFieldModule, decorators: [{
1699
1911
  type: NgModule,
1700
1912
  args: [{
1701
1913
  imports: [
@@ -1727,8 +1939,8 @@ const importsAndExports = [
1727
1939
  DbxFormFormlyWrapperModule
1728
1940
  ];
1729
1941
  class DbxFormCalendarModule {
1730
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFormCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1731
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.0", ngImport: i0, type: DbxFormCalendarModule, imports: [DbxScheduleSelectionCalendarComponent,
1942
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFormCalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1943
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.3", ngImport: i0, type: DbxFormCalendarModule, imports: [DbxScheduleSelectionCalendarComponent,
1732
1944
  DbxScheduleSelectionCalendarDateDaysComponent,
1733
1945
  DbxScheduleSelectionCalendarDateDaysFormComponent,
1734
1946
  DbxScheduleSelectionCalendarDateRangeComponent,
@@ -1755,7 +1967,7 @@ class DbxFormCalendarModule {
1755
1967
  DbxScheduleSelectionCalendarSelectionToggleButtonComponent,
1756
1968
  //
1757
1969
  DbxFormFormlyWrapperModule] });
1758
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFormCalendarModule, imports: [DbxScheduleSelectionCalendarComponent,
1970
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFormCalendarModule, imports: [DbxScheduleSelectionCalendarComponent,
1759
1971
  DbxScheduleSelectionCalendarDateDaysComponent,
1760
1972
  DbxScheduleSelectionCalendarDateDaysFormComponent,
1761
1973
  DbxScheduleSelectionCalendarDateRangeComponent,
@@ -1771,7 +1983,7 @@ class DbxFormCalendarModule {
1771
1983
  //
1772
1984
  DbxFormFormlyWrapperModule] });
1773
1985
  }
1774
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DbxFormCalendarModule, decorators: [{
1986
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.3", ngImport: i0, type: DbxFormCalendarModule, decorators: [{
1775
1987
  type: NgModule,
1776
1988
  args: [{
1777
1989
  imports: importsAndExports,