{"version":3,"file":"school_selector-DqLzvrRJ.js","sources":["../../../client/app/bundles/Teacher/components/shared/school_option.tsx","../../../client/app/bundles/Teacher/components/shared/school_selector.jsx"],"sourcesContent":["import * as React from 'react';\n\ninterface SchoolOptionProps {\n selectSchool: Function;\n school: any;\n text: string;\n secondaryText: string;\n numberOfTeachersText: string;\n}\n\nexport default class SchoolOption extends React.Component {\n handleSchoolOptionClick = () => {\n const { selectSchool, school, } = this.props\n selectSchool(school.id, school)\n }\n\n render() {\n const { text, secondaryText, numberOfTeachersText, } = this.props\n return (\n
  • \n \n
  • \n )\n }\n}\n","import React from 'react';\n\nimport LoadingIndicator from './loading_indicator.jsx';\nimport SchoolOption from './school_option';\n\nimport { requestGet, requestPost, } from '../../../../modules/request';\nimport { Input, NOT_LISTED, NO_SCHOOL_SELECTED, smallWhiteCheckIcon, } from '../../../Shared/index';\nimport useDebounce from '../../hooks/useDebounce';\n\nconst mapSearchSrc = `${window.postbuildEnv.CDN_URL}/images/onboarding/map-search.svg`\n\nconst DEBOUNCE_LENGTH = 500\nconst MINIMUM_SEARCH_LENGTH = 2\nconst WHOLE_SEARCH_IS_NUMBERS_REGEX = /^\\d+$/\n\nconst SchoolSelector = ({ selectSchool, showDismissSchoolSelectionReminderCheckbox, handleDismissSchoolSelectionReminder, disableSkipForNow}) => {\n const [search, setSearch] = React.useState('')\n const [schools, setSchools] = React.useState([])\n const [errors, setErrors] = React.useState({})\n const [loading, setLoading] = React.useState(false)\n const [showNotListedModal, setShowNotListedModal] = React.useState(false)\n const [unlistedSchoolName, setUnlistedSchoolName] = React.useState('')\n const [unlistedSchoolZipcode, setUnlistedSchoolZipcode] = React.useState('')\n const [dismissSchoolSelectionReminder, setDismissSchoolSelectionReminder] = React.useState(false)\n\n const debouncedSearch = useDebounce(search, DEBOUNCE_LENGTH);\n\n React.useEffect(() => {\n if (search.length >= MINIMUM_SEARCH_LENGTH) {\n setLoading(true)\n }\n }, [search])\n\n React.useEffect(() => {\n if (search.length < MINIMUM_SEARCH_LENGTH) { return }\n // if they're typing a zip code, don't search until the full zip code is entered\n if (search.match(WHOLE_SEARCH_IS_NUMBERS_REGEX) && search.length < 5) { return }\n\n searchForSchool()\n }, [debouncedSearch])\n\n function toggleDismissReminderCheckbox() { setDismissSchoolSelectionReminder(!dismissSchoolSelectionReminder) }\n\n function handleSkipClick() {\n if (dismissSchoolSelectionReminder) {\n handleDismissSchoolSelectionReminder()\n }\n selectSchool(NO_SCHOOL_SELECTED)\n }\n\n function handleNotListedClick() {\n setShowNotListedModal(true)\n }\n\n function onChangeUnlistedSchoolName(e) { setUnlistedSchoolName(e.target.value) }\n function onChangeUnlistedSchoolZipcode(e) { setUnlistedSchoolZipcode(e.target.value) }\n\n function submitSchoolNotListedInformation() {\n requestPost('/submit_unlisted_school_information', { school_name: unlistedSchoolName, school_zipcode: unlistedSchoolZipcode }, () => {\n selectSchool(NOT_LISTED)\n })\n }\n\n function searchForSchool() {\n requestGet(\n `${window.postbuildEnv.DEFAULT_URL}/schools?search=${search}`,\n (body) => {\n setSchools(body.data)\n setLoading(false)\n }\n )\n }\n\n function updateSearch(e) {\n setSearch(e.target.value)\n }\n\n const renderLoading = () => {\n return (\n
    \n \n
    \n )\n }\n\n const renderDefault = () => {\n return (\n
    \n \"Map\n

    Search for your school above

    \n
    \n )\n }\n\n const renderSchoolNotListedModal = () => {\n if (!showNotListedModal) { return }\n return (\n
    \n
    \n
    \n
    \n

    School not listed?

    \n
    \n

    Please share your school name and ZIP code below. Quill will review and update our database.

    \n \n \n
    \n \n
    \n
    \n
    \n )\n }\n\n const noSchoolSelectedSchoolOption = (\n \n )\n\n const renderSchoolsList = (schools) => {\n const schoolItems = schools.map(school => {\n const { city, number_of_teachers, state, street, text, zipcode } = school.attributes\n const numberOfTeachers = number_of_teachers\n let secondaryText = ''\n let numberOfTeachersText = ''\n if (street) {\n secondaryText = `${street}, `\n }\n if (city) {\n secondaryText += `${city}, `\n }\n if (state) {\n secondaryText += `${state} `\n }\n if (zipcode) {\n secondaryText += zipcode\n }\n if (numberOfTeachers) {\n numberOfTeachersText = `${numberOfTeachers} Quill Teacher${numberOfTeachers === 1 ? '' : 's'}`\n }\n return (\n \n )\n })\n return
      {schoolItems}{noSchoolSelectedSchoolOption}
    \n }\n\n const skipForNowCheckbox = () => {\n if (disableSkipForNow) { return }\n\n let checkbox = (\n \n )\n\n const checkboxWrapper = showDismissSchoolSelectionReminderCheckbox\n ?
    {checkbox} Don't remind me again to select a school
    \n : \n\n if (dismissSchoolSelectionReminder) {\n checkbox = (\n \n {smallWhiteCheckIcon.alt}\n \n )\n }\n\n return (\n
    \n \n {checkboxWrapper}\n
    \n )\n }\n\n const renderSchoolsListSection = () => {\n let title\n let schoolsListOrEmptyState\n\n if (loading) {\n schoolsListOrEmptyState = renderLoading()\n } else if (search.length >= MINIMUM_SEARCH_LENGTH) {\n schoolsListOrEmptyState = renderSchoolsList(schools)\n } else {\n schoolsListOrEmptyState = renderDefault()\n }\n\n return (\n
    \n
    Results
    \n {schoolsListOrEmptyState}\n {skipForNowCheckbox()}\n
    \n )\n }\n\n return (\n
    \n {renderSchoolNotListedModal()}\n \n {renderSchoolsListSection()}\n
    \n )\n}\n\nexport default SchoolSelector\n"],"names":["SchoolOption","React.Component","selectSchool","school","text","secondaryText","numberOfTeachersText","React.createElement","mapSearchSrc","DEBOUNCE_LENGTH","MINIMUM_SEARCH_LENGTH","WHOLE_SEARCH_IS_NUMBERS_REGEX","SchoolSelector","showDismissSchoolSelectionReminderCheckbox","handleDismissSchoolSelectionReminder","disableSkipForNow","search","setSearch","React","schools","setSchools","errors","setErrors","loading","setLoading","showNotListedModal","setShowNotListedModal","unlistedSchoolName","setUnlistedSchoolName","unlistedSchoolZipcode","setUnlistedSchoolZipcode","dismissSchoolSelectionReminder","setDismissSchoolSelectionReminder","debouncedSearch","useDebounce","searchForSchool","toggleDismissReminderCheckbox","handleSkipClick","NO_SCHOOL_SELECTED","handleNotListedClick","onChangeUnlistedSchoolName","e","onChangeUnlistedSchoolZipcode","submitSchoolNotListedInformation","requestPost","NOT_LISTED","requestGet","body","updateSearch","renderLoading","LoadingIndicator","renderDefault","renderSchoolNotListedModal","Input","noSchoolSelectedSchoolOption","renderSchoolsList","schoolItems","city","number_of_teachers","state","street","zipcode","numberOfTeachers","skipForNowCheckbox","checkbox","checkboxWrapper","smallWhiteCheckIcon","renderSchoolsListSection","schoolsListOrEmptyState"],"mappings":"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"}