{"version":3,"sources":["webpack:///./src/components/ParticipantSearch/searchfiltercolumns.ts","webpack:///./src/views/Programs/Participants/ParticipantEdit.vue?a777","webpack:///./src/components/VolunteerSelectionModal.vue?da86","webpack:///./src/components/VolunteerSelectionModal.vue","webpack:///./src/components/VolunteerSelectionModal.vue?b065","webpack:///./src/components/VolunteerSelectionModal.vue?80a3","webpack:///./src/components/ContactCardWithRoles.vue?ab72","webpack:///./src/components/PaymentAddModal.vue?4ae2","webpack:///./src/components/ContactEditModal.vue?812f","webpack:///./src/components/ContactEditForm.vue?b37f","webpack:///./src/views/Programs/Participants/ext/composeutils.ts","webpack:///./src/components/Contact/InnerContact.vue?ec6a","webpack:///./src/components/PlayerEvaluationEditModal.vue?a2e6","webpack:///./src/views/Programs/Participants/ParticipantEdit.vue?6c33","webpack:///./src/views/Programs/Participants/ext/decomposeutils.ts","webpack:///./src/views/Programs/Participants/vues/DayOfTheWeekParticipant.vue?adbe","webpack:///./src/lib/common/exceptions/ArgumentRuntimeException.ts","webpack:///./src/lib/support/models/UpwardTypes/UpdwardDayTypeID/UpwardIDToNumber.ts","webpack:///./src/lib/support/models/UpwardTypes/UpdwardDayTypeID/NumberToUpwardID.ts","webpack:///./src/views/Programs/Participants/ext/practicedayexclusiondata.ts","webpack:///./src/views/Programs/Participants/vues/DayOfTheWeekParticipant.vue","webpack:///./src/views/Programs/Participants/vues/DayOfTheWeekParticipant.vue?8d45","webpack:///./src/views/Programs/Participants/vues/DayOfTheWeekParticipant.vue?243e","webpack:///./src/views/Programs/Participants/vues/ParticipantsContacts.vue?340b","webpack:///./src/components/ContactEditModal.vue?d055","webpack:///./src/components/ContactEditForm.vue?3161","webpack:///./src/lib/support/models/PlayerContact/phoneutils.ts","webpack:///./src/lib/support/models/PlayerContact/validation_utils.ts","webpack:///./src/components/ContactEditForm.vue","webpack:///./src/components/ContactEditForm.vue?6f58","webpack:///./src/components/ContactEditForm.vue?180d","webpack:///./src/components/ContactEditModal.vue","webpack:///./src/components/ContactEditModal.vue?4232","webpack:///./src/components/ContactEditModal.vue?0db0","webpack:///./src/components/ContactCardWithRoles.vue?6647","webpack:///./src/lib/support/models/ContactInfo/PlayerContactToContactInfo.ts","webpack:///./src/components/Contact/InnerContact.vue?12d0","webpack:///./src/lib/support/models/ContactInfo/data.ts","webpack:///./src/components/Contact/InnerContact.vue","webpack:///./src/components/Contact/InnerContact.vue?a7e8","webpack:///./src/components/Contact/InnerContact.vue?c1a3","webpack:///./src/components/ContactCardWithRoles.vue","webpack:///./src/components/ContactCardWithRoles.vue?71f1","webpack:///./src/components/ContactCardWithRoles.vue?e663","webpack:///./src/views/Programs/Participants/vues/ext/contacts.ts","webpack:///./src/views/Programs/Participants/vues/ParticipantsContacts.vue","webpack:///./src/views/Programs/Participants/vues/ParticipantsContacts.vue?b888","webpack:///./src/views/Programs/Participants/vues/ParticipantsContacts.vue?1f4b","webpack:///./src/views/Programs/Participants/vues/ParticipantBasics.vue?58b8","webpack:///./src/lib/support/utilities/strings/isNullOrEmpty.ts","webpack:///./src/views/Programs/Participants/vues/ParticipantBasics.vue","webpack:///./src/views/Programs/Participants/vues/ParticipantBasics.vue?072b","webpack:///./src/views/Programs/Participants/vues/ParticipantBasics.vue?909c","webpack:///./src/views/Programs/Participants/vues/ParticipantProgram.vue?7578","webpack:///./src/views/Programs/Participants/vues/PaymentsDisplay.vue?99c6","webpack:///./src/views/Programs/Participants/vues/ext/paymentgridcolumns.ts","webpack:///./src/components/PaymentAddModal.vue?53bb","webpack:///./src/lib/support/models/PlayerPayment/data.ts","webpack:///./src/lib/support/models/PlayerPayment/builder.ts","webpack:///./src/components/PaymentAddModal.vue","webpack:///./src/components/PaymentAddModal.vue?e69e","webpack:///./src/components/PaymentAddModal.vue?0ad4","webpack:///./src/views/Programs/Participants/vues/PaymentsDisplay.vue","webpack:///./src/views/Programs/Participants/vues/PaymentsDisplay.vue?78a2","webpack:///./src/views/Programs/Participants/vues/PaymentsDisplay.vue?bb3c","webpack:///./src/views/Programs/Participants/vues/EvaluationDisplay.vue?7ab9","webpack:///./src/views/Programs/Participants/vues/ext/EvaluationGridColumns.ts","webpack:///./src/components/PlayerEvaluationEditModal.vue?72cf","webpack:///./src/components/PlayerEvaluationEditModal.vue","webpack:///./src/components/PlayerEvaluationEditModal.vue?50fb","webpack:///./src/components/PlayerEvaluationEditModal.vue?a731","webpack:///./src/views/Programs/Participants/vues/EvaluationDisplay.vue","webpack:///./src/views/Programs/Participants/vues/EvaluationDisplay.vue?8732","webpack:///./src/views/Programs/Participants/vues/EvaluationDisplay.vue?b50f","webpack:///./src/views/Programs/Participants/vues/CoachSelect.vue?e39b","webpack:///./src/models/ParticipantUI/CoachSelect.ts","webpack:///./src/views/Programs/Participants/vues/CoachSelect.vue","webpack:///./src/views/Programs/Participants/vues/CoachSelect.vue?5336","webpack:///./src/views/Programs/Participants/vues/CoachSelect.vue?da81","webpack:///./src/views/Programs/Participants/vues/CarpoolSelect.vue?61fc","webpack:///./src/components/CarpoolSelectionModal.vue?a6ea","webpack:///./src/lib/components/CarpoolSelectionModal/CarpoolGridColumns.ts","webpack:///./src/components/CarpoolSelectionModal.vue","webpack:///./src/components/CarpoolSelectionModal.vue?228a","webpack:///./src/components/CarpoolSelectionModal.vue?402d","webpack:///./src/lib/support/models/PlayerCarpoolLink/data.ts","webpack:///./src/views/Programs/Participants/vues/CarpoolSelect.vue","webpack:///./src/views/Programs/Participants/vues/CarpoolSelect.vue?0ab8","webpack:///./src/views/Programs/Participants/vues/CarpoolSelect.vue?01d0","webpack:///./src/views/Programs/Participants/vues/ParticipantProgram.vue","webpack:///./src/views/Programs/Participants/vues/ParticipantProgram.vue?82cd","webpack:///./src/views/Programs/Participants/vues/ParticipantProgram.vue?ae57","webpack:///./src/views/Programs/Participants/ParticipantEdit.vue","webpack:///./src/views/Programs/Participants/ParticipantEdit.vue?e54c","webpack:///./src/views/Programs/Participants/ParticipantEdit.vue?4540","webpack:///./src/components/ParticipantSearch.vue?35f8","webpack:///./src/components/ParticipantSearch.vue","webpack:///./src/components/ParticipantSearch.vue?900b","webpack:///./src/components/ParticipantSearch.vue?69fa"],"names":["headers","value","text","render","_vm","this","_h","$createElement","_c","_self","attrs","volunteerSelectionHeaders","searchActive","title","selectionData","search","on","updateSearch","searchSelected","passiveSelect","model","callback","$$v","isModalOpen","expression","staticClass","_v","staticRenderFns","v2map","x","internalSelectedID","name","lastName","firstName","gender","individualID","selected","components","SearchModal","filters","properCase","props","league","required","type","String","default","roles","Array","selectedID","Number","searchTerm","selectedRecord","Object","includePastLeagues","Boolean","typeProgramID","setup","ctx","searchTimeout","searchData","updateSelected","p","close","emit","find","immediate","b","data","map","findIndex","s","trim","length","clearTimeout","window","setTimeout","doSearch","volunteersClient","leagueID","first","last","email","phone","orSearch","role","COACH","coachTypeProgramID","component","updateTemplateWithEdits","edit","contacts","player","practiceNightExclusions","udfs","program","evaluations","coach","carpoolLink","payments","products","otherContacts","combineContacts","programs","getCoachInfo","filter","u","typeSizeID","typeColorID","birthDate","udFs","churchName","generalNotes","medicalNotes","middleInitial","typeGradeID","gradeIsOverridden","updateTemplateWithEditsNew","linkID","pendingCoachLinkFirstName","pendingCoachLinkLastName","pendingCoachLinkIndividualID","pendingLinkID","coachLinkIndividualID","CONTACT_PRIORITY","originalContacts","matchContact","matchContactOrUseTemplate","typeRelationshipID","isEmergencyContact","phoneNumbers","addresses","street1","subdivision1","subdivision2","postalCode","typeAddressID","priority","getAddressPriority","emailAddresses","emailAddress","typeEmailID","getContactPriority","thirdPartyClientIDs","optOutEmails","optOutSMS","inviteAllowed","contact","idx","undefined","replaceOrInsertAddress","address","addressID","c","ADDRESS_PRIORITY","relativeRoute","_s","editParticipant","loading","saveAndContinue","cancel","programsAvailable","programsToParticipate","warnAboutProgramChange","_e","gradesList","genderList","nameUpdated","updateParticipant","$set","shouldShowInlineFirstContact","editContacts","playerContactVolunteers","currentLeaguePrograms","isCamp","selectedCampModel","selectedLeagueModel","contactRoleChanges","storeContactRoles","updateEditContacts","leagueDayList","editPracticeNightExclusions","editParticipantActivePrograms","_l","prog","index","key","class","selectedProgramTab","$event","programDescription","productItems","upwId","productsChanged","coachLinkChanged","udfList","editUdfs","searchName","participantFound","changeProgram","scopedSlots","_u","fn","proxy","confirmChangeProgram","movePaymentsonDelete","alertType","showTeamWarning","scrubContacts","pc","some","i","phoneNumber","substr","decomposeLeaguePlayer","input","template","label","daysAvailable","internalValue","RuntimeException","UpwardIDToNumber","UpwardID","NumberToUpwardID","ID","PracticeDaysToDayIndex","pne","typeDayID","DayIndexToPracticeDays","dayindex","DayOfWeekPicker","v","showInitialEditForm","addContact","copyToInternalContact","rolesFor","deleteContactClick","editContactClick","addRoles","removeRole","hasEmergencyContact","visibleContacts","editContact","hasFullContact","updateContact","contactModalOpen","deleteConfirmed","deleteConfirmShowing","allRoleValues","currentRoleIds","sendSelectedRoles","updateSelectedRoles","coachPreferences","editVolunteerPrograms","updateRoleDetails","selectOpen","ref","valid","validated","internalContact","slot","meetsSubmitCriteria","confirmed","meetsEmergencyCriteria","meetsFullCriteria","guardianTypes","update","mobilePhone","homePhone","disableEmail","emailupdated","validEmail","disabled","editAddress","getPhoneByType","pte","newPhone","typePhoneID","pt","setPhone","cI","push","ContactValidationEnum","isFullContactValidationType","FULL_CONTACT","FULL_EMERGENCY_CONTACT","isEmergencyValidationType","EMERGENCY_CONTACT","getContactValidationType","ct","NOT_COMPLETE","BASIC_CONTACT","HOME","MOBILE","AddressRowBlock","CheckboxInput","ParticipantEdit","PhoneInputMask","VeeValidateForm","SelectInput","TextInput","Modal","SimpleGrid","composedContact","onEmailConfirm","store","getters","authorization","isImpersonated","toString","decomposeContact","isNullOrEmpty","toLowerCase","val","emailServiceClient","getCorrectedEmail","correctedEmail","deep","useFeatureFlags","ContactEditForm","closeModal","meetsBasicCriteria","innerContact","$emit","addressLine1","addressLine2","id","PlayerContactToContactInfo","invar","rv","alternatePhone","WORK","alternatePhoneTypeID","emailValid","emailValidReason","validityReason","fullName","isFullTime","preferredContactDayOfWeek","preferredContactMethod","preferredContactTimeOfDay","primaryPhone","primaryPhoneTypeID","secondaryPhone","secondaryPhoneTypeID","trained","typePartnerRoleID","yearsExperience","_t","primaryPhoneIcon","primaryPhoneFormatted","secondaryPhoneIcon","secondaryPhoneFormatted","sysGenEmailAddress","getEmptyContactInfo","getPhoneIcon","phoneType","status","indexOf","InnerContact","RoleElement","deleteEnabled","street2","join","cityState","copyToEditContact","canAddRoles","addNewContactToList","list","newContact","NEW_CONTACT","editedContactIndex","deleteID","roleContact","leagueRoles","volunteers","PlayerContactToLeagueVolunteer","genderFromRole","o","coachPrefs","actualRolesFor","roleID","roleListUpdate","ids","forEach","y","approved","authorizedExpireDate","Date","upwardAuthInvitationID","filterRoles","q","description","a","contactsValid","splice","copyContactPropToEdit","setRoleValues","sort","sortOrder","ConfirmDeleteModal","ContactCardWithRoles","ContactEditModal","ModalMultiSelect","VolunteerOptionPanel","hasBlurredFirstName","fireOnChange","editPlayer","hasBlurredLastName","isByAge","overrideGradeList","internalBirthDate","calculatedAge","calculatedGradeIsInList","formattedCutoffDate","validDateRange","fullFromDateFormatted","fullToDateFormatted","gradeIsOverriddenChanged","adjustedFromDate","toDate","defaultGradeList","defaultGenderList","M","F","hasNotifiedBlur","recalcGrade","blurLookup","sourceBirthDateChanged","currentProgram","ageCutoffDate","ageByCutoff","upwardTypeID","isSame","birthDateChanged","grades","g","getUpwardGradeTypeID","format","range","fullRange","fromDate","add","validationFromDate","subtract","validationToDate","includes","leagueAbstraction","namespace","currentItem","byUpwardTypeId","RadioGroupInput","DateInput","Loading","InputLabel","canCoachLink","canCarpoolLink","carpoolLinkParticipants","editProducts","paymentTypes","addPayment","paymentMap","columns","editPayment","addNewPayment","showAddPayment","methods","formatteddate","date","deleteTemplate","editEvent","deleteEvent","localDelete","localEdit","getPaymentColumns","field","headerText","textAlign","width","GridColumn","LEFT","RIGHT","amount","note","getEmptyPlayerPayment","seed","paymentInfo","breakout","getEmptyBreakout","typePaymentMethodID","paymentDate","paymentID","seedID","decrementingPaymentSeed","breakoutID","paymentSum","payment","sum","paymentNote","composePayment","method","CurrencyInput","MemoInput","internalPayment","decomposePayment","paymentRecord","paymentUpdated","resetForm","formRef","refs","form","reportValidity","PaymentAddModal","internalPayments","d","deletePayment","paymentIndex","openModal","internalEvaluationData","updateEvaluation","editOpen","EvaluationGridColumns","internalEvaluation","PlayerEvaluationEditGrid","evaluation","setInternalEvaluation","PlayerEvaluationEditModal","setInternalEvalData","coachSelect","coachRole","coachSearchTerm","initialRecord","coachSelected","coachSelectionOpen","shouldShowWarning","clear","EmptyCoachSelect","CoachFromPlayerProgram","pp","VolunteerSelectionModal","volunteerFindToValueField","r","firstAddress","firstEmailAddress","individualCreateDate","leagueName","accountNumber","teams","upwardLeagueID","setInternalValue","isCoachLinkedPending","selectedName","carpoolSelect","participants","pendingIndividualID","notMeLinkID","initialSearch","carpoolSelected","pending","carpoolSelectionOpen","messageCheck","selectedRow","showWarning","currentParticipant","connectedFistName","connectedLastName","participantUnderEdit","searchTerms","split","stringIncludes","stringToSearch","hasConnecion","isParticipantUnderEdit","actualCarpoolLinkFirstName","actualCarpoolLinkLastName","prettyConnectedTo","grade","getEmptyCarpoolLink","pendingFirstName","pendingLastName","player1IndividualID","player2IndividualID","participant_id","participant","playerID","row","pendingCarpoolLink","isCarpoolLinked","formattedNameFirstLast","CarpoolSelectionModal","paymentTypesStore","UIDisableOverride","updateCoachModel","retrieveVolunteer","PARTICIPANT","allowCoachLinks","allowCarpoolLinks","Getter","allItems","SizeSelectorPanel","CarpoolSelect","EvaluationDisplay","PaymentsDisplay","CoachSelect","YesNoInput","NumberInput","FullBody","camp","programTypesStore","loadProgramParticipants","dispatch","setCurrentParticipantByID","getTemplate","getNewTemplate","getParticipant","upsert","upsertParticipant","setLastLeagueLoaded","commit","setSkipParticipantRefresh","setSkipParticipantListRefresh","newPlayerTemplate","Alert","NOTICE","pendingProgramsToParticipate","showMovePayments","editMode","teamInfo","imported","fetchAll","participantsClient","retrieveTemplate","getProducts","ordersClient","getLeagueOrderItems","spliceInRoleChanges","rolechange","updateContactRoles","e","forceVolunteerListReload","editContactIndex","ec","setVolunteerRoles","phones","volunteer","l","oldProg","team","active","newProg","retval","programTypes","shortDescription","newRoute","importLeagueID","reconcileTemplate","to","params","pid","parseInt","currentStoreProgram","teamsClient","retrieveTeamInfo","individualId","old_league","$router","message","decomposeTemplate","participantTemplate","stopPropagation","preventDefault","updateVolunteerChanges","composedParticipant","matched","flag","hasBoys","hasGirls","genders","accounts","Gender","male","female","progGrades","playerUDFs","$route","fullPath","allowPracticeNightExclusions","practiceNights","Mutation","clearParticipant","beforeRouteLeave","route","redirect","next","self","ParticipantBasics","ParticipantProgram","ParticipantSearch","CheckboxGroupInput","DayOfTheWeekParticipant","ParticipantsContacts","UDFPanel","IsNewPlayer","autoSearch","showModal","visible","getFirstNameLastName","searchSegments","lastFirstSearch","endSegment","slice","result","prettyName"],"mappings":"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","file":"js/chunk-0dca78d6.2137d38d.js","sourcesContent":["import { DataTableHeader } from 'vuetify/types'\n\nexport const headers: DataTableHeader[] = [\n { value: 'prettyName', text: 'Name' },\n { value: 'firstAddress', text: 'Address' },\n { value: 'contacts', text: 'Parents' },\n]\n\nexport const volunteerHeaders: DataTableHeader[] = [\n { value: 'prettyName', text: 'Name' },\n { value: 'gender', text: 'Gender' },\n { value: 'firstAddress', text: 'Address' },\n]\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParticipantEdit.vue?vue&type=style&index=0&id=50746386&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('search-modal',{attrs:{\"headers\":_vm.volunteerSelectionHeaders,\"loading\":_vm.searchActive,\"title\":_vm.title,\"item-key\":\"individualID\",\"data\":_vm.selectionData,\"search-term\":_vm.search,\"can-commit-unselected\":true},on:{\"updateSearch\":_vm.updateSearch,\"onSelected\":_vm.searchSelected,\"passiveSelected\":_vm.passiveSelect},model:{value:(_vm.isModalOpen),callback:function ($$v) {_vm.isModalOpen=$$v},expression:\"isModalOpen\"}},[_c('div',{staticClass:\"text-small font-italic text-center\"},[_vm._v(\" Type a few letters in the name of the volunteer you are trying to find \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, ref, computed, watch, PropType } from '@vue/composition-api'\nimport { getProps, useModalValue } from '@/composables/ModalValue'\nimport SearchModal from '@/elements/SearchModal.vue'\n\nimport {\n VolunteerSelectionGridInfo,\n volunteerSelectionHeaders,\n} from '@/lib/components/CoachSelectionModal/VolunteerSelectionGridColumns'\nimport { VolunteerSearchInfo } from '@/GeneratedTypes/ListInfo/VolunteerSearchInfo'\nimport { RolesEnum, VolunteerIDType } from '@/lib/support/models/LeagueVolunteer/data'\nimport volunteersClient from '@/clients/volunteersClient'\nimport properCase from '@/filters/properCase'\n\nfunction v2map(x: VolunteerSearchInfo, internalSelectedID: VolunteerIDType) {\n return {\n name: `${x.lastName}, ${x.firstName}`,\n gender: x.gender ?? '?',\n individualID: x.individualID,\n firstName: x.firstName ?? '',\n lastName: x.lastName ?? '',\n selected: internalSelectedID == x.individualID,\n }\n}\n\nexport default defineComponent({\n name: 'VolunteerSelectionModal',\n components: {\n SearchModal,\n },\n filters: {\n properCase,\n },\n props: {\n league: { required: true, type: String, default: '' },\n roles: { type: Array as PropType, required: false, default: () => [0] },\n selectedID: { required: false, type: Number, default: -1 },\n searchTerm: { required: false, type: String, default: '' },\n selectedRecord: { required: false, type: Object as PropType, default: null },\n title: { required: false, type: String, default: 'Coaches' },\n includePastLeagues: { required: false, type: Boolean, default: false },\n typeProgramID: { type: String, required: false, default: 'NONE' },\n ...getProps(),\n },\n setup(props, ctx) {\n const { isModalOpen } = useModalValue(props, ctx)\n const searchTimeout = ref(null)\n const internalSelectedID = ref(-1)\n const searchData = ref([])\n const search = ref('')\n const searchActive = ref(false) //not showing initially\n\n watch(\n () => props.selectedID,\n () => {\n updateSelected()\n },\n { immediate: true }\n )\n\n watch(\n () => props.searchTerm,\n () => {\n updateSelected()\n },\n { immediate: true }\n )\n\n function updateSelected() {\n search.value = props.searchTerm\n internalSelectedID.value = props.selectedID\n }\n\n function passiveSelect(p: VolunteerSearchInfo | null) {\n if (p?.individualID) {\n internalSelectedID.value = p.individualID\n } else {\n internalSelectedID.value = -1\n }\n }\n\n watch(\n () => isModalOpen.value,\n (b: boolean) => {\n if (!b) {\n close()\n }\n }\n )\n\n function close() {\n ctx.emit('close', true)\n }\n\n function searchSelected(p: VolunteerSearchInfo) {\n ctx.emit('select', p && searchData.value.find((x) => x.individualID == p.individualID))\n }\n\n const selectionData = computed((): VolunteerSelectionGridInfo[] => {\n let data = searchData.value.map((x) => v2map(x, internalSelectedID.value))\n if (\n props.selectedRecord &&\n props.selectedRecord.firstName && //make sure it's not an empty record\n data.findIndex((x) => x.individualID == props.selectedRecord?.individualID) < 0\n ) {\n data = [v2map(props.selectedRecord, internalSelectedID.value), ...data]\n }\n return data\n })\n\n /***\n * Callback on the SearchModal\n * @param s\n */\n function updateSearch(s: string) {\n //4656 - make them type at least 3 characters before searching\n if (s.trim().length > 2) {\n if (searchTimeout.value) {\n clearTimeout(searchTimeout.value)\n }\n\n searchTimeout.value = window.setTimeout(async () => {\n await doSearch(s)\n }, 1000)\n }\n }\n\n async function doSearch(s: string) {\n if (!s) {\n searchData.value = []\n return\n }\n\n if (!searchActive.value) {\n searchActive.value = true\n\n try {\n searchData.value = await volunteersClient.search({\n leagueID: props.league,\n first: s,\n last: s,\n email: '',\n phone: '',\n orSearch: true,\n role: props.roles.length == 1 && props.roles[0] == RolesEnum.COACH ? [RolesEnum.COACH] : [0], //if just coach then send coach else do what it has always done and return everyone\n includePastLeagues: props.includePastLeagues,\n coachTypeProgramID: props.typeProgramID,\n })\n } finally {\n searchActive.value = false\n searchTimeout.value = null\n }\n }\n }\n\n return {\n isModalOpen,\n volunteerSelectionHeaders,\n searchActive,\n selectionData,\n search,\n updateSearch,\n searchSelected,\n passiveSelect,\n }\n },\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolunteerSelectionModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VolunteerSelectionModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VolunteerSelectionModal.vue?vue&type=template&id=0fe0955e&scoped=true&\"\nimport script from \"./VolunteerSelectionModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./VolunteerSelectionModal.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0fe0955e\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactCardWithRoles.vue?vue&type=style&index=0&id=c386951e&scoped=true&lang=css&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaymentAddModal.vue?vue&type=style&index=0&lang=css&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactEditModal.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactEditForm.vue?vue&type=style&index=0&lang=css&\"","/***\n * When pieces of edit come back we want to slot the edited components\n * back into the template to send the server.\n * @param edit\n * @param contactName\n * @param contactPhone\n * @param editPlayer\n\n */\nimport { LeaguePlayer } from '@/GeneratedTypes/LeaguePlayer'\nimport { DecomposedPlayerArgs } from '@/views/Programs/Participants/ext/decomposeutils'\nimport { DecomposedProgramArgs } from '@/views/Programs/Participants/ext/programutils'\nimport { PlayerContact } from '@/GeneratedTypes/PlayerContact'\n\nimport { humanEmailToEmailID } from '@/lib/support/models/IndividualEmail/data'\n\nimport { getEmptyPlayerContact } from '@/lib/support/models/PlayerContact/data'\n\nimport { CoachSelect } from '@/models/ParticipantUI/CoachSelect'\nimport { WeedThePhoneList } from '@/lib/support/models/IndividualPhone/array_utils'\nimport { getFirstEmail } from '@/lib/support/models/IndividualEmail/email_list_operations'\nimport { cloneDeep } from 'lodash'\n\nimport { IndividualAddress } from '@/GeneratedTypes/IndividualAddress'\nimport { stringToAddressTypeID } from '@/lib/support/models/IndividualAddress/data'\n\nexport function updateTemplateWithEdits(\n edit: LeaguePlayer,\n { contacts, player, practiceNightExclusions, udfs }: DecomposedPlayerArgs,\n { program, evaluations, coach, carpoolLink, payments, products }: DecomposedProgramArgs\n): LeaguePlayer {\n // try to preserve unedited contacts.\n\n const otherContacts = cloneDeep([...combineContacts(edit.contacts ?? [], contacts)])\n\n return cloneDeep({\n ...edit,\n programs: [\n {\n ...program,\n ...getCoachInfo(coach),\n carpoolLink: carpoolLink,\n payments: payments,\n evaluations: evaluations,\n products: products\n .filter((u) => u.typeSizeID != 'N/A')\n .map((x) => ({ ...x, typeColorID: x.typeColorID ? x.typeColorID : 'N/A' })),\n },\n ],\n birthDate: player.birthDate,\n practiceNightExclusions: practiceNightExclusions,\n udFs: udfs,\n individualID: edit.individualID,\n churchName: player.churchName,\n firstName: player.firstName ?? '',\n gender: player.gender,\n generalNotes: player.generalNotes,\n lastName: player.lastName ?? '',\n medicalNotes: player.medicalNotes,\n middleInitial: player.middleInitial,\n typeGradeID: player.typeGradeID ?? '',\n gradeIsOverridden: player.gradeIsOverridden,\n contacts: [...otherContacts],\n })\n}\n\nexport function updateTemplateWithEditsNew(\n edit: LeaguePlayer,\n { contacts, player, practiceNightExclusions, udfs }: DecomposedPlayerArgs\n): LeaguePlayer {\n // try to preserve unedited contacts.\n\n const otherContacts = cloneDeep([...combineContacts(edit.contacts ?? [], contacts)])\n\n return cloneDeep({\n ...edit,\n programs:\n player.programs?.map((x) => {\n return {\n ...x,\n products: x.products\n ? x.products\n .filter((u) => u.typeSizeID != 'N/A')\n .map((x) => ({ ...x, typeColorID: x.typeColorID ? x.typeColorID : 'N/A' }))\n : null,\n }\n }) ?? null,\n birthDate: player.birthDate,\n practiceNightExclusions: practiceNightExclusions,\n udFs: udfs,\n individualID: edit.individualID,\n churchName: player.churchName,\n firstName: player.firstName ?? '',\n gender: player.gender,\n generalNotes: player.generalNotes,\n lastName: player.lastName ?? '',\n medicalNotes: player.medicalNotes,\n middleInitial: player.middleInitial,\n typeGradeID: player.typeGradeID ?? '',\n gradeIsOverridden: player.gradeIsOverridden,\n contacts: [...otherContacts],\n })\n}\n\nfunction getCoachInfo(coach: CoachSelect) {\n if (coach.linkID == 0 && coach.firstName != '' && coach.lastName != '') {\n return {\n pendingCoachLinkFirstName: coach.firstName,\n pendingCoachLinkLastName: coach.lastName,\n pendingCoachLinkIndividualID: coach.pendingLinkID,\n coachLinkIndividualID: coach.linkID,\n }\n }\n return {\n pendingCoachLinkFirstName: '',\n pendingCoachLinkLastName: '',\n pendingCoachLinkIndividualID: 0,\n coachLinkIndividualID: coach.linkID,\n }\n}\n\nlet CONTACT_PRIORITY = 0\n\n/**\n * Takes what we are given or the template and combines\n * that information with the fields available for edit.\n * @param originalContacts -- what came in on the template\n * @param contacts - what we have in the edit\n */\nfunction combineContacts(originalContacts: PlayerContact[], contacts: PlayerContact[]) {\n // Reset contact priority so priorities will always be 1, 2, 3, etc.\n CONTACT_PRIORITY = 0\n return contacts.map((x: PlayerContact) => {\n const matchContact = matchContactOrUseTemplate(originalContacts, x)\n return {\n individualID: x.individualID < 0 ? 0 : x.individualID,\n typeRelationshipID: x.typeRelationshipID,\n isEmergencyContact: x.isEmergencyContact,\n phoneNumbers: WeedThePhoneList(x?.phoneNumbers || []),\n lastName: x.lastName,\n firstName: x.firstName,\n addresses:\n x.addresses\n //eliminate half addresses on contact save.\n ?.filter((x) => x.street1 && x.subdivision1 && x.subdivision2 && x.postalCode)\n .map((x) => ({\n ...x,\n typeAddressID: x.typeAddressID ? x.typeAddressID : stringToAddressTypeID('home'),\n priority: getAddressPriority(),\n })) || [],\n emailAddresses: getFirstEmail(x).emailAddress\n ? [\n {\n ...getFirstEmail(matchContact),\n typeEmailID: humanEmailToEmailID('home'),\n emailAddress: getFirstEmail(x).emailAddress,\n },\n ]\n : [],\n middleInitial: matchContact.middleInitial ?? '',\n priority: getContactPriority(),\n thirdPartyClientIDs: matchContact.thirdPartyClientIDs || [],\n optOutEmails: x.optOutEmails,\n optOutSMS: x.optOutSMS,\n inviteAllowed: x.inviteAllowed,\n }\n })\n}\n\nfunction getContactPriority() {\n return ++CONTACT_PRIORITY\n}\n\n/***\n * If a contact exists in the template that was edited, then update it, otherwise grab\n * a fresh contact from the template, as this is an added contract.\n * @param contacts\n * @param contact\n * @return existing contact, template or a new contact from the generator\n */\nfunction matchContactOrUseTemplate(contacts: PlayerContact[], contact: PlayerContact): PlayerContact {\n const idx = contacts?.findIndex((x) => contact.individualID == x.individualID)\n if (idx !== undefined && idx >= 0) {\n return { ...contacts![idx] }\n }\n if (contacts?.length) {\n return { ...contacts[0] } ?? getEmptyPlayerContact()\n }\n return getEmptyPlayerContact()\n}\n\n/***\n * If a contact exists in the template that was edited, then update it, otherwise grab\n * a fresh contact from the template, as this is an added contract.\n * @return new list of addresses\n * @param addresses\n * @param address\n */\nexport function replaceOrInsertAddress(\n addresses: IndividualAddress[],\n address: IndividualAddress\n): IndividualAddress[] {\n const idx = addresses?.findIndex((x) => address.addressID == x.addressID)\n if (idx !== undefined && idx >= 0) {\n const c = cloneDeep(addresses)\n c[idx] = { ...address }\n\n return c\n }\n return [\n ...addresses,\n {\n ...address,\n priority: getAddressPriority(),\n addressID: address.addressID <= 0 ? 0 : address.addressID,\n },\n ]\n}\n\nlet ADDRESS_PRIORITY = 99\nfunction getAddressPriority() {\n return ++ADDRESS_PRIORITY\n}\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InnerContact.vue?vue&type=style&index=0&id=a663be18&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlayerEvaluationEditModal.vue?vue&type=style&index=0&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('FullBody',[_c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"row pt-3 pb-3\"},[_c('div',{staticClass:\"col-sm-auto\"},[_c('h4',{staticClass:\"px-3 pt-2 m-0\"},[(_vm.isEditMode)?[_c('router-link',{staticClass:\"text-primary\",attrs:{\"to\":_vm.relativeRoute('list')}},[_vm._v(\"Participants\")]),_vm._v(\" > \"),_c('span',[_vm._v(_vm._s(_vm.editParticipant.firstName)+\" \"+_vm._s(_vm.editParticipant.lastName))])]:[_c('router-link',{staticClass:\"text-primary\",attrs:{\"to\":_vm.relativeRoute('list')}},[_vm._v(\"Participants\")]),_vm._v(\" > \"),_c('span',[_vm._v(\"New\")])]],2)]),_c('div',{staticClass:\"col-sm pl-0 text-right\"},[_c('button',{staticClass:\"btn btn-success\",attrs:{\"disabled\":_vm.loading},on:{\"click\":_vm.saveAndContinue}},[_c('i',{staticClass:\"fa fa-check mr-2\"}),(_vm.loading)?_c('loading',{attrs:{\"is-small\":\"\"}}):[_vm._v(\" Save \")]],2),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-light\",attrs:{\"disabled\":_vm.loading},on:{\"click\":_vm.cancel}},[_vm._v(\"Cancel\")])])])]),_c('FullBody',{staticClass:\"bg-light-1 p-3\"},[_c('div',{staticClass:\"container-fluid\"},[(!_vm.loading && _vm.editParticipant)?_c('div',{staticClass:\"row pt-3\"},[(_vm.programsAvailable.length > 1)?_c('div',{staticClass:\"col-12\"},[_c('checkbox-group-input',{attrs:{\"value\":_vm.programsToParticipate,\"value-property-name\":\"upwardTypeID\",\"text-property-name\":\"shortDescription\",\"label\":\"This player will participate in:\",\"items-list\":_vm.programsAvailable},on:{\"change\":_vm.warnAboutProgramChange}})],1):_vm._e(),_c('div',{staticClass:\"col-lg-6\"},[_c('vee-validate-form',[_c('participant-basics',{attrs:{\"grades-list\":_vm.gradesList,\"gender-list\":_vm.genderList,\"value\":_vm.editParticipant},on:{\"nameUpdated\":_vm.nameUpdated,\"input\":_vm.updateParticipant}}),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('memo-input',{attrs:{\"label\":\"Notes\"},model:{value:(_vm.editParticipant.generalNotes),callback:function ($$v) {_vm.$set(_vm.editParticipant, \"generalNotes\", $$v)},expression:\"editParticipant.generalNotes\"}})],1)])],1),_c('hr'),_c('participants-contacts',{attrs:{\"show-initial-edit-form\":_vm.shouldShowInlineFirstContact,\"contacts\":_vm.editContacts,\"volunteers\":_vm.playerContactVolunteers,\"programs\":_vm.currentLeaguePrograms,\"league\":_vm.isCamp ? _vm.selectedCampModel : _vm.selectedLeagueModel,\"contactRoleChanges\":_vm.contactRoleChanges,\"gender-list\":_vm.genderList},on:{\"role-list-update\":_vm.storeContactRoles,\"update\":_vm.updateEditContacts}}),_c('hr',{staticClass:\"d-lg-none\"})],1),_c('div',{staticClass:\"border-lg-left col-lg-6\"},[(_vm.canPracticeNightExclude)?_c('div',{staticClass:\"row\"},[(!_vm.isCamp)?_c('div',{staticClass:\"col-12\"},[_c('h5',[_vm._v(\"Practice Night Exclusions\")]),_c('day-of-the-week-participant',{attrs:{\"days-available\":_vm.leagueDayList,\"label\":\"PARTICIPANT IS NOT ABLE TO PRACTICE\"},model:{value:(_vm.editPracticeNightExclusions),callback:function ($$v) {_vm.editPracticeNightExclusions=$$v},expression:\"editPracticeNightExclusions\"}})],1):_vm._e()]):_vm._e(),(!_vm.isCamp)?_c('div',{staticClass:\"row m-0 p-0\"},[_c('div',{staticClass:\"col-sm-12 m-0 p-0\"},[_c('hr')])]):_vm._e(),(_vm.editParticipantActivePrograms.length > 1)?_c('div',{staticClass:\"mb-2\"},[_c('div',{staticClass:\"btn-group wide-buttons\"},_vm._l((_vm.editParticipantActivePrograms),function(prog,index){return _c('button',{key:(\"b\" + index),staticClass:\"btn btn-sm btn-default text-uppercase\",class:{\n 'btn-primary': _vm.selectedProgramTab === index,\n 'btn-outline-dark': _vm.selectedProgramTab !== index,\n },attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.selectedProgramTab = index}}},[_vm._v(\" \"+_vm._s(_vm.programDescription(prog.typeProgramID))+\" \")])}),0)]):_vm._e(),_vm._l((_vm.editParticipantActivePrograms),function(prog,index){return _c('div',{key:(\"pp\" + index)},[(_vm.selectedProgramTab == index)?_c('participant-program',{attrs:{\"product-items\":_vm.productItems,\"gender\":_vm.editParticipant.gender,\"upwId\":_vm.upwId,\"individualID\":_vm.editParticipant.individualID},on:{\"products-changed\":_vm.productsChanged,\"coach-link-changed\":_vm.coachLinkChanged},model:{value:(_vm.editParticipantActivePrograms[index]),callback:function ($$v) {_vm.$set(_vm.editParticipantActivePrograms, index, $$v)},expression:\"editParticipantActivePrograms[index]\"}}):_vm._e()],1)}),(_vm.canUDF)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('hr'),_c('h5',[_vm._v(\"User Defined Fields\")]),_c('u-d-f-panel',{attrs:{\"udf-list\":_vm.udfList},model:{value:(_vm.editUdfs),callback:function ($$v) {_vm.editUdfs=$$v},expression:\"editUdfs\"}})],1)]):_vm._e()],2)]):_c('div',[_c('loading')],1)])]),_c('participant-search',{attrs:{\"league\":_vm.upwId,\"auto-search\":_vm.searchName},on:{\"select\":_vm.participantFound}}),_c('confirm-delete-modal',{attrs:{\"title\":\"Remove player from program?\",\"has-confirm-box\":false},on:{\"onDeleteConfirmed\":_vm.changeProgram},scopedSlots:_vm._u([{key:\"delete-button\",fn:function(){return [_vm._v(\" Confirm \")]},proxy:true}]),model:{value:(_vm.confirmChangeProgram),callback:function ($$v) {_vm.confirmChangeProgram=$$v},expression:\"confirmChangeProgram\"}},[_vm._v(\" You will lose edits related to this program. \"),(_vm.showMovePayments)?_c('div',[_c('checkbox-input',{attrs:{\"label\":\"Move Payments to remaining program\",\"value\":_vm.movePaymentsonDelete},model:{value:(_vm.movePaymentsonDelete),callback:function ($$v) {_vm.movePaymentsonDelete=$$v},expression:\"movePaymentsonDelete\"}})],1):_vm._e()]),_c('alert',{attrs:{\"type\":_vm.alertType},model:{value:(_vm.showTeamWarning),callback:function ($$v) {_vm.showTeamWarning=$$v},expression:\"showTeamWarning\"}},[_vm._v(\"Cannot remove program. Player is assigned to a team. \")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * Utility function to patch, compose and decompose LeaguePlayers templates\n */\n\nimport { LeaguePlayer } from '@/GeneratedTypes/LeaguePlayer'\n\nimport { PlayerContact } from '@/GeneratedTypes/PlayerContact'\n\nimport { PlayerPracticeNightExclusion } from '@/GeneratedTypes/PlayerPracticeNightExclusion'\nimport { PlayerUDFValue } from '@/GeneratedTypes/PlayerUDFValue'\nimport { cloneDeep } from 'lodash'\n\n/***\n * These are useful for the participant edit interface, maybe others.\n */\nexport interface DecomposedPlayerArgs {\n player: LeaguePlayer\n contacts: PlayerContact[]\n practiceNightExclusions: PlayerPracticeNightExclusion[]\n udfs: PlayerUDFValue[]\n}\n\n/**\n * the API occasionally passes contacts back with 11-digit phone numbers, and without EC set.\n * we need to remove leadings ones on phone numbers and set EC to first contact in those cases\n */\nfunction scrubContacts(contacts: PlayerContact[]) {\n const pc = cloneDeep(contacts)\n if (pc.length) {\n //require an emergency contact\n if (!pc.some((x) => x.isEmergencyContact)) {\n pc[0].isEmergencyContact = true\n }\n for (let i = 0; i < pc.length; i++) {\n if (pc[i].phoneNumbers?.length) {\n pc[i].phoneNumbers =\n cloneDeep(\n pc[i].phoneNumbers?.map((x) => ({\n ...x,\n phoneNumber:\n // chop off the initial one if the incoming number has one.\n x.phoneNumber.length > 10 && x.phoneNumber[0] == '1'\n ? x.phoneNumber.substr(1)\n : x.phoneNumber,\n }))\n ) ?? []\n }\n }\n }\n return pc\n}\n\n/***\n * All assumptions about where form elements are coming from are made here.\n *\n * @param input incoming league player\n * @return decomposed form members from a a leagueplayer\n */\nexport function decomposeLeaguePlayer(input: LeaguePlayer): DecomposedPlayerArgs {\n return {\n player: input, //these are the basic top-level fields like name\n practiceNightExclusions: input.practiceNightExclusions?.length ? input.practiceNightExclusions : [],\n contacts: scrubContacts(input.contacts ?? []),\n udfs: input.udFs ?? [],\n }\n}\n\n/***\n * Combine the selected info thing and the template \"loaded\"\n * keeping the values under edit alive that don't need to be changed.\n * @param edit\n * @param template\n */\n\nexport function reconcileTemplate(edit: LeaguePlayer, template: LeaguePlayer): LeaguePlayer {\n return cloneDeep(template)\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('day-of-week-picker',{attrs:{\"label\":_vm.label,\"show-days\":_vm.daysAvailable},model:{value:(_vm.internalValue),callback:function ($$v) {_vm.internalValue=$$v},expression:\"internalValue\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { RuntimeException } from '@/lib/common/exceptions/RuntimeException'\n\nexport class ArgumentRuntimeException extends RuntimeException {\n name = 'Argument Runtime Exception'\n}\n","/***\n * Converts Sunday to 0, Monday to 1, etc... based on the UpwardID\n * @constructor\n */\nimport { ArgumentRuntimeException } from '@/lib/common/exceptions/ArgumentRuntimeException'\n\nexport function UpwardIDToNumber(UpwardID: string) {\n switch (UpwardID) {\n case 'Sunday':\n return 0\n case 'Monday':\n return 1\n case 'Tuesday':\n return 2\n case 'Wednesday':\n return 3\n case 'Thursday':\n return 4\n case 'Friday':\n return 5\n case 'Saturday':\n return 6\n }\n throw new ArgumentRuntimeException(`UpwardIDToNumber, ${UpwardID} not valid for a weekday`)\n}\n","/***\n * Converts Sunday to 0, Monday to 1, etc... based on the UpwardID\n * @constructor\n */\nimport { ArgumentRuntimeException } from '@/lib/common/exceptions/ArgumentRuntimeException'\n\nexport function NumberToUpwardID(ID: number): string {\n switch (ID) {\n case 0:\n return 'Sunday'\n case 1:\n return 'Monday'\n case 2:\n return 'Tuesday'\n case 3:\n return 'Wednesday'\n case 4:\n return 'Thursday'\n case 5:\n return 'Friday'\n case 6:\n return 'Saturday'\n }\n throw new ArgumentRuntimeException(`NumberToUpwardID, ${ID} not valid for a weekday`)\n}\n","/***\n * Converts a league practice day exclusion into the index for the day of week\n * control, undefined if no practice day\n * @param pne\n */\nimport { UpwardIDToNumber } from '@/lib/support/models/UpwardTypes/UpdwardDayTypeID/UpwardIDToNumber'\nimport { PlayerPracticeNightExclusion } from '@/GeneratedTypes/PlayerPracticeNightExclusion'\nimport { NumberToUpwardID } from '@/lib/support/models/UpwardTypes/UpdwardDayTypeID/NumberToUpwardID'\n\n/**\n * Returns a representation of practice day exclusion for a player to the control\n *\n * @param pne - practice day array\n */\nexport function PracticeDaysToDayIndex(pne: PlayerPracticeNightExclusion[]) {\n if (pne.length) {\n return UpwardIDToNumber(pne[0].typeDayID)\n }\n\n return null\n}\n\n/**\n * Returns a representation of practice day exclusion for a player to the control\n *\n * @param dayindex: number\n * @return {PlayerPracticeNightExclusion[]} valid practice night exclusion array\n */\nexport function DayIndexToPracticeDays(dayindex: number | null): PlayerPracticeNightExclusion[] {\n if (dayindex != null) {\n return [\n {\n typeDayID: NumberToUpwardID(dayindex),\n },\n ]\n }\n return []\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, ref, watch, PropType } from '@vue/composition-api'\nimport DayOfWeekPicker from '@/elements/DayOfWeekPicker.vue'\nimport { PlayerPracticeNightExclusion } from '@/GeneratedTypes/PlayerPracticeNightExclusion'\nimport {\n DayIndexToPracticeDays,\n PracticeDaysToDayIndex,\n} from '@/views/Programs/Participants/ext/practicedayexclusiondata'\n\nexport default defineComponent({\n name: 'DayOfTheWeekParticipant',\n components: {\n DayOfWeekPicker,\n },\n props: {\n value: { type: Array as PropType, required: true, default: () => [] },\n daysAvailable: { type: Array as PropType, required: true, default: () => [] },\n label: { type: String, required: true, default: '' },\n },\n setup(props, ctx) {\n const internalValue = ref(null)\n\n watch(\n () => internalValue.value,\n (v: number | null) => {\n ctx.emit('input', DayIndexToPracticeDays(v))\n }\n )\n\n watch(\n () => props.value,\n (v: PlayerPracticeNightExclusion[]) => {\n const index = PracticeDaysToDayIndex(v)\n internalValue.value = index\n },\n { immediate: true }\n )\n\n return {\n internalValue,\n }\n },\n})\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DayOfTheWeekParticipant.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DayOfTheWeekParticipant.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DayOfTheWeekParticipant.vue?vue&type=template&id=5dc77c88&scoped=true&\"\nimport script from \"./DayOfTheWeekParticipant.vue?vue&type=script&lang=ts&\"\nexport * from \"./DayOfTheWeekParticipant.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5dc77c88\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('h5',{staticClass:\"col-12\"},[_vm._v(\" Parents / Guardians \"),(!_vm.showInitialEditForm)?_c('i',{staticClass:\"fas fa-plus text-primary clickable\",on:{\"click\":_vm.addContact}}):_vm._e()]),(_vm.showInitialEditForm)?[_c('h6',{staticClass:\"col-12\"},[_vm._v(\"Participant's Guardian\")]),(this.editContacts && this.editContacts.length)?_c('contact-edit-form',{staticClass:\"col-12\",attrs:{\"value\":this.editContacts[0]},on:{\"input\":_vm.copyToInternalContact}}):_vm._e(),_c('h6',{staticClass:\"col-12\"},[_vm._v(\" Additional Contacts \"),_c('i',{staticClass:\"fas fa-plus text-primary clickable\",on:{\"click\":_vm.addContact}})])]:_vm._e(),_vm._l((_vm.visibleContacts),function(contact){return _c('div',{key:contact.individualID,staticClass:\"col-auto\"},[(contact.firstName)?_c('contact-card-with-roles',{attrs:{\"delete-enabled\":_vm.editContacts.length > 1,\"roles\":_vm.rolesFor(contact.individualID),\"contact\":contact},on:{\"delete\":_vm.deleteContactClick,\"edit\":_vm.editContactClick,\"addRoles\":_vm.addRoles,\"removeRole\":_vm.removeRole}}):_vm._e()],1)}),_c('div',{staticClass:\"col-12\"},[(_vm.editContacts.length === 0)?_c('div',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\" Please add guardians to this contact. \")]):(_vm.editContacts.length > 0 && !_vm.hasEmergencyContact)?_c('div',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\" Needs one emergency contact. \")]):(!_vm.visibleContacts.length)?_c('div',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\" There are no additional contacts. \")]):_vm._e()]),_c('contact-edit-modal',{attrs:{\"contact\":_vm.editContact,\"is-address-required\":!_vm.hasFullContact},on:{\"contactUpdated\":_vm.updateContact},model:{value:(_vm.contactModalOpen),callback:function ($$v) {_vm.contactModalOpen=$$v},expression:\"contactModalOpen\"}}),_c('confirm-delete-modal',{attrs:{\"has-confirm-box\":false},on:{\"onDeleteConfirmed\":_vm.deleteConfirmed},model:{value:(_vm.deleteConfirmShowing),callback:function ($$v) {_vm.deleteConfirmShowing=$$v},expression:\"deleteConfirmShowing\"}},[_vm._v(\" Are you sure you want to delete this guardian? \")]),_c('ModalMultiSelect',{attrs:{\"title\":\"Volunteer Roles\",\"values\":_vm.allRoleValues,\"selected-ids\":_vm.currentRoleIds,\"is-small\":false},on:{\"save\":_vm.sendSelectedRoles,\"update-selected\":_vm.updateSelectedRoles},scopedSlots:_vm._u([{key:\"sidebar\",fn:function(){return [_c('div',{staticClass:\"col-lg border-lg-left\"},[_c('hr',{staticClass:\"d-lg-none mx-2\"}),(!_vm.roles.length)?_c('p',{staticClass:\"py-5 px-1 text-center\"},[_vm._v(\"There are currently no roles selected\")]):_c('div',{staticClass:\"col-sm-4 pl-0\"},[_c('select-input',{attrs:{\"label\":\"Gender\",\"required\":\"\",\"items-list\":_vm.genderList},model:{value:(_vm.gender),callback:function ($$v) {_vm.gender=$$v},expression:\"gender\"}})],1),_c('volunteer-option-panel',{attrs:{\"coach-prefs\":_vm.coachPreferences,\"roles\":_vm.roles,\"contact-i-d\":_vm.editContact.individualID,\"programs\":_vm.editVolunteerPrograms,\"current-league\":_vm.league,\"gender\":_vm.gender},on:{\"input\":_vm.updateRoleDetails}})],1)]},proxy:true}]),model:{value:(_vm.selectOpen),callback:function ($$v) {_vm.selectOpen=$$v},expression:\"selectOpen\"}})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('vee-validate-form',{ref:\"form\",scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar valid = ref.valid;\nvar validated = ref.validated;\nreturn [_c('modal',{staticClass:\"contact_modal\",attrs:{\"is-small\":false,\"title\":\"Contact Edit\"},model:{value:(_vm.isModalOpen),callback:function ($$v) {_vm.isModalOpen=$$v},expression:\"isModalOpen\"}},[_c('contact-edit-form',{model:{value:(_vm.internalContact),callback:function ($$v) {_vm.internalContact=$$v},expression:\"internalContact\"}}),_c('div',{staticClass:\"float-right\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('button',{staticClass:\"m-1 btn btn-light\",on:{\"click\":_vm.cancel}},[_vm._v(\"Cancel\")]),_vm._v(\" \"),_c('button',{staticClass:\"m-1 btn btn-success\",attrs:{\"disabled\":!_vm.meetsSubmitCriteria || !valid},on:{\"click\":_vm.confirmed}},[_vm._v(\" \"),_c('i',{staticClass:\"fa fa-check\"}),_vm._v(\" Confirm\")])])],1)]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[(_vm.isEmergencyContact && (!_vm.meetsEmergencyCriteria || !_vm.meetsFullCriteria))?_c('div',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\" We need a minimum of a name and one phone number. \")]):_vm._e(),(!_vm.isEmergencyContact && !_vm.meetsFullCriteria)?_c('div',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\" We need a minimum of a name. \")]):_vm._e()]),_c('div',{staticClass:\"col-sm-6\"},[_c('select-input',{attrs:{\"label\":\"Relationship\",\"items-list\":_vm.guardianTypes},on:{\"input\":_vm.input,\"blur\":_vm.update},model:{value:(_vm.typeRelationshipID),callback:function ($$v) {_vm.typeRelationshipID=$$v},expression:\"typeRelationshipID\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[_c('checkbox-input',{attrs:{\"label\":\"Emergency Contact\",\"inline\":false},on:{\"input\":_vm.input,\"blur\":_vm.update},model:{value:(_vm.isEmergencyContact),callback:function ($$v) {_vm.isEmergencyContact=$$v},expression:\"isEmergencyContact\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[_c('text-input',{attrs:{\"vee-validate-rules\":\"namelike|required\",\"required\":true,\"label\":\"FIRST NAME\"},on:{\"input\":_vm.input,\"blur\":_vm.update},model:{value:(_vm.firstName),callback:function ($$v) {_vm.firstName=$$v},expression:\"firstName\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[_c('text-input',{attrs:{\"label\":\"LAST NAME\",\"required\":true,\"vee-validate-rules\":\"namelike|required\"},on:{\"input\":_vm.input,\"blur\":_vm.update},model:{value:(_vm.lastName),callback:function ($$v) {_vm.lastName=$$v},expression:\"lastName\"}})],1)]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('phone-input-mask',{attrs:{\"required\":_vm.isEmergencyContact && !_vm.mobilePhone.phoneNumber,\"vee-validate-rules\":((_vm.isEmergencyContact && !_vm.mobilePhone.phoneNumber ? 'required|' : '') + \"phone\"),\"label\":\"HOME PHONE\"},on:{\"input\":_vm.input,\"blur\":_vm.update},model:{value:(_vm.homePhone),callback:function ($$v) {_vm.homePhone=$$v},expression:\"homePhone\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[_c('phone-input-mask',{attrs:{\"required\":_vm.isEmergencyContact && !_vm.homePhone.phoneNumber,\"vee-validate-rules\":((_vm.isEmergencyContact && !_vm.homePhone.phoneNumber ? 'required|' : '') + \"phone\"),\"label\":\"MOBILE PHONE\"},on:{\"input\":_vm.input,\"blur\":_vm.update},model:{value:(_vm.mobilePhone),callback:function ($$v) {_vm.mobilePhone=$$v},expression:\"mobilePhone\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[(!_vm.disableEmail)?_c('text-input',{attrs:{\"name\":\"email\",\"vee-validate-rules\":\"email\",\"label\":\"EMAIL\"},on:{\"input\":_vm.input,\"blur\":_vm.emailupdated},model:{value:(_vm.emailAddress),callback:function ($$v) {_vm.emailAddress=$$v},expression:\"emailAddress\"}}):_vm._e(),(!_vm.validEmail)?_c('span',{staticClass:\"alert alert-warning ml-0 p-0 pr-5\"},[_vm._v(\"Invalid or Suspicious email address (will not receive emails)\")]):_vm._e()],1),_c('div',{staticClass:\"col-sm-6\"},[(_vm.validEmail && _vm.emailAddress.length > 0)?_c('checkbox-input',{attrs:{\"label\":\"Does Not Wish to Receive Emails\"},on:{\"input\":_vm.input,\"blur\":_vm.update},model:{value:(_vm.optOutEmails),callback:function ($$v) {_vm.optOutEmails=$$v},expression:\"optOutEmails\"}}):_vm._e(),(!_vm.disabled)?_c('checkbox-input',{attrs:{\"label\":\"Does Not Wish to Receive Text\"},on:{\"input\":_vm.input,\"blur\":_vm.update},model:{value:(_vm.optOutSMS),callback:function ($$v) {_vm.optOutSMS=$$v},expression:\"optOutSMS\"}}):_vm._e(),(_vm.disabled && _vm.optOutSMS)?_c('span',{staticClass:\"alert alert-primary ml-10 p-1 pl-1 pr-5\"},[_vm._v(\"User has Opted Out of Text\")]):_vm._e()],1)]),_c('address-row-block',{attrs:{\"required\":false},on:{\"input\":_vm.input},model:{value:(_vm.editAddress),callback:function ($$v) {_vm.editAddress=$$v},expression:\"editAddress\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { PlayerContact } from '@/GeneratedTypes/PlayerContact'\nimport {\n getEmptyPhone,\n NameToType,\n PhoneSeedInfo,\n PhoneTypeEnum,\n} from '@/lib/support/models/IndividualPhone/data'\nimport { IndividualPhone } from '@/GeneratedTypes/IndividualPhone'\n\n/**\n * get the first phone number by the given type, if no such phone then get an empty phone\n * @param contact {PlayerContact} player contact to search\n * @param pte {PhoneTypeEnum} type of phone\n * @return {IndividualPhone} phone retrieved\n */\nexport function getPhoneByType(contact: PlayerContact, pte: PhoneTypeEnum) {\n // we create a new phone in case the one requested is not present\n const newPhone = getEmptyPhone(new PhoneSeedInfo())\n newPhone.typePhoneID = pte\n\n if (contact.phoneNumbers?.length) {\n const pt = NameToType(pte)\n return contact.phoneNumbers.find((x) => x.typePhoneID == pt) ?? newPhone\n }\n return newPhone\n}\n\n/***\n * set a phone on a contact, matches by the type and replaces the phone in the contact\n * UNLESS there is no phone, then add it to the existing phones. If we have lots of the\n * same type of phone on a contact, then we need to tweak this logic.\n * @param contact {PlayerContact} player contact to update\n * @param {IndividualPhone} phone phone to update\n * @return {PlayerContact} contact with updated phone\n */\nexport function setPhone(contact: PlayerContact, phone: IndividualPhone) {\n // we create a new phone in case the one requested is not present\n\n if (contact.phoneNumbers?.length) {\n const cI = contact.phoneNumbers.findIndex((x) => x.typePhoneID == phone.typePhoneID)\n if (cI >= 0) {\n contact.phoneNumbers[cI] = phone\n } else {\n contact.phoneNumbers.push(phone)\n }\n } else {\n contact.phoneNumbers = [phone]\n }\n return contact\n}\n","import { PlayerContact } from '@/GeneratedTypes/PlayerContact'\nimport { PhoneTypeEnum } from '@/lib/support/models/IndividualPhone/data'\nimport { getPhoneByType } from '@/lib/support/models/PlayerContact/phoneutils'\n\nexport enum ContactValidationEnum {\n NOT_COMPLETE,\n BASIC_CONTACT, //meets the\n EMERGENCY_CONTACT, //meets emergency contact requirements\n FULL_CONTACT, //meets initial contact entry requirements\n FULL_EMERGENCY_CONTACT, //meets both emergency and full contact criteria\n}\n\nexport function isFullContactValidationType(v: ContactValidationEnum) {\n return v == ContactValidationEnum.FULL_CONTACT || v == ContactValidationEnum.FULL_EMERGENCY_CONTACT\n}\n\nexport function isEmergencyValidationType(v: ContactValidationEnum) {\n return v == ContactValidationEnum.EMERGENCY_CONTACT || v == ContactValidationEnum.FULL_EMERGENCY_CONTACT\n}\n\n/**\n * Contact Validation for various classes of contact. Used by the forms that\n * process player contacts.\n * @param c\n */\nexport function getContactValidationType(c: PlayerContact): ContactValidationEnum {\n let ct = ContactValidationEnum.NOT_COMPLETE\n if (c.lastName && c.firstName) {\n ct = ContactValidationEnum.BASIC_CONTACT\n if (\n c.isEmergencyContact &&\n //c.emailAddresses?.length && //4651\n //c.emailAddresses[0].emailAddress && //4651\n (!!getPhoneByType(c, PhoneTypeEnum.HOME).phoneNumber ||\n !!getPhoneByType(c, PhoneTypeEnum.MOBILE).phoneNumber)\n ) {\n ct = ContactValidationEnum.EMERGENCY_CONTACT\n }\n ct =\n ct == ContactValidationEnum.EMERGENCY_CONTACT\n ? ContactValidationEnum.FULL_EMERGENCY_CONTACT\n : ContactValidationEnum.FULL_CONTACT\n }\n\n return ct\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\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\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\n\nimport { defineComponent, computed, ref, watch, onMounted, PropType } from '@vue/composition-api'\n\nimport Modal from './Modal.vue'\nimport SimpleGrid from '@/elements/SimpleGrid.vue'\nimport SelectInput from '@/elements/SelectInput.vue'\nimport { PlayerContact } from '@/GeneratedTypes/PlayerContact'\nimport {\n getEmptyPlayerContact,\n PlayerContactSeed,\n relationshipKVMap,\n} from '@/lib/support/models/PlayerContact/data'\nimport TextInput from '@/elements/TextInput.vue'\nimport { getPhoneByType, setPhone } from '@/lib/support/models/PlayerContact/phoneutils'\nimport {\n getEmptyPhone,\n homePhoneSeed,\n mobilePhoneSeed,\n PhoneTypeEnum,\n} from '@/lib/support/models/IndividualPhone/data'\nimport { IndividualPhone } from '@/GeneratedTypes/IndividualPhone'\nimport { IndividualEmail } from '@/GeneratedTypes/IndividualEmail'\nimport { getEmptyIndividualEmail } from '@/lib/support/models/IndividualEmail/data'\nimport VeeValidateForm from '@/elements/VeeValidateForm.vue'\n\nimport PhoneInputMask from '@/elements/PhoneInputMask.vue'\nimport ParticipantEdit from '@/views/Programs/Participants/ParticipantEdit.vue'\nimport CheckboxInput from '@/elements/CheckboxInput.vue'\nimport { getFirstEmail, setFirstEmail } from '@/lib/support/models/IndividualEmail/email_list_operations'\nimport AddressRowBlock from '@/components/AddressRowBlock.vue'\nimport { IndividualAddress } from '@/GeneratedTypes/IndividualAddress'\nimport { getEmptyIndividualAddress } from '@/lib/support/models/IndividualAddress/data'\nimport { replaceOrInsertAddress } from '@/views/Programs/Participants/ext/composeutils'\nimport { cloneDeep, isEqual } from 'lodash'\nimport {\n getContactValidationType,\n isEmergencyValidationType,\n isFullContactValidationType,\n} from '@/lib/support/models/PlayerContact/validation_utils'\nimport { useFeatureFlags } from '@/services/useFeatureFlags'\nimport store from '@/store'\nimport emailServiceClient from '@/clients/emailServiceClient'\nimport { IndividualEmailCheck } from '@/models/IndividualEmailCheck'\n\nexport default defineComponent({\n name: 'ContactEditForm',\n components: {\n AddressRowBlock,\n CheckboxInput,\n ParticipantEdit,\n PhoneInputMask,\n VeeValidateForm,\n SelectInput,\n TextInput,\n Modal,\n SimpleGrid,\n },\n props: {\n value: { type: Object as PropType, default: getEmptyPlayerContact },\n },\n setup(props, ctx) {\n const disabled = ref(false)\n const internalContact = ref(getEmptyPlayerContact(new PlayerContactSeed()))\n\n const homePhone = ref(getEmptyPhone(homePhoneSeed()))\n const mobilePhone = ref(getEmptyPhone(mobilePhoneSeed()))\n const email = ref(getEmptyIndividualEmail())\n const isEmergencyContact = ref(false)\n const editAddress = ref(getEmptyIndividualAddress())\n\n const emailAddress = ref('')\n const firstName = ref('')\n const lastName = ref('')\n const typeRelationshipID = ref('')\n\n const optOutEmails = ref(false)\n const optOutSMS = ref(false)\n\n const validEmail = ref(true)\n const disableEmail = ref(false)\n\n const guardianTypes = ref(relationshipKVMap())\n\n // quick guard of this component.\n onMounted(() => {\n if (!store.getters.authorization.isImpersonated) {\n disabled.value = true\n }\n })\n\n function input() {\n optOutSMS.value = composedContact.value.optOutSMS //set model value since there is not a input field\n ctx.emit('input', composedContact.value)\n }\n\n function update() {\n ctx.emit('', composedContact.value)\n }\n\n async function emailupdated() {\n await onEmailConfirm()\n\n validEmail.value = true\n ctx.emit('emailupdated', composedContact.value)\n }\n\n const composedContact = computed(\n (): PlayerContact => {\n let c = {\n ...internalContact.value,\n firstName: firstName.value,\n lastName: lastName.value,\n typeRelationshipID: typeRelationshipID.value,\n }\n\n c = setPhone(c, mobilePhone.value)\n c = setPhone(c, homePhone.value)\n if (emailAddress.value) {\n c = setFirstEmail(c, {\n ...email.value,\n emailAddress: emailAddress.value,\n valid: validEmail.value.toString(),\n })\n } else {\n c.emailAddresses = []\n }\n\n c.isEmergencyContact = isEmergencyContact.value\n if ((editAddress.value.street1 && editAddress.value.subdivision2) || editAddress.value.addressID) {\n c.addresses = replaceOrInsertAddress(props.value.addresses || [], editAddress.value)\n }\n c.optOutEmails = optOutEmails.value\n c.optOutSMS = optOutSMS.value\n\n return c\n }\n )\n\n function decomposeContact() {\n ;({\n firstName: firstName.value,\n lastName: lastName.value,\n typeRelationshipID: typeRelationshipID.value,\n isEmergencyContact: isEmergencyContact.value,\n optOutEmails: optOutEmails.value,\n optOutSMS: optOutSMS.value,\n } = internalContact.value)\n editAddress.value = internalContact.value.addresses?.length\n ? internalContact.value.addresses[0]\n : getEmptyIndividualAddress()\n homePhone.value = getPhoneByType(internalContact.value, PhoneTypeEnum.HOME)\n mobilePhone.value = getPhoneByType(internalContact.value, PhoneTypeEnum.MOBILE)\n email.value = getFirstEmail(internalContact.value) || getEmptyIndividualEmail()\n emailAddress.value = email.value?.emailAddress || ''\n validEmail.value = isNullOrEmpty(email.value?.valid)\n ? true\n : email.value?.valid.toLowerCase() === 'true'\n }\n\n function isNullOrEmpty(val: any) {\n if (!val) return true\n\n if (val.length == 0) return true\n\n return false\n }\n\n async function onEmailConfirm() {\n try {\n //run email address through auto-correction\n if (emailAddress.value) {\n const correctedEmail = await emailServiceClient.getCorrectedEmail({\n email: emailAddress.value,\n } as IndividualEmailCheck)\n\n if (correctedEmail) {\n emailAddress.value = correctedEmail\n return\n }\n }\n } catch {\n // Ignore these errors since this is more of a convenience feature and not required to work\n // to register successfully\n }\n }\n\n const meetsEmergencyCriteria = computed(() =>\n isEmergencyValidationType(getContactValidationType(composedContact.value))\n )\n\n const meetsFullCriteria = computed(() =>\n isFullContactValidationType(getContactValidationType(composedContact.value))\n )\n\n watch(\n () => props.value,\n () => {\n if (props.value && !isEqual(internalContact.value, props.value)) {\n internalContact.value = cloneDeep(props.value)\n decomposeContact()\n }\n },\n { deep: true, immediate: true }\n )\n\n return {\n ...useFeatureFlags(),\n disabled,\n isEmergencyContact,\n meetsEmergencyCriteria,\n meetsFullCriteria,\n typeRelationshipID,\n guardianTypes,\n input,\n update,\n firstName,\n lastName,\n homePhone,\n mobilePhone,\n emailAddress,\n emailupdated,\n disableEmail,\n validEmail,\n optOutEmails,\n optOutSMS,\n editAddress,\n }\n },\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactEditForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactEditForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContactEditForm.vue?vue&type=template&id=03fdffec&\"\nimport script from \"./ContactEditForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContactEditForm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ContactEditForm.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, ref, computed, watch, PropType } from '@vue/composition-api'\nimport { getProps, useModalValue } from '@/composables/ModalValue'\nimport Modal from './Modal.vue'\nimport { PlayerContact } from '@/GeneratedTypes/PlayerContact'\nimport { getEmptyPlayerContact, PlayerContactSeed } from '@/lib/support/models/PlayerContact/data'\n\nimport VeeValidateForm from '@/elements/VeeValidateForm.vue'\nimport { cloneDeep } from 'lodash'\nimport ContactEditForm from '@/components/ContactEditForm.vue'\nimport {\n ContactValidationEnum,\n getContactValidationType,\n isEmergencyValidationType,\n} from '@/lib/support/models/PlayerContact/validation_utils'\n\nexport default defineComponent({\n name: 'ContactEditModal',\n components: {\n ContactEditForm,\n VeeValidateForm,\n Modal,\n },\n props: {\n contact: { type: Object as PropType, default: getEmptyPlayerContact },\n ...getProps(),\n },\n setup(props, ctx) {\n const { isModalOpen, closeModal } = useModalValue(props, ctx)\n\n const internalContact = ref(getEmptyPlayerContact(new PlayerContactSeed()))\n\n const meetsEmergencyCriteria = computed(() =>\n isEmergencyValidationType(getContactValidationType(internalContact.value))\n )\n\n const meetsBasicCriteria = computed(\n () => getContactValidationType(internalContact.value) != ContactValidationEnum.NOT_COMPLETE\n )\n\n const meetsSubmitCriteria = computed(() => {\n if (internalContact.value.isEmergencyContact) {\n return meetsEmergencyCriteria.value\n }\n return meetsBasicCriteria.value\n })\n\n watch(\n () => props.contact,\n () => {\n if (props.contact) {\n internalContact.value = cloneDeep(props.contact)\n }\n },\n { deep: true, immediate: true }\n )\n\n function cancel() {\n closeModal()\n }\n\n function confirmed() {\n if (meetsSubmitCriteria.value) {\n ctx.emit('contactUpdated', internalContact.value)\n closeModal()\n }\n }\n\n return {\n isModalOpen,\n internalContact,\n cancel,\n meetsSubmitCriteria,\n confirmed,\n }\n },\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactEditModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactEditModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContactEditModal.vue?vue&type=template&id=4ff35a79&\"\nimport script from \"./ContactEditModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContactEditModal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ContactEditModal.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contact-card-width slide-create mb-3 shadow bg-white p-2\"},[_c('div',{staticClass:\"row p-3\"},[_c('div',{staticClass:\"col-12 card\"},[_c('inner-contact',{attrs:{\"contact\":_vm.innerContact},scopedSlots:_vm._u([{key:\"name_line\",fn:function(){return [_c('a',{staticClass:\"mb-2 clickable\",on:{\"click\":function($event){return _vm.$emit('edit', _vm.contact)}}},[_c('i',{staticClass:\"fas fa-pencil-alt\"})]),(_vm.deleteEnabled)?_c('a',{staticClass:\"mb-2 ml-4\",on:{\"click\":function($event){return _vm.$emit('delete', _vm.contact)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})]):_vm._e()]},proxy:true},{key:\"subtitle\",fn:function(){return [(_vm.contact.isEmergencyContact)?_c('sup',{staticClass:\"emergency-contact\"},[_c('i',{staticClass:\"fa fa-first-aid\"}),_vm._v(\" This is the emergency contact. \")]):_vm._e()]},proxy:true},{key:\"aside\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.addressLine1)+\" \"),(_vm.addressLine1 && _vm.addressLine2)?_c('br'):_vm._e(),_vm._v(\" \"+_vm._s(_vm.addressLine2)+\" \")]},proxy:true}])})],1),(_vm.roles.length)?_c('div',{staticClass:\"col-12\"},[_c('small',[_vm._v(\"ROLES\")]),_c('div',_vm._l((_vm.roles),function(role){return _c('role-element',{key:role.id,attrs:{\"role\":role,\"can-remove\":_vm.roles.length > 1},on:{\"remove\":function($event){return _vm.removeRole(role.id)}}})}),1)]):_vm._e()]),(_vm.canAddRoles)?_c('button',{staticClass:\"col-12 btn btn-primary rounded-0\",on:{\"click\":_vm.addRoles}},[_vm._v(\" Assign Volunteer Roles \")]):_c('span',{staticClass:\"alert alert-warning pr-3 pl-3\",attrs:{\"role\":\"alert\"}},[_vm._v(\"Complete the contact phone to assign volunteer roles \"),_c('br')])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { ContactInfo } from '@/GeneratedTypes/Partner/ListInfo/ContactInfo'\nimport { PlayerContact } from '@/GeneratedTypes/PlayerContact'\nimport { getPhoneByType } from '@/lib/support/models/PlayerContact/phoneutils'\nimport { PhoneTypeEnum } from '@/lib/support/models/IndividualPhone/data'\n\nexport function PlayerContactToContactInfo(invar: PlayerContact): ContactInfo {\n const rv: ContactInfo = {\n id: invar.individualID,\n alternatePhone: getPhoneByType(invar, PhoneTypeEnum.WORK).phoneNumber,\n alternatePhoneTypeID: PhoneTypeEnum.WORK,\n emailAddress: invar?.emailAddresses?.length ? invar.emailAddresses[0].emailAddress : '',\n emailValid: invar?.emailAddresses?.length ? invar.emailAddresses[0].valid : 'true',\n emailValidReason: invar?.emailAddresses?.length ? invar.emailAddresses[0].validityReason : '',\n firstName: invar.firstName,\n fullName: `${invar.firstName} ${invar.lastName}`,\n isFullTime: false,\n lastName: invar.lastName,\n preferredContactDayOfWeek: null,\n preferredContactMethod: PhoneTypeEnum.MOBILE,\n preferredContactTimeOfDay: null,\n primaryPhone: getPhoneByType(invar, PhoneTypeEnum.MOBILE).phoneNumber,\n primaryPhoneTypeID: PhoneTypeEnum.MOBILE,\n secondaryPhone: getPhoneByType(invar, PhoneTypeEnum.HOME).phoneNumber,\n secondaryPhoneTypeID: PhoneTypeEnum.HOME,\n trained: false,\n typePartnerRoleID: invar.typeRelationshipID, //not sure yet.\n yearsExperience: 0,\n }\n return rv\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"contact-name row\"},[_c('div',{staticClass:\"col pb-0\"},[_c('h5',{staticClass:\"mb-0\"},[_vm._v(_vm._s(_vm.contact.fullName))])]),_c('div',{staticClass:\"col-auto pb-0\"},[_vm._t(\"name_line\")],2),_c('div',{staticClass:\"col-12 pt-0\"},[_vm._t(\"subtitle\")],2)]),_c('div',{staticClass:\"row mt-0 mb-3\"},[_c('div',{staticClass:\"col-auto pr-6\"},[(_vm.contact.primaryPhone)?_c('p',{staticClass:\"m-0\"},[_c('i',{class:_vm.primaryPhoneIcon}),_vm._v(\" \"+_vm._s(_vm.primaryPhoneFormatted)+\" \")]):_vm._e(),(_vm.contact.secondaryPhone)?_c('p',{staticClass:\"m-0\"},[_c('i',{class:_vm.secondaryPhoneIcon}),_vm._v(\" \"+_vm._s(_vm.secondaryPhoneFormatted)+\" \")]):_vm._e()]),_c('div',{staticClass:\"col\"},[_vm._t(\"aside\")],2)]),(_vm.contact.emailAddress && !_vm.sysGenEmailAddress)?_c('a',{attrs:{\"target\":\"_blank\",\"href\":(\"mailto:\" + (_vm.contact.emailAddress))}},[_vm._v(_vm._s(_vm.contact.emailAddress))]):_vm._e(),(!_vm.validEmail && !_vm.sysGenEmailAddress)?_c('div',[_c('br'),_c('span',{staticClass:\"alert alert-warning ml-0 p-0 w-25\"},[_vm._v(\"Invalid or Suspicious email address (will not receive emails)\")])]):_vm._e(),(_vm.sysGenEmailAddress)?_c('div',[_c('br'),_c('span',{staticClass:\"alert alert-info ml-0 p-0 w-25\"},[_vm._v(\"No Email Available (will not receive emails)\")])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * Returns a minimally functional empty contact for stubbing a component\n *\n */\nimport { ContactInfo } from '@/GeneratedTypes/Partner/ListInfo/ContactInfo'\nimport { NameToType } from '@/lib/support/models/IndividualPhone/data'\n\nexport function getEmptyContactInfo(): ContactInfo {\n return {\n id: 0,\n fullName: '',\n firstName: '',\n lastName: '',\n primaryPhone: '',\n primaryPhoneTypeID: NameToType('home'),\n secondaryPhone: '',\n secondaryPhoneTypeID: NameToType('mobile'),\n alternatePhone: '',\n alternatePhoneTypeID: NameToType('work'),\n emailAddress: '',\n emailValid: 'true',\n emailValidReason: '',\n isFullTime: false,\n trained: false,\n typePartnerRoleID: '',\n yearsExperience: 0,\n preferredContactDayOfWeek: null,\n preferredContactTimeOfDay: null,\n preferredContactMethod: null,\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\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, computed, PropType } from '@vue/composition-api'\nimport { ContactInfo } from '@/GeneratedTypes/Partner/ListInfo/ContactInfo'\nimport { getEmptyContactInfo } from '@/lib/support/models/ContactInfo/data'\nimport { formatPhoneNumber } from '@/services/phoneNumberService'\n\nexport default defineComponent({\n name: 'InnerContact',\n props: {\n contact: { type: Object as PropType, required: true, default: getEmptyContactInfo() },\n },\n setup(props) {\n function getPhoneIcon(phoneType: string | null) {\n switch (phoneType) {\n case 'HOME':\n return 'phone-icon fa fa-home'\n case 'MOBILE':\n return 'phone-icon fa fa-mobile-alt'\n default:\n return 'phone-icon fa fa-phone'\n }\n }\n\n const validEmail = computed(() => {\n if (props.contact) {\n return isNullOrEmpty(props.contact.emailValid)\n ? true\n : (props.contact.emailValid ?? 'true').toLowerCase() === 'true'\n }\n\n return true\n })\n\n function isNullOrEmpty(value: any) {\n if (!value) return true\n\n if (value.length == 0) return true\n\n return false\n }\n\n const sysGenEmailAddress = computed(() => {\n var status = false\n\n if (props.contact.emailAddress) {\n status =\n props.contact.emailAddress.indexOf('@email.onupward.one') > 0 ||\n props.contact.emailAddress.indexOf('@onupward.gen') > 0\n }\n\n return status\n })\n\n const primaryPhoneIcon = computed(() => getPhoneIcon(props.contact.primaryPhoneTypeID))\n\n const secondaryPhoneIcon = computed(() => getPhoneIcon(props.contact.secondaryPhoneTypeID))\n\n const primaryPhoneFormatted = computed(() => {\n if (!props.contact.primaryPhone) {\n return ''\n }\n\n return formatPhoneNumber(props.contact.primaryPhone)\n })\n\n const secondaryPhoneFormatted = computed(() => {\n if (!props.contact.secondaryPhone) {\n return ''\n }\n\n return formatPhoneNumber(props.contact.secondaryPhone)\n })\n\n return {\n primaryPhoneIcon,\n primaryPhoneFormatted,\n secondaryPhoneIcon,\n secondaryPhoneFormatted,\n sysGenEmailAddress,\n validEmail,\n }\n },\n})\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InnerContact.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InnerContact.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InnerContact.vue?vue&type=template&id=a663be18&scoped=true&\"\nimport script from \"./InnerContact.vue?vue&type=script&lang=ts&\"\nexport * from \"./InnerContact.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./InnerContact.vue?vue&type=style&index=0&id=a663be18&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a663be18\",\n null\n \n)\n\nexport default component.exports","\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\n\n\n\n\n\n\nimport { defineComponent, computed, ref, watch, onMounted, PropType } from '@vue/composition-api'\nimport { cloneDeep } from 'lodash'\nimport { ContactInfo } from '@/GeneratedTypes/Partner/ListInfo/ContactInfo'\nimport { PlayerContactToContactInfo } from '@/lib/support/models/ContactInfo/PlayerContactToContactInfo'\nimport {\n getEmptyPlayerContact,\n decrementingPlayerContactIDSeedStrategy,\n isCompleteContact,\n} from '@/lib/support/models/PlayerContact/data'\nimport { PlayerContact } from '@/GeneratedTypes/PlayerContact'\nimport InnerContact from '@/components/Contact/InnerContact.vue'\nimport RoleElement from '@/elements/css/RoleElement.vue'\nimport { RoleElementType } from '@/models/RoleElement/RoleElement'\n\nexport default defineComponent({\n name: 'ContactCardWithRoles',\n components: {\n InnerContact,\n RoleElement,\n },\n props: {\n contact: {\n type: Object as PropType,\n required: true,\n default: () => getEmptyPlayerContact(decrementingPlayerContactIDSeedStrategy()),\n },\n roles: { required: true, default: () => [], type: Array as PropType },\n deleteEnabled: { required: false, default: true, type: Boolean },\n },\n setup(props, ctx) {\n const editContact = ref(props.contact)\n\n const address = computed(() => (props.contact.addresses?.length ? props.contact.addresses[0] : null))\n\n const addressLine1 = computed(() => {\n if (!address.value) {\n return ''\n }\n\n return [address.value.street1, address.value.street2].filter((s) => s && s.trim()).join(', ')\n })\n\n const addressLine2 = computed(() => {\n if (!address.value) {\n return ''\n }\n\n const cityState = [address.value.subdivision1, address.value.subdivision2]\n .filter((s) => s && s.trim())\n .join(', ')\n\n return `${cityState} ${address.value.postalCode}`\n })\n\n const innerContact = computed((): ContactInfo => PlayerContactToContactInfo(editContact.value))\n\n /**\n * maintain an internal state that reflects our external contact.\n */\n function copyToEditContact() {\n editContact.value = cloneDeep(props.contact)\n }\n\n watch(\n () => props.contact,\n () => {\n copyToEditContact()\n },\n { deep: true }\n )\n\n function addRoles() {\n ctx.emit('addRoles', props.contact)\n }\n\n function removeRole(role: number) {\n ctx.emit('removeRole', props.contact, role)\n }\n\n const canAddRoles = computed(() => isCompleteContact(editContact.value))\n\n onMounted(() => {\n copyToEditContact()\n })\n\n return {\n innerContact,\n addressLine1,\n addressLine2,\n removeRole,\n canAddRoles,\n addRoles,\n }\n },\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactCardWithRoles.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactCardWithRoles.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContactCardWithRoles.vue?vue&type=template&id=c386951e&scoped=true&\"\nimport script from \"./ContactCardWithRoles.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContactCardWithRoles.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ContactCardWithRoles.vue?vue&type=style&index=0&id=c386951e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c386951e\",\n null\n \n)\n\nexport default component.exports","import { PlayerContact } from '@/GeneratedTypes/PlayerContact'\nimport { cloneDeep } from 'lodash'\n\n/***\n * This will add a contact to a list of contacts.\n * -- There is a funny case where the template\n * passes a blank contact, we want to override that with the first contact added.\n * @param list\n * @param newContact\n */\nexport function addNewContactToList(list: PlayerContact[], newContact: PlayerContact): PlayerContact[] {\n if (list.length == 1) {\n //stand in for is this a valid contact, or just a template contact\n if (!list[0].firstName) {\n list = [cloneDeep(newContact)]\n } else {\n list.push(cloneDeep(newContact))\n }\n } else {\n //lists with more than one contact\n list.push(cloneDeep(newContact))\n }\n return list\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\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue'\nimport { cloneDeep, uniq } from 'lodash'\nimport ContactEditModal from '@/components/ContactEditModal.vue'\nimport {\n getEmptyPlayerContact,\n decrementingPlayerContactIDSeedStrategy,\n PlayerContactSeed,\n PlayerContactTypeEnum,\n} from '@/lib/support/models/PlayerContact/data'\nimport { PlayerContact } from '@/GeneratedTypes/PlayerContact'\nimport { Prop, Component, Watch, Emit } from 'vue-property-decorator'\nimport ContactCardWithRoles from '@/components/ContactCardWithRoles.vue'\nimport { addNewContactToList } from '@/views/Programs/Participants/vues/ext/contacts'\nimport ConfirmDeleteModal from '@/components/ConfirmDeleteModal.vue'\nimport { PlayerInfoIDType } from '@/lib/support/models/LeaguePlayerInfo/data'\nimport ContactEditForm from '@/components/ContactEditForm.vue'\nimport {\n getContactValidationType,\n isFullContactValidationType,\n} from '@/lib/support/models/PlayerContact/validation_utils'\nimport { LeagueVolunteer } from '@/GeneratedTypes/LeagueVolunteer'\nimport { RoleElementType } from '@/models/RoleElement/RoleElement'\nimport ModalMultiSelect from '@/components/ModalMultiSelect.vue'\nimport SelectInput from '@/elements/SelectInput.vue'\nimport { LeagueProgram } from '@/GeneratedTypes/LeagueProgram'\nimport { League } from '@/GeneratedTypes/League'\nimport { getEmptyLeague } from '@/lib/support/models/League/data'\n\nimport { getEmptyLeagueCoach } from '@/lib/support/models/LeagueCoach/data'\nimport { LeagueCoach } from '@/GeneratedTypes/LeagueCoach'\nimport { LeagueVolunteerRole } from '@/GeneratedTypes/LeagueVolunteerRole'\nimport { TypeLeagueVolunteerRole } from '@/GeneratedTypes/TypeLeagueVolunteerRole'\nimport {\n getGenderFromRole,\n PlayerContactToLeagueVolunteer,\n} from '@/lib/support/models/LeagueVolunteer/PlayerContactToLeagueVolunteer'\nimport VolunteerOptionPanel from '@/views/Programs/Volunteers/vues/VolunteerOptionPanel.vue'\nimport { ContactRoleEditType } from '@/models/ParticipantUI/ContactRoleEditType'\n\nconst NEW_CONTACT = -9e4\n\n@Component({\n components: {\n ContactEditForm,\n ConfirmDeleteModal,\n ContactCardWithRoles,\n ContactEditModal,\n ModalMultiSelect,\n SelectInput,\n VolunteerOptionPanel,\n },\n})\nexport default class ParticipantsContacts extends Vue {\n private editContact: PlayerContact = getEmptyPlayerContact(new PlayerContactSeed())\n\n private editedContactIndex = NEW_CONTACT\n private contactModalOpen = false\n @Prop({ type: Array, required: true, default: () => [] })\n private readonly contacts!: PlayerContact[]\n private editContacts: PlayerContact[] = []\n //** list of volunteers since player contacts does not have roles.\n @Prop({ type: Array, required: true, default: () => [] })\n private readonly volunteers!: LeagueVolunteer[]\n\n @Prop({ type: Array, required: true, default: () => [] })\n private contactRoleChanges!: ContactRoleEditType[]\n\n @Prop({ type: Array, required: true, default: () => [] })\n private programs!: LeagueProgram[]\n @Prop({ type: Object, required: true, default: () => getEmptyLeague() })\n private league!: League\n\n @Prop({ type: Boolean, required: false, default: false })\n private readonly showInitialEditForm!: boolean\n\n @Prop({ type: Object, required: false })\n private genderList!: object\n\n private deleteConfirmShowing = false\n private deleteID: PlayerInfoIDType | null = null\n\n private selectOpen = false\n private roleContact: LeagueVolunteer | null = null\n private coachPreferences: LeagueCoach = getEmptyLeagueCoach()\n private roles: LeagueVolunteerRole[] = []\n private leagueRoles: TypeLeagueVolunteerRole[] = []\n private gender = ''\n\n private get editVolunteerPrograms() {\n return uniq([\n ...(this.coachPreferences.programs ?? []).map((x) => x.typeProgramID),\n ...this.programs.map((x) => x.typeProgramID),\n ])\n }\n\n //**signal that add roles was clicked\n addRoles(c: PlayerContact) {\n this.editContact = cloneDeep(c)\n this.roleContact = cloneDeep(\n this.volunteers.find((x) => x.individualID == c.individualID) ?? PlayerContactToLeagueVolunteer(c)\n )\n this.coachPreferences = cloneDeep(this.roleContact?.coachPreferences ?? getEmptyLeagueCoach())\n this.roles = cloneDeep(this.roleContact.roles ?? [])\n this.gender = this.roleContact?.gender ?? this.genderFromRole\n const o = this.contactRoleChanges.find((x) => x.id == c.individualID)\n\n if (o) {\n this.coachPreferences = cloneDeep(o.coachPrefs)\n this.roles = cloneDeep(o.roles)\n }\n\n this.selectOpen = true\n }\n /**\n * Provides the gender from the contact role or blank if undetermined\n */\n get genderFromRole() {\n return getGenderFromRole(this.editContact.typeRelationshipID as PlayerContactTypeEnum)\n }\n\n @Emit()\n roleListUpdate() {\n return {\n id: this.roleContact?.individualID,\n roles: this.roles,\n coachPrefs: this.coachPreferences ?? getEmptyLeagueCoach(),\n gender: this.gender,\n }\n }\n\n //**signal that a role was removed\n removeRole(c: PlayerContact, role: number) {\n this.roleContact = cloneDeep(\n this.volunteers.find((x) => x.individualID == c.individualID) ?? PlayerContactToLeagueVolunteer(c)\n )\n this.coachPreferences = this.roleContact?.coachPreferences ?? getEmptyLeagueCoach()\n this.roles = cloneDeep(this.actualRolesFor(c.individualID).filter((x) => x.roleID != role) ?? [])\n this.roleListUpdate()\n }\n\n get currentRoleIds() {\n return this.roles?.map((x) => x.roleID) ?? []\n }\n /**\n * Update this.roles based on ids passed in\n */\n filterRoles(ids: number[]) {\n let roles = cloneDeep(this.roles)\n\n ids.forEach((id) => {\n if (roles.findIndex((y) => y.roleID == id) < 0) {\n roles.push({\n roleID: id,\n approved: false,\n udFs: [],\n authorizedExpireDate: new Date(),\n upwardAuthInvitationID: '',\n })\n }\n })\n\n // filter out anything that is \"not in\" ids\n this.roles = roles.filter((x) => ids.findIndex((y) => y == x.roleID) >= 0)\n }\n\n updateSelectedRoles(ids: number[]) {\n this.filterRoles(ids)\n }\n\n sendSelectedRoles(ids: number[]) {\n this.filterRoles(ids)\n this.roleListUpdate()\n }\n\n /**\n * Responds to role detail updates\n */\n updateRoleDetails(coachPrefs: LeagueCoach, roles: LeagueVolunteerRole[]) {\n this.roles = cloneDeep(roles)\n this.coachPreferences = cloneDeep(coachPrefs)\n }\n\n copyToInternalContact(c: PlayerContact) {\n this.editedContactIndex = 0\n this.updateContact(c)\n return\n }\n\n actualRolesFor(id: number): LeagueVolunteerRole[] {\n let roles: LeagueVolunteerRole[] = []\n const q = this.contactRoleChanges.find((x) => x.id == id)\n if (q) {\n roles = cloneDeep(q.roles)\n } else {\n const c = this.volunteers.find((x) => x.individualID == id)\n if (c) {\n roles = cloneDeep(c.roles ?? [])\n }\n }\n return roles\n }\n\n /**\n * Grab roles for a contact, including roles pending write\n */\n rolesFor(id: number) {\n return (\n this.actualRolesFor(id)?.map((x) => ({\n id: x.roleID,\n description: this.league.roles?.find((y) => y.id == x.roleID)?.description,\n })) ?? []\n )\n }\n\n get visibleContacts() {\n return this.editContacts\n }\n\n /***\n * New Contact button clicked\n */\n addContact() {\n this.editedContactIndex = NEW_CONTACT\n this.editContact = getEmptyPlayerContact(decrementingPlayerContactIDSeedStrategy())\n this.contactModalOpen = true\n }\n editContactClick(a: PlayerContact) {\n const index = this.editContacts.findIndex((x) => x.individualID == a.individualID)\n if (index >= 0) {\n this.editedContactIndex = index\n this.editContact = cloneDeep(this.editContacts[index])\n\n this.contactModalOpen = true\n }\n }\n\n /**\n * called by confirm box\n * prior to confirmed deleteID is set.\n */\n deleteConfirmed() {\n this.editContacts = this.editContacts.filter((x) => x.individualID != this.deleteID)\n this.update()\n }\n\n deleteContactClick(a: PlayerContact) {\n this.deleteID = a.individualID\n this.deleteConfirmShowing = true\n }\n\n get contactsValid() {\n return this.hasFullContact && this.hasEmergencyContact\n }\n\n update() {\n if (this.contactsValid) {\n this.$emit('update', this.editContacts)\n }\n }\n\n updateContact(contact: PlayerContact) {\n //if we don't have an emergency contact, this will be it\n if (!this.hasEmergencyContact) {\n contact.isEmergencyContact = true\n }\n\n // if this contact is marked as an emergency contact, deselect the other.\n if (contact.isEmergencyContact) {\n this.editContacts = [...this.editContacts.map((x) => ({ ...x, isEmergencyContact: false }))]\n }\n\n if (this.editedContactIndex === NEW_CONTACT) {\n //case where we are dealing with the template\n this.editContacts = [...addNewContactToList(this.editContacts, { ...contact })]\n } else {\n this.editContacts.splice(this.editedContactIndex, 1, { ...contact })\n }\n this.update()\n }\n\n get hasEmergencyContact() {\n return this.editContacts.some((x) => x.isEmergencyContact)\n }\n get hasFullContact() {\n return this.editContacts.some((x) => isFullContactValidationType(getContactValidationType(x)))\n }\n\n @Watch('contacts')\n copyContactPropToEdit() {\n if (this.showInitialEditForm && !this.contacts?.length) {\n this.editContacts = [\n //default to EC on first contact when edit form is opened.\n { ...getEmptyPlayerContact(decrementingPlayerContactIDSeedStrategy()), isEmergencyContact: true },\n ...this.contacts,\n ]\n } else {\n this.editContacts = [...this.contacts]\n }\n }\n\n @Watch('league')\n setRoleValues() {\n this.leagueRoles = cloneDeep(this.league.roles ?? [])\n }\n\n get allRoleValues(): RoleElementType[] {\n return this.leagueRoles\n .sort((a, b) => a.sortOrder - b.sortOrder)\n .map((x) => ({\n id: x.id,\n description: x.description ?? '',\n }))\n }\n\n mounted() {\n this.copyContactPropToEdit()\n this.setRoleValues()\n }\n}\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParticipantsContacts.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParticipantsContacts.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ParticipantsContacts.vue?vue&type=template&id=5464cdd1&\"\nimport script from \"./ParticipantsContacts.vue?vue&type=script&lang=ts&\"\nexport * from \"./ParticipantsContacts.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('text-input',{attrs:{\"vee-validate-rules\":\"namelike|required\",\"label\":\"First Name\",\"required\":\"\"},on:{\"blur\":function($event){_vm.hasBlurredFirstName = true},\"change\":_vm.fireOnChange},model:{value:(_vm.editPlayer.firstName),callback:function ($$v) {_vm.$set(_vm.editPlayer, \"firstName\", $$v)},expression:\"editPlayer.firstName\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[_c('text-input',{attrs:{\"vee-validate-rules\":\"namelike|required\",\"label\":\"Last Name\",\"required\":\"\"},on:{\"blur\":function($event){_vm.hasBlurredLastName = true},\"change\":_vm.fireOnChange},model:{value:(_vm.editPlayer.lastName),callback:function ($$v) {_vm.$set(_vm.editPlayer, \"lastName\", $$v)},expression:\"editPlayer.lastName\"}})],1),_c('div',{staticClass:\"col-sm-3\"},[_c('text-input',{attrs:{\"maxlength\":\"1\",\"length\":\"1\",\"label\":\"Middle Initial\"},on:{\"change\":_vm.fireOnChange},model:{value:(_vm.editPlayer.middleInitial),callback:function ($$v) {_vm.$set(_vm.editPlayer, \"middleInitial\", $$v)},expression:\"editPlayer.middleInitial\"}})],1),_c('div',{staticClass:\"col-sm-3\"},[_c('select-input',{attrs:{\"label\":\"Gender\",\"required\":\"\",\"items-list\":_vm.genderList},on:{\"change\":_vm.fireOnChange},model:{value:(_vm.editPlayer.gender),callback:function ($$v) {_vm.$set(_vm.editPlayer, \"gender\", $$v)},expression:\"editPlayer.gender\"}})],1),(!_vm.isByAge)?_c('div',{staticClass:\"col-sm-6\"},[_c('select-input',{attrs:{\"vee-validate-rules\":_vm.isByAge ? '' : 'required',\"label\":\"Grade\",\"required\":!_vm.isByAge,\"items-list\":_vm.overrideGradeList,\"valuePropertyName\":\"upwardTypeID\",\"textPropertyName\":\"description\"},on:{\"change\":_vm.fireOnChange},model:{value:(_vm.editPlayer.typeGradeID),callback:function ($$v) {_vm.$set(_vm.editPlayer, \"typeGradeID\", $$v)},expression:\"editPlayer.typeGradeID\"}})],1):_vm._e(),(_vm.isByAge)?_c('div',{class:_vm.isByAge && _vm.internalBirthDate && !_vm.editPlayer.typeGradeID ? 'col-sm-6' : 'col-sm-2'},[(_vm.isByAge && _vm.calculatedAge > 0)?_c('span',{staticClass:\"text-body-2\",class:_vm.calculatedGradeIsInList ? '' : 'text-danger font-weight-bold'},[_vm._v(\"Age as of \"+_vm._s(_vm.formattedCutoffDate)+\" is \"+_vm._s(_vm.calculatedAge)+\" years old\")]):_vm._e(),(_vm.isByAge && _vm.internalBirthDate && !_vm.editPlayer.typeGradeID)?_c('span',{staticClass:\"text-body-2\"},[_vm._v(\"Birthdate must be between \"+_vm._s(_vm.validDateRange.fullFromDateFormatted)+\" and \"+_vm._s(_vm.validDateRange.fullToDateFormatted)+\".\")]):_vm._e()]):_vm._e(),(_vm.isByAge && _vm.editPlayer.typeGradeID)?_c('div',{staticClass:\"col-sm-4\"},[(_vm.isByAge && _vm.calculatedAge > 0)?_c('checkbox-input',{staticClass:\"pl-1\",attrs:{\"label\":\"Play up/down in age?\",\"inline\":true},on:{\"input\":_vm.gradeIsOverriddenChanged},model:{value:(_vm.editPlayer.gradeIsOverridden),callback:function ($$v) {_vm.$set(_vm.editPlayer, \"gradeIsOverridden\", $$v)},expression:\"editPlayer.gradeIsOverridden\"}}):_vm._e(),(_vm.isByAge && _vm.calculatedAge > 0 && _vm.editPlayer.gradeIsOverridden)?_c('select-input',{attrs:{\"vee-validate-rules\":_vm.isByAge ? '' : 'required',\"required\":true,\"enabled\":_vm.editPlayer.gradeIsOverridden,\"items-list\":_vm.overrideGradeList,\"valuePropertyName\":\"upwardTypeID\",\"textPropertyName\":\"ageByCutoff\"},on:{\"change\":_vm.fireOnChange},model:{value:(_vm.editPlayer.typeGradeID),callback:function ($$v) {_vm.$set(_vm.editPlayer, \"typeGradeID\", $$v)},expression:\"editPlayer.typeGradeID\"}}):_vm._e()],1):_vm._e(),_c('div',{staticClass:\"col-sm-6\"},[_c('text-input',{attrs:{\"label\":\"Church\"},on:{\"change\":_vm.fireOnChange},model:{value:(_vm.editPlayer.churchName),callback:function ($$v) {_vm.$set(_vm.editPlayer, \"churchName\", $$v)},expression:\"editPlayer.churchName\"}})],1),_c('div',{staticClass:\"col-sm-3\"},[_c('date-input',{attrs:{\"min-date\":_vm.validDateRange.adjustedFromDate,\"maxDate\":_vm.validDateRange.toDate,\"label\":\"Birthdate\",\"required\":_vm.isByAge,\"disabled\":_vm.isByAge && !_vm.editPlayer.gender,\"isTypeable\":true,\"vee-validate-rules\":_vm.isByAge ? \"required\" : 'birthdate'},model:{value:(_vm.internalBirthDate),callback:function ($$v) {_vm.internalBirthDate=$$v},expression:\"internalBirthDate\"}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export function isNullOrEmpty(value: any) {\n if (!value) return true\n\n if (value.length == 0) return true\n\n return false\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\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\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\nimport { Component, Vue, Prop, Watch } from 'vue-property-decorator'\nimport { Getter } from 'vuex-class'\n\nimport TextInput from '@/elements/TextInput.vue'\nimport Loading from '@/elements/Loading.vue'\nimport InputLabel from '@/elements/InputLabel.vue'\nimport CheckboxInput from '@/elements/CheckboxInput.vue'\nimport DateInput from '@/elements/DateInput.vue'\n\nimport { LeaguePlayer } from '@/GeneratedTypes/LeaguePlayer'\nimport {\n getEmptyLeaguePlayer,\n IsNewPlayer,\n LeaguePlayerSeedInfo,\n} from '@/lib/support/models/LeaguePlayer/data'\n\nimport SelectInput from '@/elements/SelectInput.vue'\nimport { getGrades } from '@/lib/support/models/UpwardTypes/UpwardGradeTypeID/grades'\nimport { getGradeTypeIDFromBirthDate, getDateRangeForGrades } from '@/services/gradeService'\nimport { LeagueAbstraction } from '@/models/LeagueAbstraction/LeagueAbstraction'\nimport * as leagueAbstraction from '@/store/leagueAbstraction'\nimport * as gradeStore from '@/store/gradeTypes'\nimport { UpwardGradeTypeID } from '@/GeneratedTypes/UpwardTypes/UpwardGradeTypeID'\nimport dayjs from 'dayjs'\n\nimport RadioGroupInput from '@/elements/RadioGroupInput.vue'\nimport { cloneDeep } from 'lodash'\nimport { isNullOrEmpty } from '@/lib/support/utilities/strings/isNullOrEmpty'\n\n@Component({\n components: {\n RadioGroupInput,\n SelectInput,\n DateInput,\n Loading,\n TextInput,\n InputLabel,\n CheckboxInput,\n },\n})\nexport default class ParticipantBasics extends Vue {\n @Prop({ type: Object, required: true })\n private value!: LeaguePlayer\n private editPlayer: LeaguePlayer = getEmptyLeaguePlayer(new LeaguePlayerSeedInfo())\n\n @Prop({ type: Array, required: false, default: () => [] })\n private gradesList!: string[]\n\n @Prop({ type: Object, required: false })\n private genderList!: object\n\n @Getter(leagueAbstraction.getterNames.isByAge, { namespace: leagueAbstraction.leagueAbstractionNamespace })\n private isByAge!: boolean\n\n @Getter(leagueAbstraction.getterNames.currentItem, {\n namespace: leagueAbstraction.leagueAbstractionNamespace,\n })\n private currentProgram!: LeagueAbstraction\n\n @Getter(gradeStore.getterNames.byUpwardTypeId, { namespace: gradeStore.namespace })\n private getUpwardGradeTypeID!: (typeID: string) => UpwardGradeTypeID | null\n\n private defaultGradeList = getGrades(false)\n private defaultGenderList = { M: 'Male', F: 'Female' }\n\n private hasBlurredFirstName = false\n private hasBlurredLastName = false\n private hasNotifiedBlur = false\n\n private calculatedAge = 0\n private internalBirthDate: Date | null = null\n private recalcGrade = false\n\n /**\n * Passed in grades take precedence over default grades\n */\n get grades() {\n if (this.gradesList.length) {\n return this.gradesList\n }\n return this.defaultGradeList\n }\n\n get overrideGradeList() {\n return this.grades.map((g) => this.getUpwardGradeTypeID(g))\n }\n\n /**\n * Passed in genders take precedence over default grades\n */\n get genders() {\n if (!this.genderList) return this.defaultGradeList\n return this.genderList\n }\n\n get formattedCutoffDate() {\n return this.currentProgram.ageCutoffDate\n ? dayjs(this.currentProgram.ageCutoffDate).format('MM/DD/YY')\n : '??'\n }\n\n get validDateRange() {\n const range = getDateRangeForGrades(\n this.grades[0],\n this.grades[this.grades.length - 1],\n this.isByAge ? this.currentProgram.ageCutoffDate : null\n )\n const fullRange = getDateRangeForGrades(\n 'K3',\n '12th',\n this.isByAge ? this.currentProgram.ageCutoffDate : null\n )\n //as of this writing, for some reason the date-picket automatically subtracts a day from this date, so add it to get a proper range\n return {\n ...range,\n adjustedFromDate: dayjs(range.fromDate).add(1, 'day').toDate(),\n validationFromDate: dayjs(range.fromDate).subtract(1, 'day').format('MM/DD/YYYY'),\n validationToDate: dayjs(range.toDate).add(1, 'day').format('MM/DD/YYYY'),\n fullFromDateFormatted: dayjs(fullRange.fromDate).format('MM/DD/YYYY'),\n fullToDateFormatted: dayjs(fullRange.toDate).format('MM/DD/YYYY'),\n }\n }\n\n get calculatedGradeIsInList() {\n return this.grades.includes(this.editPlayer.typeGradeID)\n }\n\n /**\n * Tricky case, but on leaving a blurred field, new account, trigger a window to pop\n * up on an existing account. This is the notify, won't do it more than once, will only\n * do it if both fields are tickled in order.\n */\n @Watch('hasBlurredLastName')\n lastNameBlurred() {\n this.blurLookup()\n }\n @Watch('hasBlurredFirstName')\n firstNameBlurred() {\n this.blurLookup()\n }\n\n blurLookup() {\n // !this.hasNotifiedBlur && -- if you need this to go once and not more.\n if (\n IsNewPlayer(this.editPlayer) &&\n this.hasBlurredFirstName &&\n this.hasBlurredLastName &&\n this.editPlayer.firstName && //and first and last exist\n this.editPlayer.lastName\n ) {\n this.hasNotifiedBlur = true\n this.hasBlurredLastName = false\n this.hasBlurredFirstName = false\n\n this.$emit('nameUpdated', this.editPlayer.firstName, this.editPlayer.lastName)\n }\n }\n\n /**\n * Send parent the new LeaguePlayer\n */\n fireOnChange() {\n //console.log('fireOnChange', this.editPlayer)\n this.$emit('input', this.editPlayer)\n }\n\n // reflect changes passed from parent into the edit structures.\n @Watch('value', { immediate: true })\n function() {\n //console.log('value changed', this.value.typeGradeID, this.value.birthDate, this.internalBirthDate)\n this.recalcGrade = !isNullOrEmpty(this.editPlayer.typeGradeID) && isNullOrEmpty(this.value.typeGradeID)\n this.editPlayer = cloneDeep(this.value)\n this.editPlayer.gradeIsOverridden =\n this.editPlayer.gradeIsOverridden == null ? false : this.editPlayer.gradeIsOverridden\n this.sourceBirthDateChanged()\n }\n\n @Watch('internalBirthDate', { immediate: true })\n birthDateChanged() {\n if (this.isByAge) {\n const typeGradeID = getGradeTypeIDFromBirthDate(\n this.currentProgram.ageCutoffDate,\n this.internalBirthDate\n )\n this.calculatedAge = typeGradeID?.ageByCutoff ?? 0\n if (!this.editPlayer.gradeIsOverridden) {\n this.editPlayer.typeGradeID = typeGradeID?.upwardTypeID ?? ''\n }\n //console.log(typeGradeID, this.calculatedAge, this.editPlayer.typeGradeID)\n }\n //console.log('birthDateChanged - updating editPlayer and firing', this.internalBirthDate)\n this.editPlayer.birthDate = this.internalBirthDate\n this.fireOnChange()\n }\n\n @Watch('editPlayer.birthDate')\n sourceBirthDateChanged() {\n if (\n !dayjs(this.internalBirthDate ?? undefined).isSame(dayjs(this.editPlayer.birthDate ?? undefined), 'day')\n ) {\n //prevent infinite loops on birthdate changes\n this.internalBirthDate = this.editPlayer.birthDate\n } else {\n //if this was called directly then this was a change of value\n //see if it was a clearing of the grade (ex: when Add Existing is used) and if so, call the birthDateCahnged to recalc the grade\n if (this.recalcGrade) {\n this.birthDateChanged()\n }\n }\n }\n\n @Watch('editPlayer.gradeIsOverridden')\n gradeIsOverriddenChanged() {\n //console.log('gradeIsOverriddenChanged')\n if (this.isByAge && !this.editPlayer.gradeIsOverridden) {\n this.birthDateChanged()\n }\n }\n}\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParticipantBasics.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParticipantBasics.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ParticipantBasics.vue?vue&type=template&id=15f2df70&\"\nimport script from \"./ParticipantBasics.vue?vue&type=script&lang=ts&\"\nexport * from \"./ParticipantBasics.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.loading && _vm.value)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12\"},[_c('number-input',{staticClass:\"mb-0 w-25\",attrs:{\"name\":\"years\",\"label\":\"Years Experience\",\"min\":0,\"max\":12},model:{value:(_vm.value.yearsExperience),callback:function ($$v) {_vm.$set(_vm.value, \"yearsExperience\", $$v)},expression:\"value.yearsExperience\"}})],1)]),(_vm.canCoachLink || _vm.canCarpoolLink)?[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-12\"},[_c('hr'),_c('h5',[(_vm.canCoachLink)?_c('span',[_vm._v(\"Coach\")]):_vm._e(),(_vm.canCoachLink && _vm.canCarpoolLink)?_c('span',[_vm._v(\" and \")]):_vm._e(),(_vm.canCarpoolLink)?_c('span',[_vm._v(\"Carpool\")]):_vm._e()])])]),_c('div',{staticClass:\"row\"},[(_vm.canCoachLink)?_c('div',{staticClass:\"col-sm-6\"},[_c('coach-select',{attrs:{\"league\":_vm.upwId,\"typeProgramID\":_vm.value.typeProgramID},on:{\"input\":_vm.coachLinkChanged},model:{value:(_vm.coach),callback:function ($$v) {_vm.coach=$$v},expression:\"coach\"}})],1):_vm._e(),(_vm.canCarpoolLink)?_c('div',{staticClass:\"col-sm-6\"},[(_vm.canCarpoolLink)?_c('carpool-select',{staticClass:\"pb-0 mb-0\",attrs:{\"player-i-d\":_vm.individualID,\"participants\":_vm.carpoolLinkParticipants,\"league\":_vm.upwId},model:{value:(_vm.value.carpoolLink),callback:function ($$v) {_vm.$set(_vm.value, \"carpoolLink\", $$v)},expression:\"value.carpoolLink\"}}):_vm._e()],1):_vm._e()])]:_vm._e(),(_vm.showingProducts)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('hr'),_c('h5',[_vm._v(\"Products\")]),_c('size-selector-panel',{attrs:{\"gender\":_vm.gender,\"item-list\":_vm.productItems},on:{\"input\":_vm.productsChanged},model:{value:(_vm.editProducts),callback:function ($$v) {_vm.editProducts=$$v},expression:\"editProducts\"}})],1)]):_vm._e(),_c('div',{staticClass:\"row\"}),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('hr'),_c('payments-display',{attrs:{\"payment-types\":_vm.paymentTypes},model:{value:(_vm.value.payments),callback:function ($$v) {_vm.$set(_vm.value, \"payments\", $$v)},expression:\"value.payments\"}})],1)]),(_vm.value.evaluations && _vm.value.evaluations.length)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('hr'),_c('evaluation-display',{model:{value:(_vm.value.evaluations),callback:function ($$v) {_vm.$set(_vm.value, \"evaluations\", $$v)},expression:\"value.evaluations\"}})],1)]):_vm._e()],2):_c('div',[_c('loading')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h5',{staticClass:\"mb-3\"},[_vm._v(\" Payments \"),_c('i',{staticClass:\"fas fa-plus text-primary clickable\",on:{\"click\":_vm.addPayment}})]),(_vm.paymentMap.length)?_c('simple-grid',{attrs:{\"table-striped\":true,\"grid-columns\":_vm.columns,\"grid-data\":_vm.paymentMap}}):_c('p',{staticClass:\"text-muted\"},[_vm._v(\"There are currently no payments\")]),_c('payment-add-modal',{attrs:{\"payment-types\":_vm.paymentTypes,\"payment\":_vm.editPayment},on:{\"payment-updated\":_vm.addNewPayment},model:{value:(_vm.showAddPayment),callback:function ($$v) {_vm.showAddPayment=$$v},expression:\"showAddPayment\"}}),_c('confirm-delete-modal',{attrs:{\"has-confirm-box\":false},on:{\"onDeleteConfirmed\":_vm.deleteConfirmed},model:{value:(_vm.deleteConfirmShowing),callback:function ($$v) {_vm.deleteConfirmShowing=$$v},expression:\"deleteConfirmShowing\"}},[_vm._v(\" Are you sure you want to delete this payment? \")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { GridColumn, GridColumnAlignEnum } from '@/models/Grid/GridColumn'\nimport dayjs from 'dayjs'\nimport Vue from 'vue'\n\n//\nconst DateTemplate = () => ({\n template: Vue.component('DateTemplate', {\n props: { data: {} },\n methods: {\n formatteddate() {\n //@ts-ignore -- templates don't have types.\n return dayjs(this.data?.date).format('MM/DD/YY')\n },\n },\n template: '
{{this.formatteddate()}}
',\n }),\n})\n\nconst AmountTemplate = () => ({\n template: Vue.component('AmountTemplate', {\n props: { data: {} },\n\n template: '
${{data.amount.toFixed(2)}}
',\n }),\n})\nfunction deleteTemplate(\n editEvent: (p: Record) => void,\n deleteEvent: (p: Record) => void\n) {\n return () => ({\n template: Vue.component('deleteTemplate', {\n props: { data: {} },\n methods: {\n localDelete() {\n //@ts-ignore - magical method in a vue template\n deleteEvent(this.data)\n },\n localEdit() {\n //@ts-ignore - magical method in a vue template\n editEvent(this.data)\n },\n },\n template:\n '
 
',\n }),\n })\n}\n\nexport function getPaymentColumns(editEvent: (p: any) => void, deleteEvent: (p: any) => void): GridColumn[] {\n return [\n {\n field: 'date',\n headerText: 'Date',\n textAlign: '',\n width: 60,\n format: '',\n template: DateTemplate,\n } as GridColumn,\n {\n field: 'type',\n headerText: 'Type',\n textAlign: '',\n width: 60,\n } as GridColumn,\n {\n field: 'amount',\n headerText: 'Amount',\n textAlign: GridColumnAlignEnum.LEFT,\n template: AmountTemplate,\n width: 60,\n } as GridColumn,\n {\n field: 'note',\n headerText: 'Note',\n textAlign: GridColumnAlignEnum.LEFT,\n } as GridColumn,\n {\n field: '',\n headerText: '',\n textAlign: GridColumnAlignEnum.RIGHT,\n width: 0,\n template: deleteTemplate(editEvent, deleteEvent),\n } as GridColumn,\n ]\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('vee-validate-form',{ref:\"form\",scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar valid = ref.valid;\nvar validated = ref.validated;\nreturn [_c('modal',{staticClass:\"payment_modal\",attrs:{\"is-small\":true,\"title\":\"Add Payment\"},model:{value:(_vm.isModalOpen),callback:function ($$v) {_vm.isModalOpen=$$v},expression:\"isModalOpen\"}},[_c('div',{staticClass:\"row\"},[_c('date-input',{staticClass:\"col-sm-6 m-0\",attrs:{\"label\":\"DATE\"},model:{value:(_vm.date),callback:function ($$v) {_vm.date=$$v},expression:\"date\"}})],1),_c('div',{staticClass:\"row mt-2\"},[_c('select-input',{staticClass:\"col-sm-6 pb-0\",attrs:{\"VeeValidateRules\":\"required\",\"required\":true,\"items-list\":_vm.paymentTypes,\"valuePropertyName\":\"upwardTypeID\",\"textPropertyName\":\"description\",\"label\":\"PAYMENT TYPE\"},model:{value:(_vm.type),callback:function ($$v) {_vm.type=$$v},expression:\"type\"}}),_c('currency-input',{staticClass:\"col-sm-6 m-0\",attrs:{\"label\":\"AMOUNT\",\"VeeValidateRules\":\"required|non_zero_required\"},model:{value:(_vm.amount),callback:function ($$v) {_vm.amount=$$v},expression:\"amount\"}}),_c('memo-input',{staticClass:\"col-12 m-0\",attrs:{\"name\":\"note\",\"label\":\"NOTE\",\"maxLength\":64},model:{value:(_vm.note),callback:function ($$v) {_vm.note=$$v},expression:\"note\"}})],1),_c('template',{slot:\"footer\"},[_c('div',{staticClass:\"text-right\"},[_c('button',{staticClass:\"btn btn-light mr-2\",on:{\"click\":_vm.cancel}},[_vm._v(\"Cancel\")]),_c('button',{staticClass:\"btn btn-success\",attrs:{\"disabled\":!valid},on:{\"click\":_vm.confirmed}},[_c('i',{staticClass:\"fa fa-check\"}),_vm._v(\" Confirm \")])])])],2)]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { PlayerPayment } from '@/GeneratedTypes/PlayerPayment'\nimport { PlayerPaymentBreakout } from '@/GeneratedTypes/PlayerPaymentBreakout'\n\nexport function getEmptyPlayerPayment(seed?: PlayerPaymentSeed): PlayerPayment {\n return {\n paymentInfo: '',\n breakout: [getEmptyBreakout()],\n typePaymentMethodID: '',\n paymentDate: new Date(),\n paymentID: seed?.paymentID ?? 0,\n }\n}\n\nexport class PlayerPaymentSeed {\n paymentID = 0\n}\n\nlet seedID = -1\n\n/**\n * Create a strategy where payment IDs are unique and negative for\n * use as uncommitted seeds.\n */\n\nexport function decrementingPaymentSeed(): PlayerPaymentSeed {\n const c = new PlayerPaymentSeed()\n c.paymentID = seedID\n seedID--\n return c\n}\n\nfunction getEmptyBreakout(): PlayerPaymentBreakout {\n return {\n amount: 0,\n breakoutID: 0,\n note: '',\n }\n}\n","import { PlayerPayment } from '@/GeneratedTypes/PlayerPayment'\nimport { cloneDeep } from 'lodash'\n\nexport function paymentSum(payment: PlayerPayment) {\n let sum = 0\n payment?.breakout?.forEach((x) => {\n sum += x.amount\n })\n return sum\n}\n\nexport function paymentNote(payment: PlayerPayment) {\n return payment?.breakout?.[0].note || payment.paymentInfo || ''\n}\n\nexport function composePayment(\n payment: PlayerPayment,\n amount: number,\n note: string,\n method: string,\n date: Date\n): PlayerPayment {\n return cloneDeep({\n ...payment,\n paymentDate: date,\n typePaymentMethodID: method,\n breakout: [\n {\n note: note,\n breakoutID: 0,\n amount: amount,\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\n\n\n\n\n\n\n\nimport { defineComponent, ref, watch, computed, PropType } from '@vue/composition-api'\nimport { getProps, useModalValue } from '@/composables/ModalValue'\nimport { cloneDeep } from 'lodash'\nimport Modal from './Modal.vue'\nimport SimpleGrid from '@/elements/SimpleGrid.vue'\nimport SelectInput from '@/elements/SelectInput.vue'\n\nimport TextInput from '@/elements/TextInput.vue'\n\nimport VeeValidateForm from '@/elements/VeeValidateForm.vue'\nimport DateInput from '@/elements/DateInput.vue'\nimport { PlayerPayment } from '@/GeneratedTypes/PlayerPayment'\nimport MemoInput from '@/elements/MemoInput.vue'\nimport { decrementingPaymentSeed, getEmptyPlayerPayment } from '@/lib/support/models/PlayerPayment/data'\n\nimport CurrencyInput from '@/elements/CurrencyInput.vue'\nimport { composePayment, paymentNote, paymentSum } from '@/lib/support/models/PlayerPayment/builder'\nimport { UpwardPaymentMethodTypeID } from '@/GeneratedTypes/UpwardTypes/UpwardPaymentMethodTypeID'\n\nexport default defineComponent({\n name: 'PaymentAddModal',\n components: {\n CurrencyInput,\n MemoInput,\n DateInput,\n VeeValidateForm,\n SelectInput,\n TextInput,\n Modal,\n SimpleGrid,\n },\n props: {\n payment: {\n type: Object as PropType,\n default: () => getEmptyPlayerPayment(decrementingPaymentSeed()),\n },\n paymentTypes: { type: Array as PropType, default: () => [], required: true },\n ...getProps(),\n },\n setup(props, ctx) {\n const { isModalOpen, closeModal } = useModalValue(props, ctx)\n\n const internalPayment = ref(getEmptyPlayerPayment(decrementingPaymentSeed()))\n const note = ref('')\n const amount = ref(0)\n const type = ref('')\n const date = ref(new Date())\n\n watch(\n () => props.payment,\n () => {\n decomposePayment()\n },\n { deep: true, immediate: true }\n )\n\n const paymentRecord = computed(\n (): PlayerPayment =>\n composePayment(internalPayment.value, amount.value, note.value, type.value, date.value)\n )\n\n function decomposePayment() {\n internalPayment.value = cloneDeep(props.payment)\n amount.value = paymentSum(internalPayment.value)\n note.value = paymentNote(internalPayment.value)\n date.value = internalPayment.value.paymentDate ?? new Date()\n type.value = internalPayment.value.typePaymentMethodID\n }\n\n function paymentUpdated() {\n ctx.emit('payment-updated', paymentRecord.value)\n }\n\n function resetForm() {\n internalPayment.value = getEmptyPlayerPayment(decrementingPaymentSeed())\n decomposePayment()\n }\n\n function cancel() {\n resetForm()\n closeModal()\n }\n\n function confirmed() {\n const formRef = ctx.refs.form as HTMLFormElement\n if (formRef.reportValidity()) {\n paymentUpdated()\n closeModal()\n resetForm()\n }\n }\n\n return {\n isModalOpen,\n date,\n type,\n amount,\n note,\n cancel,\n confirmed,\n }\n },\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaymentAddModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaymentAddModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentAddModal.vue?vue&type=template&id=c76cdcae&\"\nimport script from \"./PaymentAddModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./PaymentAddModal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PaymentAddModal.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\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\nimport { defineComponent, computed, ref, watch, onMounted, PropType } from '@vue/composition-api'\nimport { cloneDeep } from 'lodash'\n\nimport { getPaymentColumns } from '@/views/Programs/Participants/vues/ext/paymentgridcolumns'\nimport SimpleGrid from '@/elements/SimpleGrid.vue'\nimport PaymentAddModal from '@/components/PaymentAddModal.vue'\nimport { PlayerPayment } from '@/GeneratedTypes/PlayerPayment'\nimport { paymentNote, paymentSum } from '@/lib/support/models/PlayerPayment/builder'\nimport { GridColumn } from '@/models/Grid/GridColumn'\nimport ConfirmDeleteModal from '@/components/ConfirmDeleteModal.vue'\nimport { UpwardPaymentMethodTypeID } from '@/GeneratedTypes/UpwardTypes/UpwardPaymentMethodTypeID'\nimport { decrementingPaymentSeed, getEmptyPlayerPayment } from '@/lib/support/models/PlayerPayment/data'\n\nexport default defineComponent({\n name: 'PaymentsDisplay',\n components: {\n PaymentAddModal,\n ConfirmDeleteModal,\n SimpleGrid,\n },\n props: {\n value: { type: Array as PropType, required: true, default: () => [] },\n paymentTypes: { type: Array as PropType, required: true, default: () => [] },\n },\n setup(props, ctx) {\n const showAddPayment = ref(false)\n const editPayment = ref(getEmptyPlayerPayment(decrementingPaymentSeed()))\n\n const internalPayments = ref(props.value)\n\n const deleteConfirmShowing = ref(false)\n const deleteID = ref(0)\n\n watch(\n () => props.value,\n () => {\n internalPayments.value = cloneDeep(props.value)\n }\n )\n\n /**\n * Called by the modal on confirm, deleteID set by delete()\n */\n function deleteConfirmed() {\n internalPayments.value = internalPayments.value.filter((x) => x.paymentID != deleteID.value)\n input()\n }\n\n function edit(d: PlayerPayment) {\n editPayment.value = cloneDeep(\n internalPayments.value.find((x) => x.paymentID == d.paymentID) ??\n getEmptyPlayerPayment(decrementingPaymentSeed())\n )\n showAddPayment.value = true\n }\n\n function deletePayment(d: PlayerPayment) {\n deleteID.value = d.paymentID\n deleteConfirmShowing.value = true\n }\n const columns = ref(null)\n\n onMounted(() => {\n columns.value = getPaymentColumns(edit, deletePayment)\n })\n\n function input() {\n ctx.emit('input', internalPayments.value)\n }\n\n const paymentMap = computed(() =>\n internalPayments.value.map((x) => ({\n date: x.paymentDate,\n type: x.typePaymentMethodID,\n amount: paymentSum(x),\n note: paymentNote(x),\n paymentID: x.paymentID,\n }))\n )\n\n function addNewPayment(payment: PlayerPayment) {\n const paymentIndex = internalPayments.value.findIndex((x) => x.paymentID == payment.paymentID)\n if (paymentIndex >= 0) {\n internalPayments.value.splice(paymentIndex, 1, payment)\n } else {\n internalPayments.value.push(payment)\n }\n input()\n }\n\n function addPayment() {\n editPayment.value = getEmptyPlayerPayment(decrementingPaymentSeed())\n showAddPayment.value = true\n }\n\n return {\n paymentMap,\n columns,\n editPayment,\n showAddPayment,\n deleteConfirmShowing,\n addPayment,\n addNewPayment,\n deleteConfirmed,\n }\n },\n})\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaymentsDisplay.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaymentsDisplay.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentsDisplay.vue?vue&type=template&id=35cfe2ed&scoped=true&\"\nimport script from \"./PaymentsDisplay.vue?vue&type=script&lang=ts&\"\nexport * from \"./PaymentsDisplay.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35cfe2ed\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h5',{staticClass:\"mb-3\"},[_vm._v(\" Evaluation \"),_c('i',{staticClass:\"fas fa-pencil-alt text-primary clickable\",on:{\"click\":_vm.openModal}})]),_c('simple-grid',{attrs:{\"table-striped\":true,\"grid-columns\":_vm.columns,\"data\":_vm.internalEvaluationData}}),_c('player-evaluation-edit-modal',{attrs:{\"evaluation\":_vm.internalEvaluationData},on:{\"evaluationUpdated\":_vm.updateEvaluation},model:{value:(_vm.editOpen),callback:function ($$v) {_vm.editOpen=$$v},expression:\"editOpen\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { GridColumn, GridColumnAlignEnum } from '@/models/Grid/GridColumn'\n\nexport const EvaluationGridColumns: GridColumn[] = [\n {\n field: 'activityText',\n headerText: 'Activity',\n textAlign: '',\n width: 200,\n format: '',\n } as GridColumn,\n {\n field: 'activityValue',\n headerText: 'Score',\n textAlign: GridColumnAlignEnum.RIGHT,\n width: 0,\n // template: ScoreTemplate,\n } as GridColumn,\n]\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{staticClass:\"player_evaluation_modal\",attrs:{\"is-small\":true,\"title\":\"Player Evaluation\"},model:{value:(_vm.isModalOpen),callback:function ($$v) {_vm.isModalOpen=$$v},expression:\"isModalOpen\"}},[_vm._t(\"default\",[_c('form',{ref:\"form\"},[_c('player-evaluation-edit-grid',{model:{value:(_vm.internalEvaluation),callback:function ($$v) {_vm.internalEvaluation=$$v},expression:\"internalEvaluation\"}})],1)]),_vm._t(\"footer\",[_c('div',{staticClass:\"text-right mt-2 pr-2\"},[_c('button',{staticClass:\"m-1 btn btn-light\",on:{\"click\":_vm.cancel}},[_vm._v(\"Cancel\")]),_c('button',{staticClass:\"m-1 btn btn-success\",on:{\"click\":_vm.confirmed}},[_c('i',{staticClass:\"fa fa-check\"}),_vm._v(\" Confirm\")])])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, ref, watch, onMounted, PropType } from '@vue/composition-api'\nimport { getProps, useModalValue } from '@/composables/ModalValue'\n\nimport Modal from './Modal.vue'\nimport SimpleGrid from '@/elements/SimpleGrid.vue'\nimport PlayerEvaluationEditGrid from '@/components/PlayerEvaluationEditGrid.vue'\n\nimport { PlayerEvaluation } from '@/GeneratedTypes/PlayerEvaluation'\n\nexport default defineComponent({\n name: 'PlayerEvaluationEditModal',\n components: {\n Modal,\n SimpleGrid,\n PlayerEvaluationEditGrid,\n },\n props: {\n evaluation: { type: Array as PropType, default: [] },\n ...getProps(),\n },\n setup(props, ctx) {\n const { isModalOpen, closeModal } = useModalValue(props, ctx)\n const internalEvaluation = ref([])\n\n function setInternalEvaluation() {\n if (props.evaluation) {\n // create an immutable representation so we don't have bugs backtracking\n internalEvaluation.value = props.evaluation.map((x) => ({ ...x }))\n }\n }\n\n watch(\n () => props.evaluation,\n () => {\n setInternalEvaluation()\n }\n )\n\n onMounted(() => {\n setInternalEvaluation()\n })\n\n function cancel() {\n closeModal()\n }\n\n function confirmed() {\n const formRef = ctx.refs.form as HTMLFormElement\n if (formRef.reportValidity()) {\n ctx.emit('evaluationUpdated', internalEvaluation.value)\n closeModal()\n }\n }\n\n return {\n isModalOpen,\n internalEvaluation,\n cancel,\n confirmed,\n }\n },\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlayerEvaluationEditModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlayerEvaluationEditModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PlayerEvaluationEditModal.vue?vue&type=template&id=2d4f7a03&\"\nimport script from \"./PlayerEvaluationEditModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./PlayerEvaluationEditModal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PlayerEvaluationEditModal.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { defineComponent, ref, watch, PropType } from '@vue/composition-api'\n\nimport { EvaluationGridColumns } from '@/views/Programs/Participants/vues/ext/EvaluationGridColumns'\nimport SimpleGrid from '@/elements/SimpleGrid.vue'\nimport { PlayerEvaluation } from '@/GeneratedTypes/PlayerEvaluation'\nimport PlayerEvaluationEditModal from '@/components/PlayerEvaluationEditModal.vue'\nimport { cloneDeep } from 'lodash'\n\nexport default defineComponent({\n name: 'EvaluationDisplay',\n components: {\n PlayerEvaluationEditModal,\n SimpleGrid,\n },\n props: {\n value: { type: Array as PropType, default: [] },\n },\n setup(props, ctx) {\n const columns = ref(EvaluationGridColumns)\n const internalEvaluationData = ref([])\n\n const editOpen = ref(false)\n\n function setInternalEvalData() {\n if (!props.value) {\n internalEvaluationData.value = []\n } else {\n internalEvaluationData.value = cloneDeep([...props.value].sort((a, b) => a.sortOrder - b.sortOrder))\n }\n }\n\n watch(\n () => props.value,\n () => {\n setInternalEvalData()\n },\n { immediate: true }\n )\n\n function openModal() {\n editOpen.value = true\n }\n\n function updateEvaluation(evaluation: PlayerEvaluation[]) {\n internalEvaluationData.value = cloneDeep([...evaluation])\n ctx.emit('input', internalEvaluationData.value)\n }\n\n return {\n columns,\n internalEvaluationData,\n editOpen,\n openModal,\n updateEvaluation,\n }\n },\n})\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EvaluationDisplay.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EvaluationDisplay.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EvaluationDisplay.vue?vue&type=template&id=ffa9b4b2&scoped=true&\"\nimport script from \"./EvaluationDisplay.vue?vue&type=script&lang=ts&\"\nexport * from \"./EvaluationDisplay.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ffa9b4b2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('text-input',{attrs:{\"label\":\"COACH\",\"append-icon\":\"edit\",\"enabled\":false,\"value\":((_vm.value.firstName) + \" \" + (_vm.value.lastName))},on:{\"icon-click\":_vm.coachSelect}}),_c('volunteer-selection-modal',{attrs:{\"roles\":[_vm.coachRole],\"league\":_vm.league,\"search\":_vm.coachSearchTerm,\"selected-record\":_vm.initialRecord,\"selectedID\":_vm.value.pendingLinkID || _vm.value.linkID,\"typeProgramID\":_vm.typeProgramID},on:{\"select\":_vm.coachSelected},model:{value:(_vm.coachSelectionOpen),callback:function ($$v) {_vm.coachSelectionOpen=$$v},expression:\"coachSelectionOpen\"}}),(!_vm.shouldShowWarning)?_c('button',{staticClass:\"btn btn-link float-right\",on:{\"click\":_vm.clear}},[_c('i',[_vm._v(\"clear\")])]):_c('div',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\" Requested, not linked \"),_c('div',{staticClass:\"btn btn-link p-0 m-0 float-right\",on:{\"click\":_vm.clear}},[_c('i',[_vm._v(\"clear\")])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { PlayerProgram } from '@/GeneratedTypes/PlayerProgram'\n\nexport interface CoachSelect {\n firstName: string\n lastName: string\n pendingLinkID: number\n linkID: number\n}\n\nexport function EmptyCoachSelect(): CoachSelect {\n return {\n firstName: '',\n lastName: '',\n linkID: 0,\n pendingLinkID: 0,\n }\n}\n\nexport function CoachFromPlayerProgram(pp: PlayerProgram): CoachSelect {\n return {\n firstName: pp.pendingCoachLinkFirstName ?? '',\n lastName: pp.pendingCoachLinkLastName ?? '',\n pendingLinkID: pp.pendingCoachLinkIndividualID,\n linkID: pp.coachLinkIndividualID,\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\nimport { defineComponent, computed, ref, watch, PropType } from '@vue/composition-api'\nimport TextInput from '../../../../elements/TextInput.vue'\nimport { RolesEnum } from '@/lib/support/models/LeagueVolunteer/data'\nimport VolunteerSelectionModal from '@/components/VolunteerSelectionModal.vue'\nimport { CoachSelect, EmptyCoachSelect } from '@/models/ParticipantUI/CoachSelect'\nimport { VolunteerSearchInfo } from '@/GeneratedTypes/ListInfo/VolunteerSearchInfo'\nimport { cloneDeep } from 'lodash'\n\nexport default defineComponent({\n name: 'CoachSelect',\n components: {\n TextInput,\n VolunteerSelectionModal,\n },\n props: {\n value: { type: Object as PropType, default: () => EmptyCoachSelect() },\n league: { type: String, required: true, default: '' },\n typeProgramID: { type: String, required: false, default: 'NONE' },\n },\n setup(props, ctx) {\n const internalValue = ref(EmptyCoachSelect())\n const coachRole = ref(RolesEnum.COACH)\n const coachSelectionOpen = ref(false)\n const coachSearchTerm = ref('')\n\n /**\n * Coach has been selected by the select process.\n * @param coach\n */\n function coachSelected(coach: VolunteerSearchInfo) {\n volunteerFindToValueField(coach)\n input()\n }\n\n const initialRecord = computed(\n (): VolunteerSearchInfo => {\n const r = {\n firstName: '',\n lastName: '',\n individualID: 0,\n gender: '',\n birthDate: new Date(),\n firstAddress: '',\n firstEmailAddress: '',\n individualCreateDate: new Date(),\n leagueID: 0,\n leagueName: '',\n middleInitial: '',\n accountNumber: '',\n teams: [],\n upwardLeagueID: props.league,\n }\n\n if (internalValue.value.linkID) {\n r.firstName = internalValue.value.firstName\n r.lastName = internalValue.value.lastName\n r.individualID = internalValue.value.linkID\n }\n\n return r\n }\n )\n\n /**\n * Convert the selected coach to a coach selection.\n * @param coach\n */\n function volunteerFindToValueField(coach: VolunteerSearchInfo | null) {\n if (coach) {\n internalValue.value.linkID = coach.individualID\n internalValue.value.pendingLinkID = 0\n internalValue.value.firstName = coach.firstName ?? ''\n internalValue.value.lastName = coach.lastName ?? 'n/a'\n } else {\n internalValue.value = EmptyCoachSelect()\n }\n }\n\n function clear() {\n internalValue.value = EmptyCoachSelect()\n coachSelectionOpen.value = false\n input()\n }\n\n function input() {\n ctx.emit('input', internalValue.value)\n }\n\n /**\n * Open the coach selection dialog.\n */\n function coachSelect() {\n coachSearchTerm.value = internalValue.value.lastName\n\n coachSelectionOpen.value = true\n }\n\n function setInternalValue() {\n if (!props.value) {\n internalValue.value = EmptyCoachSelect()\n } else {\n internalValue.value = cloneDeep(props.value)\n }\n }\n\n watch(\n () => props.value,\n () => {\n setInternalValue()\n },\n { immediate: true, deep: true }\n )\n\n const shouldShowWarning = computed(() => isCoachLinkedPending.value)\n\n const isCoachLinkedPending = computed(() => {\n return (\n internalValue.value.linkID == 0 &&\n `${internalValue.value.firstName}${internalValue.value.lastName}`.length != 0\n )\n })\n\n return {\n coachRole,\n coachSearchTerm,\n initialRecord,\n coachSelectionOpen,\n shouldShowWarning,\n coachSelect,\n coachSelected,\n clear,\n }\n },\n})\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CoachSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CoachSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CoachSelect.vue?vue&type=template&id=a4f12f2a&scoped=true&\"\nimport script from \"./CoachSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./CoachSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a4f12f2a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('text-input',{attrs:{\"label\":\"Carpool\",\"append-icon\":\"edit\",\"enabled\":false,\"value\":_vm.selectedName},on:{\"icon-click\":_vm.carpoolSelect}}),_c('carpool-selection-modal',{attrs:{\"participants\":_vm.participants,\"link-id\":this.internalValue.pendingIndividualID,\"selected\":_vm.notMeLinkID,\"initial-search\":_vm.initialSearch,\"league\":_vm.league},on:{\"select\":_vm.carpoolSelected,\"pending\":_vm.pending},model:{value:(_vm.carpoolSelectionOpen),callback:function ($$v) {_vm.carpoolSelectionOpen=$$v},expression:\"carpoolSelectionOpen\"}}),(!_vm.shouldShowWarning)?_c('button',{staticClass:\"btn btn-link float-right\",on:{\"click\":_vm.clear}},[_c('i',[_vm._v(\"clear\")])]):_c('div',{staticClass:\"alert alert-warning\",attrs:{\"role\":\"alert\"}},[_vm._v(\" Requested, not linked \"),_c('div',{staticClass:\"btn btn-link p-0 m-0 float-right\",on:{\"click\":_vm.clear}},[_c('i',[_vm._v(\"clear\")])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('search-modal',{attrs:{\"title\":\"Carpool\",\"data\":_vm.selectionData,\"item-key\":\"individualID\",\"headers\":_vm.headers,\"loading\":_vm.searchActive,\"searchTerm\":_vm.initialSearch},on:{\"updateSearch\":_vm.updateSearch,\"onSelected\":_vm.searchSelected,\"passiveSelected\":_vm.messageCheck},scopedSlots:_vm._u([{key:\"button-row\",fn:function(){return [(_vm.showWarning)?_c('button',{staticClass:\"btn btn-light\",on:{\"click\":_vm.pending}},[_vm._v(\"Request\")]):_vm._e()]},proxy:true}]),model:{value:(_vm.isModalOpen),callback:function ($$v) {_vm.isModalOpen=$$v},expression:\"isModalOpen\"}},[_c('div',{staticClass:\"text-small font-italic text-center\"},[_vm._v(\" Type a couple letters in the name of the carpool participant you are trying to find. \")]),(_vm.selectedRow && _vm.showWarning)?_c('div',{staticClass:\"p-3 m-4 border alert-warning\"},[_c('p',[_vm._v(\" This would connect \"),_c('b',[_vm._v(_vm._s(_vm.currentParticipant.firstName)+\" \"+_vm._s(_vm.currentParticipant.lastName))]),_vm._v(\" to \"),_c('b',[_vm._v(_vm._s(_vm.selectedRow.first)+\" \"+_vm._s(_vm.selectedRow.last))]),_vm._v(\", and \"+_vm._s(_vm.selectedRow.first)+\" is already connected to \"+_vm._s(_vm.selectedRow.connectedFistName)+\" \"+_vm._s(_vm.selectedRow.connectedLastName)+\". \")]),_c('p',[_vm._v(\" Click \"),_c('b',[_vm._v(\"Select\")]),_vm._v(\" to make \"+_vm._s(_vm.selectedRow.first)+\" the \"),_c('u',[_vm._v(\"primary\")]),_vm._v(\" link for \"+_vm._s(_vm.currentParticipant.firstName)+\". This will guarantee they are drafted to the same team. \")]),_c('p',[_vm._v(\" Click \"),_c('b',[_vm._v(\"Request\")]),_vm._v(\" to make \"+_vm._s(_vm.selectedRow.first)+\" the \"),_c('u',[_vm._v(\"requested\")]),_vm._v(\" link for \"+_vm._s(_vm.currentParticipant.firstName)+\" . They may not end up on the same team, but the broken link will show up in the Carpool Requests Not Linked report. \")])]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { DataTableHeader } from 'vuetify/types'\n\nexport const headers = [\n { text: 'Name', value: 'name' },\n { text: 'Gender', value: 'gender' },\n { text: 'Existing Link', value: 'prettyConnectedTo' },\n] as DataTableHeader[]\n\nexport interface CarpoolInfo {\n name: string\n first: string\n last: string\n gender: string\n individualID: number\n selected: boolean\n connectedTo: string\n grade: string\n prettyConnectedTo: string\n connectedFistName: string\n connectedLastName: string\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\n\n\n\n\n\n\n\nimport { defineComponent, ref, watch, computed, onMounted, PropType } from '@vue/composition-api'\nimport { getProps, useModalValue } from '@/composables/ModalValue'\n\nimport SearchModal from '@/elements/SearchModal.vue'\nimport { CarpoolInfo, headers } from '@/lib/components/CarpoolSelectionModal/CarpoolGridColumns'\nimport { LeaguePlayerInfo } from '@/GeneratedTypes/ListInfo/LeaguePlayerInfo'\nimport store from '@/store'\n\nexport default defineComponent({\n name: 'CarpoolSelectionModal',\n components: {\n SearchModal,\n },\n props: {\n participants: { type: Array as PropType, required: true, default: () => [] },\n selected: { required: true, type: Number, default: 0 },\n linkID: { type: Number, required: false, default: 0 },\n initialSearch: { type: String, required: false, default: '' },\n ...getProps(),\n },\n setup(props, ctx) {\n const { isModalOpen } = useModalValue(props, ctx)\n const currentParticipant = computed(() => store.getters.participants.participantUnderEdit)\n\n const showWarning = ref(false)\n const selectedRow = ref(null)\n\n const search = ref('')\n\n function searchSelected(p: LeaguePlayerInfo) {\n ctx.emit('select', p.individualID)\n }\n\n const selectionData = computed((): CarpoolInfo[] => {\n const searchTerms = search.value.split(' ')\n return searchData.value.filter(\n (x) =>\n (search.value && stringIncludes(x.name ?? '', searchTerms)) ||\n props.linkID == x.individualID ||\n props.selected == x.individualID\n )\n })\n\n function stringIncludes(stringToSearch: string, searchTerms: string[]): boolean {\n stringToSearch = stringToSearch.toLowerCase()\n for (let i = 0; i < searchTerms.length; i++) {\n if (!stringToSearch.includes(searchTerms[i].toLowerCase())) {\n return false\n }\n }\n return true\n }\n\n function pending() {\n ctx.emit('pending', selectedRow.value)\n }\n\n watch(\n () => isModalOpen.value,\n () => {\n showWarning.value = false\n }\n )\n\n function messageCheck(a: CarpoolInfo | null) {\n selectedRow.value = a\n const hasConnecion = `${a?.connectedFistName}${a?.connectedLastName}`.length > 0\n showWarning.value = hasConnecion && !a?.selected\n }\n\n const searchData = computed(() => {\n if (!props.participants || !currentParticipant.value) return []\n const data = props.participants.filter((p) => {\n // remove player under edit and filter on program\n const isParticipantUnderEdit = p.individualID == currentParticipant.value.individualID\n return !isParticipantUnderEdit\n })\n\n return data.map((x) => {\n return {\n name: `${x.lastName}, ${x.firstName}`,\n first: x.firstName,\n last: x.lastName,\n gender: x.gender ?? '',\n individualID: x.individualID,\n selected: x.individualID == props.selected,\n connectedFistName: x.actualCarpoolLinkFirstName,\n connectedLastName: x.actualCarpoolLinkLastName,\n prettyConnectedTo: `${x.actualCarpoolLinkFirstName} ${x.actualCarpoolLinkLastName}`,\n grade: x.typeGradeID,\n } as CarpoolInfo\n })\n })\n\n const searchActive = ref(false) //not showing initially\n\n /***\n * Callback on the SearchModal\n * @param s\n */\n function updateSearch(s: string) {\n if (!searchActive.value) {\n searchActive.value = !!s\n search.value = s\n searchActive.value = false\n }\n }\n\n onMounted(() => {\n search.value = props.initialSearch\n })\n\n return {\n isModalOpen,\n selectionData,\n headers,\n searchActive,\n updateSearch,\n searchSelected,\n messageCheck,\n selectedRow,\n showWarning,\n currentParticipant,\n pending,\n }\n },\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CarpoolSelectionModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CarpoolSelectionModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CarpoolSelectionModal.vue?vue&type=template&id=33fa9cfe&\"\nimport script from \"./CarpoolSelectionModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./CarpoolSelectionModal.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { PlayerCarpoolLink } from '@/GeneratedTypes/PlayerCarpoolLink'\n\nexport function getEmptyCarpoolLink(): PlayerCarpoolLink {\n return {\n id: 0,\n pendingFirstName: '',\n pendingIndividualID: 0,\n pendingLastName: '',\n player1IndividualID: 0,\n player2IndividualID: 0,\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Emit, Prop, Vue, Watch } from 'vue-property-decorator'\nimport TextInput from '../../../../elements/TextInput.vue'\nimport { cloneDeep } from 'lodash'\nimport { PlayerCarpoolLink } from '@/GeneratedTypes/PlayerCarpoolLink'\nimport { LeaguePlayerInfo } from '@/GeneratedTypes/ListInfo/LeaguePlayerInfo'\nimport CarpoolSelectionModal from '@/components/CarpoolSelectionModal.vue'\nimport { getEmptyCarpoolLink } from '@/lib/support/models/PlayerCarpoolLink/data'\nimport { CarpoolInfo } from '@/lib/components/CarpoolSelectionModal/CarpoolGridColumns'\n\n@Component({\n components: {\n TextInput,\n CarpoolSelectionModal,\n },\n})\nexport default class CarpoolSelect extends Vue {\n @Prop({ type: Object, default: () => getEmptyCarpoolLink() })\n private value!: PlayerCarpoolLink\n private internalValue: PlayerCarpoolLink = getEmptyCarpoolLink()\n\n private carpoolSelectionOpen = false\n @Prop({ type: String, required: true, default: '' })\n private league!: string\n private editOpen = false\n @Prop({ type: Array, required: true, default: () => [] })\n participants!: LeaguePlayerInfo[]\n @Prop({ type: Number, required: true, default: 0 })\n playerID!: number\n\n /**\n * Coach has been selected by the select process.\n * @param participant_id\n */\n carpoolSelected(participant_id: number) {\n const participant = this.participants.find((x) => x.individualID == participant_id)\n if (participant) {\n this.volunteerFindToValueField(participant)\n this.input()\n }\n }\n\n get initialSearch(): string {\n if (this.internalValue.pendingLastName && this.internalValue.pendingFirstName) {\n return (this.internalValue.pendingLastName + ', ' + this.internalValue.pendingFirstName).trim()\n }\n\n if (this.internalValue.pendingLastName) {\n return this.internalValue.pendingLastName.trim()\n }\n\n return (this.internalValue.pendingFirstName ?? '').trim()\n }\n\n /**\n * return the id of the person that is not the player\n */\n get notMeLinkID(): number {\n if (this.internalValue.player1IndividualID == this.playerID) {\n return this.internalValue.player2IndividualID\n }\n return this.internalValue.player1IndividualID\n }\n\n get selectedName(): string {\n if (this.isCarpoolLinked) {\n const x = this.participants.find((y) => this.notMeLinkID == y.individualID)\n return x?.formattedNameFirstLast ?? 'n/a'\n }\n\n const x = this.participants.find((y) => this.internalValue.pendingIndividualID == y.individualID)\n if (x) {\n return x?.formattedNameFirstLast ?? 'n/a'\n }\n if (this.internalValue.pendingLastName) {\n return `${this.internalValue.pendingFirstName} ${this.internalValue.pendingLastName}`\n }\n return ''\n }\n\n /**\n * Convert the selected player to a player selection.\n * @param player\n */\n volunteerFindToValueField(player: LeaguePlayerInfo | null) {\n if (player) {\n this.internalValue.player2IndividualID = player.individualID\n this.internalValue.player1IndividualID = this.playerID\n this.internalValue.pendingLastName = ''\n this.internalValue.pendingFirstName = ''\n this.internalValue.pendingIndividualID = 0\n } else {\n this.internalValue = getEmptyCarpoolLink()\n }\n }\n\n pendingCarpoolLink(row: CarpoolInfo) {\n this.internalValue.player2IndividualID = 0\n this.internalValue.pendingIndividualID = row.individualID\n this.internalValue.player1IndividualID = this.playerID\n this.internalValue.pendingLastName = ''\n this.internalValue.pendingFirstName = ''\n }\n\n clear() {\n this.internalValue = getEmptyCarpoolLink()\n this.carpoolSelectionOpen = false\n this.input()\n }\n\n pending(row: CarpoolInfo) {\n this.pendingCarpoolLink(row)\n this.input()\n this.carpoolSelectionOpen = false\n }\n\n @Emit()\n input() {\n return this.internalValue\n }\n\n /**\n * Open the coach selection dialog.\n */\n carpoolSelect() {\n this.carpoolSelectionOpen = true\n }\n setInternalValue() {\n if (!this.value) {\n this.internalValue = getEmptyCarpoolLink()\n } else {\n this.internalValue = cloneDeep(this.value)\n }\n }\n @Watch('value', { immediate: true })\n valueChange() {\n this.setInternalValue()\n }\n openModal() {\n this.editOpen = true\n }\n\n get shouldShowWarning() {\n return (\n (!this.isCarpoolLinked && this.internalValue.pendingLastName) ||\n this.internalValue.pendingFirstName ||\n this.internalValue.pendingIndividualID\n )\n }\n get isCarpoolLinked() {\n return !!this.notMeLinkID\n }\n\n @Emit()\n update() {\n return this.internalValue\n }\n}\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CarpoolSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CarpoolSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CarpoolSelect.vue?vue&type=template&id=e268d73e&scoped=true&\"\nimport script from \"./CarpoolSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./CarpoolSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e268d73e\",\n null\n \n)\n\nexport default component.exports","\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\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\nimport { Component, Vue, Prop, Watch, Emit } from 'vue-property-decorator'\nimport { cloneDeep } from 'lodash'\n\nimport FullBody from '@/components/FullBody.vue'\n\nimport { namespace as participantStoreName, getterNames } from '@/store/participants'\nimport { namespace as leagueStoreName, getterNames as leagueGetterNames } from '@/store/leagues'\nimport { namespace as paymentTypesName, getterNames as paymentTypeGetterNames } from '@/store/paymentTypes'\n\nimport { namespace } from 'vuex-class'\n\nconst participants = namespace(participantStoreName)\nconst league = namespace(leagueStoreName)\nconst paymentTypesStore = namespace(paymentTypesName)\n\n/**types */\n\nimport { LeaguePlayerInfo } from '@/GeneratedTypes/ListInfo/LeaguePlayerInfo'\n/**components */\n\nimport TextInput from '@/elements/TextInput.vue'\n\nimport Loading from '@/elements/Loading.vue'\nimport InputLabel from '@/elements/InputLabel.vue'\nimport CheckboxInput from '@/elements/CheckboxInput.vue'\nimport MemoInput from '@/elements/MemoInput.vue'\nimport YesNoInput from '@/elements/YesNoInput.vue'\nimport NumberInput from '@/elements/NumberInput.vue'\n\n/** model support */\nimport SelectInput from '@/elements/SelectInput.vue'\nimport PaymentsDisplay from '@/views/Programs/Participants/vues/PaymentsDisplay.vue'\nimport EvaluationDisplay from '@/views/Programs/Participants/vues/EvaluationDisplay.vue'\nimport { LeaguePlayer } from '@/GeneratedTypes/LeaguePlayer'\n\nimport { PlayerProgram } from '@/GeneratedTypes/PlayerProgram'\nimport VeeValidateForm from '@/elements/VeeValidateForm.vue'\n\nimport CoachSelect from '@/views/Programs/Participants/vues/CoachSelect.vue'\n\nimport {\n CoachFromPlayerProgram,\n EmptyCoachSelect,\n CoachSelect as CoachSelectModel,\n} from '@/models/ParticipantUI/CoachSelect'\nimport { UpwardPaymentMethodTypeID } from '@/GeneratedTypes/UpwardTypes/UpwardPaymentMethodTypeID'\nimport { League } from '@/GeneratedTypes/League'\nimport CarpoolSelect from '@/views/Programs/Participants/vues/CarpoolSelect.vue'\nimport { getEmptyCarpoolLink } from '@/lib/support/models/PlayerCarpoolLink/data'\nimport volunteersClient from '@/clients/volunteersClient'\nimport { PlayerProduct } from '@/GeneratedTypes/PlayerProduct'\nimport { ParticipantOrderProductInfo } from '@/GeneratedTypes/ListInfo/ParticipantOrderProductInfo'\nimport SizeSelectorPanel from '@/components/SizeSelectorPanel/SizeSelectorPanel.vue'\nimport { productListToProductSelections } from '@/lib/support/components/SizeSelectorPanel/operations'\nimport { Identity } from '@/lib/support/components/SizeSelectorPanel/operations'\n\n@Component({\n components: {\n SizeSelectorPanel,\n CarpoolSelect,\n VeeValidateForm,\n EvaluationDisplay,\n PaymentsDisplay,\n CoachSelect,\n SelectInput,\n Loading,\n TextInput,\n CheckboxInput,\n MemoInput,\n YesNoInput,\n NumberInput,\n InputLabel,\n FullBody,\n },\n})\nexport default class ParticipantProgram extends Vue {\n @Prop({ type: Object, required: true })\n private readonly value!: PlayerProgram\n\n @Prop({ type: Array, required: true })\n readonly productItems!: ParticipantOrderProductInfo[]\n\n @Prop({ type: String, default: null, required: true })\n private readonly gender!: string | null\n\n @Prop({ type: String, default: '', required: true })\n private readonly upwId!: string\n\n @Prop({ type: Number, default: 0, required: true })\n private readonly individualID!: number\n\n @participants.Getter('playerLoading') loading!: boolean\n @participants.Getter('currentItem') readonly currentParticipant!: LeaguePlayerInfo\n @participants.Getter('participants') participants!: LeaguePlayerInfo[]\n @participants.Getter(getterNames.participantUnderEdit)\n readonly participantTemplate!: LeaguePlayer\n @league.Getter(leagueGetterNames.currentItem) selectedLeagueModel!: League\n\n @paymentTypesStore.Getter(paymentTypeGetterNames.allItems)\n readonly paymentTypes!: UpwardPaymentMethodTypeID[]\n\n private editProducts: PlayerProduct[] = []\n private coach = EmptyCoachSelect()\n private UIDisableOverride = true //see #3302\n\n /**\n * Determines if products are shown\n */\n get showingProducts() {\n return (\n this.productItems?.length &&\n this.editProducts?.length &&\n productListToProductSelections(\n this.editProducts,\n this.productItems,\n this.gender ?? '',\n Identity.PARTICIPANT\n ).length\n )\n }\n\n get canCoachLink() {\n return this.selectedLeagueModel.allowCoachLinks || this.UIDisableOverride\n }\n\n get canCarpoolLink() {\n return this.selectedLeagueModel.allowCarpoolLinks || this.UIDisableOverride\n }\n\n get carpoolLinkParticipants() {\n return this.participants.filter((x) => x.typeProgramID == this.value.typeProgramID)\n }\n\n @Watch('value', { immediate: true })\n async valueChanged() {\n this.value.evaluations = this.value.evaluations ?? []\n this.coach = CoachFromPlayerProgram(this.value)\n await this.updateCoachModel()\n this.value.payments = this.value.payments ?? []\n this.value.carpoolLink = this.value.carpoolLink ?? getEmptyCarpoolLink()\n this.editProducts = cloneDeep(this.value.products) ?? []\n }\n\n async updateCoachModel() {\n if ((this.coach.linkID || this.coach.pendingLinkID) && !this.coach.firstName && !this.coach.lastName) {\n //semi expensive coach name load\n\n const v = await volunteersClient.retrieveVolunteer(\n this.upwId,\n this.coach.linkID || this.coach.pendingLinkID\n )\n this.coach.firstName = v?.firstName ?? 'n/a'\n this.coach.lastName = v?.lastName ?? 'n/a'\n }\n }\n\n @Emit()\n coachLinkChanged(coach: CoachSelectModel) {\n return { coach: coach, typeProgramID: this.value.typeProgramID }\n }\n\n @Emit()\n productsChanged(p: PlayerProduct[]) {\n return { products: p, typeProgramID: this.value.typeProgramID }\n }\n}\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParticipantProgram.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParticipantProgram.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ParticipantProgram.vue?vue&type=template&id=74700dde&\"\nimport script from \"./ParticipantProgram.vue?vue&type=script&lang=ts&\"\nexport * from \"./ParticipantProgram.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\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\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\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\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\nimport { Component, Vue, Prop, Watch } from 'vue-property-decorator'\nimport { Route } from 'vue-router'\nimport { cloneDeep, intersection } from 'lodash'\n\nimport FullBody from '@/components/FullBody.vue'\n\nimport { namespace as participantStoreName, getterNames, mutationNames } from '@/store/participants'\nimport { namespace as leagueStoreName, getterNames as leagueGetterNames } from '@/store/leagues'\nimport { namespace as campStoreName, getterNames as campGetterNames } from '@/store/camps'\nimport {\n namespace as programTypeStoreName,\n getterNames as programTypeGetterNames,\n} from '@/store/programTypes'\n\nimport { namespace } from 'vuex-class'\n\nconst participants = namespace(participantStoreName)\nconst league = namespace(leagueStoreName)\nconst camp = namespace(campStoreName)\nconst programTypesStore = namespace(programTypeStoreName)\n\n/**types */\n\nimport { LeaguePlayerInfo } from '@/GeneratedTypes/ListInfo/LeaguePlayerInfo'\nimport { DivisionTeamInfo } from '@/GeneratedTypes/ListInfo/DivisionTeamInfo'\nimport store from '@/store'\n/**components */\n\nimport TextInput from '@/elements/TextInput.vue'\n\nimport Loading from '@/elements/Loading.vue'\nimport InputLabel from '@/elements/InputLabel.vue'\nimport CheckboxInput from '@/elements/CheckboxInput.vue'\nimport MemoInput from '@/elements/MemoInput.vue'\nimport YesNoInput from '@/elements/YesNoInput.vue'\nimport Alert, { AlertTypeEnum } from '@/components/Alert.vue'\n\n/** model support */\nimport { LeaguePlayerSeedInfo, PlayerInfoIDType } from '@/lib/support/models/LeaguePlayerInfo/data'\nimport { reconcileTemplate } from '@/views/Programs/Participants/ext/decomposeutils'\nimport SelectInput from '@/elements/SelectInput.vue'\nimport { getEmptyLeaguePlayer, IsNewPlayer } from '@/lib/support/models/LeaguePlayer/data'\nimport { LeaguePlayer } from '@/GeneratedTypes/LeaguePlayer'\n\nimport DayOfTheWeekParticipant from './vues/DayOfTheWeekParticipant.vue'\n\nimport { decomposeLeaguePlayer } from '@/views/Programs/Participants/ext/decomposeutils'\nimport ParticipantsContacts from '@/views/Programs/Participants/vues/ParticipantsContacts.vue'\nimport ParticipantSearch from '@/components/ParticipantSearch.vue'\nimport RadioGroupInput from '@/elements/RadioGroupInput.vue'\nimport CheckboxGroupInput from '@/elements/CheckboxGroupInput.vue'\n\nimport ConfirmDeleteModal from '@/components/ConfirmDeleteModal.vue'\nimport ParticipantBasics from '@/views/Programs/Participants/vues/ParticipantBasics.vue'\nimport ParticipantProgram from '@/views/Programs/Participants/vues/ParticipantProgram.vue'\nimport VeeValidateForm from '@/elements/VeeValidateForm.vue'\n\nimport { PlayerContact } from '@/GeneratedTypes/PlayerContact'\n\nimport { PlayerPracticeNightExclusion } from '@/GeneratedTypes/PlayerPracticeNightExclusion'\nimport { RuntimeException } from '@/lib/common/exceptions/RuntimeException'\n\nimport { updateTemplateWithEditsNew } from '@/views/Programs/Participants/ext/composeutils'\nimport { CoachSelect } from '@/models/ParticipantUI/CoachSelect'\nimport { PlayerUDFValue } from '@/GeneratedTypes/PlayerUDFValue'\nimport { getEmptyPlayerUDFs } from '@/lib/support/models/PlayerUDFValue/data'\nimport UDFPanel from '@/components/UDFPanel.vue'\nimport { League } from '@/GeneratedTypes/League'\nimport { useFeatureFlags } from '@/services/useFeatureFlags'\nimport CarpoolSelect from '@/views/Programs/Participants/vues/CarpoolSelect.vue'\nimport volunteersClient from '@/clients/volunteersClient'\nimport teamsClient from '@/clients/teamsClient'\nimport { LeagueVolunteer } from '@/GeneratedTypes/LeagueVolunteer'\nimport { PlayerContactToLeagueVolunteer } from '@/lib/support/models/LeagueVolunteer/PlayerContactToLeagueVolunteer'\nimport { composeLeagueVolunteer } from '@/views/Programs/Volunteers/ext/composeutils'\nimport { getEmptyAddress } from '@/lib/support/models/IndividualAddressInfo/data'\nimport { IndividualAddress } from '@/GeneratedTypes/IndividualAddress'\nimport ordersClient from '@/clients/ordersClient'\nimport { PlayerProduct } from '@/GeneratedTypes/PlayerProduct'\nimport { ParticipantOrderProductInfo } from '@/GeneratedTypes/ListInfo/ParticipantOrderProductInfo'\nimport SizeSelectorPanel from '@/components/SizeSelectorPanel/SizeSelectorPanel.vue'\nimport { ContactRoleEditType } from '@/models/ParticipantUI/ContactRoleEditType'\nimport { Genders } from '@/lib/support/models/MiscMappings/Gender'\nimport { LeagueAccount } from '@/GeneratedTypes/LeagueAccount'\nimport { Camp } from '@/GeneratedTypes/Camp'\nimport participantsClient from '@/clients/participantsClient'\nimport { UpwardProgramTypeID } from '@/GeneratedTypes/UpwardTypes/UpwardProgramTypeID'\nimport { sortGrades, getGradesListFromAccount } from '@/services/gradeService'\n\nclass ParticipantEditException extends RuntimeException {\n name = 'Participant Edit Error'\n}\n\n@Component({\n setup() {\n return { ...useFeatureFlags() }\n },\n beforeRouteLeave(route, redirect, next) {\n const self = this as ParticipantEdit\n self.clearParticipant()\n next()\n },\n components: {\n SizeSelectorPanel,\n CarpoolSelect,\n VeeValidateForm,\n ParticipantBasics,\n ParticipantProgram,\n ConfirmDeleteModal,\n ParticipantSearch,\n RadioGroupInput,\n CheckboxGroupInput,\n DayOfTheWeekParticipant,\n SelectInput,\n Loading,\n TextInput,\n CheckboxInput,\n MemoInput,\n YesNoInput,\n InputLabel,\n ParticipantsContacts,\n UDFPanel,\n FullBody,\n Alert,\n },\n methods: {\n IsNewPlayer,\n },\n})\nexport default class ParticipantEdit extends Vue {\n /** props */\n @Prop({ type: String })\n private readonly id: string | undefined /* string id of participant to edit/copy undefined on new */\n /** type mirrors definition in store. */\n private loadProgramParticipants = store.dispatch.participants.loadProgramParticipants\n private setCurrentParticipantByID = store.dispatch.participants.setCurrentParticipantByID\n private getTemplate = store.dispatch.participants.getNewTemplate\n private getParticipant = store.dispatch.participants.getParticipant\n private upsert = store.dispatch.participants.upsertParticipant\n private setLastLeagueLoaded = store.commit.participants.setLastLeagueLoaded\n private setSkipParticipantRefresh = store.commit.participants.setSkipParticipantListRefresh\n /** getters */\n @participants.Getter('participants') participants!: LeaguePlayerInfo[]\n @participants.Getter('playerLoading') loading!: boolean\n\n /** getters */\n @league.Getter(leagueGetterNames.currentItem) selectedLeagueModel!: League\n @camp.Getter(campGetterNames.currentItem) selectedCampModel!: Camp\n @participants.Getter('currentItem') readonly currentParticipant!: LeaguePlayerInfo\n @participants.Getter(getterNames.participantUnderEdit)\n readonly participantTemplate!: LeaguePlayer\n\n @participants.Getter(getterNames.currentProgram) readonly currentStoreProgram!: string\n @participants.Mutation(mutationNames.clearParticipant) clearParticipant!: () => void\n\n @programTypesStore.Getter(programTypeGetterNames.allItems)\n readonly programTypes!: UpwardProgramTypeID[]\n\n private UIDisableOverride = true //see #3302\n private carpoolSelectionOpen = false\n private newPlayerTemplate: LeaguePlayer = getEmptyLeaguePlayer()\n private selectedProgramTab = 0\n private readonly alertType = AlertTypeEnum.NOTICE\n\n /**\n * wake up and grab some definitions\n */\n async mounted() {\n await store.dispatch.paymentTypes.fetchAll(false) //get these cached up\n\n // complete reference to store binding on mount\n this.loadProgramParticipants = store.dispatch.participants.loadProgramParticipants\n this.setCurrentParticipantByID = store.dispatch.participants.setCurrentParticipantByID\n this.getTemplate = store.dispatch.participants.getNewTemplate\n this.getParticipant = store.dispatch.participants.getParticipant\n this.upsert = store.dispatch.participants.upsertParticipant\n this.setLastLeagueLoaded = store.commit.participants.setLastLeagueLoaded\n this.newPlayerTemplate = (await participantsClient.retrieveTemplate(this.upwId)) ?? getEmptyLeaguePlayer()\n await this.getProducts()\n }\n\n get shouldShowInlineFirstContact() {\n return IsNewPlayer(this.editParticipant) /*&& !completeContact(this.editContacts)*/\n }\n\n get editParticipantActivePrograms() {\n return this.editParticipant.programs?.filter((x) => x.active)\n }\n\n productItems: ParticipantOrderProductInfo[] = []\n\n /**\n * Returns the order list of things a participant needs to order\n */\n async getProducts() {\n this.productItems = (await ordersClient.getLeagueOrderItems(this.upwId)) ?? []\n }\n\n /**\n * Program can exclude a gender\n */\n get genderList() {\n //we must take the most restrictive case for the selected programs (if both are selected)\n let hasBoys = true\n let hasGirls = true\n const genders: any = {}\n if (this.accounts?.length) {\n const grades = this.accounts[0].grades\n if (grades) {\n this.programsToParticipate.forEach((x) => {\n hasBoys = hasBoys && grades.some((g) => g.typeProgramID === x && g.gender === Genders.male)\n hasGirls = hasGirls && grades.some((g) => g.typeProgramID === x && g.gender === Genders.female)\n })\n if (hasBoys) {\n genders['M'] = 'Male'\n }\n\n if (hasGirls) {\n genders['F'] = 'Female'\n }\n }\n }\n return genders\n }\n\n get accounts(): LeagueAccount[] | null {\n if (this.isCamp) return this.selectedCampModel.accounts\n return this.selectedLeagueModel.accounts\n }\n\n /**\n * Grades vary on gender and program\n */\n get gradesList() {\n //This needs to be the intersected set of grades for all programs selected\n const gender = this.editParticipant?.gender\n let retval: string[] = []\n\n if (gender && this.editParticipantActivePrograms && this.accounts && this.accounts.length > 0) {\n this.editParticipantActivePrograms.forEach((x) => {\n const progGrades = getGradesListFromAccount(this.accounts![0], x.typeProgramID, gender).map(\n (g) => g.upwardTypeID ?? ''\n )\n retval = retval.length == 0 ? progGrades : intersection(retval, progGrades)\n })\n }\n\n return retval.sort(sortGrades)\n }\n\n private editUdfs: PlayerUDFValue[] = getEmptyPlayerUDFs()\n\n get canUDF() {\n if (this.isCamp) {\n return !!this.selectedCampModel.playerUDFs && this.selectedCampModel.playerUDFs.length > 0\n }\n return !!this.selectedLeagueModel.playerUDFs && this.selectedLeagueModel.playerUDFs.length > 0\n }\n\n private get isCamp(): boolean {\n return this.$route.fullPath.indexOf('/camp/') >= 0\n }\n\n private contactRoleChanges: ContactRoleEditType[] = []\n storeContactRoles(v: ContactRoleEditType) {\n const i = this.contactRoleChanges.findIndex((x) => x.id == v.id)\n if (i >= 0) {\n this.contactRoleChanges.splice(i, 1, cloneDeep(v))\n } else {\n this.contactRoleChanges.push(cloneDeep(v))\n }\n this.spliceInRoleChanges(v)\n }\n\n private spliceInRoleChanges(v: ContactRoleEditType) {\n const i = this.playerContactVolunteers.findIndex((x) => x.individualID == v.id)\n if (i >= 0) {\n const c = cloneDeep(this.playerContactVolunteers[i])\n\n //if they are found, replace the model we got from API with the old model\n if (c) {\n this.playerContactVolunteers.splice(i, 1, {\n ...c,\n coachPreferences: v.coachPrefs,\n roles: v.roles,\n gender: v.gender,\n })\n }\n }\n }\n\n async updateVolunteerChanges() {\n for (const rolechange of this.contactRoleChanges) {\n //don't update someone that was created but then deleted in edit.\n if (this.editContacts.find((x) => x.individualID == rolechange.id)) {\n await this.updateContactRoles(rolechange)\n }\n }\n //we do the following so that volunteer edits under participant get reflected on volunteer tab load.\n store.commit.volunteers.forceVolunteerListReload()\n }\n\n /**\n * Called when a contact roles changes (primarily from PlayerContacts)\n * Currently this is real-time, we could save these guys until save on participant.\n *\n */\n async updateContactRoles({ id, roles, coachPrefs, gender }: ContactRoleEditType) {\n let editContactIndex = this.editContacts.findIndex((x) => x.individualID == id)\n\n //sanity check, a volunteer under edit in the interface *should* be in this array\n if (editContactIndex >= 0) {\n const ec = this.editContacts[editContactIndex]\n\n const c = cloneDeep(\n await volunteersClient.setVolunteerRoles(\n this.upwId,\n id,\n composeLeagueVolunteer(\n PlayerContactToLeagueVolunteer(this.editContacts[editContactIndex] ?? getEmptyLeaguePlayer()),\n {\n address: ec.addresses?.length ? ec.addresses[0] : (getEmptyAddress() as IndividualAddress),\n email: ec.emailAddresses?.length ? ec.emailAddresses[0].emailAddress : '',\n phones: ec.phoneNumbers ?? [],\n roles: roles,\n volunteer: {\n ...PlayerContactToLeagueVolunteer(\n this.editContacts[editContactIndex] ?? getEmptyLeaguePlayer()\n ),\n gender: gender,\n },\n coachPreferences: coachPrefs,\n }\n ),\n\n roles,\n coachPrefs\n )\n )\n // contact will be returned.\n if (c) {\n // that contact should be found in our stack of preloaded-volunteers\n const i = this.playerContactVolunteers.findIndex((x) => x.individualID == id)\n //if they are found, replace the model we got from API with the old model\n if (i >= 0) {\n this.playerContactVolunteers.splice(i, 1, c)\n } else {\n //if not found by definition - if we are here we need to patch up the individual id of the new contact added.\n this.playerContactVolunteers.push(c)\n\n this.editContacts.splice(\n editContactIndex,\n 1,\n cloneDeep({ ...ec, individualID: c.individualID } as PlayerContact)\n )\n }\n }\n } else {\n throw new ParticipantEditException(`Volunteer role assigned to non-loaded edit contact.`)\n }\n }\n\n get canPracticeNightExclude() {\n // we are short circuiting this for\n return (\n this.selectedLeagueModel.allowPracticeNightExclusions ||\n this.UIDisableOverride ||\n this.leagueDayList == []\n )\n }\n get leagueDayList() {\n return this.selectedLeagueModel?.practiceNights?.map((x) => x.typeDayID) ?? []\n }\n\n updateParticipant(l: LeaguePlayer) {\n //this.editParticipant = cloneDeep(l)\n this.editParticipant.firstName = l.firstName\n this.editParticipant.lastName = l.lastName\n this.editParticipant.middleInitial = l.middleInitial\n this.editParticipant.gender = l.gender\n this.editParticipant.typeGradeID = l.typeGradeID\n this.editParticipant.churchName = l.churchName\n this.editParticipant.birthDate = l.birthDate\n this.editParticipant.gradeIsOverridden = l.gradeIsOverridden\n }\n\n updateEditContacts(e: PlayerContact[]) {\n this.editContacts = e\n }\n\n get udfList() {\n if (this.isCamp) return this.selectedCampModel.playerUDFs\n return this.selectedLeagueModel.playerUDFs\n }\n\n /**\n * returns the programs that are under edit\n */\n get currentLeaguePrograms() {\n return this.programsToParticipate.map((p) =>\n this.isCamp\n ? this.selectedCampModel.programs?.find((x) => x.typeProgramID == p)\n : this.selectedLeagueModel.programs?.find((x) => x.typeProgramID == p)\n )\n }\n\n get programsToParticipate(): string[] {\n return this.editParticipantActivePrograms?.map((x) => x.typeProgramID) ?? []\n }\n\n private pendingProgramsToParticipate: string[] = []\n private confirmChangeProgram = false\n private movePaymentsonDelete = false\n private showMovePayments = false\n private showTeamWarning = false\n\n warnAboutProgramChange(v: string[]) {\n this.pendingProgramsToParticipate = cloneDeep(v)\n //invalid to choose less than one.\n if (v && v.length && v.length < (this.editParticipantActivePrograms?.length ?? 0)) {\n this.movePaymentsonDelete = false //default this to false before showing modal\n this.showMovePayments = false\n\n const oldProg = this.editParticipantActivePrograms?.find(\n (x) => x.typeProgramID != this.pendingProgramsToParticipate[0]\n )\n if (oldProg) {\n //block removing program if assigned to a team\n const team = this.teamInfo.find((x) => x.typeProgramID == oldProg.typeProgramID)\n if (team) {\n //add alert warning that player is assigned to a team\n this.showTeamWarning = true\n return\n } else {\n this.showMovePayments = oldProg.payments != null && oldProg.payments.length > 0\n }\n }\n\n //signal if the user is removing a program.\n this.confirmChangeProgram = true\n } else {\n this.changeProgram()\n }\n }\n\n changeProgram() {\n if (this.pendingProgramsToParticipate.length == 0) {\n return //sfety check, do nothiong since we always want at least one program selected\n }\n\n //we are either adding a new program or removing one\n if (this.pendingProgramsToParticipate.length == 1) {\n //remove the one that needs to be removed\n //copy payments over if they checked that option in the modal\n const oldProg = this.editParticipant.programs?.find(\n (x) => x.typeProgramID != this.pendingProgramsToParticipate[0]\n )\n this.editParticipant.programs =\n this.editParticipant.programs?.filter(\n (x) => x.typeProgramID == this.pendingProgramsToParticipate[0]\n ) ?? []\n if (this.movePaymentsonDelete && oldProg) {\n this.editParticipant.programs[0].payments = oldProg?.payments\n //reset payment and breakout IDs\n this.editParticipant.programs[0].payments?.forEach((x) => {\n x.paymentID = 0\n x.breakout?.forEach((b) => (b.breakoutID = 0))\n })\n }\n } else {\n //add the one that is missing\n this.pendingProgramsToParticipate.forEach((x) => {\n const prog = this.editParticipant.programs?.find((p) => p.typeProgramID == x)\n if (prog) {\n prog.active = true //re-activate it\n } else {\n const newProg = this.newPlayerTemplate.programs!.find((p) => p.typeProgramID == x)\n if (newProg) {\n this.editParticipant.programs?.push(newProg)\n }\n }\n })\n }\n }\n\n get programsAvailable(): UpwardProgramTypeID[] {\n if (this.newPlayerTemplate.programs?.length) {\n return this.newPlayerTemplate.programs.map(\n (x) => this.programTypes.find((p) => p.upwardTypeID == x.typeProgramID)!\n )\n } else {\n return []\n }\n }\n\n programDescription(typeProgramID: string) {\n let retval = ''\n const prog = this.programTypes.find((p) => p.upwardTypeID == typeProgramID)\n if (prog) {\n retval = prog.shortDescription ?? ''\n }\n\n return retval\n }\n\n /**\n * The route is based on how many arguments are passed.\n * new does not take a parameter so just replace the suggested route\n * with the new route.\n */\n relativeRoute(newRoute: string): string {\n if (this.editMode == 'new') {\n return newRoute\n }\n if (this.editMode == 'copy') {\n return '../../' + newRoute\n }\n return '../' + newRoute\n }\n\n /** private data */\n private editParticipant: LeaguePlayer = cloneDeep(getEmptyLeaguePlayer(new LeaguePlayerSeedInfo()))\n private editContacts: PlayerContact[] = []\n private editPracticeNightExclusions: PlayerPracticeNightExclusion[] = []\n private editMode = '' // maps to routename, used for watcher on edit template\n\n private upwId = '' //aught to be set by the router.\n private playerContactVolunteers: LeagueVolunteer[] = []\n private teamInfo: DivisionTeamInfo[] = []\n\n /***\n * Triggered on the edit to take care of the UC for looking up a prior athlete.\n */\n private searchName = '' //command delimited name to lookup.\n nameUpdated(first: string, last: string) {\n this.searchName = last + ',' + first\n }\n\n private imported = false\n async participantFound({ id, leagueID }: { id: PlayerInfoIDType; leagueID: string }) {\n await this.getTemplate({ id, importLeagueID: leagueID }) //update template\n this.imported = !!(leagueID && leagueID != this.upwId)\n this.reconcileTemplate()\n }\n /**\n * Do most of the environment scuttle here. If we don't have\n * a new, edited or cloned id then prepare it before moving on\n */\n @Watch('$route', { immediate: true, deep: true })\n async routeChange(to: Route) {\n this.imported = false\n this.editMode = to.name?.split('-')[0] ?? ''\n\n try {\n if (to?.params.id) {\n this.upwId = to.params.id\n //probably already loaded.\n //await this.loadProgramParticipants({ leagueId: to?.params.id })\n }\n if (to?.params?.pid) {\n try {\n this.setLastLeagueLoaded({ leagueID: to?.params.id })\n await this.setCurrentParticipantByID({\n id: parseInt(to.params.pid),\n typeProgramID: this.currentStoreProgram,\n })\n this.teamInfo = await teamsClient.retrieveTeamInfo({\n leagueID: to?.params.id ?? '',\n individualId: parseInt(to.params.pid),\n })\n } catch (error) {\n //no current participant, grab the template and start there.\n\n if (this.editMode == 'edit') {\n await this.getParticipant({ id: parseInt(to.params.pid) })\n this.teamInfo = await teamsClient.retrieveTeamInfo({\n leagueID: to?.params.id ?? '',\n individualId: parseInt(to.params.pid),\n })\n } else {\n //copy\n await this.getTemplate({ id: parseInt(to.params.pid), importLeagueID: to.params?.old_league })\n this.imported = !!(to.params?.old_league && to.params?.old_league != this.upwId)\n }\n }\n } else {\n //probably a new user, lets prospectively load a template.\n\n await this.getTemplate({})\n }\n } catch (e) {\n await this.$router.push(this.relativeRoute('list'))\n throw new ParticipantEditException(e.message)\n }\n\n this.reconcileTemplate()\n await this.decomposeTemplate()\n }\n\n /***\n * If a template is updated or refreshed, then integrate it in with\n * the data we know about.\n */\n reconcileTemplate() {\n if (this.participantTemplate && this.editParticipant) {\n this.editParticipant = cloneDeep(reconcileTemplate(this.editParticipant, this.participantTemplate))\n if (IsNewPlayer(this.editParticipant) && this.editParticipant.programs) {\n this.editParticipant.programs = this.editParticipant.programs.filter(\n (x) => x.typeProgramID == this.currentStoreProgram\n )\n }\n }\n }\n\n carpoolSelect() {\n this.carpoolSelectionOpen = true\n }\n\n get composedParticipant(): LeaguePlayer {\n return updateTemplateWithEditsNew(\n cloneDeep(this.participantTemplate),\n cloneDeep({\n player: this.editParticipant,\n contacts: this.editContacts,\n practiceNightExclusions: this.editPracticeNightExclusions,\n udfs: this.editUdfs,\n })\n )\n }\n\n coachLinkChanged({ coach, typeProgramID }: { coach: CoachSelect; typeProgramID: string }) {\n const prog = this.editParticipant.programs?.find((x) => x.typeProgramID == typeProgramID)\n if (prog) {\n if (coach.linkID == 0 && coach.firstName != '' && coach.lastName != '') {\n prog.pendingCoachLinkFirstName = coach.firstName\n prog.pendingCoachLinkLastName = coach.lastName\n prog.pendingCoachLinkIndividualID = coach.pendingLinkID\n prog.coachLinkIndividualID = coach.linkID\n } else {\n prog.pendingCoachLinkFirstName = ''\n prog.pendingCoachLinkLastName = ''\n prog.pendingCoachLinkIndividualID = 0\n prog.coachLinkIndividualID = coach.linkID\n }\n }\n }\n\n private get isEditMode() {\n return this.editMode === 'edit'\n }\n\n productsChanged({ products, typeProgramID }: { products: PlayerProduct[]; typeProgramID: string }) {\n const prog = this.editParticipant.programs?.find((x) => x.typeProgramID == typeProgramID)\n if (prog) {\n prog.products = products\n }\n }\n\n async decomposeTemplate() {\n this.reconcileTemplate()\n ;({\n player: this.editParticipant,\n contacts: this.editContacts,\n practiceNightExclusions: this.editPracticeNightExclusions,\n udfs: this.editUdfs,\n } = decomposeLeaguePlayer(this.editParticipant))\n\n this.playerContactVolunteers = []\n for (let i = 0; i < this.editContacts?.length; i++) {\n let x = this.editContacts[i]\n const c = await volunteersClient.retrieveVolunteer(this.upwId, x.individualID)\n if (c && c.leagueID > 0) {\n //c will basically always return something (as of now) so check leagueID to see if this person is a legit volunteer\n this.playerContactVolunteers.push(c)\n }\n }\n }\n\n /***\n * Possible lazy load of the template requires post-edit reconciliation.\n * @param newTemplate\n */\n @Watch('participantTemplate')\n function() {\n this.decomposeTemplate()\n }\n\n async saveAndContinue(e: MouseEvent) {\n e.stopPropagation()\n e.preventDefault()\n\n try {\n // will walk through volunteers and save any role changes.\n await this.updateVolunteerChanges()\n await this.upsert({\n leagueID: this.upwId,\n participant: this.composedParticipant,\n matched: this.imported,\n })\n } catch (e) {\n throw e\n }\n this.$router.push(this.relativeRoute('list'))\n }\n cancel(e: MouseEvent) {\n e.stopPropagation()\n e.preventDefault()\n this.setSkipParticipantRefresh({ flag: true })\n this.$router.push(this.relativeRoute('list'))\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParticipantEdit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParticipantEdit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ParticipantEdit.vue?vue&type=template&id=50746386&scoped=true&\"\nimport script from \"./ParticipantEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./ParticipantEdit.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ParticipantEdit.vue?vue&type=style&index=0&id=50746386&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"50746386\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('search-modal',{attrs:{\"headers\":_vm.headers,\"loading\":_vm.searchActive,\"item-key\":\"individualID\",\"title\":\"Former Participants\",\"data\":_vm.searchData,\"showSearchInput\":!_vm.autoSearch},on:{\"updateSearch\":_vm.updateSearch,\"onSelected\":_vm.searchSelected},model:{value:(_vm.showModal),callback:function ($$v) {_vm.showModal=$$v},expression:\"showModal\"}},[_c('div',{staticClass:\"text-small font-italic text-center\"},[_vm._v(\" \"+_vm._s(_vm.autoSearch ? 'Found some participants that look like the one you are entering' : 'Type a few letters in the name of the participant you are trying to find.')+\" \")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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\nimport { defineComponent, ref, watch } from '@vue/composition-api'\n\nimport { headers } from '@/components/ParticipantSearch/searchfiltercolumns'\nimport participantsClient from '@/clients/participantsClient'\nimport { PlayerSearchInfo } from '@/GeneratedTypes/ListInfo/PlayerSearchInfo'\nimport SearchModal from '@/elements/SearchModal.vue'\n\ninterface DisplayablePlayerSearchInfo extends PlayerSearchInfo {\n prettyName: string\n}\n\nexport default defineComponent({\n name: 'ParticipantSearch',\n components: {\n SearchModal,\n },\n props: {\n autoSearch: { required: false, type: String, default: '' },\n league: { required: true, type: String, default: '' },\n visible: { required: false, type: Boolean, default: false },\n },\n setup(props, ctx) {\n const searchTimeout = ref(null)\n const showModal = ref(props.visible)\n const searchData = ref([]) //define when activated\n const searchActive = ref(false) //not showing initially\n\n watch(\n () => props.visible,\n () => {\n showModal.value = props.visible\n }\n )\n\n watch(\n () => showModal.value,\n (b: boolean) => {\n if (b) {\n ctx.emit('open')\n return\n }\n\n ctx.emit('cancel')\n return\n }\n )\n\n watch(\n () => props.autoSearch,\n async () => {\n if (props.autoSearch) {\n const [first, last] = getFirstNameLastName(props.autoSearch)\n searchActive.value = true\n try {\n const result = [\n ...(await participantsClient.search({ leagueID: props.league, orSearch: false, first, last })),\n ]\n searchData.value = result.map((p) => {\n return {\n ...p,\n prettyName: `${p.firstName} ${p.lastName}`,\n } as DisplayablePlayerSearchInfo\n })\n } finally {\n searchActive.value = false\n }\n if (searchData.value.length) {\n showModal.value = true\n }\n }\n }\n )\n\n function searchSelected(p: PlayerSearchInfo) {\n ctx.emit('select', { id: p.individualID, leagueID: p.upwardLeagueID })\n }\n\n function getFirstNameLastName(s: string) {\n let searchSegments = s.split(',')\n let lastFirstSearch = true\n if (!searchSegments || searchSegments.length <= 1) {\n searchSegments = s.split(' ')\n lastFirstSearch = false\n }\n let endSegment = ''\n if (searchSegments.length > 1) {\n endSegment = searchSegments.slice(1).join(' ')\n }\n if (lastFirstSearch) {\n return [endSegment.trim(), searchSegments[0].trim()]\n }\n return [searchSegments[0].trim(), endSegment.trim()]\n }\n\n /***\n * Callback on the SearchModal\n * @param s\n */\n function updateSearch(s: string) {\n //4656 - make them type at least 3 characters before searching\n if (s.trim().length > 2) {\n if (searchTimeout.value) {\n clearTimeout(searchTimeout.value)\n }\n\n searchTimeout.value = window.setTimeout(async () => {\n await doSearch(s)\n }, 1000)\n }\n }\n\n async function doSearch(s: string) {\n const [first, last] = getFirstNameLastName(s)\n\n if (!searchActive.value) {\n searchActive.value = true\n try {\n const result = await participantsClient.search({\n leagueID: props.league,\n orSearch: true,\n first: first,\n last: last,\n })\n\n searchData.value = result.map((p) => {\n return {\n ...p,\n prettyName: `${p.firstName} ${p.lastName}`,\n } as DisplayablePlayerSearchInfo\n })\n } finally {\n searchActive.value = false\n searchTimeout.value = null\n }\n }\n }\n\n return {\n headers,\n showModal,\n searchActive,\n searchData,\n updateSearch,\n searchSelected,\n }\n },\n})\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParticipantSearch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParticipantSearch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ParticipantSearch.vue?vue&type=template&id=10d8297a&scoped=true&\"\nimport script from \"./ParticipantSearch.vue?vue&type=script&lang=ts&\"\nexport * from \"./ParticipantSearch.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"10d8297a\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}