{"version":3,"sources":["webpack:///./app/javascript/schedules/controllers/skd_event_mode_type_controller.ts"],"names":["ModeType","initialSrc","selectedMode","useResetForm","this","element","form","lazyLoadSrc","target","checked","radio","radioTargets","find","r","displayValue","dataset","textTarget","innerText","event","HTMLInputElement","url","constructURL","event_mode_id","value","event_type_id","toString","selectModeType","refetch_time","Date","getTime","hasDropdownBtnTarget","dropdownBtnTarget","disabled","hasObserverTarget","observerTarget","setAttribute","hasPatientsTarget","patientsTarget","hidden","autocomplete","querySelector","HTMLElement","required","OutOfOffice","Other","hideObserverAddition","hidePatientsAddition","InPerson","showPatientsAddition","Teletherapy","showObserverAddition","eventTypeDefaultTitleTarget","patientNameDefaultTitleTarget","formTypeValue","allDayModeCheckboxTarget","click","lazyLoadTarget","getAttribute","src","closest","Controller","targets","values","randomId","String","formType","default","type"],"mappings":"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","file":"js/90-30a62bf0fe7fd1d917e0.chunk.js","sourcesContent":["import { Controller } from '@hotwired/stimulus';\nimport { constructURL } from 'helpers/url';\nimport useResetForm from 'stimulus-hooks/use-reset-form';\n\nenum ModeType {\n InPerson = '50658e86-5837-4816-a2c1-9870ebbe987b',\n Teletherapy = 'b2c74159-e950-426a-8157-d7d568dba95e',\n OutOfOffice = 'dde9d33c-8fb5-4f49-a8f9-1f4b19e085f4',\n Other = 'c142e891-9ad2-4421-8dab-d28e571b6098',\n}\n\ntype ModeTypeIds = ModeType[keyof ModeType];\n\nexport default class extends Controller {\n static targets = [\n 'radio',\n 'text',\n 'lazyLoad',\n 'observer',\n 'patients',\n 'dropdownBtn',\n 'modeRadio',\n 'allDayModeCheckbox',\n 'patientNameDefaultTitle',\n 'eventTypeDefaultTitle',\n ];\n\n static values = {\n randomId: String,\n formType: {\n default: 'events-new-form',\n type: String,\n },\n };\n\n initialSrc = '';\n selectedMode?: HTMLInputElement;\n\n connect() {\n useResetForm(this, { element: this.form });\n this.initialSrc = this.lazyLoadSrc;\n }\n\n modeRadioTargetConnected(target: HTMLInputElement) {\n if (target.checked) {\n this.selectedMode = target;\n }\n }\n\n selectType() {\n const radio = this.radioTargets.find((r) => r.checked);\n const displayValue = radio?.dataset.displayValue;\n if (!displayValue) return;\n\n this.textTarget.innerText = displayValue;\n }\n\n refetchTypes(event: Event) {\n if (!this.lazyLoadSrc) return;\n const { target } = event;\n if (!(target instanceof HTMLInputElement)) return;\n\n const url = constructURL(this.lazyLoadSrc, { event_mode_id: target.value, event_type_id: null });\n this.lazyLoadSrc = url.toString();\n }\n\n resetForm() {\n const selectedMode = this.selectedMode?.value as ModeTypeIds | undefined;\n if (selectedMode) {\n this.selectModeType(selectedMode);\n }\n\n if (this.initialSrc) {\n const url = constructURL(this.initialSrc, { refetch_time: new Date().getTime().toString() });\n this.lazyLoadSrc = url.toString();\n }\n }\n\n enableDropdown() {\n if (!this.hasDropdownBtnTarget) return;\n this.dropdownBtnTarget.disabled = false;\n }\n\n disableDropdown() {\n if (!this.hasDropdownBtnTarget) return;\n this.dropdownBtnTarget.disabled = true;\n }\n\n hideObserverAddition() {\n if (!this.hasObserverTarget) return;\n this.observerTarget.setAttribute('hidden', '');\n }\n\n hidePatientsAddition() {\n if (this.hasPatientsTarget) {\n this.patientsTarget.hidden = true;\n }\n\n const autocomplete = this.patientsTarget.querySelector('awc-autocomplete');\n if (!(autocomplete instanceof HTMLElement)) return;\n autocomplete.required = false;\n }\n\n showObserverAddition() {\n if (!this.hasObserverTarget) return;\n this.observerTarget.hidden = false;\n }\n\n showPatientsAddition() {\n if (this.hasPatientsTarget) {\n this.patientsTarget.hidden = false;\n }\n\n const autocomplete = this.patientsTarget.querySelector('awc-autocomplete');\n if (!(autocomplete instanceof HTMLElement)) return;\n\n autocomplete.required = true;\n }\n\n updateFields(event: Event) {\n const { target } = event;\n if (!(target instanceof HTMLInputElement)) return;\n this.selectModeType(target.value as ModeTypeIds);\n }\n\n private selectModeType(value: ModeTypeIds) {\n if (value === ModeType.OutOfOffice || value === ModeType.Other) {\n this.hideObserverAddition();\n this.hidePatientsAddition();\n } else if (value === ModeType.InPerson) {\n this.hideObserverAddition();\n this.showPatientsAddition();\n } else if (value === ModeType.Teletherapy) {\n this.showObserverAddition();\n this.showPatientsAddition();\n }\n\n if (value === ModeType.OutOfOffice || value === ModeType.Other) {\n this.eventTypeDefaultTitleTarget.hidden = false;\n this.patientNameDefaultTitleTarget.hidden = true;\n } else {\n this.eventTypeDefaultTitleTarget.hidden = true;\n this.patientNameDefaultTitleTarget.hidden = false;\n }\n\n if (this.formTypeValue === 'events-new-form') {\n if (value === ModeType.OutOfOffice && !this.allDayModeCheckboxTarget.checked) {\n this.allDayModeCheckboxTarget.click();\n } else if (this.allDayModeCheckboxTarget.checked && value !== ModeType.OutOfOffice) {\n this.allDayModeCheckboxTarget.click();\n }\n }\n }\n\n private get lazyLoadSrc() {\n return this.lazyLoadTarget.getAttribute('data-lazy-load-src-value') || '';\n }\n\n private set lazyLoadSrc(src: string) {\n this.lazyLoadTarget.setAttribute('data-lazy-load-src-value', src);\n }\n\n private get form() {\n return this.element.closest('form') as HTMLFormElement;\n }\n\n declare readonly radioTargets: HTMLInputElement[];\n declare readonly textTarget: HTMLElement;\n declare readonly lazyLoadTarget: HTMLElement;\n declare readonly dropdownBtnTarget: HTMLButtonElement;\n declare readonly observerTarget: HTMLElement;\n declare readonly modeRadioTargets: HTMLInputElement[];\n declare readonly allDayModeCheckboxTarget: HTMLInputElement;\n declare readonly eventTypeDefaultTitleTarget: HTMLElement;\n declare readonly patientNameDefaultTitleTarget: HTMLElement;\n declare readonly hasDropdownBtnTarget: boolean;\n declare readonly hasObserverTarget: boolean;\n declare readonly hasPatientsTarget: boolean;\n declare readonly randomIdValue: string;\n declare readonly formTypeValue: string;\n declare readonly patientsTarget: HTMLElement;\n}\n"],"sourceRoot":""}