Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions src/widgets/CalendarWidget.js
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,9 @@ export default class CalendarWidget extends InputWidget {
if (!this.calendar) {
return super.getValue();
}
if(this.settings.isManuallyOverriddenValue){
return this.settings.manualInputValue;
}
// Get the selected dates from the calendar widget.
const dates = this.calendar.selectedDates;
if (!dates || !dates.length) {
Expand Down Expand Up @@ -411,6 +414,19 @@ export default class CalendarWidget extends InputWidget {
this.calendar.updateValue(false);
});
}

// Move input attributes to altInput.
const labelledbyIds = this.calendar.input.getAttribute('aria-labelledby');
const isRequired = this.calendar.input.getAttribute('aria-required');

this.calendar.altInput.id = this._input.id;
this.calendar.altInput.setAttribute('aria-labelledby', labelledbyIds);
this.calendar.altInput.setAttribute('aria-required', isRequired);

this._input.removeAttribute('id');
this._input.removeAttribute('aria-labelledby');
this._input.removeAttribute('aria-required');

const excludedFromMaskFormats = ['MMMM'];

if (!this.settings.readOnly && !_.some(excludedFromMaskFormats, format => _.includes(this.settings.format, format))) {
Expand Down
25 changes: 20 additions & 5 deletions test/unit/DateTime.unit.js
Original file line number Diff line number Diff line change
Expand Up @@ -94,15 +94,14 @@ describe('DateTime Component', () => {
const inputEvent = new Event('input');

const value = '2021-04-13 07:00 PM';
const expectedValueStart = '2021-04-13T19:00:00';
const input = dateTime.element.querySelector('.input');
input.value = value;
input.dispatchEvent(inputEvent);
setTimeout(() => {
input.dispatchEvent(blurEvent);
setTimeout(() => {
assert.equal(dateTime.getValue().startsWith(expectedValueStart), true);
assert.equal(dateTime.dataValue.startsWith(expectedValueStart), true);
assert.equal(dateTime.getValue().startsWith(value), true);
assert.equal(dateTime.dataValue.startsWith(value), true);

document.innerHTML = '';
done();
Expand Down Expand Up @@ -604,12 +603,11 @@ describe('DateTime Component', () => {
const calendar = dateTime.element.querySelector('.flatpickr-input').widget.calendar;
calendar._input.value = '07:00 PM';
calendar._input.dispatchEvent(inputEvent);
const expectedValue = 'T19:00:00';
setTimeout(() => {
calendar._input.dispatchEvent(blurEvent);

setTimeout(() => {
assert.equal(dateTime.dataValue.includes(expectedValue), true);
assert.equal(dateTime.dataValue.includes('07:00 PM'), true);

document.innerHTML = '';
done();
Expand Down Expand Up @@ -837,6 +835,23 @@ describe('DateTime Component', () => {
assert.equal(dateTimeComponent.widget.settings.readOnly, true);
});

it('should transfer attributes to the actual Flatpickr input', (done) => {
const form = _.cloneDeep(comp3);
const element = document.createElement('div');

Formio.createForm(element, form).then(form => {
const dateTime = form.getComponent('dateTime');
const input = dateTime.element.querySelector('.input');

assert.notEqual(input.getAttribute('aria-labelledby'), null);
assert.notEqual(input.getAttribute('aria-required'), null);
assert.notEqual(input.getAttribute('id'), null);

document.innerHTML = '';
done();
}).catch(done);
});

// it('Should provide correct date in selected timezone after submission', (done) => {
// const form = _.cloneDeep(comp9);
// const element = document.createElement('div');
Expand Down