{"version":3,"file":"js/547-577d1c0d790efa3a97a4.js","mappings":"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","sources":["webpack://monami/./app/javascript/controllers/shared/ sync \\.js$","webpack://monami/./app/javascript/controllers/shared/client_preview_controller.js","webpack://monami/./app/javascript/controllers/shared/clipboard_controller.js","webpack://monami/./app/javascript/controllers/shared/copy_text_controller.js","webpack://monami/./app/javascript/controllers/shared/copy_text_toast_controller.js","webpack://monami/./app/javascript/controllers/shared/copy_to_clipboard_controller.js","webpack://monami/./app/javascript/controllers/shared/copy_url_to_clipboard_controller.js","webpack://monami/./app/javascript/controllers/shared/custom_autocomplete_controller.js","webpack://monami/./app/javascript/controllers/shared/dropdown_button_controller.js","webpack://monami/./app/javascript/controllers/shared/duplicate_person_modal_controller.js","webpack://monami/./app/javascript/controllers/shared/filter_controller.js","webpack://monami/./app/javascript/controllers/shared/heap_controller.js","webpack://monami/./app/javascript/controllers/shared/inputs/inc_dec_input_controller.js","webpack://monami/./app/javascript/controllers/shared/inputs/radio_input_controller.js","webpack://monami/./app/javascript/controllers/shared/inputs/rrule_input_controller.js","webpack://monami/./app/javascript/controllers/shared/ir_preview_controller.js","webpack://monami/./app/javascript/controllers/shared/live_region_controller.js","webpack://monami/./app/javascript/controllers/shared/modals/close_custom_bootstrap_modal_controller.js","webpack://monami/./app/javascript/controllers/shared/modals/close_modal_controller.js","webpack://monami/./app/javascript/controllers/shared/modals/confirm_controller.js","webpack://monami/./app/javascript/controllers/shared/modals/flash_controller.js","webpack://monami/./app/javascript/controllers/shared/modals/prevent_new_tab_controller.js","webpack://monami/./app/javascript/controllers/shared/modals/reload_react_component_controller.js","webpack://monami/./app/javascript/controllers/shared/navigation_controller.js","webpack://monami/./app/javascript/controllers/shared/nutrition/dates_navigation_controller.js","webpack://monami/./app/javascript/controllers/shared/phone_mask_controller.js","webpack://monami/./app/javascript/controllers/shared/popover_controller.js","webpack://monami/./app/javascript/controllers/shared/radio_button_reveal_controller.js","webpack://monami/./app/javascript/controllers/shared/react_component_controller.js","webpack://monami/./app/javascript/controllers/shared/recipient_filter_controller.js","webpack://monami/./app/javascript/controllers/shared/recurring_schedule_controller.js","webpack://monami/./app/javascript/controllers/shared/rehydrate_turbo_frame_controller.js","webpack://monami/./app/javascript/controllers/shared/search_controller.js","webpack://monami/./app/javascript/controllers/shared/select_frame_controller.js","webpack://monami/./app/javascript/controllers/shared/service_records_index_controller.js","webpack://monami/./app/javascript/controllers/shared/session_limits_controller.js","webpack://monami/./app/javascript/controllers/shared/show_hide_fields_controller.js","webpack://monami/./app/javascript/controllers/shared/smart_lists/legacy_bulk_upload_link_controller.js","webpack://monami/./app/javascript/controllers/shared/smart_lists/provider_only/search_controller.js","webpack://monami/./app/javascript/controllers/shared/smart_lists/search_controller.js","webpack://monami/./app/javascript/controllers/shared/snackbar_controller.js","webpack://monami/./app/javascript/controllers/shared/super_form/autosave_controller.js","webpack://monami/./app/javascript/controllers/shared/super_form/basic_list_controller.js","webpack://monami/./app/javascript/controllers/shared/super_form/case_field_controller.js","webpack://monami/./app/javascript/controllers/shared/super_form/currency_field_controller.js","webpack://monami/./app/javascript/controllers/shared/super_form/dependent_field_controller.js","webpack://monami/./app/javascript/controllers/shared/super_form/formula_field_controller.js","webpack://monami/./app/javascript/controllers/shared/super_form/generated_summary_controller.js","webpack://monami/./app/javascript/controllers/shared/super_form/navigation_controller.js","webpack://monami/./app/javascript/controllers/shared/superform_errors_navigation_controller.js","webpack://monami/./app/javascript/controllers/shared/toast_controller.js","webpack://monami/./app/javascript/controllers/shared/tooltip_controller.js","webpack://monami/./app/javascript/controllers/shared/turbo/go_to_previous_page_controller.js","webpack://monami/./app/javascript/controllers/shared/zendesk_controller.js"],"sourcesContent":["var map = {\n\t\"./client_preview_controller.js\": 66436,\n\t\"./clipboard_controller.js\": 20886,\n\t\"./copy_text_controller.js\": 26999,\n\t\"./copy_text_toast_controller.js\": 83767,\n\t\"./copy_to_clipboard_controller.js\": 86046,\n\t\"./copy_url_to_clipboard_controller.js\": 28564,\n\t\"./custom_autocomplete_controller.js\": 54056,\n\t\"./dropdown_button_controller.js\": 56290,\n\t\"./duplicate_person_modal_controller.js\": 47763,\n\t\"./filter_controller.js\": 63302,\n\t\"./heap_controller.js\": 39938,\n\t\"./inputs/inc_dec_input_controller.js\": 94182,\n\t\"./inputs/radio_input_controller.js\": 58258,\n\t\"./inputs/rrule_input_controller.js\": 7211,\n\t\"./ir_preview_controller.js\": 67740,\n\t\"./live_region_controller.js\": 34337,\n\t\"./modals/close_custom_bootstrap_modal_controller.js\": 50662,\n\t\"./modals/close_modal_controller.js\": 35609,\n\t\"./modals/confirm_controller.js\": 62263,\n\t\"./modals/flash_controller.js\": 669,\n\t\"./modals/prevent_new_tab_controller.js\": 40630,\n\t\"./modals/reload_react_component_controller.js\": 74162,\n\t\"./navigation_controller.js\": 28514,\n\t\"./nutrition/dates_navigation_controller.js\": 91159,\n\t\"./phone_mask_controller.js\": 3723,\n\t\"./popover_controller.js\": 3339,\n\t\"./radio_button_reveal_controller.js\": 61120,\n\t\"./react_component_controller.js\": 26278,\n\t\"./recipient_filter_controller.js\": 6750,\n\t\"./recurring_schedule_controller.js\": 26635,\n\t\"./rehydrate_turbo_frame_controller.js\": 92303,\n\t\"./search_controller.js\": 75288,\n\t\"./select_frame_controller.js\": 32862,\n\t\"./service_records_index_controller.js\": 19247,\n\t\"./session_limits_controller.js\": 98615,\n\t\"./show_hide_fields_controller.js\": 63718,\n\t\"./smart_lists/legacy_bulk_upload_link_controller.js\": 13471,\n\t\"./smart_lists/provider_only/search_controller.js\": 56455,\n\t\"./smart_lists/search_controller.js\": 91656,\n\t\"./snackbar_controller.js\": 60321,\n\t\"./super_form/autosave_controller.js\": 97463,\n\t\"./super_form/basic_list_controller.js\": 18572,\n\t\"./super_form/case_field_controller.js\": 20584,\n\t\"./super_form/currency_field_controller.js\": 65653,\n\t\"./super_form/dependent_field_controller.js\": 81427,\n\t\"./super_form/formula_field_controller.js\": 83100,\n\t\"./super_form/generated_summary_controller.js\": 56209,\n\t\"./super_form/navigation_controller.js\": 94631,\n\t\"./superform_errors_navigation_controller.js\": 71412,\n\t\"./toast_controller.js\": 27025,\n\t\"./tooltip_controller.js\": 73637,\n\t\"./turbo/go_to_previous_page_controller.js\": 62393,\n\t\"./utils/fetch_data.js\": 92838,\n\t\"./zendesk_controller.js\": 78700,\n\t\"controllers/shared/client_preview_controller.js\": 66436,\n\t\"controllers/shared/clipboard_controller.js\": 20886,\n\t\"controllers/shared/copy_text_controller.js\": 26999,\n\t\"controllers/shared/copy_text_toast_controller.js\": 83767,\n\t\"controllers/shared/copy_to_clipboard_controller.js\": 86046,\n\t\"controllers/shared/copy_url_to_clipboard_controller.js\": 28564,\n\t\"controllers/shared/custom_autocomplete_controller.js\": 54056,\n\t\"controllers/shared/dropdown_button_controller.js\": 56290,\n\t\"controllers/shared/duplicate_person_modal_controller.js\": 47763,\n\t\"controllers/shared/filter_controller.js\": 63302,\n\t\"controllers/shared/heap_controller.js\": 39938,\n\t\"controllers/shared/inputs/inc_dec_input_controller.js\": 94182,\n\t\"controllers/shared/inputs/radio_input_controller.js\": 58258,\n\t\"controllers/shared/inputs/rrule_input_controller.js\": 7211,\n\t\"controllers/shared/ir_preview_controller.js\": 67740,\n\t\"controllers/shared/live_region_controller.js\": 34337,\n\t\"controllers/shared/modals/close_custom_bootstrap_modal_controller.js\": 50662,\n\t\"controllers/shared/modals/close_modal_controller.js\": 35609,\n\t\"controllers/shared/modals/confirm_controller.js\": 62263,\n\t\"controllers/shared/modals/flash_controller.js\": 669,\n\t\"controllers/shared/modals/prevent_new_tab_controller.js\": 40630,\n\t\"controllers/shared/modals/reload_react_component_controller.js\": 74162,\n\t\"controllers/shared/navigation_controller.js\": 28514,\n\t\"controllers/shared/nutrition/dates_navigation_controller.js\": 91159,\n\t\"controllers/shared/phone_mask_controller.js\": 3723,\n\t\"controllers/shared/popover_controller.js\": 3339,\n\t\"controllers/shared/radio_button_reveal_controller.js\": 61120,\n\t\"controllers/shared/react_component_controller.js\": 26278,\n\t\"controllers/shared/recipient_filter_controller.js\": 6750,\n\t\"controllers/shared/recurring_schedule_controller.js\": 26635,\n\t\"controllers/shared/rehydrate_turbo_frame_controller.js\": 92303,\n\t\"controllers/shared/search_controller.js\": 75288,\n\t\"controllers/shared/select_frame_controller.js\": 32862,\n\t\"controllers/shared/service_records_index_controller.js\": 19247,\n\t\"controllers/shared/session_limits_controller.js\": 98615,\n\t\"controllers/shared/show_hide_fields_controller.js\": 63718,\n\t\"controllers/shared/smart_lists/legacy_bulk_upload_link_controller.js\": 13471,\n\t\"controllers/shared/smart_lists/provider_only/search_controller.js\": 56455,\n\t\"controllers/shared/smart_lists/search_controller.js\": 91656,\n\t\"controllers/shared/snackbar_controller.js\": 60321,\n\t\"controllers/shared/super_form/autosave_controller.js\": 97463,\n\t\"controllers/shared/super_form/basic_list_controller.js\": 18572,\n\t\"controllers/shared/super_form/case_field_controller.js\": 20584,\n\t\"controllers/shared/super_form/currency_field_controller.js\": 65653,\n\t\"controllers/shared/super_form/dependent_field_controller.js\": 81427,\n\t\"controllers/shared/super_form/formula_field_controller.js\": 83100,\n\t\"controllers/shared/super_form/generated_summary_controller.js\": 56209,\n\t\"controllers/shared/super_form/navigation_controller.js\": 94631,\n\t\"controllers/shared/superform_errors_navigation_controller.js\": 71412,\n\t\"controllers/shared/toast_controller.js\": 27025,\n\t\"controllers/shared/tooltip_controller.js\": 73637,\n\t\"controllers/shared/turbo/go_to_previous_page_controller.js\": 62393,\n\t\"controllers/shared/utils/fetch_data.js\": 92838,\n\t\"controllers/shared/zendesk_controller.js\": 78700\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 86547;","import { Controller } from '@hotwired/stimulus'\nimport { Dropdown } from 'bootstrap'\n\nexport default class ClientPreviewController extends Controller {\n static targets = ['toggle', 'menu']\n\n connect() {\n this.dropdown = new Dropdown(this.toggleTarget)\n if (this.dropdown._menu === undefined)\n this.dropdown._menu = this.menuTarget\n\n this.toggleTarget.addEventListener('mouseover', this.onMouseover)\n this.toggleTarget.addEventListener('mouseleave', this.onMouseleave)\n this.menuTarget.addEventListener('mouseover', this.onMouseover)\n this.menuTarget.addEventListener('mouseleave', this.onMouseleave)\n }\n\n onMouseover = (event) => {\n setTimeout(() => {\n if (this.dropdown._menu.contains(event.target) || this.dropdown._element.contains(event.target)) {\n this.dropdown.show()\n }\n }, 250)\n }\n\n onMouseleave = () => {\n setTimeout(() => {\n if (!this.isHovering()) {\n this.dropdown.hide()\n }\n }, 250)\n }\n\n isHovering() {\n return this.dropdown._menu.matches(':hover') || this.dropdown._element.matches(':hover')\n }\n\n disconnect() {\n this.toggleTarget.removeEventListener('mouseover', this.onMouseover)\n this.toggleTarget.removeEventListener('mouseleave', this.onMouseleave)\n this.menuTarget.removeEventListener('mouseover', this.onMouseover)\n this.menuTarget.removeEventListener('mouseleave', this.onMouseleave)\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ 'source', 'success', 'primary' ]\n\n static values = {\n timeout: { type: Number, default: 5000 },\n content: String\n }\n\n copy() {\n try {\n navigator.clipboard.writeText(this.contentValue)\n this.showFeedback()\n } catch (err) {\n console.error('Clipboard only works in HTTPS. HTTPS Support is in Puma in development mode.', err)\n // logs copied value and shows ui changes for dev testing\n if (this.checkEnvironment()) {\n console.log(this.contentValue)\n this.showFeedback()\n }\n }\n }\n\n showFeedback() {\n this.toggleFeedback()\n setTimeout(() => this.toggleFeedback(), this.timeoutValue)\n }\n\n toggleFeedback() {\n this.successTarget.classList.toggle('hidden')\n this.primaryTarget.classList.toggle('hidden')\n }\n\n checkEnvironment() {\n return document.querySelector('.test-env-banner')\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport Popover from 'bootstrap/js/dist/popover'\n\nexport default class extends Controller {\n connect() {\n this.popover = new Popover(this.element)\n }\n\n clipboardCopyTo(event) {\n event.preventDefault()\n var tempInput = document.createElement('input')\n tempInput.value = event.params.text\n document.body.appendChild(tempInput)\n tempInput.select()\n document.execCommand('copy')\n document.body.removeChild(tempInput)\n\n this.popover.show()\n setTimeout(() => {\n this.popover.hide()\n }, 2000)\n }\n}\n","import { Controller } from '@hotwired/stimulus';\nimport { Toast } from 'bootstrap';\n\nexport default class extends Controller {\n connect() {\n const trigger = this.element;\n const element = document.querySelector('.toast');\n\n if (element && trigger) {\n this.toast = new Toast(element);\n trigger.addEventListener('click', this.onClick.bind(this))\n }\n }\n\n onClick(event) {\n event.stopPropagation()\n var tempInput = document.createElement('input')\n tempInput.value = event.target.dataset.text || event.target.innerText;\n document.body.appendChild(tempInput)\n tempInput.select()\n document.execCommand('copy')\n document.body.removeChild(tempInput)\n\n this.toast.show();\n setTimeout(() => {\n this.toast.hide();\n }, 2000);\n }\n\n disconnect() {\n this.element.removeEventListener('click', event => this.onClick(event))\n }\n\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static values = {\n data: String\n }\n\n copy(event) {\n event.preventDefault()\n\n try {\n navigator.clipboard.writeText(this.dataValue)\n document.dispatchEvent(new CustomEvent('toast', { detail: { message: 'Copied to clipboard' } }))\n } catch (err) {\n console.error('Clipboard only works in HTTPS. HTTPS Support is in Puma in development mode.', err)\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n copyUrl() {\n const url = window.location.href\n\n try {\n navigator.clipboard.writeText(url)\n document.dispatchEvent(\n new CustomEvent('toast', { detail: { message: 'Link to this view has been copied to clipboard' } })\n )\n } catch (err) {\n console.error('Clipboard only works in HTTPS. HTTPS Support is in Puma in development mode.', err)\n }\n }\n}\n","import { Autocomplete } from 'stimulus-autocomplete'\nimport { turboRequest } from '../../helpers/turbo_helper'\n\nexport default class CustomAutocomplete extends Autocomplete {\n static targets = [\n 'selectedMenuItemContainer',\n 'menuItemSelectionTurboFrame',\n 'extraListContainer',\n 'extendedListMessage',\n 'spinner',\n 'inputWrapper',\n 'addNewItemContainer'\n ]\n static values = {\n extendListOptions: Object,\n selectMenuItemUrl: String,\n selectNewClientPath: String,\n hideAddNewItemButton: Boolean,\n autocompleteParameters: Object,\n ransackSearchMatcher: String,\n uniqueId: String\n }\n\n connect() {\n super.connect()\n this.currentUrl = this.urlValue\n\n this.displayItemSelection = this.displayItemSelection.bind(this)\n this.showLoadingSpinner = this.showLoadingSpinner.bind(this)\n this.hideLoadingSpinner = this.hideLoadingSpinner.bind(this)\n\n this.element.addEventListener('autocomplete.change', this.displayItemSelection)\n this.element.addEventListener('loadstart', this.showLoadingSpinner)\n this.element.addEventListener('loadend', this.hideLoadingSpinner)\n this.hideLoadingSpinner()\n }\n\n disconnect() {\n this.element.removeEventListener('autocomplete.change', this.displayItemSelection)\n this.element.removeEventListener('loadstart', this.showLoadingSpinner)\n this.element.removeEventListener('loadend', this.hideLoadingSpinner)\n }\n\n showLoadingSpinner() {\n this.spinnerTarget.classList.remove('d-none')\n }\n\n hideLoadingSpinner() {\n this.spinnerTarget.classList.add('d-none')\n }\n\n displayItemSelection() {\n if (['', null].includes(this.selectMenuItemUrlValue)) {\n return\n }\n\n this.selectedMenuItemContainerTarget.classList.remove('d-none')\n this.inputWrapperTarget.classList.add('d-none')\n\n var url = new URL(this.selectMenuItemUrlValue)\n var params = new URLSearchParams(url.search)\n params.append('item_id', this.hiddenTarget.value)\n\n if (this.uniqueIdValue) {\n params.append('unique_id', this.uniqueIdValue)\n }\n\n turboRequest(`${url.pathname}?${params}`)\n\n this.element.dispatchEvent(\n new CustomEvent('typeahead:changed', { bubbles: true, detail: { id: this.uniqueIdValue } })\n )\n }\n\n buildURL(query) {\n const url = new URL(this.currentUrl, window.location.href)\n url.searchParams.set(`q[${this.ransackSearchMatcherValue}]`, query)\n url.searchParams.set('query_string', query)\n if (this.hasAutocompleteParametersValue) {\n Object.keys(this.autocompleteParametersValue).forEach(key =>\n url.searchParams.set(key, this.autocompleteParametersValue[key])\n )\n }\n return url.href\n }\n\n newClient() {\n if (this.selectNewClientPathValue) {\n var urlParams = new URLSearchParams(this.selectNewClientPathValue)\n urlParams.append('full_name', this.inputTarget.value)\n\n let url = ''\n if (this.selectNewClientPathValue.includes('?')) {\n url = `${this.selectNewClientPathValue}&${urlParams}`\n } else {\n url = `${this.selectNewClientPathValue}?${urlParams}`\n }\n\n turboRequest(url)\n }\n this.close()\n }\n\n switchUrl() {\n if (this.currentUrl == this.urlValue) {\n this.currentUrl = this.extendListOptionsValue.extended_path\n } else {\n this.currentUrl = this.urlValue\n }\n\n this.onInputChange()\n }\n\n extraListContainerTargetConnected(element) {\n if (Object.keys(this.extendListOptionsValue).length === 0) {\n element.remove()\n } else {\n if (this.currentUrl == this.urlValue) {\n this.extendedListMessageTarget.innerHTML = this.extendListOptionsValue.extended_message\n } else {\n this.extendedListMessageTarget.innerHTML = this.extendListOptionsValue.revert_extended_message\n }\n }\n }\n\n addNewItemContainerTargetConnected(element) {\n if (this.hideAddNewItemButtonValue) {\n element.remove()\n }\n }\n\n hiddenTargetConnected(element) {\n if (element.value) {\n this.displayItemSelection()\n }\n }\n\n clear() {\n super.clear()\n this.selectedMenuItemContainerTarget.classList.add('d-none')\n this.inputWrapperTarget.classList.remove('d-none')\n this.menuItemSelectionTurboFrameTarget.innerHTML = ''\n\n this.element.dispatchEvent(\n new CustomEvent('autocomplete.clear', { bubbles: true, detail: { id: this.uniqueIdValue } })\n )\n }\n\n hideAndRemoveOptions() {\n this.close()\n }\n\n commit(selected) {\n if (selected.getAttribute('aria-disabled') === 'true') return\n\n if (selected instanceof HTMLAnchorElement) {\n selected.click()\n this.close()\n return\n }\n\n const textValue = selected.getAttribute('data-autocomplete-label') || selected.textContent.trim()\n const value = selected.getAttribute('data-autocomplete-value') || textValue\n this.inputTarget.value = textValue\n\n if (this.hasHiddenTarget) {\n this.hiddenTarget.value = value\n this.hiddenTarget.dispatchEvent(new Event('input'))\n this.hiddenTarget.dispatchEvent(new Event('change'))\n } else {\n this.inputTarget.value = value\n }\n\n this.inputTarget.focus()\n this.hideAndRemoveOptions()\n\n this.element.dispatchEvent(\n new CustomEvent('autocomplete.change', {\n bubbles: true,\n detail: { value: value, textValue: textValue, selected: selected, id: this.uniqueIdValue }\n })\n )\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { Dropdown } from 'bootstrap'\n\nexport default class DropdownButtonController extends Controller {\n static targets = ['toggle']\n\n connect() {\n this.dropdown = new Dropdown(this.toggleTarget)\n if (this.dropdown._menu === undefined)\n this.dropdown._menu = this.menuTarget\n this.toggleTarget.addEventListener('keydown', this.registerKeydown.bind(this))\n this.toggleTarget.addEventListener('show.bs.dropdown', this.onShow.bind(this))\n }\n\n onShow(event) {\n if (this.keyboardEvent && this.dropdown._menu) {\n this.dropdown._links = this.dropdown._menu.querySelectorAll('a')\n setTimeout(() =>this.dropdown._links[0].focus());\n }\n }\n\n registerKeydown(event) {\n if (event.keyCode == 13 || event.keyCode == 32) {\n this.keyboardEvent = true\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { turboRequest } from '../../helpers/turbo_helper'\nimport { closeModal } from 'controllers/shared/modals/close_modal_controller.js'\n\nexport default class extends Controller {\n static values = {\n selectPersonUrl: String,\n personAttributesPath: Array\n }\n\n connect() {\n this.nextTarget = document.getElementById('next-button')\n this.modal = document.getElementById('modal')\n\n if (this.modal && this.nextTarget) {\n this.nextTarget.disabled = true;\n this.modal.addEventListener('hidden.bs.modal', this.enableNextTarget)\n }\n }\n\n disconnect() {\n if(this.modal && this.nextTarget) {\n this.modal.removeEventListener('autocomplete.change', this.enableNextTarget)\n }\n }\n\n enableNextTarget (event) {\n this.nextTarget = document.getElementById('next-button')\n if (this.nextTarget) {\n this.nextTarget.disabled = false;\n }\n }\n\n useThisPerson(event) {\n const personId = event.target.dataset.personId\n\n var url = new URL(this.selectPersonUrlValue)\n var params = new URLSearchParams(url.search)\n params.append('person_id', personId)\n\n turboRequest(`${url.pathname}?${params}`)\n\n closeModal('#modal')\n }\n\n ignoreDuplicatePersonModalWarning() {\n closeModal('#modal')\n\n this.updateBypassDuplicatePersonDetectionHiddenField()\n }\n\n updateBypassDuplicatePersonDetectionHiddenField() {\n // Construct the name attribute\n var nameAttribute = `${this.personAttributesPathValue.join('[').concat(']')}[bypass_duplicate_person_detection]`\n\n var forms = document.querySelectorAll('form')\n var form = forms[forms.length - 1]\n var existingInput = form.querySelector(`input[name=\"${nameAttribute}\"]`)\n\n if (!existingInput) {\n var hiddenInput = document.createElement('input')\n hiddenInput.setAttribute('type', 'hidden')\n hiddenInput.setAttribute('name', nameAttribute)\n hiddenInput.setAttribute('value', true)\n\n form.appendChild(hiddenInput)\n } else {\n existingInput.value = true\n }\n\n form.submit()\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { turboFetchCollection } from '../../helpers/turbo_helper'\n\nexport default class extends Controller {\n static targets = [\n 'searchInput',\n 'selectInput',\n 'radioInput',\n 'dateInput',\n 'dropdownSelectInput',\n 'numberInput',\n 'numberFilter',\n 'numberField',\n 'apply',\n 'checkboxInput',\n 'recipientTypeFilter'\n ]\n\n connect() {\n document.addEventListener('keydown', this.keyListener, true)\n\n if (this.hasCheckboxInputTarget) {\n this.setButtonName()\n }\n }\n\n disconnect() {\n document.removeEventListener('keydown', this.keyListener, true)\n }\n\n keyListener = (e) => {\n const hiddenButton = document.getElementById('hiddenSubmitButton')\n if (e.key === 'Enter' && hiddenButton) {\n // Cancel the default action, so the other filters are not clicked as well\n e.preventDefault()\n // Trigger the button element with a click\n hiddenButton.click()\n }\n }\n\n onSearchChange(event) {\n Array.from(document.getElementsByClassName('select-option')).map(el => {\n const label = el.lastElementChild.innerText\n if (label.toLowerCase().includes(event.target.value.toLowerCase())) {\n el.classList.remove('d-none')\n } else {\n el.classList.add('d-none')\n }\n })\n }\n\n removeRelativeHiddenForm(event) {\n let relativeHiddenForm = document.querySelector(`${event.target.dataset.element} .d-none .search`)\n\n if (relativeHiddenForm) {\n relativeHiddenForm.remove()\n }\n\n this.conditionallyClearDependentFilters(event)\n }\n\n conditionallyClearDependentFilters(event) {\n const dependentFiltersString = event.target.dataset?.popoverFilterDependentFilterTargets\n if (dependentFiltersString && dependentFiltersString != 'null') {\n const dependentFilterTargets = JSON.parse(dependentFiltersString)\n\n dependentFilterTargets.forEach(target => {\n const targetElement = document.getElementById(`${target}`)\n if (targetElement) { targetElement.value = null }\n })\n }\n }\n\n clearFilters(event) {\n event.preventDefault()\n\n if (this.hasSearchInputTarget) {\n this.searchInputTargets.forEach(el => el.value = '')\n }\n if (this.hasDateInputTarget) {\n let dateFields = this.dateInputTarget.querySelectorAll(\"[name$='gteq]'], [name$='lteq]'], [name*='date']\")\n if (dateFields.length > 0) {\n dateFields.forEach(dateField => (dateField.value = ''))\n }\n }\n if (this.hasSelectInputTarget) {\n this.selectInputTarget.querySelectorAll('input[type=\"checkbox\"]').forEach(checkbox => (checkbox.checked = false))\n }\n if (this.hasDropdownSelectInputTarget) {\n this.dropdownSelectInputTarget.value = ''\n }\n if (this.hasRadioInputTarget) {\n this.radioInputTarget.querySelectorAll('input[type=\"radio\"]').forEach(radio => (radio.checked = false))\n }\n if (this.hasNumberInputTarget) {\n this.numberInputTarget.value = null\n this.numberFilterTarget.value = null\n }\n if (this.hasRecipientTypeFilterTarget) {\n this.recipientTypeFilterTarget.value = ''\n\n this.removeElementById('q_recipient_of_Customer_type_id_eq');\n this.removeElementById('q_recipient_of_RecipientGroup_type_name_cont');\n this.removeElementById('q_recipient_of_Events::Attendee_type_person_full_name_cont');\n }\n\n this.applyTarget.click()\n }\n\n removeElementById(elementId) {\n let element = document.getElementById(elementId);\n if (element) element.remove();\n }\n\n handleNumberFilterChange() {\n turboFetchCollection('/admin/org/filters/number_filter', this.numberFieldTarget.value, {\n filter: this.numberFilterTarget.value,\n value: this.numberInputTarget.value\n })\n }\n\n providerHandleNumberFilterChange() {\n turboFetchCollection('/filters/number_filter', this.numberFieldTarget.value, {\n filter: this.numberFilterTarget.value,\n value: this.numberInputTarget.value\n })\n }\n\n handleCheckBoxInputChange() {\n this.setButtonName()\n }\n\n setButtonName() {\n let checkedCheckboxes = document\n .querySelector(`.search`)\n .querySelectorAll(`input[name='${this.checkboxInputTarget.name}'][type='checkbox']:checked`)\n if (checkedCheckboxes.length === 0) {\n document.getElementById('apply-btn').value = 'Apply'\n } else {\n document.getElementById('apply-btn').value = `Apply (${checkedCheckboxes.length})`\n }\n }\n\n submitSearchForm() {\n document.getElementById('search_form').submit()\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static values = {\n currentUser: String,\n administratorId: String,\n administratorName: String,\n administratorEmail: String,\n organization: String,\n federation: String,\n }\n\n connect() {\n this.loadHeap = this.loadHeap.bind(this)\n document.addEventListener('turbo:load', this.loadHeap)\n }\n\n disconnect() {\n document.removeEventListener('turbo:load', this.loadHeap)\n }\n\n loadHeap() {\n if(this.currentUserValue) {\n heap.identify(this.currentUserValue);\n }\n\n heap.addUserProperties({\n administratorId: this.administratorIdValue,\n administratorName: this.administratorNameValue,\n administratorEmail: this.administratorEmailValue,\n organization: this.organizationValue,\n federation: this.federationValue,\n });\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['input', 'decrementButton']\n\n increment() {\n const input = this.inputTarget\n const previousValue = parseInt(input.value)\n\n input.value = previousValue + 1\n\n if (previousValue === 1) {\n // Enable the decrement button since the value is no longer at the threshold.\n this.decrementButtonTarget.removeAttribute('disabled')\n }\n }\n\n decrement() {\n const input = this.inputTarget;\n const previousValue = parseInt(input.value)\n\n input.value = previousValue - 1\n\n if (previousValue - 1 <= 1) {\n // Disable the decrement button since the new value is at the threshold or below.\n this.decrementButtonTarget.setAttribute('disabled', 'disabled')\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['checkbox', 'hidden']\n\n connect() {\n this.checkHiddenField()\n }\n\n toggle(event) {\n if (event.target.checked) {\n this.uncheckHiddenField()\n this.checkboxTargets.forEach((checkbox) => {\n if (checkbox != event.target) {\n checkbox.checked = false;\n }\n });\n } else {\n this.checkHiddenField()\n }\n event.target.dispatchEvent(new Event('exclusive-checkbox:toggle', { bubbles: true }))\n }\n\n uncheckHiddenField() {\n if (this.hasHiddenTarget) {\n this.hiddenTarget.checked = false;\n }\n }\n\n checkHiddenField() {\n if (this.hasHiddenTarget) {\n var anyCheckBoxSelected = this.checkboxTargets.some(checkbox => checkbox.checked)\n if (!anyCheckBoxSelected) {\n this.hiddenTarget.checked = true;\n }\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { RRule, Weekday } from 'rrule'\nimport moment from 'moment'\nimport { map, identity, times } from 'ramda'\nimport flatpickr from 'flatpickr'\n\nexport default class extends Controller {\n static targets = [\n 'endAt',\n 'startAt',\n 'type',\n 'weekdays',\n 'days',\n 'timeslots',\n 'rule',\n 'monthly',\n 'monthlyBySetPos',\n 'monthlyByDay'\n ]\n\n static values = {\n formPrefix: String,\n hasTimeslots: Boolean\n }\n\n connect() {\n // Bind other functions to `this`\n this.updateScheduleType = this.updateScheduleType.bind(this)\n this.updateMonthlySchedule = this.updateMonthlySchedule.bind(this)\n this.updateDaySchedule = this.updateDaySchedule.bind(this)\n\n // Initialize form controls\n this.initializeInputs()\n\n this.typeTarget.addEventListener('change', this.updateScheduleType)\n\n this.daysTargets.forEach(weekdayInput => {\n weekdayInput.addEventListener('change', this.updateDaySchedule)\n })\n\n this.monthlyBySetPosTarget.addEventListener('change', this.updateMonthlySchedule)\n this.monthlyByDayTarget.addEventListener('change', this.updateMonthlySchedule)\n }\n\n disconnect() {\n this.typeTarget.removeEventListener('change', this.updateScheduleType)\n\n this.daysTargets.forEach(weekdayInput => {\n weekdayInput.removeEventListener('change', this.updateDaySchedule)\n })\n\n this.monthlyBySetPosTarget.removeEventListener('change', this.updateMonthlySchedule)\n this.monthlyByDayTarget.removeEventListener('change', this.updateMonthlySchedule)\n }\n\n // Setup the control state from the value of the hidden RRule input.\n initializeInputs() {\n let scheduleTypeOptions = Array.from(this.typeTarget.children)\n\n let hasTimeslots = this.hasTimeslotsValue;\n\n if (this.ruleTarget.value === '' && !hasTimeslots) {\n // schedule type selected option will be 'Weekly on...' by default\n scheduleTypeOptions.find(option => option.label === 'Weekly on...').selected = true\n } else if (this.ruleTarget.value === ''){\n // when schedule type selected option 'Custom', end at field will be hidden\n scheduleTypeOptions.find(option => option.label === 'Custom').selected = true\n this.hideEndAtStartAtField()\n } else {\n let currentRRule = RRule.fromString(this.ruleTarget.value)\n\n let fixedScheduleOption = scheduleTypeOptions.find(option => {\n let optionRRule = RRule.fromString(option.value)\n\n return (\n JSON.stringify(currentRRule.origOptions.byweekday) === JSON.stringify(optionRRule.origOptions.byweekday) &&\n currentRRule.origOptions.freq === optionRRule.origOptions.freq &&\n currentRRule.origOptions.interval === optionRRule.origOptions.interval\n )\n })\n\n if (fixedScheduleOption) {\n fixedScheduleOption.selected = true\n } else {\n let monthlyOrByDayOption = scheduleTypeOptions.find(option => {\n let optionRRule = RRule.fromString(option.value)\n\n return (\n optionRRule.origOptions.byweekday === undefined &&\n currentRRule.origOptions.freq === optionRRule.origOptions.freq &&\n currentRRule.origOptions.interval === optionRRule.origOptions.interval\n )\n })\n\n if (monthlyOrByDayOption) {\n monthlyOrByDayOption.selected = true\n if (monthlyOrByDayOption.text === 'Monthly') {\n this.initializeMonthlyInputs()\n } else {\n let selectedDays = currentRRule.origOptions.byweekday.map(day => day.toString())\n Array.from(this.daysTargets).forEach(element => (element.checked = selectedDays.includes(element.value)))\n }\n }\n }\n }\n\n this.updateScheduleType()\n }\n\n initializeMonthlyInputs() {\n let currentRRule = RRule.fromString(this.ruleTarget.value)\n\n Array.from(this.monthlyBySetPosTarget.options).forEach(option => {\n if (option.value === `BYSETPOS=${currentRRule.options.bysetpos.join()}`) option.selected = true\n })\n\n Array.from(this.monthlyByDayTarget.options).forEach(option => {\n let weekday = new Weekday(currentRRule.options.byweekday.join())\n if (option.value === `BYDAY=${weekday.toString()}`) option.selected = true\n })\n }\n\n setRRule(rrule) {\n console.log('RRule:', rrule)\n this.ruleTarget.value = rrule\n }\n\n updateMonthlySchedule() {\n this.setRRule(\n this.buildRRule(this.typeTarget.value, this.monthlyBySetPosTarget.value, this.monthlyByDayTarget.value)\n )\n }\n\n updateDaySchedule() {\n let selectedDaysElements = Array.from(this.daysTargets).filter(element => element.checked === true)\n let selectedDays = selectedDaysElements.map(el => el.value)\n if (selectedDays.length > 0) {\n this.setRRule(this.buildRRule(this.typeTarget.value, `BYDAY=${selectedDays.join(',')}`))\n } else {\n this.setRRule(this.buildRRule(this.typeTarget.value))\n }\n }\n\n updateScheduleType() {\n this.element.querySelectorAll('.rrule-element').forEach(el => el.classList.add('d-none'))\n\n let currentSelection = this.typeTarget.options[this.typeTarget.options.selectedIndex]\n if (currentSelection?.label === 'Custom') {\n this.timeslotsTarget.classList.remove('d-none')\n this.hideEndAtStartAtField()\n this.endAtTarget.classList.add('d-none')\n this.setRRule('')\n } else if (currentSelection?.label === 'Monthly') {\n this.updateMonthlySchedule()\n this.monthlyTarget.classList.remove('d-none')\n this.revealStartAtEndAtField()\n } else {\n this.revealStartAtEndAtField()\n let rule = RRule.fromString(this.typeTarget.value)\n if (rule.origOptions.byweekday === undefined) {\n this.updateDaySchedule()\n this.weekdaysTarget.classList.remove('d-none')\n } else {\n this.setRRule(this.buildRRule(this.typeTarget.value))\n }\n }\n }\n\n hideEndAtStartAtField() {\n if (this.hasEndAtTarget && !this.endAtTarget.classList.contains('d-none')) {\n this.endAtTarget.classList.add('d-none')\n this.endAtTarget.querySelectorAll('input').forEach(input => {\n input.value = ''\n })\n }\n if (this.hasStartAtTarget && !this.startAtTarget.classList.contains('d-none')) {\n this.startAtTarget.classList.add('d-none')\n this.startAtTarget.querySelectorAll('input').forEach(input => {\n input.value = ''\n })\n }\n }\n\n revealStartAtEndAtField() {\n if (this.endAtTarget.classList.contains('d-none')) {\n this.endAtTarget.classList.remove('d-none')\n }\n if (this.startAtTarget.classList.contains('d-none')) {\n this.startAtTarget.classList.remove('d-none')\n }\n }\n\n buildRRule = (...segments) => `RRULE:${segments.join(';')}`\n}\n","import ClientPreviewController from './client_preview_controller'\n\nexport default ClientPreviewController\n","import { Controller } from '@hotwired/stimulus'\nimport { debounce } from 'underscore'\n\nexport default class extends Controller {\n static targets = ['source']\n static values = {\n timeout: { type: Number, default: 5000 }\n }\n\n connect() {\n this.add = debounce(this.add.bind(this), 1000)\n this.region = document.getElementById(`live-region-${this.sourceTarget.dataset.region}`)\n }\n\n add() {\n this.createAnnouncement()\n this.region.appendChild(this.announcement)\n setTimeout(() => this.clear(), this.timeoutValue)\n }\n\n createAnnouncement() {\n var announcement = this.sourceTarget.dataset.announcement.toString()\n announcement = document.createTextNode(`${announcement}`)\n var span = document.createElement('span')\n\n span.appendChild(announcement)\n this.announcement = span\n }\n\n setTimeoutValue() {\n if (this.sourceTarget.dataset.timeout) {\n this.timeoutValue = this.sourceTarget.dataset.timeout\n }\n }\n\n sourceTargetConnected() {\n this.setTimeoutValue()\n }\n\n clear() {\n this.region.removeChild(this.announcement)\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { Modal } from 'bootstrap'\n\nexport default class extends Controller {\n connect() {\n document.addEventListener('turbo:before-fetch-request', this.closeModalBeforeFetch)\n }\n\n disconnect() {\n document.removeEventListener('turbo:before-fetch-request', this.closeModalBeforeFetch)\n }\n\n closeModalBeforeFetch(event) {\n let modalEl = document.getElementById('modal')\n\n if (modalEl === null || modalEl.style.display !== 'block') return\n\n if (event.detail.fetchOptions.method === 'GET' && event.detail.fetchOptions.headers.Accept.match('text/html')) {\n event.preventDefault()\n modalEl.addEventListener('hidden.bs.modal', event.detail.resume)\n Modal.getOrCreateInstance('#modal').hide()\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { Modal } from 'bootstrap'\n\nexport default class extends Controller {\n static values = {\n domId: String\n }\n\n connect() {\n closeModal(this.domIdValue, this.element)\n }\n}\n\nexport function closeModal(domId, element = null) {\n const modalEl = document.querySelector(domId)\n\n if (modalEl) {\n const modal = Modal.getOrCreateInstance(domId)\n modal.hide()\n if (modal._backdrop) {\n modal.dispose()\n }\n\n // The template element is hidden by default anyway but it's nicer to remove it (since it will also disconnect the controller)\n //\n if (element) {\n element.remove()\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { Modal } from 'bootstrap'\nimport ReactRailsUJS from 'react_ujs'\n\n// A general purpose controller to support a Modal::Confirm dialog.\n//\n// See https://turbo.hotwired.dev/reference/events\n//\n// If you need to do something other than support a Modal::Confirm, make a new\n// controller. Don't junk this up.\n//\nexport default class extends Controller {\n static values = {\n confirmation: Boolean,\n closeBeforeFetch: Boolean\n }\n // Runs any time an element with this controller enters the DOM.\n //\n // This is a great place to setup event listeners so you can build complex\n // behaviors using Bootstrap components like Modal and Popper.\n //\n\n connect() {\n this.originalFocusElement = document.activeElement\n // There is only One #modal element in the DOM. It should be in the layout, you probably don't need to add one.\n // This is the root element, a sub element attached this controller and this activates the modal behavior.\n Modal.getOrCreateInstance('#modal').show()\n\n // Mount any React Components added by the modal content.\n ReactRailsUJS.mountComponents('#modal')\n\n // If the modal is a confirmation dialog, listen for an AJAX event to close the modal.\n // If there is any validation error, just render new content for `#modal` and it will work.\n if (this.confirmationValue) {\n document.body.addEventListener('ajax:send', this.closeModal)\n document.body.addEventListener('turbo:submit-end', this.closeTurboModal)\n }\n\n // If we visit a page, also dispose of the modal.\n //\n // See https://turbo.hotwired.dev/handbook/drive#pausing-requests\n //\n this.closeModalBeforeFetch = this.closeModalBeforeFetch.bind(this)\n document.addEventListener('turbo:before-fetch-request', this.closeModalBeforeFetch)\n\n // Make sure we dispose of a modal after it's hidden\n document.getElementById('modal').addEventListener('hidden.bs.modal', this.disposeModal)\n }\n\n // Runs any time an element with this controller is removed from the DOM.\n //\n disconnect() {\n if (this.originalFocusElement) {\n this.originalFocusElement.focus()\n }\n // Deregister listeners.\n // See https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener#matching_event_listeners_for_removal\n //\n if (this.confirmationValue) {\n document.body.removeEventListener('ajax:send', this.closeModal)\n document.body.removeEventListener('turbo:submit-end', this.closeTurboModal)\n }\n\n const modal = document.getElementById('modal')\n if (modal) {\n modal.removeEventListener('hidden.bs.modal', this.disposeModal)\n }\n\n document.removeEventListener('turbo:before-fetch-request', this.closeModalBeforeFetch)\n }\n\n // Event Handlers\n //\n closeModal() {\n Modal.getOrCreateInstance('#modal').hide()\n }\n\n closeTurboModal(e) {\n if (e.detail.success) {\n Modal.getOrCreateInstance('#modal').hide()\n }\n }\n\n disposeModal() {\n const modal = Modal.getOrCreateInstance('#modal')\n if (modal._backdrop) {\n modal.dispose()\n }\n\n const modalEl = document.getElementById('modal')\n modalEl.removeAttribute('src')\n modalEl.innerHTML = ''\n }\n\n closeModalBeforeFetch(event) {\n let modalEl = document.getElementById('modal')\n\n if (modalEl === null || modalEl.style.display !== 'block') return\n\n if (\n this.closeBeforeFetchValue ||\n (event.detail.fetchOptions.method === 'GET' && event.detail.fetchOptions.headers.Accept.match('text/html'))\n ) {\n event.preventDefault()\n modalEl.addEventListener('hidden.bs.modal', event.detail.resume)\n this.closeModal()\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static values = {\n message: String\n }\n\n connect() {\n if (this.messageValue) {\n document.dispatchEvent(new CustomEvent('toast', { detail: { message: this.messageValue } }))\n\n this.element.remove()\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n initialize() {\n document.querySelectorAll('a[data-turbo-frame=\"modal\"], a[data-remote=\"true\"]').forEach(element => {\n element.addEventListener('click', this.preventNewTab);\n })\n\n document.addEventListener('turbo:before-stream-render', event => {\n if (event.target.action === 'update') {\n setTimeout(() => {\n document.querySelectorAll('a[data-turbo-frame=\"modal\"], a[data-remote=\"true\"]').forEach(element => {\n element.addEventListener('click', this.preventNewTab)\n })\n }, 100)\n }\n })\n }\n\n disconnect() {\n document.querySelectorAll('a[data-turbo-frame=\"modal\"], a[data-remote=\"true\"]').forEach(element => {\n element.removeEventListener('click', this.preventNewTab);\n })\n }\n\n preventNewTab(event) {\n if (event.metaKey || event.ctrlKey) {\n document.dispatchEvent(new CustomEvent('toast', { detail: { message: 'Cannot open this link in a new tab' }}))\n event.preventDefault();\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport ReactRailsUJS from 'react_ujs'\n\nexport default class extends Controller {\n connect() {\n let targetElementId = this.element.dataset.targetElementId\n\n let targetElement = null\n if (targetElementId) { targetElement = document.getElementById(targetElementId) }\n\n targetElement ? ReactRailsUJS.mountComponents(targetElement) : ReactRailsUJS.mountComponents()\n this.element.remove()\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['sidenav']\n\n connect() {\n this.clickListener = this.clickListener.bind(this)\n }\n\n closeNav() {\n this.sidenavTarget.style.width = 0\n document.removeEventListener('click', this.clickListener, true)\n }\n\n openNav() {\n this.sidenavTarget.style.width = '60vw'\n document.addEventListener('click', this.clickListener, true)\n }\n\n clickListener (e) {\n var snav = document.getElementById('mySidenav')\n if (e.target.id !== snav.id && !snav.contains(e.target) && !e.target.className.match('open-nav')) {\n this.closeNav()\n }\n }\n}\n","/* eslint-disable no-undef */\n\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n connect() {\n window.addEventListener('react-date-time:changed', this.dateChange, { once: true })\n }\n\n static values = {\n url: String\n }\n\n dateChange(event) {\n if (event.detail.id === 'dates-navigation') {\n const date = new Date(event.detail.date)\n const formattedDate = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`\n\n const url = `${window.location.pathname}?date=${formattedDate}`\n Turbo.visit(url)\n }\n }\n\n disconnect() {\n window.removeEventListener('react-date-time:changed', this.dateChange, { once: true })\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport IMask from 'imask'\n\nexport default class extends Controller {\n connect() {\n var maskOptions = {\n mask: '+{1} (000) 000-0000',\n lazy: !this.element.value //Use to show mask when the component loads with data in it. Usually when an error occurs\n }\n\n var patternMask = IMask(this.element, maskOptions)\n\n //when you click on input, placeholders are shown\n this.element.addEventListener(\n 'focus',\n function () {\n patternMask.updateOptions({ lazy: false })\n },\n true\n )\n //when click off, hide placeholders if input is empty\n this.element.addEventListener('blur', function () {\n if (patternMask.unmaskedValue.length === 1) {\n patternMask.updateOptions({ lazy: true })\n patternMask.value = ''\n }\n })\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { Popover } from 'bootstrap'\n\nexport default class extends Controller {\n static targets = ['button', 'contentContainer', 'liveContainer']\n static values = {\n bodyClasses: Array,\n announcement: String\n }\n\n connect() {\n if (!this.hasButtonTarget) {\n throw new Error('Popover requires button target')\n }\n if (!this.hasContentContainerTarget) {\n throw new Error('Popover requires content container target')\n }\n\n const container = document.querySelector('#filter-container')\n this.popover = Popover.getOrCreateInstance(this.buttonTarget, {\n html: true,\n sanitize: false,\n container,\n placement: 'bottom',\n content: this.contentContainerTarget.innerHTML,\n })\n\n document.addEventListener('click', this.clickListener, true)\n\n this.buttonTarget.addEventListener('keydown', e => {\n const isExpanded = this.buttonTarget.getAttribute('aria-expanded')\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n this.popover.toggle()\n } else if (e.key === 'Tab' && isExpanded === 'true') {\n e.preventDefault()\n this.getPopoverContent().focus()\n }\n })\n\n this.buttonTarget.addEventListener('hidden.bs.popover', () => {\n this.buttonTarget.setAttribute('aria-expanded', false)\n if (this.hasLiveContainerTarget && this.hasAnnouncementValue) {\n this.liveContainerTarget.innerHTML = ''\n }\n })\n\n this.buttonTarget.addEventListener('show.bs.popover', () => {\n // close all other popovers\n document.querySelectorAll('[data-popover-target=\"button\"]').forEach(button => {\n if (button !== this.buttonTarget) {\n Popover.getInstance(button).hide()\n }\n })\n })\n\n this.buttonTarget.addEventListener('shown.bs.popover', () => {\n this.buttonTarget.setAttribute('aria-expanded', true)\n if (this.hasLiveContainerTarget && this.hasAnnouncementValue) {\n this.liveContainerTarget.innerHTML = this.announcementValue\n }\n if (this.hasBodyClassesValue) {\n this.getPopoverBody().classList.add(...this.bodyClassesValue)\n }\n this.getPopoverContent().addEventListener('keydown', e => {\n if (e.key === 'Escape') {\n this.popover.hide()\n this.buttonTarget.focus()\n }\n })\n })\n }\n\n disconnect() {\n document.removeEventListener('click', this.clickListener, true)\n }\n\n getPopoverBody() {\n return document.querySelector('.popover-body')\n }\n\n getPopoverContent() {\n return this.getPopoverBody().querySelector('#popover-content')\n }\n\n clickListener = e => {\n const { target } = e;\n if (!this.popover) return\n // do not intercept normal click behavior for button target\n if (this.buttonTarget === target || this.buttonTarget.contains(target)) return\n\n const popoverBodyElement = this.getPopoverBody()\n if (popoverBodyElement && !popoverBodyElement.contains(target)) {\n this.popover.hide()\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static values = {\n visibilityControl: String,\n liveRegionMessage: String\n }\n\n static targets = [\n 'hiddenWrapper',\n 'radioInput'\n ]\n\n connect() {\n this.toggleHiddenWrapperOnCheckedRadio()\n this.liveRegion = document.getElementById('live-region-polite')\n }\n\n toggleHiddenWrapperOnCheckedRadio() {\n const checkedRadio = this.radioInputTargets.find(radio => radio.checked)\n if (checkedRadio) {\n this.toggleHiddenWrapper(checkedRadio.value)\n }\n }\n\n handleRadioInputChange({ target }) {\n this.toggleHiddenWrapper(target.value)\n if (this.visibilityControlValue === 'false' && this.liveRegionMessageValue) {\n this.liveRegion.textContent = this.liveRegionMessageValue\n }\n }\n\n toggleHiddenWrapper(value) {\n const shouldShow = value === this.visibilityControlValue\n\n if (this.hasHiddenWrapperTarget) {\n if (shouldShow) {\n this.hiddenWrapperTarget.classList.remove('d-none')\n } else {\n this.hiddenWrapperTarget.classList.add('d-none')\n }\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n connect() {\n ReactRailsUJS.mountComponents(this.element)\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { turboFetchCollection } from '../../helpers/turbo_helper'\n\nexport default class extends Controller {\n static targets = [\n 'recipientTypeFilter',\n 'recipientValueInput'\n ]\n handleRecipientTypeFilterChange(event) {\n let inputValue = this.hasRecipientValueInputTarget ? this.recipientValueInputTarget.value : ''\n const filter = this.recipientTypeFilterTarget.value\n\n inputValue = this._clearInputValue(filter, inputValue)\n\n turboFetchCollection(\n '/admin/org/service_records/recipient_filter', '', {\n filter: filter,\n value: inputValue\n })\n }\n\n _clearInputValue(filter, inputValue) {\n if (filter === 'Client') {\n return inputValue;\n }\n\n return '';\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport ReactRailsUJS from 'react_ujs'\n\nexport default class extends Controller {\n static targets = [\n 'isRepeatedInput',\n 'calendar',\n 'repeatTypeInput',\n 'repeatEveryField',\n 'repeatEveryInput',\n 'inputText',\n 'scheduleType',\n 'fixedScheduleWrapper',\n 'mandatoryAttendance'\n ]\n\n connect() {\n ReactRailsUJS.mountComponents('.calendar')\n\n if (this.hasRepeatTypeInputTarget) {\n this.updateRepeatEveryInputText(this.repeatTypeInputTarget.value)\n }\n if (this.hasScheduleTypeTarget) {\n this.updateScheduleWrapper(this.scheduleTypeTarget.value)\n }\n if (this.hasIsRepeatedInputTarget) {\n this.updateRepeatTypeAppearance($(this.element).find(\"[id$='_is_repeated_true']\").prop('checked'))\n }\n\n if (document.getElementById('visit_visit_type')) {\n this.shiftEnabled = this.hasShift()\n }\n }\n\n handleisRepeatedInputChange({ target }) {\n this.updateRepeatTypeAppearance(target.value === 'true')\n }\n\n updateRepeatTypeAppearance(isRepeated) {\n const el = $(this.element)\n el.find('.repeat-field').hide()\n\n if (isRepeated) {\n el.find('.not-custom-schedule').show()\n this.updateCalendarAppearance(this.repeatTypeInputTarget.value)\n } else {\n this.clearAllRepeatingValues()\n }\n }\n\n handleRepeatTypeInputChange({ target }) {\n this.updateCalendarAppearance(target.value)\n this.updateRepeatEveryInputText(this.repeatTypeInputTarget.value)\n }\n\n updateCalendarAppearance(repeatType) {\n const el = $(this.element)\n el.find('.repeat-field').hide()\n\n if (repeatType === 'other') {\n el.find('.custom-schedule').show()\n this.clearSomeRepeatingValues()\n } else {\n el.find('.not-custom-schedule').show()\n }\n }\n\n updateRepeatEveryInputText(value) {\n switch (value) {\n case 'weekly':\n this.inputTextTarget.textContent = 'week(s)'\n break\n case 'monthly':\n this.inputTextTarget.textContent = 'month(s)'\n break\n default:\n this.inputTextTarget.textContent = 'day(s)'\n }\n }\n\n onScheduleTypeChange({ target }) {\n this.updateScheduleWrapper(target.value)\n }\n\n updateScheduleWrapper(value) {\n const el = $(this.element)\n el.find('.schedule-wrapper').hide()\n\n if (value === 'flexible') {\n if (this.hasShift()) $(\"#visit_visit_type option[value='shift']\").remove()\n el.find('.flexible').show()\n this.clearAllRepeatingValues()\n $(this.element).find(\"[id$='is_repeated_false']\").trigger('click')\n } else {\n // We remove shift as a visit type option at line 87 because we don't support flexible-shift visits. If the schedule changes back to fixed,\n // then we only want to reinsert the shift option if it was present at first\n if (this.shiftEnabled) this.addShiftToOptions()\n el.find('.fixed').show()\n }\n }\n\n addShiftToOptions() {\n var shift = document.createElement('option')\n shift.value = 'shift'\n shift.text = 'Shift'\n document.getElementById('visit_visit_type').add(shift, null)\n }\n\n hasShift() {\n const visitType = document.getElementById('visit_visit_type')\n const options = Array.apply(null, visitType.options)\n\n return options.filter(option => option.value === 'shift').length === 1\n }\n\n clearSomeRepeatingValues() {\n this.clearRepeatUntil(null)\n\n this.repeatEveryInputTarget.value = ''\n }\n\n clearRepeatUntil(date) {\n window.dispatchEvent(new CustomEvent('react-date-time:force-change', { detail: { id: 'repeat_until', date } }))\n }\n\n clearAllRepeatingValues() {\n if (this.hasIsRepeatedInputTarget) {\n this.repeatTypeInputTarget.value = ''\n this.clearSomeRepeatingValues()\n }\n if (this.hasMandatoryAttendanceTarget) {\n this.mandatoryAttendanceTarget.checked = false\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n\n initialize() {\n this.element.setAttribute('loading', 'lazy')\n }\n\n connect() {\n this.rehydrate = this.rehydrate.bind(this)\n document.addEventListener('turbo:load', this.rehydrate)\n }\n\n disconnect() {\n document.removeEventListener('turbo:load', this.rehydrate)\n }\n\n rehydrate(event) {\n this.element.reload()\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { debounce } from 'underscore'\n\nexport default class extends Controller {\n connect() {\n this.filter = debounce(this.filter.bind(this), 300)\n }\n\n filter() {\n this.element.requestSubmit()\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nconst LOADER_HTML = `\n
\n
\n
\n`;\n\nexport default class extends Controller {\n static targets = [ \"frame\" ]\n\n select(e) {\n const { currentTarget } = e;\n const option = currentTarget.options[currentTarget.selectedIndex]\n\n this.frameTarget.innerHTML = LOADER_HTML;\n history.replaceState(null, '', currentTarget.value);\n this.frameTarget.setAttribute('src', currentTarget.value);\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { Modal } from 'bootstrap'\n\nexport default class extends Controller {\n static targets = [\n 'bulkUpdateButton',\n 'serviceRecords',\n 'bulkUpdateButtonError',\n 'bulkDeleteButton',\n 'bulkManagementActionsContainer',\n 'bulkManagementActionsContainerSummary',\n 'bulkManagementActionsContainerSummaryCount',\n 'bulkManagementActionsContainerSummaryText',\n 'exportSelectedButton',\n 'exportButton'\n ]\n\n static values = {\n url: String,\n deleteUrl: String,\n exportModalUrl: String,\n exportUrl: String,\n currentPageRecords: Number,\n totalRecords: Number,\n siteRequired: Boolean\n }\n\n connect() {\n this.serviceRecordSelected = false\n if (this.hasBulkUpdateButtonTarget) {\n this.defaultBulkEditButtonLabel = this.bulkUpdateButtonTarget.text\n }\n if (this.hasBulkDeleteButtonTarget) {\n this.defaultBulkDeleteButtonLabel = this.bulkDeleteButtonTarget.text\n }\n }\n\n // invoked on service records index table header checkbox click\n toggleCheckBoxes() {\n this.serviceRecordSelected = !this.serviceRecordSelected\n let checkboxes = this.serviceRecordsTarget.querySelectorAll('input[type=\"checkbox\"]')\n checkboxes.forEach(el => (el.checked = this.serviceRecordSelected))\n\n this.toggleBulkActionButtons()\n }\n\n // reveals or hides buttons to bulk edit / delete selected service records\n toggleBulkActionButtons() {\n const selectedServiceRecords = Array.from(\n this.serviceRecordsTarget.querySelectorAll('input.service-record-checkbox:checked')\n )\n\n if (selectedServiceRecords.length > 0) {\n const firstSelectedServiceRecordProgram = selectedServiceRecords[0].parentElement?.parentElement?.dataset?.program\n const allMatchingProgram = selectedServiceRecords.every(\n record => record.parentElement?.parentElement?.dataset?.program === firstSelectedServiceRecordProgram\n )\n\n const selectedCount = selectedServiceRecords.length\n const checkSites = this.siteAndGranularPermissionsCheck(selectedServiceRecords)\n\n if (allMatchingProgram && checkSites) {\n if (this.hasBulkUpdateButtonErrorTarget) {\n this.hide(this.bulkUpdateButtonErrorTarget)\n }\n if (this.hasBulkUpdateButtonTarget) {\n this.reveal(this.bulkUpdateButtonTarget)\n this.setSummaryCountandTextFor(selectedCount)\n this.reveal(this.bulkManagementActionsContainerSummaryTarget)\n }\n } else {\n if (this.hasBulkUpdateButtonTarget) {\n this.hide(this.bulkUpdateButtonTarget)\n }\n if (this.hasBulkUpdateButtonErrorTarget) {\n if (!checkSites && !allMatchingProgram) {\n this.bulkUpdateButtonErrorTarget.parentElement.setAttribute('data-bs-original-title', 'Filter your service records down to a single program and site to enable editing')\n } else if (!allMatchingProgram) {\n this.bulkUpdateButtonErrorTarget.parentElement.setAttribute('data-bs-original-title', 'Filter your service records down to a single program to enable editing')\n } else {\n this.bulkUpdateButtonErrorTarget.parentElement.setAttribute('data-bs-original-title', 'Filter your service records down to a single site to enable editing')\n }\n\n this.reveal(this.bulkUpdateButtonErrorTarget)\n this.setSummaryCountandTextFor(selectedCount)\n this.reveal(this.bulkManagementActionsContainerSummaryTarget)\n }\n }\n if (this.hasBulkDeleteButtonTarget) {\n this.reveal(this.bulkDeleteButtonTarget)\n this.setSummaryCountandTextFor(selectedCount)\n }\n\n if (this.hasBulkManagementActionsContainerTarget) {\n this.reveal(this.bulkManagementActionsContainerTarget)\n }\n } else {\n if (this.hasBulkUpdateButtonTarget) {\n this.hide(this.bulkUpdateButtonTarget)\n }\n\n if (this.hasBulkDeleteButtonTarget) {\n this.hide(this.bulkDeleteButtonTarget)\n }\n\n if (this.hasBulkUpdateButtonErrorTarget) {\n this.hide(this.bulkUpdateButtonErrorTarget)\n }\n\n if (this.hasBulkManagementActionsContainerTarget) {\n this.hide(this.bulkManagementActionsContainerTarget)\n }\n }\n }\n\n reveal(element) {\n element.classList.remove('d-none')\n }\n\n hide(element) {\n element.classList.add('d-none')\n }\n\n setSummaryCountandTextFor(selectedCount) {\n this.bulkManagementActionsContainerSummaryCountTarget.innerHTML = selectedCount\n this.bulkManagementActionsContainerSummaryTextTarget.innerHTML =\n ` ${selectedCount === 1 ? 'service record on this page is selected'\n : 'service records on this page are selected'}`\n }\n\n // sends request which will pop a modal for bulk updating fields on selected service records\n updateSelectedServiceRecords(event) {\n event.preventDefault()\n\n this.openModalWithSelectedServiceRecord(this.urlValue)\n }\n\n // sends request which will pop a modal for bulk deleting selected service records\n deleteSelectedServiceRecords(event) {\n event.preventDefault()\n\n this.openModalWithSelectedServiceRecord(this.deleteUrlValue)\n }\n\n exportServiceRecords(event) {\n event.preventDefault()\n\n this.openModalWithSelectedServiceRecord(this.exportModalUrlValue, false)\n }\n\n exportSelectedServiceRecords(event) {\n event.preventDefault()\n\n this.openModalWithSelectedServiceRecord(this.exportModalUrlValue)\n }\n\n openModalWithSelectedServiceRecord(modalUrl, selectionWarning = true) {\n let selectedServiceRecords = Array.from(\n this.serviceRecordsTarget.querySelectorAll('input.service-record-checkbox:checked')\n )\n let selectedServiceRecordsIds = selectedServiceRecords.map(record => parseInt(record.value))\n\n if (selectedServiceRecords.length > 0 || !selectionWarning) {\n var baseURL = new URL(modalUrl)\n var searchParams = new URLSearchParams(baseURL.search)\n\n if (selectedServiceRecords.length > 0) {\n selectedServiceRecordsIds.forEach(id => searchParams.append('ids[]', id))\n searchParams.append('selected_count', selectedServiceRecordsIds.length)\n }\n\n searchParams.append('current_page_count', this.currentPageRecordsValue)\n searchParams.append('total_count', this.totalRecordsValue)\n\n const url = baseURL.pathname + '?' + searchParams\n\n if (url.length >= 10240) {\n alert(`Too many service records selected.`)\n } else {\n document.getElementById('modal').src = url\n }\n } else {\n document.dispatchEvent(\n new CustomEvent('toast', { detail: { failure: true, message: 'No service records selected' } })\n )\n }\n }\n\n export(event) {\n event.preventDefault()\n\n let exportTypeRadioButton = document.querySelector('input[name=\"export_type\"]:checked')\n let exportType = exportTypeRadioButton ? exportTypeRadioButton.value : null\n\n if (exportType) {\n var baseURL = new URL(this.exportUrlValue)\n var searchParams = new URLSearchParams(baseURL.search)\n\n searchParams.append('export_type', exportType)\n\n this.downloadCSV(baseURL, searchParams)\n } else {\n alert('Please specify which rows you want to export.')\n }\n }\n\n downloadCSV(baseURL, searchParams) {\n const url = baseURL.pathname + '?' + searchParams\n\n let csvDownloadLink = document.getElementById('download-csv-link')\n csvDownloadLink.href = url\n csvDownloadLink.click()\n\n Modal.getOrCreateInstance('#modal').hide()\n }\n\n siteAndGranularPermissionsCheck(selectedServiceRecords) {\n if (!this.siteRequiredValue) {\n return true\n }\n\n const firstSelectedServiceRecordSite = selectedServiceRecords[0].parentElement?.parentElement?.dataset?.site\n return selectedServiceRecords.every(\n record => record.parentElement?.parentElement?.dataset?.site === firstSelectedServiceRecordSite\n )\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { debounce } from 'underscore'\n\nconst ACTIVITY_ACTION_EVENTS = ['mousemove', 'wheel', 'keydown', 'keyup']\nconst START_TIMEOUT_COUNTDOWN_WITHIN = 70000 // 70 seconds in miliseconds\nconst WARNING_ELEMENT_ID = 'session-timeout-alert'\nconst TEMPLATE = secondsLeft => {\n return `\n
\n
\n \n
\n
\n
\n Warning\n
\n Your session will automatically logout due to inactivity in ${secondsLeft} seconds.\n
\n
\n
\n
\n `\n}\n\nexport default class extends Controller {\n static values = {\n sessionTimeoutPath: String,\n sessionTimeoutRedirectPath: String,\n initialTimeoutAt: String\n }\n\n connect() {\n this.startPolling = this.startPolling.bind(this)\n this.resetTimeoutAt = this.resetTimeoutAt.bind(this)\n this.pollForUpdatedTimeout = this.pollForUpdatedTimeout.bind(this)\n this.sendHeartbeat = debounce(this.sendHeartbeat.bind(this), 300, true)\n this.debouncedSendHeartbeat = debounce(this.sendHeartbeat, 30000, true)\n\n ACTIVITY_ACTION_EVENTS.forEach(event => window.addEventListener(event, this.debouncedSendHeartbeat))\n\n this.resetTimeoutAt(new Date(this.initialTimeoutAtValue))\n }\n\n disconnect() {\n ACTIVITY_ACTION_EVENTS.forEach(event => window.removeEventListener(event, this.debouncedSendHeartbeat))\n }\n\n // Figure out when the session will expire, then check within 1 minute of expiring.\n // Other pages can make the session valid. This prevents constant polling of session expiry.\n resetTimeoutAt(timeoutAt) {\n clearInterval(this.intervalId)\n this.timeoutAt = timeoutAt\n let secondsLeft = this.secondsLeft(timeoutAt)\n console.debug(`SESSION LIMIT[resetTimeoutAt]: ${secondsLeft} seconds`)\n this.updateTimeoutWarning(secondsLeft)\n const startPollingIn = this.timeoutAt - new Date() - START_TIMEOUT_COUNTDOWN_WITHIN\n this.timeoutId = setTimeout(this.startPolling, startPollingIn)\n }\n\n secondsLeft(timeoutAt) {\n return Math.round((timeoutAt - new Date()) / 1000)\n }\n\n // Check the session timeout controller to see when the session actually expires.\n startPolling() {\n this.intervalId = setInterval(this.pollForUpdatedTimeout, 1000)\n }\n\n async pollForUpdatedTimeout() {\n let secondsLeft = this.secondsLeft(this.timeoutAt)\n\n if (secondsLeft % 10 === 0 || secondsLeft <= 0) {\n await fetch(this.sessionTimeoutPathValue, { cache: 'no-cache' })\n .then(response => response.json())\n .then(json => {\n if (json.timed_out) {\n clearInterval(this.intervalId)\n window.location = this.sessionTimeoutRedirectPathValue\n } else {\n this.timeoutAt = new Date(json.session_expires_at)\n }\n })\n }\n\n secondsLeft = this.secondsLeft(this.timeoutAt)\n this.updateTimeoutWarning(secondsLeft)\n }\n\n sendHeartbeat() {\n clearInterval(this.intervalId)\n clearTimeout(this.timeoutId)\n\n if (!this.sessionTimeoutPathValue) return console.warn('Session Timeout Path is not defined')\n\n fetch(this.sessionTimeoutPathValue, {\n method: 'PATCH',\n headers: {\n 'X-CSRF-Token': document.querySelector(\"[name='csrf-token']\").content\n }\n })\n .then(response => response.json())\n .then(json => this.resetTimeoutAt(new Date(json.session_expires_at)))\n }\n\n updateTimeoutWarning(secondsLeft) {\n const warningElement = document.getElementById(WARNING_ELEMENT_ID)\n\n console.debug(`SESSION LIMIT[updateTimeoutWarning]: ${secondsLeft} seconds`)\n\n if (secondsLeft > 75) {\n ACTIVITY_ACTION_EVENTS.forEach(event => window.removeEventListener(event, this.sendHeartbeat))\n } else {\n ACTIVITY_ACTION_EVENTS.forEach(event => window.addEventListener(event, this.sendHeartbeat))\n }\n\n if (secondsLeft > 60) {\n if (warningElement) {\n warningElement.remove()\n }\n } else if (secondsLeft >= 0) {\n const renderedTemplate = TEMPLATE(secondsLeft)\n if (warningElement) {\n warningElement.outerHTML = renderedTemplate\n } else {\n document.body.insertAdjacentHTML('afterbegin', renderedTemplate)\n }\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class ShowHideFieldsController extends Controller {\n static values = {\n triggerValues: Array\n }\n\n static targets = [\n 'hiddenWrapper',\n 'input',\n 'selectInput',\n 'message'\n ]\n\n connect() {\n if (this.hasInputTarget) {\n this.manageCheckboxInputChange(this.inputTarget.checked)\n }\n if (this.hasSelectInputTarget) {\n this.manageSelectInputChange(this.selectInputTarget.value)\n }\n }\n\n handleSelectInputChange({ target }) {\n this.manageSelectInputChange(target.value)\n }\n\n manageSelectInputChange(input) {\n if (this.hasHiddenWrapperTarget){\n if (this.triggerValuesValue.map(String).includes(input)) {\n this.hiddenWrapperTargets.forEach((hiddenWrapper) => hiddenWrapper.classList.remove('d-none'))\n } else {\n this.hiddenWrapperTargets.forEach((hiddenWrapper) => hiddenWrapper.classList.add('d-none'))\n }\n }\n }\n\n handleCheckBoxInputChange({ target }) {\n this.manageCheckboxInputChange(target.checked)\n }\n\n manageCheckboxInputChange(input) {\n if (input === true) {\n this.hiddenWrapperTargets.forEach((hiddenWrapper) => hiddenWrapper.classList.add('d-none'))\n if (this.hasMessageTarget) {\n this.displayMessage(true)\n }\n }\n else {\n this.hiddenWrapperTargets.forEach((hiddenWrapper) => hiddenWrapper.classList.remove('d-none'))\n if (this.hasMessageTarget) {\n this.displayMessage(false)\n }\n }\n }\n\n displayMessage(input) {\n if (input === true) {\n this.messageTarget.classList.remove('d-none')\n }\n else {\n this.messageTarget.classList.add('d-none')\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['legacyBulkUploadButton', 'legacyBulkUploadButtonText']\n\n setReportedMonth(event) {\n var reportedMonth = event.target.value\n\n var url = new URL(this.legacyBulkUploadButtonTarget.href)\n var params = new URLSearchParams(url.search)\n params.set('reported_month', reportedMonth)\n\n url.search = params.toString()\n\n this.legacyBulkUploadButtonTarget.href = url.toString()\n this.legacyBulkUploadButtonTextTarget.innerText = `Legacy Template (${reportedMonth})`\n }\n}\n","import { turboRequest } from '../../../../helpers/turbo_helper'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n connect() {\n this.filter = this.filter.bind(this)\n this.servicesChanged = this.servicesChanged.bind(this)\n this.programsChanged = this.programsChanged.bind(this)\n this.fundingSourcesChanged = this.fundingSourcesChanged.bind(this)\n this.reloadExportOptions = this.reloadExportOptions.bind(this)\n\n addEventListener('input:change', this.servicesChanged)\n addEventListener('input:change', this.programsChanged)\n addEventListener('input:change', this.fundingSourcesChanged)\n addEventListener('turbo:before-frame-render', this.reloadExportOptions)\n }\n\n disconnect() {\n removeEventListener('input:change', this.servicesChanged)\n removeEventListener('turbo:before-frame-render', this.reloadExportOptions)\n }\n\n servicesChanged(event) {\n if (event.detail.name !== 'service_definition_ids') {\n return\n }\n this.filter()\n }\n\n programsChanged(event) {\n if (event.detail.name !== 'program_ids') {\n return\n }\n this.filter()\n }\n\n fundingSourcesChanged(event) {\n if (event.detail.name !== 'funding_source_ids') {\n return\n }\n this.filter()\n }\n\n filter() {\n this.element.requestSubmit()\n }\n\n reloadExportOptions() {\n turboRequest(`members/export_settings${window.location.search}`)\n turboRequest(`members/export_settings_options${window.location.search}`)\n turboRequest(`members/export_smart_list${window.location.search}`)\n }\n}\n","import { turboRequest } from '../../../helpers/turbo_helper'\nimport { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n connect() {\n this.filter = this.filter.bind(this)\n this.servicesChanged = this.servicesChanged.bind(this)\n this.reloadExportOptions = this.reloadExportOptions.bind(this)\n\n addEventListener('input:change', this.servicesChanged)\n addEventListener('turbo:before-frame-render', this.reloadExportOptions)\n }\n\n disconnect() {\n removeEventListener('input:change', this.servicesChanged)\n removeEventListener('turbo:before-frame-render', this.reloadExportOptions)\n }\n\n servicesChanged(event) {\n if (event.detail.name !== 'service_definition_ids') {\n return\n }\n this.filter()\n }\n\n filter() {\n this.element.requestSubmit()\n }\n\n reloadExportOptions() {\n turboRequest(`members/export_settings${window.location.search}`)\n turboRequest(`members/last_active_on_options${window.location.search}`)\n turboRequest(`members/export_smart_list${window.location.search}`)\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n initialize() {\n this.autoDismissSnackbar = this.autoDismissSnackbar.bind(this)\n }\n\n connect() {\n document.addEventListener('turbo:load', this.autoDismissSnackbar)\n }\n\n disconnect() {\n document.removeEventListener('turbo:load', this.autoDismissSnackbar)\n }\n\n autoDismissSnackbar() {\n let snackBarEl = this.element\n setTimeout(() => { snackBarEl.style.display = 'none' }, 9000)\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport Rails from 'rails-ujs'\nimport { debounce } from 'underscore'\n\nexport default class Autosave extends Controller {\n connect() {\n this.inputChanged = debounce(this.inputChanged.bind(this), 900)\n\n setTimeout(() => {\n this.element.querySelectorAll('input,textarea,select').forEach(element => {\n element.addEventListener('change', this.inputChanged)\n element.addEventListener('input', this.inputChanged)\n window.addEventListener('react-date-time:changed', this.inputChanged)\n })\n console.log('SuperForm: auto-save enabled.')\n }, 900)\n }\n\n disconnect() {\n this.element.querySelectorAll('input,textarea,select').forEach(element => {\n element.removeEventListener('change', this.inputChanged)\n element.removeEventListener('input', this.inputChanged)\n window.removeEventListener('react-date-time:changed', this.inputChanged)\n })\n }\n\n inputChanged(event) {\n Rails.ajax({\n url: this.element.action,\n type: 'PATCH',\n dataType: 'json',\n data: Rails.serializeElement(event.target),\n error: () => {\n console.log('SuperForm: auto-save failed.')\n }\n })\n }\n}\n\nexport { Autosave }\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n connect() { }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n connect() {\n this.updateCaseValue = this.updateCaseValue.bind(this)\n let source = this.data.get('source')\n this.sourceEl = document.getElementsByName(source)[0]\n this.when = JSON.parse(this.data.get('when'))\n if (this.sourceEl) {\n this.sourceEl.addEventListener('change', this.updateCaseValue)\n this.updateCaseValue()\n }\n }\n\n disconnect() {}\n\n updateCaseValue() {\n if (!this.when) {\n return\n }\n\n let sourceValue = this.sourceEl.value\n let found = this.when.find(({ min, max, value }) => {\n if (sourceValue >= min && sourceValue <= max) {\n return value\n }\n })\n\n if (!found) {\n return\n }\n\n let { value } = found\n\n let element = this.element\n if (element.type === 'checkbox') {\n console.log('Cases do not work with the checkbox data type')\n } else if (element.type === 'radio') {\n this.toggleRadioButton(element, value)\n } else {\n element.setAttribute('readonly', true)\n element.value = value\n }\n }\n\n toggleRadioButton(element, value) {\n if (element.value !== value) {\n element.setAttribute('disabled', true)\n } else {\n element.checked = true\n element.removeAttribute('disabled')\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport IMask from 'imask'\n\nexport default class extends Controller {\n connect() {\n this.mask = IMask(this.element, {\n mask: Number,\n scale: 2,\n thousandsSeparator: ',',\n padFractionalZeros: true,\n normalizeZeros: true,\n radix: '.',\n mapToRadix: ['.']\n })\n\n this.updateMask = this.updateMask.bind(this)\n this.element.addEventListener('change', this.updateMask)\n }\n\n disconnect() {\n this.element.removeEventListener('change', this.updateMask)\n }\n\n updateMask() {\n this.element.dispatchEvent(new Event('blur'))\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { Collapse } from 'bootstrap'\nimport { delay } from 'underscore'\n\nexport default class extends Controller {\n connect() {\n this.handleInput = this.handleInput.bind(this)\n this.updateVisibility = this.updateVisibility.bind(this)\n this.getDependentElements = this.getDependentElements.bind(this)\n\n let dependsOn = this.data.get('depends-on')\n this.dependsOnValues = this.data.get('depends-on-value').split('||')\n this.dependsOnEls = this.getDependentElements(document, dependsOn)\n this.dependsOnEls.forEach(el => el.addEventListener('input', this.handleInput))\n this.dependsOnEls.forEach(el => el.addEventListener('change', this.handleInput))\n this.dependsOnEls.forEach(el => el.addEventListener('select', this.handleInput))\n this.collapse = new Collapse(this.element)\n delay(this.updateVisibility, 600, this.dependsOnEls.map(el => el.value))\n }\n\n getDependentElements(document, dependsOn) {\n let elements = Array.from(document.getElementsByName(dependsOn))\n if (elements.length === 1) {\n return elements\n } else {\n let arrayElements = Array.from(document.getElementsByName(dependsOn + '[]').values())\n\n if (arrayElements.length === 0) { // for edge case of radio buttons\n arrayElements = Array.from(document.getElementsByName(dependsOn))\n arrayElements.forEach(element => element.addEventListener('change', this.handleInput))\n }\n\n return arrayElements.filter(element => this.dependsOnValues.includes(element.value.toString()))\n }\n }\n\n disconnect() {\n this.dependsOnEls.forEach(el => el.removeEventListener('input', this.handleInput))\n this.dependsOnEls.forEach(el => el.removeEventListener('change', this.handleInput))\n this.dependsOnEls.forEach(el => el.removeEventListener('select', this.handleInput))\n }\n\n handleInput(event) {\n this.updateVisibility([event.target.value.toString()])\n }\n\n updateVisibility(values) {\n if (\n (['checkbox', 'radio'].includes(this.dependsOnEls[0]?.type) && this.dependsOnEls.some(el => el.checked)) ||\n (!['checkbox', 'radio'].includes(this.dependsOnEls[0]?.type) &&\n this.dependsOnValues.some(val => values.includes(val)))\n ) {\n this.collapse.show()\n this.element.querySelectorAll('input, textarea, select').forEach(input => input.disabled = false)\n } else {\n this.collapse.hide()\n this.element.querySelectorAll('input, textarea, select').forEach(input => {\n input.disabled = true\n\n if (input.type === 'hidden') { return }\n\n if (['checkbox', 'radio'].includes(input.type)) {\n input.checked = false\n } else {\n input.value = null\n }\n })\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nconst ARRAY_INPUT_NAME_REGEX = /\\[\\]/\nconst MULTIPLE_INPUT_ELEMENTS = ['checkbox', 'radio']\nconst TRUE_STRING = true.toString()\nconst FALSE_STRING = false.toString()\n\nconst NormalizedNumber = value => {\n return Number(value.toString().replaceAll(',', ''))\n}\n\nexport default class extends Controller {\n connect() {\n this.updateListener = this.updateListener.bind(this)\n this.updateFormula = this.updateFormula.bind(this)\n this.evalListeners = this.evalListeners.bind(this)\n this.evalListener = this.evalListener.bind(this)\n\n this.formula = JSON.parse(this.data.get('formula'))\n this.formPrefix = this.data.get('form-prefix')\n this.element.setAttribute('tabindex', -1)\n this.elementCache = {}\n\n this.evalListeners(this.formula)\n this.updateFormula(this.formula)\n }\n\n disconnect() {\n this.evalListeners(this.formula, true)\n }\n\n /**\n * Setup or teardown event listeners by parsing the SuperForm formula expression.\n * @param {Array} expression - a SuperForm expression S-Expression.\n * @param {Boolean|Null} teardown - passing a not null value will remove event listeners.\n */\n evalListeners(expression, teardown) {\n if (Array.isArray(expression)) {\n let [operation, ...operands] = expression\n if (this.OPERATIONS[operation]) {\n operands.forEach(operand => this.evalListeners(operand, teardown))\n } else {\n this.evalListener(expression)\n }\n } else {\n this.evalListener(expression)\n }\n }\n\n /**\n * Setup or teardown a single event listener by parsing the SuperForm formula expression.\n * @param {Array} expression - a SuperForm expression S-Expression.\n * @param {Boolean|Null} teardown - passing a not null value will remove event listeners.\n */\n evalListener(expression, teardown) {\n let operands = Array.isArray(expression) ? expression : [expression]\n operands.forEach(operand => {\n var els = this.getElementsByName(operand)\n if (els.length) {\n if (teardown) {\n els.forEach(el => el.removeEventListener('input', this.updateListener))\n els.forEach(el => el.removeEventListener('change', this.updateListener))\n } else {\n els.forEach(el => el.addEventListener('input', this.updateListener))\n els.forEach(el => el.addEventListener('change', this.updateListener))\n }\n }\n })\n }\n\n /**\n * Event listener to trigger formula updates when dependent fields change.\n */\n updateListener() {\n this.updateFormula(this.formula)\n }\n\n /**\n * Update the element with the result of the formula and fire a change Event so dependent fields can be recalculated.\n *\n * @param {Array} formula - a SuperForm formula S-Expression\n */\n updateFormula(formula) {\n let result = this.evalFormula(formula)\n if (this.element.value !== result.toString()) {\n this.element.value = result\n this.element.dispatchEvent(new Event('change'))\n }\n }\n\n /**\n * Add operation definitions here! Every operation should return a list or a Numeric value.\n */\n OPERATIONS = {\n /**\n * Sum the values in the list.\n *\n * Examples:\n * :sum, []\n * :sum, [1, 2]\n * :sum, ['field_1', 'field_2']\n * :sum, [12, 'field_1', 'field_2']\n *\n * @param {Array} list - a list of Numeric values to sum\n * @returns {Numeric} the sum of the list\n */\n sum: list => {\n list = this.normalizeOperands(list)\n return list.reduce((a, b) => a + b, 0)\n },\n /**\n * Subract the first value from the last value.\n *\n * Examples:\n * :sub, [] # => 0\n * :sub, [3, 8] # => 5\n * :sub, ['field_1', 'field_2']\n * :sub, [12, 'field_1']\n *\n * @param {Array} list - a pair of Numeric values [subtrahend, minuend]\n * @returns {Numeric} the difference of the subtrahend from the minuend\n */\n sub: list => {\n list = this.normalizeOperands(list)\n return list.reduce((a, b) => b - a, 0)\n },\n /**\n * Multiply the values in the list.\n *\n * Examples:\n * :multiply, [5, 2]\n * :multiply, ['field_1', 'field_2']\n * :multiply, [12, 'monthly_total_field']\n *\n * @param {Array} list - a list of Numeric values to multiply\n * @returns {Numeric} the product of the list\n */\n multiply: list => {\n list = this.normalizeOperands(list)\n\n if (list.length == 0) {\n return 0\n } else {\n return list.reduce((a, b) => a * b)\n }\n },\n /**\n * Divide using a list containing the numerator and denominator.\n *\n * Examples:\n * :divide, [6, 2]\n * :divide, ['field_1', 'field_2']\n * :divide, ['yearly_total_field', 12]\n *\n * @param {Array} list - a list containing a numerator and denominator for division\n * @returns {Numeric} the quotient of the division operation\n */\n divide: list => {\n if (list.length > 2) {\n throw 'Invalid arguments. Division takes a list of [numerator, denominator]'\n }\n list = this.normalizeOperands(list)\n let [numerator, denominator] = list\n return numerator / denominator\n },\n /**\n * Returns the maximum value in the list.\n *\n * Examples:\n * :max, [5, 2]\n * :max, ['field_1', 'field_2']\n * :max, [12, 'monthly_total_field']\n *\n * @param {Array} list - a list of Numeric values to get the maxiumum of\n * @returns {Numeric} the maximum value in the list\n */\n max: list => {\n list = this.normalizeOperands(list)\n return Math.max(...list)\n },\n /**\n * Returns the minimum value in the list.\n *\n * Examples:\n * :min, [5, 2]\n * :min, ['field_1', 'field_2']\n * :min, [12, 'monthly_total_field']\n *\n * @param {Array} list - a list of Numeric values to get the minimum of\n * @returns {Numeric} the minimum value in the list\n */\n min: list => {\n list = this.normalizeOperands(list)\n return Math.min(...list)\n },\n /**\n * Filter a list of SuperForm fields by a value or list of values.\n *\n * Example:\n * :filter, ['Foo', 'field_1', 'field_2']\n * :filter, [['Foo', 'Bar], 'field_1', 'field_2']\n *\n * @param {String|Array} filterValueOrArray - a value or list of values to filter fields by.\n * @returns {Array} returns the elements that match the filter values.\n */\n filter: ([filterValueOrArray, ...list]) => {\n let values = Array.from(filterValueOrArray)\n\n let filteredValues = list.flatMap(field => {\n let elements = this.getElementsByName(field)\n return elements.filter(el => values.includes(el.labels[0].textContent) && el.checked).map(this.getElementValue)\n })\n\n return filteredValues\n }\n }\n\n /**\n * Recursively evaluate the expression by implementing Greenspun's tenth rule.\n *\n * See:\n * https://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule\n * https://en.wikipedia.org/wiki/Lisp_(programming_language)\n *\n * @param {Array} formula - a SuperForm formula S-Expression\n * @returns {Numeric|Array} A SuperForm formula or Numeric result\n */\n evalFormula(formula) {\n if (!Array.isArray(formula)) {\n return formula\n }\n\n let [operation, ...operands] = formula\n let operationFn = this.OPERATIONS[operation]\n if (operationFn) {\n let operandValues = operands.flatMap(this.evalFormula.bind(this))\n return operationFn(operandValues)\n } else {\n return formula\n }\n }\n\n /**\n * Lookup elements by superform input name. Caches results so we don't heat the planet searching the DOM.\n *\n * @param {String} name - a SuperForm field name\n * @returns {Array} a list of elements that represent the SuperForm field\n */\n getElementsByName(name) {\n const inputName = name.toString().startsWith('[') ? `${this.formPrefix}${name}` : `${this.formPrefix}[${name}]`\n let elements = [inputName, inputName + '[]'].flatMap(name => {\n return Array.from(document.getElementsByName(name)).filter(el => el.type !== 'hidden')\n })\n return elements\n }\n\n /**\n * Get a value for a SuperForm field name.\n * @param {Element} el - the input element to get a value from.\n * @returns {Numeric} a numeric value for a field.\n */\n getElementValue(el) {\n if (el) {\n if (el.dataset?.scoreMetadata) {\n let metadata = JSON.parse(el.dataset.scoreMetadata)\n let scoreOption = metadata.find(option => option.value.toString() === el.value)\n return scoreOption ? scoreOption.score : 0\n } else if (MULTIPLE_INPUT_ELEMENTS.includes(el.type)) {\n if ([TRUE_STRING, FALSE_STRING].includes(el.value)) {\n return el.checked && el.value === TRUE_STRING ? 1 : 0\n } else if (typeof el.value === 'string') {\n return el.checked ? 1 : 0\n } else {\n return NormalizedNumber(el.value)\n }\n } else {\n if (el.dataset?.score && el.value.trim() !== '') {\n return Number(el.dataset.score)\n } else {\n let numeric = NormalizedNumber(el.value)\n if (Number.isFinite(numeric)) {\n return numeric\n } else {\n return el.value === TRUE_STRING ? 1 : 0\n }\n }\n }\n }\n }\n\n /**\n * Takes a mixed list of SuperForm field names, DOM Elements and numeric values and returns all values.\n *\n * @param {Array} operands - a list of numeric values, DOM Elements and SuperForm field names\n * @returns {Array} a list of values for calculation\n */\n normalizeOperands(operands) {\n let normalizedOperands = Array.isArray(operands) ? operands : [operands]\n return normalizedOperands.flatMap(operand => {\n let numeric = NormalizedNumber(operand)\n if (Number.isFinite(numeric)) {\n // If the argument is numeric, just return it.\n return numeric\n } else if (typeof operand === 'string') {\n // If the operand is a field name, look up the elements.\n let elements = this.getElementsByName(operand)\n\n if (elements.length > 1 && MULTIPLE_INPUT_ELEMENTS.includes(elements[0].type)) {\n // If there are many elements for the input, filter to the set of elements that are checked\n elements = elements.filter(el => el.checked)\n } else if (elements.length > 1 && !ARRAY_INPUT_NAME_REGEX.test(operand)) {\n // For a duplicate of the same field, take the first one, they should always have the same value.\n elements = elements.slice(0, 1)\n } else {\n // This is probably an ARRAY_INPUT_NAME_REGEX from a BasicList\n }\n\n return Array.from(elements).map(this.getElementValue)\n } else {\n return this.getElementValue(operand)\n }\n })\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport Rails from 'rails-ujs'\n\nexport default class extends Controller {\n static values = {\n url: String\n }\n\n generate(event) {\n event.preventDefault()\n console.log('Generating summary...', this.urlValue)\n\n let summaryEl = this.element.querySelector('textarea')\n\n if (\n summaryEl.value.length === 0 ||\n (summaryEl.value.length > 0 &&\n window.confirm(\n \"Taking this action overwrites anything you've already written in this field. You will lose what’s currently here and this cannot be undone. Are you sure you want to generate a new summary?\"\n ))\n ) {\n Rails.ajax({\n url: this.urlValue,\n type: 'POST',\n dataType: 'json',\n success: response => {\n summaryEl.value = response.summary\n },\n error: () => {\n document.dispatchEvent(\n new CustomEvent('toast', {\n detail: { message: 'Document must be completed before a summary can be generated.' }\n })\n )\n }\n })\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static values = {\n target: String\n }\n\n connect() {\n let targetFieldSet = document.getElementById(this.targetValue)?.closest('.fieldset')\n if (targetFieldSet && targetFieldSet.querySelectorAll('.is-invalid').length > 0) {\n this.element.querySelector('.alert-icon').classList.remove('d-none')\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = ['currentError', 'totalErrors', 'total']\n\n connect() {\n this.currentError = 0\n this.currentErrorTarget.innerText = this.currentError\n this.formBody = this.element.parentNode.querySelector('.superform-form-body')\n\n this.errorCount = this.formBody.querySelectorAll('.invalid-feedback').length\n this.totalTarget.innerText = this.errorCount\n this.totalErrorsTarget.innerText = `${this.errorCount} ${this.errorCount === 1 ? 'issue' : 'issues'} found.`\n }\n\n nextError() {\n let nextError = this.currentError + 1\n\n nextError > this.errorCount ? (this.currentError = 1) : (this.currentError = nextError)\n\n this.navigate()\n }\n\n previousError() {\n let previousError = this.currentError - 1\n\n previousError <= 0 ? (this.currentError = this.errorCount) : (this.currentError = previousError)\n\n this.navigate()\n }\n\n navigate() {\n this.currentErrorTarget.innerText = this.currentError\n\n let invalidFields = this.formBody.querySelectorAll('.invalid-feedback')\n\n if (invalidFields.length > 0) {\n let fieldWithError = invalidFields[this.currentError - 1]\n\n if (fieldWithError) {\n fieldWithError.parentElement.scrollIntoView({ behavior: 'smooth' })\n }\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\nimport snackbarCheckImg from 'images/admin/org/snackbar-check.svg'\nimport { Toast } from 'bootstrap'\n\nexport default class extends Controller {\n connect() {\n this.handleToastMessage = this.handleToastMessage.bind(this)\n this.liveRegion = document.getElementById('live-region-polite')\n document.addEventListener('toast', this.handleToastMessage)\n }\n\n disconnect() {\n document.removeEventListener('toast', this.handleToastMessage)\n }\n\n handleToastMessage(event) {\n let toastTemplate = `\n
\n
\n ${this.handleToastImg(event)}\n
\n ${event.detail.message}\n
\n
\n
\n `\n document.querySelectorAll('.toast').forEach(el => el.remove())\n if(this.liveRegion) {\n this.liveRegion.insertAdjacentHTML('beforeend', toastTemplate)\n this.checkLiveRegionVisibility()\n } else {\n document.body.insertAdjacentHTML('beforeend', toastTemplate)\n }\n const toastEl = document.querySelector('.toast')\n const toast = new Toast(toastEl)\n toast.show()\n }\n\n handleToastImg(event) {\n return event.detail.failure ? '' : `\"\"`\n }\n\n checkLiveRegionVisibility() {\n if(this.liveRegion.classList.contains('visually-hidden')) {\n this.liveRegion.classList.toggle('visually-hidden')\n setTimeout(() => this.liveRegion.classList.toggle('visually-hidden'), 8000)\n }\n }\n\n}\n","import { Controller } from '@hotwired/stimulus'\nimport { Tooltip } from 'bootstrap'\n\nexport default class extends Controller {\n static targets = ['tooltip']\n\n connect() {\n if (!this.hasTooltipTarget) { return }\n\n const tooltipElement = this.tooltipTarget\n\n if (tooltipElement.getAttribute('data-bs-title')) {\n const allowHtml = tooltipElement.dataset.html === 'true'\n const tooltip = new Tooltip(tooltipElement, { html: allowHtml })\n }\n this.tooltipTarget.addEventListener('shown.bs.tooltip', this.handleKeyBoardInteraction.bind(this))\n }\n\n handleKeyBoardInteraction() {\n const tooltip = Tooltip.getInstance(this.tooltipTarget)\n\n this.tooltipTarget.addEventListener('keydown', (event) => {\n if (event.key === 'Escape') {\n tooltip.hide()\n }\n })\n }\n\n disconnect() {\n if (!this.hasTooltipTarget) { return }\n // get rid of lingering tooltips when using turbo streams\n const tooltip = Tooltip.getInstance(this.tooltipTarget)\n if (tooltip !== null)\n tooltip.dispose()\n this.tooltipTarget.removeEventListener('keydown', this.handleKeyBoardInteraction.bind(this))\n }\n}\n","import { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static values = {\n message: String,\n reload: Boolean\n }\n\n connect() {\n document.dispatchEvent(new CustomEvent('toast', { detail: { message: this.messageValue } }))\n\n const waitTimeBeforeLeavePage = 2000 // wait for the flash message to appear\n\n setTimeout(() => {\n history.back()\n this.reloadData()\n }, waitTimeBeforeLeavePage)\n }\n\n reloadData() {\n const waitTimeBeforeRefreshPage = 200 // wait the current page to refresh before going back\n\n if (this.reloadValue) {\n setTimeout(() => {\n window.location.reload();\n }, waitTimeBeforeRefreshPage)\n }\n }\n}\n","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n connect() {\n document.addEventListener('turbo:load', this.resetZendeskChat)\n\n window.zESettings = {\n webWidget: {\n authenticate: {\n chat: {\n jwtFn: function (callback) {\n fetch('/api/zendesk/chat_token.json')\n .then(response => response.json())\n .then(json => callback(json.token))\n }\n }\n }\n }\n }\n }\n\n disconnect() {\n document.removeEventListener('turbo:load', this.resetZendeskChat)\n }\n\n resetZendeskChat() {\n if (window.zEACLoaded) window.zEACLoaded = false\n }\n}\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","ClientPreviewController","Controller","static","connect","this","dropdown","Dropdown","toggleTarget","undefined","_menu","menuTarget","addEventListener","onMouseover","onMouseleave","event","setTimeout","contains","target","_element","show","isHovering","hide","matches","disconnect","removeEventListener","timeout","type","Number","default","content","String","copy","navigator","clipboard","writeText","contentValue","showFeedback","err","console","error","checkEnvironment","log","toggleFeedback","timeoutValue","successTarget","classList","toggle","primaryTarget","document","querySelector","popover","Popover","element","clipboardCopyTo","preventDefault","tempInput","createElement","value","params","text","body","appendChild","select","execCommand","removeChild","trigger","toast","Toast","onClick","bind","stopPropagation","dataset","innerText","data","dataValue","dispatchEvent","CustomEvent","detail","message","copyUrl","url","window","location","href","CustomAutocomplete","Autocomplete","extendListOptions","selectMenuItemUrl","selectNewClientPath","hideAddNewItemButton","Boolean","autocompleteParameters","ransackSearchMatcher","uniqueId","super","currentUrl","urlValue","displayItemSelection","showLoadingSpinner","hideLoadingSpinner","spinnerTarget","remove","add","includes","selectMenuItemUrlValue","selectedMenuItemContainerTarget","inputWrapperTarget","URL","URLSearchParams","search","append","hiddenTarget","uniqueIdValue","turboRequest","pathname","bubbles","buildURL","query","searchParams","set","ransackSearchMatcherValue","hasAutocompleteParametersValue","autocompleteParametersValue","forEach","key","newClient","selectNewClientPathValue","urlParams","inputTarget","close","switchUrl","extendListOptionsValue","extended_path","onInputChange","extraListContainerTargetConnected","length","extendedListMessageTarget","innerHTML","extended_message","revert_extended_message","addNewItemContainerTargetConnected","hideAddNewItemButtonValue","hiddenTargetConnected","clear","menuItemSelectionTurboFrameTarget","hideAndRemoveOptions","commit","selected","getAttribute","HTMLAnchorElement","click","textValue","textContent","trim","hasHiddenTarget","Event","focus","DropdownButtonController","registerKeydown","onShow","keyboardEvent","_links","querySelectorAll","keyCode","selectPersonUrl","personAttributesPath","Array","nextTarget","getElementById","modal","disabled","enableNextTarget","useThisPerson","personId","selectPersonUrlValue","closeModal","ignoreDuplicatePersonModalWarning","updateBypassDuplicatePersonDetectionHiddenField","nameAttribute","personAttributesPathValue","join","concat","forms","form","existingInput","hiddenInput","setAttribute","submit","keyListener","hasCheckboxInputTarget","setButtonName","hiddenButton","onSearchChange","from","getElementsByClassName","el","lastElementChild","toLowerCase","removeRelativeHiddenForm","relativeHiddenForm","conditionallyClearDependentFilters","dependentFiltersString","popoverFilterDependentFilterTargets","JSON","parse","targetElement","clearFilters","hasSearchInputTarget","searchInputTargets","hasDateInputTarget","dateFields","dateInputTarget","dateField","hasSelectInputTarget","selectInputTarget","checkbox","checked","hasDropdownSelectInputTarget","dropdownSelectInputTarget","hasRadioInputTarget","radioInputTarget","radio","hasNumberInputTarget","numberInputTarget","numberFilterTarget","hasRecipientTypeFilterTarget","recipientTypeFilterTarget","removeElementById","applyTarget","elementId","handleNumberFilterChange","turboFetchCollection","numberFieldTarget","filter","providerHandleNumberFilterChange","handleCheckBoxInputChange","checkedCheckboxes","checkboxInputTarget","name","submitSearchForm","currentUser","administratorId","administratorName","administratorEmail","organization","federation","loadHeap","currentUserValue","heap","identify","addUserProperties","administratorIdValue","administratorNameValue","administratorEmailValue","organizationValue","federationValue","increment","input","previousValue","parseInt","decrementButtonTarget","removeAttribute","decrement","checkHiddenField","uncheckHiddenField","checkboxTargets","some","formPrefix","hasTimeslots","updateScheduleType","updateMonthlySchedule","updateDaySchedule","initializeInputs","typeTarget","daysTargets","weekdayInput","monthlyBySetPosTarget","monthlyByDayTarget","scheduleTypeOptions","children","hasTimeslotsValue","ruleTarget","find","option","label","hideEndAtStartAtField","currentRRule","RRule","fromString","fixedScheduleOption","optionRRule","stringify","origOptions","byweekday","freq","interval","monthlyOrByDayOption","initializeMonthlyInputs","selectedDays","day","toString","options","bysetpos","weekday","Weekday","setRRule","rrule","buildRRule","currentSelection","selectedIndex","timeslotsTarget","endAtTarget","monthlyTarget","revealStartAtEndAtField","weekdaysTarget","hasEndAtTarget","hasStartAtTarget","startAtTarget","segments","debounce","region","sourceTarget","createAnnouncement","announcement","createTextNode","span","setTimeoutValue","sourceTargetConnected","closeModalBeforeFetch","modalEl","style","display","fetchOptions","method","headers","Accept","match","resume","Modal","getOrCreateInstance","domId","_backdrop","dispose","domIdValue","confirmation","closeBeforeFetch","originalFocusElement","activeElement","ReactRailsUJS","confirmationValue","closeTurboModal","disposeModal","success","closeBeforeFetchValue","messageValue","initialize","preventNewTab","action","metaKey","ctrlKey","targetElementId","clickListener","closeNav","sidenavTarget","width","openNav","snav","className","dateChange","once","date","Date","formattedDate","getFullYear","getMonth","getDate","Turbo","visit","maskOptions","mask","lazy","patternMask","IMask","updateOptions","unmaskedValue","bodyClasses","hasButtonTarget","hasContentContainerTarget","container","buttonTarget","html","sanitize","placement","contentContainerTarget","isExpanded","getPopoverContent","hasLiveContainerTarget","hasAnnouncementValue","liveContainerTarget","button","getInstance","announcementValue","hasBodyClassesValue","getPopoverBody","bodyClassesValue","popoverBodyElement","visibilityControl","liveRegionMessage","toggleHiddenWrapperOnCheckedRadio","liveRegion","checkedRadio","radioInputTargets","toggleHiddenWrapper","handleRadioInputChange","visibilityControlValue","liveRegionMessageValue","shouldShow","hasHiddenWrapperTarget","hiddenWrapperTarget","mountComponents","handleRecipientTypeFilterChange","inputValue","hasRecipientValueInputTarget","recipientValueInputTarget","_clearInputValue","hasRepeatTypeInputTarget","updateRepeatEveryInputText","repeatTypeInputTarget","hasScheduleTypeTarget","updateScheduleWrapper","scheduleTypeTarget","hasIsRepeatedInputTarget","updateRepeatTypeAppearance","$","prop","shiftEnabled","hasShift","handleisRepeatedInputChange","isRepeated","updateCalendarAppearance","clearAllRepeatingValues","handleRepeatTypeInputChange","repeatType","clearSomeRepeatingValues","inputTextTarget","onScheduleTypeChange","addShiftToOptions","shift","visitType","apply","clearRepeatUntil","repeatEveryInputTarget","hasMandatoryAttendanceTarget","mandatoryAttendanceTarget","rehydrate","reload","requestSubmit","currentTarget","frameTarget","history","replaceState","deleteUrl","exportModalUrl","exportUrl","currentPageRecords","totalRecords","siteRequired","serviceRecordSelected","hasBulkUpdateButtonTarget","defaultBulkEditButtonLabel","bulkUpdateButtonTarget","hasBulkDeleteButtonTarget","defaultBulkDeleteButtonLabel","bulkDeleteButtonTarget","toggleCheckBoxes","serviceRecordsTarget","toggleBulkActionButtons","selectedServiceRecords","firstSelectedServiceRecordProgram","parentElement","program","allMatchingProgram","every","record","selectedCount","checkSites","siteAndGranularPermissionsCheck","hasBulkUpdateButtonErrorTarget","bulkUpdateButtonErrorTarget","reveal","setSummaryCountandTextFor","bulkManagementActionsContainerSummaryTarget","hasBulkManagementActionsContainerTarget","bulkManagementActionsContainerTarget","bulkManagementActionsContainerSummaryCountTarget","bulkManagementActionsContainerSummaryTextTarget","updateSelectedServiceRecords","openModalWithSelectedServiceRecord","deleteSelectedServiceRecords","deleteUrlValue","exportServiceRecords","exportModalUrlValue","exportSelectedServiceRecords","modalUrl","selectionWarning","selectedServiceRecordsIds","baseURL","currentPageRecordsValue","totalRecordsValue","alert","src","failure","export","exportTypeRadioButton","exportType","exportUrlValue","downloadCSV","csvDownloadLink","siteRequiredValue","firstSelectedServiceRecordSite","site","ACTIVITY_ACTION_EVENTS","WARNING_ELEMENT_ID","sessionTimeoutPath","sessionTimeoutRedirectPath","initialTimeoutAt","startPolling","resetTimeoutAt","pollForUpdatedTimeout","sendHeartbeat","debouncedSendHeartbeat","initialTimeoutAtValue","timeoutAt","clearInterval","intervalId","secondsLeft","debug","updateTimeoutWarning","startPollingIn","timeoutId","Math","round","setInterval","fetch","sessionTimeoutPathValue","cache","then","response","json","timed_out","sessionTimeoutRedirectPathValue","session_expires_at","clearTimeout","warn","warningElement","renderedTemplate","TEMPLATE","outerHTML","insertAdjacentHTML","ShowHideFieldsController","triggerValues","hasInputTarget","manageCheckboxInputChange","manageSelectInputChange","handleSelectInputChange","triggerValuesValue","hiddenWrapperTargets","hiddenWrapper","hasMessageTarget","displayMessage","messageTarget","setReportedMonth","reportedMonth","legacyBulkUploadButtonTarget","legacyBulkUploadButtonTextTarget","servicesChanged","programsChanged","fundingSourcesChanged","reloadExportOptions","autoDismissSnackbar","snackBarEl","Autosave","inputChanged","Rails","dataType","updateCaseValue","source","get","sourceEl","getElementsByName","when","sourceValue","found","min","max","toggleRadioButton","scale","thousandsSeparator","padFractionalZeros","normalizeZeros","radix","mapToRadix","updateMask","handleInput","updateVisibility","getDependentElements","dependsOn","dependsOnValues","split","dependsOnEls","collapse","Collapse","delay","elements","arrayElements","values","val","ARRAY_INPUT_NAME_REGEX","MULTIPLE_INPUT_ELEMENTS","TRUE_STRING","FALSE_STRING","NormalizedNumber","replaceAll","updateListener","updateFormula","evalListeners","evalListener","formula","elementCache","expression","teardown","isArray","operation","operands","OPERATIONS","operand","els","result","evalFormula","sum","list","normalizeOperands","reduce","a","b","sub","multiply","divide","numerator","denominator","filterValueOrArray","flatMap","field","labels","getElementValue","operationFn","inputName","startsWith","scoreMetadata","scoreOption","score","numeric","isFinite","test","slice","generate","summaryEl","confirm","summary","targetFieldSet","targetValue","closest","currentError","currentErrorTarget","formBody","parentNode","errorCount","totalTarget","totalErrorsTarget","nextError","navigate","previousError","invalidFields","fieldWithError","scrollIntoView","behavior","handleToastMessage","toastTemplate","handleToastImg","checkLiveRegionVisibility","toastEl","snackbarCheckImg","hasTooltipTarget","tooltipElement","tooltipTarget","allowHtml","Tooltip","handleKeyBoardInteraction","tooltip","back","reloadData","reloadValue","resetZendeskChat","zESettings","webWidget","authenticate","chat","jwtFn","callback","token","zEACLoaded"],"sourceRoot":""}