{"version":3,"sources":["webpack:///./src/views/Programs/Volunteers/VolunteerEdit.vue?564f","webpack:///./src/views/Programs/Volunteers/vues/EditVolunteer.vue?9968","webpack:///./src/views/Programs/Volunteers/vues/EditVolunteer.vue","webpack:///./src/views/Programs/Volunteers/vues/EditVolunteer.vue?f128","webpack:///./src/views/Programs/Volunteers/vues/EditVolunteer.vue?ee15","webpack:///./src/views/Programs/Volunteers/ext/decomposeutils.ts","webpack:///./src/views/Programs/Volunteers/vues/VolunteerRoleManager.vue?1071","webpack:///./src/lib/support/models/LeagueVolunteerRole/data.ts","webpack:///./src/views/Programs/Volunteers/vues/VolunteerRoleManager.vue","webpack:///./src/views/Programs/Volunteers/vues/VolunteerRoleManager.vue?e221","webpack:///./src/views/Programs/Volunteers/vues/VolunteerRoleManager.vue?2add","webpack:///./src/components/PhonePanel.vue?faae","webpack:///./src/components/PhonePanel.vue","webpack:///./src/components/PhonePanel.vue?74e2","webpack:///./src/components/PhonePanel.vue?29b7","webpack:///./src/components/VolunteerSearch.vue?ec41","webpack:///./src/components/VolunteerSearch.vue","webpack:///./src/components/VolunteerSearch.vue?953e","webpack:///./src/components/VolunteerSearch.vue?1763","webpack:///./src/views/Programs/Volunteers/ext/interfaceutils.ts","webpack:///./src/views/Programs/Volunteers/vues/CoachLinkSelect.vue?fc4d","webpack:///./src/components/CoachSelectionModal.vue?6d06","webpack:///./src/lib/components/CoachSelectionModal/CoachLinkSelectionGridColumns.ts","webpack:///./src/components/CoachSelectionModal.vue","webpack:///./src/components/CoachSelectionModal.vue?f5c5","webpack:///./src/components/CoachSelectionModal.vue?4cbc","webpack:///./src/views/Programs/Volunteers/vues/CoachLinkSelect.vue","webpack:///./src/views/Programs/Volunteers/vues/CoachLinkSelect.vue?0a01","webpack:///./src/views/Programs/Volunteers/vues/CoachLinkSelect.vue?97e7","webpack:///./src/views/Programs/Volunteers/VolunteerEdit.vue","webpack:///./src/views/Programs/Volunteers/VolunteerEdit.vue?303e","webpack:///./src/views/Programs/Volunteers/VolunteerEdit.vue?bc82","webpack:///./src/GeneratedTypes/CoachAssistantLink.ts","webpack:///./src/views/Programs/Volunteers/ext/routeutils.ts"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","cancelLink","_v","_s","title","isNew","editVolunteer","firstName","lastName","loading","on","saveAndContinue","interfaceToggles","hasProgramSelect","programsAvailable","length","programsInCoachPrefs","warnAboutProgramChange","_e","editEmail","emailValidationResolver","nameUpdated","updateVolunteer","emailUpdate","model","value","callback","$$v","editAddress","expression","editPhones","selectedProgramDescription","leagueid","selectedProgram","currentVolunteerID","editCoachLink","currentItem","roles","rolesToExpect","editRoles","gender","editCoachPreferences","individualID","editPrograms","updatePrefsAndRoles","searchName","volunteerFound","changeProgram","scopedSlots","_u","key","fn","proxy","confirmChangeProgram","staticRenderFns","$event","hasBlurredFirstName","fireOnChange","$set","hasBlurredLastName","emailUpdated","validEmail","M","F","input","features","disabled","optOutSMS","Date","name","components","RadioGroupInput","VeeValidateForm","SelectInput","DateInput","Loading","TextInput","CheckboxInput","MemoInput","YesNoInput","InputLabel","props","type","Object","required","email","String","default","Function","setup","ctx","store","getters","authorization","isImpersonated","hasNotifiedBlur","emailAddresses","isNullOrEmpty","valid","toLowerCase","val","onEmailConfirm","emit","emailServiceClient","getCorrectedEmail","correctedEmail","immediate","useFeatureFlags","component","RuntimeException","decomposeLeagueVolunteer","address","addresses","volunteer","phones","phoneNumbers","emailAddress","coachPreferences","add","_l","role","id","removeRole","roleValues","currentRoleIds","save","selectOpen","confirmedRemoveRole","removeConfirmBoxOpen","suggestedRoleList","saveSuggested","suggestedRolesOpen","getEmptyLeagueVolunteerRole","seed","roleID","approved","authorizedExpireDate","udFs","upwardAuthInvitationID","roleIDSeed","Role","c","RoleApproval","ConfirmDeleteModal","ModalMultiSelect","RoleElement","Array","roleDescriptions","suggestedRoles","internalRoles","rolesPendingDelete","filter","x","indexOf","displayingRoles","map","displaying","rolesToDelete","rolesToAdd","parseInt","saves","description","numIntersectionOfSuggested","push","toString","sort","a","b","sortOrder","roleList","phone","index","phoneID","internalValue","maxPhones","addPhone","PhoneInput","Number","volunteerSearchHeaders","searchData","searchActive","autoSearch","updateSearch","searchSelected","showModal","ANY_ROLE","SearchModal","league","visible","Boolean","p","s","volunteersClient","search","leagueID","orSearch","first","last","result","v","split","interfaceNone","hasPracticeDays","hasGradesToCoach","hasShirtSize","hasUDF","hasApproval","hasCoachHeader","interfaceAll","interfaceCoach","interfaceRef","interfaceOr","i","i2","roleToInterface","REFEREE","selectedName","openModal","openInternal","programID","searchTerm","coachesInternal","coachSelected","shouldShowWarning","clear","internalLoading","coachLinkSearchHeaders","internalSearchInput","selected","selectedRow","showWarning","currentVolunteer","connectedCoachLinkFirstName","connectedCoachLinkLastName","text","empty","connectedCoachLinkID","prettyConnectedTo","data","open","typeProgramID","searchInput","coaches","internalCoaches","selectedItem","volunteers","volunteerUnderEdit","searchFilter","formattedNameFirstLast","term","trim","toUpperCase","includes","programFilter","programs","coachProgram","coachLinkFirstName","coachLinkLastName","coachLinkID","t","warningCheck","hasConnecion","deep","CoachLinkSelectionModal","coachID","state","r","COACH","currentSelected","show","coach","volunteerFindToValueField","coach2IndividualID","coach1IndividualID","pendingLastName","pendingFirstName","pendingIndividualID","pendingCoachLink","isCoachLinked","find","notMeLinkID","loadCoaches","shouldForce","dispatch","loadProgramVolunteers","leagueId","isCoachLinkPending","VolunteerOptionPanel","PhonePanel","VolunteerRoleManager","AddressRowBlock","VolunteerSearch","CheckboxGroupInput","EditVolunteer","FullBody","CoachLinkSelect","getVolunteer","getTemplate","getNewTemplate","upsert","upsertVolunteer","currentLeague","leagues","currentCamp","camps","volunteerTemplate","programInStore","currentProgram","routeType","emailValidationTask","Promise","resolve","relativeRoute","newRoute","editMode","startsWith","reduce","y","editGrades","editPracticeDays","editProducts","getCurrentCoachLink","assistantCoachLink","setCurrentCoachLink","prefs","program","get","set","count","descRaw","desc","leagueAbstraction","isUpwardSelect","selectSportName","w","upperFirst","charAt","substring","join","pendingProgramChoice","titleCase","toLocaleLowerCase","loadByID","decomposeTemplate","forEach","findIndex","category","addProgram","routeChange","to","fullPath","cntpn","params","vid","console","warn","root","$router","Error","message","reconcileTemplate","typeLeagueID","LeagueTypes","UPWARDSELECT","REFEREECOMMISSIONER","splice","$route","imported","uniq","composedVolunteer","isEqual","e","stopPropagation","preventDefault","accountNumber","accounts","forceNew","VolunteerRouteRuntimeException","routeActionToVolunteer","routeName","getRouteCategoryName","routepath","matches","match","getLeagueType","routeParts"],"mappings":"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","file":"js/chunk-4ba1d878.16d859a4.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-column flex-grow-1\"},[_c('div',{staticClass:\"row pt-3 pb-2 pr-2\"},[_c('div',{staticClass:\"col-sm-auto\"},[_c('h5',{staticClass:\"px-3 py-1\"},[_c('router-link',{staticClass:\"text-primary text-capitalize\",attrs:{\"to\":_vm.cancelLink}},[_vm._v(\" \"+_vm._s(_vm.title || 'Volunteer')+\" \")]),_vm._v(\" > \"),(!_vm.isNew && _vm.editVolunteer)?_c('span',[_vm._v(_vm._s(_vm.editVolunteer.firstName)+\" \"+_vm._s(_vm.editVolunteer.lastName))]):_c('span',[_vm._v(\"New\")])],1)]),_c('div',{staticClass:\"col-sm pl-0 text-right\"},[_c('button',{staticClass:\"btn btn-success mx-1\",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),_c('router-link',{staticClass:\"btn btn-light mx-1\",attrs:{\"to\":_vm.cancelLink,\"disabled\":_vm.loading}},[_vm._v(\"Cancel\")])],1)]),(_vm.editVolunteer)?_c('FullBody',{staticClass:\"bg-light-1 p-3\"},[_c('div',{staticClass:\"row pt-3\"},[(_vm.interfaceToggles.hasProgramSelect && _vm.programsAvailable.length > 1)?_c('div',{staticClass:\"col-12\"},[_c('checkbox-group-input',{attrs:{\"value\":_vm.programsInCoachPrefs,\"value-property-name\":\"id\",\"text-property-name\":\"desc\",\"label\":\"Choose a Program\",\"items-list\":_vm.programsAvailable},on:{\"change\":_vm.warnAboutProgramChange}})],1):_vm._e()]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-lg-6 pt-3\"},[_c('vee-validate-form',[_c('edit-volunteer',{attrs:{\"value\":_vm.editVolunteer,\"email\":_vm.editEmail,\"emailValidationResolver\":_vm.emailValidationResolver},on:{\"nameUpdated\":_vm.nameUpdated,\"input\":_vm.updateVolunteer,\"email-update\":_vm.emailUpdate}}),_c('address-row-block',{attrs:{\"required\":false},model:{value:(_vm.editAddress),callback:function ($$v) {_vm.editAddress=$$v},expression:\"editAddress\"}}),_c('phone-panel',{model:{value:(_vm.editPhones),callback:function ($$v) {_vm.editPhones=$$v},expression:\"editPhones\"}})],1),_c('hr',{staticClass:\"d-lg-none\"})],1),_c('div',{staticClass:\"border-lg-left pt-3 col-lg-6\"},[_c('div',{staticClass:\"row pb-5\"},[_c('div',{staticClass:\"col-sm-12\"},[_c('h5',[_vm._v(_vm._s(_vm.selectedProgramDescription)+\" Coach Link\")]),_c('coach-link-select',{attrs:{\"league\":_vm.leagueid,\"typeProgramID\":_vm.selectedProgram,\"coachID\":_vm.currentVolunteerID},model:{value:(_vm.editCoachLink),callback:function ($$v) {_vm.editCoachLink=$$v},expression:\"editCoachLink\"}})],1)]),_c('volunteer-role-manager',{attrs:{\"role-descriptions\":_vm.currentItem.roles || [],\"suggested-roles\":_vm.rolesToExpect},model:{value:(_vm.editRoles),callback:function ($$v) {_vm.editRoles=$$v},expression:\"editRoles\"}}),_c('volunteer-option-panel',{attrs:{\"current-league\":_vm.currentItem,\"gender\":_vm.editVolunteer.gender,\"roles\":_vm.editRoles,\"coach-prefs\":_vm.editCoachPreferences,\"contact-i-d\":_vm.editVolunteer.individualID,\"programs\":_vm.editPrograms},on:{\"input\":_vm.updatePrefsAndRoles}})],1)])]):_vm._e(),_c('volunteer-search',{attrs:{\"league\":_vm.leagueid,\"role\":[0],\"auto-search\":_vm.searchName},on:{\"select\":_vm.volunteerFound}}),_c('confirm-delete-modal',{attrs:{\"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. \")])],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',{staticClass:\"row\"},[(_vm.editVolunteer)?_c('div',{staticClass:\"col-sm-6\"},[_c('text-input',{attrs:{\"vee-validate-rules\":\"required\",\"label\":\"First Name\",\"required\":\"\"},on:{\"blur\":function($event){_vm.hasBlurredFirstName = true},\"change\":_vm.fireOnChange},model:{value:(_vm.editVolunteer.firstName),callback:function ($$v) {_vm.$set(_vm.editVolunteer, \"firstName\", $$v)},expression:\"editVolunteer.firstName\"}})],1):_vm._e(),_c('div',{staticClass:\"col-sm-6\"},[_c('text-input',{attrs:{\"vee-validate-rules\":\"required\",\"label\":\"Last Name\",\"required\":\"\"},on:{\"blur\":function($event){_vm.hasBlurredLastName = true},\"change\":_vm.fireOnChange},model:{value:(_vm.editVolunteer.lastName),callback:function ($$v) {_vm.$set(_vm.editVolunteer, \"lastName\", $$v)},expression:\"editVolunteer.lastName\"}})],1),_c('div',{staticClass:\"col-sm-2\"},[_c('text-input',{attrs:{\"maxlength\":\"1\",\"size\":\"1\",\"label\":\"Initial\"},on:{\"change\":_vm.fireOnChange},model:{value:(_vm.editVolunteer.middleInitial),callback:function ($$v) {_vm.$set(_vm.editVolunteer, \"middleInitial\", $$v)},expression:\"editVolunteer.middleInitial\"}})],1),_c('div',{staticClass:\"col-sm-7\"},[_c('text-input',{attrs:{\"vee-validate-rules\":\"email\",\"label\":\"Email\"},on:{\"change\":_vm.emailUpdated},model:{value:(_vm.editEmail),callback:function ($$v) {_vm.editEmail=$$v},expression:\"editEmail\"}}),(!_vm.validEmail && _vm.editEmail.length > 0)?_c('span',{staticClass:\"alert alert-warning ml-0 p-0 pl-2 pr-2 text-nowrap\"},[_vm._v(\"Invalid or Suspicious email address (will not receive emails)\")]):_vm._e()],1),_c('div',{staticClass:\"col-sm-3\"},[_c('select-input',{attrs:{\"label\":\"Gender\",\"required\":\"\",\"items-list\":{ M: 'Male', F: 'Female' }},on:{\"change\":_vm.fireOnChange},model:{value:(_vm.editVolunteer.gender),callback:function ($$v) {_vm.$set(_vm.editVolunteer, \"gender\", $$v)},expression:\"editVolunteer.gender\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[(_vm.validEmail && _vm.editEmail.length > 0)?_c('checkbox-input',{attrs:{\"label\":\"Does Not Wish to Receive Emails\"},on:{\"input\":_vm.input},model:{value:(_vm.editVolunteer.optOutEmails),callback:function ($$v) {_vm.$set(_vm.editVolunteer, \"optOutEmails\", $$v)},expression:\"editVolunteer.optOutEmails\"}}):_vm._e()],1),(_vm.features.OPTOUT)?_c('div',{staticClass:\"col-sm-6\"},[(!_vm.disabled)?_c('checkbox-input',{attrs:{\"label\":\"Does Not Wish to Receive Text\"},on:{\"input\":_vm.input},model:{value:(_vm.editVolunteer.optOutSMS),callback:function ($$v) {_vm.$set(_vm.editVolunteer, \"optOutSMS\", $$v)},expression:\"editVolunteer.optOutSMS\"}}):_vm._e(),(_vm.disabled && _vm.editVolunteer.optOutSMS)?_c('span',{staticClass:\"alert alert-primary\"},[_vm._v(\"User has Opted Out of Text\")]):_vm._e()],1):_vm._e(),_c('div',{staticClass:\"col-sm-6\"},[_c('text-input',{attrs:{\"label\":\"Church\"},on:{\"change\":_vm.fireOnChange},model:{value:(_vm.editVolunteer.churchName),callback:function ($$v) {_vm.$set(_vm.editVolunteer, \"churchName\", $$v)},expression:\"editVolunteer.churchName\"}})],1),_c('div',{staticClass:\"col-sm-6\"},[_c('date-input',{attrs:{\"min-date\":new Date('1920-01-01 00:00:00'),\"label\":\"Birthdate\"},on:{\"input\":_vm.fireOnChange},model:{value:(_vm.editVolunteer.birthDate),callback:function ($$v) {_vm.$set(_vm.editVolunteer, \"birthDate\", $$v)},expression:\"editVolunteer.birthDate\"}})],1),_c('div',{staticClass:\"col-12\"},[_c('memo-input',{attrs:{\"label\":\"Additional Comments\"},on:{\"change\":_vm.fireOnChange},model:{value:(_vm.editVolunteer.registrationNote),callback:function ($$v) {_vm.$set(_vm.editVolunteer, \"registrationNote\", $$v)},expression:\"editVolunteer.registrationNote\"}})],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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, onMounted } from '@vue/composition-api'\nimport { cloneDeep } from 'lodash'\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 MemoInput from '@/elements/MemoInput.vue'\nimport YesNoInput from '@/elements/YesNoInput.vue'\nimport DateInput from '@/elements/DateInput.vue'\n\nimport { LeagueVolunteer } from '@/GeneratedTypes/LeagueVolunteer'\nimport {\n getEmptyLeagueVolunteer,\n isNewVolunteer,\n LeagueVolunteerSeedInfo,\n} from '@/lib/support/models/LeagueVolunteer/data'\n\nimport SelectInput from '@/elements/SelectInput.vue'\nimport VeeValidateForm from '@/elements/VeeValidateForm.vue'\nimport RadioGroupInput from '@/elements/RadioGroupInput.vue'\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: 'EditVolunteer',\n components: {\n RadioGroupInput,\n VeeValidateForm,\n SelectInput,\n DateInput,\n Loading,\n TextInput,\n CheckboxInput,\n MemoInput,\n YesNoInput,\n InputLabel,\n },\n props: {\n value: { type: Object as PropType, required: true },\n email: { type: String, required: true, default: '' },\n emailValidationResolver: {\n type: Function as PropType,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n default: () => () => {},\n required: false,\n },\n },\n setup(props, ctx) {\n const disabled = ref(false)\n // quick guard of this component.\n onMounted(() => {\n if (!store.getters.authorization.isImpersonated) {\n disabled.value = true\n }\n })\n\n const editEmail = ref('')\n\n const editVolunteer = ref(getEmptyLeagueVolunteer(new LeagueVolunteerSeedInfo()))\n\n const hasBlurredFirstName = ref(false)\n const hasBlurredLastName = ref(false)\n const hasNotifiedBlur = ref(false)\n\n const validEmail = computed(() => {\n if (editVolunteer.value && editEmail.value.length > 0) {\n return editVolunteer.value.emailAddresses?.length\n ? isNullOrEmpty(editVolunteer.value.emailAddresses[0].valid)\n ? true\n : editVolunteer.value.emailAddresses[0].valid.toLowerCase() === 'true'\n : true\n }\n return 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 /**\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(\n () => hasBlurredLastName.value,\n () => {\n if (\n isNewVolunteer(editVolunteer.value) &&\n hasBlurredFirstName.value &&\n hasBlurredLastName.value &&\n hasNotifiedBlur.value &&\n editVolunteer.value.firstName && //and first and last exist\n editVolunteer.value.lastName\n ) {\n hasNotifiedBlur.value = true\n ctx.emit('nameUpdated', editVolunteer.value.firstName, editVolunteer.value.lastName)\n }\n }\n )\n\n /**\n * copy email prop to mutable internal version\n */\n watch(\n () => props.email,\n () => {\n editEmail.value = props.email\n },\n { immediate: true }\n )\n\n /**\n * Triggered on email input change\n */\n async function emailUpdated() {\n emailUpdate()\n await onEmailConfirm()\n }\n\n /**\n * event to tell parent that email is updated\n */\n function emailUpdate() {\n ctx.emit('email-update', editEmail.value)\n }\n\n /**\n * Event that volunteer basic info changed (but not email)\n */\n function input() {\n ctx.emit('input', editVolunteer.value)\n }\n\n /**\n * Send parent the new LeagueVolunteer\n */\n function fireOnChange() {\n input()\n }\n\n // reflect changes passed from parent into the edit structures.\n watch(\n () => props.value,\n () => {\n editVolunteer.value = cloneDeep(props.value)\n },\n { immediate: true }\n )\n\n async function onEmailConfirm() {\n try {\n //run email address through auto-correction\n if (editEmail.value) {\n const correctedEmail = await emailServiceClient.getCorrectedEmail({\n email: editEmail.value,\n } as IndividualEmailCheck)\n\n if (correctedEmail) {\n editEmail.value = correctedEmail\n emailUpdate()\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 } finally {\n props.emailValidationResolver()\n }\n }\n\n return {\n ...useFeatureFlags(),\n disabled,\n editVolunteer,\n hasBlurredFirstName,\n fireOnChange,\n hasBlurredLastName,\n editEmail,\n emailUpdated,\n validEmail,\n input,\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!./EditVolunteer.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!./EditVolunteer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EditVolunteer.vue?vue&type=template&id=67da35c2&\"\nimport script from \"./EditVolunteer.vue?vue&type=script&lang=ts&\"\nexport * from \"./EditVolunteer.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 { LeagueVolunteer } from '@/GeneratedTypes/LeagueVolunteer'\n\nimport { getEmptyIndividualAddress } from '@/lib/support/models/IndividualAddress/data'\n\nimport { RuntimeException } from '@/lib/common/exceptions/RuntimeException'\n\nimport { DecomposedArgs } from '@/views/Programs/Volunteers/ext/edittypes'\nimport { CoachProgram } from '@/GeneratedTypes/CoachProgram'\nimport { getEmptyCoachProgram, seedWithProgramID } from '@/lib/support/models/CoachProgram/data'\nimport { getFirstEmail } from '@/lib/support/models/IndividualEmail/email_list_operations'\nimport { cloneDeep } from 'lodash'\nimport { getEmptyLeagueCoach } from '@/lib/support/models/LeagueCoach/data'\n\nclass VolunteerDataRuntimeException extends RuntimeException {\n name = 'Volunteer Data Runtime Exception'\n}\n\nexport function getProgram(input: LeagueVolunteer, programName: string): CoachProgram | null {\n if (input?.coachPreferences?.programs?.length) {\n const pi = input.coachPreferences.programs.find((x) => x.typeProgramID == programName)\n if (pi) {\n return pi\n }\n return getEmptyCoachProgram(seedWithProgramID(programName))\n }\n return null\n}\n\n/***\n * All assumptions about where form elements are coming from are made here.\n *\n * @param input incoming league player\n * @param programName\n * @return decomposed form members from a a leagueplayer\n */\nexport function decomposeLeagueVolunteer(input: LeagueVolunteer): DecomposedArgs {\n return cloneDeep({\n address: input?.addresses?.[0] || getEmptyIndividualAddress(),\n volunteer: input, //these are the basic top-level fields like name\n phones: input.phoneNumbers ?? [],\n roles: input.roles ?? [],\n email: getFirstEmail(input).emailAddress ?? '',\n coachPreferences: input.coachPreferences ?? getEmptyLeagueCoach(),\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: LeagueVolunteer, template: LeagueVolunteer): LeagueVolunteer {\n let rv = edit\n if (!edit || !edit.firstName || !edit.lastName) {\n rv = template\n }\n\n if (!edit || !template) {\n throw new VolunteerDataRuntimeException('expected edit and template to be set on reconcile')\n }\n rv.accountNumber = template.accountNumber\n rv.individualID = template.individualID\n rv.coachPreferences = template.coachPreferences\n rv.roles = template.roles\n rv.phoneNumbers = template.phoneNumbers\n rv.addresses = template.addresses\n rv.emailAddresses = template.emailAddresses\n rv.birthDate = template.birthDate\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('h5',[_vm._v(\" Roles \"),_c('i',{staticClass:\"fas fa-pencil-alt text-primary clickable\",on:{\"click\":_vm.add}})]),_vm._l((_vm.roleList),function(role){return _c('role-element',{key:role.id,attrs:{\"role\":role},on:{\"remove\":_vm.removeRole}})}),_c('ModalMultiSelect',{attrs:{\"values\":_vm.roleValues,\"selected-ids\":_vm.currentRoleIds},on:{\"save\":_vm.save},model:{value:(_vm.selectOpen),callback:function ($$v) {_vm.selectOpen=$$v},expression:\"selectOpen\"}}),_c('confirm-delete-modal',{attrs:{\"has-confirm-box\":false},on:{\"onDeleteConfirmed\":_vm.confirmedRemoveRole},model:{value:(_vm.removeConfirmBoxOpen),callback:function ($$v) {_vm.removeConfirmBoxOpen=$$v},expression:\"removeConfirmBoxOpen\"}},[_vm._v(\" Data related to this role will be reset, are you sure you want to remove this role? \")]),_c('ModalMultiSelect',{attrs:{\"values\":_vm.suggestedRoleList,\"selected-ids\":[],\"require-one\":true},on:{\"save\":_vm.saveSuggested},model:{value:(_vm.suggestedRolesOpen),callback:function ($$v) {_vm.suggestedRolesOpen=$$v},expression:\"suggestedRolesOpen\"}},[_vm._v(\"Select from these suggested Roles\")])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { LeagueVolunteerRole } from '@/GeneratedTypes/LeagueVolunteerRole'\nimport { RolesEnum } from '@/lib/support/models/LeagueVolunteer/data'\n\nexport function getEmptyLeagueVolunteerRole(seed?: LeagueVolunteerRoleSeed): LeagueVolunteerRole {\n return {\n roleID: seed?.roleID || 0,\n approved: false,\n authorizedExpireDate: null,\n udFs: [],\n upwardAuthInvitationID: null,\n }\n}\n\nexport class LeagueVolunteerRoleSeed {\n roleID = 0\n}\n\nexport function roleIDSeed(Role: number | RolesEnum) {\n const c = new LeagueVolunteerRoleSeed()\n c.roleID = Role\n return c\n}\n","\n\n\n\n\n\n\n\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 { LeagueVolunteerRole } from '@/GeneratedTypes/LeagueVolunteerRole'\nimport { RoleElementType } from '@/models/RoleElement/RoleElement'\nimport { cloneDeep, difference, intersection } from 'lodash'\nimport { TypeLeagueVolunteerRole } from '@/GeneratedTypes/TypeLeagueVolunteerRole'\nimport { roleById } from '@/lib/support/models/UpwardTypes/TypeLeagueVolunteerRole/data'\nimport RoleElement from '@/elements/css/RoleElement.vue'\nimport ModalMultiSelect from '@/components/ModalMultiSelect.vue'\nimport { getEmptyLeagueVolunteerRole, roleIDSeed } from '@/lib/support/models/LeagueVolunteerRole/data'\nimport ConfirmDeleteModal from '@/components/ConfirmDeleteModal.vue'\nimport CheckboxInput from '@/elements/CheckboxInput.vue'\nimport RoleApproval from '@/views/Programs/Volunteers/vues/RoleApproval.vue'\n\nexport default defineComponent({\n name: 'VolunteerRoleManager',\n components: { RoleApproval, CheckboxInput, ConfirmDeleteModal, ModalMultiSelect, RoleElement },\n props: {\n value: { required: true, default: () => [], type: Array as PropType },\n roleDescriptions: {\n required: true,\n default: () => [],\n type: Array as PropType,\n },\n suggestedRoles: { required: true, default: () => [], type: Array as PropType },\n },\n setup(props, ctx) {\n const internalRoles = ref([])\n const selectOpen = ref(false)\n const removeConfirmBoxOpen = ref(false)\n const rolesPendingDelete = ref([]) // role to delete or none.\n const suggestedRolesOpen = ref(false)\n\n /**\n * Event on role remove click -- feeds into confirmedRemoveRole if user confirm.\n */\n function removeRole(role: number) {\n rolesPendingDelete.value = [role]\n removeConfirmBoxOpen.value = true\n }\n\n /**\n * event for confirm of role removal\n */\n function confirmedRemoveRole() {\n internalRoles.value = [\n ...internalRoles.value.filter((x) => rolesPendingDelete.value.indexOf(x.roleID) < 0),\n ]\n input() //tell parent\n }\n\n function add() {\n selectOpen.value = true\n }\n\n /***\n * Returns the list of roles the user is being offered depending on\n * whether they are seeing all roles or suggested roled\n */\n function displayingRoles() {\n return suggestedRolesOpen.value\n ? intersection(props.suggestedRoles.map(String), currentRoleIds.value)\n : currentRoleIds.value\n }\n\n /***\n * Save gets hit on multiselect, passes list of selected values as string[]\n */\n function save(roles: string[]) {\n const displaying = displayingRoles()\n const rolesToDelete: string[] = difference(displaying, roles)\n const rolesToAdd: string[] = difference(roles, displaying)\n\n internalRoles.value = [\n ...internalRoles.value,\n ...rolesToAdd.map((x) => getEmptyLeagueVolunteerRole(roleIDSeed(parseInt(x)))),\n ]\n\n if (rolesToDelete?.length) {\n rolesPendingDelete.value = [...rolesToDelete.map((x) => parseInt(x))]\n removeConfirmBoxOpen.value = true // do a confirm on removed roles.\n }\n // update parent with the adds, deletes will update after confirm.\n input()\n }\n\n function input() {\n ctx.emit('input', internalRoles.value)\n }\n\n function saveSuggested(saves: string[]) {\n save(saves)\n }\n\n watch(\n () => props.value,\n () => {\n internalRoles.value = cloneDeep(props.value)\n },\n { immediate: true }\n )\n\n const suggestedRoleList = computed(() =>\n props.suggestedRoles.map((x) => ({\n id: x,\n description: roleById(x, props.roleDescriptions)?.description ?? 'n/a',\n }))\n )\n\n /***\n * Suggested Roles gives a chance to prompt the user for what should be\n * the role they want the user to have.\n */\n watch(\n () => props.suggestedRoles,\n () => {\n const numIntersectionOfSuggested = intersection(\n internalRoles.value.map((x) => x.roleID),\n props.suggestedRoles\n ).length\n if (numIntersectionOfSuggested == 0 && props.suggestedRoles.length == 1) {\n // we can add one role without asking the user.\n internalRoles.value.push(getEmptyLeagueVolunteerRole(roleIDSeed(props.suggestedRoles[0])))\n input() //trigger change in parent\n return\n }\n if (!numIntersectionOfSuggested) {\n //force the dialog.\n suggestedRolesOpen.value = true\n }\n }\n )\n\n const currentRoleIds = computed((): string[] => internalRoles.value.map((x) => x.roleID.toString()))\n\n /**\n * Fixes role List to include string id.\n */\n const roleValues = computed(() => {\n return cloneDeep(props.roleDescriptions)\n .sort((a, b) => a.sortOrder - b.sortOrder)\n .map((x) => ({\n id: x.id.toString(),\n description: x.description,\n }))\n })\n\n /**\n * Role list for role elements.\n */\n const roleList = computed((): RoleElementType[] => {\n return internalRoles.value.map((x) => ({\n id: x.roleID,\n description: roleById(x.roleID, props.roleDescriptions)?.description ?? 'n/a',\n }))\n })\n\n return {\n add,\n removeRole,\n roleList,\n selectOpen,\n roleValues,\n currentRoleIds,\n save,\n removeConfirmBoxOpen,\n confirmedRemoveRole,\n suggestedRolesOpen,\n suggestedRoleList,\n saveSuggested,\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!./VolunteerRoleManager.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!./VolunteerRoleManager.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VolunteerRoleManager.vue?vue&type=template&id=550dd050&\"\nimport script from \"./VolunteerRoleManager.vue?vue&type=script&lang=ts&\"\nexport * from \"./VolunteerRoleManager.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 align-items-end no-gutters\"},[_c('div',{staticClass:\"col-sm\"},[_c('label',{staticClass:\"text-uppercase\"},[_vm._v(\"Phone\")]),_vm._l((_vm.internalValue),function(phone,index){return _c('phone-input',{key:phone.phoneID,staticClass:\"m-0\",model:{value:(_vm.internalValue[index]),callback:function ($$v) {_vm.$set(_vm.internalValue, index, $$v)},expression:\"internalValue[index]\"}})})],2),_c('div',{staticClass:\"col-sm-auto mb-3\"},[(_vm.internalValue.length < _vm.maxPhones)?_c('a',{staticClass:\"text-success pr-1\",attrs:{\"href\":\"javascript:void(0);\"},on:{\"click\":_vm.addPhone}},[_vm._v(\" +\"),_c('i',{staticClass:\"fa fa-phone\",attrs:{\"aria-hidden\":\"true\"}})]):_vm._e()])])}\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, watch, PropType } from '@vue/composition-api'\nimport { IndividualPhone } from '../GeneratedTypes/IndividualPhone'\nimport PhoneInput from './PhoneInput.vue'\nimport { decrementingPhoneIDStrategy, getEmptyPhone } from '../lib/support/models/IndividualPhone/data'\n\nexport default defineComponent({\n name: 'PhonePanel',\n components: {\n PhoneInput,\n },\n props: {\n value: { type: Array as PropType, required: true, default: () => [] },\n maxPhones: { type: Number, required: false, default: 99 },\n },\n setup(props) {\n const internalValue = ref([])\n watch(\n () => props.value,\n () => {\n internalValue.value = props.value\n // if internal value doesn't have at least one phone then seed a phone\n if (!internalValue.value.length) {\n // our phone ids will be negative if not coming from the server, we'll convert them later.\n internalValue.value.push(getEmptyPhone(decrementingPhoneIDStrategy()))\n }\n },\n { immediate: true }\n )\n\n function addPhone() {\n // will add a new phone to the list.\n internalValue.value.push(getEmptyPhone(decrementingPhoneIDStrategy()))\n }\n\n return {\n internalValue,\n addPhone,\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!./PhonePanel.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!./PhonePanel.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PhonePanel.vue?vue&type=template&id=b639bba4&\"\nimport script from \"./PhonePanel.vue?vue&type=script&lang=ts&\"\nexport * from \"./PhonePanel.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('search-modal',{attrs:{\"headers\":_vm.volunteerSearchHeaders,\"title\":\"Volunteer\",\"data\":_vm.searchData,\"loading\":_vm.searchActive,\"item-key\":\"individualID\",\"showSearchInput\":!_vm.autoSearch},on:{\"updateSearch\":_vm.updateSearch,\"onSelected\":_vm.searchSelected},model:{value:(_vm.showModal),callback:function ($$v) {_vm.showModal=$$v},expression:\"showModal\"}},[(_vm.autoSearch)?[_c('p',[_vm._v(\"We found some existing volunteers that look like the one you are entering.\")]),_c('p',[_vm._v(\"Select one that may apply or cancel if none are related.\")])]:[_vm._v(\"Type a couple letters in the name of the volunteer you are trying to find. \")]],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\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 { volunteerSearchHeaders } from '@/lib/components/CoachSelectionModal/VolunteerSelectionGridColumns'\nimport volunteersClient from '@/clients/volunteersClient'\nimport { PlayerSearchInfo } from '@/GeneratedTypes/ListInfo/PlayerSearchInfo'\nimport SearchModal from '@/elements/SearchModal.vue'\nimport { RolesEnum } from '@/lib/support/models/LeagueVolunteer/data'\nimport { VolunteerSearchInfo } from '@/GeneratedTypes/ListInfo/VolunteerSearchInfo'\n\ntype ANY_ROLE_TYPE = number[]\nexport const ANY_ROLE = [0]\n\ninterface VolunteerSearchInfoDisplay extends VolunteerSearchInfo {\n name: string\n}\n\nexport default defineComponent({\n name: 'VolunteerSearch',\n components: {\n SearchModal,\n },\n props: {\n autoSearch: { required: false, type: String, default: '' },\n league: { required: true, type: String, default: '' },\n roles: { required: false, type: Array as PropType, default: () => ANY_ROLE },\n visible: { required: false, type: Boolean, default: false },\n },\n setup(props, ctx) {\n const showModal = ref(props.visible)\n /** Functionality Related to Search of Former Volunteer **/\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 } else {\n ctx.emit('close')\n }\n }\n )\n\n watch(\n () => props.autoSearch,\n async function () {\n if (props.autoSearch) {\n const [last, first] = props.autoSearch.split(',')\n searchActive.value = true\n try {\n const result = [\n ...(await volunteersClient.search({\n leagueID: props.league,\n orSearch: false,\n role: props.roles,\n first,\n last,\n email: '',\n phone: '',\n })),\n ]\n\n searchData.value = result.map((v) => {\n return {\n ...v,\n name: `${v.firstName} ${v.lastName}`,\n }\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', p.individualID)\n }\n\n /***\n * Callback on the SearchModal\n * @param s\n */\n async function updateSearch(s: string) {\n if (!searchActive.value) {\n searchActive.value = true\n try {\n const result = [\n ...(await volunteersClient.search({\n leagueID: props.league,\n role: props.roles,\n orSearch: true,\n first: s,\n last: s,\n email: '',\n phone: '',\n })),\n ]\n searchData.value = result.map((v) => {\n return {\n ...v,\n name: `${v.firstName} ${v.lastName}`,\n }\n })\n } finally {\n searchActive.value = false\n }\n }\n }\n\n return {\n volunteerSearchHeaders,\n showModal,\n searchData,\n searchActive,\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!./VolunteerSearch.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!./VolunteerSearch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VolunteerSearch.vue?vue&type=template&id=d76bed8c&scoped=true&\"\nimport script from \"./VolunteerSearch.vue?vue&type=script&lang=ts&\"\nexport * from \"./VolunteerSearch.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 \"d76bed8c\",\n null\n \n)\n\nexport default component.exports","import { RolesEnum } from '@/lib/support/models/LeagueVolunteer/data'\nimport { RoleHasCoachPreferences } from '@/views/Programs/Volunteers/ext/roleutils'\n\nexport interface InterfaceToggles {\n hasPracticeDays: boolean\n hasGradesToCoach: boolean\n hasShirtSize: boolean\n hasUDF: boolean\n hasApproval: boolean\n hasProgramSelect: boolean\n hasCoachHeader: boolean\n}\n\nexport const interfaceNone: InterfaceToggles = {\n hasPracticeDays: false,\n hasGradesToCoach: false,\n hasShirtSize: false,\n hasUDF: false,\n hasApproval: false,\n hasProgramSelect: false,\n hasCoachHeader: false,\n}\nconst interfaceAll: InterfaceToggles = {\n hasPracticeDays: true,\n hasGradesToCoach: true,\n hasShirtSize: true,\n hasUDF: true,\n hasApproval: true,\n hasProgramSelect: true,\n hasCoachHeader: true,\n}\nconst interfaceCoach = interfaceAll\n\nconst interfaceRef = { ...interfaceNone, hasApproval: true }\n\nexport function interfaceOr(i: InterfaceToggles, i2: InterfaceToggles) {\n return {\n hasPracticeDays: i.hasPracticeDays || i2.hasPracticeDays,\n hasGradesToCoach: i.hasGradesToCoach || i2.hasGradesToCoach,\n hasShirtSize: i.hasShirtSize || i2.hasShirtSize,\n hasUDF: i.hasUDF || i2.hasUDF,\n hasApproval: i.hasApproval || i2.hasApproval,\n hasProgramSelect: i.hasProgramSelect || i2.hasProgramSelect,\n hasCoachHeader: i.hasCoachHeader || i2.hasCoachHeader,\n }\n}\n\nexport function roleToInterface(role: RolesEnum | number) {\n if (RoleHasCoachPreferences(role)) {\n return interfaceCoach\n } else if (role == RolesEnum.REFEREE) {\n return interfaceRef\n } else {\n return interfaceNone\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('text-input',{attrs:{\"label\":\"Select to link a coach\",\"append-icon\":\"edit\",\"enabled\":false,\"value\":_vm.selectedName},on:{\"icon-click\":_vm.openModal}}),_c('coach-link-selection-modal',{attrs:{\"open\":_vm.openInternal,\"leagueID\":_vm.league,\"typeProgramID\":_vm.programID,\"searchInput\":_vm.searchTerm,\"coaches\":_vm.coachesInternal,\"loading\":_vm.loading},on:{\"selected\":_vm.coachSelected,\"show\":_vm.openModal}}),(!_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\":\"Select to link a coach\",\"item-key\":\"individualID\",\"loading\":_vm.internalLoading,\"data\":_vm.searchData,\"headers\":_vm.coachLinkSearchHeaders,\"searchTerm\":_vm.internalSearchInput},on:{\"updateSearch\":_vm.updateSearch,\"onSelected\":_vm.selected},model:{value:(_vm.showModal),callback:function ($$v) {_vm.showModal=$$v},expression:\"showModal\"}}),(_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.currentVolunteer.firstName)+\" \"+_vm._s(_vm.currentVolunteer.lastName))]),_vm._v(\" to \"),_c('b',[_vm._v(_vm._s(_vm.selectedRow.firstName)+\" \"+_vm._s(_vm.selectedRow.lastName))]),_vm._v(\", and \"+_vm._s(_vm.selectedRow.firstName)+\" is already connected to \"+_vm._s(_vm.selectedRow.connectedCoachLinkFirstName)+\" \"+_vm._s(_vm.selectedRow.connectedCoachLinkLastName)+\". \")]),_c('p',[_vm._v(\" Click \"),_c('b',[_vm._v(\"Select\")]),_vm._v(\" to make \"+_vm._s(_vm.selectedRow.firstName)+\" the \"),_c('u',[_vm._v(\"primary\")]),_vm._v(\" link for \"+_vm._s(_vm.currentVolunteer.firstName)+\". \")]),_c('p',[_vm._v(\" Click \"),_c('b',[_vm._v(\"Request\")]),_vm._v(\" to make \"+_vm._s(_vm.selectedRow.firstName)+\" the \"),_c('u',[_vm._v(\"requested\")]),_vm._v(\" link for \"+_vm._s(_vm.currentVolunteer.firstName)+\" . If these coaches are not linked, check the Coach Links Broken report. \")])]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { DataTableHeader } from 'vuetify/types'\n\nconst coachLinkSearchHeaders = [\n { text: 'Name', value: 'name' },\n { text: 'Gender', value: 'gender' },\n { text: 'Existing Link', value: 'prettyConnectedTo' },\n] as DataTableHeader[]\n\ninterface CoachLinkSelectionGridInfo {\n /** how the name should be formatted for display **/\n name: string\n /** unique ID for the volunteer **/\n individualID: number\n /** additional field per requirements */\n gender: string\n /** firstName easy deconstructed name **/\n firstName: string\n /** lastName for a deconstructed name **/\n lastName: string\n /** provides for a selected, puts a check on the selected */\n selected: boolean\n connectedCoachLinkFirstName: string\n connectedCoachLinkLastName: string\n connectedCoachLinkID: number\n prettyConnectedTo: string\n}\nconst empty = (): CoachLinkSelectionGridInfo => {\n return {\n name: '',\n individualID: 0,\n gender: '',\n firstName: '',\n lastName: '',\n connectedCoachLinkFirstName: '',\n connectedCoachLinkLastName: '',\n connectedCoachLinkID: 0,\n prettyConnectedTo: '',\n selected: false,\n }\n}\nexport { empty, coachLinkSearchHeaders, CoachLinkSelectionGridInfo }\n","\n\n\n\n\n\n\n\n\n\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 SearchModal from '@/elements/SearchModal.vue'\nimport { LeagueVolunteerInfo } from '@/GeneratedTypes/ListInfo/LeagueVolunteerInfo'\nimport { CoachProgramInfo } from '@/GeneratedTypes/ListInfo/CoachProgramInfo'\nimport {\n coachLinkSearchHeaders,\n CoachLinkSelectionGridInfo,\n empty as emptyCoachLinkSelectionGridInfo,\n} from '@/lib/components/CoachSelectionModal/CoachLinkSelectionGridColumns'\nimport store from '@/store'\n\nexport default defineComponent({\n components: {\n SearchModal,\n },\n data() {\n return { coachLinkSearchHeaders }\n },\n props: {\n open: { type: Boolean, required: true, default: false },\n typeProgramID: { type: String, required: true, default: '' },\n leagueID: { type: String, required: true, default: '' },\n searchInput: { type: String, required: false, default: '' },\n loading: { type: Boolean, required: false, default: false },\n coaches: {\n type: Array as PropType,\n required: true,\n default: [] as LeagueVolunteerInfo[],\n },\n },\n setup(props, { emit }) {\n const internalLoading = ref(props.loading)\n const internalSearchInput = ref(props.searchInput)\n const internalCoaches = ref(props.coaches as LeagueVolunteerInfo[])\n const selectedItem = ref(emptyCoachLinkSelectionGridInfo() as CoachLinkSelectionGridInfo)\n const selectedRow = ref(emptyCoachLinkSelectionGridInfo() as CoachLinkSelectionGridInfo)\n const showModal = ref(props.open)\n const showWarning = ref(false)\n const currentVolunteer = computed(() => store.getters.volunteers.volunteerUnderEdit)\n const selected = (s: CoachLinkSelectionGridInfo) => {\n selectedItem.value = s\n }\n const searchFilter = (c: LeagueVolunteerInfo) => {\n const name = c.formattedNameFirstLast ?? ''\n const term = internalSearchInput.value?.trim() ?? ''\n return !term || name.toUpperCase().includes(term.toUpperCase())\n }\n const programFilter = (c: LeagueVolunteerInfo) => {\n const programs = c.coachPreferences?.programs ?? ([] as CoachProgramInfo[])\n return programs.filter((p) => p.typeProgramID == props.typeProgramID).length > 0\n }\n const searchData = computed(() => {\n return internalCoaches.value\n .filter((v) => programFilter(v) && searchFilter(v))\n .map(\n (c): CoachLinkSelectionGridInfo => {\n const coachProgram = (c.coachPreferences?.programs ?? ([] as CoachProgramInfo[])).filter(\n (p) => p.typeProgramID == props.typeProgramID\n )[0]\n return {\n individualID: c.individualID,\n firstName: c.firstName!,\n lastName: c.lastName!,\n name: c.formattedNameFirstLast!,\n gender: c.gender!,\n selected: selectedItem.value.individualID == c.individualID,\n connectedCoachLinkFirstName: coachProgram.coachLinkFirstName!,\n connectedCoachLinkLastName: coachProgram.coachLinkLastName!,\n connectedCoachLinkID: coachProgram.coachLinkID,\n prettyConnectedTo: `${coachProgram.coachLinkFirstName} ${coachProgram.coachLinkLastName}`,\n }\n }\n )\n })\n const updateSearch = (t: string) => {\n internalSearchInput.value = t\n }\n const warningCheck = (a: CoachLinkSelectionGridInfo) => {\n selectedRow.value = a\n const hasConnecion = `${a?.connectedCoachLinkFirstName}${a?.connectedCoachLinkLastName}`.length > 0\n showWarning.value = hasConnecion && !a?.selected\n }\n watch(\n () => props.loading,\n () => {\n internalLoading.value = props.loading\n },\n { immediate: true }\n )\n watch(\n () => props.searchInput,\n () => {\n internalSearchInput.value = props.searchInput\n },\n { immediate: true }\n )\n watch(\n () => selectedItem.value,\n () => {\n emit('selected', selectedItem.value)\n }\n )\n watch(\n () => props.open,\n () => {\n showModal.value = props.open\n }\n )\n watch(\n () => showModal.value,\n () => {\n emit('show', showModal.value)\n }\n )\n watch(\n () => props.coaches,\n () => {\n internalCoaches.value = props.coaches\n },\n { immediate: true, deep: true }\n )\n return {\n showModal,\n showWarning,\n searchData,\n internalSearchInput,\n internalLoading,\n selectedItem,\n currentVolunteer,\n selectedRow,\n selected,\n updateSearch,\n warningCheck,\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!./CoachSelectionModal.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!./CoachSelectionModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CoachSelectionModal.vue?vue&type=template&id=1e4cecc3&\"\nimport script from \"./CoachSelectionModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./CoachSelectionModal.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\nimport { defineComponent, ref, PropType, watch, computed, onMounted } from '@vue/composition-api'\nimport TextInput from '@/elements/TextInput.vue'\nimport { RolesEnum } from '@/lib/support/models/LeagueVolunteer/data'\nimport CoachLinkSelectionModal from '@/components/CoachSelectionModal.vue'\nimport {\n CoachLinkSelectionGridInfo,\n empty as emptyCoachLink,\n} from '@/lib/components/CoachSelectionModal/CoachLinkSelectionGridColumns'\nimport { cloneDeep } from 'lodash'\nimport { CoachAssistantLink, empty as emptyCoachAssistantLink } from '@/GeneratedTypes/CoachAssistantLink'\nimport store from '@/store'\n\nexport default defineComponent({\n components: {\n TextInput,\n CoachLinkSelectionModal,\n },\n props: {\n league: { type: String, required: true, default: '' },\n typeProgramID: { type: String, required: true, default: '' },\n value: {\n type: Object as PropType,\n required: true,\n default: emptyCoachAssistantLink(),\n },\n coachID: { type: Number, required: true, default: 0 },\n },\n setup(props, { emit }) {\n const loading = ref(false)\n const openInternal = ref(false)\n const coachesInternal = computed(() =>\n store.state.volunteers.volunteers.filter(\n (v) => (v.roles?.filter((r) => r.roleID == RolesEnum.COACH) ?? []).length > 0\n )\n )\n const internalValue = ref(cloneDeep(props.value) as CoachAssistantLink)\n const currentSelected = ref(emptyCoachLink())\n const searchTerm = ref('')\n const programID = ref(props.typeProgramID)\n\n const openModal = (show = true) => {\n openInternal.value = show\n }\n const coachSelected = (coach: CoachLinkSelectionGridInfo | null) => {\n currentSelected.value = coach ?? emptyCoachLink()\n volunteerFindToValueField(coach)\n emit('input', internalValue.value)\n }\n const volunteerFindToValueField = (coach: CoachLinkSelectionGridInfo | null) => {\n if (coach) {\n internalValue.value.coach2IndividualID = coach.individualID\n internalValue.value.coach1IndividualID = props.coachID\n internalValue.value.pendingLastName = ''\n internalValue.value.pendingFirstName = ''\n internalValue.value.pendingIndividualID = 0\n } else {\n internalValue.value = emptyCoachAssistantLink()\n }\n }\n const pendingCoachLink = (coach: CoachLinkSelectionGridInfo) => {\n internalValue.value.coach2IndividualID = 0\n internalValue.value.pendingIndividualID = coach.individualID\n internalValue.value.coach1IndividualID = props.coachID\n internalValue.value.pendingLastName = ''\n internalValue.value.pendingFirstName = ''\n }\n const selectedName = computed(() => {\n if (isCoachLinked.value) {\n const x = coachesInternal.value.find((c) => notMeLinkID.value == c.individualID)\n return x?.formattedNameFirstLast ?? ''\n }\n const x = coachesInternal.value.find((c) => internalValue.value.pendingIndividualID == c.individualID)\n if (x) {\n return x?.formattedNameFirstLast ?? ''\n }\n if (internalValue.value.pendingLastName) {\n return `${internalValue.value.pendingFirstName} ${internalValue.value.pendingLastName}`\n }\n })\n onMounted(async () => {\n await loadCoaches()\n })\n const loadCoaches = async () => {\n try {\n loading.value = true\n const shouldForce = true\n await store.dispatch.volunteers.loadProgramVolunteers({ leagueId: props.league, shouldForce })\n } finally {\n loading.value = false\n }\n }\n watch(\n () => props.value,\n () => {\n internalValue.value = cloneDeep(props.value)\n }\n )\n watch(\n () => props.typeProgramID,\n () => {\n programID.value = props.typeProgramID\n }\n )\n const notMeLinkID = computed(() => {\n if (internalValue.value.coach1IndividualID == props.coachID) {\n return internalValue.value.coach2IndividualID\n }\n return internalValue.value.coach1IndividualID\n })\n const shouldShowWarning = computed(() => {\n return (\n (!isCoachLinkPending.value && internalValue.value.pendingLastName) ||\n internalValue.value.pendingFirstName ||\n internalValue.value.pendingIndividualID\n )\n })\n const isCoachLinkPending = computed(() => {\n return (\n (!isCoachLinked.value && internalValue.value.pendingLastName) ||\n internalValue.value.pendingFirstName ||\n internalValue.value.pendingIndividualID\n )\n })\n const isCoachLinked = computed(() => {\n return !!notMeLinkID.value\n })\n const clear = () => {\n coachSelected(null)\n }\n return {\n openModal,\n selectedName,\n openInternal,\n searchTerm,\n coachSelected,\n shouldShowWarning,\n clear,\n programID,\n pendingCoachLink,\n coachesInternal,\n loading,\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!./CoachLinkSelect.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!./CoachLinkSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CoachLinkSelect.vue?vue&type=template&id=a953a8a6&\"\nimport script from \"./CoachLinkSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./CoachLinkSelect.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\nimport { Route } from 'vue-router'\nimport lodash, { cloneDeep, upperFirst } from 'lodash'\n\nimport FullBody from '@/components/FullBody.vue'\n\n/**components */\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'\n\nimport EditVolunteer from './vues/EditVolunteer.vue'\n/** model support */\nimport SelectInput from '@/elements/SelectInput.vue'\nimport {\n getEmptyLeagueVolunteer,\n isImportedVolunteer,\n LeagueVolunteerSeedInfo,\n VolunteerID,\n VolunteerIDType,\n} from '@/lib/support/models/LeagueVolunteer/data'\nimport { LeagueVolunteer } from '@/GeneratedTypes/LeagueVolunteer'\n\nimport RadioGroupInput from '@/elements/RadioGroupInput.vue'\nimport { decomposeLeagueVolunteer } from '@/views/Programs/Volunteers/ext/decomposeutils'\nimport VeeValidateForm from '@/elements/VeeValidateForm.vue'\nimport AddressRowBlock from '@/components/AddressRowBlock.vue'\nimport { IndividualAddress } from '@/GeneratedTypes/IndividualAddress'\nimport { getEmptyIndividualAddress } from '@/lib/support/models/IndividualAddress/data'\nimport { IndividualPhone } from '@/GeneratedTypes/IndividualPhone'\nimport { LeagueVolunteerRole } from '@/GeneratedTypes/LeagueVolunteerRole'\nimport VolunteerRoleManager from '@/views/Programs/Volunteers/vues/VolunteerRoleManager.vue'\n\nimport {\n getRouteCategoryName,\n routeActionToVolunteer,\n getLeagueType,\n} from '@/views/Programs/Volunteers/ext/routeutils'\nimport {\n CategoryNameToCategory,\n CategoryNameToProgramName,\n categoryToRoles,\n categoryToTitle,\n} from '@/views/Programs/Volunteers/ext/roleutils'\nimport { RolesEnum } from '@/lib/support/models/LeagueVolunteer/data'\nimport { composeLeagueVolunteer } from '@/views/Programs/Volunteers/ext/composeutils'\nimport PhonePanel from '@/components/PhonePanel.vue'\nimport VolunteerSearch from '@/components/VolunteerSearch.vue'\nimport { CoachGenderGrade } from '@/GeneratedTypes/CoachGenderGrade'\nimport { CoachPracticeAvailability } from '@/GeneratedTypes/CoachPracticeAvailability'\n\nimport ConfirmDeleteModal from '@/components/ConfirmDeleteModal.vue'\nimport { interfaceNone, interfaceOr, roleToInterface } from '@/views/Programs/Volunteers/ext/interfaceutils'\nimport store from '@/store'\nimport { computed, defineComponent, ref, watch } from '@vue/composition-api'\nimport { CoachProduct } from '@/GeneratedTypes/CoachProduct'\nimport VolunteerOptionPanel from '@/views/Programs/Volunteers/vues/VolunteerOptionPanel.vue'\nimport { getEmptyLeagueCoach } from '@/lib/support/models/LeagueCoach/data'\nimport CheckboxGroupInput from '@/elements/CheckboxGroupInput.vue'\nimport { LeagueCoach } from '@/GeneratedTypes/LeagueCoach'\nimport { LeagueTypes } from '@/lib/common/LeagueTypes'\nimport CoachLinkSelect from './vues/CoachLinkSelect.vue'\nimport { CoachAssistantLink, empty as emptyCoachLink } from '@/GeneratedTypes/CoachAssistantLink'\n\nexport default defineComponent({\n components: {\n VolunteerOptionPanel,\n PhonePanel,\n VolunteerRoleManager,\n AddressRowBlock,\n VeeValidateForm,\n RadioGroupInput,\n ConfirmDeleteModal,\n VolunteerSearch,\n SelectInput,\n Loading,\n TextInput,\n CheckboxInput,\n CheckboxGroupInput,\n MemoInput,\n YesNoInput,\n InputLabel,\n EditVolunteer,\n FullBody,\n CoachLinkSelect,\n },\n setup(props, ctx) {\n /** props */\n /** actions */\n const {\n loadProgramVolunteers,\n getVolunteer,\n getNewTemplate: getTemplate,\n upsertVolunteer: upsert,\n } = store.dispatch.volunteers\n const currentLeague = computed(() => store.getters.leagues.currentItem)\n const currentCamp = computed(() => store.getters.camps.currentItem)\n const currentVolunteer = computed(() => store.getters.volunteers.currentItem)\n const volunteerTemplate = computed(() => store.getters.volunteers.volunteerUnderEdit)\n const currentVolunteerID = computed(() => volunteerTemplate.value?.individualID ?? 0)\n const programInStore = computed(() => store.getters.volunteers.currentProgram)\n\n const currentItem = computed(() => {\n if (routeType.value === 'camp') return currentCamp.value\n if (routeType.value === 'league') return currentLeague.value\n })\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n let emailValidationResolver: (value: void | PromiseLike) => void = () => {}\n let emailValidationTask = Promise.resolve()\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 function relativeRoute(newRoute: string): string {\n if (editMode.value.startsWith('new-volunteer')) {\n return newRoute\n }\n return '../' + newRoute\n }\n\n const programsInCoachPrefs = computed(\n () => editCoachPreferences.value.programs?.map((x) => x.typeProgramID) ?? []\n )\n\n const interfaceToggles = computed(() => {\n return editRoles.value\n .map((x) => roleToInterface(x.roleID))\n .reduce((x, y) => interfaceOr(x, y), interfaceNone)\n })\n\n /** private data */\n const editVolunteer = ref(cloneDeep(getEmptyLeagueVolunteer(new LeagueVolunteerSeedInfo())))\n const loading = ref(false)\n const editMode = ref('') // maps to routename, used for watcher on edit template\n const editAddress = ref(getEmptyIndividualAddress())\n const editPhones = ref([])\n const editRoles = ref([])\n const editEmail = ref('')\n const leagueid = ref('') //aught to be set by the router.\n const editGrades = ref([])\n const editPracticeDays = ref([])\n const editProducts = ref([])\n const routeType = ref('')\n const editCoachPreferences = ref(getEmptyLeagueCoach())\n const getCurrentCoachLink = (): CoachAssistantLink => {\n return (\n editCoachPreferences.value.programs?.filter((p) => p.typeProgramID == selectedProgram.value)[0]\n ?.assistantCoachLink ?? { ...emptyCoachLink(), coach1IndividualID: currentVolunteerID.value }\n )\n }\n const setCurrentCoachLink = (v: CoachAssistantLink): void => {\n const prefs = cloneDeep(editCoachPreferences.value)\n const program = prefs.programs?.filter((p) => p.typeProgramID == selectedProgram.value)[0]\n if (program) {\n program.assistantCoachLink = v\n editCoachPreferences.value = prefs\n }\n }\n const editCoachLink = computed({\n get() {\n return getCurrentCoachLink()\n },\n set(v: CoachAssistantLink) {\n setCurrentCoachLink(v)\n },\n })\n\n const selectedProgram = computed(() => {\n const count = editPrograms.value.length\n return count == 2\n ? editPrograms.value.filter((p) => !p.toUpperCase().includes('CHEER'))[0]\n : editPrograms.value[0]\n })\n const selectedProgramDescription = computed(() => {\n const descRaw: String =\n programsAvailable.value.filter((p) => p.id == selectedProgram.value)[0]?.desc ?? ''\n return store.getters.leagueAbstraction.isUpwardSelect\n ? currentLeague.value.selectSportName\n : descRaw\n .split(/(\\s+)/)\n .map((w: string) => {\n const upperFirst = w.charAt(0).toUpperCase()\n return upperFirst + w.substring(1).toLowerCase()\n })\n .join(' ')\n })\n\n function updateVolunteer(v: LeagueVolunteer) {\n editVolunteer.value = cloneDeep(v)\n }\n\n function emailUpdate(email: string) {\n new Promise((resolve) => {\n emailValidationResolver = resolve\n })\n editEmail.value = email\n }\n //when a change is requested, will hold the pending program.\n const pendingProgramChoice = ref([])\n //modal for confirm program change\n const confirmChangeProgram = ref(false)\n\n function warnAboutProgramChange(v: string[]) {\n pendingProgramChoice.value = cloneDeep(v)\n //invalid to choose less than one.\n if (v && v.length && v.length < editPrograms.value.length) {\n //signal if the user is removing a program.\n confirmChangeProgram.value = true\n } else {\n changeProgram()\n }\n }\n const editPrograms = ref([])\n //** what happens when we confirm a change program, should bubble to the volunteer options\n function changeProgram() {\n //invalid to choose < 1 choice.\n if (pendingProgramChoice.value.length) {\n editPrograms.value = cloneDeep(pendingProgramChoice.value)\n }\n }\n const titleCase = (s: string) => upperFirst(s.toLocaleLowerCase())\n\n const programsAvailable = computed(() => {\n if (currentItem.value?.programs?.length) {\n // first is sport name, second cheer, so friendly names like\n if (currentItem.value?.programs?.length == 2) {\n //if this returns more than two someday this assumption breaks.\n return [\n {\n id: currentItem.value?.programs[0].typeProgramID,\n desc: titleCase(currentItem.value?.programs[0].typeProgramID),\n },\n { id: currentItem.value?.programs[1].typeProgramID, desc: 'Cheer' },\n ]\n }\n\n return currentItem.value?.programs.map((x) => ({ id: x.typeProgramID, desc: x.typeProgramID }))\n }\n\n return []\n })\n\n /***\n * Triggered on the edit to take care of the UC for looking up a prior athelete.\n */\n const searchName = ref('') //command delimited name to lookup.\n function nameUpdated(first: string, last: string) {\n searchName.value = last + ',' + first\n }\n /**\n * Called when a volunteer is selected from a finder box\n * from name entry.\n */\n async function volunteerFound(id: VolunteerIDType) {\n if (VolunteerID(editVolunteer.value) != id) {\n const roles = cloneDeep(editRoles.value)\n\n await loadByID(id)\n if (volunteerTemplate.value) {\n editVolunteer.value = cloneDeep(volunteerTemplate.value)\n\n decomposeTemplate()\n }\n\n roles.forEach((role) => {\n if (editRoles.value.findIndex((x) => role.roleID == x.roleID) < 0) {\n editRoles.value.push(role)\n }\n })\n }\n }\n async function loadByID(id: number) {\n try {\n await getVolunteer({ id: id })\n if (volunteerTemplate.value) {\n editVolunteer.value = cloneDeep(volunteerTemplate.value)\n }\n } catch (error) {\n //no current volunteer, grab the template and start there.\n\n await getTemplate({ id })\n if (volunteerTemplate.value) {\n editVolunteer.value = cloneDeep(volunteerTemplate.value)\n }\n //volunteerTemplate will be set after getTemplate is called.\n }\n }\n\n const category = ref('')\n\n const title = computed(() => {\n return categoryToTitle(category.value.split('-')[0])\n })\n\n const isNew = computed(() => editMode.value.startsWith('new-volunteer'))\n\n const cancelLink = computed(() =>\n isNew.value ? `../list/${category.value}` : `../../list/${category.value}`\n )\n\n function addProgram(program: string) {\n if (editPrograms.value.indexOf(program) < 0) {\n editPrograms.value.push(program)\n }\n }\n\n async function routeChange(to: Route) {\n routeType.value = getLeagueType(to.fullPath)\n loading.value = true\n category.value = getRouteCategoryName(to)\n\n let cntpn = CategoryNameToProgramName(category.value)\n if (!cntpn) {\n // see if we have something in the store.\n cntpn = programInStore.value\n }\n if (!cntpn) {\n if (currentItem.value?.programs?.length) {\n cntpn = currentItem.value.programs[0].typeProgramID\n }\n }\n addProgram(cntpn)\n\n try {\n if (to?.params.id) {\n leagueid.value = to.params.id\n await loadProgramVolunteers({ leagueId: to?.params.id })\n }\n if (to?.params?.vid) {\n await loadByID(parseInt(to.params.vid))\n } else {\n //probably a new user, lets prospectively load a template.\n await getTemplate({})\n }\n } catch (e) {\n console.warn(e)\n await ctx.root.$router.push(relativeRoute('list'))\n throw new Error(e.message)\n }\n loading.value = false\n editMode.value = to.name ?? ''\n\n // if there is a current volunteer we get a head start on an edit.\n if (currentVolunteer.value) {\n editVolunteer.value = cloneDeep(routeActionToVolunteer(to.name, currentVolunteer.value))\n }\n reconcileTemplate()\n\n // we see if the thing we are editing has the roles we expect, if not we will ask which role.\n rolesToExpect.value = categoryToRoles(CategoryNameToCategory(getRouteCategoryName(to)))\n //remove ref commissioner for Upward Select\n if (currentItem.value?.typeLeagueID === LeagueTypes.UPWARDSELECT) {\n const index = rolesToExpect.value.indexOf(RolesEnum.REFEREECOMMISSIONER)\n if (index > -1) {\n rolesToExpect.value.splice(index, 1)\n }\n }\n }\n watch(() => ctx.root.$route, routeChange, { immediate: true, deep: true })\n const rolesToExpect = ref([])\n\n const imported = ref(false)\n /***\n * If a template is updated or refreshed, then integrate it in with\n * the data we know about, editVolunteer ultimately gets the version of what we will edit.\n */\n watch(() => volunteerTemplate, reconcileTemplate)\n function reconcileTemplate() {\n if (volunteerTemplate.value) {\n editVolunteer.value = cloneDeep(volunteerTemplate.value)\n decomposeTemplate()\n }\n }\n\n watch(\n () => editCoachPreferences.value,\n () => {\n // we can add on coach preferences assignment but removal must be done through the UI.\n editPrograms.value = cloneDeep(lodash.uniq([...programsInCoachPrefs.value, ...editPrograms.value]))\n },\n { immediate: true }\n )\n\n const composedVolunteer = computed(() => {\n return composeLeagueVolunteer(editVolunteer.value, {\n volunteer: editVolunteer.value,\n roles: editRoles.value,\n phones: editPhones.value,\n address: editAddress.value,\n email: editEmail.value,\n coachPreferences: editCoachPreferences.value,\n })\n })\n\n function decomposeTemplate() {\n ;({\n phones: editPhones.value,\n address: editAddress.value,\n volunteer: editVolunteer.value,\n roles: editRoles.value,\n email: editEmail.value,\n coachPreferences: editCoachPreferences.value,\n } = decomposeLeagueVolunteer(editVolunteer.value))\n }\n\n function updatePrefsAndRoles(c: LeagueCoach, roles: LeagueVolunteerRole[]) {\n if (!lodash.isEqual(editCoachPreferences, c)) {\n editCoachPreferences.value = cloneDeep(c)\n }\n if (!lodash.isEqual(editRoles.value, roles)) {\n editRoles.value = cloneDeep(roles)\n }\n }\n\n /***\n * Possible lazy load of the template requires post-edit reconciliation.\n * @param newTemplate\n */\n watch(() => volunteerTemplate, decomposeTemplate)\n\n async function saveAndContinue(e: MouseEvent) {\n e.stopPropagation()\n e.preventDefault()\n\n if (isImportedVolunteer(editVolunteer.value)) {\n //assign valid league and account to imported volunteers\n editVolunteer.value.accountNumber = currentItem.value?.accounts?.length\n ? currentItem.value.accounts[0].accountNumber\n : '0'\n editVolunteer.value.leagueID = currentItem.value?.id ?? 0\n imported.value = true\n }\n\n try {\n await emailValidationTask\n await upsert({\n leagueID: leagueid.value,\n volunteer: composedVolunteer.value,\n forceNew: imported.value,\n })\n } catch (e) {\n throw e\n }\n\n await ctx.root.$router.push({\n name: `list-volunteer-${routeType.value}`,\n params: { type: category.value, id: leagueid.value },\n })\n }\n return {\n editRoles,\n editProducts,\n searchName,\n programsInCoachPrefs,\n confirmChangeProgram,\n changeProgram,\n volunteerFound,\n editPrograms,\n leagueid,\n editPracticeDays,\n editGrades,\n\n currentItem,\n currentLeague,\n rolesToExpect,\n editAddress,\n nameUpdated,\n editPhones,\n editEmail,\n updateVolunteer,\n emailUpdate,\n cancelLink,\n isNew,\n editVolunteer,\n saveAndContinue,\n loading,\n interfaceToggles,\n programsAvailable,\n updatePrefsAndRoles,\n warnAboutProgramChange,\n editCoachPreferences,\n title,\n editCoachLink,\n selectedProgram,\n selectedProgramDescription,\n currentVolunteerID,\n currentVolunteer,\n emailValidationResolver,\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!./VolunteerEdit.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!./VolunteerEdit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VolunteerEdit.vue?vue&type=template&id=25f9cadc&\"\nimport script from \"./VolunteerEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./VolunteerEdit.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","interface CoachAssistantLink {\n id: number\n coach1IndividualID: number\n coach2IndividualID: number\n pendingIndividualID: number\n pendingFirstName: string | null\n pendingLastName: string | null\n}\nconst empty = (): CoachAssistantLink => {\n return {\n id: 0,\n coach1IndividualID: 0,\n coach2IndividualID: 0,\n pendingIndividualID: 0,\n pendingFirstName: '',\n pendingLastName: '',\n }\n}\n\nexport { empty, CoachAssistantLink }\n","import { Route } from 'vue-router'\nimport { LeagueVolunteerInfo } from '@/GeneratedTypes/ListInfo/LeagueVolunteerInfo'\nimport { RuntimeException } from '@/lib/common/exceptions/RuntimeException'\nimport { LeagueVolunteer } from '@/GeneratedTypes/LeagueVolunteer'\nimport { getEmptyLeagueVolunteer, LeagueVolunteerSeedInfo } from '@/lib/support/models/LeagueVolunteer/data'\nimport { leagueVolunteerInfoToLeagueVolunteer } from '@/lib/support/models/LeagueVolunteer/leagueVolunteerInfoToLeagueVolunteer'\nimport { newPlayerID } from '@/lib/support/models/LeaguePlayerInfo/data'\n\nclass VolunteerRouteRuntimeException extends RuntimeException {\n name = 'Volunteer Route Error'\n}\n\n/***\n * Takes the route name (edit,copy,new) and produces a volunteer model for initial edit.\n * @param routeName\n * @param currentVolunteer\n */\n\nexport function routeActionToVolunteer(\n routeName: string | null | undefined,\n currentVolunteer: LeagueVolunteerInfo\n): LeagueVolunteer {\n if (routeName?.startsWith('new-volunteer')) {\n return getEmptyLeagueVolunteer(new LeagueVolunteerSeedInfo())\n }\n\n if (routeName?.startsWith('edit-volunteer')) {\n return {\n ...getEmptyLeagueVolunteer(new LeagueVolunteerSeedInfo()),\n ...leagueVolunteerInfoToLeagueVolunteer(currentVolunteer),\n }\n }\n\n if (routeName?.startsWith('copy-volunteer')) {\n return {\n ...getEmptyLeagueVolunteer(new LeagueVolunteerSeedInfo()),\n ...leagueVolunteerInfoToLeagueVolunteer(currentVolunteer),\n individualID: newPlayerID(),\n }\n }\n\n throw new VolunteerRouteRuntimeException('expected a valid routeName, got ' + routeName)\n}\n\n/**\n * Takes a URL our route and returns the category name part\n * @param routepath\n */\nexport function getRouteCategoryName(routepath: Route | string) {\n if (typeof routepath == 'string') {\n const matches = routepath.match(/volunteers\\/(\\S+)\\/(\\S+)/)\n if (matches?.length == 3) {\n return matches[2]\n }\n return ''\n }\n return routepath.params['type'] ?? ''\n}\n\n/**\n * Takes a URL our route and returns the category name part\n * @param routepath\n */\nexport function getLeagueType(routepath: Route | string) {\n if (typeof routepath == 'string') {\n const routeParts = routepath.split('/')\n if (routeParts?.length > 3) {\n return routeParts[2]\n }\n return ''\n }\n return ''\n}\n"],"sourceRoot":""}