From b1aad89abc2556f66d4c5b6334bf5fe72c38f5e9 Mon Sep 17 00:00:00 2001 From: Hanna Kurban Date: Wed, 15 Jan 2025 18:11:06 +0300 Subject: [PATCH] FIO-8372 fixed setting date after selecting and erasing entire date --- src/widgets/CalendarWidget.js | 14 ------------ test/unit/DateTime.unit.js | 43 +++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 14 deletions(-) diff --git a/src/widgets/CalendarWidget.js b/src/widgets/CalendarWidget.js index 522269bf75..105626531e 100644 --- a/src/widgets/CalendarWidget.js +++ b/src/widgets/CalendarWidget.js @@ -114,8 +114,6 @@ export default class CalendarWidget extends InputWidget { this.settings.disableWeekends ? this.settings.disable.push(this.disableWeekends) : ''; this.settings.disableWeekdays ? this.settings.disable.push(this.disableWeekdays) : ''; this.settings.disableFunction ? this.settings.disable.push(this.disableFunction) : ''; - this.settings.wasDefaultValueChanged = false; - this.settings.defaultValue = ''; this.settings.manualInputValue = ''; this.settings.isManuallyOverriddenValue = false; this.settings.currentValue = ''; @@ -138,10 +136,6 @@ export default class CalendarWidget extends InputWidget { this.emit('update'); } - if (this.settings.wasDefaultValueChanged) { - this.calendar._input.value = this.settings.defaultValue; - this.settings.wasDefaultValueChanged = false; - } if (this.calendar) { this.emit('blur'); } @@ -425,14 +419,6 @@ export default class CalendarWidget extends InputWidget { this.settings.currentValue = event.target.value; this.emit('update'); } - - if (event.target.value === '' && this.calendar.selectedDates.length > 0) { - this.settings.wasDefaultValueChanged = true; - this.settings.defaultValue = event.target.value; - this.calendar.clear(); - } else { - this.settings.wasDefaultValueChanged = false; - } }); if(this.calendar.daysContainer) { this.calendar.daysContainer.addEventListener('click', () => { diff --git a/test/unit/DateTime.unit.js b/test/unit/DateTime.unit.js index 0fc62b2719..a08414379d 100644 --- a/test/unit/DateTime.unit.js +++ b/test/unit/DateTime.unit.js @@ -772,6 +772,49 @@ describe('DateTime Component', () => { }) }); + it('Should set Value after erasing entire data and setting new one', (done) => { + const form = _.cloneDeep(comp3); + const element = document.createElement('div'); + form.components[0].enableTime = false; + + Formio.createForm(element, form).then(form => { + const dateTime = form.getComponent('dateTime'); + const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar; + const input = dateTime.element.querySelector('.input'); + calendar.altInput.click(); + + setTimeout(()=> { + calendar.altInput.value = '2025-01-01'; + calendar._input.value = '2025-01-01'; + const inputEvent = new Event('input'); + calendar.altInput.dispatchEvent(inputEvent); + setTimeout(() => { + calendar.setDate(calendar._input.value, false, calendar.config.altFormat); + calendar.close(); + assert.equal(input.value, '2025-01-01'); + input.value = ''; + input.dispatchEvent(inputEvent); + setTimeout(()=> { + assert.equal(input.value, ''); + calendar.altInput.click(); + setTimeout(() => { + calendar.altInput.value = '2025-02-02'; + calendar._input.value = '2025-02-02'; + calendar.altInput.dispatchEvent(inputEvent); + setTimeout(() => { + calendar.setDate(calendar._input.value, false, calendar.config.altFormat); + calendar.close(); + assert.equal(input.value, '2025-02-02'); + document.innerHTML = ''; + done(); + }, 200); + }, 200); + }, 200); + }, 200); + }, 200); + }).catch(done); + }); + it('Should preserve the calendar widget settings after field logic is evaluated', async () => { // see https://formio.atlassian.net/browse/FIO-9385 // emulate viewing a submission in the portal with { readOnly: true }