mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[AAE-9298] FE ADF Date widget handle dynamic date values (#7689)
* [AAE-9298] Add dynamic date fields to FormFieldModel * [AAE-9298] Change dynamic date range types from string to integer * [AAE-9298] If dynamicDateRangeSelection is true, it will evaluate minDateRangeValue and maxDateRangeValue to set min and max date if are set * [AAE-9298] Check if date range values are numbers
This commit is contained in:
@@ -302,4 +302,72 @@ describe('DateWidgetComponent', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('Set dynamic dates', () => {
|
||||
it('should min date equal to the today date minus minimum date range value', async () => {
|
||||
widget.field = new FormFieldModel(null, {
|
||||
dynamicDateRangeSelection: true,
|
||||
minDateRangeValue: 4
|
||||
});
|
||||
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
const todayDate = moment().format(DATE_FORMAT_CLOUD);
|
||||
const expected = moment(todayDate).subtract(widget.field.minDateRangeValue, 'days');
|
||||
expect(widget.minDate).toEqual(expected);
|
||||
});
|
||||
|
||||
it('should min date and max date be undefined if dynamic min and max date are not set', async () => {
|
||||
widget.field = new FormFieldModel(null, {
|
||||
dynamicDateRangeSelection: true
|
||||
});
|
||||
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
expect(widget.minDate).toBeUndefined();
|
||||
expect(widget.maxDate).toBeUndefined();
|
||||
});
|
||||
|
||||
it('should max date be undefined if only minimum date range value is set', async () => {
|
||||
widget.field = new FormFieldModel(null, {
|
||||
dynamicDateRangeSelection: true,
|
||||
minDateRangeValue: 4
|
||||
});
|
||||
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
expect(widget.maxDate).toBeUndefined();
|
||||
});
|
||||
|
||||
it('should min date be undefined if only maximum date range value is set', async () => {
|
||||
widget.field = new FormFieldModel(null, {
|
||||
dynamicDateRangeSelection: true,
|
||||
maxDateRangeValue: 4
|
||||
});
|
||||
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
expect(widget.minDate).toBeUndefined();
|
||||
});
|
||||
|
||||
it('should max date equal to the today date plus maximum date range value', async () => {
|
||||
widget.field = new FormFieldModel(null, {
|
||||
dynamicDateRangeSelection: true,
|
||||
maxDateRangeValue: 5
|
||||
});
|
||||
|
||||
fixture.detectChanges();
|
||||
await fixture.whenStable();
|
||||
|
||||
const todayDate = moment().format(DATE_FORMAT_CLOUD);
|
||||
const expected = moment(todayDate).add(widget.field.maxDateRangeValue, 'days');
|
||||
expect(widget.maxDate).toEqual(expected);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
@@ -74,12 +74,22 @@ export class DateCloudWidgetComponent extends WidgetComponent implements OnInit,
|
||||
momentDateAdapter.overrideDisplayFormat = this.field.dateDisplayFormat;
|
||||
|
||||
if (this.field) {
|
||||
if (this.field.minValue) {
|
||||
this.minDate = moment(this.field.minValue, DATE_FORMAT_CLOUD);
|
||||
}
|
||||
if (this.field.dynamicDateRangeSelection) {
|
||||
const today = moment().format(DATE_FORMAT_CLOUD);
|
||||
if (!isNaN(this.field.minDateRangeValue)) {
|
||||
this.minDate = moment(today).subtract(this.field.minDateRangeValue, 'days');
|
||||
}
|
||||
if (!isNaN(this.field.maxDateRangeValue)) {
|
||||
this.maxDate = moment(today).add(this.field.maxDateRangeValue, 'days');
|
||||
}
|
||||
} else {
|
||||
if (this.field.minValue) {
|
||||
this.minDate = moment(this.field.minValue, DATE_FORMAT_CLOUD);
|
||||
}
|
||||
|
||||
if (this.field.maxValue) {
|
||||
this.maxDate = moment(this.field.maxValue, DATE_FORMAT_CLOUD);
|
||||
if (this.field.maxValue) {
|
||||
this.maxDate = moment(this.field.maxValue, DATE_FORMAT_CLOUD);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user