@dereekb/dbx-form 9.24.16 → 9.24.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/calendar/lib/calendar.module.d.ts +1 -1
- package/calendar/lib/calendar.schedule.selection.dialog.button.component.d.ts +2 -1
- package/calendar/lib/calendar.schedule.selection.range.component.d.ts +6 -1
- package/calendar/lib/field/schedule/calendar.schedule.field.component.d.ts +23 -0
- package/calendar/lib/field/schedule/calendar.schedule.module.d.ts +10 -9
- package/esm2020/calendar/lib/calendar.module.mjs +8 -2
- package/esm2020/calendar/lib/calendar.schedule.selection.component.mjs +24 -8
- package/esm2020/calendar/lib/calendar.schedule.selection.dialog.button.component.mjs +8 -6
- package/esm2020/calendar/lib/calendar.schedule.selection.popover.content.component.mjs +17 -12
- package/esm2020/calendar/lib/calendar.schedule.selection.range.component.mjs +45 -5
- package/esm2020/calendar/lib/field/schedule/calendar.schedule.field.component.mjs +23 -9
- package/esm2020/calendar/lib/field/schedule/calendar.schedule.field.mjs +5 -3
- package/esm2020/calendar/lib/field/schedule/calendar.schedule.module.mjs +7 -3
- package/esm2020/lib/formly/config/validation.mjs +3 -2
- package/esm2020/lib/formly/field/value/number/number.field.mjs +34 -1
- package/esm2020/lib/formly/field/value/number/number.field.module.mjs +5 -4
- package/esm2020/lib/formly/field/value/phone/phone.field.component.mjs +84 -5
- package/esm2020/lib/formly/field/value/phone/phone.field.mjs +9 -3
- package/esm2020/lib/validator/index.mjs +2 -1
- package/esm2020/lib/validator/phone.mjs +61 -0
- package/fesm2015/dereekb-dbx-form-calendar.mjs +123 -39
- package/fesm2015/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/fesm2015/dereekb-dbx-form.mjs +171 -11
- package/fesm2015/dereekb-dbx-form.mjs.map +1 -1
- package/fesm2020/dereekb-dbx-form-calendar.mjs +124 -41
- package/fesm2020/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/fesm2020/dereekb-dbx-form.mjs +182 -10
- package/fesm2020/dereekb-dbx-form.mjs.map +1 -1
- package/lib/extension/calendar/_calendar.scss +13 -0
- package/lib/formly/config/validation.d.ts +4 -0
- package/lib/formly/field/value/date/_date.scss +4 -0
- package/lib/formly/field/value/number/number.field.d.ts +27 -0
- package/lib/formly/field/value/number/number.field.module.d.ts +3 -2
- package/lib/formly/field/value/phone/_phone.scss +22 -13
- package/lib/formly/field/value/phone/phone.field.component.d.ts +19 -0
- package/lib/validator/index.d.ts +1 -0
- package/lib/validator/phone.d.ts +16 -0
- package/mapbox/package.json +4 -4
- package/package.json +4 -4
|
@@ -1,50 +1,50 @@
|
|
|
1
1
|
import * as i4$1 from '@dereekb/dbx-form';
|
|
2
2
|
import { formlyField, propsAndConfigForFieldConfig, flexLayoutWrapper, toggleField, AbstractSyncFormlyFormDirective, provideFormlyContext, DbxFormModule, DbxFormlyModule } from '@dereekb/dbx-form';
|
|
3
3
|
import * as i1$1 from '@dereekb/dbx-web';
|
|
4
|
-
import { AbstractPopoverDirective, AbstractDialogDirective, sanitizeDbxDialogContentConfig, DbxActionModule, DbxButtonModule, DbxDialogInteractionModule, DbxPopoverInteractionModule
|
|
4
|
+
import { AbstractPopoverDirective, AbstractDialogDirective, sanitizeDbxDialogContentConfig, DbxContentLayoutModule, DbxTextModule, DbxActionModule, DbxButtonModule, DbxDialogInteractionModule, DbxPopoverInteractionModule } from '@dereekb/dbx-web';
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
|
-
import { Injectable, SkipSelf, Directive, Injector, Optional, Component, Inject, Input,
|
|
6
|
+
import { Injectable, SkipSelf, Directive, Injector, Optional, Component, Inject, Input, ViewChild, ElementRef, ChangeDetectionStrategy, EventEmitter, Output, InjectionToken, NgModule } from '@angular/core';
|
|
7
7
|
import { FieldType } from '@ngx-formly/material';
|
|
8
|
-
import { switchMap, first, tap, map, distinctUntilChanged, shareReplay, of, combineLatestWith, BehaviorSubject,
|
|
8
|
+
import { switchMap, first, tap, map, distinctUntilChanged, shareReplay, of, combineLatestWith, BehaviorSubject, filter, startWith, throttleTime, combineLatest } from 'rxjs';
|
|
9
9
|
import { filterMaybe, distinctUntilHasDifferentValues, SubscriptionObject, asObservableFromGetter, asObservable } from '@dereekb/rxjs';
|
|
10
10
|
import { DateScheduleDayCode, expandDateScheduleDayCodesToDayOfWeekSet, dateTimingRelativeIndexFactory, dateBlockDayOfWeekFactory, findMaxDate, findMinDate, isSameDateRange, isSameDateDay, isSameDate, dateBlockTimingDateFactory, expandDateScheduleRange, formatToISO8601DayString, isSameDateScheduleRange, dateTimingRelativeIndexArrayFactory, isInfiniteDateRange, copyDateScheduleDateFilterConfig, dateScheduleDateFilter, dateTimezoneUtcNormal, expandDateScheduleDayCodes, isDateInDateRangeFunction, isDateWithinDateBlockRangeFunction, copyHoursAndMinutesFromDate, dateScheduleEncodedWeek, enabledDaysFromDateScheduleDayCodes, dateScheduleDayCodesFromEnabledDays, formatToMonthDayString, dateRange, DateRangeType } from '@dereekb/date';
|
|
11
11
|
import { setsAreEquivalent, mapValuesToSet, unique, mergeArrays, iterableToArray, range, toggleInSet, removeFromSet, addToSet, isIndexNumberInIndexRangeFunction, minAndMaxNumber, getDaysOfWeekNames, reduceBooleansWithAnd, mergeObjects, KeyValueTypleValueFilter } from '@dereekb/util';
|
|
12
12
|
import { ComponentStore } from '@ngrx/component-store';
|
|
13
13
|
import { startOfDay, endOfDay, isBefore, endOfWeek } from 'date-fns';
|
|
14
|
+
import * as i3$1 from '@dereekb/dbx-core';
|
|
15
|
+
import { switchMapDbxInjectionComponentConfig, DbxInjectionComponentModule, DbxDatePipeModule } from '@dereekb/dbx-core';
|
|
14
16
|
import * as i1 from '@dereekb/dbx-web/calendar';
|
|
15
17
|
import { prepareAndSortCalendarEvents, DbxCalendarStore, DbxCalendarModule } from '@dereekb/dbx-web/calendar';
|
|
16
18
|
import * as i3 from '@angular/forms';
|
|
17
19
|
import { FormGroup, FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
18
20
|
import * as i5 from '@angular/material/form-field';
|
|
19
21
|
import { MAT_FORM_FIELD_DEFAULT_OPTIONS, MatFormFieldModule } from '@angular/material/form-field';
|
|
20
|
-
import * as i4 from '@angular/common';
|
|
21
|
-
import { CommonModule } from '@angular/common';
|
|
22
22
|
import * as i7 from '@angular/material/datepicker';
|
|
23
23
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
24
|
-
import * as
|
|
25
|
-
import {
|
|
24
|
+
import * as i4 from '@angular/common';
|
|
25
|
+
import { CommonModule } from '@angular/common';
|
|
26
26
|
import * as i1$2 from '@angular/material/dialog';
|
|
27
27
|
import * as i6 from 'angular-calendar';
|
|
28
28
|
import { CalendarModule, CalendarDayModule, CalendarWeekModule } from 'angular-calendar';
|
|
29
29
|
import * as i7$1 from '@angular/flex-layout/extended';
|
|
30
30
|
import * as i3$2 from '@angular/material/icon';
|
|
31
31
|
import { MatIconModule } from '@angular/material/icon';
|
|
32
|
-
import * as i2 from '@angular/material/button';
|
|
33
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
34
32
|
import * as i1$3 from '@ngx-formly/core';
|
|
35
33
|
import { FormlyModule } from '@ngx-formly/core';
|
|
36
34
|
import { MatInputModule } from '@angular/material/input';
|
|
35
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
37
36
|
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
38
37
|
import { FlexLayoutModule } from '@angular/flex-layout';
|
|
39
38
|
|
|
40
39
|
function dateScheduleRangeField(config = {}) {
|
|
41
|
-
const { key = 'schedule', appearance, hideCustomize, filter, timezone, initialSelectionState, computeSelectionResultRelativeToFilter, exclusions, minMaxDateRange, cellContentFactory, dialogContentConfig, closeDialogConfig } = config;
|
|
40
|
+
const { key = 'schedule', appearance, hideCustomize, allowTextInput, filter, timezone, initialSelectionState, computeSelectionResultRelativeToFilter, exclusions, minMaxDateRange, cellContentFactory, dialogContentConfig, closeDialogConfig, customDetailsConfig } = config;
|
|
42
41
|
const fieldConfig = {
|
|
43
42
|
...formlyField({
|
|
44
43
|
key,
|
|
45
44
|
type: 'date-schedule-range',
|
|
46
45
|
...propsAndConfigForFieldConfig(config, {
|
|
47
46
|
label: config.label ?? 'Schedule',
|
|
47
|
+
allowTextInput,
|
|
48
48
|
appearance,
|
|
49
49
|
hideCustomize,
|
|
50
50
|
timezone,
|
|
@@ -55,7 +55,8 @@ function dateScheduleRangeField(config = {}) {
|
|
|
55
55
|
closeDialogConfig,
|
|
56
56
|
computeSelectionResultRelativeToFilter,
|
|
57
57
|
initialSelectionState,
|
|
58
|
-
cellContentFactory
|
|
58
|
+
cellContentFactory,
|
|
59
|
+
customDetailsConfig
|
|
59
60
|
})
|
|
60
61
|
})
|
|
61
62
|
};
|
|
@@ -696,6 +697,7 @@ class DbxScheduleSelectionCalendarDateRangeComponent {
|
|
|
696
697
|
this._required = new BehaviorSubject(false);
|
|
697
698
|
this.required$ = this._required.asObservable();
|
|
698
699
|
this.timezone$ = this.dbxCalendarScheduleSelectionStore.currentTimezone$;
|
|
700
|
+
this.openPickerOnTextClick = true;
|
|
699
701
|
this.label = 'Enter a date range';
|
|
700
702
|
this.showCustomize = false;
|
|
701
703
|
this._pickerOpened = new BehaviorSubject(false);
|
|
@@ -722,6 +724,34 @@ class DbxScheduleSelectionCalendarDateRangeComponent {
|
|
|
722
724
|
return currentDateRange ? currentDateRange.start ?? currentDateRange.end : undefined ?? new Date();
|
|
723
725
|
}), shareReplay(1));
|
|
724
726
|
this.isCustomized$ = this.dbxCalendarScheduleSelectionStore.isCustomized$;
|
|
727
|
+
this.currentErrorMessage$ = this.range.statusChanges.pipe(filter((x) => x === 'INVALID' || x === 'VALID'), map((x) => {
|
|
728
|
+
let currentErrorMessage;
|
|
729
|
+
if (x === 'INVALID') {
|
|
730
|
+
const { start, end } = this.range.controls;
|
|
731
|
+
if (this.range.hasError('required')) {
|
|
732
|
+
currentErrorMessage = 'Date range is required';
|
|
733
|
+
}
|
|
734
|
+
else if (start.hasError('matStartDateInvalid')) {
|
|
735
|
+
currentErrorMessage = 'Invalid start date';
|
|
736
|
+
}
|
|
737
|
+
else if (start.hasError('matDatepickerMin')) {
|
|
738
|
+
currentErrorMessage = 'Start date is too early';
|
|
739
|
+
}
|
|
740
|
+
else if (start.hasError('matDatepickerMax')) {
|
|
741
|
+
currentErrorMessage = 'Start date is too late';
|
|
742
|
+
}
|
|
743
|
+
else if (end.hasError('matStartDateInvalid')) {
|
|
744
|
+
currentErrorMessage = 'Invalid end date';
|
|
745
|
+
}
|
|
746
|
+
else if (end.hasError('matDatepickerMin')) {
|
|
747
|
+
currentErrorMessage = 'End date is too early';
|
|
748
|
+
}
|
|
749
|
+
else if (end.hasError('matDatepickerMax')) {
|
|
750
|
+
currentErrorMessage = 'End date is too late';
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
return currentErrorMessage;
|
|
754
|
+
}), shareReplay(1));
|
|
725
755
|
this.pickerOpened$ = this._pickerOpened.asObservable();
|
|
726
756
|
}
|
|
727
757
|
set disabled(disabled) {
|
|
@@ -784,6 +814,11 @@ class DbxScheduleSelectionCalendarDateRangeComponent {
|
|
|
784
814
|
set required(required) {
|
|
785
815
|
this._required.next(required);
|
|
786
816
|
}
|
|
817
|
+
clickedDateRangeInput() {
|
|
818
|
+
if (this.openPickerOnTextClick) {
|
|
819
|
+
this.picker.open();
|
|
820
|
+
}
|
|
821
|
+
}
|
|
787
822
|
pickerOpened() {
|
|
788
823
|
this._pickerOpened.next(true);
|
|
789
824
|
}
|
|
@@ -792,14 +827,19 @@ class DbxScheduleSelectionCalendarDateRangeComponent {
|
|
|
792
827
|
}
|
|
793
828
|
}
|
|
794
829
|
DbxScheduleSelectionCalendarDateRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxScheduleSelectionCalendarDateRangeComponent, deps: [{ token: i1.DbxCalendarStore }, { token: DbxCalendarScheduleSelectionStore }, { token: MAT_FORM_FIELD_DEFAULT_OPTIONS }], target: i0.ɵɵFactoryTarget.Component });
|
|
795
|
-
DbxScheduleSelectionCalendarDateRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxScheduleSelectionCalendarDateRangeComponent, selector: "dbx-schedule-selection-calendar-date-range", inputs: { label: "label", hint: "hint", disabled: "disabled", showCustomize: "showCustomize", required: "required" }, ngImport: i0, template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div *ngIf=\"showCustomize && (isCustomized$ | async)\" class=\"date-range-field-customized\">\n
|
|
830
|
+
DbxScheduleSelectionCalendarDateRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxScheduleSelectionCalendarDateRangeComponent, selector: "dbx-schedule-selection-calendar-date-range", inputs: { openPickerOnTextClick: "openPickerOnTextClick", label: "label", hint: "hint", disabled: "disabled", showCustomize: "showCustomize", required: "required" }, viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div class=\"dbx-schedule-selection-calendar-date-range-field-content\">\n <!-- Primary Content -->\n <div class=\"dbx-flex\">\n <div *ngIf=\"showCustomize && (isCustomized$ | async)\" class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input (click)=\"clickedDateRangeInput()\" [required]=\"required$ | async\" [min]=\"minDate$ | async\" [max]=\"maxDate$ | async\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input [errorStateMatcher]=\"errorStateMatcher\" matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input [errorStateMatcher]=\"errorStateMatcher\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n <span *ngIf=\"timezone$ | async\" class=\"dbx-flex-bar dbx-faint dbx-nowrap dbx-icon-spacer\">{{ timezone$ | async | timezoneAbbreviation: (timezoneReleventDate$ | async) }}</span>\n <div *ngIf=\"showCustomize\">\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n </div>\n <!-- Custom Content -->\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n <mat-error *ngIf=\"currentErrorMessage$ | async\">{{ currentErrorMessage$ | async }}</mat-error>\n <mat-hint>{{ hint }}</mat-hint>\n</mat-form-field>\n", dependencies: [{ kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$1.DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "component", type: i7.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i7.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i7.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i7.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i7.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TimezoneAbbreviationPipe, name: "timezoneAbbreviation" }] });
|
|
796
831
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxScheduleSelectionCalendarDateRangeComponent, decorators: [{
|
|
797
832
|
type: Component,
|
|
798
|
-
args: [{ selector: 'dbx-schedule-selection-calendar-date-range', template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div *ngIf=\"showCustomize && (isCustomized$ | async)\" class=\"date-range-field-customized\">\n
|
|
833
|
+
args: [{ selector: 'dbx-schedule-selection-calendar-date-range', template: "<mat-form-field class=\"dbx-schedule-selection-calendar-date-range-field\">\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\n <div class=\"dbx-schedule-selection-calendar-date-range-field-content\">\n <!-- Primary Content -->\n <div class=\"dbx-flex\">\n <div *ngIf=\"showCustomize && (isCustomized$ | async)\" class=\"date-range-field-customized\">\n <span class=\"dbx-accent-bg date-range-field-customized-text\">Custom</span>\n </div>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <dbx-button-spacer></dbx-button-spacer>\n <mat-date-range-input (click)=\"clickedDateRangeInput()\" [required]=\"required$ | async\" [min]=\"minDate$ | async\" [max]=\"maxDate$ | async\" [formGroup]=\"range\" [rangePicker]=\"picker\">\n <input [errorStateMatcher]=\"errorStateMatcher\" matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input [errorStateMatcher]=\"errorStateMatcher\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n <span *ngIf=\"timezone$ | async\" class=\"dbx-flex-bar dbx-faint dbx-nowrap dbx-icon-spacer\">{{ timezone$ | async | timezoneAbbreviation: (timezoneReleventDate$ | async) }}</span>\n <div *ngIf=\"showCustomize\">\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content select=\"[customizeButton]\"></ng-content>\n </div>\n <mat-date-range-picker #picker (opened)=\"pickerOpened()\" (closed)=\"pickerClosed()\"></mat-date-range-picker>\n </div>\n <!-- Custom Content -->\n <div>\n <ng-content></ng-content>\n </div>\n </div>\n <mat-error *ngIf=\"currentErrorMessage$ | async\">{{ currentErrorMessage$ | async }}</mat-error>\n <mat-hint>{{ hint }}</mat-hint>\n</mat-form-field>\n" }]
|
|
799
834
|
}], ctorParameters: function () { return [{ type: i1.DbxCalendarStore }, { type: DbxCalendarScheduleSelectionStore }, { type: undefined, decorators: [{
|
|
800
835
|
type: Inject,
|
|
801
836
|
args: [MAT_FORM_FIELD_DEFAULT_OPTIONS]
|
|
802
|
-
}] }]; }, propDecorators: {
|
|
837
|
+
}] }]; }, propDecorators: { openPickerOnTextClick: [{
|
|
838
|
+
type: Input
|
|
839
|
+
}], picker: [{
|
|
840
|
+
type: ViewChild,
|
|
841
|
+
args: ['picker']
|
|
842
|
+
}], label: [{
|
|
803
843
|
type: Input
|
|
804
844
|
}], hint: [{
|
|
805
845
|
type: Input
|
|
@@ -882,20 +922,24 @@ class DbxScheduleSelectionCalendarDatePopoverContentComponent {
|
|
|
882
922
|
}
|
|
883
923
|
DbxScheduleSelectionCalendarDatePopoverContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxScheduleSelectionCalendarDatePopoverContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
884
924
|
DbxScheduleSelectionCalendarDatePopoverContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxScheduleSelectionCalendarDatePopoverContentComponent, selector: "dbx-schedule-selection-calendar-date-popover-content", ngImport: i0, template: `
|
|
885
|
-
<
|
|
886
|
-
<dbx-schedule-selection-calendar-date-range></dbx-schedule-selection-calendar-date-range>
|
|
887
|
-
<dbx-
|
|
888
|
-
|
|
889
|
-
|
|
925
|
+
<dbx-content-container padding="min" topPadding="normal">
|
|
926
|
+
<dbx-schedule-selection-calendar-date-range [openPickerOnTextClick]="false"></dbx-schedule-selection-calendar-date-range>
|
|
927
|
+
<dbx-label-block header="Allowed Days Of Week">
|
|
928
|
+
<dbx-schedule-selection-calendar-date-days></dbx-schedule-selection-calendar-date-days>
|
|
929
|
+
</dbx-label-block>
|
|
930
|
+
</dbx-content-container>
|
|
931
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.DbxContentContainerDirective, selector: "dbx-content-container,[dbxContentContainer],.dbx-content-container", inputs: ["grow", "padding", "topPadding"] }, { kind: "component", type: i1$1.DbxLabelBlockComponent, selector: "dbx-label-block", inputs: ["header"] }, { kind: "component", type: DbxScheduleSelectionCalendarDateDaysComponent, selector: "dbx-schedule-selection-calendar-date-days" }, { kind: "component", type: DbxScheduleSelectionCalendarDateRangeComponent, selector: "dbx-schedule-selection-calendar-date-range", inputs: ["openPickerOnTextClick", "label", "hint", "disabled", "showCustomize", "required"] }] });
|
|
890
932
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxScheduleSelectionCalendarDatePopoverContentComponent, decorators: [{
|
|
891
933
|
type: Component,
|
|
892
934
|
args: [{
|
|
893
935
|
selector: 'dbx-schedule-selection-calendar-date-popover-content',
|
|
894
936
|
template: `
|
|
895
|
-
<
|
|
896
|
-
<dbx-schedule-selection-calendar-date-range></dbx-schedule-selection-calendar-date-range>
|
|
897
|
-
<dbx-
|
|
898
|
-
|
|
937
|
+
<dbx-content-container padding="min" topPadding="normal">
|
|
938
|
+
<dbx-schedule-selection-calendar-date-range [openPickerOnTextClick]="false"></dbx-schedule-selection-calendar-date-range>
|
|
939
|
+
<dbx-label-block header="Allowed Days Of Week">
|
|
940
|
+
<dbx-schedule-selection-calendar-date-days></dbx-schedule-selection-calendar-date-days>
|
|
941
|
+
</dbx-label-block>
|
|
942
|
+
</dbx-content-container>
|
|
899
943
|
`
|
|
900
944
|
}]
|
|
901
945
|
}] });
|
|
@@ -1153,20 +1197,36 @@ class DbxScheduleSelectionCalendarComponent {
|
|
|
1153
1197
|
this.calendarStore.setNavigationRangeLimit(this.dbxCalendarScheduleSelectionStore.minMaxDateRange$); // set navigation limit to the min/max allowed dates.
|
|
1154
1198
|
this.calendarStore.setShowPageButtons(true);
|
|
1155
1199
|
// when a new filter is set, if the first two pages of selectable indexes fit within the calendar month, focus on that calendar month.
|
|
1156
|
-
this._centerRangeSub.subscription = this.dbxCalendarScheduleSelectionStore.
|
|
1157
|
-
|
|
1200
|
+
this._centerRangeSub.subscription = this.dbxCalendarScheduleSelectionStore.currentDateRange$
|
|
1201
|
+
.pipe(first(), switchMap((x) => {
|
|
1202
|
+
let result = x
|
|
1203
|
+
? of([x, true])
|
|
1204
|
+
: this.dbxCalendarScheduleSelectionStore.minMaxDateRange$.pipe(first(), map((y) => [y, false]));
|
|
1205
|
+
return result;
|
|
1206
|
+
}))
|
|
1207
|
+
.subscribe(([x, isFromSelectedDateRange]) => {
|
|
1208
|
+
if (x?.start) {
|
|
1209
|
+
let tapDay;
|
|
1158
1210
|
const startMonth = dateRange({ date: x.start, type: DateRangeType.CALENDAR_MONTH });
|
|
1159
|
-
const
|
|
1160
|
-
if (
|
|
1161
|
-
const
|
|
1162
|
-
|
|
1211
|
+
const monthToFocus = endOfWeek(startMonth.start);
|
|
1212
|
+
if (x.end != null) {
|
|
1213
|
+
const endMonth = dateRange({ date: x.end, type: DateRangeType.CALENDAR_MONTH });
|
|
1214
|
+
if (isSameDate(startMonth.start, endMonth.start)) {
|
|
1215
|
+
tapDay = monthToFocus;
|
|
1216
|
+
}
|
|
1217
|
+
}
|
|
1218
|
+
if (!tapDay && isFromSelectedDateRange) {
|
|
1219
|
+
tapDay = monthToFocus;
|
|
1220
|
+
}
|
|
1221
|
+
if (tapDay) {
|
|
1222
|
+
this.calendarStore.tapDay(tapDay);
|
|
1163
1223
|
}
|
|
1164
1224
|
}
|
|
1165
1225
|
});
|
|
1166
1226
|
}
|
|
1167
1227
|
ngOnDestroy() {
|
|
1168
|
-
this._inputReadonly.complete();
|
|
1169
1228
|
this.clickEvent.complete();
|
|
1229
|
+
this._inputReadonly.complete();
|
|
1170
1230
|
this._config.complete();
|
|
1171
1231
|
this._centerRangeSub.destroy();
|
|
1172
1232
|
}
|
|
@@ -1278,19 +1338,21 @@ class DbxScheduleSelectionCalendarDateDialogButtonComponent {
|
|
|
1278
1338
|
}
|
|
1279
1339
|
}
|
|
1280
1340
|
DbxScheduleSelectionCalendarDateDialogButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxScheduleSelectionCalendarDateDialogButtonComponent, deps: [{ token: i1$2.MatDialog }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
1281
|
-
DbxScheduleSelectionCalendarDateDialogButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxScheduleSelectionCalendarDateDialogButtonComponent, selector: "dbx-schedule-selection-calendar-date-dialog-button", inputs: { buttonText: "buttonText", contentConfig: "contentConfig", closeConfig: "closeConfig" }, ngImport: i0, template: `
|
|
1282
|
-
<button
|
|
1283
|
-
`, isInline: true, dependencies: [{ kind: "component", type:
|
|
1341
|
+
DbxScheduleSelectionCalendarDateDialogButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxScheduleSelectionCalendarDateDialogButtonComponent, selector: "dbx-schedule-selection-calendar-date-dialog-button", inputs: { buttonText: "buttonText", disabled: "disabled", contentConfig: "contentConfig", closeConfig: "closeConfig" }, ngImport: i0, template: `
|
|
1342
|
+
<dbx-button [raised]="true" color="accent" [text]="buttonText" [disabled]="disabled" (buttonClick)="clickCustomize()"></dbx-button>
|
|
1343
|
+
`, isInline: true, dependencies: [{ kind: "component", type: i1$1.DbxButtonComponent, selector: "dbx-button", inputs: ["type", "raised", "stroked", "flat", "iconOnly", "color", "customButtonColor", "customTextColor", "customSpinnerColor"] }] });
|
|
1284
1344
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxScheduleSelectionCalendarDateDialogButtonComponent, decorators: [{
|
|
1285
1345
|
type: Component,
|
|
1286
1346
|
args: [{
|
|
1287
1347
|
selector: 'dbx-schedule-selection-calendar-date-dialog-button',
|
|
1288
1348
|
template: `
|
|
1289
|
-
<button
|
|
1349
|
+
<dbx-button [raised]="true" color="accent" [text]="buttonText" [disabled]="disabled" (buttonClick)="clickCustomize()"></dbx-button>
|
|
1290
1350
|
`
|
|
1291
1351
|
}]
|
|
1292
1352
|
}], ctorParameters: function () { return [{ type: i1$2.MatDialog }, { type: i0.Injector }]; }, propDecorators: { buttonText: [{
|
|
1293
1353
|
type: Input
|
|
1354
|
+
}], disabled: [{
|
|
1355
|
+
type: Input
|
|
1294
1356
|
}], contentConfig: [{
|
|
1295
1357
|
type: Input
|
|
1296
1358
|
}], closeConfig: [{
|
|
@@ -1312,6 +1374,7 @@ class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
|
|
|
1312
1374
|
this._formControlObs = new BehaviorSubject(undefined);
|
|
1313
1375
|
this.formControl$ = this._formControlObs.pipe(filterMaybe());
|
|
1314
1376
|
this.value$ = this.formControl$.pipe(switchMap((control) => control.valueChanges.pipe(startWith(control.value))), shareReplay(1));
|
|
1377
|
+
this.disableCustomize$ = this.value$.pipe(map((x) => (this.allowCustomizeWithoutDateRange ? false : !x)), distinctUntilChanged(), shareReplay(1));
|
|
1315
1378
|
}
|
|
1316
1379
|
get formGroupName() {
|
|
1317
1380
|
return this.field.key;
|
|
@@ -1328,6 +1391,12 @@ class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
|
|
|
1328
1391
|
get isReadonlyOrDisabled() {
|
|
1329
1392
|
return this.props.readonly || this.disabled;
|
|
1330
1393
|
}
|
|
1394
|
+
get openPickerOnTextClick() {
|
|
1395
|
+
return this.props.allowTextInput !== true; // Opposite of allowTextInput
|
|
1396
|
+
}
|
|
1397
|
+
get allowCustomizeWithoutDateRange() {
|
|
1398
|
+
return this.props.allowCustomizeWithoutDateRange ?? false;
|
|
1399
|
+
}
|
|
1331
1400
|
get showCustomize() {
|
|
1332
1401
|
return !this.props.hideCustomize;
|
|
1333
1402
|
}
|
|
@@ -1355,6 +1424,9 @@ class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
|
|
|
1355
1424
|
get dialogContentConfig() {
|
|
1356
1425
|
return this.props.dialogContentConfig;
|
|
1357
1426
|
}
|
|
1427
|
+
get customDetailsConfig() {
|
|
1428
|
+
return this.props.customDetailsConfig;
|
|
1429
|
+
}
|
|
1358
1430
|
get cellContentFactory() {
|
|
1359
1431
|
return this.props.cellContentFactory;
|
|
1360
1432
|
}
|
|
@@ -1403,18 +1475,20 @@ class DbxFormCalendarDateScheduleRangeFieldComponent extends FieldType {
|
|
|
1403
1475
|
DbxFormCalendarDateScheduleRangeFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormCalendarDateScheduleRangeFieldComponent, deps: [{ token: i1$1.CompactContextStore, optional: true }, { token: DbxCalendarScheduleSelectionStore }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
1404
1476
|
DbxFormCalendarDateScheduleRangeFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: DbxFormCalendarDateScheduleRangeFieldComponent, selector: "ng-component", providers: [provideCalendarScheduleSelectionStoreIfParentIsUnavailable()], usesInheritance: true, ngImport: i0, template: `
|
|
1405
1477
|
<div class="dbx-schedule-selection-field">
|
|
1406
|
-
<dbx-schedule-selection-calendar-date-range [showCustomize]="showCustomize" [required]="required" [disabled]="isReadonlyOrDisabled" [label]="label" [hint]="description">
|
|
1407
|
-
<dbx-schedule-selection-calendar-date-dialog-button [contentConfig]="dialogContentConfig" [closeConfig]="closeDialogConfig"
|
|
1478
|
+
<dbx-schedule-selection-calendar-date-range [openPickerOnTextClick]="openPickerOnTextClick" [showCustomize]="showCustomize" [required]="required" [disabled]="isReadonlyOrDisabled" [label]="label" [hint]="description">
|
|
1479
|
+
<dbx-schedule-selection-calendar-date-dialog-button customizeButton [disabled]="disableCustomize$ | async" [contentConfig]="dialogContentConfig" [closeConfig]="closeDialogConfig"></dbx-schedule-selection-calendar-date-dialog-button>
|
|
1480
|
+
<dbx-injection [config]="customDetailsConfig"></dbx-injection>
|
|
1408
1481
|
</dbx-schedule-selection-calendar-date-range>
|
|
1409
1482
|
</div>
|
|
1410
|
-
`, isInline: true, dependencies: [{ kind: "component", type: DbxScheduleSelectionCalendarDateRangeComponent, selector: "dbx-schedule-selection-calendar-date-range", inputs: ["label", "hint", "disabled", "showCustomize", "required"] }, { kind: "component", type: DbxScheduleSelectionCalendarDateDialogButtonComponent, selector: "dbx-schedule-selection-calendar-date-dialog-button", inputs: ["buttonText", "contentConfig", "closeConfig"] }] });
|
|
1483
|
+
`, isInline: true, dependencies: [{ kind: "component", type: i3$1.DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }, { kind: "component", type: DbxScheduleSelectionCalendarDateRangeComponent, selector: "dbx-schedule-selection-calendar-date-range", inputs: ["openPickerOnTextClick", "label", "hint", "disabled", "showCustomize", "required"] }, { kind: "component", type: DbxScheduleSelectionCalendarDateDialogButtonComponent, selector: "dbx-schedule-selection-calendar-date-dialog-button", inputs: ["buttonText", "disabled", "contentConfig", "closeConfig"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
|
|
1411
1484
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormCalendarDateScheduleRangeFieldComponent, decorators: [{
|
|
1412
1485
|
type: Component,
|
|
1413
1486
|
args: [{
|
|
1414
1487
|
template: `
|
|
1415
1488
|
<div class="dbx-schedule-selection-field">
|
|
1416
|
-
<dbx-schedule-selection-calendar-date-range [showCustomize]="showCustomize" [required]="required" [disabled]="isReadonlyOrDisabled" [label]="label" [hint]="description">
|
|
1417
|
-
<dbx-schedule-selection-calendar-date-dialog-button [contentConfig]="dialogContentConfig" [closeConfig]="closeDialogConfig"
|
|
1489
|
+
<dbx-schedule-selection-calendar-date-range [openPickerOnTextClick]="openPickerOnTextClick" [showCustomize]="showCustomize" [required]="required" [disabled]="isReadonlyOrDisabled" [label]="label" [hint]="description">
|
|
1490
|
+
<dbx-schedule-selection-calendar-date-dialog-button customizeButton [disabled]="disableCustomize$ | async" [contentConfig]="dialogContentConfig" [closeConfig]="closeDialogConfig"></dbx-schedule-selection-calendar-date-dialog-button>
|
|
1491
|
+
<dbx-injection [config]="customDetailsConfig"></dbx-injection>
|
|
1418
1492
|
</dbx-schedule-selection-calendar-date-range>
|
|
1419
1493
|
</div>
|
|
1420
1494
|
`,
|
|
@@ -1458,6 +1532,8 @@ DbxFormCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", v
|
|
|
1458
1532
|
DbxScheduleSelectionCalendarSelectionToggleButtonComponent], imports: [
|
|
1459
1533
|
//
|
|
1460
1534
|
DbxInjectionComponentModule,
|
|
1535
|
+
DbxContentLayoutModule,
|
|
1536
|
+
DbxTextModule,
|
|
1461
1537
|
DbxActionModule,
|
|
1462
1538
|
DbxFormModule,
|
|
1463
1539
|
DbxFormlyModule,
|
|
@@ -1494,6 +1570,8 @@ DbxFormCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", v
|
|
|
1494
1570
|
DbxFormCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormCalendarModule, imports: [
|
|
1495
1571
|
//
|
|
1496
1572
|
DbxInjectionComponentModule,
|
|
1573
|
+
DbxContentLayoutModule,
|
|
1574
|
+
DbxTextModule,
|
|
1497
1575
|
DbxActionModule,
|
|
1498
1576
|
DbxFormModule,
|
|
1499
1577
|
DbxFormlyModule,
|
|
@@ -1520,6 +1598,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
1520
1598
|
imports: [
|
|
1521
1599
|
//
|
|
1522
1600
|
DbxInjectionComponentModule,
|
|
1601
|
+
DbxContentLayoutModule,
|
|
1602
|
+
DbxTextModule,
|
|
1523
1603
|
DbxActionModule,
|
|
1524
1604
|
DbxFormModule,
|
|
1525
1605
|
DbxFormlyModule,
|
|
@@ -1549,7 +1629,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
1549
1629
|
class DbxFormDateScheduleRangeFieldModule {
|
|
1550
1630
|
}
|
|
1551
1631
|
DbxFormDateScheduleRangeFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormDateScheduleRangeFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1552
|
-
DbxFormDateScheduleRangeFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: DbxFormDateScheduleRangeFieldModule, declarations: [DbxFormCalendarDateScheduleRangeFieldComponent], imports: [
|
|
1632
|
+
DbxFormDateScheduleRangeFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: DbxFormDateScheduleRangeFieldModule, declarations: [DbxFormCalendarDateScheduleRangeFieldComponent], imports: [DbxInjectionComponentModule,
|
|
1633
|
+
CommonModule,
|
|
1553
1634
|
MatIconModule,
|
|
1554
1635
|
DbxFormCalendarModule,
|
|
1555
1636
|
MatButtonModule,
|
|
@@ -1557,7 +1638,8 @@ DbxFormDateScheduleRangeFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersio
|
|
|
1557
1638
|
FormsModule,
|
|
1558
1639
|
ReactiveFormsModule,
|
|
1559
1640
|
MatInputModule, i1$3.FormlyModule] });
|
|
1560
|
-
DbxFormDateScheduleRangeFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormDateScheduleRangeFieldModule, imports: [
|
|
1641
|
+
DbxFormDateScheduleRangeFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: DbxFormDateScheduleRangeFieldModule, imports: [DbxInjectionComponentModule,
|
|
1642
|
+
CommonModule,
|
|
1561
1643
|
MatIconModule,
|
|
1562
1644
|
DbxFormCalendarModule,
|
|
1563
1645
|
MatButtonModule,
|
|
@@ -1572,6 +1654,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
1572
1654
|
type: NgModule,
|
|
1573
1655
|
args: [{
|
|
1574
1656
|
imports: [
|
|
1657
|
+
DbxInjectionComponentModule,
|
|
1575
1658
|
CommonModule,
|
|
1576
1659
|
MatIconModule,
|
|
1577
1660
|
DbxFormCalendarModule,
|