Skip to content

Commit

Permalink
FIO-9127 fixed saving empty values for Day component with hidden fields
Browse files Browse the repository at this point in the history
  • Loading branch information
HannaKurban authored and lane-formio committed Oct 4, 2024
1 parent 5abd664 commit 000fd92
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 11 deletions.
28 changes: 17 additions & 11 deletions src/components/day/Day.js
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ export default class DayComponent extends Field {
if (!this.component.fields.day.hide && maxDay) {
this.refs.day.max = maxDay;
}
if (maxDay && day > maxDay) {
if (maxDay && day > maxDay && this.refs.day) {
this.refs.day.value = this.refs.day.max;
}
updateValueAndSaveFocus(this.refs.month, 'month')();
Expand Down Expand Up @@ -556,37 +556,43 @@ export default class DayComponent extends Field {
defaults = defaultValue.split('/').map(x => parseInt(x, 10));
}

const isModalEditClosed = this.component.modalEdit && !this.componentModal.isOpened;
if (this.showDay && this.refs.day) {
day = this.refs.day.value === '' ? '' : parseInt(this.refs.day.value, 10);
day = (this.refs.day.value === '' && !isModalEditClosed) ? '' : parseInt(this.refs.day.value, 10);
}
if (day === undefined || _.isNaN(day)) {
day = (defaults.length !== 3 && value)
if (day === undefined || _.isNaN(day) || value) {
day = (defaults.length !== 3)
? this.getDayWithHiddenFields(defaults).day
: (defaults[DAY] && !_.isNaN(defaults[DAY]) ? defaults[DAY] : 0);
}

if (this.showMonth && this.refs.month) {
// Months are 0 indexed.
month = this.refs.month.value === '' ? '' : parseInt(this.refs.month.value, 10);
month = (this.refs.month.value === '' && !isModalEditClosed) ? '' : parseInt(this.refs.month.value, 10);
}
if (month === undefined || _.isNaN(month)) {
month = (defaults.length !== 3 && value)
if (month === undefined || _.isNaN(month) || value) {
month = (defaults.length !== 3)
? this.getDayWithHiddenFields(defaults).month
: (defaults[MONTH] && !_.isNaN(defaults[MONTH]) ? defaults[MONTH] : 0);
}

if (this.showYear && this.refs.year) {
year = this.refs.year.value === '' ? '' : parseInt(this.refs.year.value);
year = (this.refs.year.value === '' && !isModalEditClosed) ? '' : parseInt(this.refs.year.value);
}
if (year === undefined || _.isNaN(year)) {
year = (defaults.length !== 3 && value)
if (year === undefined || _.isNaN(year) || value) {
year = (defaults.length !== 3)
? this.getDayWithHiddenFields(defaults).year
: (defaults[YEAR] && !_.isNaN(defaults[YEAR]) ? defaults[YEAR] : 0);
}

let result;
if (!day && !month && !year) {
this.dataValue = this.emptyValue;
if (!isModalEditClosed) {
this.dataValue = this.emptyValue;
if (this.options.building) {
this.triggerChange();
}
}
return null;
}

Expand Down
17 changes: 17 additions & 0 deletions src/components/day/Day.unit.js
Original file line number Diff line number Diff line change
Expand Up @@ -439,6 +439,23 @@ describe('Day Component', () => {
});
});

it('Should save empty value after deleting the values if the day field is hidden', (done) => {
comp1.fields.day.hide = true;
Harness.testCreate(DayComponent, comp1).then((component) => {
component.setValue('10/2024');
assert.equal(component.getValue(), '10/2024');
component.refs.month.value = '';
component.refs.month.dispatchEvent(new Event('input'));
component.refs.year.value = '';
component.refs.year.dispatchEvent(new Event('input'));
setTimeout(() => {
assert.equal(component.getValue(), '');
done();
}, 100);
});
comp1.fields.day.hide = false;
});

it('Should save empty value after deleting values from fields if default value is set', (done) => {
comp1.defaultValue = '10/12/2024';
Harness.testCreate(DayComponent, comp1).then((component) => {
Expand Down

0 comments on commit 000fd92

Please sign in to comment.