{"version":3,"file":"js/ebid_widget-cf67bf8352bb067f96e7.js","mappings":"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","sources":["webpack://app/./app/javascript/packs/ebid_widget.js"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\nimport { Popover } from \"flowbite\";\nimport flatpickr from \"flatpickr\";\nimport { i18n } from \"../src/custom/Internationalization\";\n\nconst toggleClass = (el, input, defaultClasses, activeClasses) => {\n if (input.value) {\n el.classList.add(activeClasses);\n el.classList.remove(defaultClasses);\n } else {\n el.classList.remove(activeClasses);\n el.classList.add(defaultClasses);\n }\n};\n\nconst initDatepicker = () => {\n const activeTab = document.getElementById(\"bid_request\");\n const dateRangeBlock = activeTab.querySelector(\n '[data-fb=\"date-range-picker\"]',\n );\n const startDateEl = dateRangeBlock.querySelector(\n `#${\"bid_request\"}_start_date_field`,\n );\n const endDateEl = dateRangeBlock.querySelector(\n `#${\"bid_request\"}_end_date_field`,\n );\n const dateRangeStart = flatpickr(startDateEl, {\n onOpen: () => {\n // Prevent selecting date after end date\n // eslint-disable-next-line no-use-before-define\n if (dateRangeEnd.selectedDates[0]) {\n // eslint-disable-next-line no-use-before-define\n dateRangeStart.set(\"maxDate\", dateRangeEnd.selectedDates[0]);\n }\n },\n onChange: () => {\n // Open end date picker if start date is selected & end date is not selected\n // eslint-disable-next-line no-use-before-define\n if (!dateRangeEnd.selectedDates[0]) {\n // eslint-disable-next-line no-use-before-define\n dateRangeEnd.open();\n }\n },\n onReady (_, __, fp) {\n fp.calendarContainer.classList.add(\"admin-ebid-daterange\");\n },\n minDate: \"today\",\n defaultDate: Date.parse(startDateEl.defaultValue),\n dateFormat: \"D, M j, Y\",\n });\n const dateRangeEnd = flatpickr(endDateEl, {\n onOpen: () => {\n // Prevent selecting date before start date\n if (dateRangeStart.selectedDates[0]) {\n dateRangeEnd.set(\"minDate\", dateRangeStart.selectedDates[0]);\n }\n },\n onReady (_, __, fp) {\n fp.calendarContainer.classList.add(\"admin-ebid-daterange\");\n },\n minDate: \"today\",\n defaultDate: Date.parse(endDateEl.defaultValue),\n dateFormat: \"D, M j, Y\",\n });\n};\n\nconst showAttendeeValue = (attendeeCountEl, attendeeCountInput) => {\n attendeeCountEl.innerHTML = attendeeCountInput?.value\n ? `${attendeeCountInput.value} ${i18n.t(\"attendee_type.global_default\")}`\n : `# ${i18n.t(\"attendee_type.global_default\")}`;\n toggleClass(\n attendeeCountEl,\n attendeeCountInput,\n \"tw-text-blue-grey-500\",\n \"tw-text-blue-grey-900\",\n );\n}\n\nconst showRoomsCountValue = (sleepingRoomsCountEl, sleepingRoomsCountInput) => {\n sleepingRoomsCountEl.innerHTML = sleepingRoomsCountInput?.value\n ? `${sleepingRoomsCountInput.value} ${i18n.t(\"meeting_request_form.sections.sleeping_rooms\")}`\n : `# ${i18n.t(\"meeting_request_form.sections.sleeping_rooms\")}`;\n toggleClass(\n sleepingRoomsCountEl,\n sleepingRoomsCountInput,\n \"tw-text-blue-grey-500\",\n \"tw-text-blue-grey-900\",\n );\n}\n\nconst initPopover = () => {\n const popoverEl = document.querySelector(\n `[data-fb=\"bid_request_popover\"]`,\n );\n const popoverTrigger = document.querySelector(\n `[data-fb=\"bid_request_popover_trigger\"]`,\n );\n const attendeeCountEl = popoverTrigger\n .querySelectorAll(\"div\")[0]\n .querySelector(\"span\");\n const attendeeCountInput = popoverEl.querySelector(\n `#bid_request_target_attendance`,\n );\n const sleepingRoomsCountEl = popoverTrigger.querySelectorAll(\"div\")[1];\n const sleepingRoomsCountInput = popoverEl.querySelector(\n `#bid_request_estimated_sleeping_rooms_number`,\n );\n\n showAttendeeValue(attendeeCountEl, attendeeCountInput);\n showRoomsCountValue(sleepingRoomsCountEl, sleepingRoomsCountInput);\n\n const popOptions = {\n placement: \"bottom\",\n triggerType: \"click\",\n offset: 0,\n onHide: (e) => {\n if (popoverEl.contains(document.activeElement)) {\n e.show();\n return;\n }\n\n popoverEl.classList.add(\"tw-hidden\", \"tw-opacity-0\", \"tw-invisible\");\n popoverEl.classList.remove(\"tw-opacity-100\", \"tw-visible\");\n showAttendeeValue(attendeeCountEl, attendeeCountInput);\n showRoomsCountValue(sleepingRoomsCountEl, sleepingRoomsCountInput);\n },\n onShow: () => {\n popoverEl.classList.add(\"tw-opacity-100\", \"tw-visible\");\n popoverEl.classList.remove(\"tw-hidden\", \"tw-opacity-0\", \"tw-invisible\");\n const checkboxes = popoverEl.querySelectorAll(\"input[type='checkbox']\");\n checkboxes.forEach((checkbox) => {\n checkbox.addEventListener(\"change\", () => {\n // Disable field and opposite checkbox when not checked\n document.querySelector(`#${checkbox.dataset.disableField}`).disabled =\n !checkbox.checked;\n Array.from(checkboxes).filter((c) => c !== checkbox)[0].disabled =\n !checkbox.checked;\n });\n });\n },\n };\n const popover = new Popover(popoverEl, popoverTrigger, popOptions);\n};\n\nconst initMeetingType = () => {\n const meetingTypeEl = document.querySelector(`#bid_request_meeting_type`);\n const eventTypeEl = document.querySelector(`#bid_request_event_format`);\n const meetingLocation = document.querySelector(\n `#bid_request .location_field`,\n );\n meetingLocation.addEventListener(\"change\", (e) => {\n e.preventDefault();\n if (e.target.value) {\n meetingTypeEl.value = \"in_person\";\n eventTypeEl.value = \"in_person\";\n } else {\n meetingTypeEl.value = \"virtual\";\n eventTypeEl.value = \"virtual\";\n }\n });\n};\n\nconst initEventType = () => {\n const errorsContainer = document.getElementById(\n `bid_request_event_type_errors`,\n );\n const observerOptions = {\n childList: true,\n attributes: true,\n // Omit (or set to false) to observe only changes to the parent node\n subtree: false,\n };\n const listen = (mutationList) => {\n mutationList.forEach((mutation) => {\n if (mutation.type === \"childList\") {\n const eventTypeContainer = errorsContainer\n .closest('[class^=\"tw-col-span\"]')\n .querySelector(\".ui.dropdown\");\n const eventTypeEl = document.getElementById(\n `bid_request_event_type_id`,\n );\n const errorClasses =\n eventTypeEl.dataset.formValidateErrorFieldCssClass.split(\" \");\n if (mutation.addedNodes.length > 0) {\n errorClasses.forEach((errorClass) => {\n eventTypeContainer.classList.add(errorClass);\n });\n } else {\n errorClasses.forEach((errorClass) => {\n eventTypeContainer.classList.remove(errorClass);\n });\n }\n }\n });\n };\n\n const observer = new MutationObserver(listen);\n if (errorsContainer) {\n observer.observe(errorsContainer, observerOptions);\n }\n};\n\n// Maintain form state\nconst formState = {\n event: {\n budget: \"\",\n currency: \"USD\",\n end_date_field: \"\",\n estimated_sleeping_rooms_number: \"\",\n event_type_id: \"\",\n latitude: \"\",\n location_address: \"\",\n longitude: \"\",\n meeting_type: \"virtual\",\n event_format: \"virtual\",\n name: \"\",\n start_date_field: \"\",\n target_attendance: \"\",\n flow: null,\n },\n};\n\nconst initData = () => {\n formState.event[\"flow\"] = \"bid_request\";\n};\n\nconst initWidget = () => {\n if (document.querySelector(`[data-fb=\"ebid-widget\"]`)) {\n // Init data\n initData();\n // Init datepicker\n initDatepicker();\n // Init popover\n initPopover();\n // Init meeting type\n initMeetingType();\n // Init event type\n initEventType();\n }\n}\n\ndocument.addEventListener('DOMContentLoaded', initWidget);\n"],"names":["toggleClass","el","input","defaultClasses","activeClasses","value","classList","add","remove","showAttendeeValue","attendeeCountEl","attendeeCountInput","innerHTML","concat","i18n","t","showRoomsCountValue","sleepingRoomsCountEl","sleepingRoomsCountInput","formState","event","budget","currency","end_date_field","estimated_sleeping_rooms_number","event_type_id","latitude","location_address","longitude","meeting_type","event_format","name","start_date_field","target_attendance","flow","document","addEventListener","errorsContainer","observer","meetingTypeEl","eventTypeEl","dateRangeBlock","startDateEl","endDateEl","dateRangeStart","dateRangeEnd","querySelector","getElementById","flatpickr","onOpen","selectedDates","set","onChange","open","onReady","_","__","fp","calendarContainer","minDate","defaultDate","Date","parse","defaultValue","dateFormat","popoverEl","popoverTrigger","querySelectorAll","popOptions","placement","triggerType","offset","onHide","e","contains","activeElement","show","onShow","checkboxes","forEach","checkbox","dataset","disableField","disabled","checked","Array","from","filter","c","Popover","initPopover","preventDefault","target","MutationObserver","mutationList","mutation","type","eventTypeContainer","closest","errorClasses","formValidateErrorFieldCssClass","split","addedNodes","length","errorClass","observe","childList","attributes","subtree"],"sourceRoot":""}