(function() { function date_button(elem) { let minDate = moment().startOf('day').toDate(); let maxDate = moment().add(7, 'days').endOf('day').toDate(); let format = 'YYYY-MM-DDTHH:mm:ss[Z]'; let dateFieldName = elem.dataset.dateField; let dateField = elem.form.elements[dateFieldName]; let template = document.createElement('div'); template.innerHTML = `

Until

`; let pickerElem = template.querySelector('.datetip-picker'); let submitElem = template.querySelector('.datetip-submit'); submitElem.addEventListener('click', function(evt) { evt.preventDefault(); elem.form.submit(); }); let picker = new Pikaday({ field: dateField, bound: false, format: format, setDefaultDate: true, defaultDate: maxDate, minDate: minDate, maxDate: maxDate, toString: function(date, format) { return moment(date).endOf('day').format(format); }, parse: function(String, format) { let date = moment(opts.field.value, opts.format, opts.formatStrict); return (date && date.isValid()) ? date.toDate() : null; }, }); pickerElem.appendChild(picker.el); dateField.style.display = 'none'; tippy(elem, { performance: true, interactive: true, content: template, trigger: 'manual', arrow: true, theme: 'light', onShow: function() { elem.classList.add('pure-button-active') }, onHide: function() { elem.classList.remove('pure-button-active') } }); elem.addEventListener('click', function(evt) { evt.preventDefault(); elem._tippy.show(); }); } let dateButtons = document.querySelectorAll('.date-button'); for (btn of dateButtons) { date_button(btn); } }());