{"version":3,"sources":["webpack:///./app/javascript/src/utils/setup_risk_tags.js","webpack:///./app/javascript/src/pages/admin/components/risk_findings.vue?fa1f","webpack:///./app/javascript/src/mixins/init_evaporate.js","webpack:///./app/javascript/src/mixins/removeApplyFilterKeyEventListeners.js","webpack:///./app/javascript/src/pages/admin/components/risk_findings.vue","webpack:///./app/javascript/src/pages/admin/components/risk_findings.vue?f4a6","webpack:///./app/javascript/src/mixins/humanFriendlyDateTime.js","webpack:///./app/javascript/src/vue_shared/components/RequestFieldInput.vue?a169","webpack:///./app/javascript/src/vue_shared/types/request_fields.ts","webpack:///./app/javascript/src/vue_shared/components/RequestFieldInput.vue?0cae","webpack:///./app/javascript/src/vue_shared/components/RequestFieldInput.vue","webpack:///./app/javascript/src/pages/request_show/components/VisibilityBanner.vue?e8e0","webpack:///./app/javascript/src/pages/request_show/components/VisibilityBanner.vue?19a6","webpack:///./app/javascript/src/pages/request_show/components/RequestShowHeader.vue?2b2b","webpack:///./app/javascript/src/pages/request_show/components/request-expiration-date.vue?785a","webpack:///./app/javascript/src/pages/request_show/components/RequestDates.vue?c46c","webpack:///./app/javascript/src/pages/request_show/components/RequesterInfo.vue?1262","webpack:///./app/javascript/src/pages/request_show/components/RequestPayments.vue?f836","webpack:///./app/javascript/src/pages/request_show/components/request-staff-hours.vue?7b1c","webpack:///./app/javascript/src/pages/request_show/components/RequestAssigned.vue?ba0f","webpack:///./app/javascript/src/pages/request_show/components/RequestStaffTime.vue?a411","webpack:///./app/javascript/src/pages/request_show/components/TimelineTab.vue?ef2d","webpack:///./app/javascript/src/pages/request_show/components/RiskReport.vue?1452","webpack:///./app/javascript/src/pages/request_show/components/DocumentTools.vue?3500","webpack:///./app/javascript/src/pages/request_show/components/FoldersSidebar.vue?6e72","webpack:///./app/javascript/src/pages/request_show/components/DocumentCardActions.vue?0dc6","webpack:///./app/javascript/src/pages/request_show/components/DocumentsTab.vue?4520","webpack:///./app/javascript/src/pages/request_show/components/TasksTab.vue?5c25","webpack:///./app/javascript/src/pages/request_show/components/InvoiceTimelineEvent.vue?3f42","webpack:///./app/javascript/src/pages/request_show/components/RequestTabs.vue?73bd","webpack:///./app/javascript/src/pages/request_show/components/RequestInfoHeader.vue?9bab","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/ExternalMessageModal.vue?b07a","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/InternalMessageModal.vue?7572","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/InvoiceItemMenu.vue?a3d1","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/InvoiceMessageModal.vue?5cb3","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/NoteMessageModal.vue?4413","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/RequestTextModal.vue?0867","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/TaskModal.vue?d6ba","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/MessageBoxes.vue?ec67","webpack:///./app/javascript/src/pages/request_show/components/RequestFieldEditModal.vue?109c","webpack:///./app/javascript/src/pages/request_show/components/RequestPaymentsModal.vue?f9d2","webpack:///./app/javascript/src/pages/request_show/components/RequestShowCycleArrows.vue?83ca","webpack:///./app/javascript/src/pages/request_show/components/RequestShowPage.vue?f200","webpack:///./app/javascript/src/pages/request_show/components/RequestShowPage.vue","webpack:///./app/javascript/src/pages/request_show/components/VisibilityBanner.vue?a26a","webpack:///./app/javascript/src/pages/request_show/components/VisibilityBanner.vue?fca7","webpack:///./app/javascript/src/pages/request_show/components/VisibilityBanner.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestShowHeader.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestShowHeader.vue?44aa","webpack:///./app/javascript/src/pages/request_show/components/RequestDates.vue?3b3e","webpack:///./app/javascript/src/pages/request_show/components/request-duedate.vue?0dee","webpack:///./app/javascript/src/pages/request_show/components/request-duedate.vue?0661","webpack:///./app/javascript/src/pages/request_show/components/request-duedate.vue","webpack:///./app/javascript/src/pages/request_show/components/request-fulfillment-date.vue?199f","webpack:///./app/javascript/src/pages/request_show/components/request-fulfillment-date.vue?d70a","webpack:///./app/javascript/src/pages/request_show/components/request-fulfillment-date.vue","webpack:///./app/javascript/src/pages/request_show/components/request-received-date.vue?4b45","webpack:///./app/javascript/src/pages/request_show/components/request-received-date.vue?b0e9","webpack:///./app/javascript/src/pages/request_show/components/request-received-date.vue","webpack:///./app/javascript/src/pages/request_show/components/request-expiration-date.vue?3083","webpack:///./app/javascript/src/pages/request_show/components/request-expiration-date.vue?bb39","webpack:///./app/javascript/src/pages/request_show/components/request-expiration-date.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestDates.vue?636e","webpack:///./app/javascript/src/pages/request_show/components/RequestDates.vue","webpack:///./app/javascript/src/pages/request_show/components/RequesterInfo.vue?29b1","webpack:///./app/javascript/src/pages/request_show/components/RequesterInfo.vue?f1e5","webpack:///./app/javascript/src/pages/request_show/components/RequesterInfo.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestPayments.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestPayments.vue?f9a3","webpack:///./app/javascript/src/pages/request_show/components/request-staff-hours.vue?34bb","webpack:///./app/javascript/src/pages/request_show/components/request-staff-hours.vue?a54a","webpack:///./app/javascript/src/pages/request_show/components/request-staff-hours.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestAssigned.vue?df2c","webpack:///./app/javascript/src/pages/request_show/components/RequestDepartmentAssigned.vue?f7ab","webpack:///./app/javascript/src/pages/request_show/components/RequestDepartmentAssigned.vue?16ce","webpack:///./app/javascript/src/pages/request_show/components/RequestDepartmentAssigned.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestPoc.vue?14b9","webpack:///./app/javascript/src/pages/request_show/components/RequestPoc.vue?baac","webpack:///./app/javascript/src/pages/request_show/components/RequestPoc.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestAssigned.vue?7087","webpack:///./app/javascript/src/pages/request_show/components/RequestAssigned.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestStaffTime.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestStaffTime.vue?8090","webpack:///./app/javascript/src/pages/request_show/components/RequestTabs.vue","webpack:///./app/javascript/src/pages/request_show/components/TimelineTab.vue","webpack:///./app/javascript/src/pages/request_show/components/TimelineTab.vue?54d5","webpack:///./app/javascript/src/pages/request_show/components/ChangeMessageTextModal.vue","webpack:///./app/javascript/src/pages/request_show/components/ChangeMessageTextModal.vue?292f","webpack:///./app/javascript/src/pages/request_show/components/ChangeMessageVisibilityModal.vue","webpack:///./app/javascript/src/pages/request_show/components/ChangeMessageVisibilityModal.vue?cfa7","webpack:///./app/javascript/src/pages/request_show/components/DocumentsTab.vue","webpack:///./app/javascript/src/pages/request_show/components/DocumentTools.vue","webpack:///./app/javascript/src/pages/request_show/components/RiskReport.vue?7a8f","webpack:///./app/javascript/src/pages/request_show/components/RiskReport.vue?d890","webpack:///./app/javascript/src/pages/request_show/components/RiskReport.vue","webpack:///./app/javascript/src/pages/request_show/components/DocumentTools.vue?1faf","webpack:///./app/javascript/src/pages/request_show/components/FoldersSidebar.vue","webpack:///./app/javascript/src/pages/request_show/components/ParentFolderListItem.vue","webpack:///./app/javascript/src/pages/request_show/components/ParentFolderListItem.vue?5fe3","webpack:///./app/javascript/src/pages/request_show/components/ChildFolderListItem.vue","webpack:///./app/javascript/src/pages/request_show/components/ChildFolderListItem.vue?0470","webpack:///./app/javascript/src/pages/request_show/components/FoldersSidebar.vue?7ab1","webpack:///./app/javascript/src/pages/request_show/components/DocumentCardActions.vue","webpack:///./app/javascript/src/pages/request_show/components/DocumentCardActions.vue?a79c","webpack:///./app/javascript/src/pages/request_show/components/DocumentsTab.vue?38b1","webpack:///./app/javascript/src/pages/request_show/components/TasksTab.vue","webpack:///./app/javascript/src/pages/request_show/components/TasksTab.vue?0642","webpack:///./app/javascript/src/pages/request_show/components/InvoiceTimelineEvent.vue?d31f","webpack:///./app/javascript/src/pages/request_show/components/InvoiceTimelineEvent.vue?560b","webpack:///./app/javascript/src/pages/request_show/components/InvoiceTimelineEvent.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestTabs.vue?0cf6","webpack:///./app/javascript/src/pages/request_show/components/RequestTags.vue?1d46","webpack:///./app/javascript/src/pages/request_show/components/RequestTags.vue?a527","webpack:///./app/javascript/src/pages/request_show/components/RequestTags.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestInfoHeader.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestInfoHeader.vue?4892","webpack:///./app/javascript/src/pages/request_show/components/RequestPinnedNote.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestPinnedNote.vue?849e","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/ExternalMessageModal.vue?176d","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/ExternalMessageModal.vue?9fd6","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/ExternalMessageModal.vue","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/InternalMessageModal.vue?821f","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/InternalMessageModal.vue?867d","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/InternalMessageModal.vue","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/InvoiceMessageModal.vue?f6a9","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/LineItemsTable.vue?e612","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/InvoiceItemMenu.vue?1394","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/InvoiceItemMenu.vue?1fbf","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/InvoiceItemMenu.vue","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/LineItemsTable.vue?40aa","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/LineItemsTable.vue","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/SurchargesList.vue?64ca","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/SurchargesList.vue?5e2e","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/SurchargesList.vue","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/StaffHoursTable.vue?a982","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/StaffHoursTable.vue?7ccb","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/StaffHoursTable.vue","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/InvoiceAddItemModal.vue?8718","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/InvoiceAddItemModal.vue?e759","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/InvoiceAddItemModal.vue","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/InvoiceMessageModal.vue?4e44","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/invoices/InvoiceMessageModal.vue","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/NoteMessageModal.vue?adb9","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/NoteMessageModal.vue?6122","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/NoteMessageModal.vue","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/RequestTextModal.vue?dd3c","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/RequestTextModal.vue?1fd9","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/RequestTextModal.vue","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/TaskModal.vue?29c2","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/TaskModal.vue?1b2a","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/TaskModal.vue","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/MessageBoxes.vue","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/MessageBoxes.vue?a71c","webpack:///./app/javascript/src/pages/request_show/components/MessageBoxes/index.js","webpack:///./app/javascript/src/pages/request_show/components/CustomFields.vue?a4d6","webpack:///./app/javascript/src/pages/request_show/components/CustomFields.vue?13ae","webpack:///./app/javascript/src/pages/request_show/components/CustomFields.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestFieldEditModal.vue?1139","webpack:///./app/javascript/src/pages/request_show/components/RequestFieldEditModal.vue","webpack:///./app/javascript/src/pages/request_show/store/request_state_declarations.ts","webpack:///./app/javascript/src/pages/request_show/components/RequestFieldValues.vue?a3e2","webpack:///./app/javascript/src/pages/request_show/components/RequestFieldValues.vue","webpack:///./app/javascript/src/pages/request_show/components/CloseRequestModal.vue?23d3","webpack:///./app/javascript/src/pages/request_show/components/CloseRequestModal.vue?a712","webpack:///./app/javascript/src/pages/request_show/components/CloseRequestModal.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestPaymentsModal.vue?7fa2","webpack:///./app/javascript/src/pages/request_show/store/civicplus_pay_model.ts","webpack:///./app/javascript/src/pages/request_show/components/RequestPaymentsModal.vue?5b67","webpack:///./app/javascript/src/pages/request_show/store/cybersource_model.ts","webpack:///./app/javascript/src/pages/request_show/store/stripe_model.ts","webpack:///./app/javascript/src/pages/request_show/components/RequestPaymentsModal.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestShowCycleArrows.vue","webpack:///./app/javascript/src/pages/request_show/components/RequestShowCycleArrows.vue?0b63","webpack:///./app/javascript/src/pages/request_show/components/RequestShowPage.vue?35d9","webpack:///./app/javascript/src/pages/admin/document_review_status.ts","webpack:///./app/javascript/src/pages/admin/document_severity_status.ts"],"names":["setupRiskTags","doc","clickable","arguments","length","undefined","riskTags","reviewStatus","document_scan","review_status","severity","isStatusClickable","isSeverityClickable","push","text","humanizedReviewStatus","type","reviewStatusColor","icon","icon_type","reviewStatusIconType","value","tag_name","aria_label","setReviewStatusAriaLabel","humanizedSeverityStatus","severityStatusColor","methods","setupEvaporateFileUploader","_this","Evaporate","create","aws_key","process","bucket","awsRegion","signerUrl","awsSignatureVersion","partSize","sendCanonicalRequestToSignerUrl","onlyRetryForSameFileName","computeContentMd5","mockLocalStorage","cryptoMd5Method","data","AWS","util","crypto","md5","cryptoHexEncodedHash256","sha256","then","evaporateResponse","catch","e","nrError","Error","cause","NrSentry","captureError","removeApplyFilterKeyEventListeners","document","removeEventListener","this","applyFilterEventListener","resetKeysEventListener","class","name","props","scan","Object","components","NrTag","computed","setSeverityText","setSeverityColor","setReviewStatusText","setReviewStatusColor","uploadDate","formatDate","Date","upload_date","fileSize","file_size","concat","isScannable","isPending","_objectSpread","mapActions","__exports__","document_path","href","$emit","title","label","size","findings","finding","key","id","category","items","item","index","count","badge","pretty_id","visibility","file_type","toUpperCase","humanFriendlyDateTime","date","humanFriendlyDate","FieldType","_hoisted_1","_hoisted_2","__name","definition","modelValue","emits","setup","__props","__emit","emit","typedProps","field_type","Text","type_settings","Checkbox","Array","isArray","noLabel","hideLabel","labelText","isChecked","option","currentlyChecked","some","checked","uuid","isCheckboxValid","isMandatory","val","immediate","handleFormInputValidation","isValid","_ctx","_cache","fieldValue","tag","isTextArea","placeholder","placeholderText","help","helperText","required","maxLength","characterLimitMax","toString","minLength","characterLimitMin","withTooltip","tooltipText","iconTooltipText","onOnValidate","options","alreadyChecked","selectedOptions","filter","other","checkOption","n","_withScopeId","NrModal","NrIconButton","NrIcon","NrTooltip","NrFormSelect","showEditVisibilityIcon","showEditModal","requestVisibility","account","departmentNames","default","visibilities","setBannerStyles","isEmbargoed","setBannerIcon","isPublished","isDepartmentPublished","isStaffVisible","isDepartmentVisible","isRestricted","isUnpublished","visibilityLabelTooltip","embargoedTooltipText","embargoing_available","embargo_hours","departments","restricted_visibilities_feature_flag","setBannerText","includes","toggleEditModal","state","updateRequestVisibility","updateRequest","request_id","request","$toasted","success","fetchTimeline","error","$props","$setup","$data","$options","_component_NrTooltip","_component_NrIcon","_component_NrIconButton","_component_NrFormSelect","_component_NrModal","$can","innerHTML","_","onClick","$event","variant","show","onOnPrimaryClick","onOnSecondaryClick","onOnClose","script","$slots","NrFormInput","NrDatepicker","prettyId","String","showModal","updating","newDate","description","computedDate","parse","format","unselectableDates","handleDateInput","handleSaveData","updateDuedate","toggleModal","_component_NrDatepicker","_component_NrFormInput","hasSecondaryButton","disabeButtons","secondaryButtonText","primaryButtonText","onOnCloseClick","onSubmit","onInput","trigger","rows","anticipated_fulfilled_at","requestSubmitType","receivedDateComment","selectedReceivedDate","computedReceivedDate","unselectableReceivedDate","formattedReceivedDate","submitType","Fax","Email","Phone","Web","Mail","Import","submitReceivedDateChange","params","updateReceivedDate","setCurrentAction","handleReceivedDateChange","currentAction","exempt","Boolean","expiration","newExempt","exemptedDocuments","subscription","currentJobId","mounted","subscribeToUserJobChannel","unmounted","unsubscribeToUserJobChannel","self","subscriptions","channel","user_id","$store","currentUser","received","job_type","job_id","setupToastMessage","connection","isOpen","remove","helpers","backgroundJobComplete","status","setSuccessToastMessage","backgroundJobFailed","setFailedToastMessage","handleSaveExempt","exempt_from_retention","bulkDocumentActions","bulk_action","all_selected","xhr","response","body","jobId","position","RequestFulfillmentDate","RequestDueDate","RequestReceivedDate","RequestExpirationDate","NrLoadingAnimation","canSeeRequestDueDate","dueDate","canSeeRequestExpirationDate","exemptFromRetention","fulfillment","canSeeFulfillmentDate","anticipated_fulfillment_date","_component_RequestDueDate","_component_RequestReceivedDate","_component_RequestFulfillmentDate","_component_RequestExpirationDate","_component_NrLoadingAnimation","filteredRequestLoading","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","NrButton","NrSelect","canSeeRequesterPanel","canSeeRequesterDetails","canSeeEmailStatuses","email","address","phone","company","selectedRequester","emailStatuses","isLoadingEmailStatuses","showEmailStatuses","requester","emailStatusesText","url","hasAnyEmailStatuses","emailAvailable","handleDataTyping","searchText","dataType","fetchDataOptions","handleDataScroll","dataFetchState","search_text","loadEmailStatuses","fetchRequestEmailStatuses","trailing","handleSave","updateRequester","requesterId","finally","toggleEmailStatuses","_component_NrButton","_component_NrSelect","events","event","action","time","dataOptions","requesters","filterable","loading","fetching","hasMore","end","onOpen","onLoadMore","onSearch","requestInvoices","selectedInvoice","mapState","activeModal","deleteConfirmationText","paidConfirmationText","canEdit","invoice","outstanding","clearSelection","setActiveModal","processClick","modalName","processSubmit","payload","invoice_id","paid_offline","method","processInvoice","canDeleteInvoice","can_delete_invoice","canPayInvoice","can_pay_invoice","isActiveInvoice","staffCost","totalStaffHours","deleteStaffHourConfirmationText","processDeleteClick","staffHour","setSelectedStaffHour","processEditClick","hour","processDeleteStaffSubmit","selectedStaffHour","processStaffHour","formatCost","cost","maximumFractionDigits","requestStaffHours","hours","paid","staff_hour","pocOption","poc","emailOrName","email_or_name","accountPocId","descriptionList","join","initialState","newRequest","accountPocOption","updatingRequestData","newPoc","pocOptions","selectedRequestDepartments","map","dept","pocId","poc_id","selectedVisibility","showPocAutomationHelperText","showPocManualHelperText","watch","next","_prev","resetData","updatePocOptions","departmentRequired","require_department","canUpdateRequest","$ability","can","showDepartmentInputHelper","isAssignDeptModalActive","filteredDepartments","department","assign","applyPocAutomations","poc_automation","currentPoc","firstDeptPoc","find","newPocSelected","departmentMembersList","membersList","pocFound","requestStaff","forEach","staff","unshift","name_or_email","selectedDepartment","deselectedDepartment","filterDepartments","handleDepartmentScroll","setAssignedRequestDepartments","setAssignedRequestVisibility","findPocByDepartment","pocs","departmentOption","deptPocId","fetchDepartmentPocs","departmentIds","pocsWithCurrent","department_name","department_id","entry","account_poc","values","updateDepartments","department_ids","fetchRequest","fetchRequestStaff","_error","disableButtons","multiple","selectedPoc","reassignTasks","name_with_email","filteredStaff","staffDepartmentsWithPocLabel","departmentsList","staffPoc","filterStaff","handleStaffScroll","setPoc","submitForm","reassign_tasks","fetchRequestTasks","undeliverable_email","MessageBox","RequestPoc","RequestDepartmentAssigned","requestId","addStaffToRequest","message","page","selectedStaff","showAddStaffModal","showRemoveStaffModal","staffNames","endFetching","staffHasIncompleteTasks","sendAllAssignedStaff","canSeeStaffOnlyItems","canAddAndRemoveStaff","disableRemoveStaffButton","removeStaffDisplayText","staffNameOrEmail","handleAddStaffClick","handleRemoveStaffClick","check_incomplete_tasks","incomplete_tasks","hideRemoveStaffModal","hideAddStaffModal","submitAddStaff","submitStaffChange","staff_ids","send_all_assigned_staff","submitRemoveStaff","_component_RequestDepartmentAssigned","_component_RequestPoc","_component_nr_editor","_component_message_box","onOnCancel","onOnSubmit","resizable","bold","underline","italic","_regeneratorRuntime","t","r","prototype","hasOwnProperty","o","defineProperty","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","callInvokeWithMethodAndArg","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","info","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptor","apply","_defineProperty","getOwnPropertyDescriptors","defineProperties","obj","toPrimitive","Number","_toPrimitive","NrEditor","NrFormLabel","staffTime","minutes","staff_id","staff_name","refreshStaffDeptList","selectedStaffDepartment","disabled","defaultSelectedStaff","modalHeader","isStaffSelected","isEmpty","disableSubmit","dropdownTitle","onDeptInput","closeRequestStaffTime","handleCancelRequestStaffTime","throttle","setDisplayCreateStaffTimeBox","handleRequestStaffTime","_this2","seconds","staffTimeInSeconds","submitRequestStaffTime","onStaffSelect","resetDepartments","staffId","fn","_this3","_callee","_context","API","fetchStaffDepartments","t0","console","args","err","showClose","for","noTimeline","active","selectedMessage","timeline_display_text","mapGetters","footerText","timeline_name","messageVisible","timeline_state","submitTimelineEntry","request_event_id","timeline_id","note_text","updateMessage","_err","strike","bulletList","orderedList","link","messageVisibility","messageVisibilities","textColor","newVal","timeline_type","updateMessageVisibility","message_state","clearable","appendToBody","ref","NrBar","NrCard","documents","filterParams","selectAll","fetchRequestDocumentRisk","documentRiskCounts","high","requestDocumentRisk","high_severity","medium","medium_severity","low","low_severity","na","unscannable","pending","total_documents","total_scanned","reviewed","needs_review","severityData","color","active_color","reviewStatusData","toggleOpen","_component_nr_tag","_component_NrCard","_component_NrBar","toLocaleString","_toConsumableArray","arr","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","minLen","test","_unsupportedIterableToArray","_nonIterableSpread","len","arr2","RiskReport","activeDocTitle","selectedDocIds","selectedDocuments","documentFilterParams","documentsSelectedCount","selectedFolder","shouldAddFolder","searchFolderTerm","selectedMessageTemplates","docTitle","docFolder","sendMessageToRequester","messageTemplateSearchTerm","selectedDocumentExpirationStatus","documentVisibilities","documentExpirationStatuses","hasDocPiiFeature","pii_scan_feature_flag","filteredMessageTemplates","message_templates","temp","message_template_name","message_template_description","folders","folder_name","documentsFolders","folder","currentDocumentFilters","folderless_docs","isChangeVisiModalActive","isMoveToFolderModalActive","isDeleteModalActive","isRenameDocModalActive","isChangeExpirationModalActive","requesterOrPublicSelected","selectedDocumentVisibility","set","setSelectedChangeDocVisibility","get","selectedChangeDocVisibility","changeVisibilityMessage","setMessageToRequester","messageToRequester","disableDeleteSubmitBtn","disableSubmitVisibilityBtn","msgPresentWithNoCheckbox","checkboxCheckedWithNoMsg","disableSubmitExpirationBtn","setDocVisibilityConfirmText","invalidDocTitle","isDocEmptyModalActive","loadMoreMessageTemplates","onDeleteSubmit","onDocRenameSubmit","closeMoveToFolder","handleFolderAdd","_yield$_this2$createF","isObject","createFolder","handleTypingFolderSearch","fetchDocumentsFolders","moveToFolder","folder_id","searchMessageTemplates","clearVisibilityModalFields","clearExpirationModalFields","setMessageTemplate","updateDocVisibility","messageTemplateIds","template","updateDocExpirationStatus","taggable","validations","activeFolder","folderOpened","applyActiveFolderStyle","getCaret","truncateParentFolderName","folderName","truncate","filterByFolder","parent_folder_id","activeId","renameFolder","subfolder","parentFolderId","showChildFolderRename","child_folder_id","child_folder_name","ParentFolderListItem","ChildFolderListItem","foldersOpened","limit","showFolderFilter","filteredFolder","pageNum","childPageNum","folderSearchTerm","getActiveFolder","existingChildFolders","incrementPageNum","incrementChildPageNum","openFolder","folderLimit","totalDocumentsFoldersCount","highlight","canSeeDownloadAction","canSeeChangeVisibilityAction","canSeeDeleteAction","canSeeMoveToFolderAction","canSeeRedactAction","canSeeRenameAction","showMoreItems","canSeeMoreActions","showMore","handleBlur","setTimeout","DocumentTools","DocumentCard","FoldersSidebar","DocumentCardActions","RiskFindings","NrPagination","mixins","selectedSeverity","selectedReviewStatus","activeFilterName","docSearchTerm","currentPageNum","folderToRename","documentList","filtersApplied","severities","reviewStatuses","singleDocAction","folderlessDocs","selectAllDocsOnCurrentPage","perPage","folderAction","activeScan","docs","directives","ClickAway","directive","$route","subfolder_name","setCardListCheckbox","onlySelectActiveDoc","resetCardSelection","filterData","docsPayload","setDocumentFilters","fetchDocuments","removeNullFromObject","page_number","oldVal","resetDocumentSelection","stopJobPolling","hasPiiScanEnabled","hasRetentionEnabled","retention","hasRedactionEnabled","redaction","searchDocumentResultsCount","currentDocumentsCount","totalDocumentsCount","documentsStateTimestamp","documentsProcessingIds","jobPollIntervalId","canUpdateDocument","user_role","icons","iconVisible","isFolderRenameActive","canReadStaffOnlyItems","canManageRequest","setDocVisibilityDropdownText","filterDocVisibilitiesByPermission","currentUserPresent","visi","canFilterByRisk","invalidFolderName","selectedDocs","_ref","hasFilters","emptyStateText","canSeeAdminOnlyItems","mapMutations","setJobPollIntervalId","handleTagClick","setDocReview","handleActions","openModal","submitDocDownload","documentExpirationLabel","request_state","expiration_date","_this4","toggleReviewStatus","setDocReviewStatus","document_id","addDocument","tag_color","redirectToDocumentPage","window","location","pathname","setDocTags","nofolderFilter","submitDocFolderForm","_ref2","_this5","folderId","documents_state_timestamp","doc_ids","search_term","setDocumentsProcessingIds","submitBulkDocumentAction","docAmount","jobArgs","docIds","currentFolderId","filteredFolderType","expiry","addDays","setPendingJobInLocalStorage","pollBulkActions","setupFolderRenamePayload","current_folder_id","parseInt","replace","resetParentFoldersAndFilter","_this6","folderData","newParentFolder","fol","newParentFolderId","removeChildFolder","parentFolder","childFolderId","childFolders","resetChildFoldersAndFilter","_this7","fetchDocumentsChildFolders","getParentFolder","resetFoldersAfterRenaming","pollFolderRenameJob","_this8","folderRenameJob","setInterval","fetchJobStatuses","_ref3","jobs","job","clearInterval","submitRenameFolder","_this9","updateFolder","_ref4","getChildFolder","childShowMore","parentId","_ref5","has_child_folders","docsFolders","indexOf","splice","totalDocumentCountConditional","setupDocVisibilityPayload","new_visibility","message_template_ids","submitDocVisibilityForm","_this10","docVisibilityPayload","submitDocExpirationForm","_this11","setupBulkToastMsg","_this12","setupFailedChangeVisibilityToastMsg","setupFailedChangeExpirationToastMsg","setupFailedFlattenToastMsg","setupFailedDeleteToastMsg","setupFailedMoveFolderToastMsg","setupSuccessChangeVisibilityToastMsg","refreshDocuments","filter_categores","setupSuccessChangeExpirationToastMsg","setupSuccessFlattenToastMsg","removeDeleteJob","setupSuccessMoveFolderToastMsg","setupFailedDownloadToastMsg","removePendingJobFromLocalStorage","getPendingJob","jobPending","objectName","documentsWord","submitDocRedact","_this13","downloadDocuments","docId","jobType","setJobIdInSessionStorage","_this14","intervalId","_this14$request","_this14$request2","fetchAllProcessingDocIds","submitDocDeleteForm","_this15","submitDocRenameForm","_this16","updateDocTitle","linkToViewer","open","updateFilters","filterByVisibility","filterBySeverity","sever","filterByReviewStatus","trackSelectedDocs","selected","docList","$refs","listContainer","$el","childNodes","selectActiveCard","card","checkbox","setSelectAll","setPageNum","pageNumber","simple","total","current","file_extension","checkboxDisabled","tags","actions","DEFAULT_ASSIGNEE","DEFAULT_STATUS","NrTaskCard","tasks","timelineFilters","currentTimelinePageNum","assigneeFilter","currentTaskStatus","currentAssignee","taskToDelete","tasksPerPage","statusType","assigneeUser","showDeleteTaskModal","currentTasksPageNum","tasksStatusFilter","_this$tasksPayload","tasksPayload","assignee","refreshTasks","tasksPageNum","taskStatuses","requestStaffList","uniqBy","statusEmptyMessage","user","timelinePayload","filters","taskDateByStatus","task","completed_date","due_date","handleCloseTaskDelete","confirmTaskDelete","task_id","deleteTask","refreshTimeline","task_status","categories","toLowerCase","filter_categories","handleEditTask","taskToEdit","setEditingTask","setDisplayCreateTaskMsgBox","display","handleDeleteTask","handleTaskCompletion","action_type","completed","editTaskCompletion","handleSelectedTaskFilter","identifier","hasActionPermission","currentRequestTasksCount","scope","calculateLineItems","lineItems","calculateStaffHours","staffHours","setSurchargeName","surcharge","cost_type","amount","formatSurcharge","subtotalInvoiceAmount","lineItem","quantity","Math","round","EPSILON","staff_cost","totalAmount","surcharges","hourly_rate","staff_hours","ChangeMessageTextModal","ChangeMessageVisibilityModal","TasksTab","TimelineTab","DocumentsTab","TimelineCard","NrTabs","NrTab","InvoiceTimelineEvent","timeline","selectedTimelineFilter","collapsedIds","timelineFilterList","canShowMoreTimeline","totalRequestTimelineCount","editMessageVisibility","editMessageText","timelinePageNum","isCurrentRequester","_this$currentUser","_this$request","is_current_requester","canPin","pinning_notes_feature_flag","onTabChange","activeTabId","closeChangeMessageVisibilityModal","setSelectedTimelineEvent","handleChangeVisibility","handleEditMessageText","handleCollapse","timelineId","itemCanCollapse","canCollapse","typeCanCollapse","content","isCollapsed","editIcon","changeVisibilityIcon","timelineActions","timelineItemDisplayText","displayText","handleTimelineShowMore","timelineCardHeader","timeline_guest_is_author","timelineFilter","cards","pinned","timeline_is_pinned","collapsable","collapsed","deleteIcon","iconname","header","subheader","timeline_subheader","timeline_byline","handlePinChange","timeline_invoice_line_items","timeline_invoice_surcharges","timeline_invoice_staff_hours","timeline_invoice_total_amount","downloadPdf","updateNotePin","selectedTimelineEvent","requestTags","handleTagSearch","filteredTags","handleTagScroll","handleSaveTags","tag_ids","fetchRequestTags","_component_NrTag","tagColor","sanitizedDescription","showMoreDescription","shortDescription","setDisplayEditRequestTextBox","NrPanel","canSeeActivePinnedNote","pinnedNote","canReadPins","canUpdatePins","canSeeTimelineActions","messageRequired","requesterEmailAvailable","modalTitle","disableSubmitMsg","templates","handleCancelMessage","setDisplayMsgBox","handleSubmitMessage","submitExternalMessage","note_type","_component_NrFormLabel","displayMsgBox","ALL_ASSIGNED_STAFF","selectedNotifiedUsers","resetNotifiedUsers","notifyUserWarning","staffOnlyItems","notifiableUsers","isAllAssignedStaff","deselectUsersToNotify","selectUsersToNotify","setMessageRequired","users","submitInternalMessage","width","popper","dropdown","strategy","placement","addEventListener","handleClick","el","target","contains","updated","update","beforeUnmount","destroy","InvoiceItemMenu","activeItemDeleteModal","onEdit","setInvoiceItemToEdit","setInvoiceLineItemType","setInvoiceSelectedLineItem","setInvoiceLineItemQuantity","total_count","setInvoiceAddItemModal","deleteInvoiceLineItem","newLineItems","totalSelectedLineItems","invoiceItemToEdit","setTotalSelectedLineItems","recalculateAllCosts","onDelete","_component_InvoiceItemMenu","total_cost","onOnEdit","onOnDelete","activeSurchargeDeleteModal","parseFloat","setSurchargeLabel","setInvoiceSelectedSurchargeItem","deleteInvoiceSurchargeItem","newSurchargeItems","totalSelectedSurchargeItems","setTotalSelectedSurchargeItems","flat","staffHourItem","itemOptions","lineItemOptions","surchargeItemOptions","activeAddItemModal","fetchAndSetLineItems","lineItemType","invoiceLineItemType","selectedLineItem","invoiceLineItemForm","selectedSurchargeItem","invoiceSelectedSurchargeItem","lineItemQuantity","customSurchargeAmount","surchargeCostType","itemModalText","disableAddLineItemSubmit","activeLineItemFields","activeSurchargeFields","calculateLineItemCost","surchargeAmount","addItem","setLineItem","setSurchargeItem","resetLineItemState","itemAlreadySelected","updateLineItem","replaceLineItem","addNewLineItem","totalCost","setTotalInvoiceAmount","totalInvoiceAmount","setSubtotalInvoiceAmount","totalLineItems","surchargeItems","calculateSurcharge","setRequestStaffCostAmount","requestStaffCostUnpaid","closeAddItemModal","setDisabledLineItems","setDisabledLineItemTypes","addLineItem","setDisabledSurchargeItems","roundQuantity","roundedVal","abs","fetchInvoiceCharges","surcharge_templates","line_items_templates","setSurchargeItemOptions","setLineItemOptions","selectable","modelModifiers","number","_c","LineItemsTable","SurchargesList","StaffHoursTable","InvoiceAddItemModal","invoiceTemplates","invoice_template_name","invoice_template_description","displayInvoiceBox","selectedInvoiceTemplate","invalidInvoiceAmount","displayCreateInvoiceMsgBox","negativeInvoiceAmount","roundedTotalInvoiceAmount","toFixed","invoicing_feature_flag","openAddItemModal","filterInvoiceTemplates","filteredMsgs","msg","RegExp","handleCancelInvoice","setDisplayCreateInvoiceMsgBox","line_item_template_id","totalSurcharges","surcharge_template_id","clearInvoiceLineItems","handleSubmitInvoice","invoice_template_id","total_amount","line_items_attributes","surcharges_attributes","_component_NrEditor","_component_LineItemsTable","_component_StaffHoursTable","_component_SurchargesList","_component_MessageBox","_component_InvoiceAddItemModal","submitTooltipText","pin","hasPinningNotesEnabled","shouldShowPinOption","displayNoteMsgBox","note_pinned","changedPin","onChange","requestText","updateRequestText","handleSubmit","request_text","created","fetchInvoiceTemplates","displayCreateTaskMsgBox","taskMsg","taskDueDate","selectedCreateTaskAssignee","editingTask","disableTaskSubmitBtn","handleCloseTask","handleSubmitTask","submitNewTask","ExternalMessageModal","InvoiceMessageModal","InternalMessageModal","NoteMessageModal","RequestTextModal","TaskModal","calendarStyles","zIndex","MessageBoxes","fields","tmp","slug","resetForm","handleEditField","activeField","field","handleCloseModal","handleUpdate","updateCustomField","store","instance","globalProperties","appContext","config","handleClose","request_show","dispatch","requestFieldVersionId","request_field_version","handleError","errorMessage","RequestFieldInput","RequestFieldType","EditingAccess","canEditField","role","editingAccess","editing_access","PUBLISHER","REQUESTER","selectedField","closeEditModal","formatValue","field_id","display_name","field_settings_have_changed","field_value_was_edited","RequestFieldEditModal","onClose","selectedClosureTemplates","closureText","selectedRequestVisibility","closureReasonsPageNumber","closureReasonsHasMore","setupCurrentReqVisiOption","fetchClosureTemplates","setClosureTemplate","filterClosureTemplates","loadMoreClosureTemplates","reqVisibilities","close_description","close_reasons","isActive","_component_nr_modal","uid","closureTemplates","autofocus","fetchCivicPlusPayData","http","stripe","stripeClientSecret","stripePaymentIntentId","stripeCard","cybersource","civicplus_pay_redirect_link","invoiceAmount","total_with_fees","style","currency","invoiceFeesText","fees","civicplus_pay_activated","redirect","stripe_activated","createStripePaymentIntent","cybersource_activated","cybersource_test_activated","fetchCybersourceData","apiKey","clientSecret","paymentIntentId","Stripe","setupCard","elements","base","fontFamily","fontSmoothing","fontSize","invalid","iconColor","mount","on","evt","empty","submitPayment","submitCybersourcePayment","submitStripePayment","cybersourceForm","submit","confirmCardPayment","payment_method","res","onCompleteStripePayment","confirmStripePayment","payment_intent_id","fetchRequestInvoices","form_action","entries","currentRequestIndex","requests","findIndex","disablePrevArrow","cyclingEnabled","disableNextArrow","disabledNextArrowTooltip","handlePrevClick","setFilteredRequestLoading","$router","getPrevRequest","handleNextClick","getNextRequest","_asyncToGenerator","NrBanner","VisibilityBanner","Footer","RequestDates","RequesterInfo","RequestPayments","RequestStaffHours","RequestStaffTime","RequestAssigned","RequestTabs","RequestTags","RequestShowHeader","RequestInfoHeader","RequestPaymentsModal","RequestPinnedNote","CustomFields","DocumentUploadModal","CloseRequestModal","RequestShowCycleArrows","RequestFieldValues","reinitializeState","rerender","setupRequestShowPageData","ability","s3Bucket","beforeRouteEnter","to","_from","vm","setupToasts","previewRequestPage","reload","uploadedDocs","reopening","pausing","externalMessageRequired","staffLimit","previewOn","docUploadFolders","pauseComment","rerenderKey","children","anyOutstandingInvoice","firstOutstandingInvoice","legacyRequestPageShowEnabled","legacy_request_show_enabled","canSeeRequestStaffHours","request_staff_hours","canSeePublisherOnlyItems","department_names","split","requestPresent","canSeeExternalMessageIcon","canSeeNoteMessageIcon","subdomain","canSeeInvoiceIcon","adminOrPublisher","payments","accountPaymentsEnabled","canSeeUploadIcon","canSeeUnpauseIcon","canSeePauseIcon","canSeeCloseIcon","canSeeReopenIcon","canSeeRapidReviewIcon","document_review","cycleTagTooltip","tableHeaderTitleTooltip","cycleTagText","activeFilters","iconDisabled","requestFieldValues","request_field_values","query","clearQuery","toast_info","toast_error","toast_success","openSwitchToPreviewModal","submitCloseRequest","closeRequest","reasons","navigateToRapidReview","path","addUploadedDocToState","saveDocFiles","saveDocs","_err$response","handleFolderSearch","fetchRequestDocumentsFolders","handleFolderCreation","_callee2","newFolder","_context2","handleFolderSelection","addFolder","handleTimelineFilters","handleTasksStatusFilters","setDisplayInternalMsgBox","setDisplayExternalMsgBox","handleResume","handlePrint","setupRequestDescription","goToPreview","switchToOldPage","loadTabData","setRequestStatusText","handleReopen","reopen","handlePausing","_arguments","_callee3","persist","_context3","pause","resume","request_visibility","banner","request_due_date","request_date","request_submit_type","custom_fields","request_staff_cost","requestTimeline","requestTasks","clearableVisibilityOption","messageTemplateState","DocumentReviewStatusMap","reviewStatusBgColor","DocumentSeverityMap","severityStatusBgColor","severityDescription"],"mappings":"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","file":"js/RequestShowPage-618e90174b65702d8487.chunk.js","sourcesContent":["/**\n * @param {Object} doc document object\n * @param {String} clickable boolean\n *\n */\nimport {\n humanizedReviewStatus,\n reviewStatusColor,\n reviewStatusIconType,\n setReviewStatusAriaLabel\n} from '../pages/admin/document_review_status'\nimport {\n humanizedSeverityStatus,\n severityStatusColor\n} from '../pages/admin/document_severity_status'\n\nexport default function setupRiskTags(doc, clickable = false) {\n const riskTags = []\n const reviewStatus = doc.document_scan\n ? doc.document_scan.review_status\n : null\n const severity = doc.document_scan ? doc.document_scan.severity : null\n const isStatusClickable = !!reviewStatus && !!severity && clickable\n const isSeverityClickable = !!severity && severity !== 'na' && clickable\n\n riskTags.push({\n text: humanizedReviewStatus(reviewStatus),\n type: reviewStatusColor(reviewStatus),\n clickable: isStatusClickable,\n icon: isStatusClickable ? 'check-circle' : '',\n icon_type: reviewStatusIconType(reviewStatus),\n value: reviewStatus,\n tag_name: 'review_status',\n aria_label: setReviewStatusAriaLabel(reviewStatus)\n })\n\n riskTags.push({\n text: humanizedSeverityStatus(severity),\n type: severityStatusColor(severity),\n clickable: isSeverityClickable,\n icon: isSeverityClickable ? 'info-circle' : '',\n icon_type: 'regular',\n value: severity,\n tag_name: 'severity'\n })\n return riskTags\n}\n","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./risk_findings.vue?vue&type=style&index=0&id=584b4006&lang=scss\"","import Evaporate from 'evaporate'\nimport AWS from 'aws-sdk/global'\nimport NrSentry from '../utils/nr_sentry'\n\nexport default {\n methods: {\n setupEvaporateFileUploader() {\n Evaporate.create({\n aws_key: process.env.S3_MULTIPART_UPLOAD_KEY_ID, // Required\n bucket: process.env.S3_BUCKET, // Required\n awsRegion: process.env.S3_AWS_REGION, // Defaults to us-east-1\n signerUrl: '/aws_signature', // Required\n awsSignatureVersion: '4',\n // partSize - 20 MB per part. AWS's 10,000 part maximum means max upload size is 195 GB.\n partSize: 20 * 1024 * 1024,\n sendCanonicalRequestToSignerUrl: true,\n onlyRetryForSameFileName: true,\n computeContentMd5: true,\n mockLocalStorage: true,\n cryptoMd5Method: (data) => {\n return AWS.util.crypto.md5(data, 'base64')\n },\n cryptoHexEncodedHash256: (data) => {\n return AWS.util.crypto.sha256(data, 'hex')\n }\n })\n .then((data) => {\n // set state so we know Evaporate.js is ready to upload docs to s3\n this.evaporateResponse = data\n })\n .catch((e) => {\n const nrError = new Error('Evaporate.create failed', {\n cause: e\n })\n NrSentry.captureError(nrError)\n })\n }\n }\n}\n","export default {\n methods: {\n removeApplyFilterKeyEventListeners() {\n document.removeEventListener('keydown', this.applyFilterEventListener)\n document.removeEventListener('keyup', this.resetKeysEventListener)\n }\n }\n}\n","<template>\n <div class=\"risk-findings-container\">\n <a\n v-if=\"!!scan.document_path\"\n :href=\"scan.document_path\"\n @click.prevent=\"$emit('on-doc-title-click')\"\n class=\"m-0 t--weight-bold t--body\"\n >\n {{ scan.title }}\n </a>\n <p v-else class=\"m-0 t--body t--weight-bold\">{{ scan.title }}</p>\n <div>\n <nr-tag\n @on-click=\"$emit('on-review-status-click')\"\n clickable\n :label=\"setReviewStatusText\"\n :tag-color=\"setReviewStatusColor\"\n icon-color=\"white\"\n size=\"normal\"\n icon=\"check-circle\"\n icon-position=\"left\"\n />\n <nr-tag\n :label=\"setSeverityText\"\n :tag-color=\"setSeverityColor\"\n size=\"normal\"\n />\n </div>\n <div class=\"document-details\">\n <div v-if=\"isScannable\">\n <template v-if=\"scan.findings.length\">\n <div\n class=\"m-top-24 scan-findings-panel\"\n v-for=\"finding in scan.findings\"\n :key=\"finding.id\"\n >\n <div>\n <div class=\"t--weight-bold\">\n {{ finding.category }}\n </div>\n <div\n class=\"m-top-4\"\n v-for=\"(item, index) in finding.items\"\n :key=\"`${finding.id}-item-${index}`\"\n >\n <nr-tag :label=\"item.count\" :badge=\"true\" /> {{ item.type }}\n </div>\n </div>\n </div>\n </template>\n <template v-else>\n <div class=\"m-top-24 scan-findings-panel\">\n No results found during risk scan.\n </div>\n </template>\n </div>\n <div v-else-if=\"isPending\">\n <div class=\"m-top-24 scan-findings-panel\">\n This document has not been scanned.\n </div>\n </div>\n <div v-else>\n <div class=\"m-top-24 scan-findings-panel\">\n This document is not scannable due to its filetype.\n </div>\n </div>\n <div class=\"doc-info-panel\">\n <div class=\"t--weight-bold\">Document Information</div>\n <div class=\"t--weight-semi-bold m-top-8\">Request</div>\n <div>{{ scan.pretty_id }}</div>\n <div class=\"t--weight-semi-bold m-top-12\">Visibility</div>\n <div class=\"t--capitalize\">{{ scan.visibility }}</div>\n <div class=\"t--weight-semi-bold m-top-12\">Upload date</div>\n <div>{{ uploadDate }}</div>\n <div class=\"t--weight-semi-bold m-top-12\">File type</div>\n <div>{{ scan.file_type.toUpperCase() }}</div>\n <div class=\"t--weight-semi-bold m-top-12\">File size</div>\n <div>{{ fileSize }}</div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { mapActions } from 'vuex'\nimport NrTag from '@nextrequestco/components/src/components/NrTag/NrTag.vue'\nimport {\n humanizedSeverityStatus,\n severityStatusColor\n} from '../../admin/document_severity_status'\nimport {\n humanizedReviewStatus,\n reviewStatusColor\n} from '../../admin/document_review_status'\nimport { format as formatDate } from 'date-fns'\n\nexport default {\n name: 'risk-findings',\n props: {\n scan: {\n type: Object\n }\n },\n components: {\n 'nr-tag': NrTag\n },\n computed: {\n setSeverityText() {\n return humanizedSeverityStatus(this.scan.severity)\n },\n\n setSeverityColor() {\n return severityStatusColor(this.scan.severity)\n },\n\n setReviewStatusText() {\n return humanizedReviewStatus(this.scan.review_status)\n },\n\n setReviewStatusColor() {\n return reviewStatusColor(this.scan.review_status)\n },\n\n uploadDate() {\n return formatDate(new Date(this.scan.upload_date), 'MM/dd/yyyy')\n },\n fileSize() {\n return +this.scan.file_size ? `${this.scan.file_size}mb` : '--'\n },\n isScannable() {\n return this.scan.severity !== 'na' || !this.scan.severity\n },\n isPending() {\n return !this.scan.severity\n }\n },\n methods: {\n ...mapActions('admin', ['setDocReviewStatus'])\n }\n}\n</script>\n<style lang=\"scss\">\n@import '@nextrequestco/components/src/styles/colors.scss';\n@import '../../../../styles/base/_sizes.scss';\n@import '../../../../styles/base/_spacing.scss';\n@import '../../../../styles/base/_typography.scss';\n\n.risk-findings-container {\n max-width: 100%;\n\n button {\n padding: 1px 6px;\n }\n\n .document-details {\n display: flex;\n }\n\n .doc-info-panel {\n margin-left: auto;\n background-color: $white-ter;\n padding: 12px;\n border-radius: 8px;\n }\n}\n</style>\n","import { render } from \"./risk_findings.vue?vue&type=template&id=584b4006\"\nimport script from \"./risk_findings.vue?vue&type=script&lang=js\"\nexport * from \"./risk_findings.vue?vue&type=script&lang=js\"\n\nimport \"./risk_findings.vue?vue&type=style&index=0&id=584b4006&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { format as formatDate } from 'date-fns'\n\nexport default {\n methods: {\n humanFriendlyDateTime(date) {\n if (!date) {\n return ''\n }\n return formatDate(date, 'MM/dd/yy h:mmaaa')\n },\n humanFriendlyDate(date) {\n if (!date) {\n return ''\n } else if (typeof date === 'string') {\n return date\n } else {\n return formatDate(date, 'MM/dd/yyyy')\n }\n }\n }\n}\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./RequestFieldInput.vue?vue&type=style&index=0&id=ee81d586&scoped=true&lang=scss\"","export enum FieldType {\n Text = 'text',\n Checkbox = 'checkbox'\n}\n\nexport type RequestFieldValue = string\n\nexport interface TextSettings {\n isMandatory: boolean\n labelText: string | null\n hideLabel: boolean\n placeholderText: string | null\n helperText: string | null\n tooltipText: string | null\n isTextArea: boolean\n characterLimitMin: number | null\n characterLimitMax: number | null\n}\n\nexport interface CheckboxOption {\n uuid: string\n name: string\n}\n\nexport interface CheckboxSettings {\n isMandatory: boolean\n labelText: string | null\n hideLabel: boolean\n options: CheckboxOption[]\n}\n\nexport type TypedSettings =\n | {\n field_type: FieldType.Text // eslint-disable-line camelcase\n type_settings: TextSettings // eslint-disable-line camelcase\n }\n | {\n field_type: FieldType.Checkbox // eslint-disable-line camelcase\n type_settings: CheckboxSettings // eslint-disable-line camelcase\n }\n\nexport type FieldDefinition = {\n id: number\n version_id: number // eslint-disable-line camelcase\n visibility: string\n} & TypedSettings\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeClass as _normalizeClass, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, renderList as _renderList, Fragment as _Fragment, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ee81d586\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 1,\n class: \"checkbox-group\"\n}\nconst _hoisted_2 = {\n key: 1,\n class: \"help is-danger\"\n}\n\nimport { computed, watch } from 'vue'\nimport { isEmpty } from 'lodash'\nimport NrFormInput from '@nextrequestco/components/src/components/NrFormInput/nr-form-input.vue'\nimport {\n CheckboxOption,\n CheckboxSettings,\n FieldDefinition,\n FieldType,\n RequestFieldValue,\n TextSettings\n} from '../types/request_fields'\n\ntype TypedProps =\n | {\n field_type: FieldType.Text // eslint-disable-line camelcase\n type_settings: TextSettings // eslint-disable-line camelcase\n modelValue: string\n }\n | {\n field_type: FieldType.Checkbox // eslint-disable-line camelcase\n type_settings: CheckboxSettings // eslint-disable-line camelcase\n modelValue: CheckboxOption[]\n }\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'RequestFieldInput',\n props: {\n definition: {},\n modelValue: {}\n },\n emits: [\"update:modelValue\", \"on-validate\"],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\nconst emit = __emit\n\n// This combines the definition and modelValue into one type so that code can know the type of the `modelValue` depending on the `field_type`.\nconst typedProps = computed<TypedProps>(() => {\n let value = props.modelValue\n\n switch (props.definition.field_type) {\n case FieldType.Text:\n value = value || ''\n if (typeof value !== 'string') {\n throw new Error('Unexpected type')\n }\n return {\n field_type: props.definition.field_type,\n modelValue: value || '',\n type_settings: props.definition.type_settings\n }\n case FieldType.Checkbox:\n value = value || []\n if (!Array.isArray(value)) {\n throw new Error('Unexpected type')\n }\n return {\n field_type: props.definition.field_type,\n modelValue: value,\n type_settings: props.definition.type_settings\n }\n default:\n throw new Error('Unexpected field type')\n }\n})\n\nconst noLabel = computed(\n () =>\n props.definition.type_settings.hideLabel ||\n isEmpty(props.definition.type_settings.labelText)\n)\n\nconst isChecked = (\n option: CheckboxOption,\n currentlyChecked: CheckboxOption[]\n) => {\n return currentlyChecked.some((checked) => checked.uuid === option.uuid)\n}\n\nconst checkOption = (\n option: CheckboxOption,\n checked: boolean,\n currentlyChecked: CheckboxOption[]\n) => {\n const alreadyChecked = isChecked(option, currentlyChecked)\n if (alreadyChecked && !checked) {\n const selectedOptions: CheckboxOption[] = currentlyChecked.filter(\n (other: CheckboxOption) => other.uuid !== option.uuid\n )\n emit('update:modelValue', selectedOptions)\n } else if (!alreadyChecked && checked) {\n const selectedOptions: CheckboxOption[] = [\n option,\n ...(currentlyChecked || [])\n ]\n emit('update:modelValue', selectedOptions)\n }\n}\nconst isCheckboxValid = computed(() => {\n return (\n !typedProps.value.type_settings.isMandatory ||\n (typedProps.value.modelValue && typedProps.value.modelValue.length > 0)\n )\n})\n\nwatch(\n isCheckboxValid,\n (val) => {\n if (typedProps.value.field_type === 'checkbox') {\n emit('on-validate', props.definition.id, val)\n }\n },\n { immediate: true }\n)\n\nconst handleFormInputValidation = (isValid: boolean) => {\n emit('on-validate', props.definition.id, isValid)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (typedProps.value.field_type === _unref(FieldType).Text)\n ? (_openBlock(), _createBlock(NrFormInput, {\n key: 0,\n type: \"text\",\n modelValue: typedProps.value.modelValue,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = \n (fieldValue) => emit('update:modelValue', fieldValue)\n ),\n tag: typedProps.value.type_settings.isTextArea ? 'textarea' : 'input',\n label: typedProps.value.type_settings.labelText,\n hideLabel: noLabel.value,\n class: _normalizeClass(noLabel.value ? 'request-field-no-label' : null),\n placeholder: typedProps.value.type_settings.placeholderText,\n help: typedProps.value.type_settings.helperText,\n required: typedProps.value.type_settings.isMandatory,\n maxLength: typedProps.value.type_settings.characterLimitMax?.toString(),\n minLength: typedProps.value.type_settings.characterLimitMin?.toString(),\n withTooltip: !_unref(isEmpty)(typedProps.value.type_settings.tooltipText),\n iconTooltipText: typedProps.value.type_settings.tooltipText,\n onOnValidate: handleFormInputValidation\n }, null, 8, [\"modelValue\", \"tag\", \"label\", \"hideLabel\", \"class\", \"placeholder\", \"help\", \"required\", \"maxLength\", \"minLength\", \"withTooltip\", \"iconTooltipText\"]))\n : _createCommentVNode(\"\", true),\n (typedProps.value.field_type === _unref(FieldType).Checkbox)\n ? (_openBlock(), _createElementBlock(\"fieldset\", _hoisted_1, [\n (typedProps.value.type_settings.labelText)\n ? (_openBlock(), _createElementBlock(\"legend\", {\n key: 0,\n class: _normalizeClass(noLabel.value ? 'is-sr-only' : 'checkbox-header')\n }, _toDisplayString(typedProps.value.type_settings.labelText) + \" \" + _toDisplayString(typedProps.value.type_settings.isMandatory ? '*' : ''), 3))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(typedProps.value.type_settings.options, (option) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: option.uuid,\n class: \"checkbox-item\"\n }, [\n _createVNode(NrFormInput, {\n type: \"checkbox\",\n label: option.name,\n modelValue: isChecked(option, typedProps.value.modelValue),\n \"onUpdate:modelValue\": \n (checked) =>\n checkOption(option, checked, typedProps.value.modelValue)\n \n }, null, 8, [\"label\", \"modelValue\", \"onUpdate:modelValue\"])\n ]))\n }), 128)),\n (!isCheckboxValid.value)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_2, \" At least one option must be selected. \"))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./RequestFieldInput.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./RequestFieldInput.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./RequestFieldInput.vue?vue&type=style&index=0&id=ee81d586&scoped=true&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-ee81d586\"]])\n\nexport default __exports__","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./VisibilityBanner.vue?vue&type=style&index=0&id=32823e48&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./VisibilityBanner.vue?vue&type=style&index=1&id=32823e48&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--6-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--6-2!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./RequestShowHeader.vue?vue&type=style&index=0&id=11621d10&scoped=true&lang=css\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./request-expiration-date.vue?vue&type=style&index=0&id=18991002&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./RequestDates.vue?vue&type=style&index=0&id=88d0b30c&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./RequesterInfo.vue?vue&type=style&index=0&id=a41cbbd0&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./RequestPayments.vue?vue&type=style&index=0&id=c49e9ab2&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./request-staff-hours.vue?vue&type=style&index=0&id=390a67e2&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./RequestAssigned.vue?vue&type=style&index=0&id=437984fd&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./RequestStaffTime.vue?vue&type=style&index=0&id=1f6b2305&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./TimelineTab.vue?vue&type=style&index=0&id=16b336cf&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./RiskReport.vue?vue&type=style&index=0&id=5e758fa6&scoped=true&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./DocumentTools.vue?vue&type=style&index=0&id=7f947e6b&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./FoldersSidebar.vue?vue&type=style&index=0&id=3d688cd3&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./DocumentCardActions.vue?vue&type=style&index=0&id=bfb283b2&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./DocumentsTab.vue?vue&type=style&index=0&id=3f9c65ac&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./TasksTab.vue?vue&type=style&index=0&id=ca011a6e&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./InvoiceTimelineEvent.vue?vue&type=style&index=0&id=60c714d8&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./RequestTabs.vue?vue&type=style&index=0&id=de52efda&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./RequestInfoHeader.vue?vue&type=style&index=0&id=b4edf2fe&scoped=true&lang=scss\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./ExternalMessageModal.vue?vue&type=style&index=0&id=4837780c&lang=scss\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./InternalMessageModal.vue?vue&type=style&index=0&id=6f9722c9&lang=scss\"","export * from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./InvoiceItemMenu.vue?vue&type=style&index=0&id=24174fc0&lang=scss\"","export * from \"-!../../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./InvoiceMessageModal.vue?vue&type=style&index=0&id=195b8d4c&lang=scss\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./NoteMessageModal.vue?vue&type=style&index=0&id=6b8e4ee4&lang=scss\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./RequestTextModal.vue?vue&type=style&index=0&id=a60cf1c4&lang=scss\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./TaskModal.vue?vue&type=style&index=0&id=57c552e2&lang=scss\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./MessageBoxes.vue?vue&type=style&index=0&id=2c1ede9d&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./RequestFieldEditModal.vue?vue&type=style&index=0&id=7d7a88e2&lang=scss&scoped=true\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./RequestPaymentsModal.vue?vue&type=style&index=0&id=657b6a6d&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./RequestShowCycleArrows.vue?vue&type=style&index=0&id=57c8ccb7&scoped=true&lang=scss\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js!../../../../../../node_modules/css-loader/dist/cjs.js??ref--7-1!../../../../../../node_modules/vue-loader/dist/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--7-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--7-3!../../../../../../node_modules/vue-loader/dist/index.js??ref--21-0!./RequestShowPage.vue?vue&type=style&index=0&id=85b9789a&lang=scss\"","<template>\n <main id=\"skip-to-main-content\" class=\"request-show\" :key=\"rerenderKey\">\n <VisibilityBanner\n v-if=\"\n $can('update', 'Request') ||\n (isCurrentRequester && request.request_visibility != 'published')\n \"\n :account=\"$store.state.account\"\n :request-visibility=\"request.request_visibility\"\n :department-names=\"request.department_names\"\n />\n <div\n v-if=\"$can('read', 'staff_only_items') && legacyRequestPageShowEnabled\"\n class=\"container block preview-switch-container\"\n >\n <NrButton\n class=\"preview-switch\"\n variant=\"bordered-neutral\"\n @click=\"openSwitchToPreviewModal\"\n >\n Switch to legacy page\n </NrButton>\n </div>\n <NrModal\n title=\"Return to the legacy request page?\"\n primaryButtonText=\"Switch to legacy page\"\n secondaryButtonText=\"Cancel\"\n :hasSecondaryButton=\"true\"\n :show=\"currentAction === 'preview-modal'\"\n @on-close-click=\"setCurrentAction(null)\"\n @on-secondary-click=\"setCurrentAction(null)\"\n @on-primary-click=\"goToPreview\"\n >\n <p>\n By switching back to the legacy request page you will be able to view\n the same request data but in an older format. You may experience\n degraded performance and some new features, such as additional\n information from custom fields, will not be available. This will only\n affect your user account, and you can return to the new request page at\n any time.\n </p>\n </NrModal>\n <RequestPaymentsModal\n :show=\"activeModal === 'requestPaymentsDialog'\"\n :invoice=\"firstOutstandingInvoice\"\n />\n <div class=\"container block no-margin-bottom\">\n <RequestShowHeader>\n <template v-slot:id>\n <h1 class=\"is-size-3 has-text-black has-text-weight-bold\">\n Request {{ prettyId }}\n </h1>\n </template>\n <template v-slot:banner>\n <NrBanner :type=\"setRequestStatusText()\" v-if=\"requestPresent\" />\n <span v-else class=\"banner-tray\">\n <NrLoadingAnimation :count=\"1\" />\n </span>\n </template>\n <template\n v-slot:invoiceNotice\n v-if=\"\n isCurrentRequester &&\n anyOutstandingInvoice &&\n $store.state.account.invoicing_feature_flag\n \"\n >\n <span class=\"payment-notice\">\n <div class=\"payment-notice-explanation\">\n <NrIcon class=\"large-icon inline-icon\" name=\"info-circle\" />\n <p>\n An invoice has been sent, please pay in order to proceed with\n the process.\n </p>\n </div>\n <NrButton\n class=\"no-wrap payment-notice-button\"\n variant=\"bordered-primary\"\n aria-label=\"Pay invoice\"\n @click=\"setActiveModal('requestPaymentsDialog')\"\n >\n <NrIcon class=\"inline-icon\" name=\"dollar-sign\" /> Pay invoice\n </NrButton>\n </span>\n </template>\n <template v-slot:icons>\n <template v-if=\"requestPresent\">\n <span v-for=\"icon in icons\" :key=\"`nr-${icon.name}-${icon.label}`\">\n <NrTooltip :label=\"icon.label\">\n <span>\n <NrIconButton\n size=\"large\"\n variant=\"minimal-neutral\"\n :icon=\"{ name: icon.name, type: 'regular' }\"\n :aria-label=\"icon.label\"\n :class=\"`action-buttons action-buttons-${icon.name}`\"\n :disabled=\"iconDisabled(icon.name)\"\n @click=\"handleActions(icon.name)\"\n />\n </span>\n </NrTooltip>\n </span>\n </template>\n <NrLoadingAnimation v-else :count=\"1\" />\n </template>\n <template v-if=\"cyclingEnabled\" v-slot:cycling>\n <RequestShowCycleArrows :prettyId=\"prettyId\" />\n </template>\n <template v-if=\"cyclingEnabled\" v-slot:filters>\n <NrTooltip :label=\"cycleTagTooltip\">\n <NrTag\n :label=\"cycleTagText\"\n size=\"normal\"\n tagColor=\"purple\"\n badge\n />\n </NrTooltip>\n </template>\n </RequestShowHeader>\n </div>\n\n <div class=\"container block\">\n <div class=\"columns mobile-order\">\n <div class=\"column is-4-desktop mobile-order-2\">\n <RequestDates\n :prettyId=\"this.prettyId\"\n :dueDate=\"request.request_due_date\"\n :received=\"request.request_date\"\n :fulfillment=\"request.anticipated_fulfilled_at\"\n :expiration=\"request.expiration_date\"\n :exempt-from-retention=\"request.exempt_from_retention\"\n :request-state=\"request.request_state\"\n :request-submit-type=\"request.request_submit_type\"\n :can-see-request-due-date=\"\n $can('read', 'staff_only_items') ||\n $store.state.account.show_due_date\n \"\n :can-see-request-expiration-date=\"\n $can('read', 'staff_only_items') &&\n $store.state.account.retention &&\n request.request_state === 'Closed'\n \"\n />\n <RequesterInfo\n :prettyId=\"prettyId\"\n :name=\"request.requester && request.requester.name\"\n :email=\"request.requester && request.requester.email\"\n :address=\"request.requester && request.requester.address\"\n :company=\"request.requester && request.requester.company\"\n :phone=\"request.requester && request.requester.phone\"\n :requester-id=\"request.requester && request.requester.id\"\n :can-see-requester-panel=\"\n $can('read', 'staff_only_items') ||\n isCurrentRequester ||\n $store.state.account.show_requester\n \"\n :can-see-requester-details=\"\n $can('read', 'staff_only_items') || isCurrentRequester\n \"\n :can-see-email-statuses=\"$can('read', 'staff_only_items')\"\n />\n <RequestFieldValues\n v-if=\"!isEmpty(requestFieldValues)\"\n :fields=\"requestFieldValues\"\n />\n <CustomFields\n v-if=\"!isEmpty(request.custom_fields)\"\n :fields=\"request.custom_fields\"\n :prettyId=\"prettyId\"\n />\n <RequestPayments\n v-if=\"\n accountPaymentsEnabled &&\n (canSeeStaffOnlyItems || isCurrentRequester)\n \"\n :request-invoices=\"requestInvoices\"\n />\n <RequestStaffHours\n v-if=\"canSeeRequestStaffHours\"\n :staff-cost=\"request.request_staff_cost\"\n :total-staff-hours=\"request.request_staff_hours\"\n @set-staff-time-for-edit=\"setSelectedStaffHour($event)\"\n />\n <RequestAssigned\n :account=\"account\"\n :request-id=\"request.pretty_id\"\n :account-departments=\"account.departments\"\n :departments=\"request.departments\"\n :prettyId=\"this.prettyId\"\n :visibility=\"request.visibility\"\n :poc=\"request.poc\"\n :requestStaff=\"requestStaff\"\n :staffLimit=\"staffLimit\"\n />\n <RequestStaffTime\n v-if=\"canSeeStaffOnlyItems\"\n v-on:reset-staff-time=\"setSelectedStaffHour({})\"\n :staff-time=\"selectedStaffHour\"\n />\n <RequestTags\n v-if=\"$can('update', 'Request')\"\n :requestId=\"request.pretty_id\"\n :tags=\"requestTags\"\n />\n </div>\n <div class=\"column is-8-desktop mobile-order-1\">\n <!-- request_text is sanitized here: https://github.com/nextrequest/nextrequest/blob/83b5a5/app/views/client/requests/show.json.jbuilder#L3 -->\n <RequestInfoHeader :sanitizedDescription=\"request.request_text\" />\n <RequestPinnedNote />\n <RequestTabs\n :timeline=\"requestTimeline\"\n :documents=\"documents\"\n :documentsFolders=\"documentsFolders\"\n :tasks=\"requestTasks\"\n @tab-change=\"loadTabData\"\n @handle-timeline-filters=\"handleTimelineFilters\"\n @handle-tasks-status-filters=\"handleTasksStatusFilters\"\n />\n </div>\n </div>\n </div>\n\n <Footer :account=\"$store.state.account\" />\n\n <MessageBoxes />\n\n <DocumentUploadModal\n :show=\"currentAction === 'paperclip'\"\n :enable-folder-assignment=\"canSeeStaffOnlyItems\"\n :enable-doc-visibility-assignment=\"canSeePublisherOnlyItems\"\n :enable-links-tab=\"canSeeStaffOnlyItems\"\n :is-modal-active=\"currentAction === 'paperclip'\"\n :account=\"$store.state.account\"\n :folders=\"folders\"\n :folder=\"folder\"\n :clearableVisibilityOption=\"false\"\n @search-folder=\"handleFolderSearch\"\n @selected-folder=\"handleFolderSelection\"\n @create-folder=\"handleFolderCreation\"\n @on-message-template-search=\"searchMessageTemplates\"\n @on-message-template-scroll=\"loadMoreMessageTemplates\"\n :messageTemplateState=\"dataFetchState.message_templates\"\n :request-id=\"prettyId\"\n :s3-bucket=\"s3Bucket\"\n :evaporate-response=\"evaporateResponse\"\n :uploaded-docs=\"uploadedDocs\"\n :message-templates=\"filteredMessageTemplates\"\n @on-file-upload-complete=\"addUploadedDocToState\"\n @on-submit=\"saveDocFiles\"\n @on-close-modal=\"\n () => {\n folder = null\n setCurrentAction(null)\n }\n \"\n />\n\n <NrModal\n size=\"small\"\n title=\"Reopen request\"\n primaryButtonText=\"Reopen request\"\n secondaryButtonText=\"Cancel\"\n :hasSecondaryButton=\"true\"\n :show=\"currentAction === 'folder-open'\"\n :disableButtons=\"reopening\"\n @on-close-click=\"setCurrentAction(null)\"\n @on-secondary-click=\"setCurrentAction(null)\"\n @on-primary-click=\"handleReopen\"\n ref=\"reopen-modal\"\n >\n <p>You are about to reopen this request. Do you want to continue?</p>\n </NrModal>\n <NrModal\n :show=\"currentAction === 'pause'\"\n :hasSecondaryButton=\"true\"\n :disableButtons=\"pausing\"\n primaryButtonText=\"Pause request\"\n secondaryButtonText=\"Cancel\"\n title=\"Pause request\"\n @on-close-click=\"handlePausing(false)\"\n @on-secondary-click=\"handlePausing(false)\"\n @on-primary-click=\"handlePausing(true)\"\n >\n <p>\n If you are waiting for the requester and no longer want to receive\n overdue/due soon notices, pause the request. The request will be\n automatically resumed if the requester takes action (posts a new\n message, uploads a document, or pays an invoice).\n </p>\n <br />\n <NrFormLabel>Comments (posts to staff timeline only)</NrFormLabel>\n <NrEditor\n autofocus\n bold\n bulletList\n italic\n link\n orderedList\n placeholder=\"Example: Waiting for a requester to provide specific dates and times of their request.\"\n underline\n v-model=\"pauseComment\"\n />\n </NrModal>\n <close-request-modal\n v-if=\"canSeePublisherOnlyItems\"\n :active=\"currentAction === 'check-square'\"\n @on-close=\"setCurrentAction(null)\"\n @on-submit=\"submitCloseRequest\"\n />\n </main>\n</template>\n<script>\nimport { throttle, isEmpty, truncate, uniqBy } from 'lodash'\nimport VisibilityBanner from './VisibilityBanner.vue'\nimport RequestShowHeader from './RequestShowHeader.vue'\nimport NrFormLabel from '@nextrequestco/components/src/components/form-elements/nr-form-label.vue'\nimport Footer from '../../../vue_shared/components/Footer.vue'\nimport { mapActions, mapState, mapGetters, mapMutations } from 'vuex'\nimport RequestDates from './RequestDates.vue'\nimport RequesterInfo from './RequesterInfo.vue'\nimport RequestPayments from './RequestPayments.vue'\nimport RequestStaffHours from './request-staff-hours.vue'\nimport RequestAssigned from './RequestAssigned.vue'\nimport RequestStaffTime from './RequestStaffTime.vue'\nimport RequestTabs from './RequestTabs.vue'\nimport RequestTags from './RequestTags.vue'\nimport RequestInfoHeader from './RequestInfoHeader.vue'\nimport RequestPinnedNote from './RequestPinnedNote.vue'\nimport MessageBoxes from './MessageBoxes'\nimport CustomFields from './CustomFields.vue'\nimport RequestFieldValues from './RequestFieldValues.vue'\nimport NrBanner from '@nextrequestco/components/src/components/NrBanner/NrBanner.vue'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport DocumentUploadModal from '@nextrequestco/components/src/components/DocumentUploadModal/DocumentUploadModal.vue'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrEditor from '@nextrequestco/components/src/components/NrEditor/nr-editor.vue'\nimport NrButton from '@nextrequestco/components/src/components/NrButton/nr-button.vue'\nimport NrIcon from '@nextrequestco/components/src/components/NrIcon/NrIcon.vue'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrTag from '@nextrequestco/components/src/components/NrTag/NrTag.vue'\nimport CloseRequestModal from './CloseRequestModal.vue'\nimport RequestPaymentsModal from './RequestPaymentsModal'\nimport setupEvaporateFileUploader from '../../../mixins/init_evaporate.js'\nimport API from '../../../vue_shared/api'\nimport RequestShowCycleArrows from './RequestShowCycleArrows.vue'\nimport NrLoadingAnimation from '@nextrequestco/components/src/components/NrLoadingAnimation/nr-loading-animation.vue'\nimport NrSentry from '../../../utils/nr_sentry'\n\nexport default {\n name: 'RequestShowPage',\n props: {\n prettyId: {\n required: true\n }\n },\n\n components: {\n NrModal,\n NrEditor,\n NrTooltip,\n NrBanner,\n NrButton,\n NrIcon,\n NrIconButton,\n NrFormLabel,\n NrTag,\n NrLoadingAnimation,\n VisibilityBanner,\n Footer,\n RequestDates,\n RequesterInfo,\n RequestPayments,\n RequestStaffHours,\n RequestStaffTime,\n RequestAssigned,\n RequestTabs,\n RequestTags,\n RequestShowHeader,\n RequestInfoHeader,\n RequestPaymentsModal,\n RequestPinnedNote,\n MessageBoxes,\n CustomFields,\n DocumentUploadModal,\n CloseRequestModal,\n RequestShowCycleArrows,\n RequestFieldValues\n },\n\n mixins: [setupEvaporateFileUploader],\n mounted() {\n this.reinitializeState()\n this.rerender()\n this.setupRequestShowPageData({\n ability: this.$ability,\n prettyId: this.prettyId\n })\n this.fetchTimeline({ pretty_id: this.prettyId, filter_categories: [] })\n this.setupEvaporateFileUploader()\n this.s3Bucket = process.env.S3_BUCKET\n },\n\n beforeRouteEnter(to, _from, next) {\n next((vm) => {\n // access to component public instance via `vm`\n vm.setupToasts(vm, to)\n })\n },\n\n watch: {\n $route(prev, next) {\n if (prev.name !== next.name) {\n return\n }\n if (prev.params.prettyId === next.params.prettyId) {\n return\n }\n this.reinitializeState()\n this.rerender()\n this.setupRequestShowPageData({\n ability: this.$ability,\n prettyId: this.prettyId\n })\n },\n prettyId(newVal) {\n this.fetchTimeline({ pretty_id: newVal, filter_categories: [] })\n this.fetchDocuments({ request_id: newVal })\n this.fetchDocumentsFolders({ request_id: newVal })\n if (this.canSeeStaffOnlyItems) {\n this.fetchRequestTasks({\n pretty_id: newVal,\n params: { user_id: null, task_status: null, page_number: 1 }\n })\n }\n this.setCurrentAction('')\n },\n\n previewRequestPage() {\n if (!this.previewRequestPage) {\n window.location.reload()\n }\n },\n currentAction(next, prev) {\n this.uploadedDocs = []\n if (!next || next === prev) {\n return\n }\n if (next === 'paperclip') {\n if (!this.documentsFolders.length) {\n this.fetchDocumentsFolders({ request_id: this.prettyId })\n }\n }\n }\n },\n\n data() {\n return {\n reopening: false,\n pausing: false,\n checked: false,\n folder: null,\n externalMessageRequired: false,\n staffLimit: 20,\n previewOn: true,\n uploadedDocs: [],\n evaporateResponse: {},\n s3Bucket: '',\n docUploadFolders: [],\n pauseComment: '',\n rerenderKey: 0\n }\n },\n\n computed: {\n ...mapState('request_show', [\n 'activeModal',\n 'request',\n 'documents',\n 'documentsFolders',\n 'requestStaff',\n 'requestTags',\n 'requestTasks',\n 'requestTimeline',\n 'requestInvoices',\n 'currentDocumentFilters',\n 'previewRequestPage',\n 'currentAction',\n 'dataFetchState',\n 'dataOptions',\n 'filteredRequestLoading',\n 'selectedStaffHour'\n ]),\n\n ...mapState('requests', ['requests', 'filters', 'tableHeaderTitleTooltip']),\n ...mapGetters('requests', ['activeFilters']),\n\n ...mapState('request_show', {\n folders(state) {\n return uniqBy(\n state.documentsFolders.map((folder) => ({\n label: folder.folder_name,\n value: folder.id,\n children: folder.has_child_folders\n })),\n 'value'\n )\n }\n }),\n\n anyOutstandingInvoice() {\n return this.requestInvoices.some((invoice) => !!invoice.outstanding)\n },\n\n firstOutstandingInvoice() {\n return this.requestInvoices.find((invoice) => !!invoice.outstanding)\n },\n\n legacyRequestPageShowEnabled() {\n return this.account.legacy_request_show_enabled\n },\n\n ...mapState(['account', 'currentUser']),\n canSeeRequestStaffHours() {\n return (\n this.request.request_staff_hours &&\n this.request.request_staff_hours.length &&\n this.$ability.can('read', 'staff_only_items')\n )\n },\n canSeePublisherOnlyItems() {\n return this.$ability.can('read', 'publisher_only_items')\n },\n canSeeStaffOnlyItems() {\n return this.$ability.can('read', 'staff_only_items')\n },\n canUpdateRequest() {\n return this.$ability.can('update', 'Request')\n },\n departmentNames() {\n if (this.request.department_names !== 'None assigned') {\n return this.request.department_names.split(', ')\n }\n return ''\n },\n\n currentUserPresent() {\n return isEmpty(this.currentUser) !== true\n },\n\n requestPresent() {\n return isEmpty(this.request) !== true\n },\n\n canSeeExternalMessageIcon() {\n return (\n this.canSeePublisherOnlyItems ||\n (this.currentUserPresent && this.isCurrentRequester)\n )\n },\n\n canSeeNoteMessageIcon() {\n return (\n this.canSeeStaffOnlyItems &&\n ['wsu', 'albanycounty'].indexOf(this.$store.state.account.subdomain)\n )\n },\n\n canSeeInvoiceIcon() {\n const adminOrPublisher =\n this.$ability.can('publish', 'Request') ||\n this.$ability.can('manage', 'all')\n\n return this.account && this.account.payments && adminOrPublisher\n },\n\n accountPaymentsEnabled() {\n return this.account.payments\n },\n\n isCurrentRequester() {\n if (this.request.is_current_requester) {\n return true\n }\n\n return this.currentUser?.id === this.request?.requester?.id\n },\n\n canSeeUploadIcon() {\n return (\n this.currentUserPresent &&\n (this.canSeeStaffOnlyItems || this.isCurrentRequester)\n )\n },\n\n canManageRequest() {\n return this.$ability.can('manage', 'Request')\n },\n\n canSeeUnpauseIcon() {\n return (\n this.canManageRequest &&\n this.request.request_state !== 'Closed' &&\n this.request.request_state === 'Waiting for requester'\n )\n },\n\n canSeePauseIcon() {\n return (\n this.canManageRequest &&\n !['Waiting for requester', 'Closed'].includes(\n this.request.request_state\n )\n )\n },\n\n canSeeCloseIcon() {\n return this.canManageRequest && this.request.request_state !== 'Closed'\n },\n\n canSeeReopenIcon() {\n return this.canManageRequest && this.request.request_state === 'Closed'\n },\n\n canSeeRapidReviewIcon() {\n return (\n this.$store.state.account &&\n this.$store.state.account.document_review &&\n this.$store.state.account.redaction &&\n this.canSeeStaffOnlyItems\n )\n },\n\n currentRequestIndex() {\n return this.requests.findIndex(\n (request) => String(this.prettyId) === String(request.id)\n )\n },\n\n cyclingEnabled() {\n return this.filters.page_number === 1 && this.currentRequestIndex >= 0\n },\n\n cycleTagTooltip() {\n if (this.cyclingEnabled) {\n return this.tableHeaderTitleTooltip\n } else {\n return 'Only 100 requests can by cycled at one time. Adjust filters to narrow the scope of your search.'\n }\n },\n\n cycleTagText() {\n if (this.cyclingEnabled) {\n return `${this.currentRequestIndex + 1} of ${\n this.requests.length > 99 ? 'many' : this.requests.length\n }${this.activeFilters.length > 0 ? ' with filters active' : ''}`\n } else {\n return 'request cycling not active'\n }\n },\n\n icons() {\n return [\n { name: 'tools', label: 'Launch RapidReview' },\n {\n name: 'envelope',\n label: this.isCurrentRequester\n ? 'Message agency'\n : 'Message requester'\n },\n { name: 'comments', label: 'Message staff' },\n { name: 'edit', label: 'Add note' },\n { name: 'clock', label: 'Add staff time' },\n {\n name: 'dollar-sign',\n label: this.anyOutstandingInvoice\n ? 'Invoice already sent, awaiting payment'\n : 'Add invoice'\n },\n {\n name: 'paperclip',\n label: this.iconDisabled('paperclip')\n ? \"Can't upload to closed request\"\n : 'Add document'\n },\n { name: 'pause', label: 'Pause request' },\n { name: 'play', label: 'Resume request' },\n { name: 'folder-open', label: 'Reopen request' },\n { name: 'check-square', label: 'Close request' },\n { name: 'tasks', label: 'Add task' },\n { name: 'print', label: 'Print request' }\n ].filter((icon) => this.iconVisible(icon.name))\n },\n filteredMessageTemplates() {\n return this.dataOptions.message_templates.map((item) => ({\n value: item.id,\n label: item.message_template_name,\n description: item.message_template_description\n }))\n },\n requestFieldValues() {\n return this.request.request_field_values\n }\n },\n\n methods: {\n isEmpty,\n ...mapActions('requests', ['fetchRequests']),\n\n ...mapActions('request_show', [\n 'addDocument',\n 'addFolder',\n 'closeRequest',\n 'fetchDocuments',\n 'fetchDocumentsFolders',\n 'fetchDataOptions',\n 'fetchRequestTags',\n 'fetchRequestTasks',\n 'fetchTimeline',\n 'pollBulkJobs',\n 'pause',\n 'reopen',\n 'resume',\n 'reinitializeState',\n 'setActiveModal',\n 'setCurrentAction',\n 'setDisplayCreateInvoiceMsgBox',\n 'setDisplayCreateStaffTimeBox',\n 'setDisplayCreateTaskMsgBox',\n 'setDisplayExternalMsgBox',\n 'setDisplayInternalMsgBox',\n 'setDisplayMsgBox',\n 'setupRequestShowPageData',\n 'submitExternalMessage',\n 'submitInternalMessage',\n 'switchToOldPage',\n 'updateRequest'\n ]),\n ...mapActions('documents', ['saveDocs', 'createFolder']),\n ...mapMutations('request_show', ['setSelectedStaffHour']),\n\n async setupToasts(vm, to) {\n const query = to.query\n let clearQuery = false\n if (query?.toast_info) {\n vm.$toasted.show(query.toast_info)\n clearQuery = true\n }\n if (query?.toast_error) {\n vm.$toasted.error(query.toast_error)\n clearQuery = true\n }\n if (query?.toast_success) {\n vm.$toasted.success(query.toast_success)\n clearQuery = true\n }\n if (clearQuery) {\n // Clear the query params so as to not show the toasts again on refresh, or if the URL is copied.\n vm.$router.replace(`/requests/${vm.prettyId}`)\n }\n },\n\n openSwitchToPreviewModal() {\n this.setCurrentAction('preview-modal')\n },\n\n searchMessageTemplates: throttle(function (searchText = '') {\n this.fetchDataOptions({ searchText, dataType: 'message_templates' })\n }, 400),\n\n loadMoreMessageTemplates: throttle(function () {\n this.fetchDataOptions({\n searchText: this.dataFetchState.message_templates.search_text,\n dataType: 'message_templates'\n })\n }, 400),\n\n rerender() {\n this.rerenderKey += 1\n },\n\n submitCloseRequest(params) {\n this.closeRequest({\n prettyId: this.request.pretty_id,\n description: params.close_description,\n reasons: params.close_reasons,\n state: params.state\n }).then(() => {\n this.fetchTimeline({ pretty_id: this.prettyId, filter_categories: [] })\n if (\n params.visibility &&\n params.visibility !== this.request.visibility\n ) {\n this.updateRequest({\n request_id: this.request.pretty_id,\n visibility: params.visibility\n }).catch((e) => {\n this.$toasted.error('There was an error updating the request')\n NrSentry.captureError(e)\n })\n }\n this.setCurrentAction(null)\n })\n },\n navigateToRapidReview() {\n this.$router.push({ path: `/app/rapidreview/${this.prettyId}` })\n },\n addUploadedDocToState(val) {\n this.uploadedDocs.push(val)\n },\n saveDocFiles(params) {\n if (this.isCurrentRequester) {\n Object.assign(params, { state: 'requester' })\n }\n\n API.saveDocs(params)\n .then((response) => {\n if (!response.data.documents) return\n response.data.documents.forEach(this.addDocument)\n this.$toasted.success('Successfully uploaded document(s)')\n this.fetchTimeline({\n pretty_id: this.prettyId,\n filter_categories: []\n })\n this.fetchDocuments({ request_id: this.prettyId })\n this.fetchDocumentsFolders({ request_id: this.prettyId })\n })\n .catch((err) => {\n if (err.response?.status === 403) {\n this.$toasted.error(\n 'You do not have permission to upload documents.'\n )\n } else {\n NrSentry.captureError(\n new Error('Documents upload failed', { cause: err })\n )\n this.$toasted.error('An error occured. Please try again.')\n }\n })\n },\n handleFolderSearch: throttle(function (val = '') {\n const payload = { request_id: this.prettyId }\n\n if (val) {\n payload.search_text = val\n }\n\n API.fetchRequestDocumentsFolders(payload).then((response) => {\n const { folders } = response.data\n this.docUploadFolders = folders\n })\n }, 400),\n\n async handleFolderCreation(folder) {\n // Removing the folder association to this document pre-submission\n if (!folder) {\n this.folder = null\n return\n }\n\n // This indicates that we are creating a new folder\n if (typeof folder === 'string' || !folder.value) {\n this.folder = 'pending'\n try {\n const newFolder = await this.createFolder(\n typeof folder === 'object' ? folder.label : folder\n )\n this.handleFolderSelection({\n value: newFolder.id,\n label: newFolder.folder_name\n })\n this.addFolder(this.folder)\n } catch (_err) {\n this.folder = null\n }\n }\n },\n\n handleFolderSelection(folder) {\n // Removing the folder association to this document pre-submission\n if (!folder) {\n this.folder = null\n return\n }\n\n // Associate a folder to this document\n this.folder = folder\n },\n // eslint-disable-next-line camelcase\n handleTimelineFilters({ filters, page_number }) {\n const categories = filters.map((item) => item.id)\n if (categories.includes('all timeline events')) {\n this.fetchTimeline({\n pretty_id: this.prettyId,\n filter_categories: [\n 'messages',\n 'notes',\n 'documents',\n 'status',\n 'due date',\n 'tasks',\n 'staff',\n 'visibility',\n 'tags',\n 'invoices',\n 'hours'\n ],\n page_number\n })\n } else {\n this.fetchTimeline({\n pretty_id: this.prettyId,\n filter_categories: categories,\n page_number\n })\n }\n },\n\n handleTasksStatusFilters(val) {\n this.fetchRequestTasks({\n pretty_id: this.prettyId,\n params: {\n user_id: val.assignee,\n task_status: val.type,\n page_number: val.pageNumber\n }\n })\n },\n\n handleActions(val) {\n switch (val) {\n case 'dollar-sign':\n if (this.anyOutstandingInvoice) {\n break\n } else {\n this.setCurrentAction(val)\n this.setDisplayCreateInvoiceMsgBox(true)\n break\n }\n case 'clock':\n this.setActiveModal(val)\n this.setDisplayCreateStaffTimeBox(true)\n break\n case 'envelope':\n this.setCurrentAction(val)\n this.setDisplayCreateTaskMsgBox({ display: false })\n this.setDisplayMsgBox(true)\n break\n case 'comments':\n this.setCurrentAction(val)\n this.setDisplayCreateTaskMsgBox({ display: false })\n this.setDisplayMsgBox(true)\n break\n case 'edit':\n this.setCurrentAction(val)\n this.setDisplayCreateTaskMsgBox({ display: false })\n this.setDisplayMsgBox(true)\n break\n case 'tasks':\n this.setCurrentAction(val)\n this.setDisplayInternalMsgBox(false)\n this.setDisplayExternalMsgBox(false)\n this.setDisplayCreateTaskMsgBox({ display: true, type: 'new' })\n break\n case 'tools':\n this.navigateToRapidReview()\n break\n case 'play':\n this.handleResume()\n break\n case 'pause':\n this.setCurrentAction(val)\n break\n case 'paperclip':\n if (this.iconDisabled(val)) {\n break\n }\n this.setCurrentAction(val)\n break\n case 'folder-open':\n this.setCurrentAction(val)\n break\n case 'check-square':\n this.setCurrentAction(val)\n break\n case 'print':\n this.handlePrint()\n break\n default:\n }\n },\n\n setupRequestDescription() {\n return truncate(this.request.request_text, { length: '700' })\n },\n goToPreview() {\n this.switchToOldPage()\n },\n loadTabData(activeTabId) {\n // Loads data on tab click\n if (activeTabId === 'documents-tab') {\n // If no documents, folders and filters present, fetch all documents\n if (isEmpty(this.currentDocumentFilters)) {\n this.fetchDocuments({ request_id: this.prettyId })\n this.fetchDocumentsFolders({ request_id: this.prettyId })\n } else {\n this.fetchDocuments(this.currentDocumentFilters)\n }\n return\n }\n if (activeTabId === 'tasks-tab') {\n this.fetchRequestTasks({\n pretty_id: this.prettyId,\n params: { user_id: null, task_status: null, page_number: 1 }\n })\n }\n },\n setRequestStatusText() {\n switch (this.request.request_state) {\n case 'Waiting for requester':\n return 'Paused'\n default:\n return this.request.request_state\n }\n },\n\n iconVisible(icon) {\n switch (icon) {\n case 'envelope':\n return this.canSeeExternalMessageIcon\n case 'comments':\n return this.canSeeStaffOnlyItems\n case 'tasks':\n return this.canSeeStaffOnlyItems\n case 'edit':\n return this.canSeeNoteMessageIcon\n case 'dollar-sign':\n return this.canSeeInvoiceIcon\n case 'clock':\n return this.canSeeStaffOnlyItems\n case 'paperclip':\n return this.canSeeUploadIcon\n case 'play':\n return this.canSeeUnpauseIcon\n case 'pause':\n return this.canSeePauseIcon\n case 'check-square':\n return this.canSeeCloseIcon\n case 'folder-open':\n return this.canSeeReopenIcon\n case 'tools':\n return this.canSeeRapidReviewIcon\n case 'print':\n return this.canSeeStaffOnlyItems\n }\n },\n\n iconDisabled(icon) {\n return (\n icon === 'paperclip' &&\n this.iconVisible(icon) &&\n this.isCurrentRequester &&\n this.request.request_state === 'Closed'\n )\n },\n\n handleReopen() {\n this.reopening = true\n this.reopen(this.request.pretty_id).finally(() => {\n this.reopening = false\n this.setCurrentAction(null)\n })\n },\n\n async handlePausing(persist = false) {\n this.pausing = true\n\n if (persist) {\n try {\n await this.pause({\n prettyId: this.request.pretty_id,\n description: this.pauseComment\n })\n\n this.$toasted.success('Request paused successfully')\n } catch (error) {\n this.$toasted.error(\n 'Request failed to pause. Please refresh the page and try again.'\n )\n }\n }\n\n this.pausing = false\n this.pauseComment = ''\n this.setCurrentAction(null)\n },\n\n handleResume() {\n this.resume(this.request.pretty_id)\n },\n\n handlePrint() {\n window.open(`/requests/${this.request.pretty_id}.pdf`, '_blank')\n }\n }\n}\n</script>\n<style lang=\"scss\">\n.preview-switch-container {\n display: flex;\n justify-content: flex-end;\n}\n\n.panel-heading {\n display: flex;\n align-items: center;\n min-height: 3.25rem;\n padding-left: 0.75rem;\n padding-top: 0;\n padding-bottom: 0;\n margin-top: 12px;\n}\n\n.panel {\n border-radius: 4px;\n box-shadow:\n 0 0 0 1px rgba(10, 10, 10, 0.1),\n 0 1px 16px -0.1px rgba(10, 10, 10, 0.1);\n}\n\n.panel-content {\n padding: 1rem 0.75rem;\n}\n\n.is-align-items-center {\n align-items: center;\n}\n.is-align-items-flex-start {\n align-items: flex-start;\n}\n.is-justify-content-space-between {\n justify-content: space-between;\n}\n\n.panel-section {\n .panel-item {\n padding: 0.375rem 0.5rem;\n }\n .panel-item--editable {\n margin: 0 -0.75rem;\n padding: 0 0.75rem;\n &:hover {\n background-color: #ebebef;\n }\n }\n}\n\n/* Adds extra margin space for screen sizes 1920 or larger */\n@media screen and (min-width: 1920px) {\n .request-show .container.is-fluid {\n margin-left: 292px !important;\n margin-right: 292px !important;\n }\n}\n/* Aligns show more button to the right without using float: right */\n.request-show-more-btn {\n display: flex;\n justify-content: flex-end;\n}\n\n.request-show {\n /**\n * Override modal min-height. TODO: Remove this rule from the modal.\n */\n .nr-modal__container {\n min-height: unset !important;\n }\n .no-margin-bottom {\n margin-bottom: 0px;\n }\n}\n\n.banner-tray {\n min-width: 8em;\n}\n\n.payment-notice {\n display: flex;\n align-items: center;\n padding: 8px;\n flex-wrap: wrap;\n}\n\n.payment-notice-explanation {\n display: flex;\n align-items: center;\n padding: 4px;\n}\n\n.payment-notice p {\n margin: 0 0.5em;\n min-width: 10em;\n}\n\n.payment-notice-button {\n flex-grow: 1;\n}\n\n.inline-icon {\n display: inline-block;\n vertical-align: middle;\n}\n\n.large-icon {\n min-width: 1.5em;\n}\n\n.no-wrap {\n text-wrap: nowrap;\n}\n</style>\n","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, createVNode as _createVNode, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-32823e48\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"level-item has-text-centered\" }\nconst _hoisted_2 = { class: \"req-visibility-banner-row m-top-8 m-bottom-8 is-size-5\" }\nconst _hoisted_3 = [\"innerHTML\"]\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"has-text-weight-semibold\" }, \"Request visibility:\", -1))\nconst _hoisted_5 = {\n key: 1,\n class: \"has-text-weight-semibold\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrTooltip = _resolveComponent(\"NrTooltip\")!\n const _component_NrIcon = _resolveComponent(\"NrIcon\")!\n const _component_NrIconButton = _resolveComponent(\"NrIconButton\")!\n const _component_NrFormSelect = _resolveComponent(\"NrFormSelect\")!\n const _component_NrModal = _resolveComponent(\"NrModal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"level req-visibility-banner\", $options.setBannerStyles])\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_ctx.$can('update', 'Request'))\n ? (_openBlock(), _createBlock(_component_NrTooltip, { key: 0 }, {\n label: _withCtx(() => [\n _createElementVNode(\"p\", { innerHTML: $options.visibilityLabelTooltip }, null, 8, _hoisted_3)\n ]),\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_5, \"Request Visibility:\")),\n _createVNode(_component_NrIcon, {\n class: \"m-right-8 m-left-8\",\n name: $options.setBannerIcon\n }, null, 8, [\"name\"]),\n _createElementVNode(\"span\", null, _toDisplayString($options.setBannerText), 1),\n (this.requestVisibility && _ctx.$can('manage', 'Request'))\n ? (_openBlock(), _createBlock(_component_NrIconButton, {\n key: 2,\n onClick: _cache[0] || (_cache[0] = ($event: any) => ($options.toggleEditModal(true))),\n class: \"m-left-8\",\n icon: { name: 'pencil-alt', type: 'regular' },\n \"aria-label\": \"Edit request visibility\",\n variant: \"minimal-neutral\"\n }))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createVNode(_component_NrModal, {\n show: $data.showEditModal,\n class: \"request-visibility-form\",\n \"has-secondary-button\": true,\n title: \"Change request visibility\",\n \"primary-button-text\": \"Change visibility\",\n \"secondary-button-text\": \"Cancel\",\n onOnPrimaryClick: $options.updateRequestVisibility,\n onOnSecondaryClick: _cache[2] || (_cache[2] = () => $options.toggleEditModal(false)),\n onOnClose: _cache[3] || (_cache[3] = () => $options.toggleEditModal(false))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrFormSelect, {\n label: \"Request visibility\",\n name: \"visibility\",\n modelValue: _ctx.request.visibility,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.request.visibility) = $event)),\n options: $options.visibilities\n }, null, 8, [\"modelValue\", \"options\"])\n ]),\n _: 1\n }, 8, [\"show\", \"onOnPrimaryClick\"])\n ], 2))\n}","\nimport { mapActions, mapState } from 'vuex'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrIcon from '@nextrequestco/components/src/components/NrIcon/NrIcon.vue'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport NrFormSelect from '@nextrequestco/components/src/components/NrFormSelect/nr-form-select'\nimport {\n RequestVisibility,\n accountRequestVisibilities\n} from '../../../store/globalModule'\nimport NrSentry from '../../../utils/nr_sentry'\nimport escape from 'lodash/escape'\n\nexport default {\n name: 'VisibilityBanner',\n components: {\n NrModal,\n NrIconButton,\n NrIcon,\n NrTooltip,\n NrFormSelect\n },\n data() {\n return {\n showEditVisibilityIcon: false,\n showEditModal: false\n }\n },\n props: {\n requestVisibility: {\n required: true\n },\n account: {\n required: true\n },\n departmentNames: {\n default: ''\n }\n },\n computed: {\n ...mapState('request_show', ['request']),\n visibilities(): RequestVisibility[] {\n return accountRequestVisibilities(this.account)\n },\n setBannerStyles() {\n return {\n 'has-background-success has-text-white':\n this.requestVisibility === 'Published' ||\n this.requestVisibility === 'Published - department only',\n 'has-background-orange-100':\n this.requestVisibility === 'Unpublished' ||\n this.requestVisibility === 'Department-Only' ||\n this.requestVisibility === 'Restricted' ||\n this.requestVisibility === 'All Staff',\n 'has-background-warning': this.isEmbargoed\n }\n },\n\n setBannerIcon() {\n if (this.isPublished || this.isDepartmentPublished) {\n return 'eye'\n }\n if (this.isStaffVisible) {\n return 'users'\n }\n if (this.isDepartmentVisible) {\n return 'university'\n }\n if (this.isEmbargoed) {\n return 'hourglass-start'\n }\n if (this.isRestricted) {\n return 'lock'\n }\n if (this.isUnpublished) {\n return 'eye-slash'\n }\n return 'spinner'\n },\n\n visibilityLabelTooltip() {\n // Show embargoed text if this.account.embargoing_available\n const embargoedTooltipText = this.account.embargoing_available\n ? `Embargoed: Staff + requester until ${this.account.embargo_hours} hours after request closure, then visible to everyone` +\n '<br/><br/>'\n : ''\n // Show department names if any\n const departments =\n this.departmentNames !== '' ? escape(`(${this.departmentNames})`) : ''\n return (\n 'Published: Everyone' +\n '<br/><br/>' +\n `${embargoedTooltipText}` +\n escape(`Staff: ${this.account.name} staff + requester`) +\n '<br/><br/>' +\n `Department: Admins, assigned departments staff ${departments}, and requester` +\n '<br/><br/>' +\n 'Restricted: Admins, assigned staff, and requester' +\n '<br/>' +\n (this.account.restricted_visibilities_feature_flag\n ? `<br/> Published - department only: Admins, assigned departments staff ${departments}, and public`\n : '')\n )\n },\n\n setBannerText() {\n if (this.isPublished) {\n return 'Published'\n }\n if (this.isStaffVisible) {\n return 'Staff'\n }\n if (this.isDepartmentVisible) {\n return 'Department'\n }\n if (this.isEmbargoed) {\n return this.requestVisibility\n }\n if (this.isRestricted) {\n return 'Restricted'\n }\n if (this.isUnpublished) {\n return 'Unpublished'\n }\n if (this.isDepartmentPublished) {\n return this.requestVisibility\n }\n return 'Loading...'\n },\n\n isStaffVisible() {\n return this.requestVisibility === 'All Staff'\n },\n\n isEmbargoed() {\n return this.requestVisibility?.includes('Embargoed')\n },\n\n isPublished() {\n return this.requestVisibility === 'Published'\n },\n\n isUnpublished() {\n return this.requestVisibility === 'Unpublished'\n },\n\n isDepartmentVisible() {\n return this.requestVisibility === 'Department-Only'\n },\n\n isRestricted() {\n return this.requestVisibility === 'Restricted'\n },\n\n isDepartmentPublished() {\n return this.requestVisibility === 'Published - department only'\n }\n },\n\n methods: {\n ...mapActions('request_show', ['updateRequest', 'fetchTimeline']),\n toggleEditModal(state?: boolean) {\n if (state === undefined) this.showEditModal = !this.showEditModal\n this.showEditModal = state\n },\n updateRequestVisibility() {\n this.updateRequest({\n request_id: this.request.pretty_id,\n visibility: this.request.visibility\n })\n .then(() => {\n this.showEditModal = false\n this.$toasted.success('Successfully updated request visibility')\n this.fetchTimeline({\n pretty_id: this.request.pretty_id\n })\n })\n .catch((e) => {\n this.$toasted.error('There was an error updating the request')\n NrSentry.captureError(e)\n })\n }\n }\n}\n","import { render } from \"./VisibilityBanner.vue?vue&type=template&id=32823e48&scoped=true&ts=true\"\nimport script from \"./VisibilityBanner.vue?vue&type=script&lang=ts\"\nexport * from \"./VisibilityBanner.vue?vue&type=script&lang=ts\"\n\nimport \"./VisibilityBanner.vue?vue&type=style&index=0&id=32823e48&lang=scss&scoped=true\"\nimport \"./VisibilityBanner.vue?vue&type=style&index=1&id=32823e48&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-32823e48\"]])\n\nexport default __exports__","<template>\n <div class=\"request-show-header container\">\n <div class=\"header-row columns\">\n <div class=\"column is-4-desktop is-full-tablet header-left\">\n <div v-if=\"$slots.cycling\" class=\"header-item\">\n <slot name=\"cycling\" />\n </div>\n <div class=\"header-item is-size-3\">\n <slot name=\"id\" />\n </div>\n <div class=\"header-item header-banner\">\n <slot name=\"banner\" />\n </div>\n </div>\n\n <div class=\"column is-8-desktop is-full-tablet header-right\">\n <div v-if=\"$slots.invoiceNotice\" class=\"invoice-container\">\n <div class=\"invoice-notice\">\n <slot name=\"invoiceNotice\" />\n </div>\n </div>\n <div class=\"block icon-tray\">\n <slot name=\"icons\" />\n </div>\n </div>\n </div>\n\n <div v-if=\"$slots.filters\" class=\"header-row columns\">\n <div class=\"column is-4-desktop\">\n <slot name=\"filters\" />\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n.header-row {\n flex-wrap: wrap;\n}\n\n.invoice-container {\n flex: 1;\n}\n\n.request-show-header .column {\n padding: 0 0.75rem;\n}\n\n.header-item {\n margin-right: 1rem;\n}\n\n.header-banner {\n /* HACK: Fixes the NrBanner component rendering too far to the left */\n margin-left: 1em;\n}\n\n.invoice-notice {\n background-color: #f4f4f6;\n border-radius: 4px;\n\n margin-right: 0.5em;\n}\n\n.header-left {\n display: flex;\n text-wrap: nowrap;\n flex-wrap: wrap;\n align-items: center;\n}\n\n.header-right {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n}\n</style>\n","import { render } from \"./RequestShowHeader.vue?vue&type=template&id=11621d10&scoped=true\"\nconst script = {}\n\nimport \"./RequestShowHeader.vue?vue&type=style&index=0&id=11621d10&scoped=true&lang=css\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-11621d10\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"panel request-date-panel p-bottom-4\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"panel-heading has-background-light has-text-weight-semibold is-size-4\" }, \" Dates \", -1)\nconst _hoisted_3 = {\n key: 0,\n class: \"panel-content\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_RequestDueDate = _resolveComponent(\"RequestDueDate\")!\n const _component_RequestReceivedDate = _resolveComponent(\"RequestReceivedDate\")!\n const _component_RequestFulfillmentDate = _resolveComponent(\"RequestFulfillmentDate\")!\n const _component_RequestExpirationDate = _resolveComponent(\"RequestExpirationDate\")!\n const _component_NrLoadingAnimation = _resolveComponent(\"NrLoadingAnimation\")!\n\n return (_openBlock(), _createElementBlock(\"article\", _hoisted_1, [\n _hoisted_2,\n (!_ctx.filteredRequestLoading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_ctx.canSeeRequestDueDate)\n ? (_openBlock(), _createBlock(_component_RequestDueDate, {\n key: 0,\n prettyId: _ctx.prettyId,\n date: _ctx.dueDate\n }, null, 8, [\"prettyId\", \"date\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.received)\n ? (_openBlock(), _createBlock(_component_RequestReceivedDate, {\n key: 1,\n prettyId: _ctx.prettyId,\n date: _ctx.received,\n requestSubmitType: _ctx.requestSubmitType\n }, null, 8, [\"prettyId\", \"date\", \"requestSubmitType\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.canSeeFulfillmentDate)\n ? (_openBlock(), _createBlock(_component_RequestFulfillmentDate, {\n key: 2,\n prettyId: _ctx.prettyId,\n date: _ctx.fulfillment\n }, null, 8, [\"prettyId\", \"date\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.canSeeRequestExpirationDate)\n ? (_openBlock(), _createBlock(_component_RequestExpirationDate, {\n key: 3,\n prettyId: _ctx.prettyId,\n exempt: _ctx.exemptFromRetention,\n expiration: _ctx.expiration\n }, null, 8, [\"prettyId\", \"exempt\", \"expiration\"]))\n : _createCommentVNode(\"\", true)\n ]))\n : (_openBlock(), _createBlock(_component_NrLoadingAnimation, {\n key: 1,\n count: 3\n }))\n ]))\n}","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"panel-section p-bottom-8 request-due-date\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"has-text-weight-semibold\" }, \"Due\", -1)\nconst _hoisted_3 = { class: \"m-left-8\" }\nconst _hoisted_4 = { class: \"field m-top-8\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"help\" }, \" Changing this date may have legal consquences. Please refer to appropriate laws. \", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrIconButton = _resolveComponent(\"NrIconButton\")!\n const _component_NrTooltip = _resolveComponent(\"NrTooltip\")!\n const _component_NrIcon = _resolveComponent(\"NrIcon\")!\n const _component_NrDatepicker = _resolveComponent(\"NrDatepicker\")!\n const _component_NrFormInput = _resolveComponent(\"NrFormInput\")!\n const _component_NrModal = _resolveComponent(\"NrModal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"panel-item is-flex is-align-items-center is-justify-content-space-between\", { 'panel-item--editable': _ctx.$can('publish', 'Request') }])\n }, [\n _hoisted_2,\n (_ctx.$can('publish', 'Request'))\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 0,\n label: \"Edit request due date\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrIconButton, {\n variant: \"minimal-neutral\",\n icon: { name: 'pencil-alt', type: 'regular' },\n \"aria-label\": \"Edit request due date\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.toggleModal(true)))\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.date), 1)\n ]),\n _createVNode(_component_NrModal, {\n title: \"Change due date\",\n show: _ctx.showModal,\n hasSecondaryButton: true,\n disabeButtons: _ctx.updating,\n secondaryButtonText: \"Cancel\",\n primaryButtonText: \"Save date\",\n onOnCloseClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.toggleModal(false))),\n onOnSecondaryClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.toggleModal(false))),\n onOnPrimaryClick: _ctx.handleSaveData\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"form\", {\n onSubmit: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"prevent\",\"stop\"]))\n }, [\n _createElementVNode(\"fieldset\", null, [\n _createVNode(_component_NrDatepicker, {\n onInput: _ctx.handleDateInput,\n placeholder: \"Type or select a date (mm/dd/yyyy)\",\n modelValue: _ctx.computedDate,\n \"unselectable-dates\": _ctx.unselectableDates\n }, {\n label: _withCtx(() => [\n _createTextVNode(\"New due date\")\n ]),\n trigger: _withCtx(() => [\n _createVNode(_component_NrIcon, { name: \"calendar-alt\" })\n ]),\n _: 1\n }, 8, [\"onInput\", \"modelValue\", \"unselectable-dates\"])\n ]),\n _createElementVNode(\"fieldset\", null, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_NrFormInput, {\n id: \"description\",\n label: \"Comments (optional)\",\n rows: \"8\",\n placeholder: \"Enter an optional reason for changing the due date. This message posts to timeline. \",\n tag: \"textarea\",\n modelValue: _ctx.description,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.description) = $event))\n }, null, 8, [\"modelValue\"]),\n _hoisted_5\n ])\n ])\n ], 32)\n ]),\n _: 1\n }, 8, [\"show\", \"disabeButtons\", \"onOnPrimaryClick\"])\n ]))\n}","\nimport { defineComponent } from 'vue'\nimport { format } from 'date-fns'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrIcon from '@nextrequestco/components/src/components/NrIcon/NrIcon.vue'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport NrDatepicker from '@nextrequestco/components/src/components/NrDatePicker/nr-datepicker.vue'\nimport NrFormInput from '@nextrequestco/components/src/components/NrFormInput/nr-form-input.vue'\nimport { mapActions } from 'vuex'\n\nexport default defineComponent({\n name: 'request-duedate',\n components: {\n NrIconButton,\n NrFormInput,\n NrIcon,\n NrTooltip,\n NrModal,\n NrDatepicker\n },\n props: {\n prettyId: { type: String },\n date: { type: String }\n },\n data() {\n return {\n showModal: false,\n updating: false,\n newDate: null,\n description: ''\n }\n },\n computed: {\n computedDate(): Date | null {\n if (Date.parse(this.date)) {\n // @ts-ignore: NEX-9140\n return format(new Date(this.date), 'MM/dd/yyyy')\n }\n return null\n },\n unselectableDates(): Date[] {\n if (this.computedDate) {\n return [this.computedDate]\n } else {\n return []\n }\n }\n },\n methods: {\n ...mapActions('request_show', ['updateDuedate', 'fetchTimeline']),\n\n handleDateInput(date: Date) {\n this.newDate = date\n },\n\n async handleSaveData() {\n if (!this.newDate) return\n\n this.updating = true\n try {\n await this.updateDuedate({\n prettyId: this.prettyId,\n date: format(new Date(this.newDate), 'MM/dd/yyyy'),\n description: this.description\n })\n this.fetchTimeline({ pretty_id: this.prettyId })\n this.$toasted.success('Successfully updated request due date')\n } catch (error) {\n this.$toasted.error(\n 'Request failed to update new due date. Please refresh the page and try again.'\n )\n }\n\n this.updating = false\n this.toggleModal(false)\n },\n\n toggleModal(state?: boolean) {\n this.showModal = state ?? !this.showModal\n }\n }\n})\n","import { render } from \"./request-duedate.vue?vue&type=template&id=5c56c5ec&ts=true\"\nimport script from \"./request-duedate.vue?vue&type=script&lang=ts\"\nexport * from \"./request-duedate.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"panel-section p-bottom-8 request-fulfillment-date\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"has-text-weight-semibold\" }, \"Anticipated fulfillment\", -1)\nconst _hoisted_3 = { class: \"m-left-8\" }\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"help\" }, \" Changing this date may have legal consquences. Please refer to appropriate laws. \", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrIconButton = _resolveComponent(\"NrIconButton\")!\n const _component_NrTooltip = _resolveComponent(\"NrTooltip\")!\n const _component_NrIcon = _resolveComponent(\"NrIcon\")!\n const _component_NrDatepicker = _resolveComponent(\"NrDatepicker\")!\n const _component_NrModal = _resolveComponent(\"NrModal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"panel-item is-flex is-align-items-center is-justify-content-space-between\", { 'panel-item--editable': _ctx.$can('publish', 'Request') }])\n }, [\n _hoisted_2,\n (_ctx.$can('publish', 'Request'))\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 0,\n label: \"Edit anticipated fulfillment date\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrIconButton, {\n variant: \"minimal-neutral\",\n icon: { name: 'pencil-alt', type: 'regular' },\n \"aria-label\": \"Edit anticipated fulfillment date\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.toggleModal(true)))\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.date), 1)\n ]),\n _createVNode(_component_NrModal, {\n title: \"Change anticipated fulfillment date\",\n show: _ctx.showModal,\n hasSecondaryButton: true,\n disabeButtons: _ctx.updating,\n secondaryButtonText: \"Cancel\",\n primaryButtonText: \"Save date\",\n onOnCloseClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.toggleModal(false))),\n onOnSecondaryClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.toggleModal(false))),\n onOnPrimaryClick: _ctx.handleSaveData\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"form\", {\n onSubmit: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"prevent\",\"stop\"]))\n }, [\n _createElementVNode(\"fieldset\", null, [\n _createVNode(_component_NrDatepicker, {\n onInput: _ctx.handleDateInput,\n placeholder: \"Type or select a date (mm/dd/yyyy)\",\n modelValue: _ctx.computedDate,\n \"unselectable-dates\": _ctx.unselectableDates\n }, {\n label: _withCtx(() => [\n _createTextVNode(\"New anticipated fulfillment date\")\n ]),\n trigger: _withCtx(() => [\n _createVNode(_component_NrIcon, { name: \"calendar-alt\" })\n ]),\n _: 1\n }, 8, [\"onInput\", \"modelValue\", \"unselectable-dates\"]),\n _hoisted_4\n ])\n ], 32)\n ]),\n _: 1\n }, 8, [\"show\", \"disabeButtons\", \"onOnPrimaryClick\"])\n ]))\n}","\nimport { defineComponent } from 'vue'\nimport { format } from 'date-fns'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrIcon from '@nextrequestco/components/src/components/NrIcon/NrIcon.vue'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport NrDatepicker from '@nextrequestco/components/src/components/NrDatePicker/nr-datepicker.vue'\nimport { mapActions } from 'vuex'\n\nexport default defineComponent({\n name: 'request-fulfillment-date',\n components: { NrIconButton, NrIcon, NrTooltip, NrModal, NrDatepicker },\n props: {\n prettyId: { type: String },\n date: { type: String }\n },\n data() {\n return {\n showModal: false,\n updating: false,\n newDate: null\n }\n },\n computed: {\n computedDate(): Date | '' {\n if (Date.parse(this.date)) {\n // @ts-ignore: NEX-9140\n return format(new Date(this.date), 'MM/dd/yyyy')\n }\n return ''\n },\n unselectableDates(): Date[] {\n if (this.computedDate) {\n return [this.computedDate]\n } else {\n return []\n }\n }\n },\n methods: {\n ...mapActions('request_show', ['updateRequest', 'fetchTimeline']),\n\n handleDateInput(date: Date) {\n this.newDate = date\n },\n\n async handleSaveData() {\n if (!this.newDate) return\n\n this.updating = true\n try {\n await this.updateRequest({\n request_id: this.prettyId,\n anticipated_fulfilled_at: format(new Date(this.newDate), 'MM/dd/yyyy')\n })\n this.fetchTimeline({ pretty_id: this.prettyId })\n this.$toasted.success(\n 'Successfully updated anticipated fulfillment date.'\n )\n } catch (error) {\n this.$toasted.error(\n 'There has been an error saving the anticipated fulfillment date. Please refresh the page and try again.'\n )\n }\n\n this.updating = false\n this.toggleModal(false)\n },\n\n toggleModal(state?: boolean) {\n this.showModal = state ?? !this.showModal\n }\n }\n})\n","import { render } from \"./request-fulfillment-date.vue?vue&type=template&id=25c2393b&ts=true\"\nimport script from \"./request-fulfillment-date.vue?vue&type=script&lang=ts\"\nexport * from \"./request-fulfillment-date.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"panel-section p-bottom-8\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"has-text-weight-semibold\" }, \"Received\", -1)\nconst _hoisted_3 = { class: \"m-left-8\" }\nconst _hoisted_4 = { class: \"field m-top-8\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"help\" }, \" Changing this date may have legal consequences. Please refer to appropriate laws. \", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrIconButton = _resolveComponent(\"NrIconButton\")!\n const _component_NrTooltip = _resolveComponent(\"NrTooltip\")!\n const _component_NrIcon = _resolveComponent(\"NrIcon\")!\n const _component_NrDatepicker = _resolveComponent(\"NrDatepicker\")!\n const _component_NrFormInput = _resolveComponent(\"NrFormInput\")!\n const _component_NrModal = _resolveComponent(\"NrModal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"panel-item is-flex is-align-items-center is-justify-content-space-between\", { 'panel-item--editable': _ctx.$can('publish', 'Request') }])\n }, [\n _hoisted_2,\n (_ctx.$can('publish', 'Request'))\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 0,\n label: \"Edit request received date\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrIconButton, {\n variant: \"minimal-neutral\",\n icon: { name: 'pencil-alt', type: 'regular' },\n \"aria-label\": \"Edit request received date\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.setCurrentAction('received_date')))\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.formattedReceivedDate), 1)\n ]),\n _createVNode(_component_NrModal, {\n title: \"Change received date\",\n show: _ctx.currentAction === 'received_date',\n hasSecondaryButton: true,\n secondaryButtonText: \"Cancel\",\n primaryButtonText: \"Change date\",\n onOnPrimaryClick: _ctx.submitReceivedDateChange,\n onOnSecondaryClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.setCurrentAction(null))),\n onOnCloseClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.setCurrentAction(null)))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"form\", {\n onSubmit: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"prevent\",\"stop\"]))\n }, [\n _createElementVNode(\"fieldset\", null, [\n _createVNode(_component_NrDatepicker, {\n onInput: _ctx.handleReceivedDateChange,\n placeholder: \"Type or select a date (mm/dd/yyyy)\",\n modelValue: _ctx.computedReceivedDate,\n \"unselectable-dates\": _ctx.unselectableReceivedDate\n }, {\n label: _withCtx(() => [\n _createTextVNode(\"New received date\")\n ]),\n trigger: _withCtx(() => [\n _createVNode(_component_NrIcon, { name: \"calendar-alt\" })\n ]),\n _: 1\n }, 8, [\"onInput\", \"modelValue\", \"unselectable-dates\"])\n ]),\n _createElementVNode(\"fieldset\", null, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_NrFormInput, {\n id: \"received-date-comment\",\n label: \"Comments (optional)\",\n rows: \"8\",\n placeholder: \"Enter an optional reason for changing the received date. This message posts to timeline.\",\n tag: \"textarea\",\n modelValue: _ctx.receivedDateComment,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.receivedDateComment) = $event))\n }, null, 8, [\"modelValue\"]),\n _hoisted_5\n ])\n ])\n ], 32)\n ]),\n _: 1\n }, 8, [\"show\", \"onOnPrimaryClick\"])\n ]))\n}","\nimport { format } from 'date-fns'\nimport { defineComponent } from 'vue'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrFormInput from '@nextrequestco/components/src/components/NrFormInput/nr-form-input.vue'\nimport NrIcon from '@nextrequestco/components/src/components/NrIcon/NrIcon.vue'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport NrDatepicker from '@nextrequestco/components/src/components/NrDatePicker/nr-datepicker.vue'\nimport NrSentry from '../../../utils/nr_sentry'\nimport { mapState, mapActions } from 'vuex'\n\nexport default defineComponent({\n name: 'request-dates',\n components: {\n NrModal,\n NrIconButton,\n NrFormInput,\n NrIcon,\n NrTooltip,\n NrDatepicker\n },\n props: {\n prettyId: {\n type: String,\n required: true\n },\n date: {\n type: String\n },\n requestSubmitType: {\n type: String\n }\n },\n data() {\n return {\n receivedDateComment: '',\n selectedReceivedDate: null\n }\n },\n computed: {\n ...mapState('request_show', ['currentAction']),\n computedReceivedDate(): String | null {\n const date = format(new Date(this.date), 'MM/dd/yyyy')\n if (date) {\n return date\n }\n return null\n },\n unselectableReceivedDate(): Date[] {\n if (this.computedReceivedDate) {\n return [this.computedReceivedDate]\n } else {\n return []\n }\n },\n formattedReceivedDate(): string {\n const date = format(new Date(this.date), 'MMMM dd, yyyy')\n const submitTypeMap: { [key: string]: string } = {\n Fax: 'via fax',\n Email: 'via email',\n 'In person': 'in person',\n Phone: 'via phone',\n Web: 'via web',\n Mail: 'via mail',\n Import: 'via request uploader'\n }\n\n const submitType = this.requestSubmitType\n ? submitTypeMap[this.requestSubmitType] || 'via web'\n : 'via web'\n\n return `${date} ${submitType}`\n }\n },\n methods: {\n ...mapActions('request_show', ['setCurrentAction', 'updateReceivedDate']),\n submitReceivedDateChange(): void {\n if (!this.selectedReceivedDate) {\n this.$toasted.error('You must select a received date')\n return\n }\n const params = {\n date: format(new Date(this.selectedReceivedDate), 'MM/dd/yyyy'),\n prettyId: this.prettyId,\n description: this.receivedDateComment\n }\n this.updateReceivedDate(params)\n .then(() => {\n this.setCurrentAction(null)\n this.$toasted.success('Successfully updated the received date')\n })\n .catch((error) => {\n this.$toasted.error(\n 'There was an error updating the received date for the request. Make sure the date is not the current received date. Please reload the page and try again.'\n )\n NrSentry.captureError(error)\n })\n },\n handleReceivedDateChange(date): void {\n this.selectedReceivedDate = date\n }\n }\n})\n","import { render } from \"./request-received-date.vue?vue&type=template&id=7227e4aa&ts=true\"\nimport script from \"./request-received-date.vue?vue&type=script&lang=ts\"\nexport * from \"./request-received-date.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, withModifiers as _withModifiers, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"panel-section p-bottom-8 request-expiration-date\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"has-text-weight-semibold\" }, \"Expiration\", -1)\nconst _hoisted_3 = { class: \"m-left-8\" }\nconst _hoisted_4 = { class: \"exemption-container\" }\nconst _hoisted_5 = { class: \"exemption-container\" }\nconst _hoisted_6 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"help\" }, \" If you exempt this request from deletion, it will not be automatically deleted from the portal even after the normal retention period passes. Including documents will exempt all documents on this request from deletion. If a request's expiration date is already in the past, the request will be deleted in the next retention cycle if exempt status is removed. \", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrIconButton = _resolveComponent(\"NrIconButton\")!\n const _component_NrTooltip = _resolveComponent(\"NrTooltip\")!\n const _component_NrFormInput = _resolveComponent(\"NrFormInput\")!\n const _component_NrIcon = _resolveComponent(\"NrIcon\")!\n const _component_NrModal = _resolveComponent(\"NrModal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"panel-item is-flex is-align-items-center is-justify-content-space-between\", { 'panel-item--editable': _ctx.$can('read', 'admin_only_items') }])\n }, [\n _hoisted_2,\n (_ctx.$can('read', 'admin_only_items'))\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 0,\n label: \"Edit request retention exemption\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrIconButton, {\n variant: \"minimal-neutral\",\n icon: { name: 'pencil-alt', type: 'regular' },\n \"aria-label\": \"Edit request retention exemption\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.toggleModal(true)))\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"p\", null, _toDisplayString(_ctx.expiration), 1)\n ]),\n _createVNode(_component_NrModal, {\n title: \"Change request retention status\",\n show: _ctx.showModal,\n hasSecondaryButton: true,\n disabeButtons: _ctx.updating,\n secondaryButtonText: \"Cancel\",\n primaryButtonText: \"Change retention status\",\n onOnCloseClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.toggleModal(false))),\n onOnSecondaryClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.toggleModal(false))),\n onOnPrimaryClick: _ctx.handleSaveExempt\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"form\", {\n onSubmit: _cache[3] || (_cache[3] = _withModifiers(() => {}, [\"prevent\",\"stop\"]))\n }, [\n _createVNode(_component_NrTooltip, {\n label: \"If you exempt this request from deletion, it will not be automatically deleted from the portal even after the normal retention period passes.\",\n position: \"right\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_NrFormInput, {\n class: \"exemption-checkbox\",\n type: \"checkbox\",\n label: \"Exempt request from deletion\",\n name: \"exempt\",\n modelValue: _ctx.newExempt,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.newExempt) = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(_component_NrIcon, { name: \"info-circle\" })\n ])\n ]),\n _: 1\n }),\n _createVNode(_component_NrTooltip, {\n label: \"If you exempt documents from deletion, they will not be automatically deleted from the portal even after the normal retention period passes. If the request is deleted and documents are exempt they can be still accessed from the documents page.\",\n position: \"right\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_NrFormInput, {\n class: \"exemption-checkbox\",\n type: \"checkbox\",\n label: \"Exempt all documents on this request from deletion\",\n name: \"exemptedDocuments\",\n modelValue: _ctx.exemptedDocuments,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.exemptedDocuments) = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(_component_NrIcon, { name: \"info-circle\" })\n ])\n ]),\n _: 1\n }),\n _hoisted_6\n ], 32)\n ]),\n _: 1\n }, 8, [\"show\", \"disabeButtons\", \"onOnPrimaryClick\"])\n ]))\n}","\nimport { defineComponent } from 'vue'\nimport NrIcon from '@nextrequestco/components/src/components/NrIcon/NrIcon.vue'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport NrFormInput from '@nextrequestco/components/src/components/NrFormInput/nr-form-input.vue'\nimport helpers from '../../../utils/helpers'\nimport consumer from 'src/utils/action_cable_consumer'\n\nimport { mapActions } from 'vuex'\n\nexport default defineComponent({\n name: 'request-expiration-date',\n components: { NrIconButton, NrTooltip, NrModal, NrFormInput, NrIcon },\n props: {\n prettyId: { type: String },\n exempt: { type: Boolean },\n expiration: { type: String }\n },\n data() {\n return {\n showModal: false,\n updating: false,\n newExempt: this.exempt,\n exemptedDocuments: false,\n subscription: null,\n currentJobId: null\n }\n },\n\n mounted() {\n this.subscribeToUserJobChannel()\n },\n\n unmounted() {\n this.unsubscribeToUserJobChannel()\n },\n\n methods: {\n ...mapActions('request_show', ['updateRequest', 'fetchTimeline']),\n ...mapActions('documents', ['bulkDocumentActions']),\n\n subscribeToUserJobChannel() {\n const self = this\n this.subscription = consumer.subscriptions.create(\n // Subscribe to channel\n {\n channel: 'UserJobChannel',\n user_id: this.$store.state.currentUser.id\n },\n {\n received(data) {\n if (data.job_type !== 'exempt_from_retention') return\n if (data.job_id !== self.currentJobId) return\n\n self.setupToastMessage(data)\n }\n }\n )\n },\n\n unsubscribeToUserJobChannel() {\n if (consumer.connection.isOpen()) {\n consumer.subscriptions.remove(this.subscription)\n }\n },\n\n setupToastMessage(data) {\n if (helpers.backgroundJobComplete(data.status)) {\n this.setSuccessToastMessage()\n this.fetchTimeline({ pretty_id: this.prettyId })\n } else if (helpers.backgroundJobFailed(data.status)) {\n this.setFailedToastMessage()\n }\n },\n\n setSuccessToastMessage() {\n this.$toasted.success('Successfully updated document(s) retention status')\n },\n\n setFailedToastMessage() {\n this.$toasted.error('Failed to update document(s) retention status')\n },\n\n async handleSaveExempt() {\n this.updating = true\n try {\n await this.updateRequest({\n request_id: this.prettyId,\n exempt_from_retention: this.newExempt\n })\n this.$toasted.success('Successfully updated request retention status')\n } catch (error) {\n this.$toasted.error('Failed to update request retention status')\n this.updating = false\n }\n\n if (this.exemptedDocuments) {\n try {\n await this.bulkDocumentActions({\n bulk_action: 'update_exempt_from_retention',\n all_selected: true,\n request_id: this.prettyId,\n exempt_from_retention: true\n }).then((xhr) => {\n if (xhr.status === 200) {\n const data = xhr.response ? xhr.response.body.data : xhr.data\n this.currentJobId = data.jobId[0]\n }\n })\n this.$toasted.show('Document(s) retention status processing')\n } catch (error) {\n this.$toasted.error('Failed to update document(s) retention status')\n this.updating = false\n }\n }\n this.fetchTimeline({ pretty_id: this.prettyId })\n\n this.exemptedDocuments = false\n this.updating = false\n this.toggleModal(false)\n },\n\n toggleModal(state?: boolean) {\n this.showModal = state ?? !this.showModal\n }\n }\n})\n","import { render } from \"./request-expiration-date.vue?vue&type=template&id=18991002&ts=true\"\nimport script from \"./request-expiration-date.vue?vue&type=script&lang=ts\"\nexport * from \"./request-expiration-date.vue?vue&type=script&lang=ts\"\n\nimport \"./request-expiration-date.vue?vue&type=style&index=0&id=18991002&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { defineComponent } from 'vue'\nimport RequestDueDate from './request-duedate.vue'\nimport RequestFulfillmentDate from './request-fulfillment-date.vue'\nimport RequestReceivedDate from './request-received-date.vue'\nimport { mapState } from 'vuex'\nimport RequestExpirationDate from './request-expiration-date.vue'\nimport NrLoadingAnimation from '@nextrequestco/components/src/components/NrLoadingAnimation/nr-loading-animation.vue'\n\nexport default defineComponent({\n name: 'request-dates',\n components: {\n RequestFulfillmentDate,\n RequestDueDate,\n RequestReceivedDate,\n RequestExpirationDate,\n NrLoadingAnimation\n },\n props: {\n prettyId: {\n type: String,\n required: true\n },\n canSeeRequestDueDate: {\n type: Boolean\n },\n dueDate: {\n type: String\n },\n received: {\n type: String\n },\n canSeeRequestExpirationDate: {\n type: Boolean\n },\n exemptFromRetention: {\n type: Boolean\n },\n fulfillment: {\n type: String\n },\n expiration: {\n type: String\n },\n requestSubmitType: {\n type: String\n }\n },\n computed: {\n ...mapState(['account']),\n ...mapState('request_show', ['filteredRequestLoading']),\n canSeeFulfillmentDate() {\n return (\n this.$can('read', 'staff_only_items') &&\n this.account.anticipated_fulfillment_date\n )\n }\n }\n})\n","import { render } from \"./RequestDates.vue?vue&type=template&id=88d0b30c&ts=true\"\nimport script from \"./RequestDates.vue?vue&type=script&lang=ts\"\nexport * from \"./RequestDates.vue?vue&type=script&lang=ts\"\n\nimport \"./RequestDates.vue?vue&type=style&index=0&id=88d0b30c&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createBlock as _createBlock, normalizeClass as _normalizeClass, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, withModifiers as _withModifiers } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"panel panel-section requester-panel p-bottom-4\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"panel-heading has-background-light has-text-weight-semibold is-size-4\" }, \" Requester \", -1)\nconst _hoisted_3 = {\n key: 0,\n class: \"panel-content\"\n}\nconst _hoisted_4 = { class: \"is-flex is-align-items-flex-start\" }\nconst _hoisted_5 = { class: \"requester-info-icon\" }\nconst _hoisted_6 = { key: 0 }\nconst _hoisted_7 = [\"href\"]\nconst _hoisted_8 = {\n key: 1,\n class: \"m-left-8 pendo-ignore\"\n}\nconst _hoisted_9 = { key: 1 }\nconst _hoisted_10 = {\n key: 0,\n class: \"panel-item is-flex is-align-items-flex-start\"\n}\nconst _hoisted_11 = { class: \"requester-info-icon\" }\nconst _hoisted_12 = { class: \"pendo-ignore m-left-8\" }\nconst _hoisted_13 = {\n key: 1,\n class: \"panel-item is-flex is-align-items-flex-start\"\n}\nconst _hoisted_14 = { class: \"requester-info-icon\" }\nconst _hoisted_15 = { class: \"m-left-8 pendo-ignore\" }\nconst _hoisted_16 = {\n key: 2,\n class: \"panel-item is-flex is-align-items-flex-start\"\n}\nconst _hoisted_17 = { class: \"requester-info-icon\" }\nconst _hoisted_18 = { class: \"m-left-8 pendo-ignore\" }\nconst _hoisted_19 = {\n key: 3,\n class: \"panel-item is-flex is-align-items-flex-start\"\n}\nconst _hoisted_20 = { class: \"requester-info-icon\" }\nconst _hoisted_21 = { class: \"m-left-8\" }\nconst _hoisted_22 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"email-statuses-tip\" }, [\n /*#__PURE__*/_createElementVNode(\"p\", { class: \"m-bottom-8\" }, \" Sent: Email was successfully sent from NextRequest. \"),\n /*#__PURE__*/_createElementVNode(\"p\", { class: \"m-bottom-8\" }, \" Delivered: The destination email server accepted the message. (This does not guarantee successful delivery to the inbox.) \"),\n /*#__PURE__*/_createElementVNode(\"p\", { class: \"m-bottom-8\" }, \" Opened: The email was opened by the requester. \")\n], -1)\nconst _hoisted_23 = {\n key: 0,\n class: \"requester-email-statuses\"\n}\nconst _hoisted_24 = { class: \"requester-email-statuses-events m-left-8 m-top-8\" }\nconst _hoisted_25 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"help\" }, [\n /*#__PURE__*/_createTextVNode(\" Can't find the requester? \"),\n /*#__PURE__*/_createElementVNode(\"a\", { href: \"/admin/users/new\" }, \"Create a new requester account\"),\n /*#__PURE__*/_createTextVNode(\". \")\n], -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrIcon = _resolveComponent(\"NrIcon\")!\n const _component_NrIconButton = _resolveComponent(\"NrIconButton\")!\n const _component_NrTooltip = _resolveComponent(\"NrTooltip\")!\n const _component_NrButton = _resolveComponent(\"NrButton\")!\n const _component_NrLoadingAnimation = _resolveComponent(\"NrLoadingAnimation\")!\n const _component_NrSelect = _resolveComponent(\"NrSelect\")!\n const _component_NrModal = _resolveComponent(\"NrModal\")!\n\n return (_ctx.canSeeRequesterPanel)\n ? (_openBlock(), _createElementBlock(\"article\", _hoisted_1, [\n _hoisted_2,\n (!_ctx.filteredRequestLoading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_ctx.name)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"panel-item is-flex is-align-items-center is-justify-content-space-between\", { 'panel-item--editable': _ctx.$can('manage', 'Request') }])\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_NrIcon, { name: \"user\" })\n ]),\n (_ctx.$can('read', 'admin_only_items'))\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, [\n _createElementVNode(\"a\", {\n href: _ctx.url,\n class: \"has-text-weight-semibold underline m-left-8 pendo-ignore\"\n }, _toDisplayString(_ctx.name), 9, _hoisted_7)\n ]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_8, _toDisplayString(_ctx.name), 1))\n ]),\n (_ctx.$can('manage', 'Request'))\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 0,\n label: \"Change requester\",\n class: \"panel-item-edit\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrIconButton, {\n \"aria-label\": \"Change requester\",\n variant: \"minimal-neutral\",\n icon: { name: 'pencil-alt', type: 'regular' },\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.setCurrentAction('change-requester')))\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ], 2))\n : _createCommentVNode(\"\", true),\n (_ctx.canSeeRequesterDetails)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n (_ctx.email)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createElementVNode(\"div\", _hoisted_11, [\n _createVNode(_component_NrIcon, { name: \"envelope\" })\n ]),\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.email), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.address)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"div\", _hoisted_14, [\n _createVNode(_component_NrIcon, { name: \"mapmarker-alt\" })\n ]),\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.address), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.phone)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createElementVNode(\"div\", _hoisted_17, [\n _createVNode(_component_NrIcon, { name: \"phone\" })\n ]),\n _createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.phone), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.company)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createVNode(_component_NrIcon, { name: \"university\" })\n ]),\n _createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.company), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.canSeeEmailStatuses && _ctx.emailAvailable)\n ? (_openBlock(), _createBlock(_component_NrTooltip, { key: 4 }, {\n label: _withCtx(() => [\n _hoisted_22\n ]),\n default: _withCtx(() => [\n _createVNode(_component_NrButton, {\n variant: \"bordered-neutral\",\n class: \"m-bottom-16 m-top-16\",\n onClick: _ctx.toggleEmailStatuses\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.emailStatusesText), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n (_ctx.showEmailStatuses)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 5 }, [\n (_ctx.isLoadingEmailStatuses)\n ? (_openBlock(), _createBlock(_component_NrLoadingAnimation, {\n key: 0,\n count: 3\n }))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n (!_ctx.hasAnyEmailStatuses)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_23, \" No email status records. \"))\n : _createCommentVNode(\"\", true),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.emailStatuses, (status) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"requester-email-statuses m-bottom-24\",\n key: status.id\n }, [\n _createElementVNode(\"p\", null, [\n _createElementVNode(\"strong\", null, _toDisplayString(status.label), 1)\n ]),\n _createElementVNode(\"ul\", _hoisted_24, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(status.events, (event) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: event.id,\n class: \"m-bottom-8\"\n }, _toDisplayString(event.action) + \": \" + _toDisplayString(event.time), 1))\n }), 128))\n ])\n ]))\n }), 128))\n ], 64))\n ], 64))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : (_openBlock(), _createBlock(_component_NrLoadingAnimation, {\n key: 1,\n count: 3\n })),\n _createVNode(_component_NrModal, {\n class: \"requester-panel-modal\",\n primaryButtonText: \"Change requester\",\n title: \"Change requester\",\n hasSecondaryButton: true,\n show: _ctx.currentAction === 'change-requester',\n onOnCloseClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.setCurrentAction(''))),\n onOnSecondaryClick: _cache[7] || (_cache[7] = ($event: any) => (_ctx.setCurrentAction(''))),\n onOnPrimaryClick: _ctx.handleSave\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"form\", {\n onSubmit: _cache[5] || (_cache[5] = _withModifiers(() => {}, [\"prevent\",\"stop\"]))\n }, [\n _createElementVNode(\"fieldset\", null, [\n _createVNode(_component_NrSelect, {\n placeholder: \"Search requesters\",\n options: _ctx.dataOptions.requesters,\n filterable: false,\n loading: _ctx.dataFetchState.requesters.fetching,\n hasMore: !_ctx.dataFetchState.requesters.end,\n modelValue: _ctx.selectedRequester,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.selectedRequester) = $event)),\n label: \"name_with_email\",\n onOpen: _cache[2] || (_cache[2] = ($event: any) => (_ctx.handleDataTyping($event, 'requesters'))),\n onLoadMore: _cache[3] || (_cache[3] = ($event: any) => (_ctx.handleDataScroll('requesters'))),\n onSearch: _cache[4] || (_cache[4] = ($event: any) => (_ctx.handleDataTyping($event, 'requesters')))\n }, {\n label: _withCtx(() => [\n _createTextVNode(\" Search requesters \")\n ]),\n _: 1\n }, 8, [\"options\", \"loading\", \"hasMore\", \"modelValue\"]),\n _hoisted_25\n ])\n ], 32)\n ]),\n _: 1\n }, 8, [\"show\", \"onOnPrimaryClick\"])\n ]))\n : _createCommentVNode(\"\", true)\n}","\nimport { defineComponent } from 'vue'\nimport { mapActions, mapState } from 'vuex'\nimport { isEmpty, throttle } from 'lodash'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrIcon from '@nextrequestco/components/src/components/NrIcon/NrIcon.vue'\nimport NrButton from '@nextrequestco/components/src/components/NrButton/nr-button.vue'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrSelect from '@nextrequestco/components/src/components/NrSelect/nr-select.vue'\nimport NrLoadingAnimation from '@nextrequestco/components/src/components/NrLoadingAnimation/nr-loading-animation.vue'\nimport NrSentry from '../../../utils/nr_sentry'\nimport API from '../../../vue_shared/api'\n\nexport default defineComponent({\n name: 'requester-info',\n components: {\n NrTooltip,\n NrIconButton,\n NrIcon,\n NrButton,\n NrModal,\n NrLoadingAnimation,\n NrSelect\n },\n\n props: {\n prettyId: { type: String },\n canSeeRequesterPanel: { type: Boolean, default: false },\n canSeeRequesterDetails: { type: Boolean, default: false },\n canSeeEmailStatuses: { type: Boolean, default: false },\n name: { type: String },\n email: { type: String },\n address: { type: String },\n phone: { type: String },\n company: { type: String }\n },\n\n data() {\n return {\n selectedRequester: {},\n emailStatuses: [],\n isLoadingEmailStatuses: false,\n showEmailStatuses: false\n }\n },\n\n mounted() {\n this.selectedRequester = this.request.requester || {}\n },\n\n computed: {\n ...mapState('request_show', [\n 'dataFetchState',\n 'dataOptions',\n 'request',\n 'currentAction',\n 'filteredRequestLoading'\n ]),\n emailStatusesText() {\n if (this.showEmailStatuses) {\n return 'Hide email status'\n } else {\n return 'View email status'\n }\n },\n url() {\n return `/admin/users/${this.request.requester.id}`\n },\n hasAnyEmailStatuses() {\n return !isEmpty(this.emailStatuses)\n },\n emailAvailable(): boolean {\n return this.email !== 'Email Not Available'\n }\n },\n\n methods: {\n ...mapActions('request_show', [\n 'updateRequester',\n 'fetchDataOptions',\n 'setCurrentAction'\n ]),\n\n handleDataTyping: throttle(function (searchText = '', dataType) {\n if (!dataType) return\n this.fetchDataOptions({ searchText, dataType })\n }, 400),\n\n handleDataScroll: throttle(function (dataType) {\n if (!dataType) return\n this.handleDataTyping(this.dataFetchState[dataType].search_text, dataType)\n }, 400),\n\n loadEmailStatuses: throttle(\n function () {\n this.isLoadingEmailStatuses = true\n\n API.fetchRequestEmailStatuses(this.prettyId)\n .then((response) => {\n this.emailStatuses = response.data\n this.isLoadingEmailStatuses = false\n })\n .catch(() => {\n this.$toasted.error(\n 'Failed to retrieve requester email status information.'\n )\n })\n },\n 5000,\n { trailing: false }\n ),\n\n handleSave() {\n if (!this.selectedRequester?.id) {\n return\n }\n\n this.updateRequester({\n prettyId: this.prettyId,\n requesterId: this.selectedRequester.id\n })\n .then(() => {\n this.$toasted.success('Requester updated successfully')\n })\n .catch((e) => {\n this.$toasted.error('There was an error updating the request')\n NrSentry.captureError(e)\n })\n .finally(() => {\n this.setCurrentAction('')\n })\n },\n\n toggleEmailStatuses() {\n this.showEmailStatuses = !this.showEmailStatuses\n if (this.showEmailStatuses) {\n this.loadEmailStatuses()\n }\n }\n }\n})\n","import { render } from \"./RequesterInfo.vue?vue&type=template&id=a41cbbd0&ts=true\"\nimport script from \"./RequesterInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./RequesterInfo.vue?vue&type=script&lang=ts\"\n\nimport \"./RequesterInfo.vue?vue&type=style&index=0&id=a41cbbd0&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <article class=\"panel panel-section request-payment-panel p-bottom-4\">\n <p\n class=\"panel-heading has-background-light has-text-weight-semibold is-size-4\"\n >\n Invoices\n </p>\n <div\n class=\"request-payment-panel-content p-bottom-8\"\n v-if=\"!filteredRequestLoading\"\n >\n <div v-if=\"requestInvoices && requestInvoices.length > 0\">\n <div\n v-for=\"invoice in requestInvoices\"\n :key=\"`invoice-${invoice.id}`\"\n class=\"p-bottom-8\"\n >\n <div\n class=\"panel-item is-flex is-align-items-center\"\n :class=\"{ 'panel-item--editable p-bottom-8': canEdit(invoice) }\"\n >\n <span class=\"invoice p-bottom-8\">{{ invoice.invoice }}</span>\n <div class=\"invoice-btn-actions\">\n <NrTooltip v-if=\"canPayInvoice(invoice)\" label=\"Pay Invoice\">\n <NrIconButton\n variant=\"minimal-neutral\"\n @click=\"\n processClick(\n invoice,\n $can('manage', 'Invoice')\n ? 'payConfirmationDialog'\n : 'requestPaymentsDialog'\n )\n \"\n :aria-label=\"`Pay invoice ${invoice.invoice}`\"\n :icon=\"{ name: 'dollar-sign', type: 'regular' }\"\n class=\"invoice-confirmation\"\n />\n </NrTooltip>\n <NrTooltip\n v-if=\"canDeleteInvoice(invoice)\"\n label=\"Delete Invoice\"\n >\n <NrIconButton\n variant=\"minimal-neutral\"\n @click=\"processClick(invoice, 'deleteConfirmationDialog')\"\n aria-label=\"Delete Invoice \"\n :icon=\"{ name: 'trash-alt', type: 'regular' }\"\n class=\"invoice-confirmation\"\n />\n </NrTooltip>\n </div>\n </div>\n <NrModal\n :show=\"\n activeModal === 'payConfirmationDialog' &&\n isActiveInvoice(invoice)\n \"\n v-model=\"selectedInvoice\"\n title=\"Mark invoice as paid\"\n confirm-button-styles=\"is-primary\"\n primaryButtonText=\"Save\"\n :has-secondary-button=\"true\"\n cancel-button-styles=\"is-primary is-outlined\"\n secondaryButtonText=\"Cancel\"\n :disable-submit=\"false\"\n @on-primary-click=\"processSubmit\"\n @on-secondary-click=\"setActiveModal('')\"\n @on-close-click=\"setActiveModal('')\"\n >\n <p>\n {{ paidConfirmationText }}\n </p>\n </NrModal>\n <NrModal\n :show=\"\n activeModal === 'deleteConfirmationDialog' &&\n isActiveInvoice(invoice)\n \"\n v-model=\"selectedInvoice\"\n title=\"Delete invoice\"\n confirm-button-styles=\"is-danger\"\n primaryButtonText=\"Delete\"\n :has-secondary-button=\"true\"\n cancel-button-styles=\"is-primary is-outlined\"\n secondaryButtonText=\"Cancel\"\n :disable-submit=\"false\"\n @on-primary-click=\"processSubmit\"\n @on-secondary-click=\"setActiveModal('')\"\n @on-close-click=\"setActiveModal('')\"\n >\n <p>\n {{ deleteConfirmationText }}\n </p>\n </NrModal>\n </div>\n </div>\n <div v-else class=\"panel-item is-flex is-align-items-center\">\n <span class=\"p-bottom-8\">No invoices due</span>\n </div>\n </div>\n <NrLoadingAnimation v-else :count=\"3\" />\n </article>\n</template>\n\n<script>\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport NrLoadingAnimation from '@nextrequestco/components/src/components/NrLoadingAnimation/nr-loading-animation.vue'\nimport { mapActions, mapState } from 'vuex'\n\nexport default {\n components: {\n NrIconButton,\n NrModal,\n NrTooltip,\n NrLoadingAnimation\n },\n props: {\n requestInvoices: {\n required: false,\n type: Array,\n default() {\n return []\n }\n }\n },\n data() {\n return {\n selectedInvoice: []\n }\n },\n\n computed: {\n ...mapState(['currentUser']),\n ...mapState(['account']),\n ...mapState('request_show', {\n activeModal: (state) => state.activeModal,\n currentAction: (state) => state.currentAction,\n request: (state) => state.request,\n filteredRequestLoading: (state) => state.filteredRequestLoading\n }),\n\n deleteConfirmationText() {\n return `You are about to delete an invoice. This action cannot be\n undone. Do you want to continue?`\n },\n\n paidConfirmationText() {\n return `You are about to mark this invoice as paid. Do you want to continue?`\n }\n },\n\n methods: {\n ...mapActions('request_show', [\n 'processInvoice',\n 'setCurrentAction',\n 'setActiveModal'\n ]),\n\n canEdit(invoice) {\n return !!invoice.outstanding\n },\n\n clearSelection() {\n this.setActiveModal('')\n this.selectedInvoice = []\n },\n\n processClick(invoice, modalName) {\n this.setActiveModal(modalName)\n this.selectedInvoice = [invoice]\n },\n\n processSubmit() {\n const payload = {\n invoice_id: this.selectedInvoice[0].id,\n request_id: this.request.pretty_id\n }\n if (this.activeModal === 'payConfirmationDialog') {\n payload.paid_offline = true\n payload.action = 'update'\n payload.method = 'put'\n } else {\n payload.action = 'delete'\n payload.method = 'delete'\n }\n this.processInvoice(payload).then(() => {\n this.clearSelection()\n })\n },\n\n canDeleteInvoice(invoice) {\n if (!invoice) {\n return false\n }\n\n return invoice.can_delete_invoice\n },\n\n canPayInvoice(invoice) {\n if (!invoice) {\n return false\n }\n return invoice.can_pay_invoice\n },\n\n isActiveInvoice(invoice) {\n return (\n this.selectedInvoice.length > 0 &&\n this.selectedInvoice[0].id === invoice.id\n )\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.request-payment-panel {\n .request-payment-panel-content {\n .invoice {\n margin-top: 0.5em;\n }\n .panel-item {\n margin-left: -0.75em;\n margin-right: -0.75em;\n padding: 0 0.75em;\n .invoice-btn-actions {\n margin-left: auto;\n }\n .nr-button {\n .pay-invoice.nr-icon {\n font-size: 1.5em;\n }\n }\n }\n }\n}\n</style>\n","import { render } from \"./RequestPayments.vue?vue&type=template&id=c49e9ab2\"\nimport script from \"./RequestPayments.vue?vue&type=script&lang=js\"\nexport * from \"./RequestPayments.vue?vue&type=script&lang=js\"\n\nimport \"./RequestPayments.vue?vue&type=style&index=0&id=c49e9ab2&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, normalizeClass as _normalizeClass, vShow as _vShow, withDirectives as _withDirectives } from \"vue\"\n\nconst _hoisted_1 = { class: \"panel panel-section request-staff-hour-panel p-bottom-4\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"panel-heading request-staff-hour-panel-header has-background-light has-text-weight-semibold is-size-4\" }, \" Staff time \", -1)\nconst _hoisted_3 = {\n key: 0,\n class: \"request-staff-hour-panel-content p-bottom-8\"\n}\nconst _hoisted_4 = { class: \"p-bottom-8\" }\nconst _hoisted_5 = [\"name\", \"hours\"]\nconst _hoisted_6 = { class: \"has-text-weight-semibold p-left-12 p-top-4\" }\nconst _hoisted_7 = { class: \"p-bottom-8\" }\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"has-text-weight-semibold p-left-12\" }, \"Total staff hours\", -1)\nconst _hoisted_9 = { class: \"p-left-24 p-top-8\" }\nconst _hoisted_10 = { class: \"p-bottom-8\" }\nconst _hoisted_11 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"has-text-weight-semibold p-left-12\" }, \"Staff cost\", -1)\nconst _hoisted_12 = { class: \"p-left-24 p-top-8\" }\nconst _hoisted_13 = { class: \"content\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrTooltip = _resolveComponent(\"NrTooltip\")!\n const _component_NrIconButton = _resolveComponent(\"NrIconButton\")!\n const _component_NrModal = _resolveComponent(\"NrModal\")!\n const _component_NrLoadingAnimation = _resolveComponent(\"NrLoadingAnimation\")!\n\n return (_openBlock(), _createElementBlock(\"article\", _hoisted_1, [\n _hoisted_2,\n (!_ctx.filteredRequestLoading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.requestStaffHours, (hours, name) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n name: name,\n hours: hours,\n key: name\n }, [\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(name), 1),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(hours, (hour) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: hour.id\n }, [\n (hour.invoice_id != null)\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 0,\n label: \n hour.paid ? 'Paid in previous invoice' : 'Waiting for payment'\n ,\n class: \"panel-item is-flex is-align-items-center is-justify-content-space-between request-staff-hour--sent\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(hour.staff_hour), 1)\n ]),\n _: 2\n }, 1032, [\"label\"]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"panel-item is-flex is-align-items-center is-justify-content-space-between\", {\n 'panel-item--editable': _ctx.$can('publish', 'Request')\n }])\n }, [\n _createTextVNode(_toDisplayString(hour.staff_hour) + \" \", 1),\n _createElementVNode(\"div\", null, [\n (_ctx.$can('publish', 'Request'))\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 0,\n label: \"Edit staff hours\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrIconButton, {\n variant: \"minimal-neutral\",\n icon: { name: 'pencil-alt', type: 'regular' },\n \"aria-label\": \"Edit staff hours\",\n onClick: ($event: any) => ($options.processEditClick(hour))\n }, null, 8, [\"onClick\"])\n ]),\n _: 2\n }, 1024))\n : _createCommentVNode(\"\", true),\n (_ctx.$can('publish', 'Request'))\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 1,\n label: \"Delete staff hours\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrIconButton, {\n variant: \"minimal-neutral\",\n \"aria-label\": \"Delete staff hours\",\n icon: { name: 'trash-alt', type: 'regular' },\n onClick: ($event: any) => (\n $options.processDeleteClick(\n hour,\n 'deleteStaffHourConfirmationDialog'\n )\n )\n }, null, 8, [\"onClick\"])\n ]),\n _: 2\n }, 1024))\n : _createCommentVNode(\"\", true)\n ])\n ], 2))\n ]))\n }), 128))\n ], 8, _hoisted_5))\n }), 128))\n ]),\n _withDirectives(_createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createElementVNode(\"div\", _hoisted_9, _toDisplayString($props.totalStaffHours), 1)\n ], 512), [\n [_vShow, $props.totalStaffHours]\n ]),\n _withDirectives(_createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"div\", _hoisted_12, _toDisplayString($options.formatCost($props.staffCost)), 1)\n ], 512), [\n [_vShow, $props.staffCost]\n ]),\n _createVNode(_component_NrModal, {\n class: \"delete-staff-time\",\n title: \"Delete Staff Time\",\n \"confirm-button-styles\": \"is-danger\",\n primaryButtonText: \"Delete\",\n \"cancel-button-styles\": \"is-primary is-outlined\",\n secondaryButtonText: \"Cancel\",\n hasSecondaryButton: true,\n show: _ctx.activeModal === 'deleteStaffHourConfirmationDialog',\n \"disable-submit\": false,\n onOnPrimaryClick: _cache[0] || (_cache[0] = ($event: any) => ($options.processDeleteStaffSubmit())),\n onOnSecondaryClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.setActiveModal(null)))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"p\", _hoisted_13, _toDisplayString($options.deleteStaffHourConfirmationText), 1)\n ]),\n _: 1\n }, 8, [\"show\"])\n ]))\n : (_openBlock(), _createBlock(_component_NrLoadingAnimation, {\n key: 1,\n count: 3\n }))\n ]))\n}","\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport NrLoadingAnimation from '@nextrequestco/components/src/components/NrLoadingAnimation/nr-loading-animation.vue'\nimport { mapMutations, mapActions, mapState } from 'vuex'\nimport helpers from '../../../utils/helpers.js'\n\ninterface StaffHours {\n // eslint-disable-next-line camelcase\n department_id: number | null\n // eslint-disable-next-line camelcase\n description: string\n hours: number\n minutes: number\n // eslint-disable-next-line camelcase\n staff_hour: string\n // eslint-disable-next-line camelcase\n staff_id: number\n // eslint-disable-next-line camelcase\n staff_name: string\n id: number\n}\n\nexport default {\n components: {\n NrIconButton,\n NrModal,\n NrTooltip,\n NrLoadingAnimation\n },\n props: {\n staffCost: {\n required: false,\n type: String,\n default() {\n return ''\n }\n },\n totalStaffHours: {\n required: false,\n type: String,\n default() {\n return ''\n }\n }\n },\n\n computed: {\n ...mapState(['currentUser']),\n ...mapState('request_show', [\n 'request',\n 'requestStaffHours',\n 'filteredRequestLoading',\n 'selectedStaffHour',\n 'activeModal'\n ]),\n deleteStaffHourConfirmationText(): string {\n return `You are about to remove staff time logged for this user.\n This action cannot be undone. Do you want to continue?`\n }\n },\n\n methods: {\n ...mapActions('request_show', [\n 'fetchRequestStaffHours',\n 'processStaffHour'\n ]),\n\n ...mapMutations('request_show', ['setSelectedStaffHour', 'setActiveModal']),\n\n clearSelection(): void {\n this.setActiveModal(null)\n this.selectedInvoice = []\n },\n\n processDeleteClick(staffHour: StaffHours, modalName: string) {\n this.setSelectedStaffHour(staffHour)\n this.setActiveModal(modalName)\n },\n\n processEditClick(hour: StaffHours) {\n this.$emit('set-staff-time-for-edit', hour)\n this.setActiveModal('editStaffTime')\n },\n\n processDeleteStaffSubmit(): void {\n const payload = {\n id: this.selectedStaffHour.id,\n request_id: this.request.pretty_id,\n action: 'delete',\n method: 'delete'\n }\n this.processStaffHour(payload).then(() => {\n this.clearSelection()\n })\n this.setActiveModal(null)\n },\n\n formatCost(cost: number, maximumFractionDigits: number = 2): string {\n return helpers.formatCost(cost, maximumFractionDigits)\n }\n }\n}\n","import { render } from \"./request-staff-hours.vue?vue&type=template&id=390a67e2&ts=true\"\nimport script from \"./request-staff-hours.vue?vue&type=script&lang=ts\"\nexport * from \"./request-staff-hours.vue?vue&type=script&lang=ts\"\n\nimport \"./request-staff-hours.vue?vue&type=style&index=0&id=390a67e2&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = { class: \"panel panel-section request-assigned-panel p-bottom-4\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"panel-heading request-assigned-panel-header has-background-light has-text-weight-semibold is-size-4\" }, \" Staff assigned \", -1)\nconst _hoisted_3 = {\n key: 0,\n class: \"request-assigned-panel-content\"\n}\nconst _hoisted_4 = {\n key: 0,\n \"data-cy\": \"request-staff\"\n}\nconst _hoisted_5 = { class: \"panel-item is-flex is-align-items-center is-justify-content-space-between has-text-weight-semibold panel-item--editable\" }\nconst _hoisted_6 = { class: \"m-left-8 has-text-red t--strikethrough\" }\nconst _hoisted_7 = { key: 1 }\nconst _hoisted_8 = { class: \"m-left-8\" }\nconst _hoisted_9 = {\n key: 1,\n class: \"m-left-8\"\n}\nconst _hoisted_10 = {\n key: 2,\n class: \"m-left-8\"\n}\nconst _hoisted_11 = { class: \"message-contents-field\" }\nconst _hoisted_12 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"has-text-weight-bold\" }, \"Send Message (optional)\", -1)\nconst _hoisted_13 = {\n key: 0,\n class: \"m-top-12\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_RequestDepartmentAssigned = _resolveComponent(\"RequestDepartmentAssigned\")!\n const _component_RequestPoc = _resolveComponent(\"RequestPoc\")!\n const _component_NrIconButton = _resolveComponent(\"NrIconButton\")!\n const _component_NrTooltip = _resolveComponent(\"NrTooltip\")!\n const _component_NrModal = _resolveComponent(\"NrModal\")!\n const _component_NrSelect = _resolveComponent(\"NrSelect\")!\n const _component_nr_editor = _resolveComponent(\"nr-editor\")!\n const _component_NrFormInput = _resolveComponent(\"NrFormInput\")!\n const _component_message_box = _resolveComponent(\"message-box\")!\n const _component_NrLoadingAnimation = _resolveComponent(\"NrLoadingAnimation\")!\n\n return (_openBlock(), _createElementBlock(\"article\", _hoisted_1, [\n _hoisted_2,\n (!_ctx.filteredRequestLoading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(_component_RequestDepartmentAssigned),\n _createVNode(_component_RequestPoc, { poc: $props.poc }, null, 8, [\"poc\"]),\n ($options.canSeeStaffOnlyItems)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createTextVNode(\" Support staff \"),\n ($options.canAddAndRemoveStaff)\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 0,\n label: \"Add support staff\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrIconButton, {\n class: \"edit-request-assigned-btn\",\n variant: \"minimal-neutral\",\n icon: { name: 'plus', type: 'regular' },\n onClick: _cache[0] || (_cache[0] = ($event: any) => ($options.handleAddStaffClick())),\n \"aria-label\": \"add support staff\"\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.requestStaff, (staff, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"is-flex is-align-items-center is-justify-content-space-between panel-item\", $options.canAddAndRemoveStaff ? 'panel-item--editable' : 'p-bottom-8']),\n key: index\n }, [\n (staff.undeliverable_email)\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 0,\n label: \"Mail to this address has been returned as undeliverable\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"p\", _hoisted_6, _toDisplayString($options.staffNameOrEmail(staff)), 1)\n ]),\n _: 2\n }, 1024))\n : (staff && staff.departments.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n ($options.staffDepartmentsWithPocLabel(staff) != '')\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 0,\n label: $options.staffDepartmentsWithPocLabel(staff)\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"p\", _hoisted_8, _toDisplayString($options.staffNameOrEmail(staff)), 1)\n ]),\n _: 2\n }, 1032, [\"label\"]))\n : (_openBlock(), _createElementBlock(\"p\", _hoisted_9, _toDisplayString($options.staffNameOrEmail(staff)), 1))\n ]))\n : (!staff.undeliverable_email)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_10, _toDisplayString($options.staffNameOrEmail(staff)), 1))\n : _createCommentVNode(\"\", true),\n ($options.canAddAndRemoveStaff)\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 3,\n label: \"Remove Staff\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrIconButton, {\n class: \"edit-request-assigned-btn\",\n variant: \"minimal-neutral\",\n icon: { name: 'trash-alt', type: 'regular' },\n onClick: ($event: any) => ($options.handleRemoveStaffClick(staff)),\n \"aria-label\": \"Remove staff\"\n }, null, 8, [\"onClick\"])\n ]),\n _: 2\n }, 1024))\n : _createCommentVNode(\"\", true)\n ], 2))\n }), 128)),\n _createVNode(_component_NrModal, {\n class: \"remove-staff-modal\",\n modelValue: $data.selectedStaff,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => (($data.selectedStaff) = $event)),\n title: \"Remove Staff\",\n show: $data.showRemoveStaffModal,\n hasSecondaryButton: true,\n secondaryButtonText: \"Cancel\",\n primaryButtonText: \"Remove\",\n disableButtons: $options.disableRemoveStaffButton,\n onOnPrimaryClick: $options.submitRemoveStaff,\n onOnSecondaryClick: $options.hideRemoveStaffModal,\n onOnCloseClick: $options.hideRemoveStaffModal\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString($options.removeStaffDisplayText), 1)\n ]),\n _: 1\n }, 8, [\"modelValue\", \"show\", \"disableButtons\", \"onOnPrimaryClick\", \"onOnSecondaryClick\", \"onOnCloseClick\"]),\n _createElementVNode(\"div\", null, [\n ($data.showAddStaffModal)\n ? (_openBlock(), _createBlock(_component_message_box, {\n key: 0,\n title: \"Add Staff\",\n type: \"default\",\n \"submit-text\": \"Add Staff\",\n \"disable-submit\": false,\n onOnClose: $options.hideAddStaffModal,\n onOnCancel: $options.hideAddStaffModal,\n onOnSubmit: $options.submitAddStaff\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_11, [\n _createVNode(_component_NrSelect, {\n class: \"m-top-12\",\n modelValue: $data.addStaffToRequest,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => (($data.addStaffToRequest) = $event)),\n placeholder: \"Search names or emails\",\n options: $options.filteredStaff,\n onLoadMore: $options.handleStaffScroll,\n onSearch: $options.filterStaff,\n onOpen: $options.filterStaff,\n multiple: \"\",\n loading: _ctx.dataFetchState.staff.fetching,\n hasMore: !_ctx.dataFetchState.staff.end\n }, {\n label: _withCtx(() => [\n _createTextVNode(\"Search staff\")\n ]),\n _: 1\n }, 8, [\"modelValue\", \"options\", \"onLoadMore\", \"onSearch\", \"onOpen\", \"loading\", \"hasMore\"]),\n _createElementVNode(\"label\", null, [\n _hoisted_12,\n _createVNode(_component_nr_editor, {\n modelValue: $data.message,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => (($data.message) = $event)),\n resizable: false,\n bold: false,\n underline: false,\n italic: false,\n class: \"add-staff-modal\",\n placeholder: 'Send an optional message to inform staff why they are being assigned to this request',\n rows: 10\n }, null, 8, [\"modelValue\"])\n ]),\n ($data.message)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createVNode(_component_NrFormInput, {\n type: \"checkbox\",\n label: \"Send to all assigned staff\",\n name: \"send_all_assigned_staff\",\n modelValue: $data.sendAllAssignedStaff,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => (($data.sendAllAssignedStaff) = $event))\n }, null, 8, [\"modelValue\"])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 1\n }, 8, [\"onOnClose\", \"onOnCancel\", \"onOnSubmit\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : (_openBlock(), _createBlock(_component_NrLoadingAnimation, {\n key: 1,\n count: 3\n }))\n ]))\n}","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"has-text-weight-semibold\" }, \"Departments\", -1)\nconst _hoisted_2 = { class: \"m-left-8\" }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = {\n key: 0,\n class: \"is-italic m-bottom-12\"\n}\nconst _hoisted_5 = { class: \"field\" }\nconst _hoisted_6 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Departments\", -1)\nconst _hoisted_7 = {\n key: 0,\n class: \"help is-danger\"\n}\nconst _hoisted_8 = { class: \"field\" }\nconst _hoisted_9 = { class: \"field\" }\nconst _hoisted_10 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Assign Point of Contact\", -1)\nconst _hoisted_11 = {\n key: 0,\n class: \"help\"\n}\nconst _hoisted_12 = {\n key: 1,\n class: \"help\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrIconButton = _resolveComponent(\"NrIconButton\")!\n const _component_NrTooltip = _resolveComponent(\"NrTooltip\")!\n const _component_NrSelect = _resolveComponent(\"NrSelect\")!\n const _component_NrFormSelect = _resolveComponent(\"NrFormSelect\")!\n const _component_NrModal = _resolveComponent(\"NrModal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", null, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"is-flex is-align-items-center is-justify-content-space-between\", $options.canUpdateRequest ? 'panel-item--editable' : 'p-bottom-8'])\n }, [\n _hoisted_1,\n ($options.canUpdateRequest)\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 0,\n label: \"Edit departments\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrIconButton, {\n class: \"edit-request-assigned-btn\",\n icon: { name: 'pencil-alt', type: 'regular' },\n variant: \"minimal-neutral\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.setCurrentAction('assignDept'))),\n \"aria-label\": \"Edit departments\"\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.request.departments, (department) => {\n return (_openBlock(), _createElementBlock(\"p\", {\n key: department.id,\n class: \"m-bottom-12\"\n }, [\n ($options.departmentMembersList(department) != '')\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 0,\n label: $options.departmentMembersList(department)\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(department.name), 1)\n ]),\n _: 2\n }, 1032, [\"label\"]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_3, _toDisplayString(department.name), 1))\n ]))\n }), 128)),\n (_ctx.request.departments.length === 0)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_4, \" No departments assigned \"))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(_component_NrModal, {\n title: \"Assign departments\",\n show: $options.isAssignDeptModalActive,\n hasSecondaryButton: \"\",\n disableButtons: _ctx.updatingRequestData,\n secondaryButtonText: \"Cancel\",\n primaryButtonText: \"Assign departments\",\n onOnPrimaryClick: $options.updateDepartments,\n onOnSecondaryClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.setCurrentAction(''))),\n onOnCloseClick: _cache[6] || (_cache[6] = ($event: any) => (_ctx.setCurrentAction('')))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"form\", {\n class: \"form\",\n onSubmit: _cache[4] || (_cache[4] = _withModifiers(() => {}, [\"prevent\",\"stop\"]))\n }, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_NrSelect, {\n modelValue: _ctx.selectedRequestDepartments,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.selectedRequestDepartments) = $event)),\n placeholder: \"Search and select department\",\n options: $options.filteredDepartments,\n filterable: false,\n loading: _ctx.dataFetchState.departments.fetching,\n hasMore: !_ctx.dataFetchState.departments.end,\n onLoadMore: $options.handleDepartmentScroll,\n onSearch: $options.filterDepartments,\n onOpen: $options.filterDepartments,\n \"onOption:selected\": $options.selectedDepartment,\n \"onOption:deselected\": $options.deselectedDepartment,\n \"append-to-body\": \"\",\n multiple: \"\"\n }, {\n label: _withCtx(() => [\n _hoisted_6\n ]),\n _: 1\n }, 8, [\"modelValue\", \"options\", \"loading\", \"hasMore\", \"onLoadMore\", \"onSearch\", \"onOpen\", \"onOption:selected\", \"onOption:deselected\"]),\n ($options.showDepartmentInputHelper)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_7, \" At least one department is required. \"))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createVNode(_component_NrFormSelect, {\n label: \"Request visibility\",\n name: \"visibility\",\n modelValue: _ctx.selectedVisibility,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.selectedVisibility) = $event)),\n options: $options.visibilities\n }, null, 8, [\"modelValue\", \"options\"])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createVNode(_component_NrSelect, {\n modelValue: _ctx.newPoc,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.newPoc) = $event)),\n placeholder: \"Search and select point of contact\",\n options: _ctx.pocOptions,\n filterable: false,\n \"append-to-body\": \"\",\n onInput: $options.newPocSelected\n }, {\n label: _withCtx(() => [\n _hoisted_10\n ]),\n _: 1\n }, 8, [\"modelValue\", \"options\", \"onInput\"]),\n (_ctx.showPocAutomationHelperText)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_11, \" Point of Contact has been automatically updated. \"))\n : (_ctx.showPocManualHelperText)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_12, \" Point of Contact has been manually updated. \"))\n : _createCommentVNode(\"\", true)\n ])\n ], 32)\n ]),\n _: 1\n }, 8, [\"show\", \"disableButtons\", \"onOnPrimaryClick\"])\n ]))\n}","\nimport { mapActions, mapState } from 'vuex'\nimport { State } from 'src/store/globalModule'\nimport { throttle, isEmpty } from 'lodash'\nimport {\n accountRequestVisibilities,\n RequestVisibility\n} from '../../../store/globalModule'\nimport { Request } from '../../request_show/store/request_state_declarations'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrSelect from '@nextrequestco/components/src/components/NrSelect/nr-select.vue'\nimport NrFormSelect from '@nextrequestco/components/src/components/NrFormSelect/nr-form-select'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\n\ninterface Department {\n id: number\n name: string\n poc_id: number // eslint-disable-line camelcase\n}\n\ninterface Poc {\n id: number\n name: string\n department_name: string // eslint-disable-line camelcase\n department_id: number // eslint-disable-line camelcase\n}\n\ninterface SelectOption {\n value: number\n label: string\n}\n\ninterface DepartmentOption {\n value: number\n label: string\n pocId: number\n}\n\nconst pocOption = ({\n request,\n // @ts-ignore: NEX-9140\n id = request?.poc?.id,\n emailOrName = request?.poc?.email_or_name,\n accountPocId,\n departments\n}: {\n request: Request\n id: number\n emailOrName: string\n accountPocId: number\n departments: string[]\n}): SelectOption | Object => {\n if (!request?.poc) {\n return {}\n }\n\n let descriptionList = []\n // @ts-ignore: NEX-9140\n if (id === request?.poc?.id) {\n descriptionList.push('Current Point of Contact')\n }\n\n if (id === accountPocId) {\n descriptionList.push('Account Point of Contact')\n }\n\n descriptionList = descriptionList.concat(departments)\n\n return {\n value: id,\n label: `${emailOrName} (${descriptionList.join(', ')})`\n }\n}\n\nconst initialState = (newRequest: Request) => {\n return {\n accountPocOption: null,\n updatingRequestData: false,\n // @ts-ignore: NEX-9140\n newPoc: pocOption({ request: newRequest }),\n pocOptions: [],\n selectedRequestDepartments:\n newRequest?.departments?.map((dept: Department) => ({\n value: dept.id,\n label: dept.name,\n pocId: dept.poc_id\n })) || [],\n selectedVisibility: newRequest?.visibility || '',\n showPocAutomationHelperText: false,\n showPocManualHelperText: false\n }\n}\n\nexport default {\n components: {\n NrModal,\n NrSelect,\n NrFormSelect,\n NrTooltip,\n NrIconButton\n },\n data() {\n return initialState(this.request)\n },\n watch: {\n currentAction(next, _prev) {\n if (next === 'assignDept') {\n this.resetData(this.request)\n this.updatePocOptions()\n }\n },\n request(newRequest) {\n // resets all dropdown data while cycling requests\n this.resetData(newRequest)\n }\n },\n computed: {\n // @ts-ignore: NEX-9140\n ...mapState(['account'], {\n departmentRequired: (state: State): boolean => {\n return !!state.account?.require_department\n }\n }),\n\n ...mapState('request_show', [\n 'currentAction',\n 'request',\n 'dataFetchState',\n 'dataOptions',\n 'requestStaff'\n ]),\n\n canUpdateRequest(): boolean {\n return this.$ability.can('manage', 'Request')\n },\n\n visibilities(): RequestVisibility[] {\n return accountRequestVisibilities(this.account)\n },\n\n showDepartmentInputHelper(): boolean {\n return (\n this.departmentRequired && this.selectedRequestDepartments.length < 1\n )\n },\n\n isAssignDeptModalActive(): boolean {\n return this.currentAction === 'assignDept'\n },\n\n filteredDepartments(): DepartmentOption[] {\n return this.dataOptions.departments.map((department: Department) => ({\n label: department.name,\n value: department.id,\n pocId: department.poc_id\n }))\n }\n },\n methods: {\n ...mapActions('request_show', [\n 'fetchDepartmentPocs',\n 'fetchRequestStaff',\n 'fetchDataOptions',\n 'fetchTimeline',\n 'fetchRequest',\n 'updateRequest',\n 'setCurrentAction'\n ]),\n\n resetData(newRequest: Request) {\n Object.assign(this.$data, initialState(newRequest))\n },\n\n applyPocAutomations() {\n // Returns early if account poc automation is turned off\n if (!this.account.poc_automation) {\n return\n }\n const currentPoc = this.newPoc?.value\n // Automatically select the PoC of the first dept assigned to the request,\n // unless the currently selected PoC is assigned to a different selected dept.\n if (\n this.selectedRequestDepartments.length >= 1 &&\n (!this.newPoc || this.newPoc?.value === this.accountPocOption?.value)\n ) {\n const firstDeptPoc = this.pocOptions.find((option: SelectOption) => {\n return option.value === this.selectedRequestDepartments[0].pocId\n })\n if (!firstDeptPoc) return\n this.newPoc = firstDeptPoc\n }\n\n // Automatically select the Account PoC when all departments are removed.\n // (Even if the actual current PoC is different.)\n if (this.selectedRequestDepartments.length === 0) {\n this.newPoc = this.accountPocOption\n }\n\n const newPoc = this.newPoc?.value\n // Show poc automation helper text when POC changes\n if (newPoc !== currentPoc) {\n this.showPocAutomationHelperText = true\n } else {\n this.showPocAutomationHelperText = false\n }\n this.showPocManualHelperText = false\n },\n\n newPocSelected() {\n this.showPocManualHelperText = true\n this.showPocAutomationHelperText = false\n },\n\n departmentMembersList(department: Department) {\n const membersList = []\n let pocFound = false\n this.requestStaff.forEach((staff) => {\n if (staff.id === department.poc_id) {\n membersList.unshift(staff.name_or_email + ' (Point of Contact)')\n pocFound = true\n } else if (staff.departments.includes(department.name)) {\n membersList.push(staff.name_or_email)\n }\n })\n if (!pocFound) {\n membersList.unshift(\n this.request.poc.email_or_name + ' (Point of Contact)'\n )\n }\n return membersList.join(', ')\n },\n\n selectedDepartment() {\n this.updatePocOptions().then(() => {\n this.applyPocAutomations()\n })\n },\n\n deselectedDepartment() {\n this.updatePocOptions().then(() => {\n this.applyPocAutomations()\n })\n },\n\n filterDepartments: throttle(function (searchText = '') {\n this.fetchDataOptions({ searchText, dataType: 'departments' })\n }, 400),\n\n handleDepartmentScroll: throttle(function () {\n this.fetchDataOptions({\n searchText: this.dataFetchState.departments.search_text,\n dataType: 'departments'\n })\n }, 400),\n\n setAssignedRequestDepartments() {\n this.selectedRequestDepartments = this.request.departments?.map(\n (dept: Department) => ({\n value: dept.id,\n label: dept.name,\n pocId: dept.poc_id\n })\n )\n },\n\n setAssignedRequestVisibility() {\n this.selectedVisibility = this.request.visibility\n },\n\n findPocByDepartment(pocs: Poc[], departmentOption: DepartmentOption) {\n const deptPocId = departmentOption.pocId\n return pocs.find((poc: Poc) => poc.id === deptPocId)\n },\n\n updatePocOptions() {\n return this.fetchDepartmentPocs({\n departmentIds: this.selectedRequestDepartments.map(\n (dept: SelectOption) => dept.value\n ),\n pocId: this.request.poc.id\n }).then((pocs: Poc[]) => {\n // Fixes a type error where `concat` is not defined when the list has no entries.\n if (!pocs.length) {\n pocs = [] as Poc[]\n }\n\n // Ensures an entry for the current PoC is populated even if the current\n // PoC is not the PoC of any departments.\n const pocsWithCurrent = pocs.concat([\n {\n id: this.request.poc.id,\n name: this.request.poc.name_or_email,\n department_name: '',\n department_id: -1\n } as Poc\n ])\n\n const options = {}\n pocsWithCurrent.forEach((poc: Poc) => {\n if (!options[poc.id]) {\n options[poc.id] = pocOption({\n id: poc.id,\n emailOrName: poc.name,\n request: this.request,\n accountPocId: this.account.poc_id,\n departments: pocs\n // @ts-ignore: NEX-9140\n .filter((entry) => entry.id === poc.id && !entry.account_poc)\n .map((entry) => entry.department_name)\n })\n // @ts-ignore: NEX-9140\n if (poc.account_poc) {\n this.accountPocOption = options[poc.id]\n }\n }\n })\n\n // Automatically update the selected PoC's description text,\n // when it is still a valid value. (This is relevant when the same user\n // is assigned as the PoC of multiple departments, and one of their\n // departments is added/removed.)\n if (this.newPoc?.value) {\n this.newPoc = options[this.newPoc.value]\n }\n\n this.pocOptions = Object.values(options)\n })\n },\n\n updateDepartments() {\n this.updatingRequestData = true\n this.updateRequest({\n request_id: this.request.pretty_id,\n department_ids: this.selectedRequestDepartments.map(\n ({ value }) => value\n ),\n visibility: this.selectedVisibility,\n poc_id: !isEmpty(this.newPoc) ? this.newPoc.value : undefined\n })\n .then(() => {\n this.fetchRequest(this.request.pretty_id)\n this.setCurrentAction('')\n this.$toasted.success('Departments updated successfully')\n this.fetchTimeline({\n pretty_id: this.request.pretty_id\n })\n this.fetchRequestStaff({ request_id: this.request.pretty_id }).catch(\n () => {\n this.$toasted.error(\n 'There was an error retrieving the request staff'\n )\n }\n )\n })\n .catch((_error: Error) => {\n this.$toasted.error('Departments updated failed')\n })\n .finally(() => {\n this.updatingRequestData = false\n })\n }\n }\n}\n","import { render } from \"./RequestDepartmentAssigned.vue?vue&type=template&id=91724276&ts=true\"\nimport script from \"./RequestDepartmentAssigned.vue?vue&type=script&lang=ts\"\nexport * from \"./RequestDepartmentAssigned.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"panel-section p-bottom-8\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"has-text-weight-semibold\" }, \"Point of contact\", -1)\nconst _hoisted_3 = { class: \"m-left-8 m-bottom-12\" }\nconst _hoisted_4 = { class: \"has-text-red t--strikethrough\" }\nconst _hoisted_5 = { key: 1 }\nconst _hoisted_6 = { key: 1 }\nconst _hoisted_7 = { class: \"field\" }\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Search staff\", -1)\nconst _hoisted_9 = {\n key: 0,\n class: \"field\"\n}\nconst _hoisted_10 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"help\" }, \" Reassign the current point of contact's tasks to the new point of contact? Uncheck this to add the current point of contact as support staff and keep the current task assignment. \", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrIconButton = _resolveComponent(\"NrIconButton\")!\n const _component_NrTooltip = _resolveComponent(\"NrTooltip\")!\n const _component_NrSelect = _resolveComponent(\"NrSelect\")!\n const _component_NrFormInput = _resolveComponent(\"NrFormInput\")!\n const _component_NrModal = _resolveComponent(\"NrModal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"is-flex is-align-items-center is-justify-content-space-between\", {\n 'panel-item panel-item--editable': _ctx.$can('manage', 'Request')\n }])\n }, [\n _hoisted_2,\n (_ctx.$can('manage', 'Request'))\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 0,\n label: \"Change point of contact\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrIconButton, {\n variant: \"minimal-neutral\",\n icon: { name: 'pencil-alt', type: 'regular' },\n \"aria-label\": \"Change point of contact\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.setCurrentAction('edit-poc')))\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", _hoisted_3, [\n (_ctx.request.poc.undeliverable_email)\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 0,\n label: \"Mail to this address has been returned as undeliverable\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"p\", _hoisted_4, _toDisplayString(_ctx.request.poc.email_or_name), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n (!_ctx.request.poc.undeliverable_email)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_5, [\n ($options.staffDepartmentsWithPocLabel() != '')\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 0,\n label: $options.staffDepartmentsWithPocLabel()\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.request.poc.email_or_name), 1)\n ]),\n _: 1\n }, 8, [\"label\"]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_6, _toDisplayString(_ctx.request.poc.email_or_name), 1))\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(_component_NrModal, {\n \"primary-button-text\": \"Change contact\",\n \"secondary-button-text\": \"Cancel\",\n title: \"Change Point of Contact\",\n \"has-secondary-button\": true,\n show: _ctx.currentAction === 'edit-poc',\n onOnCloseClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.setCurrentAction(null))),\n onOnPrimaryClick: $options.submitForm,\n onOnSecondaryClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.setCurrentAction(null)))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_component_NrSelect, {\n modelValue: $data.selectedPoc,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => (($data.selectedPoc) = $event)),\n filterable: false,\n placeholder: \"Search and select staff\",\n options: $options.filteredStaff,\n loading: _ctx.dataFetchState.staff.fetching,\n hasMore: !_ctx.dataFetchState.staff.end,\n onLoadMore: $options.handleStaffScroll,\n onSearch: $options.filterStaff,\n onOpen: $options.filterStaff,\n \"append-to-body\": \"\"\n }, {\n label: _withCtx(() => [\n _hoisted_8\n ]),\n _: 1\n }, 8, [\"modelValue\", \"options\", \"loading\", \"hasMore\", \"onLoadMore\", \"onSearch\", \"onOpen\"])\n ]),\n (_ctx.request.poc.has_tasks)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createVNode(_component_NrFormInput, {\n type: \"checkbox\",\n label: \"Reassign tasks\",\n name: \"reassign_tasks\",\n modelValue: $data.reassignTasks,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => (($data.reassignTasks) = $event))\n }, null, 8, [\"modelValue\"]),\n _hoisted_10\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"show\", \"onOnPrimaryClick\"])\n ]))\n}","\nimport { mapState, mapActions } from 'vuex'\nimport throttle from 'lodash/throttle'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport NrSelect from '@nextrequestco/components/src/components/NrSelect/nr-select.vue'\nimport NrFormInput from '@nextrequestco/components/src/components/NrFormInput/nr-form-input.vue'\nimport NrSentry from '../../../utils/nr_sentry'\n\ninterface Option {\n value: number\n label: string // eslint-disable-line camelcase\n}\n\ninterface Staff {\n departments: Array<object | null>\n email: string\n id: number\n name_or_email: string // eslint-disable-line camelcase\n name_with_email: string // eslint-disable-line camelcase\n undeliverable_email: boolean // eslint-disable-line camelcase\n}\n\nexport default {\n components: {\n NrIconButton,\n NrTooltip,\n NrModal,\n NrSelect,\n NrFormInput\n },\n data() {\n return {\n selectedPoc: {},\n reassignTasks: false\n }\n },\n mounted() {\n this.selectedPoc = {\n value: this.request.poc.id,\n label: this.request.poc.name_with_email\n }\n },\n computed: {\n ...mapState('request_show', [\n 'request',\n 'requestTasks',\n 'requestStaff',\n 'currentAction',\n 'dataOptions',\n 'dataFetchState'\n ]),\n filteredStaff() {\n return this.dataOptions.staff.map((staff: Staff) => ({\n label: staff.name_with_email,\n value: staff.id\n }))\n }\n },\n methods: {\n ...mapActions('request_show', [\n 'fetchRequestStaff',\n 'setCurrentAction',\n 'updateRequest',\n 'fetchRequestTasks',\n 'fetchDataOptions'\n ]),\n staffDepartmentsWithPocLabel(): string {\n const departmentsList = []\n const staffPoc = this.requestStaff.find(\n (staff) => staff.id === this.request.poc.id\n )\n if (staffPoc === undefined) {\n this.request.departments.forEach((department) => {\n if (department.poc_id === this.request.poc.id) {\n departmentsList.unshift(department.name + ' (Point of Contact)')\n }\n })\n } else {\n this.request.departments.forEach((department) => {\n if (staffPoc?.departments.includes(department.name)) {\n if (department.poc_id === staffPoc.id) {\n departmentsList.unshift(department.name + ' (Point of Contact)')\n } else {\n departmentsList.push(department.name)\n }\n }\n })\n }\n return departmentsList.join(', ')\n },\n filterStaff: throttle(function (searchText = '') {\n this.fetchDataOptions({ searchText, dataType: 'staff' })\n }, 400),\n handleStaffScroll: throttle(function () {\n this.fetchDataOptions({\n searchText: this.dataFetchState.staff.search_text,\n dataType: 'staff'\n })\n }, 400),\n setPoc(poc: Option): void {\n this.selectedPoc = poc\n },\n submitForm(): void {\n if (!this.selectedPoc) {\n this.$toasted.error('Please select a point of contact')\n return\n }\n const params = {\n request_id: this.request.pretty_id,\n poc_id: this.selectedPoc.value,\n reassign_tasks: this.reassignTasks\n }\n this.updateRequest(params)\n .then(() => {\n this.$toasted.success('Successfully updated the point of contact')\n this.setCurrentAction(null)\n this.reassignTasks = false\n this.fetchRequestStaff({ request_id: this.request.pretty_id }).catch(\n () => {\n this.$toasted.error(\n 'There was an error retrieving the request staff'\n )\n }\n )\n this.fetchRequestTasks({ pretty_id: this.request.pretty_id })\n })\n .catch((e) => {\n this.$toasted.error('There was an error updating the request')\n NrSentry.captureError(e)\n })\n }\n }\n}\n","import { render } from \"./RequestPoc.vue?vue&type=template&id=1e1af4ba&ts=true\"\nimport script from \"./RequestPoc.vue?vue&type=script&lang=ts\"\nexport * from \"./RequestPoc.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport { throttle } from 'lodash'\nimport { subject } from '@casl/ability'\nimport API from '../../../vue_shared/api'\nimport { mapActions, mapState } from 'vuex'\nimport MessageBox from '@nextrequestco/components/src/components/MessageBox/MessageBox.vue'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrEditor from '@nextrequestco/components/src/components/NrEditor/nr-editor.vue'\nimport NrFormInput from '@nextrequestco/components/src/components/NrFormInput/nr-form-input.vue'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport NrSelect from '@nextrequestco/components/src/components/NrSelect/nr-select.vue'\nimport NrLoadingAnimation from '@nextrequestco/components/src/components/NrLoadingAnimation/nr-loading-animation.vue'\nimport RequestDepartmentAssigned from '../components/RequestDepartmentAssigned.vue'\nimport RequestPoc from '../components/RequestPoc.vue'\n\ninterface Staff {\n id: number\n name_with_email: string // eslint-disable-line camelcase\n name_or_email: string // eslint-disable-line camelcase\n}\n\nexport default {\n name: 'RequestAssigned',\n components: {\n MessageBox,\n NrIconButton,\n NrFormInput,\n 'nr-editor': NrEditor,\n NrModal,\n NrTooltip,\n RequestPoc,\n NrSelect,\n NrLoadingAnimation,\n RequestDepartmentAssigned\n },\n props: {\n account: {\n type: Object\n },\n requestId: {\n type: String\n },\n departments: {\n type: Array\n },\n visibility: {\n type: String\n },\n prettyId: {\n type: String\n },\n poc: {\n type: Object\n },\n requestStaff: {\n type: Array\n }\n },\n data() {\n return {\n addStaffToRequest: [],\n message: '',\n name: '',\n page: 1,\n selectedStaff: [],\n showAddStaffModal: false,\n showRemoveStaffModal: false,\n staffNames: [{ id: '', name: '' }],\n endFetching: false,\n staffHasIncompleteTasks: false,\n sendAllAssignedStaff: false\n }\n },\n computed: {\n ...mapState('request_show', [\n 'request',\n 'dataFetchState',\n 'dataOptions',\n 'filteredRequestLoading'\n ]),\n\n canSeeStaffOnlyItems() {\n return this.$can('read', 'staff_only_items')\n },\n\n canAddAndRemoveStaff() {\n return (\n this.$ability.can('manage', 'Request') ||\n this.$ability.can('read_helpers', subject('Request', this.request))\n )\n },\n\n disableRemoveStaffButton() {\n return this.staffHasIncompleteTasks\n },\n\n removeStaffDisplayText() {\n if (this.staffHasIncompleteTasks) {\n return `${this.staffNameOrEmail(\n this.selectedStaff[0]\n )} has incomplete tasks.\n Please reassign their tasks or mark as complete before attempting to remove\n this staff member from the request.`\n } else {\n return `You are about to remove ${this.staffNameOrEmail(\n this.selectedStaff[0]\n )} from support staff for this request. Do you want to continue?`\n }\n },\n\n filteredStaff() {\n return this.dataOptions.staff.map((staff: Staff) => ({\n label: staff.name_with_email,\n value: staff.id\n }))\n }\n },\n methods: {\n ...mapActions('request_show', ['submitStaffChange', 'fetchDataOptions']),\n\n staffNameOrEmail(staff: Staff): string {\n if (!staff) return ''\n return staff.name_or_email\n },\n\n staffDepartmentsWithPocLabel(staff: Staff): string {\n const departmentsList = []\n this.departments.forEach((department) => {\n // @ts-ignore: NEX-9140\n if (staff.departments.includes(department.name)) {\n if (department.poc_id === staff.id) {\n departmentsList.unshift(department.name + ' (Point of Contact)')\n } else {\n departmentsList.push(department.name)\n }\n }\n })\n return departmentsList.join(', ')\n },\n\n filterStaff: throttle(function (searchText = '') {\n this.fetchDataOptions({ searchText, dataType: 'staff' })\n }, 400),\n\n handleStaffScroll: throttle(function () {\n this.fetchDataOptions({\n searchText: this.dataFetchState.staff.search_text,\n dataType: 'staff'\n })\n }, 400),\n\n handleAddStaffClick() {\n this.showAddStaffModal = true\n },\n\n async handleRemoveStaffClick(staff: Staff) {\n this.showRemoveStaffModal = true\n this.selectedStaff = [staff]\n try {\n const response = await API.fetchRequestTasks({\n pretty_id: this.request.pretty_id,\n params: {\n user_id: staff.id,\n check_incomplete_tasks: true\n }\n })\n this.staffHasIncompleteTasks = response.data.incomplete_tasks\n } catch (_error) {\n this.$toasted.error('An error has occured. Please try again.')\n }\n },\n\n hideRemoveStaffModal() {\n this.showRemoveStaffModal = false\n this.selectedStaff = []\n },\n\n hideAddStaffModal() {\n this.addStaffToRequest = []\n this.message = ''\n this.name = ''\n this.page = 1\n this.selectedStaff = []\n this.showAddStaffModal = false\n this.staffNames = [{ id: '', name: '' }]\n this.endFetching = false\n this.sendAllAssignedStaff = false\n },\n\n submitAddStaff() {\n this.submitStaffChange({\n method: 'post',\n action: 'update',\n request_id: this.prettyId,\n staff_ids: this.addStaffToRequest.map(\n (staff: { value: number }) => staff.value\n ),\n message: this.message,\n send_all_assigned_staff: this.sendAllAssignedStaff\n }).then(() => {\n this.hideAddStaffModal()\n })\n },\n\n submitRemoveStaff() {\n this.submitStaffChange({\n method: 'delete',\n action: 'remove',\n request_id: this.prettyId,\n id: this.selectedStaff[0].id\n }).then(() => {\n this.hideRemoveStaffModal()\n })\n }\n }\n}\n","import { render } from \"./RequestAssigned.vue?vue&type=template&id=437984fd&ts=true\"\nimport script from \"./RequestAssigned.vue?vue&type=script&lang=ts\"\nexport * from \"./RequestAssigned.vue?vue&type=script&lang=ts\"\n\nimport \"./RequestAssigned.vue?vue&type=style&index=0&id=437984fd&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"staff-time-modal\">\n <NrModal\n :title=\"modalHeader\"\n primaryButtonText=\"Save\"\n showClose\n hasSecondaryButton\n :show=\"activeModal === 'clock' || activeModal === 'editStaffTime'\"\n :disableButtons=\"disableSubmit\"\n @on-primary-click=\"handleRequestStaffTime\"\n @on-close-click=\"closeRequestStaffTime\"\n @on-secondary-click=\"closeRequestStaffTime\"\n >\n <form>\n <NrSelect\n v-if=\"$can('read', 'publisher_only_items')\"\n class=\"m-top-12\"\n v-model=\"selectedStaff\"\n placeholder=\"Search and select staff\"\n :filterable=\"false\"\n :options=\"filteredStaff\"\n :loading=\"dataFetchState.staff.fetching\"\n :hasMore=\"!dataFetchState.staff.end\"\n @input=\"onStaffSelect\"\n @load-more=\"handleStaffScroll\"\n @search=\"filterStaff\"\n @open=\"filterStaff\"\n >\n <template v-slot:label>\n <span>Staff member</span>\n </template>\n </NrSelect>\n <NrSelect\n :title=\"dropdownTitle\"\n :options=\"departmentNames\"\n v-model=\"selectedStaffDepartment\"\n @input=\"onDeptInput\"\n >\n <template v-slot:label>\n <span>Department</span>\n </template>\n </NrSelect>\n <div class=\"staff-time-modal-time-fields\">\n <NrFormInput\n class=\"staff-time-modal-hour-field\"\n label=\"Hours\"\n type=\"number\"\n name=\"hours\"\n v-model.number=\"hours\"\n />\n <NrFormInput\n class=\"staff-time-modal-minutes-field\"\n label=\"Minutes\"\n type=\"number\"\n name=\"minutes\"\n v-model.number=\"minutes\"\n />\n </div>\n <NrFormLabel for=\"description\"> Description </NrFormLabel>\n <nr-editor\n class=\"editor-field\"\n v-model=\"description\"\n name=\"description\"\n :resizable=\"true\"\n :bold=\"false\"\n :underline=\"false\"\n :italic=\"false\"\n :placeholder=\"'Describe the work done'\"\n :rows=\"8\"\n />\n </form>\n </NrModal>\n </div>\n</template>\n\n<script>\nimport API from '../../../vue_shared/api'\nimport { throttle, isEmpty } from 'lodash'\nimport { mapActions, mapState } from 'vuex'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrEditor from '@nextrequestco/components/src/components/NrEditor/nr-editor.vue'\nimport NrSelect from '@nextrequestco/components/src/components/NrSelect/nr-select.vue'\nimport NrFormInput from '@nextrequestco/components/src/components/NrFormInput/nr-form-input.vue'\nimport NrFormLabel from '@nextrequestco/components/src/components/form-elements/nr-form-label.vue'\n\nexport default {\n name: 'staff-time-modal',\n components: {\n 'nr-editor': NrEditor,\n NrModal,\n NrSelect,\n NrFormLabel,\n NrFormInput\n },\n watch: {\n staffTime() {\n if (this.activeModal === 'editStaffTime') {\n this.description = this.staffTime.description\n this.hours = this.staffTime.hours\n this.minutes = this.staffTime.minutes\n this.selectedStaff = {\n value: this.staffTime.staff_id,\n label: this.staffTime.staff_name\n }\n this.refreshStaffDeptList(this.staffTime.staff_id).then(() => {\n if (this.staffTime.department_id) {\n this.selectedStaffDepartment = {\n value: this.staffTime.department_id,\n label: this.staffTime.department_name\n }\n }\n })\n }\n }\n },\n\n props: {\n staffTime: {\n required: false,\n type: Object,\n default() {\n return {}\n }\n }\n },\n\n data() {\n return {\n selectedStaff: [],\n hours: 0,\n minutes: 0,\n departmentNames: [\n {\n label: 'No departments assigned',\n value: null,\n disabled: true\n }\n ],\n description: '',\n selectedStaffDepartment: {},\n staff: [],\n staffNames: []\n }\n },\n\n mounted() {\n this.selectedStaff = this.defaultSelectedStaff()\n // Load departments for the current user on mount\n this.refreshStaffDeptList(this.$store.state.currentUser.id)\n },\n\n computed: {\n ...mapState('request_show', [\n 'activeModal',\n 'request',\n 'requestStaff',\n 'dataOptions',\n 'dataFetchState',\n 'staffDepartments'\n ]),\n\n filteredStaff() {\n return this.dataOptions.staff.map((staff) => ({\n label: staff.name_with_email,\n value: staff.id\n }))\n },\n\n modalHeader() {\n return this.activeModal === 'editStaffTime'\n ? 'Edit staff time'\n : 'Add staff time'\n },\n\n isStaffSelected() {\n return !isEmpty(this.selectedStaff)\n },\n\n disableSubmit() {\n return !this.isStaffSelected || (!this.hours && !this.minutes)\n },\n\n dropdownTitle() {\n return Object.keys(this.selectedStaffDepartment).length\n ? this.selectedStaffDepartment.label\n : 'Select a department'\n }\n },\n\n methods: {\n ...mapActions('request_show', [\n 'setActiveModal',\n 'setDisplayCreateStaffTimeBox',\n 'fetchDataOptions',\n 'submitRequestStaffTime'\n ]),\n\n onDeptInput(val) {\n if (!val) {\n this.selectedStaffDepartment = {}\n }\n },\n\n closeRequestStaffTime() {\n this.handleCancelRequestStaffTime()\n },\n\n filterStaff: throttle(function (searchText = '') {\n this.fetchDataOptions({ searchText, dataType: 'staff' })\n }, 400),\n\n handleCancelRequestStaffTime() {\n this.$emit('reset-staff-time')\n this.setDisplayCreateStaffTimeBox(false)\n this.selectedStaffDepartment = {}\n this.hours = 0\n this.minutes = 0\n this.selectedStaff = this.defaultSelectedStaff()\n this.description = ''\n this.setActiveModal('')\n this.departmentNames = [\n {\n label: 'No departments assigned',\n value: null,\n disabled: true\n }\n ]\n },\n\n handleRequestStaffTime() {\n const action = this.staffTime.id ? 'update' : 'create'\n const method = this.staffTime.id ? 'put' : 'post'\n if (!this.isStaffSelected) return\n const payload = {\n action: action,\n method: method,\n user_id: this.selectedStaff.value,\n description: this.description,\n seconds: this.staffTimeInSeconds(),\n request_id: this.request.pretty_id,\n id: this.staffTime ? this.staffTime.id : null\n }\n if (this.selectedStaffDepartment.value)\n payload.department_id = this.selectedStaffDepartment.value\n this.submitRequestStaffTime(payload).then(() => {\n this.handleCancelRequestStaffTime()\n })\n },\n\n handleStaffScroll: throttle(function () {\n this.fetchDataOptions({\n searchText: this.dataFetchState.staff.search_text,\n dataType: 'staff'\n })\n }, 400),\n\n onStaffSelect(val) {\n if (!val) {\n this.resetDepartments()\n return\n }\n this.refreshStaffDeptList(val.value)\n },\n\n resetDepartments() {\n this.departmentNames = [\n {\n label: 'No departments assigned',\n value: null,\n disabled: true\n }\n ]\n this.selectedStaffDepartment = {}\n },\n\n async refreshStaffDeptList(staffId) {\n try {\n const response = await API.fetchStaffDepartments({\n staff_id: staffId\n })\n\n if (response.data.length) {\n this.departmentNames = response.data.map((dept) => ({\n label: dept.name,\n value: dept.id\n }))\n } else {\n this.resetDepartments()\n }\n return response\n } catch (error) {\n console.error('Failed to fetch staff departments:', error)\n this.resetDepartments()\n }\n },\n\n staffTimeInSeconds() {\n return this.hours * 3600 + this.minutes * 60\n },\n\n defaultSelectedStaff() {\n return {\n value: this.$store.state.currentUser.id,\n label: this.$store.state.currentUser.email_or_name\n }\n }\n }\n}\n</script>\n<style lang=\"scss\">\n.editor-field {\n .ql-editor {\n border: 0.5px solid #d1d1d1;\n }\n}\n\n.staff-time-modal {\n .nr-modal__overlay {\n z-index: 200;\n }\n}\n\n.staff-time-modal-time-fields {\n display: flex;\n .staff-time-modal-hour-field {\n flex: 1;\n margin-right: 1em;\n }\n .staff-time-modal-minutes-field {\n flex: 1;\n }\n}\n</style>\n","import { render } from \"./RequestStaffTime.vue?vue&type=template&id=1f6b2305\"\nimport script from \"./RequestStaffTime.vue?vue&type=script&lang=js\"\nexport * from \"./RequestStaffTime.vue?vue&type=script&lang=js\"\n\nimport \"./RequestStaffTime.vue?vue&type=style&index=0&id=1f6b2305&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <article class=\"panel\">\n <NrTabs class=\"rs-tabs\" @update:modelValue=\"onTabChange\"\n ><NrTab title=\"Timeline\" id=\"timeline-tab\">\n <TimelineTab :noTimeline=\"!timeline.length\">\n <template #timelineFilter>\n <NrSelect\n class=\"nr-select-timeline\"\n v-if=\"$can('read', 'staff_only_items')\"\n v-model=\"timelineFilters\"\n :options=\"timelineFilterList\"\n placeholder=\"Select an event to filter timeline\"\n multiple\n >\n <template v-slot:label>\n <span>Filter by timeline event</span>\n </template>\n </NrSelect>\n </template>\n <template #cards>\n <TimelineCard\n v-for=\"item in timeline\"\n :key=\"item.timeline_id\"\n :canPin=\"canPin(item)\"\n :pinned=\"item.timeline_is_pinned\"\n :collapsable=\"\n canCollapse(\n item.timeline_is_collapsable,\n item.timeline_display_text\n )\n \"\n :collapsed=\"false\"\n :id=\"item.timeline_id\"\n :with-actions=\"timelineActions(item)\"\n :editIcon=\"editIcon(item)\"\n :deleteIcon=\"false\"\n :changeVisibilityIcon=\"changeVisibilityIcon(item)\"\n :color=\"item.color\"\n :icon-name=\"item.iconname\"\n :header=\"timelineCardHeader(item)\"\n :subheader=\"item.timeline_subheader\"\n :header-right=\"item.timeline_state\"\n :footer-left=\"item.timeline_byline\"\n :emphasize-header=\"\n item.timeline_state === 'Anyone with access to this request'\n \"\n @on-visibility=\"handleChangeVisibility(item)\"\n @on-edit=\"handleEditMessageText(item)\"\n @on-delete=\"() => {}\"\n @on-collapse=\"\n handleCollapse(\n item.timeline_id,\n canCollapse(\n item.timeline_is_collapsable,\n item.timeline_display_text\n )\n )\n \"\n @on-pin-click=\"handlePinChange(item)\"\n >\n <p\n class=\"wrap-text\"\n v-html=\"\n timelineItemDisplayText(\n item.timeline_id,\n item.timeline_display_text\n )\n \"\n />\n <div\n class=\"invoice-timeline\"\n v-if=\"\n !this.isCollapsed(item.timeline_id) &&\n item.event_type_name === 'Invoice Sent' &&\n account.invoicing_feature_flag\n \"\n >\n <InvoiceTimelineEvent\n :lineItems=\"item.timeline_invoice_line_items\"\n :surcharges=\"item.timeline_invoice_surcharges\"\n :staffHours=\"item.timeline_invoice_staff_hours\"\n :totalAmount=\"item.timeline_invoice_total_amount\"\n />\n <div class=\"invoice-links\">\n <NrButton variant=\"minimal-primary\" @click=\"downloadPdf\">\n <NrIcon class=\"inline-icon\" name=\"download\" />Download\n PDF</NrButton\n >\n <NrButton\n v-if=\"\n isCurrentRequester &&\n item.timeline_invoice_outstanding &&\n account.invoicing_feature_flag\n \"\n class=\"no-wrap payment-notice-button\"\n variant=\"bordered-primary\"\n aria-label=\"Pay invoice\"\n @click=\"setActiveModal('requestPaymentsDialog')\"\n >\n <NrIcon class=\"inline-icon\" name=\"dollar-sign\" /> Pay\n invoice\n </NrButton>\n </div>\n </div>\n </TimelineCard>\n <NrModal\n title=\"Replacing a pinned note\"\n :show=\"currentAction === 'replacingPinnedNote'\"\n primaryButtonText=\"Continue\"\n hasSecondaryButton\n @on-secondary-click=\"setCurrentAction('')\"\n @on-primary-click=\"updateNotePin\"\n >\n <slot\n >You are about to replace a pinned note with another. Only one\n note can be pinned at a time.\n </slot>\n </NrModal>\n <change-message-visibility-modal\n :selected-message=\"selectedTimelineEvent\"\n :active=\"editMessageVisibility\"\n @on-close-message-visibility-modal=\"\n closeChangeMessageVisibilityModal\n \"\n ></change-message-visibility-modal>\n <change-message-text-modal\n :selected-message=\"selectedTimelineEvent\"\n v-if=\"editMessageText\"\n :active=\"editMessageText\"\n @on-close-message-visibility-modal=\"\n closeChangeMessageVisibilityModal\n \"\n ></change-message-text-modal>\n <NrButton\n v-if=\"canShowMoreTimeline\"\n @click=\"handleTimelineShowMore\"\n variant=\"minimal-neutral\"\n class=\"show-more\"\n >\n Show me more\n </NrButton>\n </template>\n </TimelineTab> </NrTab\n ><NrTab title=\"Documents\" id=\"documents-tab\">\n <DocumentsTab :docs=\"documents\" :folders=\"documentsFolders\" /> </NrTab\n ><NrTab\n v-if=\"$can('read', 'staff_only_items')\"\n title=\"Tasks\"\n id=\"tasks-tab\"\n ><TasksTab\n :tasks=\"tasks\"\n :timelineFilters=\"timelineFilters\"\n :currentTimelinePageNum=\"currentTimelinePageNum\"\n />\n </NrTab>\n </NrTabs>\n </article>\n</template>\n\n<script>\nimport TimelineTab from './TimelineTab'\nimport ChangeMessageTextModal from './ChangeMessageTextModal'\nimport ChangeMessageVisibilityModal from './ChangeMessageVisibilityModal'\nimport DocumentsTab from './DocumentsTab'\nimport TasksTab from './TasksTab.vue'\nimport TimelineCard from '@nextrequestco/components/src/components/TimelineCard/TimelineCard.vue'\nimport NrSelect from '@nextrequestco/components/src/components/NrSelect/nr-select.vue'\nimport NrTabs from '@nextrequestco/components/src/components/NrTabs/nr-tabs.vue'\nimport NrTab from '@nextrequestco/components/src/components/NrTabs/nr-tab.vue'\nimport NrButton from '@nextrequestco/components/src/components/NrButton/nr-button.vue'\nimport NrIcon from '@nextrequestco/components/src/components/NrIcon/NrIcon.vue'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport InvoiceTimelineEvent from './InvoiceTimelineEvent.vue'\nimport { mapActions, mapState, mapMutations } from 'vuex'\n\nexport default {\n name: 'RequestTabs',\n components: {\n ChangeMessageTextModal,\n ChangeMessageVisibilityModal,\n TasksTab,\n TimelineTab,\n DocumentsTab,\n TimelineCard,\n NrSelect,\n NrTabs,\n NrTab,\n NrButton,\n NrModal,\n InvoiceTimelineEvent,\n NrIcon\n },\n props: {\n timeline: {\n type: Array\n },\n documents: {\n type: Array\n },\n documentsFolders: {\n type: Array\n },\n tasks: {\n type: Array\n }\n },\n data() {\n return {\n selectedTimelineFilter: '0',\n timelineFilters: [],\n currentTimelinePageNum: 1,\n collapsedIds: [],\n timelineFilterList: [\n { label: 'Documents', id: 'documents' },\n { label: 'Due date', id: 'due date' },\n { label: 'External and Internal Messages', id: 'messages' },\n { label: 'Hours', id: 'hours' },\n { label: 'Invoices', id: 'invoices' },\n { label: 'Notes', id: 'notes' },\n { label: 'Retention', id: 'retention' },\n { label: 'Staff', id: 'staff' },\n { label: 'Status', id: 'status' },\n { label: 'Tags', id: 'tags' },\n { label: 'Tasks', id: 'tasks' },\n { label: 'Visibility', id: 'visibility' }\n ]\n }\n },\n watch: {\n timelineFilters() {\n this.currentTimelinePageNum = 1\n this.$emit('handle-timeline-filters', this.timelinePayload)\n }\n },\n computed: {\n ...mapState(['account']),\n ...mapState('request_show', [\n 'request',\n 'currentAction',\n 'totalRequestTimelineCount',\n 'selectedTimelineEvent',\n 'pinnedNote'\n ]),\n tasksPageNum: {\n set(tasksPageNum) {\n this.currentTasksPageNum = tasksPageNum\n this.$emit('handle-tasks-status-filters', this.tasksPayload())\n },\n get() {\n return this.currentTasksPageNum\n }\n },\n canShowMoreTimeline() {\n return this.timeline.length < this.totalRequestTimelineCount\n },\n editMessageVisibility() {\n return this.currentAction === 'editMessageVisibility'\n },\n editMessageText() {\n return this.currentAction === 'editMessageText'\n },\n timelinePageNum: {\n set(pageNum) {\n this.currentTimelinePageNum = pageNum\n this.$emit('handle-timeline-filters', this.timelinePayload)\n },\n get() {\n return this.currentTimelinePageNum\n }\n },\n timelinePayload() {\n return {\n filters: this.timelineFilters,\n page_number: this.currentTimelinePageNum\n }\n },\n ...mapState(['currentUser']),\n isCurrentRequester() {\n if (this.request.is_current_requester) {\n return true\n }\n\n return this.currentUser?.id === this.request?.requester?.id\n }\n },\n methods: {\n ...mapActions('request_show', [\n 'filterByDocVisibility',\n 'setCurrentAction',\n 'setTimelinePin',\n 'handlePinChange',\n 'updateNotePin',\n 'setActiveModal'\n ]),\n ...mapMutations('request_show', ['setSelectedTimelineEvent']),\n canPin(item) {\n return (\n this.account.pinning_notes_feature_flag &&\n item.timeline_name === 'Note' &&\n this.$ability.can('create', 'RequestEventPin')\n )\n },\n onTabChange(activeTabId) {\n this.$emit('tab-change', activeTabId)\n },\n closeChangeMessageVisibilityModal() {\n this.setCurrentAction(null)\n this.setSelectedTimelineEvent(null)\n },\n handleChangeVisibility(item) {\n this.setSelectedTimelineEvent(item)\n this.setCurrentAction('editMessageVisibility')\n },\n handleEditMessageText(item) {\n this.setSelectedTimelineEvent(item)\n this.setCurrentAction('editMessageText')\n },\n handleCollapse(timelineId, itemCanCollapse) {\n if (!itemCanCollapse) return\n if (this.collapsedIds.includes(timelineId)) {\n this.collapsedIds = this.collapsedIds.filter((id) => id !== timelineId)\n } else {\n this.collapsedIds = [...this.collapsedIds, timelineId]\n }\n },\n canCollapse(typeCanCollapse, content) {\n return (\n typeCanCollapse || (!typeCanCollapse && (content || '').length >= 200)\n )\n },\n isCollapsed(timelineId) {\n return this.collapsedIds.includes(timelineId)\n },\n editIcon(item) {\n return ['External Message', 'Internal Message', 'Note'].includes(\n item.timeline_name\n )\n },\n changeVisibilityIcon(item) {\n return ['External Message', 'Internal Message'].includes(\n item.timeline_name\n )\n },\n timelineActions() {\n return this.$ability.can('read', 'publisher_only_items')\n },\n timelineItemDisplayText(timelineId, displayText) {\n if (!this.isCollapsed(timelineId)) return displayText\n },\n handleTimelineShowMore() {\n this.timelinePageNum += 1\n },\n timelineCardHeader(item) {\n if (item.timeline_name === 'External Message') {\n return item.timeline_guest_is_author\n ? 'Message from requester'\n : 'Message to requester'\n }\n return (\n item.timeline_name.charAt(0).toUpperCase() +\n item.timeline_name.slice(1).toLowerCase()\n )\n }\n }\n}\n</script>\n<style lang=\"scss\">\n@import '@nextrequestco/components/src/styles/globals.scss';\n@import '@nextrequestco/components/src/styles/tokens/variables.scss';\n\n.invoice-timeline {\n margin-right: $spacing-16;\n}\n\n.nr-select-timeline {\n z-index: 1;\n}\n\n.rs-tabs.nr-tabs {\n .nr-select {\n width: 100%;\n }\n\n .nr-tabs-list {\n background-color: $white-ter;\n border-bottom: none;\n }\n\n .nr-tabs__tab {\n padding: 0;\n }\n\n .nr-tabs-button {\n position: relative;\n font-size: 1.5rem;\n color: $grey;\n background-color: unset;\n padding: #{calc(7 / 24)}em 1em;\n height: unset;\n border-color: transparent;\n border-radius: 0;\n\n &:hover {\n color: $grey;\n }\n\n &:focus {\n box-shadow: none;\n\n &::after {\n content: '';\n height: 100%;\n width: 100%;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: dashed 2px $black;\n }\n }\n\n &--active {\n color: $black;\n font-weight: 600;\n border-width: 0;\n border-bottom: solid 2px $black;\n\n &::after {\n border-color: transparent;\n }\n\n &:hover {\n color: inherit;\n }\n }\n }\n}\n.invoice-links {\n width: 40%;\n border: 5px;\n display: flex;\n flex-direction: row;\n justify-content: right;\n align-items: flex-end;\n margin-left: auto;\n .nr-button {\n .nr-icon {\n margin-right: $spacing-6;\n margin-bottom: $spacing-4;\n }\n }\n}\n</style>\n","<template>\n <div class=\"p-bottom-4\">\n <div v-if=\"!filteredRequestLoading\">\n <div class=\"timeline-tab-subheader\">\n <slot name=\"timelineFilter\" />\n </div>\n <div class=\"card-container\">\n <slot name=\"cards\" v-if=\"!noTimeline\"></slot>\n </div>\n <div class=\"timeline-tab-empty\" v-if=\"noTimeline\">\n <p class=\"level-item is-size-4 has-text-grey has-text-centered p-12\">\n No timeline events matching the current filter found on this request\n </p>\n </div>\n </div>\n <NrLoadingAnimation v-else :count=\"3\" />\n </div>\n</template>\n<script>\nimport { mapState } from 'vuex'\nimport NrLoadingAnimation from '@nextrequestco/components/src/components/NrLoadingAnimation/nr-loading-animation.vue'\n\nexport default {\n props: {\n noTimeline: {\n type: Boolean,\n default: true\n }\n },\n\n components: {\n NrLoadingAnimation\n },\n\n computed: {\n ...mapState('request_show', ['filteredRequestLoading'])\n }\n}\n</script>\n\n<style lang=\"scss\">\n.timeline-tab {\n &-empty {\n background: white;\n margin: 1.5rem 0;\n }\n &-subheader {\n padding: 8px;\n display: flex;\n .dropdown-trigger {\n button {\n display: flex;\n justify-content: space-between;\n width: 100%;\n }\n }\n }\n}\n</style>\n","import { render } from \"./TimelineTab.vue?vue&type=template&id=16b336cf\"\nimport script from \"./TimelineTab.vue?vue&type=script&lang=js\"\nexport * from \"./TimelineTab.vue?vue&type=script&lang=js\"\n\nimport \"./TimelineTab.vue?vue&type=style&index=0&id=16b336cf&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <article class=\"panel change-message-text-modal\">\n <message-box\n v-if=\"currentAction === 'editMessageText'\"\n title=\"Edit timeline entry\"\n submit-text=\"Save Edited Message\"\n type=\"orange\"\n :disable-submit=\"false\"\n @on-close=\"$emit('on-close-message-visibility-modal')\"\n @on-cancel=\"$emit('on-close-message-visibility-modal')\"\n @on-submit=\"submitTimelineEntry\"\n >\n <div class=\"message-contents-field\">\n <NrFormLabel>Message contents</NrFormLabel>\n <nr-editor\n v-model=\"message\"\n :resizable=\"false\"\n :placeholder=\"'Type your message here or select a template above.'\"\n :rows=\"15\"\n strike\n bulletList\n orderedList\n link\n />\n <p class=\"is-size-7 m-bottom-12\">\n {{ footerText }}\n </p>\n </div>\n </message-box>\n </article>\n</template>\n\n<script>\nimport MessageBox from '@nextrequestco/components/src/components/MessageBox/MessageBox.vue'\nimport NrEditor from '@nextrequestco/components/src/components/NrEditor/nr-editor.vue'\nimport NrFormLabel from '@nextrequestco/components/src/components/form-elements/nr-form-label.vue'\nimport { mapActions, mapGetters } from 'vuex'\nexport default {\n name: 'ChangeMessageVisibilityModal',\n components: {\n MessageBox,\n NrEditor,\n NrFormLabel\n },\n props: {\n active: {\n type: Boolean,\n default: false\n },\n selectedMessage: {\n type: Object\n }\n },\n mounted() {\n this.message = this.selectedMessage.timeline_display_text\n },\n data() {\n return {\n message: ''\n }\n },\n computed: {\n ...mapGetters('request_show', ['request', 'currentAction']),\n footerText() {\n if (this.selectedMessage.timeline_name === 'Note') {\n return 'Editing a timeline entry does not send an email notification.'\n } else {\n const messageVisible =\n this.selectedMessage.timeline_state === 'Staff Only'\n ? 'staff'\n : 'the requester and staff'\n return `This message will be visible to ${messageVisible}. Editing\n a message does not send a new email notification and only updates the timeline.`\n }\n }\n },\n methods: {\n ...mapActions('request_show', ['updateMessage']),\n submitTimelineEntry() {\n if (this.message === this.selectedMessage.timeline_display_text) {\n this.$toasted.success('Timeline entry updated successfully.')\n this.$emit('on-close-message-visibility-modal')\n this.visibility = ''\n return\n }\n const payload = {\n request_event_id: this.selectedMessage.timeline_id,\n request_id: this.request.pretty_id,\n note_text: this.message\n }\n this.updateMessage(payload)\n .then(() => {\n this.$toasted.success('Timeline entry updated successfully.')\n this.$emit('on-close-message-visibility-modal')\n this.visibility = ''\n })\n // eslint-disable-next-line no-unused-vars\n .catch((_err) => {\n this.$toasted.error(\n 'An error has occured while updating the message. Please try again.'\n )\n })\n }\n }\n}\n</script>\n","import { render } from \"./ChangeMessageTextModal.vue?vue&type=template&id=43b4c86c\"\nimport script from \"./ChangeMessageTextModal.vue?vue&type=script&lang=js\"\nexport * from \"./ChangeMessageTextModal.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <article class=\"panel change-message-visibility-modal\">\n <NrModal\n class=\"change-message-visibility\"\n primary-button-text=\"Change message visibility\"\n secondary-button-text=\"Cancel\"\n title=\"Change Message Visibility\"\n :has-secondary-button=\"true\"\n :show=\"!!active\"\n @on-close-click=\"$emit('on-close-message-visibility-modal')\"\n @on-primary-click=\"updateMessageVisibility\"\n @on-secondary-click=\"$emit('on-close-message-visibility-modal')\"\n >\n You are about to change the visibility of a message. This will affect who\n can see the message on the timeline of this request.\n\n <NrSelect\n v-model=\"messageVisibility\"\n placeholder=\"Select message visibility\"\n :options=\"messageVisibilities\"\n :clearable=\"false\"\n appendToBody\n >\n <template v-slot:label>Visibility</template>\n </NrSelect>\n </NrModal>\n </article>\n</template>\n\n<script>\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrSelect from '@nextrequestco/components/src/components/NrSelect/nr-select.vue'\nimport { mapActions, mapGetters } from 'vuex'\nexport default {\n name: 'ChangeMessageVisibilityModal',\n components: {\n NrModal,\n NrSelect\n },\n props: {\n active: {\n type: Boolean,\n default: false\n },\n selectedMessage: {\n type: Object\n }\n },\n data() {\n return {\n messageVisibility: '',\n messageVisibilities: [\n {\n value: 'public',\n label: 'Anyone with access to this request',\n textColor: 'green'\n },\n { value: 'requester', label: 'Requester + Staff' },\n { value: 'staff', label: 'Staff Only' }\n ]\n }\n },\n watch: {\n selectedMessage(newVal, _) {\n if (newVal) {\n this.messageVisibility = newVal\n ? {\n value: newVal.timeline_type,\n label: newVal.timeline_state,\n textColor: newVal.timeline_type === 'public' ? 'green' : ''\n }\n : ''\n }\n }\n },\n computed: {\n ...mapGetters('request_show', ['request'])\n },\n methods: {\n ...mapActions('request_show', ['updateMessage']),\n updateMessageVisibility() {\n const payload = {\n request_event_id: this.selectedMessage.timeline_id,\n request_id: this.request.pretty_id,\n message_state: this.messageVisibility.value\n }\n this.updateMessage(payload)\n .then(() => {\n this.$toasted.success('Message visibility updated successfully.')\n this.$emit('on-close-message-visibility-modal')\n this.messageVisibility = ''\n })\n // eslint-disable-next-line no-unused-vars\n .catch((_err) => {\n this.$toasted.error(\n 'An error has occured while updating the message. Please try again.'\n )\n })\n }\n }\n}\n</script>\n","import { render } from \"./ChangeMessageVisibilityModal.vue?vue&type=template&id=73390acd\"\nimport script from \"./ChangeMessageVisibilityModal.vue?vue&type=script&lang=js\"\nexport * from \"./ChangeMessageVisibilityModal.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"documents-tab p-bottom-4\">\n <div v-if=\"!filteredRequestLoading\" class=\"documents-tab-content\">\n <div class=\"documents-tab-header has-background-light columns is-desktop\">\n <div class=\"column\">\n <NrSelect\n :placeholder=\"setDocVisibilityDropdownText\"\n :options=\"filterDocVisibilitiesByPermission\"\n @input=\"filterByVisibility\"\n :hideLabel=\"true\"\n v-model=\"selectedDocumentVisibility\"\n />\n </div>\n <div class=\"column\" v-if=\"canFilterByRisk\">\n <NrSelect\n :placeholder=\"selectedSeverity.label\"\n :options=\"severities\"\n @input=\"filterBySeverity\"\n :hideLabel=\"true\"\n v-model=\"selectedSeverity\"\n />\n </div>\n <div class=\"column\" v-if=\"canFilterByRisk\">\n <NrSelect\n :placeholder=\"selectedReviewStatus.label\"\n :options=\"reviewStatuses\"\n @input=\"filterByReviewStatus\"\n :hideLabel=\"true\"\n v-model=\"selectedReviewStatus\"\n />\n </div>\n <div class=\"document-pagination column\">\n <NrPagination\n simple\n :total=\"currentDocumentsCount\"\n :current=\"currentPageNum\"\n :perPage=\"perPage\"\n icon-prev=\"chevron-left\"\n icon-next=\"chevron-right\"\n aria-next-label=\"Next page\"\n aria-previous-label=\"Previous page\"\n aria-page-label=\"Page\"\n aria-current-label=\"Current page\"\n @change=\"setPageNum\"\n />\n </div>\n </div>\n <div class=\"documents-tab-content-columns\" ref=\"documents-columns\">\n <FoldersSidebar\n :folders=\"folders\"\n :documents=\"documentList\"\n :active-folder=\"activeFolder\"\n :folders-opened=\"foldersOpened\"\n :show-folder-filter=\"showFolderFilter\"\n :limit=\"perPage\"\n v-model=\"folderSearchTerm\"\n @filter-by-folder=\"filterByFolder\"\n @rename-folder=\"renameFolder\"\n @open-folder=\"openFolder\"\n @show-more=\"showMore\"\n @child-show-more=\"childShowMore\"\n />\n <NrModal\n title=\"Rename folder\"\n :show=\"isFolderRenameActive\"\n :disableButtons=\"invalidFolderName\"\n primary-button-text=\"Save\"\n hasSecondaryButton\n @on-primary-click=\"submitRenameFolder\"\n @on-secondary-click=\"setCurrentAction('')\"\n >\n <NrFormInput\n label=\"Folder rename\"\n type=\"text\"\n name=\"folder\"\n required\n v-model=\"folderToRename\"\n />\n </NrModal>\n <div class=\"cards-column\">\n <div\n class=\"level is-mobile custom-table-header search-results-column\"\n >\n <div class=\"level-left\">\n <span>\n <NrIconButton\n aria-label=\"Toggle sidebar\"\n variant=\"minimal-neutral\"\n :icon=\"{\n name: 'filter',\n type: showFolderFilter ? 'regular' : 'solid'\n }\"\n size=\"small\"\n @click=\"showFolderFilter = !showFolderFilter\"\n />\n </span>\n <span class=\"t--overflow-ellipsis\">\n <span\n data-cy=\"document-count\"\n class=\"has-text-weight-semibold is-size-5\"\n >\n {{ totalDocumentCountConditional() }}\n </span>\n <span class=\"p-left-8 active-folder-name\">\n {{ `results in '${activeFilterName}'` }}\n </span>\n </span>\n </div>\n </div>\n <NrFormInput\n class=\"document-search\"\n placeholder=\"filter by document name\"\n label=\"Filter by document name\"\n v-model=\"docSearchTerm\"\n />\n <div class=\"has-background-white icons-filters is-flex\">\n <span id=\"select-all-documents-label\" class=\"is-sr-only\">\n Select all documents on page\n </span>\n <NrFormInput\n label=\"Select all\"\n type=\"checkbox\"\n aria-labelledby=\"select-all-documents-label\"\n class=\"select-list-checkbox\"\n aria-label=\"Select all documents on page\"\n v-model=\"selectAllDocsOnCurrentPage\"\n />\n <span v-for=\"icon in icons\" :key=\"`nr-${icon.name}-${icon.label}`\">\n <NrTooltip :label=\"icon.label\">\n <NrIconButton\n variant=\"minimal-neutral\"\n :aria-label=\"icon.label\"\n :icon=\"{ name: icon.name, type: 'regular' }\"\n class=\"bulk-action\"\n @click=\"handleActions(icon.name)\"\n />\n </NrTooltip>\n </span>\n <span v-if=\"!this.currentUserPresent\">\n <NrTooltip\n label=\"You must be logged in with a NextRequest account to bulk download documents.\"\n >\n <NrIconButton\n variant=\"minimal-neutral\"\n :icon=\"{ name: 'download', type: 'regular' }\"\n disabled=\"true\"\n />\n </NrTooltip>\n </span>\n </div>\n\n <div v-if=\"!docs.length\" class=\"documents-tab-empty\">\n <p\n class=\"level-item is-size-5 has-text-grey has-text-centered task-empty-state\"\n >\n {{ emptyStateText }}\n </p>\n </div>\n <DocumentTools\n :pretty-id=\"request.pretty_id\"\n :documents-selected-count=\"selectedDocIds.length\"\n :select-all=\"selectAll\"\n :active-doc-title=\"activeDocTitle\"\n :selected-doc-ids=\"selectedDocIds\"\n :selected-documents=\"selectedDocs\"\n :document-filter-params=\"docsPayload()\"\n @on-visibility-submit=\"submitDocVisibilityForm\"\n @on-expiration-submit=\"submitDocExpirationForm\"\n @on-move-to-folder-submit=\"submitDocFolderForm\"\n @on-doc-delete-submit=\"submitDocDeleteForm\"\n @on-doc-rename-submit=\"submitDocRenameForm\"\n />\n <div>\n <span\n v-if=\"\n !selectAll &&\n selectedDocIds.length &&\n selectedDocIds.length <= perPage\n \"\n class=\"is-size-7 m-left-12\"\n >\n {{ selectedDocIds.length }}\n {{ selectedDocIds.length > 1 ? 'documents' : 'document' }}\n selected.\n </span>\n <NrButton\n size=\"small\"\n variant=\"minimal-neutral\"\n v-if=\"\n !selectAll &&\n selectAllDocsOnCurrentPage &&\n totalDocumentsCount > perPage\n \"\n class=\"select-all-documents-view-button\"\n @click=\"setSelectAll\"\n >\n select all {{ currentDocumentsCount }} documents in this view\n </NrButton>\n <span\n v-if=\"selectAll && totalDocumentsCount > perPage\"\n class=\"is-size-7 m-left-12\"\n >\n {{ currentDocumentsCount }} documents selected. All documents in\n this view are selected.\n </span>\n </div>\n <div class=\"documents-tab-content-list\" v-if=\"documentList.length\">\n <DocumentCard\n ref=\"docList\"\n v-for=\"(document, index) in documentList\"\n :key=\"`${document.id}-item-${index}`\"\n :modelValue=\"selectedDocIds\"\n :document-checked=\"selectedDocIds.includes(document.id)\"\n :documentExpirationLabel=\"documentExpirationLabel(document)\"\n :date=\"document.upload_date\"\n :title=\"document.title\"\n highlight=\"none\"\n :format=\"document.file_extension\"\n :visibility=\"document.visibility\"\n :id=\"document.id\"\n :folder-name=\"nofolderFilter(document)\"\n :disabled=\"documentsProcessingIds.includes(document.id)\"\n :checkboxDisabled=\"selectAll\"\n :tags=\"setDocTags(document)\"\n class=\"document-card-border\"\n @update:modelValue=\"trackSelectedDocs($event, document.id)\"\n @handle-click=\"linkToViewer\"\n @handle-tag-click=\"handleTagClick($event, document)\"\n >\n <template v-slot:actions>\n <DocumentCardActions\n :id=\"document.id\"\n :can-see-rename-action=\"canUpdateDocument\"\n :can-see-redact-action=\"canSeeRedactAction(document.id)\"\n :can-see-change-visibility-action=\"$can('manage', 'Request')\"\n :can-see-delete-action=\"canSeeDeleteAction(document.id)\"\n :can-see-move-to-folder-action=\"\n $can('read', 'staff_only_items')\n \"\n :can-see-download-action=\"true\"\n @on-visibility=\"\n selectActiveCard(document.id), openModal('changeVisibility')\n \"\n @on-download=\"\n selectActiveCard(document.id), submitDocDownload()\n \"\n @on-edit=\"\n selectActiveCard(document.id),\n (activeDocTitle = document.title),\n openModal('docRename')\n \"\n @on-redact=\"submitDocRedact(document.id)\"\n @on-delete=\"\n selectActiveCard(document.id), openModal('docDelete')\n \"\n @on-move=\"\n selectActiveCard(document.id), openModal('moveToFolder')\n \"\n />\n </template>\n </DocumentCard>\n </div>\n </div>\n <nr-modal\n primary-button-text=\"Review document\"\n secondary-button-text=\"Close\"\n title=\"Document risk details\"\n :has-secondary-button=\"true\"\n :show=\"!!activeScan\"\n @on-close-click=\"activeScan = null\"\n @on-primary-click=\"redirectToDocumentPage\"\n @on-secondary-click=\"activeScan = null\"\n >\n <risk-findings\n @on-doc-title-click=\"redirectToDocumentPage\"\n :scan=\"activeScan\"\n @on-review-status-click=\"setDocReview(activeScan)\"\n />\n </nr-modal>\n </div>\n </div>\n <NrLoadingAnimation v-else :count=\"3\" />\n </div>\n</template>\n\n<script>\nimport { mapActions, mapMutations, mapState } from 'vuex'\nimport { addDays } from 'date-fns'\nimport DocumentTools from '../components/DocumentTools.vue'\nimport DocumentCard from '@nextrequestco/components/src/components/DocumentCard/DocumentCard.vue'\nimport NrSelect from '@nextrequestco/components/src/components/NrSelect/nr-select.vue'\nimport NrFormInput from '@nextrequestco/components/src/components/NrFormInput/nr-form-input.vue'\nimport RiskFindings from '../../admin/components/risk_findings.vue'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport { directive } from 'vue3-click-away'\nimport FoldersSidebar from './FoldersSidebar.vue'\nimport DocumentCardActions from './DocumentCardActions.vue'\nimport NrSentry from '../../../utils/nr_sentry'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport NrLoadingAnimation from '@nextrequestco/components/src/components/NrLoadingAnimation/nr-loading-animation.vue'\nimport helpers from '../../../utils/helpers'\nimport setupRiskTags from '../../../utils/setup_risk_tags'\nimport {\n toggleReviewStatus,\n reviewStatusColor\n} from '../../admin/document_review_status'\nimport removeApplyFilterKeyEventListeners from '../../../mixins/removeApplyFilterKeyEventListeners'\nimport NrButton from '@nextrequestco/components/src/components/NrButton/nr-button'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrPagination from '@nextrequestco/components/src/components/NrPagination/nr-pagination.vue'\n\nconst initialState = () => {\n return {\n activeFolder: 'all',\n selectedDocumentVisibility: { id: 'all', label: 'All Documents' },\n selectedSeverity: { id: null, label: 'All risk levels' },\n selectedReviewStatus: { id: null, label: 'All review types' },\n activeFilterName: 'All Documents',\n docSearchTerm: '',\n currentPageNum: 1,\n foldersOpened: [],\n folderToRename: '',\n documentList: [],\n folderSearchTerm: '',\n filtersApplied: {},\n filteredFolder: '',\n showFolderFilter: true,\n documentVisibilities: [\n { id: 'all', label: 'All documents' },\n { id: 'staff', label: 'Staff only' },\n { id: 'requester', label: 'Requester + staff' },\n { id: 'public', label: 'Public' }\n ],\n severities: [\n { id: null, label: 'All risk levels' },\n { id: 'high', label: 'High risk' },\n { id: 'medium', label: 'Medium risk' },\n { id: 'low', label: 'Low risk' },\n { id: 'na', label: 'Unscannable' },\n { id: 'pending', label: 'Pending' }\n ],\n reviewStatuses: [\n { id: null, label: 'All review types' },\n { id: 'reviewed', label: 'Reviewed' },\n { id: 'needs_review', label: 'Needs review' }\n ],\n activeDocTitle: '',\n singleDocAction: false,\n folderlessDocs: false,\n selectedDocIds: [],\n selectAll: false,\n selectAllDocsOnCurrentPage: false,\n perPage: 25,\n folderAction: null,\n activeScan: null\n }\n}\n\nexport default {\n name: 'DocumentsTab',\n components: {\n DocumentTools,\n DocumentCard,\n FoldersSidebar,\n DocumentCardActions,\n NrModal,\n 'risk-findings': RiskFindings,\n NrButton,\n NrIconButton,\n NrTooltip,\n NrSelect,\n NrFormInput,\n NrLoadingAnimation,\n NrPagination\n },\n mixins: [removeApplyFilterKeyEventListeners],\n data() {\n return initialState()\n },\n props: {\n docs: {\n type: Array\n },\n folders: {\n type: Array\n }\n },\n directives: { ClickAway: directive },\n watch: {\n $route(prev, next) {\n if (prev.name !== next.name) {\n return\n }\n if (prev.params.prettyId === next.params.prettyId) {\n return\n }\n // Reset initial document tab state\n Object.assign(this.$data, initialState())\n },\n\n docs() {\n this.documentList = this.docs\n if (\n typeof this.activeFolder === 'string' &&\n this.activeFolder.includes('top')\n ) {\n this.documentList = this.docs.filter(\n (item) => !item.subfolder_name.length\n )\n }\n },\n\n selectAll(val) {\n this.setCardListCheckbox(val)\n },\n\n selectAllDocsOnCurrentPage(val) {\n // If selectAllDocsOnCurrentPage changes to true, add the ids to\n // selectedDocIds state\n // If selectAllDocsOnCurrentPage changes to false and not taking action\n // on a single document, deselect all cards on the list\n if (val) {\n this.selectedDocIds = this.documentList.map((doc) => doc.id)\n this.setCardListCheckbox(val)\n } else if (\n !val &&\n !this.singleDocAction &&\n this.selectedDocIds.length === this.documentList.length\n ) {\n this.selectedDocIds = []\n this.setCardListCheckbox(val)\n this.selectAll = false\n }\n // If selectAllDocsOnCurrentPage changes to false and taking action on a single card, ony select the active document\n if (this.singleDocAction && !val) {\n this.onlySelectActiveDoc(this.selectedDocIds[0])\n }\n },\n docSearchTerm() {\n this.currentPageNum = 1\n this.resetCardSelection()\n const filterData = this.docsPayload()\n if (this.docSearchTerm.length > 2) {\n this.setDocumentFilters(filterData)\n this.fetchDocuments(filterData)\n }\n if (this.docSearchTerm.length === 0) {\n this.removeNullFromObject(filterData)\n this.setDocumentFilters(filterData)\n this.fetchDocuments(filterData)\n }\n },\n folderSearchTerm() {\n this.activeFolder = null\n this.foldersOpened = []\n if (this.folderSearchTerm.length > 2) {\n this.fetchDocumentsFolders({\n request_id: this.request.pretty_id,\n visibility: this.selectedDocumentVisibility.id,\n search_text: this.folderSearchTerm,\n page_number: null\n })\n } else if (this.folderSearchTerm === '') {\n this.activeFolder = null\n this.fetchDocumentsFolders({\n request_id: this.request.pretty_id,\n visibility: this.selectedDocumentVisibility.id,\n search_text: null,\n page_number: null\n })\n }\n },\n request(newVal, oldVal) {\n if (newVal !== oldVal) {\n this.resetDocumentSelection()\n this.setDocumentFilters([])\n this.stopJobPolling()\n }\n }\n },\n computed: {\n ...mapState({\n hasPiiScanEnabled: (state) =>\n !!(state.account && state.account.pii_scan_feature_flag),\n hasRetentionEnabled: (state) =>\n !!(state.account && state.account.retention),\n hasRedactionEnabled: (state) =>\n !!(state.account && state.account.redaction),\n currentUser: (state) => state.currentUser\n }),\n ...mapState('request_show', {\n documentsFolders: (state) => state.documentsFolders,\n searchDocumentResultsCount: (state) => state.searchDocumentResultsCount,\n currentDocumentsCount: (state) => state.currentDocumentsCount,\n totalDocumentsCount: (state) => state.totalDocumentsCount,\n documentsStateTimestamp: (state) => state.documentsStateTimestamp,\n request: (state) => state.request,\n selectedChangeDocVisibility: (state) => state.selectedChangeDocVisibility,\n messageToRequester: (state) => state.messageToRequester,\n currentAction: (state) => state.currentAction,\n currentDocumentFilters: (state) => state.currentDocumentFilters,\n documentsProcessingIds: (state) => state.documentsProcessingIds,\n documents: (state) => state.documents,\n filteredRequestLoading: (state) => state.filteredRequestLoading,\n jobPollIntervalId: (state) => state.jobPollIntervalId\n }),\n\n canUpdateDocument() {\n if (\n this.currentUser.user_role === 'staff' &&\n this.request.visibility === 'department_published'\n ) {\n return false\n }\n\n return this.$ability.can('update', 'Document')\n },\n\n icons() {\n return [\n { name: 'eye', label: 'Change document visibility' },\n { name: 'folder', label: 'Move to folder' },\n { name: 'download', label: 'Download documents' },\n { name: 'trash-alt', label: 'Delete documents' },\n { name: 'archive', label: 'Change document expiration status' }\n ].filter((icon) => this.iconVisible(icon.name))\n },\n\n isFolderRenameActive() {\n return this.currentAction === 'renameFolder'\n },\n\n canReadStaffOnlyItems() {\n return this.$ability.can('read', 'staff_only_items')\n },\n\n canManageRequest() {\n return this.$ability.can('manage', 'Request')\n },\n\n setDocVisibilityDropdownText() {\n const visibility = this.documentVisibilities.find((val) => {\n return val.id === this.selectedDocumentVisibility.id\n })\n if (visibility) {\n return visibility.label\n }\n return 'All documents'\n },\n\n filterDocVisibilitiesByPermission() {\n if (\n this.currentUserPresent &&\n this.request.requester.id === this.$store.state.currentUser.id\n ) {\n return this.documentVisibilities.filter((visi) => {\n return visi.id !== 'staff'\n })\n }\n return this.documentVisibilities\n },\n\n canFilterByRisk() {\n return this.hasPiiScanEnabled && this.canReadStaffOnlyItems\n },\n\n invalidFolderName() {\n return this.folderToRename === ''\n },\n selectedDocs() {\n return this.documentList.filter(({ id }) =>\n this.selectedDocIds.includes(id)\n )\n },\n hasFilters() {\n return (\n this.selectedDocumentVisibility.id !== 'all' ||\n this.selectedSeverity.id !== null ||\n this.selectedReviewStatus.id !== null ||\n this.activeFolder !== 'all' ||\n this.folderSearchTerm !== '' ||\n this.docSearchTerm !== ''\n )\n },\n emptyStateText() {\n return this.hasFilters\n ? 'No documents found with the applied filters'\n : 'No more documents on this request'\n },\n canSeeStaffOnlyItems() {\n return this.$can('read', 'staff_only_items')\n },\n canSeeAdminOnlyItems() {\n return this.$can('read', 'admin_only_items')\n }\n },\n methods: {\n ...mapActions('request_show', [\n 'fetchDocumentsChildFolders',\n 'fetchDocumentsFolders',\n 'fetchDocuments',\n 'submitBulkDocumentAction',\n 'pollBulkJobs',\n 'setDocumentFilters',\n 'sendNotification',\n 'downloadDocuments',\n 'fetchJobStatuses',\n 'moveFolder',\n 'updateDocTitle',\n 'fetchTimeline',\n 'setCurrentAction',\n 'updateFolder',\n 'addDocument',\n 'setDocumentsProcessingIds'\n ]),\n ...mapActions('admin', ['setDocReviewStatus']),\n ...mapMutations('request_show', {\n setJobPollIntervalId: 'setJobPollIntervalId'\n }),\n resetDocumentSelection() {\n this.selectAll = false\n this.selectAllDocsOnCurrentPage = false\n this.selectedDocIds = []\n this.activeFilterName = 'All Documents'\n this.currentPageNum = 1\n this.activeFolder = 'all'\n this.selectedDocumentVisibility = { id: 'all', label: 'All documents' }\n this.selectedSeverity = { id: null, label: 'All risk levels' }\n this.selectedReviewStatus = { id: null, label: 'All review types' }\n this.docSearchTerm = ''\n },\n canSeeRedactAction(id) {\n const document = this.documentList.find((item) => item.id === id)\n const visibility = document ? document.visibility : null\n return (\n this.canReadStaffOnlyItems &&\n visibility === 'Staff Only' &&\n this.hasRedactionEnabled\n )\n },\n canSeeDeleteAction(id) {\n const document = this.documentList.find((item) => item.id === id)\n const visibility = document ? document.visibility : null\n return (\n this.$can('manage', 'Request') ||\n (this.canReadStaffOnlyItems && visibility === 'Staff Only')\n )\n },\n handleTagClick(tag, doc) {\n if (!doc.document_scan) return\n if (tag.tag_name === 'review_status') {\n this.setDocReview(doc.document_scan)\n } else {\n this.activeScan = doc.document_scan\n }\n },\n\n handleActions(val) {\n switch (val) {\n case 'eye':\n this.openModal('changeVisibility')\n break\n case 'folder':\n this.openModal('moveToFolder')\n break\n case 'download':\n this.submitDocDownload()\n break\n case 'trash-alt':\n this.openModal('docDelete')\n break\n case 'archive':\n this.openModal('changeExpiration')\n break\n default:\n }\n },\n\n documentExpirationLabel(document) {\n if (\n this.request.request_state === 'Closed' &&\n this.canSeeStaffOnlyItems &&\n this.hasRetentionEnabled\n ) {\n if (document.exempt_from_retention || !document.expiration_date) {\n return 'Expiration: Never'\n } else {\n return 'Expiration: ' + document.expiration_date\n }\n }\n },\n\n iconVisible(icon) {\n switch (icon) {\n case 'eye':\n return this.canManageRequest\n case 'folder':\n return this.canSeeStaffOnlyItems\n case 'trash-alt':\n return this.canManageRequest\n case 'download':\n return this.currentUserPresent\n case 'archive':\n return this.hasRetentionEnabled && this.canSeeAdminOnlyItems\n default:\n return false\n }\n },\n\n setDocReview(scan) {\n const params = {\n id: scan.id,\n reviewStatus: toggleReviewStatus(scan.review_status)\n }\n this.setDocReviewStatus(params).then(() => {\n let doc = this.documents.find((doc) => doc.id === scan.document_id)\n doc = Object.assign({}, doc, {\n document_scan: {\n ...doc.document_scan,\n review_status: toggleReviewStatus(scan.review_status)\n }\n })\n this.addDocument(doc)\n if (!this.activeScan) return\n this.activeScan = Object.assign({}, scan, {\n review_status: toggleReviewStatus(scan.review_status),\n tag_color: reviewStatusColor(scan.review_status)\n })\n })\n },\n\n redirectToDocumentPage() {\n window.location.pathname = `${this.activeScan.document_path}`\n },\n setDocTags(doc) {\n if (!this.hasPiiScanEnabled) return\n\n if (this.canSeeStaffOnlyItems) {\n return setupRiskTags(doc, this.canReadStaffOnlyItems)\n }\n },\n nofolderFilter(val) {\n if (val.subfolder_name === '') {\n return val.folder_name\n } else {\n return val.subfolder_name\n }\n },\n\n submitDocFolderForm({ name, folder_id: folderId }) {\n const payload = {\n documents_state_timestamp: this.documentsStateTimestamp,\n all_selected: this.selectAll ? this.selectAll : null,\n folderless_docs: this.folderlessDocs ? this.folderlessDocs : null,\n doc_ids: this.selectAll ? null : this.selectedDocIds,\n request_id: this.request.pretty_id,\n search_term: this.docSearchTerm === '' ? null : this.docSearchTerm,\n parent_folder_id: this.filtersApplied.parent_folder_id,\n child_folder_id: this.filtersApplied.child_folder_id,\n visibility: this.selectedDocumentVisibility.id\n }\n\n // folderId is -1 if \"No folder\" has been selected\n if (folderId === -1) {\n payload.bulk_action = 'remove_from_folder'\n } else {\n payload.bulk_action = 'move_to_folder'\n payload.folder_id = folderId\n }\n\n this.removeNullFromObject(payload)\n this.setDocumentsProcessingIds(this.selectedDocIds)\n this.submitBulkDocumentAction(payload)\n .then((xhr) => {\n if (xhr.status === 200) {\n const data = xhr.response ? xhr.response.body.data : xhr.data\n const jobId = data.jobId\n const docAmount = this.selectAll\n ? 'all'\n : this.selectedDocIds.length\n if (!jobId) {\n this.$toasted.error(\n `Moving ${docAmount} document(s) to folder has failed to start.`\n )\n return\n }\n\n const jobArgs = {\n docIds: this.selectedDocIds,\n selectAll: this.selectAll,\n jobId,\n currentFolderId: folderId,\n parentFolderId: this.currentDocumentFilters.parent_folder_id,\n filteredFolderType: this.currentDocumentFilters.child_folder_id\n ? 'subfolder'\n : 'top folder',\n folderName: name,\n expiry: addDays(new Date(), 2)\n }\n helpers.setPendingJobInLocalStorage(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowMoveFolder`,\n jobArgs\n )\n this.$toasted.show(`Moving ${docAmount} document(s) to a folder.`)\n this.pollBulkActions()\n }\n })\n .catch((err) => {\n if (err.response.status === 409) {\n this.setDocumentsProcessingIds([])\n this.$toasted.error(err.response.data.message)\n } else {\n const docAmount = this.selectAll\n ? 'all'\n : this.selectedDocIds.length\n this.$toasted.error(\n `An error has occurred while moving ${docAmount} document(s) to a folder.`\n )\n }\n })\n this.setCurrentAction('')\n },\n setupFolderRenamePayload() {\n const parentFolderId = this.filtersApplied.parent_folder_id\n const payload = {\n request_id: this.request.pretty_id,\n folder_name: this.folderToRename,\n parent_folder_id: parentFolderId,\n current_folder_id:\n parseInt(parentFolderId) < parseInt(this.activeFolder)\n ? parseInt(this.activeFolder.replace(parentFolderId, ''))\n : parseInt(this.activeFolder)\n }\n if (this.filteredFolder === 'subfolder') {\n payload.child_folder_id = parseInt(\n this.activeFolder.replace(parentFolderId, '')\n )\n }\n return payload\n },\n resetParentFoldersAndFilter(payload) {\n const folderData = {\n parent_folder_id: payload.parent_folder_id,\n activeId: payload.current_folder_id,\n folderName: payload.folder_name,\n type: 'top folder'\n }\n this.fetchDocumentsFolders({\n request_id: this.request.pretty_id,\n visibility: this.selectedDocumentVisibility.id,\n search_text:\n this.folderSearchTerm.length > 2 ? this.folderSearchTerm : null\n }).then(() => {\n this.foldersOpened = []\n setTimeout(() => {\n const newParentFolder = this.documentsFolders.filter((fol) => {\n return fol.folder_name === payload.folder_name\n })\n if (newParentFolder.length) {\n const newParentFolderId = newParentFolder[0].id\n folderData.parent_folder_id = newParentFolderId\n folderData.activeId = newParentFolderId\n this.filterByFolder(folderData)\n } else {\n folderData.type = 'all'\n folderData.folderName = 'All Documents'\n this.filterByFolder(folderData)\n }\n }, 1000)\n })\n },\n removeChildFolder(parentFolder, childFolderId) {\n const childFolders = parentFolder.folders.filter((fol) => {\n return fol.id !== childFolderId\n })\n parentFolder.folders = childFolders\n },\n resetChildFoldersAndFilter(payload) {\n const folderData = {\n parent_folder_id: payload.parent_folder_id,\n activeId: payload.parent_folder_id,\n type: 'top folder'\n }\n this.fetchDocumentsChildFolders({\n request_id: this.request.pretty_id,\n visibility: this.selectedDocumentVisibility.id,\n folder_id: payload.parent_folder_id\n }).then(() => {\n const parentFolder = this.getParentFolder(payload.parent_folder_id)\n this.removeChildFolder(parentFolder, payload.current_folder_id) // Removes old child folder\n setTimeout(() => {\n folderData.folderName = parentFolder.folder_name\n this.filterByFolder(folderData) // Resets parent folder filter\n }, 1000)\n })\n },\n resetFoldersAfterRenaming(payload, filteredFolderType) {\n filteredFolderType === 'subfolder'\n ? this.resetChildFoldersAndFilter(payload)\n : this.resetParentFoldersAndFilter(payload)\n },\n pollFolderRenameJob(jobId, folderData, filteredFolderType) {\n const folderRenameJob = setInterval(() => {\n this.fetchJobStatuses({\n pretty_id: this.request.pretty_id\n })\n .then(({ data }) => {\n const jobs = data.jobs\n jobs.forEach((job) => {\n if (\n helpers.backgroundJobComplete(job.status) &&\n job.job_type === 'process_folders' &&\n job.id === jobId\n ) {\n this.$toasted.success('Successfully renamed folder name.')\n this.resetFoldersAfterRenaming(folderData, filteredFolderType)\n clearInterval(folderRenameJob)\n }\n if (\n helpers.backgroundJobFailed(job.status) &&\n job.job_type === 'process_folders' &&\n job.id === jobId\n ) {\n this.$toasted.error(\n 'An error has occurred while renaming folder name.'\n )\n clearInterval(folderRenameJob)\n }\n })\n })\n // eslint-disable-next-line no-unused-vars\n .catch((_err) => {\n clearInterval(folderRenameJob)\n })\n }, 1000)\n },\n submitRenameFolder() {\n this.setCurrentAction('')\n const payload = this.setupFolderRenamePayload()\n const filteredFolderType = this.filteredFolder\n this.updateFolder(payload)\n .then(({ status, data }) => {\n const jobId = data.jobId\n if (status !== 200) {\n return\n }\n this.pollFolderRenameJob(jobId, payload, filteredFolderType)\n })\n // eslint-disable-next-line no-unused-vars\n .catch((_err) => {\n this.$toasted.error(\n 'An error has occurred while renaming folder name.'\n )\n })\n },\n getParentFolder(parentFolderId) {\n const parentFolder = this.documentsFolders.filter((fol) => {\n return fol.id === parentFolderId\n })\n return parentFolder[0]\n },\n getChildFolder(parentFolder, childFolderId) {\n const childFolder = parentFolder.folders.filter((fol) => {\n return fol.id === childFolderId\n })\n return childFolder[0]\n },\n showMore(pageNum) {\n this.fetchDocumentsFolders({\n request_id: this.request.pretty_id,\n visibility: this.selectedDocumentVisibility.id,\n search_text:\n this.folderSearchTerm.length > 2 ? this.folderSearchTerm : null,\n page_number: pageNum\n })\n },\n // eslint-disable-next-line no-unused-vars\n childShowMore(params) {\n const parentId = params.parent_folder_id\n const pageNum = params.childPageNum\n this.fetchDocumentsChildFolders({\n request_id: this.request.pretty_id,\n visibility: this.selectedDocumentVisibility.id,\n folder_id: parentId,\n page_number: pageNum\n })\n },\n renameFolder(folderName) {\n this.folderToRename = folderName\n this.setCurrentAction('renameFolder')\n },\n filterByFolder(data) {\n this.currentPageNum = 1\n this.activeFilterName = data.folderName\n this.resetCardSelection()\n if (this.activeFolder === data.child_folder_id) {\n return\n } else if (this.activeFolder === data.type) {\n return\n } else {\n this.activeFolder = data.activeId\n }\n this.filteredFolder = data.type\n if (data.type === 'all') {\n this.activeFolder = 'all'\n this.folderlessDocs = false\n this.filtersApplied = {\n parent_folder_id: data.parent_folder_id,\n child_folder_id: null\n }\n } else if (data.type === 'nofolder') {\n this.activeFolder = 'nofolder'\n this.folderlessDocs = true\n this.filtersApplied = {\n parent_folder_id: null,\n child_folder_id: null\n }\n } else if (data.type === 'all folder') {\n this.activeFolder = data.activeId\n this.folderlessDocs = false\n this.filtersApplied = {\n parent_folder_id: data.parent_folder_id,\n child_folder_id: null\n }\n } else if (data.type === 'top folder') {\n this.activeFolder = data.activeId\n this.folderlessDocs = false\n this.filtersApplied = {\n parent_folder_id: data.parent_folder_id,\n child_folder_id: null\n }\n } else if (data.type === 'subfolder') {\n this.folderlessDocs = false\n this.filtersApplied = {\n parent_folder_id: data.parent_folder_id,\n child_folder_id: data.child_folder_id\n }\n }\n const filterData = this.docsPayload()\n this.removeNullFromObject(filterData)\n this.setDocumentFilters(filterData)\n this.fetchDocuments(filterData)\n },\n openFolder({ index, id }) {\n const parentFolder = this.getParentFolder(id)\n const noExistingChildFolders =\n !parentFolder.folders && parentFolder.has_child_folders\n if (noExistingChildFolders) {\n this.fetchDocumentsChildFolders({\n request_id: this.request.pretty_id,\n visibility: this.selectedDocumentVisibility.id,\n folder_id: id\n })\n }\n this.docsFolders = this.documentsFolders\n if (this.foldersOpened.includes(index)) {\n const location = this.foldersOpened.indexOf(index)\n this.foldersOpened.splice(location, 1)\n } else {\n this.foldersOpened.push(index)\n }\n },\n totalDocumentCountConditional() {\n if (this.searchDocumentResultsCount >= 0) {\n return `${this.currentDocumentsCount} / ${this.totalDocumentsCount}`\n }\n\n return this.totalDocumentsCount\n },\n setupDocVisibilityPayload(params) {\n let payload\n payload = {\n documents_state_timestamp: this.documentsStateTimestamp,\n all_selected: this.selectAll ? this.selectAll : null,\n folderless_docs: this.folderlessDocs ? this.folderlessDocs : null,\n doc_ids: this.selectAll ? null : this.selectedDocIds,\n bulk_action: 'update_visibility',\n request_id: this.request.pretty_id,\n search_term: this.docSearchTerm === '' ? null : this.docSearchTerm,\n new_visibility: this.selectedChangeDocVisibility.id,\n visibility:\n this.selectedDocumentVisibility.id === 'all'\n ? null\n : this.selectedDocumentVisibility.id\n }\n payload = { ...payload, ...this.filtersApplied }\n if (params.messageToRequester) {\n Object.assign(payload, {\n message: params.messageToRequester,\n message_template_ids: params.messageTemplateIds\n })\n }\n this.removeNullFromObject(payload)\n return payload\n },\n submitDocVisibilityForm(params) {\n const docVisibilityPayload = this.setupDocVisibilityPayload(params)\n this.setDocumentsProcessingIds(this.selectedDocIds)\n this.submitBulkDocumentAction(docVisibilityPayload)\n .then((xhr) => {\n if (xhr.status === 200) {\n const data = xhr.response ? xhr.response.body.data : xhr.data\n const jobId = data.jobId[0]\n if (!jobId) {\n this.$toasted.error(\n 'Changing visibility on documents failed to start.'\n )\n return\n }\n const jobArgs = {\n jobId,\n selectedVisibility: params.selectedDocumentVisibility,\n selectAll: this.selectAll,\n docIds: this.selectedDocIds,\n expiry: addDays(new Date(), 2)\n }\n helpers.setPendingJobInLocalStorage(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowChangeVisibility`,\n jobArgs\n )\n this.$toasted.success(\n `Changing visibility on\n ${this.selectAll ? 'all' : this.selectedDocIds.length} ${\n this.selectedDocIds.length === 1 ? 'document' : 'documents'\n }`\n )\n this.pollBulkActions()\n }\n })\n .catch((err) => {\n if (err.response.status === 409) {\n this.setDocumentsProcessingIds([])\n this.$toasted.error(err.response.data.message)\n } else {\n this.$toasted.error(\n `An error has occured while changing visibility on\n ${this.selectAll ? 'all' : this.selectedDocIds.length} ${\n this.selectedDocIds.length === 1 ? 'document' : 'documents'\n }`\n )\n }\n })\n this.setCurrentAction('')\n },\n submitDocExpirationForm(params) {\n const payload = {\n documents_state_timestamp: this.documentsStateTimestamp,\n all_selected: this.selectAll ? this.selectAll : null,\n folderless_docs: this.folderlessDocs ? this.folderlessDocs : null,\n doc_ids: this.selectAll ? null : this.selectedDocIds,\n bulk_action: 'update_exempt_from_retention',\n request_id: this.request.pretty_id,\n search_term: this.docSearchTerm === '' ? null : this.docSearchTerm,\n exempt_from_retention: params.selectedDocumentExpirationStatus\n }\n this.removeNullFromObject(payload)\n this.setDocumentsProcessingIds(this.selectedDocIds)\n this.submitBulkDocumentAction(payload)\n .then((xhr) => {\n if (xhr.status === 200) {\n const data = xhr.response ? xhr.response.body.data : xhr.data\n const jobId = data.jobId[0]\n if (!jobId) {\n this.$toasted.error(\n 'Changing expiration status on documents failed to start.'\n )\n return\n }\n const jobArgs = {\n jobId,\n selectedDocumentExpirationStatus:\n params.selectedDocumentExpirationStatus,\n selectAll: this.selectAll,\n docIds: this.selectedDocIds,\n expiry: addDays(new Date(), 2)\n }\n helpers.setPendingJobInLocalStorage(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowChangeExpiration`,\n jobArgs\n )\n this.$toasted.success(\n `Changing expiration status on\n ${this.selectAll ? 'all' : this.selectedDocIds.length} ${\n this.selectedDocIds.length === 1 ? 'document' : 'documents'\n }`\n )\n this.pollBulkActions()\n }\n })\n .catch((err) => {\n if (err.response.status === 409) {\n this.setDocumentsProcessingIds([])\n this.$toasted.error(err.response.data.message)\n } else {\n this.$toasted.error(\n `An error has occured while changing expiration status on\n ${this.selectAll ? 'all' : this.selectedDocIds.length} ${\n this.selectedDocIds.length === 1 ? 'document' : 'documents'\n }`\n )\n }\n })\n this.setCurrentAction('')\n },\n setupBulkToastMsg(jobs) {\n jobs.forEach((job) => {\n if (helpers.backgroundJobFailed(job.status)) {\n if (job.job_type === 'visibility_updater') {\n this.setupFailedChangeVisibilityToastMsg(job.id)\n this.setDocumentsProcessingIds([])\n }\n if (job.job_type === 'exempt_from_retention_updater') {\n this.setupFailedChangeExpirationToastMsg(job.id)\n this.setDocumentsProcessingIds([])\n }\n if (job.job_type === 'flatten') {\n this.setupFailedFlattenToastMsg(job.id)\n this.setDocumentsProcessingIds([])\n }\n if (job.job_type === 'delete_documents') {\n this.setupFailedDeleteToastMsg(job.id)\n this.setDocumentsProcessingIds([])\n }\n if (job.job_type === 'process_folders') {\n this.setupFailedMoveFolderToastMsg(job.id)\n this.setDocumentsProcessingIds([])\n }\n } else if (helpers.backgroundJobComplete(job.status)) {\n if (job.job_type === 'visibility_updater') {\n this.setupSuccessChangeVisibilityToastMsg(job.id)\n this.setDocumentsProcessingIds([])\n this.refreshDocuments()\n this.fetchTimeline({\n pretty_id: this.request.pretty_id,\n filter_categores: []\n })\n }\n if (job.job_type === 'exempt_from_retention_updater') {\n this.setupSuccessChangeExpirationToastMsg(job.id)\n this.setDocumentsProcessingIds([])\n this.refreshDocuments()\n this.fetchTimeline({\n pretty_id: this.request.pretty_id,\n filter_categores: []\n })\n }\n if (job.job_type === 'flatten') {\n this.setupSuccessFlattenToastMsg(job.id)\n this.setDocumentsProcessingIds([])\n this.fetchDocumentsFolders({\n request_id: this.request.pretty_id,\n visibility: this.selectedDocumentVisibility.id,\n search_text:\n this.folderSearchTerm.length > 2 ? this.folderSearchTerm : null\n })\n this.fetchTimeline({\n pretty_id: this.request.pretty_id,\n filter_categores: []\n })\n this.refreshDocuments()\n }\n if (job.job_type === 'delete_documents') {\n this.removeDeleteJob(job.id)\n this.setDocumentsProcessingIds([])\n this.fetchDocumentsFolders({\n request_id: this.request.pretty_id,\n visibility: this.selectedDocumentVisibility.id,\n search_text:\n this.folderSearchTerm.length > 2 ? this.folderSearchTerm : null\n })\n this.fetchTimeline({\n pretty_id: this.request.pretty_id,\n filter_categores: []\n })\n this.refreshDocuments()\n }\n if (job.job_type === 'process_folders') {\n this.setDocumentsProcessingIds([])\n this.setupSuccessMoveFolderToastMsg(job, this.folderAction)\n }\n }\n })\n },\n setupFailedDownloadToastMsg(jobId) {\n this.$toasted.error('An error has occured while zipping the file(s).')\n helpers.removePendingJobFromLocalStorage(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowDownload`,\n jobId\n )\n },\n setupFailedFlattenToastMsg(jobId) {\n const job = helpers.getPendingJob(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowFlatten`,\n jobId\n )\n this.$toasted.error(\n `Failed to flatten ${job.selectAll ? 'all' : job.docIds.length} ${\n job.docIds.length === 1 ? 'document' : 'documents'\n }.`\n )\n helpers.removePendingJobFromLocalStorage(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowFlatten`,\n jobId\n )\n },\n setupSuccessFlattenToastMsg(jobId) {\n const job = helpers.getPendingJob(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowFlatten`,\n jobId\n )\n this.$toasted.success(\n `Successfully flattened ${job.selectAll ? 'all' : job.docIds.length} ${\n job.docIds.length === 1 ? 'document' : 'documents'\n }.`\n )\n helpers.removePendingJobFromLocalStorage(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowFlatten`,\n jobId\n )\n },\n setupFailedDeleteToastMsg(jobId) {\n const job = helpers.getPendingJob(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowDelete`,\n jobId\n )\n this.$toasted.error(\n `Failed to delete ${job.selectAll ? 'all' : job.docIds.length} ${\n job.docIds.length === 1 ? 'document' : 'documents'\n }.`\n )\n helpers.removePendingJobFromLocalStorage(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowDelete`,\n jobId\n )\n },\n removeDeleteJob(jobId) {\n helpers.removePendingJobFromLocalStorage(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowDelete`,\n jobId\n )\n },\n setupSuccessMoveFolderToastMsg(job, folderAction) {\n const jobPending = helpers.getPendingJob(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowMoveFolder`,\n job.id\n )\n const docAmount = jobPending.selectAll ? 'All' : jobPending.docIds.length\n if (folderAction === 'removing') {\n this.$toasted.success(`${docAmount} document(s) removed from folder`)\n } else {\n this.$toasted.success(`${docAmount} document(s) moved to a folder`)\n }\n const payload = {\n parent_folder_id: jobPending.parentFolderId,\n current_folder_id: jobPending.currentFolderId,\n folder_name: jobPending.folderName\n }\n this.resetParentFoldersAndFilter(payload)\n helpers.removePendingJobFromLocalStorage(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowMoveFolder`,\n job.id\n )\n },\n setupFailedChangeVisibilityToastMsg(jobId) {\n this.$toasted.error('Failed to change document retention status')\n helpers.removePendingJobFromLocalStorage(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowChangeVisibility`,\n jobId\n )\n },\n setupFailedChangeExpirationToastMsg(jobId) {\n this.$toasted.error(\n 'An error has occurred while changing expiration on document(s).'\n )\n helpers.removePendingJobFromLocalStorage(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowChangeExpiration`,\n jobId\n )\n },\n setupFailedMoveFolderToastMsg(jobId) {\n this.$toasted.error(\n 'An error has occured when moving documents(s) to folder.'\n )\n helpers.removePendingJobFromLocalStorage(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowMoveFolder`,\n jobId\n )\n },\n setupSuccessChangeVisibilityToastMsg(jobId) {\n const objectName = `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowChangeVisibility`\n const job = helpers.getPendingJob(objectName, jobId)\n if (!job) {\n return\n }\n const selectedDocIds = job.docIds\n const selectAll = job.selectAll\n\n const count = selectAll ? 'all' : selectedDocIds?.length\n const documentsWord =\n selectedDocIds?.length === 1 ? 'document' : 'documents'\n\n let message = 'Successfully changed visibility on document(s)'\n if (job.selectedVisibility === 'requester') {\n message = `Successfully released ${count} ${documentsWord} to the requester`\n } else if (job.selectedVisibility === 'public') {\n message = `Successfully published ${count} ${documentsWord}`\n } else if (selectAll || selectedDocIds.length) {\n message = `Successfully changed visibility on ${count} ${documentsWord}`\n }\n\n this.$toasted.success(message)\n helpers.removePendingJobFromLocalStorage(objectName, jobId)\n },\n setupSuccessChangeExpirationToastMsg(jobId) {\n const objectName = `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowChangeExpiration`\n const job = helpers.getPendingJob(objectName, jobId)\n if (!job) {\n return\n }\n const selectedDocIds = job.docIds\n const selectAll = job.selectAll\n\n const count = selectAll ? 'all' : selectedDocIds?.length\n const documentsWord =\n selectedDocIds?.length === 1 ? 'document' : 'documents'\n\n const message = `Successfully changed retention status for ${count} ${documentsWord}`\n\n this.$toasted.success(message)\n helpers.removePendingJobFromLocalStorage(objectName, jobId)\n },\n submitDocRedact(id) {\n window.location.pathname = `/redaction/${id}`\n },\n submitDocDownload() {\n if (!this.selectedDocIds.length && !this.selectAll) {\n this.setCurrentAction('docEmpty')\n return\n }\n\n if (this.selectedDocIds.length === 1) {\n this.downloadDocuments({ docId: this.selectedDocIds[0] })\n this.$toasted.success(\n 'Document will download automatically when ready.'\n )\n return\n }\n\n let payload\n if (this.selectAll) {\n payload = {\n documents_state_timestamp: this.documentsStateTimestamp,\n request_id: this.request.pretty_id,\n bulk_action: 'download',\n all_selected: true,\n visibility: this.selectedDocumentVisibility.id,\n search_term:\n this.docSearchTerm.length > 2 ? this.docSearchTerm : null,\n folderless_docs: this.folderlessDocs ? this.folderlessDocs : null,\n ...this.filtersApplied\n }\n }\n\n if (this.selectedDocIds.length && !this.selectAll) {\n payload = {\n documents_state_timestamp: this.documentsStateTimestamp,\n request_id: this.request.pretty_id,\n bulk_action: 'download',\n doc_ids: this.selectedDocIds\n }\n }\n this.removeNullFromObject(payload)\n this.submitBulkDocumentAction(payload)\n .then((xhr) => {\n if (xhr.status === 200) {\n // Start polling\n const data = xhr.response ? xhr.response.body.data : xhr.data\n const jobId = data.jobId[0]\n if (!jobId) {\n this.$toasted.error('Download failed to start.')\n return\n }\n helpers.setPendingJobInLocalStorage(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}zipFiles`,\n {\n jobId,\n docIds: this.selectedDocIds,\n jobType: 'bulk_download',\n expiry: addDays(new Date(), 2)\n }\n )\n helpers.setJobIdInSessionStorage(jobId)\n this.$toasted.success(\n 'Documents will download automatically when ready.'\n )\n }\n })\n // eslint-disable-next-line no-unused-vars\n .catch((err) => {\n if (err.response.status === 409) {\n this.setDocumentsProcessingIds([])\n this.$toasted.error(err.response.data.message)\n } else {\n const nrError = new Error(\n 'An error has occurred while downloading',\n {\n cause: err\n }\n )\n NrSentry.captureError(nrError)\n this.$toasted.error('An error has occurred while downloading')\n }\n })\n },\n pollBulkActions() {\n // If there is already an interval running then don't start a new one.\n if (this.jobPollIntervalId) {\n return\n }\n\n const intervalId = setInterval(() => {\n if (!this.request?.pretty_id) {\n this.stopJobPolling()\n return\n }\n\n this.fetchJobStatuses({\n pretty_id: this.request.pretty_id\n })\n .then((response) => {\n if (!this.request?.pretty_id) {\n this.stopJobPolling()\n return\n }\n\n const processingDocIds = helpers.fetchAllProcessingDocIds(\n this.$store.state.currentUser.id,\n this.request.pretty_id,\n 'request_show'\n )\n if (processingDocIds.length === 0) {\n this.stopJobPolling()\n return\n }\n\n const jobs = response.data.jobs\n if (typeof jobs !== 'undefined' || jobs.length !== 0) {\n this.setupBulkToastMsg(jobs)\n }\n })\n // eslint-disable-next-line no-unused-vars\n .catch((_err) => {\n this.stopJobPolling()\n })\n }, 2000)\n this.setJobPollIntervalId(intervalId)\n },\n stopJobPolling() {\n this.setJobPollIntervalId(null)\n },\n submitDocDeleteForm() {\n this.setCurrentAction('')\n const payload = {\n documents_state_timestamp: this.documentsStateTimestamp,\n request_id: this.request.pretty_id,\n bulk_action: 'archive',\n all_selected: this.selectAll ? this.selectAll : null,\n doc_ids: this.selectAll ? null : this.selectedDocIds,\n visibility: this.selectedDocumentVisibility.id,\n search_term: this.docSearchTerm.length > 2 ? this.docSearchTerm : null,\n folderless_docs: this.folderlessDocs ? this.folderlessDocs : null,\n ...this.filtersApplied\n }\n this.removeNullFromObject(payload)\n this.setDocumentsProcessingIds(this.selectedDocIds)\n this.submitBulkDocumentAction(payload)\n .then((xhr) => {\n if (xhr.status === 200) {\n const jobId = xhr.data.jobId\n if (!jobId) {\n this.$toasted.error('Deleting document(s) failed to start.')\n return\n }\n\n helpers.setPendingJobInLocalStorage(\n `${this.$store.state.currentUser.id}${this.request.pretty_id}requestShowDelete`,\n {\n docIds: this.selectedDocIds,\n selectAll: this.selectAll,\n jobId,\n expiry: addDays(new Date(), 2)\n }\n )\n this.pollBulkActions()\n }\n })\n // eslint-disable-next-line no-unused-vars\n .catch((err) => {\n if (err.response.status === 409) {\n this.setDocumentsProcessingIds([])\n this.$toasted.error(err.response.data.message)\n } else {\n this.$toasted.error(\n `An error has occured while deleting ${\n this.selectAll ? 'all' : this.selectedDocIds.length\n } ${this.selectedDocIds.length === 1 ? 'document' : 'documents'}`\n )\n }\n })\n },\n submitDocRenameForm(val) {\n this.setCurrentAction('')\n const payload = { id: this.selectedDocIds[0], title: val }\n this.updateDocTitle(payload).then(() => {\n this.resetCardSelection()\n })\n },\n linkToViewer(id) {\n window.open(`/documents/${id}`, '_blank')\n },\n updateFilters(filterData) {\n this.currentPageNum = 1\n this.activeFolder = 'all'\n filterData.parent_folder_id = null\n filterData.child_folder_id = null\n this.removeNullFromObject(filterData)\n this.resetCardSelection()\n this.setDocumentFilters(filterData)\n this.fetchDocuments(filterData)\n this.fetchDocumentsFolders(filterData)\n },\n filterByVisibility(visibility) {\n if (!visibility) {\n this.selectedDocumentVisibility = { id: 'all', label: 'All documents' }\n }\n const visi = !visibility ? 'all' : visibility.id\n this.updateFilters({ ...this.docsPayload(), visibility: visi })\n },\n filterBySeverity(severity) {\n if (!severity) {\n this.selectedSeverity = { id: null, label: 'All risk levels' }\n }\n const sever = !severity ? null : severity.id\n this.updateFilters({ ...this.docsPayload(), severity: sever })\n },\n filterByReviewStatus(reviewStatus) {\n if (!reviewStatus) {\n this.selectedReviewStatus = { id: null, label: 'All review types' }\n }\n const status = !reviewStatus ? null : reviewStatus.id\n this.updateFilters({\n ...this.docsPayload(),\n review_status: status\n })\n },\n trackSelectedDocs(selected, docId) {\n if (selected) {\n this.selectedDocIds = selected\n } else {\n this.selectedDocIds = this.selectedDocIds.filter((id) => id !== docId)\n }\n\n if (this.selectedDocIds.length < this.docs.length) {\n this.selectAllDocsOnCurrentPage = false\n this.selectAll = false\n }\n },\n docsPayload() {\n return {\n request_id: this.request.pretty_id,\n search_term: this.docSearchTerm.length > 2 ? this.docSearchTerm : null,\n page_number: this.currentPageNum,\n visibility: this.selectedDocumentVisibility.id,\n severity: this.selectedSeverity.id,\n review_status: this.selectedReviewStatus.id,\n folderless_docs: this.folderlessDocs,\n ...this.filtersApplied\n }\n },\n refreshDocuments() {\n // Will reapply current filters\n const docsPayload = this.docsPayload()\n this.fetchDocuments(docsPayload)\n this.resetCardSelection()\n },\n resetCardSelection() {\n this.selectAllDocsOnCurrentPage = false\n this.selectAll = false\n this.selectedDocIds = []\n this.singleDocAction = false\n this.setCardListCheckbox(false)\n },\n setCardListCheckbox(val) {\n // Uncheck all the cards in the DOM for the current document list\n const docList = this.$refs.docList\n if (!docList) {\n return\n }\n docList.forEach((listContainer) => {\n const checkboxWrapper = listContainer.$el.childNodes[0]\n const checkbox = checkboxWrapper.childNodes[0]\n checkbox.checked = val\n })\n },\n selectActiveCard(id) {\n this.singleDocAction = true\n this.selectAll = false\n if (!this.selectAllDocsOnCurrentPage) {\n this.onlySelectActiveDoc(id)\n } else {\n this.selectAllDocsOnCurrentPage = false\n }\n this.selectedDocIds = [id]\n },\n onlySelectActiveDoc(id) {\n // Select the active document\n // And unselect the rest\n const docList = this.$refs.docList\n if (!docList) {\n return\n }\n docList.forEach((card) => {\n const checkboxWrapper = card.$el.childNodes[0]\n const checkbox = checkboxWrapper.childNodes[0]\n if (card.id === id) {\n checkbox.checked = true\n return\n }\n checkbox.checked = false\n })\n },\n setSelectAll() {\n this.selectAll = !this.selectAll\n },\n openModal(modalName) {\n if (!this.selectedDocIds.length && !this.selectAll) {\n this.setCurrentAction('docEmpty')\n } else {\n this.setCurrentAction(modalName)\n }\n },\n setPageNum(pageNumber) {\n this.currentPageNum = pageNumber\n const filterData = this.docsPayload()\n this.setDocumentFilters(filterData)\n this.fetchDocuments(filterData)\n this.resetCardSelection()\n }\n }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import '@nextrequestco/components/src/styles/globals.scss';\n\n.documents-tab {\n background: #f4f4f6;\n &-empty {\n background: white;\n margin: 1.5rem 0;\n }\n &-header {\n .column {\n padding: 0.5rem;\n }\n margin: 0;\n }\n &-content {\n &-list {\n .visibility-empty-state {\n padding-bottom: 326px;\n }\n }\n &-columns {\n display: flex;\n }\n .folders-column {\n background: #f4f4f6;\n min-width: 280px;\n max-width: 280px;\n .empty-state {\n font-size: 12px;\n padding-left: 8px;\n padding-right: 8px;\n .conditional {\n padding-top: 18px;\n padding-bottom: 18px;\n color: #6e6e87;\n }\n }\n .folders-header {\n padding: 4px 12px;\n }\n .folders-search {\n padding: 8px;\n }\n .folders-subheader {\n padding: 6px 8px;\n }\n .documents-folders {\n width: 100%;\n .folder-button {\n cursor: pointer;\n padding: 8px;\n width: 100%;\n text-align: left;\n height: 30px;\n .folder-name,\n .caret,\n .folder {\n display: inline-block;\n position: relative;\n top: -5px;\n margin: 0;\n }\n .folder-name {\n top: -10px;\n margin-left: 8px;\n }\n &:hover {\n background: #ebebef;\n }\n }\n .folder-content {\n .folder-button {\n padding-left: 55px;\n }\n }\n .folder-button-active {\n background: white;\n }\n }\n }\n .cards-column {\n background: white;\n max-height: 3140px;\n width: 888px;\n .custom-table-header {\n margin-bottom: 0;\n }\n .document-search {\n background: white;\n padding-top: 0.5rem;\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n }\n .icons-filters {\n margin-top: 0.25rem;\n .select-list-checkbox {\n padding-left: 0.75rem;\n margin: 0;\n }\n .button.bulk-action {\n padding-left: 0.75rem;\n }\n }\n .search-results-column {\n margin-bottom: 0;\n .level-left {\n width: 100%;\n }\n }\n }\n button.select-all-documents-view-button {\n color: $blue;\n vertical-align: inherit;\n text-decoration: none;\n padding: 0;\n font-size: 0.75rem;\n font-weight: 700;\n }\n }\n}\n\n.document-card-border {\n border-bottom: 1px solid #ccc;\n}\n</style>\n","<template>\n <div>\n <!-- This modal opens when clicking on the eye (visibility) icon -->\n <NrModal\n :show=\"isChangeVisiModalActive\"\n class=\"visibility-form\"\n title=\"Change document visibility\"\n :primaryButtonText=\"setDocVisibilityConfirmText\"\n :disableButtons=\"disableSubmitVisibilityBtn\"\n hasSecondaryButton\n secondaryButtonText=\"Cancel\"\n @on-primary-click=\"updateDocVisibility\"\n @on-secondary-click=\"clearVisibilityModalFields\"\n @on-close-click=\"clearVisibilityModalFields\"\n >\n <p>\n You are about to set the visibility of\n {{ selectAll ? 'all' : documentsSelectedCount }} document(s). Do you\n want to continue?\n </p>\n <RiskReport\n v-if=\"hasDocPiiFeature\"\n :documents=\"selectedDocuments\"\n :filter-params=\"documentFilterParams\"\n :selectAll=\"selectAll\"\n />\n <NrSelect\n v-model=\"selectedDocumentVisibility\"\n placeholder=\"Select visibility\"\n :options=\"documentVisibilities\"\n append-to-body\n >\n <template v-slot:label>\n <span> Document visibility </span>\n </template>\n </NrSelect>\n <div class=\"m-top-12\" v-if=\"requesterOrPublicSelected\">\n <NrFormLabel>Include message to requester (optional)</NrFormLabel>\n <NrSelect\n v-model=\"selectedMessageTemplates\"\n :placeholder=\"\n selectedMessageTemplates.length ? '' : 'Search message templates'\n \"\n :options=\"filteredMessageTemplates\"\n :filterable=\"false\"\n :loading=\"dataFetchState.message_templates.fetching\"\n :hasMore=\"!dataFetchState.message_templates.end\"\n @search=\"searchMessageTemplates\"\n @open=\"searchMessageTemplates\"\n @input=\"setMessageTemplate\"\n @load-more=\"loadMoreMessageTemplates\"\n append-to-body\n multiple\n hideLabel\n />\n <nr-editor\n v-model=\"changeVisibilityMessage\"\n :rows=\"12\"\n strike\n bulletList\n orderedList\n link\n />\n <NrFormInput\n type=\"checkbox\"\n class=\"m-top-12\"\n label=\"Yes, send to requester (required)\"\n v-model=\"sendMessageToRequester\"\n />\n </div>\n </NrModal>\n <!-- This modal opens when clicking on the folder icon -->\n <NrModal\n title=\"Move to folder\"\n hasSecondaryButton\n :show=\"isMoveToFolderModalActive\"\n secondaryButtonText=\"Cancel\"\n primaryButtonText=\"Save\"\n @on-primary-click=\"moveToFolder\"\n @on-close-click=\"closeMoveToFolder\"\n @on-secondary-click=\"closeMoveToFolder\"\n :disable-buttons=\"!selectedFolder\"\n >\n <form @submit.prevent.stop>\n <p>\n You are about to move\n {{ selectAll ? 'all' : documentsSelectedCount }} document(s). Do you\n want to continue?\n </p>\n <fieldset>\n <div class=\"field m-top-8\">\n <NrSelect\n class=\"m-top-12\"\n placeholder=\"Search and select a folder\"\n :options=\"folders\"\n @search=\"handleTypingFolderSearch\"\n @option:created=\"handleFolderAdd\"\n v-model=\"selectedFolder\"\n append-to-body\n taggable\n >\n <template v-slot:label>Folder</template>\n </NrSelect>\n </div>\n </fieldset>\n </form>\n </NrModal>\n <!-- This modal opens when clicking on the trash icon -->\n <NrModal\n class=\"doc-delete-modal\"\n title=\"Delete documents\"\n :show=\"isDeleteModalActive\"\n :disableButtons=\"disableDeleteSubmitBtn\"\n hasSecondaryButton\n primary-button-text=\"Delete\"\n @on-primary-click=\"onDeleteSubmit\"\n @on-secondary-click=\"setCurrentAction('')\"\n >\n <p>\n You are about to delete\n {{ selectAll ? 'all' : documentsSelectedCount }} document(s). This\n action cannot be undone. Do you want to continue?\n </p>\n </NrModal>\n <NrModal\n :show=\"isDocEmptyModalActive\"\n title=\"No documents selected\"\n hasSecondaryButton\n secondaryButtonText=\"Cancel\"\n primaryButtonText=\"Ok\"\n @on-primary-click=\"setCurrentAction('')\"\n @on-close-click=\"setCurrentAction('')\"\n @on-secondary-click=\"setCurrentAction('')\"\n >\n <p>Please select one or more documents to perform any action.</p>\n </NrModal>\n <!-- This modal opens when clicking on the pencil icon -->\n <NrModal\n title=\"Rename document\"\n :show=\"isRenameDocModalActive\"\n hasSecondaryButton\n primary-button-text=\"Save\"\n :disableButtons=\"invalidDocTitle\"\n @on-primary-click=\"onDocRenameSubmit\"\n @on-secondary-click=\"setCurrentAction('')\"\n >\n <NrFormInput\n label=\"Rename document\"\n v-model=\"docTitle\"\n :validations=\"{\n text: {\n message: invalidDocTitle ? 'Document title cannot be blank.' : '',\n validate: !invalidDocTitle.length\n }\n }\"\n />\n </NrModal>\n <!-- This modal opens when clicking on the archive icon -->\n <NrModal\n :show=\"isChangeExpirationModalActive\"\n class=\"expiration-form\"\n title=\"Change document expiration status\"\n primaryButtonText=\"Change retention status\"\n :disableButtons=\"disableSubmitExpirationBtn\"\n hasSecondaryButton\n secondaryButtonText=\"Cancel\"\n @on-primary-click=\"updateDocExpirationStatus\"\n @on-secondary-click=\"clearExpirationModalFields\"\n @on-close-click=\"clearExpirationModalFields\"\n >\n <NrSelect\n v-model=\"selectedDocumentExpirationStatus\"\n placeholder=\"Select a retention status\"\n :options=\"documentExpirationStatuses\"\n append-to-body\n >\n <template v-slot:label>\n <span>\n Change document retention status\n <NrTooltip class=\"inline\">\n <template v-slot:label>\n <span>\n Exempt from expungement: If you exempt documents from they\n will not be automatically deleted from the portal even after\n the normal retention period passes. If the request is deleted,\n deleted, documents can be still accessed from the documents\n page.\n <br />\n <br />\n Mark for deletion: Return document(s) to a state where they\n will be deleted when their retention period is up. If\n retention period is in the past, documents will be deleted\n during the next retention cycle.\n </span>\n </template>\n <NrIcon class=\"inline-icon\" name=\"info-circle\" />\n </NrTooltip>\n </span>\n </template>\n </NrSelect>\n <p>\n You are about to change the retention status for\n {{ selectAll ? 'all' : documentsSelectedCount }} document(s).\n </p>\n </NrModal>\n </div>\n</template>\n\n<script>\nimport NrIcon from '@nextrequestco/components/src/components/NrIcon/NrIcon.vue'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport NrFormInput from '@nextrequestco/components/src/components/NrFormInput/nr-form-input.vue'\nimport NrFormLabel from '@nextrequestco/components/src/components/form-elements/nr-form-label.vue'\nimport NrEditor from '@nextrequestco/components/src/components/NrEditor/nr-editor.vue'\nimport RiskReport from '../components/RiskReport'\nimport NrSelect from '@nextrequestco/components/src/components/NrSelect/nr-select.vue'\nimport { mapActions, mapState } from 'vuex'\nimport throttle from 'lodash/throttle'\nimport isObject from 'lodash/isObject'\n\nexport default {\n name: 'DocumentToolbar',\n components: {\n NrIcon,\n NrTooltip,\n NrModal,\n NrFormInput,\n RiskReport,\n 'nr-editor': NrEditor,\n NrSelect,\n NrFormLabel\n },\n props: {\n prettyId: {\n type: String,\n required: true\n },\n activeDocTitle: {\n type: String\n },\n selectedDocIds: {\n type: Array\n },\n selectedDocuments: {\n type: Array\n },\n documentFilterParams: {\n type: Object\n },\n documentsSelectedCount: {\n type: Number\n },\n selectAll: {\n type: Boolean\n }\n },\n data() {\n return {\n selectedFolder: null,\n shouldAddFolder: true,\n searchFolderTerm: '',\n selectedMessageTemplates: [],\n docTitle: '',\n docFolder: '',\n sendMessageToRequester: false,\n messageTemplateSearchTerm: '',\n selectedDocumentExpirationStatus: null,\n documentVisibilities: [\n { id: 'staff', label: 'Staff only' },\n { id: 'requester', label: 'Requester + staff' },\n { id: 'public', label: 'Public' }\n ],\n documentExpirationStatuses: [\n { id: 'true', label: 'Exempt from expungement' },\n { id: 'false', label: 'Mark for deletion' }\n ]\n }\n },\n watch: {\n activeDocTitle(title) {\n this.docTitle = title\n }\n },\n computed: {\n ...mapState('request_show', [\n 'selectedChangeDocVisibility',\n 'messageToRequester',\n 'documentsFolders',\n 'request',\n 'dataFetchState',\n 'currentAction',\n 'dataOptions',\n 'currentDocumentFilters'\n ]),\n\n ...mapState({\n hasDocPiiFeature: (state) =>\n state.account && state.account.pii_scan_feature_flag\n }),\n\n filteredMessageTemplates() {\n return this.dataOptions.message_templates.map((temp) => ({\n value: temp.id,\n label: temp.message_template_name,\n description: temp.message_template_description\n }))\n },\n folders() {\n return [{ id: -1, folder_name: 'No folder' }, ...this.documentsFolders]\n .map((folder) => ({\n value: folder.id,\n label: folder.folder_name\n }))\n .filter((folder) => {\n if (\n this.currentDocumentFilters &&\n this.currentDocumentFilters.folderless_docs\n ) {\n return folder.value !== -1\n } else {\n return true\n }\n })\n },\n\n isChangeVisiModalActive() {\n return this.currentAction === 'changeVisibility'\n },\n isMoveToFolderModalActive() {\n return this.currentAction === 'moveToFolder'\n },\n isDeleteModalActive() {\n return this.currentAction === 'docDelete'\n },\n isRenameDocModalActive() {\n return this.currentAction === 'docRename'\n },\n isChangeExpirationModalActive() {\n return this.currentAction === 'changeExpiration'\n },\n requesterOrPublicSelected() {\n return (\n this.selectedDocumentVisibility &&\n (this.selectedDocumentVisibility.id === 'requester' ||\n this.selectedDocumentVisibility.id === 'public')\n )\n },\n selectedDocumentVisibility: {\n set(val) {\n this.setSelectedChangeDocVisibility(val)\n },\n\n get() {\n return this.selectedChangeDocVisibility\n }\n },\n\n changeVisibilityMessage: {\n set(val) {\n this.setMessageToRequester(val)\n },\n\n get() {\n return this.messageToRequester\n }\n },\n disableDeleteSubmitBtn() {\n return !(this.documentsSelectedCount || this.selectAll)\n },\n disableSubmitVisibilityBtn() {\n const msgPresentWithNoCheckbox =\n (this.selectedDocumentVisibility.id === 'public' ||\n this.selectedDocumentVisibility.id === 'requester') &&\n this.messageToRequester.length &&\n !this.sendMessageToRequester\n const checkboxCheckedWithNoMsg =\n (this.selectedDocumentVisibility.id === 'public' ||\n this.selectedDocumentVisibility.id === 'requester') &&\n !this.messageToRequester.length &&\n this.sendMessageToRequester\n if (\n msgPresentWithNoCheckbox ||\n checkboxCheckedWithNoMsg ||\n !this.documentsSelectedCount ||\n this.selectedDocumentVisibility === ''\n ) {\n return true\n }\n return false\n },\n disableSubmitExpirationBtn() {\n return this.selectedDocumentExpirationStatus == null\n },\n setDocVisibilityConfirmText() {\n return this.messageToRequester.length ? 'Save and send message' : 'Save'\n },\n invalidDocTitle() {\n return !this.docTitle.length\n },\n isDocEmptyModalActive() {\n return this.currentAction === 'docEmpty'\n }\n },\n methods: {\n ...mapActions('documents', ['createFolder']),\n\n ...mapActions('request_show', [\n 'setSelectedChangeDocVisibility',\n 'setMessageToRequester',\n 'fetchDocumentsFolders',\n 'fetchDataOptions',\n 'setCurrentAction'\n ]),\n\n loadMoreMessageTemplates: throttle(function () {\n this.fetchDataOptions({\n searchText: this.dataFetchState.message_templates.search_text,\n dataType: 'message_templates'\n })\n }, 400),\n onDeleteSubmit() {\n this.$emit('on-doc-delete-submit')\n this.setCurrentAction('')\n },\n onDocRenameSubmit() {\n this.$emit('on-doc-rename-submit', this.docTitle)\n this.setCurrentAction('')\n },\n closeMoveToFolder() {\n this.setCurrentAction('')\n this.selectedFolder = null\n },\n\n async handleFolderAdd(val) {\n if (val) {\n // When options array is empty, val will be a string\n const label = isObject(val) ? val.label : val\n try {\n const { id: value } = await this.createFolder(label)\n this.selectedFolder = { label, value }\n } catch (_error) {\n this.selectedFolder = null\n }\n } else {\n this.selectedFolder = val\n }\n },\n\n handleTypingFolderSearch: throttle(function (val) {\n this.fetchDocumentsFolders({\n request_id: this.prettyId,\n search_text: val\n })\n }, 400),\n moveToFolder() {\n this.setCurrentAction('')\n\n this.$emit('on-move-to-folder-submit', {\n name: this.selectedFolder && this.selectedFolder.label,\n folder_id: this.selectedFolder && this.selectedFolder.value\n })\n\n this.selectedFolder = null\n this.searchFolderTerm = ''\n },\n searchMessageTemplates: throttle(function (searchText = '') {\n this.fetchDataOptions({ searchText, dataType: 'message_templates' })\n }, 400),\n clearVisibilityModalFields() {\n this.selectedMessageTemplates = []\n this.sendMessageToRequester = false\n this.changeVisibilityMessage = ''\n this.selectedDocumentVisibility = ''\n this.setMessageToRequester('')\n this.setCurrentAction('')\n },\n clearExpirationModalFields() {\n this.selectedDocumentExpirationStatus = null\n this.setCurrentAction('')\n },\n setMessageTemplate() {\n this.changeVisibilityMessage = this.selectedMessageTemplates\n .map((temp) => temp.description)\n .join('')\n },\n updateDocVisibility() {\n if (!this.disableSubmitVisibilityBtn) {\n this.$emit('on-visibility-submit', {\n selectedDocumentVisibility: this.selectedDocumentVisibility.id,\n messageToRequester: this.messageToRequester,\n messageTemplateIds: this.selectedMessageTemplates.map(\n (template) => template.value\n )\n })\n this.setCurrentAction('')\n } else {\n this.$toasted.error(\n 'Please select a visibility and/or attach a message and select required checkbox'\n )\n }\n },\n updateDocExpirationStatus() {\n this.$emit('on-expiration-submit', {\n selectedDocumentExpirationStatus:\n this.selectedDocumentExpirationStatus.id\n })\n this.setCurrentAction('')\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n@import '@nextrequestco/components/src/styles/colors.scss';\n.modal.visibility-form {\n max-height: 100vh;\n overflow-y: scroll;\n -webkit-overflow-scrolling: touch;\n\n .modal-background {\n position: fixed;\n }\n}\n.doc-delete-modal {\n .nr-modal__header {\n background-color: $red;\n .nr-modal__title {\n color: $white;\n }\n }\n .nr-modal__footer {\n .modal__btn-primary {\n background-color: $red;\n }\n }\n}\n\n.nr-tooltip.inline {\n display: inline-block;\n}\n\n.inline-icon {\n display: inline-block;\n vertical-align: middle;\n}\n</style>\n","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, withCtx as _withCtx, createBlock as _createBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5e758fa6\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"risk-report\" }\nconst _hoisted_2 = [\"aria-expanded\"]\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \"Risk Report\", -1))\nconst _hoisted_4 = { class: \"risk-report-row\" }\nconst _hoisted_5 = { class: \"is-size-6\" }\nconst _hoisted_6 = { class: \"risk-report-row\" }\nconst _hoisted_7 = { class: \"is-size-6\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrIcon = _resolveComponent(\"NrIcon\")!\n const _component_nr_tag = _resolveComponent(\"nr-tag\")!\n const _component_NrCard = _resolveComponent(\"NrCard\")!\n const _component_NrBar = _resolveComponent(\"NrBar\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"a\", {\n href: \"#risk-report-detail\",\n class: \"is-flex\",\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => ($options.toggleOpen && $options.toggleOpen(...args))),\n \"aria-expanded\": $data.isOpen.toString(),\n \"aria-controls\": \"risk-report-detail\"\n }, [\n _hoisted_3,\n _createVNode(_component_NrIcon, {\n name: $data.isOpen ? 'chevron-down' : 'chevron-up',\n class: \"m-left-4 align-center\"\n }, null, 8, [\"name\"])\n ], 8, _hoisted_2),\n _createElementVNode(\"div\", {\n id: \"risk-report-detail\",\n class: _normalizeClass($data.isOpen ? '' : 'is-hidden')\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.severityData, (item, index) => {\n return (_openBlock(), _createBlock(_component_NrCard, {\n key: `card-${index}-${item.value}`,\n class: \"is-inline-flex\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"strong\", _hoisted_5, _toDisplayString(item.label), 1),\n _createVNode(_component_nr_tag, {\n class: \"card-tag\",\n label: `${item.value.toLocaleString('en-US')}`,\n \"tag-color\": item.active_color,\n size: \"normal\",\n badge: true\n }, null, 8, [\"label\", \"tag-color\"])\n ]),\n _: 2\n }, 1024))\n }), 128)),\n _createVNode(_component_NrBar, { values: $options.severityData }, null, 8, [\"values\"])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.reviewStatusData, (item, index) => {\n return (_openBlock(), _createBlock(_component_NrCard, {\n key: `card-${index}-${item.value}`,\n class: \"is-inline-flex\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"strong\", _hoisted_7, _toDisplayString(item.label), 1),\n _createVNode(_component_nr_tag, {\n class: \"card-tag\",\n label: `${item.value.toLocaleString('en-US')}`,\n \"tag-color\": item.active_color,\n size: \"normal\",\n badge: true\n }, null, 8, [\"label\", \"tag-color\"])\n ]),\n _: 2\n }, 1024))\n }), 128)),\n _createVNode(_component_NrBar, { values: $options.reviewStatusData }, null, 8, [\"values\"])\n ])\n ], 2)\n ]))\n}","\n/* eslint-disable camelcase */\nimport NrBar from '@nextrequestco/components/src/components/NrBar/NrBar.vue'\nimport NrCard from '@nextrequestco/components/src/components/NrCard/NrCard.vue'\nimport NrIcon from '@nextrequestco/components/src/components/NrIcon/NrIcon.vue'\nimport NrTag from '@nextrequestco/components/src/components/NrTag/NrTag.vue'\nimport { mapActions, mapState } from 'vuex'\nimport {\n DocumentSeverity,\n humanizedSeverityStatus,\n severityStatusColor,\n severityStatusBgColor\n} from '../../admin/document_severity_status'\nimport {\n DocumentReviewStatus,\n humanizedReviewStatus,\n reviewStatusColor,\n reviewStatusBgColor\n} from '../../admin/document_review_status'\n\nexport default {\n name: 'RiskReport',\n components: {\n NrBar,\n NrCard,\n NrIcon,\n 'nr-tag': NrTag\n },\n props: {\n documents: {\n type: Array,\n default: () => []\n },\n filterParams: {\n type: Object,\n default: () => ({})\n },\n selectAll: {\n type: Boolean,\n default: () => false\n }\n },\n mounted() {\n if (this.selectAll) {\n this.fetchRequestDocumentRisk(this.filterParams)\n }\n },\n data() {\n return {\n isOpen: true\n }\n },\n computed: {\n ...mapState('request_show', ['request', 'requestDocumentRisk']),\n documentRiskCounts() {\n return {\n high: this.requestDocumentRisk.high_severity || 0,\n medium: this.requestDocumentRisk.medium_severity || 0,\n low: this.requestDocumentRisk.low_severity || 0,\n na: this.requestDocumentRisk.unscannable || 0,\n pending:\n (this.requestDocumentRisk.total_documents || 0) -\n (this.requestDocumentRisk.total_scanned || 0),\n reviewed: this.requestDocumentRisk.reviewed || 0,\n needs_review: this.requestDocumentRisk.needs_review || 0\n }\n },\n severityData() {\n const severities: (DocumentSeverity | null)[] = [\n 'high',\n 'medium',\n 'low',\n 'na',\n null\n ]\n return severities.map((severity) => {\n let value\n if (this.selectAll) {\n value = this.documentRiskCounts[severity || 'pending']\n } else {\n value = this.documents.filter(\n ({ document_scan: { severity: docSeverity } }) =>\n docSeverity === severity\n ).length\n }\n return {\n label: humanizedSeverityStatus(severity),\n color: severityStatusBgColor(severity),\n active_color: severityStatusColor(severity),\n value\n }\n })\n },\n reviewStatusData() {\n const reviewed = this.documents.filter(\n ({ document_scan: { review_status } }) => review_status === 'reviewed'\n ).length\n const statuses: DocumentReviewStatus[] = ['needs_review', 'reviewed']\n return statuses.map((status) => {\n let value\n if (this.selectAll) {\n value = this.documentRiskCounts[status] || 0\n } else {\n value =\n status === 'reviewed' ? reviewed : this.documents.length - reviewed\n }\n return {\n label: humanizedReviewStatus(status),\n color: reviewStatusBgColor(status),\n active_color: reviewStatusColor(status),\n value\n }\n })\n }\n },\n methods: {\n ...mapActions('request_show', ['fetchRequestDocumentRisk']),\n toggleOpen() {\n this.isOpen = !this.isOpen\n }\n }\n}\n","import { render } from \"./RiskReport.vue?vue&type=template&id=5e758fa6&scoped=true&ts=true\"\nimport script from \"./RiskReport.vue?vue&type=script&lang=ts\"\nexport * from \"./RiskReport.vue?vue&type=script&lang=ts\"\n\nimport \"./RiskReport.vue?vue&type=style&index=0&id=5e758fa6&scoped=true&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5e758fa6\"]])\n\nexport default __exports__","import { render } from \"./DocumentTools.vue?vue&type=template&id=7f947e6b\"\nimport script from \"./DocumentTools.vue?vue&type=script&lang=js\"\nexport * from \"./DocumentTools.vue?vue&type=script&lang=js\"\n\nimport \"./DocumentTools.vue?vue&type=style&index=0&id=7f947e6b&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div :class=\"showFolderFilter ? 'folders-column' : 'is-hidden'\">\n <p class=\"folders-header has-text-weight-semibold is-size-5\">Folders</p>\n <NrFormInput\n class=\"folders-search\"\n placeholder=\"filter by folder name\"\n label=\"Filter by folder name\"\n v-model=\"folderSearchTerm\"\n />\n <div class=\"documents-folders\">\n <NrButton\n class=\"is-size-7\"\n variant=\"minimal-neutral\"\n @click=\"\n $emit('filter-by-folder', {\n activeId: 'all',\n type: 'all',\n folderName: 'All Documents'\n })\n \"\n :class=\"getActiveFolder('all')\"\n aria-label=\"Filter by all documents\"\n >\n All Documents\n </NrButton>\n </div>\n <div class=\"documents-folders\">\n <NrButton\n class=\"is-size-7\"\n variant=\"minimal-neutral\"\n @click=\"\n $emit('filter-by-folder', {\n activeId: 'nofolder',\n type: 'nofolder',\n folderName: 'Documents not in folders'\n })\n \"\n :class=\"getActiveFolder('nofolder')\"\n aria-label=\"Filter by documents not in folders\"\n >\n Documents not in folders\n </NrButton>\n </div>\n <div v-if=\"!folders.length\" class=\"empty-state\">\n <p\n class=\"conditional\"\n v-if=\"!folders.length && folderSearchTerm.length > 2\"\n >\n No folders found with the name \"{{ folderSearchTerm }}\" on this request\n </p>\n </div>\n <div class=\"documents-folders-container\">\n <div\n class=\"documents-folders\"\n :key=\"index\"\n v-for=\"(folder, index) in folders\"\n >\n <ParentFolderListItem\n :folder=\"folder\"\n :index=\"index\"\n :folder-opened=\"foldersOpened.includes(index)\"\n :active-folder=\"activeFolder === `${folder.id}`\"\n @filter-by-folder=\"filterByFolder\"\n @rename-folder=\"renameFolder\"\n @open-folder=\"openFolder\"\n />\n <div v-show=\"foldersOpened.includes(index)\" class=\"folder-content\">\n <ChildFolderListItem\n class=\"folder-content-item\"\n v-for=\"(subfolder, index) in folder.folders\"\n :key=\"index\"\n :subfolder=\"subfolder\"\n :parent-folder-id=\"folder.id\"\n :active-folder=\"activeFolder === `${folder.id}${subfolder.id}`\"\n @filter-by-folder=\"filterByFolder\"\n @rename-folder=\"renameFolder\"\n />\n <NrButton\n v-if=\"existingChildFolders(folder) >= folderLimit\"\n @click=\"incrementChildPageNum(folder)\"\n variant=\"minimal-neutral\"\n size=\"small\"\n class=\"show-more\"\n >\n show more\n </NrButton>\n </div>\n </div>\n <NrButton\n v-if=\"folders.length < totalDocumentsFoldersCount\"\n @click=\"incrementPageNum\"\n class=\"show-more\"\n size=\"small\"\n variant=\"minimal-neutral\"\n >\n show more\n </NrButton>\n </div>\n </div>\n</template>\n\n<script>\nimport NrButton from '@nextrequestco/components/src/components/NrButton/nr-button.vue'\nimport ParentFolderListItem from '../components/ParentFolderListItem.vue'\nimport ChildFolderListItem from '../components/ChildFolderListItem'\nimport NrFormInput from '@nextrequestco/components/src/components/NrFormInput/nr-form-input.vue'\nimport { mapGetters } from 'vuex'\n\nexport default {\n title: 'Execution/DocumentTab',\n components: {\n NrButton,\n NrFormInput,\n ParentFolderListItem,\n ChildFolderListItem\n },\n emits: [\n 'update:modelValue',\n 'show-more',\n 'child-show-more',\n 'filter-by-folder',\n 'open-folder',\n 'rename-folder'\n ],\n props: {\n activeFolder: {\n type: [String, Number],\n default: 'all'\n },\n foldersOpened: {\n type: Array,\n default: () => []\n },\n limit: {\n type: Number\n },\n folders: {\n type: Array\n },\n showFolderFilter: {\n type: Boolean,\n default: true\n },\n // Folder search term.\n modelValue: {\n type: String\n }\n },\n data() {\n return {\n filteredFolder: '',\n pageNum: 1,\n childPageNum: 1\n }\n },\n computed: {\n ...mapGetters('request_show', [\n 'folderLimit',\n 'totalDocumentsFoldersCount'\n ]),\n\n folderSearchTerm: {\n get() {\n return this.modelValue\n },\n set(val) {\n this.$emit('update:modelValue', val)\n }\n }\n },\n watch: {\n folders(value) {\n // Reset page number if query options change\n if (value.length <= this.limit) {\n this.pageNum = 1\n }\n }\n },\n methods: {\n getActiveFolder(id) {\n return this.activeFolder === id\n ? 'folder-button folder-button-active'\n : 'folder-button'\n },\n existingChildFolders(folder) {\n return folder.folders && folder.folders.length ? folder.folders.length : 0\n },\n incrementPageNum() {\n this.pageNum += 1\n this.$emit('show-more', this.pageNum)\n },\n incrementChildPageNum(folder) {\n this.childPageNum += 1\n const params = {\n childPageNum: this.childPageNum,\n parent_folder_id: folder.id\n }\n this.$emit('child-show-more', params)\n },\n filterByFolder(val) {\n this.$emit('filter-by-folder', val)\n },\n openFolder(val) {\n this.$emit('open-folder', val)\n },\n renameFolder(val) {\n this.$emit('rename-folder', val)\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n@import '@nextrequestco/components/src/styles/tokens/tokens.scss';\n.folders-column {\n background: #f4f4f6;\n min-width: 280px;\n max-width: 280px;\n max-height: 2940px;\n padding: 0;\n .empty-state {\n font-size: 12px;\n padding: 8px;\n .conditional {\n padding-top: 18px;\n padding-bottom: 18px;\n color: #6e6e87;\n }\n }\n .folders-header {\n padding: 4px 8px;\n }\n .folders-search {\n padding: 8px;\n }\n .folders-subheader {\n padding: 6px 8px;\n }\n .documents-folders-container {\n overflow-y: auto;\n height: 2784px;\n &::-webkit-scrollbar {\n width: 2px;\n }\n -ms-overflow-style: none; /* Hide in IE since we can't manually adjust the scrollbar width */\n &::-webkit-scrollbar-thumb {\n background-color: darkgrey;\n outline: 1px solid slategrey;\n }\n }\n .documents-folders {\n width: 100%;\n padding: 6px 8px 4px 8px;\n .folder-button {\n padding-right: 4px;\n padding-left: 4px;\n text-decoration: none;\n width: 100%;\n text-align: left;\n display: flex;\n justify-content: space-between;\n &-no-edit-name {\n justify-content: normal;\n .folder-row__title {\n max-width: 100%;\n .parent-folder-name {\n max-width: 190px;\n }\n }\n }\n &.folder-button-active {\n background-color: white;\n .folder-row-buttons {\n background-color: white;\n }\n &:hover {\n .folder-row-buttons {\n background-color: #ebebef;\n &:focus-within {\n background-color: #ebebef;\n }\n }\n }\n }\n &:not(&.folder-button-active) {\n &:hover {\n .folder-row-buttons {\n background-color: #ebebef;\n }\n }\n }\n .nr-button__label {\n margin-left: 8px;\n }\n\n .parent-folder-name,\n .child-folder-name,\n .caret,\n .folder {\n display: inline-block;\n position: relative;\n margin-right: $spacing-4;\n }\n .parent-folder-name {\n vertical-align: bottom;\n max-width: 16.25em;\n }\n .top-level-document {\n top: -10px;\n margin-left: 8px;\n max-width: 185px;\n }\n\n .folder-row-buttons {\n min-width: auto;\n padding-right: 4px;\n padding-left: 4px;\n\n &.has-child-folders {\n max-width: 100%;\n }\n &.folder-row__title {\n text-decoration: none;\n text-align: left;\n }\n }\n\n .folder-row__title {\n flex: 1;\n justify-content: flex-start;\n }\n\n .folder-row-with-icon {\n max-width: 160px;\n }\n .folder-row-without-icon {\n max-width: 185px;\n }\n .parent-folder-row-with-caret-icon {\n max-width: 155px;\n }\n &:hover {\n background: #ebebef;\n }\n }\n\n .folder-content {\n .folder-button {\n padding-left: 8px;\n .folder-row-buttons {\n text-decoration: none;\n .child-folder-name {\n top: 0;\n vertical-align: bottom;\n }\n }\n }\n }\n .folder-button-active {\n background: white;\n }\n }\n\n .show-more {\n margin-left: 6px;\n }\n\n .caret-button-reset,\n .rename-button-reset {\n border: none;\n padding: 0;\n margin: 0;\n height: 10px;\n background: transparent;\n &:focus {\n outline: none;\n }\n }\n}\n</style>\n","<template>\n <div :class=\"applyActiveFolderStyle\">\n <NrIconButton\n :aria-label=\"`Toggle subfolders for folder ${folder.folder_name}`\"\n @click=\"$emit('open-folder', { index, id: folder.id })\"\n v-if=\"folder.has_child_folders\"\n :icon=\"{ name: getCaret, type: 'regular' }\"\n variant=\"minimal-neutral\"\n class=\"folder-row-buttons\"\n />\n <NrButton\n :aria-label=\"`Filter by folder ${folder.folder_name}`\"\n :class=\"[\n 'folder-row-buttons',\n 'folder-row__title',\n { 'has-child-folders': !!folder.has_child_folders }\n ]\"\n variant=\"minimal-neutral\"\n @click=\"filterByFolder\"\n >\n <NrIcon class=\"folder\" name=\"folder\" />\n <div\n :class=\"`${\n folder.has_child_folders && $can('read', 'publisher_only_items')\n ? 'parent-folder-row-with-caret-icon'\n : ''\n } parent-folder-name is-size-7`\"\n >\n {{ truncateParentFolderName(folder.folder_name) }}\n </div>\n </NrButton>\n <NrIconButton\n v-if=\"$can('read', 'staff_only_items')\"\n @click=\"renameFolder\"\n variant=\"minimal-neutral\"\n size=\"small\"\n :icon=\"{ name: 'pencil-alt', type: 'regular' }\"\n class=\"edit-folder-button folder-row-buttons\"\n :aria-label=\"`Rename folder ${folder.folder_name}`\"\n />\n </div>\n</template>\n\n<script>\nimport NrButton from '@nextrequestco/components/src/components/NrButton/nr-button.vue'\nimport NrIcon from '@nextrequestco/components/src/components/NrIcon/NrIcon.vue'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport truncate from 'lodash/truncate'\n\nexport default {\n props: {\n folder: {\n type: Object\n },\n index: {\n type: Number\n },\n activeFolder: {\n type: Boolean\n },\n folderOpened: {\n type: Boolean\n }\n },\n\n components: {\n NrButton,\n NrIconButton,\n NrIcon\n },\n\n computed: {\n applyActiveFolderStyle() {\n return {\n 'folder-button folder-button-active': this.activeFolder,\n 'folder-button-no-edit-name': !this.$can(\n 'read',\n 'publisher_only_items'\n ),\n 'folder-button': true\n }\n },\n\n getCaret() {\n return this.folderOpened ? 'caret-down' : 'caret-right'\n }\n },\n\n methods: {\n truncateParentFolderName(folderName) {\n return truncate(folderName, { length: 28 })\n },\n\n filterByFolder() {\n this.$emit('filter-by-folder', {\n parent_folder_id: this.folder.id,\n activeId: `${this.folder.id}`,\n type: 'top folder',\n folderName: this.folder.folder_name\n })\n },\n renameFolder() {\n this.filterByFolder()\n this.$emit('rename-folder', this.folder.folder_name)\n }\n }\n}\n</script>\n","import { render } from \"./ParentFolderListItem.vue?vue&type=template&id=66ce29e3\"\nimport script from \"./ParentFolderListItem.vue?vue&type=script&lang=js\"\nexport * from \"./ParentFolderListItem.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div :class=\"applyActiveFolderStyle\">\n <NrButton\n class=\"folder-row-buttons\"\n variant=\"minimal-neutral\"\n @click=\"filterByFolder\"\n :aria-label=\"`Filter by subfolder ${subfolder.child_folder_name}`\"\n >\n <NrIcon class=\"folder\" name=\"folder\" />\n <div\n :class=\"`${\n showChildFolderRename\n ? 'folder-row-with-icon'\n : 'folder-row-without-icon'\n } child-folder-name is-size-7 t--overflow-ellipsis`\"\n >\n {{ subfolder.child_folder_name }}\n </div>\n </NrButton>\n <NrIconButton\n v-if=\"$can('read', 'staff_only_items')\"\n class=\"edit-folder-button folder-row-buttons\"\n variant=\"minimal-neutral\"\n :icon=\"{ name: 'pencil-alt', type: 'regular' }\"\n size=\"small\"\n @click=\"renameFolder\"\n :aria-label=\"`Rename subfolder ${subfolder.child_folder_name}`\"\n />\n </div>\n</template>\n\n<script>\nimport NrButton from '@nextrequestco/components/src/components/NrButton/nr-button.vue'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrIcon from '@nextrequestco/components/src/components/NrIcon/NrIcon.vue'\n\nexport default {\n props: {\n subfolder: {\n type: Object\n },\n parentFolderId: {\n type: Number\n },\n activeFolder: {\n type: Boolean\n }\n },\n\n components: {\n NrIcon,\n NrIconButton,\n NrButton\n },\n\n data() {\n return {\n showChildFolderRename: false\n }\n },\n\n computed: {\n applyActiveFolderStyle() {\n return [\n 'folder-button--child-folder',\n 'folder-button',\n {\n 'folder-button-active': this.activeFolder\n }\n ]\n }\n },\n\n methods: {\n filterByFolder() {\n this.$emit('filter-by-folder', {\n parent_folder_id: this.parentFolderId,\n child_folder_id: this.subfolder.id,\n activeId: `${this.parentFolderId}${this.subfolder.id}`,\n type: 'subfolder',\n folderName: this.subfolder.child_folder_name\n })\n },\n\n renameFolder() {\n this.filterByFolder()\n this.$emit('rename-folder', this.subfolder.child_folder_name)\n }\n }\n}\n</script>\n","import { render } from \"./ChildFolderListItem.vue?vue&type=template&id=70c93616\"\nimport script from \"./ChildFolderListItem.vue?vue&type=script&lang=js\"\nexport * from \"./ChildFolderListItem.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./FoldersSidebar.vue?vue&type=template&id=3d688cd3\"\nimport script from \"./FoldersSidebar.vue?vue&type=script&lang=js\"\nexport * from \"./FoldersSidebar.vue?vue&type=script&lang=js\"\n\nimport \"./FoldersSidebar.vue?vue&type=style&index=0&id=3d688cd3&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"document-card-actions-rs\">\n <NrIconButton\n v-if=\"canSeeChangeVisibilityAction\"\n aria-label=\"Change visibility\"\n :icon=\"{ name: 'eye', type: 'regular' }\"\n variant=\"minimal-neutral\"\n @click=\"$emit('on-visibility', id)\"\n />\n\n <NrIconButton\n v-if=\"canSeeDownloadAction\"\n aria-label=\"Download\"\n variant=\"minimal-neutral\"\n :icon=\"{ name: 'download', type: 'regular' }\"\n @click=\"$emit('on-download', id)\"\n />\n\n <NrIconButton\n v-if=\"canSeeMoreActions\"\n aria-label=\"Menu\"\n :aria-expanded=\"showMoreItems\"\n :aria-controls=\"`document-card-show-more-${id}`\"\n :icon=\"{ name: 'ellipsis-h', type: 'regular' }\"\n variant=\"minimal-neutral\"\n @click=\"showMore\"\n />\n\n <div\n v-if=\"canSeeMoreActions\"\n v-show=\"showMoreItems\"\n :id=\"`document-card-show-more-${id}`\"\n class=\"show-more-dropdown\"\n >\n <div v-if=\"canSeeMoveToFolderAction\">\n <NrButton\n class=\"show-more-action-button\"\n variant=\"minimal-neutral\"\n @click=\"$emit('on-move', id)\"\n >\n <NrIcon name=\"folder\" />\n <span>Move to folder</span>\n </NrButton>\n </div>\n\n <div v-if=\"canSeeRedactAction\">\n <NrButton\n class=\"show-more-action-button\"\n variant=\"minimal-neutral\"\n @click=\"$emit('on-redact', id)\"\n >\n <NrIcon name=\"wrench\" />\n <span>Redact file</span>\n </NrButton>\n </div>\n\n <div v-if=\"canSeeRenameAction\">\n <NrButton\n class=\"show-more-action-button\"\n variant=\"minimal-neutral\"\n @click=\"$emit('on-edit', id)\"\n >\n <NrIcon name=\"pencil-alt\" />\n <span>Rename file</span>\n </NrButton>\n </div>\n\n <div v-if=\"canSeeDeleteAction\">\n <NrButton\n class=\"show-more-action-button\"\n variant=\"minimal-neutral\"\n @click=\"$emit('on-delete', id)\"\n >\n <NrIcon name=\"trash-alt\" />\n <span>Delete file</span>\n </NrButton>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport NrIcon from '@nextrequestco/components/src/components/NrIcon/NrIcon.vue'\nimport NrButton from '@nextrequestco/components/src/components/NrButton/nr-button'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\n\nexport default {\n name: 'DocumentCard',\n components: { NrIcon, NrButton, NrIconButton },\n props: {\n highlight: {\n type: String,\n default: 'default'\n },\n id: {\n type: Number\n },\n canSeeDownloadAction: {\n type: Boolean,\n default: false\n },\n canSeeChangeVisibilityAction: {\n type: Boolean,\n default: false\n },\n canSeeDeleteAction: {\n type: Boolean,\n default: false\n },\n canSeeMoveToFolderAction: {\n type: Boolean,\n default: false\n },\n canSeeRedactAction: {\n type: Boolean,\n default: false\n },\n canSeeRenameAction: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n showMoreItems: false\n }\n },\n computed: {\n canSeeMoreActions() {\n return (\n this.canSeeMoveToFolderAction ||\n this.canSeeRedactAction ||\n this.canSeeRenameAction ||\n this.canSeeDeleteAction\n )\n }\n },\n methods: {\n showMore() {\n this.showMoreItems = !this.showMoreItems\n this.$emit('show-more')\n },\n handleBlur() {\n setTimeout(() => {\n this.showMoreItems = false\n }, 200)\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.document-card-actions-rs {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n align-self: center;\n .show-more-dropdown {\n background: white;\n position: absolute;\n z-index: 2;\n top: calc(100% + 8px);\n right: 0;\n border: 1px solid #d8d8df;\n border-radius: 4px;\n width: 170px;\n .show-more-action-button {\n display: inline-flex;\n text-decoration: none;\n padding: 4px;\n width: 100%;\n .nr-icon {\n margin-top: 4px;\n margin-right: 4px;\n }\n }\n }\n}\n</style>\n","import { render } from \"./DocumentCardActions.vue?vue&type=template&id=bfb283b2\"\nimport script from \"./DocumentCardActions.vue?vue&type=script&lang=js\"\nexport * from \"./DocumentCardActions.vue?vue&type=script&lang=js\"\n\nimport \"./DocumentCardActions.vue?vue&type=style&index=0&id=bfb283b2&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./DocumentsTab.vue?vue&type=template&id=3f9c65ac&scoped=true\"\nimport script from \"./DocumentsTab.vue?vue&type=script&lang=js\"\nexport * from \"./DocumentsTab.vue?vue&type=script&lang=js\"\n\nimport \"./DocumentsTab.vue?vue&type=style&index=0&id=3f9c65ac&lang=scss&scoped=true\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3f9c65ac\"]])\n\nexport default __exports__","<template>\n <div class=\"tasks-tab-container\">\n <div v-if=\"!filteredRequestLoading\">\n <div class=\"tasks-tab-dropdowns\">\n <div class=\"tasks-tab-assignee\">\n <NrSelect\n v-model=\"assigneeFilter\"\n :clearable=\"false\"\n :hideLabel=\"true\"\n :options=\"requestStaffList\"\n @option:selected=\"handleSelectedTaskFilter('assignee')\"\n >\n <template v-slot:label>Filter tasks by assignee</template>\n </NrSelect>\n </div>\n <div class=\"tasks-tab-status\">\n <NrSelect\n v-model=\"tasksStatusFilter\"\n :clearable=\"false\"\n :hideLabel=\"true\"\n :options=\"taskStatuses\"\n @option:selected=\"handleSelectedTaskFilter('status')\"\n >\n <template v-slot:label>Filter tasks by status</template>\n </NrSelect>\n </div>\n </div>\n <div v-if=\"!tasks.length\">\n <p class=\"tasks-tab-empty-message\">\n {{ statusEmptyMessage }}\n </p>\n </div>\n <div v-if=\"tasks.length\">\n <NrTaskCard\n v-for=\"task in tasks\"\n :with-icons=\"true\"\n :key=\"task.id\"\n :status=\"task.status\"\n :id=\"task.id\"\n :identifier=\"task.user.name_with_email\"\n :date=\"taskDateByStatus(task)\"\n :hasActionPermission=\"$can('read', 'staff_only_items')\"\n @handle-edit=\"handleEditTask\"\n @handle-delete=\"handleDeleteTask\"\n @handle-complete=\"handleTaskCompletion\"\n >\n <!-- task.description is sanitized on the backend: https://github.com/nextrequest/nextrequest/blob/726ba59/app/views/client/tasks/index.json.jbuilder#L11 -->\n <span v-html=\"task.description\"></span>\n </NrTaskCard>\n <NrModal\n class=\"tasks-tab-delete-modal\"\n title=\"Delete task\"\n primary-button-text=\"Delete\"\n :show=\"showDeleteTaskModal\"\n hasSecondaryButton\n @on-primary-click=\"confirmTaskDelete\"\n @on-close-click=\"handleCloseTaskDelete\"\n @on-secondary-click=\"handleCloseTaskDelete\"\n >\n <p>\n You are about to delete a task. This action cannot be undone. Do you\n want to continue?\n </p>\n </NrModal>\n </div>\n <div class=\"tasks-tab-pagination\" v-if=\"tasks.length\">\n <NrPagination\n :total=\"currentRequestTasksCount\"\n :current=\"tasksPageNum\"\n :per-page=\"tasksPerPage\"\n aria-next-label=\"Next page\"\n aria-previous-label=\"Previous page\"\n aria-page-label=\"Page\"\n aria-current-label=\"Current page\"\n @change=\"setPageNum\"\n />\n </div>\n </div>\n <NrLoadingAnimation v-else :count=\"3\" />\n </div>\n</template>\n<script>\nimport NrSelect from '@nextrequestco/components/src/components/NrSelect/nr-select.vue'\nimport NrTaskCard from '@nextrequestco/components/src/components/NrTaskCard/nr-task-card.vue'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrLoadingAnimation from '@nextrequestco/components/src/components/NrLoadingAnimation/nr-loading-animation.vue'\nimport NrPagination from '@nextrequestco/components/src/components/NrPagination/nr-pagination.vue'\nimport { mapGetters, mapActions, mapState } from 'vuex'\nimport { uniqBy } from 'lodash'\nconst DEFAULT_ASSIGNEE = { id: 0, label: 'All assignees' }\nconst DEFAULT_STATUS = { id: 'all_tasks', label: 'All tasks' }\nexport default {\n name: 'TaskTab',\n components: {\n NrSelect,\n NrTaskCard,\n NrModal,\n NrLoadingAnimation,\n NrPagination\n },\n props: {\n tasks: {\n type: Array\n },\n timelineFilters: {\n type: Array\n },\n currentTimelinePageNum: {\n type: Number\n }\n },\n data() {\n return {\n assigneeFilter: DEFAULT_ASSIGNEE,\n currentTaskStatus: '',\n currentAssignee: '',\n taskToDelete: null,\n tasksPerPage: 25,\n statusType: null,\n assigneeUser: null,\n showDeleteTaskModal: false,\n currentTasksPageNum: 1,\n tasksStatusFilter: DEFAULT_STATUS\n }\n },\n\n watch: {\n tasksStatusFilter() {\n this.currentTasksPageNum = 1\n const { type, assignee, pageNumber } = this.tasksPayload()\n this.statusType = type\n this.assigneeUser = assignee ? this.assigneeFilter.label : null\n this.refreshTasks({ type, assignee, pageNumber })\n },\n assigneeFilter() {\n this.currentTasksPageNum = 1\n this.refreshTasks(this.tasksPayload())\n }\n },\n\n computed: {\n ...mapGetters('request_show', [\n 'requestStaff',\n 'request',\n 'currentRequestTasksCount'\n ]),\n\n ...mapState('request_show', ['filteredRequestLoading']),\n tasksPageNum: {\n set(tasksPageNum) {\n this.currentTasksPageNum = tasksPageNum\n this.refreshTasks(this.tasksPayload())\n },\n get() {\n return this.currentTasksPageNum\n }\n },\n taskStatuses() {\n return [\n { id: 'overdue', label: 'Overdue' },\n { id: 'complete', label: 'Complete' },\n { id: 'incomplete', label: 'Incomplete' },\n { id: 'due_soon', label: 'Due soon' },\n DEFAULT_STATUS\n ]\n },\n\n requestStaffList() {\n return uniqBy(\n [\n ...this.requestStaff.map((item) => {\n return {\n id: item.id,\n label: item.name_with_email\n }\n }),\n {\n id: this.request.poc.id,\n label: this.request.poc.name_with_email\n },\n DEFAULT_ASSIGNEE\n ],\n 'id'\n )\n },\n\n statusEmptyMessage() {\n let status = this.statusType\n const user = this.assigneeUser\n if (status === 'due_soon') {\n status = 'due soon'\n }\n if (!this.tasks.length && user && !status) {\n return `No tasks assigned to ${user} found on this request`\n } else if (!this.tasks.length && user && status) {\n return `No ${status} tasks assigned to ${user} found on this request`\n } else if (!this.tasks.length && !user && status) {\n return `No ${status} tasks found on this request`\n } else {\n return `No tasks found on this request`\n }\n }\n },\n\n methods: {\n ...mapActions('request_show', [\n 'editTask',\n 'editTaskCompletion',\n 'setDisplayCreateTaskMsgBox',\n 'setCurrentAction',\n 'setEditingTask',\n 'deleteTask',\n 'fetchTimeline',\n 'fetchRequestTasks'\n ]),\n\n setPageNum(tasksPageNum) {\n this.currentTasksPageNum = tasksPageNum\n this.refreshTasks(this.tasksPayload())\n },\n\n timelinePayload() {\n return {\n filters: this.timelineFilters,\n page_number: this.currentTimelinePageNum\n }\n },\n\n taskDateByStatus(task) {\n return task.status === 'Complete' ? task.completed_date : task.due_date\n },\n\n tasksPayload() {\n const assignee =\n this.assigneeFilter && this.assigneeFilter.id === 0\n ? null\n : this.assigneeFilter.id\n const type =\n this.tasksStatusFilter && this.tasksStatusFilter.id === 'all_tasks'\n ? null\n : this.tasksStatusFilter && this.tasksStatusFilter.id\n const pageNumber = this.currentTasksPageNum\n return {\n assignee,\n type,\n pageNumber\n }\n },\n\n handleCloseTaskDelete() {\n this.showDeleteTaskModal = false\n this.taskToDelete = null\n },\n\n confirmTaskDelete() {\n this.showDeleteTaskModal = false\n const payload = {\n task_id: this.taskToDelete,\n request_id: this.request.pretty_id\n }\n this.deleteTask(payload)\n .then(() => {\n this.refreshTimeline(this.timelinePayload())\n this.refreshTasks(this.tasksPayload())\n this.$toasted.success('Successfully deleted a task.')\n })\n .catch(() => {\n this.$toasted.error('An error has occurred while deleting a task.')\n })\n },\n refreshTasks(val) {\n this.fetchRequestTasks({\n pretty_id: this.request.pretty_id,\n params: {\n user_id: val.assignee,\n task_status: val.type,\n page_number: val.pageNumber\n }\n })\n },\n\n // eslint-disable-next-line camelcase\n refreshTimeline({ filters, page_number }) {\n const categories = filters.map((item) => item.label.toLowerCase())\n if (categories.includes('all timeline events')) {\n this.fetchTimeline({\n pretty_id: this.request.pretty_id,\n filter_categories: [\n 'messages',\n 'notes',\n 'documents',\n 'status',\n 'due date',\n 'tasks',\n 'staff',\n 'visibility',\n 'tags',\n 'invoices',\n 'hours'\n ],\n page_number\n })\n } else {\n this.fetchTimeline({\n pretty_id: this.request.pretty_id,\n filter_categories: categories,\n page_number\n })\n }\n },\n\n handleEditTask(val) {\n const taskToEdit = this.tasks.filter((item) => item.id === val)\n this.setEditingTask(taskToEdit[0])\n this.setCurrentAction('editingTask')\n this.setDisplayCreateTaskMsgBox({ display: true, type: 'edit' })\n },\n handleDeleteTask(val) {\n this.showDeleteTaskModal = true\n this.taskToDelete = val\n },\n handleTaskCompletion(val) {\n const taskToEdit = this.tasks.find((item) => item.id === val)\n const payload = {\n action_type: 'edit',\n completed: !taskToEdit.completed,\n request_id: this.request.pretty_id,\n task_id: val\n }\n this.editTaskCompletion(payload)\n },\n\n handleSelectedTaskFilter(val) {\n if (\n val === 'status' &&\n this.tasksStatusFilter.label === this.currentTaskStatus\n ) {\n this.tasksStatusFilter = {}\n this.currentTaskStatus = ''\n } else if (\n val === 'assignee' &&\n this.assigneeFilter.label === this.currentAssignee\n ) {\n this.assigneeFilter = DEFAULT_ASSIGNEE\n this.currentAssignee = ''\n } else {\n if (val === 'status') {\n this.currentTaskStatus = this.tasksStatusFilter.label\n } else if (val === 'assignee') {\n this.currentAssignee = this.assigneeFilter.label\n }\n }\n if (this.assigneeFilter.label === 'All assignees') {\n this.assigneeFilter = DEFAULT_ASSIGNEE\n this.currentAssignee = ''\n }\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n@import '@nextrequestco/components/src/styles/tokens/tokens.scss';\n.tasks-tab-container {\n .tasks-tab-empty-message {\n padding: $spacing-12;\n color: $color-gray-80;\n text-align: center;\n font-size: $font-size-5;\n }\n .tasks-tab-dropdowns {\n display: flex;\n padding: $spacing-8;\n .tasks-tab-assignee {\n flex: 2;\n margin-right: $spacing-8;\n }\n .tasks-tab-status {\n flex: 1;\n }\n }\n .tasks-tab-delete-modal {\n .nr-modal__header {\n background-color: $color-red-100;\n .nr-modal__title {\n color: $color-white;\n }\n }\n .nr-modal__footer {\n .modal__btn-primary {\n background-color: $color-red-100;\n }\n }\n }\n .tasks-tab-pagination {\n display: flex;\n justify-content: flex-end;\n padding: $spacing-12;\n }\n}\n</style>\n","import { render } from \"./TasksTab.vue?vue&type=template&id=ca011a6e\"\nimport script from \"./TasksTab.vue?vue&type=script&lang=js\"\nexport * from \"./TasksTab.vue?vue&type=script&lang=js\"\n\nimport \"./TasksTab.vue?vue&type=style&index=0&id=ca011a6e&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"invoice-cost-title\" }, \"Line item\", -1)\nconst _hoisted_2 = { class: \"invoice-cost-table\" }\nconst _hoisted_3 = { class: \"borderless-table\" }\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"thead\", null, [\n /*#__PURE__*/_createElementVNode(\"tr\", { class: \"invoice-cost-tr\" }, [\n /*#__PURE__*/_createElementVNode(\"th\", { scope: \"col\" }, \"Name\"),\n /*#__PURE__*/_createElementVNode(\"th\", { scope: \"col\" }, \"Cost per unit\"),\n /*#__PURE__*/_createElementVNode(\"th\", { scope: \"col\" }, \"Quantity\"),\n /*#__PURE__*/_createElementVNode(\"th\", {\n class: \"align-right\",\n scope: \"col\"\n }, \"Total cost\")\n ])\n], -1)\nconst _hoisted_5 = { key: 0 }\nconst _hoisted_6 = { key: 1 }\nconst _hoisted_7 = { class: \"align-right\" }\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"invoice-cost-title\" }, \"Staff hours\", -1)\nconst _hoisted_9 = { class: \"borderless-table\" }\nconst _hoisted_10 = /*#__PURE__*/_createElementVNode(\"tr\", null, [\n /*#__PURE__*/_createElementVNode(\"td\", { class: \"invoice-bold\" }, \"Name\"),\n /*#__PURE__*/_createElementVNode(\"td\", { class: \"invoice-bold\" }, \"Cost per hour\"),\n /*#__PURE__*/_createElementVNode(\"td\", { class: \"invoice-bold\" }, \"Quantity\"),\n /*#__PURE__*/_createElementVNode(\"td\", { class: \"align-right invoice-bold\" }, \"Total cost\")\n], -1)\nconst _hoisted_11 = { class: \"align-right\" }\nconst _hoisted_12 = { class: \"borderless-table\" }\nconst _hoisted_13 = /*#__PURE__*/_createElementVNode(\"td\", { class: \"invoice-bold\" }, \"Subtotal\", -1)\nconst _hoisted_14 = /*#__PURE__*/_createElementVNode(\"td\", null, null, -1)\nconst _hoisted_15 = /*#__PURE__*/_createElementVNode(\"td\", null, null, -1)\nconst _hoisted_16 = { class: \"align-right invoice-bold\" }\nconst _hoisted_17 = /*#__PURE__*/_createElementVNode(\"td\", null, null, -1)\nconst _hoisted_18 = /*#__PURE__*/_createElementVNode(\"td\", null, null, -1)\nconst _hoisted_19 = { class: \"align-right\" }\nconst _hoisted_20 = /*#__PURE__*/_createElementVNode(\"td\", null, null, -1)\nconst _hoisted_21 = /*#__PURE__*/_createElementVNode(\"td\", null, null, -1)\nconst _hoisted_22 = /*#__PURE__*/_createElementVNode(\"td\", null, null, -1)\nconst _hoisted_23 = { class: \"align-right invoice-bold\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrTooltip = _resolveComponent(\"NrTooltip\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"table\", _hoisted_3, [\n _hoisted_4,\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.lineItems, (lineItem, index) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `line-item-${lineItem.id}-${index}`\n }, [\n (lineItem.name?.length > 15)\n ? (_openBlock(), _createElementBlock(\"td\", _hoisted_5, [\n _createVNode(_component_NrTooltip, {\n label: lineItem.name\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString($options.truncate(lineItem.name, { length: 40 })), 1)\n ]),\n _: 2\n }, 1032, [\"label\"])\n ]))\n : (_openBlock(), _createElementBlock(\"td\", _hoisted_6, _toDisplayString(lineItem.name), 1)),\n _createElementVNode(\"td\", null, _toDisplayString($options.formatCost(lineItem.cost, 3) || '$0.00'), 1),\n _createElementVNode(\"td\", null, _toDisplayString(lineItem.quantity), 1),\n _createElementVNode(\"td\", _hoisted_7, _toDisplayString($options.formatCost(lineItem.cost * lineItem.quantity)), 1)\n ]))\n }), 128))\n ])\n ]),\n _hoisted_8,\n _createElementVNode(\"table\", _hoisted_9, [\n _createElementVNode(\"tbody\", null, [\n _hoisted_10,\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.staffHours, (hour, index) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `hour-${index}`\n }, [\n _createElementVNode(\"td\", null, _toDisplayString(hour.name), 1),\n _createElementVNode(\"td\", null, _toDisplayString($options.formatCost(hour.hourly_rate)), 1),\n _createElementVNode(\"td\", null, _toDisplayString(hour.staff_hours), 1),\n _createElementVNode(\"td\", _hoisted_11, _toDisplayString($options.formatCost(hour.staff_cost)), 1)\n ]))\n }), 128))\n ])\n ]),\n _createElementVNode(\"table\", _hoisted_12, [\n _createElementVNode(\"tbody\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_13,\n _hoisted_14,\n _hoisted_15,\n _createElementVNode(\"td\", _hoisted_16, _toDisplayString($options.formatCost($data.subtotalInvoiceAmount)), 1)\n ]),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.surcharges, (surcharge, index) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `surcharge-${index}`\n }, [\n _hoisted_17,\n _hoisted_18,\n _createElementVNode(\"td\", null, _toDisplayString($options.setSurchargeName(surcharge)), 1),\n _createElementVNode(\"td\", _hoisted_19, _toDisplayString($options.formatSurcharge(surcharge)), 1)\n ]))\n }), 128)),\n _createElementVNode(\"tr\", null, [\n _hoisted_20,\n _hoisted_21,\n _hoisted_22,\n _createElementVNode(\"td\", _hoisted_23, \" Total: \" + _toDisplayString($options.formatCost($props.totalAmount / 100)), 1)\n ])\n ])\n ])\n ])\n ], 64))\n}","\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport truncate from 'lodash/truncate'\nimport helpers from '../../../utils/helpers.js'\n\ninterface LineItemOption {\n name: string\n cost: number\n quantity: number\n description: string\n}\n\ninterface SurchargeOption {\n name: string\n amount: number\n cost_type: string // eslint-disable-line camelcase\n description: string\n}\n\ninterface StaffHourOption {\n name: string\n hourly_rate: number // eslint-disable-line camelcase\n staff_cost: number // eslint-disable-line camelcase\n staff_hours: string // eslint-disable-line camelcase\n}\n\nexport default {\n components: {\n NrTooltip\n },\n\n mounted() {\n this.calculateLineItems(this.lineItems)\n this.calculateStaffHours(this.staffHours)\n },\n\n methods: {\n truncate,\n\n setSurchargeName(surcharge: SurchargeOption): string {\n return surcharge.cost_type === 'percentage'\n ? `${surcharge?.name} (${surcharge?.amount}%)`\n : `${surcharge?.name}`\n },\n formatSurcharge(surcharge: SurchargeOption): number {\n const amount = surcharge?.amount\n return surcharge.cost_type === 'percentage'\n ? this.formatCost((amount / 100) * this.subtotalInvoiceAmount)\n : this.formatCost(Number(amount))\n },\n formatCost(cost: number, maximumFractionDigits: number = 2): string {\n return helpers.formatCost(cost, maximumFractionDigits)\n },\n calculateLineItems(lineItems): void {\n lineItems.forEach((lineItem: LineItemOption) => {\n const cost = Number(lineItem.cost) * lineItem.quantity\n this.subtotalInvoiceAmount +=\n Math.round((cost + Number.EPSILON) * 100) / 100\n })\n },\n calculateStaffHours(staffHours): void {\n staffHours.forEach((hour: StaffHourOption) => {\n this.subtotalInvoiceAmount += Number(hour.staff_cost)\n })\n }\n },\n\n props: {\n totalAmount: {\n type: Number,\n default() {\n return 0\n }\n },\n lineItems: {\n type: Array,\n default() {\n return []\n }\n },\n surcharges: {\n type: Array,\n default() {\n return []\n }\n },\n staffHours: {\n type: Array,\n default() {\n return []\n }\n }\n },\n\n data() {\n return {\n subtotalInvoiceAmount: 0\n }\n }\n}\n","import { render } from \"./InvoiceTimelineEvent.vue?vue&type=template&id=60c714d8&ts=true\"\nimport script from \"./InvoiceTimelineEvent.vue?vue&type=script&lang=ts\"\nexport * from \"./InvoiceTimelineEvent.vue?vue&type=script&lang=ts\"\n\nimport \"./InvoiceTimelineEvent.vue?vue&type=style&index=0&id=60c714d8&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./RequestTabs.vue?vue&type=template&id=de52efda\"\nimport script from \"./RequestTabs.vue?vue&type=script&lang=js\"\nexport * from \"./RequestTabs.vue?vue&type=script&lang=js\"\n\nimport \"./RequestTabs.vue?vue&type=style&index=0&id=de52efda&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, withModifiers as _withModifiers } from \"vue\"\n\nconst _hoisted_1 = {\n class: \"panel p-bottom-4\",\n \"data-cy\": \"request-tags\"\n}\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"panel-heading has-background-light has-text-weight-semibold is-size-4\" }, \" Tags \", -1)\nconst _hoisted_3 = {\n key: 0,\n class: \"panel-content\"\n}\nconst _hoisted_4 = { class: \"panel-section p-bottom-8\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"has-text-weight-semibold\" }, \"Assigned tags\", -1)\nconst _hoisted_6 = { key: 0 }\nconst _hoisted_7 = {\n key: 1,\n class: \"is-italic m-bottom-12\"\n}\nconst _hoisted_8 = {\n key: 0,\n class: \"help\"\n}\nconst _hoisted_9 = /*#__PURE__*/_createElementVNode(\"a\", { href: \"/admin/tags\" }, \"tag page\", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrIconButton = _resolveComponent(\"NrIconButton\")!\n const _component_NrTooltip = _resolveComponent(\"NrTooltip\")!\n const _component_NrTag = _resolveComponent(\"NrTag\")!\n const _component_NrLoadingAnimation = _resolveComponent(\"NrLoadingAnimation\")!\n const _component_NrSelect = _resolveComponent(\"NrSelect\")!\n const _component_NrModal = _resolveComponent(\"NrModal\")!\n\n return (_openBlock(), _createElementBlock(\"article\", _hoisted_1, [\n _hoisted_2,\n (!_ctx.filteredRequestLoading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"panel-item is-flex is-align-items-center is-justify-content-space-between\", { 'panel-item--editable': $options.canUpdateRequest }])\n }, [\n _hoisted_5,\n ($options.canUpdateRequest)\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 0,\n label: \"Edit request tags\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrIconButton, {\n variant: \"minimal-neutral\",\n icon: { name: 'pencil-alt', type: 'regular' },\n \"aria-label\": \"Edit request tags\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => ($options.toggleModal(true)))\n })\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ], 2)\n ]),\n ($props.tags.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.tags, (tag, index) => {\n return (_openBlock(), _createBlock(_component_NrTag, {\n class: \"m-right-8 m-top-8\",\n key: index,\n label: tag.name,\n size: \"normal\",\n tagColor: \"purple\"\n }, null, 8, [\"label\"]))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"p\", _hoisted_7, \"No tags assigned\"))\n ]))\n : (_openBlock(), _createBlock(_component_NrLoadingAnimation, {\n key: 1,\n count: 3\n })),\n _createVNode(_component_NrModal, {\n title: \"Change tags\",\n show: $data.showModal,\n hasSecondaryButton: true,\n disableButtons: $data.updating,\n secondaryButtonText: \"Cancel\",\n primaryButtonText: \"Save tags\",\n onOnCloseClick: _cache[3] || (_cache[3] = ($event: any) => ($options.toggleModal(false))),\n onOnSecondaryClick: _cache[4] || (_cache[4] = ($event: any) => ($options.toggleModal(false))),\n onOnPrimaryClick: $options.handleSaveTags\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"form\", {\n onSubmit: _cache[2] || (_cache[2] = _withModifiers(() => {}, [\"prevent\",\"stop\"]))\n }, [\n _createVNode(_component_NrSelect, {\n options: $options.filteredTags,\n modelValue: $data.requestTags,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => (($data.requestTags) = $event)),\n placeholder: \"Search for tags\",\n onSearch: $options.handleTagSearch,\n filterable: false,\n \"append-to-body\": \"\",\n multiple: \"\",\n onLoadMore: $options.handleTagScroll,\n loading: _ctx.dataFetchState.tags.fetching,\n hasMore: !_ctx.dataFetchState.tags.end,\n onOpen: $options.handleTagSearch\n }, {\n label: _withCtx(() => [\n _createTextVNode(\"Tags\")\n ]),\n _: 1\n }, 8, [\"options\", \"modelValue\", \"onSearch\", \"onLoadMore\", \"loading\", \"hasMore\", \"onOpen\"]),\n ($options.canUpdateRequest)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_8, [\n _createTextVNode(\" Don't see a tag you need? Create one via the \"),\n _hoisted_9,\n _createTextVNode(\". \")\n ]))\n : _createCommentVNode(\"\", true)\n ], 32)\n ]),\n _: 1\n }, 8, [\"show\", \"disableButtons\", \"onOnPrimaryClick\"])\n ]))\n}","\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrTag from '@nextrequestco/components/src/components/NrTag/NrTag.vue'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport NrSelect from '@nextrequestco/components/src/components/NrSelect/nr-select.vue'\nimport NrLoadingAnimation from '@nextrequestco/components/src/components/NrLoadingAnimation/nr-loading-animation.vue'\nimport { debounce, throttle } from 'lodash'\nimport { mapActions, mapState } from 'vuex'\n\ninterface Tag {\n id: number\n name: string\n}\nexport default {\n name: 'RequestTags',\n components: {\n NrIconButton,\n NrModal,\n NrTag,\n NrTooltip,\n NrSelect,\n NrLoadingAnimation\n },\n props: {\n requestId: {\n type: String\n },\n tags: {\n type: Array,\n default() {\n return []\n }\n }\n },\n data() {\n return {\n updating: false,\n showModal: false,\n requestTags: []\n }\n },\n mounted() {\n this.handleTagSearch = debounce(this.handleTagSearch, 400)\n },\n computed: {\n ...mapState('request_show', [\n 'request',\n 'dataFetchState',\n 'dataOptions',\n 'filteredRequestLoading'\n ]),\n\n canUpdateRequest(): boolean {\n return this.$ability.can('update', 'Request')\n },\n filteredTags() {\n return this.dataOptions.tags.map((tag: Tag) => ({\n label: tag.name,\n value: tag.id\n }))\n }\n },\n methods: {\n ...mapActions('request_show', [\n 'updateRequest',\n 'fetchRequestTags',\n 'fetchTimeline',\n 'fetchDataOptions'\n ]),\n\n handleTagScroll: throttle(function () {\n this.fetchDataOptions({\n searchText: this.dataFetchState.tags.search_text,\n dataType: 'tags'\n })\n }, 400),\n\n handleTagSearch: throttle(function (searchText = '') {\n this.fetchDataOptions({ searchText, dataType: 'tags' })\n }, 400),\n\n async handleSaveTags() {\n try {\n await this.updateRequest({\n request_id: this.requestId,\n tag_ids: this.requestTags.map(({ value }) => value)\n })\n await this.fetchRequestTags(this.requestId)\n await this.fetchTimeline({ pretty_id: this.requestId })\n this.$toasted.success('Successfully updated tags.')\n } catch (error) {\n this.$toasted.error(\n 'There has been an error saving tags. Please refresh the page and try again.'\n )\n }\n this.updating = false\n this.toggleModal(false)\n },\n\n toggleModal(state?: boolean) {\n this.showModal = state ?? !this.showModal\n if (this.showModal) this.handleTagSearch()\n\n this.requestTags = this.tags.map((tag: Tag) => ({\n label: tag.name,\n value: tag.id\n }))\n }\n }\n}\n","import { render } from \"./RequestTags.vue?vue&type=template&id=bcc22d5a&ts=true\"\nimport script from \"./RequestTags.vue?vue&type=script&lang=ts\"\nexport * from \"./RequestTags.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <article class=\"panel p-bottom-4\" data-cy=\"request-panel-header\">\n <div class=\"panel-heading has-background-light\">\n <p class=\"has-text-weight-semibold is-size-4\">Request</p>\n <NrIconButton\n v-if=\"$can('manage', 'Request')\"\n @click=\"setDisplayEditRequestTextBox(true)\"\n :icon=\"{ name: 'pencil-alt', type: 'regular' }\"\n aria-label=\"Edit request text\"\n variant=\"minimal-neutral\"\n />\n </div>\n <div v-if=\"!filteredRequestLoading\">\n <div v-if=\"showMoreDescription\">\n <div class=\"panel-block\">\n <div class=\"content\" v-html=\"sanitizedDescription\" />\n </div>\n <div class=\"panel-block request-show-more-btn\">\n <NrButton\n variant=\"minimal-neutral\"\n @click=\"showMoreDescription = !showMoreDescription\"\n >\n Show less\n </NrButton>\n </div>\n </div>\n <div\n v-else-if=\"sanitizedDescription && sanitizedDescription.length > 700\"\n >\n <div class=\"panel-block\">\n <div class=\"content\" v-html=\"shortDescription\" />\n </div>\n <div class=\"panel-block request-show-more-btn\">\n <NrButton\n variant=\"minimal-neutral\"\n @click=\"showMoreDescription = true\"\n >\n Show more\n </NrButton>\n </div>\n </div>\n <div\n v-else-if=\"sanitizedDescription && sanitizedDescription.length <= 700\"\n >\n <div class=\"panel-block\">\n <div class=\"content\" v-html=\"sanitizedDescription\" />\n </div>\n </div>\n </div>\n <NrLoadingAnimation v-else :count=\"3\" />\n </article>\n</template>\n\n<script>\nimport truncate from 'lodash/truncate'\nimport { mapActions, mapState } from 'vuex'\nimport NrButton from '@nextrequestco/components/src/components/NrButton/nr-button'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrLoadingAnimation from '@nextrequestco/components/src/components/NrLoadingAnimation/nr-loading-animation.vue'\n\nexport default {\n name: 'RequestInfoHeader',\n components: {\n NrButton,\n NrIconButton,\n NrLoadingAnimation\n },\n props: {\n sanitizedDescription: {\n type: String,\n default: ''\n }\n },\n data() {\n return {\n showMoreDescription: false\n }\n },\n computed: {\n ...mapState('request_show', ['request', 'filteredRequestLoading']),\n shortDescription() {\n return truncate(this.sanitizedDescription, { length: '700' })\n }\n },\n methods: {\n ...mapActions('request_show', ['setDisplayEditRequestTextBox'])\n }\n}\n</script>\n\n<style scoped lang=\"scss\">\n.panel-heading {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n}\n\n.nr-button {\n &:active,\n &:focus,\n &:hover {\n color: #6e6e87;\n box-shadow: 0 0 0 0.125em rgba(48, 48, 59, 0.25);\n outline: none;\n }\n}\n\n.content {\n max-width: 100%;\n word-wrap: break-word;\n}\n</style>\n","import { render } from \"./RequestInfoHeader.vue?vue&type=template&id=b4edf2fe&scoped=true\"\nimport script from \"./RequestInfoHeader.vue?vue&type=script&lang=js\"\nexport * from \"./RequestInfoHeader.vue?vue&type=script&lang=js\"\n\nimport \"./RequestInfoHeader.vue?vue&type=style&index=0&id=b4edf2fe&scoped=true&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-b4edf2fe\"]])\n\nexport default __exports__","<template>\n <NrPanel class=\"m-bottom-24\" v-if=\"canSeeActivePinnedNote\">\n <template v-slot:header>Pin board</template>\n <TimelineCard\n :canPin=\"canUpdatePins\"\n :pinned=\"pinnedNote.timeline_is_pinned\"\n :collapsable=\"\n canCollapse(\n pinnedNote.timeline_is_collapsable,\n pinnedNote.timeline_display_text\n )\n \"\n :collapsed=\"false\"\n :id=\"pinnedNote.timeline_id\"\n :with-actions=\"canSeeTimelineActions(pinnedNote)\"\n editIcon\n :deleteIcon=\"false\"\n color=\"orange\"\n icon-name=\"edit\"\n :header=\"pinnedNote.timeline_name\"\n :subheader=\"pinnedNote.timeline_subheader\"\n :header-right=\"pinnedNote.timeline_state\"\n :footer-left=\"pinnedNote.timeline_byline\"\n @on-edit=\"handleEditMessageText\"\n @on-collapse=\"handleCollapse\"\n @on-pin-click=\"handlePinChange(pinnedNote)\"\n >\n <!-- pinnedNote.timeline_display_text is sanitized on the backend: https://github.com/nextrequest/nextrequest/blob/726ba59/app/views/client/timeline/_note_pinned_event.json.jbuilder#L6 -->\n <p\n class=\"wrap-text\"\n v-if=\"!isCollapsed\"\n v-html=\"pinnedNote.timeline_display_text\"\n />\n </TimelineCard>\n </NrPanel>\n</template>\n<script>\nimport NrPanel from '@nextrequestco/components/src/components/NrPanel/NrPanel.vue'\nimport TimelineCard from '@nextrequestco/components/src/components/TimelineCard/TimelineCard.vue'\nimport { mapState, mapActions, mapMutations } from 'vuex'\nimport isEmpty from 'lodash/isEmpty'\n\nexport default {\n components: { NrPanel, TimelineCard },\n data() {\n return {\n isCollapsed: false\n }\n },\n computed: {\n ...mapState('request_show', ['pinnedNote']),\n ...mapState(['account']),\n canSeeActivePinnedNote() {\n return !isEmpty(this.pinnedNote) && this.canReadPins\n },\n canReadPins() {\n return (\n this.account.pinning_notes_feature_flag &&\n this.pinnedNote.timeline_name === 'Note' &&\n this.$ability.can('read', 'RequestEventPin')\n )\n },\n canUpdatePins() {\n return (\n this.account.pinning_notes_feature_flag &&\n this.pinnedNote.timeline_name === 'Note' &&\n this.$ability.can('update', 'RequestEventPin')\n )\n }\n },\n methods: {\n ...mapActions('request_show', ['handlePinChange', 'setCurrentAction']),\n ...mapMutations('request_show', ['setSelectedTimelineEvent']),\n canSeeTimelineActions() {\n return this.$ability.can('read', 'publisher_only_items')\n },\n\n canCollapse(typeCanCollapse, content) {\n return (\n typeCanCollapse || (!typeCanCollapse && (content || '').length >= 200)\n )\n },\n\n handleCollapse() {\n this.isCollapsed = !this.isCollapsed\n },\n\n handleEditMessageText() {\n this.setSelectedTimelineEvent(this.pinnedNote)\n this.setCurrentAction('editMessageText')\n }\n }\n}\n</script>\n","import { render } from \"./RequestPinnedNote.vue?vue&type=template&id=a4f8f1ba\"\nimport script from \"./RequestPinnedNote.vue?vue&type=script&lang=js\"\nexport * from \"./RequestPinnedNote.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"message-contents-field\" }\nconst _hoisted_2 = {\n class: \"is-size-7 m-bottom-12\",\n \"data-cy\": \"external-message-editor-footnote\"\n}\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = { key: 1 }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"notification is-warning footer\" }, \" Requester email not available - posts to timeline only. The requester will only be able to see your message if they contact your agency to have their email associated with this request. \", -1)\nconst _hoisted_6 = [\n _hoisted_5\n]\nconst _hoisted_7 = { key: 2 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrSelect = _resolveComponent(\"NrSelect\")!\n const _component_NrFormLabel = _resolveComponent(\"NrFormLabel\")!\n const _component_nr_editor = _resolveComponent(\"nr-editor\")!\n const _component_NrFormInput = _resolveComponent(\"NrFormInput\")!\n const _component_message_box = _resolveComponent(\"message-box\")!\n\n return (_ctx.displayMsgBox && _ctx.currentAction === 'envelope')\n ? (_openBlock(), _createBlock(_component_message_box, {\n key: 0,\n title: $options.modalTitle,\n \"submit-text\": \"Send external message\",\n type: \"green\",\n \"disable-submit\": $options.disableSubmitMsg(),\n onOnClose: _cache[5] || (_cache[5] = ($event: any) => (_ctx.setDisplayMsgBox(false))),\n onOnCancel: $options.handleCancelMessage,\n onOnSubmit: $options.handleSubmitMessage\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n ($options.canReadStaffOnlyItems)\n ? (_openBlock(), _createBlock(_component_NrSelect, {\n key: 0,\n modelValue: $data.selectedMessageTemplates,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => (($data.selectedMessageTemplates) = $event)),\n placeholder: \"Search and select message template(s)\",\n options: $options.filteredMessageTemplates,\n filterable: false,\n loading: _ctx.dataFetchState.message_templates.fetching,\n hasMore: !_ctx.dataFetchState.message_templates.end,\n \"onOption:deselected\": _cache[1] || (_cache[1] = ($event: any) => ($options.setMessageTemplate(true, $event))),\n \"onOption:selected\": _cache[2] || (_cache[2] = ($event: any) => ($options.setMessageTemplate(false, $event))),\n onOpen: $options.searchMessageTemplates,\n onSearch: $options.searchMessageTemplates,\n onLoadMore: $options.loadMoreMessageTemplates,\n class: \"m-top-12\",\n multiple: \"\"\n }, {\n label: _withCtx(() => [\n _createTextVNode(\"Message Template\")\n ]),\n _: 1\n }, 8, [\"modelValue\", \"options\", \"loading\", \"hasMore\", \"onOpen\", \"onSearch\", \"onLoadMore\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_NrFormLabel, null, {\n default: _withCtx(() => [\n _createTextVNode(\"Message contents\")\n ]),\n _: 1\n }),\n _createVNode(_component_nr_editor, {\n modelValue: $data.message,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => (($data.message) = $event)),\n resizable: false,\n placeholder: \n $options.canReadStaffOnlyItems\n ? 'Type your message here or select a template above.'\n : 'Type your message here.'\n ,\n rows: 12,\n strike: \"\",\n bulletList: \"\",\n orderedList: \"\",\n link: \"\"\n }, null, 8, [\"modelValue\", \"placeholder\"]),\n _createElementVNode(\"p\", _hoisted_2, [\n (this.canReadStaffOnlyItems && this.requesterEmailAvailable)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_3, \" This message will be visible to the requester and staff. \"))\n : (\n this.canReadStaffOnlyItems && !this.requesterEmailAvailable\n )\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _hoisted_6))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_7, \" Your message will be sent to staff working on this request and posted to the request timeline. \"))\n ]),\n ($options.canReadStaffOnlyItems && $options.requesterEmailAvailable)\n ? (_openBlock(), _createBlock(_component_NrFormInput, {\n key: 1,\n modelValue: $data.messageRequired,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => (($data.messageRequired) = $event)),\n id: \"send-to-requester-checkbox\",\n type: \"checkbox\",\n label: \"Yes, send to requester (required)\"\n }, null, 8, [\"modelValue\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 1\n }, 8, [\"title\", \"disable-submit\", \"onOnCancel\", \"onOnSubmit\"]))\n : _createCommentVNode(\"\", true)\n}","\nimport NrSelect from '@nextrequestco/components/src/components/NrSelect/nr-select.vue'\nimport MessageBox from '@nextrequestco/components/src/components/MessageBox/MessageBox.vue'\nimport NrEditor from '@nextrequestco/components/src/components/NrEditor/nr-editor.vue'\nimport NrFormInput from '@nextrequestco/components/src/components/NrFormInput/nr-form-input.vue'\nimport NrFormLabel from '@nextrequestco/components/src/components/form-elements/nr-form-label.vue'\nimport { MessageTemplates } from './types/message_boxes'\nimport { mapActions, mapState } from 'vuex'\nimport throttle from 'lodash/throttle'\n\nexport default {\n name: 'ExternalMessageModal',\n components: {\n MessageBox,\n NrFormInput,\n 'nr-editor': NrEditor,\n NrFormLabel,\n NrSelect\n },\n data() {\n return {\n selectedMessageTemplates: [],\n message: '',\n messageRequired: false\n }\n },\n computed: {\n ...mapState('request_show', [\n 'displayMsgBox',\n 'currentAction',\n 'request',\n 'dataOptions',\n 'dataFetchState'\n ]),\n ...mapState(['account']),\n\n requesterEmailAvailable(): boolean {\n return this.request.requester.email !== 'Email Not Available'\n },\n\n canReadStaffOnlyItems(): boolean {\n return this.$ability.can('read', 'staff_only_items')\n },\n\n filteredMessageTemplates(): Array<MessageTemplates> {\n return this.dataOptions.message_templates.map(\n (temp: MessageTemplates) => ({\n value: temp.id,\n label: temp.message_template_name,\n description: temp.message_template_description\n })\n )\n },\n\n modalTitle(): string {\n return this.canReadStaffOnlyItems\n ? `Message to ${this.request.requester.name}`\n : `Message to ${this.account.name}`\n }\n },\n methods: {\n ...mapActions('request_show', [\n 'submitExternalMessage',\n 'setDisplayMsgBox',\n 'fetchDataOptions'\n ]),\n\n loadMoreMessageTemplates: throttle(function () {\n this.fetchDataOptions({\n searchText: this.dataFetchState.message_templates.search_text,\n dataType: 'message_templates'\n })\n }, 400),\n\n disableSubmitMsg(): boolean {\n if (this.canReadStaffOnlyItems && this.requesterEmailAvailable) {\n return !(this.messageRequired && this.message.length)\n } else {\n return !this.message.length\n }\n },\n\n setMessageTemplate(reset = false, templates = []): void {\n if (reset) {\n this.message = this.selectedMessageTemplates\n .map((temp: { description: string }) => temp.description)\n .join('')\n } else {\n this.message = this.message + templates.pop()?.description\n }\n },\n\n searchMessageTemplates: throttle(function (searchText = '') {\n this.fetchDataOptions({\n searchText,\n dataType: 'message_templates'\n })\n }, 400),\n\n handleCancelMessage(): void {\n this.message = ''\n this.selectedMessageTemplates = []\n this.messageRequired = false\n setTimeout(() => {\n this.setDisplayMsgBox(false)\n }, 100)\n },\n\n handleSubmitMessage(): void {\n this.submitExternalMessage({\n note_text: this.message,\n note_type: 'requester',\n state: 'requester',\n request_id: this.request.pretty_id,\n required: this.messageRequired,\n message_template_ids: this.selectedMessageTemplates.map(\n (template: { value: number }) => template.value\n )\n }).then(() => {\n this.handleCancelMessage()\n })\n }\n }\n}\n","import { render } from \"./ExternalMessageModal.vue?vue&type=template&id=4837780c&ts=true\"\nimport script from \"./ExternalMessageModal.vue?vue&type=script&lang=ts\"\nexport * from \"./ExternalMessageModal.vue?vue&type=script&lang=ts\"\n\nimport \"./ExternalMessageModal.vue?vue&type=style&index=0&id=4837780c&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"message-contents-field\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"is-size-7 m-bottom-12 notify-user-warning\"\n}\nconst _hoisted_3 = {\n key: 1,\n class: \"is-size-7 m-bottom-12\"\n}\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"is-size-7 m-bottom-12 m-top-4\" }, \" Send an internal message to selected staff on the request. This message will not be visible to the requester. \", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrSelect = _resolveComponent(\"NrSelect\")!\n const _component_NrFormLabel = _resolveComponent(\"NrFormLabel\")!\n const _component_nr_editor = _resolveComponent(\"nr-editor\")!\n const _component_message_box = _resolveComponent(\"message-box\")!\n\n return (_ctx.currentAction === 'comments')\n ? (_openBlock(), _createBlock(_component_message_box, {\n key: 0,\n title: \"New internal message\",\n type: \"orange\",\n \"submit-text\": \"Send internal message\",\n \"disable-submit\": $options.disableSubmit,\n onOnClose: _cache[4] || (_cache[4] = ($event: any) => (_ctx.setCurrentAction(''))),\n onOnCancel: _cache[5] || (_cache[5] = ($event: any) => (_ctx.setCurrentAction(''))),\n onOnSubmit: $options.handleSubmitMessage\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_NrSelect, {\n modelValue: $data.selectedNotifiedUsers,\n placeholder: \"Type or select a user to notify\",\n options: $options.notifiableUsers,\n \"onOption:selecting\": $options.selectUsersToNotify,\n \"onOption:deselecting\": $options.deselectUsersToNotify,\n class: \"m-top-12\",\n filterable: true,\n multiple: \"\",\n required: \"\"\n }, {\n label: _withCtx(() => [\n _createTextVNode(\"Notify a user (required)\")\n ]),\n _: 1\n }, 8, [\"modelValue\", \"options\", \"onOption:selecting\", \"onOption:deselecting\"]),\n ($options.notifyUserWarning)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_2, \" Select a user or group to notify. \"))\n : (_openBlock(), _createElementBlock(\"p\", _hoisted_3, \" Only users assigned to this request can be notified. All internal messages still post to the timeline. \")),\n ($options.staffOnlyItems)\n ? (_openBlock(), _createBlock(_component_NrSelect, {\n key: 2,\n modelValue: $data.selectedMessageTemplates,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => (($data.selectedMessageTemplates) = $event)),\n placeholder: \"Search and select message template(s)\",\n options: $options.filteredMessageTemplates,\n filterable: false,\n loading: _ctx.dataFetchState.message_templates.fetching,\n hasMore: !_ctx.dataFetchState.message_templates.end,\n \"onOption:deselected\": _cache[1] || (_cache[1] = ($event: any) => ($options.setMessageTemplate(true, $event))),\n \"onOption:selected\": _cache[2] || (_cache[2] = ($event: any) => ($options.setMessageTemplate(false, $event))),\n onOpen: $options.searchMessageTemplates,\n onSearch: $options.searchMessageTemplates,\n onLoadMore: $options.loadMoreMessageTemplates,\n multiple: \"\"\n }, {\n label: _withCtx(() => [\n _createTextVNode(\"Message Template(s)\")\n ]),\n _: 1\n }, 8, [\"modelValue\", \"options\", \"loading\", \"hasMore\", \"onOpen\", \"onSearch\", \"onLoadMore\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_NrFormLabel, null, {\n default: _withCtx(() => [\n _createTextVNode(\"Message contents\")\n ]),\n _: 1\n }),\n _createVNode(_component_nr_editor, {\n ref: \"editor\",\n modelValue: $data.message,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => (($data.message) = $event)),\n resizable: false,\n rows: 10,\n strike: \"\",\n link: \"\",\n bulletList: \"\",\n orderedList: \"\"\n }, null, 8, [\"modelValue\"]),\n _hoisted_4\n ])\n ]),\n _: 1\n }, 8, [\"disable-submit\", \"onOnSubmit\"]))\n : _createCommentVNode(\"\", true)\n}","\nimport NrSelect from '@nextrequestco/components/src/components/NrSelect/nr-select.vue'\nimport MessageBox from '@nextrequestco/components/src/components/MessageBox/MessageBox.vue'\nimport NrEditor from '@nextrequestco/components/src/components/NrEditor/nr-editor.vue'\nimport NrFormLabel from '@nextrequestco/components/src/components/form-elements/nr-form-label.vue'\nimport { mapActions, mapState } from 'vuex'\nimport { MessageTemplates } from './types/message_boxes'\nimport throttle from 'lodash/throttle'\nimport uniqBy from 'lodash/uniqBy'\n\ninterface RequestStaff {\n id: number\n // eslint-disable-next-line camelcase\n name_with_email: string\n}\n\ninterface UserOption {\n value: number\n label: string\n}\n\nconst ALL_ASSIGNED_STAFF = {\n value: 0,\n label: 'All assigned staff'\n}\n\nexport default {\n name: 'InternalMessageModal',\n components: { MessageBox, NrSelect, 'nr-editor': NrEditor, NrFormLabel },\n data() {\n return {\n selectedMessageTemplates: [],\n message: '',\n messageRequired: false,\n selectedNotifiedUsers: [ALL_ASSIGNED_STAFF]\n }\n },\n watch: {\n currentAction(newVal) {\n if (newVal === 'comments') {\n this.resetData()\n }\n },\n request(newVal, oldVal) {\n if (newVal.pretty_id !== oldVal.pretty_id) {\n this.resetNotifiedUsers()\n }\n }\n },\n computed: {\n ...mapState('request_show', [\n 'displayMsgBox',\n 'currentAction',\n 'dataFetchState',\n 'dataOptions',\n 'request',\n 'requestStaff'\n ]),\n\n notifyUserWarning(): boolean {\n return this.selectedNotifiedUsers.length === 0\n },\n\n disableSubmit(): boolean {\n return !this.selectedNotifiedUsers.length || !this.message.length\n },\n\n staffOnlyItems(): boolean {\n return this.$ability.can('read', 'staff_only_items')\n },\n\n notifiableUsers(): UserOption[] {\n const poc = {\n value: this.request.poc.id,\n label: this.request.poc.name_with_email\n }\n const requestStaff = this.requestStaff.map((user: RequestStaff) => ({\n value: user.id,\n label: user.name_with_email\n }))\n return uniqBy([ALL_ASSIGNED_STAFF, poc, ...requestStaff], 'value')\n },\n\n filteredMessageTemplates(): void {\n return this.dataOptions.message_templates.map(\n (item: MessageTemplates) => ({\n value: item.id,\n label: item.message_template_name,\n description: item.message_template_description\n })\n )\n }\n },\n methods: {\n ...mapActions('request_show', [\n 'submitInternalMessage',\n 'setDisplayMsgBox',\n 'fetchDataOptions',\n 'setCurrentAction'\n ]),\n\n isAllAssignedStaff(val: UserOption): Boolean {\n return val.value === ALL_ASSIGNED_STAFF.value\n },\n\n resetData() {\n this.resetNotifiedUsers()\n this.selectedMessageTemplates = []\n this.message = ''\n this.messageRequired = false\n },\n\n deselectUsersToNotify(val: UserOption): void {\n this.selectedNotifiedUsers = this.selectedNotifiedUsers.filter(\n (user: UserOption) => user.value !== val.value\n )\n },\n\n selectUsersToNotify(val: UserOption): void {\n if (this.isAllAssignedStaff(val)) {\n this.resetNotifiedUsers()\n } else {\n this.selectedNotifiedUsers = [\n ...this.selectedNotifiedUsers,\n val\n ].filter((user: UserOption) => !this.isAllAssignedStaff(user))\n }\n },\n\n resetNotifiedUsers(): void {\n this.selectedNotifiedUsers = [ALL_ASSIGNED_STAFF]\n },\n\n setMessageRequired(val: boolean): void {\n this.messageRequired = val\n },\n\n searchMessageTemplates: throttle(function (searchText = '') {\n this.fetchDataOptions({\n searchText,\n dataType: 'message_templates'\n })\n }, 400),\n\n loadMoreMessageTemplates: throttle(function () {\n this.fetchDataOptions({\n searchText: this.dataFetchState.message_templates.search_text,\n dataType: 'message_templates'\n })\n }, 400),\n\n disableSubmitMsg(): boolean {\n if (this.staffOnlyItems) {\n return !(this.messageRequired && this.message.length)\n } else {\n return !this.message.length\n }\n },\n\n setMessageTemplate(reset: boolean = false, templates = []): void {\n if (reset) {\n this.message = this.selectedMessageTemplates\n .map((temp: { description: string }) => temp.description)\n .join('')\n } else {\n this.message = this.message + templates.pop()?.description\n }\n },\n\n handleSubmitMessage(): void {\n let payload = {\n note_text: this.message,\n note_type: 'staff',\n state: 'staff',\n request_id: this.request.pretty_id,\n message_template_ids: this.selectedMessageTemplates.map(\n (template: { value: number }) => template.value\n )\n }\n // By default if users are not selected, we will not set the users parameter.\n // If no users parameter is set, the backend will send the message to all assigned staff\n // If users are selected, we pass them into the users parameter\n const allAssignedSelected =\n this.selectedNotifiedUsers.length === 1 &&\n this.isAllAssignedStaff(this.selectedNotifiedUsers[0])\n if (!allAssignedSelected) {\n payload = Object.assign(payload, {\n users: this.selectedNotifiedUsers.map(\n (user: UserOption) => user.value\n )\n })\n }\n this.submitInternalMessage(payload).then(() => {\n this.setCurrentAction('')\n })\n }\n }\n}\n","import { render } from \"./InternalMessageModal.vue?vue&type=template&id=6f9722c9&ts=true\"\nimport script from \"./InternalMessageModal.vue?vue&type=script&lang=ts\"\nexport * from \"./InternalMessageModal.vue?vue&type=script&lang=ts\"\n\nimport \"./InternalMessageModal.vue?vue&type=style&index=0&id=6f9722c9&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createBlock as _createBlock, normalizeClass as _normalizeClass, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = { class: \"message-body-container\" }\nconst _hoisted_2 = { class: \"message-contents-field\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"is-size-7\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"invoice-cost-container\"\n}\nconst _hoisted_5 = { class: \"invoice-button-container\" }\nconst _hoisted_6 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"invoice-cost-title\" }, \"Line item\", -1)\nconst _hoisted_7 = { class: \"invoice-totals-table\" }\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"invoice-cost-title\" }, \"Staff hours\", -1)\nconst _hoisted_9 = { class: \"invoice-totals-table\" }\nconst _hoisted_10 = { class: \"invoice-subtotal\" }\nconst _hoisted_11 = /*#__PURE__*/_createElementVNode(\"div\", null, \"Subtotal\", -1)\nconst _hoisted_12 = {\n key: 3,\n class: \"notification is-warning footer\"\n}\nconst _hoisted_13 = /*#__PURE__*/_createElementVNode(\"p\", null, \" Requester email not available - posts to timeline only. The requester will only be able to see your message if they contact your agency to have their email associated with this request. \", -1)\nconst _hoisted_14 = [\n _hoisted_13\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrSelect = _resolveComponent(\"NrSelect\")!\n const _component_NrFormLabel = _resolveComponent(\"NrFormLabel\")!\n const _component_NrEditor = _resolveComponent(\"NrEditor\")!\n const _component_NrIcon = _resolveComponent(\"NrIcon\")!\n const _component_NrButton = _resolveComponent(\"NrButton\")!\n const _component_LineItemsTable = _resolveComponent(\"LineItemsTable\")!\n const _component_StaffHoursTable = _resolveComponent(\"StaffHoursTable\")!\n const _component_SurchargesList = _resolveComponent(\"SurchargesList\")!\n const _component_NrFormInput = _resolveComponent(\"NrFormInput\")!\n const _component_MessageBox = _resolveComponent(\"MessageBox\")!\n const _component_InvoiceAddItemModal = _resolveComponent(\"InvoiceAddItemModal\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n ($options.displayInvoiceBox)\n ? (_openBlock(), _createBlock(_component_MessageBox, {\n key: 0,\n title: \"New invoice\",\n \"submit-text\": \"Send invoice\",\n type: \"green\",\n disableSubmit: $options.disableSubmit,\n submitTooltipText: $options.tooltipText,\n onOnClose: _cache[4] || (_cache[4] = ($event: any) => (_ctx.setDisplayCreateInvoiceMsgBox(false))),\n onOnCancel: $options.handleCancelInvoice,\n onOnSubmit: $options.handleSubmitInvoice\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_NrSelect, {\n modelValue: $data.selectedInvoiceTemplate,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => (($data.selectedInvoiceTemplate) = $event)),\n options: $data.templates,\n onInput: $options.setMessageTemplate,\n onSearch: $options.filterInvoiceTemplates,\n placeholder: \"Select invoice template\",\n multiple: \"\"\n }, {\n label: _withCtx(() => [\n _createTextVNode(\"Invoice Template\")\n ]),\n _: 1\n }, 8, [\"modelValue\", \"options\", \"onInput\", \"onSearch\"]),\n _createVNode(_component_NrFormLabel, null, {\n default: _withCtx(() => [\n _createTextVNode(\"Message contents\")\n ]),\n _: 1\n }),\n _createVNode(_component_NrEditor, {\n modelValue: $data.message,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => (($data.message) = $event)),\n resizable: false,\n placeholder: 'Type your message here or select a template above.',\n rows: $options.rows,\n strike: \"\",\n bulletList: \"\",\n orderedList: \"\",\n link: \"\"\n }, null, 8, [\"modelValue\", \"placeholder\", \"rows\"]),\n ($options.requesterEmailAvailable)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_3, \" This message will be visible to the requester and staff. \"))\n : _createCommentVNode(\"\", true),\n (_ctx.account.invoicing_feature_flag)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_NrButton, {\n variant: \"bordered-primary\",\n onClick: $options.openAddItemModal\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrIcon, {\n class: \"inline-icon\",\n name: \"plus\"\n }),\n _createTextVNode(\" Add item \")\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createVNode(_component_NrButton, {\n variant: \"bordered-primary\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.setActiveModal('clock')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrIcon, {\n class: \"inline-icon\",\n name: \"clock\"\n }),\n _createTextVNode(\" Add staff hours \")\n ]),\n _: 1\n })\n ]),\n _hoisted_6,\n _createElementVNode(\"div\", _hoisted_7, [\n _createVNode(_component_LineItemsTable)\n ]),\n _hoisted_8,\n _createElementVNode(\"div\", _hoisted_9, [\n _createVNode(_component_StaffHoursTable)\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"div\", null, _toDisplayString($options.formatCost(_ctx.subtotalInvoiceAmount)), 1)\n ]),\n _createVNode(_component_SurchargesList)\n ]))\n : _createCommentVNode(\"\", true),\n (!_ctx.account.invoicing_feature_flag)\n ? (_openBlock(), _createBlock(_component_NrFormInput, {\n key: 2,\n label: \"Invoice amount\",\n placeholder: \"Input dollar amount\",\n type: \"number\",\n required: \"\",\n modelValue: $data.totalAmount,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => (($data.totalAmount) = $event))\n }, null, 8, [\"modelValue\"]))\n : _createCommentVNode(\"\", true),\n (!$options.requesterEmailAvailable)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, _hoisted_14))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n (_ctx.account.invoicing_feature_flag)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\n 'invoice-total-amount',\n $options.negativeInvoiceAmount ? 'negative-total-amount' : ''\n ])\n }, [\n _createElementVNode(\"div\", null, \"Total: \" + _toDisplayString($options.formatCost($options.roundedTotalInvoiceAmount)), 1)\n ], 2))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"disableSubmit\", \"submitTooltipText\", \"onOnCancel\", \"onOnSubmit\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_InvoiceAddItemModal)\n ], 64))\n}","import { createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"thead\", null, [\n /*#__PURE__*/_createElementVNode(\"tr\", { class: \"invoice-cost-tr\" }, [\n /*#__PURE__*/_createElementVNode(\"th\", { scope: \"col\" }, \"Name\"),\n /*#__PURE__*/_createElementVNode(\"th\", { scope: \"col\" }, \"Cost per unit\"),\n /*#__PURE__*/_createElementVNode(\"th\", { scope: \"col\" }, \"Quantity\"),\n /*#__PURE__*/_createElementVNode(\"th\", {\n class: \"align-right\",\n scope: \"col\"\n }, \"Total cost\"),\n /*#__PURE__*/_createElementVNode(\"th\", {\n class: \"align-right\",\n scope: \"col\",\n width: \"2%\"\n })\n ])\n], -1)\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = { class: \"align-right\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrTooltip = _resolveComponent(\"NrTooltip\")!\n const _component_InvoiceItemMenu = _resolveComponent(\"InvoiceItemMenu\")!\n const _component_NrModal = _resolveComponent(\"NrModal\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"table\", null, [\n _hoisted_1,\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.totalSelectedLineItems, (lineItem, index) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `staff-hour-${lineItem.id}-${index}`\n }, [\n (lineItem.label?.length > 15)\n ? (_openBlock(), _createElementBlock(\"td\", _hoisted_2, [\n _createVNode(_component_NrTooltip, {\n label: lineItem.label\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString($options.truncate(lineItem.label, { length: 15 })), 1)\n ]),\n _: 2\n }, 1032, [\"label\"])\n ]))\n : (_openBlock(), _createElementBlock(\"td\", _hoisted_3, _toDisplayString(lineItem.label), 1)),\n _createElementVNode(\"td\", null, _toDisplayString($options.formatCost(lineItem.cost, 3) || '$0.00'), 1),\n _createElementVNode(\"td\", null, _toDisplayString(lineItem.total_count), 1),\n _createElementVNode(\"td\", _hoisted_4, _toDisplayString($options.formatCost(lineItem.total_cost)), 1),\n _createElementVNode(\"td\", null, [\n _createVNode(_component_InvoiceItemMenu, {\n onOnEdit: ($event: any) => ($options.onEdit(lineItem, index)),\n onOnDelete: ($event: any) => ($options.onDelete(lineItem))\n }, null, 8, [\"onOnEdit\", \"onOnDelete\"])\n ])\n ]))\n }), 128))\n ])\n ]),\n _createVNode(_component_NrModal, {\n show: $options.activeItemDeleteModal,\n primaryButtonText: \"Delete item\",\n secondaryButtonText: \"Cancel\",\n title: \"Delete line item\",\n hasSecondaryButton: \"\",\n onOnPrimaryClick: $options.deleteInvoiceLineItem,\n onOnSecondaryClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.setActiveModal(''))),\n onOnCloseClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.setActiveModal('')))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"p\", null, \" Are you sure you want to remove \" + _toDisplayString(this.invoiceItemToEdit?.label) + \" from the list? \", 1)\n ]),\n _: 1\n }, 8, [\"show\", \"onOnPrimaryClick\"])\n ], 64))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, vShow as _vShow, withDirectives as _withDirectives, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n class: \"show-more-dropdown\",\n ref: \"dropdown\"\n}\nconst _hoisted_2 = {\n \"aria-role\": \"listitem\",\n class: \"show-more-dropdown-item\"\n}\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Edit\", -1)\nconst _hoisted_4 = {\n \"aria-role\": \"listitem\",\n class: \"show-more-dropdown-item\"\n}\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Delete\", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrIconButton = _resolveComponent(\"NrIconButton\")!\n const _component_NrIcon = _resolveComponent(\"NrIcon\")!\n const _component_NrButton = _resolveComponent(\"NrButton\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_NrIconButton, {\n class: \"show-more-ellipsis\",\n size: \"small\",\n variant: \"minimal-primary\",\n ref: \"trigger\",\n \"aria-label\": \"Show more line item actions\",\n icon: { name: 'ellipsis-v' }\n }, null, 512),\n _withDirectives(_createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_NrButton, {\n size: \"small\",\n variant: \"minimal-primary\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$emit('on-edit')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrIcon, { name: \"pencil-alt\" }),\n _hoisted_3\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_NrButton, {\n size: \"small\",\n variant: \"minimal-primary\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$emit('on-delete')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrIcon, { name: \"trash-alt\" }),\n _hoisted_5\n ]),\n _: 1\n })\n ])\n ], 512), [\n [_vShow, $data.show]\n ])\n ], 64))\n}","\nimport NrButton from '@nextrequestco/components/src/components/NrButton/nr-button.vue'\nimport NrIcon from '@nextrequestco/components/src/components/NrIcon/NrIcon.vue'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport { createPopper } from '@popperjs/core/lib/popper-lite'\n\nexport default {\n components: {\n NrButton,\n NrIcon,\n NrIconButton\n },\n\n data() {\n return { popper: null, show: false }\n },\n\n mounted() {\n this.popper = createPopper(this.$refs.trigger.$el, this.$refs.dropdown, {\n strategy: 'fixed',\n placement: 'left-start'\n })\n document.addEventListener('click', this.handleClick)\n },\n\n methods: {\n handleClick(event: Event): void {\n // Bind a click event to the DOM to track when the ellipsis button is clicked to open or close the menu\n // Also tracks when you click anywhere outside the button to close the menu\n const el = event.target\n const button = this.$refs.trigger.$el\n\n if (button.contains(el)) {\n this.show = !this.show\n } else {\n this.show = false\n }\n }\n },\n\n updated() {\n this.popper?.update()\n },\n\n beforeUnmount() {\n this.popper?.destroy()\n document.removeEventListener('click', this.handleClick)\n }\n}\n","import { render } from \"./InvoiceItemMenu.vue?vue&type=template&id=24174fc0&ts=true\"\nimport script from \"./InvoiceItemMenu.vue?vue&type=script&lang=ts\"\nexport * from \"./InvoiceItemMenu.vue?vue&type=script&lang=ts\"\n\nimport \"./InvoiceItemMenu.vue?vue&type=style&index=0&id=24174fc0&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport InvoiceItemMenu from './InvoiceItemMenu.vue'\nimport { mapMutations, mapState, mapActions } from 'vuex'\nimport { SelectedLineItemOption } from '../types/invoice_line_items'\nimport truncate from 'lodash/truncate'\nimport helpers from '../../../../../utils/helpers.js'\n\nexport default {\n components: {\n NrTooltip,\n NrModal,\n InvoiceItemMenu\n },\n\n computed: {\n ...mapState('request_show', [\n 'totalSelectedLineItems',\n 'activeModal',\n 'invoiceItemToEdit'\n ]),\n\n activeItemDeleteModal() {\n return this.activeModal === 'deleteInvoiceItem'\n }\n },\n\n methods: {\n ...mapActions('request_show', ['recalculateAllCosts']),\n\n ...mapMutations('request_show', [\n 'setInvoiceLineItemType',\n 'setInvoiceSelectedLineItem',\n 'setInvoiceLineItemQuantity',\n 'setInvoiceSelectedSurchargeItem',\n 'setInvoiceAddItemModal',\n 'setTotalSelectedLineItems',\n 'setInvoiceItemToEdit',\n 'setActiveModal'\n ]),\n\n truncate,\n\n formatCost(amount: number, maximumFractionDigits: number = 2) {\n return helpers.formatCost(amount, maximumFractionDigits)\n },\n\n onEdit(item: SelectedLineItemOption, index: number): void {\n const lineItem = { ...item, index }\n this.setInvoiceItemToEdit(lineItem)\n this.setInvoiceLineItemType('Line item')\n this.setInvoiceSelectedLineItem(item)\n this.setInvoiceLineItemQuantity(item.total_count)\n this.setInvoiceAddItemModal(true)\n },\n\n deleteInvoiceLineItem(): void {\n const newLineItems = this.totalSelectedLineItems.filter(\n (i: SelectedLineItemOption) => i.value !== this.invoiceItemToEdit?.value\n )\n this.setTotalSelectedLineItems(newLineItems)\n this.recalculateAllCosts()\n this.setActiveModal('')\n },\n\n onDelete(item: SelectedLineItemOption): void {\n this.setInvoiceItemToEdit(item)\n this.setActiveModal('deleteInvoiceItem')\n }\n }\n}\n","import { render } from \"./LineItemsTable.vue?vue&type=template&id=fec2e5c0&ts=true\"\nimport script from \"./LineItemsTable.vue?vue&type=script&lang=ts\"\nexport * from \"./LineItemsTable.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx } from \"vue\"\n\nconst _hoisted_1 = { class: \"invoice-surcharge-row\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_InvoiceItemMenu = _resolveComponent(\"InvoiceItemMenu\")!\n const _component_NrModal = _resolveComponent(\"NrModal\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.totalSelectedSurchargeItems, (surcharge, index) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"invoice-surcharge-container\",\n key: `surcharge_${index}`\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", null, _toDisplayString($options.setSurchargeLabel(surcharge)), 1),\n _createElementVNode(\"div\", null, [\n _createTextVNode(_toDisplayString($options.formatSurcharge(surcharge)) + \" \", 1),\n _createVNode(_component_InvoiceItemMenu, {\n onOnEdit: ($event: any) => ($options.onEdit(surcharge, index)),\n onOnDelete: ($event: any) => ($options.onDelete(surcharge))\n }, null, 8, [\"onOnEdit\", \"onOnDelete\"])\n ])\n ])\n ]))\n }), 128)),\n _createVNode(_component_NrModal, {\n show: $options.activeSurchargeDeleteModal,\n primaryButtonText: \"Delete surcharge\",\n secondaryButtonText: \"Cancel\",\n title: \"Delete surcharge item\",\n hasSecondaryButton: \"\",\n onOnPrimaryClick: $options.deleteInvoiceSurchargeItem,\n onOnSecondaryClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.setActiveModal(''))),\n onOnCloseClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.setActiveModal('')))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"p\", null, \" Are you sure you want to remove \" + _toDisplayString(this.invoiceItemToEdit?.label) + \" from the list? \", 1)\n ]),\n _: 1\n }, 8, [\"show\", \"onOnPrimaryClick\"])\n ], 64))\n}","\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport { SurchargeOption } from '../types/invoice_line_items'\nimport InvoiceItemMenu from './InvoiceItemMenu.vue'\nimport helpers from '../../../../../utils/helpers.js'\nimport { mapState, mapMutations, mapActions } from 'vuex'\n\nexport default {\n components: {\n InvoiceItemMenu,\n NrModal\n },\n\n computed: {\n ...mapState('request_show', [\n 'totalSelectedSurchargeItems',\n 'activeModal',\n 'subtotalInvoiceAmount',\n 'invoiceItemToEdit'\n ]),\n\n activeSurchargeDeleteModal() {\n return this.activeModal === 'deleteInvoiceSurcharge'\n }\n },\n\n methods: {\n ...mapActions('request_show', ['recalculateAllCosts']),\n\n ...mapMutations('request_show', [\n 'setInvoiceLineItemType',\n 'setInvoiceSelectedSurchargeItem',\n 'setInvoiceAddItemModal',\n 'setTotalSelectedSurchargeItems',\n 'setInvoiceItemToEdit',\n 'setActiveModal'\n ]),\n\n formatCost(amount: number) {\n return helpers.formatCost(amount)\n },\n\n formatSurcharge(surcharge: SurchargeOption): number {\n const amount = surcharge?.amount\n return surcharge.cost_type === 'percentage'\n ? this.formatCost(\n (parseFloat(amount) / 100) * this.subtotalInvoiceAmount\n )\n : this.formatCost(Number(amount))\n },\n\n setSurchargeLabel(surcharge: SurchargeOption): string {\n return surcharge.cost_type === 'percentage'\n ? `${surcharge?.label} (${surcharge?.amount}%)`\n : `${surcharge?.label}`\n },\n\n onEdit(surcharge: SurchargeOption, index: number): void {\n const item = { ...surcharge, index }\n this.setInvoiceItemToEdit(item)\n this.setInvoiceLineItemType('Surcharge')\n this.setInvoiceSelectedSurchargeItem(surcharge)\n this.setInvoiceAddItemModal(true)\n },\n\n onDelete(surcharge: SurchargeOption): void {\n this.setInvoiceItemToEdit(surcharge)\n this.setActiveModal('deleteInvoiceSurcharge')\n },\n\n deleteInvoiceSurchargeItem(): void {\n const newSurchargeItems = this.totalSelectedSurchargeItems.filter(\n (i: SurchargeOption) => i.value !== this.invoiceItemToEdit?.value\n )\n this.setTotalSelectedSurchargeItems(newSurchargeItems)\n this.recalculateAllCosts()\n this.setActiveModal('')\n }\n }\n}\n","import { render } from \"./SurchargesList.vue?vue&type=template&id=08cd8036&ts=true\"\nimport script from \"./SurchargesList.vue?vue&type=script&lang=ts\"\nexport * from \"./SurchargesList.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"thead\", null, [\n /*#__PURE__*/_createElementVNode(\"tr\", { class: \"invoice-cost-tr\" }, [\n /*#__PURE__*/_createElementVNode(\"th\", { scope: \"col\" }, \"Name\"),\n /*#__PURE__*/_createElementVNode(\"th\", { scope: \"col\" }, \"Cost per hour\"),\n /*#__PURE__*/_createElementVNode(\"th\", { scope: \"col\" }, \"Time\"),\n /*#__PURE__*/_createElementVNode(\"th\", {\n class: \"align-right\",\n scope: \"col\"\n }, \"Total cost\"),\n /*#__PURE__*/_createElementVNode(\"th\", {\n class: \"align-right\",\n scope: \"col\",\n width: \"2%\"\n })\n ])\n], -1)\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = { class: \"align-right\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrTooltip = _resolveComponent(\"NrTooltip\")!\n const _component_InvoiceItemMenu = _resolveComponent(\"InvoiceItemMenu\")!\n\n return (_openBlock(), _createElementBlock(\"table\", null, [\n _hoisted_1,\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.staffHours, (staffHour, index) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: `staff-hour-${staffHour.id}-${index}`\n }, [\n (staffHour.staff_name?.length > 15)\n ? (_openBlock(), _createElementBlock(\"td\", _hoisted_2, [\n _createVNode(_component_NrTooltip, {\n label: staffHour.staff_name\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString($options.truncate(staffHour.staff_name, { length: 15 })), 1)\n ]),\n _: 2\n }, 1032, [\"label\"])\n ]))\n : (_openBlock(), _createElementBlock(\"td\", _hoisted_3, _toDisplayString(staffHour.staff_name), 1)),\n _createElementVNode(\"td\", null, _toDisplayString(staffHour?.hourly_rate || '$0.00'), 1),\n _createElementVNode(\"td\", null, _toDisplayString(staffHour.staff_hour), 1),\n _createElementVNode(\"td\", _hoisted_4, _toDisplayString(staffHour.staff_cost), 1),\n _createElementVNode(\"td\", null, [\n _createVNode(_component_InvoiceItemMenu, {\n onOnEdit: ($event: any) => ($options.onEdit(staffHour)),\n onOnDelete: ($event: any) => ($options.onDelete(staffHour))\n }, null, 8, [\"onOnEdit\", \"onOnDelete\"])\n ])\n ]))\n }), 128))\n ])\n ]))\n}","\nimport { mapMutations, mapState } from 'vuex'\nimport { RequestStaffHours } from '../types/invoice_line_items'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport InvoiceItemMenu from './InvoiceItemMenu.vue'\nimport truncate from 'lodash/truncate'\n\nexport default {\n components: {\n InvoiceItemMenu,\n NrTooltip\n },\n\n computed: {\n ...mapState('request_show', ['requestStaffHours']),\n\n staffHours(): Array<RequestStaffHours> {\n // @ts-ignore: NEX-9140\n return Object.values(this.requestStaffHours)\n .flat()\n .filter(\n (staffHourItem: RequestStaffHours) => staffHourItem.invoice_id == null\n )\n }\n },\n\n methods: {\n ...mapMutations('request_show', ['setSelectedStaffHour', 'setActiveModal']),\n\n truncate,\n\n onEdit(staffHour: RequestStaffHours) {\n this.setSelectedStaffHour(staffHour)\n this.setActiveModal('editStaffTime')\n },\n\n onDelete(staffHour: RequestStaffHours) {\n this.setSelectedStaffHour(staffHour)\n this.setActiveModal('deleteStaffHourConfirmationDialog')\n }\n }\n}\n","import { render } from \"./StaffHoursTable.vue?vue&type=template&id=8ad2af12&ts=true\"\nimport script from \"./StaffHoursTable.vue?vue&type=script&lang=ts\"\nexport * from \"./StaffHoursTable.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Type\", -1)\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Item\", -1)\nconst _hoisted_3 = { class: \"invoice-selected-item-description\" }\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Surcharge\", -1)\nconst _hoisted_5 = { class: \"invoice-selected-item-description\" }\nconst _hoisted_6 = {\n key: 3,\n class: \"invoice-totals-table\"\n}\nconst _hoisted_7 = /*#__PURE__*/_createElementVNode(\"thead\", null, [\n /*#__PURE__*/_createElementVNode(\"tr\", { class: \"invoice-cost-tr\" }, [\n /*#__PURE__*/_createElementVNode(\"th\", { scope: \"col\" }, \"Name\"),\n /*#__PURE__*/_createElementVNode(\"th\", { scope: \"col\" }, \"Cost per unit\"),\n /*#__PURE__*/_createElementVNode(\"th\", { scope: \"col\" }, \"Quantity\"),\n /*#__PURE__*/_createElementVNode(\"th\", {\n class: \"align-right\",\n scope: \"col\"\n }, \"Total cost\")\n ])\n], -1)\nconst _hoisted_8 = { key: 0 }\nconst _hoisted_9 = { key: 1 }\nconst _hoisted_10 = { class: \"align-right\" }\nconst _hoisted_11 = {\n key: 4,\n class: \"invoice-totals-table\"\n}\nconst _hoisted_12 = { class: \"invoice-cost-tr\" }\nconst _hoisted_13 = /*#__PURE__*/_createElementVNode(\"th\", { scope: \"col\" }, \"Name\", -1)\nconst _hoisted_14 = { scope: \"col\" }\nconst _hoisted_15 = { key: 0 }\nconst _hoisted_16 = { key: 1 }\nconst _hoisted_17 = { key: 1 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrSelect = _resolveComponent(\"NrSelect\")!\n const _component_NrFormInput = _resolveComponent(\"NrFormInput\")!\n const _component_NrTooltip = _resolveComponent(\"NrTooltip\")!\n const _component_NrModal = _resolveComponent(\"NrModal\")!\n\n return (_openBlock(), _createBlock(_component_NrModal, {\n primaryButtonText: $options.itemModalText,\n secondaryButtonText: \"Cancel\",\n title: $options.itemModalText,\n hasSecondaryButton: \"\",\n disableButtons: $options.disableAddLineItemSubmit,\n show: _ctx.activeAddItemModal,\n onOnPrimaryClick: $options.addItem,\n onOnSecondaryClick: $options.closeAddItemModal,\n onOnCloseClick: $options.closeAddItemModal\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrSelect, {\n modelValue: $options.lineItemType,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => (($options.lineItemType) = $event)),\n options: $data.itemOptions,\n selectable: $options.setDisabledLineItemTypes,\n clearable: !_ctx.invoiceItemToEdit,\n placeholder: \"Select line item type\",\n appendToBody: \"\"\n }, {\n label: _withCtx(() => [\n _hoisted_1\n ]),\n _: 1\n }, 8, [\"modelValue\", \"options\", \"selectable\", \"clearable\"]),\n ($options.activeLineItemFields)\n ? (_openBlock(), _createBlock(_component_NrSelect, {\n key: 0,\n modelValue: $options.selectedLineItem,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => (($options.selectedLineItem) = $event)),\n options: $data.lineItemOptions,\n selectable: $options.setDisabledLineItems,\n placeholder: \"Select an item\",\n \"onOption:selected\": $options.addLineItem,\n appendToBody: \"\"\n }, {\n label: _withCtx(() => [\n _hoisted_2\n ]),\n _: 1\n }, 8, [\"modelValue\", \"options\", \"selectable\", \"onOption:selected\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.invoiceLineItemForm.selectedLineItem?.description), 1),\n ($options.activeSurchargeFields)\n ? (_openBlock(), _createBlock(_component_NrSelect, {\n key: 1,\n modelValue: $options.selectedSurchargeItem,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => (($options.selectedSurchargeItem) = $event)),\n options: $data.surchargeItemOptions,\n selectable: $options.setDisabledSurchargeItems,\n placeholder: \"Select an item\",\n appendToBody: \"\"\n }, {\n label: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }, 8, [\"modelValue\", \"options\", \"selectable\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString($options.selectedSurchargeItem?.description), 1),\n ($options.activeLineItemFields)\n ? (_openBlock(), _createBlock(_component_NrFormInput, {\n key: 2,\n modelValue: $options.lineItemQuantity,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => (($options.lineItemQuantity) = $event)),\n modelModifiers: { number: true },\n onInput: $options.roundQuantity,\n label: \"Quantity\",\n type: \"number\",\n placeholder: \"Add quantity\",\n required: \"\"\n }, null, 8, [\"modelValue\", \"onInput\"]))\n : _createCommentVNode(\"\", true),\n ($options.activeLineItemFields && _ctx.invoiceLineItemForm.selectedLineItem?.label)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createElementVNode(\"table\", null, [\n _hoisted_7,\n _createElementVNode(\"tbody\", null, [\n _createElementVNode(\"tr\", null, [\n (_ctx.invoiceLineItemForm.selectedLineItem.label?.length > 30)\n ? (_openBlock(), _createElementBlock(\"td\", _hoisted_8, [\n _createVNode(_component_NrTooltip, {\n label: _ctx.invoiceLineItemForm.selectedLineItem?.label\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString($options.truncate(_ctx.invoiceLineItemForm.selectedLineItem?.label, {\n length: 30\n })), 1)\n ]),\n _: 1\n }, 8, [\"label\"])\n ]))\n : (_openBlock(), _createElementBlock(\"td\", _hoisted_9, _toDisplayString(_ctx.invoiceLineItemForm.selectedLineItem?.label), 1)),\n _createElementVNode(\"td\", null, _toDisplayString($options.formatCost(_ctx.invoiceLineItemForm.selectedLineItem?.cost, 3) ||\n '$0.00'), 1),\n _createElementVNode(\"td\", null, _toDisplayString(_ctx.invoiceLineItemForm.lineItemQuantity), 1),\n _createElementVNode(\"td\", _hoisted_10, _toDisplayString($options.formatCost($options.calculateLineItemCost)), 1)\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n ($options.activeSurchargeFields && $options.selectedSurchargeItem?.label)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", _hoisted_12, [\n _hoisted_13,\n _createElementVNode(\"th\", _hoisted_14, _toDisplayString($options.surchargeCostType), 1)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n _createElementVNode(\"tr\", null, [\n ($options.selectedSurchargeItem.label?.length > 30)\n ? (_openBlock(), _createElementBlock(\"td\", _hoisted_15, [\n _createVNode(_component_NrTooltip, {\n label: $options.selectedSurchargeItem?.label\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString($options.truncate($options.selectedSurchargeItem?.label, { length: 30 })), 1)\n ]),\n _: 1\n }, 8, [\"label\"])\n ]))\n : (_openBlock(), _createElementBlock(\"td\", _hoisted_16, _toDisplayString($options.selectedSurchargeItem?.label), 1)),\n _createElementVNode(\"td\", null, [\n ($options.selectedSurchargeItem?.cost_type == 'custom')\n ? (_openBlock(), _createBlock(_component_NrFormInput, {\n key: 0,\n name: \"Custom charge\",\n type: \"number\",\n class: \"invoice-cost-custom-amount\",\n hideLabel: \"\",\n placeholder: \"Input dollar amount\",\n modelValue: $options.customSurchargeAmount,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => (($options.customSurchargeAmount) = $event))\n }, null, 8, [\"modelValue\"]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, _toDisplayString($options.surchargeAmount), 1))\n ])\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"primaryButtonText\", \"title\", \"disableButtons\", \"show\", \"onOnPrimaryClick\", \"onOnSecondaryClick\", \"onOnCloseClick\"]))\n}","\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport NrSelect from '@nextrequestco/components/src/components/NrSelect/nr-select.vue'\nimport NrFormInput from '@nextrequestco/components/src/components/NrFormInput/nr-form-input.vue'\nimport API from '../../../../../vue_shared/api.js'\nimport truncate from 'lodash/truncate'\nimport { mapState, mapMutations, mapActions } from 'vuex'\nimport {\n SelectedLineItemOption,\n SurchargeOption,\n LineItemOption,\n ApiSurchargeItemResponse,\n ApiLineItemResponse\n} from '../types/invoice_line_items'\nimport helpers from '../../../../../utils/helpers.js'\n\nexport default {\n components: {\n NrModal,\n NrTooltip,\n NrSelect,\n NrFormInput\n },\n\n data() {\n return {\n itemOptions: ['Line item', 'Surcharge'],\n lineItemOptions: [],\n surchargeItemOptions: []\n }\n },\n\n watch: {\n activeAddItemModal(newVal, _): void {\n if (newVal) {\n this.fetchAndSetLineItems()\n }\n }\n },\n\n computed: {\n ...mapState('request_show', [\n 'request',\n 'invoiceItemToEdit',\n 'invoiceLineItemForm',\n 'invoiceLineItemType',\n 'activeLineItemFields',\n 'activeAddItemModal',\n 'totalSelectedLineItems',\n 'totalInvoiceAmount',\n 'subtotalInvoiceAmount',\n 'invoiceSelectedSurchargeItem',\n 'totalSelectedSurchargeItems',\n 'requestStaffCostUnpaid'\n ]),\n\n lineItemType: {\n get() {\n return this.invoiceLineItemType\n },\n set(val) {\n this.setInvoiceLineItemType(val)\n }\n },\n\n selectedLineItem: {\n get() {\n return this.invoiceLineItemForm.selectedLineItem\n },\n set(val) {\n this.setInvoiceSelectedLineItem(val)\n }\n },\n\n selectedSurchargeItem: {\n get() {\n return this.invoiceSelectedSurchargeItem\n },\n set(val) {\n this.setInvoiceSelectedSurchargeItem(val)\n }\n },\n\n lineItemQuantity: {\n get() {\n return this.invoiceLineItemForm.lineItemQuantity\n },\n set(val) {\n return this.setInvoiceLineItemQuantity(val)\n }\n },\n\n customSurchargeAmount: {\n get() {\n return this.selectedSurchargeItem.amount\n },\n set(val) {\n this.selectedSurchargeItem.amount = val\n this.setInvoiceSelectedSurchargeItem(this.selectedSurchargeItem)\n }\n },\n\n surchargeCostType(): string {\n if (this.selectedSurchargeItem?.cost_type === 'percentage') {\n return 'Percentage'\n } else {\n return 'Amount'\n }\n },\n\n itemModalText(): string {\n return this.invoiceItemToEdit ? 'Update item' : 'Add item'\n },\n\n disableAddLineItemSubmit(): boolean {\n if (this.activeLineItemFields) {\n return (\n !this.invoiceLineItemForm.lineItemQuantity ||\n !this.invoiceLineItemType ||\n !this.invoiceLineItemForm.selectedLineItem\n )\n } else {\n return !this.selectedSurchargeItem || !this.invoiceLineItemType\n }\n },\n\n activeLineItemFields(): boolean {\n return this.invoiceLineItemType === 'Line item'\n },\n\n activeSurchargeFields(): boolean {\n return this.invoiceLineItemType === 'Surcharge'\n },\n\n calculateLineItemCost(): number {\n const cost =\n this.invoiceLineItemForm.lineItemQuantity *\n this.invoiceLineItemForm.selectedLineItem.cost\n\n // rounding total cost (quantity * cost) of exact item to cents (2 decimal points)\n return Math.round((cost + Number.EPSILON) * 100) / 100\n },\n\n surchargeAmount(): string {\n const amount = this.selectedSurchargeItem?.amount\n return this.surchargeCostType === 'Amount'\n ? this.formatCost(amount)\n : `${amount}%`\n }\n },\n\n methods: {\n ...mapActions('request_show', ['recalculateAllCosts']),\n\n ...mapMutations('request_show', [\n 'setInvoiceAddItemModal',\n 'setTotalSelectedLineItems',\n 'setSubtotalInvoiceAmount',\n 'setTotalInvoiceAmount',\n 'setInvoiceItemToEdit',\n 'setInvoiceLineItemType',\n 'setInvoiceSelectedSurchargeItem',\n 'setInvoiceSelectedLineItem',\n 'setSurchargeItemOptions',\n 'setInvoiceLineItemQuantity',\n 'setTotalSelectedSurchargeItems'\n ]),\n\n truncate,\n\n formatCost(amount: number, maximumFractionDigits: number = 2) {\n return helpers.formatCost(amount, maximumFractionDigits)\n },\n\n addItem(): void {\n this.activeLineItemFields ? this.setLineItem() : this.setSurchargeItem()\n this.resetLineItemState()\n this.setInvoiceAddItemModal(false)\n },\n\n setLineItem(): void {\n // Check if item is already selected. If so, update existing item.\n const itemAlreadySelected = this.totalSelectedLineItems.find(\n (item: SelectedLineItemOption) =>\n item.label === this.invoiceLineItemForm.selectedLineItem.label\n )\n if (itemAlreadySelected) {\n this.updateLineItem()\n } else {\n // Replace line item if editing an existing line item and then selecting a new item, otherwise add a completely new item to the list\n !itemAlreadySelected && this.invoiceItemToEdit\n ? this.replaceLineItem()\n : this.addNewLineItem()\n }\n // Recalculate all costs if a line item is added after a surcharge\n if (this.totalSelectedSurchargeItems.length) {\n this.recalculateAllCosts()\n }\n },\n\n addNewLineItem() {\n const totalCost = this.calculateLineItemCost\n const lineItems = [\n ...this.totalSelectedLineItems,\n {\n ...this.invoiceLineItemForm.selectedLineItem,\n total_count: this.invoiceLineItemForm.lineItemQuantity,\n total_cost: totalCost\n }\n ]\n this.setTotalSelectedLineItems(lineItems)\n this.setTotalInvoiceAmount(this.totalInvoiceAmount + totalCost)\n this.setSubtotalInvoiceAmount(this.subtotalInvoiceAmount + totalCost)\n },\n\n updateLineItem() {\n const lineItems = this.totalSelectedLineItems.map(\n (item: SelectedLineItemOption) => {\n if (item.label === this.invoiceLineItemForm.selectedLineItem.label) {\n return {\n ...this.invoiceLineItemForm.selectedLineItem,\n total_count: this.invoiceLineItemForm.lineItemQuantity,\n total_cost: this.calculateLineItemCost\n }\n }\n return item\n }\n )\n\n this.setTotalSelectedLineItems(lineItems)\n this.recalculateAllCosts()\n },\n\n replaceLineItem() {\n const totalLineItems = this.totalSelectedLineItems.filter(\n (_: SelectedLineItemOption, index: number) =>\n index !== this.invoiceItemToEdit?.index\n )\n const lineItems = [\n ...totalLineItems,\n {\n ...this.invoiceLineItemForm.selectedLineItem,\n total_count: this.invoiceLineItemForm.lineItemQuantity,\n total_cost: this.calculateLineItemCost\n }\n ]\n this.setTotalSelectedLineItems(lineItems)\n this.recalculateAllCosts()\n },\n\n setSurchargeItem(): void {\n if (this.invoiceItemToEdit) {\n const items = this.totalSelectedSurchargeItems.filter(\n (_: SurchargeOption, index: number) =>\n index !== this.invoiceItemToEdit?.index\n )\n const surchargeItems = [...items, { ...this.selectedSurchargeItem }]\n this.setTotalSelectedSurchargeItems(surchargeItems)\n this.recalculateAllCosts()\n } else {\n const surchargeItems = [\n ...this.totalSelectedSurchargeItems,\n { ...this.selectedSurchargeItem }\n ]\n this.setTotalSelectedSurchargeItems(surchargeItems)\n this.calculateSurcharge(this.selectedSurchargeItem)\n }\n },\n\n resetLineItemState(): void {\n this.setInvoiceLineItemType('')\n this.setInvoiceLineItemQuantity(1)\n this.setInvoiceSelectedSurchargeItem('')\n this.setInvoiceSelectedLineItem('')\n },\n\n setRequestStaffCostAmount(): void {\n const amount = this.requestStaffCostUnpaid?.slice(1)\n if (amount) {\n this.setSubtotalInvoiceAmount(Number(amount))\n this.setTotalInvoiceAmount(Number(amount))\n }\n },\n\n calculateSurcharge(surcharge: SurchargeOption): void {\n if (surcharge.cost_type === 'percentage') {\n const totalAmount =\n this.totalInvoiceAmount +\n (parseFloat(surcharge?.amount) / 100) * this.subtotalInvoiceAmount\n this.setTotalInvoiceAmount(totalAmount)\n } else {\n this.setTotalInvoiceAmount(\n this.totalInvoiceAmount + Number(surcharge?.amount)\n )\n }\n },\n\n closeAddItemModal(): void {\n this.setInvoiceItemToEdit(null)\n this.setInvoiceAddItemModal(false)\n },\n\n setDisabledLineItems(option: LineItemOption): boolean {\n const lineItemIds = this.totalSelectedLineItems.map(\n (item: SelectedLineItemOption) => item.value\n )\n return !lineItemIds.includes(option.value)\n },\n\n setDisabledLineItemTypes(): boolean {\n return !this.invoiceItemToEdit\n },\n\n addLineItem(): void {\n this.setInvoiceLineItemQuantity(1) // Sets item quantity to one by default\n },\n\n setDisabledSurchargeItems(option: SurchargeOption): boolean {\n const surchargeItems = this.totalSelectedSurchargeItems.map(\n (item: SurchargeOption) => item.value\n )\n return !surchargeItems.includes(option.value)\n },\n\n roundQuantity(val: number): void {\n const roundedVal = Math.round(val)\n this.invoiceLineItemForm.lineItemQuantity = Math.abs(roundedVal)\n },\n\n async fetchAndSetLineItems(): Promise<void> {\n const response = await API.fetchInvoiceCharges()\n const surcharges = response?.data?.surcharge_templates\n const lineItems = response?.data?.line_items_templates\n this.setSurchargeItemOptions(surcharges)\n this.setLineItemOptions(lineItems)\n },\n\n setSurchargeItemOptions(surcharges: Array<ApiSurchargeItemResponse>): void {\n this.surchargeItemOptions = surcharges?.map(\n (surcharge: ApiSurchargeItemResponse) => {\n return {\n value: surcharge.id,\n label: surcharge.name,\n amount: surcharge.amount,\n cost_type: surcharge.cost_type,\n description: surcharge.description\n }\n }\n )\n },\n\n setLineItemOptions(lineItems: Array<ApiLineItemResponse>): void {\n this.lineItemOptions = lineItems?.map((lineItem: ApiLineItemResponse) => {\n return {\n value: lineItem.id,\n label: lineItem.name,\n cost: lineItem.cost,\n description: lineItem.description\n }\n })\n }\n }\n}\n","import { render } from \"./InvoiceAddItemModal.vue?vue&type=template&id=70d7956e&ts=true\"\nimport script from \"./InvoiceAddItemModal.vue?vue&type=script&lang=ts\"\nexport * from \"./InvoiceAddItemModal.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\nimport NrSelect from '@nextrequestco/components/src/components/NrSelect/nr-select.vue'\nimport MessageBox from '@nextrequestco/components/src/components/MessageBox/MessageBox.vue'\nimport NrEditor from '@nextrequestco/components/src/components/NrEditor/nr-editor.vue'\nimport NrFormLabel from '@nextrequestco/components/src/components/form-elements/nr-form-label.vue'\nimport NrFormInput from '@nextrequestco/components/src/components/NrFormInput/nr-form-input.vue'\nimport NrButton from '@nextrequestco/components/src/components/NrButton/nr-button.vue'\nimport NrIcon from '@nextrequestco/components/src/components/NrIcon/NrIcon.vue'\nimport LineItemsTable from './LineItemsTable.vue'\nimport SurchargesList from './SurchargesList.vue'\nimport StaffHoursTable from './StaffHoursTable.vue'\nimport InvoiceAddItemModal from './InvoiceAddItemModal.vue'\nimport { mapActions, mapMutations, mapState } from 'vuex'\nimport {\n InvoiceTemplates,\n InvoiceTemplateOption\n} from '../types/invoice_templates'\nimport {\n SelectedLineItemOption,\n SurchargeOption,\n ApiLineItemPayload,\n ApiSurchargeItemPayload\n} from '../types/invoice_line_items'\nimport helpers from '../../../../../utils/helpers.js'\nimport truncate from 'lodash/truncate'\n\nexport default {\n name: 'InvoiceMessageModal',\n components: {\n MessageBox,\n NrSelect,\n NrEditor,\n NrFormLabel,\n NrFormInput,\n NrButton,\n NrIcon,\n LineItemsTable,\n SurchargesList,\n StaffHoursTable,\n InvoiceAddItemModal\n },\n\n watch: {\n invoiceTemplates(): void {\n this.templates = this.invoiceTemplates.map((item: InvoiceTemplates) => ({\n value: item.id,\n label: item.invoice_template_name,\n description: item.invoice_template_description\n }))\n },\n\n displayInvoiceBox(newVal, _): void {\n if (newVal) {\n // Calculate invoice costs on open\n this.recalculateAllCosts()\n }\n },\n\n requestStaffHours(newVal, _): void {\n if (newVal) {\n this.recalculateAllCosts()\n }\n }\n },\n\n data() {\n return {\n selectedInvoiceTemplate: [],\n message: '',\n templates: [],\n totalAmount: ''\n }\n },\n\n computed: {\n ...mapState(['account']),\n\n ...mapState('request_show', [\n 'requestStaffHours',\n 'displayCreateInvoiceMsgBox',\n 'currentAction',\n 'invoiceTemplates',\n 'request',\n 'invoiceLineItemType',\n 'invoiceLineItemForm',\n 'invoiceSelectedSurchargeItem',\n 'activeAddItemModal',\n 'totalSelectedLineItems',\n 'totalSelectedSurchargeItems',\n 'subtotalInvoiceAmount',\n 'totalInvoiceAmount',\n 'invoiceItemToEdit'\n ]),\n\n tooltipText(): string {\n return this.invalidInvoiceAmount\n ? 'The invoice should total a positive number'\n : ''\n },\n\n displayInvoiceBox(): boolean {\n return (\n this.displayCreateInvoiceMsgBox && this.currentAction === 'dollar-sign'\n )\n },\n\n requesterEmailAvailable(): boolean {\n return this.request.requester.email !== 'Email Not Available'\n },\n\n rows(): number {\n return this.requesterEmailAvailable ? 12 : 8\n },\n\n negativeInvoiceAmount(): boolean {\n return this.totalInvoiceAmount < 0\n },\n\n invalidInvoiceAmount(): boolean {\n return this.totalInvoiceAmount <= 0\n },\n\n roundedTotalInvoiceAmount(): string {\n return this.totalInvoiceAmount.toFixed(2)\n },\n\n disableSubmit(): boolean {\n if (!this.account.invoicing_feature_flag) {\n return !(this.message.length > 0 && this.totalAmount > 0)\n } else {\n return !(this.message.length > 0 && this.totalInvoiceAmount > 0)\n }\n }\n },\n\n methods: {\n ...mapActions('request_show', [\n 'setDisplayCreateInvoiceMsgBox',\n 'processInvoice',\n 'setCurrentAction',\n 'recalculateAllCosts'\n ]),\n\n ...mapMutations('request_show', [\n 'setTotalSelectedLineItems',\n 'setTotalSelectedSurchargeItems',\n 'setSubtotalInvoiceAmount',\n 'setTotalInvoiceAmount',\n 'setInvoiceItemToEdit',\n 'setInvoiceLineItemType',\n 'setInvoiceLineItemQuantity',\n 'setInvoiceSelectedSurchargeItem',\n 'setInvoiceSelectedLineItem',\n 'setInvoiceAddItemModal',\n 'setActiveModal'\n ]),\n\n truncate,\n\n formatCost(amount: number, maximumFractionDigits: number = 2) {\n return helpers.formatCost(amount, maximumFractionDigits)\n },\n\n openAddItemModal(): void {\n this.resetLineItemState()\n this.setInvoiceItemToEdit(null)\n this.setInvoiceAddItemModal(true)\n },\n\n resetLineItemState(): void {\n this.setInvoiceLineItemType('')\n this.setInvoiceLineItemQuantity(1)\n this.setInvoiceSelectedSurchargeItem('')\n this.setInvoiceSelectedLineItem('')\n },\n\n filterInvoiceTemplates(val: string): void {\n if (val === '') {\n this.templates = this.invoiceTemplates.map(\n (item: InvoiceTemplates) => ({\n value: item.id,\n label: item.invoice_template_name,\n description: item.invoice_template_description\n })\n )\n return\n }\n\n const filteredMsgs = this.invoiceTemplates.filter(\n // eslint-disable-next-line camelcase\n (msg: { invoice_template_name: string }) => {\n const regex = new RegExp(val, 'gi')\n return regex.test(msg.invoice_template_name)\n }\n )\n\n this.templates = filteredMsgs.map((item: InvoiceTemplates) => ({\n value: item.id,\n label: item.invoice_template_name,\n description: item.invoice_template_description\n }))\n },\n\n handleCancelInvoice(): void {\n this.message = ''\n this.selectedInvoiceTemplate = []\n this.totalAmount = ''\n this.setDisplayCreateInvoiceMsgBox(false)\n },\n\n setMessageTemplate(): void {\n this.message = this.selectedInvoiceTemplate\n .map((selected: InvoiceTemplateOption) => {\n return selected.description\n })\n .join(' ')\n },\n\n totalLineItems(): Array<ApiLineItemPayload> {\n return this.totalSelectedLineItems.map(\n (lineItem: SelectedLineItemOption) => {\n return {\n line_item_template_id: lineItem.value,\n name: lineItem.label,\n cost: Number(lineItem.cost),\n quantity: lineItem.total_count || 1,\n description: lineItem.description\n }\n }\n )\n },\n\n totalSurcharges(): Array<ApiSurchargeItemPayload> {\n return this.totalSelectedSurchargeItems.map(\n (surcharge: SurchargeOption) => {\n return {\n surcharge_template_id: surcharge.value,\n name: surcharge.label,\n amount: Number(surcharge.amount),\n cost_type: surcharge.cost_type,\n description: surcharge.description\n }\n }\n )\n },\n\n clearInvoiceLineItems(): void {\n this.setTotalSelectedSurchargeItems([])\n this.setTotalSelectedLineItems([])\n this.setSubtotalInvoiceAmount(0)\n this.setTotalInvoiceAmount(0)\n },\n\n handleSubmitInvoice(): void {\n if (this.account.invoicing_feature_flag) {\n const lineItems = this.totalLineItems()\n const surchargeItems = this.totalSurcharges()\n this.processInvoice({\n action: 'create',\n method: 'post',\n message: this.message,\n request_id: this.request.pretty_id,\n invoice_template_id: this.selectedInvoiceTemplate.id,\n total_amount: this.roundedTotalInvoiceAmount,\n line_items_attributes: lineItems,\n surcharges_attributes: surchargeItems\n }).then(() => {\n this.handleCancelInvoice()\n this.clearInvoiceLineItems()\n })\n } else {\n this.processInvoice({\n action: 'create',\n method: 'post',\n message: this.message,\n request_id: this.request.pretty_id,\n invoice_template_id: this.selectedInvoiceTemplate.id,\n total_amount: this.totalAmount\n }).then(() => {\n this.handleCancelInvoice()\n })\n }\n }\n }\n}\n","import { render } from \"./InvoiceMessageModal.vue?vue&type=template&id=195b8d4c&ts=true\"\nimport script from \"./InvoiceMessageModal.vue?vue&type=script&lang=ts\"\nexport * from \"./InvoiceMessageModal.vue?vue&type=script&lang=ts\"\n\nimport \"./InvoiceMessageModal.vue?vue&type=style&index=0&id=195b8d4c&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"message-contents-field\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"is-size-7 m-bottom-12\" }, \" This message will be visible to staff only and will only post to the request timeline. \", -1)\nconst _hoisted_3 = {\n key: 0,\n class: \"pin-checkbox-field\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrFormLabel = _resolveComponent(\"NrFormLabel\")!\n const _component_nr_editor = _resolveComponent(\"nr-editor\")!\n const _component_NrFormInput = _resolveComponent(\"NrFormInput\")!\n const _component_message_box = _resolveComponent(\"message-box\")!\n\n return ($options.displayNoteMsgBox)\n ? (_openBlock(), _createBlock(_component_message_box, {\n key: 0,\n title: \"New note\",\n \"submit-text\": \"Send notes\",\n type: \"orange\",\n \"disable-submit\": $data.message ? false : true,\n onOnClose: _cache[1] || (_cache[1] = ($event: any) => (_ctx.setDisplayMsgBox(false))),\n onOnCancel: $options.handleCancelMessage,\n onOnSubmit: $options.handleSubmitMessage\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_NrFormLabel, null, {\n default: _withCtx(() => [\n _createTextVNode(\"Note contents\")\n ]),\n _: 1\n }),\n _createVNode(_component_nr_editor, {\n modelValue: $data.message,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => (($data.message) = $event)),\n resizable: false,\n placeholder: 'Type your message here.',\n rows: 10,\n strike: \"\",\n bulletList: \"\",\n orderedList: \"\",\n link: \"\"\n }, null, 8, [\"modelValue\", \"placeholder\"]),\n _hoisted_2,\n ($options.shouldShowPinOption)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(_component_NrFormInput, {\n onChange: $options.changedPin,\n class: \"pin-checkbox\",\n label: \"Pin this note above the timeline\",\n type: \"checkbox\",\n \"aria-labelledby\": \"pin-note-label\",\n \"aria-label\": \"Pin this note above the timeline\"\n }, null, 8, [\"onChange\"])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 1\n }, 8, [\"disable-submit\", \"onOnCancel\", \"onOnSubmit\"]))\n : _createCommentVNode(\"\", true)\n}","\nimport MessageBox from '@nextrequestco/components/src/components/MessageBox/MessageBox.vue'\nimport NrEditor from '@nextrequestco/components/src/components/NrEditor/nr-editor.vue'\nimport NrFormLabel from '@nextrequestco/components/src/components/form-elements/nr-form-label.vue'\nimport NrFormInput from '@nextrequestco/components/src/components/NrFormInput/nr-form-input.vue'\nimport { mapActions, mapState } from 'vuex'\n\nexport default {\n name: 'NoteMessageModal',\n components: { MessageBox, 'nr-editor': NrEditor, NrFormLabel, NrFormInput },\n\n data() {\n return {\n message: '',\n pin: false\n }\n },\n computed: {\n ...mapState({\n hasPinningNotesEnabled: (state) =>\n // @ts-ignore: NEX-9140\n !!(state.account && state.account.pinning_notes_feature_flag)\n }),\n\n ...mapState('request_show', ['displayMsgBox', 'currentAction', 'request']),\n\n shouldShowPinOption(): boolean {\n return (\n this.hasPinningNotesEnabled && this.$can('create', 'RequestEventPin')\n )\n },\n\n displayNoteMsgBox(): boolean {\n return this.displayMsgBox && this.currentAction === 'edit'\n }\n },\n\n methods: {\n ...mapActions('request_show', [\n 'setDisplayMsgBox',\n 'submitInternalMessage'\n ]),\n\n handleCancelMessage(): void {\n this.message = ''\n this.pin = false\n this.setDisplayMsgBox(false)\n },\n\n handleSubmitMessage(): void {\n this.submitInternalMessage({\n note_text: this.message,\n request_id: this.request.pretty_id,\n state: 'staff',\n note_type: 'request-note',\n note_pinned: this.pin\n }).then(() => {\n this.handleCancelMessage()\n })\n },\n\n async changedPin(event) {\n this.pin = event.target.checked\n }\n }\n}\n","import { render } from \"./NoteMessageModal.vue?vue&type=template&id=6b8e4ee4&ts=true\"\nimport script from \"./NoteMessageModal.vue?vue&type=script&lang=ts\"\nexport * from \"./NoteMessageModal.vue?vue&type=script&lang=ts\"\n\nimport \"./NoteMessageModal.vue?vue&type=style&index=0&id=6b8e4ee4&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"message-contents-field\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"is-size-7 m-bottom-12\" }, \" This updated request text will be visible to the requester and changes will post to the request timeline. \", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrFormLabel = _resolveComponent(\"NrFormLabel\")!\n const _component_nr_editor = _resolveComponent(\"nr-editor\")!\n const _component_message_box = _resolveComponent(\"message-box\")!\n\n return (_ctx.displayEditRequestTextBox)\n ? (_openBlock(), _createBlock(_component_message_box, {\n key: 0,\n title: \"Edit request text\",\n \"submit-text\": \"Update request text\",\n type: \"orange\",\n \"disable-submit\": !!_ctx.request.request_text ? false : true,\n onOnClose: _cache[0] || (_cache[0] = ($event: any) => (_ctx.setDisplayEditRequestTextBox(false))),\n onOnCancel: _cache[1] || (_cache[1] = ($event: any) => (_ctx.setDisplayEditRequestTextBox(false))),\n onOnSubmit: $options.handleSubmit\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_NrFormLabel, null, {\n default: _withCtx(() => [\n _createTextVNode(\"Request text\")\n ]),\n _: 1\n }),\n _createVNode(_component_nr_editor, {\n modelValue: _ctx.request.request_text,\n \"onUpdate:modelValue\": $options.updateRequestText,\n resizable: false,\n placeholder: 'Type request text here.',\n rows: 10,\n strike: \"\",\n bulletList: \"\",\n orderedList: \"\",\n link: \"\"\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"placeholder\"]),\n _hoisted_2\n ])\n ]),\n _: 1\n }, 8, [\"disable-submit\", \"onOnSubmit\"]))\n : _createCommentVNode(\"\", true)\n}","\nimport MessageBox from '@nextrequestco/components/src/components/MessageBox/MessageBox.vue'\nimport NrFormLabel from '@nextrequestco/components/src/components/form-elements/nr-form-label.vue'\nimport NrEditor from '@nextrequestco/components/src/components/NrEditor/nr-editor.vue'\nimport NrSentry from '../../../../utils/nr_sentry'\nimport { mapActions, mapState } from 'vuex'\n\nexport default {\n name: 'RequestTextModal',\n components: { MessageBox, 'nr-editor': NrEditor, NrFormLabel },\n data() {\n return {\n requestText: ''\n }\n },\n computed: {\n ...mapState('request_show', [\n 'displayEditRequestTextBox',\n 'currentAction',\n 'request'\n ])\n },\n\n methods: {\n ...mapActions('request_show', [\n 'setDisplayEditRequestTextBox',\n 'updateRequest',\n 'fetchTimeline'\n ]),\n\n updateRequestText(value: string): void {\n this.requestText = value\n },\n\n handleSubmit(): void {\n this.updateRequest({\n request_id: this.request.pretty_id,\n request_text: this.requestText\n })\n .then(() => {\n this.fetchTimeline({\n pretty_id: this.request.pretty_id\n })\n this.setDisplayEditRequestTextBox(false)\n this.$toasted.success('Request text updated successfully')\n })\n .catch((e) => {\n this.$toasted.error('There was an error updating the request')\n NrSentry.captureError(e)\n })\n }\n }\n}\n","import { render } from \"./RequestTextModal.vue?vue&type=template&id=a60cf1c4&ts=true\"\nimport script from \"./RequestTextModal.vue?vue&type=script&lang=ts\"\nexport * from \"./RequestTextModal.vue?vue&type=script&lang=ts\"\n\nimport \"./RequestTextModal.vue?vue&type=style&index=0&id=a60cf1c4&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"message-contents-field\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrSelect = _resolveComponent(\"NrSelect\")!\n const _component_NrIcon = _resolveComponent(\"NrIcon\")!\n const _component_NrDatepicker = _resolveComponent(\"NrDatepicker\")!\n const _component_NrFormLabel = _resolveComponent(\"NrFormLabel\")!\n const _component_nr_editor = _resolveComponent(\"nr-editor\")!\n const _component_message_box = _resolveComponent(\"message-box\")!\n\n return (_ctx.displayCreateTaskMsgBox.display)\n ? (_openBlock(), _createBlock(_component_message_box, {\n key: 0,\n title: \n _ctx.displayCreateTaskMsgBox.type === 'edit' ? 'Edit task' : 'Create task'\n ,\n type: \"default\",\n \"submit-text\": \n _ctx.displayCreateTaskMsgBox.type === 'edit' ? 'Update task' : 'Create task'\n ,\n \"disable-submit\": $options.disableTaskSubmitBtn,\n onOnClose: $options.handleCloseTask,\n onOnSubmit: $options.handleSubmitTask,\n onOnCancel: $options.handleCancelMessage\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createVNode(_component_NrSelect, {\n placeholder: \"Select a user to assign task\",\n modelValue: $data.selectedCreateTaskAssignee,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => (($data.selectedCreateTaskAssignee) = $event)),\n options: $options.requestStaffList\n }, {\n label: _withCtx(() => [\n _createTextVNode(\" User \")\n ]),\n _: 1\n }, 8, [\"modelValue\", \"options\"]),\n _createVNode(_component_NrDatepicker, {\n modelValue: $data.taskDueDate,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => (($data.taskDueDate) = $event)),\n calendarStyles: { position: 'absolute', zIndex: 1 }\n }, {\n label: _withCtx(() => [\n _createTextVNode(\"Due date\")\n ]),\n trigger: _withCtx(() => [\n _createVNode(_component_NrIcon, { name: \"calendar-alt\" })\n ]),\n _: 1\n }, 8, [\"modelValue\"]),\n _createVNode(_component_NrFormLabel, null, {\n default: _withCtx(() => [\n _createTextVNode(\"Message contents\")\n ]),\n _: 1\n }),\n _createVNode(_component_nr_editor, {\n modelValue: $data.taskMsg,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => (($data.taskMsg) = $event)),\n resizable: false,\n rows: 12,\n strike: \"\",\n orderedList: \"\",\n bulletList: \"\",\n link: \"\",\n placeholder: \"Enter your task description here\"\n }, null, 8, [\"modelValue\"])\n ])\n ]),\n _: 1\n }, 8, [\"title\", \"submit-text\", \"disable-submit\", \"onOnClose\", \"onOnSubmit\", \"onOnCancel\"]))\n : _createCommentVNode(\"\", true)\n}","\nimport MessageBox from '@nextrequestco/components/src/components/MessageBox/MessageBox.vue'\nimport NrEditor from '@nextrequestco/components/src/components/NrEditor/nr-editor.vue'\nimport humanFriendlyDateTime from '../../../../mixins/humanFriendlyDateTime'\nimport { mapActions, mapState } from 'vuex'\nimport NrSelect from '@nextrequestco/components/src/components/NrSelect/nr-select.vue'\nimport NrDatepicker from '@nextrequestco/components/src/components/NrDatePicker/nr-datepicker.vue'\nimport NrIcon from '@nextrequestco/components/src/components/NrIcon/NrIcon.vue'\nimport NrFormLabel from '@nextrequestco/components/src/components/form-elements/nr-form-label.vue'\n\nexport default {\n name: 'TaskModal',\n components: {\n NrFormLabel,\n MessageBox,\n 'nr-editor': NrEditor,\n NrSelect,\n NrDatepicker,\n NrIcon\n },\n mixins: [humanFriendlyDateTime],\n created() {\n if (this.$ability.can('read', 'staff_only_items')) {\n this.fetchInvoiceTemplates(this.request.id)\n }\n },\n watch: {\n displayCreateTaskMsgBox(val) {\n if (val.type === 'new') {\n this.taskMsg = ''\n this.taskDueDate = ''\n this.selectedCreateTaskAssignee = null\n }\n if (val.type === 'edit') {\n this.taskDueDate = this.humanFriendlyDate(\n new Date(this.editingTask.due_date)\n )\n this.taskMsg = this.editingTask.description\n this.selectedCreateTaskAssignee = {\n value: this.editingTask.user.id,\n label: this.editingTask.user.name_with_email,\n user_id: this.editingTask.user.id\n }\n }\n }\n },\n data() {\n return {\n selectedCreateTaskAssignee: {},\n taskMsg: '',\n taskDueDate: ''\n }\n },\n computed: {\n ...mapState('request_show', [\n 'requestStaff',\n 'currentAction',\n 'displayCreateTaskMsgBox',\n 'editingTask',\n 'request'\n ]),\n\n disableTaskSubmitBtn() {\n return !(\n this.selectedCreateTaskAssignee &&\n Object.keys(this.selectedCreateTaskAssignee).length &&\n this.taskDueDate &&\n this.taskMsg.length\n )\n },\n\n requestStaffList() {\n return this.requestStaff\n .map((item) => {\n return {\n id: item.id,\n label: item.name_with_email\n }\n })\n .concat([\n { id: this.request.poc.id, label: this.request.poc.name_with_email }\n ])\n }\n },\n\n methods: {\n ...mapActions('request_show', [\n 'submitNewTask',\n 'fetchInvoiceTemplates',\n 'setDisplayCreateTaskMsgBox'\n ]),\n\n handleCancelMessage() {\n this.taskMsg = ''\n this.taskDueDate = null\n this.selectedCreateTaskAssignee = {}\n this.setDisplayCreateTaskMsgBox({ display: false, type: 'new' })\n },\n\n handleCloseTask() {\n this.setDisplayCreateTaskMsgBox({ display: false })\n },\n\n handleSubmitTask() {\n this.submitNewTask({\n action_type: this.displayCreateTaskMsgBox.type,\n description: this.taskMsg,\n due_date: this.humanFriendlyDate(this.taskDueDate),\n request_id: this.request.pretty_id,\n task_id: this.editingTask.id,\n user_id:\n this.selectedCreateTaskAssignee.user_id ||\n this.selectedCreateTaskAssignee.id\n })\n }\n }\n}\n","import { render } from \"./TaskModal.vue?vue&type=template&id=57c552e2&ts=true\"\nimport script from \"./TaskModal.vue?vue&type=script&lang=ts\"\nexport * from \"./TaskModal.vue?vue&type=script&lang=ts\"\n\nimport \"./TaskModal.vue?vue&type=style&index=0&id=57c552e2&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span>\n <ExternalMessageModal />\n <InternalMessageModal />\n <InvoiceMessageModal />\n <NoteMessageModal />\n <TaskModal />\n <RequestTextModal />\n </span>\n</template>\n\n<script>\nimport ExternalMessageModal from './ExternalMessageModal.vue'\nimport InternalMessageModal from './InternalMessageModal.vue'\nimport InvoiceMessageModal from './invoices/InvoiceMessageModal.vue'\nimport NoteMessageModal from './NoteMessageModal'\nimport RequestTextModal from './RequestTextModal'\nimport TaskModal from './TaskModal'\n\nexport default {\n name: 'MessageBoxes',\n components: {\n ExternalMessageModal,\n InvoiceMessageModal,\n InternalMessageModal,\n NoteMessageModal,\n RequestTextModal,\n TaskModal\n }\n}\n</script>\n\n<style lang=\"scss\">\n.message-box {\n .message-box-content {\n flex: 0 1 100%;\n display: flex;\n flex-direction: column;\n }\n .message-contents-field,\n .editor-field {\n display: flex;\n flex-direction: column;\n flex: 0 1 100%;\n }\n\n .nr-editor {\n flex: 1 1 auto;\n }\n\n .nr-datepicker-calendar {\n .nr-datepicker-calendar-header__button {\n border: none;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n }\n .nr-datepicker-calendar-dates .button {\n border-width: inherit;\n padding: inherit;\n }\n .table td,\n .table th {\n padding: inherit;\n border: inherit;\n }\n }\n}\n</style>\n","import { render } from \"./MessageBoxes.vue?vue&type=template&id=2c1ede9d\"\nimport script from \"./MessageBoxes.vue?vue&type=script&lang=js\"\nexport * from \"./MessageBoxes.vue?vue&type=script&lang=js\"\n\nimport \"./MessageBoxes.vue?vue&type=style&index=0&id=2c1ede9d&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import MessageBoxes from './MessageBoxes'\n\nexport default MessageBoxes\n","import { createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, withModifiers as _withModifiers } from \"vue\"\n\nconst _hoisted_1 = { class: \"panel custom-fields-panel p-bottom-4\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"panel-heading has-background-light has-text-weight-semibold is-size-4\" }, \" Additional information \", -1)\nconst _hoisted_3 = {\n key: 0,\n class: \"panel-content\"\n}\nconst _hoisted_4 = { class: \"has-text-weight-semibold\" }\nconst _hoisted_5 = { class: \"panel-item\" }\nconst _hoisted_6 = { class: \"m-left-8 m-bottom-12\" }\nconst _hoisted_7 = { key: 0 }\nconst _hoisted_8 = {\n key: 1,\n class: \"is-italic\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrIconButton = _resolveComponent(\"NrIconButton\")!\n const _component_NrTooltip = _resolveComponent(\"NrTooltip\")!\n const _component_NrLoadingAnimation = _resolveComponent(\"NrLoadingAnimation\")!\n const _component_NrFormInput = _resolveComponent(\"NrFormInput\")!\n const _component_NrModal = _resolveComponent(\"NrModal\")!\n\n return (_openBlock(), _createElementBlock(\"article\", _hoisted_1, [\n _hoisted_2,\n (!_ctx.filteredRequestLoading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.fields, (field) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: field.slug,\n class: \"panel-content-section\"\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"panel-item is-flex is-align-items-center is-justify-content-space-between\", {\n 'panel-item--editable': _ctx.$can('manage', 'Request')\n }])\n }, [\n _createElementVNode(\"p\", _hoisted_4, _toDisplayString(field.label), 1),\n (_ctx.$can('manage', 'Request'))\n ? (_openBlock(), _createBlock(_component_NrTooltip, {\n key: 0,\n label: \"Edit\"\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrIconButton, {\n variant: \"minimal-neutral\",\n icon: { name: 'pencil-alt', type: 'regular' },\n \"aria-label\": `Edit: ${field.label}`,\n onClick: ($event: any) => (_ctx.handleEditField(field.slug))\n }, null, 8, [\"aria-label\", \"onClick\"])\n ]),\n _: 2\n }, 1024))\n : _createCommentVNode(\"\", true)\n ], 2),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"p\", _hoisted_6, [\n (!!field.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_7, _toDisplayString(field.value), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_8, \"No data entered\"))\n ])\n ])\n ]))\n }), 128))\n ]))\n : (_openBlock(), _createBlock(_component_NrLoadingAnimation, {\n key: 1,\n count: 3\n })),\n _createVNode(_component_NrModal, {\n title: \"Edit additional information\",\n secondaryButtonText: \"Cancel\",\n primaryButtonText: \"Update information\",\n hasSecondaryButton: true,\n show: _ctx.showModal,\n onOnCloseClick: _ctx.handleCloseModal,\n onOnSecondaryClick: _ctx.handleCloseModal,\n onOnPrimaryClick: _ctx.handleUpdate\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"form\", {\n onSubmit: _cache[1] || (_cache[1] = _withModifiers(() => {}, [\"prevent\",\"stop\"]))\n }, [\n _createElementVNode(\"fieldset\", null, [\n _createVNode(_component_NrFormInput, {\n id: \"custom-field\",\n label: _ctx.tmp.label,\n modelValue: _ctx.tmp.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.tmp.value) = $event))\n }, null, 8, [\"label\", \"modelValue\"])\n ])\n ], 32)\n ]),\n _: 1\n }, 8, [\"show\", \"onOnCloseClick\", \"onOnSecondaryClick\", \"onOnPrimaryClick\"])\n ]))\n}","\nimport { defineComponent } from 'vue'\nimport { mapActions, mapState } from 'vuex'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrFormInput from '@nextrequestco/components/src/components/NrFormInput/nr-form-input.vue'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrLoadingAnimation from '@nextrequestco/components/src/components/NrLoadingAnimation/nr-loading-animation.vue'\n\nexport default defineComponent({\n name: 'request-custom-fields',\n components: {\n NrTooltip,\n NrIconButton,\n NrModal,\n NrFormInput,\n NrLoadingAnimation\n },\n props: {\n prettyId: { type: String },\n fields: { type: Array }\n },\n data() {\n return {\n showModal: false,\n tmp: {\n slug: null,\n label: null,\n value: null\n }\n }\n },\n computed: {\n ...mapState('request_show', ['request', 'filteredRequestLoading'])\n },\n methods: {\n ...mapActions('request_show', ['updateCustomField']),\n\n resetForm() {\n this.tmp = {\n slug: null,\n label: null,\n value: null\n }\n },\n\n handleEditField(slug: string | null = null) {\n this.showModal = true\n const activeField = this.fields.find(\n (field: { slug: string; label: string; value: any }) =>\n field.slug === slug\n )\n if (!activeField) {\n return\n }\n this.tmp = activeField\n },\n\n handleCloseModal() {\n this.showModal = false\n this.resetForm()\n },\n\n handleUpdate() {\n this.$toasted.success('Additional information updated successfully')\n this.updateCustomField({\n prettyId: this.prettyId,\n field: this.tmp\n })\n this.handleCloseModal()\n }\n }\n})\n","import { render } from \"./CustomFields.vue?vue&type=template&id=5c20fca5&ts=true\"\nimport script from \"./CustomFields.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomFields.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7d7a88e2\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"fields-note\" }, [\n /*#__PURE__*/_createTextVNode(\" Fields with \"),\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"required-indicator\" }, \"*\"),\n /*#__PURE__*/_createTextVNode(\" are required \")\n], -1))\n\nimport { ref, getCurrentInstance } from 'vue'\nimport { useStore } from 'vuex'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport {\n CheckboxFieldValue,\n RequestFieldValue,\n TextFieldValue\n} from 'src/pages/request_show/store/request_state_declarations'\nimport RequestFieldInput from '../../../vue_shared/components/RequestFieldInput.vue'\n\ninterface RequestFieldEditModalProps {\n field: RequestFieldValue\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'RequestFieldEditModal',\n props: {\n field: {}\n },\n emits: ['close'],\n setup(__props: any, { emit: __emit }) {\n\nconst props = __props\nconst emit = __emit\n\nconst store = useStore()\nconst instance = getCurrentInstance()\nconst globalProperties = instance?.appContext.config.globalProperties\n\nconst fieldValue = ref<TextFieldValue | CheckboxFieldValue>(props.field?.value)\nconst updating = ref(false)\n\nconst handleClose = () => {\n emit('close')\n}\n\nconst handleSave = async () => {\n if (!props.field) return\n\n try {\n updating.value = true\n const requestId = store.state.request_show.request.pretty_id\n\n if (props.field.id) {\n await store.dispatch('request_show/updateFieldValue', {\n id: props.field.id,\n value: fieldValue.value,\n requestId\n })\n globalProperties?.$toasted.success('Successfully updated field value.')\n } else {\n await store.dispatch('request_show/createFieldValue', {\n requestFieldVersionId: props.field.request_field_version.id,\n value: fieldValue.value,\n requestId\n })\n globalProperties?.$toasted.success('Successfully added field value.')\n }\n\n await store.dispatch('request_show/fetchRequest', requestId)\n handleClose()\n } catch (error) {\n handleError(error)\n } finally {\n updating.value = false\n }\n}\n\nconst handleError = (error: unknown) => {\n let errorMessage =\n 'There has been an error saving the field value. Please refresh the page and try again.'\n if (error instanceof Error) {\n errorMessage = `Error saving field value: ${error.message}`\n }\n globalProperties?.$toasted.error(errorMessage)\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(NrModal, {\n show: true,\n title: props.field.id ? 'Edit field' : 'Add field value',\n primaryButtonText: \"Continue\",\n secondaryButtonText: \"Cancel\",\n hasSecondaryButton: true,\n disableButtons: updating.value,\n onOnPrimaryClick: handleSave,\n onOnSecondaryClick: handleClose,\n onOnCloseClick: handleClose\n }, {\n default: _withCtx(() => [\n _hoisted_1,\n _createVNode(RequestFieldInput, {\n definition: {\n field_type: props.field.field_type,\n type_settings: props.field.type_settings\n },\n modelValue: fieldValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => (fieldValue.value = $event))\n }, null, 8, [\"definition\", \"modelValue\"])\n ]),\n _: 1\n }, 8, [\"title\", \"disableButtons\"]))\n}\n}\n\n})","import script from \"./RequestFieldEditModal.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./RequestFieldEditModal.vue?vue&type=script&lang=ts&setup=true\"\n\nimport \"./RequestFieldEditModal.vue?vue&type=style&index=0&id=7d7a88e2&lang=scss&scoped=true\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-7d7a88e2\"]])\n\nexport default __exports__","/* eslint-disable camelcase */\nimport {\n TextSettings,\n CheckboxSettings\n} from '../../../vue_shared/types/request_fields'\n\nexport enum RequestFieldType {\n Text = 'text',\n Checkbox = 'checkbox'\n}\n\nexport type TextFieldValue = string | null\nexport type CheckboxFieldValue = Array<{ name: string; uuid: string }>\n\ninterface FieldValueMap {\n [RequestFieldType.Text]: TextFieldValue\n [RequestFieldType.Checkbox]: CheckboxFieldValue\n}\n\ninterface FieldSettingsMap {\n [RequestFieldType.Text]: TextSettings\n [RequestFieldType.Checkbox]: CheckboxSettings\n}\n\ntype RequestFieldTypedValue = {\n [K in RequestFieldType]: {\n field_type: K\n value: FieldValueMap[K]\n type_settings: FieldSettingsMap[K]\n }\n}[RequestFieldType]\n\nexport enum EditingAccess {\n ADMIN = 0,\n PUBLISHER = 1,\n REQUESTER = 2\n}\ntype RequestFieldVersion = {\n editing_access: EditingAccess\n visibility: number\n id: number\n}\n\nexport type RequestFieldValue = {\n id: number\n field_settings_have_changed: boolean\n display_name: string\n field_value_was_edited: boolean\n request_field_version: RequestFieldVersion\n} & RequestFieldTypedValue\n\ninterface Poc {\n id: boolean\n email_or_name: string\n has_tasks: boolean\n name_with_email: string\n undeliverable_email: boolean\n}\n\nexport interface Request {\n anticipated_fulfilled_at: string\n custom_fields: object | null\n department_names: string\n departments: Array<any>\n exempt_from_retention: boolean\n is_current_requester: boolean\n poc: Poc\n pretty_id: string\n request_date: string\n request_due_date: string\n request_staff_cost: string\n request_staff_hours: string\n request_state: string\n request_text: string\n request_visibility: string\n request_submit_type: string\n requester: object\n visibility: string\n request_field_values: Array<RequestFieldValue>\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createVNode as _createVNode, withCtx as _withCtx, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"panel custom-fields-panel p-bottom-4\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"panel-heading has-background-light has-text-weight-semibold is-size-4\" }, \" Additional information \", -1)\nconst _hoisted_3 = {\n key: 0,\n class: \"panel-content\"\n}\nconst _hoisted_4 = { class: \"panel-item is-flex is-align-items-center is-justify-content-space-between\" }\nconst _hoisted_5 = { class: \"has-text-weight-semibold is-flex is-align-items-center\" }\nconst _hoisted_6 = { class: \"info-icon m-left-8\" }\nconst _hoisted_7 = { class: \"panel-item\" }\nconst _hoisted_8 = { class: \"m-left-8 m-bottom-12\" }\nconst _hoisted_9 = { key: 0 }\nconst _hoisted_10 = {\n key: 1,\n class: \"is-italic\"\n}\n\nimport { computed, ref } from 'vue'\nimport { useStore } from 'vuex'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrLoadingAnimation from '@nextrequestco/components/src/components/NrLoadingAnimation/nr-loading-animation.vue'\nimport RequestFieldEditModal from './RequestFieldEditModal.vue'\nimport {\n EditingAccess,\n RequestFieldType,\n RequestFieldValue\n} from 'src/pages/request_show/store/request_state_declarations'\nimport { UserState } from 'src/store/globalModule'\n\ninterface RequestFieldValuesProps {\n fields: RequestFieldValue[]\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'RequestFieldValues',\n props: {\n fields: {}\n },\n setup(__props: any) {\n\nconst props = __props\nconst store = useStore()\n\n/**\n * Determines if the current user can edit a given field.\n *\n * Note: Direct permission logic is used here because CASL didn't properly evaluate\n * field.request_field_version.editing_access conditions despite correct backend configuration.\n * This manual check follows the same permission rules:\n * - Admins: can edit any field\n * - Publishers/Department Admins: can edit fields with editing_access 1 or 2\n * - Requesters: can edit their own fields if editing_access is 2\n */\nconst canEditField = (field: RequestFieldValue) => {\n const currentUser: UserState = store.state.currentUser\n const role = currentUser.user_role\n\n const editingAccess = field.request_field_version?.editing_access\n\n if (typeof editingAccess === 'undefined') {\n return false\n }\n\n if (role === 'admin') {\n return true\n }\n\n if (\n (role === 'publisher' || role === 'department_admin') &&\n (editingAccess === EditingAccess.PUBLISHER ||\n editingAccess === EditingAccess.REQUESTER)\n ) {\n return true\n }\n\n if (editingAccess === EditingAccess.REQUESTER) {\n const isRequester = store.state.request_show?.request?.is_current_requester\n if (isRequester) {\n return true\n }\n }\n\n return false\n}\n\nconst showEditModal = ref(false)\nconst selectedField = ref<RequestFieldValue | null>(null)\n\nconst filteredRequestLoading = computed(\n () => store.state.request_show.filteredRequestLoading\n)\n\nconst openEditModal = (field: RequestFieldValue) => {\n selectedField.value = field\n showEditModal.value = true\n}\n\nconst closeEditModal = () => {\n showEditModal.value = false\n selectedField.value = null\n}\n\nconst formatValue = (field: RequestFieldValue) => {\n switch (field.field_type) {\n case RequestFieldType.Text:\n return field.value\n case RequestFieldType.Checkbox:\n return Array.isArray(field.value)\n ? field.value.map((option) => option.name).join(', ')\n : ''\n }\n}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"article\", _hoisted_1, [\n _hoisted_2,\n (!filteredRequestLoading.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(props.fields, (field) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: field.id || `new-field-${field.field_id}`,\n class: \"panel-content-section\"\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"p\", _hoisted_5, [\n _createTextVNode(_toDisplayString(field.display_name) + \" \", 1),\n (\n field.id &&\n (field.field_settings_have_changed ||\n field.field_value_was_edited)\n )\n ? (_openBlock(), _createBlock(NrTooltip, {\n key: 0,\n label: \"This field has changed since the making of the request\"\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", _hoisted_6, [\n _createVNode(NrIconButton, {\n variant: \"minimal-neutral\",\n icon: { name: 'info-circle', type: 'regular' },\n \"aria-label\": 'Field change information'\n })\n ])\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true)\n ]),\n (canEditField(field))\n ? (_openBlock(), _createBlock(NrTooltip, {\n key: 0,\n label: \"Edit field\",\n class: \"panel-item-edit\"\n }, {\n default: _withCtx(() => [\n _createVNode(NrIconButton, {\n variant: \"minimal-neutral\",\n icon: { name: 'pencil-alt', type: 'regular' },\n \"aria-label\": `Edit ${field.display_name}`,\n onClick: ($event: any) => (openEditModal(field))\n }, null, 8, [\"aria-label\", \"onClick\"])\n ]),\n _: 2\n }, 1024))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"p\", _hoisted_8, [\n (field.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_9, _toDisplayString(formatValue(field)), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_10, \"No data entered\"))\n ])\n ])\n ]))\n }), 128))\n ]))\n : (_openBlock(), _createBlock(NrLoadingAnimation, {\n key: 1,\n count: 3\n })),\n (selectedField.value && showEditModal.value)\n ? (_openBlock(), _createBlock(RequestFieldEditModal, {\n key: 2,\n field: selectedField.value,\n onClose: closeEditModal\n }, null, 8, [\"field\"]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./RequestFieldValues.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./RequestFieldValues.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"span\", null, \"Closure templates\", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrSelect = _resolveComponent(\"NrSelect\")!\n const _component_NrFormLabel = _resolveComponent(\"NrFormLabel\")!\n const _component_nr_editor = _resolveComponent(\"nr-editor\")!\n const _component_NrFormSelect = _resolveComponent(\"NrFormSelect\")!\n const _component_nr_modal = _resolveComponent(\"nr-modal\")!\n\n return (_openBlock(), _createBlock(_component_nr_modal, {\n \"primary-button-text\": \"Close request\",\n \"secondary-button-text\": \"Cancel\",\n title: \"Close request\",\n \"has-secondary-button\": true,\n show: !!$props.active,\n onOnCloseClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.$emit('on-close'))),\n onOnPrimaryClick: $options.submitForm,\n onOnSecondaryClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.$emit('on-close')))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_NrSelect, {\n \"append-to-body\": \"\",\n uid: \"closure_templates\",\n multiple: \"\",\n modelValue: $data.selectedClosureTemplates,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => (($data.selectedClosureTemplates) = $event)),\n options: _ctx.closureTemplates,\n onSearch: $options.filterClosureTemplates,\n onLoadMore: $options.loadMoreClosureTemplates,\n hasMore: $data.closureReasonsHasMore,\n onInput: $options.setClosureTemplate\n }, {\n label: _withCtx(() => [\n _hoisted_1\n ]),\n _: 1\n }, 8, [\"modelValue\", \"options\", \"onSearch\", \"onLoadMore\", \"hasMore\", \"onInput\"]),\n _createVNode(_component_NrFormLabel, null, {\n default: _withCtx(() => [\n _createTextVNode(\"Closure template editor\")\n ]),\n _: 1\n }),\n _createVNode(_component_nr_editor, {\n bulletList: \"\",\n orderedList: \"\",\n link: \"\",\n autofocus: \"\",\n placeholder: \"Type your message here or select a template above.\",\n rows: 8,\n \"data-id\": \"closure_text\",\n modelValue: $data.closureText,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => (($data.closureText) = $event))\n }, null, 8, [\"modelValue\"]),\n _createVNode(_component_NrFormSelect, {\n label: \"Request visibility\",\n modelValue: $data.selectedRequestVisibility,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => (($data.selectedRequestVisibility) = $event)),\n placeholder: \n $data.selectedRequestVisibility && $data.selectedRequestVisibility.label\n ? $data.selectedRequestVisibility.label\n : ''\n ,\n options: $options.reqVisibilities\n }, null, 8, [\"modelValue\", \"placeholder\", \"options\"])\n ]),\n _: 1\n }, 8, [\"show\", \"onOnPrimaryClick\"]))\n}","\nimport { mapState, mapActions } from 'vuex'\nimport NrSelect from '@nextrequestco/components/src/components/NrSelect/nr-select.vue'\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport NrEditor from '@nextrequestco/components/src/components/NrEditor/nr-editor.vue'\nimport { debounce } from 'lodash'\nimport NrFormSelect from '@nextrequestco/components/src/components/NrFormSelect/nr-form-select'\nimport NrFormLabel from '@nextrequestco/components/src/components/form-elements/nr-form-label.vue'\nimport {\n RequestVisibility,\n accountRequestVisibilities\n} from '../../../store/globalModule'\n\ninterface ClosureTemplate {\n id: number\n label: string\n description: string\n}\n\nexport default {\n props: {\n active: {\n type: Boolean,\n default: false\n }\n },\n components: { NrModal, NrEditor, NrFormSelect, NrSelect, NrFormLabel },\n data() {\n return {\n selectedClosureTemplates: [],\n templates: [],\n closureText: '',\n selectedRequestVisibility: '',\n closureReasonsPageNumber: 1,\n closureReasonsHasMore: true\n }\n },\n mounted() {\n this.setupCurrentReqVisiOption()\n this.fetchClosureTemplates()\n },\n methods: {\n ...mapActions('request_show', ['fetchClosureTemplates']),\n setClosureTemplate(temp: ClosureTemplate[]): void {\n if (!temp) {\n this.closureText = ''\n return\n }\n\n this.closureText = temp\n .map((template) => template.description)\n .join('<br />')\n },\n filterClosureTemplates: debounce(function (temp: string): void {\n this.closureReasonsPageNumber = 0\n this.fetchClosureTemplates({\n search_text: temp,\n page_number: this.closureReasonsPageNumber\n }).then((hasMore) => {\n this.closureReasonsHasMore = hasMore\n })\n }, 300),\n loadMoreClosureTemplates: debounce(function (temp: string): void {\n this.closureReasonsPageNumber += 1\n this.fetchClosureTemplates({\n search_text: temp,\n page_number: this.closureReasonsPageNumber\n }).then((hasMore) => {\n this.closureReasonsHasMore = hasMore\n })\n }, 300),\n setupCurrentReqVisiOption(): void {\n const visi = this.reqVisibilities.find(\n (el: RequestVisibility) => el.value === this.request.visibility\n )\n this.selectedRequestVisibility = visi?.value\n },\n submitForm(): void {\n const params = {\n pretty_id: this.request.pretty_id\n }\n if (this.selectedRequestVisibility) {\n Object.assign(params, {\n visibility: this.selectedRequestVisibility\n })\n }\n if (this.selectedClosureTemplates.length) {\n Object.assign(params, {\n close_description: this.closureText ? this.closureText : '',\n close_reasons: this.selectedClosureTemplates.map(\n (template) => template.id\n )\n })\n } else {\n this.$toasted.error('You must select a reason for closing the request')\n return\n }\n this.$emit('on-submit', params)\n }\n },\n watch: {\n active(isActive) {\n if (isActive) {\n this.setupCurrentReqVisiOption()\n }\n }\n },\n computed: {\n ...mapState(['account']),\n ...mapState('request_show', ['request', 'closureTemplates']),\n reqVisibilities(): RequestVisibility[] {\n return accountRequestVisibilities(this.account)\n }\n }\n}\n","import { render } from \"./CloseRequestModal.vue?vue&type=template&id=7e923c8f&ts=true\"\nimport script from \"./CloseRequestModal.vue?vue&type=script&lang=ts\"\nexport * from \"./CloseRequestModal.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, withCtx as _withCtx } from \"vue\"\n\nconst _hoisted_1 = { class: \"is-size-5 has-text-weight-bold section-label\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"is-italic\"\n}\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"p\", { class: \"is-size-5 has-text-weight-bold section-label\" }, \"Message\", -1)\nconst _hoisted_4 = [\"innerHTML\"]\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"div\", { id: \"stripe-mount\" }, null, -1)\nconst _hoisted_6 = {\n key: 0,\n class: \"error has-text-danger\"\n}\nconst _hoisted_7 = [\"action\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NrFormInput = _resolveComponent(\"NrFormInput\")!\n const _component_NrModal = _resolveComponent(\"NrModal\")!\n\n return (_openBlock(), _createBlock(_component_NrModal, {\n show: $props.show,\n class: \"request-payments-form\",\n \"has-secondary-button\": true,\n title: \"Make payment\",\n \"primary-button-text\": \"Submit payment\",\n \"secondary-button-text\": \"Cancel\",\n \"disable-buttons\": $data.disableSubmit,\n onOnPrimaryClick: $options.submitPayment,\n onOnSecondaryClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.setActiveModal(''))),\n onOnClose: _cache[2] || (_cache[2] = ($event: any) => (_ctx.setActiveModal('')))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"p\", _hoisted_1, \" Amount: \" + _toDisplayString($options.invoiceAmount), 1),\n ($options.invoiceFeesText)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_2, _toDisplayString($options.invoiceFeesText), 1))\n : _createCommentVNode(\"\", true),\n _hoisted_3,\n _createElementVNode(\"div\", {\n class: \"content\",\n innerHTML: $props.invoice.message\n }, null, 8, _hoisted_4),\n (_ctx.account && _ctx.account.stripe_activated)\n ? (_openBlock(), _createElementBlock(\"form\", {\n key: 1,\n onSubmit: _cache[0] || (_cache[0] = _withModifiers(\n//@ts-ignore\n(...args) => ($options.submitPayment && $options.submitPayment(...args)), [\"prevent\"]))\n }, [\n _hoisted_5,\n ($data.error)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_6, _toDisplayString($data.error), 1))\n : _createCommentVNode(\"\", true)\n ], 32))\n : _createCommentVNode(\"\", true),\n (\n _ctx.account &&\n (_ctx.account.cybersource_activated || _ctx.account.cybersource_test_activated)\n )\n ? (_openBlock(), _createElementBlock(\"form\", {\n key: 2,\n ref: \"cybersourceForm\",\n method: \"post\",\n action: $data.cybersource.form_action\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(Object.entries($data.cybersource.params || {}), ([field, value]) => {\n return (_openBlock(), _createBlock(_component_NrFormInput, {\n key: field,\n type: \"hidden\",\n name: field,\n modelValue: value\n }, null, 8, [\"name\", \"modelValue\"]))\n }), 128))\n ], 8, _hoisted_7))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"show\", \"disable-buttons\", \"onOnPrimaryClick\"]))\n}","import * as http from '../../../vue_shared/http'\nimport { stringify } from '../../../vue_shared/query_params'\n\n/* eslint-disable camelcase */\nexport interface CivicPlusPayParams {\n invoice_id: number | string\n}\n\nexport interface CivicPlusPayData {\n redirect: string\n}\n\nexport async function fetchCivicPlusPayData(\n params: CivicPlusPayParams\n): Promise<CivicPlusPayData> {\n return http.get<CivicPlusPayData>(\n `/client/payments/civicplus_pay_hosted_form?${stringify(params)}`\n )\n}\n","\nimport NrModal from '@nextrequestco/components/src/components/NrModal/nr-modal.vue'\nimport { mapActions, mapState } from 'vuex'\nimport {\n createStripePaymentIntent,\n confirmStripePayment\n} from '../store/stripe_model'\nimport { fetchCybersourceData } from '../store/cybersource_model'\nimport { fetchCivicPlusPayData } from '../store/civicplus_pay_model'\nimport NrFormInput from '@nextrequestco/components/src/components/NrFormInput/nr-form-input.vue'\n\nexport default {\n name: 'RequestPaymentsModal',\n components: {\n NrModal,\n NrFormInput\n },\n props: {\n show: {\n type: Boolean,\n default: false\n },\n invoice: {\n type: Object,\n default: () => ({})\n }\n },\n data() {\n return {\n stripe: null,\n stripeClientSecret: null,\n stripePaymentIntentId: null,\n stripeCard: null,\n cybersource: {},\n civicplus_pay_redirect_link: null,\n disableSubmit: true,\n error: null\n }\n },\n computed: {\n ...mapState(['account']),\n ...mapState('request_show', ['request', 'activeModal', 'requestInvoices']),\n invoiceAmount(): string {\n return (this.invoice?.total_with_fees / 100).toLocaleString('en-US', {\n style: 'currency',\n currency: 'USD'\n })\n },\n invoiceFeesText(): string | null {\n const fees = this.invoice?.total_with_fees - this.invoice?.total_amount\n if (fees > 0) {\n return `* Includes ${(fees / 100).toLocaleString('en-US', {\n style: 'currency',\n currency: 'USD'\n })} convenience fee`\n }\n return null\n }\n },\n watch: {\n async show() {\n if (!this.show) return\n if (this.account.civicplus_pay_activated) {\n try {\n const response = await fetchCivicPlusPayData({\n invoice_id: this.invoice.id\n })\n this.civicplus_pay_redirect_link = response.redirect\n this.disableSubmit = false\n } catch (_err) {\n this.$toasted.error('Failed to fetch civic plus pay data')\n }\n } else if (this.account.stripe_activated) {\n this.createStripePaymentIntent()\n } else if (\n this.account.cybersource_activated ||\n this.account.cybersource_test_activated\n ) {\n this.fetchCybersourceData()\n }\n }\n },\n methods: {\n ...mapActions('request_show', ['setActiveModal', 'fetchRequestInvoices']),\n fetchCybersourceData() {\n fetchCybersourceData({ invoice_id: this.invoice.id })\n .then((data) => {\n this.cybersource = data\n this.disableSubmit = false\n })\n .catch(() => {\n this.error = 'There was a problem loading payment information'\n })\n },\n createStripePaymentIntent(): void {\n createStripePaymentIntent({ invoice_id: this.invoice.id }).then(\n ({\n publishable_key: apiKey,\n client_secret: clientSecret,\n payment_intent_id: paymentIntentId\n }) => {\n this.stripe = (window as any).Stripe(apiKey)\n this.stripeClientSecret = clientSecret\n this.stripePaymentIntentId = paymentIntentId\n this.setupCard()\n }\n )\n },\n setupCard(): void {\n this.card = this.stripe.elements().create('card', {\n style: {\n base: {\n color: '#32325d',\n fontFamily: 'Open Sans, Arial, sans-serif',\n fontSmoothing: 'antialiased',\n fontSize: '16px',\n '::placeholder': {\n color: '#32325d'\n }\n },\n invalid: {\n fontFamily: 'Open Sans, Arial, sans-serif',\n color: '#fa755a',\n iconColor: '#fa755a'\n }\n }\n })\n this.card.mount('#stripe-mount')\n this.disableSubmit = false\n this.card.on('change', (evt) => {\n this.disableSubmit = evt.empty\n this.error = evt.error?.message\n })\n },\n submitPayment(): void {\n if (\n this.account.civicplus_pay_activated &&\n this.civicplus_pay_redirect_link\n ) {\n window.location.replace(this.civicplus_pay_redirect_link)\n } else if (this.account.cybersource_activated) {\n this.submitCybersourcePayment()\n } else if (this.account.cybersource_test_activated) {\n this.submitCybersourcePayment()\n } else if (this.account.stripe_activated) {\n this.submitStripePayment()\n }\n },\n submitCybersourcePayment(): void {\n // Submitting the form and relying on the webhook to mark it as paid\n this.$refs.cybersourceForm.submit()\n },\n submitStripePayment(): void {\n this.disableSubmit = true\n this.stripe\n .confirmCardPayment(this.stripeClientSecret, {\n payment_method: {\n card: this.card\n }\n })\n .then((res) => {\n if (res.error) {\n this.disableSubmit = false\n this.error = res.error?.message\n } else {\n this.onCompleteStripePayment()\n }\n })\n },\n onCompleteStripePayment(): void {\n confirmStripePayment({\n invoice_id: this.invoice.id,\n payment_intent_id: this.stripePaymentIntentId\n })\n .then(() => {\n this.fetchRequestInvoices(this.request.pretty_id)\n this.$toasted.success('Invoice paid')\n this.setActiveModal('')\n })\n .catch(() => {\n this.error = 'There was an error submitting your payment'\n })\n }\n }\n}\n","import * as http from '../../../vue_shared/http'\nimport { stringify } from '../../../vue_shared/query_params'\n\n/* eslint-disable camelcase */\nexport interface CybersourceParms {\n invoice_id: number | string\n}\n\nexport interface CybersourceFormData {\n signature: string\n access_key: string\n amount: number | string\n currency: string\n locale: string\n profile_id: string\n merchant_defined_data5: number | string\n reference_number: number | string\n signed_date_time: string\n signed_field_names: string[]\n transaction_type: string\n transaction_uuid: string\n unsigned_field_names: string\n}\n\nexport interface CybersourceData {\n form_action: string\n params: CybersourceFormData\n}\n\n/* eslint-enable camelcase */\n\nexport async function fetchCybersourceData(\n params: CybersourceParms\n): Promise<CybersourceData> {\n return http.get<CybersourceData>(\n `/client/payments/cybersource_data?${stringify(params)}`\n )\n}\n","import * as http from '../../../vue_shared/http'\n\n/* eslint-disable camelcase */\nexport interface StripePaymentIntentParams {\n invoice_id: number | string\n}\n\nexport interface StripePaymentIntent {\n publishable_key: string\n client_secret: string\n payment_intent_id: string\n}\n\nexport interface StripePaymentConfirm {\n invoice_id: number | string\n payment_intent_id: string\n}\n/* eslint-enable camelcase */\n\nexport async function createStripePaymentIntent(\n params: StripePaymentIntentParams\n): Promise<StripePaymentIntent> {\n return http.post<StripePaymentIntentParams, StripePaymentIntent>(\n `/client/payments/stripe_payment_intent`,\n params\n )\n}\n\nexport async function confirmStripePayment(\n params: StripePaymentConfirm\n): Promise<StripePaymentConfirm> {\n return http.post<StripePaymentConfirm, StripePaymentConfirm>(\n `/client/payments/stripe_payment_confirm`,\n params\n )\n}\n","import { render } from \"./RequestPaymentsModal.vue?vue&type=template&id=657b6a6d&ts=true\"\nimport script from \"./RequestPaymentsModal.vue?vue&type=script&lang=ts\"\nexport * from \"./RequestPaymentsModal.vue?vue&type=script&lang=ts\"\n\nimport \"./RequestPaymentsModal.vue?vue&type=style&index=0&id=657b6a6d&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<script>\nimport NrIconButton from '@nextrequestco/components/src/components/NrIconButton/nr-icon-button.vue'\nimport NrTooltip from '@nextrequestco/components/src/components/NrTooltip/NrTooltip.vue'\nimport { mapState, mapMutations } from 'vuex'\n\nexport default {\n components: {\n NrIconButton,\n NrTooltip\n },\n\n props: {\n prettyId: { type: String, required: true }\n },\n\n computed: {\n ...mapState('requests', ['requests', 'filters']),\n ...mapState('request_show', ['filteredRequestLoading']),\n\n currentRequestIndex() {\n return this.requests.findIndex(\n (request) => String(this.prettyId) === String(request.id)\n )\n },\n\n disablePrevArrow() {\n return !this.cyclingEnabled || this.currentRequestIndex <= 0\n },\n\n disableNextArrow() {\n return (\n !this.cyclingEnabled ||\n this.currentRequestIndex >= this.requests.length - 1\n )\n },\n\n disabledNextArrowTooltip() {\n if (!this.cyclingEnabled) {\n return 'Request cycling is not active.'\n } else if (this.requests.length > 99) {\n return 'Only 100 requests can by cycled at one time. Adjust filters to narrow the scope of your search.'\n } else {\n return 'No more requests match your current filters.'\n }\n },\n\n cyclingEnabled() {\n return this.filters.page_number === 1 && this.currentRequestIndex >= 0\n }\n },\n\n methods: {\n ...mapMutations('request_show', ['setFilteredRequestLoading']),\n handlePrevClick() {\n this.setFilteredRequestLoading(true)\n this.$router.push(`/requests/${this.getPrevRequest()}`)\n },\n\n handleNextClick() {\n this.setFilteredRequestLoading(true)\n this.$router.push(`/requests/${this.getNextRequest()}`)\n },\n\n getNextRequest() {\n const request = this.requests[this.currentRequestIndex + 1]\n if (!request) return\n return request.id\n },\n\n getPrevRequest() {\n const request = this.requests[this.currentRequestIndex - 1]\n if (!request) return\n return request.id\n }\n }\n}\n</script>\n\n<template>\n <div v-if=\"cyclingEnabled\" class=\"request-show-title\">\n <NrIconButton\n v-if=\"!disablePrevArrow\"\n aria-label=\"previous page\"\n class=\"m-right-8\"\n size=\"normal\"\n :icon=\"{ name: 'chevron-left' }\"\n :disabled=\"filteredRequestLoading\"\n variant=\"bordered-primary\"\n @click=\"handlePrevClick\"\n />\n\n <NrTooltip\n v-if=\"disablePrevArrow\"\n label=\"This is the first request matching your filters.\"\n >\n <NrIconButton\n size=\"normal\"\n class=\"m-right-8\"\n :disabled=\"true\"\n aria-label=\"disabled previous page\"\n :icon=\"{ name: 'chevron-left' }\"\n variant=\"bordered-primary\"\n @click=\"handlePrevClick\"\n />\n </NrTooltip>\n\n <NrIconButton\n v-if=\"!disableNextArrow\"\n size=\"normal\"\n :icon=\"{ name: 'chevron-right' }\"\n :disabled=\"filteredRequestLoading\"\n aria-label=\"next page\"\n variant=\"bordered-primary\"\n @click=\"handleNextClick\"\n />\n\n <NrTooltip v-if=\"disableNextArrow\" :label=\"disabledNextArrowTooltip\">\n <NrIconButton\n v-if=\"disableNextArrow\"\n size=\"normal\"\n :disabled=\"true\"\n aria-label=\"disabled next page\"\n :icon=\"{ name: 'chevron-right' }\"\n variant=\"bordered-primary\"\n @click=\"handleNextClick\"\n />\n </NrTooltip>\n </div>\n</template>\n\n<style scoped lang=\"scss\">\nh1 {\n display: inline-block;\n}\n</style>\n","import { render } from \"./RequestShowCycleArrows.vue?vue&type=template&id=57c8ccb7&scoped=true\"\nimport script from \"./RequestShowCycleArrows.vue?vue&type=script&lang=js\"\nexport * from \"./RequestShowCycleArrows.vue?vue&type=script&lang=js\"\n\nimport \"./RequestShowCycleArrows.vue?vue&type=style&index=0&id=57c8ccb7&scoped=true&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-57c8ccb7\"]])\n\nexport default __exports__","import { render } from \"./RequestShowPage.vue?vue&type=template&id=85b9789a\"\nimport script from \"./RequestShowPage.vue?vue&type=script&lang=js\"\nexport * from \"./RequestShowPage.vue?vue&type=script&lang=js\"\n\nimport \"./RequestShowPage.vue?vue&type=style&index=0&id=85b9789a&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { xor } from 'lodash'\n\nexport type ColorizedDocumentReviewStatus = 'gray' | 'green'\nexport type DocumentReviewStatus = 'needs_review' | 'reviewed'\nexport type HumanizedDocumentReviewStatus = 'Needs review' | 'Reviewed'\nexport type DocumentReviewStatusIconTypes = 'regular' | 'solid'\nexport type HumanizedReviewStatusAriaLabel =\n | 'Set to needs review'\n | 'Set to reviewed'\n\nexport const DocumentReviewStatusMap = {\n reviewed: {\n label: 'Reviewed',\n color: 'green',\n icon_type: 'solid'\n },\n needs_review: {\n label: 'Needs review',\n color: 'gray',\n icon_type: 'regular'\n }\n} as const\n\nexport const humanizedReviewStatus = (\n status: DocumentReviewStatus\n): HumanizedDocumentReviewStatus => {\n switch (status) {\n case 'reviewed':\n case 'needs_review':\n return DocumentReviewStatusMap[status].label\n default:\n return DocumentReviewStatusMap.needs_review.label\n }\n}\n\nexport const setReviewStatusAriaLabel = (\n status: DocumentReviewStatus\n): HumanizedReviewStatusAriaLabel => {\n switch (status) {\n case 'reviewed':\n return 'Set to needs review'\n case 'needs_review':\n return 'Set to reviewed'\n }\n}\n\nexport const reviewStatusColor = (\n status: DocumentReviewStatus\n): ColorizedDocumentReviewStatus => {\n switch (status) {\n case 'reviewed':\n case 'needs_review':\n return DocumentReviewStatusMap[status].color\n default:\n return DocumentReviewStatusMap.needs_review.color\n }\n}\n\nexport const reviewStatusBgColor = (\n status: DocumentReviewStatus\n): ColorizedDocumentReviewStatus => {\n switch (status) {\n case 'reviewed':\n case 'needs_review':\n return DocumentReviewStatusMap[status].color\n default:\n return DocumentReviewStatusMap.needs_review.color\n }\n}\n\nexport const toggleReviewStatus = (\n status: DocumentReviewStatus\n): DocumentReviewStatus => {\n return xor<DocumentReviewStatus>(\n Object.keys(DocumentReviewStatusMap) as DocumentReviewStatus[],\n [status]\n ).pop()\n}\n\nexport const reviewStatusIconType = (\n status: DocumentReviewStatus\n): DocumentReviewStatusIconTypes => {\n switch (status) {\n case 'needs_review':\n return DocumentReviewStatusMap[status].icon_type\n default:\n return DocumentReviewStatusMap.needs_review.icon_type\n }\n}\n","export type DocumentSeverity = 'na' | 'low' | 'medium' | 'high'\n\nexport type ColorizedDocumentSeverity = 'grey' | 'yellow' | 'red' | 'purple'\n\nexport type ColorizedBgDocumentSeverity =\n | '#E00000' // red\n | '#F8E71C' // yellow\n | '#6E6E87' // grey\n | '#1F2C7C' // purple\n\nexport type HumanizedDocumentSeverity =\n | 'Unscannable'\n | 'Low risk'\n | 'Medium risk'\n | 'High risk'\n | 'Pending'\n\nexport const DocumentSeverityMap = {\n low: {\n label: 'Low risk',\n description: 'These documents contain instances of low severity data.',\n color: {\n label: 'grey',\n value: '#6E6E87'\n }\n },\n medium: {\n label: 'Medium risk',\n description: 'These documents contain instances of medium severity data.',\n color: {\n label: 'yellow',\n value: '#F8E71C'\n }\n },\n high: {\n label: 'High risk',\n description: 'These documents contain instances of high severity data.',\n color: {\n label: 'red',\n value: '#E00000'\n }\n },\n na: {\n label: 'Unscannable',\n description: 'These documents are not scannable due to their file types.',\n color: {\n label: 'purple',\n value: '#1F2C7C'\n }\n },\n default: {\n label: 'Pending',\n description: 'These documents have not been scanned by the risk module.',\n color: {\n label: 'purple',\n value: '#1F2C7C'\n }\n }\n} as const\n\nexport const humanizedSeverityStatus = (\n severity: DocumentSeverity | null\n): HumanizedDocumentSeverity => {\n switch (severity) {\n case 'na':\n case 'low':\n case 'medium':\n case 'high':\n return DocumentSeverityMap[severity].label\n default:\n return DocumentSeverityMap.default.label\n }\n}\n\nexport const severityStatusColor = (\n severity: DocumentSeverity | null\n): ColorizedDocumentSeverity => {\n switch (severity) {\n case 'low':\n case 'medium':\n case 'high':\n return DocumentSeverityMap[severity].color.label\n default:\n return DocumentSeverityMap.default.color.label\n }\n}\n\nexport const severityStatusBgColor = (\n severity: DocumentSeverity | null\n): ColorizedBgDocumentSeverity => {\n switch (severity) {\n case 'low':\n case 'medium':\n case 'high':\n return DocumentSeverityMap[severity].color.value\n default:\n return DocumentSeverityMap.default.color.value\n }\n}\n\nexport const severityDescription = (\n severity: DocumentSeverity | null\n): string => {\n switch (severity) {\n case 'na':\n case 'low':\n case 'medium':\n case 'high':\n return DocumentSeverityMap[severity].description\n default:\n return DocumentSeverityMap.default.description\n }\n}\n"],"sourceRoot":""}