{"version":3,"sources":["webpack:///./app/javascript/components/NotesConsole/NotesConsole.jsx","webpack:///./app/javascript/components/FormFields/NumberField.jsx","webpack:///./app/javascript/components/FormFields/PhoneField.jsx","webpack:///./app/javascript/components/NotesConsole/NoteInput/NoteInput.jsx","webpack:///./app/javascript/components/NotesConsole/NoteEdit/NoteEdit.jsx","webpack:///./app/javascript/components/EmployeeIndexPage/EmployeeIndexPage.jsx","webpack:///./app/javascript/components/PetitionIndexPage/PetitionRow/PetitionRow.jsx","webpack:///./app/javascript/components/PetitionPage/PetitionOverview/PetitionActions/BlockerFlag.jsx","webpack:///./app/javascript/components/PetitionPage/ContactCard.jsx","webpack:///./app/javascript/components/PetitionPage/PetitionAssigneeSelect/PetitionAssigneeSelect.jsx","webpack:///./app/javascript/components/PetitionPage/SubHeader.jsx","webpack:///./app/javascript/components/PetitionPage/PetitionOverview/NotesDropdown/NoteRow/NoteRow.jsx","webpack:///./app/javascript/components/PetitionPage/PetitionOverview/NotesDropdown/NotesTable/NotesTable.jsx","webpack:///./app/javascript/components/PetitionPage/PetitionOverview/PetitionOverview.jsx","webpack:///./app/javascript/components/FormFields/DateField.jsx","webpack:///./app/javascript/components/FormFields/SsnField.jsx","webpack:///./app/javascript/components/NotesConsole/NoteList/NoteList.jsx","webpack:///./app/javascript/components/NotesConsole/NoteItem/NoteItem.jsx","webpack:///./app/javascript/components/EmployeeIndexPage/EmployeeForm.jsx","webpack:///./app/javascript/components/FormFields/FileField.jsx","webpack:///./app/javascript/components/PetitionIndexPage/PetitionIndexPage.jsx","webpack:///./app/javascript/components/PetitionIndexPage/PetitionsTable/PetitionsTable.jsx","webpack:///./app/javascript/components/PetitionIndexPage/SideNav/SideNav.jsx","webpack:///./app/javascript/components/PetitionInformation/PetitionCard.jsx","webpack:///./app/javascript/components/PetitionPage/DocumentDetail/DocumentDetailBar.jsx","webpack:///./app/javascript/components/PetitionPage/EvidenceRequestTool/EvidenceRequestForm/EvidenceRequestForm.jsx","webpack:///./app/javascript/components/PetitionPage/EvidenceRequestTool/EvidenceStatusPage/EvidenceStatusPage.jsx","webpack:///./app/javascript/components/PetitionPage/IntakeRow.jsx","webpack:///./app/javascript/components/PetitionPage/PetitionAssigneeSelect/PetitionAssigneeSelect.test.jsx","webpack:///./app/javascript/components/PetitionPage/PetitionDocuments/DocumentsRow/DocumentsRow.jsx","webpack:///./app/javascript/components/PetitionPage/PetitionDocuments/PetitionDocuments.jsx","webpack:///./app/javascript/components/PetitionPage/PetitionDocuments/PetitionDocumentsSideNav/PetitionDocumentsSideNav.jsx","webpack:///./app/javascript/components/PetitionPage/PetitionDocuments/TemplatesRow/TemplatesRow.jsx","webpack:///./app/javascript/components/PetitionPage/PetitionOverview/NotesDropdown/NotesDropdown.jsx","webpack:///./app/javascript/components/PetitionPage/PetitionOverview/PetitionActions/PetitionActions.jsx","webpack:///./app/javascript/components/PetitionPage/UscisStatus/FormItem.jsx","webpack:///./app/javascript/components/PetitionPage/UscisStatus/UscisCaseAware.jsx","webpack:///./app/javascript/components/PetitionPage/UscisStatus/UscisDecisionStatusSelect.jsx","webpack:///./app/javascript/components/PetitionPage/UscisStatus/UscisDocumentUpload.jsx","webpack:///./app/javascript/components/PetitionPage/UscisStatus/UscisStatus.jsx","webpack:///./app/javascript/components/PetitionPage/UscisStatus/UscisStatusWrapper.jsx","webpack:///./app/javascript/components/FormFields/Form.jsx","webpack:///./app/javascript/components/EmployeeIndexPage/EmployeeIndexPage.test.jsx","webpack:///./app/javascript/components/EmployeeIndexPage/EmployeeIndexPageWrapper.jsx","webpack:///./app/javascript/components/FormFields/ArrayField.jsx","webpack:///./app/javascript/components/FormFields/AttachmentField.jsx","webpack:///./app/javascript/components/FormFields/FeinField.jsx","webpack:///./app/javascript/components/FormFields/HighRemunerationCompensationFields.jsx","webpack:///./app/javascript/components/FormFields/IntakeFormFields.jsx","webpack:///./app/javascript/components/FormFields/NaicsField.jsx","webpack:///./app/javascript/components/FormFields/ParentFields.jsx","webpack:///./app/javascript/components/FormFields/ReactField.jsx","webpack:///./app/javascript/components/FormFields/UsaPhoneNumberField.jsx","webpack:///./app/javascript/components/FormFields/YearField.jsx","webpack:///./app/javascript/components/FormFields/ZipField.jsx","webpack:///./app/javascript/components/Intakes/IntakeItemUpload.jsx","webpack:///./app/javascript/components/PetitionIndexPage/PetitionIndexPage.test.jsx","webpack:///./app/javascript/components/PetitionIndexPage/PetitionRow/PetitionRow.test.jsx","webpack:///./app/javascript/components/PetitionInformation/PetitionInformation.jsx","webpack:///./app/javascript/components/PetitionPage/ContactCard.test.jsx","webpack:///./app/javascript/components/PetitionPage/DocumentDetail/DocumentDetail.jsx","webpack:///./app/javascript/components/PetitionPage/EvidenceRequestTool/EvidenceRequestTool.jsx","webpack:///./app/javascript/components/PetitionPage/PetitionDocuments/PetitionDocuments.test.jsx","webpack:///./app/javascript/components/PetitionPage/PetitionOverview/NotesDropdown/NoteRow/NoteRow.test.jsx","webpack:///./app/javascript/components/PetitionPage/PetitionOverview/NotesDropdown/NotesTable/NotesTable.test.jsx","webpack:///./app/javascript/components/PetitionPage/PetitionOverview/PetitionOverview.test.jsx","webpack:///./app/javascript/components/PetitionPage/PetitionOverview/PetitionOverviewWrapper.jsx","webpack:///./app/javascript/components/PetitionPage/UscisStatus/UscisStatusWrapper.test.jsx","webpack:///./app/javascript/components/PetitionStatus/PetitionStatus.jsx","webpack:///./app/javascript/components/PetitionPage/SectionsMenu.jsx","webpack:///./app/javascript/components/FormFields/EntityFields.jsx","webpack:///./app/javascript/components/FormFields/ActionBar.jsx"],"names":["ConsoleWrapper","styled","div","NotesHeader","h2","EscapeHeader","p","HotKeyButtonContainer","grayLightest","MarkdownCheatSheetLink","NotesConsole","props","notable","notableType","consoleOpen","setConsoleOpen","useState","notes","setNotes","fetchState","dispatch","useReducer","fetchReducer","success","loading","response","useHotkeys","useEffect","async","type","notableId","url","Routes","notes_url","notable_type","notable_id","fetch","method","headers","formHeaders","ok","alert","json","error","fetchNotes","id","style","direction","className","color","cursor","onClick","target","rel","dipslay","href","padding","isNotesConsole","position","bottom","right","height","width","length","propTypes","PropTypes","object","string","NumberField","prefix","suffix","delimiter","separator","float","precision","signed","places","handleInputChange","inputValue","setInputValue","value","maskedValue","setMaskedValue","cleanValue","parseFloat","toString","replace","mask","thousandsSeparatorSymbol","decimalSymbol","allowDecimal","decimalLimit","allowNegative","integerLimit","Fragment","name","placeholder","onChange","e","handleChange","onBlur","handleInputBlur","label","func","bool","PhoneField","guide","Container","margin","Input","textarea","OuterDiv","SavePrompt","NoteInput","source","setInputVisible","useNoteInputState","currentStorageValue","setCurrentStorageValue","currentInputValue","setCurrentInputValue","debouncedStorage","useDebouncedCallback","input","inputRef","useRef","handleSave","text","root_url","subdomain","params","fetchCall","body","JSON","stringify","data","current","focus","document","activeElement","ActionPrompt","ref","onKeyDown","key","preventDefault","selectionStart","selectionEnd","newInputValue","substring","handleTab","MarkdownContainer","NoteEdit","note","handleDelete","setRowSelected","showInput","setShowInput","autoExpand","element","computed","window","getComputedStyle","parseInt","getPropertyValue","scrollHeight","handleBlur","note_url","noteId","updatedNote","map","n","handleUpdate","blur","read_only","autoFocus","disabled","onFocus","handleFocus","array","EmployeeTable","table","EmployeeIndexPage","employees","setEmployees","filteredEmployees","setFilteredEmployees","searchString","setSearchString","popup","useAlert","filtered","filter","emp","fullName","email","toLowerCase","includes","trim","setLoading","employees_path","show","message","fetchEmployees","sortBy","setSortBy","attribute","ascending","handleSort","prevState","currentSortArrow","sortedEmployees","sort","a","b","alphabeticalSort","title","booleanSort","confirmed","chronologicalSort","createdAt","confirmedAt","currentSortFunction","nextPage","prevPage","currentPage","setCurrentPage","maxPage","showAll","repaginate","currentData","startIndex","endIndex","usePagination","showingAll","setShowingAll","dataTestId","searchStringValue","setSearchStringEvent","IndexRow","columns","withPagination","clickable","PaginationWidget","marginLeft","green","red","send_confirmation_instructions_employee_path","personId","handleSendConfirmationEmail","petition","setPetitionsState","bindMenu","bindMenuItems","useContextTrigger","setVisible","setContextMenuVisible","bindTrigger","handleArchive","unarchive","unarchive_petition_path","archive_petition_path","PetitionContextMenu","ContextMenu","petition_path","edit_petition_path","archived","confirm","as","location","IndexItem","bold","marginBottom","beneficiaryName","petitioner","legalName","displayName","grayDark","visaType","assignee","updatedAt","BlockerWrapper","Flag","i","active","BlockerFlag","petitionId","isActive","setActive","petition_toggle_blocker_url","handleClick","contact","role","phone","isAttorney","attorneyOptions","defaultOption","find","option","currentContact","setCurrentContact","editing","setEditing","selectedValue","setSelectedValue","handleAttorneySelect","selectedOption","petition_set_attorney_path","requestBody","attorney_id","setTimeout","toUpperCase","client_path","tabIndex","grayDarkest","options","classNamePrefix","PetitionAssigneeSelect","assigneeId","assigneeOptions","selectedAssigneeId","petition_set_assignee_path","petition_id","assignee_id","isClearable","SubHeader","token","beneficiary","hasDependents","petitionerName","dealId","deleteConfirmVisible","setDeleteConfirmVisible","rowSelected","Row","readOnly","MetaData","author_name","created_at","format","flexGrow","DeleteButton","itemId","grayLight","inputVisible","localStorage","getItem","Table","AddNotes","hasNotes","index","IntakeTable","IntakeHeaderRow","PetitionOverview","petitionRepresentative","attorney","organizationId","intakes","intakeUserOptions","petitionGdriveLink","petitionName","petitionBlockers","noteProps","features","errors","setErrors","showArchived","setShowArchived","sections","content","blockers","cards","renderContactCards","intake","userOptions","updateParentObject","reload","SideNav","marginRight","petition_templates_path","petition_case_status_path","new_shipment_path","petition_evidence_request_path","display","justifyContent","alignItems","alt","src","require","popupType","Math","random","home","autoCorrectedDatePipe","DateField","React","Component","handleOnChange","this","serverDate","complete","hiddenField","isValid","displayDate","render","el","defaultValue","keepCharPositions","pipe","NoteList","NoteContainer","isEditing","DeleteConfirmContainer","NoteItem","deleteVisible","setDeleteVisible","setIsEditing","onMouseEnter","onMouseLeave","button","renderDelete","formState","setFormState","firstName","lastName","handleFormChange","setIsAttorney","formVisible","setFormVisible","FormInput","CheckboxItem","checked","htmlFor","textAlign","person","first_name","last_name","is_attorney","newEmployeeJson","prev","createEmployee","FileField","positions","TOP_RIGHT","timeout","offset","PetitionIndexPage","currentUser","petitions","petitionsState","caseState","setCaseState","assignedCases","unassignedCases","pendingCases","archivedCases","filteredPetitions","liveCases","state","groupName","petitionGroup","maxPerPage","template","AlertTemplate","engAccess","IndexGrid","PetitionsTable","sortedPetitionGroup","useDidMountEffect","upshift","scrollBy","history","pushState","pathname","search","number","MenuItem","report_petitions_path","marginTop","intake_report_petitions_path","shipments_path","visa_bulletin_path","admin_root_path","info","missing","Card","InfoRow","dangerouslySetInnerHTML","__html","article","DocumentDetailBar","generate","genState","Header","ReferencesDiv","EvidenceSelectDiv","gray","EvidenceItem","RequestBox","EvidenceRequestForm","evidenceOptions","setRequestStatus","setEvidenceRequest","selectedEvidence","setSelectedEvidence","evidenceItems","flat","evidenceType","subHeader","item","displayValue","handleSubmit","EvidenceStatusPage","evidenceRequest","google_sheet_url","gdrive_folder_url","submitted","submittedAt","isDisabled","setDisabled","archivedAt","rowClass","userId","isSelectingRecipient","setIsSelectingRecipient","selectedRecipient","setSelectedRecipient","selectedRecipientName","handleArchiveIntake","unarchive_intake_path","archive_intake_path","handleRecipientSelect","intake_path","user_id","copyMenuRef","handleClickOutside","contains","addEventListener","removeEventListener","SplitButton","fontWeight","fontSize","openMenuOnFocus","renderRecipientSelect","blueLightest","blue","jest","mock","event","opt","currentTarget","val","describe","beforeEach","resetMocks","it","container","expect","getByText","mockResponseOnce","getByTestId","calls","toEqual","fireEvent","change","waitFor","DocumentsRow","doc","documentState","setDocumentState","fileId","generatedAt","dateGenerated","alertOptions","HeaderRow","PetitionDocuments","formsSelected","setFormsSelected","lettersSelected","setLettersSelected","documents","templates","subTitle","dropdownContent","TemplatesRow","petition_template_url","template_id","webmerge_generate_url","errorMessage","handleGenerate","NotesDropdown","popupMessage","BlockerRow","PetitionActions","Object","keys","renderBlocker","helperText","caseStatusAttribute","InputContainer","handleKeyDown","StatusItem","v","UscisCaseAware","caseAwareStatusState","gridColumn","caseawareUpdatedAt","fromNow","maxWidth","caseawareStatus","caseAwareStatus","undefined","statusArray","split","caseAwareEmoji","caseawareDetails","decisionStatusTypes","decisionStatusState","statusOptions","t","decisionStatus","dirty","UscisDocumentUpload","caseStatusId","uploadState","setUploadState","handleUpload","file","setFiles","fileData","entityId","entityType","acceptCharset","authenticityToken","accept","multiple","StatusContainer","StatusIcon","satisfied","white","UscisStatus","caseStatus","decisionStatusDocument","shipmentDate","receiptDate","caseNumber","decisionDate","caseawareErrors","caseStatusState","setCaseStatusState","caseawareLoading","setCaseawareLoading","formatDate","date","caseURL","isCaseNumberUpdate","petition_url","case_status","shipment_date","receipt_date","case_number","decision_date","decision_status","forEach","err","entity_path","FormData","parentElement","files","Form","onSubmit","children","mockResponses","mockUser","queryByText","toBeInTheDocument","searchbar","not","AuthContextProvider","ArrayField","constructor","super","handleChangeElement","slice","setState","handleRemove","splice","handleUp","oldArray","handleDown","handleAdd","push","fields","arrayItem","ev","AttachmentField","selectedTab","handleTabClick","renderTab","allowCreate","allowSelect","allowUpload","allowNone","tabs","contentStyle","labelField","valueField","defaultLabel","FeinField","HighRemunerationCompensationFields","compensationUnit","currencyIndicatorText","autocomplete","_handleSelectChange","_handleCurrencyChange","compensationSalary","nameBase","onParentChange","compensationBonus","compensationEquity","compensationEquityValue","IntakeFormFields","showPetitionField","intakeTypes","personLabel","petitionItems","petitionAutocomplete","items","intakeType","_handleIntakeTypeChange","_toggleInputDisplays","_toggleLabels","_filterPetitions","filteredItems","startsWith","_renderPetitionField","onSelect","organizationAutocomplete","personAutocomplete","NaicsField","ParentFields","associatedAs","columnName","ReactField","parse","inputElement","getElementById","inputId","componentName","componentProps","valueProp","ctor","ReactRailsUJS","getConstructor","createElement","UsaPhoneNumberField","_handleValueChange","_cleanValue","YearField","ZipField","isMultiple","currentRecord","IntakeUploadArt","FileUploader","PreviewContainer","FilePreview","meta","fileWithMeta","percent","status","previewUrl","max","ImCancelCircle","remove","SubmitButton","Button","InputContent","extra","reject","grayDarker","getUploadParams","append","onChangeStatus","xhr","_","allFiles","metadataUrl","maxSizeBytes","PreviewComponent","SubmitButtonComponent","inputContent","submitButtonDisabled","some","f","styles","dropzone","minHeight","minWidth","dropzoneReject","borderColor","backgroundColor","inputLabel","once","afterEach","mockPetitions","within","toHaveTextContent","assignedPetitionRows","getAllByTestId","unassignedPetitionRows","archivedPetitionRows","click","newAssignedPetitionRows","beneficiaryId","petitionInfo","beneficiaryInfo","signatoryInfo","assigneeInfo","attorneyInfo","representativeInfo","organizationInfo","jobInfo","ocInfo","awardsInfo","firmsInfo","fundingDocumentsInfo","accelerationsInfo","associationsInfo","criticalEmploymentsInfo","highRemunerationInfo","patentsInfo","pressInfo","articlesInfo","judingEventsInfo","advisoryInfo","flexWrap","console","attorneySelectInput","querySelector","keyDown","code","DocumentDetail","templateId","attributes","generateDocumentReducer","generated","alertVisible","setAlertVisible","templateData","dataFromAttributeRows","Array","from","getElementsByClassName","template_data","petition_templates_url","noSubmit","renderAttribute","EvidenceRequestTool","requestStatus","existingEvidenceRequest","setExistingEvidenceRequest","types","idle","pending","failure","mockNotesProps","global","LocalStorageMock","setItem","petitionGdriveLInk","getAllByText","ContactsHeaders","IntakesHeaders","toBe","mockCaseStatusResponse","mockCaseStatusResponse2","mockCaseStatusResponse3","warn","shipmentDateInput","newShipmentDateInput","receiptDateInput","newReceiptDateInput","caseNumberInput","newCaseNumberInput","decisionDateInput","newDecisionDateInput","tableHead","k","tableBody","Petition","cellPadding","cellSpacing","border","section","sectionLinks","handleSectionClick","sectionName","ActionBar","handleCancel"],"mappings":"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","file":"js/application~0c6e7069-9df33c46a2e1cda19718.chunk.js","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport React, { useState, useReducer, useEffect } from \"react\";\nimport styled from \"styled-components\";\nimport PropTypes from \"prop-types\";\nimport Loader from \"react-loader-spinner\";\nimport { useHotkeys } from \"../../hooks/useHotKeys\";\nimport NoteInput from \"./NoteInput/NoteInput\";\nimport NoteList from \"./NoteList/NoteList\";\nimport { formHeaders } from \"../../utils/form\";\nimport { grayLightest } from \"../../styles/colors\";\nimport { fetchReducer } from \"../../reducers/fetchReducer\";\n\nconst ConsoleWrapper = styled.div`\n resize: horizontal;\n overflow: auto;\n direction: rtl;\n width: 460px;\n min-width: 320px;\n max-width: 100%;\n height: 100%;\n top: 0;\n right: 0;\n position: fixed;\n background-color: white;\n box-shadow: -15px 0 15px -15px gray;\n z-index: 2;\n overflow-y: auto;\n`;\n\nconst NotesHeader = styled.h2`\n padding: 1rem;\n color: black;\n`;\n\nconst EscapeHeader = styled.p`\n padding: 1rem;\n text-align: right;\n color: #b9bfcb;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n\n /* This weird construct can be used to overide global styles coming from ancient stylesheets */\n &&& {\n font-size: 14px;\n max-width: none;\n }\n\n i {\n margin-left: 1rem;\n padding: 0.5rem;\n font-size: 1.5rem;\n }\n`;\n\nconst HotKeyButtonContainer = styled.p`\n background-color: ${grayLightest};\n border-radius: 4px;\n padding: 0.5rem;\n color: #3a4861;\n\n &&& {\n font-size: 14px;\n }\n\n button {\n margin-left: 1rem;\n }\n`;\n\nconst MarkdownCheatSheetLink = styled.div`\n padding: 1rem;\n i {\n margin-right: 0.5rem;\n }\n`;\n\nexport default function NotesConsole(props) {\n const { notable = {}, notableType = \"Petition\" } = props;\n const [consoleOpen, setConsoleOpen] = useState(false);\n const [notes, setNotes] = useState([]);\n const [fetchState, dispatch] = useReducer(fetchReducer, {\n success: false,\n loading: false,\n response: null\n });\n\n useHotkeys(\"ctrl + n\", () => setConsoleOpen(true));\n useHotkeys(\"esc\", () => setConsoleOpen(false));\n\n useEffect(() => {\n const fetchNotes = async (type, notableId) => {\n dispatch({ type: \"FETCH_STARTED\" });\n try {\n // eslint-disable-next-line no-undef\n const url = Routes.notes_url({\n notable_type: type,\n notable_id: notableId\n });\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: formHeaders()\n });\n\n if (!response.ok) {\n dispatch({ type: \"FETCH_ERROR\" });\n alert(\"Something went wrong.\");\n }\n\n if (response.ok) {\n const json = await response.json();\n setNotes(json.notes);\n dispatch({ type: \"FETCH_COMPLETE\", json });\n }\n } catch (error) {\n dispatch({ type: \"FETCH_ERROR\" });\n alert(error);\n }\n };\n fetchNotes(notableType, notable.id);\n }, [notable.id, notableType]);\n\n return (\n <>\n {consoleOpen && (\n \n
\n \n Press ESC to close\n setConsoleOpen(false)}\n />\n \n \n \n Markdown syntax is now supported in the notes console. New to\n markdown? Check out{\" \"}\n \n this cheatsheet.\n \n \n Notes\n \n \n
\n
\n )}\n {!consoleOpen && (\n
\n {fetchState.loading && (\n \n )}\n {!fetchState.loading && (\n \n {notes.length === 0\n ? \"Press CTRL + N to\"\n : \"Press CTRL + N to add note\"}\n setConsoleOpen(true)}\n >\n {notes.length === 0 && \"Add note\"}\n {notes.length === 1 && `${notes.length} note`}\n {notes.length > 1 && `${notes.length} notes`}\n \n \n )}\n
\n )}\n \n );\n}\n\nNotesConsole.propTypes = {\n notable: PropTypes.object,\n notableType: PropTypes.string\n};\n","/* eslint-disable react/destructuring-assignment */\nimport React, { useState } from \"react\";\nimport MaskedInput from \"react-text-mask\";\nimport PropTypes from \"prop-types\";\nimport createNumberMask from \"text-mask-addons/dist/createNumberMask\";\n\nexport default function NumberField(props) {\n const {\n prefix,\n suffix,\n delimiter,\n separator,\n float,\n precision,\n signed,\n places,\n handleInputChange\n } = props;\n\n const [inputValue, setInputValue] = useState(props.value ? props.value : \"\");\n\n const [maskedValue, setMaskedValue] = useState(\n props.value ? props.value : \"\"\n );\n\n const cleanValue = value => parseFloat(value.toString().replace(/\\$|,/g, \"\"));\n\n const handleChange = e => {\n setMaskedValue(e.target.value);\n setInputValue(cleanValue(e.target.value));\n if (handleInputChange) {\n handleInputChange(cleanValue(e.target.value));\n }\n };\n\n const mask = createNumberMask({\n prefix,\n suffix,\n thousandsSeparatorSymbol: delimiter,\n decimalSymbol: separator,\n allowDecimal: float || precision > 0,\n decimalLimit: precision,\n allowNegative: signed,\n integerLimit: places\n });\n\n return (\n \n \n handleChange(e)}\n onBlur={props.handleInputBlur}\n />\n {props.label && }\n \n );\n}\n\nNumberField.propTypes = {\n name: PropTypes.string,\n placeholder: PropTypes.string,\n value: PropTypes.string,\n label: PropTypes.string,\n handleInputChange: PropTypes.func,\n handleInputBlur: PropTypes.func,\n prefix: PropTypes.string,\n delimiter: PropTypes.string,\n separator: PropTypes.string,\n precision: PropTypes.string,\n // eslint-disable-next-line react/boolean-prop-naming\n signed: PropTypes.bool\n};\n","/* eslint-disable react/destructuring-assignment */\nimport React from \"react\";\nimport MaskedInput from \"react-text-mask\";\nimport PropTypes from \"prop-types\";\n\nexport default function PhoneField(props) {\n const mask = [\n /[\\d-() +]/,\n /[\\d-() ]/,\n /[\\d-() ]/,\n /[\\d-() ]/,\n /[\\d-() ]/,\n /[\\d-() ]/,\n /[\\d-() ]/,\n /[\\d-() ]/,\n /[\\d-() ]/,\n /[\\d-() ]/,\n /[\\d-() ]/,\n /[\\d-() ]/,\n /[\\d-() ]/,\n /[\\d-() ]/,\n /[\\d-() ]/,\n /[\\d-() ]/,\n /[\\d-() ]/,\n /[\\d-() ]/,\n /[\\d-() ]/,\n /[\\d-() ]/\n ];\n const {\n name,\n value,\n label,\n placeholder,\n handleInputChange,\n handleInputBlur\n } = props;\n\n return (\n <>\n \n {label && }\n \n );\n}\n\nPhoneField.propTypes = {\n name: PropTypes.string, // name of the input\n placeholder: PropTypes.string, // placeholder value\n value: PropTypes.string, // default value\n label: PropTypes.string, // value for the label\n handleInputChange: PropTypes.func, // callback to handle input change\n handleInputBlur: PropTypes.func // callback to handle input blur\n};\n","import React, { useState, useEffect, useRef } from \"react\";\nimport styled from \"styled-components\";\nimport PropTypes from \"prop-types\";\nimport createPersistedState from \"use-persisted-state\";\nimport { useDebouncedCallback } from \"use-debounce\";\nimport { useHotkeys } from \"../../../hooks/useHotKeys\";\nimport { fetchCall } from \"../../../utils/fetchCall\";\n\nconst Container = styled.div`\n padding: ${props => (props.padding ? \"1rem\" : 0)};\n margin: ${props => (props.margin ? \"1rem 0\" : 0)};\n`;\nconst Input = styled.textarea`\n border: none;\n overflow: auto;\n outline: none;\n -webkit-box-shadow: none;\n -moz-box-shadow: none;\n box-shadow: none;\n resize: none;\n width: 100%;\n height: 10rem;\n`;\n\nconst OuterDiv = styled.div`\n display: flex;\n justify-content: flex-end;\n`;\n\nconst SavePrompt = styled.div`\n padding: ${props => (props.padding ? \"1rem\" : 0)};\n color: #b9bfcb;\n\n &&& {\n font-size: 14px;\n }\n\n button {\n margin-left: 1rem;\n }\n`;\n\nexport default function NoteInput(props) {\n const {\n padding,\n margin,\n source,\n notes,\n setNotes,\n setInputVisible,\n notable,\n notableType,\n consoleOpen,\n isNotesConsole\n } = props;\n\n const useNoteInputState = createPersistedState(`note-${notable.id}`);\n\n const [currentStorageValue, setCurrentStorageValue] = useNoteInputState(\"\");\n\n const [currentInputValue, setCurrentInputValue] = useState(\n currentStorageValue || \"\"\n );\n\n const debouncedStorage = useDebouncedCallback(\n value => setCurrentStorageValue(value),\n 250\n );\n\n const handleInputChange = input => {\n setCurrentInputValue(input);\n debouncedStorage(input);\n };\n\n const inputRef = useRef(null);\n\n const handleTab = e => {\n if (e.key === \"Tab\") {\n e.preventDefault();\n\n const { selectionStart, selectionEnd } = e.target;\n const newInputValue = `${currentInputValue.substring(\n 0,\n selectionStart\n )} ${currentInputValue.substring(selectionEnd)}`;\n handleInputChange(newInputValue);\n if (inputRef.current) {\n inputRef.current.value = newInputValue;\n // eslint-disable-next-line no-multi-assign\n inputRef.current.selectionStart = inputRef.current.selectionEnd =\n selectionStart + 2;\n }\n }\n };\n\n const handleSave = async text => {\n if (!text) {\n alert(\"add a note first!\");\n }\n\n try {\n const url = `${Routes.root_url({ subdomain: \"\" })}/notes`;\n\n const params = {\n text,\n notable_id: notable.id,\n notable_type: notableType,\n source\n };\n\n const response = await fetchCall(url, {\n method: \"POST\",\n body: JSON.stringify(params)\n });\n\n if (!response.success) {\n alert(\"something went wrong\");\n }\n\n if (response.success) {\n setCurrentInputValue(\"\");\n setCurrentStorageValue(\"\");\n const json = await response.data;\n await setNotes([...notes, json]);\n }\n } catch (error) {\n alert(error);\n }\n };\n\n useEffect(() => {\n inputRef.current.focus();\n }, [consoleOpen]);\n\n useHotkeys(\n \"ctrl + enter\",\n () => {\n if (document.activeElement === inputRef.current) {\n handleSave(inputRef.current.value);\n }\n },\n [inputRef.current, inputRef.current?.value, notes]\n );\n\n const ActionPrompt = () => {\n if (isNotesConsole) {\n return (\n \n Press CTRL + enter to\n handleSave(currentInputValue)}\n >\n Save\n \n \n );\n }\n return currentInputValue ? (\n \n Press CTRL + enter to\n handleSave(currentInputValue)}\n >\n Save\n \n \n ) : (\n setInputVisible(false)}\n >\n Done\n \n );\n };\n\n return (\n \n handleInputChange(e.target.value)}\n onKeyDown={e => handleTab(e)}\n />\n \n \n \n \n );\n}\n\nNoteInput.propTypes = {\n source: PropTypes.string,\n notable: PropTypes.object,\n notableType: PropTypes.string,\n // eslint-disable-next-line react/boolean-prop-naming\n consoleOpen: PropTypes.bool\n};\n","import React, { useState, useEffect, useRef } from \"react\";\nimport styled from \"styled-components\";\nimport PropTypes from \"prop-types\";\nimport ReactMarkdown from \"react-markdown\";\nimport { formHeaders } from \"../../../utils/form\";\nimport { useHotkeys } from \"../../../hooks/useHotKeys\";\n\nconst MarkdownContainer = styled.div`\n &&& {\n margin: 0 0 1rem 0;\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin: 0;\n }\n\n h1 {\n font-size: 28px;\n }\n h2 {\n font-size: 24px;\n }\n h3 {\n font-size: 21px;\n }\n\n ul {\n list-style: disc;\n padding-left: 2em;\n }\n\n li {\n margin-bottom: 0;\n }\n\n blockquote {\n margin-left: 1em;\n padding-left: 1em;\n border-left: 1px solid #ddd;\n }\n\n pre {\n background-color: #e1e7f0;\n border-radius: 4px;\n padding: 0.5rem;\n }\n code {\n font-family: \"Consolas\", \"Menlo\", \"Monaco\", monospace, serif;\n font-size: 0.9em;\n }\n }\n`;\n\nconst Input = styled.textarea`\n &&& {\n border: none;\n outline: none;\n -webkit-box-shadow: none;\n -moz-box-shadow: none;\n box-shadow: none;\n resize: none;\n width: 100%;\n min-height: auto;\n max-height: 50rem;\n }\n\n &:disabled {\n background-color: #fff;\n color: #3a4861;\n }\n`;\n\nexport default function NoteEdit(props) {\n const {\n margin,\n note,\n notes,\n setNotes,\n handleDelete,\n setRowSelected = () => {}\n } = props;\n\n const [currentInputValue, setCurrentInputValue] = useState(note.text);\n const [showInput, setShowInput] = useState(false);\n\n const autoExpand = element => {\n // Reset field height\n element.style.height = \"inherit\";\n\n // Get the computed styles for the element\n const computed = window.getComputedStyle(element);\n\n // Calculate the height\n const height =\n parseInt(computed.getPropertyValue(\"border-top-width\"), 10) +\n parseInt(computed.getPropertyValue(\"padding-top\"), 10) +\n element.scrollHeight +\n parseInt(computed.getPropertyValue(\"padding-bottom\"), 10) +\n parseInt(computed.getPropertyValue(\"border-bottom-width\"), 10);\n\n element.style.height = `${height}px`;\n };\n\n const updatedNotes = (notesArray, updatedNote) =>\n notesArray.map(n => (n.id === updatedNote.id ? updatedNote : n));\n\n const handleUpdate = async noteId => {\n try {\n const url = Routes.note_url(noteId);\n\n const params = {\n text: currentInputValue\n };\n\n const response = await fetch(url, {\n method: \"PUT\",\n body: JSON.stringify(params),\n headers: formHeaders()\n });\n\n if (!response.ok) {\n alert(\"Unable to save this note.\");\n }\n\n if (response.ok) {\n const json = await response.json();\n setNotes(updatedNotes(notes, json));\n }\n } catch (error) {\n alert(error);\n }\n };\n\n const handleInputChange = e => {\n setCurrentInputValue(e.target.value);\n autoExpand(e.target);\n };\n\n const handleFocus = e => {\n setRowSelected(true);\n autoExpand(e.target);\n };\n\n const handleBlur = () => {\n if (!currentInputValue) {\n handleDelete(note.id);\n } else {\n handleUpdate(note.id);\n }\n setRowSelected(false);\n setShowInput(false);\n };\n\n const inputRef = useRef(null);\n\n const handleTab = e => {\n if (e.key === \"Tab\") {\n e.preventDefault();\n\n const { selectionStart, selectionEnd } = e.target;\n const newInputValue = `${currentInputValue.substring(\n 0,\n selectionStart\n )} ${currentInputValue.substring(selectionEnd)}`;\n setCurrentInputValue(newInputValue);\n if (inputRef.current) {\n inputRef.current.value = newInputValue;\n // eslint-disable-next-line no-multi-assign\n inputRef.current.selectionStart = inputRef.current.selectionEnd =\n selectionStart + 2;\n }\n }\n };\n\n useEffect(() => {\n if (showInput) {\n autoExpand(inputRef.current);\n }\n }, []);\n\n useHotkeys(\n \"ctrl + enter\",\n () => {\n if (document.activeElement === inputRef.current) {\n inputRef.current.blur();\n }\n },\n [inputRef.current, notes]\n );\n\n if (note.read_only) {\n return (\n \n \n \n );\n }\n\n return (\n <>\n {showInput && (\n handleInputChange(e)}\n onKeyDown={e => handleTab(e)}\n onFocus={e => handleFocus(e)}\n onBlur={() => handleBlur()}\n />\n )}\n {!showInput && (\n {\n setShowInput(true);\n }}\n >\n \n \n )}\n \n );\n}\n\nNoteEdit.propTypes = {\n margin: PropTypes.string,\n note: PropTypes.object,\n notes: PropTypes.array,\n setNotes: PropTypes.func,\n handleDelete: PropTypes.func,\n setRowSelected: PropTypes.func\n};\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable no-undef */\nimport React, { useState, useEffect } from \"react\";\nimport styled from \"styled-components\";\nimport Loader from \"react-loader-spinner\";\nimport { useAlert } from \"react-alert\";\nimport { formHeaders } from \"../../utils/form\";\nimport { IndexRow } from \"../Shared/IndexRow/IndexRow\";\nimport CommonNav from \"../Shared/CommonNav/CommonNav\";\nimport SearchBar from \"../Shared/SearchBar/SearchBar\";\nimport { PaginationWidget } from \"../Shared/PaginationWidget/PaginationWidget\";\nimport { usePagination } from \"../../hooks/usePagination\";\nimport EmployeeForm from \"./EmployeeForm\";\nimport { green, red } from \"../../styles/colors\";\nimport {\n alphabeticalSort,\n booleanSort,\n chronologicalSort\n} from \"../../utils/sorting\";\n\nconst EmployeeTable = styled.table`\n display: grid;\n`;\n\nexport default function EmployeeIndexPage() {\n const [employees, setEmployees] = useState([]);\n const [filteredEmployees, setFilteredEmployees] = useState([]);\n\n const [searchString, setSearchString] = useState(\"\");\n\n const maxPerPage = 5;\n\n const popup = useAlert();\n\n useEffect(() => {\n const filtered = employees\n ? employees.filter(emp => {\n const searchables = [emp.fullName, emp.email]\n .toString()\n .toLowerCase();\n return searchables.includes(searchString.trim().toLowerCase());\n })\n : [];\n setFilteredEmployees(filtered);\n }, [searchString, employees]);\n\n const [loading, setLoading] = useState(false);\n\n const fetchEmployees = async () => {\n setLoading(true);\n try {\n const url = Routes.employees_path();\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: formHeaders()\n });\n\n if (!response.ok) {\n popup.show(\"Something went wrong\", { type: \"error\" });\n }\n\n if (response.ok) {\n const json = await response.json();\n setEmployees(json.employees);\n setSearchString(\"\");\n }\n } catch (error) {\n popup.show(error.message, { type: \"error\" });\n } finally {\n setLoading(false);\n }\n };\n\n useEffect(() => {\n fetchEmployees();\n }, []);\n\n // Sorting\n\n const [sortBy, setSortBy] = useState({\n attribute: \"name\",\n ascending: true\n });\n\n const handleSort = attribute => {\n setSortBy(prevState => ({\n attribute,\n ascending: prevState.attribute === attribute ? !sortBy.ascending : true\n }));\n };\n\n const currentSortFunction = (a, b) => {\n switch (sortBy.attribute) {\n case \"name\":\n return alphabeticalSort(a.fullName, b.fullName, sortBy.ascending);\n case \"email\":\n return alphabeticalSort(a.email, b.email, sortBy.ascending);\n case \"title\":\n return alphabeticalSort(a.title, b.title, sortBy.ascending);\n case \"confirmed\":\n return booleanSort(a.confirmed, b.confirmed, sortBy.ascending);\n case \"createdAt\":\n return chronologicalSort(a.createdAt, b.createdAt, sortBy.ascending);\n default:\n return chronologicalSort(\n a.confirmedAt,\n b.confirmedAt,\n sortBy.ascending\n );\n }\n };\n\n const currentSortArrow = attribute => {\n if (sortBy.attribute === attribute && sortBy.ascending) return \"↑\";\n if (sortBy.attribute === attribute && !sortBy.ascending) return \"↓\";\n };\n\n const sortedEmployees = filteredEmployees.sort((a, b) =>\n currentSortFunction(a, b)\n );\n\n // Pagination\n\n const {\n nextPage,\n prevPage,\n currentPage,\n setCurrentPage,\n maxPage,\n showAll,\n repaginate,\n currentData,\n startIndex,\n endIndex\n } = usePagination(sortedEmployees, maxPerPage);\n\n const [showingAll, setShowingAll] = useState(false);\n\n const handleShowAllClick = () => {\n showAll();\n setShowingAll(true);\n };\n\n const handleRepaginateClick = () => {\n repaginate();\n setShowingAll(false);\n };\n\n const handleSendConfirmationEmail = async personId => {\n try {\n const url = Routes.send_confirmation_instructions_employee_path(personId);\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: formHeaders(),\n body: JSON.stringify({})\n });\n\n if (!response.ok) {\n popup.show(response.error.message, { type: \"error\" });\n }\n\n if (response.ok) {\n await response.json();\n popup.show(\"Confirmation email sent.\", { type: \"success\" });\n }\n } catch (error) {\n popup.show(\"Something went wrong. Please contact Legalpad Engineering.\", {\n type: \"error\"\n });\n }\n };\n\n return (\n <>\n \n
\n

Employees

\n {loading && (\n \n )}\n
\n \n
\n {!loading && !!filteredEmployees.length && (\n <>\n \n \n \n handleSort(\"name\")}\n onKeyDown={() => handleSort(\"name\")}\n >\n Name {currentSortArrow(\"name\")}\n \n handleSort(\"email\")}>\n Email {currentSortArrow(\"email\")}\n \n handleSort(\"title\")}>\n Title {currentSortArrow(\"title\")}\n \n handleSort(\"confirmed\")}>\n Confirmed {currentSortArrow(\"confirmed\")}\n \n \n \n
\n

{`${startIndex} - ${endIndex} of ${filteredEmployees.length}`}

\n
\n {filteredEmployees.length > maxPerPage && (\n
\n {!showingAll && (\n handleShowAllClick()}\n >\n Show all\n \n )}\n {showingAll && (\n handleRepaginateClick()}>\n Back to page view\n \n )}\n
\n )}\n {filteredEmployees.length > maxPerPage && (\n
\n prevPage()}\n className=\"fas fa-chevron-left\"\n />\n nextPage()}\n className=\"fas fa-chevron-right\"\n />\n
\n )}\n \n \n
\n\n {currentData().map(emp => (\n \n {emp.fullName}\n {emp.email}\n {emp.title}\n \n {emp.confirmed ? (\n \n ) : (\n \n )}\n \n \n {!emp.confirmed && (\n handleSendConfirmationEmail(emp.id)}\n >\n Send confirmation email\n \n )}\n \n \n ))}\n \n \n
\n \n )}\n
\n \n );\n}\n\nEmployeeIndexPage.propTypes = {};\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport React from \"react\";\nimport useContextMenu from \"react-use-context-menu\";\nimport { useAlert } from \"react-alert\";\nimport { formHeaders } from \"../../../utils/form\";\nimport { IndexItem } from \"../../Shared/IndexItem/IndexItem\";\nimport { IndexRow } from \"../../Shared/IndexRow/IndexRow\";\nimport { ContextMenu } from \"../../Shared/ContextMenu/ContextMenu\";\n\nexport default function PetitionRow(props) {\n const popup = useAlert();\n\n const { petition, setPetitionsState } = props;\n\n const [\n bindMenu,\n bindMenuItems,\n useContextTrigger,\n { setVisible: setContextMenuVisible }\n ] = useContextMenu();\n const [bindTrigger] = useContextTrigger({});\n\n const handleArchive = async unarchive => {\n // Pass 'unarchive' or true to this function to unarchive\n\n try {\n const url = unarchive\n ? Routes.unarchive_petition_path(petition.id)\n : Routes.archive_petition_path(petition.id);\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: formHeaders(),\n body: JSON.stringify({})\n });\n\n if (!response.ok) {\n popup.show(response.error.message, { type: \"error\" });\n }\n\n if (response.ok) {\n // API returns the petition object and can be inserted into the state\n // via find and replace with map\n const json = await response.json();\n setPetitionsState(prevState =>\n prevState.map(p => (p.id === petition.id ? json : p))\n );\n setContextMenuVisible(false);\n popup.show(\n `${\n unarchive\n ? \"Your petition has been unarchived\"\n : \"Your petition has been archived\"\n }`,\n { type: \"success\" }\n );\n }\n } catch (error) {\n popup.show(\"Something went wrong. Please contact Legalpad Engineering.\", {\n type: \"error\"\n });\n }\n };\n\n function PetitionContextMenu() {\n return (\n \n {/* eslint-disable-next-line no-undef */}\n \n Open in new tab\n \n
\n {/* eslint-disable-next-line no-undef */}\n \n Edit\n \n
\n {!petition.archived && (\n \n window.confirm(\n \"Are you sure you want to archive this petition?\"\n ) && handleArchive()\n }\n >\n Archive\n \n )}\n {petition.archived && (\n handleArchive(\"unarchive\")}>Unarchive\n )}\n
\n );\n }\n\n return (\n
\n \n (window.location = Routes.petition_path(petition.id))}\n >\n
\n \n {petition.beneficiaryName}\n \n \n {(petition.petitioner.legalName ||\n petition.petitioner.displayName) ??\n petition.petitioner}\n \n
\n {petition.visaType}\n {petition.createdAt}\n {petition.assignee ?? Assign}\n {petition.updatedAt[1]}\n \n
\n );\n}\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport styled from \"styled-components\";\nimport { fetchCall } from \"../../../../utils/fetchCall\";\n\nconst BlockerWrapper = styled.div`\n text-align: center;\n width: 10rem;\n height: 8rem;\n padding: 0.5rem;\n margin: 0.5rem 0;\n`;\n\nconst Flag = styled.i`\n color: ${props => (props.active ? \"#FF5C5C\" : \"#41CD7E\")};\n margin: 0 0 1rem 0;\n`;\n\nexport default function BlockerFlag(props) {\n const { petitionId, label, isActive } = props;\n const [active, setActive] = useState(isActive);\n\n const handleClick = async key => {\n const url = Routes.petition_toggle_blocker_url(petitionId, { key });\n\n const response = await fetchCall(url, { method: \"PUT\" });\n\n if (!response.success) {\n alert(`Unexpected error: ${response.error}`);\n }\n if (response.success) {\n setActive(!active);\n }\n };\n\n return (\n handleClick(label)}>\n \n

{label}

\n
\n );\n}\n\nBlockerFlag.propTypes = {\n petitionId: PropTypes.string,\n label: PropTypes.string,\n isActive: PropTypes.bool\n};\n","import React, { useState } from \"react\";\nimport Select from \"react-select\";\nimport Loader from \"react-loader-spinner\";\nimport { formHeaders } from \"../../utils/form\";\nimport { grayDarkest } from \"../../styles/colors\";\n\nexport default function ContactCard(props) {\n const {\n petitionId,\n contact = {\n role: \"\",\n name: \"\",\n email: \"\",\n phone: \"\",\n id: \"\",\n isAttorney: false\n },\n attorneyOptions = []\n } = props;\n\n const defaultOption = attorneyOptions.find(\n option => option.value === contact.id\n );\n\n const [currentContact, setCurrentContact] = useState(contact);\n\n const [editing, setEditing] = useState(false);\n\n const [loading, setLoading] = useState(false);\n\n const [selectedValue, setSelectedValue] = useState(defaultOption);\n\n const handleAttorneySelect = async selectedOption => {\n setSelectedValue(selectedOption);\n\n try {\n setLoading(true);\n const url = Routes.petition_set_attorney_path(petitionId);\n const requestBody = {\n attorney_id: selectedOption.value\n };\n\n const response = await fetch(url, {\n method: \"PUT\",\n headers: formHeaders(),\n body: JSON.stringify(requestBody)\n });\n\n if (!response.ok) {\n alert(\"Petition attorney could not be updated\");\n setLoading(false);\n }\n\n if (response.ok) {\n const json = await response.json();\n setCurrentContact(json);\n setEditing(false);\n setTimeout(() => setLoading(false), 600);\n }\n } catch (error) {\n alert(error);\n setLoading(false);\n }\n };\n\n if (currentContact) {\n return (\n
\n
\n
{contact.role.toUpperCase()}
\n {loading && (\n \n )}\n {!loading && !editing && (\n
\n \n {currentContact.name}\n \n
\n )}\n {!loading && !editing && contact.isAttorney && (\n setEditing(true)}\n onKeyDown={() => setEditing(true)}\n role=\"button\"\n tabIndex={0}\n >\n Change\n \n )}\n {contact.isAttorney && editing && (\n
\n \n
\n )}\n
\n
\n
Email
\n {loading ? (\n \n ) : (\n
{currentContact.email}
\n )}\n
\n
\n
Phone
\n {loading ? (\n \n ) : (\n
{currentContact.phone}
\n )}\n
\n
\n );\n }\n}\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Select from \"react-select\";\nimport { fetchCall } from \"../../../utils/fetchCall\";\n\nexport default function PetitionAssigneeSelect(props) {\n const { assigneeId = null, petitionId = null, assigneeOptions = [] } = props;\n\n const defaultOption = assigneeOptions.find(\n option => option.value === assigneeId\n );\n\n const [selectedValue, setSelectedValue] = useState(defaultOption);\n\n const handleSelectChange = async selectedOption => {\n let selectedAssigneeId = null;\n if (selectedOption) {\n selectedAssigneeId = selectedOption.value;\n }\n\n const url = Routes.petition_set_assignee_path(petitionId);\n\n const requestBody = {\n petition_id: petitionId,\n assignee_id: selectedAssigneeId\n };\n\n const response = await fetchCall(url, {\n method: \"PUT\",\n body: JSON.stringify(requestBody)\n });\n\n if (!response.success) {\n alert(`Unexpected error: ${response.error}`);\n }\n if (response.success) {\n setSelectedValue(selectedOption);\n }\n };\n\n return (\n \n );\n}\n\nPetitionAssigneeSelect.propTypes = {\n assigneeOptions: PropTypes.array,\n assigneeId: PropTypes.string,\n petitionId: PropTypes.string\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport PetitionAssigneeSelect from \"./PetitionAssigneeSelect/PetitionAssigneeSelect\";\nimport StatusTag from \"../Shared/StatusTag/StatusTag\";\n\n/* Shared subheader for petition show pages */\n\nexport default function SubHeader(props) {\n const {\n type,\n token,\n beneficiary,\n hasDependents,\n petitionerName,\n petitionId,\n assigneeId,\n assigneeOptions,\n dealId\n } = props;\n\n return (\n
\n
\n
\n {type} - {token} •{\" \"}\n {dealId && View deal}\n
\n
\n \n
\n

{petitionerName}

\n {hasDependents && }\n
\n
\n
\n

Assigned to:

\n \n
\n
\n );\n}\n\nSubHeader.propTypes = {\n assigneeOptions: PropTypes.array,\n assigneeId: PropTypes.string,\n petitionId: PropTypes.string\n};\n","import React, { useState } from \"react\";\nimport moment from \"moment\";\nimport styled from \"styled-components\";\nimport { formHeaders } from \"../../../../../utils/form\";\nimport DeleteConfirmModal from \"../../../../Shared/DeleteConfirmModal/DeleteConfirmModal\";\nimport NoteEdit from \"../../../../NotesConsole/NoteEdit/NoteEdit\";\nimport { grayLight } from \"../../../../../styles/colors\";\n\nconst Row = styled.div`\n border-top: ${props =>\n props.rowSelected ? \"1px solid #2680fa\" : `1px solid ${grayLight}`};\n &:hover {\n border-top: ${props =>\n props.readOnly ? \"1px solid #2680fa\" : \"2px solid #2680fa\"};\n }\n padding: 1rem 0;\n display: flex;\n`;\n\nconst MetaData = styled.div`\n &&& {\n font-size: 14px;\n }\n width: 9rem;\n margin-right: 3rem;\n`;\n\nconst DeleteButton = styled.div`\n flex-grow: 1;\n text-align: right;\n display: flex;\n justify-content: flex-end;\n align-items: baseline;\n`;\n\nexport default function NoteRow(props) {\n const { note, notes, setNotes, id } = props;\n\n const [deleteConfirmVisible, setDeleteConfirmVisible] = useState(false);\n const [rowSelected, setRowSelected] = useState(false);\n\n const handleDelete = async noteId => {\n try {\n const url = Routes.note_url(noteId);\n\n const response = await fetch(url, {\n method: \"DELETE\",\n headers: formHeaders()\n });\n\n if (!response.ok) {\n alert(\"Something went wrong.\");\n }\n\n if (response.ok) {\n // const json = await response.json();\n setNotes(notes.filter(n => n.id !== noteId));\n }\n } catch (error) {\n alert(error);\n }\n };\n\n return (\n \n \n {note.author_name}\n
\n {note.source &&\n note.source\n .replace(/([A-Z])/g, \" $1\")\n .replace(/^./, string => string.toUpperCase())}\n
\n
\n {moment(note.created_at).format(\"MMM Do, YYYY\")}\n
\n
\n
\n \n
\n {!note.read_only && (\n \n {!deleteConfirmVisible && (\n setDeleteConfirmVisible(true)}\n >\n Delete\n \n )}\n {deleteConfirmVisible && (\n \n )}\n \n )}\n
\n );\n}\n","import React, { useState } from \"react\";\nimport styled from \"styled-components\";\nimport NoteInput from \"../../../../NotesConsole/NoteInput/NoteInput\";\nimport NoteRow from \"../NoteRow/NoteRow\";\n\nconst Table = styled.div`\n display: grid;\n border: 1px solid #e9edf0;\n border-radius: 6px;\n background-color: #ffffff;\n min-width: 26rem;\n padding: 1.5rem;\n width: auto;\n`;\n\nconst AddNotes = styled.div`\n margin-bottom: ${props =>\n props.hasNotes && !props.inputVisible ? \"1.5rem\" : 0};\n display: flex;\n align-items: baseline;\n\n p {\n margin-right: 1rem;\n margin-bottom: 0;\n }\n`;\n\nexport default function NotesTable(props) {\n const { notes = [], notable, setNotes } = props;\n\n const initialState = () => {\n if (localStorage.getItem(`note-${notable.id}`)) {\n // Account for quotes in local storage - everything saved as a string\n return localStorage.getItem(`note-${notable.id}`).length > 2;\n }\n return false;\n };\n\n const [inputVisible, setInputVisible] = useState(initialState);\n\n return (\n \n 0}>\n {notes.length === 0 && !inputVisible && (\n

No notes have been added to this petition.

\n )}\n {!inputVisible && (\n setInputVisible(!inputVisible)}\n >\n Add notes\n \n )}\n
\n {inputVisible && (\n setInputVisible(false)}\n setInputVisible={setInputVisible}\n margin\n />\n )}\n {notes.map((note, index) => (\n \n ))}\n
\n );\n}\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport styled from \"styled-components\";\nimport { useAlert } from \"react-alert\";\nimport SubHeader from \"../SubHeader\";\nimport IntakeRow from \"../IntakeRow\";\nimport ContactCard from \"../ContactCard\";\nimport SectionsMenu from \"../SectionsMenu\";\nimport PetitionActions from \"./PetitionActions/PetitionActions\";\nimport SectionsDropdowns from \"../../Shared/SectionDropdowns/SectionDropdowns\";\nimport NotesDropdown from \"./NotesDropdown/NotesDropdown\";\nimport PopupMessage from \"../../PopupMessage/PopupMessage\";\nimport CommonNav from \"../../Shared/CommonNav/CommonNav\";\nimport { formHeaders } from \"../../../utils/form\";\nimport OrganizationPersonForm from \"../../Shared/Forms/OrganizationPersonForm\";\n\nconst IntakeTable = styled.div`\n display: grid;\n min-width: 68rem;\n`;\n\nconst IntakeHeaderRow = styled.div``;\n\nexport default function PetitionOverview(props) {\n const {\n beneficiary,\n petitionRepresentative,\n attorney,\n attorneyOptions,\n petitionerName,\n organizationId,\n hasDependents,\n intakes,\n intakeUserOptions,\n petitionGdriveLink,\n petitionId,\n petitionName,\n petitionBlockers,\n type,\n token,\n noteProps,\n assigneeId,\n assigneeOptions,\n archived,\n dealId,\n features = {}\n } = props;\n\n const [errors, setErrors] = useState([]);\n const popup = useAlert();\n const [showArchived, setShowArchived] = useState(archived);\n\n const handleArchive = async unarchive => {\n // Pass 'unarchive' or true to this function to unarchive\n\n try {\n const url = unarchive\n ? Routes.unarchive_petition_path(petitionId)\n : Routes.archive_petition_path(petitionId);\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: formHeaders(),\n body: JSON.stringify({})\n });\n\n if (!response.ok) {\n popup.show(response.error.message, { type: \"error\" });\n }\n\n if (response.ok) {\n const json = await response.json();\n setShowArchived(json.archived);\n const message = unarchive\n ? \"Your petition has been unarchived\"\n : \"Your petition has been archived\";\n popup.show(message, { type: \"success\" });\n }\n } catch (error) {\n popup.show(\"Something went wrong. Please contact Legalpad Engineering.\", {\n type: \"error\"\n });\n }\n };\n\n const availableContacts = () =>\n [beneficiary, petitionRepresentative, attorney].filter(\n contact => !!contact\n );\n\n const renderFlags = (\n \n );\n\n const renderIntakeRows = () => (\n <>\n \n \n
\n
\n
Recipient
\n
Organization
\n
\n
\n \n {intakes.map((intake, index) => (\n \n ))}\n \n location.reload()}\n />\n \n );\n\n const renderContactCards = () => {\n const cards = availableContacts().map((contact, index) => (\n \n ));\n\n return
{cards}
;\n };\n\n const renderNotes = () => (\n \n );\n\n const renderActionsSection = () => (\n <>\n {!showArchived && (\n

\n \n window.confirm(\n \"Are you sure you want to archive this petition?\"\n ) && handleArchive()\n }\n onClick={() =>\n window.confirm(\n \"Are you sure you want to archive this petition?\"\n ) && handleArchive()\n }\n >\n Archive this petition\n \n

\n )}\n {showArchived && (\n

\n handleArchive(\"unarchive\")}\n onClick={() => handleArchive(\"unarchive\")}\n >\n Unarchive this petition\n \n

\n )}\n \n );\n\n const sections = [\n {\n name: \"Flags\",\n content: renderFlags\n },\n {\n name: \"Contacts\",\n content: renderContactCards()\n },\n {\n name: \"Intakes\",\n content: renderIntakeRows()\n },\n {\n name: \"Notes\",\n content: renderNotes()\n },\n {\n name: \"Actions\",\n content: renderActionsSection()\n }\n ];\n\n const SideNav = () => (\n \n );\n\n return (\n <>\n {errors &&\n errors.map(error => (\n \n ))}\n \n \n\n
\n \n \n
\n \n );\n}\n\nPetitionOverview.propTypes = {\n beneficiary: PropTypes.object,\n petitionRepresentative: PropTypes.object,\n attorney: PropTypes.object,\n petitionerName: PropTypes.string,\n intakes: PropTypes.array,\n intakeUserOptions: PropTypes.array,\n petitionGdriveLink: PropTypes.string,\n petitionId: PropTypes.string,\n petitionName: PropTypes.string,\n petitionBlockers: PropTypes.object,\n type: PropTypes.string,\n token: PropTypes.string,\n assigneeOptions: PropTypes.array,\n assigneeId: PropTypes.string,\n archived: PropTypes.bool,\n features: PropTypes.object\n};\n","/* eslint-disable react/destructuring-assignment */\n/* eslint-disable class-methods-use-this */\nimport React from \"react\";\nimport MaskedInput from \"react-text-mask\";\nimport moment from \"moment\";\nimport createAutoCorrectedDatePipe from \"text-mask-addons/dist/createAutoCorrectedDatePipe\";\nimport PropTypes from \"prop-types\";\n\nconst autoCorrectedDatePipe = createAutoCorrectedDatePipe(\"mm/dd/yyyy\");\nconst mask = [/\\d/, /\\d/, \"/\", /\\d/, /\\d/, \"/\", /\\d/, /\\d/, /\\d/, /\\d/];\n\nexport default class DateField extends React.Component {\n handleOnChange(e) {\n const value = this.serverDate(e.target.value);\n const complete = e.target.value.replace(\"_\", \"\").length === 10;\n\n this.hiddenField.value = value;\n\n if (this.props.handleInputChange && complete) {\n this.props.handleInputChange(value);\n }\n }\n\n serverDate(value) {\n if (value) {\n if (moment(value, \"MM/DD/YYYY\").isValid()) {\n return moment(value, \"MM/DD/YYYY\").format(\"YYYY-MM-DD\");\n }\n return value;\n }\n }\n\n displayDate(value) {\n if (value) {\n return moment(value, \"YYYY-MM-DD\").format(\"MM/DD/YYYY\");\n }\n }\n\n render() {\n const { name, label, value, placeholder } = this.props;\n return (\n \n (this.hiddenField = el)}\n defaultValue={this.serverDate(value)}\n />\n this.handleOnChange(e)}\n onBlur={this.props.handleInputBlur}\n />\n {/* Internal label needs to be _after_ the input for CSS to work. */}\n {label && }\n \n );\n }\n}\n\nDateField.propTypes = {\n name: PropTypes.string,\n placeholder: PropTypes.string,\n value: PropTypes.string,\n label: PropTypes.string,\n handleInputChange: PropTypes.func,\n handleInputBlur: PropTypes.func\n};\n","/* eslint-disable react/destructuring-assignment */\nimport React from \"react\";\nimport MaskedInput from \"react-text-mask\";\n\nexport default function SsnField(props) {\n /*\n Props: {\n name*: name of the input\n placeholder: placeholder value\n value: default value\n label: value for the label\n handleInputChange: callback to handle input change\n handleInputBlur: callback to handle input blur\n }\n */\n const mask = [/\\d/, /\\d/, /\\d/, \"-\", /\\d/, /\\d/, \"-\", /\\d/, /\\d/, /\\d/, /\\d/];\n const { name, label, value, placeholder } = props;\n\n return (\n \n \n {label && }\n \n );\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport NoteItem from \"../NoteItem/NoteItem\";\n\nexport default function NoteList(props) {\n const { notes = [], setNotes } = props;\n\n return (\n
\n {notes.map((note, index) => (\n \n ))}\n
\n );\n}\n\nNoteList.propTypes = {\n notes: PropTypes.array,\n setNotes: PropTypes.func\n};\n","import React, { useState } from \"react\";\nimport styled from \"styled-components\";\nimport PropTypes from \"prop-types\";\nimport moment from \"moment\";\nimport { formHeaders } from \"../../../utils/form\";\nimport NoteEdit from \"../NoteEdit/NoteEdit\";\n\nconst NoteContainer = styled.div`\n margin: 1rem;\n padding: 1rem 0;\n box-sizing: border-box;\n border-top: ${props =>\n props.isEditing ? \"2px solid #2680fa\" : \"1px solid lightgray\"};\n\n &:hover {\n border-top: ${props =>\n props.readOnly ? \"1px solid #2680fa\" : \"2px solid #2680fa\"};\n }\n`;\n\nconst DeleteConfirmContainer = styled.div`\n padding: 1rem;\n border-radius: 4px;\n box-shadow: 2px 2px 2px 2px lightgray;\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n button {\n margin-left: 1rem;\n }\n`;\n\nconst MetaData = styled.div`\n &&& {\n font-size: 14px;\n }\n width: 12rem;\n margin-bottom: 1rem;\n`;\n\nexport default function NoteItem(props) {\n const { note = {}, notes = [], setNotes, id } = props;\n\n const [deleteVisible, setDeleteVisible] = useState(false);\n const [deleteConfirmVisible, setDeleteConfirmVisible] = useState(false);\n const [isEditing, setIsEditing] = useState(false);\n\n const handleDelete = async noteId => {\n try {\n const url = Routes.note_url(noteId);\n\n const response = await fetch(url, {\n method: \"DELETE\",\n headers: formHeaders()\n });\n\n if (!response.ok) {\n alert(\"Note could not be deleted.\");\n }\n\n if (response.ok) {\n // const json = await response.json();\n setNotes(notes.filter(n => n.id !== noteId));\n }\n } catch (error) {\n alert(error);\n }\n };\n\n const renderDelete = () => {\n const button = (\n setDeleteConfirmVisible(true)}\n >\n Delete\n \n );\n if (deleteVisible && !deleteConfirmVisible) {\n return button;\n }\n if (deleteConfirmVisible) {\n return (\n \n Delete this note?\n
\n setDeleteConfirmVisible(false)}\n >\n Cancel\n \n handleDelete(note.id)}\n >\n Delete\n \n
\n
\n );\n }\n if (isEditing) {\n return button;\n }\n };\n\n return (\n setDeleteVisible(true)}\n onMouseLeave={() => setDeleteVisible(false)}\n isEditing={isEditing}\n >\n {note.read_only && (\n \n {note.author_name}\n
\n {moment(note.created_at).format(\"MMM Do, YYYY\")}\n
\n
\n )}\n \n {!note.read_only && renderDelete()}\n \n );\n}\n\nNoteItem.propTypes = {\n note: PropTypes.object,\n notes: PropTypes.array,\n setNotes: PropTypes.func\n};\n","import React, { useState } from \"react\";\nimport { useAlert } from \"react-alert\";\nimport Loader from \"react-loader-spinner\";\nimport { IndexRow } from \"../Shared/IndexRow/IndexRow\";\nimport { FormInput } from \"../Shared/Forms/index\";\nimport ButtonSecondary from \"../Shared/ButtonSecondary\";\nimport request from \"../../services/request\";\nimport { CheckboxItem } from \"../Shared/CheckBox\";\n\nexport default function EmployeeForm(props) {\n const popup = useAlert();\n const { setEmployees, setSortBy } = props;\n\n const [formState, setFormState] = useState({\n firstName: \"\",\n lastName: \"\",\n email: \"\"\n });\n\n const handleFormChange = e => {\n setFormState({\n ...formState,\n [e.target.name]: e.target.value\n });\n };\n\n const [isAttorney, setIsAttorney] = useState(false);\n\n const [formVisible, setFormVisible] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const createEmployee = async () => {\n setLoading(true);\n try {\n const { firstName, lastName, email, title } = formState;\n\n const requestBody = {\n person: {\n first_name: firstName,\n last_name: lastName,\n is_attorney: isAttorney,\n email,\n title\n }\n };\n\n const newEmployeeJson = await request(Routes.employees_path(), {\n body: requestBody\n });\n\n setEmployees(prev => [newEmployeeJson, ...prev]);\n setSortBy(\"createdAt\");\n\n popup.show(\n \"New employee added. A welcome and sign up email is headed their way!\",\n { type: \"success\" }\n );\n\n setFormState({\n firstName: \"\",\n lastName: \"\",\n email: \"\",\n title: \"\"\n });\n setFormVisible(false);\n setIsAttorney(false);\n } catch (error) {\n popup.show(error.errors?.toString(), { type: \"error\" });\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <>\n {!formVisible && (\n \n \n setFormVisible(true)}\n />\n \n \n )}\n {formVisible && (\n \n \n handleFormChange(e)}\n />\n \n \n handleFormChange(e)}\n />\n \n \n handleFormChange(e)}\n />\n \n \n handleFormChange(e)}\n />\n \n \n \n setIsAttorney(!isAttorney)}\n />\n \n \n \n \n {loading && (\n \n )}\n {!loading && (\n <>\n setFormVisible(false)}\n >\n Cancel\n \n createEmployee()}\n >\n Save\n \n \n )}\n \n \n )}\n \n );\n}\n","import React from \"react\";\n\nexport default class FileField extends React.Component {\n render() {\n const { name } = this.props;\n return ;\n }\n}\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Provider as AlertProvider, positions } from \"react-alert\";\nimport AlertTemplate from \"../Shared/AlertTemplate\";\nimport SectionsDropdowns from \"../Shared/SectionDropdowns/SectionDropdowns\";\nimport PetitionsTable from \"./PetitionsTable/PetitionsTable\";\nimport SideNav from \"./SideNav/SideNav\";\nimport CommonNav from \"../Shared/CommonNav/CommonNav\";\nimport SearchBar from \"../Shared/SearchBar/SearchBar\";\n\nconst options = {\n position: positions.TOP_RIGHT,\n timeout: 3500,\n offset: \"30px\"\n};\nexport default function PetitionIndexPage(props) {\n const { currentUser = {}, petitions = [] } = props;\n\n const [petitionsState, setPetitionsState] = useState(petitions);\n\n const [caseState, setCaseState] = useState({\n assignedCases: [],\n unassignedCases: [],\n pendingCases: [],\n archivedCases: []\n });\n\n const [searchString, setSearchString] = useState(\"\");\n\n useEffect(() => {\n const filteredPetitions = petitionsState.filter(petition => {\n const searchables = [\n petition.beneficiaryName,\n petition.petitioner.legalName,\n petition.petitioner.displayName,\n petition.assignee,\n petition.visaType,\n // So you can search 'EB2 or O1'\n petition.visaType.replace(/-/g, \"\")\n ]\n .toString()\n .toLowerCase();\n\n return searchables.includes(searchString.trim().toLowerCase());\n });\n\n const archivedCases = filteredPetitions.filter(\n petition => petition.archived === true\n );\n const liveCases = filteredPetitions.filter(\n petition => petition.archived === false\n );\n\n setCaseState({\n archivedCases,\n assignedCases: liveCases.filter(\n petition => petition.assignee !== null && petition.state === \"active\"\n ),\n unassignedCases: liveCases.filter(\n petition => petition.assignee === null && petition.state === \"active\"\n ),\n pendingCases: liveCases.filter(petition => petition.state === \"pending\")\n });\n }, [searchString, petitionsState]);\n\n const sections = [\n {\n name: \"Assigned Petitions\",\n content: (\n \n )\n },\n {\n name: \"Unassigned Petitions\",\n content: (\n \n )\n },\n {\n name: \"Pending Payment\",\n content: (\n \n )\n },\n {\n name: \"Archived Petitions\",\n content: (\n \n )\n }\n ];\n\n return (\n \n \n \n
\n \n \n
\n
\n );\n}\n\nPetitionIndexPage.propTypes = {\n currentUser: PropTypes.object,\n petitions: PropTypes.array\n};\n","/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport React, { useState } from \"react\";\nimport styled from \"styled-components\";\nimport PropTypes from \"prop-types\";\nimport { usePagination } from \"../../../hooks/usePagination\";\nimport PetitionRow from \"../PetitionRow/PetitionRow\";\nimport { IndexRow } from \"../../Shared/IndexRow/IndexRow\";\nimport { PaginationWidget } from \"../../Shared/PaginationWidget/PaginationWidget\";\nimport { alphabeticalSort, chronologicalSort } from \"../../../utils/sorting\";\nimport { useDidMountEffect } from \"../../../hooks/useDidMountEffect\";\n\nconst IndexGrid = styled.div`\n display: grid;\n`;\n\nexport default function PetitionsTable(props) {\n const {\n groupName,\n petitionGroup,\n maxPerPage = 10,\n setPetitionsState,\n searchString\n } = props;\n\n const [showingAll, setShowingAll] = useState(false);\n const [sortBy, setSortBy] = useState({\n attribute: \"updatedAt\",\n ascending: true\n });\n\n const handleSort = attribute => {\n setSortBy(prevState => ({\n attribute,\n ascending: prevState.attribute === attribute ? !sortBy.ascending : true\n }));\n };\n\n const currentSortFunction = (a, b) => {\n switch (sortBy.attribute) {\n case \"beneficiaryName\":\n return alphabeticalSort(\n a.beneficiaryName,\n b.beneficiaryName,\n sortBy.ascending\n );\n case \"petitioner\":\n return alphabeticalSort(a.petitioner, b.petitioner, sortBy.ascending);\n case \"assignee\":\n return alphabeticalSort(a.assignee, b.assignee, sortBy.ascending);\n case \"visaType\":\n return alphabeticalSort(a.visaType, b.visaType, sortBy.ascending);\n case \"createdAt\":\n return chronologicalSort(a.createdAt, b.createdAt, sortBy.ascending);\n case \"updatedAt\":\n return chronologicalSort(\n a.updatedAt[0],\n b.updatedAt[0],\n sortBy.ascending\n );\n // By default petitions will be sorted by last updated\n default:\n return chronologicalSort(\n a.updatedAt[0],\n b.updatedAt[0],\n sortBy.ascending\n );\n }\n };\n\n const currentSortArrow = attribute => {\n if (sortBy.attribute === attribute && sortBy.ascending) return \"↑\";\n if (sortBy.attribute === attribute && !sortBy.ascending) return \"↓\";\n };\n\n const sortedPetitionGroup = petitionGroup.sort((a, b) =>\n currentSortFunction(a, b)\n );\n\n const {\n nextPage,\n prevPage,\n currentPage,\n maxPage,\n showAll,\n setCurrentPage,\n repaginate,\n currentData,\n startIndex,\n endIndex\n } = usePagination(sortedPetitionGroup, maxPerPage);\n\n useDidMountEffect(() => {\n setCurrentPage(1);\n }, [searchString]);\n\n const handleShowAllClick = () => {\n window.location = `#${groupName.toLowerCase().replace(/\\s/g, \"\")}`;\n window.scrollBy(0, -70);\n showAll();\n setShowingAll(true);\n };\n\n const handleRepaginateClick = () => {\n window.history.pushState(\n \"\",\n document.title,\n window.location.pathname + window.location.search\n );\n repaginate();\n setShowingAll(false);\n };\n\n return (\n <>\n {petitionGroup.length === 0 &&

No results found...

}\n {petitionGroup.length > 0 && (\n \n

{`${startIndex} - ${endIndex} of ${petitionGroup.length}`}

\n\n {petitionGroup.length > maxPerPage && (\n
\n {!showingAll && (\n handleShowAllClick()}>\n Show all\n \n )}\n {showingAll && (\n handleRepaginateClick()}>Back to page view\n )}\n
\n )}\n {petitionGroup.length > maxPerPage && (\n
\n prevPage()} className=\"fas fa-chevron-left\" />\n nextPage()} className=\"fas fa-chevron-right\" />\n
\n )}\n \n )}\n \n {petitionGroup.length > 0 && (\n \n handleSort(\"beneficiaryName\")}\n >\n Petition {currentSortArrow(\"beneficiaryName\")}\n
\n
handleSort(\"visaType\")}>\n Visa type {currentSortArrow(\"visaType\")}\n
\n handleSort(\"createdAt\")}\n >\n Date created {currentSortArrow(\"createdAt\")}\n
\n
handleSort(\"assignee\")}>\n Assignee {currentSortArrow(\"assignee\")}\n
\n handleSort(\"updatedAt\")}\n >\n Last updated {currentSortArrow(\"updatedAt\")}\n
\n \n )}\n {currentData().map(petition => (\n \n ))}\n \n \n );\n}\n\nPetitionsTable.propTypes = {\n groupName: PropTypes.string,\n petitionGroup: PropTypes.array,\n maxPerPage: PropTypes.number,\n setPetitionsState: PropTypes.func\n};\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport SectionsMenu from \"../../PetitionPage/SectionsMenu\";\n\nconst MenuItem = styled.a`\n i {\n width: 0.5rem;\n margin-right: 1.5rem;\n }\n`;\n\nexport default function SideNav(props) {\n const { sections, engAccess } = props;\n return (\n \n );\n}\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport CommonNav from \"../Shared/CommonNav/CommonNav\";\nimport NotesConsole from \"../NotesConsole/NotesConsole\";\n\nconst Container = styled.article`\n border-radius: 4px;\n background: #fff;\n height: fit-content;\n @media only screen and (min-width: 600px) {\n /* min-width: fit-content; */\n }\n\n header {\n justify-content: space-between;\n align-items: center;\n width: 100%;\n color: white;\n border-radius: 6px 6px 0 0;\n background: linear-gradient(\n 90deg,\n rgba(39,239,151,1) 0%,\n rgba(33,186,137,1) 0%,\n rgba(24,224,136,1) 100%\n );\n padding: 1rem;\n h3 {\n margin: 0;\n font-weight: 500;\n font-size: 1.5em;\n }\n a {\n color: white !important;\n font-size: 1em !important;\n &:hover {\n transform: scale(1.02);\n }\n }\n\n &.missing-info {\n background: linear-gradient(\n 90deg,\n rgba(39,239,151,1) 0%,\n rgba(175,14,14,1) 0%,\n rgba(255,115,115,1) 100%\n );\n }\n }\n`;\n\nconst InfoRow = styled.div`\n &&& {\n margin: 0.8rem 0.8rem 0.8rem 0.8rem;\n }\n`;\n\nconst Card = styled.div`\n &&& {\n max-width: 420px;\n padding: 0;\n }\n`;\n\nexport default function PetitionCard(props) {\n debugger;\n const {\n title = null,\n info = [],\n missing\n } = props;\n\n return (\n \n \n
\n

{title}

\n
\n
\n {info.map(value => (\n \n { value[0] &&
{value[0]}
}\n
{value[1]}
\n
\n
\n ))}\n
\n );\n}\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React from \"react\";\nimport Loader from \"react-loader-spinner\";\nimport PropTypes from \"prop-types\";\n\nexport default function DocumentDetailBar(props) {\n const { petitionId, name, generate, genState } = props;\n\n return (\n
\n
\n \n
\n \n {name}\n
\n
\n
\n {genState.loading && (\n
\n \n
\n )}\n {!genState.loading && (\n generate()}>\n Generate\n \n )}\n
\n
\n );\n}\n\nDocumentDetailBar.propTypes = {\n petitionId: PropTypes.string,\n name: PropTypes.string,\n generate: PropTypes.func,\n genState: PropTypes.object\n};\n","import React, { useState, useReducer } from \"react\";\nimport PropTypes from \"prop-types\";\nimport styled from \"styled-components\";\nimport Loader from \"react-loader-spinner\";\nimport { fetchCall } from \"../../../../utils/fetchCall\";\nimport { fetchReducer } from \"../../../../reducers/fetchReducer\";\nimport { gray } from \"../../../../styles/colors\";\n\nconst Header = styled.div``;\n\nconst ReferencesDiv = styled.div`\n margin-top: 3rem;\n`;\n\nconst EvidenceSelectDiv = styled.div`\n border-left: 1px solid ${gray};\n padding-left: 1rem;\n`;\n\nconst EvidenceItem = styled.div`\n margin-top: 0.75rem;\n`;\n\nconst RequestBox = styled.div`\n position: fixed;\n bottom: 0;\n left: 0;\n height: 6rem;\n width: 100%;\n background-color: #fff;\n box-shadow: 0px -4px 3px ${gray};\n padding: 1rem;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n color: ${gray};\n`;\n\nexport default function EvidenceRequestForm(props) {\n const {\n petitionId = null,\n evidenceOptions = [],\n setRequestStatus,\n setEvidenceRequest,\n errors,\n setErrors\n } = props;\n\n const [selectedEvidence, setSelectedEvidence] = useState(\n evidenceOptions\n .map(option => option.evidenceItems)\n .flat()\n .map(a => ({ type: a.type, id: a.id }))\n );\n\n const [fetchState, dispatch] = useReducer(fetchReducer, {\n success: false,\n loading: false,\n response: null\n });\n\n const handleChange = e => {\n if (e.target.checked) {\n setSelectedEvidence([\n ...selectedEvidence,\n { type: e.target.name, id: e.target.value }\n ]);\n }\n if (!e.target.checked) {\n setSelectedEvidence(\n selectedEvidence.filter(item => item.id !== e.target.value)\n );\n }\n };\n\n const handleSubmit = async () => {\n if (!selectedEvidence) {\n return alert(\"Add a piece of evidence to request first!\");\n }\n dispatch({ type: \"FETCH_STARTED\" });\n try {\n const url = `${Routes.petition_evidence_request_path(petitionId)}`;\n const params = {\n evidenceItems: selectedEvidence\n };\n\n const response = await fetchCall(url, {\n method: \"POST\",\n body: JSON.stringify(params)\n });\n\n if (!response.success) {\n dispatch({ type: \"FETCH_ERROR\" });\n setRequestStatus(\"FAILURE\");\n setErrors([\n ...errors,\n {\n message:\n \"Your evidence request failed. Please contact a Legalpad engineer for assistance.\"\n }\n ]);\n }\n\n if (response.success) {\n dispatch({ type: \"FETCH_COMPLETE\", response });\n setEvidenceRequest(response.data);\n setRequestStatus(\"SUBMITTED\");\n }\n } catch (error) {\n dispatch({ type: \"FETCH_ERROR\" });\n setRequestStatus(\"FAILURE\");\n setErrors([\n ...errors,\n {\n message:\n \"Your evidence request failed. Please contact a Legalpad engineer for assistance.\"\n }\n ]);\n }\n };\n\n return (\n <>\n
\n

Add Evidence

\n

Here are the evidence references we found.

\n
\n {evidenceOptions.map(option => (\n \n

{option.evidenceType}

\n \n {option.subHeader}\n {option.evidenceItems.map(item => (\n \n \n \n ))}\n \n
\n ))}\n \n {!fetchState.loading && (\n <>\n
{selectedEvidence.length} pieces of evidence selected
\n handleSubmit()}\n >\n Request Evidence\n \n \n )}\n {fetchState.loading && (\n \n )}\n
\n \n );\n}\n\nEvidenceRequestForm.propTypes = {\n petitionId: PropTypes.string,\n evidenceOptions: PropTypes.array,\n setRequestStatus: PropTypes.func,\n setEvidenceRequest: PropTypes.func,\n errors: PropTypes.array,\n setErrors: PropTypes.func\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nexport default function EvidenceStatusPage(props) {\n const { evidenceRequest } = props;\n\n return (\n
\n

Your evidence request has been sent!

\n\n {!evidenceRequest && (\n

\n Your evidence request is not linked to google drive. Please contact a\n Legalpad engineer for assistance.\n

\n )}\n\n {evidenceRequest && (\n <>\n

\n You can view the spreadsheet with your evidence requests{\" \"}\n here.\n

\n

\n The evidence folder can be found{\" \"}\n here.\n

\n \n )}\n
\n );\n}\n\nEvidenceStatusPage.propTypes = {\n evidenceRequest: PropTypes.object\n};\n","/* eslint-disable no-undef */\nimport React, { useState, useRef, useEffect } from \"react\";\nimport Select from \"react-select\";\nimport styled from \"styled-components\";\nimport request from \"../../services/request\";\nimport { grayDarkest, blueLightest, blue } from \"../../styles/colors\";\nimport { formHeaders } from \"../../utils/form\";\n\nconst SplitButton = styled.div`\n display: flex;\n justify-content: space-between;\n background-color: ${blueLightest};\n border-radius: 8px;\n padding: 0.5rem 1rem;\n align-items: center;\n cursor: pointer;\n i {\n color: ${blue};\n }\n`;\n\nexport default function IntakeRow(props) {\n const { intake, petitionerName, userOptions = [] } = props;\n const submitted = !!intake.submittedAt;\n const [isDisabled, setDisabled] = useState(intake.archivedAt);\n\n const rowClass = submitted\n ? \"finished\"\n : isDisabled\n ? \"disabled\"\n : \"missing-variables\";\n\n const defaultOption = userOptions.find(\n option => option.value === intake.userId\n );\n\n const [isSelectingRecipient, setIsSelectingRecipient] = useState(false);\n\n const [loading, setLoading] = useState(false);\n\n const [selectedRecipient, setSelectedRecipient] = useState(defaultOption);\n\n const selectedRecipientName =\n !selectedRecipient && intake.userId\n ? \"Person Not in Org\"\n : selectedRecipient.label;\n\n const handleArchiveIntake = async unarchive => {\n try {\n const url = unarchive\n ? Routes.unarchive_intake_path(intake.id)\n : Routes.archive_intake_path(intake.id);\n await request(url, { method: \"POST\" });\n if (unarchive) return setDisabled(false);\n setDisabled(true);\n } catch (error) {\n alert(error);\n }\n };\n\n const handleRecipientSelect = async selectedOption => {\n try {\n setLoading(true);\n // eslint-disable-next-line no-undef\n const url = Routes.intake_path(intake.id);\n const requestBody = {\n user_id: selectedOption.value\n };\n\n const response = await fetch(url, {\n method: \"PUT\",\n headers: formHeaders(),\n body: JSON.stringify(requestBody)\n });\n\n if (!response.ok) {\n alert(\"Intake could not be reassigned.\");\n setLoading(false);\n }\n\n if (response.ok) {\n setSelectedRecipient(selectedOption);\n setTimeout(() => {\n setLoading(false);\n setIsSelectingRecipient(false);\n }, 600);\n }\n } catch (error) {\n alert(error);\n setLoading(false);\n setIsSelectingRecipient(false);\n }\n };\n\n const copyMenuRef = useRef(null);\n\n const renderRecipientSelect = () => (\n <>\n {!isSelectingRecipient && (\n setIsSelectingRecipient(true)}\n onKeyDown={() => setIsSelectingRecipient(true)}\n >\n \n {selectedRecipientName}\n \n
\n \n )}\n {isSelectingRecipient && (\n \n \n
\n )}\n \n );\n\n useEffect(() => {\n const handleClickOutside = e => {\n if (copyMenuRef.current && !copyMenuRef.current.contains(e.target)) {\n setIsSelectingRecipient(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n // Unbind the event listener on clean up\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [copyMenuRef]);\n\n return (\n \n
\n
\n
\n
{intake.name}
\n\n
{renderRecipientSelect()}
\n\n
\n
{petitionerName}
\n
\n\n
\n {submitted && (\n
\n Submitted
{intake.submittedAt}\n
\n )}\n
\n\n
\n {!isDisabled ? (\n handleArchiveIntake()}\n >\n Disable\n \n ) : (\n handleArchiveIntake(true)}\n >\n Enable\n \n )}\n \n View\n \n
\n
\n );\n}\n","import { render, fireEvent, waitFor } from \"@testing-library/react\";\nimport PetitionAssigneeSelect from \"./PetitionAssigneeSelect\";\n\n// Mock the react-select component because it has a complicated DOM structure\n// that is subject to change. This makes testing easier and prevents rewriting\n// tests if the react-select API changes\njest.mock(\"react-select\", () => ({ options, value, onChange }) => {\n function handleChange(event) {\n const option = options.find(opt => opt.value === event.currentTarget.value);\n onChange(option);\n }\n return (\n \n );\n});\n\ndescribe(\"The searchable select component\", () => {\n window.alert = () => {};\n\n const petitionId = \"PETITION_ID\";\n const assigneeOptions = [\n {\n value: \"jekyll_ID\",\n label: \"dr_jekyll@gmail.com\"\n },\n {\n value: \"hyde_ID\",\n label: \"mrhyde@yahoo.com\"\n }\n ];\n const assigneeId = \"jekyll_ID\";\n\n beforeEach(() => {\n fetch.resetMocks();\n });\n\n it(\"renders without crashing\", () => {\n const { container } = render();\n expect(container);\n });\n\n it(\"displays the correct select options and the pre-selected value\", () => {\n const { getByText } = render(\n \n );\n expect(getByText(\"dr_jekyll@gmail.com\"));\n });\n\n it(\"fires the onChange handler when an option is selected\", async () => {\n fetch.mockResponseOnce(\n JSON.stringify({ petitionId: \"PETITION_ID\", assigneeId: \"hyde_ID\" })\n );\n\n const { getByTestId } = render(\n \n );\n expect(fetch.mock.calls.length).toEqual(0);\n fireEvent.change(getByTestId(\"select\"), {\n target: { value: \"hyde_ID\" }\n });\n await waitFor(() => {\n expect(fetch.mock.calls.length).toEqual(1);\n // The 'select' component's value remains the ID of whatever the first option\n // passed to the component. Need to find a different way to test this.\n // expect(getByTestId(\"select\")).toHaveValue(\"hyde_ID\")\n });\n });\n});\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\n\nexport default function DocumentsRow(props) {\n const { doc } = props;\n\n const [documentState, setDocumentState] = useState({\n fileId: doc.fileId,\n id: doc.id,\n generatedAt: doc.dateGenerated\n });\n\n function documentNav() {\n return (\n <>\n
\n {documentState.fileId && (\n \n View\n \n )}\n
\n \n );\n }\n\n return (\n <>\n \n
\n
\n
\n
{doc.name}
\n
\n {documentState.generatedAt && (\n
\n Generated {` ${documentState.generatedAt}`} ago.\n
\n )}\n
\n
{documentNav()}
\n
\n \n );\n}\n\nDocumentsRow.propTypes = {\n doc: PropTypes.object\n};\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport styled from \"styled-components\";\nimport { Provider as AlertProvider, positions } from \"react-alert\";\nimport AlertTemplate from \"../../Shared/AlertTemplate\";\nimport CommonNav from \"../../Shared/CommonNav/CommonNav\";\nimport SubHeader from \"../SubHeader\";\nimport SideNav from \"./PetitionDocumentsSideNav/PetitionDocumentsSideNav\";\nimport Dropdown from \"../../Shared/Dropdown/__Dropdown\";\nimport DocumentsRow from \"./DocumentsRow/DocumentsRow\";\nimport TemplatesRow from \"./TemplatesRow/TemplatesRow\";\n\nconst alertOptions = {\n position: positions.TOP_RIGHT,\n timeout: 3500,\n offset: \"30px\"\n};\n\nconst Table = styled.div`\n display: grid;\n min-width: 1000px;\n`;\n\nconst HeaderRow = styled.div``;\n\nexport default function PetitionDocuments(props) {\n const [formsSelected, setFormsSelected] = useState(false);\n const [lettersSelected, setLettersSelected] = useState(false);\n\n const sections = [{ name: \"Templates\" }, { name: \"Generated Documents\" }];\n\n const {\n type,\n petitionId,\n petitionGdriveLink,\n petitionerName,\n beneficiary,\n assigneeId,\n assigneeOptions,\n documents,\n templates\n } = props;\n\n return (\n \n \n \n
\n \n
\n \n \n
\n
\n
\n
\n \n {templates.length === 0 && (\n
\n There are no templates available for this petition type.\n
\n )}\n {templates.length > 0 &&\n templates.map((template, index) => (\n \n ))}\n \n }\n />\n
\n
\n \n \n
\n
\n
\n \n {documents.length === 0 && (\n
There are currently no documents
\n )}\n {documents.length > 0 &&\n documents.map((doc, index) => (\n \n ))}\n \n }\n />\n
\n
\n
\n );\n}\n\nPetitionDocuments.propTypes = {\n type: PropTypes.string,\n petitionId: PropTypes.string,\n petitionGdriveLink: PropTypes.string,\n petitionerName: PropTypes.string,\n beneficiary: PropTypes.object,\n assigneeOptions: PropTypes.array,\n assigneeId: PropTypes.string\n};\n","/* eslint-disable react/boolean-prop-naming */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport SectionsMenu from \"../../SectionsMenu\";\n\nexport default function SideNav(props) {\n const {\n sections,\n formsSelected,\n setFormsSelected,\n lettersSelected,\n setLettersSelected,\n petitionGdriveLink\n } = props;\n\n return (\n \n );\n}\n\nSideNav.propTypes = {\n sections: PropTypes.array,\n formsSelected: PropTypes.bool,\n setFormsSelected: PropTypes.func,\n lettersSelected: PropTypes.bool,\n setLettersSelected: PropTypes.func\n};\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Loader from \"react-loader-spinner\";\nimport { useAlert } from \"react-alert\";\nimport { formHeaders } from \"../../../../utils/form\";\nimport { IndexRow } from \"../../../Shared/IndexRow/IndexRow\";\n\nexport default function TemplatesRow(props) {\n const { petitionId, template } = props;\n\n const [loading, setLoading] = useState(false);\n\n const popup = useAlert();\n\n const handleGenerate = async () => {\n setLoading(true);\n\n try {\n const params = {\n petition_id: petitionId,\n template_id: template.id\n };\n\n const url = Routes.webmerge_generate_url(params);\n\n const requestBody = {};\n\n const response = await fetch(url, {\n method: \"PUT\",\n headers: formHeaders(),\n body: JSON.stringify(requestBody)\n });\n\n if (response.ok) {\n const json = await response.json();\n\n window.location.reload();\n return false;\n }\n const errorMessage =\n \"Something went wrong when generating the document. Please check the Webmerge template for errors or contact support.\";\n popup.show(errorMessage, { type: \"error\" });\n } catch (error) {\n popup.show(error, { type: \"error\" });\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <>\n \n \n {template.name}\n \n\n
\n {loading && (\n \n )}\n {!loading && (\n handleGenerate()}\n style={{ width: \"12rem\" }}\n >\n Generate\n \n )}\n
\n
\n \n );\n}\n\nTemplatesRow.propTypes = {\n petitionId: PropTypes.string,\n template: PropTypes.object\n};\n","import React, { useState, useEffect, useReducer } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Loader from \"react-loader-spinner\";\nimport { formHeaders } from \"../../../../utils/form\";\nimport NotesTable from \"./NotesTable/NotesTable\";\nimport { fetchReducer } from \"../../../../reducers/fetchReducer\";\n\nexport default function NotesDropdown(props) {\n const { notable = {}, notableType = \"Petition\", errors, setErrors } = props;\n const [notes, setNotes] = useState([]);\n const [fetchState, dispatch] = useReducer(fetchReducer, {\n success: false,\n loading: false,\n response: null\n });\n\n useEffect(() => {\n const fetchNotes = async (type, notableId) => {\n dispatch({ type: \"FETCH_STARTED\" });\n try {\n const url = Routes.notes_url({\n notable_type: type,\n notable_id: notableId\n });\n\n const response = await fetch(url, {\n method: \"GET\",\n headers: formHeaders()\n });\n\n if (!response.ok) {\n const json = await response.json();\n dispatch({ type: \"FETCH_ERROR\", popupMessage: json.message });\n setErrors([...errors, { message: \"Notes could not be fetched\" }]);\n }\n\n if (response.ok) {\n const json = await response.json();\n dispatch({ type: \"FETCH_COMPLETE\", response: json });\n setNotes(json.notes);\n }\n } catch (error) {\n dispatch({ type: \"FETCH_ERROR\", popupMessage: error });\n setErrors([...errors, { message: \"Notes could not be fetched\" }]);\n }\n };\n fetchNotes(notableType, notable.id);\n }, [notable.id, notableType]);\n\n if (fetchState.loading)\n return ;\n\n if (!fetchState.loading)\n return (\n \n );\n}\n\nNotesDropdown.propTypes = {\n notable: PropTypes.object,\n notableType: PropTypes.string\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport styled from \"styled-components\";\nimport BlockerFlag from \"./BlockerFlag\";\n\n/* Subheader for petition blocker flags */\n\nconst BlockerRow = styled.div`\n margin: 0 0 -2rem -1.5rem;\n color: #818da4;\n font-size: 18px;\n display: flex;\n flex-wrap: wrap; \n align-items: center;\n justify-content: flex-start \n width: 100%;\n`;\n\nexport default function PetitionActions(props) {\n const { petitionId, blockers } = props;\n\n const renderBlocker = key => (\n \n );\n\n return (\n \n {Object.keys(blockers).map(key => renderBlocker(key))}\n \n );\n}\n\nPetitionActions.propTypes = {\n blockers: PropTypes.object\n};\n","import React, { useState, useEffect } from \"react\";\nimport styled from \"styled-components\";\nimport moment from \"moment\";\n\nconst StatusItem = styled.div`\n display: flex;\n justify-content: flex-start;\n align-items: center;\n &&& {\n a,\n p {\n margin: 1rem 0;\n }\n a {\n margin-left: 1rem;\n }\n }\n`;\n\nconst InputContainer = styled.div`\n display: grid;\n grid-template-columns: auto 20rem;\n grid-column-gap: 0.5rem;\n`;\n\nconst Input = styled.input`\n padding: 1rem;\n width: 18rem;\n border-radius: 4px;\n border: 1px solid #b9bfcb;\n`;\n\nexport default function FormItem(props) {\n const {\n type,\n name,\n placeholder,\n helperText,\n value,\n caseStatusAttribute,\n handleChange,\n handleSubmit\n } = props;\n const [formVisible, setFormVisible] = useState(!caseStatusAttribute);\n\n const handleBlur = async () => {\n await handleSubmit();\n if (formVisible && caseStatusAttribute) {\n setFormVisible(false);\n }\n };\n\n const handleKeyDown = e => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleBlur();\n }\n };\n\n const displayValue = v => {\n if (name !== \"caseNumber\" && v !== \"\") {\n return moment(v).format(\"MM/DD/YYYY\");\n }\n return v;\n };\n\n useEffect(() => {\n setFormVisible(!caseStatusAttribute);\n }, [caseStatusAttribute]);\n\n return formVisible ? (\n <>\n \n handleChange(e)}\n onBlur={() => handleBlur()}\n onKeyDown={e => handleKeyDown(e)}\n autoFocus\n data-testid={`${name}-input`}\n >\n

\n Press Enter to save\n

\n
\n

{helperText}

\n \n ) : (\n <>\n \n

{displayValue(value)}

\n setFormVisible(true)}\n onKeyDown={() => setFormVisible(true)}\n data-testid={`${name}-edit-button`}\n >\n Edit\n \n
\n \n );\n}\n","import React from \"react\";\nimport moment from \"moment\";\nimport PropTypes from \"prop-types\";\n\nexport default function UscisCaseAware(props) {\n const { caseAwareStatusState } = props;\n\n // Update the last updated time ago in words every 30 seconds for websockets setup\n // const [timeAgoInWords, setTimeAgoInWords] = useState(\n // moment(caseAwareStatusState.caseawareUpdatedAt).fromNow()\n // );\n\n // Be sure to replace the last updated variable below with `timeAgoInWords`\n\n // useEffect(() => {\n // const interval = setInterval(() => {\n // setTimeAgoInWords(\n // moment(caseAwareStatusState.caseawareUpdatedAt).fromNow()\n // );\n // }, 30000);\n // return () => clearInterval(interval);\n // }, []);\n\n const caseAwareEmoji = caseAwareStatus => {\n if (caseAwareStatus === null || caseAwareStatus === undefined) return;\n const statusArray = caseAwareStatus.toLowerCase().split(\" \");\n switch (true) {\n case statusArray.includes(\"transferred\"):\n return \"🤔\";\n case statusArray.includes(\"approved\"):\n return \"🥳\";\n case statusArray.includes(\"denied\"):\n return \"😔\";\n default:\n return null;\n }\n };\n\n return (\n <>\n
\n

USCIS CaseAware

\n {caseAwareStatusState.caseawareUpdatedAt && (\n \n Last update{\" \"}\n {moment(caseAwareStatusState.caseawareUpdatedAt).fromNow()}\n \n )}\n
\n
\n
\n {caseAwareStatusState.caseawareStatus}{\" \"}\n {caseAwareEmoji(caseAwareStatusState.caseawareStatus)}\n
\n

{caseAwareStatusState.caseawareDetails}

\n
\n \n );\n}\n\nUscisCaseAware.propTypes = {\n caseAwareStatusState: PropTypes.object\n};\n","import React, { useState, useEffect } from \"react\";\nimport Select from \"react-select\";\n\nexport default function UscisDecisionStatusSelect(props) {\n const {\n decisionStatusTypes,\n decisionStatusState,\n setFormState,\n handleSubmit\n } = props;\n\n const statusOptions = decisionStatusTypes.map((t, i) => ({\n value: i,\n label: t\n }));\n\n const defaultOption = statusOptions.find(\n option => option.label === decisionStatusState\n );\n\n const [selectedValue, setSelectedValue] = useState(defaultOption);\n\n const handleSelectChange = selectedOption => {\n setSelectedValue(selectedOption);\n setFormState(prevState => ({\n ...prevState,\n decisionStatus: selectedOption.label,\n dirty: true\n }));\n };\n\n // submit the form any time the decision status changes\n useEffect(() => {\n handleSubmit();\n }, [decisionStatusState]);\n\n return (\n
\n \n
\n );\n}\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { authenticityToken } from \"../../../utils/form\";\nimport UploadItem from \"../../ClientInformation/FormFields/UploadItem\";\n\nexport default function UscisDocumentUpload(props) {\n const { caseStatusId, uploadState, setUploadState, handleUpload } = props;\n\n return (\n <>\n {uploadState && (\n setUploadState()}\n attribute={{\n fileData: {\n entityId: caseStatusId,\n entityType: \"CaseStatus\"\n },\n name: \"decision_status_document\"\n }}\n />\n )}\n {!uploadState && (\n
\n \n \n \n \n \n handleUpload(e)}\n />\n \n Upload USCIS Status\n \n \n )}\n \n );\n}\n\nUscisDocumentUpload.propTypes = {\n caseStatusId: PropTypes.string,\n uploadState: PropTypes.object,\n setUploadState: PropTypes.func,\n handleUpload: PropTypes.func\n};\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport styled from \"styled-components\";\nimport moment from \"moment\";\nimport { useAlert } from \"react-alert\";\nimport Loader from \"react-loader-spinner\";\nimport CommonNav from \"../../Shared/CommonNav/CommonNav\";\nimport { green, white, grayDark } from \"../../../styles/colors\";\nimport { formHeaders } from \"../../../utils/form\";\nimport FormItem from \"./FormItem\";\nimport UscisDecisionStatusSelect from \"./UscisDecisionStatusSelect\";\nimport UscisDocumentUpload from \"./UscisDocumentUpload\";\nimport UscisCaseAware from \"./UscisCaseAware\";\n\n// let webSocketUrl = \"ws://localhost:3000/cable\";\n// Default websocketUrl to localhost, but use the one provided by the `action_cable_meta_tag` if present on page\n// This should support dynamic websocket urls for each environment\n// const actionCableElements = document.getElementsByName(\"action-cable-url\");\n// if (actionCableElements.length > 0) {\n// webSocketUrl = actionCableElements[0].getAttribute(\"content\");\n// }\n\n// const cable = new WebSocket(webSocketUrl);\n\nconst Container = styled.div`\n height: 100%;\n margin: 0rem 4rem 9rem 4rem;\n &&& {\n p {\n max-width: 80rem;\n font-size: 20px;\n }\n\n h5 {\n margin: 0 0 0 1rem;\n }\n }\n`;\n\nconst StatusContainer = styled.div`\n margin: 4rem 0;\n width: auto;\n display: grid;\n grid-template-columns: auto 16rem 20rem;\n grid-template-rows: auto auto;\n column-gap: 1rem;\n &&& {\n h4 {\n font-size: 18px;\n font-weight: 600;\n margin: 1rem 0rem 0rem 0rem;\n }\n p {\n margin: 1rem 1rem 1rem 0;\n font-size: 16px;\n font-weight: 500;\n\n &.helper {\n font-size: 14px;\n font-weight: 300;\n color: ${grayDark};\n }\n\n &.press-enter {\n font-size: 14px;\n font-weight: 400;\n }\n }\n }\n`;\n\nconst StatusIcon = styled.i`\n margin: 0;\n color: ${props => (props.satisfied ? green : white)};\n grid-column: 1;\n`;\n\nexport default function UscisStatus(props) {\n const {\n caseStatus = {},\n petitionId,\n beneficiaryName,\n decisionStatusTypes = [\"approved\", \"denied\", \"rfe\"],\n decisionStatusDocument\n } = props;\n\n const {\n shipmentDate = null,\n receiptDate = null,\n caseNumber = null,\n decisionDate = null,\n decisionStatus = null,\n caseawareStatus = null,\n caseawareDetails = null,\n caseawareUpdatedAt = null,\n caseawareErrors = null\n } = caseStatus;\n\n const [caseStatusState, setCaseStatusState] = useState({\n shipmentDate,\n receiptDate,\n caseNumber,\n decisionDate,\n decisionStatus,\n caseawareStatus,\n caseawareDetails,\n caseawareUpdatedAt,\n caseawareErrors\n });\n\n const [formState, setFormState] = useState({\n shipmentDate: shipmentDate ?? \"\",\n receiptDate: receiptDate ?? \"\",\n caseNumber: caseNumber ?? \"\",\n decisionDate: decisionDate ?? \"\",\n decisionStatus: decisionStatus ?? \"\",\n dirty: false\n });\n\n const [caseawareLoading, setCaseawareLoading] = useState(false);\n\n const [uploadState, setUploadState] = useState(decisionStatusDocument);\n\n const popup = useAlert();\n\n const formatDate = date => (date ? moment(date).format(\"YYYY-MM-DD\") : \"\");\n\n const handleChange = e => {\n setFormState({\n ...formState,\n [e.target.name]: e.target.value,\n dirty: true\n });\n };\n\n const caseURL = `https://egov.uscis.gov/casestatus/mycasestatus.do?appReceiptNum=${caseNumber}`;\n\n const handleSubmit = async isCaseNumberUpdate => {\n if (formState.dirty) {\n if (isCaseNumberUpdate) setCaseawareLoading(true);\n try {\n const url = `${Routes.petition_url(petitionId)}/case_status`;\n\n const params = {\n case_status: {\n shipment_date: formState.shipmentDate,\n receipt_date: formState.receiptDate,\n case_number: formState.caseNumber,\n decision_date: formState.decisionDate,\n decision_status: formState.decisionStatus\n }\n };\n\n const response = await fetch(url, {\n method: \"PUT\",\n body: JSON.stringify(params),\n headers: formHeaders()\n });\n\n if (!response.ok) {\n popup.show(\"someting went wrong\", { type: \"error\" });\n }\n\n if (response.ok) {\n const json = await response.json();\n setFormState({ ...formState, dirty: false });\n setCaseStatusState(json);\n if (json.caseawareErrors) {\n json.caseawareErrors.forEach(err =>\n popup.show(err, { type: \"error\" })\n );\n }\n if (json.caseawareErrors?.length === 0)\n popup.show(\n \"Case Aware has successfully updated this case's details from USCIS\",\n { type: \"success\" }\n );\n }\n setCaseawareLoading(false);\n } catch (error) {\n popup.show(error.message, { type: \"error\" });\n setCaseawareLoading(false);\n }\n }\n };\n\n const handleUpload = async e => {\n e.preventDefault();\n\n try {\n const url = Routes.entity_path(caseStatus.id);\n const data = new FormData(e.target.parentElement);\n const response = await fetch(url, {\n method: \"PUT\",\n body: data\n });\n\n if (!response.ok) {\n popup.show(\"Something went wrong.\", { type: \"error\" });\n }\n\n if (response.ok) {\n const json = await response.json();\n setUploadState(json.fileData.files[0]);\n }\n } catch (error) {\n popup.show(error, { type: \"error\" });\n }\n };\n\n const handleArchive = async () => {\n try {\n const url = Routes.archive_petition_path(petitionId);\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: formHeaders(),\n body: JSON.stringify({})\n });\n\n if (!response.ok) {\n popup.show(\"Something went wrong, contact Legalpad engineering.\", {\n type: \"error\"\n });\n }\n\n if (response.ok) {\n popup.show(\"Petition has been archived successfully!\", {\n type: \"success\"\n });\n }\n } catch (error) {\n popup.show(\"Something went wrong, contact Legalpad engineering.\", {\n type: \"error\"\n });\n }\n };\n\n // cable.onopen = () =>\n // cable.send(\n // JSON.stringify({\n // command: \"subscribe\",\n // identifier: JSON.stringify({\n // channel: \"CaseStatusChannel\",\n // case_status: `${caseStatus.id}`\n // })\n // })\n // );\n\n // eslint-disable-next-line no-console\n // cable.onclose = () => console.log(\"Web socket closed\");\n\n // useEffect(() => {\n // cable.onmessage = e => {\n // // Listen to the data sent from the web socket cable\n // const parsedMessage = JSON.parse(e.data);\n // const { message } = parsedMessage;\n // if (message && message.type === \"case_status_job_completed\") {\n // const { data } = message;\n // setCaseAwareStatusState(data);\n\n // if (message.dataChanged) {\n // popup.show.show(\n // \"CaseAwareâ„¢ has successfully collected case details from USCIS. See below\",\n // { type: \"success\" }\n // );\n // }\n\n // if (message.errors) {\n // message.errors.forEach(err => popup.show.show(err, { type: \"error\" }));\n // }\n // }\n // };\n // // Close the socket when component dismounts\n // return () => cable.close();\n // }, []);\n\n return (\n <>\n \n\n \n
\n
\n

USCIS Status

\n

\n Track and update USCIS Decisions for {beneficiaryName}{\" \"}\n

\n
\n\n \n \n

Shipped to USCIS

\n
\n handleSubmit()}\n />\n
\n
\n \n \n
\n

Received by USCIS

\n
\n
\n handleSubmit()}\n />\n
\n
\n handleSubmit(true)}\n />\n {caseStatusState.caseNumber && (\n \n View USCIS Case Status\n \n \n )}\n
\n
\n \n \n

USCIS Decision

\n
\n handleSubmit()}\n />\n
\n {caseStatusState.decisionDate && (\n
\n handleSubmit()}\n />\n \n
\n )}\n
\n \n \n {caseawareLoading ? (\n
\n

USCIS CaseAware

\n
\n \n
\n ) : (\n \n )}\n
\n\n {caseStatus.shipmentDate &&\n caseStatusState.receiptDate &&\n caseStatusState.decisionDate &&\n uploadState && (\n \n \n
\n

Boom! Thank you for filling this out.

\n \n handleArchive()}\n onClick={() => handleArchive()}\n >\n Archive this petition\n {\" \"}\n if you are done working on it for now. You will still be\n able to access this petition in the future\n

\n
\n
\n )}\n
\n
\n \n );\n}\n\nUscisStatus.propTypes = {\n caseStatus: PropTypes.object,\n petitionId: PropTypes.string,\n beneficiaryName: PropTypes.string,\n decisionStatusTypes: PropTypes.array\n};\n","import React from \"react\";\nimport { Provider as AlertProvider } from \"react-alert\";\nimport AlertTemplate from \"../../Shared/AlertTemplate\";\nimport UscisStatus from \"./UscisStatus\";\n\nconst options = {\n // you can also just use 'bottom center'\n timeout: 5000,\n offset: \"30px\"\n // you can also just use 'scale'\n};\n\nexport default function UscisStatusWrapper(props) {\n return (\n \n \n \n );\n}\n","/* eslint-disable react/destructuring-assignment */\nimport React from \"react\";\nimport { authenticityToken } from \"../../utils/form\";\n\nexport default class Form extends React.Component {\n /* A generic form wrapper that takes care of charset, auth tokens, etc\n\n Props:\n {\n method: GET, POST, etc\n onSubmit: Callback to be executed on form submit\n children: Elements to be inserted in the Form\n }\n */\n\n render() {\n return (\n
\n \n \n \n {this.props.children}\n \n );\n }\n}\n","import { render, fireEvent, waitFor } from \"@testing-library/react\";\nimport { Provider as AlertProvider } from \"react-alert\";\nimport EmployeeIndexPage from \"./EmployeeIndexPage\";\nimport AlertTemplate from \"../Shared/AlertTemplate\";\nimport { mockUser } from \"../../testHelpers/userMocks\";\n\ndescribe(\"The EmployeeIndexPage component\", () => {\n beforeEach(() => {\n fetch.mockResponses(\n [JSON.stringify(mockUser)],\n [\n JSON.stringify({\n employees: [\n {\n id: \"123\",\n fullName: \"Homer Simpson\",\n email: \"homer@legalpad.io\",\n createdAt: \"2020-10-30T09:08:21.107-08:00\",\n confirmed: true\n },\n {\n id: \"456\",\n fullName: \"Barney Gumble\",\n email: \"barney@legalpad.io\",\n createdAt: \"2020-10-30T09:08:25.107-07:00\",\n confirmed: true\n },\n {\n id: \"789\",\n fullName: \"Professor McGonnagal\",\n email: \"hogwarts4@legalpad.io\",\n createdAt: \"2020-10-30T09:08:20.107-15:00\",\n confirmed: true\n }\n ]\n })\n ]\n );\n });\n\n it(\"renders without crashing\", () => {\n const { container } = render(\n \n \n \n );\n expect(container);\n });\n\n it(\"renders employees and can search for an employee without crashing\", async () => {\n const { getByTestId, getByText, queryByText } = render(\n \n \n \n );\n await waitFor(() => expect(getByText(\"Barney Gumble\")));\n expect(queryByText(\"Homer Simpson\")).toBeInTheDocument();\n expect(queryByText(\"Professor McGonnagal\")).toBeInTheDocument();\n const searchbar = getByTestId(\"employee-index-searchbar\");\n fireEvent.change(searchbar, { target: { value: \"remuner\" } });\n expect(getByTestId(\"employee-index-searchbar\"));\n\n fireEvent.change(searchbar, { target: { value: \"Barn\" } });\n await waitFor(() => {\n expect(getByText(\"Barney Gumble\"));\n expect(queryByText(\"Homer Simpson\")).not.toBeInTheDocument();\n expect(queryByText(\"Professor McGonnagal\")).not.toBeInTheDocument();\n });\n });\n});\n","import React from \"react\";\nimport { Provider as AlertProvider, positions } from \"react-alert\";\nimport AlertTemplate from \"../Shared/AlertTemplate\";\nimport EmployeeIndexPage from \"./EmployeeIndexPage\";\nimport { AuthContextProvider } from \"../Shared/ContextProviders/AuthProvider\";\n\nconst options = {\n position: positions.TOP_RIGHT,\n timeout: 3500,\n offset: \"30px\"\n // you can also just use 'scale'\n};\n\nexport default function EmployeeIndexPageWrapper(props) {\n return (\n \n \n \n \n \n );\n}\n","/* eslint-disable react/no-access-state-in-setstate */\n/* eslint-disable react/destructuring-assignment */\nimport React from \"react\";\n\nexport default class ArrayField extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n array: props.array\n };\n }\n\n handleChangeElement(value, index) {\n const array = this.state.array.slice();\n array[index] = value;\n this.setState({ array });\n }\n\n handleRemove(index) {\n const array = this.state.array.slice();\n array.splice(index, 1);\n this.setState({ array });\n }\n\n handleUp(index) {\n if (index === 0) {\n return;\n }\n\n const oldArray = this.state.array;\n const array = oldArray.slice();\n array[index] = oldArray[index - 1];\n array[index - 1] = oldArray[index];\n this.setState({ array });\n }\n\n handleDown(index) {\n const oldArray = this.state.array;\n if (index === oldArray.length - 1) {\n return;\n }\n\n const array = oldArray.slice();\n array[index] = oldArray[index + 1];\n array[index + 1] = oldArray[index];\n this.setState({ array });\n }\n\n handleAdd() {\n const array = this.state.array.slice();\n array.push(\"\");\n this.setState({ array });\n }\n\n render() {\n const { array } = this.state;\n const { name } = this.props;\n\n const fields = array.map((arrayItem, index) => (\n
  • \n this.handleChangeElement(ev.target.value, index)}\n />\n this.handleUp(index)}\n >\n ▲\n \n this.handleDown(index)}\n >\n ▼\n \n this.handleRemove(index)}\n >\n ✘\n \n
  • \n ));\n\n return (\n
    \n
    \n
      {fields}
    \n
    \n
    \n this.handleAdd()}\n >\n ➕\n \n
    \n
    \n );\n }\n}\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React from \"react\";\n\nimport AutocompleteField from \"../Autocomplete/AutocompleteField\";\nimport FileField from \"./FileField\";\n\nexport default class AttachmentField extends React.Component {\n constructor(props) {\n super();\n const { document } = props;\n this.state = {\n selectedTab: document ? \"select\" : \"remove\"\n };\n }\n\n handleTabClick(key) {\n this.setState({ selectedTab: key });\n }\n\n renderTab(key, title) {\n const { selectedTab } = this.state;\n const selected = key === selectedTab;\n const className = `tab ${selected ? \"selected\" : \"unselected\"}`;\n return (\n this.handleTabClick(key)}\n >\n {title}\n \n );\n }\n\n render() {\n const {\n document,\n name,\n allowCreate,\n allowSelect,\n allowUpload,\n allowNone\n } = this.props;\n const { selectedTab } = this.state;\n\n const tabs = [\n allowCreate &&\n this.renderTab(\n \"create\",\n
    \n Create\n
    \n ),\n allowSelect &&\n this.renderTab(\n \"select\",\n
    \n Select\n
    \n ),\n allowUpload &&\n this.renderTab(\n \"upload\",\n
    \n Upload\n
    \n ),\n allowNone &&\n this.renderTab(\n \"remove\",\n
    \n None\n
    \n )\n ];\n\n let content;\n const contentStyle = {};\n switch (selectedTab) {\n case \"create\":\n content = (\n \n );\n break;\n\n case \"select\":\n content = (\n \n );\n break;\n\n case \"upload\":\n content = ;\n break;\n\n case \"remove\":\n content = (\n \n );\n contentStyle.display = \"none\";\n break;\n\n default:\n // no default case\n }\n\n return (\n
    \n
    {tabs}
    \n
    \n {content}\n
    \n
    \n );\n }\n}\n","import React from \"react\";\nimport MaskedInput from \"react-text-mask\";\n\nconst mask = [/\\d/, /\\d/, \"-\", /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/];\n\nexport default class FeinField extends React.Component {\n render() {\n const { name, label, value, placeholder } = this.props;\n return (\n \n \n {label && }\n \n );\n }\n}\n","/* eslint-disable react/destructuring-assignment */\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport AutocompleteField from \"../Autocomplete/AutocompleteField\";\nimport NumberField from \"./NumberField\";\n\nexport default class HighRemunerationCompensationFields extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n compensationUnit: this.props.compensationUnit,\n currencyIndicatorText: this.props.autocomplete.value\n };\n }\n\n _handleSelectChange(e) {\n this.setState({ compensationUnit: e.target.value });\n }\n\n _handleCurrencyChange(value) {\n this.setState({ currencyIndicatorText: value });\n }\n\n render() {\n return (\n \n
    \n

    What was your salary at that company?

    \n
    \n \n \n
    \n
    \n this._handleCurrencyChange(e)}\n />\n
    \n per\n
    \n this._handleSelectChange(e)}\n >\n \n \n \n
    \n
    \n\n
    \n

    What was your bonus at that company?

    \n
    \n \n \n
    \n \n in {this.state.currencyIndicatorText}\n \n
    \n\n
    \n

    \n What was the approximate value of your equity at that company?\n

    \n
    Only enter a value here if you are using equity to meet this criterion.
    \n
    \n \n \n
    \n \n in {this.state.currencyIndicatorText}\n \n
    \n
    \n );\n }\n}\n\nHighRemunerationCompensationFields.propTypes = {\n name: PropTypes.string,\n autocomplete: PropTypes.object,\n compensationSalary: PropTypes.number,\n compensationUnit: PropTypes.string,\n compensationBonus: PropTypes.number,\n compensationEquityValue: PropTypes.number\n};\n","/* eslint-disable react/destructuring-assignment */\nimport React from \"react\";\nimport AutocompleteField from \"../Autocomplete/AutocompleteField\";\nimport Select from \"../Shared/Select\";\n\nexport default class IntakeFormFields extends React.Component {\n /*\n Form to create new intakes\n\n Props:\n {\n intakeTypes* All intake types for the select box\n organizationAutocomplete* Organization autocomplete props. See child for definitions\n personAutocomplete* Peron autocomplete props. See child for definitions\n petitionAutocomplete* Petition autocomplete props. See child for definitions\n }\n */\n\n constructor(props) {\n super(props);\n this.state = {\n showPetitionField: props.intakeTypes[0] !== \"CompanyIntake\",\n personLabel: \"Representative\",\n petitionItems: props.petitionAutocomplete.items,\n intakeType: props.intakeTypes[0]\n };\n }\n\n _handleIntakeTypeChange(e) {\n const type = e.target.value;\n this._toggleInputDisplays(type);\n this._toggleLabels(type);\n this._filterPetitions(type);\n this.setState({ intakeType: type });\n }\n\n _toggleInputDisplays(type) {\n this.setState({\n showPetitionField:\n type !== \"CompanyIntake\" && type !== \"ExceptionalAbilityCompanyIntake\"\n });\n }\n\n _toggleLabels(type) {\n if (\n [\n \"ExceptionalAbilityCompanyIntake\",\n \"CompanyIntake\",\n \"JobIntake\"\n ].includes(type)\n ) {\n this.setState({ personLabel: \"Representative\" });\n } else {\n this.setState({ personLabel: \"Applicant\" });\n }\n }\n\n _filterPetitions(type) {\n if (type === \"ExceptionalAbilityIntake\") {\n const filteredItems = this.props.petitionAutocomplete.items.filter(item =>\n item.value.startsWith(\"O-1\")\n );\n this.setState({ petitionItems: filteredItems });\n } else {\n this.setState({ petitionItems: this.props.petitionAutocomplete.items });\n }\n }\n\n _renderPetitionField() {\n return (\n
    \n \n \n
    \n );\n }\n\n render() {\n return (\n \n

    Create a new Intake:

    \n\n
    \n this._handleIntakeTypeChange(e)}\n />\n
    \n\n
    \n \n \n
    \n\n
    \n \n \n
    \n\n {this.state.showPetitionField ? this._renderPetitionField() : null}\n
    \n );\n }\n}\n","import React from \"react\";\nimport MaskedInput from \"react-text-mask\";\n\nconst mask = [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/];\n\nexport default class NaicsField extends React.Component {\n render() {\n const { name, value, label, placeholder } = this.props;\n return (\n \n \n {label && }\n \n );\n }\n}\n","/* eslint-disable react/destructuring-assignment */\nimport React from \"react\";\n\nexport default class ParentFields extends React.Component {\n render() {\n return (\n
    \n \n \n \n \n
    \n );\n }\n}\n","/* eslint-disable react/destructuring-assignment */\nimport React from \"react\";\n\n// Wraps a component and supplies an onChange(value) callback prop. Changed\n// values are stored as JSON in the input field specified by inputId.\nexport default class ReactField extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n value: JSON.parse(this.inputElement().value)\n };\n }\n\n inputElement() {\n return document.getElementById(this.props.inputId);\n }\n\n handleChange(value) {\n this.inputElement().value = JSON.stringify(value);\n this.setState({ value });\n }\n\n render() {\n const { componentName, componentProps, valueProp } = this.props;\n const { value } = this.state;\n // eslint-disable-next-line no-undef\n const ctor = ReactRailsUJS.getConstructor(componentName);\n return React.createElement(ctor, {\n ...componentProps,\n [valueProp]: value,\n onChange: v => this.handleChange(v)\n });\n }\n}\n","import React from \"react\";\nimport MaskedInput from \"react-text-mask\";\n\nconst mask = [\n \"+\",\n \"1\",\n \"-\",\n /\\d/,\n /\\d/,\n /\\d/,\n \"-\",\n /\\d/,\n /\\d/,\n /\\d/,\n \"-\",\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/\n];\n\nexport default class UsaPhoneNumberField extends React.Component {\n _handleValueChange(e) {\n this.hiddenField.value = this._cleanValue(e.target.value);\n }\n\n // eslint-disable-next-line class-methods-use-this\n _cleanValue(value) {\n if (value) {\n return value.replace(/_/g, \"\");\n }\n return \"\";\n }\n\n render() {\n const { name, value, label, placeholder } = this.props;\n return (\n \n (this.hiddenField = el)}\n defaultValue={value}\n />\n this._handleValueChange(e)}\n />\n {label && }\n \n );\n }\n}\n","import React from \"react\";\nimport MaskedInput from \"react-text-mask\";\n\nconst mask = [/\\d/, /\\d/, /\\d/, /\\d/];\n\nexport default class YearField extends React.Component {\n render() {\n const { name, value, label, placeholder } = this.props;\n return (\n \n \n {label && }\n \n );\n }\n}\n","import React from \"react\";\nimport MaskedInput from \"react-text-mask\";\n\nconst mask = [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/];\n\nexport default class ZipField extends React.Component {\n render() {\n const { name, value, label, placeholder } = this.props;\n return (\n \n \n {label && }\n \n );\n }\n}\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport styled from \"styled-components\";\n// eslint-disable-next-line import/no-unresolved\nimport IntakeUploadArt from \"images/intakes/company_intake/document_upload.png\";\nimport Dropzone from \"react-dropzone-uploader\";\nimport { ImCancelCircle } from \"react-icons/im\";\nimport Loader from \"react-loader-spinner\";\nimport { useAlert, Provider as AlertProvider, positions } from \"react-alert\";\nimport { authenticityToken } from \"../../utils/form\";\nimport { grayDarker, red } from \"../../styles/colors\";\nimport AlertTemplate from \"../Shared/AlertTemplate\";\nimport { Button } from \"../Shared/Button/Button\";\nimport request from \"../../services/request\";\n\nconst alertOptions = {\n position: positions.TOP_RIGHT,\n timeout: 3500,\n offset: \"30px\"\n};\n\nconst Container = styled.div`\n display: grid;\n grid-template-columns: repeat(2, auto);\n grid-gap: 3rem;\n text-align: center;\n height: 100%;\n padding: 3rem 5rem;\n\n @media (max-width: 1080px) {\n grid-template-columns: 1fr;\n }\n`;\n\nconst PreviewContainer = styled.div`\n padding: 1rem 1.5rem;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n position: relative;\n width: 100%;\n min-height: 60px;\n z-index: 1;\n border-bottom: 1px solid #ececec;\n box-sizing: border-box;\n\n svg {\n :hover {\n cursor: pointer;\n color: ${red};\n }\n }\n\n img {\n border-radius: 4px;\n }\n\n .filename {\n width: 12rem;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n margin: 0;\n }\n`;\n\nfunction FilePreview(props) {\n const { meta, fileWithMeta } = props;\n const { name, percent, status, previewUrl } = meta;\n return (\n \n
    \n \"upload-preview\"\n
    \n

    {name}

    \n \n fileWithMeta.remove()} />\n
    \n );\n}\n\nfunction SubmitButton(props) {\n const { onSubmit, disabled } = props;\n const [loading, setLoading] = useState(false);\n\n const handleSubmit = () => {\n setLoading(true);\n onSubmit();\n };\n\n if (loading)\n return (\n \n );\n\n return (\n handleSubmit()}\n >\n Submit\n \n );\n}\n\nfunction InputContent({ files, extra, isMultiple }) {\n return extra.reject ? (\n \"Image and PDF files only\"\n ) : (\n
    \n

    Drag {isMultiple ? \"Files\" : \"File\"} or Click to Browse

    \n

    Accepted File Types: JPG, PNG, PDF

    \n

    Max File Size: 25MB

    \n
    \n );\n}\n\nfunction FileUploader({ url, isMultiple, currentRecord }) {\n const popup = useAlert();\n\n // specify upload params and url for your files\n\n const getUploadParams = ({ file, meta }) => {\n const body = new FormData();\n body.append(\"file\", file);\n body.append(\"currentRecord\", currentRecord);\n return { url, headers: { \"X-CSRF-Token\": authenticityToken() }, body };\n };\n\n // called every time a file's `status` changes\n const handleChangeStatus = (fileWithMeta, status) => {\n const { xhr } = fileWithMeta;\n if (status === \"done\") {\n const response = JSON.parse(xhr.response);\n fileWithMeta.itemId = response.id;\n }\n\n if (status === \"error_file_size\") {\n popup.show(\"File exceeds 25mb limit\", { type: \"error\" });\n fileWithMeta.remove();\n }\n\n if (status === \"removed\") {\n if (fileWithMeta.itemId) {\n request(`${url}/${fileWithMeta.itemId}`, { method: \"DELETE\" });\n }\n }\n };\n\n // receives array of files that are done uploading when submit button is clicked\n const handleSubmit = (_, allFiles) => {\n let metadataUrl = `${url}/metadata?`;\n allFiles.forEach(file => {\n metadataUrl += `upload_item_ids[]=${file.itemId}&`;\n });\n window.location = metadataUrl;\n };\n\n return (\n (\n \n )}\n submitButtonDisabled={files =>\n files.some(f =>\n [\"preparing\", \"getting_upload_params\", \"uploading\"].includes(\n f.meta.status\n )\n )\n }\n styles={{\n dropzone: {\n minHeight: 400,\n minWidth: 600\n },\n dropzoneReject: { borderColor: red, backgroundColor: \"#DAA\" },\n inputLabel: (files, extra) => (extra.reject ? { color: red } : {})\n }}\n />\n );\n}\n\nexport default function IntakeItemUpload({\n label,\n url,\n isMultiple,\n currentRecord,\n subHeader\n}) {\n return (\n \n \n
    \n \n
    \n\n
    \n
    \n

    \n Upload {label} here\n

    \n { subHeader &&

    {subHeader}

    }\n \n
    \n
    \n
    \n
    \n );\n}\n","import { render, within, fireEvent, waitFor } from \"@testing-library/react\";\nimport PetitionIndexPage from \"./PetitionIndexPage\";\nimport { mockPetitions } from \"../../testHelpers/petitionIndexMocks\";\nimport { mockUser } from \"../../testHelpers/userMocks\";\n\ndescribe(\"The PetitionIndexPage component\", () => {\n // fetch user for common nav\n beforeEach(() => {\n fetch.once(JSON.stringify(mockUser));\n });\n\n afterEach(() => fetch.resetMocks());\n\n it(\"renders without crashing\", async () => {\n const { container } = render();\n await waitFor(() => expect(container));\n });\n\n it(\"displays a list of petitions separated by assignee status\", async () => {\n const { getByTestId } = render(\n \n );\n\n await waitFor(() => {\n within(getByTestId(\"Assigned Petitions\")).getByText(\"Ned Flanders\");\n within(getByTestId(\"Assigned Petitions\")).getByText(\"Marge Simpson\");\n within(getByTestId(\"Assigned Petitions\")).getByText(\"Montgomery Burns\");\n\n within(getByTestId(\"Unassigned Petitions\")).getByText(\"Barney Gumble\");\n within(getByTestId(\"Unassigned Petitions\")).getByText(\"Homer Simpson\");\n expect(getByTestId(\"Unassigned Petitions\")).not.toHaveTextContent(\n \"Seymour Skinner\"\n );\n\n expect(getByTestId(\"Pending Payment\")).not.toHaveTextContent(\n \"Seymour Skinner\"\n );\n\n within(getByTestId(\"Archived Petitions\")).getByText(\"Seymour Skinner\");\n });\n });\n\n it(\"sorts the petitions within a section by 'last updated' by default\", async () => {\n const { getByTestId } = render(\n \n );\n\n const assignedPetitionRows = within(\n getByTestId(\"Assigned Petitions\")\n ).getAllByTestId(\"petition-row\");\n\n await waitFor(() =>\n within(assignedPetitionRows[0]).getByText(\"Bart Simpson\")\n );\n\n const unassignedPetitionRows = within(\n getByTestId(\"Unassigned Petitions\")\n ).getAllByTestId(\"petition-row\");\n\n await waitFor(() =>\n within(unassignedPetitionRows[0]).getByText(\"Homer Simpson\")\n );\n\n const archivedPetitionRows = within(\n getByTestId(\"Archived Petitions\")\n ).getAllByTestId(\"petition-row\");\n await waitFor(() =>\n within(archivedPetitionRows[0]).getByText(\"Seymour Skinner\")\n );\n });\n\n it(`sorts the petitions chronologically in ascending order when clicking on \n date created and in descending order on a second click`, async () => {\n const { getByTestId, getAllByTestId } = render(\n \n );\n\n fireEvent.click(getAllByTestId(\"date created\")[0]);\n\n const assignedPetitionRows = within(\n getByTestId(\"Assigned Petitions\")\n ).getAllByTestId(\"petition-row\");\n\n await waitFor(() =>\n within(assignedPetitionRows[0]).getByText(\"Marge Simpson\")\n );\n\n fireEvent.click(getAllByTestId(\"date created\")[0]);\n\n const newAssignedPetitionRows = within(\n getByTestId(\"Assigned Petitions\")\n ).getAllByTestId(\"petition-row\");\n await waitFor(() =>\n within(newAssignedPetitionRows[0]).getByText(\"Apu Nahasapeemapetilon\")\n );\n });\n\n it(\"sorts the petitions alphabetically by beneficiary name when clicking on 'petition'\", async () => {\n const { getByTestId, getAllByTestId } = render(\n \n );\n\n fireEvent.click(getAllByTestId(\"petition\")[0]);\n const assignedPetitionRows = within(\n getByTestId(\"Assigned Petitions\")\n ).getAllByTestId(\"petition-row\");\n await waitFor(() =>\n within(assignedPetitionRows[0]).getByText(\"Apu Nahasapeemapetilon\")\n );\n\n fireEvent.click(getAllByTestId(\"petition\")[0]);\n const newAssignedPetitionRows = within(\n getByTestId(\"Assigned Petitions\")\n ).getAllByTestId(\"petition-row\");\n await waitFor(() =>\n within(newAssignedPetitionRows[0]).getByText(\"Ned Flanders\")\n );\n });\n\n it(\"sorts by visa type when clicking 'visa type'\", async () => {\n const { getByTestId, getAllByTestId } = render(\n \n );\n\n fireEvent.click(getAllByTestId(\"visa type\")[0]);\n const assignedPetitionRows = within(\n getByTestId(\"Assigned Petitions\")\n ).getAllByTestId(\"petition-row\");\n await waitFor(() => within(assignedPetitionRows[0]).getByText(\"EB-2\"));\n });\n\n it(\"displays the appropriate search results when typing in the search bar\", async () => {\n const { getByTestId, getAllByTestId } = render(\n \n );\n\n fireEvent.change(getByTestId(\"petition-index-searchbar\"), {\n target: { value: \"Barney Gumble\" }\n });\n\n await waitFor(() =>\n within(getAllByTestId(\"petition-row\")[0]).getByText(\"Barney Gumble\")\n );\n });\n});\n","import { render } from \"@testing-library/react\";\nimport { Provider as AlertProvider } from \"react-alert\";\nimport PetitionRow from \"./PetitionRow\";\nimport { mockPetitions } from \"../../../testHelpers/petitionIndexMocks\";\nimport AlertTemplate from \"../../Shared/AlertTemplate\";\n\ndescribe(\"The PetitionRow component\", () => {\n it(\"renders without crashing\", () => {\n const { container } = render(\n \n \n \n );\n expect(container);\n });\n\n it(\"displays the petitioner display name if legal name is null\", () => {\n const { getByText } = render(\n \n \n \n );\n expect(getByText(\"Duff Beer Company\"));\n });\n\n it(\"displays the petitioner display name if legal name is an empty string\", () => {\n const { getByText } = render(\n \n \n \n );\n expect(getByText(\"Moe's Tavern\"));\n });\n});\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport CommonNav from \"../Shared/CommonNav/CommonNav\";\nimport NotesConsole from \"../NotesConsole/NotesConsole\";\nimport PetitionCard from \"./PetitionCard\";\nimport BlockerFlag from \"../PetitionPage/PetitionOverview/PetitionActions/BlockerFlag\";\n\nconst InfoRow = styled.div`\n &&& {\n margin: 0.8rem 0.8rem 0.8rem 0.8rem;\n }\n`;\n\nconst ContactCard = styled.div`\n &&& {\n max-width: 420px;\n padding: 0;\n }\n`;\n\nconst BlockerRow = styled.div`\n margin: 0 0 -2rem -1.5rem;\n color: #818da4;\n font-size: 18px;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-start;\n width: 100%;\n`;\n\nexport default function PetitionInformation(props) {\n debugger;\n const {\n beneficiaryId = null,\n beneficiaryName = \"Betty Beneficiary\",\n id = null,\n petitionInfo = [],\n beneficiaryInfo = [],\n signatoryInfo = [],\n assigneeInfo = [],\n attorneyInfo = [],\n representativeInfo = [],\n organizationInfo = [],\n jobInfo = [],\n ocInfo = [],\n awardsInfo = [],\n firmsInfo = [],\n fundingDocumentsInfo = [],\n accelerationsInfo = [],\n associationsInfo = [],\n criticalEmploymentsInfo = [],\n highRemunerationInfo = [],\n patentsInfo = [],\n pressInfo = [],\n articlesInfo = [],\n judingEventsInfo = [],\n advisoryInfo = [],\n info = {}\n } = props;\n\n return (\n <>\n \n
    \n \n 0}\n />\n 0}\n />\n 0}\n />\n 0}\n />\n 0}\n />\n 0}\n />\n 0}\n />\n 0}\n />\n 0}\n />\n 0}\n />\n 0}\n />\n 0}\n />\n 0}\n />\n 0}\n />\n 0}\n />\n 0}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n \n );\n}\n","import { render, fireEvent, waitFor } from \"@testing-library/react\";\nimport { Provider as AlertProvider } from \"react-alert\";\nimport ContactCard from \"./ContactCard\";\nimport AlertTemplate from \"../Shared/AlertTemplate\";\n\ndescribe(\"The ContactCard component\", () => {\n window.alert = alert => {\n // eslint-disable-next-line no-console\n console.error(alert);\n };\n it(\"renders without crashing\", () => {\n const { container } = render(\n \n \n \n );\n expect(container);\n expect(fetch.mock.calls.length).toEqual(0);\n });\n\n it(\"does not render the edit button for contacts besides attorneys\", () => {\n const { queryByText } = render(\n \n \n \n );\n expect(queryByText(\"Change\")).not.toBeInTheDocument();\n });\n\n it(\"renders the edit button for attorney contacts\", () => {\n const { getByText } = render(\n \n \n \n );\n expect(getByText(\"Change\"));\n });\n\n it(\"displays the dropdown selector on edit click\", () => {\n const { getByText, getByTestId } = render(\n \n \n \n );\n fireEvent.click(getByText(\"Change\"));\n expect(getByTestId(\"attorney-select\"));\n });\n\n it(\"allows the user to update the attorney\", async () => {\n fetch.once(\n JSON.stringify({\n role: \"Attorney\",\n name: \"Bart Simpson\",\n id: \"123\",\n email: \"bart@example.com\",\n phone: \"11235813\"\n })\n );\n const { getByText, getByTestId } = render(\n \n \n \n );\n fireEvent.click(getByText(\"Change\"));\n const attorneySelectInput = getByTestId(\"attorney-select\").querySelector(\n \"input\"\n );\n fireEvent.focus(attorneySelectInput);\n fireEvent.keyDown(attorneySelectInput, {\n key: \"ArrowDown\",\n code: 40\n });\n fireEvent.keyDown(attorneySelectInput, {\n key: \"Enter\",\n code: 13\n });\n await waitFor(() => {\n getByText(\"Bart Simpson\");\n getByText(\"bart@example.com\");\n getByText(\"11235813\");\n });\n });\n});\n","import React, { useState, useReducer } from \"react\";\nimport PropTypes from \"prop-types\";\nimport DocumentDetailBar from \"./DocumentDetailBar\";\nimport AttributeRow from \"../../ClientInformation/FormFields/AttributeRow\";\nimport PopupMessage from \"../../PopupMessage/PopupMessage\";\nimport { dataFromAttributeRows } from \"../../../utils/data_presenter\";\nimport { generateDocumentReducer } from \"../../../reducers/generateDocumentReducer\";\nimport { formHeaders } from \"../../../utils/form\";\n\nexport default function DocumentDetail(props) {\n const { petitionId, name, templateId, attributes } = props;\n\n const [genState, dispatch] = useReducer(generateDocumentReducer, {\n generated: false,\n loading: false,\n response: null,\n popupMessage: null,\n popupType: null\n });\n\n const [alertVisible, setAlertVisible] = useState(false);\n\n const handleGenerate = async () => {\n dispatch({ type: \"GENERATE_STARTED\" });\n\n try {\n const templateData = dataFromAttributeRows(\n Array.from(document.getElementsByClassName(\"attribute\"))\n );\n const params = {\n petition_id: petitionId,\n template_id: templateId\n };\n\n const url = Routes.webmerge_generate_url(params);\n\n const requestBody = {\n template_data: templateData\n };\n\n const response = await fetch(url, {\n method: \"PUT\",\n headers: formHeaders(),\n body: JSON.stringify(requestBody)\n });\n\n if (!response.ok) {\n dispatch({ type: \"GENERATE_ERROR\", popupMessage: response });\n setAlertVisible(true);\n }\n\n if (response.ok) {\n const json = await response.json();\n dispatch({ type: \"GENERATE_COMPLETE\", response: json });\n setAlertVisible(true);\n window.location = `${Routes.petition_templates_url(\n petitionId\n )}#generateddocuments`;\n }\n } catch (error) {\n dispatch({ type: \"GENERATE_ERROR\", popupMessage: error });\n setAlertVisible(true);\n }\n\n setTimeout(() => {\n setAlertVisible(false);\n }, 4000);\n };\n\n const renderAttribute = (attribute, index) => (\n \n );\n\n return (\n \n \n {alertVisible && (\n \n )}\n
    \n
    \n
    \n

    {name}

    \n
    \n
    \n
    \n {attributes.map((attribute, index) =>\n renderAttribute(attribute, index)\n )}\n
    \n
    \n
    \n );\n}\n\nDocumentDetail.propTypes = {\n petitionId: PropTypes.string,\n name: PropTypes.string,\n templateId: PropTypes.string,\n attributes: PropTypes.array\n};\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport styled from \"styled-components\";\nimport CommonNav from \"../../Shared/CommonNav/CommonNav\";\nimport EvidenceRequestForm from \"./EvidenceRequestForm/EvidenceRequestForm\";\nimport EvidenceStatusPage from \"./EvidenceStatusPage/EvidenceStatusPage\";\nimport PopupMessage from \"../../PopupMessage/PopupMessage\";\n\nconst Container = styled.div`\n margin: 3rem 4rem 9rem 4rem;\n &&& {\n p {\n max-width: 80rem;\n font-size: 20px;\n margin-top: 1rem;\n }\n }\n`;\n\nexport default function EvidenceRequestTool(props) {\n const {\n petitionId = null,\n beneficiaryName = \"Unknown Beneficiary\",\n evidenceOptions = [],\n evidenceRequest = {}\n } = props;\n\n const [errors, setErrors] = useState([]);\n const [requestStatus, setRequestStatus] = useState(\"IDLE\");\n const [existingEvidenceRequest, setExistingEvidenceRequest] = useState(\n evidenceRequest\n );\n\n setRequestStatus.types = {\n idle: \"IDLE\",\n pending: \"PENDING\",\n failure: \"FAILURE\",\n submitted: \"SUBMITTED\"\n };\n\n const renderEvidenceRequestTool = () => {\n if (\n (requestStatus === setRequestStatus.types.idle ||\n requestStatus === setRequestStatus.types.failure) &&\n !existingEvidenceRequest\n ) {\n return (\n \n );\n }\n return ;\n };\n\n return (\n <>\n {errors &&\n errors.map(error => (\n \n ))}\n \n \n {renderEvidenceRequestTool()}\n \n \n );\n}\n\nEvidenceRequestTool.propTypes = {\n petitionId: PropTypes.string,\n beneficiaryName: PropTypes.string,\n evidenceOptions: PropTypes.array,\n evidenceRequest: PropTypes.object\n};\n","import { render, waitFor } from \"@testing-library/react\";\nimport PetitionDocuments from \"./PetitionDocuments\";\n\ndescribe(\"PetitionDocuments\", () => {\n // eslint-disable-next-line no-console\n window.alert = alert => console.error(alert);\n\n beforeEach(() => fetch.once(JSON.stringify({})));\n\n it(\"renders without crashing\", async () => {\n const { container } = render(\n \n );\n await waitFor(() => expect(container));\n });\n});\n","import React from \"react\";\nimport { render } from \"@testing-library/react\";\nimport NoteRow from \"./NoteRow\";\n\ndescribe(\"The Note Row component\", () => {\n it(\"renders without crashing\", () => {\n const { container } = render(\n \n );\n expect(container);\n });\n it(\"splits up the note source if camelCase\", () => {\n const { getByText } = render(\n \n );\n expect(getByText(\"Petition Overview\"));\n });\n});\n","import { render } from \"@testing-library/react\";\nimport NotesTable from \"./NotesTable\";\nimport { LocalStorageMock } from \"../../../../../testHelpers/localStorageMock\";\nimport { mockNotesProps } from \"../../../../../testHelpers/notesMocks\";\n\nconst { notable } = mockNotesProps;\n\ndescribe(\"The NotesTable component\", () => {\n global.localStorage = new LocalStorageMock();\n it(\"renders without crashing\", () => {\n const { container } = render();\n expect(container);\n });\n\n it(\"displays the 'add notes' by default\", () => {\n const { getByText } = render();\n expect(getByText(\"Add notes\"));\n });\n\n it(\"displays the note input when there is a note in local storage\", () => {\n // eslint-disable-next-line quotes\n localStorage.setItem(`note-${notable.id}`, '\"The kids are alright.\"');\n const { getByText, queryByText } = render(\n \n );\n expect(queryByText(\"Add notes\")).not.toBeInTheDocument();\n expect(getByText(\"The kids are alright.\"));\n });\n});\n","import { render, waitFor } from \"@testing-library/react\";\nimport { Provider as AlertProvider } from \"react-alert\";\nimport PetitionOverview from \"./PetitionOverview\";\nimport AlertTemplate from \"../../Shared/AlertTemplate\";\n\ndescribe(\"PetitionOverview\", () => {\n let props;\n window.alert = () => {};\n\n beforeEach(() => {\n props = {\n type: \"P1\",\n petitionId: \"123\",\n petitionGdriveLInk: \"gdrive.com\",\n petitionerName: \"SELAT\",\n beneficiary: { role: \"benny\", name: \"Bobby Bouche\" },\n petitionRepresentative: { role: \"pr\", name: \"Coach Kline\" },\n intakes: [\n {\n id: \"1\",\n name: \"First Intake\",\n submittedAt: \"Now\",\n userId: \"RUTA123\"\n }\n ],\n intakeUserOptions: [\n {\n value: \"RUTA123\",\n label: \"Rutabega Rabbit\"\n },\n {\n value: \"CATY456\",\n label: \"Princess Carolyn\"\n }\n ],\n petitionBlockers: {\n \"show stopper\": true\n },\n noteProps: {\n notable: {},\n notableType: \"Petition\"\n },\n assigneeOptions: [\n {\n value: \"jekyll_ID\",\n label: \"dr_jekyll@gmail.com\"\n },\n {\n value: \"hyde_ID\",\n label: \"mrhyde@yahoo.com\"\n }\n ],\n assigneeId: \"hyde_ID\"\n };\n });\n\n it(\"renders without crashing\", async () => {\n const container = render(\n \n \n \n );\n await waitFor(() => expect(container));\n });\n\n it(\"displays the correct section names\", async () => {\n const { getAllByText } = render(\n \n \n \n );\n const ContactsHeaders = getAllByText(\"Contacts\");\n const IntakesHeaders = getAllByText(\"Intakes\");\n await waitFor(() => {\n expect(ContactsHeaders && IntakesHeaders);\n expect(ContactsHeaders.length).toBe(2);\n });\n });\n});\n","import React from \"react\";\nimport { Provider as AlertProvider } from \"react-alert\";\nimport AlertTemplate from \"../../Shared/AlertTemplate\";\nimport PetitionOverview from \"./PetitionOverview\";\n\nconst options = {\n timeout: 5000,\n offset: \"30px\"\n};\n\nexport default function PetitionOverviewWrapper(props) {\n return (\n \n \n \n );\n}\n","import { render, fireEvent, waitFor } from \"@testing-library/react\";\nimport UscisStatusWrapper from \"./UscisStatusWrapper\";\nimport { mockUser } from \"../../../testHelpers/userMocks\";\n\nconst mockCaseStatusResponse = {\n petitionId: \"4b296ba7-e725-5736-b402-50f4d15b1ac7\",\n id: \"68b110e1-9314-4993-a364-8e7fd2ff3caf\",\n shipmentDate: \"2019-04-20T00:00:00.000-07:00\",\n receiptDate: \"2019-08-05T00:00:00.000-07:00\",\n caseNumber: null,\n decisionDate: \"2019-10-10T00:00:00.000-07:00\",\n decisionStatus: null,\n createdAt: \"2020-05-12T14:25:32.075-07:00\",\n updatedAt: \"2020-05-15T13:46:45.914-07:00\",\n caseawareStatus: null,\n caseawareDetails: null,\n caseawareUpdatedAt: null\n};\n\nconst mockCaseStatusResponse2 = {\n petitionId: \"4b296ba7-e725-5736-b402-50f4d15b1ac7\",\n id: \"68b110e1-9314-4993-a364-8e7fd2ff3caf\",\n shipmentDate: \"2020-10-31T00:00:00.000-07:00\",\n receiptDate: \"2020-01-01T00:00:00.000-07:00\",\n caseNumber: \"USCIS-FAKE-CASE-123\",\n decisionDate: \"2020-01-31T00:00:00.000-07:00\",\n decisionStatus: null,\n createdAt: \"2020-05-12T14:25:32.075-07:00\",\n updatedAt: \"2020-05-15T13:46:45.914-07:00\",\n caseawareStatus: null,\n caseawareDetails: null,\n caseawareUpdatedAt: null\n};\n\nconst mockCaseStatusResponse3 = {\n petitionId: \"4b296ba7-e725-5736-b402-50f4d15b1ac7\",\n id: \"68b110e1-9314-4993-a364-8e7fd2ff3caf\",\n shipmentDate: \"2020-10-31T00:00:00.000-07:00\",\n receiptDate: \"2020-01-01T00:00:00.000-07:00\",\n caseNumber: \"USCIS-FAKE-CASE-123\",\n decisionDate: null,\n decisionStatus: null,\n createdAt: \"2020-05-12T14:25:32.075-07:00\",\n updatedAt: \"2020-05-15T13:46:45.914-07:00\",\n caseawareStatus: null,\n caseawareDetails: null,\n caseawareUpdatedAt: null\n};\n\ndescribe(\"The USCISstatus component\", () => {\n // eslint-disable-next-line no-console\n window.alert = alert => console.warn(alert);\n\n // fetch mock for header\n beforeEach(() => {\n fetch.once(JSON.stringify(mockUser));\n });\n\n afterEach(() => fetch.resetMocks());\n\n it(\"renders without crashing and makes one fetch call on load for the common nav\", async () => {\n const { container, getByText } = render(\n \n );\n await waitFor(() => {\n expect(container);\n expect(getByText(\"Track and update USCIS Decisions for Homer Simpson\"));\n expect(fetch.mock.calls.length).toEqual(1);\n });\n });\n\n it(\"allows the user to enter and update the shipment date\", async () => {\n fetch.once(JSON.stringify(mockCaseStatusResponse));\n const { getByText, getByTestId } = render();\n const shipmentDateInput = getByTestId(\"shipmentDate-input\");\n fireEvent.change(shipmentDateInput, { target: { value: \"2019-04-20\" } });\n fireEvent.blur(shipmentDateInput);\n await waitFor(() => expect(getByTestId(\"shipmentDate-edit-button\")));\n expect(getByText(\"04/20/2019\"));\n\n fetch.once(JSON.stringify(mockCaseStatusResponse2));\n fireEvent.click(getByTestId(\"shipmentDate-edit-button\"));\n const newShipmentDateInput = getByTestId(\"shipmentDate-input\");\n fireEvent.change(newShipmentDateInput, { target: { value: \"2020-10-31\" } });\n fireEvent.blur(newShipmentDateInput);\n await waitFor(() => expect(getByTestId(\"shipmentDate-edit-button\")));\n expect(getByText(\"10/31/2020\"));\n });\n\n it(\"allows the user to enter and update the receipt date\", async () => {\n fetch.once(JSON.stringify(mockCaseStatusResponse));\n const { getByText, getByTestId } = render();\n const receiptDateInput = getByTestId(\"receiptDate-input\");\n fireEvent.change(receiptDateInput, { target: { value: \"2019-08-05\" } });\n fireEvent.blur(receiptDateInput);\n await waitFor(() => expect(getByTestId(\"receiptDate-edit-button\")));\n expect(getByText(\"08/05/2019\"));\n\n fetch.once(JSON.stringify(mockCaseStatusResponse2));\n fireEvent.click(getByTestId(\"receiptDate-edit-button\"));\n const newReceiptDateInput = getByTestId(\"receiptDate-input\");\n fireEvent.change(newReceiptDateInput, { target: { value: \"2020-01-01\" } });\n fireEvent.blur(newReceiptDateInput);\n await waitFor(() => expect(getByTestId(\"receiptDate-edit-button\")));\n expect(getByText(\"01/01/2020\"));\n });\n\n it(\"allows the user to enter and update the case number\", async () => {\n fetch.once(JSON.stringify(mockCaseStatusResponse));\n const { getByText, getByTestId } = render();\n const receiptDateInput = getByTestId(\"receiptDate-input\");\n fireEvent.change(receiptDateInput, { target: { value: \"2019-08-05\" } });\n fireEvent.blur(receiptDateInput);\n await waitFor(() => {\n expect(getByTestId(\"caseNumber-input\"));\n getByTestId(\"receiptDate-edit-button\");\n });\n\n fetch.once(JSON.stringify(mockCaseStatusResponse3));\n const caseNumberInput = getByTestId(\"caseNumber-input\");\n fireEvent.change(caseNumberInput, {\n target: { value: \"USCIS-FAKE-CASE-123\" }\n });\n fireEvent.blur(caseNumberInput);\n await waitFor(() => expect(getByTestId(\"caseNumber-edit-button\")));\n expect(getByText(\"USCIS-FAKE-CASE-123\"));\n fireEvent.click(getByTestId(\"caseNumber-edit-button\"));\n const newCaseNumberInput = getByTestId(\"caseNumber-input\");\n fireEvent.change(newCaseNumberInput, {\n target: { value: \"NEW-CASE-NUMBER-456\" }\n });\n fireEvent.blur(newCaseNumberInput);\n await waitFor(() => {\n getByTestId(\"caseNumber-edit-button\");\n });\n expect(getByText(\"NEW-CASE-NUMBER-456\"));\n });\n\n it(\"allows the user to enter and update the decision date\", async () => {\n fetch.once(JSON.stringify(mockCaseStatusResponse));\n const { getByText, getByTestId } = render();\n const decisionDateInput = getByTestId(\"decisionDate-input\");\n fireEvent.change(decisionDateInput, { target: { value: \"2019-10-10\" } });\n fireEvent.blur(decisionDateInput);\n await waitFor(() => expect(getByTestId(\"decisionDate-edit-button\")));\n expect(getByText(\"10/10/2019\"));\n\n fetch.once(JSON.stringify(mockCaseStatusResponse2));\n fireEvent.click(getByTestId(\"decisionDate-edit-button\"));\n const newDecisionDateInput = getByTestId(\"decisionDate-input\");\n fireEvent.change(newDecisionDateInput, { target: { value: \"2020-01-31\" } });\n fireEvent.blur(newDecisionDateInput);\n await waitFor(() => expect(getByTestId(\"decisionDate-edit-button\")));\n expect(getByText(\"01/31/2020\"));\n });\n});\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nconst Table = styled.section`\n table {\n width: 100%;\n table-layout: fixed;\n }\n tr:nth-child(even) {\n background-color: #f2f2f2;\n }\n .tbl-header {\n background-color: lightgray;\n }\n .tbl-content {\n height: 420px;\n overflow-x: auto;\n margin-top: 0px;\n border: 1px solid lightgray;\n }\n th {\n padding: 10px 5px;\n text-align: left;\n font-weight: 500;\n font-size: 12px;\n color: black;\n text-transform: uppercase;\n }\n td {\n padding: 15px;\n text-align: left;\n vertical-align: middle;\n font-weight: 300;\n font-size: 12px;\n color: black;\n border-bottom: solid 1px rgba(255, 255, 255, 0.1);\n }\n`;\n\nexport default function PetitionStatus(props) {\n const { petitions } = props;\n\n const petitionUrl = petitionId => Routes.petition_templates_path(petitionId);\n\n const tableHead = (\n \n {Object.keys(petitions[0]).map(k => (\n {k}\n ))}\n \n );\n\n const tableBody = petitions.map(p => (\n \n {Object.keys(p).map(key => {\n if (key === \"Full Name\" || key === \"Tasks Completed\") {\n return {p[key]};\n }\n\n if (key === \"Petition\") {\n return (\n \n {p.Petition.title}\n \n );\n }\n\n return (\n \n {p[key] !== null ? (\n \n ) : (\n \"\"\n )}\n \n );\n })}\n \n ));\n\n return (\n \n
    \n
    \n {tableHead}\n
    \n \n
    \n \n {tableBody}\n
    \n
    \n \n );\n}\n","import React from \"react\";\n\n/* List of links to html sections for side navs */\n\nexport default function SectionsMenu(props) {\n const { sections = [] } = props;\n\n const handleSectionClick = sectionName => {\n window.location = `#${sectionName}`;\n window.scrollBy(0, -70);\n };\n\n const sectionLinks = sections.map(section => (\n handleSectionClick(section.name)}\n >\n {section.name}\n \n ));\n\n return
    {sectionLinks}
    ;\n}\n","/* eslint-disable react/destructuring-assignment */\nimport React from \"react\";\n\nexport default function EntityFields(props) {\n return (\n
    \n \n \n
    \n );\n}\n","/* eslint-disable react/destructuring-assignment */\nimport React from \"react\";\n\nexport default class ActionBar extends React.Component {\n render() {\n return (\n
    \n \n Cancel\n \n \n
    \n );\n }\n}\n"],"sourceRoot":""}