|
1 | | -document.addEventListener('DOMContentLoaded', () => { |
2 | | - document.querySelectorAll('.sponsorships_form').forEach((formElem) => { |
3 | | - formElem.querySelectorAll('select.sponsorship_id_to_copy_selector').forEach((elem_) => { |
4 | | - const elem = elem_ as HTMLSelectElement; |
5 | | - elem.addEventListener('change', () => { |
6 | | - const query = new URLSearchParams(location.search); |
7 | | - query.set('sponsorship_id_to_copy', elem.value); |
8 | | - location.search = query.toString(); |
| 1 | +document.addEventListener("DOMContentLoaded", () => { |
| 2 | + console.log("DOMContentLoaded"); |
| 3 | + document.querySelectorAll(".sponsorships_form").forEach((formElem) => { |
| 4 | + formElem |
| 5 | + .querySelectorAll("select.sponsorship_id_to_copy_selector") |
| 6 | + .forEach((elem_) => { |
| 7 | + const elem = elem_ as HTMLSelectElement; |
| 8 | + elem.addEventListener("change", () => { |
| 9 | + const query = new URLSearchParams(location.search); |
| 10 | + query.set("sponsorship_id_to_copy", elem.value); |
| 11 | + location.search = query.toString(); |
| 12 | + }); |
9 | 13 | }); |
10 | | - }); |
11 | 14 |
|
| 15 | + formElem |
| 16 | + .querySelectorAll(".sponsorships_form_billing_contact") |
| 17 | + .forEach((elem) => { |
| 18 | + const checkbox = elem.querySelector( |
| 19 | + ".form-check input[type=checkbox]" |
| 20 | + ) as HTMLInputElement; |
| 21 | + const fieldset = elem.querySelector("fieldset") as HTMLFieldSetElement; |
12 | 22 |
|
13 | | - formElem.querySelectorAll('.sponsorships_form_billing_contact').forEach((elem) => { |
14 | | - const checkbox = elem.querySelector('.form-check input[type=checkbox]') as HTMLInputElement; |
15 | | - const fieldset = elem.querySelector('fieldset') as HTMLFieldSetElement; |
16 | | - |
17 | | - const handleChange = (e?: Event) => { |
18 | | - if (checkbox.checked) { |
19 | | - fieldset.classList.remove('d-none'); |
20 | | - fieldset.disabled = false; |
21 | | - } else { |
22 | | - fieldset.classList.add('d-none'); |
23 | | - fieldset.disabled = true; |
24 | | - } |
25 | | - } |
26 | | - checkbox.addEventListener('change', handleChange); |
27 | | - checkbox.addEventListener('click', handleChange); |
28 | | - handleChange(); |
29 | | - }); |
| 23 | + const handleChange = (e?: Event) => { |
| 24 | + if (checkbox.checked) { |
| 25 | + fieldset.classList.remove("d-none"); |
| 26 | + fieldset.disabled = false; |
| 27 | + } else { |
| 28 | + fieldset.classList.add("d-none"); |
| 29 | + fieldset.disabled = true; |
| 30 | + } |
| 31 | + }; |
| 32 | + checkbox.addEventListener("change", handleChange); |
| 33 | + checkbox.addEventListener("click", handleChange); |
| 34 | + handleChange(); |
| 35 | + }); |
30 | 36 |
|
31 | 37 | const calculateTotalAttendees = () => { |
32 | | - const totalElem = formElem.querySelector('.sponsorships_form_tickets__total') as Element; |
| 38 | + const totalElem = formElem.querySelector( |
| 39 | + ".sponsorships_form_tickets__total" |
| 40 | + ) as Element; |
33 | 41 | if (!totalElem) return; |
34 | 42 |
|
35 | | - const selectedPlanElem = formElem.querySelector('.sponsorships_form_plans input[type=radio]:checked') as HTMLInputElement; |
36 | | - const ticketsIncludedInPlanElem = formElem.querySelector('.sponsorships_form_tickets__included_in_plan')! as Element; |
37 | | - const additionalAttendeesElem = formElem.querySelector('.sponsorships_form_tickets__additional_attendees input')! as HTMLInputElement; |
| 43 | + const selectedPlanElem = formElem.querySelector( |
| 44 | + ".sponsorships_form_plans input[type=radio]:checked" |
| 45 | + ) as HTMLInputElement; |
| 46 | + const ticketsIncludedInPlanElem = formElem.querySelector( |
| 47 | + ".sponsorships_form_tickets__included_in_plan" |
| 48 | + )! as Element; |
| 49 | + const additionalAttendeesElem = formElem.querySelector( |
| 50 | + ".sponsorships_form_tickets__additional_attendees input" |
| 51 | + )! as HTMLInputElement; |
38 | 52 |
|
39 | | - const numberOfGuests = selectedPlanElem ? parseInt(selectedPlanElem.dataset['guests']!, 10) : 0; |
| 53 | + const numberOfGuests = selectedPlanElem |
| 54 | + ? parseInt(selectedPlanElem.dataset["guests"]!, 10) |
| 55 | + : 0; |
40 | 56 | const additionalAttendees = additionalAttendeesElem.valueAsNumber; |
41 | 57 |
|
42 | | - const total = numberOfGuests + (isNaN(additionalAttendees) ? 0 : additionalAttendees); |
| 58 | + const total = |
| 59 | + numberOfGuests + (isNaN(additionalAttendees) ? 0 : additionalAttendees); |
43 | 60 |
|
44 | 61 | ticketsIncludedInPlanElem.innerHTML = `${numberOfGuests}`; |
45 | 62 | totalElem.innerHTML = `${total}`; |
46 | 63 | }; |
47 | | - formElem.querySelectorAll('.sponsorships_form_tickets__additional_attendees input').forEach((elem) => { |
48 | | - elem.addEventListener('change', () => calculateTotalAttendees()); |
49 | | - elem.addEventListener('click', () => calculateTotalAttendees()); |
50 | | - }); |
| 64 | + formElem |
| 65 | + .querySelectorAll( |
| 66 | + ".sponsorships_form_tickets__additional_attendees input" |
| 67 | + ) |
| 68 | + .forEach((elem) => { |
| 69 | + elem.addEventListener("change", () => calculateTotalAttendees()); |
| 70 | + elem.addEventListener("click", () => calculateTotalAttendees()); |
| 71 | + }); |
51 | 72 | calculateTotalAttendees(); |
52 | 73 |
|
53 | | - formElem.querySelectorAll('.sponsorships_form_plans').forEach((elem) => { |
54 | | - const boothCheckbox = formElem.querySelector('.sponsorships_form_booth_request input[type=checkbox]') as HTMLInputElement; |
55 | | - const uneligibleHelpTextElem = formElem.querySelector('.sponsorships_form_booth_request_uneligible') as Element; |
56 | | - const customizationRequestField = document.querySelector('.sponsorships_form_customization_request') as HTMLTextAreaElement; |
57 | | - const profileFieldHelpElem = document.querySelector('.sponsorships_form_profile_help') as Element; |
58 | | - const acceptanceHelpElem = document.querySelector('.sponsorships_acceptance_help') as Element; |
| 74 | + formElem.querySelectorAll(".sponsorships_form_plans").forEach((elem) => { |
| 75 | + const boothCheckbox = formElem.querySelector( |
| 76 | + ".sponsorships_form_booth_request input[type=checkbox]" |
| 77 | + ) as HTMLInputElement; |
| 78 | + const uneligibleHelpTextElem = formElem.querySelector( |
| 79 | + ".sponsorships_form_booth_request_uneligible" |
| 80 | + ) as Element; |
| 81 | + const customizationRequestField = document.querySelector( |
| 82 | + ".sponsorships_form_customization_request" |
| 83 | + ) as HTMLTextAreaElement; |
| 84 | + const profileFieldHelpElem = document.querySelector( |
| 85 | + ".sponsorships_form_profile_help" |
| 86 | + ) as Element; |
| 87 | + const acceptanceHelpElem = document.querySelector( |
| 88 | + ".sponsorships_acceptance_help" |
| 89 | + ) as Element; |
59 | 90 |
|
60 | 91 | const handleChange = (e: HTMLInputElement | null) => { |
61 | | - if (!e) return; |
62 | | - if (e.dataset.booth == '1') { |
63 | | - uneligibleHelpTextElem.classList.add('d-none'); |
64 | | - boothCheckbox.disabled = false; |
65 | | - } else { |
66 | | - uneligibleHelpTextElem.classList.remove('d-none'); |
67 | | - boothCheckbox.disabled = true; |
68 | | - } |
| 92 | + if (!e) return; |
| 93 | + if (e.dataset.booth == "1") { |
| 94 | + uneligibleHelpTextElem.classList.add("d-none"); |
| 95 | + boothCheckbox.disabled = false; |
| 96 | + } else { |
| 97 | + uneligibleHelpTextElem.classList.remove("d-none"); |
| 98 | + boothCheckbox.disabled = true; |
| 99 | + } |
69 | 100 |
|
70 | | - const wordsLimitHelp = e.dataset.wordsLimitHelp; |
71 | | - if (wordsLimitHelp) { |
72 | | - profileFieldHelpElem.innerHTML = wordsLimitHelp; |
73 | | - } else { |
74 | | - profileFieldHelpElem.innerHTML = ''; |
75 | | - } |
| 101 | + const wordsLimitHelp = e.dataset.wordsLimitHelp; |
| 102 | + if (wordsLimitHelp) { |
| 103 | + profileFieldHelpElem.innerHTML = wordsLimitHelp; |
| 104 | + } else { |
| 105 | + profileFieldHelpElem.innerHTML = ""; |
| 106 | + } |
76 | 107 |
|
77 | | - const acceptanceHelp = e.dataset.acceptanceHelp; |
78 | | - if (acceptanceHelp) { |
79 | | - acceptanceHelpElem.innerHTML = acceptanceHelp; |
80 | | - } else { |
81 | | - acceptanceHelpElem.innerHTML = ''; |
82 | | - } |
| 108 | + const acceptanceHelp = e.dataset.acceptanceHelp; |
| 109 | + if (acceptanceHelp) { |
| 110 | + acceptanceHelpElem.innerHTML = acceptanceHelp; |
| 111 | + } else { |
| 112 | + acceptanceHelpElem.innerHTML = ""; |
| 113 | + } |
83 | 114 |
|
84 | | - customizationRequestField.required = e.dataset['other'] == '1'; |
| 115 | + customizationRequestField.required = e.dataset["other"] == "1"; |
85 | 116 | }; |
86 | | - handleChange(elem.querySelector('input[type=radio]:checked') as HTMLInputElement); |
| 117 | + handleChange( |
| 118 | + elem.querySelector("input[type=radio]:checked") as HTMLInputElement |
| 119 | + ); |
87 | 120 |
|
88 | | - elem.querySelectorAll('input[type=radio]').forEach((planRadioElem) => { |
| 121 | + elem.querySelectorAll("input[type=radio]").forEach((planRadioElem) => { |
89 | 122 | const planRadio = planRadioElem as HTMLInputElement; |
90 | | - planRadio.addEventListener('change', (e) => { |
| 123 | + planRadio.addEventListener("change", (e) => { |
91 | 124 | calculateTotalAttendees(); |
92 | 125 | handleChange(e.target as HTMLInputElement); |
93 | 126 | }); |
94 | | - }); |
95 | | - }); |
| 127 | + }); |
| 128 | + }); |
96 | 129 | }); |
97 | 130 | }); |
0 commit comments