mirror of
https://github.com/pretix/pretix.git
synced 2026-08-22 12:42:00 +00:00
43 lines
1.5 KiB
JavaScript
43 lines
1.5 KiB
JavaScript
$(document).on('pretix:bind-forms', () => {
|
|
document.querySelectorAll('.reldatetime, .reldate').forEach(container => {
|
|
const groups = container.querySelectorAll('.radio')
|
|
|
|
groups.forEach(group => {
|
|
const referenceSelect = group.querySelector('select[data-relative-choice]')
|
|
const beforeAfterSelect = group.querySelector('select[data-relation-choice]')
|
|
if (!referenceSelect || !beforeAfterSelect) return
|
|
|
|
const beforeOption = beforeAfterSelect.querySelector('option[value="before"]')
|
|
const afterOption = beforeAfterSelect.querySelector('option[value="after"]')
|
|
|
|
const updateBeforeOption = () => {
|
|
let supportsBefore = referenceSelect.selectedOptions[0].hasAttribute('data-supports-before')
|
|
if (beforeOption) {
|
|
beforeOption.disabled = !beforeOption.disabled && !supportsBefore
|
|
}
|
|
|
|
let supportsAfter = referenceSelect.selectedOptions[0].hasAttribute('data-supports-after')
|
|
if (afterOption) {
|
|
afterOption.disabled = !afterOption.disabled && !supportsAfter
|
|
}
|
|
|
|
let dirty = false
|
|
if (beforeOption.disabled && beforeAfterSelect.value === 'before') {
|
|
beforeAfterSelect.value = 'after'
|
|
dirty = true
|
|
}
|
|
if (afterOption.disabled && beforeAfterSelect.value === 'after') {
|
|
beforeAfterSelect.value = 'before'
|
|
dirty = true
|
|
}
|
|
|
|
if (dirty) {
|
|
beforeAfterSelect.dispatchEvent(new Event('change', {bubbles: true}))
|
|
}
|
|
}
|
|
referenceSelect.addEventListener('change', updateBeforeOption)
|
|
updateBeforeOption()
|
|
})
|
|
})
|
|
})
|