{"version":3,"file":"js/application-73a951f699aec65f4a8e.js","mappings":"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","sources":["webpack://meander/./app/assets/images/ sync \\.svg$","webpack://meander/./app/javascript/channels/ sync _channel\\.js$","webpack://meander/./app/javascript/controllers/ sync _controller\\.ts$","webpack://meander/./app/javascript/images/ sync \\.(jpg%7Cjpeg%7Cpng)$","webpack://meander/./app/javascript/channels/index.js","webpack://meander/./app/javascript/controllers/attendance_form_controller.ts","webpack://meander/./app/javascript/controllers/attendance_stacking_controller.ts","webpack://meander/./app/javascript/controllers/australian_resident_controller.ts","webpack://meander/./app/javascript/controllers/auto_submit_verification_code_controller.ts","webpack://meander/./app/javascript/controllers/autocomplete_address_controller.ts","webpack://meander/./app/javascript/controllers/autocomplete_controller.ts","webpack://meander/./app/javascript/controllers/base_controller.ts","webpack://meander/./app/javascript/controllers/checkbox_toggle_element_controller.ts","webpack://meander/./app/javascript/controllers/choices_controller.ts","webpack://meander/./app/javascript/controllers/ckeditor_controller.ts","webpack://meander/./app/javascript/controllers/client_app/company_details_controller.ts","webpack://meander/./app/javascript/controllers/client_app/request_jobs/job_details_controller.ts","webpack://meander/./app/javascript/controllers/client_app/request_jobs/job_matching_modal_controller.ts","webpack://meander/./app/javascript/controllers/community_app/conversations/mark_conversation_as_read_controller.ts","webpack://meander/./app/javascript/controllers/community_app/conversations/send_message_controller.ts","webpack://meander/./app/javascript/controllers/community_app/conversations/show_conversation_controller.ts","webpack://meander/./app/javascript/controllers/community_app/jobs/details_controller.ts","webpack://meander/./app/javascript/controllers/community_app/mobile_week_calendar_controller.ts","webpack://meander/./app/javascript/controllers/community_app/monash/onboarding/work_rights_controller.ts","webpack://meander/./app/javascript/controllers/community_app/my_account/profile/nested_form_controller.ts","webpack://meander/./app/javascript/controllers/company_matching_controller.ts","webpack://meander/./app/javascript/controllers/confetti_controller.ts","webpack://meander/./app/javascript/controllers/countdown_controller.ts","webpack://meander/./app/javascript/controllers/custom_nested_form_controller.ts","webpack://meander/./app/javascript/controllers/disable_button_controller.ts","webpack://meander/./app/javascript/controllers/file_field_controller.ts","webpack://meander/./app/javascript/controllers/flash_controller.ts","webpack://meander/./app/javascript/controllers/flatpickr_date_range_controller.ts","webpack://meander/./app/javascript/controllers/form_reload_controller.ts","webpack://meander/./app/javascript/controllers/ga_event_tracking_controller.ts","webpack://meander/./app/javascript/helpers/show_hide.ts","webpack://meander/./app/javascript/controllers/job_openings/additional_job_details_controller.ts","webpack://meander/./app/javascript/controllers/job_openings/form_reload_controller.ts","webpack://meander/./app/javascript/controllers/job_openings/other_details_controller.ts","webpack://meander/./app/javascript/controllers/link_controller.ts","webpack://meander/./app/javascript/controllers/main_nav_controller.ts","webpack://meander/./app/javascript/controllers/masked_controller.ts","webpack://meander/./app/javascript/controllers/modal_controller.ts","webpack://meander/./app/javascript/controllers/modal_remote_controller.ts","webpack://meander/./app/javascript/controllers/multiselect_controller.ts","webpack://meander/./app/javascript/controllers/multiselect_toggle_element_controller.ts","webpack://meander/./app/javascript/controllers/nav_item_toggle_controller.ts","webpack://meander/./app/javascript/controllers/nested_form_controller.ts","webpack://meander/./app/javascript/controllers/numberic_controller.ts","webpack://meander/./app/javascript/controllers/numeric_input_controller.ts","webpack://meander/./app/javascript/controllers/organization_app/attendance_import_controller.ts","webpack://meander/./app/javascript/controllers/organization_app/csv_export_controller.ts","webpack://meander/./app/javascript/helpers/download_file_from_ajax_response.ts","webpack://meander/./app/javascript/controllers/organization_app/job_opening_candidates/bulk_actions_form_controller.ts","webpack://meander/./app/javascript/controllers/organization_app/job_opening_candidates/bulk_actions_toggle_controller.ts","webpack://meander/./app/javascript/controllers/organization_app/job_opening_candidates/change_status_controller.ts","webpack://meander/./app/javascript/controllers/organization_app/job_opening_candidates/select_all_toggle_controller.ts","webpack://meander/./app/javascript/controllers/organization_app/select_all_toggle_controller.ts","webpack://meander/./app/javascript/controllers/organization_app/sms/send_message_controller.ts","webpack://meander/./app/javascript/controllers/organization_app/sms/show_message_controller.ts","webpack://meander/./app/javascript/controllers/organization_app/sms_bulk_import_controller.ts","webpack://meander/./app/javascript/controllers/pagination_controller.ts","webpack://meander/./app/javascript/controllers/places_controller.ts","webpack://meander/./app/javascript/controllers/postcodes_controller.ts","webpack://meander/./app/javascript/controllers/radio_toggle_controller.ts","webpack://meander/./app/javascript/controllers/radio_toggle_element_controller.ts","webpack://meander/./app/javascript/controllers/radius_controller.ts","webpack://meander/./app/javascript/controllers/reveal_controller.ts","webpack://meander/./app/javascript/controllers/select_controller.ts","webpack://meander/./app/javascript/controllers/show_conversation_controller.ts","webpack://meander/./app/javascript/controllers/sliding_panel_right_controller.ts","webpack://meander/./app/javascript/controllers/student_sign_in_controller.ts","webpack://meander/./app/javascript/controllers/sum_fields_controller.ts","webpack://meander/./app/javascript/controllers/swiper_controller.ts","webpack://meander/./app/javascript/controllers/tabs_controller.ts","webpack://meander/./app/javascript/controllers/tfn_form_controller.ts","webpack://meander/./app/javascript/helpers/create_direct_upload/index.ts","webpack://meander/./app/javascript/controllers/upload_crop_controller.ts","webpack://meander/./app/javascript/controllers/user_time_controller.ts","webpack://meander/./app/javascript/controllers/vevo_file_field_controller.ts","webpack://meander/./app/javascript/controllers/work_rights_controller.ts","webpack://meander/./app/javascript/controllers/index.ts","webpack://meander/./app/javascript/packs/client_app/components/NotFound.tsx","webpack://meander/./app/javascript/graphql/client_app/client.ts","webpack://meander/./app/javascript/graphql/client_app/types.ts","webpack://meander/./app/javascript/packs/client_app/components/CommunityMemberAvatar.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/ApproveAttendancesProfile.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/CostSummaryAwardItems.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/CostSummaryFeeItem.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/FullLayoutModal.tsx","webpack://meander/./app/javascript/packs/ui/Checkbox.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/ApproveAttendancesPreview.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/ApprovalFailure.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/ApprovalSuccess.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/AttendancesApprovalTab.tsx","webpack://meander/./app/javascript/packs/client_app/stores/backend-context.tsx","webpack://meander/./app/javascript/packs/client_app/components/FilterByManager.tsx","webpack://meander/./app/javascript/packs/client_app/components/Form/Form.tsx","webpack://meander/./app/javascript/packs/client_app/components/Form/Input.tsx","webpack://meander/./app/javascript/packs/hooks/usePageTitle.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/AttendanceApproval.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/utils/operations.ts","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/FilterByWeployee.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/ChangeRequestCommunityMemberProfile.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/MinimumEngagementChip.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/PublicHolidayChip.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/UpdatedTimesheetChip.tsx","webpack://meander/./app/javascript/packs/client_app/hooks/useMediaQuery.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/ChangeRequestPreviewAttendanceItem.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/ChangeRequestPreview.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/FlaggedAttendancesGroupListItem.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/FlaggedAttendancesGroupList.tsx","webpack://meander/./app/javascript/packs/ui/CheckboxWithIndeterminateState.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/FlaggedAttendancesGroupProfile.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/FlaggedAttendancesGroupContainer.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/FlaggedAttendancesGroupHeading.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/NoAttendancesMessage.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/FlaggedAttendancesContainer.tsx","webpack://meander/./app/javascript/packs/hooks/useDebouncedState.ts","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/FlaggedAttendances.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/SubmittedAttendancesGroupListItem.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/SubmittedAttendancesGroupList.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/SubmittedAttendancesGroupProfile.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/SubmittedAttendancesGroupContainer.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/SubmittedAttendancesGroupHeading.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/SubmittedAttendancesContainer.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/components/SubmittedAttendances.tsx","webpack://meander/./app/javascript/packs/client_app/features/timesheetApproval/routes/index.tsx","webpack://meander/./app/javascript/packs/client_app/features/weployees/utils/operations.ts","webpack://meander/./app/javascript/packs/client_app/features/weployees/components/ActivePositionListItemMobile.tsx","webpack://meander/./app/javascript/packs/ui/FullLayoutModal.tsx","webpack://meander/./app/javascript/packs/client_app/features/weployees/components/BuyoutRequestPreview.tsx","webpack://meander/./app/javascript/packs/client_app/features/weployees/components/ExtensionRequestPreview.tsx","webpack://meander/./app/javascript/packs/client_app/features/weployees/components/FilterByWeployee.tsx","webpack://meander/./app/javascript/packs/client_app/features/weployees/components/NoActivePositions.tsx","webpack://meander/./app/javascript/packs/client_app/features/weployees/components/PositionTab.tsx","webpack://meander/./app/javascript/packs/client_app/features/weployees/components/PositionTabs.tsx","webpack://meander/./app/javascript/packs/client_app/components/Pagination.tsx","webpack://meander/./app/javascript/packs/client_app/components/CommunityMemberDetails/ProfileInformation.tsx","webpack://meander/./app/javascript/packs/organization_app/config/paths.ts","webpack://meander/./app/javascript/packs/client_app/components/CommunityMemberDetails/services/FetchAPIService.ts","webpack://meander/./app/javascript/packs/client_app/components/CommunityMemberDetails/tab/Focus.tsx","webpack://meander/./app/javascript/packs/common/components/CommentContent.tsx","webpack://meander/./app/javascript/packs/common/components/Comment.tsx","webpack://meander/./app/javascript/packs/client_app/components/CommunityMemberDetails/tab/Absence.tsx","webpack://meander/./app/javascript/packs/client_app/components/CommunityMemberDetails/tab/AllComment.tsx","webpack://meander/./app/javascript/packs/client_app/components/CommunityMemberDetails/tab/Coaching.tsx","webpack://meander/./app/javascript/packs/client_app/components/CommunityMemberDetails/tab/Feedback.tsx","webpack://meander/./app/javascript/packs/client_app/components/CommunityMemberDetails/tab/Onboading.tsx","webpack://meander/./app/javascript/packs/client_app/components/CommunityMemberDetails/tab/Performance.tsx","webpack://meander/./app/javascript/packs/client_app/components/CommunityMemberDetails/TabSection.tsx","webpack://meander/./app/javascript/packs/client_app/components/CommunityMemberDetails/CommunityMemberModal.tsx","webpack://meander/./app/javascript/packs/client_app/features/weployees/components/ActivePositionsListItemDesktop.tsx","webpack://meander/./app/javascript/packs/common/components/PositionsTable.tsx","webpack://meander/./app/javascript/packs/client_app/features/weployees/components/ActivePositions.tsx","webpack://meander/./app/javascript/packs/client_app/features/weployees/components/services/FetchAPIService.ts","webpack://meander/./app/javascript/packs/client_app/features/weployees/components/BuyoutRequestSuccess.tsx","webpack://meander/./app/javascript/packs/client_app/features/weployees/components/ExtensionsRequestSuccess.tsx","webpack://meander/./app/javascript/packs/client_app/features/weployees/components/NoPastPositions.tsx","webpack://meander/./app/javascript/packs/client_app/features/weployees/components/PastPositionListItemDesktop.tsx","webpack://meander/./app/javascript/packs/client_app/features/weployees/components/PastPositionListItemMobile.tsx","webpack://meander/./app/javascript/packs/client_app/features/weployees/components/RehireRequestPreview.tsx","webpack://meander/./app/javascript/packs/client_app/features/weployees/components/PastPositions.tsx","webpack://meander/./app/javascript/packs/client_app/features/weployees/routes/index.tsx","webpack://meander/./app/javascript/packs/client_app/routes/index.tsx","webpack://meander/./app/javascript/packs/client_app/lib/react-query.ts","webpack://meander/./app/javascript/packs/client_app/providers/app.tsx","webpack://meander/./app/javascript/packs/client_app/App.tsx","webpack://meander/./app/javascript/packs/client_app/index.tsx","webpack://meander/./app/javascript/packs/organization_app/components/NotFound.tsx","webpack://meander/./app/javascript/graphql/organization_app/client.ts","webpack://meander/./app/javascript/graphql/organization_app/types.ts","webpack://meander/./app/javascript/packs/organization_app/components/formFields/buildOptions.ts","webpack://meander/./app/javascript/packs/organization_app/components/formFields/ErrorMessage.tsx","webpack://meander/./app/javascript/packs/organization_app/components/formFields/Form.tsx","webpack://meander/./app/javascript/packs/organization_app/components/formFields/Input.tsx","webpack://meander/./app/javascript/packs/organization_app/components/formFields/RadioGroup.tsx","webpack://meander/./app/javascript/packs/organization_app/components/formFields/Select.tsx","webpack://meander/./app/javascript/packs/organization_app/features/invoicings/utils/AttendanceUtils.ts","webpack://meander/./app/javascript/packs/organization_app/features/invoicings/components/AttendancesForInvoicingFilter.tsx","webpack://meander/./app/javascript/packs/organization_app/features/invoicings/components/AttendancesForInvoicingSelected.tsx","webpack://meander/./app/javascript/packs/organization_app/features/invoicings/components/AttendancesForInvoicingHeading.tsx","webpack://meander/./app/javascript/packs/organization_app/features/invoicings/components/AttendancesForInvoicingTable.tsx","webpack://meander/./app/javascript/packs/organization_app/features/invoicings/components/PreviewInvoicesBillingForm.tsx","webpack://meander/./app/javascript/packs/organization_app/features/invoicings/utils/CurrencyFormatterUtils.ts","webpack://meander/./app/javascript/packs/organization_app/features/invoicings/components/PreviewInvoicesSummaryRow.tsx","webpack://meander/./app/javascript/packs/organization_app/features/invoicings/components/PreviewInvoicesTable.tsx","webpack://meander/./app/javascript/packs/organization_app/features/invoicings/components/PreviewInvoices.tsx","webpack://meander/./app/javascript/packs/organization_app/features/invoicings/components/AttendancesForInvoicing.tsx","webpack://meander/./app/javascript/packs/organization_app/features/invoicings/components/ClientCompanies.tsx","webpack://meander/./app/javascript/packs/organization_app/features/invoicings/components/Invoicings.tsx","webpack://meander/./app/javascript/packs/organization_app/features/invoicings/routes/index.tsx","webpack://meander/./app/javascript/packs/organization_app/features/positions/services/FetchAPIService.ts","webpack://meander/./app/javascript/packs/organization_app/stores/backend-context.tsx","webpack://meander/./app/javascript/packs/organization_app/features/positions/components/PositionsPage.tsx","webpack://meander/./app/javascript/packs/organization_app/routes/index.tsx","webpack://meander/./app/javascript/packs/organization_app/lib/react-query.ts","webpack://meander/./app/javascript/packs/organization_app/providers/app.tsx","webpack://meander/./app/javascript/packs/organization_app/App.tsx","webpack://meander/./app/javascript/packs/organization_app/index.tsx","webpack://meander/./app/javascript/packs/application.js","webpack://meander/./app/javascript/packs/bugsnag.js","webpack://meander/./app/javascript/packs/hotjar.ts"],"sourcesContent":["var map = {\n\t\"./icons/add.svg\": 65228,\n\t\"./icons/add_new_shift_image.svg\": 54852,\n\t\"./icons/administration.svg\": 77338,\n\t\"./icons/amex.svg\": 4405,\n\t\"./icons/announcement.svg\": 14752,\n\t\"./icons/arrow-down.svg\": 51061,\n\t\"./icons/arrow-up.svg\": 58704,\n\t\"./icons/arrow_down_circle.svg\": 98365,\n\t\"./icons/attendances.svg\": 15657,\n\t\"./icons/bin.svg\": 44561,\n\t\"./icons/blue-filled-question.svg\": 37393,\n\t\"./icons/brand_mark.svg\": 90388,\n\t\"./icons/brand_mark_light.svg\": 26762,\n\t\"./icons/brand_word_client_user.svg\": 18335,\n\t\"./icons/brand_word_mark_horizontal.svg\": 86926,\n\t\"./icons/brand_word_mark_horizontal_light.svg\": 89182,\n\t\"./icons/calendar.svg\": 24095,\n\t\"./icons/camera.svg\": 47563,\n\t\"./icons/cancel.svg\": 32392,\n\t\"./icons/chat.svg\": 74738,\n\t\"./icons/check_circle.svg\": 50987,\n\t\"./icons/check_solid.svg\": 22151,\n\t\"./icons/circular_cross.svg\": 57003,\n\t\"./icons/client_sign_in_image.svg\": 36156,\n\t\"./icons/clients.svg\": 50347,\n\t\"./icons/clock.svg\": 50993,\n\t\"./icons/close.svg\": 58790,\n\t\"./icons/comment.svg\": 59874,\n\t\"./icons/community.svg\": 36896,\n\t\"./icons/community_sign_in_image.svg\": 7918,\n\t\"./icons/cross.svg\": 89609,\n\t\"./icons/dashboard.svg\": 17024,\n\t\"./icons/down.svg\": 6591,\n\t\"./icons/download-disabled.svg\": 90419,\n\t\"./icons/download.svg\": 73146,\n\t\"./icons/download_app_store_badge.svg\": 24603,\n\t\"./icons/download_google_play_badge.svg\": 2476,\n\t\"./icons/edit.svg\": 53881,\n\t\"./icons/edit_calendar.svg\": 51824,\n\t\"./icons/email_live_chat.svg\": 66664,\n\t\"./icons/error.svg\": 37922,\n\t\"./icons/event_calendar.svg\": 94903,\n\t\"./icons/event_checked.svg\": 26678,\n\t\"./icons/exclamation_mark.svg\": 43009,\n\t\"./icons/expand-less.svg\": 82915,\n\t\"./icons/expand-more.svg\": 11898,\n\t\"./icons/external_link.svg\": 17495,\n\t\"./icons/face.svg\": 61574,\n\t\"./icons/fat_zebra.svg\": 48128,\n\t\"./icons/favicon.svg\": 74310,\n\t\"./icons/filled-question.svg\": 49353,\n\t\"./icons/help.svg\": 16791,\n\t\"./icons/inbound_calling.svg\": 25078,\n\t\"./icons/info-primary-900.svg\": 88172,\n\t\"./icons/info-primary.svg\": 52074,\n\t\"./icons/infos.svg\": 37136,\n\t\"./icons/jobs.svg\": 42608,\n\t\"./icons/left.svg\": 21473,\n\t\"./icons/loading-circle.svg\": 67985,\n\t\"./icons/mastercard.svg\": 98690,\n\t\"./icons/menu.svg\": 6451,\n\t\"./icons/message.svg\": 55513,\n\t\"./icons/minus.svg\": 29111,\n\t\"./icons/monash_admin_logo.svg\": 34450,\n\t\"./icons/monash_community_sign_in_image.svg\": 36785,\n\t\"./icons/monash_favicon.svg\": 72738,\n\t\"./icons/monash_logo.svg\": 64899,\n\t\"./icons/monash_logo_white.svg\": 75496,\n\t\"./icons/objection_handling.svg\": 21128,\n\t\"./icons/organization_sign_in_image.svg\": 35560,\n\t\"./icons/outbound_calling.svg\": 97035,\n\t\"./icons/paper.svg\": 34963,\n\t\"./icons/password_reset_image.svg\": 50265,\n\t\"./icons/pay_rates.svg\": 45094,\n\t\"./icons/pencil.svg\": 56211,\n\t\"./icons/phone.svg\": 54399,\n\t\"./icons/plus.svg\": 68970,\n\t\"./icons/positions.svg\": 85442,\n\t\"./icons/primary_logo_dark.svg\": 76367,\n\t\"./icons/primary_logo_light.svg\": 69572,\n\t\"./icons/public_holidays.svg\": 18586,\n\t\"./icons/reception_work.svg\": 83250,\n\t\"./icons/report.svg\": 3491,\n\t\"./icons/reporting.svg\": 74728,\n\t\"./icons/right.svg\": 72743,\n\t\"./icons/save.svg\": 7955,\n\t\"./icons/search.svg\": 30223,\n\t\"./icons/see_more.svg\": 41347,\n\t\"./icons/sleeping_peppa.svg\": 33384,\n\t\"./icons/sms.svg\": 21926,\n\t\"./icons/subtract.svg\": 92248,\n\t\"./icons/timesheets.svg\": 18103,\n\t\"./icons/unread_message.svg\": 131,\n\t\"./icons/up.svg\": 73076,\n\t\"./icons/visa.svg\": 21991,\n\t\"./icons/weployees.svg\": 123,\n\t\"./icons/weployers.svg\": 91033,\n\t\"./illustrations/accept_reject_extension.svg\": 85910,\n\t\"./illustrations/adding_phone_number.svg\": 50844,\n\t\"./illustrations/beef_hotpot.svg\": 15086,\n\t\"./illustrations/checklist_with_pencil.svg\": 5340,\n\t\"./illustrations/client_account_setup.svg\": 17335,\n\t\"./illustrations/computer_and_plant.svg\": 93667,\n\t\"./illustrations/dancing_peoples.svg\": 78581,\n\t\"./illustrations/dancing_peoples_with_furniture.svg\": 64109,\n\t\"./illustrations/inbox.svg\": 52131,\n\t\"./illustrations/lady_and_man_standing_with_furniture.svg\": 11656,\n\t\"./illustrations/lady_showcasing_webpage.svg\": 98602,\n\t\"./illustrations/lady_using_laptop_by_bookshelf.svg\": 96226,\n\t\"./illustrations/lady_using_laptop_on_table.svg\": 82822,\n\t\"./illustrations/lady_with_laptop_in_beads_sofa.svg\": 35746,\n\t\"./illustrations/laptop_desk_with_chair.svg\": 51871,\n\t\"./illustrations/man_help_women_ideal.svg\": 51810,\n\t\"./illustrations/man_holding_laptop.svg\": 48394,\n\t\"./illustrations/man_with_pc.svg\": 34928,\n\t\"./illustrations/mfa_setting.svg\": 77621,\n\t\"./illustrations/monash_client_account_setup_background.svg\": 8738,\n\t\"./illustrations/monash_client_sign_in_image.svg\": 12514,\n\t\"./illustrations/monash_empty_image.svg\": 10360,\n\t\"./illustrations/monash_people_and_bookcase.svg\": 86801,\n\t\"./illustrations/monash_unlock_potential_image.svg\": 99845,\n\t\"./illustrations/people_and_bookcase.svg\": 19018,\n\t\"./illustrations/people_holding_laptop.svg\": 51365,\n\t\"./illustrations/people_in_living_room.svg\": 29302,\n\t\"./illustrations/people_talking.svg\": 51834,\n\t\"./illustrations/people_talking_with_laptop.svg\": 54498,\n\t\"./illustrations/peppa.svg\": 84310,\n\t\"./illustrations/person_using_computer_by_the_windows.svg\": 63661,\n\t\"./illustrations/person_using_laptop_on_invisible_table.svg\": 94141,\n\t\"./illustrations/purple_woman_at_computer.svg\": 548,\n\t\"./illustrations/resend_client_company_invitation_image.svg\": 81252,\n\t\"./illustrations/standing_lady_using_laptop.svg\": 34948,\n\t\"./illustrations/timesheet_approved_image.svg\": 40676,\n\t\"./illustrations/two_friends_dancing.svg\": 88375,\n\t\"./illustrations/two_people_chatting.svg\": 46942,\n\t\"./illustrations/two_people_chatting_2.svg\": 49571,\n\t\"./illustrations/vacant_desk.svg\": 43950,\n\t\"./illustrations/wave.svg\": 15074,\n\t\"./illustrations/weployees-not-found.svg\": 51176,\n\t\"./illustrations/woman-chill.svg\": 49102,\n\t\"./illustrations/woman-happy.svg\": 46159,\n\t\"./illustrations/women_find_self_ideal.svg\": 43798,\n\t\"./illustrations/women_man_with_pc.svg\": 17091,\n\t\"icons/add.svg\": 65228,\n\t\"icons/add_new_shift_image.svg\": 54852,\n\t\"icons/administration.svg\": 77338,\n\t\"icons/amex.svg\": 4405,\n\t\"icons/announcement.svg\": 14752,\n\t\"icons/arrow-down.svg\": 51061,\n\t\"icons/arrow-up.svg\": 58704,\n\t\"icons/arrow_down_circle.svg\": 98365,\n\t\"icons/attendances.svg\": 15657,\n\t\"icons/bin.svg\": 44561,\n\t\"icons/blue-filled-question.svg\": 37393,\n\t\"icons/brand_mark.svg\": 90388,\n\t\"icons/brand_mark_light.svg\": 26762,\n\t\"icons/brand_word_client_user.svg\": 18335,\n\t\"icons/brand_word_mark_horizontal.svg\": 86926,\n\t\"icons/brand_word_mark_horizontal_light.svg\": 89182,\n\t\"icons/calendar.svg\": 24095,\n\t\"icons/camera.svg\": 47563,\n\t\"icons/cancel.svg\": 32392,\n\t\"icons/chat.svg\": 74738,\n\t\"icons/check_circle.svg\": 50987,\n\t\"icons/check_solid.svg\": 22151,\n\t\"icons/circular_cross.svg\": 57003,\n\t\"icons/client_sign_in_image.svg\": 36156,\n\t\"icons/clients.svg\": 50347,\n\t\"icons/clock.svg\": 50993,\n\t\"icons/close.svg\": 58790,\n\t\"icons/comment.svg\": 59874,\n\t\"icons/community.svg\": 36896,\n\t\"icons/community_sign_in_image.svg\": 7918,\n\t\"icons/cross.svg\": 89609,\n\t\"icons/dashboard.svg\": 17024,\n\t\"icons/down.svg\": 6591,\n\t\"icons/download-disabled.svg\": 90419,\n\t\"icons/download.svg\": 73146,\n\t\"icons/download_app_store_badge.svg\": 24603,\n\t\"icons/download_google_play_badge.svg\": 2476,\n\t\"icons/edit.svg\": 53881,\n\t\"icons/edit_calendar.svg\": 51824,\n\t\"icons/email_live_chat.svg\": 66664,\n\t\"icons/error.svg\": 37922,\n\t\"icons/event_calendar.svg\": 94903,\n\t\"icons/event_checked.svg\": 26678,\n\t\"icons/exclamation_mark.svg\": 43009,\n\t\"icons/expand-less.svg\": 82915,\n\t\"icons/expand-more.svg\": 11898,\n\t\"icons/external_link.svg\": 17495,\n\t\"icons/face.svg\": 61574,\n\t\"icons/fat_zebra.svg\": 48128,\n\t\"icons/favicon.svg\": 74310,\n\t\"icons/filled-question.svg\": 49353,\n\t\"icons/help.svg\": 16791,\n\t\"icons/inbound_calling.svg\": 25078,\n\t\"icons/info-primary-900.svg\": 88172,\n\t\"icons/info-primary.svg\": 52074,\n\t\"icons/infos.svg\": 37136,\n\t\"icons/jobs.svg\": 42608,\n\t\"icons/left.svg\": 21473,\n\t\"icons/loading-circle.svg\": 67985,\n\t\"icons/mastercard.svg\": 98690,\n\t\"icons/menu.svg\": 6451,\n\t\"icons/message.svg\": 55513,\n\t\"icons/minus.svg\": 29111,\n\t\"icons/monash_admin_logo.svg\": 34450,\n\t\"icons/monash_community_sign_in_image.svg\": 36785,\n\t\"icons/monash_favicon.svg\": 72738,\n\t\"icons/monash_logo.svg\": 64899,\n\t\"icons/monash_logo_white.svg\": 75496,\n\t\"icons/objection_handling.svg\": 21128,\n\t\"icons/organization_sign_in_image.svg\": 35560,\n\t\"icons/outbound_calling.svg\": 97035,\n\t\"icons/paper.svg\": 34963,\n\t\"icons/password_reset_image.svg\": 50265,\n\t\"icons/pay_rates.svg\": 45094,\n\t\"icons/pencil.svg\": 56211,\n\t\"icons/phone.svg\": 54399,\n\t\"icons/plus.svg\": 68970,\n\t\"icons/positions.svg\": 85442,\n\t\"icons/primary_logo_dark.svg\": 76367,\n\t\"icons/primary_logo_light.svg\": 69572,\n\t\"icons/public_holidays.svg\": 18586,\n\t\"icons/reception_work.svg\": 83250,\n\t\"icons/report.svg\": 3491,\n\t\"icons/reporting.svg\": 74728,\n\t\"icons/right.svg\": 72743,\n\t\"icons/save.svg\": 7955,\n\t\"icons/search.svg\": 30223,\n\t\"icons/see_more.svg\": 41347,\n\t\"icons/sleeping_peppa.svg\": 33384,\n\t\"icons/sms.svg\": 21926,\n\t\"icons/subtract.svg\": 92248,\n\t\"icons/timesheets.svg\": 18103,\n\t\"icons/unread_message.svg\": 131,\n\t\"icons/up.svg\": 73076,\n\t\"icons/visa.svg\": 21991,\n\t\"icons/weployees.svg\": 123,\n\t\"icons/weployers.svg\": 91033,\n\t\"illustrations/accept_reject_extension.svg\": 85910,\n\t\"illustrations/adding_phone_number.svg\": 50844,\n\t\"illustrations/beef_hotpot.svg\": 15086,\n\t\"illustrations/checklist_with_pencil.svg\": 5340,\n\t\"illustrations/client_account_setup.svg\": 17335,\n\t\"illustrations/computer_and_plant.svg\": 93667,\n\t\"illustrations/dancing_peoples.svg\": 78581,\n\t\"illustrations/dancing_peoples_with_furniture.svg\": 64109,\n\t\"illustrations/inbox.svg\": 52131,\n\t\"illustrations/lady_and_man_standing_with_furniture.svg\": 11656,\n\t\"illustrations/lady_showcasing_webpage.svg\": 98602,\n\t\"illustrations/lady_using_laptop_by_bookshelf.svg\": 96226,\n\t\"illustrations/lady_using_laptop_on_table.svg\": 82822,\n\t\"illustrations/lady_with_laptop_in_beads_sofa.svg\": 35746,\n\t\"illustrations/laptop_desk_with_chair.svg\": 51871,\n\t\"illustrations/man_help_women_ideal.svg\": 51810,\n\t\"illustrations/man_holding_laptop.svg\": 48394,\n\t\"illustrations/man_with_pc.svg\": 34928,\n\t\"illustrations/mfa_setting.svg\": 77621,\n\t\"illustrations/monash_client_account_setup_background.svg\": 8738,\n\t\"illustrations/monash_client_sign_in_image.svg\": 12514,\n\t\"illustrations/monash_empty_image.svg\": 10360,\n\t\"illustrations/monash_people_and_bookcase.svg\": 86801,\n\t\"illustrations/monash_unlock_potential_image.svg\": 99845,\n\t\"illustrations/people_and_bookcase.svg\": 19018,\n\t\"illustrations/people_holding_laptop.svg\": 51365,\n\t\"illustrations/people_in_living_room.svg\": 29302,\n\t\"illustrations/people_talking.svg\": 51834,\n\t\"illustrations/people_talking_with_laptop.svg\": 54498,\n\t\"illustrations/peppa.svg\": 84310,\n\t\"illustrations/person_using_computer_by_the_windows.svg\": 63661,\n\t\"illustrations/person_using_laptop_on_invisible_table.svg\": 94141,\n\t\"illustrations/purple_woman_at_computer.svg\": 548,\n\t\"illustrations/resend_client_company_invitation_image.svg\": 81252,\n\t\"illustrations/standing_lady_using_laptop.svg\": 34948,\n\t\"illustrations/timesheet_approved_image.svg\": 40676,\n\t\"illustrations/two_friends_dancing.svg\": 88375,\n\t\"illustrations/two_people_chatting.svg\": 46942,\n\t\"illustrations/two_people_chatting_2.svg\": 49571,\n\t\"illustrations/vacant_desk.svg\": 43950,\n\t\"illustrations/wave.svg\": 15074,\n\t\"illustrations/weployees-not-found.svg\": 51176,\n\t\"illustrations/woman-chill.svg\": 49102,\n\t\"illustrations/woman-happy.svg\": 46159,\n\t\"illustrations/women_find_self_ideal.svg\": 43798,\n\t\"illustrations/women_man_with_pc.svg\": 17091\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 50888;","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 56463;\nmodule.exports = webpackEmptyContext;","var map = {\n\t\"./attendance_form_controller.ts\": 27956,\n\t\"./attendance_stacking_controller.ts\": 40108,\n\t\"./australian_resident_controller.ts\": 38218,\n\t\"./auto_submit_verification_code_controller.ts\": 62917,\n\t\"./autocomplete_address_controller.ts\": 68669,\n\t\"./autocomplete_controller.ts\": 65399,\n\t\"./base_controller.ts\": 51978,\n\t\"./checkbox_toggle_element_controller.ts\": 86634,\n\t\"./choices_controller.ts\": 36515,\n\t\"./ckeditor_controller.ts\": 20642,\n\t\"./client_app/company_details_controller.ts\": 93073,\n\t\"./client_app/request_jobs/job_details_controller.ts\": 19815,\n\t\"./client_app/request_jobs/job_matching_modal_controller.ts\": 53366,\n\t\"./community_app/conversations/mark_conversation_as_read_controller.ts\": 39381,\n\t\"./community_app/conversations/send_message_controller.ts\": 29724,\n\t\"./community_app/conversations/show_conversation_controller.ts\": 79232,\n\t\"./community_app/jobs/details_controller.ts\": 21040,\n\t\"./community_app/mobile_week_calendar_controller.ts\": 7347,\n\t\"./community_app/monash/onboarding/work_rights_controller.ts\": 57836,\n\t\"./community_app/my_account/profile/nested_form_controller.ts\": 67208,\n\t\"./company_matching_controller.ts\": 28899,\n\t\"./confetti_controller.ts\": 48919,\n\t\"./countdown_controller.ts\": 63025,\n\t\"./custom_nested_form_controller.ts\": 15878,\n\t\"./disable_button_controller.ts\": 43613,\n\t\"./file_field_controller.ts\": 47583,\n\t\"./flash_controller.ts\": 98920,\n\t\"./flatpickr_date_range_controller.ts\": 27890,\n\t\"./form_reload_controller.ts\": 89364,\n\t\"./ga_event_tracking_controller.ts\": 43438,\n\t\"./job_openings/additional_job_details_controller.ts\": 86671,\n\t\"./job_openings/form_reload_controller.ts\": 484,\n\t\"./job_openings/other_details_controller.ts\": 52509,\n\t\"./link_controller.ts\": 52587,\n\t\"./main_nav_controller.ts\": 55362,\n\t\"./masked_controller.ts\": 62821,\n\t\"./modal_controller.ts\": 35922,\n\t\"./modal_remote_controller.ts\": 28233,\n\t\"./multiselect_controller.ts\": 36368,\n\t\"./multiselect_toggle_element_controller.ts\": 63856,\n\t\"./nav_item_toggle_controller.ts\": 29118,\n\t\"./nested_form_controller.ts\": 70314,\n\t\"./numberic_controller.ts\": 54657,\n\t\"./numeric_input_controller.ts\": 37606,\n\t\"./organization_app/attendance_import_controller.ts\": 7051,\n\t\"./organization_app/csv_export_controller.ts\": 54522,\n\t\"./organization_app/job_opening_candidates/bulk_actions_form_controller.ts\": 17056,\n\t\"./organization_app/job_opening_candidates/bulk_actions_toggle_controller.ts\": 12441,\n\t\"./organization_app/job_opening_candidates/change_status_controller.ts\": 71839,\n\t\"./organization_app/job_opening_candidates/select_all_toggle_controller.ts\": 78773,\n\t\"./organization_app/select_all_toggle_controller.ts\": 25891,\n\t\"./organization_app/sms/send_message_controller.ts\": 29789,\n\t\"./organization_app/sms/show_message_controller.ts\": 3306,\n\t\"./organization_app/sms_bulk_import_controller.ts\": 67702,\n\t\"./pagination_controller.ts\": 76863,\n\t\"./places_controller.ts\": 22527,\n\t\"./postcodes_controller.ts\": 71679,\n\t\"./radio_toggle_controller.ts\": 1905,\n\t\"./radio_toggle_element_controller.ts\": 68371,\n\t\"./radius_controller.ts\": 3466,\n\t\"./reveal_controller.ts\": 24368,\n\t\"./select_controller.ts\": 3318,\n\t\"./show_conversation_controller.ts\": 5176,\n\t\"./sliding_panel_right_controller.ts\": 23099,\n\t\"./student_sign_in_controller.ts\": 30654,\n\t\"./sum_fields_controller.ts\": 39918,\n\t\"./swiper_controller.ts\": 84570,\n\t\"./tabs_controller.ts\": 93050,\n\t\"./tfn_form_controller.ts\": 98199,\n\t\"./upload_crop_controller.ts\": 49564,\n\t\"./user_time_controller.ts\": 80309,\n\t\"./vevo_file_field_controller.ts\": 56015,\n\t\"./work_rights_controller.ts\": 68368,\n\t\"controllers/attendance_form_controller.ts\": 27956,\n\t\"controllers/attendance_stacking_controller.ts\": 40108,\n\t\"controllers/australian_resident_controller.ts\": 38218,\n\t\"controllers/auto_submit_verification_code_controller.ts\": 62917,\n\t\"controllers/autocomplete_address_controller.ts\": 68669,\n\t\"controllers/autocomplete_controller.ts\": 65399,\n\t\"controllers/base_controller.ts\": 51978,\n\t\"controllers/checkbox_toggle_element_controller.ts\": 86634,\n\t\"controllers/choices_controller.ts\": 36515,\n\t\"controllers/ckeditor_controller.ts\": 20642,\n\t\"controllers/client_app/company_details_controller.ts\": 93073,\n\t\"controllers/client_app/request_jobs/job_details_controller.ts\": 19815,\n\t\"controllers/client_app/request_jobs/job_matching_modal_controller.ts\": 53366,\n\t\"controllers/community_app/conversations/mark_conversation_as_read_controller.ts\": 39381,\n\t\"controllers/community_app/conversations/send_message_controller.ts\": 29724,\n\t\"controllers/community_app/conversations/show_conversation_controller.ts\": 79232,\n\t\"controllers/community_app/jobs/details_controller.ts\": 21040,\n\t\"controllers/community_app/mobile_week_calendar_controller.ts\": 7347,\n\t\"controllers/community_app/monash/onboarding/work_rights_controller.ts\": 57836,\n\t\"controllers/community_app/my_account/profile/nested_form_controller.ts\": 67208,\n\t\"controllers/company_matching_controller.ts\": 28899,\n\t\"controllers/confetti_controller.ts\": 48919,\n\t\"controllers/countdown_controller.ts\": 63025,\n\t\"controllers/custom_nested_form_controller.ts\": 15878,\n\t\"controllers/disable_button_controller.ts\": 43613,\n\t\"controllers/file_field_controller.ts\": 47583,\n\t\"controllers/flash_controller.ts\": 98920,\n\t\"controllers/flatpickr_date_range_controller.ts\": 27890,\n\t\"controllers/form_reload_controller.ts\": 89364,\n\t\"controllers/ga_event_tracking_controller.ts\": 43438,\n\t\"controllers/job_openings/additional_job_details_controller.ts\": 86671,\n\t\"controllers/job_openings/form_reload_controller.ts\": 484,\n\t\"controllers/job_openings/other_details_controller.ts\": 52509,\n\t\"controllers/link_controller.ts\": 52587,\n\t\"controllers/main_nav_controller.ts\": 55362,\n\t\"controllers/masked_controller.ts\": 62821,\n\t\"controllers/modal_controller.ts\": 35922,\n\t\"controllers/modal_remote_controller.ts\": 28233,\n\t\"controllers/multiselect_controller.ts\": 36368,\n\t\"controllers/multiselect_toggle_element_controller.ts\": 63856,\n\t\"controllers/nav_item_toggle_controller.ts\": 29118,\n\t\"controllers/nested_form_controller.ts\": 70314,\n\t\"controllers/numberic_controller.ts\": 54657,\n\t\"controllers/numeric_input_controller.ts\": 37606,\n\t\"controllers/organization_app/attendance_import_controller.ts\": 7051,\n\t\"controllers/organization_app/csv_export_controller.ts\": 54522,\n\t\"controllers/organization_app/job_opening_candidates/bulk_actions_form_controller.ts\": 17056,\n\t\"controllers/organization_app/job_opening_candidates/bulk_actions_toggle_controller.ts\": 12441,\n\t\"controllers/organization_app/job_opening_candidates/change_status_controller.ts\": 71839,\n\t\"controllers/organization_app/job_opening_candidates/select_all_toggle_controller.ts\": 78773,\n\t\"controllers/organization_app/select_all_toggle_controller.ts\": 25891,\n\t\"controllers/organization_app/sms/send_message_controller.ts\": 29789,\n\t\"controllers/organization_app/sms/show_message_controller.ts\": 3306,\n\t\"controllers/organization_app/sms_bulk_import_controller.ts\": 67702,\n\t\"controllers/pagination_controller.ts\": 76863,\n\t\"controllers/places_controller.ts\": 22527,\n\t\"controllers/postcodes_controller.ts\": 71679,\n\t\"controllers/radio_toggle_controller.ts\": 1905,\n\t\"controllers/radio_toggle_element_controller.ts\": 68371,\n\t\"controllers/radius_controller.ts\": 3466,\n\t\"controllers/reveal_controller.ts\": 24368,\n\t\"controllers/select_controller.ts\": 3318,\n\t\"controllers/show_conversation_controller.ts\": 5176,\n\t\"controllers/sliding_panel_right_controller.ts\": 23099,\n\t\"controllers/student_sign_in_controller.ts\": 30654,\n\t\"controllers/sum_fields_controller.ts\": 39918,\n\t\"controllers/swiper_controller.ts\": 84570,\n\t\"controllers/tabs_controller.ts\": 93050,\n\t\"controllers/tfn_form_controller.ts\": 98199,\n\t\"controllers/upload_crop_controller.ts\": 49564,\n\t\"controllers/user_time_controller.ts\": 80309,\n\t\"controllers/vevo_file_field_controller.ts\": 56015,\n\t\"controllers/work_rights_controller.ts\": 68368\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 36704;","var map = {\n\t\"./client-users-sign-in-image.jpg\": 94067,\n\t\"images/client-users-sign-in-image.jpg\": 94067\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 20162;","// Load all the channels within this directory and all subdirectories.\n// Channel files must be named *_channel.js.\n\nconst channels = require.context(\".\", true, /_channel\\.js$/);\nchannels.keys().forEach(channels);\n","import { differenceInMinutes, parse } from \"date-fns\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static values = {\n minimumEngagementMinutes: Number,\n mustHaveBreakMinutes: Number,\n minimumBreakMinutes: Number,\n };\n\n static targets = [\n \"startAt\",\n \"finishAt\",\n \"totalTimeWorked\",\n \"breakStartTime\",\n \"breakFinishTime\",\n \"minimumEngagementGroup\",\n \"warningBreak\",\n ];\n declare startAtTarget: HTMLInputElement;\n declare finishAtTarget: HTMLInputElement;\n declare totalTimeWorkedTarget: HTMLElement;\n declare breakStartTimeTargets: Array;\n declare breakFinishTimeTargets: Array;\n declare hasBreakStartTimeTarget: boolean;\n declare hasBreakFinishTimeTarget: boolean;\n declare minimumEngagementGroupTarget: HTMLElement;\n declare warningBreakTarget: HTMLElement;\n declare minimumEngagementMinutesValue: number;\n declare mustHaveBreakMinutesValue: number;\n declare minimumBreakMinutesValue: number;\n\n connect(): void {\n this.waitForFlatpickrDateValues().then(() => {\n this.processingForm();\n });\n }\n\n processingForm(): void {\n const hasBreaks =\n this.hasBreakFinishTimeTarget && this.hasBreakStartTimeTarget;\n\n const totalBreakMinutes = this.getTotalBreakMinutes(\n this.breakStartTimeTargets,\n this.breakFinishTimeTargets,\n hasBreaks\n );\n const totalAttendanceMinutes = this.getElapsedMinutes(\n this.startAtTarget.value,\n this.finishAtTarget.value\n );\n\n this.handleHideShowWarnBreak(totalAttendanceMinutes, totalBreakMinutes);\n\n const totalMinutesWorked = totalAttendanceMinutes - totalBreakMinutes;\n this.displayTotalTimeWorkedMessage(totalMinutesWorked, totalBreakMinutes);\n\n if (\n this.minimumEngagementMinutesValue > 0 &&\n totalMinutesWorked < this.minimumEngagementMinutesValue\n ) {\n this.showMinimumEngagementGroup();\n } else {\n this.hideMinimumEngagementGroup();\n }\n }\n\n handleHideShowWarnBreak(\n totalAttendanceMinutes: number,\n totalBreakMinutes: number\n ): void {\n const mustHaveBreak =\n this.mustHaveBreakMinutesValue < totalAttendanceMinutes;\n const enoughBreakMinutes =\n totalBreakMinutes >= this.minimumBreakMinutesValue;\n\n if (mustHaveBreak && !enoughBreakMinutes) this.showWarningBreak();\n else this.hideWarningBreak();\n }\n\n displayTotalTimeWorkedMessage(\n totalMinutesWorked: number,\n totalBreakMinutes: number\n ): void {\n const displayMessage = this.getDisplayMessage(\n totalMinutesWorked,\n totalBreakMinutes\n );\n this.totalTimeWorkedTarget.innerText = displayMessage;\n }\n\n getDisplayMessage(\n totalMinutesWorked: number,\n totalBreakMinutes: number\n ): string {\n if (totalMinutesWorked <= 0) return \"Total hours must be greater than 0\";\n if (totalBreakMinutes == -1) return \"Invalid break present\";\n if (Number.isNaN(totalMinutesWorked) || Number.isNaN(totalBreakMinutes))\n return \"Invalid break present\";\n const hoursWorked = Math.floor(totalMinutesWorked / 60);\n const minutesWorked = Math.floor(totalMinutesWorked % 60);\n return `${hoursWorked} hrs ${minutesWorked} mins`;\n }\n\n getTotalBreakMinutes(\n startTimeElements: Array,\n finishTimeElements: Array,\n hasBreaks: boolean\n ): number {\n if (!hasBreaks) return 0;\n\n const minutesList = startTimeElements.map(\n this.getDifferenceInMinutes(finishTimeElements)\n );\n\n if (minutesList.some((minutes) => minutes <= 0)) return -1;\n\n return minutesList.reduce(\n (totalMinutes, minutes): number => totalMinutes + minutes\n );\n }\n\n getDifferenceInMinutes(finishTimeInputList: Array) {\n return (startTimeInput: HTMLInputElement, index: number): number =>\n this.getElapsedMinutes(\n startTimeInput.value,\n finishTimeInputList[index].value\n );\n }\n\n getElapsedMinutes(startTimeString: string, finishTimeString: string): number {\n const referenceDate = new Date();\n const startTime = parse(startTimeString, \"HH:mm\", referenceDate);\n const finishTime = parse(finishTimeString, \"HH:mm\", referenceDate);\n return differenceInMinutes(finishTime, startTime);\n }\n\n waitForFlatpickrDateValues(): Promise {\n return Promise.resolve();\n }\n\n showMinimumEngagementGroup(): void {\n this.minimumEngagementGroupTarget.classList.remove(\"hidden\");\n }\n\n hideMinimumEngagementGroup(): void {\n this.minimumEngagementGroupTarget.classList.add(\"hidden\");\n }\n\n showWarningBreak(): void {\n this.warningBreakTarget.classList.remove(\"hidden\");\n }\n\n hideWarningBreak(): void {\n this.warningBreakTarget.classList.add(\"hidden\");\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\n \"attendanceGroup\",\n \"attendance\",\n \"check\",\n \"attendanceDetail\",\n \"viewLessButton\",\n \"notesToggleButton\",\n \"shiftsToggleButton\",\n \"shiftsToggleButtonMobile\",\n \"alertChip\",\n \"mobileAlertChip\",\n \"notes\",\n ];\n\n declare attendanceDetailTargets: Array;\n declare attendanceTargets: Array;\n declare attendanceTarget: HTMLElement;\n declare attendanceGroupTarget: HTMLElement;\n\n declare viewLessButtonTarget: HTMLElement;\n declare shiftsToggleButtonMobileTargets: Array;\n declare shiftsToggleButtonTarget: HTMLElement;\n declare hasShiftsToggleButtonTarget: boolean;\n\n declare notesToggleButtonTargets: Array;\n declare notesToggleButtonTarget: HTMLElement;\n declare hasNotesToggleButtonTarget: boolean;\n\n declare notesTargets: Array;\n declare notesTarget: HTMLElement;\n declare hasNotesTarget: boolean;\n\n declare checkTargets: Array;\n declare hasCheckTarget: boolean;\n\n declare alertChipTargets: Array;\n declare hasAlertChipTarget: boolean;\n declare mobileAlertChipTargets: Array;\n declare hasMobileAlertChipTarget: boolean;\n\n connect(): void {\n this.transformAttendances(this.attendanceTargets);\n }\n\n transformAttendances(attendances: Element[]): void {\n this.toggleAttendanceDetail();\n\n attendances.forEach((attendance: HTMLElement, index: number): void => {\n const verticalPosition = this.verticalPosition(index);\n const zIndex = this.zIndex(attendances.length, index);\n attendance.style.zIndex = `${zIndex}`;\n\n this.translateAttendance(attendance, verticalPosition);\n this.adjustAttendanceGroupHeight(attendance, index, \"stack\");\n });\n\n if (attendances.length === 1 && this.hasAlertChipTarget) {\n this.toggleAlertChip();\n this.toggleNotes();\n }\n }\n\n expand(): void {\n this.toggleNotesAndShiftsButton();\n this.viewLessButtonTarget.classList.replace(\"hidden\", \"flex\");\n\n if (this.hasAlertChipTarget) this.toggleNotes();\n\n this.toggleAlertChip();\n this.toggleAttendanceDetail();\n this.toggleAttendanceCheckbox();\n\n this.attendanceTargets.forEach(\n (attendance: HTMLElement, index: number): void => {\n this.translateAttendance(attendance, 0);\n this.adjustAttendanceGroupHeight(attendance, index, \"expand\");\n this.toggleAttendanceMargins(attendance);\n }\n );\n }\n\n stack(): void {\n this.hideNotes();\n this.viewLessButtonTarget.classList.replace(\"flex\", \"hidden\");\n\n this.toggleAlertChip();\n this.toggleAttendanceDetail();\n this.toggleAttendanceCheckbox();\n\n this.attendanceTargets.forEach(\n (attendance: HTMLElement, index: number): void => {\n const verticalPosition = this.verticalPosition(index);\n\n this.translateAttendance(attendance, verticalPosition);\n this.adjustAttendanceGroupHeight(attendance, index, \"stack\");\n this.toggleAttendanceMargins(attendance);\n\n if (index === 0) this.toggleNotesAndShiftsButton();\n }\n );\n }\n\n toggleShiftsMobile(): void {\n this.expand();\n this.attendanceGroupTarget.classList.toggle(\"hidden\");\n if (\n !this.hasMobileAlertChipTarget ||\n (this.attendanceTargets.length == 1 && this.hasMobileAlertChipTarget)\n ) {\n this.toggleNotes();\n this.toggleAlertChip();\n }\n\n this.toggleMobileAlertChip();\n\n this.shiftsToggleButtonMobileTargets.forEach((shiftsToggleButton) =>\n shiftsToggleButton.classList.toggle(\"hidden\")\n );\n }\n\n toggleNotesAndShiftsButton(): void {\n if (this.hasShiftsToggleButtonTarget)\n this.shiftsToggleButtonTarget.classList.toggle(\"hidden\");\n\n if (!this.hasAlertChipTarget && this.hasNotesToggleButtonTarget)\n this.notesToggleButtonTarget.classList.toggle(\"hidden\");\n }\n\n toggleAlertChip(): void {\n if (this.hasAlertChipTarget) {\n this.alertChipTargets.forEach((alertChip): void => {\n alertChip.classList.toggle(\"hidden\");\n });\n }\n }\n\n toggleMobileAlertChip(): void {\n if (this.hasMobileAlertChipTarget) {\n this.mobileAlertChipTargets.forEach((mobileAlertChip): void => {\n mobileAlertChip.classList.toggle(\"hidden\");\n });\n }\n }\n\n toggleAttendanceMargins(element: HTMLElement): void {\n element.classList.toggle(\"mb-2\");\n element.classList.toggle(\"md:mb-6\");\n element.classList.toggle(\"last:mb-0\");\n }\n\n toggleAttendanceDetail(): void {\n this.attendanceDetailTargets.forEach(\n (attendanceDetail, index: number): void => {\n if (index > 0) attendanceDetail.classList.toggle(\"hidden\");\n }\n );\n }\n\n toggleAttendanceCheckbox(): void {\n if (this.hasCheckTarget) {\n this.checkTargets.forEach((check): boolean =>\n check.classList.toggle(\"hidden\")\n );\n }\n }\n\n hideNotes(): void {\n if (this.hasNotesTarget) {\n this.notesTargets.forEach((notes): void => notes.classList.add(\"hidden\"));\n }\n }\n\n toggleNotes(): void {\n if (this.hasNotesTarget) {\n this.notesTargets.forEach((notes): boolean =>\n notes.classList.toggle(\"hidden\")\n );\n }\n }\n\n translateAttendance(element: HTMLElement, verticalPosition: number): void {\n element.style.transform = `translate(0px, ${verticalPosition}%)`;\n }\n\n adjustAttendanceGroupHeight(\n element: HTMLElement,\n index: number,\n action: string\n ): void {\n this.setHeight(element, this.attendanceGroupTarget, \"initial\", \"initial\");\n\n if (\n this.attendanceGroupTarget.childElementCount > 1 &&\n action === \"stack\"\n ) {\n const offset = index < 2 ? 0.2 : 0.4;\n const rect = this.attendanceTarget.getBoundingClientRect();\n const maxHeight = rect.height + rect.height * offset;\n\n this.setHeight(\n element,\n this.attendanceGroupTarget,\n `${rect.height}px`,\n `${maxHeight}px`\n );\n }\n }\n\n setHeight(\n attendance: HTMLElement,\n attendanceGroup: HTMLElement,\n attendanceHeight: string,\n attendanceGroupHeight: string\n ): void {\n attendance.style.height = attendanceHeight;\n attendanceGroup.style.maxHeight = attendanceGroupHeight;\n }\n\n verticalPosition(index: number): number {\n const offset = index < 3 ? 80 : 100;\n return index * offset * -1;\n }\n\n zIndex(count: number, index: number): number {\n return count - index - 1;\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"yesOption\", \"noOption\", \"visaCountry\"];\n static values = {\n canClaim: Boolean,\n };\n declare yesOptionTargets: Array;\n declare noOptionTargets: Array;\n declare visaCountryTarget: HTMLInputElement;\n declare canClaimValue: boolean;\n\n connect(): void {\n if (this.canClaimValue) {\n this.enableClaims();\n } else {\n this.disableClaims();\n }\n }\n\n hideVisaCountry(): void {\n this.visaCountryTarget.classList.add(\"hidden\");\n }\n\n showVisaCountry(): void {\n this.visaCountryTarget.classList.remove(\"hidden\");\n }\n\n enableClaims(): void {\n this.yesOptionTargets.forEach((target) => (target.disabled = false));\n }\n\n disableClaims(): void {\n this.noOptionTargets.forEach((target) => (target.checked = true));\n this.yesOptionTargets.forEach((target) => (target.disabled = true));\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"form\", \"codeInput\"];\n\n declare formTarget: HTMLFormElement;\n declare codeInputTarget: HTMLInputElement;\n\n NEXT_RANGE_KEY = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\n ARROW_RIGHT_KEY = \"ArrowRight\";\n ARROW_LEFT_KEY = \"ArrowLeft\";\n BACKSPACE_KEY = \"Backspace\";\n\n connect() {\n const digitGroup = this.formTarget;\n const inputs = digitGroup.getElementsByClassName(\n \"input-code-digit\"\n ) as HTMLCollection;\n Array.from(inputs).forEach((input: HTMLInputElement) => {\n input.setAttribute(\"maxlength\", \"1\");\n input.addEventListener(\"keyup\", (e) => {\n if (e.key === this.BACKSPACE_KEY || e.key === this.ARROW_LEFT_KEY) {\n const prev = document.getElementById(\n input.dataset.previous\n ) as HTMLInputElement;\n\n if (prev) {\n prev.select();\n }\n } else if (\n this.NEXT_RANGE_KEY.includes(e.key) ||\n e.key === this.ARROW_RIGHT_KEY\n ) {\n const next = document.getElementById(\n input.dataset.next\n ) as HTMLInputElement;\n\n if (next) {\n next.select();\n } else {\n const inputNumbers = Array.from(\n this.formTarget.getElementsByClassName(\"input-code-digit\")\n ).map((input: HTMLInputElement) => input.value);\n this.codeInputTarget.value = inputNumbers.join(\"\");\n if (this.formTarget.dataset.autosubmit) {\n this.formTarget.submit();\n }\n }\n }\n });\n });\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"input\"];\n\n declare autocomplete: google.maps.places.Autocomplete;\n declare inputTarget: HTMLInputElement;\n\n connect(): void {\n if (typeof google != \"undefined\") {\n this.initAutocomplete();\n }\n }\n\n initAutocomplete(): void {\n this.autocomplete = new google.maps.places.Autocomplete(this.inputTarget);\n this.autocomplete.setFields([\"address_components\"]);\n this.autocomplete.setOptions({\n componentRestrictions: { country: [\"au\"] },\n types: [\"postal_code\", \"locality\"],\n });\n\n this.inputTarget.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n }\n });\n }\n}\n","import autocomplete from \"autocomplete.js\";\nimport axios from \"axios\";\nimport { Controller } from \"stimulus\";\n\ntype Suggestion = {\n full_name: string;\n component: string;\n};\n\ntype SuggestionsHandler = (data: Suggestion[]) => void;\n\nexport default class extends Controller {\n static targets = [\"field\", \"form\"];\n static values = {\n url: String,\n };\n\n declare fieldTarget: HTMLInputElement;\n declare formTarget: HTMLFormElement;\n declare urlValue: string;\n declare ac: { autocomplete: { setVal: (val: string) => void } };\n\n search(url: string): (query: string, callback: SuggestionsHandler) => void {\n return async (query: string, callback: SuggestionsHandler) => {\n const { data } = await axios.get(url, {\n params: {\n search_term: query,\n },\n });\n\n callback(data);\n };\n }\n\n connect(): void {\n this.ac = autocomplete(\n this.fieldTarget,\n {\n hint: false,\n cssClasses: { root: \"algolia-autocomplete w-full\" },\n },\n [\n {\n source: this.search(this.urlValue),\n debounce: 200,\n templates: {\n suggestion: (suggestion: Suggestion) => suggestion.component,\n },\n },\n ]\n ) // Take only the second of four callback arguments\n .on(\"autocomplete:selected\", (...[, suggestion, ,]) => {\n this.ac.autocomplete.setVal(suggestion.full_name);\n this.formTarget.submit();\n });\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class BaseController extends Controller {\n connect() {\n this.scrollToTheBottom();\n }\n\n scrollToTheBottom() {\n const scrollObject = document.getElementById(\"scroll-container\");\n\n if (scrollObject) scrollObject.scrollTop = scrollObject.scrollHeight;\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"input\", \"element\"];\n\n declare inputTargets: Array;\n declare elementTargets: Array;\n\n connect(): void {\n const checkedInputs = this.inputTargets.filter((input) => input.checked);\n\n this.hideAllElementTargets();\n checkedInputs.forEach((checkedInput) =>\n this.showElements(checkedInput.value)\n );\n }\n\n handleChange(event): void {\n const value = event.target.value;\n\n if (event.target.checked) this.showElements(value);\n else this.hideElements(value);\n }\n\n hideElements(value): void {\n const Elements = this.elementTargets.filter((element) => {\n const values = element.dataset.showValues.split(\",\");\n return values.includes(value);\n });\n\n Elements.forEach((element) => {\n element.classList.add(\"hidden\");\n if (element.querySelector(\"input\"))\n element\n .querySelectorAll(\"input\")\n .forEach((input) => (input.disabled = true));\n });\n }\n\n showElements(value): void {\n const Elements = this.elementTargets.filter((element) => {\n const values = element.dataset.showValues.split(\",\");\n return values.includes(value);\n });\n\n Elements.forEach((element) => {\n element.classList.remove(\"hidden\");\n if (element.querySelector(\"input\"))\n element\n .querySelectorAll(\"input\")\n .forEach((input) => (input.disabled = false));\n });\n }\n\n hideAllElementTargets(): void {\n this.elementTargets.forEach((element) => {\n element.classList.add(\"hidden\");\n if (element.querySelector(\"input\"))\n element\n .querySelectorAll(\"input\")\n .forEach((input) => (input.disabled = true));\n });\n }\n}\n","import Choices from \"choices.js\";\nimport { debounce } from \"lodash\";\nimport { Controller } from \"stimulus\";\n\ntype SelectOption = {\n value: string;\n label: string;\n selected: boolean;\n};\n\nexport default class extends Controller {\n static targets = [\"select\", \"input\"];\n static values = {\n searchPath: String,\n searchKey: String,\n selectOptions: Array,\n debouncePeriod: Number,\n };\n\n declare selectTarget: HTMLSelectElement;\n declare inputTarget: HTMLInputElement;\n declare searchPathValue: string;\n declare searchKeyValue: string;\n declare choices: Choices;\n declare input: HTMLInputElement;\n declare selectOptionsValue: SelectOption[];\n declare debouncePeriodValue: number;\n\n declare hasSearchPathValue: boolean;\n\n initialize(): void {\n this.search = debounce(this.search.bind(this), this.debouncePeriodValue);\n this.update = this.update.bind(this);\n this.filter = this.filter.bind(this);\n this.options = this.options.bind(this);\n this.handleInput = this.handleInput.bind(this);\n this.optionsReducer = this.optionsReducer.bind(this);\n }\n\n connect(): void {\n this.choices = new Choices(this.selectTarget, this.options());\n this.choices.setChoices(this.getSelectOptions());\n this.inputTarget.addEventListener(\"input\", this.handleInput);\n }\n\n getSelectOptions(): SelectOption[] {\n if (this.selectOptionsValue.length > 0) {\n return this.selectOptionsValue;\n } else {\n return [];\n }\n }\n\n handleInput(event: InputEvent): void {\n if (event.target instanceof HTMLInputElement) {\n // Only search when searchPath is present. If not it will search by select options\n if (this.hasSearchPathValue) {\n this.search(event.target);\n }\n }\n }\n\n search(input: HTMLInputElement): void {\n const splittedPath = this.searchPathValue.split(\"?\");\n let permittedParams = \"\";\n if (splittedPath.length == 2) {\n permittedParams = splittedPath[1];\n }\n const searchParams = new URLSearchParams(permittedParams);\n searchParams.append(this.searchKeyValue, input.value);\n\n fetch(`${splittedPath[0]}?${searchParams}`, {\n headers: { \"X-Requested-With\": \"XMLHttpRequest\" },\n })\n .then((response) => response.json())\n .then(this.update);\n }\n\n update(data: SelectOption[]): void {\n if (data) {\n this.choices.setChoices(data.filter(this.filter), \"value\", \"label\", true);\n } else {\n this.choices.clearChoices();\n }\n }\n\n filter(item: SelectOption): boolean {\n return ![...this.selectTarget.options].some((option) => {\n return option.value === item.value;\n });\n }\n\n // see more: https://github.com/Choices-js/Choices#configuration-options\n options(): Record {\n return \"renderChoiceLimit maxItemCount addItems removeItems removeItemButton editItems duplicateItemsAllowed delimiter paste searchEnabled searchChoices searchFloor searchResultLimit position resetScrollPosition addItemFilter shouldSort shouldSortItems placeholder placeholderValue prependValue appendValue renderSelectedChoices loadingText noResultsText noChoicesText itemSelectText addItemText maxItemText silent\"\n .split(\" \")\n .reduce(this.optionsReducer, {});\n }\n\n optionsReducer(\n accumulator: Record,\n currentValue: string\n ): Record {\n if (\n this.element instanceof HTMLElement &&\n this.element.dataset[currentValue]\n )\n accumulator[currentValue] = this.element.dataset[currentValue];\n return accumulator;\n }\n}\n","import ClassicEditor from \"@ckeditor/ckeditor5-build-classic\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"input\"];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n declare ckEditor: any;\n\n declare inputTarget: HTMLAreaElement;\n\n initialize() {\n this.ckEditor = null;\n }\n\n connect(): void {\n this.ckEditor = ClassicEditor.create(this.inputTarget).catch((error) => {\n console.error(error);\n });\n }\n\n disconnect(): void {\n if (this.ckEditor) {\n this.ckEditor.destroy();\n }\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\n \"billingAddress\",\n \"otherBillingAddressContainer\",\n \"sendInvoicesToSomeoneElse\",\n \"billingEmailsContainer\",\n ];\n\n declare billingAddressTarget: HTMLInputElement;\n declare otherBillingAddressContainerTarget: HTMLDivElement;\n declare sendInvoicesToSomeoneElseTarget: HTMLInputElement;\n declare billingEmailsContainerTarget: HTMLDivElement;\n\n handleBillingAddressChange(): void {\n if (this.billingAddressTarget.value == \"\") {\n this.showOtherBillingAddress();\n } else {\n this.hideOtherBillingAddress();\n }\n }\n\n handleSendInvoicesToSomeoneElseChange(): void {\n if (this.sendInvoicesToSomeoneElseTarget.checked) {\n this.showBillingEmails();\n } else {\n this.hideBillingEmails();\n }\n }\n\n showOtherBillingAddress(): void {\n this.otherBillingAddressContainerTarget.classList.remove(\"hidden\");\n }\n\n hideOtherBillingAddress(): void {\n this.otherBillingAddressContainerTarget.classList.add(\"hidden\");\n }\n\n showBillingEmails(): void {\n this.billingEmailsContainerTarget.classList.remove(\"hidden\");\n }\n\n hideBillingEmails(): void {\n this.billingEmailsContainerTarget.classList.add(\"hidden\");\n }\n}\n","import Rails from \"@rails/ujs\";\nimport { intersection } from \"lodash\";\nimport { Controller } from \"stimulus\";\n\ntype RateCard = {\n id: string;\n name: string;\n type: string;\n};\n\ntype KeyDuty = {\n text: string;\n value: string;\n custom_text: string;\n group_key: string;\n};\n\nexport default class extends Controller {\n static targets = [\n \"keyDutiesSelect\",\n \"element\",\n \"rateCardId\",\n \"rateCardIdContainer\",\n \"rateCardType\",\n \"otherKeyDutyContainer\",\n \"otherKeyDuty\",\n \"employmentType\",\n ];\n\n static values = {\n hourlyPayRateCalculationPath: String,\n allRateCards: Object,\n keyDutiesOptions: Object,\n };\n\n declare allRateCardsValue: {\n complex_outbound: Array;\n complex_inbound: Array;\n general: Array;\n };\n declare keyDutiesOptionsValue: {\n complex_outbound: Array;\n complex_inbound: Array;\n general: Array;\n };\n declare hourlyPayRateCalculationPathValue: string;\n declare keyDutiesSelectTarget: HTMLSelectElement;\n declare elementTargets: Array;\n declare rateCardIdTarget: HTMLSelectElement;\n declare rateCardIdContainerTarget: HTMLElement;\n declare rateCardTypeTarget: HTMLInputElement;\n declare payRateContainer: HTMLElement;\n declare otherKeyDutyContainerTarget: HTMLElement;\n declare otherKeyDutyTarget: HTMLInputElement;\n declare employmentTypeTarget: HTMLInputElement;\n\n private hiddenClass = \"hidden\";\n private permanentType = \"permanent\";\n\n connect(): void {\n this.rateCardIdContainerTarget.classList.add(this.hiddenClass);\n this.otherKeyDutyContainerTarget.classList.add(this.hiddenClass);\n this.payRateContainer = document.getElementById(\"payRateContainer\");\n }\n\n employmentTypeChange(event): void {\n const value = event.target.value;\n const rateCardIdContainerClassList = this.rateCardIdContainerTarget\n .classList as DOMTokenList;\n const keyDuties = this.keyDutiesSelectTarget;\n\n if (value == this.permanentType) {\n this.hideRateCardIdAndPayRate();\n } else {\n if (keyDuties.value.length) {\n rateCardIdContainerClassList.remove(this.hiddenClass);\n const event = new Event(\"change\");\n this.keyDutiesSelectTarget.dispatchEvent(event);\n }\n }\n }\n\n handleKeyDutiesChange(event): void {\n const keyDutiesOptions = this.keyDutiesOptionsValue;\n const keyDuties = event.target.values || [event.target.value];\n this.toggleElement(keyDuties);\n\n const employmentType = this.employmentTypeTarget.querySelector(\n \"input:checked\"\n ) as HTMLInputElement;\n\n // Hide rate card when employment type is permanent\n if (employmentType?.value == this.permanentType) {\n this.hideRateCardIdAndPayRate();\n return;\n }\n\n if (keyDuties.includes(\"other\")) {\n this.hideRateCardIdAndPayRate();\n this.otherKeyDutyContainerTarget.classList.remove(this.hiddenClass);\n } else if (\n keyDuties.length > 0 &&\n this.includeKeyDutyInList(keyDuties, keyDutiesOptions.complex_outbound)\n ) {\n this.generateRateCardSelect(this.allRateCardsValue.complex_outbound);\n } else if (\n keyDuties.length > 0 &&\n this.includeKeyDutyInList(keyDuties, keyDutiesOptions.complex_inbound)\n ) {\n this.generateRateCardSelect(this.allRateCardsValue.complex_inbound);\n } else if (\n keyDuties.length > 0 &&\n this.includeKeyDutyInList(keyDuties, keyDutiesOptions.general)\n ) {\n this.generateRateCardSelect(this.allRateCardsValue.general);\n } else {\n this.hideRateCardIdAndPayRate();\n }\n }\n\n onChangeRateCard(event): void {\n const { target } = event;\n const id = target.value;\n const type = target.options[target.selectedIndex].getAttribute(\"type\");\n if (id.length) {\n this.rateCardTypeTarget.value = type;\n this.getPayRates(id, type);\n } else {\n this.rateCardTypeTarget.value = null;\n this.removePayRateContailer();\n }\n }\n\n private includeKeyDutyInList(keyDutiesProvided, listOfkeyDuties): boolean {\n const combineKeyDuties = [\n ...new Set(keyDutiesProvided.concat(listOfkeyDuties)),\n ];\n return (\n combineKeyDuties.length <\n keyDutiesProvided.length + listOfkeyDuties.length\n );\n }\n\n private generateRateCardSelect(listOfRateCards: Array): void {\n this.rateCardIdContainerTarget.classList.remove(this.hiddenClass);\n this.otherKeyDutyTarget.value = null;\n this.otherKeyDutyContainerTarget.classList.add(this.hiddenClass);\n\n const currentRateCardId = this.rateCardIdTarget.value;\n\n if (listOfRateCards.length == 1) {\n this.rateCardIdTarget.innerHTML = \"\";\n } else {\n this.rateCardIdTarget.innerHTML = ``;\n }\n\n listOfRateCards.forEach((rateCard) => {\n const checked =\n listOfRateCards.length == 1 ||\n (currentRateCardId && rateCard.id && currentRateCardId === rateCard.id);\n this.rateCardIdTarget.innerHTML += ``;\n });\n\n const event = new Event(\"change\");\n this.rateCardIdTarget.dispatchEvent(event);\n }\n\n private toggleElement(values): void {\n this.hideElementTargets();\n const showElements = this.elementTargets.filter((element) => {\n const showValues = element.dataset.showValues.split(\",\").sort();\n const hideValues =\n (element.dataset.hideValues &&\n element.dataset.hideValues.split(\",\").sort()) ||\n [];\n return (\n intersection(values, showValues).length > 0 &&\n !(intersection(values, hideValues).length > 0)\n );\n });\n\n showElements.forEach((element) => {\n if (element.querySelector(\"input\"))\n element.querySelector(\"input\").disabled = false;\n if (element.querySelector(\"select\"))\n element.querySelector(\"select\").disabled = false;\n element.classList.remove(this.hiddenClass);\n });\n }\n\n private hideElementTargets(): void {\n this.elementTargets.forEach((element) => {\n if (element.querySelector(\"input\")) {\n element.querySelector(\"input\").disabled = true;\n element.querySelector(\"input\").value = \"\";\n }\n if (element.querySelector(\"select\")) {\n element.querySelector(\"select\").disabled = true;\n element.querySelector(\"select\").value = \"\";\n }\n\n element.classList.add(this.hiddenClass);\n });\n }\n\n private getPayRates(id, type): void {\n const dataParams = new URLSearchParams({\n id: id,\n type: type.trim(),\n }).toString();\n\n Rails.ajax({\n url: this.hourlyPayRateCalculationPathValue,\n type: \"GET\",\n data: dataParams,\n success: ({ replace_content }) => {\n if (this.rateCardIdTarget.value && this.rateCardIdTarget.value == id) {\n this.payRateContainer.innerHTML = replace_content.pay_rate_container;\n }\n },\n });\n }\n\n private removePayRateContailer(): void {\n this.payRateContainer.innerHTML = \"\";\n }\n\n private hideRateCardIdAndPayRate(): void {\n this.rateCardIdTarget.innerHTML = ``;\n this.rateCardTypeTarget.value = null;\n this.rateCardIdContainerTarget.classList.add(this.hiddenClass);\n this.otherKeyDutyContainerTarget.classList.add(this.hiddenClass);\n this.removePayRateContailer();\n }\n}\n","import Rails from \"@rails/ujs\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"form\"];\n\n static values = {\n submitUrl: String,\n clientEmail: String,\n };\n\n declare formTarget: HTMLFormElement;\n declare submitUrlValue: string;\n declare clientEmailValue: string;\n\n submitForm(e): void {\n e.preventDefault();\n\n const formData = new FormData(this.formTarget);\n formData.append(\"draft_job_opening[client_email]\", this.clientEmailValue);\n\n Rails.ajax({\n type: \"post\",\n url: this.submitUrlValue,\n data: formData,\n dataType: \"json\",\n });\n }\n}\n","import Rails from \"@rails/ujs\";\nimport BaseController from \"controllers/base_controller\";\n\nexport default class extends BaseController {\n sendRequestMobile(event: {\n preventDefault: () => void;\n currentTarget: HTMLElement;\n }) {\n event.preventDefault();\n const conversationElement = event.currentTarget;\n Rails.ajax({\n type: \"post\",\n url: conversationElement.dataset.markConversationAsReadUrlValue,\n success: ({ success, total_unread_messages_count }) => {\n if (success) {\n conversationElement.querySelector(\".unread-mesasge-count\")?.remove();\n document\n .querySelectorAll(\".total-unread-messages-count\")\n .forEach((element) => {\n if (total_unread_messages_count > 0) {\n element.innerHTML = total_unread_messages_count.toString();\n } else {\n element.remove();\n }\n });\n\n window.location.href =\n conversationElement.dataset.getConversationUrlValue;\n }\n },\n });\n }\n\n sendRequest(event: {\n preventDefault: () => void;\n currentTarget: HTMLElement;\n }) {\n const conversationElement = event.currentTarget;\n Rails.ajax({\n type: \"post\",\n url: conversationElement.dataset.markConversationAsReadUrlValue,\n success: ({ success, total_unread_messages_count }) => {\n if (success) {\n conversationElement.querySelector(\".unread-mesasge-count\")?.remove();\n document\n .querySelectorAll(\".total-unread-messages-count\")\n .forEach((element) => {\n if (total_unread_messages_count > 0) {\n element.innerHTML = total_unread_messages_count.toString();\n } else {\n element.remove();\n }\n });\n }\n },\n });\n }\n}\n","import Rails from \"@rails/ujs\";\nimport BaseController from \"controllers/base_controller\";\n\nexport default class extends BaseController {\n static targets = [\"form\", \"content\"];\n\n static values = {\n createMessageUrl: String,\n };\n\n declare formTarget: HTMLFormElement;\n declare contentTarget: HTMLInputElement;\n declare createMessageUrlValue: string;\n declare conversationContainer: HTMLElement;\n declare messageClass: string;\n\n connect() {\n this.conversationContainer = document.getElementById(\n \"conversation_container\"\n );\n this.messageClass = \"messages\";\n }\n\n sendMessage(e: React.FormEvent) {\n e.preventDefault();\n\n const formData = new FormData(this.formTarget);\n formData.append(\"content\", this.contentTarget.value);\n Rails.ajax({\n type: \"post\",\n url: this.createMessageUrlValue,\n data: formData,\n dataType: \"json\",\n success: (data) => this.onSuccess(data),\n error: (data) => this.errorHandling(data),\n });\n }\n\n onSuccess(data) {\n this.conversationContainer\n .getElementsByClassName(this.messageClass)[0]\n .insertAdjacentHTML(\"beforeend\", data.replace_content.message_component);\n this.formTarget.reset();\n document.getElementById(\"send-message-error\").innerText = \"\";\n this.scrollToTheBottom();\n }\n\n errorHandling(data) {\n document.getElementById(\"send-message-error\").innerText = data.error;\n document.getElementById(\"message-content\").classList.add(\"border-red-500\");\n }\n}\n","import Rails from \"@rails/ujs\";\nimport BaseController from \"controllers/base_controller\";\nimport { FormEvent } from \"react\";\n\nexport default class extends BaseController {\n showConversation(e: FormEvent) {\n this.toggleSelectedConversationStyle(e);\n if (e.currentTarget.dataset.showMessaegsModeValue == \"normal\") {\n window.location.href = e.currentTarget.dataset.getConversationUrlValue;\n } else {\n Rails.ajax({\n type: \"get\",\n url: e.currentTarget.dataset.getConversationUrlValue,\n dataType: \"json\",\n success: ({ replace_content }) => {\n const conversationContainer = document.getElementById(\n \"conversation_container\"\n );\n\n if (conversationContainer) {\n conversationContainer.innerHTML =\n replace_content.conversation_container;\n }\n\n this.scrollToTheBottom();\n },\n });\n }\n }\n\n toggleSelectedConversationStyle(e: FormEvent) {\n const activeElement = document.getElementsByClassName(\n \"conversation-row active\"\n )[0];\n if (activeElement) {\n activeElement.classList.remove(\"bg-neutral-200\", \"active\");\n }\n\n e.currentTarget.classList.add(\"bg-neutral-200\", \"active\");\n }\n}\n","import Rails from \"@rails/ujs\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"container\"];\n\n declare containerTarget: HTMLElement;\n declare currentCallerId: string;\n\n initialize() {\n this.currentCallerId = null;\n }\n\n populateContent(event) {\n event.stopPropagation();\n\n this.containerTarget.innerHTML = \"\";\n this.currentCallerId = event.currentTarget.id;\n\n const targetPath = event.currentTarget.dataset.targetPath;\n\n Rails.ajax({\n url: `${targetPath}`,\n type: \"GET\",\n dataType: \"json\",\n success: (data) => {\n if (data.id == this.currentCallerId) {\n this.containerTarget.innerHTML = data.content;\n }\n },\n });\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n readonly SESSION_STORAGE_KEY = \"currentCommunityAppCalendarDay\";\n\n static targets = [\"day\"];\n\n declare dayTargets: [HTMLInputElement];\n\n initialize(): void {\n this.setFocusedDay();\n }\n\n saveFocusedDay({ target }: { target: EventTarget }): void {\n if (target instanceof HTMLInputElement) {\n sessionStorage.setItem(this.SESSION_STORAGE_KEY, target.dataset.wday);\n }\n }\n\n setFocusedDay(): void {\n const selectedDay =\n sessionStorage.getItem(this.SESSION_STORAGE_KEY) || new Date().getDay();\n\n const selectedRadioButton = this.dayTargets.find(\n (day) => day.dataset.wday == selectedDay\n );\n\n selectedRadioButton.checked = true;\n }\n\n setFocusedDayToToday(): void {\n const today = String(new Date().getDay());\n\n sessionStorage.setItem(this.SESSION_STORAGE_KEY, today);\n\n const selectedRadioButton = this.dayTargets.find(\n (day) => day.dataset.wday == today\n );\n\n selectedRadioButton.checked = true;\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"vevo\", \"residence\"];\n static values = { type: String, visaRequired: Boolean };\n\n declare vevoTarget: HTMLDivElement;\n declare residenceTarget: HTMLDivElement;\n declare typeValue: string;\n declare visaRequiredValue: boolean;\n declare hasResidenceTarget: boolean;\n\n connect(): void {\n if (this.typeValue == \"citizen\") {\n this.hideUploadFor(this.vevoTarget);\n if (this.hasResidenceTarget) this.showUploadFor(this.residenceTarget);\n } else if (this.typeValue == \"visa_holder\") {\n if (this.hasResidenceTarget) this.hideUploadFor(this.residenceTarget);\n this.showUploadFor(this.vevoTarget);\n }\n }\n\n toggleUploadForm(e): void {\n if (e.currentTarget.value == \"citizen\") {\n this.hideUploadFor(this.vevoTarget);\n if (this.hasResidenceTarget) this.showUploadFor(this.residenceTarget);\n } else {\n if (this.hasResidenceTarget) this.hideUploadFor(this.residenceTarget);\n this.showUploadFor(this.vevoTarget);\n }\n }\n\n showUploadFor(target): void {\n target.classList.remove(\"hidden\");\n }\n\n hideUploadFor(target): void {\n target.classList.add(\"hidden\");\n }\n}\n","import CustomNestedForm from \"../../../custom_nested_form_controller\";\n\nexport default class extends CustomNestedForm {\n add(event) {\n super.add(event);\n this.reorderNestedFormIndex();\n }\n\n remove(event) {\n super.remove(event);\n this.reorderNestedFormIndex();\n }\n\n private reorderNestedFormIndex(): void {\n const childNodes = this.containerTarget.children;\n\n for (let i = 0; i < childNodes.length; ++i) {\n const indexElement = childNodes[i].querySelector('[data-target=\"index\"]');\n indexElement.innerHTML = `#${i + 1}`;\n }\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"field\"];\n declare fieldTarget: HTMLInputElement;\n\n initialize(): void {\n this.handleInput = this.handleInput.bind(this);\n }\n connect() {\n this.fieldTarget.addEventListener(\"input\", this.handleInput);\n }\n\n getCompanyList() {\n const companyList = document.querySelector(\"#company-list\");\n return JSON.parse(companyList.textContent);\n }\n\n handleInput(event: InputEvent): void {\n if (event.target instanceof HTMLInputElement) {\n const name = event.target.value;\n const nameWords = name.split(\" \");\n const companyList = this.getCompanyList();\n const companyMatches = companyList.filter((conpany) =>\n nameWords.some((element) =>\n conpany.toLowerCase().includes(element.toLowerCase())\n )\n );\n\n let companyMatchesHTML = \"\";\n companyMatches.forEach(\n (company) => (companyMatchesHTML += `
  • ${company}
  • `)\n );\n document.querySelector(\"#company-match-list\").innerHTML =\n companyMatchesHTML;\n document.querySelector(\"#client-company-match\").innerHTML =\n companyMatchesHTML;\n\n if (!name || !companyMatches.length) {\n document.querySelector(\"#company-match\").classList.add(\"hidden\");\n document.querySelector(\"#modal-company-match\").classList.add(\"hidden\");\n } else {\n document.querySelector(\"#company-match\").classList.remove(\"hidden\");\n document\n .querySelector(\"#modal-company-match\")\n .classList.remove(\"hidden\");\n }\n }\n }\n}\n","import confetti from \"canvas-confetti\";\nimport { Controller } from \"stimulus\";\n\ninterface ConfettiInterface {\n particleCount?: number;\n particleSpread?: number;\n particleOrigin: { y?: number; x?: number };\n particleColors: string[];\n particleScalar: number;\n particleTicks: number;\n}\n\nexport default class extends Controller {\n private animationEnd = Date.now() + 1000;\n private confettiFrequency = 40;\n private particleAngles = [225, 270, 315];\n private confettiOptions = {\n particleCount: 2,\n particleSpread: 80,\n particleOrigin: { y: 0 },\n particleColors: [\"#FF7F00\", \"#8B00FF\"],\n particleScalar: 0.7,\n particleTicks: 50,\n };\n\n static values = { render: String };\n declare renderValue: string;\n\n connect(): void {\n if (this.renderValue) this.initConfettiAnimation();\n }\n\n initConfettiAnimation(): void {\n const confettiInterval = setInterval(() => {\n requestAnimationFrame(() => this.renderConfetti(this.particleAngles));\n if (Date.now() > this.animationEnd) clearInterval(confettiInterval);\n }, this.confettiFrequency);\n }\n\n renderConfetti(particleAngles: number[]): void {\n particleAngles.forEach((particleAngle) => {\n this.generateConfettiParticles(particleAngle, this.confettiOptions);\n });\n }\n\n generateConfettiParticles(\n particleAngle: number,\n options: ConfettiInterface\n ): void {\n confetti({\n particleCount: options.particleCount,\n spread: options.particleSpread,\n origin: options.particleOrigin,\n colors: options.particleColors,\n angle: particleAngle,\n scalar: options.particleScalar,\n ticks: options.particleTicks,\n });\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"countdownParent\", \"countdown\", \"link\"];\n static values = {\n remainingTime: String,\n };\n\n declare countdownParentTarget: HTMLDivElement;\n declare countdownTarget: HTMLSpanElement;\n declare linkTarget: HTMLInputElement;\n declare remainingTimeValue: string;\n\n connect() {\n this.startCountdown();\n }\n\n startCountdown() {\n let remainingTime = Number(this.remainingTimeValue) as number;\n this.updateCountdown(remainingTime);\n\n const countdownInterval = setInterval(() => {\n remainingTime--;\n this.updateCountdown(remainingTime);\n\n if (remainingTime <= 0) {\n clearInterval(countdownInterval);\n this.hideCountdown();\n this.enableLink();\n }\n }, 1000);\n }\n\n updateCountdown(remainingTime) {\n this.countdownTarget.innerText = remainingTime;\n }\n\n hideCountdown() {\n this.countdownParentTarget.classList.add(\"hidden\");\n }\n\n enableLink() {\n this.linkTarget.classList.remove(\"hidden\");\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"template\", \"container\"];\n declare templateTarget: HTMLTemplateElement;\n declare containerTarget: HTMLElement;\n\n add(event) {\n event.preventDefault();\n\n const template = this.templateTarget.innerHTML;\n const container = this.containerTarget;\n const newIndex = container.children.length;\n const newForm = template\n .replace(/NEW_RECORD/g, new Date().getTime().toString())\n .replace(/FORM_UI_INDEX/g, `${newIndex + 1}`);\n\n container.insertAdjacentHTML(\"beforeend\", newForm);\n }\n\n remove(event) {\n event.preventDefault();\n\n const wrapper = event.target.closest(\".nested-form-wrapper\");\n wrapper.remove();\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"button\", \"checkbox\"];\n declare buttonTarget: HTMLButtonElement;\n declare checkboxTargets: Array;\n\n connect(): void {\n this.buttonTarget.disabled = true;\n }\n\n toggle(event: Event): void {\n event.preventDefault();\n this.buttonTarget.disabled = !this.checkboxTargets\n .map((checkbox) => {\n return checkbox.checked;\n })\n .includes(true);\n }\n}\n","import Pluralize from \"pluralize\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"fileInput\", \"template\", \"filenamesList\", \"details\"];\n\n declare fileInputTarget: HTMLInputElement;\n declare templateTarget: HTMLTemplateElement;\n declare filenamesListTarget: HTMLElement;\n declare detailsTarget: HTMLElement;\n\n connect(): void {\n this.detailsTarget.innerHTML = \"No files chosen\";\n }\n\n handleSelection(): void {\n const files = this.fileInputTarget.files;\n this.updateDetails(files.length);\n this.listFilenames(files);\n }\n\n private clearFileList(): void {\n this.filenamesListTarget.innerHTML = \"\";\n }\n\n private updateDetails(filesLength): void {\n if (filesLength === 0) {\n this.detailsTarget.innerHTML = \"No files chosen\";\n } else {\n this.detailsTarget.innerHTML = Pluralize(\"files\", filesLength, true);\n }\n }\n\n private listFilenames(files): void {\n this.clearFileList();\n Array.from(files)\n .map(({ name }) => name)\n .sort()\n .forEach((filename) => {\n const listItem = this.getListItemElementFromTemplate();\n listItem.innerText = filename;\n if (this.getIconCheckCircle())\n listItem.prepend(this.getIconCheckCircle());\n if (this.getIconBin()) listItem.append(this.getIconBin());\n this.filenamesListTarget.appendChild(listItem);\n });\n }\n\n private getListItemElementFromTemplate(): HTMLElement {\n return this.templateTarget.content\n .querySelector(\"li\")\n .cloneNode(true) as HTMLElement;\n }\n\n private getIconCheckCircle(): HTMLElement {\n return this.templateTarget.content\n .querySelector(\"svg.icon-check-circle\")\n ?.cloneNode(true) as HTMLElement;\n }\n\n private getIconBin(): HTMLElement {\n return this.templateTarget.content\n .querySelector(\"a.link-icon-bin\")\n ?.cloneNode(true) as HTMLElement;\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static values = {\n classes: Array,\n autoHide: Boolean,\n };\n declare classesValue: Array;\n declare autoHideValue: boolean;\n\n connect(): void {\n setTimeout(() => this.show(), 300);\n if (this.autoHideValue) {\n setTimeout(() => this.hide(), 5000);\n }\n }\n\n show(): void {\n this.element.classList.add(...this.classesValue);\n }\n\n hide(): void {\n this.element.classList.remove(...this.classesValue);\n setTimeout(() => this.destroy(), 1000);\n }\n\n destroy(): void {\n if (!this.element.parentNode) return;\n\n this.element.parentNode.removeChild(this.element);\n }\n}\n","import type { Instance as FlatpickrInstance } from \"flatpickr/dist/types/instance\";\nimport type { Options as FlatpickrOptions } from \"flatpickr/dist/types/options\";\nimport Flatpickr from \"stimulus-flatpickr\";\n\nexport default class extends Flatpickr {\n static targets = [\"dateRange\", \"startAt\", \"finishAt\"];\n declare dateRangeTarget: HTMLInputElement;\n declare startAtTarget: HTMLInputElement;\n declare finishAtTarget: HTMLInputElement;\n\n declare config: FlatpickrOptions;\n dateFormat = \"d/m/Y\";\n\n connect(): void {\n this.config = {\n mode: \"range\",\n dateFormat: this.dateFormat,\n };\n super.connect();\n }\n\n change(\n selectedDates: Date[],\n dateString: string,\n instance: FlatpickrInstance\n ): void {\n if (selectedDates.length > 1) {\n const startAt = instance.formatDate(selectedDates[0], this.dateFormat);\n const finishAt = instance.formatDate(selectedDates[1], this.dateFormat);\n\n this.dateRangeTarget.value = dateString;\n this.dispatchCustomEvent(startAt, finishAt);\n this.dispatchCustomEventLimitDateRange(\n selectedDates[0],\n selectedDates[1],\n startAt,\n finishAt\n );\n }\n }\n\n reload(): void {\n if (!this.dateRangeTarget.value) {\n const startAt = null;\n const finishAt = null;\n\n this.dispatchCustomEvent(startAt, finishAt);\n }\n }\n\n dispatchCustomEvent(startAt: string, finishAt: string): void {\n const customEvent = new CustomEvent(\"flatpickr-date-range-changed\");\n\n this.startAtTarget.value = startAt;\n this.finishAtTarget.value = finishAt;\n window.dispatchEvent(customEvent);\n }\n dispatchCustomEventLimitDateRange(\n startAt: Date,\n finishAt: Date,\n stringStartAt: string,\n stringFinishAt\n ): void {\n const customEvent = new CustomEvent(\n \"flatpickr-date-range-changed-limit-date-range\"\n );\n const checkDate = new Date(\"2024-09-01\");\n\n const isValidDateRange = startAt >= checkDate && finishAt >= checkDate;\n const isLessThan14Days =\n (finishAt.getTime() - startAt.getTime()) / (1000 * 60 * 60 * 24) < 14;\n\n if (isValidDateRange && isLessThan14Days) {\n this.startAtTarget.value = stringStartAt;\n this.finishAtTarget.value = stringFinishAt;\n window.dispatchEvent(customEvent);\n } else {\n alert(\n \"Date range choices must to be less than 14 days and after 01-09-2024\"\n );\n }\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"form\"];\n static values = {\n url: String,\n };\n declare formTarget: HTMLFormElement;\n declare urlValue: string;\n\n refreshPageWithParams(): void {\n this.formTarget.setAttribute(\"method\", \"get\");\n this.formTarget.setAttribute(\"action\", this.urlValue);\n\n this.formTarget.submit();\n }\n}\n","import { gaClickTrack, gaSelectTrack } from \"helpers/ga_event_tracking\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static values = {\n clickText: String,\n checkboxName: String,\n checkboxLabel: String,\n selectLabel: String,\n selectName: String,\n selectedValue: String,\n };\n\n declare clickTextValue: string;\n declare checkboxNameValue: string;\n declare checkboxLabelValue: string;\n declare selectLabelValue: string;\n declare selectNameValue: string;\n declare selectedValueValue: string;\n\n click(e: Event): void {\n const target: HTMLInputElement = e.target as HTMLInputElement;\n gaClickTrack({\n click_text: this.clickTextValue || target.textContent,\n });\n }\n\n clickCheckbox(e: Event): void {\n const target: HTMLInputElement = e.target as HTMLInputElement;\n gaClickTrack({\n checkbox_name: this.checkboxNameValue,\n checkbox_label: this.checkboxLabelValue,\n checked: target.checked.toString(),\n });\n }\n\n select(e: Event): void {\n const target: HTMLInputElement = e.target as HTMLInputElement;\n\n gaSelectTrack({\n select_label: this.selectLabelValue,\n selected_name: this.checkboxNameValue,\n selected_value: this.selectedValueValue || target.value,\n });\n }\n}\n","export const show = (element) => {\n element.classList.remove(element.dataset.hiddenClass || \"hidden\");\n};\n\nexport const hide = (element) => {\n element.classList.add(element.dataset.hiddenClass || \"hidden\");\n};\n","import { show, hide } from \"helpers/show_hide\";\nimport { Controller } from \"stimulus\";\n// import { show, hide } from \"./helpers/show_hide\"\n\nexport default class extends Controller {\n static targets = [\"otherTopSkillContainer\", \"otherSkill\"];\n\n declare otherTopSkillContainerTarget: HTMLDivElement;\n declare otherSkillTarget: HTMLInputElement;\n\n private otherTopSkillValue = \"other\";\n\n connect(): void {\n hide(this.otherTopSkillContainerTarget);\n }\n\n handleTopSkillsChange(event) {\n const topSkills = event.target.values || [event.target.value];\n\n if (topSkills.includes(this.otherTopSkillValue)) {\n show(this.otherTopSkillContainerTarget);\n } else {\n hide(this.otherTopSkillContainerTarget);\n this.otherSkillTarget.value = \"\";\n }\n }\n}\n","import Rails from \"@rails/ujs\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"form\"];\n static values = {\n editUrl: String,\n };\n declare formTarget: HTMLFormElement;\n declare editUrlValue: string;\n\n refreshPageWithParams(): void {\n const formData = new FormData(this.formTarget);\n formData.set(\"_method\", \"POST\");\n const params = new URLSearchParams(formData as URLSearchParams);\n\n Rails.ajax({\n type: \"POST\",\n url: this.editUrlValue,\n dataType: \"json\",\n data: params.toString(),\n });\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"otherCompanyBenefitContainer\", \"otherCompanyBenefitInput\"];\n\n static values = {\n otherCompanyBenefitOption: String,\n };\n\n declare otherCompanyBenefitOptionValue: string;\n\n declare otherCompanyBenefitContainerTarget: HTMLElement;\n declare otherCompanyBenefitInputTarget: HTMLInputElement;\n\n private hiddenClass = \"hidden\";\n\n handleCompanyBenefitsChange(event): void {\n const selectedCompanyBenefits = event.target.values || [event.target.value];\n\n if (selectedCompanyBenefits.includes(this.otherCompanyBenefitOptionValue)) {\n this.otherCompanyBenefitContainerTarget.classList.remove(\n this.hiddenClass\n );\n } else {\n this.otherCompanyBenefitContainerTarget.classList.add(this.hiddenClass);\n this.otherCompanyBenefitInputTarget.value = \"\";\n }\n }\n}\n","import { Controller } from \"stimulus\";\nimport Turbolinks from \"turbolinks\";\n\nexport default class extends Controller {\n static values = { url: String };\n declare urlValue: string;\n visit(): void {\n Turbolinks.visit(this.urlValue);\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"navigation\"];\n\n declare navigationTarget: HTMLInputElement;\n\n disconnect(): void {\n this.shrink();\n }\n openMobile() {\n this.navigationTarget.classList.remove(\"main-nav-inactive\", \"md:hidden\");\n this.navigationTarget.classList.add(\"main-nav-active\");\n }\n\n closeMobile(event) {\n event.stopPropagation();\n\n this.navigationTarget.classList.remove(\"main-nav-active\");\n this.navigationTarget.classList.add(\"main-nav-inactive\", \"md:hidden\");\n }\n\n shrink() {\n const pageContentBody = document.getElementById(\"page-content-body\");\n\n this.navigationTarget.classList.add(\"is-shrink\");\n pageContentBody.classList.remove(\"w-screen\");\n }\n\n show() {\n const pageContentBody = document.getElementById(\"page-content-body\");\n\n this.navigationTarget.classList.remove(\"is-shrink\");\n pageContentBody.classList.add(\"w-screen\");\n }\n}\n","import Inputmask from \"inputmask\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"maskedInput\"];\n\n declare maskedInputTargets: [HTMLInputElement];\n\n connect(): void {\n Inputmask({ placeholder: \"\" }).mask(this.maskedInputTargets);\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"toggleModalButton\", \"hideModalButton\"];\n declare toggleModalButtonTarget: HTMLElement;\n declare hideModalButtonTarget: HTMLElement;\n\n private toggleClass = \"hidden\";\n\n toggleModal(event: Event): void {\n event.preventDefault();\n const element = event.currentTarget as HTMLElement;\n const modalId = element.dataset.modalId;\n const modal = document.querySelector(`[id='${modalId}']`);\n\n modal.classList.toggle(this.toggleClass);\n }\n\n toggleAndSetDataModal(event: Event): void {\n const job = document.querySelector(\"#job_opening\") as HTMLSelectElement;\n const time = document.querySelector(\"#shift_time\") as HTMLInputElement;\n const note = document.querySelector(\"#additional_note\") as HTMLInputElement;\n const selectedIndex = job.selectedIndex;\n const selectedOption = job.options[selectedIndex];\n const selectedValue = selectedOption.value;\n const selectedText = selectedOption.text;\n const location = selectedOption.getAttribute(\"data-location\");\n const wage = selectedOption.getAttribute(\"data-wage\");\n if (!selectedValue || !time) {\n return;\n }\n this.toggleModal(event);\n (document.querySelector(\"#job_name_message\") as HTMLElement).innerText =\n selectedText;\n (document.querySelector(\"#shift_time_message\") as HTMLElement).innerText =\n time.value;\n (document.querySelector(\"#location_message\") as HTMLElement).innerText =\n this.getLocation(location);\n (document.querySelector(\"#wage_message\") as HTMLElement).innerText = wage;\n if (note.value) {\n (document.querySelector(\"#note_message\") as HTMLElement).innerText =\n \"Note: \" + note.value;\n }\n }\n\n getLocation(location: string) {\n if (location == \"remote\") {\n return \"Work form home\";\n } else if (location == \"in_office\") {\n return \"In office\";\n } else {\n return \"Hybrid\";\n }\n }\n\n hideModal(event: Event): void {\n event.preventDefault();\n const element = event.currentTarget as HTMLElement;\n const modalId = element.dataset.modalId;\n const modal = document.querySelector(`[id='${modalId}']`);\n\n modal.classList.add(this.toggleClass);\n }\n}\n","import Remote from \"stimulus-remote-rails\";\n\nexport default class extends Remote {\n static targets = [\"modalContent\"];\n\n declare modalContentTarget: HTMLElement;\n\n connect() {\n super.connect();\n }\n\n append(event: CustomEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const [data, ,] = event.detail;\n\n this.modalContentTarget.innerHTML = data.replace_content;\n }\n}\n","import { debounce } from \"lodash\";\nimport { Controller } from \"stimulus\";\n\ntype SelectedValue = {\n value: string;\n text: string;\n};\n\nconst activeSelector = \"[aria-selected='true']\";\n\nexport default class extends Controller {\n static targets = [\n \"hidden\",\n \"list\",\n \"search\",\n \"preview\",\n \"dropdown\",\n \"item\",\n \"addable\",\n \"inputContainer\",\n ];\n\n static values = {\n items: Array,\n selected: Array,\n searchUrl: String,\n preloadUrl: String,\n addableUrl: String,\n disabled: Boolean,\n };\n\n declare hiddenTarget: HTMLSelectElement;\n declare selectedValue: SelectedValue[];\n declare preloadUrlValue: string;\n declare searchRemoteValue: boolean;\n declare itemsValue: HTMLOptionElement[];\n declare dropdownTarget: HTMLElement;\n declare searchTarget: HTMLInputElement;\n declare listTarget: HTMLElement;\n declare addableUrlValue: boolean;\n declare inputContainerTarget: HTMLInputElement;\n declare searchUrlValue: string;\n declare hasListTarget: boolean;\n declare hasPreviewTarget: HTMLElement;\n declare previewTarget: HTMLElement;\n declare itemTargets: HTMLInputElement[];\n declare disabledValue: boolean;\n\n connect(): void {\n this.hiddenTarget.insertAdjacentHTML(\"afterend\", this.template);\n if (this.selectedValue.length) this.selectedValueChanged();\n this.search = debounce(this.search.bind(this), 300);\n this.enhanceHiddenSelect();\n }\n\n // Allows selecting the hidden select field from html and extracting selected id values:\n // document.getElementById(\"selectId\").values - [2, 4, 23]\n enhanceHiddenSelect() {\n Object.defineProperty(this.hiddenTarget, \"values\", {\n get: () => {\n if (this.selectedValue.length <= 0) return [];\n\n return this.selectedValue.map((item) => item.value);\n },\n });\n }\n\n search() {\n this.searchLocal();\n }\n\n searchLocal() {\n this.dropdownTarget.classList.add(\"multiselect__dropdown--open\");\n if (this.searchTarget.value === \"\") {\n const theRestOfTheItems = this.itemsValue.filter(\n (x) => !this.selectedValue.map((y) => y.value).includes(x.value)\n );\n this.listTarget.innerHTML = this.selectedItems;\n this.listTarget.insertAdjacentHTML(\n \"beforeend\",\n this.items(theRestOfTheItems)\n );\n }\n\n let searched = this.itemsValue.filter((item) => {\n return item.text\n .toLowerCase()\n .includes(this.searchTarget.value.toLowerCase());\n });\n\n const selectedSearched = this.selectedValue.filter((item) => {\n return item.text\n .toLowerCase()\n .includes(this.searchTarget.value.toLowerCase());\n });\n\n searched = searched.filter(\n (x) => !selectedSearched.map((y) => y.value).includes(x.value)\n );\n\n if (searched.length === 0)\n this.dropdownTarget.classList.remove(\"multiselect__dropdown--open\");\n this.listTarget.innerHTML = this.items(selectedSearched, true);\n this.listTarget.insertAdjacentHTML(\"beforeend\", this.items(searched));\n }\n\n toggleDropdown() {\n if (this.dropdownTarget.classList.contains(\"multiselect__dropdown--open\")) {\n this.dropdownTarget.classList.remove(\"multiselect__dropdown--open\");\n if (this.selectedValue.length > 0)\n this.inputContainerTarget.style.display = \"none\";\n this.searchTarget.blur();\n } else {\n if (this.itemsValue.length)\n this.dropdownTarget.classList.add(\"multiselect__dropdown--open\");\n this.searchTarget.focus();\n }\n }\n\n closeOnClickOutside({ target }) {\n if (this.element.contains(target)) return;\n\n this.dropdownTarget.classList.remove(\"multiselect__dropdown--open\");\n if (this.selectedValue.length > 0)\n this.inputContainerTarget.style.display = \"none\";\n this.searchTarget.value = \"\";\n if (!this.searchRemoteValue) {\n this.listTarget.innerHTML = this.allItems;\n this.selectedValue.forEach((selected) => {\n this.checkItem(selected.value);\n });\n }\n }\n\n searchUrlValueChanged() {\n if (this.searchUrlValue) this.searchRemoteValue = true;\n }\n\n itemsValueChanged() {\n if (!this.hasListTarget) return;\n\n if (this.itemsValue.length) {\n this.listTarget.innerHTML = this.items(this.itemsValue);\n }\n }\n\n selectedValueChanged() {\n if (!this.hasPreviewTarget) return;\n\n while (this.hiddenTarget.options.length) this.hiddenTarget.remove(0);\n\n if (this.selectedValue.length > 0) {\n this.previewTarget.innerHTML = this.pills;\n this.searchTarget.style.paddingTop = \"0.5rem\";\n\n this.selectedValue.forEach((selected) => {\n const option = document.createElement(\"option\");\n option.text = selected.text;\n option.value = selected.value;\n option.setAttribute(\"selected\", \"true\");\n this.hiddenTarget.add(option);\n });\n\n if (!this.searchRemoteValue) {\n this.selectedValue.forEach((selected) => {\n this.checkItem(selected.value);\n });\n }\n } else {\n this.searchTarget.style.paddingTop = \"0\";\n this.inputContainerTarget.style.display = \"\";\n this.previewTarget.innerHTML = \"\";\n }\n\n this.element.dispatchEvent(new Event(\"multiselect-change\"));\n setTimeout(() => {\n this.hiddenTarget.dispatchEvent(new Event(\"change\"));\n }, 100);\n }\n\n removeItem(e) {\n e.stopPropagation();\n\n const itemToRemove = e.currentTarget.parentNode;\n\n this.selectedValue = this.selectedValue.filter(\n (x) => x.value.toString() !== itemToRemove.dataset.value\n );\n this.uncheckItem(itemToRemove.dataset.value);\n this.element.dispatchEvent(\n new CustomEvent(\"multiselect-removed\", {\n detail: { id: itemToRemove.dataset.value },\n })\n );\n }\n\n uncheckItem(value) {\n const itemToUncheck = this.listTarget.querySelector(\n `input[data-value=\"${value}\"]`\n ) as HTMLInputElement;\n\n if (itemToUncheck) itemToUncheck.checked = false;\n }\n\n checkItem(value) {\n const itemToCheck = this.listTarget.querySelector(\n `input[data-value=\"${value}\"]`\n ) as HTMLInputElement;\n\n if (itemToCheck) itemToCheck.checked = true;\n }\n\n toggleItem(input) {\n const item = {\n text: input.dataset.text,\n value: input.dataset.value,\n };\n let newSelectedArray = this.selectedValue;\n\n if (input.checked) {\n newSelectedArray.push(item);\n\n if (this.focusedItem) {\n this.focusedItem.closest(\"li\").classList.remove(\"multiselect__focused\");\n this.focusedItem.removeAttribute(\"aria-selected\");\n }\n\n input.setAttribute(\"aria-selected\", \"true\");\n input.closest(\"li\").classList.add(\"multiselect__focused\");\n this.element.dispatchEvent(\n new CustomEvent(\"multiselect-added\", { detail: { item: item } })\n );\n } else {\n newSelectedArray = newSelectedArray.filter(\n (selected) => selected.value.toString() !== item.value\n );\n this.element.dispatchEvent(\n new CustomEvent(\"multiselect-removed\", { detail: { id: item.value } })\n );\n }\n\n this.selectedValue = newSelectedArray;\n }\n\n onKeyDown(e) {\n const handler = this[`on${e.key}Keydown`];\n if (handler) handler(e);\n }\n\n onArrowDownKeydown = (event) => {\n const item = this.sibling(true);\n if (item) this.navigate(item);\n event.preventDefault();\n };\n\n onArrowUpKeydown = (event) => {\n const item = this.sibling(false);\n if (item) this.navigate(item);\n event.preventDefault();\n };\n\n onBackspaceKeydown = () => {\n if (this.searchTarget.value !== \"\") return;\n if (!this.selectedValue.length) return;\n\n const selected = this.selectedValue;\n const value = selected.pop().value;\n\n this.uncheckItem(value);\n this.selectedValue = selected;\n this.element.dispatchEvent(\n new CustomEvent(\"multiselect-removed\", { detail: { id: value } })\n );\n };\n\n onEnterKeydown = () => {\n if (this.focusedItem) this.focusedItem.click();\n };\n\n onEscapeKeydown = () => {\n if (this.searchTarget.value !== \"\") {\n this.searchTarget.value = \"\";\n return this.search();\n }\n\n this.toggleDropdown();\n };\n\n sibling(next) {\n const options = this.itemTargets;\n const selected = this.focusedItem;\n const index = options.indexOf(selected);\n const sibling = next ? options[index + 1] : options[index - 1];\n const def = next ? options[0] : options[options.length - 1];\n return sibling || def;\n }\n\n navigate(target) {\n const previouslySelected = this.focusedItem;\n if (previouslySelected) {\n previouslySelected.removeAttribute(\"aria-selected\");\n previouslySelected.closest(\"li\").classList.remove(\"multiselect__focused\");\n }\n\n target.setAttribute(\"aria-selected\", \"true\");\n target.closest(\"li\").classList.add(\"multiselect__focused\");\n target.scrollIntoView({ behavior: \"smooth\", block: \"nearest\" });\n }\n\n get focusedItem() {\n return this.listTarget.querySelector(activeSelector) as HTMLInputElement;\n }\n\n focusSearch() {\n this.inputContainerTarget.style.display = \"\";\n this.searchTarget.focus();\n }\n\n addableEvent() {\n document.dispatchEvent(new CustomEvent(\"multiselect-addable\"));\n }\n\n get template() {\n return `\n
    multiselect#toggleDropdown focus->multiselect#focusSearch\" tabindex=\"0\" data-turbo-cache=\"false\">\n
    \n
    \n
    ${this.inputTemplate}
    \n
    \n
    multiselect#closeOnClickOutside\">\n
    \n
      \n ${this.allItems}\n
    \n
    \n
    \n `;\n }\n\n get noResultsTemplate() {\n if (\n this.element instanceof HTMLElement &&\n this.element.dataset.noResultsMessage\n )\n return `
    ${this.element.dataset.noResultsMessage}
    `;\n }\n\n get inputTemplate() {\n if (this.element instanceof HTMLElement && this.element.dataset.placeholder)\n return `\n multiselect#onKeyDown\">\n `;\n }\n\n items(items, selected = false) {\n const checked = selected ? \"checked\" : \"\";\n let itemsTemplate = \"\";\n\n items.forEach(\n (item) => (itemsTemplate += this.itemTemplate(item, checked))\n );\n\n return itemsTemplate;\n }\n\n get pills() {\n let itemsTemplate = \"\";\n\n this.selectedValue.forEach(\n (item) => (itemsTemplate += this.pillTemplate(item))\n );\n\n return itemsTemplate;\n }\n\n get selectedItems() {\n return this.items(this.selectedValue, true);\n }\n\n get allItems() {\n return this.items(this.itemsValue);\n }\n\n itemTemplate(item, selected = \"\") {\n return `\n
  • \n \n
  • \n `;\n }\n\n checkBoxChange(event) {\n event.preventDefault();\n this.searchTarget.focus();\n this.toggleItem(event.currentTarget);\n }\n\n pillTemplate(item) {\n if (this.disabledValue) {\n return `
    \n ${item.text}\n
    `;\n } else {\n return `
    \n ${item.text}\n multiselect#removeItem\">\n \n \n \n \n \n
    `;\n }\n }\n}\n","import { intersection } from \"lodash\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"select\", \"element\"];\n\n declare selectTarget: HTMLSelectElement;\n declare elementTargets: Array;\n\n connect(): void {\n const selectedOptions = Array.from(\n this.selectTarget.selectedOptions\n ) as Array;\n\n if (selectedOptions?.length) {\n const values = Array.from(selectedOptions).map((option) => {\n return option.value;\n });\n this.toggleElement(values);\n } else this.hideElementTargets();\n }\n\n handleChange(event): void {\n this.toggleElement(event.target.values || [event.target.value]);\n }\n\n toggleElement(values): void {\n this.hideElementTargets();\n const showElements = this.elementTargets.filter((element) => {\n const showValues = element.dataset.showValues.split(\",\").sort();\n const hideValues =\n (element.dataset.hideValues &&\n element.dataset.hideValues.split(\",\").sort()) ||\n [];\n return (\n intersection(values, showValues).length > 0 &&\n !(intersection(values, hideValues).length > 0)\n );\n });\n\n showElements.forEach((element) => {\n if (element.querySelector(\"input\"))\n element.querySelector(\"input\").disabled = false;\n if (element.querySelector(\"select\"))\n element.querySelector(\"select\").disabled = false;\n element.classList.remove(\"hidden\");\n });\n }\n\n hideElementTargets(): void {\n this.elementTargets.forEach((element) => {\n if (element.querySelector(\"input\"))\n element.querySelector(\"input\").disabled = true;\n if (element.querySelector(\"select\"))\n element.querySelector(\"select\").disabled = true;\n element.classList.add(\"hidden\");\n });\n }\n}\n","import { Toggle } from \"tailwindcss-stimulus-components\";\n\nexport default class NavItemToggle extends Toggle {\n declare toggleableTargets: [HTMLInputElement];\n\n connect() {\n super.connect();\n this.toggleAtLoad();\n }\n\n toggleAtLoad() {\n const activeNavLinkItem = document.querySelector(\n \".left-nav-link-item.active\"\n );\n if (!activeNavLinkItem) return;\n\n let sibling: HTMLElement = activeNavLinkItem.parentElement\n .previousElementSibling as HTMLElement;\n\n while (sibling) {\n if (sibling.matches(\".toggle-btn\")) {\n sibling.classList.add(\"toggle-active\");\n sibling.click();\n return;\n }\n sibling = sibling.previousElementSibling as HTMLElement;\n }\n }\n}\n","import NestedForm from \"stimulus-rails-nested-form\";\n\nexport default class extends NestedForm {\n remove(event: Event): void {\n super.remove(event);\n\n // This enables us perform actions with other stimulus controller.\n // e.g. nested-form-remove@window->attendance-form#processingForm.\n const customEvent = new CustomEvent(\"nested-form-remove\");\n window.dispatchEvent(customEvent);\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"input\"];\n declare inputTarget: HTMLInputElement;\n\n connect() {\n this.count = parseInt(this.inputTarget.value) || 0;\n this.inputTarget.value = this.count.toString();\n }\n\n increment() {\n this.count++;\n }\n\n decrement() {\n if (this.count == 0) return;\n this.count--;\n }\n\n get count() {\n return parseInt(this.data.get(\"count\"));\n }\n\n set count(value) {\n this.data.set(\"count\", value.toString());\n this.inputTarget.value = this.count.toString();\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n absoluteValue(event: InputEvent): void {\n const target = event.target as HTMLInputElement;\n const value = Number(target.value);\n const newValue = Math.abs(value);\n target.value = newValue ? newValue.toString() : null;\n }\n}\n","import Rails from \"@rails/ujs\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\n \"form\",\n \"importAttendancesHeader\",\n \"importAttendancesContainer\",\n \"nextButtonContainer\",\n \"fileInput\",\n \"template\",\n \"filenamesList\",\n \"details\",\n \"errorDetailsContainer\",\n \"errorDetails\",\n \"loading\",\n ];\n\n declare formTarget: HTMLFormElement;\n declare nextButtonContainerTarget: HTMLElement;\n declare fileInputTarget: HTMLInputElement;\n declare templateTarget: HTMLTemplateElement;\n declare filenamesListTarget: HTMLElement;\n declare detailsTarget: HTMLElement;\n declare errorDetailsContainerTarget: HTMLElement;\n declare errorDetailsTarget: HTMLElement;\n declare loadingTarget: HTMLElement;\n\n private hiddenClass = \"hidden\";\n\n connect(): void {\n this.clearErrorDetails();\n this.clearFileList();\n this.detailsTarget.innerHTML = \"No files chosen\";\n }\n\n showLoading(): void {\n this.loadingTarget.classList.remove(this.hiddenClass);\n }\n\n hideLoading(): void {\n this.loadingTarget.classList.add(this.hiddenClass);\n }\n\n handleSelection(): void {\n const files = this.fileInputTarget.files;\n this.updateDetails(files.length);\n this.listFilenames(files);\n }\n\n handleSubmitButtonOnClick(e): void {\n e.preventDefault();\n this.clearErrorDetails();\n if (this.fileInputTarget.files[0]) {\n this.reader(this.fileInputTarget.files[0], () => {\n const formData = new FormData(this.formTarget);\n formData.append(\"commit\", e.target.value);\n this.showLoading();\n this.handleFormSubmit(formData);\n });\n } else {\n this.errorDetailsContainerTarget.classList.remove(this.hiddenClass);\n this.errorDetailsTarget.innerHTML =\n \"

    File can't be blank

    \";\n }\n }\n\n private reader(file, callback): void {\n const fr = new FileReader();\n fr.onload = () => callback();\n fr.onerror = () => {\n this.hideLoading();\n this.errorDetailsContainerTarget.classList.remove(this.hiddenClass);\n this.errorDetailsTarget.innerHTML =\n \"

    There are some problems with your file content, please reload page and try again

    \";\n };\n fr.readAsText(file);\n }\n\n private handleFormSubmit(formData): void {\n Rails.ajax({\n type: \"post\",\n url: \"/admin/unapproved_attendances/csv_imports\",\n data: formData,\n success: (data) => {\n this.hideLoading();\n\n if (data.error) {\n this.showErrorDetails(data);\n }\n },\n error: (data) => {\n this.hideLoading();\n this.showErrorDetails(data);\n },\n });\n }\n\n private clearErrorDetails(): void {\n this.errorDetailsContainerTarget.classList.add(this.hiddenClass);\n this.errorDetailsTarget.innerHTML = \"\";\n }\n\n private showErrorDetails(data): void {\n this.errorDetailsContainerTarget.classList.remove(this.hiddenClass);\n let errorDetails = `

    ${data.error}

    `;\n if (data.invalid_attendance_forms?.length > 0) {\n errorDetails += \"
      \";\n data.invalid_attendance_forms.forEach(function (item) {\n errorDetails += `
    • row ${item.row_line}: ${item.error_msg}
    • `;\n });\n errorDetails += \"
    \";\n }\n this.errorDetailsTarget.innerHTML = errorDetails;\n }\n\n private clearFileList(): void {\n this.filenamesListTarget.innerHTML = \"\";\n }\n\n private updateDetails(filesLength): void {\n if (filesLength === 0) {\n this.detailsTarget.innerHTML = \"No files chosen\";\n } else {\n this.detailsTarget.innerHTML = \"\";\n }\n }\n\n private listFilenames(files): void {\n this.clearFileList();\n Array.from(files)\n .map(({ name }) => name)\n .sort()\n .forEach((filename) => {\n const listItem = this.getListItemElementFromTemplate();\n listItem.innerText = filename;\n listItem.prepend(this.getIconCheckCircle());\n listItem.append(this.getIconBin());\n this.filenamesListTarget.appendChild(listItem);\n });\n }\n\n private getListItemElementFromTemplate(): HTMLElement {\n return this.templateTarget.content\n .querySelector(\"li\")\n .cloneNode(true) as HTMLElement;\n }\n\n private getIconCheckCircle(): HTMLElement {\n return this.templateTarget.content\n .querySelector(\"svg.icon-check-circle\")\n .cloneNode(true) as HTMLElement;\n }\n\n private getIconBin(): HTMLElement {\n return this.templateTarget.content\n .querySelector(\"a.link-icon-bin\")\n .cloneNode(true) as HTMLElement;\n }\n}\n","import Rails from \"@rails/ujs\";\nimport { downloadFileFromAjaxResponse } from \"helpers/download_file_from_ajax_response\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"form\"];\n\n declare formTarget: HTMLFormElement;\n\n submitForm(e): void {\n e.preventDefault();\n const formData = new FormData(this.formTarget);\n formData.append(\n \"attendance_ids\",\n JSON.stringify(this.getUnassignedAttendances())\n );\n\n Rails.ajax({\n type: \"post\",\n url: \"/admin/unapproved_attendances/csv_exports\",\n data: formData,\n dataType: \"json\",\n success: ({ filename, content, type }) => {\n downloadFileFromAjaxResponse(content, filename, type);\n },\n });\n }\n\n getUnassignedAttendances(): string[] {\n const checkboxes = document.querySelectorAll(\n \"input[class*=attendance-id-checkboxes]:checked\"\n );\n const attendanceIds = [];\n\n for (let i = 0; i < checkboxes.length; i++) {\n const checkBoxElement = checkboxes[i] as HTMLInputElement;\n attendanceIds.push(checkBoxElement.value);\n }\n\n return attendanceIds;\n }\n}\n","export const downloadFileFromAjaxResponse = (content, filename, type) => {\n if (!filename) return;\n\n const blob = new Blob([content], { type: type });\n const url = URL.createObjectURL(blob);\n\n // Create a link to download it\n const downloadElement = document.createElement(\"a\");\n downloadElement.href = url;\n downloadElement.setAttribute(\"download\", filename);\n downloadElement.click();\n};\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"form\", \"checkbox\"];\n\n declare formTargets: HTMLFormElement[];\n declare checkboxTargets: [HTMLInputElement];\n\n setFormsParams(): void {\n this.formTargets.forEach((form) => {\n const candidateIdsInput = form.querySelector(\n \"[name='job_opening_candidate_ids']\"\n ) as HTMLInputElement;\n candidateIdsInput.value = this.#selectIds().join(\",\");\n });\n }\n\n #selectIds(): string[] {\n return this.checkboxTargets\n .filter((checkbox) => checkbox.checked)\n .map((checkbox) => checkbox.value);\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"button\"];\n static values = {\n toggleCssClass: String,\n };\n\n declare buttonTargets: HTMLElement[];\n declare toggleCssClassValue: string;\n\n connect(): void {\n document.addEventListener(\n \"select_all_toggle_controller.select_all\",\n this.#show\n );\n document.addEventListener(\n \"select_all_toggle_controller.some_selected\",\n this.#show\n );\n document.addEventListener(\n \"select_all_toggle_controller.deselect_all\",\n this.#hide\n );\n }\n\n #hide = (): void => {\n this.buttonTargets.forEach((button) =>\n button.classList.add(...this.toggleCssClassValue.split(\" \"))\n );\n };\n\n #show = (): void => {\n this.buttonTargets.forEach((button) =>\n button.classList.remove(...this.toggleCssClassValue.split(\" \"))\n );\n };\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"select\", \"modal\"];\n\n declare selectTarget: HTMLSelectElement;\n declare modalTarget: HTMLElement;\n declare modalTargets: Array;\n\n private toggleClass = \"hidden\";\n\n connect(): void {\n this.selectTarget.addEventListener(\"change\", this.handleChange.bind(this));\n }\n\n handleChange(event: InputEvent) {\n const target = event.target as HTMLSelectElement;\n const modalTargetElement = this.modalTargets.find(\n (modal: HTMLElement): boolean => {\n return modal.dataset.statusTarget == target.value;\n }\n );\n\n if (modalTargetElement) {\n modalTargetElement.classList.remove(this.toggleClass);\n } else {\n this.selectTarget.value = this.selectTarget.dataset.defaultValue;\n }\n }\n\n hideModal(event): void {\n const target = event.target;\n\n const modalTargetElement = this.modalTargets.find(\n (modal: HTMLElement): boolean => {\n return modal.dataset.statusTarget == target.dataset.statusTarget;\n }\n );\n\n if (modalTargetElement) {\n this.selectTarget.value = this.selectTarget.dataset.defaultValue;\n modalTargetElement.classList.add(this.toggleClass);\n }\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"selectAllCheckbox\", \"checkbox\", \"selectedCount\"];\n\n static values = {\n candidatesCounterId: String,\n };\n\n declare selectAllCheckboxTarget: HTMLInputElement;\n declare checkboxTargets: [HTMLInputElement];\n declare selectedCountTarget: HTMLDivElement;\n declare hasSelectAllCheckboxTarget: boolean;\n declare candidatesCounterIdValue: string;\n declare candidatesCountTarget: HTMLSpanElement;\n\n connect(): void {\n this.candidatesCountTarget = document.getElementById(\n this.candidatesCounterIdValue\n );\n if (!this.hasSelectAllCheckboxTarget) return;\n\n if (this.selectAllCheckboxTarget.checked) {\n this.#selectAll();\n } else {\n this.#deSelectAll();\n }\n }\n\n toggle(event: Event): void {\n const target = event.target as HTMLInputElement;\n\n if (target.checked) {\n this.#selectAll();\n } else {\n this.#deSelectAll();\n }\n }\n\n handleChange(): void {\n if (this.checkboxTargets.every((checkbox) => checkbox.checked)) {\n this.#selectAll();\n\n return;\n }\n\n if (this.checkboxTargets.some((checkbox) => checkbox.checked)) {\n this.#showCounting();\n this.selectAllCheckboxTarget.checked = false;\n document.dispatchEvent(\n new CustomEvent(\"select_all_toggle_controller.some_selected\")\n );\n return;\n }\n\n this.#deSelectAll();\n document.dispatchEvent(\n new CustomEvent(\"select_all_toggle_controller.deselect_all\")\n );\n }\n\n #selectAll(): void {\n this.selectAllCheckboxTarget.checked = true;\n this.checkboxTargets.forEach((checkbox) => {\n if (!checkbox.disabled) checkbox.checked = true;\n });\n this.#showCounting();\n\n document.dispatchEvent(\n new CustomEvent(\"select_all_toggle_controller.select_all\")\n );\n }\n\n #deSelectAll(): void {\n this.selectAllCheckboxTarget.checked = false;\n this.checkboxTargets.forEach((checkbox) => (checkbox.checked = false));\n this.#hideCounting();\n\n document.dispatchEvent(\n new CustomEvent(\"select_all_toggle_controller.deselect_all\")\n );\n }\n\n #hideCounting(): void {\n this.selectedCountTarget.textContent = \"\";\n this.selectedCountTarget.classList.add(\"invisible\");\n\n this.updateCandidatesCount(0);\n }\n\n #showCounting(): void {\n const selectedRows = this.checkboxTargets.filter(\n (checkbox) => checkbox.checked\n );\n this.selectedCountTarget.textContent = `${selectedRows.length} Selected`;\n this.selectedCountTarget.classList.remove(\"invisible\");\n this.updateCandidatesCount(selectedRows.length);\n }\n\n updateCandidatesCount(count) {\n if (!this.candidatesCountTarget) return;\n\n const candidateText = count > 1 ? \"candidates\" : \"candidate\";\n this.candidatesCountTarget.innerHTML = `${count.toString()} ${candidateText}`;\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\n \"selectAllCheckbox\",\n \"checkbox\",\n \"downloadCsvButton\",\n \"invitationButton\",\n \"selectedCount\",\n ];\n\n declare selectAllCheckboxTarget: HTMLInputElement;\n declare checkboxTargets: [HTMLInputElement];\n declare downloadCsvButtonTarget: HTMLAnchorElement;\n declare invitationButtonTarget: HTMLAnchorElement;\n declare selectedCountTarget: HTMLDivElement;\n declare hasSelectAllCheckboxTarget: boolean;\n declare hasDownloadCsvButtonTarget: boolean;\n declare hasInvitationButtonTarget: boolean;\n\n connect(): void {\n if (!this.hasSelectAllCheckboxTarget) return;\n\n if (this.selectAllCheckboxTarget.checked) {\n this.#showButtons();\n } else {\n this.#hideButtons();\n }\n\n if (this.hasInvitationButtonTarget) {\n this.invitationButtonTarget.addEventListener(\n \"click\",\n this.handleInvitationButtonOnClick.bind(this)\n );\n }\n\n this.element.addEventListener(\n \"change\",\n this.handleCheckboxOnChange.bind(this)\n );\n }\n\n toggle(event: Event): void {\n const target = event.target as HTMLInputElement;\n\n if (target.checked) {\n this.selectAll();\n } else {\n this.deSelectAll();\n }\n }\n\n handleInvitationButtonOnClick(event: Event): void {\n event.preventDefault();\n const form = (event.target as HTMLAnchorElement)\n .parentNode as HTMLFormElement;\n const checkedCheckboxes = this.checkboxTargets.filter(\n (x) => x.checked == true\n );\n\n checkedCheckboxes.forEach((checkbox) => {\n const input = document.createElement(\"input\");\n input.type = \"hidden\";\n input.value = checkbox.value;\n input.name = checkbox.name;\n form.appendChild(input);\n });\n\n form.submit();\n }\n\n selectAll(): void {\n this.checkboxTargets.forEach((checkbox) => (checkbox.checked = true));\n this.#showButtons();\n }\n\n deSelectAll(): void {\n this.checkboxTargets.forEach((checkbox) => (checkbox.checked = false));\n this.#hideButtons();\n }\n\n handleCheckboxOnChange(event: Event): void {\n if (!this.checkboxTargets.includes(event.target as HTMLInputElement))\n return;\n\n if (this.checkboxTargets.some((checkbox) => checkbox.checked)) {\n this.#showButtons();\n } else {\n this.#hideButtons();\n }\n }\n\n #hideButtons(): void {\n this.#hideCounting();\n if (this.hasDownloadCsvButtonTarget)\n this.downloadCsvButtonTarget.classList.add(\"invisible\");\n\n if (this.hasInvitationButtonTarget)\n this.invitationButtonTarget.classList.add(\"invisible\");\n }\n\n #showButtons(): void {\n this.#showCounting();\n if (this.hasDownloadCsvButtonTarget)\n this.downloadCsvButtonTarget.classList.remove(\"invisible\");\n\n if (this.hasInvitationButtonTarget)\n this.invitationButtonTarget.classList.remove(\"invisible\");\n }\n\n #hideCounting(): void {\n this.selectedCountTarget.textContent = \"\";\n this.selectedCountTarget.classList.add(\"invisible\");\n }\n\n #showCounting(): void {\n const selectedRows = this.checkboxTargets.filter(\n (checkbox) => checkbox.checked\n );\n this.selectedCountTarget.textContent = `${selectedRows.length} Selected`;\n this.selectedCountTarget.classList.remove(\"invisible\");\n }\n}\n","import Rails from \"@rails/ujs\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"form\", \"content\"];\n\n static values = {\n createMessageUrl: String,\n };\n\n declare formTarget: HTMLFormElement;\n declare contentTarget: HTMLInputElement;\n declare createMessageUrlValue: string;\n\n connect() {\n this.scrollToMessageForm();\n }\n\n sendMessage(e: React.FormEvent) {\n e.preventDefault();\n\n const formData = new FormData(this.formTarget);\n formData.append(\"content\", this.contentTarget.value);\n Rails.ajax({\n type: \"post\",\n url: this.createMessageUrlValue,\n data: formData,\n dataType: \"json\",\n success: (data) => {\n document.getElementById(\"messages_container\").innerHTML =\n data.replace_content.messages_container;\n },\n });\n }\n\n scrollToMessageForm() {\n const element = document.getElementById(\"messages_container\");\n element.scrollIntoView(false);\n }\n}\n","import Rails from \"@rails/ujs\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static values = {\n getMessageUrl: String,\n };\n\n declare getMessageUrlValue: string;\n\n showMessage(e: React.FormEvent) {\n this.toggleSelectedMessageStyle(e);\n\n Rails.ajax({\n type: \"get\",\n url: this.getMessageUrlValue,\n dataType: \"json\",\n success: ({ replace_content }) => {\n const messageContainer = document.getElementById(\"messages_container\");\n\n if (messageContainer) {\n document.getElementById(\"messages_container\").innerHTML =\n replace_content.messages_container;\n }\n },\n });\n }\n\n toggleSelectedMessageStyle(e: React.FormEvent) {\n const activeElement =\n document.getElementsByClassName(\"message-row active\")[0];\n if (activeElement) {\n activeElement.classList.remove(\"bg-neutral-200\", \"active\");\n }\n\n e.currentTarget.classList.add(\"bg-neutral-200\", \"active\");\n }\n}\n","import Rails from \"@rails/ujs\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\n \"form\",\n \"importRecipientsHeader\",\n \"importRecipientsContainer\",\n \"nextButtonContainer\",\n \"sendWithoutValidationContainer\",\n \"sendMessageSkipValidationBtnContainer\",\n \"sendMessageBtnContainer\",\n \"sendMessagesHeader\",\n \"sendMessagesContainer\",\n \"sendMessageButtonContainer\",\n \"fileInput\",\n \"template\",\n \"filenamesList\",\n \"details\",\n \"sendTo\",\n \"errorDetailsContainer\",\n \"errorDetails\",\n \"modal\",\n \"cancelModal\",\n \"loading\",\n ];\n\n declare formTarget: HTMLFormElement;\n declare importRecipientsHeaderTarget: HTMLElement;\n declare importRecipientsContainerTarget: HTMLElement;\n declare nextButtonContainerTarget: HTMLElement;\n declare sendWithoutValidationContainerTarget: HTMLElement;\n declare sendMessagesHeaderTarget: HTMLElement;\n declare sendMessagesContainerTarget: HTMLElement;\n declare sendMessageButtonContainerTarget: HTMLElement;\n declare sendMessageBtnContainer: HTMLElement;\n declare sendMessageSkipValidationBtnContainer: HTMLElement;\n declare fileInputTarget: HTMLInputElement;\n declare templateTarget: HTMLTemplateElement;\n declare filenamesListTarget: HTMLElement;\n declare detailsTarget: HTMLElement;\n declare sendToTarget: HTMLElement;\n declare errorDetailsContainerTarget: HTMLElement;\n declare errorDetailsTarget: HTMLElement;\n declare cancelModalTarget: HTMLElement;\n declare modalTarget: HTMLElement;\n declare loadingTarget: HTMLElement;\n\n private hiddenClass = \"hidden\";\n\n connect(): void {\n this.clearErrorDetails();\n this.clearFileList();\n this.detailsTarget.innerHTML = \"No files chosen\";\n this.cancelModalTarget.addEventListener(\"click\", this.hideModal.bind(this));\n }\n\n showModal(e): void {\n e.preventDefault();\n this.modalTarget.classList.remove(this.hiddenClass);\n }\n\n hideModal(): void {\n this.modalTarget.classList.add(this.hiddenClass);\n }\n\n showLoading(): void {\n this.loadingTarget.classList.remove(this.hiddenClass);\n }\n\n hideLoading(): void {\n this.loadingTarget.classList.add(this.hiddenClass);\n }\n\n handleSelection(): void {\n const files = this.fileInputTarget.files;\n this.updateDetails(files.length);\n this.listFilenames(files);\n }\n\n handleSubmitButtonOnClick(e): void {\n e.preventDefault();\n this.clearErrorDetails();\n if (this.fileInputTarget.files[0]) {\n this.reader(this.fileInputTarget.files[0], () => {\n const formData = new FormData(this.formTarget);\n formData.append(\"commit\", e.target.value);\n this.hideModal();\n this.showLoading();\n this.handleFormSubmit(formData);\n });\n } else {\n this.errorDetailsContainerTarget.classList.remove(this.hiddenClass);\n this.errorDetailsTarget.innerHTML =\n \"

    File can't be blank

    \";\n }\n }\n\n private reader(file, callback): void {\n const fr = new FileReader();\n fr.onload = () => callback();\n fr.onerror = () => {\n this.hideModal();\n this.hideLoading();\n this.errorDetailsContainerTarget.classList.remove(this.hiddenClass);\n this.errorDetailsTarget.innerHTML =\n \"

    There are some problems with your file content, please reload page and try again

    \";\n };\n fr.readAsText(file);\n }\n\n private handleFormSubmit(formData): void {\n Rails.ajax({\n type: \"post\",\n url: \"/admin/sms/bulks\",\n data: formData,\n success: (data) => {\n if (data.success) {\n if (data.validate_file_only || data.skip_validation) {\n this.hideImportRecipients();\n this.clearErrorDetails();\n if (data.skip_validation) {\n this.sendWithoutValidationContainerTarget.classList.add(\n this.hiddenClass\n );\n }\n this.moveToSendMessagesStep(data);\n }\n } else if (data.error) {\n this.showErrorDetails(data);\n this.sendWithoutValidationContainerTarget.classList.remove(\n this.hiddenClass\n );\n\n document\n .querySelector(\"#sendSkipValidationBtn\")\n .classList.remove(this.hiddenClass);\n\n document\n .querySelector(\".btnSendMessage\")\n .classList.add(this.hiddenClass);\n }\n this.hideLoading();\n },\n });\n }\n\n private moveToSendMessagesStep(data): void {\n this.sendToTarget.innerHTML = `To ${data.valid_recipients.length} recipients from ${data.file_name}`;\n this.sendMessagesHeaderTarget.classList.remove(this.hiddenClass);\n this.sendMessagesContainerTarget.classList.remove(this.hiddenClass);\n this.sendMessageButtonContainerTarget.classList.remove(this.hiddenClass);\n }\n\n private hideImportRecipients(): void {\n this.importRecipientsHeaderTarget.classList.add(this.hiddenClass);\n this.importRecipientsContainerTarget.classList.add(this.hiddenClass);\n this.nextButtonContainerTarget.classList.add(this.hiddenClass);\n }\n\n private clearErrorDetails(): void {\n this.errorDetailsContainerTarget.classList.add(this.hiddenClass);\n this.errorDetailsTarget.innerHTML = \"\";\n }\n\n private showErrorDetails(data): void {\n this.errorDetailsContainerTarget.classList.remove(this.hiddenClass);\n let errorDetails = `

    ${data.error}

    `;\n if (data.invalid_recipients.length > 0) {\n errorDetails += \"
      \";\n data.invalid_recipients.forEach(function (item) {\n errorDetails += `
    • row ${item.lineno}: ${item.error_msg}
    • `;\n });\n errorDetails += \"
    \";\n }\n this.errorDetailsTarget.innerHTML = errorDetails;\n }\n\n private clearFileList(): void {\n this.filenamesListTarget.innerHTML = \"\";\n }\n\n private updateDetails(filesLength): void {\n if (filesLength === 0) {\n this.detailsTarget.innerHTML = \"No files chosen\";\n } else {\n this.detailsTarget.innerHTML = \"\";\n }\n }\n\n private listFilenames(files): void {\n this.clearFileList();\n Array.from(files)\n .map(({ name }) => name)\n .sort()\n .forEach((filename) => {\n const listItem = this.getListItemElementFromTemplate();\n listItem.innerText = filename;\n listItem.prepend(this.getIconCheckCircle());\n listItem.append(this.getIconBin());\n this.filenamesListTarget.appendChild(listItem);\n });\n }\n\n private getListItemElementFromTemplate(): HTMLElement {\n return this.templateTarget.content\n .querySelector(\"li\")\n .cloneNode(true) as HTMLElement;\n }\n\n private getIconCheckCircle(): HTMLElement {\n return this.templateTarget.content\n .querySelector(\"svg.icon-check-circle\")\n .cloneNode(true) as HTMLElement;\n }\n\n private getIconBin(): HTMLElement {\n return this.templateTarget.content\n .querySelector(\"a.link-icon-bin\")\n .cloneNode(true) as HTMLElement;\n }\n}\n","import { Controller } from \"stimulus\";\nimport Turbolinks from \"turbolinks\";\n\nexport default class extends Controller {\n static values = {\n url: String,\n };\n declare urlValue: string;\n handleChangePerPage(event: InputEvent): void {\n const target = event.target as HTMLSelectElement;\n const splittedPath = this.urlValue.split(\"?\");\n const path = splittedPath[0];\n let query = \"\";\n if (splittedPath.length > 1) {\n query = splittedPath[1];\n }\n\n const urlParams = new URLSearchParams(query);\n urlParams.append(target.name, target.value);\n Turbolinks.visit(`${path}?${urlParams.toString()}`);\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\n \"field\",\n \"latitude\",\n \"longitude\",\n \"address\",\n \"city\",\n \"state\",\n \"postalCode\",\n \"country\",\n \"street\",\n \"streetNumber\",\n \"plusCode\",\n \"formatted_address\",\n \"latitude\",\n \"longitude\",\n ];\n\n declare autocomplete: google.maps.places.Autocomplete;\n\n declare plusCodeTarget: HTMLInputElement;\n declare hasPlusCodeTarget: boolean;\n\n declare formattedAddressTarget: HTMLInputElement;\n declare hasFormattedAddressTarget: boolean;\n\n declare fieldTarget: HTMLInputElement;\n declare hasFieldTarget: boolean;\n\n declare latitudeTarget: HTMLInputElement;\n declare hasLatitudeTarget: boolean;\n\n declare longitudeTarget: HTMLInputElement;\n declare hasLongitudeTarget: boolean;\n\n declare addressTarget: HTMLInputElement;\n declare hasAddressTarget: boolean;\n\n declare cityTarget: HTMLInputElement;\n declare hasCityTarget: boolean;\n\n declare stateTarget: HTMLInputElement;\n declare hasStateTarget: boolean;\n\n declare postalCodeTarget: HTMLInputElement;\n declare hasPostalCodeTarget: boolean;\n\n declare countryTarget: HTMLInputElement;\n declare hasCountryTarget: boolean;\n\n declare streetTarget: HTMLInputElement;\n declare hasStreetTarget: boolean;\n\n declare streetNumberTarget: HTMLInputElement;\n declare hasStreetNumberTarget: boolean;\n\n setLatitudeTargetValue(value) {\n if (this.hasLatitudeTarget) {\n this.latitudeTarget.value = value;\n }\n }\n\n setLongitudeTargetValue(value) {\n if (this.hasLongitudeTarget) {\n this.longitudeTarget.value = value;\n }\n }\n\n setAddressTargetValue(value) {\n if (this.hasAddressTarget) {\n this.addressTarget.value = value;\n }\n }\n\n setCityTargetValue(value) {\n if (this.hasCityTarget) {\n this.cityTarget.value = value;\n }\n }\n\n setStateTargetValue(value) {\n if (this.hasStateTarget) {\n this.stateTarget.value = value;\n }\n }\n\n setPostalCodeTargetValue(value) {\n if (this.hasPostalCodeTarget) {\n this.postalCodeTarget.value = value;\n }\n }\n\n setCountryTargetValue(value) {\n if (this.hasCountryTarget) {\n this.countryTarget.value = value;\n }\n }\n\n setStreetTargetValue(value) {\n if (this.hasStreetTarget) {\n this.streetTarget.value = value;\n }\n }\n\n setStreetNumberTargetValue(value) {\n if (this.hasStreetNumberTarget) {\n this.streetNumberTarget.value = value;\n }\n }\n\n setPlusCodeTargetValue(value) {\n if (this.hasPlusCodeTarget) {\n this.plusCodeTarget.value = value;\n }\n }\n\n setFieldTargetValue(value) {\n if (this.hasFieldTarget) {\n this.fieldTarget.value = value;\n }\n }\n\n setFormattedAddressTargetValue(value) {\n if (this.formattedAddressTarget) {\n this.formattedAddressTarget.value = value;\n }\n }\n\n connect() {\n if (typeof google != \"undefined\") {\n this.initAutocomplete();\n }\n }\n\n initAutocomplete() {\n const optionsTypes = this.data.has(\"options-types\")\n ? this.parseAndCleanOptionsTypes(this.data.get(\"options-types\"))\n : [];\n\n this.autocomplete = new google.maps.places.Autocomplete(this.fieldTarget);\n this.autocomplete.setFields([\n \"name\",\n \"geometry\",\n \"address_components\",\n \"formatted_address\",\n ]);\n this.autocomplete.setOptions({\n componentRestrictions: { country: [\"au\", \"nz\"] },\n types: optionsTypes,\n });\n this.autocomplete.addListener(\n \"place_changed\",\n this.placeChanged.bind(this)\n );\n this.fieldTarget.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n }\n });\n // google.maps.event.addDomListener(\n // this.fieldTarget,\n // \"keydown\",\n // this.disableEnterIfAutocompleteIsVisible.bind(this)\n // );\n }\n\n parseAndCleanOptionsTypes(optionsTypes) {\n return (optionsTypes || \"\")\n .split(\",\")\n .filter((item) => item)\n .map((item) => item.trim());\n }\n\n placeChanged() {\n let place = this.autocomplete.getPlace();\n\n if (!this.fieldTarget.value) place = undefined;\n\n if (!!place && !!place.geometry && !!place.address_components) {\n this.setAddressFieldsFromGeocode(place);\n } else if (!!place.name && this.fieldTarget.value == place.name) {\n return;\n } else {\n this.setLatitudeTargetValue(\"\");\n this.setLongitudeTargetValue(\"\");\n this.setAddressTargetValue(\"\");\n this.setStreetTargetValue(\"\");\n this.setStreetNumberTargetValue(\"\");\n this.setCityTargetValue(\"\");\n this.setStateTargetValue(\"\");\n this.setPostalCodeTargetValue(\"\");\n this.setCountryTargetValue(\"\");\n this.setPlusCodeTargetValue(\"\");\n this.setFormattedAddressTargetValue(\"\");\n }\n this.fieldTarget.dispatchEvent(new CustomEvent(\"placeChange\"));\n }\n\n setAddressFields(place) {\n this.setLatitudeTargetValue(place.geometry.location.lat());\n this.setLongitudeTargetValue(place.geometry.location.lng());\n\n // Example address_components payload\n // 0: {long_name: \"1\", short_name: \"1\", types: [\"street_number\"]}\n // 1: {long_name: \"Alexandra Parade\", short_name: \"Alexandra Parade\", types: [\"route\"]}\n // 2: {long_name: \"Collingwood\", short_name: \"Collingwood\", types: [\"locality\", \"political\"]}\n // 3: {long_name: \"City of Yarra\", short_name: \"Yarra\", types: [\"administrative_area_level_2\", \"political\"]}\n // 4: {long_name: \"Victoria\", short_name: \"VIC\", types: [\"administrative_area_level_1\", \"political\"]}\n // 5: {long_name: \"Australia\", short_name: \"AU\", types: [\"country\", \"political\"]}\n // 6: {long_name: \"3066\", short_name: \"3066\", types: [\"postal_code\"]}\n\n this.setAddressTargetValue(\n `${this.findComponentLongName(\n place.address_components,\n \"street_number\"\n )} ${this.findComponentLongName(place.address_components, \"route\")}`\n );\n\n this.setStreetTargetValue(\n this.findComponentLongName(place.address_components, \"route\")\n );\n this.setStreetNumberTargetValue(\n this.findComponentLongName(place.address_components, \"street_number\")\n );\n\n this.setCityTargetValue(\n this.findComponentLongName(place.address_components, \"locality\")\n );\n this.setStateTargetValue(\n this.findComponentShortName(\n place.address_components,\n \"administrative_area_level_1\"\n )\n );\n this.setPostalCodeTargetValue(\n this.findComponentLongName(place.address_components, \"postal_code\")\n );\n this.setCountryTargetValue(\n this.findComponentShortName(place.address_components, \"country\")\n );\n this.setPlusCodeTargetValue(\n this.findComponentLongName(place.address_components, \"plus_code\")\n );\n\n if (!this.postalCodeValueNotMissing()) {\n this.geocodePostalCode({\n lat: place.geometry.location.lat(),\n lng: place.geometry.location.lng(),\n });\n }\n }\n\n setAddressFieldsFromGeocode(place) {\n this.setAddressFields(place);\n this.setFieldTargetValue(place.formatted_address);\n }\n\n findComponentLongName(components, type) {\n const component = components.find((component) =>\n component.types.includes(type)\n );\n if (typeof component == \"undefined\") {\n return \"\";\n }\n return component.long_name;\n }\n\n findComponentShortName(components, type) {\n const component = components.find((component) =>\n component.types.includes(type)\n );\n if (typeof component == \"undefined\") {\n return \"\";\n }\n return component.short_name;\n }\n\n disableEnterIfAutocompleteIsVisible(event) {\n const ENTER_KEY = 13;\n\n if (event.keyCode === ENTER_KEY && this.isAutocompleteElementVisible()) {\n event.preventDefault();\n }\n }\n\n isAutocompleteElementVisible() {\n const GOOGLE_AUTOCOMPLETE_ELEMENT_CLASS = \"pac-container\";\n\n const element = document.getElementsByClassName(\n GOOGLE_AUTOCOMPLETE_ELEMENT_CLASS\n )[0] as HTMLElement;\n\n if (element === null || element === undefined) {\n console.log(\n \"PlacesController: could not find `pac-container` class, check if Google has changed the autocomplete element\"\n );\n return false;\n }\n\n return !!(\n element.offsetWidth ||\n element.offsetHeight ||\n element.getClientRects().length\n );\n }\n\n postalCodeValueNotMissing() {\n if (this.hasPostalCodeTarget) {\n return this.postalCodeTarget.value !== \"\";\n }\n return true;\n }\n\n geocodePostalCode(latlng) {\n const geocoder = new google.maps.Geocoder();\n geocoder.geocode({ location: latlng }, (results, status) => {\n if (status === \"OK\") {\n if (results[0]) {\n this.setPostalCodeTargetValue(\n this.findComponentLongName(\n results[0].address_components,\n \"postal_code\"\n )\n );\n }\n }\n });\n }\n}\n","import { Controller } from \"stimulus\";\n\ntype NameType = \"short_name\" | \"long_name\";\n\nexport default class extends Controller {\n static targets = [\n \"input\",\n \"postcodeInput\",\n \"suburbInput\",\n \"stateInput\",\n \"countryCodeInput\",\n ];\n\n declare autocomplete: google.maps.places.Autocomplete;\n declare inputTarget: HTMLInputElement;\n declare postcodeInputTarget: HTMLInputElement;\n declare suburbInputTarget: HTMLInputElement;\n declare stateInputTarget: HTMLInputElement;\n declare countryCodeInputTarget?: HTMLInputElement;\n\n connect(): void {\n if (typeof google != \"undefined\") {\n this.initAutocomplete();\n }\n }\n\n initAutocomplete(): void {\n this.autocomplete = new google.maps.places.Autocomplete(this.inputTarget);\n this.autocomplete.setFields([\"address_components\"]);\n this.autocomplete.setOptions({\n componentRestrictions: { country: [\"au\", \"nz\"] },\n types: [\"postal_code\", \"locality\"],\n });\n\n this.autocomplete.addListener(\n \"place_changed\",\n this.handlePlaceChanged.bind(this)\n );\n\n this.inputTarget.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n }\n });\n }\n\n handlePlaceChanged(): void {\n const place = this.autocomplete.getPlace();\n\n if (place.address_components) {\n this.suburbInputTarget.value = this.findComponentName(\n place.address_components,\n \"locality\",\n \"short_name\"\n );\n\n this.postcodeInputTarget.value = this.findComponentName(\n place.address_components,\n \"postal_code\",\n \"short_name\"\n );\n\n this.stateInputTarget.value = this.findComponentName(\n place.address_components,\n \"administrative_area_level_1\",\n \"short_name\"\n );\n\n if (this.countryCodeInputTarget) {\n this.countryCodeInputTarget.value = this.findComponentName(\n place.address_components,\n \"country\",\n \"short_name\"\n );\n }\n } else {\n this.suburbInputTarget.value = \"\";\n this.postcodeInputTarget.value = \"\";\n this.stateInputTarget.value = \"\";\n if (this.countryCodeInputTarget) {\n this.countryCodeInputTarget.value = \"\";\n }\n }\n }\n\n findComponentName(\n components: google.maps.places.PlaceResult[\"address_components\"],\n name: string,\n nameType: NameType\n ): string {\n const component = components.find((component) =>\n component.types.includes(name)\n );\n if (typeof component == \"undefined\") {\n return \"\";\n }\n return component[nameType];\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"input\", \"element\", \"container\", \"hide\"];\n\n declare inputTargets: Array;\n declare elementTargets: Array;\n declare hideTargets: Array;\n declare containerTargets: Array;\n\n connect(): void {\n this.inputTargets.forEach((input) => {\n this.toggleElement(input.checked, input.dataset.toggleTarget);\n });\n this.containerTargets.forEach((input) => {\n this.toggleElement(!input.checked, input.dataset.toggleTarget);\n });\n }\n\n handleChange(event): void {\n const checkedInput = event.target.checked;\n const toggleTarget = event.target.dataset.toggleTarget;\n this.toggleElement(checkedInput, toggleTarget);\n }\n\n handleChangeToHide(event): void {\n const checkedInput = event.target.checked;\n const toggleTarget = event.target.dataset.toggleTarget;\n this.toggleElement(!checkedInput, toggleTarget);\n }\n\n toggleElement(checked, toggleTarget): void {\n if (checked) {\n this.showElementTargets(toggleTarget);\n } else {\n this.hideElementTargets(toggleTarget);\n }\n }\n\n showElementTargets(target): void {\n const showElements = this.elementTarget(target);\n showElements.forEach((element) => {\n element.classList.remove(\"hidden\");\n });\n const hideElements = this.hideTarget(target);\n hideElements.forEach((element) => {\n element.classList.add(\"hidden\");\n });\n }\n\n hideElementTargets(target): void {\n const showElements = this.elementTarget(target);\n showElements.forEach((element) => {\n element.classList.add(\"hidden\");\n });\n const hideElements = this.hideTarget(target);\n hideElements.forEach((element) => {\n element.classList.remove(\"hidden\");\n });\n }\n\n elementTarget(target): Array {\n return this.elementTargets.filter((element) => {\n const values = element.dataset.showValues;\n return values.includes(target);\n });\n }\n\n hideTarget(target): Array {\n return this.hideTargets.filter((element) => {\n const values = element.dataset.showValues;\n return values.includes(target);\n });\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"input\", \"element\"];\n\n declare inputTargets: Array;\n declare elementTargets: Array;\n\n connect(): void {\n const checkedInput = this.inputTargets.find((input) => input.checked);\n\n if (checkedInput) this.toggleElement(checkedInput.value);\n else this.hideElementTargets();\n }\n\n handleChange(event): void {\n this.toggleElement(event.target.value);\n }\n\n toggleElement(value): void {\n this.hideElementTargets();\n const showElements = this.elementTargets.filter((element) => {\n const values = element.dataset.showValues.split(\",\");\n return values.includes(value);\n });\n\n showElements.forEach((element) => {\n element.classList.remove(\"hidden\");\n if (element.querySelector(\"input\"))\n element\n .querySelectorAll(\"input\")\n .forEach((input) => (input.disabled = false));\n });\n }\n\n hideElementTargets(): void {\n this.elementTargets.forEach((element) => {\n element.classList.add(\"hidden\");\n if (element.querySelector(\"input\"))\n element\n .querySelectorAll(\"input\")\n .forEach((input) => (input.disabled = true));\n });\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\n \"input\",\n \"latInput\",\n \"lonInput\",\n \"withRadius\",\n \"withRadiusSelect\",\n ];\n declare autocomplete: google.maps.places.Autocomplete;\n\n declare inputTarget: HTMLInputElement;\n declare latInputTarget: HTMLInputElement;\n declare lonInputTarget: HTMLInputElement;\n declare withRadiusTarget: HTMLDivElement;\n declare withRadiusSelectTarget: HTMLSelectElement;\n\n connect(): void {\n if (typeof google != \"undefined\") {\n this.initAutocomplete();\n }\n\n this.toggle();\n }\n\n initAutocomplete(): void {\n this.autocomplete = new google.maps.places.Autocomplete(this.inputTarget);\n this.autocomplete.setFields([\"geometry\"]);\n this.autocomplete.setOptions({\n componentRestrictions: { country: [\"au\"] },\n });\n\n this.autocomplete.addListener(\n \"place_changed\",\n this.handlePlaceChanged.bind(this)\n );\n this.inputTarget.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n }\n });\n }\n\n handlePlaceChanged(): void {\n const place = this.autocomplete?.getPlace();\n if (place?.geometry) {\n this.latInputTarget.value = place.geometry.location.lat().toString();\n this.lonInputTarget.value = place.geometry.location.lng().toString();\n } else {\n this.latInputTarget.value = \"\";\n this.lonInputTarget.value = \"\";\n }\n this.toggle();\n }\n\n toggle(): void {\n if (!this.inputTarget.value.trim()) {\n this.withRadiusTarget.classList.add(\"hidden\");\n this.withRadiusSelectTarget.disabled = true;\n } else {\n this.withRadiusTarget.classList.remove(\"hidden\");\n this.withRadiusSelectTarget.disabled = false;\n }\n }\n}\n","import Reveal from \"stimulus-reveal-controller\";\n\nexport default class extends Reveal {\n static targets = [\"showBtn\", \"hideBtn\"];\n declare hideBtnTarget: HTMLElement;\n declare showBtnTarget: HTMLElement;\n\n connect() {\n super.connect();\n }\n\n show(): void {\n super.show();\n this.hideBtnTarget.classList.remove(\"hidden\");\n this.showBtnTarget.classList.add(\"hidden\");\n }\n\n hide(): void {\n super.hide();\n this.showBtnTarget.classList.remove(\"hidden\");\n this.hideBtnTarget.classList.add(\"hidden\");\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n blankOptionColor = \"selected-blank\";\n\n connect(): void {\n this.toggleBlankValueStyle();\n }\n\n toggleBlankValueStyle(): void {\n const target = this.element as HTMLSelectElement;\n !target.value\n ? target.classList.add(this.blankOptionColor)\n : target.classList.remove(this.blankOptionColor);\n }\n}\n","import Rails from \"@rails/ujs\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static values = {\n conversationUrl: String,\n };\n\n declare conversationUrlValue: string;\n\n showConversation(e: React.FormEvent) {\n this.toggleSelectedMessageStyle(e);\n\n Rails.ajax({\n type: \"get\",\n url: this.conversationUrlValue,\n dataType: \"json\",\n success: ({ replace_content }) => {\n const messageContainer = document.getElementById(\n \"conversations_container\"\n );\n\n if (messageContainer) {\n document.getElementById(\"conversations_container\").innerHTML =\n replace_content.conversations_container;\n }\n },\n });\n }\n\n toggleSelectedMessageStyle(e: React.FormEvent) {\n const activeElement =\n document.getElementsByClassName(\"message-row active\")[0];\n if (activeElement) {\n activeElement.classList.remove(\"bg-neutral-200\", \"active\");\n }\n\n e.currentTarget.classList.add(\"bg-neutral-200\", \"active\");\n }\n}\n","import { Controller } from \"stimulus\";\nexport default class extends Controller {\n static targets = [\"container\", \"parentContainer\"];\n\n declare isOpen: boolean;\n declare openClass: string;\n declare currentCallerId: string;\n declare unactiveClasses: Array;\n declare activeClasses: Array;\n declare containerTarget: HTMLElement;\n declare parentContainerTarget: HTMLElement;\n declare bgActiveClass: Array;\n\n initialize() {\n this.isOpen = false;\n this.openClass = \"is-open\";\n this.currentCallerId = null;\n this.unactiveClasses = [\"hover:bg-ui-25\", \"bg-surface\"];\n this.activeClasses = [\n \"active-target\",\n \"bg-brand-tertiary-50\",\n \"hover:bg-brand-tertiary-100\",\n ];\n this.bgActiveClass = [\n \"fixed\",\n \"top-0\",\n \"left-0\",\n \"w-screen\",\n \"h-screen\",\n \"bg-opacity-50\",\n \"bg-legacyColor-neutral-1-900\",\n \"flex\",\n \"justify-center\",\n \"items-center\",\n \"z-[999]\",\n \"overflow-y-auto\",\n ];\n }\n\n disconnect() {\n this.close();\n }\n\n open(callerId) {\n this.containerTarget.classList.add(this.openClass);\n this.currentCallerId = callerId;\n this.isOpen = true;\n this.parentContainerTarget.classList.add(...this.bgActiveClass);\n }\n\n close() {\n this.containerTarget.classList.remove(this.openClass);\n this.currentCallerId = null;\n this.isOpen = false;\n this.parentContainerTarget.classList.remove(...this.bgActiveClass);\n }\n\n closePanel() {\n this.close();\n }\n\n toggle(e) {\n e.preventDefault();\n const callerId = e.currentTarget.id;\n\n if (!this.currentCallerId) {\n this.open(callerId);\n return;\n } else if (callerId === this.currentCallerId) {\n this.close();\n return;\n }\n this.currentCallerId = callerId;\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n connect(): void {\n const form = document.getElementById(\"sso_form\");\n if (form instanceof HTMLFormElement) {\n form.submit();\n }\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"input\", \"total\"];\n declare totalTarget: HTMLInputElement;\n declare inputTargets: Array;\n\n connect(): void {\n this.updateTotal();\n }\n\n updateTotal(): void {\n const total = this.inputTargets\n .map(this.parseInputValue)\n .filter(this.valueIsNotNan)\n .reduce(this.sumValues)\n .toString();\n this.totalTarget.value = total;\n }\n\n private parseInputValue(input: HTMLInputElement): number {\n return parseInt(input.value);\n }\n private valueIsNotNan(value: number): boolean {\n return !isNaN(value);\n }\n private sumValues(total: number, value: number): number {\n return total + value;\n }\n}\n","import { Controller } from \"stimulus\";\nimport Swiper from \"swiper\";\nimport { Pagination } from \"swiper/modules\";\nimport \"swiper/css\";\nimport \"swiper/css/navigation\";\nimport \"swiper/css/pagination\";\n\ntype ContainerName = {\n value: string;\n};\n/*\n 1. Attach the controller into view: data-controller=\"swiper\"\n 2. Attach the container names right next to data-controller: data-swiper-container-names-value='[\"job_offer\"]'\n 2.1 You need to do this to let swiper knows which are the carousel containers that you need to attach swiper to, separated by comma\n 2.2 Multiple container names example: data-swiper-container-names-value='[\"containerA\", \"conatinerB\"]'\n\n For more options/configs: https://swiperjs.com/swiper-api\n*/\nexport default class extends Controller {\n static values = {\n containerNames: Array,\n };\n declare containerNamesValue: ContainerName[];\n\n connect() {\n this.containerNamesValue.forEach((containerId) =>\n this.initializeCarousel(containerId)\n );\n }\n\n initializeCarousel(containerId) {\n new Swiper(`#${containerId}`, {\n modules: [Pagination],\n direction: \"horizontal\",\n pagination: {\n el: \".swiper-pagination\",\n type: \"bullets\",\n dynamicBullets: true,\n },\n navigation: {\n nextEl: \".swiper-button-next\",\n prevEl: \".swiper-button-prev\",\n },\n });\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"btn\", \"tab\"];\n static values = {\n defaultTab: String,\n activeClass: String,\n };\n\n declare tabTargets: Array;\n declare btnTargets: Array;\n declare defaultTabValue: string;\n declare activeClassValue: string;\n declare activeKlass: Array;\n\n initialize() {\n this.activeKlass = this.activeClassValue\n .split(\",\")\n .filter((x) => x)\n .concat([\"active\"]);\n }\n\n connect() {\n this.element.classList.add(\"tabs\");\n this.tabTargets.map((x) => (x.hidden = true)); // hide all tabs by default\n // OPEN DEFAULT TAB\n try {\n const selectedBtn = this.btnTargets.find(\n (element) => element.id === this.defaultTabValue\n );\n const selectedTab = this.tabTargets.find(\n (element) => element.id === this.defaultTabValue\n );\n selectedTab.hidden = false;\n selectedBtn.classList.add(...this.activeKlass);\n } catch (error) {\n console.log(error);\n }\n }\n\n select(event) {\n // find tab with same id as clicked btn\n const selectedTab = this.tabTargets.find(\n (element) => element.id === event.currentTarget.id\n );\n if (selectedTab.hidden) {\n // CLOSE CURRENT TAB\n this.tabTargets.map((x) => (x.hidden = true)); // hide all tabs\n this.btnTargets.map((x) => x.classList.remove(...this.activeKlass)); // deactive all btns\n selectedTab.hidden = false; // show current tab\n event.currentTarget.classList.add(...this.activeKlass); // active current btn\n }\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\n \"exemptionSelect\",\n \"noOption\",\n \"tfnInput\",\n \"warning\",\n \"yesOption\",\n ];\n static values = {\n validTfnPresent: Boolean,\n };\n declare tfnInputTarget: HTMLInputElement;\n declare exemptionSelectTarget: HTMLSelectElement;\n declare yesOptionTarget: HTMLInputElement;\n declare noOptionTarget: HTMLInputElement;\n declare warningTarget: HTMLElement;\n declare validTfnPresentValue: boolean;\n declare hasValidTfnPresentValue: boolean;\n\n connect(): void {\n if (!this.hasValidTfnPresentValue) {\n this.warningTarget.classList.add(\"hidden\");\n } else if (this.validTfnPresentValue) {\n this.enableTfnInput();\n } else {\n this.enableExemptionSelect();\n }\n }\n\n enableTfnInput(): void {\n this.tfnInputTarget.disabled = false;\n\n this.exemptionSelectTarget.disabled = true;\n this.exemptionSelectTarget.value = \"\";\n this.warningTarget.classList.add(\"hidden\");\n }\n\n enableExemptionSelect(): void {\n this.tfnInputTarget.disabled = true;\n this.tfnInputTarget.value = \"\";\n\n this.exemptionSelectTarget.disabled = false;\n this.warningTarget.classList.remove(\"hidden\");\n }\n\n handleExemptionSelect(): void {\n if (this.noOptionTarget.checked) return;\n this.noOptionTarget.checked = true;\n this.enableExemptionSelect();\n }\n\n handleTfnInput(): void {\n if (this.yesOptionTarget.checked) return;\n this.yesOptionTarget.checked = true;\n this.enableTfnInput();\n }\n}\n","import { DirectUpload } from \"@rails/activestorage\";\nimport { CustomDropzone } from \"controllers/upload_crop_controller\";\nimport Dropzone from \"dropzone\";\n\ninterface ICreateDirectUpload {\n dropzoneInstance: CustomDropzone;\n file: Dropzone.DropzoneFile;\n resizedFile: File;\n imageHiddenInput: HTMLInputElement;\n uploadedUrl: string;\n}\n\nexport class CreateDirectUpload {\n declare directUpload: DirectUpload;\n declare dropzoneInstance: CustomDropzone;\n declare file: Dropzone.DropzoneFile;\n declare imageHiddenInput: HTMLInputElement;\n declare uploadedUrl: string;\n\n constructor({\n dropzoneInstance,\n file,\n resizedFile,\n imageHiddenInput,\n uploadedUrl,\n }: ICreateDirectUpload) {\n this.directUpload = new DirectUpload(resizedFile, uploadedUrl, this);\n this.dropzoneInstance = dropzoneInstance;\n this.file = file;\n this.imageHiddenInput = imageHiddenInput;\n }\n\n start(): void {\n this.directUpload.create((error: Error, blob: ActiveStorage.Blob) => {\n if (error) {\n this.imageHiddenInput.value = null;\n this.emitDropzoneError(error);\n } else {\n this.imageHiddenInput.value = blob.signed_id;\n this.emitDropzoneSuccess();\n }\n });\n }\n\n directUploadWillStoreFileWithXHR(xhr: XMLHttpRequest): void {\n this.bindProgressEvent(xhr);\n this.emitDropzoneUploading();\n }\n\n bindProgressEvent(xhr: XMLHttpRequest): void {\n xhr.upload.addEventListener(\"progress\", (event: ProgressEvent) =>\n this.emitDropzoneUploadProgressing(event)\n );\n }\n\n emitDropzoneUploading(): void {\n this.file.status = Dropzone.UPLOADING;\n this.dropzoneInstance.emit(\"processing\", this.file);\n }\n\n emitDropzoneUploadProgressing(event: ProgressEvent): void {\n const progress = (event.loaded / event.total) * 100;\n if (progress >= 100) this.generateThumbnail();\n\n this.dropzoneInstance.emit(\n \"uploadprogress\",\n this.file,\n progress,\n event.loaded\n );\n }\n\n emitDropzoneError(error: Error): void {\n this.file.status = Dropzone.ERROR;\n this.dropzoneInstance.emit(\"error\", this.file, error);\n this.dropzoneInstance.emit(\"complete\", this.file);\n }\n\n emitDropzoneSuccess(): void {\n this.file.status = Dropzone.SUCCESS;\n this.dropzoneInstance.emit(\"success\", this.file);\n this.dropzoneInstance.emit(\"complete\", this.file);\n }\n\n generateThumbnail(): void {\n this.dropzoneInstance.options.createImageThumbnails = true;\n this.dropzoneInstance._enqueueThumbnail(this.file);\n }\n}\n","import Cropper from \"cropperjs\";\nimport Dropzone from \"dropzone\";\nimport { Controller } from \"stimulus\";\n\nimport { CreateDirectUpload } from \"../helpers/create_direct_upload\";\n\ninterface ICustomFile extends File {\n isCropped?: boolean;\n}\n\ninterface ICustomDropzoneFile extends Dropzone.DropzoneFile {\n isCropped?: boolean;\n existingFile?: boolean;\n}\n\nexport interface CustomDropzone extends Dropzone {\n _enqueueThumbnail?: (arg: Dropzone.DropzoneFile) => void;\n}\n\nexport default class extends Controller {\n static targets = [\n \"upload\",\n \"crop\",\n \"uploadContainer\",\n \"cropContainer\",\n \"croppedImageHiddenInput\",\n \"sourceImageHiddenInput\",\n \"croppedCanvasDataHiddenInput\",\n \"editButton\",\n \"error\",\n \"errorAlert\",\n \"skipButton\",\n \"nextButton\",\n \"cropperCancelButton\",\n ];\n\n static values = {\n croppedProfileImageUrl: String,\n sourceProfileImageUrl: String,\n thumbnailWidthHeight: Number,\n acceptedFiles: String,\n acceptedMaximumFiles: Number,\n acceptedMaximumFileSize: Number,\n resizeWidth: Number,\n resizeMimeType: String,\n directUploadUrl: String,\n croppedCanvasData: String,\n };\n\n declare uploadTarget: HTMLDivElement;\n declare cropTarget: HTMLImageElement;\n declare uploadContainerTarget: HTMLDivElement;\n declare cropContainerTarget: HTMLDivElement;\n declare croppedImageHiddenInputTarget: HTMLInputElement;\n declare sourceImageHiddenInputTarget: HTMLInputElement;\n declare croppedCanvasDataHiddenInputTarget: HTMLInputElement;\n declare errorTarget: HTMLDivElement;\n declare errorAlertTarget: HTMLDivElement;\n declare skipButtonTarget: HTMLAnchorElement;\n declare hasSkipButtonTarget: boolean;\n declare nextButtonTarget: HTMLButtonElement;\n declare editButtonTarget: HTMLDivElement;\n declare cropperCancelButtonTarget: HTMLDivElement;\n\n declare thumbnailWidthHeightValue: number;\n declare acceptedFilesValue: string;\n declare acceptedMaximumFilesValue: number;\n declare acceptedMaximumFileSizeValue: number;\n declare resizeWidthValue: number;\n declare resizeMimeTypeValue: string;\n declare croppedProfileImageUrlValue: string;\n declare sourceProfileImageUrlValue: string;\n declare directUploadUrlValue: string;\n declare croppedCanvasDataValue: string;\n declare hasCroppedCanvasDataValue: boolean;\n\n private imageHiddenInput: HTMLInputElement;\n private dropzone: CustomDropzone;\n private cropper: Cropper;\n private defaultThumbnailName = \"name\" as const;\n private defaultThumbnailSize = 0 as const;\n private cropperViewMode = 3 as const; // fill fit image to container\n private cropperDragMode = \"move\" as const;\n private cropperAspectRatio = 1 as const;\n private defaultCroppedFilename = \"cropped.jpeg\" as const;\n\n connect(): void {\n this.initDropzone();\n this.bindEvents();\n this.setDictionary();\n if (this.croppedProfileImageUrlValue) {\n this.renderUploadedImage();\n this.showEditButton();\n } else {\n if (this.hasSkipButtonTarget) {\n this.skipButtonTarget.classList.remove(\"hidden\");\n this.nextButtonTarget.classList.add(\"hidden\");\n }\n }\n }\n\n initDropzone(): void {\n this.imageHiddenInput = this.sourceImageHiddenInputTarget;\n\n this.dropzone = new Dropzone(this.uploadTarget, {\n headers: { \"X-CSRF-Token\": this.getCSRFToken() },\n url: this.directUploadUrlValue,\n acceptedFiles: this.acceptedFilesValue,\n maxFiles: this.acceptedMaximumFilesValue,\n maxFilesize: this.acceptedMaximumFileSizeValue, // in mb\n thumbnailWidth: this.thumbnailWidthHeightValue,\n thumbnailHeight: this.thumbnailWidthHeightValue,\n resizeWidth: this.resizeWidthValue,\n resizeMimeType: this.resizeMimeTypeValue,\n createImageThumbnails: false,\n autoQueue: false,\n });\n }\n\n bindEvents(): void {\n this.dropzone.on(\"addedfile\", (file) => {\n Promise.resolve(file).then((file: ICustomDropzoneFile) => {\n if (!file.isCropped)\n this.imageHiddenInput = this.sourceImageHiddenInputTarget;\n\n if (this.dropzone.getAcceptedFiles().length === 1 && !file.existingFile)\n this.resizeImage(file);\n });\n });\n\n this.dropzone.on(\"removedfile\", () => {\n if (this.hasSkipButtonTarget) {\n this.skipButtonTarget.classList.remove(\"hidden\");\n this.nextButtonTarget.classList.add(\"hidden\");\n }\n this.hideEditButton();\n });\n\n this.dropzone.on(\"success\", (file: ICustomDropzoneFile) => {\n if (!file.isCropped) {\n this.showCropperContainer({ showCancelButton: false });\n this.initCropper(URL.createObjectURL(file));\n }\n\n if (this.hasSkipButtonTarget) {\n this.skipButtonTarget.classList.add(\"hidden\");\n this.nextButtonTarget.classList.remove(\"hidden\");\n }\n this.showEditButton();\n });\n\n this.dropzone.on(\"error\", (file, message: string) => {\n this.dropzone.removeAllFiles();\n this.showErrorAlert();\n this.errorTarget.innerText = message;\n });\n\n this.cropTarget.addEventListener(\"ready\", () => {\n const file: ICustomDropzoneFile = this.dropzone.getAcceptedFiles()[0];\n\n if (file.existingFile && this.hasCroppedCanvasDataValue) {\n this.cropper.setCanvasData(JSON.parse(this.croppedCanvasDataValue));\n }\n });\n }\n\n cropFile(): void {\n const file: ICustomDropzoneFile = this.dropzone.getAcceptedFiles()[0];\n\n if (file.existingFile && this.sourceProfileImageUrlValue) {\n if (!this.cropper) this.initCropper(this.sourceProfileImageUrlValue);\n }\n\n this.showCropperContainer({ showCancelButton: true });\n }\n\n removeFile(): void {\n this.sourceImageHiddenInputTarget.value = null;\n this.croppedImageHiddenInputTarget.value = null;\n this.croppedCanvasDataHiddenInputTarget.value = null;\n this.dropzone.removeAllFiles();\n this.dismountCropper();\n }\n\n resizeImage(file: Dropzone.DropzoneFile): void {\n this.dropzone.options.transformFile.call(\n this.dropzone,\n file,\n (blob: Blob) => {\n this.initDirectUpload(file, blob).start();\n }\n );\n }\n\n initDirectUpload(\n file: Dropzone.DropzoneFile,\n blob: Blob\n ): CreateDirectUpload {\n const resizedFile = new File([blob], file.name, {\n type: this.resizeMimeTypeValue,\n });\n\n return new CreateDirectUpload({\n dropzoneInstance: this.dropzone,\n file,\n resizedFile,\n imageHiddenInput: this.imageHiddenInput,\n uploadedUrl: this.directUploadUrlValue,\n });\n }\n\n initCropper(imageUrl: string): void {\n this.hideErrorAlert();\n\n this.imageHiddenInput = this.croppedImageHiddenInputTarget;\n this.cropTarget.src = imageUrl;\n\n this.cropper = new Cropper(this.cropTarget, {\n aspectRatio: this.cropperAspectRatio,\n viewMode: this.cropperViewMode,\n dragMode: this.cropperDragMode,\n cropBoxMovable: false,\n cropBoxResizable: false,\n minCropBoxWidth: this.thumbnailWidthHeightValue,\n minCropBoxHeight: this.thumbnailWidthHeightValue,\n guides: false,\n center: false,\n });\n }\n\n crop(): void {\n this.dropzone.options.createImageThumbnails = false;\n this.errorTarget.innerText = null;\n\n this.getCanvasData();\n this.getCroppedCanvas().toBlob((blob) => {\n this.uploadCroppedCanvas(blob);\n }, this.resizeMimeTypeValue);\n }\n\n cancelCropping(): void {\n this.hideCropperContainer();\n }\n\n getCroppedCanvas(): HTMLCanvasElement {\n return this.cropper.getCroppedCanvas({\n width: this.thumbnailWidthHeightValue,\n height: this.thumbnailWidthHeightValue,\n });\n }\n\n uploadCroppedCanvas(blob: Blob): void {\n const file: ICustomFile = new File([blob], this.defaultCroppedFilename, {\n type: this.resizeMimeTypeValue,\n });\n\n file.isCropped = true;\n\n this.dropzone.removeAllFiles();\n this.dropzone.addFile(file as Dropzone.DropzoneFile);\n this.hideCropperContainer();\n }\n\n getCanvasData(): void {\n const canvasData = this.cropper.getCanvasData();\n this.croppedCanvasDataHiddenInputTarget.value = JSON.stringify(canvasData);\n }\n\n renderUploadedImage(): void {\n const callback = null;\n const crossOrigin = \"anonymous\";\n const resizeThumbnail = true;\n const mockFile = {\n name: this.defaultThumbnailName,\n size: this.defaultThumbnailSize,\n accepted: true,\n isCropped: true,\n existingFile: true,\n };\n\n this.dropzone.displayExistingFile(\n mockFile,\n this.croppedProfileImageUrlValue,\n callback,\n crossOrigin,\n resizeThumbnail\n );\n this.dropzone.files.push(mockFile as ICustomDropzoneFile);\n }\n\n getCSRFToken(): string {\n return document\n .querySelector(\"meta[name='csrf-token']\")\n .getAttribute(\"content\");\n }\n\n showCropperContainer({\n showCancelButton,\n }: {\n showCancelButton: boolean;\n }): void {\n showCancelButton\n ? this.showCropperCancelButton()\n : this.hideCropperCancelButton();\n this.cropContainerTarget.classList.remove(\"hidden\");\n this.uploadContainerTarget.classList.add(\"hidden\");\n }\n\n hideCropperContainer(): void {\n this.cropContainerTarget.classList.add(\"hidden\");\n this.uploadContainerTarget.classList.remove(\"hidden\");\n }\n\n showEditButton(): void {\n this.editButtonTarget.classList.remove(\"hidden\");\n }\n\n hideEditButton(): void {\n this.editButtonTarget.classList.add(\"hidden\");\n }\n\n setDictionary(): void {\n this.dropzone.options.dictInvalidFileType =\n \"Image format not supported. Use .jpeg, .jpg, .png, .webp instead.\";\n this.dropzone.options.dictFileTooBig =\n \"Image file size larger than 10MB limit. Use an image with a smaller file size.\";\n this.dropzone.options.dictMaxFilesExceeded =\n \"Multiple images selected. Select only one image.\";\n }\n\n showErrorAlert(): void {\n this.errorAlertTarget.classList.replace(\"hidden\", \"flex\");\n }\n\n hideErrorAlert(): void {\n this.errorAlertTarget.classList.replace(\"flex\", \"hidden\");\n }\n\n showCropperCancelButton(): void {\n this.cropperCancelButtonTarget.classList.remove(\"hidden\");\n }\n\n hideCropperCancelButton(): void {\n this.cropperCancelButtonTarget.classList.add(\"hidden\");\n }\n\n dismountCropper(): void {\n this.cropTarget.src = \"\";\n if (this.cropper) {\n this.cropper.destroy();\n }\n }\n}\n","import { format } from \"date-fns\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"display\"];\n\n declare displayTarget: HTMLElement;\n\n initialize(): void {\n this.displayTarget.innerText = format(new Date(), \"dd LLLL yyyy\");\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\n \"vevoFileThumbnail\",\n \"vevoFileName\",\n \"vevoFileUpload\",\n \"vevoFileField\",\n \"vevoFileError\",\n ];\n\n static values = {\n vevoFileName: String,\n maximumDocumentFileSize: Number,\n exceedMaxSizeError: String,\n };\n\n declare vevoFileThumbnailTarget: HTMLDivElement;\n declare vevoFileNameTarget: HTMLSpanElement;\n declare vevoFileUploadTarget: HTMLDivElement;\n declare vevoFileFieldTarget: HTMLInputElement;\n declare vevoFileErrorTarget: HTMLDivElement;\n declare vevoFileNameValue: string;\n declare maximumDocumentFileSizeValue: number;\n declare maxFileSize: number;\n declare exceedMaxSizeErrorValue: string;\n declare exceedMaxSizeError: string;\n private vevoMaximumFileSize = 50_000 as const; // 50kb in bytes\n private exceedMaximumFileSizeErrorMessage =\n \"Vevo document too large, please upload a file 50kb or smaller.\" as const;\n\n initialize(): void {\n this.maxFileSize =\n this.maximumDocumentFileSizeValue || this.vevoMaximumFileSize;\n this.exceedMaxSizeError =\n this.exceedMaxSizeErrorValue || this.exceedMaximumFileSizeErrorMessage;\n }\n connect(): void {\n this.vevoFileNameValue\n ? this.showVevoFileThumbnail()\n : this.showVevoFileUpload();\n }\n\n handleSelection(): void {\n const file = this.vevoFileFieldTarget.files.item(0);\n\n if (file.size < this.maxFileSize) {\n this.vevoFileNameTarget.innerText = file.name;\n this.clearVevoErrorMessage();\n this.showVevoFileThumbnail();\n } else {\n this.vevoFileFieldTarget.value = null;\n this.vevoFileErrorTarget.innerText = this.exceedMaxSizeError;\n }\n }\n\n handleDelete(): void {\n this.vevoFileFieldTarget.value = null;\n this.clearVevoHiddenFields();\n this.clearVevoErrorMessage();\n this.showVevoFileUpload();\n }\n\n showVevoFileThumbnail(): void {\n this.vevoFileThumbnailTarget.classList.remove(\"hidden\");\n this.vevoFileUploadTarget.classList.add(\"hidden\");\n }\n\n showVevoFileUpload(): void {\n this.vevoFileUploadTarget.classList.remove(\"hidden\");\n this.vevoFileThumbnailTarget.classList.add(\"hidden\");\n }\n\n clearVevoHiddenFields(): void {\n this.vevoFileUploadTarget\n .querySelectorAll(\"[type='hidden']\")\n .forEach((hiddenEl: HTMLInputElement) => {\n hiddenEl.value = null;\n });\n }\n\n clearVevoErrorMessage(): void {\n this.vevoFileErrorTarget.innerText = null;\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"vevo\"];\n static values = { visaRequired: Boolean };\n\n declare vevoTarget: HTMLDivElement;\n declare visaRequiredValue: boolean;\n\n connect(): void {\n this.visaRequiredValue ? this.showVevoUpload() : this.hideVevoUpload();\n }\n\n showVevoUpload(): void {\n this.vevoTarget.classList.remove(\"hidden\");\n }\n\n hideVevoUpload(): void {\n this.vevoTarget.classList.add(\"hidden\");\n }\n}\n","// Load all the controllers within this directory and all subdirectories.\n// Controller files must be named *_controller.ts.\n\nimport { Application } from \"stimulus\";\nimport Flatpickr from \"stimulus-flatpickr\";\nimport Popover from \"stimulus-popover\";\nimport { definitionsFromContext } from \"stimulus/webpack-helpers\";\nimport { Dropdown, Toggle } from \"tailwindcss-stimulus-components\";\n\nrequire(\"flatpickr/dist/flatpickr.css\");\n\nconst application = Application.start();\nconst context = require.context(\"controllers\", true, /_controller\\.ts$/);\napplication.load(definitionsFromContext(context));\n\napplication.register(\"flatpickr\", Flatpickr);\napplication.register(\"dropdown\", Dropdown);\napplication.register(\"toggle\", Toggle);\napplication.register(\"popover\", Popover);\n","import { useEffect } from \"react\";\n\nconst NotFound = (): JSX.Element => {\n useEffect(() => {\n window.location.href = \"/404\";\n });\n\n return <>;\n};\n\nexport { NotFound };\n","import { GraphQLClient } from \"graphql-request\";\nimport { tenantPath } from \"helpers/tenant_path\";\n\nconst client = new GraphQLClient(tenantPath(\"/weployer/graphql\"), {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n});\n\nexport default client;\n","import { GraphQLClient } from \"graphql-request\";\nimport { RequestInit } from \"graphql-request/dist/types.dom\";\nimport {\n useMutation,\n useQuery,\n UseMutationOptions,\n UseQueryOptions,\n} from \"react-query\";\nimport { getActivePositions } from \"@/client_app/features/weployees/components/services/FetchAPIService\";\nexport type Maybe = T | null;\nexport type InputMaybe = Maybe;\nexport type Exact = {\n [K in keyof T]: T[K];\n};\nexport type MakeOptional = Omit & {\n [SubKey in K]?: Maybe;\n};\nexport type MakeMaybe = Omit & {\n [SubKey in K]: Maybe;\n};\n\nfunction fetcher(\n client: GraphQLClient,\n query: string,\n variables?: TVariables,\n headers?: RequestInit[\"headers\"]\n) {\n return async (): Promise =>\n client.request(query, variables, headers);\n}\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: string;\n String: string;\n Boolean: boolean;\n Int: number;\n Float: number;\n /** An ISO 8601-encoded date */\n ISO8601Date: any;\n /** An ISO 8601-encoded datetime */\n ISO8601DateTime: any;\n};\n\n/** Input for approving attendances */\nexport type ApproveAttendancesInput = {\n approvalConsent: Scalars[\"Boolean\"];\n attendanceIds: Array;\n};\n\n/** Autogenerated input type of ApproveAttendancesMutation */\nexport type ApproveAttendancesMutationInput = {\n attendancesToApprove: ApproveAttendancesInput;\n /** A unique identifier for the client performing the mutation. */\n clientMutationId?: InputMaybe;\n};\n\n/** Autogenerated return type of ApproveAttendancesMutation. */\nexport type ApproveAttendancesMutationPayload = {\n __typename?: \"ApproveAttendancesMutationPayload\";\n /** Return an array of attendance IDs after approving */\n attendanceIds?: Maybe>;\n /** A unique identifier for the client performing the mutation. */\n clientMutationId?: Maybe;\n errors: Array;\n};\n\nexport type Attendance = {\n __typename?: \"Attendance\";\n additionalNotes?: Maybe;\n approvedBy?: Maybe;\n belowMinimumEngagementReasonToHuman?: Maybe;\n breaks?: Maybe>;\n duration: Scalars[\"Int\"];\n finishAt: Scalars[\"ISO8601DateTime\"];\n finishTime: Scalars[\"String\"];\n forReview: Scalars[\"Boolean\"];\n hasPublicHoliday: Scalars[\"Boolean\"];\n humanReadableMinimumEngagementDuration?: Maybe;\n id: Scalars[\"ID\"];\n minimumEngagementDuration: MinimumEngagementDuration;\n minimumEngagementRequired: Scalars[\"Boolean\"];\n position: Position;\n resubmitted: Scalars[\"Boolean\"];\n workedThroughBreak: Scalars[\"Boolean\"];\n startAt: Scalars[\"ISO8601DateTime\"];\n startTime: Scalars[\"String\"];\n state: AttendanceStateEnum;\n timeZone: Scalars[\"String\"];\n workedBy: CommunityMember;\n workedOnDate: Scalars[\"String\"];\n};\n\n/** Status of an attendance in the approval process */\nexport enum AttendanceStateEnum {\n /** Attendance is approved by the client user */\n Approved = \"approved\",\n /** Attendance is requested to be changed */\n ChangesRequested = \"changes_requested\",\n /** Attendance is finalized and ready for pay run */\n PayRunFinalized = \"pay_run_finalized\",\n /** Attendance is resubmitted after being changed */\n Resubmitted = \"resubmitted\",\n /** Attendance is submitted the first time */\n Submitted = \"submitted\",\n}\n\nexport type AttendancesCostSummary = {\n __typename?: \"AttendancesCostSummary\";\n casualLoadingFeeInAud: Scalars[\"String\"];\n communityMembers: Array;\n grandTotalInAud: Scalars[\"String\"];\n gstInAud: Scalars[\"String\"];\n paymentTermSurchargeInAud: Scalars[\"String\"];\n payrollComplianceFeeInAud: Scalars[\"String\"];\n primaryRates: Array;\n secondaryRates?: Maybe>;\n serviceFeeInAud: Scalars[\"String\"];\n workedDates: Scalars[\"String\"];\n};\n\nexport type Break = {\n __typename?: \"Break\";\n duration: Scalars[\"Int\"];\n finishTime: Scalars[\"String\"];\n id: Scalars[\"ID\"];\n startTime: Scalars[\"String\"];\n};\n\nexport type BuyoutRequest = {\n __typename?: \"BuyoutRequest\";\n acceptedAt?: Maybe;\n additionalComments?: Maybe;\n clientUserId: Scalars[\"ID\"];\n id: Scalars[\"ID\"];\n isPending: Scalars[\"Boolean\"];\n positionId: Scalars[\"ID\"];\n rejectedAt?: Maybe;\n startOn: Scalars[\"ISO8601DateTime\"];\n};\n\n/** Input for creating a buyout request */\nexport type BuyoutRequestInput = {\n additionalComments: Scalars[\"String\"];\n positionIds: Array;\n startOn: Scalars[\"String\"];\n};\n\n/** Input for creating a change request */\nexport type ChangeRequestInput = {\n attendanceIds: Array;\n details: Scalars[\"String\"];\n reason: Scalars[\"String\"];\n};\n\nexport type ChangeRequestReason = {\n __typename?: \"ChangeRequestReason\";\n label: Scalars[\"String\"];\n value: Scalars[\"String\"];\n};\n\nexport type ClientCompanyUser = {\n __typename?: \"ClientCompanyUser\";\n fullName: Scalars[\"String\"];\n id: Scalars[\"ID\"];\n};\n\nexport type ClientUser = {\n __typename?: \"ClientUser\";\n email: Scalars[\"String\"];\n fullName: Scalars[\"String\"];\n id: Scalars[\"ID\"];\n profileImageUrl?: Maybe;\n};\n\nexport type CommunityMember = {\n __typename?: \"CommunityMember\";\n email: Scalars[\"String\"];\n fullName: Scalars[\"String\"];\n id: Scalars[\"ID\"];\n mobileNumber?: Maybe;\n preferredName: Scalars[\"String\"];\n profileImageUrl?: Maybe;\n timeZone: Scalars[\"String\"];\n};\n\n/** Autogenerated input type of CreateBuyoutRequestMutation */\nexport type CreateBuyoutRequestMutationInput = {\n buyoutRequests: BuyoutRequestInput;\n /** A unique identifier for the client performing the mutation. */\n clientMutationId?: InputMaybe;\n};\n\n/** Autogenerated return type of CreateBuyoutRequestMutation. */\nexport type CreateBuyoutRequestMutationPayload = {\n __typename?: \"CreateBuyoutRequestMutationPayload\";\n /** A unique identifier for the client performing the mutation. */\n clientMutationId?: Maybe;\n errors: Array;\n /** Return an array of position IDs after creation */\n positionIds?: Maybe>;\n};\n\n/** Autogenerated input type of CreateChangeRequestMutation */\nexport type CreateChangeRequestMutationInput = {\n changeRequest: ChangeRequestInput;\n /** A unique identifier for the client performing the mutation. */\n clientMutationId?: InputMaybe;\n};\n\n/** Autogenerated return type of CreateChangeRequestMutation. */\nexport type CreateChangeRequestMutationPayload = {\n __typename?: \"CreateChangeRequestMutationPayload\";\n /** Return the attendance ID after creation */\n attendanceIds?: Maybe>;\n /** A unique identifier for the client performing the mutation. */\n clientMutationId?: Maybe;\n errors: Array;\n};\n\n/** Autogenerated input type of CreateExtensionRequestsMutation */\nexport type CreateExtensionRequestsMutationInput = {\n /** A unique identifier for the client performing the mutation. */\n clientMutationId?: InputMaybe;\n extensionRequests: ExtensionRequestsInput;\n};\n\n/** Autogenerated return type of CreateExtensionRequestsMutation. */\nexport type CreateExtensionRequestsMutationPayload = {\n __typename?: \"CreateExtensionRequestsMutationPayload\";\n /** A unique identifier for the client performing the mutation. */\n clientMutationId?: Maybe;\n errors: Array;\n /** Return an array of position IDs after creation */\n positionIds?: Maybe>;\n};\n\n/** Autogenerated input type of CreateRehireRequestsMutation */\nexport type CreateRehireRequestsMutationInput = {\n /** A unique identifier for the client performing the mutation. */\n clientMutationId?: InputMaybe;\n rehireRequests: RehireRequestsInput;\n};\n\n/** Autogenerated return type of CreateRehireRequestsMutation. */\nexport type CreateRehireRequestsMutationPayload = {\n __typename?: \"CreateRehireRequestsMutationPayload\";\n /** A unique identifier for the client performing the mutation. */\n clientMutationId?: Maybe;\n /** Return an array of community_member IDs after creation */\n communityMemberIds?: Maybe>;\n errors: Array;\n};\n\nexport type ExtensionRequest = {\n __typename?: \"ExtensionRequest\";\n acceptedAt?: Maybe;\n additionalRejectionDetails?: Maybe;\n finishOn: Scalars[\"ISO8601DateTime\"];\n id: Scalars[\"ID\"];\n isPending: Scalars[\"Boolean\"];\n positionId: Scalars[\"ID\"];\n reason: Scalars[\"String\"];\n rejectedAt?: Maybe;\n rejectionReason?: Maybe;\n startOn: Scalars[\"ISO8601DateTime\"];\n timeRequirements?: Maybe;\n};\n\nexport type ExtensionRequestReason = {\n __typename?: \"ExtensionRequestReason\";\n label: Scalars[\"String\"];\n value: Scalars[\"String\"];\n};\n\n/** Input for creating extension requests */\nexport type ExtensionRequestsInput = {\n newFinishDate: Scalars[\"String\"];\n positionIds: Array;\n reason: Scalars[\"String\"];\n timeRequirements: Scalars[\"String\"];\n};\n\n/** A user-readable error */\nexport type FormError = {\n __typename?: \"FormError\";\n /** A description of the error */\n message: Scalars[\"String\"];\n /** Which input value this error came from */\n path?: Maybe;\n};\n\nexport type MinimumEngagementDuration = {\n __typename?: \"MinimumEngagementDuration\";\n /** Duration of applied ME in human readable formatt */\n formatted: Scalars[\"String\"];\n /** Duration of applied ME time in seconds */\n valueInSeconds: Scalars[\"Int\"];\n};\n\n/** The mutation root of client app */\nexport type Mutation = {\n __typename?: \"Mutation\";\n approveAttendances?: Maybe;\n createBuyoutRequests?: Maybe;\n createChangeRequest?: Maybe;\n createExtensionRequests?: Maybe;\n createRehireRequests?: Maybe;\n};\n\n/** The mutation root of client app */\nexport type MutationApproveAttendancesArgs = {\n input: ApproveAttendancesMutationInput;\n};\n\n/** The mutation root of client app */\nexport type MutationCreateBuyoutRequestsArgs = {\n input: CreateBuyoutRequestMutationInput;\n};\n\n/** The mutation root of client app */\nexport type MutationCreateChangeRequestArgs = {\n input: CreateChangeRequestMutationInput;\n};\n\n/** The mutation root of client app */\nexport type MutationCreateExtensionRequestsArgs = {\n input: CreateExtensionRequestsMutationInput;\n};\n\n/** The mutation root of client app */\nexport type MutationCreateRehireRequestsArgs = {\n input: CreateRehireRequestsMutationInput;\n};\n\nexport type Position = {\n __typename?: \"Position\";\n buyoutRequests?: Maybe>;\n communityMember: CommunityMember;\n extensionRequests?: Maybe>;\n finishOn: Scalars[\"ISO8601Date\"];\n id: Scalars[\"ID\"];\n jobOpeningId?: Maybe;\n jobOpeningName?: Maybe;\n newJobAcceptance?: Maybe;\n startOn: Scalars[\"ISO8601Date\"];\n title: Scalars[\"String\"];\n};\n\nexport type Query = {\n __typename?: \"Query\";\n /** Fetch positions that have not ended */\n activePositions: Array;\n /** Fetch attendances cost summary */\n attendancesCostSummary: AttendancesCostSummary;\n /** Fetch change request reasons */\n changeRequestReasons: Array;\n /** Fetch client company users */\n clientCompanyUsers: Array;\n /** Fetch extension request reasons */\n extensionRequestReasons: Array;\n /** Get attendances that need to be reviewed */\n flaggedAttendances: Array;\n /** Fetch positions that have ended */\n pastPositions: Array;\n /** Fetch rehire request employment types */\n rehireRequestEmploymentTypes: Array;\n /** Get submitted attendances from either one or all community members */\n submittedAttendances: Array;\n};\n\nexport type QueryActivePositionsArgs = {\n communityMemberName?: InputMaybe;\n managerId?: InputMaybe;\n};\n\nexport type QueryAttendancesCostSummaryArgs = {\n attendanceIds: Array;\n};\n\nexport type QueryFlaggedAttendancesArgs = {\n communityMemberName?: InputMaybe;\n managerId?: InputMaybe;\n};\n\nexport type QueryPastPositionsArgs = {\n communityMemberName?: InputMaybe;\n managerId?: InputMaybe;\n};\n\nexport type QuerySubmittedAttendancesArgs = {\n communityMemberName?: InputMaybe;\n managerId?: InputMaybe;\n};\n\nexport type RehireRequestEmploymentType = {\n __typename?: \"RehireRequestEmploymentType\";\n label: Scalars[\"String\"];\n value: Scalars[\"String\"];\n};\n\n/** Input for creating rehire requests */\nexport type RehireRequestsInput = {\n additionalComments?: InputMaybe;\n communityMemberIds: Array;\n employmentType: Scalars[\"String\"];\n endDate?: InputMaybe;\n salary?: InputMaybe;\n startDate?: InputMaybe;\n};\n\nexport type WageBreakdown = {\n __typename?: \"WageBreakdown\";\n description: Scalars[\"String\"];\n hoursWorked: Scalars[\"String\"];\n wage: Scalars[\"String\"];\n};\n\nexport type ApproveAttendancesMutationVariables = Exact<{\n attendanceIds: Array | Scalars[\"String\"];\n approvalConsent: Scalars[\"Boolean\"];\n}>;\n\nexport type ApproveAttendancesMutation = {\n __typename?: \"Mutation\";\n approveAttendances?: {\n __typename?: \"ApproveAttendancesMutationPayload\";\n attendanceIds?: Array | null;\n errors: Array<{\n __typename?: \"FormError\";\n path?: string | null;\n message: string;\n }>;\n } | null;\n};\n\nexport type CreateBuyoutRequestsMutationVariables = Exact<{\n positionIds: Array | Scalars[\"String\"];\n startOn: Scalars[\"String\"];\n additionalComments: Scalars[\"String\"];\n}>;\n\nexport type CreateBuyoutRequestsMutation = {\n __typename?: \"Mutation\";\n createBuyoutRequests?: {\n __typename?: \"CreateBuyoutRequestMutationPayload\";\n positionIds?: Array | null;\n errors: Array<{\n __typename?: \"FormError\";\n path?: string | null;\n message: string;\n }>;\n } | null;\n};\n\nexport type CreateChangeRequestMutationVariables = Exact<{\n attendanceIds: Array | Scalars[\"String\"];\n reason: Scalars[\"String\"];\n details: Scalars[\"String\"];\n}>;\n\nexport type CreateChangeRequestMutation = {\n __typename?: \"Mutation\";\n createChangeRequest?: {\n __typename?: \"CreateChangeRequestMutationPayload\";\n attendanceIds?: Array | null;\n errors: Array<{\n __typename?: \"FormError\";\n path?: string | null;\n message: string;\n }>;\n } | null;\n};\n\nexport type CreateExtensionRequestsMutationVariables = Exact<{\n positionIds: Array | Scalars[\"String\"];\n reason: Scalars[\"String\"];\n newFinishDate: Scalars[\"String\"];\n timeRequirements: Scalars[\"String\"];\n}>;\n\nexport type CreateExtensionRequestsMutation = {\n __typename?: \"Mutation\";\n createExtensionRequests?: {\n __typename?: \"CreateExtensionRequestsMutationPayload\";\n positionIds?: Array | null;\n errors: Array<{\n __typename?: \"FormError\";\n path?: string | null;\n message: string;\n }>;\n } | null;\n};\n\nexport type CreateRehireRequestsMutationVariables = Exact<{\n communityMemberIds: Array | Scalars[\"String\"];\n employmentType: Scalars[\"String\"];\n startDate?: InputMaybe;\n endDate?: InputMaybe;\n salary?: InputMaybe;\n additionalComments?: InputMaybe;\n}>;\n\nexport type CreateRehireRequestsMutation = {\n __typename?: \"Mutation\";\n createRehireRequests?: {\n __typename?: \"CreateRehireRequestsMutationPayload\";\n communityMemberIds?: Array | null;\n errors: Array<{\n __typename?: \"FormError\";\n path?: string | null;\n message: string;\n }>;\n } | null;\n};\n\nexport type FetchAllActivePositionsQueryVariables = Exact<{\n communityMemberName?: InputMaybe;\n managerId?: InputMaybe;\n}>;\n\nexport type FetchAllActivePositionsQuery = {\n __typename?: \"Query\";\n activePositions: Array<{\n __typename?: \"Position\";\n id: string;\n startOn: any;\n finishOn: any;\n title: string;\n newJobAcceptance?: boolean | null;\n jobOpeningId?: string | null;\n jobOpeningName?: string | null;\n communityMember: {\n __typename?: \"CommunityMember\";\n id: string;\n fullName: string;\n profileImageUrl?: string | null;\n mobileNumber?: string | null;\n };\n extensionRequests?: Array<{\n __typename?: \"ExtensionRequest\";\n isPending: boolean;\n }> | null;\n buyoutRequests?: Array<{\n __typename?: \"BuyoutRequest\";\n isPending: boolean;\n }> | null;\n }>;\n};\n\nexport type FetchAllFlaggedAttendancesQueryVariables = Exact<{\n managerId?: InputMaybe;\n}>;\n\nexport type FetchAllFlaggedAttendancesQuery = {\n __typename?: \"Query\";\n flaggedAttendances: Array<{ __typename?: \"Attendance\"; id: string }>;\n};\n\nexport type FetchAllPastPositionsQueryVariables = Exact<{\n communityMemberName?: InputMaybe;\n managerId?: InputMaybe;\n}>;\n\nexport type FetchAllPastPositionsQuery = {\n __typename?: \"Query\";\n pastPositions: Array<{\n __typename?: \"Position\";\n id: string;\n startOn: any;\n finishOn: any;\n title: string;\n newJobAcceptance?: boolean | null;\n jobOpeningId?: string | null;\n jobOpeningName?: string | null;\n communityMember: {\n __typename?: \"CommunityMember\";\n id: string;\n fullName: string;\n profileImageUrl?: string | null;\n mobileNumber?: string | null;\n };\n extensionRequests?: Array<{\n __typename?: \"ExtensionRequest\";\n isPending: boolean;\n }> | null;\n }>;\n};\n\nexport type FetchAllSubmittedAttendancesQueryVariables = Exact<{\n managerId?: InputMaybe;\n}>;\n\nexport type FetchAllSubmittedAttendancesQuery = {\n __typename?: \"Query\";\n submittedAttendances: Array<{ __typename?: \"Attendance\"; id: string }>;\n};\n\nexport type FetchAttendancesCostSummaryQueryVariables = Exact<{\n attendanceIds: Array | Scalars[\"ID\"];\n}>;\n\nexport type FetchAttendancesCostSummaryQuery = {\n __typename?: \"Query\";\n attendancesCostSummary: {\n __typename?: \"AttendancesCostSummary\";\n workedDates: string;\n payrollComplianceFeeInAud: string;\n casualLoadingFeeInAud: string;\n serviceFeeInAud: string;\n gstInAud: string;\n grandTotalInAud: string;\n paymentTermSurchargeInAud: string;\n communityMembers: Array<{\n __typename?: \"CommunityMember\";\n fullName: string;\n preferredName: string;\n profileImageUrl?: string | null;\n }>;\n primaryRates: Array<{\n __typename?: \"WageBreakdown\";\n description: string;\n hoursWorked: string;\n wage: string;\n }>;\n secondaryRates?: Array<{\n __typename?: \"WageBreakdown\";\n description: string;\n hoursWorked: string;\n wage: string;\n }> | null;\n };\n};\n\nexport type FetchChangeRequestReasonsQueryVariables = Exact<{\n [key: string]: never;\n}>;\n\nexport type FetchChangeRequestReasonsQuery = {\n __typename?: \"Query\";\n changeRequestReasons: Array<{\n __typename?: \"ChangeRequestReason\";\n value: string;\n label: string;\n }>;\n};\n\nexport type FetchClientCompanyUsersQueryVariables = Exact<{\n [key: string]: never;\n}>;\n\nexport type FetchClientCompanyUsersQuery = {\n __typename?: \"Query\";\n clientCompanyUsers: Array<{\n __typename?: \"ClientCompanyUser\";\n id: string;\n fullName: string;\n }>;\n};\n\nexport type FetchExtensionRequestReasonsQueryVariables = Exact<{\n [key: string]: never;\n}>;\n\nexport type FetchExtensionRequestReasonsQuery = {\n __typename?: \"Query\";\n extensionRequestReasons: Array<{\n __typename?: \"ExtensionRequestReason\";\n value: string;\n label: string;\n }>;\n};\n\nexport type FetchFlaggedAttendancesQueryVariables = Exact<{\n communityMemberName?: InputMaybe;\n managerId?: InputMaybe;\n}>;\n\nexport type FetchFlaggedAttendancesQuery = {\n __typename?: \"Query\";\n flaggedAttendances: Array<{\n __typename?: \"Attendance\";\n id: string;\n state: AttendanceStateEnum;\n startAt: any;\n finishAt: any;\n workedOnDate: string;\n startTime: string;\n finishTime: string;\n timeZone: string;\n duration: number;\n minimumEngagementRequired: boolean;\n belowMinimumEngagementReasonToHuman?: string | null;\n hasPublicHoliday: boolean;\n resubmitted: boolean;\n workedThroughBreak: boolean;\n additionalNotes?: string | null;\n minimumEngagementDuration: {\n __typename?: \"MinimumEngagementDuration\";\n valueInSeconds: number;\n formatted: string;\n };\n workedBy: {\n __typename?: \"CommunityMember\";\n id: string;\n fullName: string;\n profileImageUrl?: string | null;\n preferredName: string;\n };\n position: { __typename?: \"Position\"; id: string; title: string };\n breaks?: Array<{\n __typename?: \"Break\";\n id: string;\n startTime: string;\n finishTime: string;\n duration: number;\n }> | null;\n }>;\n};\n\nexport type FetchRehireRequestEmploymentTypesQueryVariables = Exact<{\n [key: string]: never;\n}>;\n\nexport type FetchRehireRequestEmploymentTypesQuery = {\n __typename?: \"Query\";\n rehireRequestEmploymentTypes: Array<{\n __typename?: \"RehireRequestEmploymentType\";\n value: string;\n label: string;\n }>;\n};\n\nexport type FetchSubmittedAttendancesQueryVariables = Exact<{\n communityMemberName?: InputMaybe;\n managerId?: InputMaybe;\n}>;\n\nexport type FetchSubmittedAttendancesQuery = {\n __typename?: \"Query\";\n submittedAttendances: Array<{\n __typename?: \"Attendance\";\n id: string;\n state: AttendanceStateEnum;\n startAt: any;\n finishAt: any;\n workedOnDate: string;\n startTime: string;\n finishTime: string;\n timeZone: string;\n duration: number;\n minimumEngagementRequired: boolean;\n belowMinimumEngagementReasonToHuman?: string | null;\n hasPublicHoliday: boolean;\n resubmitted: boolean;\n workedThroughBreak: boolean;\n additionalNotes?: string | null;\n minimumEngagementDuration: {\n __typename?: \"MinimumEngagementDuration\";\n valueInSeconds: number;\n formatted: string;\n };\n workedBy: {\n __typename?: \"CommunityMember\";\n id: string;\n fullName: string;\n profileImageUrl?: string | null;\n preferredName: string;\n };\n position: { __typename?: \"Position\"; id: string; title: string };\n breaks?: Array<{\n __typename?: \"Break\";\n id: string;\n startTime: string;\n finishTime: string;\n duration: number;\n }> | null;\n }>;\n};\n\nexport const ApproveAttendancesDocument = `\n mutation approveAttendances($attendanceIds: [String!]!, $approvalConsent: Boolean!) {\n approveAttendances(\n input: {attendancesToApprove: {attendanceIds: $attendanceIds, approvalConsent: $approvalConsent}}\n ) {\n attendanceIds\n errors {\n path\n message\n }\n }\n}\n `;\nexport const useApproveAttendancesMutation = <\n TError = unknown,\n TContext = unknown\n>(\n client: GraphQLClient,\n options?: UseMutationOptions<\n ApproveAttendancesMutation,\n TError,\n ApproveAttendancesMutationVariables,\n TContext\n >,\n headers?: RequestInit[\"headers\"]\n) =>\n useMutation<\n ApproveAttendancesMutation,\n TError,\n ApproveAttendancesMutationVariables,\n TContext\n >(\n [\"approveAttendances\"],\n (variables?: ApproveAttendancesMutationVariables) =>\n fetcher(\n client,\n ApproveAttendancesDocument,\n variables,\n headers\n )(),\n options\n );\nexport const CreateBuyoutRequestsDocument = `\n mutation createBuyoutRequests($positionIds: [String!]!, $startOn: String!, $additionalComments: String!) {\n createBuyoutRequests(\n input: {buyoutRequests: {positionIds: $positionIds, startOn: $startOn, additionalComments: $additionalComments}}\n ) {\n positionIds\n errors {\n path\n message\n }\n }\n}\n `;\nexport const useCreateBuyoutRequestsMutation = <\n TError = unknown,\n TContext = unknown\n>(\n client: GraphQLClient,\n options?: UseMutationOptions<\n CreateBuyoutRequestsMutation,\n TError,\n CreateBuyoutRequestsMutationVariables,\n TContext\n >,\n headers?: RequestInit[\"headers\"]\n) =>\n useMutation<\n CreateBuyoutRequestsMutation,\n TError,\n CreateBuyoutRequestsMutationVariables,\n TContext\n >(\n [\"createBuyoutRequests\"],\n (variables?: CreateBuyoutRequestsMutationVariables) =>\n fetcher<\n CreateBuyoutRequestsMutation,\n CreateBuyoutRequestsMutationVariables\n >(client, CreateBuyoutRequestsDocument, variables, headers)(),\n options\n );\nexport const CreateChangeRequestDocument = `\n mutation createChangeRequest($attendanceIds: [String!]!, $reason: String!, $details: String!) {\n createChangeRequest(\n input: {changeRequest: {attendanceIds: $attendanceIds, reason: $reason, details: $details}}\n ) {\n attendanceIds\n errors {\n path\n message\n }\n }\n}\n `;\nexport const useCreateChangeRequestMutation = <\n TError = unknown,\n TContext = unknown\n>(\n client: GraphQLClient,\n options?: UseMutationOptions<\n CreateChangeRequestMutation,\n TError,\n CreateChangeRequestMutationVariables,\n TContext\n >,\n headers?: RequestInit[\"headers\"]\n) =>\n useMutation<\n CreateChangeRequestMutation,\n TError,\n CreateChangeRequestMutationVariables,\n TContext\n >(\n [\"createChangeRequest\"],\n (variables?: CreateChangeRequestMutationVariables) =>\n fetcher<\n CreateChangeRequestMutation,\n CreateChangeRequestMutationVariables\n >(client, CreateChangeRequestDocument, variables, headers)(),\n options\n );\nexport const CreateExtensionRequestsDocument = `\n mutation createExtensionRequests($positionIds: [String!]!, $reason: String!, $newFinishDate: String!, $timeRequirements: String!) {\n createExtensionRequests(\n input: {extensionRequests: {positionIds: $positionIds, reason: $reason, newFinishDate: $newFinishDate, timeRequirements: $timeRequirements}}\n ) {\n positionIds\n errors {\n path\n message\n }\n }\n}\n `;\nexport const useCreateExtensionRequestsMutation = <\n TError = unknown,\n TContext = unknown\n>(\n client: GraphQLClient,\n options?: UseMutationOptions<\n CreateExtensionRequestsMutation,\n TError,\n CreateExtensionRequestsMutationVariables,\n TContext\n >,\n headers?: RequestInit[\"headers\"]\n) =>\n useMutation<\n CreateExtensionRequestsMutation,\n TError,\n CreateExtensionRequestsMutationVariables,\n TContext\n >(\n [\"createExtensionRequests\"],\n (variables?: CreateExtensionRequestsMutationVariables) =>\n fetcher<\n CreateExtensionRequestsMutation,\n CreateExtensionRequestsMutationVariables\n >(client, CreateExtensionRequestsDocument, variables, headers)(),\n options\n );\nexport const CreateRehireRequestsDocument = `\n mutation createRehireRequests($communityMemberIds: [String!]!, $employmentType: String!, $startDate: String, $endDate: String, $salary: String, $additionalComments: String) {\n createRehireRequests(\n input: {rehireRequests: {communityMemberIds: $communityMemberIds, employmentType: $employmentType, startDate: $startDate, endDate: $endDate, salary: $salary, additionalComments: $additionalComments}}\n ) {\n communityMemberIds\n errors {\n path\n message\n }\n }\n}\n `;\nexport const useCreateRehireRequestsMutation = <\n TError = unknown,\n TContext = unknown\n>(\n client: GraphQLClient,\n options?: UseMutationOptions<\n CreateRehireRequestsMutation,\n TError,\n CreateRehireRequestsMutationVariables,\n TContext\n >,\n headers?: RequestInit[\"headers\"]\n) =>\n useMutation<\n CreateRehireRequestsMutation,\n TError,\n CreateRehireRequestsMutationVariables,\n TContext\n >(\n [\"createRehireRequests\"],\n (variables?: CreateRehireRequestsMutationVariables) =>\n fetcher<\n CreateRehireRequestsMutation,\n CreateRehireRequestsMutationVariables\n >(client, CreateRehireRequestsDocument, variables, headers)(),\n options\n );\nexport const FetchAllActivePositionsDocument = `\n query fetchAllActivePositions($communityMemberName: String, $managerId: String) {\n activePositions(\n communityMemberName: $communityMemberName\n managerId: $managerId\n ) {\n id\n startOn\n finishOn\n title\n newJobAcceptance\n jobOpeningId\n jobOpeningName\n communityMember {\n id\n fullName\n profileImageUrl\n mobileNumber\n }\n extensionRequests {\n isPending\n }\n buyoutRequests {\n isPending\n }\n }\n}\n `;\nexport const useFetchAllActivePositionsQuery = <\n TData = FetchAllActivePositionsQuery,\n TError = unknown\n>(\n client: GraphQLClient,\n variables?: FetchAllActivePositionsQueryVariables,\n options?: UseQueryOptions,\n headers?: RequestInit[\"headers\"]\n) =>\n useQuery(\n variables === undefined\n ? [\"fetchAllActivePositions\"]\n : [\"fetchAllActivePositions\", variables],\n fetcher<\n FetchAllActivePositionsQuery,\n FetchAllActivePositionsQueryVariables\n >(client, FetchAllActivePositionsDocument, variables, headers),\n options\n );\nexport const FetchAllFlaggedAttendancesDocument = `\n query fetchAllFlaggedAttendances($managerId: ID) {\n flaggedAttendances(managerId: $managerId) {\n id\n }\n}\n `;\nexport const useFetchAllFlaggedAttendancesQuery = <\n TData = FetchAllFlaggedAttendancesQuery,\n TError = unknown\n>(\n client: GraphQLClient,\n variables?: FetchAllFlaggedAttendancesQueryVariables,\n options?: UseQueryOptions,\n headers?: RequestInit[\"headers\"]\n) =>\n useQuery(\n variables === undefined\n ? [\"fetchAllFlaggedAttendances\"]\n : [\"fetchAllFlaggedAttendances\", variables],\n fetcher<\n FetchAllFlaggedAttendancesQuery,\n FetchAllFlaggedAttendancesQueryVariables\n >(client, FetchAllFlaggedAttendancesDocument, variables, headers),\n options\n );\nexport const FetchAllPastPositionsDocument = `\n query fetchAllPastPositions($communityMemberName: String, $managerId: String) {\n pastPositions(communityMemberName: $communityMemberName, managerId: $managerId) {\n id\n startOn\n finishOn\n title\n newJobAcceptance\n jobOpeningId\n jobOpeningName\n communityMember {\n id\n fullName\n profileImageUrl\n mobileNumber\n }\n extensionRequests {\n isPending\n }\n }\n}\n `;\nexport const useFetchAllPastPositionsQuery = <\n TData = FetchAllPastPositionsQuery,\n TError = unknown\n>(\n client: GraphQLClient,\n variables?: FetchAllPastPositionsQueryVariables,\n options?: UseQueryOptions,\n headers?: RequestInit[\"headers\"]\n) =>\n useQuery(\n variables === undefined\n ? [\"fetchAllPastPositions\"]\n : [\"fetchAllPastPositions\", variables],\n fetcher(\n client,\n FetchAllPastPositionsDocument,\n variables,\n headers\n ),\n options\n );\nexport const FetchAllSubmittedAttendancesDocument = `\n query fetchAllSubmittedAttendances($managerId: ID) {\n submittedAttendances(managerId: $managerId) {\n id\n }\n}\n `;\nexport const useFetchAllSubmittedAttendancesQuery = <\n TData = FetchAllSubmittedAttendancesQuery,\n TError = unknown\n>(\n client: GraphQLClient,\n variables?: FetchAllSubmittedAttendancesQueryVariables,\n options?: UseQueryOptions,\n headers?: RequestInit[\"headers\"]\n) =>\n useQuery(\n variables === undefined\n ? [\"fetchAllSubmittedAttendances\"]\n : [\"fetchAllSubmittedAttendances\", variables],\n fetcher<\n FetchAllSubmittedAttendancesQuery,\n FetchAllSubmittedAttendancesQueryVariables\n >(client, FetchAllSubmittedAttendancesDocument, variables, headers),\n options\n );\nexport const FetchAttendancesCostSummaryDocument = `\n query fetchAttendancesCostSummary($attendanceIds: [ID!]!) {\n attendancesCostSummary(attendanceIds: $attendanceIds) {\n workedDates\n communityMembers {\n fullName\n preferredName\n profileImageUrl\n }\n primaryRates {\n description\n hoursWorked\n wage\n }\n secondaryRates {\n description\n hoursWorked\n wage\n }\n payrollComplianceFeeInAud\n casualLoadingFeeInAud\n serviceFeeInAud\n gstInAud\n grandTotalInAud\n paymentTermSurchargeInAud\n }\n}\n `;\nexport const useFetchAttendancesCostSummaryQuery = <\n TData = FetchAttendancesCostSummaryQuery,\n TError = unknown\n>(\n client: GraphQLClient,\n variables: FetchAttendancesCostSummaryQueryVariables,\n options?: UseQueryOptions,\n headers?: RequestInit[\"headers\"]\n) =>\n useQuery(\n [\"fetchAttendancesCostSummary\", variables],\n fetcher<\n FetchAttendancesCostSummaryQuery,\n FetchAttendancesCostSummaryQueryVariables\n >(client, FetchAttendancesCostSummaryDocument, variables, headers),\n options\n );\nexport const FetchChangeRequestReasonsDocument = `\n query fetchChangeRequestReasons {\n changeRequestReasons {\n value\n label\n }\n}\n `;\nexport const useFetchChangeRequestReasonsQuery = <\n TData = FetchChangeRequestReasonsQuery,\n TError = unknown\n>(\n client: GraphQLClient,\n variables?: FetchChangeRequestReasonsQueryVariables,\n options?: UseQueryOptions,\n headers?: RequestInit[\"headers\"]\n) =>\n useQuery(\n variables === undefined\n ? [\"fetchChangeRequestReasons\"]\n : [\"fetchChangeRequestReasons\", variables],\n fetcher<\n FetchChangeRequestReasonsQuery,\n FetchChangeRequestReasonsQueryVariables\n >(client, FetchChangeRequestReasonsDocument, variables, headers),\n options\n );\nexport const FetchClientCompanyUsersDocument = `\n query fetchClientCompanyUsers {\n clientCompanyUsers {\n id\n fullName\n }\n}\n `;\nexport const useFetchClientCompanyUsersQuery = <\n TData = FetchClientCompanyUsersQuery,\n TError = unknown\n>(\n client: GraphQLClient,\n variables?: FetchClientCompanyUsersQueryVariables,\n options?: UseQueryOptions,\n headers?: RequestInit[\"headers\"]\n) =>\n useQuery(\n variables === undefined\n ? [\"fetchClientCompanyUsers\"]\n : [\"fetchClientCompanyUsers\", variables],\n fetcher<\n FetchClientCompanyUsersQuery,\n FetchClientCompanyUsersQueryVariables\n >(client, FetchClientCompanyUsersDocument, variables, headers),\n options\n );\nexport const FetchExtensionRequestReasonsDocument = `\n query fetchExtensionRequestReasons {\n extensionRequestReasons {\n value\n label\n }\n}\n `;\nexport const useFetchExtensionRequestReasonsQuery = <\n TData = FetchExtensionRequestReasonsQuery,\n TError = unknown\n>(\n client: GraphQLClient,\n variables?: FetchExtensionRequestReasonsQueryVariables,\n options?: UseQueryOptions,\n headers?: RequestInit[\"headers\"]\n) =>\n useQuery(\n variables === undefined\n ? [\"fetchExtensionRequestReasons\"]\n : [\"fetchExtensionRequestReasons\", variables],\n fetcher<\n FetchExtensionRequestReasonsQuery,\n FetchExtensionRequestReasonsQueryVariables\n >(client, FetchExtensionRequestReasonsDocument, variables, headers),\n options\n );\nexport const FetchFlaggedAttendancesDocument = `\n query fetchFlaggedAttendances($communityMemberName: String, $managerId: ID) {\n flaggedAttendances(\n communityMemberName: $communityMemberName\n managerId: $managerId\n ) {\n id\n state\n startAt\n finishAt\n workedOnDate\n startTime\n finishTime\n timeZone\n duration\n minimumEngagementRequired\n belowMinimumEngagementReasonToHuman\n minimumEngagementDuration {\n valueInSeconds\n formatted\n }\n hasPublicHoliday\n resubmitted\n workedThroughBreak\n workedBy {\n id\n fullName\n profileImageUrl\n preferredName\n }\n position {\n id\n title\n }\n breaks {\n id\n startTime\n finishTime\n duration\n }\n additionalNotes\n }\n}\n `;\nexport const useFetchFlaggedAttendancesQuery = <\n TData = FetchFlaggedAttendancesQuery,\n TError = unknown\n>(\n client: GraphQLClient,\n variables?: FetchFlaggedAttendancesQueryVariables,\n options?: UseQueryOptions,\n headers?: RequestInit[\"headers\"]\n) =>\n useQuery(\n variables === undefined\n ? [\"fetchFlaggedAttendances\"]\n : [\"fetchFlaggedAttendances\", variables],\n fetcher<\n FetchFlaggedAttendancesQuery,\n FetchFlaggedAttendancesQueryVariables\n >(client, FetchFlaggedAttendancesDocument, variables, headers),\n options\n );\nexport const FetchRehireRequestEmploymentTypesDocument = `\n query fetchRehireRequestEmploymentTypes {\n rehireRequestEmploymentTypes {\n value\n label\n }\n}\n `;\nexport const useFetchRehireRequestEmploymentTypesQuery = <\n TData = FetchRehireRequestEmploymentTypesQuery,\n TError = unknown\n>(\n client: GraphQLClient,\n variables?: FetchRehireRequestEmploymentTypesQueryVariables,\n options?: UseQueryOptions<\n FetchRehireRequestEmploymentTypesQuery,\n TError,\n TData\n >,\n headers?: RequestInit[\"headers\"]\n) =>\n useQuery(\n variables === undefined\n ? [\"fetchRehireRequestEmploymentTypes\"]\n : [\"fetchRehireRequestEmploymentTypes\", variables],\n fetcher<\n FetchRehireRequestEmploymentTypesQuery,\n FetchRehireRequestEmploymentTypesQueryVariables\n >(client, FetchRehireRequestEmploymentTypesDocument, variables, headers),\n options\n );\nexport const FetchSubmittedAttendancesDocument = `\n query fetchSubmittedAttendances($communityMemberName: String, $managerId: ID) {\n submittedAttendances(\n communityMemberName: $communityMemberName\n managerId: $managerId\n ) {\n id\n state\n startAt\n finishAt\n workedOnDate\n startTime\n finishTime\n timeZone\n duration\n minimumEngagementRequired\n belowMinimumEngagementReasonToHuman\n hasPublicHoliday\n resubmitted\n workedThroughBreak\n minimumEngagementDuration {\n valueInSeconds\n formatted\n }\n workedBy {\n id\n fullName\n profileImageUrl\n preferredName\n }\n position {\n id\n title\n }\n breaks {\n id\n startTime\n finishTime\n duration\n }\n additionalNotes\n }\n}\n `;\nexport const useFetchSubmittedAttendancesQuery = <\n TData = FetchSubmittedAttendancesQuery,\n TError = unknown\n>(\n client: GraphQLClient,\n variables?: FetchSubmittedAttendancesQueryVariables,\n options?: UseQueryOptions,\n headers?: RequestInit[\"headers\"]\n) =>\n useQuery(\n variables === undefined\n ? [\"fetchSubmittedAttendances\"]\n : [\"fetchSubmittedAttendances\", variables],\n fetcher<\n FetchSubmittedAttendancesQuery,\n FetchSubmittedAttendancesQueryVariables\n >(client, FetchSubmittedAttendancesDocument, variables, headers),\n options\n );\n","import BoringAvatar from \"boring-avatars\";\n\ninterface CommunityMemberAvatarProps {\n profileImageUrl: string;\n name: string;\n size: \"EXTRA_SMALL\" | \"SMALL\" | \"MEDIUM\" | \"LARGE\" | \"EXTRA_LARGE\";\n}\n\nfunction CommunityMemberAvatar({\n profileImageUrl,\n name,\n size,\n}: CommunityMemberAvatarProps): JSX.Element {\n const customAvatarSize = {\n EXTRA_SMALL: \"h-8 w-8\",\n SMALL: \"h-12 w-12\",\n MEDIUM: \"h-16 w-16\",\n LARGE: \"h-20 w-20\",\n EXTRA_LARGE: \"h-40 w-40\",\n };\n const boringAvatarSize = {\n EXTRA_SMALL: 32,\n SMALL: 48,\n MEDIUM: 64,\n LARGE: 80,\n EXTRA_LARGE: 90,\n };\n const boringAvatarColors = [\n \"#BBF0E9\",\n \"#3FB6A1\",\n \"#91E7DC\",\n \"#50D0BD\",\n \"#2C7662\",\n ];\n\n {\n return profileImageUrl ? (\n
    \n \n
    \n ) : (\n \n );\n }\n}\n\nexport { CommunityMemberAvatar };\n","import { CommunityMemberAvatar } from \"@/client_app/components/CommunityMemberAvatar\";\n\ninterface CommunityMemberType {\n fullName: string;\n preferredName: string;\n profileImageUrl?: string;\n}\n\ninterface ApproveAttendancesProfileProps {\n workedDates: string;\n communityMember: CommunityMemberType;\n}\n\nfunction ApproveAttendancesProfile({\n workedDates,\n communityMember,\n}: ApproveAttendancesProfileProps): JSX.Element {\n return (\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n

    \n {communityMember.fullName}\n

    \n

    {workedDates}

    \n
    \n
    \n
    \n Time Period: {workedDates}\n
    \n
    \n );\n}\n\nexport { ApproveAttendancesProfile };\n","import { WageBreakdown } from \"@graphql/client_app/types\";\n\ninterface CostSummaryAwardItemsProp {\n payrates: WageBreakdown[];\n}\n\nfunction CostSummaryAwardItems({\n payrates,\n}: CostSummaryAwardItemsProp): JSX.Element {\n return (\n <>\n {payrates.map((rate: WageBreakdown, index: number) => {\n return (\n
    \n \n {`${rate.description} x ${rate.hoursWorked}`}\n \n {rate.wage}\n
    \n );\n })}\n \n );\n}\n\nexport { CostSummaryAwardItems };\n","interface CostSummaryFeeItemProps {\n label: string;\n value: string;\n}\n\nexport const CostSummaryFeeItem = ({\n label,\n value,\n}: CostSummaryFeeItemProps): JSX.Element => {\n return (\n
    \n {label}\n \n {value}\n \n
    \n );\n};\n","import React from \"react\";\nimport SVG from \"react-inlinesvg\";\nimport Modal from \"react-modal\";\n\nimport LeftURL from \"@assets/icons/left.svg\";\nimport BeefHotpotURL from \"@assets/illustrations/beef_hotpot.svg\";\nimport \"./fullLayoutModalStyle.scss\";\n\ninterface FullLayoutModalProps {\n isOpen: boolean;\n title: string;\n subTitle?: string;\n closeModal: () => void;\n children: React.ReactElement | React.ReactElement[];\n}\n\nModal.setAppElement(\"body\");\n\nexport const FullLayoutModal = ({\n isOpen,\n title,\n subTitle,\n children,\n closeModal,\n}: FullLayoutModalProps): JSX.Element => {\n const customStyles = {\n overlay: {\n zIndex: 9999,\n },\n content: {\n top: \"0\",\n left: \"0\",\n right: \"0\",\n bottom: \"0\",\n padding: \"0\",\n },\n };\n\n return (\n \n
    \n
    \n
    \n
    \n \n
    \n

    {title}

    \n
    {subTitle}
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    {children}
    \n
    \n
    \n );\n};\n","import React from \"react\";\n\ninterface CheckboxProps {\n name?: string;\n checked?: boolean;\n id?: string;\n disabled?: boolean;\n form?: string;\n onChange?: (e) => void;\n}\n\nexport const Checkbox = ({\n name,\n checked,\n disabled,\n form,\n id,\n onChange,\n}: CheckboxProps): JSX.Element => {\n const handleChange = (e) => {\n if (onChange) {\n onChange(e);\n }\n };\n\n return (\n \n );\n};\n","import { tenantPath } from \"helpers/tenant_path\";\nimport i18next from \"i18next\";\nimport \"@/i18n/config\";\nimport { useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport graphqlClient from \"@graphql/client_app/client\";\nimport {\n useFetchAttendancesCostSummaryQuery,\n useApproveAttendancesMutation,\n} from \"@graphql/client_app/types\";\n\nimport { APPROVAL_SUCCESS_PATH } from \"@/client_app/config\";\nimport { APPROVAL_FAILURE_PATH } from \"@/client_app/config\";\n\nimport { ApproveAttendancesProfile } from \"./ApproveAttendancesProfile\";\nimport { CostSummaryAwardItems } from \"./CostSummaryAwardItems\";\nimport { CostSummaryFeeItem } from \"./CostSummaryFeeItem\";\nimport { FullLayoutModal } from \"./FullLayoutModal\";\n\nimport { PrimaryButton } from \"@/ui/buttons\";\nimport { Checkbox } from \"@/ui/Checkbox\";\n\ninterface ApproveAttendancesPreviewProp {\n onBack: () => unknown;\n isOpen: boolean;\n attendanceIds: string[];\n}\n\nexport const COMPONENT_NAME = ApproveAttendancesPreview.name;\n\nfunction ApproveAttendancesPreview({\n onBack,\n isOpen,\n attendanceIds,\n}: ApproveAttendancesPreviewProp): JSX.Element {\n const navigate = useNavigate();\n const [approvalConsented, setApprovalConsented] = useState(false);\n const [sendingApproval, setSendingApproval] = useState(false);\n const [showErrors, setShowErrors] = useState([]);\n\n const mutation = useApproveAttendancesMutation(graphqlClient);\n const { isFetching, data, error } = useFetchAttendancesCostSummaryQuery(\n graphqlClient,\n { attendanceIds }\n );\n\n if (error) {\n return
    Error!
    ;\n }\n\n if (isFetching) {\n return Loading...;\n }\n\n const {\n workedDates,\n communityMembers,\n primaryRates,\n secondaryRates,\n payrollComplianceFeeInAud,\n casualLoadingFeeInAud,\n serviceFeeInAud,\n gstInAud,\n grandTotalInAud,\n paymentTermSurchargeInAud,\n } = data.attendancesCostSummary;\n\n const modalTitle = () => {\n if (communityMembers.length > 1)\n return i18next.t(\"clientApp.approveMultipleWeployeesTimesheet\", {\n terminologyEmployee: window.terminologyEmployee,\n });\n\n const weployeePreferredName = communityMembers[0].preferredName;\n return `Approve ${weployeePreferredName}'s Timesheet`;\n };\n\n const findPrefix = () => {\n if (communityMembers.length === 1) {\n return `?prefix=${communityMembers[0].preferredName}`;\n }\n };\n\n const handleSubmit = () => {\n const variables = {\n attendanceIds: attendanceIds,\n approvalConsent: approvalConsented,\n };\n\n setSendingApproval(true);\n\n mutation.mutateAsync(variables).then((data) => {\n const errors = data.approveAttendances.errors;\n\n if (errors.length === 0) {\n navigate(\n {\n pathname: tenantPath(APPROVAL_SUCCESS_PATH),\n search: findPrefix(),\n },\n {\n state: { from: COMPONENT_NAME },\n }\n );\n } else {\n navigate(\n {\n pathname: tenantPath(APPROVAL_FAILURE_PATH),\n },\n {\n state: { from: COMPONENT_NAME },\n }\n );\n\n setShowErrors(data.approveAttendances.errors);\n }\n });\n };\n\n const zeroPaymentTermSurcharge = (): boolean => {\n const value = paymentTermSurchargeInAud.split(\"$\");\n return parseFloat(value[1]) <= 0;\n };\n\n return (\n \n
    \n {communityMembers.length > 1 ? (\n
    \n

    \n Timesheet for {communityMembers.length}{\" \"}\n {window.terminologyEmployee}s\n

    \n
    \n

    \n Timesheet for: {workedDates}\n

    \n

    \n Grand Total: {grandTotalInAud}\n

    \n
    \n
    \n ) : (\n \n )}\n\n
    \n Payrate Estimate\n
    \n\n
    \n
    \n \n
    \n\n {secondaryRates.length > 0 && (\n
    \n \n

    \n *Penalty rates are calculated as per the awards for each\n profession.\n

    \n
    \n )}\n\n \n \n \n \n {!zeroPaymentTermSurcharge() && (\n \n )}\n
    \n\n
    \n Grand Total\n \n {grandTotalInAud}\n \n
    \n\n
    \n {\n setApprovalConsented(!approvalConsented);\n }}\n />\n \n By clicking this box I declare the hours worked are accurate and\n authorize payment for the total amount.\n \n
    \n
    \n <>\n {showErrors.length > 0 &&\n showErrors.map((error) => {\n return (\n
    \n {error.message}\n
    \n );\n })}\n \n \n

    \n If this doesn't look quite right,{\" \"}\n \n send us an email\n {\" \"}\n and we'll get back to you.\n

    \n
    \n
    \n
    \n );\n}\n\nexport { ApproveAttendancesPreview };\n","import { tenantPath } from \"helpers/tenant_path\";\nimport { useEffect } from \"react\";\nimport SVG from \"react-inlinesvg\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\n\nimport approvedImageUrl from \"@assets/illustrations/timesheet_approved_image.svg\";\n\nimport { ATTENDANCES_APPROVAL_PATH } from \"@/client_app/config\";\n\nimport { COMPONENT_NAME as ApproveAttendancesPreviewComponentName } from \"./ApproveAttendancesPreview\";\nimport { FullLayoutModal } from \"./FullLayoutModal\";\n\nconst ApprovalFailure = (): JSX.Element => {\n const navigate = useNavigate();\n\n type locationStateType = {\n from: string;\n };\n\n const location = useLocation();\n\n const handleBack = () => {\n navigate(tenantPath(ATTENDANCES_APPROVAL_PATH), {\n state: { from: ApprovalFailure.name },\n });\n };\n\n useEffect(() => {\n if (!location.state) return handleBack();\n const { from } = location.state as locationStateType;\n\n if (from !== ApproveAttendancesPreviewComponentName) {\n handleBack();\n }\n });\n\n return (\n \n
    \n

    \n Timesheet were not Approved\n

    \n

    \n No timesheets have been approved at this time. Some timesheets may not\n be up to date with the latest information. Try reloading the timesheet\n page and approving again, otherwise, contact your account manager.\n

    \n \n RETURN TO TIMESHEET\n \n\n
    \n \n
    \n
    \n \n );\n};\n\nexport { ApprovalFailure };\n","import { tenantPath } from \"helpers/tenant_path\";\nimport i18next from \"i18next\";\nimport \"@/i18n/config\";\nimport { useEffect } from \"react\";\nimport SVG from \"react-inlinesvg\";\nimport { useSearchParams, useLocation, useNavigate } from \"react-router-dom\";\n\nimport approvedImageUrl from \"@assets/illustrations/timesheet_approved_image.svg\";\n\nimport { ATTENDANCES_APPROVAL_PATH } from \"@/client_app/config\";\n\nimport { COMPONENT_NAME as ApproveAttendancesPreviewComponentName } from \"./ApproveAttendancesPreview\";\nimport { FullLayoutModal } from \"./FullLayoutModal\";\n\nimport { hotjarNoop } from \"@/hotjar\";\n\nwindow.executeHotjarEvent = window.executeHotjarEvent || hotjarNoop;\n\nwindow.terminologyEmployee = window.terminologyEmployee || \"Weployees\";\n\nconst ApprovalSuccess = (): JSX.Element => {\n const [searchParams] = useSearchParams();\n\n const prefix =\n searchParams.get(\"prefix\") ||\n i18next.t(\"clientApp.yourWeployees\", {\n terminologyEmployee: window.terminologyEmployee,\n });\n const navigate = useNavigate();\n\n type locationStateType = {\n from: string;\n };\n\n const location = useLocation();\n\n const handleBack = () => {\n navigate(tenantPath(ATTENDANCES_APPROVAL_PATH), {\n state: { from: ApprovalSuccess.name },\n });\n };\n\n const handleFeedBack = (e) => {\n window.executeHotjarEvent(e);\n };\n\n useEffect(() => {\n if (!location.state) return handleBack();\n const { from } = location.state as locationStateType;\n\n if (from !== ApproveAttendancesPreviewComponentName) {\n handleBack();\n }\n });\n\n return (\n \n
    \n

    \n Timesheet Approved!\n

    \n
    \n
    \n

    \n How was approving timesheets?\n

    \n \n Send feedback\n \n
    \n
    \n\n
    \n \n
    \n
    \n \n );\n};\n\nexport { ApprovalSuccess };\n","import clsx from \"clsx\";\nimport { NavLink } from \"react-router-dom\";\n\ninterface AttendancesApprovalTabProps {\n to: string;\n count: number;\n label: string;\n}\n\nfunction AttendancesApprovalTab({\n to,\n count,\n label,\n}: AttendancesApprovalTabProps): JSX.Element {\n return (\n \n clsx(\n \"flex gap-1 items-center font-bold uppercase border-b-2 pb-1\",\n isActive ? \"border-primary-300\" : \"border-transparent\"\n )\n }\n >\n {({ isActive }) => (\n <>\n \n {count}\n \n \n {label}\n \n \n )}\n \n );\n}\n\nexport { AttendancesApprovalTab };\n","import * as React from \"react\";\n\ninterface BackendContextProviderProps {\n children: React.ReactNode;\n value: unknown;\n}\n\nconst BackendContext = React.createContext(undefined);\n\nfunction BackendContextProvider({\n children,\n value,\n}: BackendContextProviderProps): JSX.Element {\n return (\n {children}\n );\n}\n\nfunction useBackendContext(): BackendContext {\n const context = React.useContext(BackendContext);\n if (context === undefined) {\n throw new Error(\n \"useBackendContext must be used within a BackendContextProvider\"\n );\n }\n return context;\n}\n\nexport { BackendContextProvider, useBackendContext };\n","import { gaSelectTrack } from \"helpers/ga_event_tracking\";\nimport { useFormContext } from \"react-hook-form\";\n\nimport graphqlClient from \"@graphql/client_app/client\";\nimport { useFetchClientCompanyUsersQuery } from \"@graphql/client_app/types\";\n\nimport { useBackendContext } from \"@/client_app/stores/backend-context\";\n\ninterface setManagerIdProps {\n selectedManagerId: string;\n setSelectedManager: ({ id, name }) => void;\n}\n\nfunction FilterByManager({\n selectedManagerId,\n setSelectedManager,\n}: setManagerIdProps): JSX.Element {\n const { register } = useFormContext();\n const { currentClientCompanyUserId } = useBackendContext();\n\n const { isFetching, data, error } =\n useFetchClientCompanyUsersQuery(graphqlClient);\n\n if (error) {\n return
    Error!
    ;\n }\n\n if (isFetching) {\n return Loading...;\n }\n\n const clientCompanyUsers = data.clientCompanyUsers.map((user) => [\n user.id,\n user.fullName,\n ]);\n\n const options = [...clientCompanyUsers, [\"all-managers\", \"Everyone\"]];\n\n const getSelectedManagerName = ({\n selectedManagerId,\n clientCompanyUsers,\n currentClientCompanyUserId,\n }: {\n selectedManagerId: string;\n clientCompanyUsers: string[][];\n currentClientCompanyUserId: string;\n }) => {\n if (selectedManagerId === \"all-managers\") return \"Everyone\";\n if (selectedManagerId === currentClientCompanyUserId) return \"Me\";\n\n return clientCompanyUsers.find(\n ([userId]) => userId === selectedManagerId\n )[1];\n };\n\n const onChange = (event: InputEvent): void => {\n const target = event.target as HTMLSelectElement;\n const seletcedManagerIdx = target.selectedIndex;\n const selectedManagerName = target.options[seletcedManagerIdx].text;\n const selectedManagerValue = target.options[seletcedManagerIdx].value;\n\n setSelectedManager({ id: target.value, name: selectedManagerName });\n\n gaEventTracking(selectedManagerName, selectedManagerValue);\n };\n\n const gaEventTracking = (name: string, value: string) => {\n gaSelectTrack({\n select_label: \"searchByManager\",\n selected_name: name,\n selected_value: value,\n });\n };\n\n const selectClass =\n \"form-select down-icon w-full h-0 border-0 ring-0 bg-transparent absolute cursor-pointer md:block\";\n const labelClass = \"form-label text-neutral-700 mr-10 mt-2\";\n\n return (\n
    \n \n \n {options.map(([key, value]) => (\n \n ))}\n \n
    \n );\n}\n\nexport { FilterByManager };\n","import {\n FieldValues,\n SubmitHandler,\n useForm,\n FormProvider,\n} from \"react-hook-form\";\n\ninterface FormProps {\n defaultValues?: { [key: string]: string };\n children: React.ReactElement | React.ReactElement[];\n onSubmit?: SubmitHandler;\n}\n\nconst Form = ({\n defaultValues,\n children,\n onSubmit = () => null,\n}: FormProps): JSX.Element => {\n const methods = useForm({ defaultValues });\n\n return (\n \n
    {children}
    \n
    \n );\n};\n\nexport { Form };\n","import { useFormContext } from \"react-hook-form\";\n\ninterface InputProps {\n name: string;\n label: string;\n id?: string;\n placeholder?: string;\n type?: \"text\" | \"number\" | \"email\" | \"password\";\n defaultValue?: string;\n onChange?: (event: InputEvent) => void;\n}\n\nconst Input = ({\n name,\n label,\n id = name,\n placeholder = \"\",\n type = \"text\",\n defaultValue = \"\",\n onChange,\n}: InputProps): JSX.Element => {\n const { register } = useFormContext();\n\n return (\n <>\n \n \n \n );\n};\n\nexport { Input };\n","import { useEffect } from \"react\";\n\nexport const usePageTitle = (title: string, titlePage: string = null): void => {\n const pageTitle = [titlePage || \"WeployCX\", title]\n .filter(Boolean)\n .join(\" - \");\n useEffect(() => {\n document.title = pageTitle;\n }, [title]);\n};\n","import { tenantPath } from \"helpers/tenant_path\";\nimport { useState, useEffect } from \"react\";\nimport { Outlet, useOutletContext } from \"react-router-dom\";\nimport { useLocation, useSearchParams } from \"react-router-dom\";\n\nimport graphqlClient from \"@graphql/client_app/client\";\nimport {\n useFetchAllSubmittedAttendancesQuery,\n useFetchAllFlaggedAttendancesQuery,\n} from \"@graphql/client_app/types\";\n\nimport {\n SUBMITTED_ATTENDANCES_PATH,\n REVIEW_ATTENDANCES_PATH,\n} from \"@/client_app/config\";\n\nimport { ApprovalSuccess } from \"./ApprovalSuccess\";\nimport { AttendancesApprovalTab } from \"./AttendancesApprovalTab\";\n\nimport { FilterByManager } from \"@/client_app/components/FilterByManager\";\nimport { Form } from \"@/client_app/components/Form\";\nimport { useBackendContext } from \"@/client_app/stores/backend-context\";\nimport { usePageTitle } from \"@/hooks/usePageTitle\";\n\ntype locationStateType = {\n from: string;\n};\n\nexport const AttendanceApproval = (): JSX.Element => {\n const [searchParams] = useSearchParams();\n const { currentClientCompanyUserId, titlePage } = useBackendContext();\n const location = useLocation();\n\n const [selectedManager, setSelectedManager] = useState({\n id: searchParams.has(\"manager_id\")\n ? searchParams.get(\"manager_id\")\n : currentClientCompanyUserId,\n name: \"Me\",\n });\n\n const {\n isFetching: isFetchingSubmittedAttendances,\n data: dataSubmittedAttendances,\n error: errorSubmittedAttendances,\n refetch: refetchAllSubmittedAttendances,\n } = useFetchAllSubmittedAttendancesQuery(graphqlClient, {\n managerId: selectedManager.id,\n });\n\n const {\n isFetching: isFetchingFlaggedAttendances,\n data: dataFlaggedAttendances,\n error: errorFlaggedAttendances,\n refetch: refetchAllFlaggedAttendances,\n } = useFetchAllFlaggedAttendancesQuery(graphqlClient, {\n managerId: selectedManager.id,\n });\n\n usePageTitle(\"Timesheet Approval\", titlePage);\n\n useEffect(() => {\n if (!location.state) return;\n\n const { from } = location.state as locationStateType;\n\n if (from === ApprovalSuccess.name) {\n refetchAllSubmittedAttendances();\n refetchAllFlaggedAttendances();\n }\n });\n\n if (errorSubmittedAttendances || errorFlaggedAttendances) {\n return
    Error!
    ;\n }\n\n if (isFetchingSubmittedAttendances || isFetchingFlaggedAttendances) {\n return Loading...;\n }\n\n const submittedAttendancesCount =\n dataSubmittedAttendances.submittedAttendances.length;\n\n const flaggedAttendancesCount =\n dataFlaggedAttendances.flaggedAttendances.length;\n\n return (\n <>\n
    \n
    Timesheet Approval
    \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n
    \n
    \n \n \n );\n};\n\ntype OutletContextType = {\n selectedManagerId: string;\n refetchAllFlaggedAttendances: () => void;\n refetchAllSubmittedAttendances: () => void;\n};\n\nexport function useAttendanceApprovalOutletContext(): OutletContextType {\n return useOutletContext();\n}\n","import { format } from \"date-fns\";\nimport pluralize from \"pluralize\";\n\nimport {\n Attendance as AttendanceType,\n MinimumEngagementDuration,\n} from \"@graphql/client_app/types\";\n\ntype GroupAttendancesByPositionType = {\n [index: string]: AttendanceType[];\n};\n\ninterface AttendanceWithPosition {\n id: string;\n position: { id: string; title: string };\n}\nexport const groupAttendancesByPosition = <\n TAttendance extends AttendanceWithPosition\n>(\n attendances: TAttendance[]\n): GroupAttendancesByPositionType => {\n return attendances.reduce(\n (accumulator, attendance: TAttendance): GroupAttendancesByPositionType => {\n const positionId = attendance.position.id;\n const existingAttendanceGrouping = accumulator[positionId];\n\n existingAttendanceGrouping\n ? existingAttendanceGrouping.push(attendance)\n : (accumulator[positionId] = [attendance]);\n\n return accumulator;\n },\n {}\n );\n};\n\nexport const groupAttendancesIdsByPosition = <\n TAttendance extends AttendanceWithPosition\n>(\n attendances: TAttendance[]\n): { [index: string]: string[] } => {\n return attendances.reduce(\n (accumulator, attendance: TAttendance): { [index: string]: string } => {\n const positionId = attendance.position.id;\n const existingAttendanceGrouping = accumulator[positionId];\n\n existingAttendanceGrouping\n ? existingAttendanceGrouping.push(attendance.id)\n : (accumulator[positionId] = [attendance.id]);\n\n return accumulator;\n },\n {}\n );\n};\n\nexport const getDateWorkedOn = (date: string): string => {\n return format(new Date(date), \"EEEE d LLL yyyy\");\n};\n\nexport const getAttendanceTimes = (\n startAt: string,\n finishAt: string\n): string => {\n const formattedStartAt = format(new Date(startAt), \"h:mmaaa\");\n const formattedFinishAt = format(new Date(finishAt), \"h:mmaaa\");\n return `${formattedStartAt} - ${formattedFinishAt}`;\n};\n\ntype DurationSecond = number;\ninterface BreakTimesInterface {\n startTime: string;\n finishTime: string;\n duration: DurationSecond;\n}\n\nexport const getBreakTimes = (breaks?: BreakTimesInterface[]): string[] => {\n if (breaks.length == 0) return [\"-\"];\n\n return breaks.reduce((accumulator, brk) => {\n const startAt = brk.startTime;\n const finishAt = brk.finishTime;\n accumulator.push(`${startAt} - ${finishAt}`);\n\n return accumulator;\n }, []);\n};\n\nexport const getDailyTotal = (\n durationSeconds: number,\n breaks?: BreakTimesInterface[]\n): string => {\n const breakDurationSeconds = getBreakDuration(breaks);\n const durationExcludingBreaks = durationSeconds - breakDurationSeconds;\n\n return humanizeSecondsWorked(durationExcludingBreaks);\n};\n\ninterface AttendanceWithDurationAndBreaks {\n duration: number;\n breaks?: BreakTimesInterface[];\n minimumEngagementDuration: MinimumEngagementDuration;\n}\n\nexport const getTotalSecondsWorked = <\n TAttendance extends AttendanceWithDurationAndBreaks\n>(\n attendances: TAttendance[]\n): number => {\n const totalSecondsWorked = attendances.reduce((sum, attendance) => {\n const breakDuration = getBreakDuration(attendance.breaks);\n const durationExcludingBreaks = attendance.duration - breakDuration;\n const minimumEngagementDuration =\n attendance.minimumEngagementDuration.valueInSeconds;\n return (sum += durationExcludingBreaks + minimumEngagementDuration);\n }, 0);\n\n return totalSecondsWorked;\n};\n\nexport const getTotalHoursWorked = <\n TAttendance extends AttendanceWithDurationAndBreaks\n>(\n attendances: TAttendance[]\n): string => {\n const totalSecondsWorked = getTotalSecondsWorked(attendances);\n\n const totalHoursWorked = (totalSecondsWorked / 3600).toFixed(1);\n return pluralize(\"hr\", Number.parseFloat(totalHoursWorked), true);\n};\n\nexport const getTotalHoursAndMinutesWorked = <\n TAttendance extends AttendanceWithDurationAndBreaks\n>(\n attendances: TAttendance[]\n): string => {\n const totalSecondsWorked = getTotalSecondsWorked(attendances);\n return humanizeSecondsWorked(totalSecondsWorked);\n};\n\nexport const humanizeSecondsWorked = (secondsWorked: number): string => {\n const hours = Math.floor(secondsWorked / 3600);\n const minutes = (secondsWorked % 3600) / 60;\n\n const hoursString = pluralize(\"hr\", hours, true);\n const minutesString = pluralize(\"min\", minutes, true);\n\n return `${hoursString} ${minutes ? minutesString : \"\"}`;\n};\n\nconst getBreakDuration = (breaks: BreakTimesInterface[]): number => {\n return breaks.reduce((sum, brk): number => sum + brk.duration, 0);\n};\n\nexport const enum SelectionActionType {\n ADD_TO_SELECTED = \"ADD_TO_SELECTED\",\n REMOVE_FROM_SELECTED = \"REMOVE_FROM_SELECTED\",\n ADD_ALL_ATTENDANCES = \"ADD_ALL_ATTENDANCES\",\n REMOVE_ALL_ATTENDANCES = \"REMOVE_ALL_ATTENDANCES\",\n}\n\nexport type SelectionReducerAction = {\n type: SelectionActionType;\n attendanceIds?: string[];\n};\n\nexport const selectedAttendancesReducer = (\n state: string[],\n action: SelectionReducerAction\n): string[] => {\n switch (action.type) {\n case SelectionActionType.ADD_TO_SELECTED:\n return [...state, ...action.attendanceIds];\n case SelectionActionType.REMOVE_FROM_SELECTED:\n return state.filter((selected) => {\n return !action.attendanceIds.includes(selected);\n });\n case SelectionActionType.ADD_ALL_ATTENDANCES:\n return action.attendanceIds;\n case SelectionActionType.REMOVE_ALL_ATTENDANCES:\n return [];\n default:\n throw new Error(`Unknown action type: ${action.type}`);\n }\n};\n","import { Dispatch } from \"react\";\n\nimport { Input } from \"@/client_app/components/Form\";\nimport {\n SelectionReducerAction,\n SelectionActionType,\n} from \"@/client_app/features/timesheetApproval/utils/operations\";\nimport { useBackendContext } from \"@/client_app/stores/backend-context\";\n\ninterface FilterByWeployeeProps {\n communityMemberName: string;\n setCommunityMemberName: (name: string) => void;\n allSelectedDispatch: Dispatch;\n}\n\nfunction FilterByWeployee({\n communityMemberName,\n setCommunityMemberName,\n allSelectedDispatch,\n}: FilterByWeployeeProps): JSX.Element {\n const { terminologyEmployee } = useBackendContext();\n\n const onChange = (event: InputEvent): void => {\n const target = event.target as HTMLInputElement;\n const communityMemberSearchTerm = target.value;\n const pgTrigramMinimumCharacter = 3;\n\n if (communityMemberSearchTerm.length >= pgTrigramMinimumCharacter) {\n setCommunityMemberName(communityMemberSearchTerm);\n allSelectedDispatch({ type: SelectionActionType.REMOVE_ALL_ATTENDANCES });\n } else {\n setCommunityMemberName(\"\");\n }\n };\n\n return (\n
    \n
    \n
    \n \n
    \n
    \n
    \n );\n}\n\nexport { FilterByWeployee };\n","import { CommunityMemberAvatar } from \"@/client_app/components/CommunityMemberAvatar\";\n\ninterface ChangeRequestCommunityMemberProfileProps {\n communityMemberName: string;\n profileImageUrl?: string;\n}\n\nfunction ChangeRequestCommunityMemberProfile({\n communityMemberName,\n profileImageUrl,\n}: ChangeRequestCommunityMemberProfileProps): JSX.Element {\n return (\n
    \n \n

    \n Timesheets for {communityMemberName}\n

    \n
    \n );\n}\n\nexport { ChangeRequestCommunityMemberProfile };\n","import clsx from \"clsx\";\n\nexport const MinimumEngagementChip = (): JSX.Element => {\n return (\n \n Minimum Engagement\n \n );\n};\n","import clsx from \"clsx\";\n\nexport const PublicHolidayChip = (): JSX.Element => {\n return (\n \n Public Holiday\n \n );\n};\n","import clsx from \"clsx\";\n\nexport const UpdatedTimesheetChip = (): JSX.Element => {\n return (\n \n Updated Timesheet\n \n );\n};\n","import { useEffect, useState } from \"react\";\n\nconst useMediaQuery = (query: string): boolean => {\n const [matches, setMatches] = useState(false);\n useEffect(() => {\n const media = window.matchMedia(query);\n const listener = () => setMatches(media.matches);\n listener();\n media.addEventListener(\"change\", listener);\n\n return () => media.removeEventListener(\"change\", listener);\n }, [matches, query]);\n return matches;\n};\n\nexport { useMediaQuery };\n","import clsx from \"clsx\";\n\nimport { MinimumEngagementDuration } from \"@graphql/client_app/types\";\n\nimport { MinimumEngagementChip } from \"./MinimumEngagementChip\";\nimport { PublicHolidayChip } from \"./PublicHolidayChip\";\nimport { UpdatedTimesheetChip } from \"./UpdatedTimesheetChip\";\n\nimport { useMediaQuery } from \"@/client_app/hooks/useMediaQuery\";\n\ninterface ChangeRequestPreviewAttendanceItemProps {\n workedOnDate: string;\n hoursFromTo: string;\n breaks: string[];\n formattedDuration: string;\n additionalNotes: string;\n minimumEngagementRequired: boolean;\n minimumEngagementDuration: MinimumEngagementDuration;\n belowMinimumEngagementReasonToHuman: string;\n hasPublicHoliday: boolean;\n isResubmitted: boolean;\n}\n\nfunction ChangeRequestPreviewAttendanceItem({\n workedOnDate,\n hoursFromTo,\n breaks,\n formattedDuration,\n additionalNotes,\n minimumEngagementRequired,\n minimumEngagementDuration,\n belowMinimumEngagementReasonToHuman,\n hasPublicHoliday,\n isResubmitted,\n}: ChangeRequestPreviewAttendanceItemProps): JSX.Element {\n const isMobile = useMediaQuery(\"(max-width: 768px)\");\n const cellClassNames = \"col-span-full md:col-span-1 text-left md:text-center\";\n\n return (\n \n
    \n {isMobile && (\n
    \n {minimumEngagementRequired && (\n
    \n \n
    \n )}\n {hasPublicHoliday && (\n
    \n \n
    \n )}\n {isResubmitted && (\n
    \n \n
    \n )}\n
    \n )}\n \n {workedOnDate}\n
    \n
    \n Hours: \n {hoursFromTo}\n
    \n
    \n Breaks: \n \n {breaks.map((breakTime, index) => (\n
    {breakTime}
    \n ))}\n
    \n
    \n
    \n Daily Total: \n \n {formattedDuration}\n \n
    \n {isMobile && !!minimumEngagementDuration.formatted && (\n
    \n \n Minimum Engagement Hours:{\" \"}\n \n \n {minimumEngagementDuration.formatted}\n \n
    \n )}\n \n {(minimumEngagementRequired ||\n hasPublicHoliday ||\n isResubmitted ||\n !!additionalNotes) && (\n <>\n
    \n
    \n {minimumEngagementRequired && !isMobile && (\n
    \n
    \n
    \n \n
    \n \n Minimum engagment reason:{\" \"}\n \n {belowMinimumEngagementReasonToHuman}\n
    \n
    \n
    \n
    \n {minimumEngagementDuration.formatted}\n
    \n
    \n )}\n {hasPublicHoliday && !isMobile && (\n
    \n \n
    \n )}\n {isResubmitted && !isMobile && (\n
    \n \n
    \n )}\n {minimumEngagementRequired && isMobile && (\n
    \n \n Minimum engagment reason:{\" \"}\n \n {belowMinimumEngagementReasonToHuman}\n
    \n )}\n {!!additionalNotes && (\n
    \n Additional Notes:{\" \"}\n {additionalNotes}{\" \"}\n
    \n )}\n
    \n \n )}\n \n );\n}\n\nexport { ChangeRequestPreviewAttendanceItem };\n","import clsx from \"clsx\";\nimport i18next from \"i18next\";\nimport \"@/i18n/config\";\nimport { useForm } from \"react-hook-form\";\n\nimport graphqlClient from \"@graphql/client_app/client\";\nimport { useCreateChangeRequestMutation } from \"@graphql/client_app/types\";\nimport { MinimumEngagementDuration as MinimumEngagementDurationType } from \"@graphql/client_app/types\";\nimport { useFetchChangeRequestReasonsQuery } from \"@graphql/client_app/types\";\n\nimport { ChangeRequestCommunityMemberProfile } from \"./ChangeRequestCommunityMemberProfile\";\nimport { ChangeRequestPreviewAttendanceItem } from \"./ChangeRequestPreviewAttendanceItem\";\nimport { FullLayoutModal } from \"./FullLayoutModal\";\n\nimport {\n getBreakTimes,\n getDailyTotal,\n} from \"@/client_app/features/timesheetApproval/utils/operations\";\nimport { PrimaryButton } from \"@/ui/buttons\";\nimport { flash } from \"@/ui/Flash\";\n\ninterface BreakType {\n id: string;\n startTime: string;\n finishTime: string;\n duration: number;\n}\n\ninterface CommunityMemberType {\n profileImageUrl?: string;\n fullName: string;\n}\n\ninterface FlaggedAttendanceType {\n id: string;\n additionalNotes?: string;\n belowMinimumEngagementReasonToHuman?: string;\n breaks?: BreakType[];\n duration: number;\n hasPublicHoliday: boolean;\n minimumEngagementDuration: MinimumEngagementDurationType;\n minimumEngagementRequired: boolean;\n resubmitted: boolean;\n workedOnDate: string;\n startTime: string;\n finishTime: string;\n}\n\ninterface ChangeRequestPreviewProp {\n attendances: FlaggedAttendanceType[];\n communityMember: CommunityMemberType;\n onBack: () => unknown;\n onFormSubmissionSuccess: () => unknown;\n isOpen: boolean;\n}\n\nfunction ChangeRequestPreview({\n attendances,\n communityMember,\n onBack,\n onFormSubmissionSuccess,\n isOpen,\n}: ChangeRequestPreviewProp): JSX.Element {\n const {\n register,\n handleSubmit: reactHookFormHandleSubmit,\n setError,\n formState: { errors },\n } = useForm();\n const mutation = useCreateChangeRequestMutation(graphqlClient);\n const {\n data: changeRequestReasonsData,\n isLoading: isLoadingChangeRequestReasons,\n isSuccess: isSuccessChangeRequestReasons,\n } = useFetchChangeRequestReasonsQuery(graphqlClient);\n\n function handleSuccess() {\n onFormSubmissionSuccess();\n flash.notice(\n i18next.t(\"clientApp.weployeeNotifiedOfRequestedChange\", {\n terminologyEmployee: window.terminologyEmployee,\n })\n );\n }\n\n function handleFailure(errors): void {\n errors.forEach((error) => {\n setError(`change_request.${error.path}`, {\n type: \"custom\",\n message: error.message,\n });\n });\n }\n\n function handleSubmit(data): void {\n const variables = {\n attendanceIds: attendances.map((attendance) => attendance.id),\n reason: data.change_request.reason,\n details: data.change_request.details,\n };\n\n mutation.mutateAsync(variables).then((data) => {\n const errors = data.createChangeRequest.errors;\n\n if (errors.length > 0) {\n handleFailure(errors);\n } else {\n handleSuccess();\n }\n });\n }\n\n return (\n \n
    \n \n
    \n
    \n

    \n In order to request changes we need a few more details from you\n

    \n

    \n {i18next.t(\"clientApp.pleaseEnsureCheckedNotesOnYourAttendances\", {\n terminologyEmployee: window.terminologyEmployee,\n })}\n

    \n
    \n
    \n {attendances.map((attendance) => {\n return (\n
    \n \n
    \n );\n })}\n
    \n

    \n When adding in further details please be specific as possible including\n times and dates.\n

    \n
    \n
    \n {isLoadingChangeRequestReasons && \"Loading change request reasons...\"}\n {isSuccessChangeRequestReasons && (\n <>\n \n Reason for Request\n \n \n \n {changeRequestReasonsData.changeRequestReasons.map((option) => (\n \n ))}\n \n
    \n {errors?.change_request?.reason?.message}\n
    \n \n )}\n
    \n
    \n \n Further Details\n \n \n
    \n {errors?.change_request?.details?.message}\n
    \n
    \n
    \n \n
    \n
    \n \n );\n}\n\nexport { ChangeRequestPreview };\n","import clsx from \"clsx\";\nimport { gaClickTrack } from \"helpers/ga_event_tracking\";\nimport * as React from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport DownArrow from \"@assets/icons/down.svg\";\nimport { Attendance as AttendanceType } from \"@graphql/client_app/types\";\n\nimport {\n getBreakTimes,\n getDailyTotal,\n} from \"@/client_app/features/timesheetApproval/utils/operations\";\nimport { Checkbox } from \"@/ui/Checkbox\";\n\ninterface FlaggedAttendancesGroupListItemProps {\n attendance: AttendanceType;\n attendancesCount: number;\n stackOrder: number;\n isGroupExpanded: boolean;\n isMobile: boolean;\n minimumEngagementRequired: boolean;\n belowMinimumEngagementReasonToHuman: string;\n minimumEngagementDurationInseconds: number;\n humanReadableMinimumEngagementDuration: string;\n isResubmitted: boolean;\n workedThroughBreak: boolean;\n hasPublicHoliday: boolean;\n onExpandList: (event: React.MouseEvent) => void;\n onAttendanceToggle: (attendanceId: string) => void;\n checkedAttendances: string[];\n}\n\nconst chipClassName =\n \"inline-block rounded-full text-button-sm font-bold uppercase py-1 px-3\";\n\nexport const minimumEngagementChip = (\n
    \n Minimum Engagement\n
    \n);\n\nexport const updatedTimesheetChip = (\n
    \n Updated Timesheet\n
    \n);\n\nexport const publicHolidayChip = (\n
    \n Public Holiday\n
    \n);\n\nexport const workedThroughBreakChip = (\n
    \n Worked Though Break\n
    \n);\n\nfunction renderChips({\n minimumEngagementRequired,\n hasPublicHoliday,\n isResubmitted,\n workedThroughBreak,\n}: {\n minimumEngagementRequired: boolean;\n hasPublicHoliday: boolean;\n isResubmitted: boolean;\n workedThroughBreak: boolean;\n}): JSX.Element {\n return (\n <>\n {minimumEngagementRequired && (\n
    {minimumEngagementChip}
    \n )}\n {hasPublicHoliday &&
    {publicHolidayChip}
    }\n {isResubmitted &&
    {updatedTimesheetChip}
    }\n {workedThroughBreak && (\n
    {workedThroughBreakChip}
    \n )}\n \n );\n}\n\nexport const FlaggedAttendancesGroupListItem = React.forwardRef(\n (\n {\n attendance,\n attendancesCount,\n stackOrder,\n isGroupExpanded,\n isMobile,\n minimumEngagementRequired,\n belowMinimumEngagementReasonToHuman,\n humanReadableMinimumEngagementDuration,\n isResubmitted,\n hasPublicHoliday,\n workedThroughBreak,\n onExpandList,\n onAttendanceToggle,\n checkedAttendances,\n }: FlaggedAttendancesGroupListItemProps,\n ref: React.Ref\n ) => {\n const cellClassNames = \"col-span-full md:col-span-2 md:text-center\";\n const style = {\n transform: isGroupExpanded\n ? \"translateY(0%)\"\n : `translateY(${(stackOrder - 1) * -100}%)`,\n };\n\n function gaEventTracking(clickText: string) {\n gaClickTrack({\n click_text: clickText,\n });\n }\n\n function handleViewAllShifts(event: React.MouseEvent): void {\n onExpandList(event);\n gaEventTracking(\"VIEW ALL SHIFTS\");\n }\n\n return (\n 1 && !isGroupExpanded,\n \"opacity-1\": isGroupExpanded,\n }\n )}\n >\n
    \n
    \n {isGroupExpanded && (\n {\n onAttendanceToggle(attendance.id);\n }}\n />\n )}\n
    \n {isMobile && (\n
    \n {renderChips({\n minimumEngagementRequired,\n hasPublicHoliday,\n isResubmitted,\n workedThroughBreak,\n })}\n
    \n )}\n
    \n {attendance.workedOnDate}\n
    \n
    \n Hours: \n \n {`${attendance.startTime} - ${attendance.finishTime}`}\n \n
    \n
    \n Breaks: \n \n {getBreakTimes(attendance.breaks)}\n \n
    \n
    \n Daily Total: \n \n {getDailyTotal(attendance.duration, attendance.breaks)}\n \n
    \n {isMobile && !!humanReadableMinimumEngagementDuration && (\n
    \n \n Minimum Engagement Hours:{\" \"}\n \n \n {humanReadableMinimumEngagementDuration}\n \n
    \n )}\n
    \n {attendancesCount > 1 && !isGroupExpanded && (\n \n \n VIEW ALL SHIFTS\n \n \n \n )}\n
    \n
    \n {(minimumEngagementRequired ||\n hasPublicHoliday ||\n isResubmitted ||\n workedThroughBreak ||\n !!attendance.additionalNotes) && (\n <>\n
    \n
    \n {minimumEngagementRequired && !isMobile && (\n
    \n
    \n
    \n {minimumEngagementChip}\n
    \n \n Minimum engagment reason:{\" \"}\n \n {belowMinimumEngagementReasonToHuman}\n
    \n
    \n
    \n
    \n {humanReadableMinimumEngagementDuration}\n
    \n
    \n )}\n {hasPublicHoliday && !isMobile && (\n
    {publicHolidayChip}
    \n )}\n {isResubmitted && !isMobile && (\n
    {updatedTimesheetChip}
    \n )}\n {workedThroughBreak && !isMobile && (\n
    {workedThroughBreakChip}
    \n )}\n {minimumEngagementRequired && isMobile && (\n
    \n \n Minimum engagment reason:{\" \"}\n \n {belowMinimumEngagementReasonToHuman}\n
    \n )}\n {!!attendance.additionalNotes && (\n
    \n Additional Notes:{\" \"}\n {attendance.additionalNotes}{\" \"}\n
    \n )}\n
    \n \n )}\n \n );\n }\n);\n","import React, { useState, useEffect, useRef } from \"react\";\n\nimport { Attendance as AttendanceType } from \"@graphql/client_app/types\";\n\nimport { FlaggedAttendancesGroupListItem } from \"./FlaggedAttendancesGroupListItem\";\n\ninterface FlaggedAttendancesGroupListProps {\n attendances: AttendanceType[];\n isGroupExpanded: boolean;\n isMobile: boolean;\n onExpandList: (event: React.MouseEvent) => void;\n onAttendanceToggle: (attendanceId: string) => void;\n checkedAttendances: string[];\n}\n\nconst FAKE_STACK_VISIBLE_HEIGHT = 10; // 10px\n\nfunction FlaggedAttendancesGroupList({\n attendances,\n isGroupExpanded,\n isMobile,\n onExpandList,\n onAttendanceToggle,\n checkedAttendances,\n}: FlaggedAttendancesGroupListProps): JSX.Element {\n const attendanceItemsRef = useRef([]);\n\n const [listItemHeight, setListItemHeight] = useState(0);\n\n useEffect(() => {\n getAndSetListItemHeight();\n\n window.addEventListener(\"resize\", getAndSetListItemHeight);\n\n return () => {\n window.removeEventListener(\"resize\", getAndSetListItemHeight);\n };\n });\n\n function getAndSetListItemHeight(): void {\n const firstListItemtHeight = getFirstItemHeight(attendanceItemsRef.current);\n\n setListItemHeight(firstListItemtHeight);\n }\n\n function getFirstItemHeight(attendanceItemsRef: HTMLDivElement[]): number {\n return attendanceItemsRef[0].offsetHeight;\n }\n\n const renderFakeStack = (numberOfAttendanceItems: number): JSX.Element => {\n if (isMobile || numberOfAttendanceItems === 1 || isGroupExpanded) return;\n\n const cardClassName =\n \"absolute w-full top-0 left-0 border-neutral-300 border-2 rounded-xl bg-shade-50 origin-top-left\";\n\n const style = {\n height: `${listItemHeight}px`,\n };\n\n const stack = [\n ,\n ,\n ];\n\n if (numberOfAttendanceItems === 2) {\n return stack[0];\n }\n\n return <>{stack};\n };\n\n const listContainerHeight =\n attendances.length === 1\n ? listItemHeight + FAKE_STACK_VISIBLE_HEIGHT\n : listItemHeight + FAKE_STACK_VISIBLE_HEIGHT * 2;\n const desktopStyle = {\n height:\n isGroupExpanded || attendances.length === 1\n ? \"auto\"\n : `${listContainerHeight}px`,\n };\n const mobileStyle = {\n height: isGroupExpanded ? \"auto\" : `${listItemHeight}px`,\n };\n\n return (\n
    \n {renderFakeStack(attendances.length)}\n {attendances.map((attendance: AttendanceType, index) => (\n (attendanceItemsRef.current[index] = el)}\n onExpandList={onExpandList}\n onAttendanceToggle={onAttendanceToggle}\n checkedAttendances={checkedAttendances}\n workedThroughBreak={attendance.workedThroughBreak}\n />\n ))}\n
    \n );\n}\n\nexport { FlaggedAttendancesGroupList };\n","import { useRef, useEffect, ChangeEvent } from \"react\";\n\ninterface CheckboxProps {\n name?: string;\n onChange?: (event: ChangeEvent) => void;\n form?: string;\n state: \"CHECKED\" | \"INDETERMINATE\" | \"EMPTY\";\n}\n\nexport const CheckboxWithIndeterminateState = ({\n name,\n state = \"EMPTY\",\n onChange,\n form,\n}: CheckboxProps): JSX.Element => {\n const handleChange = (event: ChangeEvent) => {\n if (onChange) {\n onChange(event);\n }\n };\n\n const checkRef = useRef(null);\n\n useEffect(() => {\n if (checkRef) {\n checkRef.current.checked = state === \"CHECKED\";\n checkRef.current.indeterminate = state === \"INDETERMINATE\";\n }\n });\n\n return (\n \n );\n};\n","import { gaClickTrack } from \"helpers/ga_event_tracking\";\nimport React, { ChangeEvent } from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport DownArrow from \"@assets/icons/down.svg\";\n\nimport { CommunityMemberAvatar } from \"@/client_app/components/CommunityMemberAvatar\";\nimport { CheckboxWithIndeterminateState } from \"@/ui/CheckboxWithIndeterminateState\";\n\ninterface FlaggedAttendancesGroupProfileProps {\n positionTitle: string;\n profileImageUrl: string;\n fullName: string;\n totalHoursWorked: string;\n attendanceCount: number;\n isExpanded: boolean;\n isMobile: boolean;\n onExpandList: (event: React.MouseEvent) => void;\n selectAllToggle: () => void;\n selectedAttendanceCount: number;\n}\n\nexport const FlaggedAttendancesGroupProfile = ({\n positionTitle,\n profileImageUrl,\n fullName,\n totalHoursWorked,\n attendanceCount,\n isExpanded,\n isMobile,\n onExpandList,\n selectAllToggle,\n selectedAttendanceCount,\n}: FlaggedAttendancesGroupProfileProps): JSX.Element => {\n let checkboxState;\n if (selectedAttendanceCount === attendanceCount) {\n checkboxState = \"CHECKED\";\n } else if (selectedAttendanceCount > 0) {\n checkboxState = \"INDETERMINATE\";\n } else {\n checkboxState = \"EMPTY\";\n }\n\n function gaEventTracking(event: ChangeEvent) {\n const target: HTMLInputElement = event.target as HTMLInputElement;\n gaClickTrack({\n checkbox_label: \"Select Individual Flagged Weployees\",\n checkbox_name: \"selectIndividualFlaggedWeployees\",\n checked: target.checked.toString(),\n });\n }\n\n function handleChange(event: ChangeEvent) {\n gaEventTracking(event);\n selectAllToggle();\n }\n\n return (\n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n {fullName} ({attendanceCount})\n
    \n
    {positionTitle}
    \n
    \n Total Hours Worked: {totalHoursWorked}\n
    \n {isMobile && attendanceCount > 1 && (\n
    \n \n
    \n )}\n
    \n
    \n );\n};\n","import { useState, Dispatch } from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport UpArrow from \"@assets/icons/up.svg\";\nimport { Attendance as AttendanceType } from \"@graphql/client_app/types\";\n\nimport { FlaggedAttendancesGroupList } from \"./FlaggedAttendancesGroupList\";\nimport { FlaggedAttendancesGroupProfile } from \"./FlaggedAttendancesGroupProfile\";\n\nimport {\n SelectionReducerAction,\n SelectionActionType,\n} from \"@/client_app/features/timesheetApproval/utils/operations\";\nimport { useMediaQuery } from \"@/client_app/hooks/useMediaQuery\";\n\ninterface FlaggedAttendancesGroupContainerProps {\n positionTitle: string;\n profileImageUrl: string;\n fullName: string;\n totalHoursWorked: string;\n attendances: AttendanceType[];\n allSelectedDispatch: Dispatch;\n selectedAttendancesIds?: string[];\n}\n\nfunction FlaggedAttendancesGroupContainer({\n positionTitle,\n profileImageUrl,\n fullName,\n attendances,\n totalHoursWorked,\n allSelectedDispatch,\n selectedAttendancesIds = [],\n}: FlaggedAttendancesGroupContainerProps): JSX.Element {\n const [isExpanded, setIsExpanded] = useState(false);\n const isMobile = useMediaQuery(\"(max-width: 768px)\");\n\n function handleExpandList(event: React.MouseEvent): void {\n event.preventDefault();\n setIsExpanded(!isExpanded);\n }\n\n function handleSelectAllGroupedToggle(): void {\n if (selectedAttendancesIds.length < attendances.length) {\n const unCheckedAttendancesIds = attendances.reduce(\n (acc: string[], attendance: AttendanceType) => {\n if (!selectedAttendancesIds.includes(attendance.id)) {\n acc.push(attendance.id);\n }\n\n return acc;\n },\n []\n );\n allSelectedDispatch({\n type: SelectionActionType.ADD_TO_SELECTED,\n attendanceIds: unCheckedAttendancesIds,\n });\n } else {\n const attendancesIds = attendances.map((att) => {\n return att.id;\n });\n allSelectedDispatch({\n type: SelectionActionType.REMOVE_FROM_SELECTED,\n attendanceIds: attendancesIds,\n });\n }\n }\n\n function handleAttendanceToggle(attendanceId): void {\n if (selectedAttendancesIds.includes(attendanceId)) {\n allSelectedDispatch({\n type: SelectionActionType.REMOVE_FROM_SELECTED,\n attendanceIds: [attendanceId],\n });\n } else {\n allSelectedDispatch({\n type: SelectionActionType.ADD_TO_SELECTED,\n attendanceIds: [attendanceId],\n });\n }\n }\n\n return (\n
    \n
    \n \n
    \n {isExpanded && !isMobile && (\n
    \n \n
    \n )}\n \n
    \n
    \n
    \n );\n}\n\nexport { FlaggedAttendancesGroupContainer };\n","export const FlaggedAttendancesGroupHeading = (): JSX.Element => {\n return (\n
    \n
    \n
    \n

    \n

    DATE

    \n

    HOURS

    \n

    BREAKS

    \n

    DAILY TOTAL

    \n

    \n
    \n
    \n );\n};\n","import i18next from \"i18next\";\nimport \"@/i18n/config\";\nimport { useCallback } from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport ComputerAndPlantImageUrl from \"@assets/illustrations/computer_and_plant.svg\";\n\ninterface NoAttendancesMessageProps {\n noSearchResults: boolean;\n noTimesheetsImageUrl: string;\n}\n\nexport const NoAttendancesMessage = ({\n noSearchResults,\n noTimesheetsImageUrl,\n}: NoAttendancesMessageProps): JSX.Element => {\n let heading;\n let textContent;\n\n if (noSearchResults) {\n heading = \"No matching timesheets found\";\n textContent = \"Try searching for someone different\";\n } else {\n heading = \"No timesheets to approve\";\n textContent = i18next.t(\"clientApp.noAttendancesMessage\", {\n terminologyEmployee: window.terminologyEmployee,\n });\n }\n\n const customStyles = {\n height: \"200px\",\n width: \"100%\",\n };\n\n const renderImage = useCallback(() => {\n if (noTimesheetsImageUrl) {\n return (\n \n );\n } else {\n return ;\n }\n }, [noTimesheetsImageUrl]);\n\n return (\n
    \n
    \n {renderImage()}\n

    {heading}

    \n

    {textContent}

    \n
    \n
    \n );\n};\n","import { gaClickTrack } from \"helpers/ga_event_tracking\";\nimport { tenantPath } from \"helpers/tenant_path\";\nimport { pick, first } from \"lodash\";\nimport { useState, Dispatch } from \"react\";\n\nimport graphqlClient from \"@graphql/client_app/client\";\nimport { useFetchFlaggedAttendancesQuery } from \"@graphql/client_app/types\";\n\nimport { SUBMITTED_ATTENDANCES_REPORT_PATH } from \"@/client_app/config\";\n\nimport { ApproveAttendancesPreview } from \"./ApproveAttendancesPreview\";\nimport { ChangeRequestPreview } from \"./ChangeRequestPreview\";\nimport { FlaggedAttendancesGroupContainer } from \"./FlaggedAttendancesGroupContainer\";\nimport { FlaggedAttendancesGroupHeading } from \"./FlaggedAttendancesGroupHeading\";\nimport { NoAttendancesMessage } from \"./NoAttendancesMessage\";\nimport { ActionsType } from \"./SubmittedAttendancesContainer\";\n\nimport {\n getTotalHoursAndMinutesWorked,\n groupAttendancesByPosition,\n groupAttendancesIdsByPosition,\n SelectionActionType,\n SelectionReducerAction,\n} from \"@/client_app/features/timesheetApproval/utils/operations\";\nimport { PrimaryButton, SecondaryButton, DownloadButton } from \"@/ui/buttons\";\nimport { Checkbox } from \"@/ui/Checkbox\";\n\ninterface FlaggedAttendancesContainerProps {\n communityMemberName: string;\n managerId: string;\n selectedAttendancesIds: string[];\n allSelectedDispatch: Dispatch;\n refetchAllFlaggedAttendances: () => void;\n noTimesheetsImageUrl: string;\n}\n\nexport const FlaggedAttendancesContainer = ({\n communityMemberName,\n managerId,\n selectedAttendancesIds,\n allSelectedDispatch,\n refetchAllFlaggedAttendances,\n noTimesheetsImageUrl,\n}: FlaggedAttendancesContainerProps): JSX.Element => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [action, setAction] = useState(null);\n\n const { isFetching, data, error, refetch } = useFetchFlaggedAttendancesQuery(\n graphqlClient,\n { communityMemberName, managerId }\n );\n\n if (error) {\n return
    Error!
    ;\n }\n\n if (isFetching) {\n const screenHeight = screen.height;\n const loaderStyle = { height: `${screenHeight}px` };\n return
    Loading...
    ;\n }\n\n const groupedAttendancesByPosition = groupAttendancesByPosition(\n data.flaggedAttendances\n );\n\n const selectedAttendances = data.flaggedAttendances.filter((att) => {\n return selectedAttendancesIds.includes(att.id);\n });\n\n const groupedSelectedAttendancesIdsByPosition =\n groupAttendancesIdsByPosition(selectedAttendances);\n\n const disableChangeRequestButton =\n selectedAttendancesIds.length === 0 ||\n selectedAttendances.some(\n (attendance) =>\n attendance.workedBy.id !== first(selectedAttendances).workedBy.id\n );\n\n function renderAttendances(): JSX.Element {\n return (\n <>\n \n {Object.entries(groupedAttendancesByPosition).map(\n ([positionId, attendances]): JSX.Element => {\n const {\n position: { title },\n workedBy: { profileImageUrl, fullName },\n } = attendances[0];\n\n return (\n \n );\n }\n )}\n \n );\n }\n\n const handleApproval = () => {\n setIsModalOpen(true);\n setAction(\"APPROVE\");\n };\n\n const handleChangeRequest = () => {\n setIsModalOpen(true);\n setAction(\"CHANGE_REQUEST\");\n };\n\n const handleBack = () => setIsModalOpen(false);\n\n function handleFormSubmissionSuccess() {\n setIsModalOpen(false);\n allSelectedDispatch({ type: SelectionActionType.REMOVE_ALL_ATTENDANCES });\n refetch();\n refetchAllFlaggedAttendances();\n }\n\n const handleSelectAllToggle = (): void => {\n if (selectedAttendancesIds.length < data.flaggedAttendances.length) {\n const idsToAdd = data.flaggedAttendances.map((att) => {\n return att.id;\n });\n allSelectedDispatch({\n type: SelectionActionType.ADD_ALL_ATTENDANCES,\n attendanceIds: idsToAdd,\n });\n gaClickCheckboxEventTracking(SelectionActionType.ADD_ALL_ATTENDANCES);\n } else {\n allSelectedDispatch({\n type: SelectionActionType.REMOVE_ALL_ATTENDANCES,\n });\n gaClickCheckboxEventTracking(SelectionActionType.REMOVE_ALL_ATTENDANCES);\n }\n };\n\n const handleDownloadCSV = () => {\n const csrf = document\n .querySelector(\"meta[name='csrf-token']\")\n .getAttribute(\"content\");\n fetch(tenantPath(SUBMITTED_ATTENDANCES_REPORT_PATH), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": csrf,\n },\n body: JSON.stringify({ attendance_ids: selectedAttendancesIds }),\n }).then((response) => {\n if (response.ok) {\n response.blob().then((body) => {\n const csvData = new Blob([body], { type: \"text/csv\" });\n const a = document.createElement(\"a\");\n document.body.appendChild(a);\n const csvUrl = URL.createObjectURL(csvData);\n a.href = csvUrl;\n a.download = `selected_attendances_report_${new Date().toISOString()}.csv`;\n a.click();\n URL.revokeObjectURL(a.href);\n a.remove();\n });\n }\n });\n gaEventTracking(\"DOWNLOAD CSV\");\n };\n\n const gaEventTracking = (text: string) => {\n gaClickTrack({\n click_text: text,\n });\n };\n\n const gaClickCheckboxEventTracking = (checkedValue: string) => {\n gaClickTrack({\n checkbox_label: \"Select All Flagged Weployees\",\n checkbox_name: \"selectAllFlaggedWeployees\",\n checked: checkedValue,\n });\n };\n\n {\n return (\n <>\n {isModalOpen && action === \"APPROVE\" && (\n \n )}\n {isModalOpen && action === \"CHANGE_REQUEST\" && (\n \n pick(attendance, [\n \"id\",\n \"additionalNotes\",\n \"belowMinimumEngagementReasonToHuman\",\n \"breaks\",\n \"duration\",\n \"finishTime\",\n \"hasPublicHoliday\",\n \"minimumEngagementDuration\",\n \"minimumEngagementRequired\",\n \"resubmitted\",\n \"startTime\",\n \"workedOnDate\",\n ])\n )}\n />\n )}\n
    \n
    \n
    \n \n

    \n {selectedAttendances.length} Selected\n

    \n

    \n Total hours selected:{\" \"}\n {getTotalHoursAndMinutesWorked(selectedAttendances)}\n

    \n
    \n
    \n \n \n \n
    \n
    \n
    \n {data.flaggedAttendances.length > 0 ? (\n renderAttendances()\n ) : (\n \n )}\n
    \n
    \n \n );\n }\n};\n","import { debounce } from \"lodash\";\nimport { useState, useCallback } from \"react\";\n\nexport const useDebouncedState = (\n initialState: string,\n wait: number\n): [string, (value: string) => void] => {\n const [state, setState] = useState(initialState);\n const debounceFn = useCallback(debounce(setState, wait), []);\n return [state, debounceFn];\n};\n","import { useReducer } from \"react\";\n\nimport { useAttendanceApprovalOutletContext } from \"./AttendanceApproval\";\nimport { FilterByWeployee } from \"./FilterByWeployee\";\nimport { FlaggedAttendancesContainer } from \"./FlaggedAttendancesContainer\";\n\nimport { Form } from \"@/client_app/components/Form\";\nimport { selectedAttendancesReducer } from \"@/client_app/features/timesheetApproval/utils/operations\";\nimport { useDebouncedState } from \"@/hooks/useDebouncedState\";\n\nexport const FlaggedAttendances = (): JSX.Element => {\n const { selectedManagerId, refetchAllFlaggedAttendances } =\n useAttendanceApprovalOutletContext();\n const [communityMemberName, setCommunityMemberName] = useDebouncedState(\n \"\",\n 500\n );\n const [selectedAttendancesIds, selectedDispatch] = useReducer(\n selectedAttendancesReducer,\n []\n );\n\n return (\n
    \n
    \n \n setCommunityMemberName(name)\n }\n />\n \n \n
    \n );\n};\n","import clsx from \"clsx\";\nimport { gaClickTrack } from \"helpers/ga_event_tracking\";\nimport * as React from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport DownArrow from \"@assets/icons/down.svg\";\nimport { Attendance as AttendanceType } from \"@graphql/client_app/types\";\n\nimport {\n minimumEngagementChip,\n publicHolidayChip,\n updatedTimesheetChip,\n workedThroughBreakChip,\n} from \"@/client_app/features/timesheetApproval/components/FlaggedAttendancesGroupListItem\";\nimport {\n getBreakTimes,\n getDailyTotal,\n} from \"@/client_app/features/timesheetApproval/utils/operations\";\nimport { Checkbox } from \"@/ui/Checkbox\";\n\ninterface SubmittedAttendancesGroupListItemProps {\n attendance: AttendanceType;\n attendancesCount: number;\n stackOrder: number;\n isExpanded: boolean;\n isMobile: boolean;\n minimumEngagementRequired: boolean;\n belowMinimumEngagementReasonToHuman: string;\n humanReadableMinimumEngagementDuration: string;\n workedThroughBreak: boolean;\n hasPublicHoliday: boolean;\n isResubmitted: boolean;\n onExpandList: (event: React.MouseEvent) => void;\n onAttendanceToggle: (attendanceId: string) => void;\n checkedAttendances: string[];\n}\n\nexport const SubmittedAttendancesGroupListItem = React.forwardRef(\n (\n {\n attendance,\n attendancesCount,\n stackOrder,\n isExpanded,\n isMobile,\n minimumEngagementRequired,\n belowMinimumEngagementReasonToHuman,\n isResubmitted,\n humanReadableMinimumEngagementDuration,\n workedThroughBreak,\n hasPublicHoliday,\n onExpandList,\n onAttendanceToggle,\n checkedAttendances,\n }: SubmittedAttendancesGroupListItemProps,\n ref: React.Ref\n ) => {\n const [showAdditionalNotes, setShowAdditionalNotes] = React.useState(false);\n const cellClassNames = \"col-span-full md:col-span-2\";\n const style = {\n transform: isExpanded\n ? \"translateY(0%)\"\n : `translateY(${(stackOrder - 1) * -100}%)`,\n };\n\n function gaEventTracking(clickText: string) {\n gaClickTrack({\n click_text: clickText,\n });\n }\n\n function handleViewAllShifts(event: React.MouseEvent): void {\n onExpandList(event);\n gaEventTracking(\"VIEW ALL SHIFTS\");\n }\n\n function renderActionCellContent(\n attendancesCount: number,\n isExpanded: boolean\n ): JSX.Element {\n if (attendancesCount > 1 && !isExpanded) {\n return (\n \n \n VIEW ALL SHIFTS\n \n \n \n );\n }\n }\n\n return (\n 1 && !isExpanded,\n \"opacity-1\": isExpanded,\n }\n )}\n >\n
    \n
    \n {isExpanded && (\n {\n onAttendanceToggle(attendance.id);\n }}\n />\n )}\n
    \n
    \n {attendance.workedOnDate}\n
    \n
    \n Hours: \n \n {`${attendance.startTime} - ${attendance.finishTime}`}\n \n
    \n
    \n Breaks: \n \n {getBreakTimes(attendance.breaks).map((breakTime, index) => (\n
    {breakTime}
    \n ))}\n
    \n
    \n
    \n Daily Total: \n \n {getDailyTotal(attendance.duration, attendance.breaks)}\n \n
    \n
    \n {renderActionCellContent(attendancesCount, isExpanded)}\n
    \n {(minimumEngagementRequired ||\n hasPublicHoliday ||\n isResubmitted ||\n workedThroughBreak ||\n !!attendance.additionalNotes) && (\n
    \n
    \n
    \n {minimumEngagementRequired && !isMobile && (\n
    \n
    \n
    \n {minimumEngagementChip}\n
    \n \n Minimum engagment reason:{\" \"}\n \n {belowMinimumEngagementReasonToHuman}\n
    \n
    \n
    \n
    \n {humanReadableMinimumEngagementDuration}\n
    \n
    \n )}\n {hasPublicHoliday && !isMobile && (\n
    {publicHolidayChip}
    \n )}\n {isResubmitted && !isMobile && (\n
    {updatedTimesheetChip}
    \n )}\n {workedThroughBreak && !isMobile && (\n
    {workedThroughBreakChip}
    \n )}\n {minimumEngagementRequired && isMobile && (\n
    \n \n Minimum engagment reason:{\" \"}\n \n {belowMinimumEngagementReasonToHuman}\n
    \n )}\n {!!attendance.additionalNotes && (\n
    \n Additional Notes:{\" \"}\n {attendance.additionalNotes}{\" \"}\n
    \n )}\n
    \n
    \n )}\n
    \n \n );\n }\n);\n","import React, { useState, useEffect, useRef } from \"react\";\n\nimport { Attendance as AttendanceType } from \"@graphql/client_app/types\";\n\nimport { SubmittedAttendancesGroupListItem } from \"./SubmittedAttendancesGroupListItem\";\n\ninterface SubmittedAttendancesGroupListProps {\n attendances: AttendanceType[];\n isExpanded: boolean;\n isMobile: boolean;\n onExpandList: (event: React.MouseEvent) => void;\n onAttendanceToggle: (attendanceId: string) => void;\n checkedAttendances: string[];\n}\n\nconst FAKE_STACK_VISIBLE_HEIGHT = 10; // 10px\n\nexport const SubmittedAttendancesGroupList = ({\n attendances,\n isExpanded = false,\n isMobile,\n onExpandList,\n onAttendanceToggle,\n checkedAttendances,\n}: SubmittedAttendancesGroupListProps): JSX.Element => {\n const attendanceItemsRef = useRef([]);\n\n const [listItemHeight, setListItemHeight] = useState(0);\n\n useEffect(() => {\n getAndSetListItemHeight();\n\n window.addEventListener(\"resize\", getAndSetListItemHeight);\n\n return () => {\n window.removeEventListener(\"resize\", getAndSetListItemHeight);\n };\n });\n\n function getAndSetListItemHeight() {\n const firstItemHeight = attendanceItemsRef.current[0].offsetHeight;\n\n setListItemHeight(firstItemHeight);\n }\n\n const renderFakeStack = (numberOfAttendanceItems: number): JSX.Element => {\n if (isMobile || numberOfAttendanceItems === 1 || isExpanded) return;\n\n const cardClassName =\n \"absolute w-full top-0 left-0 border-neutral-300 border-2 rounded-xl bg-shade-50 origin-top-left\";\n\n const style = {\n height: `${listItemHeight}px`,\n };\n\n const stack = [\n ,\n ,\n ];\n\n if (numberOfAttendanceItems === 2) {\n return stack[0];\n }\n\n return <>{stack};\n };\n\n const listContainerHeight =\n attendances.length === 1\n ? listItemHeight + FAKE_STACK_VISIBLE_HEIGHT\n : listItemHeight + FAKE_STACK_VISIBLE_HEIGHT * 2;\n const desktopStyle = {\n height:\n isExpanded || attendances.length === 1\n ? \"auto\"\n : `${listContainerHeight}px`,\n };\n const mobileStyle = {\n height: isExpanded ? \"auto\" : `${listItemHeight}px`,\n };\n\n return (\n
    \n {renderFakeStack(attendances.length)}\n {attendances.map((attendance: AttendanceType, index) => (\n (attendanceItemsRef.current[index] = el)}\n onExpandList={onExpandList}\n onAttendanceToggle={onAttendanceToggle}\n checkedAttendances={checkedAttendances}\n />\n ))}\n
    \n );\n};\n","import { gaClickTrack } from \"helpers/ga_event_tracking\";\nimport { ChangeEvent } from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport DownArrow from \"@assets/icons/down.svg\";\n\nimport { CommunityMemberAvatar } from \"@/client_app/components/CommunityMemberAvatar\";\nimport { CheckboxWithIndeterminateState } from \"@/ui/CheckboxWithIndeterminateState\";\n\ninterface SubmittedAttendancesGroupProfileProps {\n positionTitle: string;\n profileImageUrl: string;\n fullName: string;\n totalHoursWorked: string;\n attendanceCount: number;\n isExpanded: boolean;\n isMobile: boolean;\n onExpandList: (event: React.MouseEvent) => void;\n selectAllToggle: () => void;\n selectedAttendanceCount: number;\n}\n\nexport const SubmittedAttendancesGroupProfile = ({\n positionTitle,\n profileImageUrl,\n fullName,\n totalHoursWorked,\n attendanceCount,\n isExpanded,\n isMobile,\n onExpandList,\n selectAllToggle,\n selectedAttendanceCount,\n}: SubmittedAttendancesGroupProfileProps): JSX.Element => {\n let checkboxState;\n if (selectedAttendanceCount === attendanceCount) {\n checkboxState = \"CHECKED\";\n } else if (selectedAttendanceCount > 0) {\n checkboxState = \"INDETERMINATE\";\n } else {\n checkboxState = \"EMPTY\";\n }\n\n function gaEventTracking(event: ChangeEvent) {\n const target: HTMLInputElement = event.target as HTMLInputElement;\n gaClickTrack({\n checkbox_label: \"Select Individual Submitted Weployees\",\n checkbox_name: \"selectIndividualSubmittedWeployees\",\n checked: target.checked.toString(),\n });\n }\n\n function handleChange(event: ChangeEvent) {\n gaEventTracking(event);\n selectAllToggle();\n }\n\n return (\n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n {fullName} ({attendanceCount})\n
    \n
    {positionTitle}
    \n
    \n Total Hours Worked: {totalHoursWorked}\n
    \n {isMobile && attendanceCount > 1 && (\n
    \n \n
    \n )}\n
    \n
    \n );\n};\n","import { useState, Dispatch } from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport UpArrow from \"@assets/icons/up.svg\";\nimport { Attendance as AttendanceType } from \"@graphql/client_app/types\";\n\nimport { SubmittedAttendancesGroupList } from \"./SubmittedAttendancesGroupList\";\nimport { SubmittedAttendancesGroupProfile } from \"./SubmittedAttendancesGroupProfile\";\n\nimport {\n SelectionReducerAction,\n SelectionActionType,\n} from \"@/client_app/features/timesheetApproval/utils/operations\";\nimport { useMediaQuery } from \"@/client_app/hooks/useMediaQuery\";\n\ninterface SubmittedAttendancesGroupContainerProps {\n positionTitle: string;\n profileImageUrl: string;\n fullName: string;\n totalHoursWorked: string;\n attendances: AttendanceType[];\n allSelectedDispatch: Dispatch;\n selectedAttendancesIds?: string[];\n}\n\nexport const SubmittedAttendancesGroupContainer = ({\n positionTitle,\n profileImageUrl,\n fullName,\n attendances,\n totalHoursWorked,\n allSelectedDispatch,\n selectedAttendancesIds = [],\n}: SubmittedAttendancesGroupContainerProps): JSX.Element => {\n const [isExpanded, setIsExpanded] = useState(false);\n const isMobile = useMediaQuery(\"(max-width: 768px)\");\n\n function handleExpandList(event: React.MouseEvent): void {\n event.preventDefault();\n setIsExpanded(!isExpanded);\n }\n\n function handleSelectAllGroupedToggle(): void {\n if (selectedAttendancesIds.length < attendances.length) {\n const unCheckedAttendancesIds = attendances.reduce(\n (acc: string[], attendance: AttendanceType) => {\n if (!selectedAttendancesIds.includes(attendance.id)) {\n acc.push(attendance.id);\n }\n\n return acc;\n },\n []\n );\n allSelectedDispatch({\n type: SelectionActionType.ADD_TO_SELECTED,\n attendanceIds: unCheckedAttendancesIds,\n });\n } else {\n const attendancesIds = attendances.map((att) => {\n return att.id;\n });\n allSelectedDispatch({\n type: SelectionActionType.REMOVE_FROM_SELECTED,\n attendanceIds: attendancesIds,\n });\n }\n }\n\n function handleAttendanceToggle(attendanceId): void {\n if (selectedAttendancesIds.includes(attendanceId)) {\n allSelectedDispatch({\n type: SelectionActionType.REMOVE_FROM_SELECTED,\n attendanceIds: [attendanceId],\n });\n } else {\n allSelectedDispatch({\n type: SelectionActionType.ADD_TO_SELECTED,\n attendanceIds: [attendanceId],\n });\n }\n }\n\n return (\n
    \n
    \n \n
    \n {isExpanded && !isMobile && (\n
    \n \n
    \n )}\n \n
    \n
    \n
    \n );\n};\n","export const SubmittedAttendancesGroupHeading = (): JSX.Element => {\n return (\n
    \n
    \n
    \n

    \n

    DATE

    \n

    HOURS

    \n

    BREAKS

    \n

    DAILY TOTAL

    \n

    \n
    \n
    \n );\n};\n","import { gaClickTrack } from \"helpers/ga_event_tracking\";\nimport { tenantPath } from \"helpers/tenant_path\";\nimport { pick, first } from \"lodash\";\nimport { useState, Dispatch } from \"react\";\n\nimport graphqlClient from \"@graphql/client_app/client\";\nimport { useFetchSubmittedAttendancesQuery } from \"@graphql/client_app/types\";\n\nimport { SUBMITTED_ATTENDANCES_REPORT_PATH } from \"@/client_app/config\";\n\nimport { ApproveAttendancesPreview } from \"./ApproveAttendancesPreview\";\nimport { ChangeRequestPreview } from \"./ChangeRequestPreview\";\nimport { NoAttendancesMessage } from \"./NoAttendancesMessage\";\nimport { SubmittedAttendancesGroupContainer } from \"./SubmittedAttendancesGroupContainer\";\nimport { SubmittedAttendancesGroupHeading } from \"./SubmittedAttendancesGroupHeading\";\n\nimport {\n getTotalHoursAndMinutesWorked,\n groupAttendancesByPosition,\n groupAttendancesIdsByPosition,\n SelectionActionType,\n SelectionReducerAction,\n} from \"@/client_app/features/timesheetApproval/utils/operations\";\nimport { PrimaryButton, SecondaryButton, DownloadButton } from \"@/ui/buttons\";\nimport { Checkbox } from \"@/ui/Checkbox\";\n\ninterface SubmittedAttendancesContainerProps {\n communityMemberName: string;\n managerId: string;\n selectedAttendancesIds: string[];\n allSelectedDispatch: Dispatch;\n refetchAllSubmittedAttendances: () => void;\n noTimesheetsImageUrl: string;\n}\n\nexport type ActionsType = \"APPROVE\" | \"CHANGE_REQUEST\" | null;\n\nexport const SubmittedAttendancesContainer = ({\n communityMemberName,\n managerId,\n selectedAttendancesIds,\n allSelectedDispatch,\n refetchAllSubmittedAttendances,\n noTimesheetsImageUrl,\n}: SubmittedAttendancesContainerProps): JSX.Element => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [action, setAction] = useState(null);\n\n const { isFetching, data, error, refetch } =\n useFetchSubmittedAttendancesQuery(graphqlClient, {\n communityMemberName,\n managerId,\n });\n\n if (error) {\n return
    Error!
    ;\n }\n\n if (isFetching) {\n const screenHeight = screen.height;\n const loaderStyle = { height: `${screenHeight}px` };\n return
    Loading...
    ;\n }\n\n const groupedAttendancesByPosition = groupAttendancesByPosition(\n data.submittedAttendances\n );\n\n const selectedAttendances = data.submittedAttendances.filter((att) => {\n return selectedAttendancesIds.includes(att.id);\n });\n\n const groupedSelectedAttendancesIdsByPosition =\n groupAttendancesIdsByPosition(selectedAttendances);\n\n const disableChangeRequestButton =\n selectedAttendancesIds.length === 0 ||\n selectedAttendances.some(\n (attendance) =>\n attendance.workedBy.id !== first(selectedAttendances).workedBy.id\n );\n\n function renderAttendances(): JSX.Element {\n return (\n <>\n \n {Object.entries(groupedAttendancesByPosition).map(\n ([positionId, attendances]): JSX.Element => {\n const {\n position: { title },\n workedBy: { profileImageUrl, fullName },\n } = attendances[0];\n\n return (\n \n );\n }\n )}\n \n );\n }\n\n const handleApproval = () => {\n setIsModalOpen(true);\n setAction(\"APPROVE\");\n };\n\n const handleChangeRequest = () => {\n setIsModalOpen(true);\n setAction(\"CHANGE_REQUEST\");\n };\n\n const handleBack = () => setIsModalOpen(false);\n\n function handleFormSubmissionSuccess() {\n setIsModalOpen(false);\n allSelectedDispatch({ type: SelectionActionType.REMOVE_ALL_ATTENDANCES });\n refetch();\n refetchAllSubmittedAttendances();\n }\n\n const handleSelectAllToggle = (): void => {\n if (selectedAttendancesIds.length < data.submittedAttendances.length) {\n const idsToAdd = data.submittedAttendances.map((att) => {\n return att.id;\n });\n allSelectedDispatch({\n type: SelectionActionType.ADD_ALL_ATTENDANCES,\n attendanceIds: idsToAdd,\n });\n\n gaClickCheckboxEventTracking(SelectionActionType.ADD_ALL_ATTENDANCES);\n } else {\n allSelectedDispatch({\n type: SelectionActionType.REMOVE_ALL_ATTENDANCES,\n });\n\n gaClickCheckboxEventTracking(SelectionActionType.REMOVE_ALL_ATTENDANCES);\n }\n };\n\n const handleDownloadCSV = () => {\n const csrf = document\n .querySelector(\"meta[name='csrf-token']\")\n .getAttribute(\"content\");\n fetch(tenantPath(SUBMITTED_ATTENDANCES_REPORT_PATH), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": csrf,\n },\n body: JSON.stringify({ attendance_ids: selectedAttendancesIds }),\n }).then((response) => {\n if (response.ok) {\n response.blob().then((body) => {\n const csvData = new Blob([body], { type: \"text/csv\" });\n const a = document.createElement(\"a\");\n document.body.appendChild(a);\n const csvUrl = URL.createObjectURL(csvData);\n a.href = csvUrl;\n a.download = `selected_attendances_report_${new Date().toISOString()}.csv`;\n a.click();\n URL.revokeObjectURL(a.href);\n a.remove();\n });\n }\n });\n\n gaClickEventTracking(\"DOWNLOAD CSV\");\n };\n\n const gaClickEventTracking = (text: string) => {\n gaClickTrack({\n click_text: text,\n });\n };\n\n const gaClickCheckboxEventTracking = (checkedValue: string) => {\n gaClickTrack({\n checkbox_label: \"Select All Submitted Weployees\",\n checkbox_name: \"selectAllSubmittedWeployees\",\n checked: checkedValue,\n });\n };\n\n {\n return (\n <>\n {isModalOpen && action === \"APPROVE\" && (\n \n )}\n {isModalOpen && action === \"CHANGE_REQUEST\" && (\n \n pick(attendance, [\n \"id\",\n \"additionalNotes\",\n \"belowMinimumEngagementReasonToHuman\",\n \"breaks\",\n \"duration\",\n \"finishTime\",\n \"hasPublicHoliday\",\n \"minimumEngagementDuration\",\n \"minimumEngagementRequired\",\n \"resubmitted\",\n \"startTime\",\n \"workedOnDate\",\n ])\n )}\n />\n )}\n
    \n
    \n
    \n \n

    \n {selectedAttendances.length} Selected\n

    \n

    \n Total hours selected:{\" \"}\n {getTotalHoursAndMinutesWorked(selectedAttendances)}\n

    \n
    \n
    \n \n \n \n
    \n
    \n
    \n {data.submittedAttendances.length > 0 ? (\n renderAttendances()\n ) : (\n \n )}\n
    \n
    \n \n );\n }\n};\n","import { useReducer } from \"react\";\n\nimport { useAttendanceApprovalOutletContext } from \"./AttendanceApproval\";\nimport { FilterByWeployee } from \"./FilterByWeployee\";\nimport { SubmittedAttendancesContainer } from \"./SubmittedAttendancesContainer\";\n\nimport { Form } from \"@/client_app/components/Form\";\nimport { selectedAttendancesReducer } from \"@/client_app/features/timesheetApproval/utils/operations\";\nimport { useDebouncedState } from \"@/hooks/useDebouncedState\";\n\nexport const SubmittedAttendances = (): JSX.Element => {\n const { selectedManagerId, refetchAllSubmittedAttendances } =\n useAttendanceApprovalOutletContext();\n const [communityMemberName, setCommunityMemberName] = useDebouncedState(\n \"\",\n 500\n );\n const [selectedAttendancesIds, selectedDispatch] = useReducer(\n selectedAttendancesReducer,\n []\n );\n\n return (\n
    \n
    \n \n setCommunityMemberName(name)\n }\n />\n \n \n
    \n );\n};\n","import { Route, Navigate } from \"react-router-dom\";\n\nimport {\n ATTENDANCES_APPROVAL_PATH,\n SUBMITTED_ATTENDANCES_PATH,\n REVIEW_ATTENDANCES_PATH,\n APPROVAL_SUCCESS_PATH,\n APPROVAL_FAILURE_PATH,\n MONASH_ATTENDANCES_APPROVAL_PATH,\n MONASH_SUBMITTED_ATTENDANCES_PATH,\n MONASH_REVIEW_ATTENDANCES_PATH,\n MONASH_APPROVAL_SUCCESS_PATH,\n MONASH_APPROVAL_FAILURE_PATH,\n} from \"@/client_app/config\";\n\nimport { ApprovalFailure } from \"@/client_app/features/timesheetApproval/components/ApprovalFailure\";\nimport { ApprovalSuccess } from \"@/client_app/features/timesheetApproval/components/ApprovalSuccess\";\nimport { AttendanceApproval } from \"@/client_app/features/timesheetApproval/components/AttendanceApproval\";\nimport { FlaggedAttendances } from \"@/client_app/features/timesheetApproval/components/FlaggedAttendances\";\nimport { SubmittedAttendances } from \"@/client_app/features/timesheetApproval/components/SubmittedAttendances\";\n\nexport const timesheetApprovalRoutes = [\n }\n key='timesheetApprovalRoute'\n >\n }\n />\n }\n />\n } />\n } />\n } />\n ,\n];\nexport const monashTimesheetApprovalRoutes = [\n }\n key='timesheetApprovalRoute'\n >\n }\n />\n }\n />\n }\n />\n } />\n } />\n ,\n];\n","import { differenceInMonths } from \"date-fns\";\n\nexport const isFinishingSoon = (finishOn: string): boolean => {\n const finishOnDate = new Date(finishOn);\n const todaysDate = new Date(Date.now());\n\n return differenceInMonths(finishOnDate, todaysDate) < 1;\n};\n","import clsx from \"clsx\";\n\nimport { CommunityMemberAvatar } from \"@/client_app/components/CommunityMemberAvatar\";\nimport { isFinishingSoon } from \"@/client_app/features/weployees/utils/operations\";\nimport { Checkbox } from \"@/ui/Checkbox\";\n\ninterface CommunityMember {\n mobileNumber?: string;\n fullName: string;\n profileImageUrl?: string;\n}\n\ninterface ActivePositionListItemMobileProps {\n communityMember: CommunityMember;\n finishOn: string;\n startOn: string;\n title: string | JSX.Element;\n checked: boolean;\n newJobAcceptance: boolean;\n onChange: () => void;\n positionId: string;\n}\n\nconst ActivePositionListItemMobile = ({\n communityMember,\n finishOn,\n startOn,\n title,\n checked,\n newJobAcceptance,\n onChange,\n positionId,\n}: ActivePositionListItemMobileProps): JSX.Element => {\n const { fullName, mobileNumber, profileImageUrl } = communityMember;\n return (\n \n
    \n \n \n
    \n\n
    \n

    \n {fullName}\n {newJobAcceptance && (\n

    NEW
    \n )}\n
    \n

    \n

    {title}

    \n

    \n Start Date: \n {startOn}\n

    \n

    \n End Date: \n \n {finishOn}\n \n

    \n

    \n Contact: \n {mobileNumber}\n

    \n \n \n );\n};\n\nexport { ActivePositionListItemMobile };\n","import React, { useCallback } from \"react\";\nimport SVG from \"react-inlinesvg\";\nimport Modal from \"react-modal\";\n\nimport LeftURL from \"@assets/icons/left.svg\";\nimport PeppaURL from \"@assets/illustrations/peppa.svg\";\n\ninterface FullLayoutModalProps {\n isOpen: boolean;\n title: string;\n subTitle: string;\n closeModal?: () => void;\n children: React.ReactElement | React.ReactElement[];\n hideHeaderBackButton?: boolean;\n}\n\nModal.setAppElement(\"body\");\n\nexport const FullLayoutModal = ({\n isOpen,\n title,\n subTitle,\n children,\n closeModal,\n hideHeaderBackButton,\n}: FullLayoutModalProps): JSX.Element => {\n const customStyles = {\n content: {\n top: \"0\",\n left: \"0\",\n right: \"0\",\n bottom: \"0\",\n padding: \"0\",\n },\n };\n\n const renderBackButton = useCallback(() => {\n console.log(hideHeaderBackButton);\n if (hideHeaderBackButton) return;\n\n return (\n
    \n \n
    \n

    {title}

    \n
    {subTitle}
    \n
    \n
    \n );\n }, [hideHeaderBackButton]);\n return (\n \n
    \n
    \n
    \n {renderBackButton()}\n
    \n \n
    \n
    \n
    \n
    {children}
    \n
    \n
    \n );\n};\n","import clsx from \"clsx\";\nimport { tenantPath } from \"helpers/tenant_path\";\nimport i18next from \"i18next\";\nimport \"@/i18n/config\";\nimport { useState } from \"react\";\nimport Flatpickr from \"react-flatpickr\";\nimport { useForm } from \"react-hook-form\";\nimport SVG from \"react-inlinesvg\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport DownArrow from \"@assets/icons/down.svg\";\nimport Info from \"@assets/icons/info-primary-900.svg\";\nimport UpArrow from \"@assets/icons/up.svg\";\nimport PeopleInLivingRoomImageUrl from \"@assets/illustrations/people_in_living_room.svg\";\nimport graphqlClient from \"@graphql/client_app/client\";\nimport { Position } from \"@graphql/client_app/types\";\nimport { useCreateBuyoutRequestsMutation } from \"@graphql/client_app/types\";\n\nimport { WEPLOYEES_BUYOUT_REQUEST_SUCCESS_PATH } from \"@/client_app/config\";\n\nimport { CommunityMemberAvatar } from \"@/client_app/components/CommunityMemberAvatar\";\nimport { PrimaryButton } from \"@/ui/buttons\";\nimport { FullLayoutModal } from \"@/ui/FullLayoutModal\";\n\ninterface BuyoutRequestProp {\n onBack: () => void;\n isOpen: boolean;\n selectedPositions?: Array;\n}\n\ntype ExtensionRequestType = {\n isPending: boolean;\n};\n\ntype BuyoutRequestType = {\n isPending: boolean;\n};\n\ntype ChangeFields = Omit & R;\nexport type PositionType = ChangeFields<\n Position,\n {\n communityMember: Omit<\n Position[\"communityMember\"],\n \"email\" | \"preferredName\" | \"timeZone\"\n >;\n extensionRequests?: ExtensionRequestType[];\n buyoutRequests?: BuyoutRequestType[];\n }\n>;\n\nfunction BuyoutRequestPreview({\n onBack,\n selectedPositions = [],\n}: BuyoutRequestProp): JSX.Element {\n const {\n register,\n handleSubmit: reactHookFormHandleSubmit,\n setError,\n setValue,\n formState: { errors },\n } = useForm();\n const navigate = useNavigate();\n\n const mutation = useCreateBuyoutRequestsMutation(graphqlClient);\n\n const [listExpanded, setListExpanded] = useState(true);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n function getHeading() {\n return selectedPositions.length > 1\n ? `${selectedPositions.length} Weployees selected`\n : `${selectedPositions[0].communityMember.fullName} selected`;\n }\n\n function formatDate(dateString) {\n const dateOptions: Intl.DateTimeFormatOptions = {\n month: \"short\",\n day: \"numeric\",\n };\n\n return new Date(dateString).toLocaleDateString(\"en-AU\", dateOptions);\n }\n\n function handleSubmit(data): void {\n setIsSubmitting(true);\n const variables = {\n positionIds: selectedPositions.map(({ id }) => id),\n ...data.buyout_request,\n };\n\n mutation.mutateAsync(variables).then((data) => {\n const errors = data.createBuyoutRequests.errors;\n setIsSubmitting(false);\n\n if (errors.length > 0) {\n handleFailure(errors);\n } else {\n handleSuccess();\n }\n });\n }\n\n function handleFailure(errors): void {\n errors.forEach((error) => {\n setError(`buyout_request.${error.path}`, {\n type: \"custom\",\n message: error.message,\n });\n });\n }\n\n function handleSuccess() {\n navigate(tenantPath(WEPLOYEES_BUYOUT_REQUEST_SUCCESS_PATH, true));\n }\n\n function onSelectDate(date: Date): void {\n setValue(\"buyout_request.startOn\", date.toString());\n }\n\n const renderStartDate = () => {\n return (\n
    \n \n Select Ideal Permanent Start Date\n \n \n \n
    \n {errors?.buyout_request?.startOn?.message}\n
    \n
    \n );\n };\n\n const renderSelectedWeployee = () => {\n return (\n <>\n
    \n
    \n {getHeading()}\n
    \n {selectedPositions.length > 1 && (\n setListExpanded(!listExpanded)}\n >\n \n {listExpanded ? \"HIDE\" : \"VIEW\"} ALL\n \n \n \n )}\n
    \n
    \n {selectedPositions.map(\n ({ id, communityMember, startOn, finishOn }) => {\n return (\n \n \n
    {communityMember.fullName}
    \n
    \n {formatDate(startOn)} - {formatDate(finishOn)}\n
    \n
    \n );\n }\n )}\n \n \n );\n };\n\n return (\n \n
    \n
    \n {renderSelectedWeployee()}\n \n {renderStartDate()}\n
    \n \n \n
    \n
    \n \n \n {i18next.t(\"clientApp.buyoutRequestFee\")}\n \n
    \n \n \n
    \n
    \n \n
    \n
    \n \n );\n}\n\nexport { BuyoutRequestPreview };\n","import clsx from \"clsx\";\nimport { tenantPath } from \"helpers/tenant_path\";\nimport i18next from \"i18next\";\nimport \"@/i18n/config\";\nimport { useState } from \"react\";\nimport Flatpickr from \"react-flatpickr\";\nimport { useForm } from \"react-hook-form\";\nimport SVG from \"react-inlinesvg\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport DownArrow from \"@assets/icons/down.svg\";\nimport Info from \"@assets/icons/info-primary-900.svg\";\nimport UpArrow from \"@assets/icons/up.svg\";\nimport PeopleInLivingRoomImageUrl from \"@assets/illustrations/people_in_living_room.svg\";\nimport graphqlClient from \"@graphql/client_app/client\";\nimport {\n useFetchExtensionRequestReasonsQuery,\n useCreateExtensionRequestsMutation,\n} from \"@graphql/client_app/types\";\n\nimport { WEPLOYEES_EXTENSION_REQUEST_SUCCESS_PATH } from \"@/client_app/config\";\n\nimport { PositionType } from \"./PositionType\";\n\nimport { CommunityMemberAvatar } from \"@/client_app/components/CommunityMemberAvatar\";\nimport { PrimaryButton } from \"@/ui/buttons\";\nimport { FullLayoutModal } from \"@/ui/FullLayoutModal\";\ninterface ExtensionRequestProp {\n onBack: () => void;\n isOpen: boolean;\n selectedPositions?: Array;\n}\n\nfunction ExtensionRequestPreview({\n onBack,\n selectedPositions = [],\n}: ExtensionRequestProp): JSX.Element {\n const {\n register,\n handleSubmit: reactHookFormHandleSubmit,\n setError,\n setValue,\n formState: { errors },\n } = useForm();\n const navigate = useNavigate();\n\n const mutation = useCreateExtensionRequestsMutation(graphqlClient);\n\n const [listExpanded, setListExpanded] = useState(true);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const {\n data: extensionRequestReasonsData,\n isLoading: isLoadingExtensionRequestReasons,\n isSuccess: isSuccessExtensionRequestReasons,\n } = useFetchExtensionRequestReasonsQuery(graphqlClient);\n\n function getHeading() {\n return selectedPositions.length > 1\n ? `${selectedPositions.length} Weployees selected`\n : `${selectedPositions[0].communityMember.fullName} selected`;\n }\n\n function getLatestFinishOn() {\n const datesSorted = selectedPositions\n .map(({ finishOn }) => finishOn)\n .sort();\n const latestDate = datesSorted[datesSorted.length - 1];\n\n const latestDateObj = new Date(latestDate);\n latestDateObj.setDate(latestDateObj.getDate() + 1);\n\n return latestDateObj;\n }\n\n function formatDate(dateString) {\n const dateOptions: Intl.DateTimeFormatOptions = {\n month: \"short\",\n day: \"numeric\",\n };\n\n return new Date(dateString).toLocaleDateString(\"en-AU\", dateOptions);\n }\n\n function handleSubmit(data): void {\n setIsSubmitting(true);\n const variables = {\n positionIds: selectedPositions.map(({ id }) => id),\n ...data.extension_request,\n };\n\n mutation.mutateAsync(variables).then((data) => {\n const errors = data.createExtensionRequests.errors;\n setIsSubmitting(false);\n\n if (errors.length > 0) {\n handleFailure(errors);\n } else {\n handleSuccess();\n }\n });\n }\n\n function handleFailure(errors): void {\n errors.forEach((error) => {\n setError(`extension_request.${error.path}`, {\n type: \"custom\",\n message: error.message,\n });\n });\n }\n\n function handleSuccess() {\n navigate(tenantPath(WEPLOYEES_EXTENSION_REQUEST_SUCCESS_PATH, true));\n }\n\n function onSelectDate(date: Date): void {\n setValue(\"extension_request.newFinishDate\", date.toString());\n }\n\n return (\n \n
    \n
    \n
    \n
    \n {getHeading()}\n
    \n {selectedPositions.length > 1 && (\n setListExpanded(!listExpanded)}\n >\n \n {listExpanded ? \"HIDE\" : \"VIEW\"} ALL\n \n \n \n )}\n
    \n
    \n {selectedPositions.map(\n ({ id, communityMember, startOn, finishOn }) => {\n return (\n \n \n
    {communityMember.fullName}
    \n
    \n {formatDate(startOn)} - {formatDate(finishOn)}\n
    \n
    \n );\n }\n )}\n
    \n \n
    \n {isLoadingExtensionRequestReasons &&\n \"Loading extension request reasons\"}\n {isSuccessExtensionRequestReasons && (\n <>\n \n Reason for Extension\n \n \n \n <>\n {extensionRequestReasonsData.extensionRequestReasons.map(\n (option) => {\n return (\n \n );\n }\n )}\n \n \n
    \n {errors?.extension_request?.reason?.message}\n
    \n \n )}\n
    \n
    \n \n \n
    \n
    \n \n Select new finish date\n \n \n \n
    \n {errors?.extension_request?.newFinishDate?.message}\n
    \n
    \n
    \n \n \n {i18next.t(\n \"clientApp.weployeesAcceptOrDeclineExtensionRequest\",\n { terminologyEmployee: window.terminologyEmployee }\n )}\n \n
    \n \n \n
    \n
    \n \n
    \n \n \n );\n}\n\nexport { ExtensionRequestPreview };\n","import { Dispatch, SetStateAction } from \"react\";\n\nimport { Input } from \"@/client_app/components/Form\";\n\ninterface FilterByWeployeeProps {\n setSelectedPositionIds?: Dispatch>;\n communityMemberName: string;\n setCommunityMemberName: (name: string) => void;\n}\n\nfunction FilterByWeployee({\n setSelectedPositionIds,\n communityMemberName,\n setCommunityMemberName,\n}: FilterByWeployeeProps): JSX.Element {\n const onChange = (event: InputEvent): void => {\n const target = event.target as HTMLInputElement;\n const communityMemberSearchTerm = target.value;\n const pgTrigramMinimumCharacter = 3;\n\n if (communityMemberSearchTerm.length >= pgTrigramMinimumCharacter) {\n setCommunityMemberName(communityMemberSearchTerm);\n if (setSelectedPositionIds) {\n setSelectedPositionIds([]);\n }\n } else {\n setCommunityMemberName(\"\");\n }\n };\n\n return (\n
    \n
    \n
    \n \n
    \n
    \n
    \n );\n}\n\nexport { FilterByWeployee };\n","import i18next from \"i18next\";\nimport \"@/i18n/config\";\nimport { useCallback } from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport ComputerAndPlantImageUrl from \"@assets/illustrations/computer_and_plant.svg\";\n\ninterface NoActivePositionsProps {\n noSearchResults: boolean;\n noActivePositionImageURL: string;\n}\n\nconst NoActivePositions = ({\n noSearchResults,\n noActivePositionImageURL,\n}: NoActivePositionsProps): JSX.Element => {\n let heading;\n let textContent;\n\n if (noSearchResults) {\n heading = \"No matching positions found\";\n textContent = \"Try searching for someone different\";\n } else {\n heading = \"No active positions\";\n textContent = i18next.t(\"clientApp.noActivePositionsMessage\", {\n terminologyEmployee: window.terminologyEmployee,\n });\n }\n const customStyles = {\n height: \"200px\",\n width: \"100%\",\n };\n const renderImage = useCallback(() => {\n if (noActivePositionImageURL) {\n return (\n \n );\n } else {\n return ;\n }\n }, [noActivePositionImageURL]);\n return (\n
    \n
    \n {renderImage()}\n

    {heading}

    \n

    {textContent}

    \n
    \n
    \n );\n};\n\nexport { NoActivePositions };\n","import clsx from \"clsx\";\nimport { NavLink } from \"react-router-dom\";\n\ninterface PositionTabProps {\n to: string;\n label: string;\n}\n\nfunction PositionTab({ to, label }: PositionTabProps): JSX.Element {\n return (\n \n clsx(\n \"flex gap-1 items-center font-bold uppercase border-b-2 pb-1\",\n isActive ? \"border-primary-300\" : \"border-transparent\"\n )\n }\n >\n {({ isActive }) => (\n <>\n \n {label}\n \n \n )}\n \n );\n}\n\nexport { PositionTab };\n","import { tenantPath } from \"helpers/tenant_path\";\nimport i18next from \"i18next\";\nimport \"@/i18n/config\";\nimport {\n WEPLOYEE_ACTIVE_POSITIONS_PATH,\n WEPLOYEE_PAST_POSITIONS_PATH,\n} from \"packs/client_app/config\";\n\nimport { PositionTab } from \"./PositionTab\";\n\nfunction PositionTabs(): JSX.Element {\n return (\n <>\n \n \n \n );\n}\n\nexport { PositionTabs };\n","import \"@/i18n/config\";\nimport React from \"react\";\nimport ReactPaginate from \"react-paginate\";\n\nexport interface Props {\n perPage: number;\n totalCount: number;\n onPageChange?: (page: number) => void;\n}\nexport function Pagination(props: Props) {\n const { perPage, totalCount, onPageChange } = props;\n\n const pageCount = Math.ceil(totalCount / perPage);\n\n const handlePageClick = (event) => {\n const newOffset = (event.selected * perPage) % totalCount;\n onPageChange(newOffset);\n };\n return (\n
    \n \n
    \n );\n}\n","interface Props {\n role: string;\n contact: string;\n emergencyInfo: string;\n residency: string;\n}\n\nexport const ProfileInformation = ({\n role,\n contact,\n emergencyInfo,\n residency,\n}: Props): JSX.Element => {\n const data = [\n [\"Role\", role],\n [\"Contact\", contact],\n [\"Emergency Info\", emergencyInfo],\n [\"Residency\", residency],\n ];\n\n return (\n
    \n
    \n {data.map(([key, value]) => (\n \n
    {key}
    \n
    {value}
    \n
    \n ))}\n
    \n \n );\n};\n","import {\n COMMUNITY_MEMBER_PROFILES_PATH,\n ONBOARDING_PATH,\n} from \"@/client_app/config\";\n\nexport const INVOICINGS_PATH = \"/admin/invoicings\";\nexport const POSITIONS_PATH = \"/admin/weployees\";\nexport const ACTIVE_POSITIONS_PATH = \"/admin/api/active_positions\";\nexport const ADMIN_COMMENT_PATH = \"/admin/api/comments\";\nexport const ADMIN_COMMUNITY_MEMBER_PROFILES_PATH = (positionId: string) =>\n `/admin/api/community_member_profiles/${positionId}`;\nexport const ADMIN_ONBOARDING_PATH = (positionId: string) =>\n `/admin/api/user_onboardings/${positionId}`;\nexport const ADMIN_COACHING_PATH = (positionId: string) =>\n `/admin/api/coachings/${positionId}`;\nexport const ADMIN_TAGGERS_PATH = `/admin/api/taggers`;\nexport const COMPANIES_PATH = \"/admin/invoicings/client_companies\";\nexport const ATTENDANCES_PATH =\n \"/admin/invoicings/client_companies/:clientCompanyId/attendances\";\nexport const ADMIN_ABSENCE_PATH = (positionId: string) =>\n `/admin/api/position_absents/${positionId}`;\nexport const ADMIN_PERFORMANCE_RECORDS_PATH = (positionId: string) =>\n `/admin/api/performance_records/${positionId}`;\nexport const ADMIN_PERFORMANCE_FIELDS_PATH = (positionId: string) =>\n `/admin/api/performance_fields/${positionId}`;\n","import { tenantPath } from \"helpers/tenant_path\";\nimport {\n ABSENCE_PATH,\n COMMENTS_PATH,\n COMMUNITY_MEMBER_PROFILES_PATH,\n CREATE_ABSENCE_PATH,\n PERFORMANCE_FIELDS_PATH,\n PERFORMANCE_RECORDS_PATH,\n TAGGERS_PATH,\n FEEDBACK_PATH,\n CREATE_FEEDBACK_PATH,\n ONBOARDING_PATH,\n COACHING_PATH,\n} from \"packs/client_app/config\";\nimport { getHeaders } from \"packs/client_app/config/request_headers\";\n\nimport {\n ADMIN_ABSENCE_PATH,\n ADMIN_COACHING_PATH,\n ADMIN_COMMENT_PATH,\n ADMIN_COMMUNITY_MEMBER_PROFILES_PATH,\n ADMIN_ONBOARDING_PATH,\n ADMIN_PERFORMANCE_FIELDS_PATH,\n ADMIN_PERFORMANCE_RECORDS_PATH,\n ADMIN_TAGGERS_PATH,\n} from \"@/organization_app/config\";\n\nexport const getCommunityMemberProfiles = (positionId: string, inAdmin?) => {\n let path = tenantPath(COMMUNITY_MEMBER_PROFILES_PATH(positionId));\n if (inAdmin) {\n path = ADMIN_COMMUNITY_MEMBER_PROFILES_PATH(positionId);\n }\n return fetch(path, {\n method: \"GET\",\n headers: getHeaders(),\n });\n};\n\nexport const getOnboardingChecklist = (positionId: string, inAdmin?) => {\n let path = tenantPath(ONBOARDING_PATH(positionId));\n if (inAdmin) {\n path = ADMIN_ONBOARDING_PATH(positionId);\n }\n return fetch(path, {\n method: \"GET\",\n headers: getHeaders(),\n });\n};\n\nexport const getCoachingChecklist = (positionId: string, inAdmin?) => {\n let path = tenantPath(COACHING_PATH(positionId));\n if (inAdmin) {\n path = ADMIN_COACHING_PATH(positionId);\n }\n return fetch(path, {\n method: \"GET\",\n headers: getHeaders(),\n });\n};\n\ninterface UpdateParams {\n positionId: string;\n onboarding_checklist_id: string;\n completed_at?: string;\n completed?: boolean;\n inAdmin?: boolean;\n}\nexport const updateOnboardingChecklist = ({\n positionId,\n onboarding_checklist_id,\n completed_at,\n completed,\n inAdmin = false,\n}: UpdateParams) => {\n let path = tenantPath(ONBOARDING_PATH(positionId));\n if (inAdmin) {\n path = ADMIN_ONBOARDING_PATH(positionId);\n }\n return fetch(path, {\n method: \"PUT\",\n headers: getHeaders(),\n body: JSON.stringify({\n position_id: positionId,\n onboarding_checklist_id: onboarding_checklist_id,\n completed_at: completed_at,\n completed: completed,\n }),\n });\n};\n\nexport const updateFocus = (positionId: string, focus: string, inAdmin?) => {\n let path = tenantPath(COMMUNITY_MEMBER_PROFILES_PATH(positionId));\n if (inAdmin) {\n path = ADMIN_COMMUNITY_MEMBER_PROFILES_PATH(positionId);\n }\n return fetch(path, {\n method: \"PUT\",\n headers: getHeaders(),\n body: JSON.stringify({\n focus: focus,\n }),\n });\n};\n\nexport const createAbsence = (\n positionId: string,\n formData: FormData,\n inAdmin?\n) => {\n let path = tenantPath(CREATE_ABSENCE_PATH(positionId));\n if (inAdmin) {\n path = CREATE_ABSENCE_PATH(positionId);\n }\n return fetch(path, {\n method: \"PUT\",\n headers: {\n \"X-CSRF-Token\": document\n .querySelector(\"meta[name='csrf-token']\")\n .getAttribute(\"content\"),\n },\n body: formData,\n });\n};\nexport const updateCoaching = (\n positionId: string,\n formData: FormData,\n inAdmin?\n) => {\n let path = tenantPath(COACHING_PATH(positionId));\n if (inAdmin) {\n path = ADMIN_COACHING_PATH(positionId);\n }\n return fetch(path, {\n method: \"PUT\",\n headers: {\n \"X-CSRF-Token\": document\n .querySelector(\"meta[name='csrf-token']\")\n .getAttribute(\"content\"),\n },\n body: formData,\n });\n};\n\nexport const getAbsence = (positionId: string, inAdmin?) => {\n let path = tenantPath(ABSENCE_PATH(positionId));\n if (inAdmin) {\n path = ADMIN_ABSENCE_PATH(positionId);\n }\n return fetch(path, {\n method: \"GET\",\n headers: getHeaders(),\n });\n};\n\nexport const createFeedback = (\n positionId: string,\n formData: FormData,\n inAdmin?\n) => {\n let path = tenantPath(CREATE_FEEDBACK_PATH(positionId));\n if (inAdmin) {\n path = CREATE_FEEDBACK_PATH(positionId);\n }\n return fetch(path, {\n method: \"PUT\",\n headers: {\n \"X-CSRF-Token\": document\n .querySelector(\"meta[name='csrf-token']\")\n .getAttribute(\"content\"),\n },\n body: formData,\n });\n};\n\nexport const getFeedbacks = (positionId: string, inAdmin?) => {\n let path = tenantPath(FEEDBACK_PATH(positionId));\n if (inAdmin) {\n path = FEEDBACK_PATH(positionId);\n }\n return fetch(path, {\n method: \"GET\",\n headers: getHeaders(),\n });\n};\nexport const getPerformanceRecords = (positionId: string, inAdmin?) => {\n let path = tenantPath(PERFORMANCE_RECORDS_PATH(positionId));\n if (inAdmin) {\n path = PERFORMANCE_RECORDS_PATH(positionId);\n }\n return fetch(path, {\n method: \"GET\",\n headers: getHeaders(),\n });\n};\n\nexport const savePerformanceRecords = (\n positionId: string,\n date: string,\n id: string | null,\n metrics: object,\n inAdmin?\n) => {\n let path = tenantPath(PERFORMANCE_RECORDS_PATH(positionId));\n if (inAdmin) {\n path = ADMIN_PERFORMANCE_RECORDS_PATH(positionId);\n }\n return fetch(path, {\n method: \"PUT\",\n headers: getHeaders(),\n body: JSON.stringify({\n record_id: id,\n date,\n metrics,\n }),\n });\n};\n\nexport const getPerformanceFields = (positionId: string, inAdmin?) => {\n let path = tenantPath(PERFORMANCE_FIELDS_PATH);\n if (inAdmin) {\n path = ADMIN_PERFORMANCE_FIELDS_PATH(positionId);\n }\n return fetch(path, {\n method: \"GET\",\n headers: getHeaders(),\n });\n};\n\nexport const getComments = ({ recordId, recordType, inAdmin }) => {\n const query = `record_id=${recordId}&record_type=${recordType}`;\n\n let path = COMMENTS_PATH;\n\n if (inAdmin) {\n path = ADMIN_COMMENT_PATH;\n }\n return fetch(tenantPath(`${path}?${query}`), {\n method: \"GET\",\n headers: getHeaders(),\n });\n};\n\nexport const sendComment = ({\n recordId,\n recordType,\n content,\n mentions,\n url,\n inAdmin = false,\n}) => {\n const path = inAdmin ? ADMIN_COMMENT_PATH : tenantPath(COMMENTS_PATH);\n return fetch(path, {\n method: \"POST\",\n headers: getHeaders(),\n body: JSON.stringify({\n record_id: recordId,\n url: url,\n record_type: recordType,\n content: content,\n mentions: mentions,\n }),\n });\n};\n\nexport const getTaggers = (positionId, inAdmin?) => {\n let path = `${tenantPath(TAGGERS_PATH)}?position_id=${positionId}`;\n if (inAdmin) {\n path = `${ADMIN_TAGGERS_PATH}?position_id=${positionId}`;\n }\n return fetch(path, {\n method: \"GET\",\n headers: getHeaders(),\n });\n};\n","import \"@/i18n/config\";\nimport React, { useEffect, useState } from \"react\";\n\nimport {\n getCommunityMemberProfiles,\n updateFocus,\n} from \"@/client_app/components/CommunityMemberDetails/services/FetchAPIService\";\nimport { PrimaryButton } from \"@/ui/buttons\";\n\ninterface Props {\n positionId: string;\n inAdmin?: boolean;\n}\n\nexport function Focus(props: Props) {\n const { positionId, inAdmin } = props;\n const [areasOfFocus, setAreasOfFocus] = useState();\n const [updating, setUpdating] = useState(false);\n\n useEffect(() => {\n if (positionId) {\n getCommunityMemberProfiles(positionId, inAdmin)\n .then((response) => response.json())\n .then((data) => {\n setAreasOfFocus(data.areas_of_focus);\n });\n }\n }, [positionId]);\n\n const handleOnChange = (event) => {\n setAreasOfFocus(event.target.value);\n setUpdating(true);\n };\n\n const saveFocus = () => {\n updateFocus(positionId, areasOfFocus, inAdmin).then(() =>\n setUpdating(false)\n );\n };\n\n return (\n
    \n

    \n Current Areas of Focus\n

    \n \n {!inAdmin && (\n
    \n \n
    \n )}\n
    \n );\n}\n","import \"@/i18n/config\";\nimport React, { useEffect, useState } from \"react\";\nimport Avatar from \"react-avatar\";\nimport { Mention, MentionsInput } from \"react-mentions\";\n\nimport { Prop as CommentProps } from \"./Comment\";\n\nimport { CommunityMemberAvatar } from \"@/client_app/components/CommunityMemberAvatar\";\nimport { sendComment } from \"@/client_app/components/CommunityMemberDetails/services/FetchAPIService\";\nimport { PrimaryButton } from \"@/ui/buttons\";\nconst mentionStyle = {\n backgroundColor: \"#cee4e5\",\n overflow: \"auto\",\n maxHeight: \"200px\",\n};\n\ninterface Prop extends CommentProps {\n onNbCommentChange?: (number: number) => void;\n defaultComments: object;\n recordName?: string;\n showRecordType?: boolean;\n hideAddComment?: boolean;\n}\n\nexport function CommentContent({\n recordId,\n recordType,\n inAdmin,\n title,\n recordName,\n taggers,\n onNbCommentChange,\n defaultComments,\n showRecordType,\n hideAddComment,\n}: Prop) {\n const [comment, setComment] = useState();\n const [comments, setComments] = useState(defaultComments);\n const [mentions, setMentions] = useState([]);\n\n useEffect(() => {\n setComments(defaultComments);\n }, [defaultComments]);\n const addComment = () => {\n const url = window.location.href;\n sendComment({\n recordId,\n recordType,\n content: comment,\n mentions: mentions,\n url: url,\n inAdmin,\n })\n .then((response) => response.json())\n .then((data) => {\n const length = comments?.[recordName]?.length || 0;\n onNbCommentChange?.(length + 1);\n\n setComments((prev) => ({\n ...prev,\n [recordName]: [...(prev[recordName] || []), data.comment],\n }));\n\n setComment(undefined);\n setMentions([]);\n });\n };\n\n const handleOnChange = (event, _, __, mentions) => {\n setComment(event.target.value);\n setMentions(mentions.map((mention) => mention.id));\n };\n\n return (\n
    \n {title && (\n
    \n {title}\n
    \n )}\n
    \n {comments &&\n Object.keys(comments).map((key) => (\n
    \n {showRecordType && (\n
    \n {key == \"Position\" ? \"General Comments\" : key}\n
    \n )}\n {comments[key]?.map((comment, index) => (\n \n
    \n
    \n {comment.profile_url ? (\n \n ) : (\n \n )}\n
    \n
    \n {comment.name}\n
    \n
    \n {new Date(comment.time).toLocaleString(\"en-GB\")}\n
    \n
    \n
    \n \n \n \n
    \n
    \n ))}\n
    \n ))}\n
    \n {!hideAddComment && (\n
    \n
    \n
    \n \n handleOnChange(event, newValue, newPlainTextValue, mentions)\n }\n >\n ({\n ...tagger,\n display:\n tagger.type == \"User\"\n ? tagger.full_name + \" (Weploy)\"\n : tagger.full_name,\n }))}\n />\n \n
    \n
    \n \n
    \n
    \n )}\n \n );\n}\n","import \"@/i18n/config\";\nimport { Button } from \"@nextui-org/button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@nextui-org/popover\";\nimport React, { useEffect, useState } from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport CommentIcon from \"@assets/icons/comment.svg\";\n\nimport { getComments } from \"@/client_app/components/CommunityMemberDetails/services/FetchAPIService\";\nimport { Tagger } from \"@/client_app/components/CommunityMemberDetails/TabSection\";\nimport { CommentContent } from \"@/common/components/CommentContent\";\n\nexport interface Prop {\n recordId: string;\n recordType: string;\n title?: string;\n inAdmin?: boolean;\n taggers: Tagger[];\n}\n\nexport function Comment({\n recordId,\n recordType,\n inAdmin,\n title,\n taggers,\n}: Prop) {\n const [nbComments, setNbComments] = useState(0);\n const [comments, setComments] = useState([]);\n const [recordName, setRecordName] = useState(\"\");\n\n useEffect(() => {\n if (recordId) {\n getComments({ recordId, recordType, inAdmin })\n .then((response) => response.json())\n .then((data) => {\n const firstKey = Object.keys(data.comments || {})[0];\n const length = data.comments?.[firstKey]?.length || 0;\n setNbComments(length);\n setRecordName(firstKey);\n setComments(data.comments);\n });\n }\n }, [recordId, recordType]);\n\n return (\n \n \n \n \n \n setNbComments(number)}\n defaultComments={comments}\n recordName={recordName}\n />\n \n \n );\n}\n","import \"@/i18n/config\";\nimport React, { useEffect, useState } from \"react\";\n\nimport {\n createAbsence,\n getAbsence,\n} from \"@/client_app/components/CommunityMemberDetails/services/FetchAPIService\";\nimport { Tagger } from \"@/client_app/components/CommunityMemberDetails/TabSection\";\nimport { Comment } from \"@/common/components/Comment\";\nimport { PrimaryButton, SecondaryButton } from \"@/ui/buttons\";\n\ninterface Props {\n positionId: string;\n inAdmin?: boolean;\n taggers?: Tagger[];\n}\n\ninterface AbsenceData {\n id: string;\n date: string;\n reason: string;\n status: string | null;\n updated_at: string;\n requester: string;\n message: string;\n isEditing: boolean;\n document?: File | string | null;\n document_url: string;\n}\n\nexport function Absence(props: Props) {\n const { positionId, inAdmin, taggers } = props;\n const [absenceData, setAbsenceData] = useState([]);\n useEffect(() => {\n if (positionId) {\n getAbsence(positionId, inAdmin)\n .then((response) => response.json())\n .then((data) => {\n setAbsenceData(data.absents);\n });\n }\n }, [positionId]);\n\n const [backupData, setBackupData] = useState([]);\n const [rowWarnings, setRowWarnings] = useState>({});\n\n const handleInputChange = (index: number, key: string, value: any) => {\n const updatedData = [...absenceData];\n updatedData[index] = { ...updatedData[index], [key]: value };\n setAbsenceData(updatedData);\n\n // Clear warnings if date changes\n if (key === \"date\" && rowWarnings[index]) {\n setRowWarnings((prev) => {\n const updatedWarnings = { ...prev };\n delete updatedWarnings[index];\n return updatedWarnings;\n });\n }\n };\n\n const toggleEditMode = (index: number, enable: boolean) => {\n const updatedData = [...absenceData];\n updatedData[index] = {\n ...updatedData[index],\n isEditing: enable,\n updated_at: new Date().toString(),\n };\n\n if (enable) {\n // Save a backup of the row data when entering edit mode\n setBackupData((prev) => ({\n ...prev,\n [index]: { ...absenceData[index] },\n }));\n } else {\n // Clear the backup when exiting edit mode\n setBackupData((prev) => {\n const updatedBackup = { ...prev };\n delete updatedBackup[index];\n return updatedBackup;\n });\n\n setRowWarnings((prev) => {\n const updatedWarnings = { ...prev };\n delete updatedWarnings[index];\n return updatedWarnings;\n });\n }\n\n setAbsenceData(updatedData);\n };\n\n const options = [\n [\"submitted\", \"Submitted\"],\n [\"follow-up\", \"Follow-up\"],\n [\"done\", \"Done\"],\n ];\n const cancelEdit = (index: number) => {\n const isNewRow = !absenceData[index]?.id;\n if (isNewRow) {\n // Remove the new row entirely if it's canceled\n const updatedData = absenceData.filter((_, i) => i !== index);\n setAbsenceData(updatedData);\n } else {\n // Revert to the original data for existing rows\n const updatedData = [...absenceData];\n updatedData[index] = { ...backupData[index], isEditing: false }; // Restore original data and exit edit mode\n setAbsenceData(updatedData);\n setBackupData((prev) => {\n const updatedBackup = { ...prev };\n delete updatedBackup[index];\n return updatedBackup;\n });\n }\n };\n\n const addRow = () => {\n setAbsenceData((prev) => [\n {\n date: \"\",\n id: \"\",\n reason: \"\",\n status: \"submitted\",\n updated_at: \"\",\n message: \"\",\n document_url: \"\",\n requester: \"\",\n isEditing: true,\n },\n ...prev,\n ]);\n };\n\n const saveRow = (index: number) => {\n const { date } = absenceData[index];\n if (absenceData.some((item, i) => i !== index && item.date === date)) {\n setRowWarnings((prev) => ({\n ...prev,\n [index]: \"The selected date already exists in the list.\",\n }));\n return;\n }\n\n const rowData = absenceData[index];\n const formData = new FormData();\n\n formData.append(\"absence[date]\", rowData.date);\n formData.append(\"absence[reason]\", rowData.reason);\n formData.append(\"absence[status]\", rowData.status || \"\");\n if (rowData.document) {\n formData.append(\"absence[document]\", rowData.document);\n }\n\n createAbsence(positionId, formData, inAdmin)\n .then((response) => response.json())\n .then((data) => {\n setAbsenceData((prevData) => {\n const updatedData = [...prevData];\n updatedData[index] = {\n ...updatedData[index],\n ...data,\n isEditing: false,\n };\n return updatedData;\n });\n });\n };\n return (\n
    \n {!inAdmin && (\n
    \n \n
    \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n Date\n Reason\n Submitted By\n Status\n Document\n Updated At\n Comments\n Actions\n \n \n \n {absenceData.map(\n (\n {\n date,\n id,\n reason,\n status,\n updated_at,\n requester,\n isEditing,\n message,\n document_url,\n },\n index\n ) => (\n <>\n \n \n {isEditing ? (\n
    \n \n handleInputChange(index, \"date\", e.target.value)\n }\n className='form-control'\n />\n
    \n ) : (\n new Date(date).toLocaleDateString(\"en-GB\")\n )}\n \n \n {isEditing ? (\n \n handleInputChange(index, \"reason\", e.target.value)\n }\n className='form-control'\n />\n ) : message ? (\n
    \n {reason || \"Not found\"}\n {message}\n
    \n ) : (\n reason || \"Not found\"\n )}\n \n {requester}\n \n {isEditing ? (\n \n handleInputChange(index, \"status\", e.target.value)\n }\n >\n {options.map(([key, value]) => (\n \n ))}\n \n ) : (\n status\n )}\n \n \n {isEditing ? (\n \n handleInputChange(\n index,\n \"document\",\n e.target.files?.[0] || null\n )\n }\n />\n ) : (\n document_url && (\n \n Attached\n \n )\n )}\n \n \n {updated_at && new Date(updated_at).toLocaleString(\"en-GB\")}\n \n \n \n \n \n {isEditing ? (\n
    \n saveRow(index)}\n />\n cancelEdit(index)}\n />\n
    \n ) : (\n toggleEditMode(index, true)}\n />\n )}\n \n \n {rowWarnings[index] && (\n

    \n {rowWarnings[index]}\n

    \n )}\n \n )\n )}\n \n \n
    \n );\n}\n","import \"@/i18n/config\";\nimport React, { useEffect, useState } from \"react\";\n\nimport { getComments } from \"@/client_app/components/CommunityMemberDetails/services/FetchAPIService\";\nimport { Tagger } from \"@/client_app/components/CommunityMemberDetails/TabSection\";\nimport { CommentContent } from \"@/common/components/CommentContent\";\n\ninterface Props {\n positionId: string;\n inAdmin?: boolean;\n taggers?: Tagger[];\n}\n\nexport function AllComment(props: Props) {\n const { positionId, inAdmin, taggers } = props;\n\n const [typeComments, setTypeComments] = useState();\n const [globalComments, setGlobalComments] = useState({ Position: [] });\n\n useEffect(() => {\n if (positionId) {\n getComments({ recordId: positionId, recordType: \"Position\", inAdmin })\n .then((response) => response.json())\n .then((data) => {\n const { Position, ...rest } = data.comments;\n\n setTypeComments(rest);\n setGlobalComments({ Position });\n });\n }\n }, [positionId]);\n\n return (\n
    \n \n \n
    \n );\n}\n","import \"@/i18n/config\";\nimport React, { useEffect, useState } from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport editURL from \"@assets/icons/edit.svg\";\n\nimport {\n getCoachingChecklist,\n updateCoaching,\n} from \"@/client_app/components/CommunityMemberDetails/services/FetchAPIService\";\nimport { PrimaryButton, SecondaryButton } from \"@/ui/buttons\";\n\ninterface Props {\n positionId: string;\n inAdmin?: boolean;\n}\n\ninterface Item {\n name: string;\n id: string;\n addressed_date: string;\n document_url: string;\n document?: File | string | null;\n content: string;\n}\n\nconst inputDefault: Item = {\n name: \"\",\n id: \"\",\n addressed_date: \"\",\n document_url: \"\",\n content: \"\",\n};\nexport function Coaching(props: Props) {\n const { positionId, inAdmin } = props;\n const [list, setList] = useState([]);\n const [inputItem, setInput] = useState(inputDefault);\n const [itemIndex, setItemIndex] = useState(null);\n useEffect(() => {\n if (positionId) {\n getCoachingChecklist(positionId, inAdmin)\n .then((response) => response.json())\n .then((data) => {\n setList(data.coachings);\n });\n }\n }, [positionId]);\n\n const handleInputChange = (key: string, value: any) => {\n setInput((prevState) => ({ ...prevState, [key]: value }));\n };\n\n const handleSave = () => {\n const formData = new FormData();\n\n formData.append(\"coaching[record_id]\", inputItem.id);\n formData.append(\"coaching[addressed_date]\", inputItem.addressed_date);\n formData.append(\"coaching[name]\", inputItem.name);\n formData.append(\"coaching[content]\", inputItem.content || \"\");\n if (inputItem.document) {\n formData.append(\"coaching[document]\", inputItem.document);\n }\n\n updateCoaching(positionId, formData, inAdmin)\n .then((response) => response.json())\n .then((data) => {\n setList((prevData) => {\n const updatedData = [...prevData];\n updatedData[itemIndex] = {\n ...updatedData[itemIndex],\n ...data,\n };\n return updatedData;\n });\n\n setItemIndex(null);\n setInput(inputDefault);\n });\n };\n\n return (\n
    \n
    \n {list.map(({ name, content, addressed_date, document_url }, index) => (\n
    \n
    \n
    # {name}
    \n {!inAdmin && (\n
    \n {\n setItemIndex(index);\n setInput(list[index]);\n }}\n />\n \n Edit\n \n
    \n )}\n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    Dated Completed\n {\" \"}\n {addressed_date &&\n new Date(addressed_date).toLocaleDateString(\"en-GB\")}\n
    Document\n {document_url && (\n \n Attached\n \n )}\n
    Content{content}
    \n
    \n
    \n ))}\n
    \n {!inAdmin &&\n (itemIndex == null ? (\n {\n setItemIndex(list.length);\n setInput(inputDefault);\n }}\n />\n ) : (\n
    \n
    \n \n handleInputChange(\"name\", e.target.value)}\n />\n
    \n
    \n \n handleInputChange(\"content\", e.target.value)}\n />\n
    \n
    \n \n \n handleInputChange(\"addressed_date\", e.target.value)\n }\n />\n
    \n
    \n \n \n handleInputChange(\"document\", e.target.files?.[0] || null)\n }\n />\n
    \n
    \n {\n setItemIndex(null);\n setInput(inputDefault);\n }}\n />\n \n
    \n
    \n ))}\n
    \n );\n}\n","import \"@/i18n/config\";\nimport React, { useEffect, useState } from \"react\";\n\nimport {\n createFeedback,\n getFeedbacks,\n} from \"@/client_app/components/CommunityMemberDetails/services/FetchAPIService\";\nimport { Tagger } from \"@/client_app/components/CommunityMemberDetails/TabSection\";\nimport { Comment } from \"@/common/components/Comment\";\nimport { PrimaryButton, SecondaryButton } from \"@/ui/buttons\";\n\ninterface Props {\n positionId: string;\n inAdmin?: boolean;\n taggers?: Tagger[];\n}\n\ninterface FeedbackData {\n id: string;\n date: string;\n description: string;\n status: string | null;\n updated_at: string;\n isEditing: boolean;\n document?: File | string | null;\n document_url: string;\n}\n\nexport function Feedback(props: Props) {\n const { positionId, inAdmin, taggers } = props;\n const [feedbackData, setFeedbackData] = useState([]);\n useEffect(() => {\n if (positionId) {\n getFeedbacks(positionId, inAdmin)\n .then((response) => response.json())\n .then((data) => {\n setFeedbackData(data.feedbacks);\n });\n }\n }, [positionId]);\n\n const [backupData, setBackupData] = useState([]);\n\n const handleInputChange = (index: number, key: string, value: any) => {\n const updatedData = [...feedbackData];\n updatedData[index] = { ...updatedData[index], [key]: value };\n setFeedbackData(updatedData);\n };\n\n const toggleEditMode = (index: number, enable: boolean) => {\n const updatedData = [...feedbackData];\n updatedData[index] = {\n ...updatedData[index],\n isEditing: enable,\n updated_at: new Date().toString(),\n };\n\n if (enable) {\n // Save a backup of the row data when entering edit mode\n setBackupData((prev) => ({\n ...prev,\n [index]: { ...feedbackData[index] },\n }));\n } else {\n // Clear the backup when exiting edit mode\n setBackupData((prev) => {\n const updatedBackup = { ...prev };\n delete updatedBackup[index];\n return updatedBackup;\n });\n }\n\n setFeedbackData(updatedData);\n };\n\n const options = [\n [\"pending\", \"Pending\"],\n [\"in-progress\", \"In-progress\"],\n [\"completed\", \"Completed\"],\n ];\n const cancelEdit = (index: number) => {\n const isNewRow = !feedbackData[index]?.id;\n if (isNewRow) {\n // Remove the new row entirely if it's canceled\n const updatedData = feedbackData.filter((_, i) => i !== index);\n setFeedbackData(updatedData);\n } else {\n // Revert to the original data for existing rows\n const updatedData = [...feedbackData];\n updatedData[index] = { ...backupData[index], isEditing: false }; // Restore original data and exit edit mode\n setFeedbackData(updatedData);\n setBackupData((prev) => {\n const updatedBackup = { ...prev };\n delete updatedBackup[index];\n return updatedBackup;\n });\n }\n };\n\n const addRow = () => {\n setFeedbackData((prev) => [\n {\n date: \"\",\n id: \"\",\n description: \"\",\n status: \"pending\",\n updated_at: \"\",\n document_url: \"\",\n isEditing: true,\n },\n ...prev,\n ]);\n };\n\n const saveRow = (index: number) => {\n const rowData = feedbackData[index];\n const formData = new FormData();\n\n formData.append(\"feedback[id]\", rowData.id);\n formData.append(\"feedback[date]\", rowData.date);\n formData.append(\"feedback[description]\", rowData.description);\n formData.append(\"feedback[status]\", rowData.status || \"\");\n if (rowData.document) {\n formData.append(\"feedback[document]\", rowData.document);\n }\n\n createFeedback(positionId, formData, inAdmin)\n .then((response) => response.json())\n .then((data) => {\n setFeedbackData((prevData) => {\n const updatedData = [...prevData];\n updatedData[index] = {\n ...updatedData[index],\n ...data,\n isEditing: false,\n };\n return updatedData;\n });\n });\n };\n return (\n
    \n {!inAdmin && (\n
    \n \n
    \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n Description\n Addressed Date\n Document\n Status\n Updated At\n Comments\n Actions\n \n \n \n {feedbackData.map(\n (\n {\n date,\n id,\n description,\n status,\n updated_at,\n isEditing,\n document_url,\n },\n index\n ) => (\n <>\n \n \n {isEditing ? (\n \n handleInputChange(\n index,\n \"description\",\n e.target.value\n )\n }\n className='form-control'\n />\n ) : (\n description\n )}\n \n \n {isEditing ? (\n
    \n \n handleInputChange(index, \"date\", e.target.value)\n }\n className='form-control'\n />\n
    \n ) : (\n new Date(date).toLocaleDateString(\"en-GB\")\n )}\n \n \n {isEditing ? (\n \n handleInputChange(\n index,\n \"document\",\n e.target.files?.[0] || null\n )\n }\n />\n ) : (\n document_url && (\n \n Attached\n \n )\n )}\n \n \n {isEditing ? (\n \n handleInputChange(index, \"status\", e.target.value)\n }\n >\n {options.map(([key, value]) => (\n \n ))}\n \n ) : (\n status\n )}\n \n \n {updated_at && new Date(updated_at).toLocaleString(\"en-GB\")}\n \n \n \n \n \n {isEditing ? (\n
    \n saveRow(index)}\n />\n cancelEdit(index)}\n />\n
    \n ) : (\n toggleEditMode(index, true)}\n />\n )}\n \n \n \n )\n )}\n \n \n
    \n );\n}\n","import \"@/i18n/config\";\nimport React, { useEffect, useState } from \"react\";\n\nimport {\n getCommunityMemberProfiles,\n getOnboardingChecklist,\n updateFocus,\n updateOnboardingChecklist,\n} from \"@/client_app/components/CommunityMemberDetails/services/FetchAPIService\";\nimport { PrimaryButton } from \"@/ui/buttons\";\n\ninterface Props {\n positionId: string;\n inAdmin?: boolean;\n}\n\ninterface CheckList {\n field_name: string;\n name: string;\n onboarding_checklist_id: string;\n completed: boolean;\n completed_at: string;\n order_weight: number;\n}\nexport function Onboarding(props: Props) {\n const { positionId, inAdmin } = props;\n const [checkList, setCheckList] = useState([]);\n\n useEffect(() => {\n if (positionId) {\n getOnboardingChecklist(positionId, inAdmin)\n .then((response) => response.json())\n .then((data) => {\n setCheckList(data.list);\n });\n }\n }, [positionId]);\n\n const handleOnCheckboxChange = (\n onboarding_checklist_id: string,\n value: boolean,\n index: number\n ) => {\n setCheckList((prev) => {\n const newList = [...prev];\n newList[index].completed = value;\n return newList;\n });\n updateOnboardingChecklist({\n positionId,\n inAdmin,\n completed: value,\n onboarding_checklist_id,\n }).then((response) => response.json());\n };\n\n const handleOnDateChange = (\n onboarding_checklist_id: string,\n value: string,\n index: number\n ) => {\n setCheckList((prev) => {\n const newList = [...prev];\n newList[index].completed_at = value;\n return newList;\n });\n updateOnboardingChecklist({\n positionId,\n inAdmin,\n completed_at: value,\n onboarding_checklist_id,\n }).then((response) => response.json());\n };\n return (\n
    \n

    \n Onboarding Checklist\n

    \n\n \n \n {checkList.map((item, index) => (\n \n \n \n handleOnCheckboxChange(\n item.onboarding_checklist_id,\n e.target.checked,\n index\n )\n }\n />\n \n {item.name}\n \n \n handleOnDateChange(\n item.onboarding_checklist_id,\n e.target.value,\n index\n )\n }\n />\n \n \n ))}\n \n \n
    \n );\n}\n","import \"@/i18n/config\";\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport cancelURL from \"@assets/icons/cancel.svg\";\nimport editURL from \"@assets/icons/edit.svg\";\nimport saveURL from \"@assets/icons/save.svg\";\n\nimport {\n getPerformanceFields,\n getPerformanceRecords,\n savePerformanceRecords,\n} from \"@/client_app/components/CommunityMemberDetails/services/FetchAPIService\";\nimport { PrimaryButton } from \"@/ui/buttons\";\n\ninterface Props {\n positionId: string;\n inAdmin?: boolean;\n}\n\ninterface PerformanceRecord {\n id: string;\n date: string;\n metrics: object;\n values: object;\n isEditing: boolean;\n}\n\ninterface Field {\n field_name: string;\n display_name: string;\n}\nexport function Performance(props: Props) {\n const { positionId, inAdmin } = props;\n const [performanceData, setPerformanceData] = useState(\n []\n );\n const [backupData, setBackupData] = useState([]);\n const [fields, setFields] = useState([]);\n const [rowWarnings, setRowWarnings] = useState>({});\n\n useEffect(() => {\n getPerformanceFields(positionId, inAdmin)\n .then((response) => response.json())\n .then((data) => {\n setFields(data.fields);\n });\n if (positionId) {\n getPerformanceRecords(positionId, inAdmin)\n .then((response) => response.json())\n .then((data) => {\n setPerformanceData(data.records);\n });\n }\n }, [positionId]);\n\n const toggleEditMode = (index: number, enable: boolean) => {\n const updatedData = [...performanceData];\n updatedData[index] = {\n ...updatedData[index],\n isEditing: enable,\n };\n\n if (enable) {\n // Save a backup of the row data when entering edit mode\n setBackupData((prev) => ({\n ...prev,\n [index]: { ...performanceData[index] },\n }));\n } else {\n // Clear the backup when exiting edit mode\n setBackupData((prev) => {\n const updatedBackup = { ...prev };\n delete updatedBackup[index];\n return updatedBackup;\n });\n\n setRowWarnings((prev) => {\n const updatedWarnings = { ...prev };\n delete updatedWarnings[index];\n return updatedWarnings;\n });\n }\n\n setPerformanceData(updatedData);\n };\n\n const handleInputChange = (index: number, key: string, value: any) => {\n const updatedData = [...performanceData];\n if (key == \"date\") {\n updatedData[index] = { ...updatedData[index], date: value };\n } else {\n updatedData[index] = {\n ...updatedData[index],\n values: { ...updatedData[index].values, [key]: value },\n };\n }\n setPerformanceData(updatedData);\n\n // Clear warnings if date changes\n if (key === \"date\" && rowWarnings[index]) {\n setRowWarnings((prev) => {\n const updatedWarnings = { ...prev };\n delete updatedWarnings[index];\n return updatedWarnings;\n });\n }\n };\n\n const saveRow = (index: number) => {\n const { date, values, id } = performanceData[index];\n\n if (!date) {\n setRowWarnings((prev) => ({\n ...prev,\n [index]: \"Date is required\",\n }));\n return;\n }\n\n savePerformanceRecords(positionId, date, id, values, inAdmin)\n .then((response) => response.json())\n .then((data) => {\n setPerformanceData((prevData) => {\n const updatedData = [...prevData];\n updatedData[index] = {\n ...updatedData[index],\n ...data.record,\n isEditing: false,\n };\n return updatedData;\n });\n });\n };\n const cancelEdit = (index: number) => {\n const isNewRow = !performanceData[index]?.id;\n if (isNewRow) {\n // Remove the new row entirely if it's canceled\n const updatedData = performanceData.filter((_, i) => i !== index);\n setPerformanceData(updatedData);\n } else {\n // Revert to the original data for existing rows\n const updatedData = [...performanceData];\n updatedData[index] = { ...backupData[index], isEditing: false }; // Restore original data and exit edit mode\n setPerformanceData(updatedData);\n setBackupData((prev) => {\n const updatedBackup = { ...prev };\n delete updatedBackup[index];\n return updatedBackup;\n });\n }\n };\n\n const addRow = () => {\n setPerformanceData((prev) => [\n {\n date: \"\",\n id: \"\",\n isEditing: true,\n metrics: defaultFields,\n values: defaultFields,\n },\n ...prev,\n ]);\n };\n\n const defaultFields = useMemo(() => {\n const row = {};\n fields.forEach((field) => {\n row[field.field_name] = 0;\n });\n\n return row;\n }, fields);\n\n return (\n
    \n {!inAdmin && (\n
    \n \n
    \n )}\n \n \n \n \n {fields.map(({ display_name }, index) => (\n \n {display_name}\n \n ))}\n {!inAdmin && }\n \n \n \n {performanceData.map(\n ({ date, metrics, values, isEditing }, index) => (\n <>\n \n \n {fields.map(({ field_name }) => (\n \n ))}\n {!inAdmin && (\n \n )}\n \n \n )\n )}\n \n
    DateAction
    \n {isEditing ? (\n
    \n \n handleInputChange(index, \"date\", e.target.value)\n }\n className={\n rowWarnings[index]\n ? \"form-control border-error-600\"\n : \"form-control\"\n }\n />\n
    \n ) : (\n new Date(date).toLocaleDateString(\"en-GB\")\n )}\n
    \n {isEditing ? (\n \n handleInputChange(index, field_name, e.target.value)\n }\n className='form-control'\n />\n ) : (\n
    {metrics[field_name]}
    \n )}\n
    \n {isEditing ? (\n
    \n
    \n saveRow(index)}\n />\n \n Save\n \n
    \n
    \n cancelEdit(index)}\n />\n \n Cancel\n \n
    \n
    \n ) : (\n
    \n toggleEditMode(index, true)}\n />\n \n Edit\n \n
    \n )}\n
    \n
    \n );\n}\n","import \"@/i18n/config\";\nimport { Focus } from \"packs/client_app/components/CommunityMemberDetails/tab/Focus\";\nimport React, { useEffect, useState } from \"react\";\nimport { useSearchParams } from \"react-router-dom\";\nimport { Tab, TabList, TabPanel, Tabs } from \"react-tabs\";\n\nimport { getTaggers } from \"@/client_app/components/CommunityMemberDetails/services/FetchAPIService\";\nimport { Absence } from \"@/client_app/components/CommunityMemberDetails/tab/Absence\";\nimport { AllComment } from \"@/client_app/components/CommunityMemberDetails/tab/AllComment\";\nimport { Coaching } from \"@/client_app/components/CommunityMemberDetails/tab/Coaching\";\nimport { Feedback } from \"@/client_app/components/CommunityMemberDetails/tab/Feedback\";\nimport { Onboarding } from \"@/client_app/components/CommunityMemberDetails/tab/Onboading\";\nimport { Performance } from \"@/client_app/components/CommunityMemberDetails/tab/Performance\";\ninterface Props {\n positionId: string;\n inAdmin?: boolean;\n}\n\nexport interface Tagger {\n id: string;\n full_name: string;\n type: string;\n}\nconst TAB_CLASSES = \"focus:outline-none cursor-pointer mr-8 text-base pb-2\";\nconst TAB_ACTIVE_CLASSES =\n \"text-legacyColor-neutral-1-900 border-primary-900 font-bold h-full border-b-2\";\nconst TAB_KEYS = [\n \"focus\",\n \"onboarding\",\n \"coaching\",\n \"feedback\",\n \"absence\",\n \"performance\",\n \"comment\",\n];\nexport function TabSection(props: Props) {\n const { positionId, inAdmin } = props;\n const [taggers, setTaggers] = useState([]);\n\n const [searchParams, setSearchParams] = useSearchParams();\n const activeTab = searchParams.get(\"tab\") || TAB_KEYS[0];\n\n const tabIndex = TAB_KEYS.indexOf(activeTab);\n\n const handleSelect = (index: number) => {\n searchParams.set(\"tab\", TAB_KEYS[index]);\n setSearchParams(searchParams);\n };\n\n useEffect(() => {\n if (positionId) {\n getTaggers(positionId, inAdmin)\n .then((response) => response.json())\n .then((data) => {\n setTaggers(data.taggers);\n });\n }\n }, [positionId]);\n\n return (\n \n \n \n Areas of Focus\n \n \n Onboarding\n \n \n Coaching\n \n \n Feedback\n \n \n Absence\n \n \n Performance\n \n \n All Comments\n \n \n \n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n \n
    \n \n
    \n
    \n \n );\n}\n","import \"@/i18n/config\";\nimport React, { useEffect, useState } from \"react\";\nimport Avatar from \"react-avatar\";\nimport SVG from \"react-inlinesvg\";\nimport Modal from \"react-modal\";\n\nimport Cross from \"@assets/icons/cross.svg\";\n\nimport { CommunityMemberAvatar } from \"@/client_app/components/CommunityMemberAvatar\";\nimport { ProfileInformation } from \"@/client_app/components/CommunityMemberDetails/ProfileInformation\";\nimport { getCommunityMemberProfiles } from \"@/client_app/components/CommunityMemberDetails/services/FetchAPIService\";\nimport { TabSection } from \"@/client_app/components/CommunityMemberDetails/TabSection\";\n\ninterface Prop {\n onBack: () => void;\n isOpen: boolean;\n inAdmin?: boolean;\n positionId: string;\n}\n\ninterface Profile {\n name: string;\n emergencyInfo: string;\n role: string;\n mobile: string;\n residency: string;\n profileImageUrl: string;\n}\nfunction CommunityMemberModal({\n onBack,\n isOpen,\n positionId,\n inAdmin,\n}: Prop): JSX.Element {\n const [profileData, setProfileData] = useState({\n name: \"\",\n emergencyInfo: \"\",\n role: \"\",\n mobile: \"\",\n residency: \"\",\n profileImageUrl: \"\",\n });\n\n useEffect(() => {\n if (positionId) {\n getCommunityMemberProfiles(positionId, inAdmin)\n .then((response) => response.json())\n .then((data) => {\n setProfileData({\n name: data.full_name,\n emergencyInfo: [\n data.emergency_contact_full_name,\n data.emergency_contact_relationship,\n data.emergency_contact_number,\n ].join(\" / \"),\n role: data.role,\n mobile: data.mobile_number,\n residency: data.visa_required\n ? \"Visa Required\"\n : \"No Visa Required\",\n profileImageUrl: data.profile_image_url,\n });\n });\n }\n }, [positionId]);\n\n return (\n \n
    \n
    \n \n

    \n {profileData.name}\n

    \n
    \n
    \n
    \n
    \n {profileData.profileImageUrl ? (\n \n ) : (\n \n )}\n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n );\n}\n\nexport { CommunityMemberModal };\n","import clsx from \"clsx\";\n\nimport { CommunityMemberAvatar } from \"@/client_app/components/CommunityMemberAvatar\";\nimport { isFinishingSoon } from \"@/client_app/features/weployees/utils/operations\";\nimport { Checkbox } from \"@/ui/Checkbox\";\n\ninterface CommunityMember {\n fullName: string;\n mobileNumber?: string;\n profileImageUrl?: string;\n}\ninterface Onboarding {\n completed: number;\n total: number;\n}\ninterface ItemWithDate {\n description: string;\n date: string;\n}\n\ninterface Absences {\n thisWeek: string;\n lastWeek: string;\n}\n\ninterface Performance {\n value: string;\n type: string;\n}\n\ninterface ActivePositionsListItemDesktopProps {\n communityMember: CommunityMember;\n finishOn: string;\n startOn: string;\n onboarding: Onboarding;\n feedback: ItemWithDate;\n coaching: ItemWithDate;\n absences: Absences;\n performance: Performance;\n title: string | JSX.Element;\n checked: boolean;\n newJobAcceptance: boolean;\n onChange: () => void;\n onClick: () => void;\n positionId: string;\n inAdmin?: boolean;\n}\n\nconst ActivePositionsListItemDesktop = ({\n communityMember,\n finishOn,\n startOn,\n title,\n checked,\n onboarding,\n feedback,\n coaching,\n absences,\n performance,\n newJobAcceptance,\n onChange,\n onClick,\n inAdmin,\n positionId,\n}: ActivePositionsListItemDesktopProps): JSX.Element => {\n const { fullName, mobileNumber, profileImageUrl } = communityMember;\n\n const tableCellStyleClasses =\n \"border border-neutral-200 border-l-0 border-r-0 first:border-l last:border-r first:rounded-tl-xl first:rounded-bl-xl last:rounded-br-xl last:rounded-tr-xl py-4 px-5 first:pl-6 last:pr-6\";\n\n return (\n \n \n
    \n {!inAdmin && }\n \n
    \n \n {fullName}\n \n \n {\" \"}\n {mobileNumber}\n \n
    \n {title}\n
    \n
    \n {newJobAcceptance && (\n
    NEW
    \n )}\n
    \n \n \n {startOn}\n \n {finishOn}\n \n \n
    \n {onboarding.total === 0 ? null : onboarding.completed ===\n onboarding.total ? (\n \"Done\"\n ) : (\n \n {onboarding.completed} / {onboarding.total}\n \n )}\n
    \n \n \n
    {coaching.description}
    \n
    {coaching.date}
    \n \n \n
    {feedback.description}
    \n
    {feedback.date}
    \n \n \n
    {absences.lastWeek} last week
    \n
    {absences.thisWeek} this week
    \n \n \n
    \n {performance?.type === \"percentage\"\n ? `${performance.value}%`\n : performance\n ? performance.value\n : \"\"}\n
    \n \n \n \n );\n};\n\nexport { ActivePositionsListItemDesktop };\n","import clsx from \"clsx\";\nimport { tenantPath } from \"helpers/tenant_path\";\nimport \"@/i18n/config\";\nimport { JOB_OPENING_DETAIL_PATH } from \"packs/client_app/config\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useSearchParams } from \"react-router-dom\";\n\nimport { CommunityMemberModal } from \"@/client_app/components/CommunityMemberDetails/CommunityMemberModal\";\nimport { ActivePositionsListItemDesktop } from \"@/client_app/features/weployees/components/ActivePositionsListItemDesktop\";\n\ninterface Props {\n activePositions: [];\n inAdmin?: boolean;\n selectedPositionIds: string[];\n checkboxOnchange?: (data: string) => void;\n modalOnClose?: () => void;\n}\nexport function PositionsTable(props: Props) {\n const {\n activePositions,\n inAdmin,\n checkboxOnchange,\n selectedPositionIds,\n modalOnClose,\n } = props;\n\n const [positionId, setPositionId] = useState(\"\");\n const [isCMModalOpen, setIsCMModalOpen] = useState(false);\n const [searchParams, setSearchParams] = useSearchParams();\n const positionParams = searchParams.get(\"position\");\n const tableHeaderStyleClasses =\n \"text-button-md font-bold text-primary-900 uppercase\";\n\n const openCommunityMemberModal = useCallback(\n (positionId: string) => () => {\n setPositionId(positionId);\n setIsCMModalOpen(true);\n searchParams.set(\"position\", positionId);\n setSearchParams(searchParams);\n },\n [positionId]\n );\n\n useEffect(() => {\n if (positionParams) {\n setPositionId(positionParams);\n setIsCMModalOpen(true);\n }\n }, [positionParams]);\n\n const jobLink = (\n jobOpeningId: string,\n jobOpeningName: string\n ): JSX.Element => {\n return (\n \n {jobOpeningName}\n \n );\n };\n\n return (\n <>\n {\n setIsCMModalOpen(false);\n searchParams.delete(\"position\");\n searchParams.delete(\"tab\");\n setSearchParams(searchParams);\n modalOnClose?.();\n }}\n />\n \n \n \n \n START DATE\n END DATE\n ONBOARDING\n COACHING\n FEEDBACK\n ABSENCE\n PERFORMANCE\n \n \n \n \n {activePositions.map(\n ({\n communityMember,\n finishOn,\n id,\n startOn,\n title,\n jobOpeningId,\n jobOpeningName,\n onboarding,\n feedback,\n coaching,\n absences,\n performance,\n newJobAcceptance,\n }) => (\n checkboxOnchange(id)}\n onClick={openCommunityMemberModal(id)}\n positionId={id}\n />\n )\n )}\n \n \n \n );\n}\n","import { tenantPath } from \"helpers/tenant_path\";\nimport i18next from \"i18next\";\nimport \"@/i18n/config\";\nimport { JOB_OPENING_DETAIL_PATH } from \"packs/client_app/config\";\nimport { useCallback, useState } from \"react\";\nimport { useQuery } from \"react-query\";\nimport { useSearchParams } from \"react-router-dom\";\n\nimport { ActivePositionListItemMobile } from \"./ActivePositionListItemMobile\";\nimport { BuyoutRequestPreview } from \"./BuyoutRequestPreview\";\nimport { ExtensionRequestPreview } from \"./ExtensionRequestPreview\";\nimport { FilterByWeployee } from \"./FilterByWeployee\";\nimport { NoActivePositions } from \"./NoActivePositions\";\nimport { PositionTabs } from \"./PositionTabs\";\nimport { PositionType } from \"./PositionType\";\n\nimport { FilterByManager } from \"@/client_app/components/FilterByManager\";\nimport { Form } from \"@/client_app/components/Form\";\nimport { Pagination } from \"@/client_app/components/Pagination\";\nimport { getActivePositions } from \"@/client_app/features/weployees/components/services/FetchAPIService\";\nimport { useMediaQuery } from \"@/client_app/hooks/useMediaQuery\";\nimport { useBackendContext } from \"@/client_app/stores/backend-context\";\nimport { PositionsTable } from \"@/common/components/PositionsTable\";\nimport { useDebouncedState } from \"@/hooks/useDebouncedState\";\nimport { usePageTitle } from \"@/hooks/usePageTitle\";\nimport { PrimaryButton } from \"@/ui/buttons\";\nimport { Checkbox } from \"@/ui/Checkbox\";\nimport { flash } from \"@/ui/Flash\";\n\nexport type ActionsType = \"EXTENSION\" | \"BUYOUT\" | null;\nconst limit = 20;\nexport const ActivePositions = (): JSX.Element => {\n const [searchParams] = useSearchParams();\n const {\n currentClientCompanyUserId,\n terminologyEmployee,\n titlePage,\n noActivePositionImageURL,\n } = useBackendContext();\n const [selectedManager, setSelectedManager] = useState({\n id: searchParams.has(\"manager_id\")\n ? searchParams.get(\"manager_id\")\n : currentClientCompanyUserId,\n name: \"Me\",\n });\n const employees = terminologyEmployee + \"s\";\n const isMobile = useMediaQuery(\"(max-width: 768px)\");\n const [selectedPositionIds, setSelectedPositionIds] = useState([]);\n const [paginationOffset, setPaginationOffset] = useState(0);\n const [communityMemberName, setCommunityMemberName] = useDebouncedState(\n \"\",\n 500\n );\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [action, setAction] = useState(null);\n\n const queryParams = {\n manager_id: selectedManager.id,\n community_member_name: communityMemberName,\n limit: limit,\n offset: paginationOffset,\n };\n\n const { data, isFetching, isSuccess, error, refetch } = useQuery(\n [\"activePositions\", queryParams],\n () =>\n getActivePositions(queryParams).then((response) => {\n return response.json();\n })\n );\n\n const activePositions = data?.activePositions || [];\n const totalCount = data?.totalCount || 0;\n\n const getSelecteableActivePositionIds = (action) => {\n if (!data) return [];\n\n return activePositions.flatMap((position) => {\n const requests =\n action == \"EXTENSION\"\n ? position.extensionRequests\n : position.buyoutRequests;\n\n const anyPendingRequests = requests.some(({ isPending }) => isPending);\n\n return anyPendingRequests ? [] : position.id;\n });\n };\n\n const handleSelectAllCheckboxChange = useCallback(\n (event) => {\n if (event.target.checked) {\n setSelectedPositionIds(activePositions.map((position) => position.id));\n } else {\n setSelectedPositionIds([]);\n }\n },\n [selectedPositionIds, activePositions]\n );\n\n const handleSelectCheckboxChange = (positionId: string) => {\n const newSelectedPositionIds = new Set(selectedPositionIds);\n newSelectedPositionIds.has(positionId)\n ? newSelectedPositionIds.delete(positionId)\n : newSelectedPositionIds.add(positionId);\n\n setSelectedPositionIds([...newSelectedPositionIds]);\n };\n\n const handleRequests = useCallback(\n (requestAction: ActionsType) => () => {\n if (selectedPositionIds.length === 0) return;\n\n const selecteableActivePositionIds =\n getSelecteableActivePositionIds(requestAction);\n const pendingRequestPositionIds = selectedPositionIds.filter(\n (x) => !selecteableActivePositionIds.includes(x)\n );\n if (pendingRequestPositionIds.length > 0) {\n flash.alert(i18next.t(\"clientApp.cannotSubmitRequest\"));\n pendingRequestPositionIds.forEach((positionId) => {\n const element = document.getElementById(\n `position-${positionId.substring(0, 10)}`\n );\n element?.classList.remove(\"hidden\");\n element.innerHTML = `Pending ${requestAction.toLowerCase()} request`;\n });\n } else {\n [...document.getElementsByClassName(\"pending-error\")].forEach(\n (element) => element.classList.add(\"hidden\")\n );\n setIsModalOpen(true);\n setAction(requestAction);\n }\n },\n [selectedPositionIds]\n );\n\n const handleModalClose = () => {\n refetch();\n };\n\n if (error) {\n return
    Error!
    ;\n }\n\n const handleBack = () => {\n setIsModalOpen(false);\n setAction(null);\n };\n\n const getSelectedPositions = (): PositionType[] => {\n return activePositions.filter(({ id }) => {\n return selectedPositionIds.includes(id);\n });\n };\n\n const jobLink = (\n jobOpeningId: string,\n jobOpeningName: string\n ): JSX.Element => {\n return (\n \n {jobOpeningName}\n \n );\n };\n\n const renderActionModal = (action) => {\n if (action == \"EXTENSION\") {\n return (\n \n );\n } else if (action == \"BUYOUT\") {\n return (\n \n );\n } else return;\n };\n\n usePageTitle(employees, titlePage);\n\n const renderRequestButtons = () => {\n if (isMobile) {\n return (\n
    \n
    \n \n \n
    \n
    \n 0 &&\n selectedPositionIds.length === activePositions.length\n }\n onChange={handleSelectAllCheckboxChange}\n />\n

    Select all

    \n
    \n
    \n );\n } else {\n return (\n
    \n 0 &&\n selectedPositionIds.length === activePositions.length\n }\n onChange={handleSelectAllCheckboxChange}\n />\n

    Select all

    \n
    \n \n \n
    \n
    \n );\n }\n };\n\n return (\n <>\n {renderActionModal(action)}\n
    \n
    {employees}
    \n
    \n\n
    \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n\n
    \n
    \n \n setCommunityMemberName(name)\n }\n />\n {renderRequestButtons()}\n
    \n
    \n {isFetching &&
    Loading...
    }\n {!isFetching && isSuccess && (\n
    \n <>\n {activePositions.length === 0 && (\n \n )}\n {activePositions.length > 0 &&\n isMobile &&\n activePositions.map(\n ({\n communityMember,\n finishOn,\n id,\n startOn,\n title,\n newJobAcceptance,\n jobOpeningId,\n jobOpeningName,\n }) => (\n
    \n handleSelectCheckboxChange(id)}\n positionId={id}\n />\n
    \n )\n )}\n {activePositions.length > 0 && !isMobile && (\n handleSelectCheckboxChange(data)}\n modalOnClose={handleModalClose}\n />\n )}\n \n
    \n )}\n setPaginationOffset(data)}\n perPage={limit}\n />\n \n );\n};\n","import { tenantPath } from \"helpers/tenant_path\";\nimport { ACTIVE_POSITIONS_PATH } from \"packs/client_app/config\";\nimport { getHeaders } from \"packs/client_app/config/request_headers\";\n\nexport const getActivePositions = ({\n manager_id,\n community_member_name,\n limit,\n offset,\n}) => {\n let query = `limit=${limit}&offset=${offset}`;\n if (manager_id) {\n query += `&manager_id=${manager_id}`;\n }\n\n if (community_member_name) {\n query += `&community_member_name=${community_member_name}`;\n }\n return fetch(tenantPath(`${ACTIVE_POSITIONS_PATH}?${query}`), {\n method: \"GET\",\n headers: getHeaders(),\n });\n};\n","import { tenantPath } from \"helpers/tenant_path\";\nimport i18next from \"i18next\";\nimport \"@/i18n/config\";\nimport { FullLayoutModal } from \"packs/ui/FullLayoutModal\";\nimport SVG from \"react-inlinesvg\";\n\nimport ImageUrl from \"@assets/illustrations/people_in_living_room.svg\";\n\nimport {\n WEPLOYEE_ACTIVE_POSITIONS_PATH,\n DASHBOARD_PATH,\n} from \"@/client_app/config\";\n\nimport { hotjarNoop } from \"@/hotjar\";\n\nwindow.executeHotjarEvent = window.executeHotjarEvent || hotjarNoop;\n\nexport const BuyoutRequestSuccess = (): JSX.Element => {\n const closeModal = () => {\n window.location.href = tenantPath(WEPLOYEE_ACTIVE_POSITIONS_PATH, true);\n };\n\n return (\n \n
    \n
    \n

    \n Awesome Work! 🎉\n

    \n
    \n
    \n \n
    \n
    \n\n
    \n \n BACK TO DASHBOARD\n \n
    \n\n
    \n \n
    \n
    \n
    \n \n );\n};\n","import { tenantPath } from \"helpers/tenant_path\";\nimport i18next from \"i18next\";\nimport \"@/i18n/config\";\nimport { FullLayoutModal } from \"packs/ui/FullLayoutModal\";\nimport SVG from \"react-inlinesvg\";\n\nimport ImageUrl from \"@assets/illustrations/people_in_living_room.svg\";\n\nimport { WEPLOYEE_ACTIVE_POSITIONS_PATH } from \"@/client_app/config\";\n\nimport { hotjarNoop } from \"@/hotjar\";\n\nwindow.executeHotjarEvent = window.executeHotjarEvent || hotjarNoop;\n\nexport const ExtensionsRequestSuccess = (): JSX.Element => {\n const closeModal = () => {\n window.location.href = tenantPath(WEPLOYEE_ACTIVE_POSITIONS_PATH, true);\n };\n\n const handleFeedBack = (e) => {\n window.executeHotjarEvent(e);\n };\n\n return (\n \n
    \n
    \n

    \n Awesome Work! 🎉\n

    \n
    \n
    \n \n
    \n
    \n\n
    \n
    \n

    \n How was requesting an extension?\n

    \n \n Send feedback\n \n
    \n
    \n\n
    \n \n
    \n
    \n
    \n \n );\n};\n","import i18next from \"i18next\";\nimport \"@/i18n/config\";\nimport { useCallback } from \"react\";\nimport SVG from \"react-inlinesvg\";\n\nimport ComputerAndPlantImageUrl from \"@assets/illustrations/computer_and_plant.svg\";\n\ninterface NoPastPositionsProps {\n noSearchResults: boolean;\n noActivePositionImageURL: string;\n}\n\nconst NoPastPositions = ({\n noSearchResults,\n noActivePositionImageURL,\n}: NoPastPositionsProps): JSX.Element => {\n let heading;\n let textContent;\n const customStyles = {\n height: \"200px\",\n width: \"100%\",\n };\n\n if (noSearchResults) {\n heading = i18next.t(\"clientApp.noPastPositions.searchResults.heading\");\n textContent = i18next.t(\n \"clientApp.noPastPositions.searchResults.textContent\"\n );\n } else {\n heading = i18next.t(\"clientApp.noPastPositions.defaultResults.heading\");\n textContent = i18next.t(\n \"clientApp.noPastPositions.defaultResults.textContent\",\n {\n terminologyEmployee: window.terminologyEmployee,\n }\n );\n }\n const renderImage = useCallback(() => {\n if (noActivePositionImageURL) {\n return (\n \n );\n } else {\n return ;\n }\n }, [noActivePositionImageURL]);\n return (\n
    \n
    \n {renderImage()}\n

    {heading}

    \n

    {textContent}

    \n
    \n
    \n );\n};\n\nexport { NoPastPositions };\n","import clsx from \"clsx\";\n\nimport { CommunityMemberAvatar } from \"@/client_app/components/CommunityMemberAvatar\";\nimport { Checkbox } from \"@/ui/Checkbox\";\n\ninterface CommunityMember {\n fullName: string;\n profileImageUrl?: string;\n}\n\ninterface PastPositionListItemDesktopProps {\n communityMember: CommunityMember;\n finishOn: string;\n startOn: string;\n title: string | JSX.Element;\n checked: boolean;\n onChange: () => void;\n}\n\nconst PastPositionListItemDesktop = ({\n communityMember,\n finishOn,\n startOn,\n title,\n checked,\n onChange,\n}: PastPositionListItemDesktopProps): JSX.Element => {\n const { fullName, profileImageUrl } = communityMember;\n\n const tableCellStyleClasses =\n \"border border-neutral-200 border-l-0 border-r-0 first:border-l last:border-r first:rounded-tl-xl first:rounded-bl-xl last:rounded-br-xl last:rounded-tr-xl py-4 px-5 first:pl-6 last:pr-6\";\n\n return (\n \n \n
    \n \n \n {fullName}\n
    \n \n {title}\n {startOn}\n \n {finishOn}\n \n \n \n );\n};\n\nexport { PastPositionListItemDesktop };\n","import clsx from \"clsx\";\n\nimport { CommunityMemberAvatar } from \"@/client_app/components/CommunityMemberAvatar\";\nimport { Checkbox } from \"@/ui/Checkbox\";\n\ninterface CommunityMember {\n fullName: string;\n profileImageUrl?: string;\n}\n\ninterface PastPositionListItemMobileProps {\n communityMember: CommunityMember;\n finishOn: string;\n startOn: string;\n title: string | JSX.Element;\n checked: boolean;\n onChange: () => void;\n}\n\nconst PastPositionListItemMobile = ({\n communityMember,\n finishOn,\n startOn,\n title,\n checked,\n onChange,\n}: PastPositionListItemMobileProps): JSX.Element => {\n const { fullName, profileImageUrl } = communityMember;\n return (\n \n
    \n \n \n
    \n\n
    \n

    \n {fullName}\n

    \n

    {title}

    \n

    \n Start Date: \n {startOn}\n

    \n

    \n End Date: \n {finishOn}\n

    \n
    \n \n );\n};\n\nexport { PastPositionListItemMobile };\n","import clsx from \"clsx\";\nimport i18next from \"i18next\";\nimport \"@/i18n/config\";\nimport { useState } from \"react\";\nimport Flatpickr from \"react-flatpickr\";\nimport { useForm, useWatch } from \"react-hook-form\";\nimport SVG from \"react-inlinesvg\";\n\nimport DownArrow from \"@assets/icons/down.svg\";\nimport Info from \"@assets/icons/info-primary-900.svg\";\nimport UpArrow from \"@assets/icons/up.svg\";\nimport PeopleInLivingRoomImageUrl from \"@assets/illustrations/people_in_living_room.svg\";\nimport graphqlClient from \"@graphql/client_app/client\";\nimport { Position } from \"@graphql/client_app/types\";\nimport {\n useFetchRehireRequestEmploymentTypesQuery,\n useCreateRehireRequestsMutation,\n} from \"@graphql/client_app/types\";\n\nimport { CommunityMemberAvatar } from \"@/client_app/components/CommunityMemberAvatar\";\nimport { PrimaryButton } from \"@/ui/buttons\";\nimport { flash } from \"@/ui/Flash\";\nimport { FullLayoutModal } from \"@/ui/FullLayoutModal\";\n\ninterface RehireRequestProp {\n onBack: () => void;\n setSelectedPositionIds: (positionIds: Array) => void;\n isOpen: boolean;\n selectedPositions?: Array;\n}\n\ntype ChangeFields = Omit & R;\nexport type PositionType = ChangeFields<\n Position,\n {\n communityMember: Omit<\n Position[\"communityMember\"],\n \"email\" | \"preferredName\" | \"timeZone\"\n >;\n extensionRequests?: { isPending: boolean }[];\n }\n>;\n\nfunction RehireRequestPreview({\n onBack,\n setSelectedPositionIds,\n selectedPositions = [],\n}: RehireRequestProp): JSX.Element {\n const employees = window.terminologyEmployee + \"s\";\n\n const {\n register,\n control,\n handleSubmit: reactHookFormHandleSubmit,\n setError,\n setValue,\n formState: { errors },\n } = useForm();\n\n const employmentTypeValue = useWatch({\n control,\n name: \"rehire_request.employmentType\",\n });\n\n const mutation = useCreateRehireRequestsMutation(graphqlClient);\n const [listExpanded, setListExpanded] = useState(true);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const {\n data: rehireRequestEmploymentTypesData,\n isLoading: isLoadingRehireRequestEmploymentTypes,\n isSuccess: isSuccessRehireRequestEmploymentTypes,\n } = useFetchRehireRequestEmploymentTypesQuery(graphqlClient);\n\n function getHeading() {\n return selectedPositions.length > 1\n ? `${selectedPositions.length} ${employees} selected`\n : `${selectedPositions[0].communityMember.fullName} selected`;\n }\n\n function handleSubmit(data): void {\n setIsSubmitting(true);\n\n const variables = {\n communityMemberIds: selectedPositions.map(\n (position) => position.communityMember.id\n ),\n ...data.rehire_request,\n };\n\n mutation.mutateAsync(variables).then((data) => {\n const errors = data.createRehireRequests.errors;\n setIsSubmitting(false);\n\n if (errors.length > 0) {\n handleFailure(errors);\n } else {\n handleSuccess();\n }\n });\n }\n\n function handleFailure(errors): void {\n errors.forEach((error) => {\n setError(`rehire_request.${error.path}`, {\n type: \"custom\",\n message: error.message,\n });\n });\n }\n\n function handleSuccess() {\n flash.notice(i18next.t(\"clientApp.rehireRequestPreview.successNotice\"));\n onBack();\n setSelectedPositionIds([]);\n }\n\n function onSelectStartDate(date: Date): void {\n setValue(\"rehire_request.startDate\", date.toString());\n }\n\n function onSelectEndDate(date: Date): void {\n setValue(\"rehire_request.endDate\", date.toString());\n }\n\n return (\n \n
    \n
    \n
    \n
    \n {getHeading()}\n
    \n {selectedPositions.length > 1 && (\n setListExpanded(!listExpanded)}\n >\n \n {listExpanded ? \"HIDE\" : \"VIEW\"} ALL\n \n \n \n )}\n
    \n
    \n {selectedPositions.map(({ id, communityMember }) => {\n return (\n \n \n
    {communityMember.fullName}
    \n
    \n );\n })}\n
    \n \n
    \n {isLoadingRehireRequestEmploymentTypes &&\n \"Loading rehire request employment types\"}\n {isSuccessRehireRequestEmploymentTypes && (\n <>\n \n
    \n {rehireRequestEmploymentTypesData.rehireRequestEmploymentTypes.map(\n (option) => {\n return (\n
    \n \n \n {option.label}\n \n
    \n );\n }\n )}\n
    \n \n )}\n
    \n {errors?.rehire_request?.employmentType?.message}\n
    \n
    \n\n
    \n \n {i18next.t(\n \"clientApp.rehireRequestPreview.form.startDate.label\"\n )}\n \n \n \n
    \n {errors?.rehire_request?.startDate?.message}\n
    \n
    \n\n {employmentTypeValue != \"permanent\" ? (\n <>\n
    \n \n {i18next.t(\n \"clientApp.rehireRequestPreview.form.endDate.label\"\n )}\n \n \n \n
    \n {errors?.rehire_request?.endDate?.message}\n
    \n
    \n \n ) : (\n
    \n \n \n
    \n {errors?.rehire_request?.salary?.message}\n
    \n
    \n )}\n\n
    \n \n \n
    \n
    \n \n \n {i18next.t(\"clientApp.rehireRequestPreview.form.infoMessage\", {\n terminologyEmployee: window.terminologyEmployee,\n })}\n \n
    \n \n \n
    \n
    \n \n
    \n \n \n );\n}\n\nexport { RehireRequestPreview };\n","import clsx from \"clsx\";\nimport i18next from \"i18next\";\nimport \"@/i18n/config\";\nimport { useCallback, useState } from \"react\";\nimport { useSearchParams } from \"react-router-dom\";\n\nimport graphqlClient from \"@graphql/client_app/client\";\nimport { useFetchAllPastPositionsQuery } from \"@graphql/client_app/types\";\n\nimport { FilterByWeployee } from \"./FilterByWeployee\";\nimport { NoPastPositions } from \"./NoPastPositions\";\nimport { PastPositionListItemDesktop } from \"./PastPositionListItemDesktop\";\nimport { PastPositionListItemMobile } from \"./PastPositionListItemMobile\";\nimport { PositionTabs } from \"./PositionTabs\";\nimport { RehireRequestPreview, PositionType } from \"./RehireRequestPreview\";\n\nimport { FilterByManager } from \"@/client_app/components/FilterByManager\";\nimport { Form } from \"@/client_app/components/Form\";\nimport { useMediaQuery } from \"@/client_app/hooks/useMediaQuery\";\nimport { useBackendContext } from \"@/client_app/stores/backend-context\";\nimport { useDebouncedState } from \"@/hooks/useDebouncedState\";\nimport { usePageTitle } from \"@/hooks/usePageTitle\";\nimport { PrimaryButton } from \"@/ui/buttons\";\nimport { Checkbox } from \"@/ui/Checkbox\";\n\nexport type ActionsType = \"REHIRE\" | null;\n\nexport const PastPositions = (): JSX.Element => {\n const [searchParams] = useSearchParams();\n const { currentClientCompanyUserId, titlePage, noActivePositionImageURL } =\n useBackendContext();\n const [selectedManager, setSelectedManager] = useState({\n id: searchParams.has(\"manager_id\")\n ? searchParams.get(\"manager_id\")\n : currentClientCompanyUserId,\n name: \"Me\",\n });\n const employees = window.terminologyEmployee + \"s\";\n const isMobile = useMediaQuery(\"(max-width: 768px)\");\n const [selectedPositionIds, setSelectedPositionIds] = useState([]);\n const [communityMemberName, setCommunityMemberName] = useDebouncedState(\n \"\",\n 500\n );\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [action, setAction] = useState(null);\n\n const { isFetching, isSuccess, data, error } = useFetchAllPastPositionsQuery(\n graphqlClient,\n {\n communityMemberName,\n managerId: selectedManager.id,\n }\n );\n const pastPositions = data?.pastPositions || [];\n const selecteablePastPositionIds = pastPositions.flatMap(\n (position) => position.id\n );\n\n const tableHeaderStyleClasses =\n \"text-button-md font-bold text-primary-900 uppercase\";\n\n const handleSelectAllCheckboxChange = useCallback(\n (event) => {\n if (event.target.checked) {\n setSelectedPositionIds(pastPositions.map((position) => position.id));\n } else {\n setSelectedPositionIds([]);\n }\n },\n [selectedPositionIds, pastPositions]\n );\n\n const handleSelectCheckboxChange = (positionId: string) => {\n const newSelectedPositionIds = new Set(selectedPositionIds);\n newSelectedPositionIds.has(positionId)\n ? newSelectedPositionIds.delete(positionId)\n : newSelectedPositionIds.add(positionId);\n\n setSelectedPositionIds([...newSelectedPositionIds]);\n };\n\n const handleRehire = useCallback(() => {\n if (selectedPositionIds.length < 1) return;\n\n setIsModalOpen(true);\n setAction(\"REHIRE\");\n }, [selectedPositionIds]);\n\n if (error) {\n return
    Error!
    ;\n }\n\n const handleBack = () => {\n setIsModalOpen(false);\n setAction(null);\n };\n\n const getSelectedPositions = (): PositionType[] => {\n return pastPositions.filter(({ id }) => {\n return new Set(selectedPositionIds).has(id);\n });\n };\n\n usePageTitle(employees, titlePage);\n\n return (\n <>\n {isModalOpen && action === \"REHIRE\" && (\n \n )}\n
    {employees}
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n setCommunityMemberName(name)\n }\n />\n
    \n \n

    Select all

    \n
    \n \n
    \n
    \n
    \n
    \n {isFetching &&
    Loading...
    }\n {!isFetching && isSuccess && (\n
    \n <>\n {pastPositions.length === 0 && (\n \n )}\n {pastPositions.length > 0 &&\n isMobile &&\n pastPositions.map(\n ({ communityMember, finishOn, id, startOn, title }) => (\n
    \n handleSelectCheckboxChange(id)}\n />\n
    \n )\n )}\n {pastPositions.length > 0 && !isMobile && (\n \n \n \n \n \n {i18next.t(\"clientApp.pastPositions.tableHeader.role\")}\n \n \n {i18next.t(\n \"clientApp.pastPositions.tableHeader.startDate\"\n )}\n \n \n {i18next.t(\"clientApp.pastPositions.tableHeader.endDate\")}\n \n \n \n \n \n {pastPositions.map(\n ({ communityMember, finishOn, id, startOn, title }) => (\n handleSelectCheckboxChange(id)}\n />\n )\n )}\n \n \n )}\n \n
    \n )}\n \n );\n};\n","import { Route, Navigate, Outlet } from \"react-router-dom\";\n\nimport {\n STUDENT_ACTIVE_POSITIONS_PATH,\n STUDENT_PAST_POSITIONS_PATH,\n STUDENTS_EXTENSION_REQUEST_SUCCESS_PATH,\n STUDENTS_BUYOUT_REQUEST_SUCCESS_PATH,\n STUDENTS_PATH,\n WEPLOYEE_ACTIVE_POSITIONS_PATH,\n WEPLOYEE_PAST_POSITIONS_PATH,\n WEPLOYEES_EXTENSION_REQUEST_SUCCESS_PATH,\n WEPLOYEES_BUYOUT_REQUEST_SUCCESS_PATH,\n WEPLOYEES_PATH,\n} from \"@/client_app/config\";\n\nimport { ActivePositions } from \"@/client_app/features/weployees/components/ActivePositions\";\nimport { BuyoutRequestSuccess } from \"@/client_app/features/weployees/components/BuyoutRequestSuccess\";\nimport { ExtensionsRequestSuccess } from \"@/client_app/features/weployees/components/ExtensionsRequestSuccess\";\nimport { PastPositions } from \"@/client_app/features/weployees/components/PastPositions\";\n\nexport const weployeesRoutes = (\n }>\n }\n />\n }\n key='weployeeRoute'\n />\n }\n key='weployeeRoute'\n />\n }\n key='extensionsRequestSuccessRoute'\n />\n\n }\n key='BuyoutRequestSuccessRoute'\n />\n \n);\n\nexport const studentsRoutes = (\n }>\n }\n />\n }\n key='weployeeRoute'\n />\n }\n key='weployeeRoute'\n />\n }\n key='extensionsRequestSuccessRoute'\n />\n }\n key='BuyoutRequestSuccessRoute'\n />\n \n);\n","import { Routes, Route } from \"react-router-dom\";\n\nimport { NotFound } from \"@/client_app/components/NotFound\";\nimport {\n monashTimesheetApprovalRoutes,\n timesheetApprovalRoutes,\n} from \"@/client_app/features/timesheetApproval/routes\";\nimport {\n studentsRoutes,\n weployeesRoutes,\n} from \"@/client_app/features/weployees/routes\";\n\nexport const AppRoutes = (): JSX.Element => {\n return (\n \n {timesheetApprovalRoutes}\n {monashTimesheetApprovalRoutes}\n {weployeesRoutes}\n {studentsRoutes}\n } />\n } />\n \n );\n};\n","import { QueryClient } from \"react-query\";\n\nconst queryConfig = {\n queries: {\n refetchOnWindowFocus: false,\n },\n};\n\nexport const queryClient = new QueryClient({ defaultOptions: queryConfig });\n","import * as React from \"react\";\nimport { Toaster } from \"react-hot-toast\";\nimport { QueryClientProvider } from \"react-query\";\nimport { BrowserRouter as Router } from \"react-router-dom\";\n\nimport { queryClient } from \"@/client_app/lib/react-query\";\nimport { BackendContextProvider } from \"@/client_app/stores/backend-context\";\n\ninterface AppProviderProps {\n backendContext: unknown;\n children: React.ReactNode;\n}\n\nexport const AppProvider = ({\n backendContext,\n children,\n}: AppProviderProps): JSX.Element => {\n return (\n \n \n {children}\n \n \n \n );\n};\n","import { NextUIProvider } from \"@nextui-org/system\";\n\nimport { AppRoutes } from \"./routes\";\n\nimport { AppProvider } from \"@/client_app/providers/app\";\n\ninterface AppProps {\n backendContext: unknown;\n}\n\nexport const App = ({ backendContext }: AppProps): JSX.Element => {\n return (\n \n \n \n \n \n );\n};\n","import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\n\nimport { App } from \"./App\";\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const node = document.getElementById(\"context-data\");\n if (!node) return;\n\n const context = JSON.parse(node.getAttribute(\"data\"));\n\n ReactDOM.render(\n \n \n ,\n document.getElementById(\"app\")\n );\n});\n","import { useEffect } from \"react\";\n\nconst NotFound = (): JSX.Element => {\n useEffect(() => {\n window.location.href = \"/404\";\n });\n\n return <>;\n};\n\nexport { NotFound };\n","import { GraphQLClient } from \"graphql-request\";\n\nconst client = new GraphQLClient(\"/admin/graphql\", {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n});\n\nexport default client;\n","import { GraphQLClient } from \"graphql-request\";\nimport { RequestInit } from \"graphql-request/dist/types.dom\";\nimport {\n useMutation,\n useQuery,\n UseMutationOptions,\n UseQueryOptions,\n} from \"react-query\";\nexport type Maybe = T | null;\nexport type InputMaybe = Maybe;\nexport type Exact = {\n [K in keyof T]: T[K];\n};\nexport type MakeOptional = Omit & {\n [SubKey in K]?: Maybe;\n};\nexport type MakeMaybe = Omit & {\n [SubKey in K]: Maybe;\n};\n\nfunction fetcher(\n client: GraphQLClient,\n query: string,\n variables?: TVariables,\n headers?: RequestInit[\"headers\"]\n) {\n return async (): Promise =>\n client.request(query, variables, headers);\n}\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: string;\n String: string;\n Boolean: boolean;\n Int: number;\n Float: number;\n /** An ISO 8601-encoded date */\n ISO8601Date: any;\n /** An ISO 8601-encoded datetime */\n ISO8601DateTime: any;\n};\n\nexport type Attendance = {\n __typename?: \"Attendance\";\n additionalNotes?: Maybe;\n approvedBy?: Maybe;\n belowMinimumEngagementReasonToHuman?: Maybe;\n breaks?: Maybe>;\n duration: Scalars[\"Int\"];\n finishAt: Scalars[\"ISO8601DateTime\"];\n forReview?: Maybe;\n hasPublicHoliday?: Maybe;\n id: Scalars[\"ID\"];\n minimumEngagementDuration: Scalars[\"Int\"];\n minimumEngagementRequired?: Maybe;\n position: Position;\n startAt: Scalars[\"ISO8601DateTime\"];\n state: AttendanceStateEnum;\n workedBy: CommunityMember;\n};\n\n/** An attendance cost item */\nexport type AttendanceCostItem = {\n __typename?: \"AttendanceCostItem\";\n attendanceId: Scalars[\"ID\"];\n cost: Scalars[\"Float\"];\n hoursWorked: Scalars[\"Float\"];\n positionTitle: Scalars[\"String\"];\n startTime: Scalars[\"ISO8601DateTime\"];\n weployeeName: Scalars[\"String\"];\n weployerName: Scalars[\"String\"];\n};\n\n/** An attendance cost items summary */\nexport type AttendanceCostItemsSummary = {\n __typename?: \"AttendanceCostItemsSummary\";\n attendanceCostItems: Array;\n grandTotal: Scalars[\"Float\"];\n paymentTermSurcharge: Scalars[\"Float\"];\n totalHoursWorked: Scalars[\"Float\"];\n};\n\n/** Status of an attendance in the approval process */\nexport enum AttendanceStateEnum {\n /** Attendance is approved by the client user */\n Approved = \"approved\",\n /** Attendance is requested to be changed */\n ChangesRequested = \"changes_requested\",\n /** Attendance is finalized and ready for pay run */\n PayRunFinalized = \"pay_run_finalized\",\n /** Attendance is resubmitted after being changed */\n Resubmitted = \"resubmitted\",\n /** Attendance is submitted the first time */\n Submitted = \"submitted\",\n}\n\nexport type BillingContact = {\n __typename?: \"BillingContact\";\n billingAddress?: Maybe;\n billingCountry?: Maybe;\n billingEmails?: Maybe;\n billingName: Scalars[\"String\"];\n billingSubdivision?: Maybe;\n billingTaxNumber?: Maybe;\n id: Scalars[\"ID\"];\n};\n\nexport type Break = {\n __typename?: \"Break\";\n duration: Scalars[\"Int\"];\n finishAt: Scalars[\"ISO8601DateTime\"];\n id: Scalars[\"ID\"];\n startAt: Scalars[\"ISO8601DateTime\"];\n};\n\nexport type ClientCompany = {\n __typename?: \"ClientCompany\";\n attendanceCount?: Maybe;\n billingContacts?: Maybe>;\n companyUsers?: Maybe>;\n id: Scalars[\"ID\"];\n locations?: Maybe>;\n name: Scalars[\"String\"];\n positionTitles: Array;\n};\n\nexport type ClientCompanyUser = {\n __typename?: \"ClientCompanyUser\";\n email: Scalars[\"String\"];\n fullName: Scalars[\"String\"];\n id: Scalars[\"ID\"];\n};\n\nexport type ClientUser = {\n __typename?: \"ClientUser\";\n email: Scalars[\"String\"];\n fullName: Scalars[\"String\"];\n id: Scalars[\"ID\"];\n profileImageUrl?: Maybe;\n};\n\nexport type CommunityMember = {\n __typename?: \"CommunityMember\";\n email: Scalars[\"String\"];\n fullName: Scalars[\"String\"];\n id: Scalars[\"ID\"];\n preferredName: Scalars[\"String\"];\n profileImageUrl?: Maybe;\n timeZone: Scalars[\"String\"];\n};\n\n/** Attributes for create a preview invoice */\nexport type CreatePreviewInvoiceInput = {\n /** A list of attendance id for invoicing */\n attendanceIds: Array;\n clientCompanyId: Scalars[\"String\"];\n formsOrganizationAppInvoicesPreviewsCreate: InvoicePreviewScopeInput;\n};\n\n/** Autogenerated input type of CreatePreviewInvoiceMutation */\nexport type CreatePreviewInvoiceMutationInput = {\n /** A unique identifier for the client performing the mutation. */\n clientMutationId?: InputMaybe;\n previewInvoice: CreatePreviewInvoiceInput;\n};\n\n/** Autogenerated return type of CreatePreviewInvoiceMutation. */\nexport type CreatePreviewInvoiceMutationPayload = {\n __typename?: \"CreatePreviewInvoiceMutationPayload\";\n attendanceIds?: Maybe>;\n /** A unique identifier for the client performing the mutation. */\n clientMutationId?: Maybe;\n errors: Array;\n};\n\n/** A user-readable error */\nexport type FormError = {\n __typename?: \"FormError\";\n /** A description of the error */\n message: Scalars[\"String\"];\n /** Which input value this error came from */\n path?: Maybe;\n};\n\n/** Attributes of preview invoice scope */\nexport type InvoicePreviewScopeInput = {\n billingContactId: Scalars[\"String\"];\n invoicesConsolidation?: InputMaybe;\n reference?: InputMaybe;\n};\n\nexport type Location = {\n __typename?: \"Location\";\n id: Scalars[\"ID\"];\n subdivision: Scalars[\"String\"];\n subdivisionLabel: Scalars[\"String\"];\n};\n\n/** The mutation root of organization app */\nexport type Mutation = {\n __typename?: \"Mutation\";\n createPreviewInvoice?: Maybe;\n};\n\n/** The mutation root of organization app */\nexport type MutationCreatePreviewInvoiceArgs = {\n input: CreatePreviewInvoiceMutationInput;\n};\n\nexport type Position = {\n __typename?: \"Position\";\n id: Scalars[\"ID\"];\n manager: ClientCompanyUser;\n title: Scalars[\"String\"];\n};\n\n/** The query root of organization app */\nexport type Query = {\n __typename?: \"Query\";\n attendanceCostItemsSummary: AttendanceCostItemsSummary;\n attendancesForInvoicing: Array;\n clientCompanies: Array;\n clientCompany: ClientCompany;\n paramsForFilterAttendance: ClientCompany;\n};\n\n/** The query root of organization app */\nexport type QueryAttendanceCostItemsSummaryArgs = {\n attendanceIds: Array;\n};\n\n/** The query root of organization app */\nexport type QueryAttendancesForInvoicingArgs = {\n clientCompanyId: Scalars[\"ID\"];\n finishAt?: InputMaybe;\n managerIdIs?: InputMaybe;\n positionTitle?: InputMaybe;\n searchByCommunityMember?: InputMaybe;\n startAt?: InputMaybe;\n subdivision?: InputMaybe;\n};\n\n/** The query root of organization app */\nexport type QueryClientCompanyArgs = {\n clientCompanyId: Scalars[\"ID\"];\n};\n\n/** The query root of organization app */\nexport type QueryParamsForFilterAttendanceArgs = {\n clientCompanyId: Scalars[\"ID\"];\n};\n\nexport type CreatePreviewInvoiceMutationVariables = Exact<{\n clientCompanyId: Scalars[\"String\"];\n attendanceIds: Array | Scalars[\"String\"];\n billingContactId: Scalars[\"String\"];\n invoicesConsolidation: Scalars[\"Boolean\"];\n reference: Scalars[\"String\"];\n}>;\n\nexport type CreatePreviewInvoiceMutation = {\n __typename?: \"Mutation\";\n createPreviewInvoice?: {\n __typename?: \"CreatePreviewInvoiceMutationPayload\";\n attendanceIds?: Array | null;\n errors: Array<{\n __typename?: \"FormError\";\n path?: string | null;\n message: string;\n }>;\n } | null;\n};\n\nexport type FetchAttendanceCostItemsSummaryQueryVariables = Exact<{\n attendanceIds: Array | Scalars[\"ID\"];\n}>;\n\nexport type FetchAttendanceCostItemsSummaryQuery = {\n __typename?: \"Query\";\n attendanceCostItemsSummary: {\n __typename?: \"AttendanceCostItemsSummary\";\n paymentTermSurcharge: number;\n totalHoursWorked: number;\n grandTotal: number;\n attendanceCostItems: Array<{\n __typename?: \"AttendanceCostItem\";\n attendanceId: string;\n weployeeName: string;\n weployerName: string;\n positionTitle: string;\n cost: number;\n startTime: any;\n hoursWorked: number;\n }>;\n };\n};\n\nexport type FetchAttendancesForInvoicingQueryVariables = Exact<{\n clientCompanyId: Scalars[\"ID\"];\n communityMemberName?: InputMaybe;\n filteredAttendanceIds?: InputMaybe;\n subdivision?: InputMaybe;\n managerId?: InputMaybe;\n startAt?: InputMaybe;\n finishAt?: InputMaybe;\n positionTitle?: InputMaybe;\n}>;\n\nexport type FetchAttendancesForInvoicingQuery = {\n __typename?: \"Query\";\n attendancesForInvoicing: Array<{\n __typename?: \"Attendance\";\n id: string;\n state: AttendanceStateEnum;\n startAt: any;\n finishAt: any;\n duration: number;\n minimumEngagementDuration: number;\n minimumEngagementRequired?: boolean | null;\n belowMinimumEngagementReasonToHuman?: string | null;\n additionalNotes?: string | null;\n position: {\n __typename?: \"Position\";\n id: string;\n title: string;\n manager: {\n __typename?: \"ClientCompanyUser\";\n id: string;\n fullName: string;\n email: string;\n };\n };\n breaks?: Array<{\n __typename?: \"Break\";\n id: string;\n startAt: any;\n finishAt: any;\n duration: number;\n }> | null;\n workedBy: {\n __typename?: \"CommunityMember\";\n id: string;\n email: string;\n fullName: string;\n preferredName: string;\n timeZone: string;\n };\n }>;\n};\n\nexport type FetchClientCompaniesQueryVariables = Exact<{\n [key: string]: never;\n}>;\n\nexport type FetchClientCompaniesQuery = {\n __typename?: \"Query\";\n clientCompanies: Array<{\n __typename?: \"ClientCompany\";\n id: string;\n name: string;\n attendanceCount?: number | null;\n }>;\n};\n\nexport type FetchClientCompanyQueryVariables = Exact<{\n clientCompanyId: Scalars[\"ID\"];\n}>;\n\nexport type FetchClientCompanyQuery = {\n __typename?: \"Query\";\n clientCompany: {\n __typename?: \"ClientCompany\";\n id: string;\n name: string;\n attendanceCount?: number | null;\n billingContacts?: Array<{\n __typename?: \"BillingContact\";\n id: string;\n billingName: string;\n }> | null;\n };\n};\n\nexport type FetchParamsForFilterAttendanceQueryVariables = Exact<{\n clientCompanyId: Scalars[\"ID\"];\n}>;\n\nexport type FetchParamsForFilterAttendanceQuery = {\n __typename?: \"Query\";\n paramsForFilterAttendance: {\n __typename?: \"ClientCompany\";\n id: string;\n name: string;\n positionTitles: Array;\n companyUsers?: Array<{\n __typename?: \"ClientCompanyUser\";\n id: string;\n fullName: string;\n }> | null;\n locations?: Array<{\n __typename?: \"Location\";\n subdivision: string;\n subdivisionLabel: string;\n }> | null;\n };\n};\n\nexport const CreatePreviewInvoiceDocument = `\n mutation createPreviewInvoice($clientCompanyId: String!, $attendanceIds: [String!]!, $billingContactId: String!, $invoicesConsolidation: Boolean!, $reference: String!) {\n createPreviewInvoice(\n input: {previewInvoice: {attendanceIds: $attendanceIds, clientCompanyId: $clientCompanyId, formsOrganizationAppInvoicesPreviewsCreate: {billingContactId: $billingContactId, invoicesConsolidation: $invoicesConsolidation, reference: $reference}}}\n ) {\n attendanceIds\n errors {\n path\n message\n }\n }\n}\n `;\nexport const useCreatePreviewInvoiceMutation = <\n TError = unknown,\n TContext = unknown\n>(\n client: GraphQLClient,\n options?: UseMutationOptions<\n CreatePreviewInvoiceMutation,\n TError,\n CreatePreviewInvoiceMutationVariables,\n TContext\n >,\n headers?: RequestInit[\"headers\"]\n) =>\n useMutation<\n CreatePreviewInvoiceMutation,\n TError,\n CreatePreviewInvoiceMutationVariables,\n TContext\n >(\n [\"createPreviewInvoice\"],\n (variables?: CreatePreviewInvoiceMutationVariables) =>\n fetcher<\n CreatePreviewInvoiceMutation,\n CreatePreviewInvoiceMutationVariables\n >(client, CreatePreviewInvoiceDocument, variables, headers)(),\n options\n );\nexport const FetchAttendanceCostItemsSummaryDocument = `\n query fetchAttendanceCostItemsSummary($attendanceIds: [ID!]!) {\n attendanceCostItemsSummary(attendanceIds: $attendanceIds) {\n attendanceCostItems {\n attendanceId\n weployeeName\n weployerName\n positionTitle\n cost\n startTime\n hoursWorked\n }\n paymentTermSurcharge\n totalHoursWorked\n grandTotal\n }\n}\n `;\nexport const useFetchAttendanceCostItemsSummaryQuery = <\n TData = FetchAttendanceCostItemsSummaryQuery,\n TError = unknown\n>(\n client: GraphQLClient,\n variables: FetchAttendanceCostItemsSummaryQueryVariables,\n options?: UseQueryOptions<\n FetchAttendanceCostItemsSummaryQuery,\n TError,\n TData\n >,\n headers?: RequestInit[\"headers\"]\n) =>\n useQuery(\n [\"fetchAttendanceCostItemsSummary\", variables],\n fetcher<\n FetchAttendanceCostItemsSummaryQuery,\n FetchAttendanceCostItemsSummaryQueryVariables\n >(client, FetchAttendanceCostItemsSummaryDocument, variables, headers),\n options\n );\nexport const FetchAttendancesForInvoicingDocument = `\n query fetchAttendancesForInvoicing($clientCompanyId: ID!, $communityMemberName: String, $filteredAttendanceIds: String, $subdivision: String, $managerId: ID, $startAt: ISO8601Date, $finishAt: ISO8601Date, $positionTitle: String) {\n attendancesForInvoicing(\n clientCompanyId: $clientCompanyId\n searchByCommunityMember: $communityMemberName\n searchByAttendancesIds: $filteredAttendanceIds\n subdivision: $subdivision\n managerIdIs: $managerId\n startAt: $startAt\n finishAt: $finishAt\n positionTitle: $positionTitle\n ) {\n id\n state\n startAt\n finishAt\n duration\n minimumEngagementDuration\n minimumEngagementRequired\n belowMinimumEngagementReasonToHuman\n additionalNotes\n position {\n id\n title\n manager {\n id\n fullName\n email\n }\n }\n breaks {\n id\n startAt\n finishAt\n duration\n }\n workedBy {\n id\n email\n fullName\n preferredName\n timeZone\n }\n }\n}\n `;\nexport const useFetchAttendancesForInvoicingQuery = <\n TData = FetchAttendancesForInvoicingQuery,\n TError = unknown\n>(\n client: GraphQLClient,\n variables: FetchAttendancesForInvoicingQueryVariables,\n options?: UseQueryOptions,\n headers?: RequestInit[\"headers\"]\n) =>\n useQuery(\n [\"fetchAttendancesForInvoicing\", variables],\n fetcher<\n FetchAttendancesForInvoicingQuery,\n FetchAttendancesForInvoicingQueryVariables\n >(client, FetchAttendancesForInvoicingDocument, variables, headers),\n options\n );\nexport const FetchClientCompaniesDocument = `\n query fetchClientCompanies {\n clientCompanies {\n id\n name\n attendanceCount\n }\n}\n `;\nexport const useFetchClientCompaniesQuery = <\n TData = FetchClientCompaniesQuery,\n TError = unknown\n>(\n client: GraphQLClient,\n variables?: FetchClientCompaniesQueryVariables,\n options?: UseQueryOptions,\n headers?: RequestInit[\"headers\"]\n) =>\n useQuery(\n variables === undefined\n ? [\"fetchClientCompanies\"]\n : [\"fetchClientCompanies\", variables],\n fetcher(\n client,\n FetchClientCompaniesDocument,\n variables,\n headers\n ),\n options\n );\nexport const FetchClientCompanyDocument = `\n query fetchClientCompany($clientCompanyId: ID!) {\n clientCompany(clientCompanyId: $clientCompanyId) {\n id\n name\n attendanceCount\n billingContacts {\n id\n billingName\n }\n }\n}\n `;\nexport const useFetchClientCompanyQuery = <\n TData = FetchClientCompanyQuery,\n TError = unknown\n>(\n client: GraphQLClient,\n variables: FetchClientCompanyQueryVariables,\n options?: UseQueryOptions,\n headers?: RequestInit[\"headers\"]\n) =>\n useQuery(\n [\"fetchClientCompany\", variables],\n fetcher(\n client,\n FetchClientCompanyDocument,\n variables,\n headers\n ),\n options\n );\nexport const FetchParamsForFilterAttendanceDocument = `\n query fetchParamsForFilterAttendance($clientCompanyId: ID!) {\n paramsForFilterAttendance(clientCompanyId: $clientCompanyId) {\n id\n name\n companyUsers {\n id\n fullName\n }\n locations {\n subdivision\n subdivisionLabel\n }\n positionTitles\n }\n}\n `;\nexport const useFetchParamsForFilterAttendanceQuery = <\n TData = FetchParamsForFilterAttendanceQuery,\n TError = unknown\n>(\n client: GraphQLClient,\n variables: FetchParamsForFilterAttendanceQueryVariables,\n options?: UseQueryOptions,\n headers?: RequestInit[\"headers\"]\n) =>\n useQuery(\n [\"fetchParamsForFilterAttendance\", variables],\n fetcher<\n FetchParamsForFilterAttendanceQuery,\n FetchParamsForFilterAttendanceQueryVariables\n >(client, FetchParamsForFilterAttendanceDocument, variables, headers),\n options\n );\n","interface OptionType {\n value: string;\n label: string;\n}\n\nexport const buildOptions = (\n objects: Array<{ [key: string]: string | number | boolean }>,\n valueField: string,\n labelField: string\n): Array => {\n return objects.map((object) => {\n return {\n value: object[valueField].toString(),\n label: object[labelField].toString(),\n };\n });\n};\n","import { useFormState } from \"react-hook-form\";\n\ninterface ErrorMessageProps {\n name: string;\n}\n\nexport const ErrorMessage = ({ name }: ErrorMessageProps): JSX.Element => {\n const { errors } = useFormState();\n return (\n <>\n {errors[name] && (\n
    \n {errors[name].message}\n
    \n )}\n \n );\n};\n","import {\n FieldValues,\n SubmitHandler,\n useForm,\n FormProvider,\n} from \"react-hook-form\";\n\ninterface FormProps {\n defaultValues?: { [key: string]: string };\n children: React.ReactElement | React.ReactElement[];\n onSubmit?: SubmitHandler;\n}\n\nexport const Form = ({\n defaultValues,\n children,\n onSubmit = () => null,\n}: FormProps): JSX.Element => {\n const methods = useForm({ defaultValues, shouldUnregister: true });\n\n return (\n \n
    {children}
    \n
    \n );\n};\n","import { useFormContext } from \"react-hook-form\";\n\ninterface InputProps {\n onChange?: (event: InputEvent) => void;\n defaultValue?: string;\n name: string;\n type?: string;\n id?: string;\n placeholder?: string;\n}\n\nexport const Input = ({\n defaultValue = \"\",\n type = \"text\",\n id = \"\",\n placeholder = \"\",\n name,\n onChange,\n}: InputProps): JSX.Element => {\n const {\n register,\n formState: { errors },\n } = useFormContext();\n\n return (\n
    \n \n
    \n );\n};\n","import { FormEventHandler } from \"react\";\nimport { useFormContext } from \"react-hook-form\";\ninterface OptionType {\n value: string;\n label: string;\n}\n\ninterface radioProps {\n onChange?: FormEventHandler;\n isInline?: boolean;\n required?: boolean;\n options: Array;\n name: string;\n defaultValue?: string | number;\n}\n\nexport const RadioGroup = ({\n name,\n isInline = true,\n defaultValue,\n onChange,\n options,\n required = true,\n}: radioProps): JSX.Element => {\n const {\n register,\n formState: { errors },\n } = useFormContext();\n let classNames = isInline ? \"flex space-x-10\" : \"block\";\n if (errors[name]) {\n classNames += \" field_with_errors\";\n }\n return (\n
    \n {options.map((option) => (\n \n \n \n {option.label}\n \n
    \n ))}\n \n );\n};\n","import { useFormContext } from \"react-hook-form\";\n\ninterface OptionType {\n value: string;\n label: string;\n}\n\ninterface SelectProps {\n onChange?: (event: InputEvent) => void;\n options: Array;\n name: string;\n id: string;\n defaultValue?: string | number;\n prompt?: string;\n}\n\nexport const Select = ({\n name,\n defaultValue,\n onChange,\n options,\n id = null,\n prompt = null,\n}: SelectProps): JSX.Element => {\n const {\n register,\n formState: { errors },\n getValues,\n } = useFormContext();\n\n const promptIsVisible = getValues(name) == undefined;\n\n return (\n
    \n \n {options.map((option) => {\n return (\n \n );\n })}\n {prompt && (\n \n )}\n \n
    \n );\n};\n","import { format } from \"date-fns\";\nimport pluralize from \"pluralize\";\n\nexport const getDateWorkedOn = (date: string): string =>\n format(new Date(date), \"EEEE d LLL yyyy\");\n\nexport const formatISO8601Date = (date: Date): string => {\n const year = date.toLocaleDateString(\"en-US\", { year: \"numeric\" });\n const month = date.toLocaleDateString(\"en-US\", { month: \"2-digit\" });\n const day = date.toLocaleDateString(\"en-US\", { day: \"2-digit\" });\n\n return `${year}-${month}-${day}`;\n};\n\ntype DurationSecond = number;\ninterface BreakTimesInterface {\n startAt: string;\n finishAt: string;\n duration: DurationSecond;\n}\n\nexport const getDailyTotal = (\n durationSeconds: number,\n breaks?: BreakTimesInterface[]\n): string => {\n const breakDurationSeconds = getBreakDuration(breaks);\n const durationExcludingBreaks = durationSeconds - breakDurationSeconds;\n\n return humanizeSecondsWorked(durationExcludingBreaks);\n};\n\nconst humanizeSecondsWorked = (secondsWorked: number): string => {\n const hours = Math.floor(secondsWorked / 3600);\n const minutes = (secondsWorked % 3600) / 60;\n\n const hoursString = pluralize(\"hr\", hours, true);\n const minutesString = pluralize(\"min\", minutes, true);\n\n return `${hoursString} ${minutes ? minutesString : \"\"}`;\n};\n\nconst getBreakDuration = (breaks: BreakTimesInterface[]): number => {\n return breaks.reduce((sum, brk): number => sum + brk.duration, 0);\n};\n","import i18next from \"i18next\";\nimport \"@/i18n/config\";\nimport Flatpickr from \"react-flatpickr\";\nimport { useParams } from \"react-router-dom\";\n\nimport graphqlClient from \"@graphql/organization_app/client\";\nimport { useFetchParamsForFilterAttendanceQuery } from \"@graphql/organization_app/types\";\n\nimport {\n Input,\n Select,\n buildOptions,\n} from \"@/organization_app/components/formFields\";\nimport { formatISO8601Date } from \"@/organization_app/features/invoicings/utils/AttendanceUtils\";\n\nexport const AttendancesForInvoicingFilter = ({\n communityMemberName,\n setCommunityMemberName,\n attendanceIds,\n setAttendanceIds,\n selectedManager,\n setSelectedManager,\n selectedSubdivision,\n setSubdivision,\n setDateRange,\n selectedPositionTitle,\n setSelectedPositionTitle,\n}): JSX.Element => {\n const { clientCompanyId } = useParams();\n const dateFormat = \"d/m/Y\";\n const onChangeWeployeeName = (event: InputEvent): void => {\n const target = event.target as HTMLInputElement;\n const communityMemberSearchTerm = target.value;\n const pgTrigramMinimumCharacter = 3;\n const textToSet =\n communityMemberSearchTerm.length >= pgTrigramMinimumCharacter\n ? communityMemberSearchTerm\n : \"\";\n\n setCommunityMemberName(textToSet);\n };\n\n const onChangeAttendanceIds = (event): void => {\n const target = event.target as HTMLInputElement;\n const attendanceIdsTerm = target.value;\n const pgTrigramMinimumCharacter = 6;\n const textToSet =\n attendanceIdsTerm.length >= pgTrigramMinimumCharacter\n ? attendanceIdsTerm\n : \"\";\n\n setAttendanceIds(textToSet);\n };\n\n const onChangeManager = (event: InputEvent): void => {\n const target = event.target as HTMLSelectElement;\n const managerId = target.value;\n setSelectedManager(managerId);\n };\n const onChangeSubdivision = (event: InputEvent): void => {\n const target = event.target as HTMLSelectElement;\n const subdivisionId = target.value;\n setSubdivision(subdivisionId);\n };\n const onCloseDatePicker = (selectedDates: Date[]): void => {\n const startAt = formatISO8601Date(selectedDates[0]);\n const finishAt = formatISO8601Date(selectedDates[1]);\n\n setDateRange({ startAt: startAt, finishAt: finishAt });\n };\n const onPositionTitleSelected = (event: InputEvent): void => {\n const target = event.target as HTMLSelectElement;\n setSelectedPositionTitle(target.value);\n };\n const { isFetching, data, error } = useFetchParamsForFilterAttendanceQuery(\n graphqlClient,\n { clientCompanyId: clientCompanyId }\n );\n\n if (error) {\n return
    Error!
    ;\n }\n\n if (isFetching) {\n return Loading...;\n }\n\n const uniqueLocations = [\n ...new Map(\n data.paramsForFilterAttendance.locations.map((item) => [\n item.subdivision,\n item,\n ])\n ).values(),\n ];\n\n const locationOptions = buildOptions(\n uniqueLocations,\n \"subdivision\",\n \"subdivisionLabel\"\n );\n\n const managerOptions = buildOptions(\n data.paramsForFilterAttendance.companyUsers,\n \"id\",\n \"fullName\"\n );\n\n const positionTitleOptions =\n data.paramsForFilterAttendance.positionTitles.map((title) => ({\n value: title,\n label: title,\n }));\n\n return (\n <>\n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n );\n};\n","import React from \"react\";\n\nimport { PrimaryButton } from \"@/ui/buttons\";\n\ninterface AttendanceSelectedProps {\n selectedAttendanceIds: string[];\n openModal: () => void;\n}\n\nexport const AttendancesForInvoicingSelected = ({\n selectedAttendanceIds,\n openModal,\n}: AttendanceSelectedProps): JSX.Element => {\n return (\n
    \n

    \n {selectedAttendanceIds.length} selected\n

    \n \n
    \n );\n};\n","import { Checkbox } from \"@/ui/Checkbox\";\n\ninterface AttendanceHeadingProps {\n selectAllAttendance: () => void;\n isSelectAll: boolean;\n}\nexport const AttendancesForInvoicingHeading = ({\n selectAllAttendance,\n isSelectAll,\n}: AttendanceHeadingProps): JSX.Element => {\n return (\n \n \n \n \n Attendance Id\n Job\n Weployer\n {window.terminologyEmployee}\n Attendance Date\n Hours\n Issues\n Bill To\n \n );\n};\n","import { useEffect } from \"react\";\n\nimport graphqlClient from \"@graphql/organization_app/client\";\nimport { useFetchAttendancesForInvoicingQuery } from \"@graphql/organization_app/types\";\n\nimport { AttendancesForInvoicingHeading } from \"./AttendancesForInvoicingHeading\";\n\nimport {\n getDateWorkedOn,\n getDailyTotal,\n} from \"@/organization_app/features/invoicings/utils/AttendanceUtils\";\nimport { Checkbox } from \"@/ui/Checkbox\";\n\nfunction renderIssue({\n minimumEngagementRequired,\n additionalNotes,\n belowMinimumEngagementReasonToHuman,\n}): JSX.Element {\n if (minimumEngagementRequired) {\n return (\n

    \n ME applied \"{belowMinimumEngagementReasonToHuman}\"\n ?\n

    \n );\n } else {\n return

    -

    ;\n }\n}\n\nexport const AttendancesForInvoicingTable = ({\n clientCompanyId,\n communityMemberName,\n filteredAttendanceIds,\n selectedAttendanceIds,\n setSelectedAttendanceIds,\n selectedManager,\n selectedSubdivision,\n startAt,\n finishAt,\n isForceRefetch,\n setIsForceRefetch,\n selectedPositionTitle,\n}): JSX.Element => {\n const paramsForQuery = {\n clientCompanyId,\n filteredAttendanceIds,\n communityMemberName,\n managerId: selectedManager,\n subdivision: selectedSubdivision,\n startAt: startAt || null,\n finishAt: finishAt || null,\n positionTitle: selectedPositionTitle,\n };\n\n const {\n isFetching: attendancesForInvoicingIsFetching,\n data: attendancesForInvoicingData,\n error: attendancesForInvoicingError,\n refetch: refetchAttendances,\n } = useFetchAttendancesForInvoicingQuery(graphqlClient, paramsForQuery);\n\n useEffect(() => {\n if (isForceRefetch) {\n refetchAttendances();\n setIsForceRefetch(false);\n }\n }, [isForceRefetch]);\n\n if (attendancesForInvoicingError) {\n return
    Error!
    ;\n }\n\n if (attendancesForInvoicingIsFetching) {\n return Loading...;\n }\n\n const attendances = attendancesForInvoicingData.attendancesForInvoicing;\n const attendanceIds = attendances.map((attendance) => attendance.id);\n\n function handleSelectAllAttendance(): void {\n setSelectedAttendanceIds((selectedAttendanceIds): string[] => {\n return selectedAttendanceIds.length === attendanceIds.length\n ? []\n : attendanceIds;\n });\n }\n\n function handleSelectAttendance(attendanceId): void {\n setSelectedAttendanceIds((selectedAttendanceIds): string[] => {\n if (selectedAttendanceIds.includes(attendanceId)) {\n return selectedAttendanceIds.filter((att) => att !== attendanceId);\n } else {\n return [...selectedAttendanceIds, attendanceId];\n }\n });\n }\n\n const isSelectAll =\n selectedAttendanceIds.length !== 0 &&\n selectedAttendanceIds.length === attendances.length;\n\n return (\n \n \n \n \n {attendances.length === 0 ? (\n
    No attendances found
    \n ) : (\n \n {attendances.map((attendance) => (\n \n \n \n \n \n \n \n \n \n \n \n ))}\n \n )}\n
    \n {\n handleSelectAttendance(attendance.id);\n }}\n />\n {attendance.id}{attendance.position.title}{attendance.position.manager.fullName}{attendance.workedBy.fullName}{getDateWorkedOn(attendance.startAt)}\n {attendance.minimumEngagementRequired\n ? getDailyTotal(attendance.minimumEngagementDuration, [])\n : getDailyTotal(attendance.duration, attendance.breaks)}\n \n {renderIssue({\n minimumEngagementRequired:\n attendance.minimumEngagementRequired,\n additionalNotes: attendance.additionalNotes,\n belowMinimumEngagementReasonToHuman:\n attendance.belowMinimumEngagementReasonToHuman,\n })}\n {attendance.position.manager.email}
    \n );\n};\n","import { useState } from \"react\";\nimport {\n FieldValues,\n SubmitHandler,\n useForm,\n FormProvider,\n} from \"react-hook-form\";\n\nimport graphqlClient from \"@graphql/organization_app/client\";\nimport { useCreatePreviewInvoiceMutation } from \"@graphql/organization_app/types\";\n\nimport {\n ErrorMessage,\n Input,\n Select,\n buildOptions,\n RadioGroup,\n} from \"@/organization_app/components/formFields\";\nimport { PrimaryButton, SecondaryButton } from \"@/ui/buttons\";\nimport { flash } from \"@/ui/Flash\";\n\ninterface PreviewInvoicesBillingFormFields {\n billingContactId: string;\n invoicesConsolidation: \"true\" | \"false\";\n reference: string;\n}\n\nconst consolidateAttendancesOptions = [\n {\n label: \"Yes\",\n value: \"true\",\n },\n {\n label: \"No\",\n value: \"false\",\n },\n];\n\nexport const PreviewInvoicesBillingForm = ({\n clientCompany,\n closeModal,\n attendanceCostItems,\n}): JSX.Element => {\n const formMethods = useForm({\n shouldUnregister: true,\n });\n const [isSubmitting, setIsSubmitting] = useState(false);\n const { mutateAsync } = useCreatePreviewInvoiceMutation(graphqlClient);\n const disabledSubmit = !(\n attendanceCostItems && attendanceCostItems.length > 0\n );\n\n const createInvoice: SubmitHandler = (values) => {\n if (disabledSubmit) return;\n setIsSubmitting(true);\n const variables = {\n clientCompanyId: clientCompany.id,\n billingContactId: values.billingContactId,\n attendanceIds: attendanceCostItems.map((item) => item.attendanceId),\n invoicesConsolidation: values.invoicesConsolidation === \"true\",\n reference: values.reference,\n };\n\n mutateAsync(variables).then((data) => {\n const errors = data.createPreviewInvoice.errors;\n setIsSubmitting(false);\n\n if (errors.length > 0) {\n handleFailure(errors);\n } else {\n handleSuccess();\n }\n });\n };\n\n function handleSuccess() {\n flash.notice(\"Invoices have been sent to Xero\");\n closeModal();\n }\n\n function handleFailure(errors): void {\n errors.forEach((error) => {\n formMethods.setError(error.path, {\n type: \"custom\",\n message: error.message,\n });\n });\n }\n\n return (\n
    \n \n
    \n
    \n
    Billing Information
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n \n
    {clientCompany.name}
    \n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n Consolidate attendances\n
    \n \n \n
    \n
    \n\n
    \n \n \n
    \n
    \n
    \n
    \n );\n};\n","export const formatCurrency = (value: number): string => {\n return value.toLocaleString(\"en-AU\", {\n style: \"currency\",\n currency: \"AUD\",\n minimumFractionDigits: 2,\n });\n};\n","import { formatCurrency } from \"@/organization_app/features/invoicings/utils/CurrencyFormatterUtils\";\n\ninterface SummaryRowProps {\n totalHoursWorked: string;\n totalPaymentTermSurcharge: number;\n totalCost: number;\n}\n\nexport const PreviewInvoicesSummaryRow = ({\n totalHoursWorked,\n totalPaymentTermSurcharge,\n totalCost,\n}: SummaryRowProps): JSX.Element => {\n return (\n <>\n {totalPaymentTermSurcharge > 0 && (\n \n \n Payment Term Surcharge\n \n \n \n \n {formatCurrency(totalPaymentTermSurcharge)}\n \n \n \n \n )}\n \n \n Total\n \n \n \n {totalHoursWorked}\n \n \n \n \n {formatCurrency(totalCost)}\n \n \n \n \n \n );\n};\n","import { format } from \"date-fns\";\nimport pluralize from \"pluralize\";\n\nimport { AttendanceCostItem as AttendanceCostItemType } from \"@graphql/organization_app/types\";\n\nimport { PreviewInvoicesSummaryRow } from \"./PreviewInvoicesSummaryRow\";\n\nimport { formatCurrency } from \"@/organization_app/features/invoicings/utils/CurrencyFormatterUtils\";\n\ninterface InvoicesTableProps {\n attendanceCostItems: AttendanceCostItemType[];\n totalHoursWorked: number;\n paymentTermSurcharge: number;\n grandTotal: number;\n removeAttendanceCostItem: (id: string) => void;\n}\n\nexport const PreviewInvoicesTable = ({\n attendanceCostItems,\n totalHoursWorked,\n paymentTermSurcharge,\n grandTotal,\n removeAttendanceCostItem,\n}: InvoicesTableProps): JSX.Element => {\n const humanizeHoursWorked = (hoursWorked: number): string => {\n const hours = Math.floor(hoursWorked);\n const minutes = Math.floor(hoursWorked * 60) % 60;\n\n const humanizeHours = pluralize(\"hr\", hours, true);\n const humanizeMinutes = pluralize(\"min\", minutes, true);\n return `${humanizeHours} ${minutes ? humanizeMinutes : \"\"}`;\n };\n\n const getDateFromStartTime = (startTime: string): string => {\n return format(new Date(startTime), \"yyyy-MM-dd\");\n };\n\n const handleRemove = (attendanceId: string) => {\n if (window.confirm(\"Are you sure you want to remove the attendance?\")) {\n removeAttendanceCostItem(attendanceId);\n }\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n {attendanceCostItems.map((attendanceCostItem) => (\n \n \n \n \n \n \n \n \n \n ))}\n \n \n
    {window.terminologyEmployee}WEPLOYEERJOBATTENDANCE DATEHOURSTOTAL COST\n
    {attendanceCostItem.weployeeName}{attendanceCostItem.weployerName}{attendanceCostItem.positionTitle}{getDateFromStartTime(attendanceCostItem.startTime)}{humanizeHoursWorked(attendanceCostItem.hoursWorked)}{formatCurrency(attendanceCostItem.cost)}\n {\n handleRemove(attendanceCostItem.attendanceId);\n }}\n >\n Remove\n \n
    \n );\n};\n","import { useState, useEffect } from \"react\";\n\nimport graphqlClient from \"@graphql/organization_app/client\";\nimport {\n AttendanceCostItem as AttendanceCostItemType,\n useFetchAttendanceCostItemsSummaryQuery,\n} from \"@graphql/organization_app/types\";\n\nimport { PreviewInvoicesBillingForm } from \"./PreviewInvoicesBillingForm\";\nimport { PreviewInvoicesTable } from \"./PreviewInvoicesTable\";\n\nexport const PreviewInvoices = ({\n clientCompany,\n attendanceIds,\n closeModal,\n}): JSX.Element => {\n const [attendanceCostItems, setAttendanceCostItems] = useState(\n [] as AttendanceCostItemType[]\n );\n const [selectedAttendanceIds, setSelectedAttendanceIds] =\n useState(attendanceIds);\n const [paymentTermSurcharge, setPaymentTermSurcharge] = useState(0);\n const [grandTotal, setGrandTotal] = useState(0);\n const [totalHoursWorked, setTotalHoursWorked] = useState(0);\n const [showLoadingIndicator, setShowLoadingIndicator] = useState(true);\n\n const {\n isFetching: attendanceCostItemsSummaryFetching,\n isSuccess: attendanceCostItemsSummarySuccess,\n data: attendanceCostItemsSummaryData,\n error: attendanceCostItemsSummaryError,\n refetch: refetchAttendanceCostItemsSummary,\n } = useFetchAttendanceCostItemsSummaryQuery(\n graphqlClient,\n {\n attendanceIds: selectedAttendanceIds,\n },\n {\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n retry: false,\n staleTime: Infinity,\n }\n );\n\n useEffect(() => {\n if (attendanceCostItemsSummarySuccess && attendanceCostItemsSummaryData) {\n setAttendanceCostItems(\n attendanceCostItemsSummaryData.attendanceCostItemsSummary\n .attendanceCostItems\n );\n setTotalHoursWorked(\n attendanceCostItemsSummaryData.attendanceCostItemsSummary\n .totalHoursWorked\n );\n setPaymentTermSurcharge(\n attendanceCostItemsSummaryData.attendanceCostItemsSummary\n .paymentTermSurcharge\n );\n setGrandTotal(\n attendanceCostItemsSummaryData.attendanceCostItemsSummary.grandTotal\n );\n }\n }, [attendanceCostItemsSummaryData]);\n\n const removeAttendanceCostItem = (id: string) => {\n const newSelectedAttendanceIds = attendanceCostItems.flatMap(\n (attendanceItem) =>\n attendanceItem.attendanceId === id ? [] : attendanceItem.attendanceId\n );\n setSelectedAttendanceIds(newSelectedAttendanceIds);\n setShowLoadingIndicator(false);\n refetchAttendanceCostItemsSummary();\n };\n\n const handleCloseModal = () => {\n setShowLoadingIndicator(true);\n closeModal();\n };\n\n if (attendanceCostItemsSummaryError) {\n return
    Error!
    ;\n }\n\n if (attendanceCostItemsSummaryFetching && showLoadingIndicator) {\n return Loading...;\n }\n\n return (\n
    \n
    Confirm Attendances to be Invoiced
    \n
    \n \n \n
    \n
    \n );\n};\n","import React, { useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\n\nimport graphqlClient from \"@graphql/organization_app/client\";\nimport { useFetchClientCompanyQuery } from \"@graphql/organization_app/types\";\n\nimport { AttendancesForInvoicingFilter } from \"./AttendancesForInvoicingFilter\";\nimport { AttendancesForInvoicingSelected } from \"./AttendancesForInvoicingSelected\";\nimport { AttendancesForInvoicingTable } from \"./AttendancesForInvoicingTable\";\nimport { PreviewInvoices } from \"./PreviewInvoices\";\n\nimport { useDebouncedState } from \"@/hooks/useDebouncedState\";\nimport { Form } from \"@/organization_app/components/formFields\";\nimport { FullLayoutModal } from \"@/ui/FullLayoutModal\";\n\nexport const AttendancesForInvoicing = (): JSX.Element => {\n const { clientCompanyId } = useParams();\n const [communityMemberName, setCommunityMemberName] = useDebouncedState(\n \"\",\n 500\n );\n const [attendanceIds, setAttendanceIds] = useDebouncedState(\"\", 500);\n const [selectedAttendanceIds, setSelectedAttendanceIds] = useState([]);\n const [selectedManager, setSelectedManager] = useState(\"\");\n const [selectedSubdivision, setSubdivision] = useState(\"\");\n const [selectedPositionTitle, setSelectedPositionTitle] = useState(\"\");\n const [isOpen, setIsOpen] = useState(null);\n const [isForceRefetch, setIsForceRefetch] = useState(false);\n const [dateRange, setDateRange] = useState({\n startAt: \"\",\n finishAt: \"\",\n });\n\n const openModal = () => {\n setIsOpen(true);\n };\n\n const closeModal = () => {\n setSelectedAttendanceIds([]);\n setIsOpen(false);\n setIsForceRefetch(true);\n };\n\n const {\n isFetching: clientCompanyIsFetching,\n data: clientCompanyData,\n error: clientCompanyError,\n } = useFetchClientCompanyQuery(\n graphqlClient,\n {\n clientCompanyId,\n },\n { refetchOnWindowFocus: false }\n );\n\n if (clientCompanyError) {\n return
    Error!
    ;\n }\n\n if (clientCompanyIsFetching) {\n return Loading...;\n }\n\n return (\n
    \n
    \n

    \n {clientCompanyData.clientCompany.name}\n

    \n
    \n
      \n
    • \n
      \n {clientCompanyData.clientCompany.attendanceCount}\n
      \n \n To Invoice\n \n
    • \n
    • \n \n Billing Contacts\n \n
    • \n
    \n
    \n
    \n \n \n \n \n\n {isOpen && (\n \n \n \n )}\n
    \n
    \n );\n};\n","import { Link } from \"react-router-dom\";\n\nimport graphqlClient from \"@graphql/organization_app/client\";\nimport { useFetchClientCompaniesQuery } from \"@graphql/organization_app/types\";\n\nexport const ClientCompanies = (): JSX.Element => {\n const { isFetching, data, error } =\n useFetchClientCompaniesQuery(graphqlClient);\n\n if (error) {\n return
    Error!
    ;\n }\n\n if (isFetching) {\n return Loading...;\n }\n\n return (\n
    \n
    \n

    Clients

    \n
    \n
    \n {data.clientCompanies.map((clientCompany) => (\n \n \n
    {clientCompany.name}
    \n
    \n \n {clientCompany.attendanceCount}\n \n Attendances to Invoice\n
    \n \n
    \n ))}\n \n \n );\n};\n","import { Outlet } from \"react-router-dom\";\n\nexport const Invoicings = (): JSX.Element => {\n return ;\n};\n","import { Navigate, Route } from \"react-router-dom\";\n\nimport { NotFound } from \"@/organization_app/components/NotFound\";\nimport {\n ATTENDANCES_PATH,\n COMPANIES_PATH,\n INVOICINGS_PATH,\n} from \"@/organization_app/config/paths\";\nimport { AttendancesForInvoicing } from \"@/organization_app/features/invoicings/components/AttendancesForInvoicing\";\nimport { ClientCompanies } from \"@/organization_app/features/invoicings/components/ClientCompanies\";\nimport { Invoicings } from \"@/organization_app/features/invoicings/components/Invoicings\";\n\nexport const invoicingsRoutes = [\n }\n key={\"invoicings-routes\"}\n >\n } />\n } />\n } />\n } />\n ,\n];\n","import { tenantPath } from \"helpers/tenant_path\";\nimport { getHeaders } from \"packs/client_app/config/request_headers\";\nimport { ACTIVE_POSITIONS_PATH } from \"packs/organization_app/config\";\n\nexport const getActivePositions = ({\n community_member_name,\n client_id_is,\n limit,\n offset,\n}) => {\n let query = `limit=${limit}&offset=${offset}`;\n\n if (community_member_name) {\n query += `&community_member_name=${community_member_name}`;\n }\n if (client_id_is) {\n query += `&client_id_is=${client_id_is}`;\n }\n return fetch(tenantPath(`${ACTIVE_POSITIONS_PATH}?${query}`), {\n method: \"GET\",\n headers: getHeaders(),\n });\n};\n","import * as React from \"react\";\n\ninterface BackendContextProviderProps {\n children: React.ReactNode;\n value: unknown;\n}\n\nconst BackendContext = React.createContext(undefined);\n\nfunction BackendContextProvider({\n children,\n value,\n}: BackendContextProviderProps): JSX.Element {\n return (\n {children}\n );\n}\n\nfunction useBackendContext(): BackendContext {\n const context = React.useContext(BackendContext);\n if (context === undefined) {\n throw new Error(\n \"useBackendContext must be used within a BackendContextProvider\"\n );\n }\n return context;\n}\n\nexport { BackendContextProvider, useBackendContext };\n","import \"@/i18n/config\";\nimport graphqlClient from \"graphql/organization_app/client\";\nimport { useFetchClientCompaniesQuery } from \"graphql/organization_app/types\";\nimport { Form } from \"packs/client_app/components/Form\";\nimport React, { useState } from \"react\";\nimport { useQuery } from \"react-query\";\n\nimport { Pagination } from \"@/client_app/components/Pagination\";\nimport { FilterByWeployee } from \"@/client_app/features/weployees/components/FilterByWeployee\";\nimport { NoActivePositions } from \"@/client_app/features/weployees/components/NoActivePositions\";\nimport { PositionsTable } from \"@/common/components/PositionsTable\";\nimport { useDebouncedState } from \"@/hooks/useDebouncedState\";\nimport { buildOptions, Select } from \"@/organization_app/components/formFields\";\nimport { getActivePositions } from \"@/organization_app/features/positions/services/FetchAPIService\";\nimport { useBackendContext } from \"@/organization_app/stores/backend-context\";\n\nconst limit = 20;\n\nexport function PositionsPage() {\n const [paginationOffset, setPaginationOffset] = useState(0);\n const [selectedClient, setSelectedClient] = useState(\"\");\n\n const [communityMemberName, setCommunityMemberName] = useDebouncedState(\n \"\",\n 500\n );\n const queryParams = {\n community_member_name: communityMemberName,\n limit: limit,\n offset: paginationOffset,\n client_id_is: selectedClient,\n };\n\n const { data, isFetching, isSuccess, error, refetch } = useQuery(\n [\"activePositions\", queryParams],\n () =>\n getActivePositions(queryParams).then((response) => {\n return response.json();\n })\n );\n\n const { data: clientCompanies } = useFetchClientCompaniesQuery(graphqlClient);\n\n const clientOptions = clientCompanies\n ? buildOptions(clientCompanies.clientCompanies, \"id\", \"name\")\n : [];\n const { noActivePositionImageURL } = useBackendContext();\n const onChangeClientCompany = (event: InputEvent): void => {\n const target = event.target as HTMLSelectElement;\n const clientId = target.value;\n setSelectedClient(clientId);\n };\n\n const handleModalClose = () => {\n refetch();\n };\n\n if (error) {\n return
    Error!
    ;\n }\n const activePositions = data?.activePositions || [];\n const totalCount = data?.totalCount || 0;\n return (\n
    \n
    \n

    Weployees

    \n
    \n
    \n
    \n
    \n \n setCommunityMemberName(name)\n }\n />\n
    \n \n
    \n \n
    \n
    \n
    \n
    \n {isFetching &&
    Loading...
    }\n\n {!isFetching && isSuccess && (\n
    \n {activePositions.length === 0 && (\n \n )}\n {activePositions.length > 0 && (\n \n )}\n
    \n )}\n setPaginationOffset(data)}\n perPage={limit}\n />\n
    \n
    \n );\n}\n","import { Route, Routes } from \"react-router-dom\";\n\nimport { NotFound } from \"@/organization_app/components/NotFound\";\nimport { POSITIONS_PATH } from \"@/organization_app/config\";\nimport { invoicingsRoutes } from \"@/organization_app/features/invoicings/routes\";\nimport { PositionsPage } from \"@/organization_app/features/positions/components/PositionsPage\";\n\nexport const AppRoutes = (): JSX.Element => {\n return (\n \n {invoicingsRoutes}\n } />\n } key='not-found-routes' />\n \n );\n};\n","import { QueryClient } from \"react-query\";\n\nconst queryConfig = {\n queries: {\n refetchOnWindowFocus: false,\n },\n};\n\nexport const queryClient = new QueryClient({ defaultOptions: queryConfig });\n","import * as React from \"react\";\nimport { Toaster } from \"react-hot-toast\";\nimport { QueryClientProvider } from \"react-query\";\nimport { BrowserRouter as Router } from \"react-router-dom\";\n\nimport { queryClient } from \"@/organization_app/lib/react-query\";\nimport { BackendContextProvider } from \"@/organization_app/stores/backend-context\";\n\ninterface AppProviderProps {\n backendContext: unknown;\n children: React.ReactNode;\n}\n\nexport const AppProvider = ({\n backendContext,\n children,\n}: AppProviderProps): JSX.Element => {\n return (\n \n \n {children}\n \n \n \n );\n};\n","import { AppRoutes } from \"./routes\";\n\nimport { AppProvider } from \"@/organization_app/providers/app\";\n\ninterface AppProps {\n backendContext: unknown;\n}\n\nexport const App = ({ backendContext }: AppProps): JSX.Element => {\n return (\n \n \n \n );\n};\n","import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\n\nimport { App } from \"./App\";\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const node = document.getElementById(\"organization-context-data\");\n if (!node) return;\n\n const context = JSON.parse(node.getAttribute(\"data\"));\n\n ReactDOM.render(\n \n \n ,\n document.getElementById(\"app\")\n );\n});\n","// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n\nimport * as ActiveStorage from \"@rails/activestorage\";\nimport Rails from \"@rails/ujs\";\nimport Turbolinks from \"turbolinks\";\nimport \"channels\";\nimport \"chartkick/chart.js\";\n// Tailwind CSS\nimport \"../stylesheets/application.scss\";\n\nwindow.dispatchMapsEvent = function (...args) {\n const event = new Event(\"google-maps-callback\", {\n bubbles: true,\n cancelable: true,\n });\n event.args = args;\n window.dispatchEvent(event);\n};\n\nRails.start();\nTurbolinks.start();\nActiveStorage.start();\n\nconst importAll = (r) => r.keys().forEach(r);\nrequire.context(\"../images\", true, /\\.(jpg|jpeg|png)$/);\nimportAll(require.context(\"../../assets/images\", true, /\\.svg$/));\n\nimport \"./bugsnag\";\nimport \"controllers\";\nimport \"./client_app\";\nimport \"./organization_app\";\nimport \"./react_components\";\n","import Bugsnag from \"@bugsnag/js\";\nimport BugsnagPluginReact from \"@bugsnag/plugin-react\";\n\nconst metaData = document.getElementsByTagName(\"meta\");\nconst releaseStage = metaData.releaseStage.content;\n\nif ([\"production\", \"staging\", \"demo\"].includes(releaseStage)) {\n let opts = {\n releaseStage,\n apiKey: metaData.bugsnagApiKey.content,\n plugins: [new BugsnagPluginReact()],\n enabledReleaseStages: [\"production\", \"staging\", \"demo\"],\n };\n if (metaData.bugsnagAppVersion && metaData.bugsnagAppVersion.content) {\n opts.appVersion = metaData.bugsnagAppVersion.content;\n }\n Bugsnag.start(opts);\n}\n\n// listener for Google Maps API error\n// we can use gm_authFailure but then we don't get any information about the error\nconst console = window.console;\nlet lastGoogleMapsApiError;\nif (console) {\n const originalError = console.error;\n console.error = function () {\n if (\n arguments &&\n arguments[0] &&\n `${arguments[0]}`.startsWith(\"Google Maps JavaScript API error\")\n ) {\n lastGoogleMapsApiError = arguments[0];\n }\n\n if (originalError.apply) {\n originalError.apply(console, arguments);\n }\n };\n window.gm_authFailure = function () {\n Bugsnag.notify({\n name: \"Google Maps JavaScript API error\",\n message: lastGoogleMapsApiError,\n });\n lastGoogleMapsApiError = undefined;\n };\n}\n","type executeHotjarEventType = (e: Event) => void;\n\ndeclare global {\n interface Window {\n executeHotjarEvent: executeHotjarEventType;\n terminologyEmployee: string;\n noTimesheetsImageUrl: string;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function hotjarNoop(e: Event): void {\n // do nothing\n}\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","webpackEmptyContext","channels","require","forEach","Controller","connect","this","waitForFlatpickrDateValues","then","processingForm","hasBreaks","hasBreakFinishTimeTarget","hasBreakStartTimeTarget","totalBreakMinutes","getTotalBreakMinutes","breakStartTimeTargets","breakFinishTimeTargets","totalAttendanceMinutes","getElapsedMinutes","startAtTarget","value","finishAtTarget","handleHideShowWarnBreak","totalMinutesWorked","displayTotalTimeWorkedMessage","minimumEngagementMinutesValue","showMinimumEngagementGroup","hideMinimumEngagementGroup","mustHaveBreak","mustHaveBreakMinutesValue","enoughBreakMinutes","minimumBreakMinutesValue","showWarningBreak","hideWarningBreak","displayMessage","getDisplayMessage","totalTimeWorkedTarget","innerText","Number","isNaN","Math","floor","startTimeElements","finishTimeElements","minutesList","getDifferenceInMinutes","some","minutes","reduce","totalMinutes","finishTimeInputList","startTimeInput","index","startTimeString","finishTimeString","referenceDate","Date","startTime","parse","finishTime","differenceInMinutes","Promise","minimumEngagementGroupTarget","classList","remove","add","warningBreakTarget","values","minimumEngagementMinutes","mustHaveBreakMinutes","minimumBreakMinutes","targets","transformAttendances","attendanceTargets","attendances","toggleAttendanceDetail","attendance","verticalPosition","zIndex","length","style","translateAttendance","adjustAttendanceGroupHeight","hasAlertChipTarget","toggleAlertChip","toggleNotes","expand","toggleNotesAndShiftsButton","viewLessButtonTarget","replace","toggleAttendanceCheckbox","toggleAttendanceMargins","stack","hideNotes","toggleShiftsMobile","attendanceGroupTarget","toggle","hasMobileAlertChipTarget","toggleMobileAlertChip","shiftsToggleButtonMobileTargets","shiftsToggleButton","hasShiftsToggleButtonTarget","shiftsToggleButtonTarget","hasNotesToggleButtonTarget","notesToggleButtonTarget","alertChipTargets","alertChip","mobileAlertChipTargets","mobileAlertChip","element","attendanceDetailTargets","attendanceDetail","hasCheckTarget","checkTargets","check","hasNotesTarget","notesTargets","notes","transform","action","setHeight","childElementCount","offset","rect","attendanceTarget","getBoundingClientRect","maxHeight","height","attendanceGroup","attendanceHeight","attendanceGroupHeight","count","canClaimValue","enableClaims","disableClaims","hideVisaCountry","visaCountryTarget","showVisaCountry","yesOptionTargets","target","disabled","noOptionTargets","checked","canClaim","Boolean","NEXT_RANGE_KEY","ARROW_RIGHT_KEY","ARROW_LEFT_KEY","BACKSPACE_KEY","inputs","formTarget","getElementsByClassName","Array","from","input","setAttribute","addEventListener","key","prev","document","getElementById","dataset","previous","select","includes","next","inputNumbers","codeInputTarget","join","autosubmit","submit","google","initAutocomplete","autocomplete","maps","places","Autocomplete","inputTarget","setFields","setOptions","componentRestrictions","country","types","event","preventDefault","search","url","async","query","callback","data","axios","params","search_term","ac","fieldTarget","hint","cssClasses","root","source","urlValue","debounce","templates","suggestion","component","on","setVal","full_name","String","BaseController","scrollToTheBottom","scrollObject","scrollTop","scrollHeight","checkedInputs","inputTargets","filter","hideAllElementTargets","checkedInput","showElements","handleChange","hideElements","elementTargets","showValues","split","querySelector","querySelectorAll","initialize","bind","debouncePeriodValue","update","options","handleInput","optionsReducer","choices","Choices","selectTarget","setChoices","getSelectOptions","selectOptionsValue","HTMLInputElement","hasSearchPathValue","splittedPath","searchPathValue","permittedParams","searchParams","URLSearchParams","append","searchKeyValue","fetch","headers","response","json","clearChoices","item","option","accumulator","currentValue","HTMLElement","searchPath","searchKey","selectOptions","debouncePeriod","ckEditor","ClassicEditor","catch","error","console","disconnect","destroy","handleBillingAddressChange","billingAddressTarget","showOtherBillingAddress","hideOtherBillingAddress","handleSendInvoicesToSomeoneElseChange","sendInvoicesToSomeoneElseTarget","showBillingEmails","hideBillingEmails","otherBillingAddressContainerTarget","billingEmailsContainerTarget","hiddenClass","permanentType","rateCardIdContainerTarget","otherKeyDutyContainerTarget","payRateContainer","employmentTypeChange","rateCardIdContainerClassList","keyDuties","keyDutiesSelectTarget","hideRateCardIdAndPayRate","Event","dispatchEvent","handleKeyDutiesChange","keyDutiesOptions","keyDutiesOptionsValue","toggleElement","employmentType","employmentTypeTarget","includeKeyDutyInList","complex_outbound","generateRateCardSelect","allRateCardsValue","complex_inbound","general","onChangeRateCard","type","selectedIndex","getAttribute","rateCardTypeTarget","getPayRates","removePayRateContailer","keyDutiesProvided","listOfkeyDuties","Set","concat","listOfRateCards","otherKeyDutyTarget","currentRateCardId","rateCardIdTarget","innerHTML","rateCard","name","hideElementTargets","sort","hideValues","intersection","dataParams","trim","toString","Rails","hourlyPayRateCalculationPathValue","success","replace_content","pay_rate_container","hourlyPayRateCalculationPath","allRateCards","submitForm","formData","FormData","clientEmailValue","submitUrlValue","dataType","submitUrl","clientEmail","sendRequestMobile","conversationElement","currentTarget","markConversationAsReadUrlValue","total_unread_messages_count","window","location","href","getConversationUrlValue","sendRequest","conversationContainer","messageClass","sendMessage","contentTarget","createMessageUrlValue","onSuccess","errorHandling","insertAdjacentHTML","message_component","reset","createMessageUrl","showConversation","toggleSelectedConversationStyle","showMessaegsModeValue","conversation_container","activeElement","currentCallerId","populateContent","stopPropagation","containerTarget","targetPath","content","SESSION_STORAGE_KEY","setFocusedDay","saveFocusedDay","sessionStorage","setItem","wday","selectedDay","getItem","getDay","dayTargets","find","day","setFocusedDayToToday","today","typeValue","hideUploadFor","vevoTarget","hasResidenceTarget","showUploadFor","residenceTarget","toggleUploadForm","visaRequired","CustomNestedForm","super","reorderNestedFormIndex","childNodes","children","i","getCompanyList","companyList","JSON","textContent","nameWords","companyMatches","conpany","toLowerCase","companyMatchesHTML","company","animationEnd","now","confettiFrequency","particleAngles","confettiOptions","particleCount","particleSpread","particleOrigin","y","particleColors","particleScalar","particleTicks","renderValue","initConfettiAnimation","confettiInterval","setInterval","requestAnimationFrame","renderConfetti","clearInterval","particleAngle","generateConfettiParticles","confetti","spread","origin","colors","angle","scalar","ticks","render","startCountdown","remainingTime","remainingTimeValue","updateCountdown","countdownInterval","hideCountdown","enableLink","countdownTarget","countdownParentTarget","linkTarget","template","templateTarget","container","newIndex","newForm","getTime","closest","buttonTarget","checkboxTargets","checkbox","detailsTarget","handleSelection","files","fileInputTarget","updateDetails","listFilenames","clearFileList","filenamesListTarget","filesLength","Pluralize","filename","listItem","getListItemElementFromTemplate","getIconCheckCircle","prepend","getIconBin","appendChild","cloneNode","setTimeout","show","autoHideValue","hide","classesValue","parentNode","removeChild","classes","autoHide","Flatpickr","dateFormat","config","mode","change","selectedDates","dateString","instance","startAt","formatDate","finishAt","dateRangeTarget","dispatchCustomEvent","dispatchCustomEventLimitDateRange","reload","customEvent","CustomEvent","stringStartAt","stringFinishAt","checkDate","isValidDateRange","isLessThan14Days","alert","refreshPageWithParams","click","gaClickTrack","click_text","clickTextValue","clickCheckbox","checkbox_name","checkboxNameValue","checkbox_label","checkboxLabelValue","gaSelectTrack","select_label","selectLabelValue","selected_name","selected_value","selectedValueValue","clickText","checkboxName","checkboxLabel","selectLabel","selectName","selectedValue","otherTopSkillValue","otherTopSkillContainerTarget","handleTopSkillsChange","otherSkillTarget","set","editUrlValue","editUrl","handleCompanyBenefitsChange","otherCompanyBenefitOptionValue","otherCompanyBenefitContainerTarget","otherCompanyBenefitInputTarget","otherCompanyBenefitOption","visit","Turbolinks","shrink","openMobile","navigationTarget","closeMobile","pageContentBody","Inputmask","placeholder","mask","maskedInputTargets","toggleClass","toggleModal","modalId","toggleAndSetDataModal","job","time","note","selectedOption","selectedText","text","wage","getLocation","hideModal","Remote","detail","modalContentTarget","onArrowDownKeydown","sibling","navigate","onArrowUpKeydown","onBackspaceKeydown","searchTarget","selected","pop","uncheckItem","onEnterKeydown","focusedItem","onEscapeKeydown","toggleDropdown","hiddenTarget","selectedValueChanged","enhanceHiddenSelect","defineProperty","get","searchLocal","dropdownTarget","theRestOfTheItems","itemsValue","x","listTarget","selectedItems","items","searched","selectedSearched","contains","inputContainerTarget","display","blur","focus","closeOnClickOutside","searchRemoteValue","allItems","checkItem","searchUrlValueChanged","searchUrlValue","itemsValueChanged","hasListTarget","hasPreviewTarget","previewTarget","pills","paddingTop","createElement","removeItem","itemToRemove","itemToUncheck","itemToCheck","toggleItem","newSelectedArray","push","removeAttribute","onKeyDown","handler","itemTargets","indexOf","def","previouslySelected","scrollIntoView","behavior","block","focusSearch","addableEvent","inputTemplate","noResultsTemplate","noResultsMessage","disabledValue","itemsTemplate","itemTemplate","pillTemplate","checkBoxChange","searchUrl","preloadUrl","addableUrl","selectedOptions","NavItemToggle","Toggle","toggleAtLoad","activeNavLinkItem","parentElement","previousElementSibling","matches","NestedForm","parseInt","increment","decrement","absoluteValue","newValue","abs","clearErrorDetails","showLoading","loadingTarget","hideLoading","handleSubmitButtonOnClick","reader","handleFormSubmit","errorDetailsContainerTarget","errorDetailsTarget","file","fr","FileReader","onload","onerror","readAsText","showErrorDetails","errorDetails","invalid_attendance_forms","row_line","error_msg","stringify","getUnassignedAttendances","blob","Blob","URL","createObjectURL","downloadElement","downloadFileFromAjaxResponse","checkboxes","attendanceIds","checkBoxElement","setFormsParams","formTargets","form","buttonTargets","button","toggleCssClassValue","toggleCssClass","modalTargetElement","modalTargets","modal","statusTarget","defaultValue","candidatesCountTarget","candidatesCounterIdValue","hasSelectAllCheckboxTarget","selectAllCheckboxTarget","every","updateCandidatesCount","candidateText","selectedCountTarget","selectedRows","candidatesCounterId","hasInvitationButtonTarget","invitationButtonTarget","handleInvitationButtonOnClick","handleCheckboxOnChange","selectAll","deSelectAll","hasDownloadCsvButtonTarget","downloadCsvButtonTarget","scrollToMessageForm","messages_container","showMessage","toggleSelectedMessageStyle","getMessageUrlValue","getMessageUrl","cancelModalTarget","showModal","modalTarget","validate_file_only","skip_validation","hideImportRecipients","sendWithoutValidationContainerTarget","moveToSendMessagesStep","sendToTarget","valid_recipients","file_name","sendMessagesHeaderTarget","sendMessagesContainerTarget","sendMessageButtonContainerTarget","importRecipientsHeaderTarget","importRecipientsContainerTarget","nextButtonContainerTarget","invalid_recipients","lineno","handleChangePerPage","path","urlParams","setLatitudeTargetValue","hasLatitudeTarget","latitudeTarget","setLongitudeTargetValue","hasLongitudeTarget","longitudeTarget","setAddressTargetValue","hasAddressTarget","addressTarget","setCityTargetValue","hasCityTarget","cityTarget","setStateTargetValue","hasStateTarget","stateTarget","setPostalCodeTargetValue","hasPostalCodeTarget","postalCodeTarget","setCountryTargetValue","hasCountryTarget","countryTarget","setStreetTargetValue","hasStreetTarget","streetTarget","setStreetNumberTargetValue","hasStreetNumberTarget","streetNumberTarget","setPlusCodeTargetValue","hasPlusCodeTarget","plusCodeTarget","setFieldTargetValue","hasFieldTarget","setFormattedAddressTargetValue","formattedAddressTarget","optionsTypes","has","parseAndCleanOptionsTypes","addListener","placeChanged","place","getPlace","undefined","geometry","address_components","setAddressFieldsFromGeocode","setAddressFields","lat","lng","findComponentLongName","findComponentShortName","postalCodeValueNotMissing","geocodePostalCode","formatted_address","components","long_name","short_name","disableEnterIfAutocompleteIsVisible","keyCode","isAutocompleteElementVisible","log","offsetWidth","offsetHeight","getClientRects","latlng","Geocoder","geocode","results","status","handlePlaceChanged","suburbInputTarget","findComponentName","postcodeInputTarget","stateInputTarget","countryCodeInputTarget","nameType","toggleTarget","containerTargets","handleChangeToHide","showElementTargets","elementTarget","hideTarget","hideTargets","latInputTarget","lonInputTarget","withRadiusTarget","withRadiusSelectTarget","Reveal","hideBtnTarget","showBtnTarget","blankOptionColor","toggleBlankValueStyle","conversationUrlValue","conversations_container","conversationUrl","isOpen","openClass","unactiveClasses","activeClasses","bgActiveClass","close","open","callerId","parentContainerTarget","closePanel","HTMLFormElement","updateTotal","total","parseInputValue","valueIsNotNan","sumValues","totalTarget","containerNamesValue","containerId","initializeCarousel","Swiper","modules","Pagination","direction","pagination","el","dynamicBullets","navigation","nextEl","prevEl","containerNames","activeKlass","activeClassValue","tabTargets","hidden","selectedBtn","btnTargets","defaultTabValue","selectedTab","defaultTab","activeClass","hasValidTfnPresentValue","validTfnPresentValue","enableTfnInput","enableExemptionSelect","warningTarget","tfnInputTarget","exemptionSelectTarget","handleExemptionSelect","noOptionTarget","handleTfnInput","yesOptionTarget","validTfnPresent","CreateDirectUpload","constructor","dropzoneInstance","resizedFile","imageHiddenInput","uploadedUrl","directUpload","DirectUpload","start","create","emitDropzoneError","signed_id","emitDropzoneSuccess","directUploadWillStoreFileWithXHR","xhr","bindProgressEvent","emitDropzoneUploading","upload","emitDropzoneUploadProgressing","Dropzone","emit","progress","loaded","generateThumbnail","createImageThumbnails","_enqueueThumbnail","dropzone","cropper","defaultThumbnailName","defaultThumbnailSize","cropperViewMode","cropperDragMode","cropperAspectRatio","defaultCroppedFilename","initDropzone","bindEvents","setDictionary","croppedProfileImageUrlValue","renderUploadedImage","showEditButton","hasSkipButtonTarget","skipButtonTarget","nextButtonTarget","sourceImageHiddenInputTarget","uploadTarget","getCSRFToken","directUploadUrlValue","acceptedFiles","acceptedFilesValue","maxFiles","acceptedMaximumFilesValue","maxFilesize","acceptedMaximumFileSizeValue","thumbnailWidth","thumbnailWidthHeightValue","thumbnailHeight","resizeWidth","resizeWidthValue","resizeMimeType","resizeMimeTypeValue","autoQueue","isCropped","getAcceptedFiles","existingFile","resizeImage","hideEditButton","showCropperContainer","showCancelButton","initCropper","message","removeAllFiles","showErrorAlert","errorTarget","cropTarget","hasCroppedCanvasDataValue","setCanvasData","croppedCanvasDataValue","cropFile","sourceProfileImageUrlValue","removeFile","croppedImageHiddenInputTarget","croppedCanvasDataHiddenInputTarget","dismountCropper","transformFile","call","initDirectUpload","File","imageUrl","hideErrorAlert","src","Cropper","aspectRatio","viewMode","dragMode","cropBoxMovable","cropBoxResizable","minCropBoxWidth","minCropBoxHeight","guides","center","crop","getCanvasData","getCroppedCanvas","toBlob","uploadCroppedCanvas","cancelCropping","hideCropperContainer","width","addFile","canvasData","mockFile","size","accepted","displayExistingFile","showCropperCancelButton","hideCropperCancelButton","cropContainerTarget","uploadContainerTarget","editButtonTarget","dictInvalidFileType","dictFileTooBig","dictMaxFilesExceeded","errorAlertTarget","cropperCancelButtonTarget","croppedProfileImageUrl","sourceProfileImageUrl","thumbnailWidthHeight","acceptedMaximumFiles","acceptedMaximumFileSize","directUploadUrl","croppedCanvasData","displayTarget","format","vevoMaximumFileSize","exceedMaximumFileSizeErrorMessage","maxFileSize","maximumDocumentFileSizeValue","exceedMaxSizeError","exceedMaxSizeErrorValue","vevoFileNameValue","showVevoFileThumbnail","showVevoFileUpload","vevoFileFieldTarget","vevoFileNameTarget","clearVevoErrorMessage","vevoFileErrorTarget","handleDelete","clearVevoHiddenFields","vevoFileThumbnailTarget","vevoFileUploadTarget","hiddenEl","vevoFileName","maximumDocumentFileSize","visaRequiredValue","showVevoUpload","hideVevoUpload","application","Application","context","load","definitionsFromContext","register","Dropdown","Popover","NotFound","useEffect","GraphQLClient","tenantPath","fetcher","client","variables","request","AttendanceStateEnum","useApproveAttendancesMutation","useMutation","useCreateBuyoutRequestsMutation","useCreateChangeRequestMutation","useCreateExtensionRequestsMutation","useCreateRehireRequestsMutation","useFetchAttendancesCostSummaryQuery","useQuery","useFetchChangeRequestReasonsQuery","useFetchClientCompanyUsersQuery","useFetchExtensionRequestReasonsQuery","useFetchRehireRequestEmploymentTypesQuery","CommunityMemberAvatar","profileImageUrl","customAvatarSize","EXTRA_SMALL","SMALL","MEDIUM","LARGE","EXTRA_LARGE","boringAvatarSize","boringAvatarColors","className","variant","ApproveAttendancesProfile","workedDates","communityMember","fullName","CostSummaryAwardItems","payrates","rate","description","hoursWorked","CostSummaryFeeItem","label","Modal","FullLayoutModal","title","subTitle","closeModal","contentLabel","overlay","top","left","right","bottom","padding","LeftURL","onClick","BeefHotpotURL","Checkbox","onChange","COMPONENT_NAME","ApproveAttendancesPreview","onBack","useNavigate","approvalConsented","setApprovalConsented","useState","sendingApproval","setSendingApproval","showErrors","setShowErrors","mutation","graphqlClient","isFetching","communityMembers","primaryRates","secondaryRates","payrollComplianceFeeInAud","casualLoadingFeeInAud","serviceFeeInAud","gstInAud","grandTotalInAud","paymentTermSurchargeInAud","attendancesCostSummary","findPrefix","preferredName","i18next","terminologyEmployee","modalTitle","parseFloat","zeroPaymentTermSurcharge","htmlFor","loading","approvalConsent","mutateAsync","approveAttendances","errors","pathname","APPROVAL_SUCCESS_PATH","state","APPROVAL_FAILURE_PATH","ApprovalFailure","useLocation","handleBack","ATTENDANCES_APPROVAL_PATH","ApproveAttendancesPreviewComponentName","approvedImageUrl","executeHotjarEvent","hotjarNoop","ApprovalSuccess","useSearchParams","AttendancesApprovalTab","to","isActive","clsx","BackendContext","React","BackendContextProvider","Provider","useBackendContext","FilterByManager","selectedManagerId","setSelectedManager","useFormContext","currentClientCompanyUserId","clientCompanyUsers","user","gaEventTracking","userId","getSelectedManagerName","toUpperCase","seletcedManagerIdx","selectedManagerName","selectedManagerValue","Form","defaultValues","onSubmit","methods","useForm","handleSubmit","Input","usePageTitle","titlePage","pageTitle","AttendanceApproval","selectedManager","isFetchingSubmittedAttendances","dataSubmittedAttendances","errorSubmittedAttendances","refetch","refetchAllSubmittedAttendances","useFetchAllSubmittedAttendancesQuery","managerId","isFetchingFlaggedAttendances","dataFlaggedAttendances","errorFlaggedAttendances","refetchAllFlaggedAttendances","useFetchAllFlaggedAttendancesQuery","submittedAttendancesCount","submittedAttendances","flaggedAttendancesCount","flaggedAttendances","SUBMITTED_ATTENDANCES_PATH","REVIEW_ATTENDANCES_PATH","useAttendanceApprovalOutletContext","useOutletContext","groupAttendancesByPosition","positionId","position","existingAttendanceGrouping","groupAttendancesIdsByPosition","getBreakTimes","breaks","brk","getDailyTotal","durationSeconds","breakDurationSeconds","getBreakDuration","humanizeSecondsWorked","getTotalSecondsWorked","sum","breakDuration","duration","minimumEngagementDuration","valueInSeconds","getTotalHoursAndMinutesWorked","totalSecondsWorked","secondsWorked","hours","hoursString","pluralize","minutesString","SelectionActionType","selectedAttendancesReducer","ADD_TO_SELECTED","REMOVE_FROM_SELECTED","ADD_ALL_ATTENDANCES","REMOVE_ALL_ATTENDANCES","FilterByWeployee","communityMemberName","setCommunityMemberName","allSelectedDispatch","communityMemberSearchTerm","ChangeRequestCommunityMemberProfile","MinimumEngagementChip","PublicHolidayChip","UpdatedTimesheetChip","useMediaQuery","setMatches","media","matchMedia","listener","removeEventListener","ChangeRequestPreviewAttendanceItem","workedOnDate","hoursFromTo","formattedDuration","additionalNotes","minimumEngagementRequired","belowMinimumEngagementReasonToHuman","hasPublicHoliday","isResubmitted","isMobile","cellClassNames","breakTime","formatted","ChangeRequestPreview","onFormSubmissionSuccess","reactHookFormHandleSubmit","setError","formState","changeRequestReasonsData","isLoading","isLoadingChangeRequestReasons","isSuccess","isSuccessChangeRequestReasons","resubmitted","reason","change_request","details","createChangeRequest","handleFailure","flash","changeRequestReasons","rows","chipClassName","minimumEngagementChip","updatedTimesheetChip","publicHolidayChip","workedThroughBreakChip","renderChips","workedThroughBreak","FlaggedAttendancesGroupListItem","attendancesCount","stackOrder","isGroupExpanded","humanReadableMinimumEngagementDuration","onExpandList","onAttendanceToggle","checkedAttendances","ref","DownArrow","FAKE_STACK_VISIBLE_HEIGHT","FlaggedAttendancesGroupList","attendanceItemsRef","useRef","listItemHeight","setListItemHeight","getAndSetListItemHeight","firstListItemtHeight","getFirstItemHeight","current","listContainerHeight","desktopStyle","mobileStyle","numberOfAttendanceItems","cardClassName","renderFakeStack","minimumEngagementDurationInseconds","CheckboxWithIndeterminateState","checkRef","indeterminate","FlaggedAttendancesGroupProfile","positionTitle","totalHoursWorked","attendanceCount","isExpanded","selectAllToggle","selectedAttendanceCount","checkboxState","FlaggedAttendancesGroupContainer","selectedAttendancesIds","setIsExpanded","handleExpandList","unCheckedAttendancesIds","acc","attendancesIds","att","UpArrow","attendanceId","FlaggedAttendancesGroupHeading","NoAttendancesMessage","noSearchResults","noTimesheetsImageUrl","heading","customStyles","renderImage","useCallback","alt","ComputerAndPlantImageUrl","FlaggedAttendancesContainer","isModalOpen","setIsModalOpen","setAction","useFetchFlaggedAttendancesQuery","loaderStyle","screen","groupedAttendancesByPosition","selectedAttendances","groupedSelectedAttendancesIdsByPosition","disableChangeRequestButton","workedBy","first","handleApproval","handleChangeRequest","handleSelectAllToggle","idsToAdd","gaClickCheckboxEventTracking","handleDownloadCSV","csrf","SUBMITTED_ATTENDANCES_REPORT_PATH","method","body","attendance_ids","ok","csvData","a","csvUrl","download","toISOString","revokeObjectURL","checkedValue","pick","entries","useDebouncedState","initialState","wait","setState","FlaggedAttendances","selectedDispatch","useReducer","SubmittedAttendancesGroupListItem","showAdditionalNotes","setShowAdditionalNotes","handleViewAllShifts","renderActionCellContent","SubmittedAttendancesGroupList","firstItemHeight","SubmittedAttendancesGroupProfile","SubmittedAttendancesGroupContainer","SubmittedAttendancesGroupHeading","SubmittedAttendancesContainer","useFetchSubmittedAttendancesQuery","gaClickEventTracking","SubmittedAttendances","timesheetApprovalRoutes","monashTimesheetApprovalRoutes","MONASH_ATTENDANCES_APPROVAL_PATH","MONASH_SUBMITTED_ATTENDANCES_PATH","MONASH_REVIEW_ATTENDANCES_PATH","MONASH_APPROVAL_SUCCESS_PATH","MONASH_APPROVAL_FAILURE_PATH","isFinishingSoon","finishOn","finishOnDate","todaysDate","differenceInMonths","ActivePositionListItemMobile","startOn","newJobAcceptance","mobileNumber","substring","hideHeaderBackButton","renderBackButton","PeppaURL","BuyoutRequestPreview","selectedPositions","setValue","listExpanded","setListExpanded","isSubmitting","setIsSubmitting","toLocaleDateString","month","onSelectDate","date","positionIds","buyout_request","createBuyoutRequests","WEPLOYEES_BUYOUT_REQUEST_SUCCESS_PATH","onClose","minDate","Info","PeopleInLivingRoomImageUrl","ExtensionRequestPreview","extensionRequestReasonsData","isLoadingExtensionRequestReasons","isSuccessExtensionRequestReasons","extension_request","createExtensionRequests","WEPLOYEES_EXTENSION_REQUEST_SUCCESS_PATH","extensionRequestReasons","newFinishDate","datesSorted","latestDate","latestDateObj","setDate","getDate","getLatestFinishOn","setSelectedPositionIds","NoActivePositions","noActivePositionImageURL","PositionTab","PositionTabs","WEPLOYEE_ACTIVE_POSITIONS_PATH","WEPLOYEE_PAST_POSITIONS_PATH","props","perPage","totalCount","onPageChange","pageCount","ceil","breakLabel","nextLabel","newOffset","pageRangeDisplayed","marginPagesDisplayed","containerClassName","renderOnZeroPageCount","ProfileInformation","role","contact","emergencyInfo","residency","ADMIN_COMMENT_PATH","ADMIN_COMMUNITY_MEMBER_PROFILES_PATH","ADMIN_ONBOARDING_PATH","ADMIN_COACHING_PATH","COMPANIES_PATH","getCommunityMemberProfiles","inAdmin","COMMUNITY_MEMBER_PROFILES_PATH","getHeaders","getOnboardingChecklist","ONBOARDING_PATH","getCoachingChecklist","COACHING_PATH","updateOnboardingChecklist","onboarding_checklist_id","completed_at","completed","position_id","updateFocus","createAbsence","CREATE_ABSENCE_PATH","updateCoaching","getAbsence","ABSENCE_PATH","ADMIN_ABSENCE_PATH","createFeedback","CREATE_FEEDBACK_PATH","getFeedbacks","FEEDBACK_PATH","getPerformanceRecords","PERFORMANCE_RECORDS_PATH","savePerformanceRecords","metrics","ADMIN_PERFORMANCE_RECORDS_PATH","record_id","getPerformanceFields","PERFORMANCE_FIELDS_PATH","ADMIN_PERFORMANCE_FIELDS_PATH","getComments","recordId","recordType","COMMENTS_PATH","sendComment","mentions","record_type","getTaggers","TAGGERS_PATH","Focus","areasOfFocus","setAreasOfFocus","updating","setUpdating","areas_of_focus","readOnly","cols","mentionStyle","backgroundColor","overflow","CommentContent","recordName","taggers","onNbCommentChange","defaultComments","showRecordType","hideAddComment","comment","setComment","comments","setComments","setMentions","profile_url","toLocaleString","newPlainTextValue","_","__","mention","handleOnChange","tagger","Comment","nbComments","setNbComments","setRecordName","firstKey","placement","showArrow","CommentIcon","number","Absence","absenceData","setAbsenceData","absents","backupData","setBackupData","rowWarnings","setRowWarnings","handleInputChange","updatedData","updatedWarnings","updated_at","document_url","requester","isEditing","borderSpacing","accept","rowData","prevData","saveRow","updatedBackup","cancelEdit","enable","toggleEditMode","AllComment","typeComments","setTypeComments","globalComments","setGlobalComments","Position","rest","inputDefault","addressed_date","Coaching","list","setList","inputItem","setInput","itemIndex","setItemIndex","coachings","prevState","editURL","Feedback","feedbackData","setFeedbackData","feedbacks","Onboarding","checkList","setCheckList","newList","handleOnCheckboxChange","handleOnDateChange","Performance","performanceData","setPerformanceData","fields","records","defaultFields","useMemo","row","field","field_name","display_name","min","saveURL","record","cancelURL","TAB_CLASSES","TAB_ACTIVE_CLASSES","TAB_KEYS","TabSection","setTaggers","setSearchParams","activeTab","tabIndex","onSelect","selectedClassName","CommunityMemberModal","profileData","setProfileData","mobile","emergency_contact_full_name","emergency_contact_relationship","emergency_contact_number","mobile_number","visa_required","profile_image_url","shouldCloseOnOverlayClick","onRequestClose","justifyContent","inset","border","borderRadius","Cross","ActivePositionsListItemDesktop","onboarding","feedback","coaching","absences","performance","tableCellStyleClasses","lastWeek","thisWeek","PositionsTable","activePositions","checkboxOnchange","selectedPositionIds","modalOnClose","setPositionId","isCMModalOpen","setIsCMModalOpen","positionParams","openCommunityMemberModal","jobLink","jobOpeningId","jobOpeningName","JOB_OPENING_DETAIL_PATH","delete","ActivePositions","employees","paginationOffset","setPaginationOffset","queryParams","manager_id","community_member_name","limit","ACTIVE_POSITIONS_PATH","getActivePositions","handleSelectAllCheckboxChange","handleSelectCheckboxChange","newSelectedPositionIds","handleRequests","requestAction","selecteableActivePositionIds","flatMap","extensionRequests","buyoutRequests","isPending","getSelecteableActivePositionIds","pendingRequestPositionIds","getSelectedPositions","renderActionModal","fullWidth","BuyoutRequestSuccess","dangerouslySetInnerHTML","__html","DASHBOARD_PATH","ImageUrl","ExtensionsRequestSuccess","NoPastPositions","PastPositionListItemDesktop","PastPositionListItemMobile","RehireRequestPreview","control","employmentTypeValue","useWatch","rehireRequestEmploymentTypesData","isLoadingRehireRequestEmploymentTypes","isSuccessRehireRequestEmploymentTypes","communityMemberIds","rehire_request","createRehireRequests","rehireRequestEmploymentTypes","defaultChecked","startDate","endDate","salary","PastPositions","useFetchAllPastPositionsQuery","pastPositions","selecteablePastPositionIds","handleRehire","weployeesRoutes","WEPLOYEES_PATH","studentsRoutes","STUDENTS_PATH","STUDENT_ACTIVE_POSITIONS_PATH","STUDENT_PAST_POSITIONS_PATH","STUDENTS_EXTENSION_REQUEST_SUCCESS_PATH","STUDENTS_BUYOUT_REQUEST_SUCCESS_PATH","AppRoutes","queryClient","QueryClient","defaultOptions","queries","refetchOnWindowFocus","AppProvider","backendContext","QueryClientProvider","toastOptions","App","node","ReactDOM","useFetchClientCompaniesQuery","buildOptions","objects","valueField","labelField","object","ErrorMessage","useFormState","shouldUnregister","RadioGroup","isInline","required","classNames","Select","prompt","getValues","promptIsVisible","formatISO8601Date","year","AttendancesForInvoicingFilter","setAttendanceIds","selectedSubdivision","setSubdivision","setDateRange","selectedPositionTitle","setSelectedPositionTitle","clientCompanyId","useParams","useFetchParamsForFilterAttendanceQuery","uniqueLocations","Map","paramsForFilterAttendance","locations","subdivision","locationOptions","managerOptions","companyUsers","positionTitleOptions","positionTitles","attendanceIdsTerm","textToSet","subdivisionId","AttendancesForInvoicingSelected","selectedAttendanceIds","openModal","AttendancesForInvoicingHeading","selectAllAttendance","isSelectAll","scope","renderIssue","AttendancesForInvoicingTable","filteredAttendanceIds","setSelectedAttendanceIds","isForceRefetch","setIsForceRefetch","paramsForQuery","attendancesForInvoicingIsFetching","attendancesForInvoicingData","attendancesForInvoicingError","refetchAttendances","useFetchAttendancesForInvoicingQuery","attendancesForInvoicing","manager","email","consolidateAttendancesOptions","PreviewInvoicesBillingForm","clientCompany","attendanceCostItems","formMethods","useCreatePreviewInvoiceMutation","disabledSubmit","billingContactId","invoicesConsolidation","reference","createPreviewInvoice","billingContacts","formatCurrency","currency","minimumFractionDigits","PreviewInvoicesSummaryRow","totalPaymentTermSurcharge","totalCost","colSpan","PreviewInvoicesTable","paymentTermSurcharge","grandTotal","removeAttendanceCostItem","humanizeHoursWorked","humanizeHours","humanizeMinutes","attendanceCostItem","weployeeName","weployerName","cost","confirm","PreviewInvoices","setAttendanceCostItems","setPaymentTermSurcharge","setGrandTotal","setTotalHoursWorked","showLoadingIndicator","setShowLoadingIndicator","attendanceCostItemsSummaryFetching","attendanceCostItemsSummarySuccess","attendanceCostItemsSummaryData","attendanceCostItemsSummaryError","refetchAttendanceCostItemsSummary","useFetchAttendanceCostItemsSummaryQuery","refetchOnMount","refetchOnReconnect","retry","staleTime","Infinity","attendanceCostItemsSummary","newSelectedAttendanceIds","attendanceItem","AttendancesForInvoicing","setIsOpen","dateRange","clientCompanyIsFetching","clientCompanyData","clientCompanyError","useFetchClientCompanyQuery","ClientCompanies","clientCompanies","Invoicings","invoicingsRoutes","client_id_is","PositionsPage","selectedClient","setSelectedClient","clientOptions","clientId","dispatchMapsEvent","args","bubbles","cancelable","ActiveStorage","r","metaData","getElementsByTagName","releaseStage","opts","apiKey","bugsnagApiKey","plugins","BugsnagPluginReact","enabledReleaseStages","bugsnagAppVersion","appVersion","Bugsnag","lastGoogleMapsApiError","originalError","arguments","startsWith","apply","gm_authFailure"],"sourceRoot":""}