{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/core/services/RememberTokenService.ts","webpack:///./src/store/modules/AuthModule.ts","webpack:///./src/store/modules/BodyModule.ts","webpack:///./src/store/modules/BreadcrumbsModule.ts","webpack:///./src/core/config/DefaultLayoutConfig.ts","webpack:///./src/store/modules/ConfigModule.ts","webpack:///./src/store/modules/Dashboard/index.js","webpack:///./src/store/modules/Lists/index.js","webpack:///./src/store/modules/Documents/myDocuments.js","webpack:///./src/store/modules/Users/index.js","webpack:///./src/store/modules/rules.js","webpack:///./src/store/modules/AbilityModule.js","webpack:///./src/store/modules/Clients/index.js","webpack:///./src/store/modules/Levels/index.js","webpack:///./src/store/modules/Branches/index.js","webpack:///./src/store/modules/Documents/index.js","webpack:///./src/store/modules/DocumentTypes/index.js","webpack:///./src/store/modules/Skills/index.js","webpack:///./src/store/modules/EquipmentCategories/index.js","webpack:///./src/store/modules/Freelancers/index.js","webpack:///./src/store/modules/Countries/index.js","webpack:///./src/store/modules/Languages/index.js","webpack:///./src/store/modules/Permissions/index.js","webpack:///./src/store/modules/Roles/index.js","webpack:///./src/store/modules/Venues/index.js","webpack:///./src/store/modules/Reports/salary.js","webpack:///./src/store/modules/Users/create.js","webpack:///./src/store/modules/Help/index.js","webpack:///./src/store/modules/Jobs/single.js","webpack:///./src/store/modules/Notes/index.js","webpack:///./src/store/modules/HelpCategories/index.js","webpack:///./src/store/modules/Shifts/index.js","webpack:///./src/store/modules/My-dashboard/index.js","webpack:///./src/config/ability.js","webpack:///./src/store/modules/Jobs/create.js","webpack:///./src/store/modules/CalendarModule.js","webpack:///./src/store/modules/My-skills/index.js","webpack:///./src/store/modules/Jobs/edit.js","webpack:///./src/store/modules/Job-templates/index.js","webpack:///./src/store/modules/Job-templates/single.js","webpack:///./src/store/modules/AdminCalendarModule.js","webpack:///./src/store/modules/Activities/index.js","webpack:///./src/store/modules/Rates/index.js","webpack:///./src/store/modules/Widgets/index.js","webpack:///./src/store/modules/Registration/index.js","webpack:///./src/store/modules/Applicants/index.js","webpack:///./src/store/modules/Statistics/index.js","webpack:///./src/store/modules/Rates/newRates.js","webpack:///./src/store/modules/Rates/priceEstimates.js","webpack:///./src/store/modules/Rates/workerRates.js","webpack:///./src/store/modules/Jobs/additional-costs.js","webpack:///./src/store/modules/Live-chat/index.js","webpack:///./src/store/modules/OtpModule.js","webpack:///./src/store/modules/Roster/index.js","webpack:///./src/store/modules/JobQuotes/index.js","webpack:///./src/store/modules/OnCall/index.js","webpack:///./src/store/index.ts","webpack:///./src/App.vue?2692","webpack:///./src/core/errors/CustomErrors.ts","webpack:///./src/core/services/ApiService.ts","webpack:///./src/components/jobs/ReportHours/helpers.ts","webpack:///./src/store/enums/StoreEnums.ts","webpack:///./src/assets/ts/components/MenuComponent.ts","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/assets/ts/components/_FeedbackComponent.ts","webpack:///./src/assets/ts/components/_ImageInputComponent.ts","webpack:///./src/assets/ts/components/_StickyComponent.ts","webpack:///./src/assets/ts/components/_PasswordMeterComponent.ts","webpack:///./src/assets/ts/components/_PlaceComponent.ts","webpack:///./src/assets/ts/components/SearchComponent.ts","webpack:///./src/App.vue?9284","webpack:///./src/assets/ts/components/_CookieComponent.ts","webpack:///./src/pusher.js","webpack:///./src/core/services/JwtService.ts","webpack:///./src/store/modules/Dresscodes/index.js","webpack:///./src/core/helpers/swal.ts","webpack:///./src/router/index.ts","webpack:///./src/core/services/AccessService.ts","webpack:///./src/assets/ts/components/_DrawerComponent.ts","webpack:///./src/assets/ts/_utils/_ElementStyleUtil.ts","webpack:///./src/assets/ts/_utils/_DataUtil.ts","webpack:///./src/assets/ts/_utils/_TypesHelpers.ts","webpack:///./src/assets/ts/_utils/_DOMEventHandlerUtil.ts","webpack:///./src/assets/ts/_utils/ElementAnimateUtil.ts","webpack:///./src/assets/ts/_utils/DomHelpers.ts","webpack:///./src/assets/ts/_utils/EventHandlerUtil.ts","webpack:///./src/assets/ts/components/_StepperComponent.ts","webpack:///./src/App.vue?f4fc","webpack:///./src/components/Cookies/CookieNotification.vue?86a1","webpack:///./src/components/Cookies/CookieNotification.vue","webpack:///./src/components/Cookies/CookieNotification.vue?e230","webpack:///./src/components/users/userProfile/fields/referred-users/misc/invite-a-friend-modal.vue?bc15","webpack:///./src/components/users/userProfile/fields/referred-users/misc/invite-a-friend-modal.vue","webpack:///./src/components/users/userProfile/fields/referred-users/misc/invite-a-friend-modal.vue?9abf","webpack:///./src/App.vue","webpack:///./src/App.vue?1a50","webpack:///./src/core/plugins/i18n.ts","webpack:///./src/core/plugins/apexcharts.ts","webpack:///./src/core/plugins/inline-svg.ts","webpack:///./src/core/plugins/vee-validate.ts","webpack:///./src/core/plugins/keenthemes.ts","webpack:///./src/main.ts","webpack:///./src/assets/ts/components/_ToggleComponent.ts","webpack:///./src/components/jobs/helpers.ts","webpack:///./src/assets/ts/components/_ScrollComponent.ts","webpack:///./src/assets/ts/components/_ScrollTopComponent.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","ID_TOKEN_KEY","getToken","localStorage","getItem","saveToken","token","setItem","destroyToken","removeItem","errors","user","isAuthenticated","JwtService","isSubscribedToChat","fetchUser","this","keys","currentUser","roles","role","map","title","includes","SET_IS_SUBSCRIBED","SET_ERROR","SET_AUTH","access_token","AccessService","saveRules","rules","SET_USER","SET_PASSWORD","password","SET_FETCH_USER","PURGE_AUTH","destroyRules","dispatch","LOGIN","credentials","payload","RememberTokenService","ApiService","post","context","commit","rememberDevice","remember_token","log","id","getters","catch","response","LOGOUT","location","reload","REGISTER","SET_WEBSOCKET_CONNECTED","FORGOT_PASSWORD","FORGOT_PASSWORD_SAVE","VERIFY_AUTH","setHeader","getFetchUser","UPDATE_USER","rawError","AuthModule","classes","position","SET_CLASSNAME_BY_POSITION","className","ADD_BODY_CLASSNAME","body","classList","add","REMOVE_BODY_CLASSNAME","remove","ADD_BODY_ATTRIBUTE","qulifiedName","REMOVE_BODY_ATTRIBUTE","removeAttribute","ADD_CLASSNAME","BodyModule","breadcrumbs","pageBreadcrumbPath","SET_BREADCRUMB_MUTATION","SET_BREADCRUMB_ACTION","BreadcrumbsModule","config","themeName","themeVersion","demo","main","primaryColor","logo","dark","light","loader","display","scrollTop","header","menuIcon","width","fixed","desktop","tabletAndMobile","toolbar","aside","theme","minimized","minimize","hoverable","content","footer","initial","path","defaultValue","SET_LAYOUT_CONFIG","RESET_LAYOUT_CONFIG","assign","OVERRIDE_LAYOUT_CONFIG","JSON","parse","OVERRIDE_PAGE_LAYOUT_CONFIG","ConfigModule","initialState","jobs","pagination","loading","jobStatusLoading","job_id","query","companyID","countryID","userSearchInput","branches","own","jobType","relationships","company","country","venue","book_from_branches","project_manager","contact_on_location","crew_boss","shiftsAll","relatedClients","relatedCountries","isAwaitingCancel","isPast","isOwn","loadedNew","loadedOwn","page","total","state","statusAll","getPaginationData","actions","newStatus","isSingleJobView","jobToChange","find","job","status","finally","filters","relatedFilters","upcoming","past","country_id","root","newAll","paginationData","meta","delete","filter","item","fire","toast","icon","showConfirmButton","timer","jobIndex","findIndex","reason","purify","mutations","items","namespaced","companies","permissions","companyCols","countries","countriesWithBranches","countriesWithVenues","venues","users","helpCategories","pms","activityTypes","skills","subSkills","levels","languages","documentTypes","dresscodes","currencies","preferredBranches","preferredVenues","companiesDropdown","crewHandlers","queryString","isFetchingPMs","isFetchingSkills","isFetchingDresscodes","isFetchingCH","getCurrencies","getPermissions","getHelpCategoriesList","params","perPage","dropdown","dropdownString","venueId","countryId","field","Array","isArray","userDocuments","getDocuments","userId","update","documentId","initPayment","company_name","has_danish_bank","has_tax_id","iban","konto","reg","social_security","swift","tax_card","tax_id","user_id","getSingleUser","singleUser","invited_by","favorite_jobs","mySkills","myExperiences","referredUsers","usersList","search","parent_skill","sub_skill","current_page","last_page","rows","toLowerCase","indexOf","sort","_","orderBy","order","offset","limit","getSearchString","getReferredUsers","getParentSkill","getSubSkill","email","first_name","phone","company_id","approved","router","res","rej","formData","FormData","append","file","skill","payment_settings","isFetched","store","subscribe","mutation","default_branch","key_account_managers","relatedUsers","fetchingUsers","clientsList","taxId","usersTabPagination","updatingCompanyData","singleClient","preferredSkills","client","isUpdatingCompany","isFetchingUsers","getFetchedSingle","getRelatedUsers","getUsersTabPagination","currentPage","kam","uploadedFiles","uploaded_files","join","keyAccManagerID","type_of_work","typeOfWork","safety_requirements","safetyReqs","water_policy","waterPolicy","dresscode","prefDresscode","food_policy","foodPolicy","value_workers","workerType","isSavingWeights","getData","hideLoading","values","branchesList","approvalsList","approvalsCounter","getJustApprovalsCount","documentTypesList","skillsList","parentId","equipmentCategoriesList","freelancers","lastPage","searchedSkillIDs","searchString","searchedBranchID","sortParams","sortedBy","isOrderAsc","getFreelancersList","getSortData","getBranchID","reset","searchedSkillID","showActive","payLoad","description","permission","permissionIds","myVenues","searchParams","searchText","isBeingAddedToMyVenues","activeTab","entrance","city","address","zip","province","notes","public","ids","a","original_id","v","isAwaitingResponse","exportsHistoryPagination","showTaxIdWorkers","date","userShifts","shiftsLoading","salaryReportsHistory","summary","getSalaryReportsHistory","getExportHistoryPagination","getPagination","getShiftsData","getShiftsLoading","monitor_id","index","roleId","fields","possibleRoles","roleID","step","payment","isAtPaymentSettings","paymentInfo","accountType","stringify","singleArticle","getArticles","getSingleArticle","articleId","article","bookableUsers","shiftsWithSkill","currentlySelectedSkill","isAwaitingDelete","isAwaitingBook","allShiftsAreExpanded","totalPages","successfullyBooked","isAwaitingApproval","isReportingHours","isDeletingReport","isAwaitingDisapproval","isUpdatingHours","possibleWorkerSlots","clientRates","rates","workerRates","historicalRates","changeSkillPayload","statuses","getJobSkills","getClientRates","getSkillRates","getPossibleWorkerSlots","color","jobId","chat_id","DBfriendly","shift_slots","shiftSlotId","put","bookFromBranches","pivot","application_id","jobID","download","start","format","fileName","url","URL","createObjectURL","Blob","link","click","skillID","assigneeId","skill_id","skillId","assignee_id","shifts","el","some","f","shiftSlots","flat","shiftIds","created_by_id","createdBy","book_anyway","booked_at","closely","showDenyButton","showCancelButton","confirmButtonText","denyButtonText","isConfirmed","confirmedData","action","reportedHours","shiftSlot","reported_hours","hour","shift_slot_id","reportedHour","application","substring","inputs","startTime","end","endTime","valueOf","i_was_late","iwasLate","shiftID","shift_id","crew","shiftId","note","replaceZero","noteId","noteIndex","is_pinned","comment","shift_slot","applications","slot","shiftSlotID","booked_by","removeDuplicateSkills","from","Set","getError","noteable_type","noteable_id","userID","noteID","helpCategoriesList","target_roles","loadingShifts","getShifts","jobShiftsAreAlreadyFetched","parameters","isLoading","indexes","isLoadingEstimates","estimatedEarning","newJobs","tab","assignedTo","slug","count","my_shift_slot","check_in_at","report","reportId","shiftToChange","resole","pageNumber","can","cannot","blueprint","dateStart","dateEnd","duration","startHour","finishHour","selectedCompany","isFetchingFreqSkills","JobData","COLid","venue_id","invoice","details","project_manager_id","bookerId","templatesPagination","hasTemplates","isSavingTemplate","jobTemplates","bookerSearchResults","isLoadingTemplates","startDate","endHour","slots","is_past","invoice_reference","contact_on_location_id","postal","area","projectManager","dresscode_id","ability","forEach","toJSON","frequentSkills","lodash","unshift","children","json_data","created_by","firstShiftDate","difference","userSelectedDate","diff","pm","col","dresscodeID","dresscodeNotes","workerNotes","startLabel","b","minutes","asMinutes","qty","shiftKey","payloadXPEndpoint","experience","newSkillID","level_id","levelId","pivotData","existingShifts","updating","x","positions","isDeleted","label","isEdited","dresscode_notes","notes_for_workers","shiftTimes","unix","colID","temp","newSlots","shiftSlotsKeys","parseInt","endDate","searchByClient","searchByName","ID","template","getTemplate","templateShifts","reduce","clients","showOwn","dates","startOf","endOf","countryFilter","branchesFilter","clientsFilter","filterOwn","userFilter","getAll","tableRows","presets","isSavingRates","clientAndBranch","branch","skillAndLevel","level","rate","branch_id","night_start","nightHours","night_end","jsonData","rate_clients","isSavingPreset","preset","presetName","currency","shallow","element","weekend_price","standard_price","night_price","rate_worker","jsondata","weekend","standart","nightBonus","nextShift","getNextShift","issues_invoice","heightAuto","errorString","recentlyPromoted","applicants","awaitingApproval","applicantID","applicant_id","jobsStatistic","reportedHoursStatistic","workerEarnings","jobsPerClient","usersStatistic","earningsStatistic","clientRevenue","marginByClient","jobsByWorker","labels","hoursByWorker","globalFilters","consolidatedExpenses","additional_expenses","salaries","earnings","branchId","Date","now","company_rate","storeInProgress","clientCurrency","estimate","custom_rates","isFetchingSingle","isSaving","existingRates","customRates","currency_id","currencyId","triggerLoad","branchID","baseCost","client_currency","job_projection","getBaseCosts","getJobProjection","getClientCurrency","cost","additionalCosts","chatHistory","userConversation","unreadMessages","awaitingResponse","getChatHistory","getConversation","getUnreadMessages","requestBody","messageBody","chatId","chat","unread_messages","eventData","last_message","created_at","qrImage","image","otpCode","otp","quotes","current","editing","quoteId","onCallUsers","OnCallUsersModule","LiveChatModule","JobQuotesModule","EditJobModule","WorkerRatesModule","NewRatesModule","AdminCalendarModule","DashboardModule","PriceEstimationModule","AdditionalCostsModule","ListsModule","RulesModule","UsersModule","LevelsModule","ClientsModule","BranchesModule","DresscodesModule","DocumentsModule","DocumentTypesModule","SkillsModule","EquipmentCategoriesModule","FreelancersModule","CountriesModule","LanguagesModule","PermissionsModule","RolesModule","VenuesModule","SalaryReportsModule","CreateUserModule","JobModule","NotesModule","MyDocumentsModule","HelpModule","ShiftsModule","HelpCategoriesModule","JobCreateModule","MyDashboardModule","CalendarModule","MySkillsModule","JobTemplatesModule","SingleJobTemplateModule","ActivitiesModule","RatesModule","WidgetsModule","RegistrationModule","ApplicantsModule","StatisticsModule","OtpModule","RosterModule","plugins","AbilityModule","constructor","captureStackTrace","init","app","vueInstance","use","axios","defaults","baseURL","headers","common","resource","responseType","errorCode","DateTimeFormat","DefaultTimeSelectorStartEnd","getHoursFromString","string","getDateFromString","buildDateTimeString","hours","Actions","Mutations","defaultMenuOptions","hoverTimeout","zindex","accordion","slideSpeed","expand","_element","options","triggerElement","_setTriggerElement","querySelector","closest","child","set","_isTriggerElement","_getItemOption","hasAttribute","attr","String","_getItemElement","itemElement","sub","subItem","_getItemParentElement","parentItem","_getItemParentElements","parent","parents","buffer","_getDropdownPopperConfig","placementOption","placement","flipValue","flip","toString","split","offsetValue","strategy","modifiers","rootBoundary","altBoundary","fallbackPlacements","_getItemChildElement","selector","_getItemChildElements","_getItemSubElement","contains","has","_getCss","styleProp","defaultView","ownerDocument","replace","getComputedStyle","getPropertyValue","_getItemSubType","_isItemSubShown","_isItemDropdownPermanent","_isItemParentShown","_isItemSubElement","_hasItemSub","_getItemLinkElement","_getItemToggleElement","_showDropdown","trigger","MenuComponent","hideDropdowns","height","parentZindex","initDropdownPopper","reference","attach","popper","_hideDropdown","destroy","destroyDropdownPopper","_showAccordion","_hideAccordions","subElement","_hideAccordion","itemsToHide","querySelectorAll","len","itemToHide","_reset","removeClass","_destroy","_update","_hide","_show","_toggle","_mouseout","_mouseover","_dismiss","itemSubType","_link","_click","preventDefault","dismiss","mouseover","mouseout","getItemTriggerType","getItemSubType","show","hide","getElement","getItemLinkElement","getItemToggleElement","getItemSubElement","getItemParentElements","isItemSubShown","isItemParentShown","getTriggerElement","isItemDropdownPermanent","hideAccordions","on","handler","one","off","instanceUid","getInstance","elementMenu","menu","menuData","subMenu","skip","updateDropdowns","forceUpdate","createInstances","menuItem","menuInstance","initGlobalHandlers","addEventListener","menuItems","menuObj","stopPropagation","elements","bootstrap","reinitialization","createInsance","webpackContext","req","webpackContextResolve","defaultFeedbackOptions","defaultImageInputOptions","_handlers","_go","showPopup","innerHTML","setPopupTopCenterPosition","shown","hidePopup","isShown","hasInstace","defaultImageInputQueires","componentName","instanseQuery","inputQuery","wrapperQuery","cancelQuery","removeQuery","hiddenQuery","_options","_queries","_change","inputElement","files","reader","FileReader","wrapperElement","style","setProperty","readAsDataURL","_cancel","hiddenElement","_remove","queries","uid","cancelElement","removeElement","handlers","getInputElement","ImageInput","ImageInputComponent","defaultStickyOptions","reverse","animation","animationSpeed","animationClass","instanceName","scroll","getOption","offsetNum","st","lastScrollTop","attributeName","enable","eventTriggerState","disable","dataStickyAttr","attrValueInStr","attrValue","optionName","option","top","left","animateClass","widthTarget","targetElement","offsetLeft","callBack","callback","StickyComponent","sticky","reInitialization","defaultPasswordMeterOptions","minLength","checkUppercase","checkLowercase","checkDigit","checkChar","scoreHighlightClass","defaultPasswordMeterQueires","visibilityQuery","highlightQuery","defaultPlaceOptions","score","highlight","checkSteps","visibilityElement","highlightElement","check","visitbility","visibleIcon","hiddenIcon","typeAttr","focus","checkScore","checkLength","checkLowerCase","val","test","getCheckScore","getScore","passwordMeter","PasswordMeterComponent","defaultPlaceQueires","attrQuery","parentSelector","parentElement","prepend","place","PlaceComponent","defaultSearchOptions","keypress","enter","layout","showOnFocus","defaultSearchQueires","processing","_getElement","getResponsiveFormMode","responsive","breakpoint","breakPointNum","blur","charCode","keyCode","input","clear","responsiveFormMode","contentElement","formElement","menuObject","spinnerElement","clearElement","toolbarElement","complete","isProcessing","getQuery","getMenu","getFormElement","toggleElement","submitElement","resultsElement","suggestionElement","emptyElement","getContentElement","Search","SearchComponent","matches","cookie","match","RegExp","decodeURIComponent","cookieOptions","expires","toUTCString","updatedCookie","encodeURIComponent","optionKey","optionValue","CookieComponent","eventBus","createEchoInstance","Echo","authEndpoint","broadcaster","cluster","forceTLS","auth","Authorization","handleNewChatMessage","emit","handleMessageReadByUser","connectToLiveChat","private","listen","ev","subscribed","leaveLiveChat","disconnect","setReadStatus","whisper","Pusher","dresscodesList","fireToast","text","routes","redirect","component","to","history","isAllowed","beforeEach","next","modal","overflow","should_enable_2fa","google2fa_enabled","isAdmin","scrollTo","afterEach","ID_RULES_KEY","getRules","rolesJson","defaultDrawerOptions","overlay","baseClass","overlayClass","direction","overlayElement","lastWidth","closeElement","togglers","_getOption","closers","getElementById","hasBaseClass","bodyCanvasAttr","_deleteOverlay","_createOverlay","elementZIndex","overlayZindex","overlayClassOption","_getDirection","_getWidth","toggle","goElement","drawer","DrawerComponent","instance","hideAll","oldInstances","getAllInstancesByKey","dr","updateAll","handleDismiss","important","attibuteName","removeProperty","instanceData","DataUtil","newMap","Map","k","getObjectPropertyValueByKey","obj","entries","getUniqueIdWithPrefix","prefix","Math","floor","random","getTime","stringSnakeToCamel","str","toUpperCase","jsonStr","matched","eventName","eventId","DOMEventHandlerUtil","targets","funcFromStore","removeEventListener","calee","currentTarget","animate","easings","linear","change","loop","timestamp","time","requestAnimationFrame","performance","animationName","animateClasses","cssClass","transitionEnd","animationEnd","animationDelay","ElementStyleUtil","animationDuration","targetPos","getElementOffset","scrollPos","pageYOffset","documentElement","ElementAnimateUtil","getCSS","getCSSVariableValue","variableName","hex","trim","getElementActualCss","prop","cache","css","cssText","offsetWidth","offsetHeight","parseFloat","attributeValue","getElementActualHeight","getElementIndex","getElementMatches","Element","webkitMatchesSelector","tagName","getClientRects","rect","getBoundingClientRect","win","pageXOffset","getElementParents","getHighestZindex","bufferNode","isNaN","getScrollTop","scrollingElement","getViewPort","innerWidth","innerHeight","insertAfterElement","referenceNode","insertBefore","nextSibling","isVisibleElement","throttle","func","delay","getElementChildren","childNodes","nodeType","getElementChild","slide","dir","speed","calcHeight","calcPaddingTop","calcPaddingBottom","paddingTop","paddingBottom","slideUp","slideDown","getBreakpoint","getAttributeValueByBreakpoint","incomingAttr","resultKey","resultBreakpoint","setEventMetasByName","metas","EventHandlerUtil","getEventMetasByName","setEventMetaByNameAndHandlerId","handlerId","getEventsMetaByHandlerId","setFiredByNameAndHandlerId","handerId","fired","addEvent","removeEvent","defaultStepperOptions","startIndex","animationNextClass","animationPreviousClass","totatStepsNumber","passedStepIndex","currentStepIndex","_goTo","refreshUI","initHandlers","btnNext","btnPrev","steps","stepDirection","_getStepDirection","getStepContent","getLastStepIndex","getTotalStepsNumber","isLastStep","isFirstStep","isBetweenStep","goto","goNext","getNextStepIndex","goPrev","getPrevStepIndex","goFirst","goLast","getCurrentStepIndex","getPassedStepIndex","btnSubmit","StepperComponent","stepper","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_view","_component_CookieNotification","_component_InviteFriendModal","hasAgreedToCookies","class","onAgree","agreeToCookies","$can","modalKey","onSuccess","closeInviteModal","_hoisted_1","_hoisted_2","_hoisted_3","onClick","$event","$emit","__exports__","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_component_Field","_component_ErrorMessage","_component_Form","onSubmit","handleSubmit","validationSchema","default","placeholder","modelValue","disabled","components","Form","Field","ErrorMessage","setup","props","shape","required","metaInfo","CookieNotification","InviteFriendModal","isCookieDialogOpen","cookiesStatus","rulesStored","rule","messages","en","dashboard","layoutBuilder","craft","pages","profile","profileOverview","projects","campaigns","documents","connections","wizards","horizontal","vertical","account","accountOverview","settings","authentication","basicFlow","signIn","signUp","passwordReset","error404","error500","apps","privateChat","groupChat","drawerChat","widgets","widgetsLists","widgetsStatistics","widgetsCharts","widgetsMixed","widgetsTables","widgetsFeeds","changelog","docsAndComponents","megaMenu","exampleLink","modals","general","inviteFriends","viewUsers","upgradePlan","shareAndEarn","forms","newTarget","newCard","newAddress","createAPIKey","twoFactorAuth","createApp","createAccount","activity","es","de","ja","fr","i18n","legacy","locale","globalInjection","initApexCharts","initInlineSvg","initVeeValidate","validateOnBlur","validateOnChange","validateOnInput","validateOnModelUpdate","App","useGlobalProperties","isProduction","mount","defaultToggleOptions","saveState","attribute","_isEnabled","_disable","_enable","isEnabled","elementTargetAttr","elementToggleAttr","ToggleComponent","disabledDates","minimumDate","momentObject","isValid","toDate","setHours","isCrewBoss","crewBosses","crew_bosses","defaultScrollOptions","getHeightType","getAutoHeight","dependencies","wrappers","borderTop","borderBottom","setupHeight","getHeight","heightType","setupState","pos","setupScrollHandler","scrollHandler","cookieId","destroyScrollHandler","resetHeight","heghtType","Function","ScrollComponent","destroyAll","resize","createInstance","defaultScrollTopOptions","_scroll","go","ScrollTopComponent","goTop"],"mappings":"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","file":"js/app.c7a8a940.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-000ee163\":\"bb9d457e\",\"chunk-00221c58\":\"62ce03ba\",\"chunk-00da2427\":\"0ed0fd81\",\"chunk-0f59ef5d\":\"2612f2ee\",\"chunk-12004f49\":\"8f176bff\",\"chunk-149f875b\":\"daa1fd1a\",\"chunk-16a5114f\":\"6d056a10\",\"chunk-6ccb4bec\":\"3dd734b0\",\"chunk-18c0496e\":\"15f0f0ec\",\"chunk-1b101f6d\":\"ce0047b8\",\"chunk-1b2ec473\":\"4aa5be5f\",\"chunk-1b5bed3b\":\"471ee5da\",\"chunk-2200b72c\":\"af886e7f\",\"chunk-2433c696\":\"e0199550\",\"chunk-29f971d6\":\"bb832d13\",\"chunk-2a029bdc\":\"a47e7349\",\"chunk-2d0a34f5\":\"fa916bb2\",\"chunk-2d0bd54f\":\"873052b2\",\"chunk-2d0daae8\":\"e34625fa\",\"chunk-451236e9\":\"66a24f0b\",\"chunk-22a26417\":\"a28a8490\",\"chunk-2d0a3e49\":\"1298fb56\",\"chunk-2d0b28bd\":\"2a346645\",\"chunk-0e27245a\":\"b677da8d\",\"chunk-24381590\":\"3713c08c\",\"chunk-3695c56e\":\"ce3dd46d\",\"chunk-f116ce76\":\"5686dd42\",\"chunk-1b7c992e\":\"d3a47abf\",\"chunk-1bd00361\":\"49ea0315\",\"chunk-465fb9a1\":\"7cc63b7f\",\"chunk-c49ad150\":\"d2e26dc7\",\"chunk-2d0a2cfd\":\"568d70a7\",\"chunk-4ed97863\":\"0dcdd407\",\"chunk-6debe8fc\":\"3f2119d9\",\"chunk-2d21e5e5\":\"d7ac34b6\",\"chunk-6ba4ae98\":\"d5ab8496\",\"chunk-2d0c5394\":\"a031985a\",\"chunk-12f2f5d1\":\"0bf09d65\",\"chunk-2198556f\":\"156949cc\",\"chunk-34afb828\":\"33bdb359\",\"chunk-56ff09d5\":\"fe0f8be4\",\"chunk-dd32de5c\":\"d9abe091\",\"chunk-ed2ec0e0\":\"44beaff1\",\"chunk-2d0c779f\":\"151d08cb\",\"chunk-2d0d5b96\":\"66aeedd3\",\"chunk-2d0da313\":\"ce774ad7\",\"chunk-2d0dd86c\":\"e45dfa07\",\"chunk-2d21ee80\":\"769193ec\",\"chunk-30fe6cac\":\"dd4ac23a\",\"chunk-336a576a\":\"d41baa07\",\"chunk-349a314c\":\"b028ce2b\",\"chunk-3d481012\":\"71aac4f8\",\"chunk-3fdd9a06\":\"4d10e0f9\",\"chunk-43026318\":\"05f4236b\",\"chunk-44f0893b\":\"59e3ab45\",\"chunk-0fbacdc8\":\"9e04b082\",\"chunk-47dbd1da\":\"70cfc823\",\"chunk-4ad996d0\":\"445f2ee0\",\"chunk-554ade07\":\"3c9a6346\",\"chunk-5b095308\":\"af14ec58\",\"chunk-5d82ae1c\":\"24f87ffa\",\"chunk-6312cbac\":\"9a4294b1\",\"chunk-64982492\":\"194951ac\",\"chunk-68a3806a\":\"d20f6dd3\",\"chunk-7097c2e7\":\"947635e6\",\"chunk-7253bc38\":\"a3fde4ae\",\"chunk-7395944c\":\"405aa7d0\",\"chunk-78e7ce6c\":\"6acd39e7\",\"chunk-7909145e\":\"8f37879e\",\"chunk-7cd54d70\":\"e0902604\",\"chunk-8b544280\":\"e47c2da3\",\"chunk-a2aab224\":\"91b1db30\",\"chunk-a6e69a5e\":\"db03ccb4\",\"chunk-a847f162\":\"cf2aa911\",\"chunk-a8e7b29e\":\"48a3b011\",\"chunk-aab28442\":\"627e64d9\",\"chunk-c4559ac4\":\"ebedbe2c\",\"chunk-ce777ff8\":\"538b4a2e\",\"chunk-d7c3247c\":\"4a2167eb\",\"chunk-db45f60e\":\"b14bc871\",\"chunk-f7af0972\":\"4f7ca547\",\"chunk-f92510f2\":\"d4f26419\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-00da2427\":1,\"chunk-0f59ef5d\":1,\"chunk-149f875b\":1,\"chunk-16a5114f\":1,\"chunk-6ccb4bec\":1,\"chunk-1b5bed3b\":1,\"chunk-2200b72c\":1,\"chunk-2433c696\":1,\"chunk-29f971d6\":1,\"chunk-2a029bdc\":1,\"chunk-451236e9\":1,\"chunk-22a26417\":1,\"chunk-0e27245a\":1,\"chunk-24381590\":1,\"chunk-3695c56e\":1,\"chunk-f116ce76\":1,\"chunk-1b7c992e\":1,\"chunk-1bd00361\":1,\"chunk-465fb9a1\":1,\"chunk-c49ad150\":1,\"chunk-4ed97863\":1,\"chunk-6debe8fc\":1,\"chunk-12f2f5d1\":1,\"chunk-56ff09d5\":1,\"chunk-dd32de5c\":1,\"chunk-ed2ec0e0\":1,\"chunk-336a576a\":1,\"chunk-349a314c\":1,\"chunk-3d481012\":1,\"chunk-3fdd9a06\":1,\"chunk-43026318\":1,\"chunk-44f0893b\":1,\"chunk-47dbd1da\":1,\"chunk-4ad996d0\":1,\"chunk-554ade07\":1,\"chunk-5b095308\":1,\"chunk-5d82ae1c\":1,\"chunk-6312cbac\":1,\"chunk-64982492\":1,\"chunk-7097c2e7\":1,\"chunk-7253bc38\":1,\"chunk-7395944c\":1,\"chunk-78e7ce6c\":1,\"chunk-7909145e\":1,\"chunk-7cd54d70\":1,\"chunk-8b544280\":1,\"chunk-a2aab224\":1,\"chunk-a6e69a5e\":1,\"chunk-a847f162\":1,\"chunk-a8e7b29e\":1,\"chunk-aab28442\":1,\"chunk-c4559ac4\":1,\"chunk-ce777ff8\":1,\"chunk-d7c3247c\":1,\"chunk-db45f60e\":1,\"chunk-f7af0972\":1,\"chunk-f92510f2\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-000ee163\":\"31d6cfe0\",\"chunk-00221c58\":\"31d6cfe0\",\"chunk-00da2427\":\"60299f6e\",\"chunk-0f59ef5d\":\"daf4abb3\",\"chunk-12004f49\":\"31d6cfe0\",\"chunk-149f875b\":\"daf4abb3\",\"chunk-16a5114f\":\"d7fc7bf4\",\"chunk-6ccb4bec\":\"75e41eb8\",\"chunk-18c0496e\":\"31d6cfe0\",\"chunk-1b101f6d\":\"31d6cfe0\",\"chunk-1b2ec473\":\"31d6cfe0\",\"chunk-1b5bed3b\":\"daf4abb3\",\"chunk-2200b72c\":\"daf4abb3\",\"chunk-2433c696\":\"a2d35255\",\"chunk-29f971d6\":\"0306f920\",\"chunk-2a029bdc\":\"3ca564e0\",\"chunk-2d0a34f5\":\"31d6cfe0\",\"chunk-2d0bd54f\":\"31d6cfe0\",\"chunk-2d0daae8\":\"31d6cfe0\",\"chunk-451236e9\":\"4139d12b\",\"chunk-22a26417\":\"c353a204\",\"chunk-2d0a3e49\":\"31d6cfe0\",\"chunk-2d0b28bd\":\"31d6cfe0\",\"chunk-0e27245a\":\"daf4abb3\",\"chunk-24381590\":\"b55f6d2d\",\"chunk-3695c56e\":\"904884e2\",\"chunk-f116ce76\":\"7f15adbb\",\"chunk-1b7c992e\":\"08373c84\",\"chunk-1bd00361\":\"aba1c681\",\"chunk-465fb9a1\":\"49835189\",\"chunk-c49ad150\":\"daf4abb3\",\"chunk-2d0a2cfd\":\"31d6cfe0\",\"chunk-4ed97863\":\"d82fa193\",\"chunk-6debe8fc\":\"e49f2cea\",\"chunk-2d21e5e5\":\"31d6cfe0\",\"chunk-6ba4ae98\":\"31d6cfe0\",\"chunk-2d0c5394\":\"31d6cfe0\",\"chunk-12f2f5d1\":\"ea9728ff\",\"chunk-2198556f\":\"31d6cfe0\",\"chunk-34afb828\":\"31d6cfe0\",\"chunk-56ff09d5\":\"ee4fff38\",\"chunk-dd32de5c\":\"47511ea8\",\"chunk-ed2ec0e0\":\"daf4abb3\",\"chunk-2d0c779f\":\"31d6cfe0\",\"chunk-2d0d5b96\":\"31d6cfe0\",\"chunk-2d0da313\":\"31d6cfe0\",\"chunk-2d0dd86c\":\"31d6cfe0\",\"chunk-2d21ee80\":\"31d6cfe0\",\"chunk-30fe6cac\":\"31d6cfe0\",\"chunk-336a576a\":\"daf4abb3\",\"chunk-349a314c\":\"29f9cab7\",\"chunk-3d481012\":\"a210639a\",\"chunk-3fdd9a06\":\"daf4abb3\",\"chunk-43026318\":\"9dcfd8a1\",\"chunk-44f0893b\":\"b55f6d2d\",\"chunk-0fbacdc8\":\"31d6cfe0\",\"chunk-47dbd1da\":\"daf4abb3\",\"chunk-4ad996d0\":\"daf4abb3\",\"chunk-554ade07\":\"eac6b4e6\",\"chunk-5b095308\":\"daf4abb3\",\"chunk-5d82ae1c\":\"0306f920\",\"chunk-6312cbac\":\"eaa460b1\",\"chunk-64982492\":\"daf4abb3\",\"chunk-68a3806a\":\"31d6cfe0\",\"chunk-7097c2e7\":\"daf4abb3\",\"chunk-7253bc38\":\"2677e3fd\",\"chunk-7395944c\":\"eaa460b1\",\"chunk-78e7ce6c\":\"daf4abb3\",\"chunk-7909145e\":\"71859ef2\",\"chunk-7cd54d70\":\"aca84819\",\"chunk-8b544280\":\"498ec274\",\"chunk-a2aab224\":\"daf4abb3\",\"chunk-a6e69a5e\":\"daf4abb3\",\"chunk-a847f162\":\"c8f3f72a\",\"chunk-a8e7b29e\":\"26e8d028\",\"chunk-aab28442\":\"43ab214b\",\"chunk-c4559ac4\":\"daf4abb3\",\"chunk-ce777ff8\":\"daf4abb3\",\"chunk-d7c3247c\":\"daf4abb3\",\"chunk-db45f60e\":\"daf4abb3\",\"chunk-f7af0972\":\"b62a9d2a\",\"chunk-f92510f2\":\"0306f920\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","const ID_TOKEN_KEY = \"remember_token\" as string;\n\n/**\n * @description get token form localStorage\n */\nexport const getToken = (): string | null => {\n return window.localStorage.getItem(ID_TOKEN_KEY);\n};\n\n/**\n * @description save token into localStorage\n * @param token: string\n */\nexport const saveToken = (token: string): void => {\n window.localStorage.setItem(ID_TOKEN_KEY, token);\n};\n\n/**\n * @description remove token form localStorage\n */\nexport const destroyToken = (): void => {\n window.localStorage.removeItem(ID_TOKEN_KEY);\n};\n\nexport default { getToken, saveToken, destroyToken };\n","import ApiService from \"@/core/services/ApiService\";\r\nimport JwtService from \"@/core/services/JwtService\";\r\nimport AccessService from \"@/core/services/AccessService\";\r\nimport { Actions, Mutations } from \"@/store/enums/StoreEnums\";\r\nimport { Module, Action, Mutation, VuexModule } from \"vuex-module-decorators\";\r\nimport { connectToLiveChat, leaveLiveChat } from \"@/pusher.js\";\r\nimport RememberTokenService from \"@/core/services/RememberTokenService\";\r\nimport store from \"@/store\";\r\n\r\nexport interface UserRole {\r\n id: number;\r\n title: string;\r\n}\r\n\r\nexport interface User {\r\n id: number;\r\n name: string;\r\n surname: string;\r\n email: string;\r\n password: string;\r\n token: Record;\r\n rules: Array;\r\n google2fa_secret: string;\r\n google2fa_enabled: boolean;\r\n mandatory_2fa: boolean;\r\n role: UserRole[];\r\n}\r\n\r\nexport interface UserAuthInfo {\r\n errors: Array;\r\n user: User;\r\n isAuthenticated: boolean;\r\n}\r\n\r\n@Module\r\nexport default class AuthModule extends VuexModule implements UserAuthInfo {\r\n errors = [];\r\n user = {} as User;\r\n isAuthenticated = !!JwtService.getToken();\r\n isSubscribedToChat = false;\r\n fetchUser = false;\r\n\r\n /**\r\n * Get current user object\r\n * @returns User\r\n */\r\n get currentUser(): User {\r\n return this.user;\r\n }\r\n\r\n /**\r\n * Get whether the current user is Admin\r\n * @returns boolean\r\n */\r\n get isAdmin(): boolean {\r\n if (Object.keys(this.currentUser).length > 0) {\r\n const roles = this.currentUser.role.map(i => i.title);\r\n return roles.includes(\"Administrator\");\r\n }\r\n return false;\r\n }\r\n\r\n get getFetchUser(): boolean {\r\n return this.fetchUser;\r\n }\r\n\r\n /**\r\n * Verify user authentication\r\n * @returns boolean\r\n */\r\n get isUserAuthenticated(): boolean {\r\n return this.isAuthenticated;\r\n }\r\n\r\n /**\r\n * Get authentification errors\r\n * @returns array\r\n */\r\n get getErrors(): Array {\r\n return this.errors;\r\n }\r\n\r\n get getIsSubscribedToChat(): boolean {\r\n return this.isSubscribedToChat;\r\n }\r\n\r\n\r\n @Mutation\r\n [Mutations.SET_IS_SUBSCRIBED](value) {\r\n this.isSubscribedToChat = value;\r\n }\r\n\r\n @Mutation\r\n [Mutations.SET_ERROR](error) {\r\n this.errors = error;\r\n }\r\n\r\n @Mutation\r\n [Mutations.SET_AUTH](user) {\r\n this.isAuthenticated = true;\r\n this.user = user;\r\n this.errors = [];\r\n JwtService.saveToken(this.user.token.access_token);\r\n AccessService.saveRules(this.user.rules);\r\n }\r\n\r\n @Mutation\r\n [Mutations.SET_USER](user) {\r\n this.user = user;\r\n }\r\n\r\n @Mutation\r\n [Mutations.SET_PASSWORD](password) {\r\n this.user.password = password;\r\n }\r\n\r\n @Mutation\r\n [Mutations.SET_FETCH_USER](fetchUser: boolean): void {\r\n this.fetchUser = fetchUser;\r\n }\r\n\r\n @Mutation\r\n [Mutations.PURGE_AUTH]() {\r\n this.isAuthenticated = false;\r\n this.user = {} as User;\r\n this.errors = [];\r\n JwtService.destroyToken();\r\n AccessService.destroyRules();\r\n store.dispatch(\"RulesModule/purgeRules\");\r\n if (this.isSubscribedToChat) {\r\n leaveLiveChat();\r\n this.isSubscribedToChat = false;\r\n }\r\n }\r\n\r\n @Action({ rawError: true })\r\n [Actions.LOGIN](credentials) {\r\n return new Promise((resolve, reject) => {\r\n const payload = credentials;\r\n if (RememberTokenService.getToken()) {\r\n payload[\"rememberToken\"] = RememberTokenService.getToken();\r\n }\r\n ApiService.post(\"api/v2/auth/login\", payload)\r\n .then(({ data }) => {\r\n this.context.commit(Mutations.SET_AUTH, data);\r\n if (credentials.rememberDevice) {\r\n if (data.remember_token) {\r\n RememberTokenService.saveToken(data.remember_token);\r\n }\r\n }\r\n console.log('asdasdasdasdasdasdsad', this.isSubscribedToChat)\r\n if (data.id && !this.context.getters[\"isSubscribedToChat\"]) {\r\n connectToLiveChat(data.id);\r\n }\r\n resolve(data);\r\n })\r\n .catch(({ response }) => {\r\n reject(response.data);\r\n });\r\n });\r\n }\r\n\r\n @Action\r\n [Actions.LOGOUT]() {\r\n return new Promise((resolve, reject) => {\r\n ApiService.post(\"api/v2/auth/logout\", {})\r\n .then(({ data }) => {\r\n leaveLiveChat();\r\n if (typeof data.id !== \"undefined\") {\r\n this.context.commit(Mutations.SET_AUTH, data);\r\n location.reload();\r\n reject();\r\n } else {\r\n this.context.commit(Mutations.PURGE_AUTH);\r\n this.context.commit(Mutations.SET_IS_SUBSCRIBED, false);\r\n resolve();\r\n }\r\n })\r\n .catch(({ response }) => {\r\n this.context.commit(Mutations.PURGE_AUTH);\r\n reject();\r\n });\r\n });\r\n }\r\n\r\n @Action\r\n [Actions.REGISTER](credentials) {\r\n return new Promise((resolve, reject) => {\r\n ApiService.post(\"registration\", credentials)\r\n .then(({ data }) => {\r\n this.context.commit(Mutations.SET_AUTH, data);\r\n resolve();\r\n })\r\n .catch(({ response }) => {\r\n this.context.commit(Mutations.SET_ERROR, response.data.errors);\r\n reject();\r\n });\r\n });\r\n }\r\n\r\n @Action\r\n [Actions.SET_WEBSOCKET_CONNECTED](value: boolean): void {\r\n this.context.commit(Mutations.SET_IS_SUBSCRIBED, value);\r\n }\r\n\r\n @Action\r\n [Actions.FORGOT_PASSWORD](payload) {\r\n return new Promise((resolve, reject) => {\r\n ApiService.post(\"api/v2/auth/forgot_password\", payload)\r\n .then(({ data }) => {\r\n resolve();\r\n })\r\n .catch(({ response }) => {\r\n reject();\r\n });\r\n });\r\n }\r\n\r\n @Action\r\n [Actions.FORGOT_PASSWORD_SAVE](payload) {\r\n return new Promise((resolve, reject) => {\r\n ApiService.post(\"api/v2/auth/forgot_password_save\", payload)\r\n .then(({ data }) => {\r\n resolve();\r\n })\r\n .catch(({ response }) => {\r\n reject();\r\n });\r\n });\r\n }\r\n\r\n @Action\r\n [Actions.SET_FETCH_USER](value: boolean): void {\r\n this.context.commit(Mutations.SET_FETCH_USER, value);\r\n }\r\n\r\n @Action({ rawError: true })\r\n [Actions.VERIFY_AUTH]() {\r\n return new Promise((resolve, reject) => {\r\n if (JwtService.getToken()) {\r\n ApiService.setHeader();\r\n if (Object.keys(this.currentUser).length == 0) {\r\n this.context.commit(Mutations.SET_FETCH_USER, true);\r\n }\r\n ApiService.post(\"api/v2/auth/refresh\", {\r\n data: { fetchUser: this.getFetchUser }\r\n })\r\n .then(({ data }) => {\r\n if (this.fetchUser) {\r\n this.context.commit(Mutations.SET_USER, data);\r\n if (data.id && !this.isSubscribedToChat) {\r\n connectToLiveChat(data.id);\r\n }\r\n this.context.commit(Mutations.SET_FETCH_USER, false);\r\n }\r\n resolve(data);\r\n })\r\n .catch(({ response }) => {\r\n this.context.commit(Mutations.SET_ERROR, response.data.errors);\r\n window.localStorage.removeItem(\"id_token\");\r\n this.context.commit(Mutations.PURGE_AUTH);\r\n reject();\r\n window.location.reload();\r\n });\r\n } else {\r\n this.context.commit(Mutations.PURGE_AUTH);\r\n reject();\r\n }\r\n });\r\n }\r\n\r\n @Action\r\n [Actions.UPDATE_USER](payload) {\r\n ApiService.setHeader();\r\n return new Promise((resolve, reject) => {\r\n ApiService.post(\"update_user\", payload)\r\n .then(({ data }) => {\r\n this.context.commit(Mutations.SET_USER, data);\r\n resolve();\r\n })\r\n .catch(({ response }) => {\r\n this.context.commit(Mutations.SET_ERROR, response.data.errors);\r\n reject();\r\n });\r\n });\r\n }\r\n}\r\n","export type State = { classes: object };\r\nimport { Module, VuexModule, Mutation, Action } from \"vuex-module-decorators\";\r\nimport { Actions, Mutations } from \"@/store/enums/StoreEnums\";\r\n\r\nexport interface StoreInfo {\r\n classes: object;\r\n}\r\n\r\n@Module\r\nexport default class BodyModule extends VuexModule implements StoreInfo {\r\n classes = {};\r\n\r\n /**\r\n * Get current page title\r\n * @returns string\r\n */\r\n get getClasses(): object {\r\n return position => {\r\n if (typeof position !== \"undefined\") {\r\n return this.classes[position];\r\n }\r\n return this.classes;\r\n };\r\n }\r\n\r\n @Mutation\r\n [Mutations.SET_CLASSNAME_BY_POSITION](payload) {\r\n const { position, className } = payload;\r\n if (!this.classes[position]) {\r\n this.classes[position] = [];\r\n }\r\n this.classes[position].push(className);\r\n }\r\n\r\n @Action\r\n [Actions.ADD_BODY_CLASSNAME](className) {\r\n document.body.classList.add(className);\r\n }\r\n\r\n @Action\r\n [Actions.REMOVE_BODY_CLASSNAME](className) {\r\n document.body.classList.remove(className);\r\n }\r\n\r\n @Action\r\n [Actions.ADD_BODY_ATTRIBUTE](payload) {\r\n const { qulifiedName, value } = payload;\r\n document.body.setAttribute(qulifiedName, value);\r\n }\r\n\r\n @Action\r\n [Actions.REMOVE_BODY_ATTRIBUTE](payload) {\r\n const { qulifiedName } = payload;\r\n document.body.removeAttribute(qulifiedName);\r\n }\r\n\r\n @Action\r\n [Actions.ADD_CLASSNAME](payload) {\r\n this.context.commit(Mutations.SET_CLASSNAME_BY_POSITION, payload);\r\n }\r\n}\r\n","import { Action, Mutation, Module, VuexModule } from \"vuex-module-decorators\";\r\nimport { Actions, Mutations } from \"@/store/enums/StoreEnums\";\r\n\r\ninterface Breadcrumb {\r\n title: string;\r\n pageBreadcrumbPath: Array;\r\n}\r\n\r\ninterface StoreInfo {\r\n breadcrumbs: Breadcrumb;\r\n}\r\n\r\n@Module\r\nexport default class BreadcrumbsModule extends VuexModule implements StoreInfo {\r\n breadcrumbs = {} as Breadcrumb;\r\n\r\n /**\r\n * Get breadcrumb object for current page\r\n * @returns object\r\n */\r\n get getBreadcrumbs(): Breadcrumb {\r\n return this.breadcrumbs;\r\n }\r\n\r\n /**\r\n * Get breadcrumb array for current page\r\n * @returns object\r\n */\r\n get pageBreadcrumbPath(): Array {\r\n return this.breadcrumbs.pageBreadcrumbPath;\r\n }\r\n\r\n /**\r\n * Get current page title\r\n * @returns string\r\n */\r\n get pageTitle(): string {\r\n return this.breadcrumbs.title;\r\n }\r\n\r\n @Mutation\r\n [Mutations.SET_BREADCRUMB_MUTATION](payload) {\r\n this.breadcrumbs = payload;\r\n }\r\n\r\n @Action\r\n [Actions.SET_BREADCRUMB_ACTION](payload) {\r\n this.context.commit(Mutations.SET_BREADCRUMB_MUTATION, payload);\r\n }\r\n}\r\n","import LayoutConfigTypes from \"@/core/config/LayoutConfigTypes\";\r\n\r\nconst config: LayoutConfigTypes = {\r\n themeName: \"Metronic\",\r\n themeVersion: \"8.0.22\",\r\n demo: \"demo1\",\r\n main: {\r\n type: \"default\",\r\n primaryColor: \"#009EF7\",\r\n logo: {\r\n dark: \"/media/logos/logo.png\",\r\n light: \"/media/logos/logo.png\"\r\n }\r\n },\r\n loader: {\r\n logo: \"/media/logos/logo.png\",\r\n display: true,\r\n type: \"default\"\r\n },\r\n scrollTop: {\r\n display: true\r\n },\r\n header: {\r\n display: true,\r\n menuIcon: \"font\",\r\n width: \"fluid\",\r\n fixed: {\r\n desktop: true,\r\n tabletAndMobile: true\r\n }\r\n },\r\n toolbar: {\r\n display: true,\r\n width: \"fluid\",\r\n fixed: {\r\n desktop: true,\r\n tabletAndMobile: true\r\n }\r\n },\r\n aside: {\r\n display: true,\r\n theme: \"dark\",\r\n fixed: true,\r\n menuIcon: \"svg\",\r\n minimized: false,\r\n minimize: true,\r\n hoverable: true\r\n },\r\n content: {\r\n width: \"fixed\"\r\n },\r\n footer: {\r\n width: \"fluid\"\r\n }\r\n};\r\n\r\nexport default config;\r\n","import objectPath from \"object-path\";\r\nimport merge from \"deepmerge\";\r\nimport layoutConfig from \"@/core/config/DefaultLayoutConfig\";\r\nimport { Mutations } from \"@/store/enums/StoreEnums\";\r\nimport { Mutation, Module, VuexModule } from \"vuex-module-decorators\";\r\n\r\ninterface StoreInfo {\r\n config: object;\r\n initial: object;\r\n}\r\n\r\n@Module\r\nexport default class ConfigModule extends VuexModule implements StoreInfo {\r\n config: object = layoutConfig;\r\n initial: object = layoutConfig;\r\n\r\n /**\r\n * Get config from layout config\r\n * @returns {function(path, defaultValue): *}\r\n */\r\n get layoutConfig() {\r\n return (path, defaultValue) => {\r\n return objectPath.get(this.config, path, defaultValue);\r\n };\r\n }\r\n\r\n @Mutation\r\n [Mutations.SET_LAYOUT_CONFIG](payload: object): void {\r\n this.config = payload;\r\n }\r\n\r\n @Mutation\r\n [Mutations.RESET_LAYOUT_CONFIG]() {\r\n this.config = Object.assign({}, this.initial);\r\n }\r\n\r\n @Mutation\r\n [Mutations.OVERRIDE_LAYOUT_CONFIG](): void {\r\n this.config = this.initial = Object.assign(\r\n {},\r\n this.initial,\r\n JSON.parse(window.localStorage.getItem(\"config\") || \"{}\")\r\n );\r\n }\r\n\r\n @Mutation\r\n [Mutations.OVERRIDE_PAGE_LAYOUT_CONFIG](payload: object): void {\r\n this.config = merge(this.config, payload);\r\n }\r\n}\r\n","/* eslint-disable */\nimport ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\n\nfunction initialState() {\n return {\n jobs: [],\n pagination: {},\n loading: false,\n error: '',\n jobStatusLoading: {\n job_id: null,\n loading: false,\n },\n query : {\n companyID : '',\n countryID: '',\n userSearchInput: '',\n branches: [],\n own: false\n },\n jobType: 'upcoming',\n relationships: {\n company: \"name\",\n country: \"title\",\n venue: \"name\",\n book_from_branches: \"name\",\n project_manager: \"name\",\n contact_on_location: \"name\",\n crew_boss: \"name\"\n },\n shiftsAll: [],\n relatedClients: \"\",\n relatedCountries: \"\",\n isAwaitingCancel: [],\n isPast: false,\n isOwn: false,\n loadedNew: false,\n loadedOwn: false,\n page: 1,\n total: 0,\n };\n}\n\nconst getters = {\n jobs: state => state.jobs,\n jobType: state => state.jobType,\n loading: state => state.loading,\n jobStatusLoading: state => state.jobStatusLoading,\n relationships: state => state.relationships,\n query: state => state.query,\n statusAll: state => state.statusAll,\n shiftsAll: state => state.shiftsAll,\n isPast: state => state.isPast,\n isOwn: state => state.isOwn,\n loadedNew: state => state.loadedNew,\n loadedOwn: state => state.loadedOwn,\n page: state => state.page,\n total: state => state.total,\n getPaginationData: state => state.pagination,\n relatedClients: state => state.relatedClients,\n relatedCountries: state => state.relatedCountries,\n isAwaitingCancel: state => state.isAwaitingCancel\n};\n\nconst actions = {\n resetPageNumber({commit}){\n commit('resetPageNumber');\n },\n setIsChangingStatus({commit}, payload) {\n commit(\"setJobStatusLoading\", { job_id: payload.id, loading: payload.state });\n },\n async saveNewJobStatus({ state, commit, dispatch }, payload) {\n commit(\"setJobStatusLoading\", { job_id: payload.id, loading: true });\n await ApiService\n .post(`/api/v2/jobs/` + payload.id + `/status/` + payload.newStatus)\n .then(() =>{\n if (!payload.isSingleJobView) {\n const jobToChange = state.jobs.find(job => job.id == payload.id);\n jobToChange.status = payload.newStatus;\n }\n })\n .finally(() => {\n if (!payload.isSingleJobView) {\n commit(\"setJobStatusLoading\", { job_id: payload.id, loading: false });\n }\n });\n },\n fetchRelatedClients({ state, commit }, query) {\n ApiService.get(\"/api/v2\",`clientswithjobs?${query}${state.query.countryID ? '&filter[country_id]=' + state.query.countryID : ''}`)\n .then((response) => {\n commit(\"setRelatedClients\", response.data.data);\n })\n },\n fetchRelatedCountries({ state, commit }, query) {\n ApiService.get(\"/api/v2\",`countrieswithjobs?${query}${state.query.companyID ? '&filter[company_id]=' + state.query.companyID : ''}`)\n .then((response) => {\n commit('setRelatedCountries', response.data.data);\n })\n },\n fetchData({commit, state, dispatch}, filters) {\n return new Promise((resolve, reject) => {\n commit(\"setLoading\", true);\n const relatedFilters = ((state.query.companyID !== '') ? '&filter[company_id]=' + state.query.companyID : '') +\n ((state.query.countryID !== '') ? '&filter[country_id]=' + state.query.countryID : '');\n const query = \" past=\" +\n +state.isPast +\n \"&own=\" +\n +state.isOwn +\n \"&page=\" +\n +state.page +\n ((state.query.own) ? '&filter[own]=' + state.query.own : '') +\n ((state.query.userSearchInput !== '') ? '&filter[search]=' + state.query.userSearchInput : '') +\n ((state.jobType == 'upcoming') ? '&filter[upcoming]=1' : '&filter[past]=1') +\n ((filters.status == \"\") ? \"\" : `&filter[status]=${filters.status}`) +\n ((state.query.branches.length > 0) ? '&filter[branches]=' + state.query.branches : '');\n dispatch(\"fetchRelatedClients\", query);\n dispatch(\"fetchRelatedCountries\", query);\n dispatch(\"ListsModule/fetchBranches\", { filters: {\n upcoming: state.jobType == \"upcoming\",\n past: state.jobType == \"past\",\n country_id: state.query.countryID,\n company: state.query.companyID\n }},\n { root: true });\n ApiService\n .get(\n \"/api/v2\",\n `jobs?${query}${relatedFilters}`\n )\n .then(response => {\n const newAll = response.data.data;\n const paginationData = response.data.meta;\n if (!state.isPast) {\n commit(\"setLoadedNew\", true);\n }\n if (state.isOwn) {\n commit(\"setLoadedOwn\", true);\n }\n commit(\"setJobs\", newAll);\n commit(\"setPaginationData\" , paginationData)\n commit(\"setTotal\", response.data.total);\n resolve();\n })\n .catch(error => {\n message = error.response.data.message || error.message;\n commit(\"setError\", message);\n console.log(message);\n reject(error);\n })\n .finally(() => {\n commit(\"setLoading\", false);\n });\n });\n\n },\n destroyData({ commit, state }, id) {\n ApiService\n .delete(\"/api/v2/jobs/\" + id)\n .then(response => {\n commit(\n \"setJobs\",\n state.jobs.filter(item => {\n return item.id != id;\n })\n );\n Swal.fire({\n toast: true,\n position: 'top-end',\n icon: 'success',\n title: `Job deleted successfully`,\n showConfirmButton: false,\n timer: 3000\n })\n })\n .catch(error => {\n console.log(error);\n message = error.response.data.message || error.message;\n commit(\"setError\", message);\n console.log(message);\n });\n },\n changeJobReason({ state, commit, dispatch }, payload) {\n ApiService\n .post(\n `/api/v2/jobs/${payload.id}/change-reason`, payload\n )\n .then(() => {\n const jobIndex = state.jobs.findIndex(job => job.id == payload.id);\n\n if (!state.jobs[jobIndex].reason || !payload.reason) {\n state.jobs[jobIndex].reason = payload.reason;\n }\n })\n .catch(error => {\n commit(\"setError\", error);\n });\n },\n cancelJob({ commit }, data) {\n commit('isAwaitingCancel', data.id);\n ApiService.post(`/api/v2/jobs/${data.id}/status/Cancelled`)\n .finally(() => {\n commit(\"changeLocalJobStatus\", data.id);\n commit('clearIsAwaitingCancel', data.id);\n })\n },\n setQuery({commit}, value) {\n commit(\"setQuery\", value);\n }, \n setLoading({ commit }, value) {\n commit(\"setLoading\", purify(value));\n },\n setJobStatusLoading({ commit }, value) {\n commit(\"setJobStatusLoading\", purify(value));\n },\n setIsPast({ commit, dispatch }, value) {\n commit(\"setIsPast\", value);\n },\n setLoadedNew({ commit, dispatch }, value) {\n commit(\"setLoadedNew\", purify(value));\n },\n setJobsType({commit}, value){\n commit('setJobsType', value)\n },\n setIsOwn({ commit, dispatch }, value) {\n commit(\"setIsOwn\", purify(value));\n },\n setPage({ commit }, value) {\n commit(\"setPage\", value)\n },\n setTotal({ commit, dispatch }, value) {\n commit(\"setTotal\", purify(value));\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n};\n\nconst mutations = {\n setJobs(state, items) {\n state.jobs = items;\n },\n setRelatedClients(state, payload) {\n state.relatedClients = payload;\n },\n setLoading(state, loading) {\n state.loading = loading;\n },\n setJobStatusLoading(state, payload) {\n state.jobStatusLoading.job_id = payload.job_id;\n state.jobStatusLoading.loading = payload.loading;\n },\n setQuery(state, query) {\n state.query = query;\n },\n setError(state, value) {\n state.error = value\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n },\n setShiftsAll(state, value) {\n state.shiftsAll = value;\n },\n setPaginationData(state , value){\n state.pagination = value;\n },\n setIsPast(state, value) {\n state.isPast = value;\n },\n setIsOwn(state, value) {\n state.isOwn = value;\n },\n setPage(state, value) {\n state.page = value;\n },\n setTotal(state, value) {\n state.total = value;\n },\n isAwaitingCancel(state, value) {\n state.isAwaitingCancel.push(value);\n },\n clearIsAwaitingCancel(state, value) {\n state.isAwaitingCancel.filter(item => item == value);\n },\n changeLocalJobStatus(state, value) {\n state.jobs.find(job => job.id == value).status = \"Cancelled\";\n },\n setLoadedNew(state, value) {\n state.loadedNew = value;\n },\n setRelatedCountries(state, value) {\n if(value) {\n state.relatedCountries = value.filter(n => n)\n }\n },\n setLoadedOwn(state, value) {\n state.loadedOwn = value;\n },\n setJobsType(state, value){\n state.jobType = value\n },\n resetPageNumber(state){\n state.page = 1;\n }\n};\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n};\n","/* eslint-disable */\nimport ApiService from \"../../../core/services/ApiService\";\n\nfunction initialState () {\n return {\n companies: [],\n permissions: [],\n companyCols: [],\n countries: [],\n countriesWithBranches: [],\n countriesWithVenues: [],\n venues: [],\n branches: [],\n users: [],\n helpCategories: [],\n pms: [],\n roles: [],\n activityTypes: [],\n skills: [],\n subSkills: [],\n levels: [],\n languages: [],\n documentTypes: [],\n dresscodes: [],\n currencies: [],\n preferredBranches: [],\n preferredVenues: [],\n companiesDropdown: [],\n crewHandlers: [],\n loading: false,\n queryString: '',\n isFetchingPMs: false,\n isFetchingSkills: false,\n isFetchingDresscodes: false,\n isFetchingCH: false\n }\n}\n\nconst getters = {\n companies: state => state.companies,\n companyCols: state => state.companyCols,\n countries: state => state.countries,\n venues: state => state.venues,\n branches: state => state.branches,\n users: state => state.users,\n pms: state => state.pms,\n roles: state => state.roles,\n loading: state => state.loading,\n queryString: state => state.queryString,\n countriesWithBranches: state => state.countriesWithBranches,\n countriesWithVenues : state => state.countriesWithVenues,\n skills: state => state.skills,\n activityTypes: state => state.activityTypes,\n subSkills: state => state.subSkills,\n levels: state => state.levels,\n getCurrencies: state => state.currencies,\n languages: state => state.languages,\n getPermissions: state => state.permissions,\n documentTypes: state => state.documentTypes,\n dresscodes: state => state.dresscodes,\n getHelpCategoriesList: state => state.helpCategories,\n preferredBranches: state => state.preferredBranches,\n preferredVenues: state => state.preferredVenues,\n companiesDropdown: state => state.companiesDropdown,\n crewHandlers: state => state.crewHandlers\n}\n\nconst actions = {\n async fetchCompanies ({ commit, state, dispatch }, params = {} ) {\n // page, perPage = 10, filters = null\n if (!params.page) params.page = 1\n if (!params.perPage) params.perPage = 100\n if (!params.filters) params.filters = null\n params.dropdown = true\n\n commit('setQueryString', params.filters)\n const dropdownString = 'dropdown=' + params.dropdown + '&'\n return await ApiService.get(`/api/v2/companies?${state.queryString}${dropdownString}`).then(response => {\n commit('setCompanies', response.data)\n return response.data\n })\n },\n fetchDocumentTypes({commit, state}) {\n commit('setLoading', true);\n \n ApiService.get('api/v2',\n 'document-types')\n .then(\n response => {\n commit('setDocumentTypes' , response.data.data)\n }).catch(error => {\n commit('setError', error)\n console.log(error)\n }).finally(() => {\n commit('setLoading' , false)\n });\n },\n\n fetchPreferredBranches({commit}, query) {\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2\", `preferred-branches${query ? `?company_id=${query}` : ''}`)\n .then((response) => {\n commit(\"setPreferredBranches\", response.data.data);\n resolve();\n })\n .catch((err) => {\n reject(err);\n })\n });\n },\n\n fetchPreferredVenues({ commit }, query) {\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2\", `preferred-venues${query ? `?company_id=${query}` : ''}`)\n .then((response) => {\n commit(\"setPreferredVenues\", response.data.data);\n resolve();\n })\n .catch((err) => {\n reject(err);\n })\n });\n },\n\n fetchDresscodes({ state, commit }) {\n if(!state.isFetchingDresscodes){\n commit('isFetchingDresscodes', true)\n ApiService.get('api/v2',\n 'dresscodes?')\n .then(\n response => {\n commit('setDresscodesList' , response.data.data)\n }).catch(error => {\n commit('setError', error)\n }).finally(() => {\n commit('isFetchingDresscodes', false)\n });\n }\n },\n async fetchCompaniesAll ({ commit, state, dispatch }, params = {}) {\n if (!params.filters) params.filters = null;\n params.dropdown = true;\n commit('setQueryString', params.filters);\n const dropdownString = 'dropdown=' + params.dropdown + '&'\n await ApiService.get(`/api/v2/companies?${state.queryString}${dropdownString}`).then(response => {\n commit('setCompanies', response.data.data)\n return response.data.data\n })\n },\n\n async fetchCompaniesDropdown ({ commit, state, dispatch }, params = {}) {\n const dropdownString = 'dropdown=true';\n await ApiService.get(`/api/v2/companies` ,`?${dropdownString}`).then(response => {\n commit('setCompaniesDropdown', response.data.data)\n return response.data.data\n })\n },\n\n clearCols({ commit }) {\n commit(\"setCompanyCols\", []);\n },\n\n async fetchCompanyCols ({ commit }, id) {\n commit(\"setCompanyCols\", []);\n await ApiService.get(`/api/v2/companies/${id}/users`)\n .then(response => {\n commit('setCompanyCols', response.data.data)\n return response.data.data\n })\n },\n\n async fetchSkills ({ commit, state, dispatch }, params = {}) {\n if (!params.filters) params.filters = null;\n commit('setQueryString', params.filters);\n if(!state.isFetchingSkills){\n commit(\"isFetchingSkills\", true)\n return ApiService.get(`/api/v2`,\n `skills?sort=order&order=asc`+\n `&filter[parent_id]=null`\n ).then(response => {\n commit('setSkills', response.data.data)\n commit(\"isFetchingSkills\", false)\n return response.data.data\n })\n }\n },\n\n async fetchSubSkills ({ commit, state, dispatch }, params = {}) {\n if (!params.filters) params.filters = null;\n commit('setQueryString', params.filters);\n await ApiService.get(`/api/v2/skills?${state.queryString}`).then(response => {\n commit('setSubSkills', response.data.data)\n return response.data.data\n })\n },\n\n fetchUserById({ commit }, id) {\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2\", \"users/\" + id)\n .then((response) => {\n resolve(response.data.data);\n })\n .catch((err) => {\n reject(err);\n })\n });\n },\n\n fetchActivityTypes({commit}) {\n ApiService.get('api/v2', 'activity-log?types=true')\n .then(response => {\n commit('setActivityTypes', response.data)\n })\n\n },\n\n fetchSingleVenue({commit}, venueId) {\n return new Promise((resolve, reject) => {\n if(\"number\" !== typeof venueId) {\n reject(\"A valid branch id is required\");\n }\n ApiService.get(\"api/v2\", `venues/${venueId}`)\n .then((response) => {\n resolve(response.data.data);\n })\n .catch((err) => {\n reject(err);\n })\n });\n },\n\n async fetchLevels ({ commit, state, dispatch }, params = {}) {\n if (!params.filters) params.filters = null;\n commit('setQueryString', params.filters);\n await ApiService.get(`/api/v2/levels?${state.queryString}`).then(response => {\n commit('setLevels', response.data.data)\n return response.data.data\n })\n },\n\n async fetchCountries ({ commit }, filters = null) {\n await ApiService.get('/api/v2/countries').then(response => {\n commit('setCountries', response.data.data)\n return response.data.data\n })\n },\n\n async fetchCountriesWithBranches ({ commit, state, dispatch }, params = {}) {\n if (!params.filters) params.filters = null;\n params.dropdown = true;\n commit('setQueryString', params.filters);\n const dropdownString = 'dropdown=' + params.dropdown + '&';\n await ApiService.get(`/api/v2/countries?withBranches=true&${state.queryString}${dropdownString}`).then(response => {\n commit('countriesWithBranches', response.data.data)\n return response.data.data\n })\n },\n\n fetchHelpCategories({commit}) {\n ApiService.get('api/v2', 'help-categories')\n .then(response => {\n commit('setHelpCategoriesList' , response.data.data);\n })\n },\n\n fetchVenues ({ commit }, countryId = null) {\n return new Promise((resolve, reject) => {\n const queryString = countryId ? `filter[country_id]=${countryId}` : ''\n ApiService.get('/api/v2', 'venues?' + `${queryString}`)\n .then(response => {\n commit('setVenues', response.data.data)\n resolve(response.data.data);\n })\n .catch((err) => {\n reject(err);\n })\n })\n },\n fetchAllPermissions({ commit }) {\n ApiService\n .get(\n \"/api/v2\",\n \"permissions\")\n .then(response => {\n commit(\"setPermissions\", response.data.data);\n });\n },\n\n fetchCrewHandlers ({ state, commit }) {\n if(!state.isFetchingPMs){\n commit(\"isFetchingCH\", true);\n ApiService.get('/api/v2', 'users?filter[roles]=Crew Handler').then(response => {\n commit('setCrewHandlers', response.data.data);\n commit(\"isFetchingCH\", false);\n return response.data.data;\n })\n }\n },\n\n fetchBranches ({ commit, state, dispatch }, params = {}) {\n if (!params.filters) params.filters = null;\n commit('setQueryString', params.filters);\n ApiService.get(`/api/v2/branches?${state.queryString}`).then(response => {\n commit('setBranches', response.data.data)\n return response.data.data\n })\n },\n\n fetchUsers ({ commit }) {\n ApiService.get('/api/v2/users').then(response => {\n commit('setUsers', response.data.data)\n return response.data.data\n })\n },\n\n fetchPms ({ state, commit }) {\n if(!state.isFetchingPMs){\n commit(\"isFetchingPMs\", true)\n ApiService.get('/api/v2', 'users?filter[roles]=Project Manager').then(response => {\n commit('setPms', response.data.data)\n commit(\"isFetchingPMs\", false)\n return response.data.data\n })\n }\n },\n\n fetchRoles ({ commit }) {\n ApiService.get('/api/v2/roles').then(response => {\n commit('setRoles', response.data.data)\n return response.data.data\n })\n },\n\n fetchLanguages ({ commit }) {\n ApiService.get('/api/v2/languages')\n .then(response => {\n commit('setLanguages', response.data.data);\n });\n },\n\n fetchCurrencies ({ commit }) {\n ApiService.get('/api/v2/currencies')\n .then(response => {\n commit('setCurrencies', response.data.data);\n });\n },\n\n resetState ({ commit }) {\n commit('resetState')\n },\n}\n\nconst mutations = {\n setCompanies (state, value) {\n state.companies = value\n },\n setCompaniesDropdown(state, value) {\n state.companiesDropdown = value\n },\n setCrewHandlers(state, payload) {\n state.crewHandlers = payload;\n },\n setDresscodesList(state, value) {\n state.dresscodes = value;\n },\n setPreferredBranches(state, payload) {\n state.preferredBranches = payload;\n },\n setPreferredVenues(state, payload) {\n state.preferredVenues = payload;\n },\n setCompanyCols (state, value) {\n state.companyCols = value\n },\n setDocumentTypes(state, value) {\n state.documentTypes = value;\n },\n setCountries (state, value) {\n state.countries = value\n },\n countriesWithBranches (state, value) {\n state.countriesWithBranches = value\n },\n countriesWithVenues (state, value) {\n state.countriesWithVenues = value\n },\n setVenues (state, value) {\n state.venues = value;\n },\n setBranches (state, value) {\n state.branches = value\n },\n setUsers (state, value) {\n state.users = value\n },\n setPms (state, value) {\n state.pms = value\n },\n setRoles (state, value) {\n state.roles = value\n },\n setSkills (state, value) {\n state.skills = value\n },\n setSubSkills (state, value) {\n state.subSkills = value\n },\n setLevels (state, value) {\n state.levels = value\n },\n setLanguages (state, value) {\n state.languages = value\n },\n setActivityTypes(state, value) {\n state.activityTypes = value;\n },\n setHelpCategoriesList(state, payload) {\n state.helpCategories = payload;\n },\n setPermissions(state, value) {\n state.permissions = value;\n },\n setCurrencies(state, data) {\n state.currencies = data;\n },\n setLoading (state, loading) {\n state.loading = loading\n },\n isFetchingPMs(state, value) {\n state.isFetchingPMs = value;\n },\n isFetchingSkills(state, value) {\n state.isFetchingSkills = value;\n },\n isFetchingCH(state, loading) {\n state.isFetchingCH = loading;\n },\n isFetchingDresscodes(state, value) {\n state.isFetchingDresscodes = value;\n },\n setQueryString(state, filters) {\n let queryString = '';\n if (filters) {\n for (const field in filters) {\n if (filters[field]) {\n if (Array.isArray(filters[field]) && !filters[field].length) continue;\n queryString += 'filter[' + field + ']=' + filters[field] + '&'\n }\n }\n }\n state.queryString = queryString;\n },\n resetState (state) {\n state = Object.assign(state, initialState())\n },\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations,\n}\n","import ApiService from \"../../../core/services/ApiService\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n userDocuments : [],\n loading: false\n }\n}\n\nconst getters = {\n getDocuments: state => state.userDocuments,\n loading: state => state.loading\n}\n\nconst actions = {\n fetchData({\n commit,\n }, userId) {\n commit('setLoading', true)\n\n ApiService.get(`/api/v2` , `documents?user_id=${userId}`)\n .then(response => {\n commit('setData', response.data.data)\n })\n .catch(error => {\n message = error.response.data.message || error.message\n commit('setError', message)\n })\n .finally(() => {\n commit('setLoading', false)\n })\n },\n createNew({ commit , dispatch}, payload) {\n ApiService.post('/api/v2/documents/' , payload)\n .then(response => {\n //\n })\n .catch(error => {\n console.log(error)\n })\n .finally(() => {\n dispatch(\"fetchData\")\n })\n },\n update({ commit , dispatch}, payload) {\n ApiService.update('/api/v2/documents' , payload.id , payload.data)\n .then(response => {\n //\n })\n .catch(error => {\n console.log(error)\n })\n .finally(() => {\n dispatch(\"fetchData\")\n })\n },\n destroyData({commit}, documentId) {\n return new Promise((resolve, reject) => {\n ApiService.delete(\"/api/v2/documents/\" + documentId)\n .then(response => {\n resolve(response)\n })\n .catch((error) => {\n reject(error);\n })\n })\n },\n}\nconst mutations = {\n resetState(state) {\n state = initialState();\n },\n setData(state, value ) {\n state.userDocuments = value;\n },\n setLoading(state, value) { \n state.loading = value;\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}","/* eslint-disable */\nimport ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\nimport router from \"@/router\";\n\nfunction initPayment() {\n return {\n company_name: \"\",\n has_danish_bank: 0,\n has_tax_id: 0,\n iban: \"\",\n konto: \"\",\n reg: \"\",\n social_security: \"\",\n swift: \"\",\n tax_card: \"\",\n tax_id: \"\",\n user_id: getters.getSingleUser.id,\n }\n}\n\nfunction initialState() {\n return {\n all: [],\n singleUser: {},\n relationships: {\n branches: \"name\",\n country: \"title\",\n languages: \"name\",\n skills: \"name\",\n company: \"name\",\n invited_by: \"name\",\n role: \"title\",\n favorite_jobs: \"name\"\n },\n mySkills: {},\n myExperiences: {},\n loading: false,\n referredUsers: [],\n message: \"\",\n usersList: [],\n search: \"\",\n parent_skill: \"\",\n sub_skill: \"\",\n pagination: {\n current_page: 1,\n last_page: 1\n }\n };\n}\n\nconst getters = {\n data: state => {\n let rows = state.all;\n\n if (state.search && state.search.length > 0) {\n rows = rows.filter(\n user => user.name.toLowerCase().indexOf(state.search.toLowerCase()) >= 0\n );\n }\n\n if (state.query.sort) {\n rows = _.orderBy(rows, state.query.sort, state.query.order);\n }\n\n return rows.slice(\n state.query.offset,\n state.query.offset + state.query.limit\n );\n },\n total: state => state.all.length,\n loading: state => state.loading,\n relationships: state => state.relationships,\n mySkills: state => state.mySkills,\n myExperiences: state => state.myExperiences,\n all: state => state.all,\n usersList: state => state.usersList,\n getPaginationData: state => state.pagination,\n getSingleUser: state => state.singleUser,\n getSearchString: state => state.search,\n getReferredUsers: state => state.referredUsers,\n getParentSkill: state => state.parent_skill,\n getSubSkill: state => state.sub_skill\n};\n\nconst actions = {\n fetchData({ commit, state }, params = {}) {\n commit(\"setLoading\", true);\n \n ApiService\n .get(\n \"/api/v2\",\n 'users?page='+\n state.pagination.current_page +\n \"&perPage=10\" +\n ((state.search == \"\") ? \"\" : '&filter[search]=' + state.search)\n + `${state.sub_skill == \"\" ? '' : \"&sub_skill=\"+state.sub_skill}`\n + `${state.parent_skill == \"\" ? '' : \"&parent_skill=\"+state.parent_skill}`\n )\n .then(response => {\n commit(\"setUsersList\", response.data.data);\n commit(\"setPagination\", response.data);\n })\n .catch(error => {\n message = error.response.data.message || error.message;\n commit(\"setError\", message);\n console.log(message);\n })\n .finally(() => {\n commit(\"setLoading\", false);\n });\n },\n\n destroyData({ commit, dispatch}, id) {\n ApiService\n .delete('/api/v2/users/' + id)\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `User deleted successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n message = error.response.data.message || error.message\n commit('setError', message)\n console.log(message)\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n\n changeUserStatus({ commit, state, dispatch}, payload) {\n ApiService\n .post(`/api/v2/users/${payload.id}/change-status`,{status: payload.status})\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `User ${payload.status == 'active' ? 'activated' : 'deactivated'} successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n message = error.response.data.message || error.message\n commit('setError', message)\n console.log(message)\n })\n .finally(() => {\n dispatch('fetchData');\n }\n )\n },\n checkEmailFree({ commit }, email) {\n return new Promise((resolve, reject) => {\n ApiService.post(\"api/v2/check-email-free\", { email : email })\n .then(() => {\n resolve();\n })\n .catch(() => {\n reject();\n })\n })\n },\n createCOL({ commit }, data) {\n const payload = {\n first_name: data.name,\n role: [data.role],\n phone: data.phone,\n email: data.email,\n company_id: data.company,\n password: data.password != \"\" ? data.password : null,\n approved: 1\n }\n return new Promise((resolve, reject) => {\n ApiService.post(\"api/v2/users\", payload).then(response => {\n resolve(response.data.data);\n }).catch(error => {\n reject(error);\n })\n })\n },\n getUserById({commit}, value) {\n commit(\"setLoading\", true)\n ApiService.get(\n `/api/v2/users/` + value\n ).then(\n response => {\n commit(\"setFetchedUserById\" , response.data.data);\n commit(\"setLoading\", false)\n }\n ).catch(err => {\n router.push(\"/\");\n })\n },\n update({ dispatch }, value) {\n return new Promise((res, rej) => {\n ApiService.update(\n `/api/v2/users` , value.id , value.payload\n ).then(\n () => {\n dispatch(\"getUserById\", value.id);\n res();\n }).catch(\n error => {\n rej(error);\n })\n })\n },\n updateProfilePicture({ commit }, data) {\n return new Promise((res, rej) => {\n const formData = new FormData();\n formData.append('file', data.file);\n ApiService.post(`api/v2/users/profilePicture/${data.id}`, formData).then(() => {\n res()\n }).catch(err => {\n rej(err);\n });\n });\n },\n fetchReferredUsers({ commit }, data) {\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2\", `users/referredBy/${data.id}?page=${data.page}&perPage=5`)\n .then(response => {\n commit(\"setReferredUsers\", response.data.data);\n resolve(response.data.last_page);\n })\n .catch(error => {\n reject(error);\n })\n })\n },\n\n sendInviteAFriendMail({}, email) {\n return new Promise((resolve, reject) => {\n ApiService.post(\"api/v2/sendinvitemail\", { email: email })\n .then(response => {\n resolve(response.last_page);\n })\n .catch(error => {\n reject(error);\n })\n })\n },\n\n fetchUnpaidEarnings({}, userId) {\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2\", 'statistics/unpaid-earnings' + (userId ? ('?user_id=' + userId) : ''))\n .then((response) => {\n resolve(response.data);\n })\n .catch((err) => {\n reject(err);\n });\n })\n },\n\n updatePayment({ dispatch }, value) {\n return new Promise((res, rej) => {\n ApiService.update(\n `/api/v2/payment-information` , value.id , value.payload\n ).then(\n () => {\n dispatch(\"getUserById\", value.id)\n res();\n }).catch(\n error => {\n rej(error.response ? error.response : null);\n })\n })\n },\n setSearchInput({commit} , value){\n commit('setSearch' , value);\n },\n resetPageNumber({commit}){\n commit('resetPageNumber')\n },\n setSubSkill({commit}, payload) {\n commit(\"mutateSubSkill\", payload);\n },\n setParentSkill({commit}, payload) {\n commit(\"mutateParentSkill\", payload);\n },\n setPageNumber({commit} , value){\n commit('setPageNumber', value)\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n};\n\nconst mutations = {\n setAll(state, items) {\n state.all = items;\n },\n mutateParentSkill(state, value) {\n state.parent_skill = value;\n },\n mutateSubSkill(state,value) {\n state.sub_skill = value;\n },\n setLoading(state, loading) {\n state.loading = loading;\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n },\n setReferredUsers(state, data) {\n state.referredUsers = data;\n },\n setMySkills(state, skills) {\n state.mySkills = skills;\n },\n addSkill(state, skill) {\n state.mySkills.push(skill);\n },\n removeSkill(state, id) {\n state.mySkills = state.mySkills.filter(skill => skill.id !== id);\n },\n setUsersList(state, items) {\n state.usersList = items;\n },\n setSearch(state , value){\n state.search = value\n },\n setPagination(state, value) {\n state.pagination.last_page = value.last_page;\n },\n setPageNumber(state, value){\n state.pagination.current_page = value\n },\n setFetchedUserById(state, value) {\n if(value.payment_settings == null) {\n value.payment_settings = initPayment();\n }\n state.singleUser = value;\n\n },\n resetPageNumber(state){\n state.pagination.current_page = 1\n }\n};\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n};\n","import ApiService from \"../../core/services/ApiService\";\n\nfunction initialState() {\n return {\n rules: null,\n isFetched: false,\n }\n}\n\nconst getters = {\n rules: state => state.rules,\n isFetched: state => state.isFetched,\n}\n\nconst actions = {\n purgeRules({ commit }) {\n commit('setRules', null);\n commit('setIsFetched', false);\n },\n fetchData({ commit, state, dispatch }, rules) {\n if (!state.isFetched) {\n return new Promise((resolve, reject) => {\n ApiService.get('/api/v2/rules')\n .then(response => {\n commit('setRules', response.data.data);\n commit('setIsFetched', true);\n resolve()\n })\n .catch(error => {\n const message = error.response.data.message || error.message\n console.log(message)\n reject()\n })\n })\n }\n },\n resetState({commit}) {\n commit('resetState')\n }\n}\n\nconst mutations = {\n setRules(state, rules) {\n state.rules = rules\n },\n setIsFetched(state, value) {\n state.isFetched = value\n },\n resetState(state) {\n state = Object.assign(state, initialState())\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import { AbilityBuilder, Ability } from '@casl/ability';\nimport {useAbility} from \"@casl/vue\";\n\nexport default (store) => {\n store.subscribe((mutation) => {\n console.log(mutation);\n switch (mutation.type) {\n case 'setUser': {\n // const ability = useAbility();\n // const { can, rules } = new AbilityBuilder(Ability);\n // mutation.rules.forEach((rule) => {\n // can(rule, 'all');\n // })\n //\n // ability.update(rules);\n break\n }\n\n }\n })\n}","/* eslint-disable */\nimport ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\nfunction initialState() {\n return {\n all: [],\n relationships: {\n default_branch: \"name\",\n country: \"title\",\n invited_by: \"name\",\n key_account_managers: 'name'\n },\n relatedUsers: \"\",\n loading: false,\n fetchingUsers: false,\n message: \"\",\n clientsList: [],\n query: {\n search: \"\",\n taxId: \"\",\n countryId: \"\"\n },\n pagination: {\n current_page: 1,\n last_page: 1\n },\n usersTabPagination: {\n current_page: 1,\n last_page: 1\n },\n updatingCompanyData: false,\n singleClient: {},\n preferredSkills: [],\n };\n}\n\nconst getters = {\n data: state => {\n let rows = state.all;\n\n if (state.query.search && state.query.search.length > 0) {\n rows = rows.filter(\n client => client.name.toLowerCase().indexOf(state.query.search.toLowerCase()) >= 0\n );\n }\n\n if (state.query.sort) {\n rows = _.orderBy(rows, state.query.sort, state.query.order);\n }\n\n return rows.slice(\n state.query.offset,\n state.query.offset + state.query.limit\n );\n },\n isUpdatingCompany: state => state.updatingCompanyData,\n total: state => state.all.length,\n loading: state => state.loading,\n relationships: state => state.relationships,\n all: state => state.all,\n clientsList: state => state.clientsList,\n getPaginationData: state => state.pagination,\n isFetchingUsers: state => state.fetchingUsers,\n getFetchedSingle: state => state.singleClient,\n getRelatedUsers: state => state.relatedUsers,\n getUsersTabPagination: state => state.usersTabPagination,\n preferredSkills: state => state.preferredSkills\n};\n\nconst actions = {\n fetchData({ commit, state }, params = {}) {\n commit(\"setLoading\", true);\n\n ApiService\n .get(\n \"/api/v2\",\n 'companies?page='+\n state.pagination.current_page +\n \"&perPage=10\" +\n (state.query.search ? '&filter[name]=' + state.query.search : \"\") +\n (state.query.taxId ? '&filter[taxid]=' + state.query.taxId : \"\") +\n (state.query.countryId ? '&filter[countryid]=' + state.query.countryId : '')\n )\n .then(response => {\n commit(\"setClientsList\", response.data.data);\n commit(\"setPagination\", response.data.meta);\n })\n .catch(error => {\n message = error.response.data.message || error.message;\n commit(\"setError\", message);\n console.log(message);\n })\n .finally(() => {\n commit(\"setLoading\", false);\n });\n },\n\n destroyData({ commit, state}, id) {\n ApiService\n .delete('/api/v2/companies/' + id)\n .then(response => {\n commit('setClientsList', state.clientsList.filter((item) => {\n return item.id != id\n }))\n })\n .catch(error => {\n message = error.response.data.message || error.message\n commit('setError', message)\n console.log(message)\n })\n },\n fetchSingle({ commit }, id) {\n commit(\"setLoading\", true)\n return new Promise((res, rej) => {\n ApiService.get(\n 'api/v2/companies/' + id\n ).then(\n response => {\n commit(\"setLoading\", false)\n res(response.data.data);\n commit(\"setFetchedSingle\", response.data.data);\n }\n ).catch(error => {\n commit(\"setError\", error)\n rej(error);\n });\n })\n },\n fetchClientRelatedUsers({ commit, state }, value) {\n commit(\"setFetchingUsers\", true)\n commit(\"setUsersTabPage\", value.currentPage)\n const pagination = `page=${state.usersTabPagination.current_page}&perPage=5`\n ApiService.get(\n `api/v2`, `users?${pagination}&filter[company_id]=${value.id}&`\n ).then(\n response => {\n commit(\"setRelatedUsers\", response.data.data);\n commit(\"setUsersTabPagination\", { current_page: response.data.current_page, last_page: response.data.last_page});\n }\n ).catch(error => {\n commit(\"setError\", error)\n }).finally(() => {\n commit(\"setFetchingUsers\", false)\n })\n },\n update({ commit }, payload) {\n const kam = { key_account_managers: payload.data.key_account_managers.map(kam => kam.id)};\n const uploadedFiles = { uploaded_files : (payload.data.uploaded_files.length == 0 ) ? \"\" : payload.data.uploaded_files.map(file => file.id).join(\",\") }\n const keyAccManagerID = Object.assign(payload.data , kam);\n const data = Object.assign(keyAccManagerID ,uploadedFiles)\n\n ApiService.update(\n `api/v2/companies` , payload.id , data\n ).then().catch(error => {\n console.log(error)\n commit(\"setError\", error)\n })\n },\n createNew({ commit }, payload) {\n ApiService.post(`api/v2/companies`, payload)\n .then()\n .catch(error => {\n commit(\"setError\", error)\n })\n },\n saveAboutCompanyData({ state, commit }, payload) {\n const data = state.singleClient;\n data.uploaded_files = (data.uploaded_files.length == 0 ) ? \"\" : data.uploaded_files.map(file => file.id).join(\",\")\n data.key_account_managers = data.key_account_managers.map(kam => kam.id);\n data.type_of_work = payload.typeOfWork;\n data.safety_requirements = payload.safetyReqs;\n data.water_policy = payload.waterPolicy;\n data.dresscode = payload.prefDresscode;\n data.food_policy = payload.foodPolicy;\n data.value_workers = payload.workerType;\n commit(\"setUpdatingCompanyData\", true);\n ApiService.update(\n `api/v2/companies` , state.singleClient.id , data\n ).then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Data updated successfully!`,\n showConfirmButton: false,\n timer: 1000\n })\n }).catch(error => {\n commit(\"setError\", error)\n }).finally(() => {\n commit(\"setUpdatingCompanyData\", false);\n })\n },\n setQuery({commit}, value) {\n commit(\"setQuery\", value);\n },\n resetPageNumber({commit}){\n commit('resetPageNumber')\n },\n setPageNumber({commit} , value){\n commit('setPageNumber', value)\n },\n resetState({ commit }) {\n commit(\"resetState\");\n },\n fetchPreferredSkills({ state, commit }) {\n return new Promise((resolve, reject) => {\n if(!state.singleClient) {\n reject();\n }\n ApiService.get(`api/v2`, `companies/preferred-skills/${state.singleClient.id}`)\n .then((response) => {\n commit(\"setPreferredSkills\", response.data.data);\n resolve()\n })\n .catch((err) => {\n reject(err);\n });\n });\n },\n savePreferredSkills({}, query) {\n return new Promise((resolve, reject) => {\n if(!query) {\n reject(\"Query is a required parameter\");\n }\n ApiService.post('api/v2/companies/preferred-skills', query)\n .then(() => {\n resolve();\n })\n .catch((err) => {\n reject(err)\n })\n\n });\n },\n clearPreferredSkills({ commit }) {\n commit(\"setPreferredSkills\", []);\n }\n};\n\nconst mutations = {\n setAll(state, items) {\n state.all = items;\n },\n setLoading(state, loading) {\n state.loading = loading;\n },\n setUpdatingCompanyData(state, value) {\n state.updatingCompanyData = value;\n },\n setPreferredSkills(state, payload) {\n state.preferredSkills = payload;\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n },\n setClientsList(state, items) {\n state.clientsList = items;\n },\n setQuery(state, query) {\n state.query = query;\n },\n setPagination(state, value) {\n state.pagination = value;\n },\n setUsersTabPagination(state, value) {\n state.usersTabPagination = value;\n },\n setPageNumber(state, value){\n state.pagination.current_page = value;\n },\n setFetchedSingle(state , value) {\n state.singleClient = value;\n },\n setFetchingUsers(state, value) {\n state.fetchingUsers = value;\n },\n setRelatedUsers(state, value) {\n state.relatedUsers = value;\n },\n resetPageNumber(state){\n state.pagination.current_page = 1;\n },\n setUsersTabPage(state, value) {\n state.usersTabPagination.current_page = value;\n }\n};\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n};\n","import ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n data: [],\n loading: false,\n isSavingWeights: false,\n error: ''\n }\n}\n\nconst getters = {\n getData: state => state.data,\n loading: state => state.loading,\n isSavingWeights: state => state.isSavingWeights\n}\n\nconst actions = {\n fetchData({commit}, hideLoading) {\n if(!hideLoading) commit('setLoading', true);\n\n ApiService.get('api/v2' , 'levels?').then(\n response => {\n commit('setData' , response.data.data)\n }).catch(error => {\n commit('setError', error)\n }).finally(() => {\n commit('setLoading' , false)\n }); \n },\n saveWeights({ dispatch, commit }, data) {\n commit(\"setIsSavingWeights\", true);\n return new Promise((resolve, reject) => {\n ApiService.post('api/v2/levels/saveWeights', data).then(response => {\n dispatch('fetchData', true);\n commit(\"setIsSavingWeights\", false);\n resolve(response.data);\n }).catch(err => {\n dispatch('fetchData', true);\n commit(\"setIsSavingWeights\", false);\n reject(err.response.data.message);\n })\n }) \n }, \n createNew({commit, dispatch }, payload) {\n ApiService\n .post(\n \"/api/v2/levels\" , payload\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Level created successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n\n update({ commit , dispatch}, payload) {\n commit(\"setLoading\", true);\n ApiService\n .update(\n \"/api/v2/levels\", payload.id, payload.values\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Level edited successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n commit(\"setLoading\", false)\n });\n },\n\n destroyData({commit, dispatch}, id) {\n ApiService\n .delete(\n \"/api/v2/levels/\" + id\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Level deleted successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n}\nconst mutations = {\n setError(state, value) {\n state.error = value\n },\n setData(state, value) {\n state.data = value\n },\n setLoading(state, value) {\n state.loading = value\n },\n setIsSavingWeights(state, value) {\n state.isSavingWeights = value;\n },\n resetState(state) {\n state = Object.assign(state, initialState())\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n branchesList: [],\n loading: false,\n error: '',\n pagination: {\n current_page: 1,\n last_page: 1\n }\n }\n}\n\nconst getters = {\n branchesList: state => state.branchesList,\n getPaginationData: state => state.pagination,\n loading: state => state.loading\n}\n\nconst actions = {\n fetchData({commit, state}) {\n commit('setLoading', true);\n\n ApiService.get('api/v2',\n 'branches?page=' + state.pagination.current_page + '&perPage=10')\n .then(\n response => {\n commit('setBranchesList' , response.data.data)\n commit(\"setPagination\", response.data)\n }).catch(error => {\n commit('setError', error)\n console.log(error)\n }).finally(() => {\n commit('setLoading' , false)\n });\n },\n createNew({commit, dispatch }, payload) {\n ApiService\n .post(\n \"/api/v2/branches\" , payload\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Branch created successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n if (error.response.data.errors.name) {\n Swal.fire({\n position: 'top-end',\n icon: 'error',\n title: error.response.data.errors.name,\n showConfirmButton: false,\n timer: 2500\n })\n } else {\n Swal.fire({\n position: 'top-end',\n icon: 'error',\n title: 'A network error has occurred',\n showConfirmButton: false,\n timer: 2000\n })\n }\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n update({ commit, dispatch }, payload) {\n commit(\"setLoading\", true);\n ApiService\n .update(\n \"/api/v2/branches\", payload.id, payload.values\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Branch edited successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n if (error.response.status == 500) {\n Swal.fire({\n position: 'top-end',\n icon: 'error',\n title: 'Another branch with this name already exists',\n showConfirmButton: false,\n timer: 2500\n })\n } else {\n Swal.fire({\n position: 'top-end',\n icon: 'error',\n title: 'A network error has occurred',\n showConfirmButton: false,\n timer: 2000\n })\n }\n })\n .finally(() => {\n dispatch(\"fetchData\");\n commit(\"setLoading\", false)\n });\n },\n destroyData({commit, dispatch}, value) {\n ApiService\n .delete(\n \"/api/v2/branches/\" + value\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Branch deleted successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n resetPageNumber({commit}){\n commit('resetPageNumber')\n },\n setPageNumber({commit} , value){\n commit('setPageNumber', value)\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n}\nconst mutations = {\n setBranchesList(state, value) {\n state.branchesList = value\n },\n setError(state, value) {\n state.error = value\n },\n setLoading(state, value) {\n state.loading = value\n },\n setPagination(state, value) {\n state.pagination = value;\n },\n setPageNumber(state, value){\n state.pagination.current_page = value\n },\n resetState(state) {\n state = Object.assign(state, initialState())\n },\n\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n approvalsList: [],\n approvalsCounter: 0,\n loading: false,\n error: '',\n pagination: {\n current_page: 1,\n last_page: 1\n }\n }\n}\n\nconst getters = {\n approvalsList: state => state.approvalsList,\n approvalsCounter: state => state.approvalsCounter,\n getPaginationData: state => state.pagination,\n loading: state => state.loading\n}\n\nconst actions = {\n fetchApprovals({commit, state}, getJustApprovalsCount = null) {\n commit('setLoading', true);\n\n ApiService.get('api/v2',\n 'approvals?page=' + state.pagination.current_page + '&perPage=10')\n .then(\n response => {\n if (getJustApprovalsCount) {\n commit('setApprovalsCounter', response.data.data.length);\n } else {\n commit('setApprovalsList' , response.data.data)\n commit('setApprovalsCounter', response.data.data.length);\n commit(\"setPagination\", response.data)\n }\n }).catch(error => {\n commit('setError', error)\n console.log(error)\n }).finally(() => {\n commit('setLoading' , false)\n });\n },\n\n changeDocumentStatus({ state, commit, dispatch}, payload) {\n ApiService\n .update('/api/v2/documents', payload.id, payload)\n .then(() => {\n Swal.fire({\n toast: true,\n position: 'top-end',\n icon: 'success',\n title: `Document ${payload.status == 'Approved' ? 'approved' : 'declined'} successfully`,\n showConfirmButton: false,\n timer: 3000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchApprovals\");\n commit(\"setLoading\", false)\n });\n },\n resetPageNumber({commit}){\n commit('resetPageNumber')\n },\n setPageNumber({commit} , value){\n commit('setPageNumber', value)\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n}\nconst mutations = {\n setApprovalsList(state, value) {\n state.approvalsList = value\n },\n setApprovalsCounter(state, value) {\n state.approvalsCounter = value\n },\n setError(state, value) {\n state.error = value\n },\n setLoading(state, value) {\n state.loading = value\n },\n setPagination(state, value) {\n state.pagination = value;\n },\n setPageNumber(state, value){\n state.pagination.current_page = value\n },\n resetState(state) {\n state.approvalsList = [];\n state.error = '';\n state.pagination = {\n current_page: 1,\n last_page: 1\n }\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n documentTypesList: [],\n loading: false,\n error: '',\n pagination: {\n current_page: 1,\n last_page: 1\n }\n }\n}\n\nconst getters = {\n documentTypesList: state => state.documentTypesList,\n getPaginationData: state => state.pagination,\n loading: state => state.loading\n}\n\nconst actions = {\n fetchData({commit, state}) {\n commit('setLoading', true);\n\n ApiService.get('api/v2',\n 'document-types?page=' + state.pagination.current_page + '&perPage=10')\n .then(\n response => {\n commit('setDocumentTypesList' , response.data.data)\n commit(\"setPagination\", response.data)\n }).catch(error => {\n commit('setError', error)\n console.log(error)\n }).finally(() => {\n commit('setLoading' , false)\n });\n },\n\n createNew({commit, dispatch }, payload) {\n ApiService\n .post(\n \"/api/v2/document-types\" , payload\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Document type created successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n\n update({ commit , dispatch}, payload) {\n commit(\"setLoading\", true);\n ApiService\n .update(\n \"/api/v2/document-types\", payload.id, payload.values\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Document type edited successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n commit(\"setLoading\", false)\n });\n },\n\n destroyData({commit, dispatch}, id) {\n ApiService\n .delete(\n \"/api/v2/document-types/\" + id\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Document type deleted successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n resetPageNumber({commit}){\n commit('resetPageNumber')\n },\n setPageNumber({commit} , value){\n commit('setPageNumber', value)\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n}\nconst mutations = {\n setDocumentTypesList(state, value) {\n state.documentTypesList = value\n },\n setError(state, value) {\n state.error = value\n },\n setLoading(state, value) {\n state.loading = value\n },\n setPagination(state, value) {\n state.pagination = value;\n },\n setPageNumber(state, value){\n state.pagination.current_page = value\n },\n resetState(state) {\n state = Object.assign(state, initialState())\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n skillsList: [],\n loading: false,\n error: '',\n pagination: {\n current_page: 1,\n last_page: 1\n }\n }\n}\n\nconst getters = {\n skillsList: state => state.skillsList,\n getPaginationData: state => state.pagination,\n loading: state => state.loading\n}\n\nconst actions = {\n fetchData({commit, state}, query) {\n return new Promise((resolve, reject) => {\n commit('setLoading', true);\n let queryString = \"\";\n if(query) {\n if(query.parentId) {\n queryString = `&filter[parent_id]=${query.parentId}`;\n } else {\n queryString = \"&filter[parent_id]=null\";\n }\n }\n ApiService.get('api/v2', 'skills?page=' + state.pagination.current_page + '&perPage=10' + queryString)\n .then(response => {\n commit('setSkillsList' , response.data.data)\n commit(\"setPagination\", response.data)\n })\n .catch(error => {\n commit('setError', error)\n reject(error);\n })\n .finally(() => {\n resolve();\n commit('setLoading' , false)\n });\n })\n\n },\n createNew({commit, dispatch }, payload) {\n return new Promise((resolve, reject) => {\n ApiService\n .post(\n \"/api/v2/skills\", payload\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Skill created successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n resolve();\n })\n .catch(error => {\n commit(\"setError\", error);\n reject();\n });\n })\n\n },\n\n update({ commit , dispatch}, payload) {\n return new Promise((resolve, reject) => {\n commit(\"setLoading\", true);\n ApiService\n .update(\n \"/api/v2/skills\", payload.id, payload.values\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Skill edited successfully`,\n showConfirmButton: false,\n timer: 2000\n });\n resolve();\n })\n .catch(error => {\n commit(\"setError\", error);\n reject();\n })\n .finally(() => {\n commit(\"setLoading\", false)\n });\n });\n },\n\n destroyData({commit, dispatch}, id) {\n return new Promise((resolve, reject) => {\n ApiService\n .delete(\n \"/api/v2/skills/\" + id\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Skill deleted successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n resolve();\n })\n .catch(error => {\n commit(\"setError\", error);\n reject();\n });\n })\n },\n\n saveWeights({ commit, dispatch }, value) {\n return new Promise((resolve, reject) => {\n ApiService\n .post(\n '/api/v2/skills/save-weights' , value\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Weights set successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n resolve();\n })\n .catch(error => {\n commit(\"setError\", error);\n reject();\n })\n })\n\n },\n\n resetPageNumber({commit}){\n commit('resetPageNumber')\n },\n setPageNumber({commit} , value){\n commit('setPageNumber', value)\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n}\nconst mutations = {\n setSkillsList(state, value) {\n state.skillsList = value\n },\n setError(state, value) {\n state.error = value\n },\n setLoading(state, value) {\n state.loading = value\n },\n setPagination(state, value) {\n state.pagination = value;\n },\n setPageNumber(state, value){\n state.pagination.current_page = value\n },\n resetState(state) {\n state = Object.assign(state, initialState())\n },\n saveWeights({ commit, dispatch }, payload) {\n console.log(payload);\n ApiService\n .post(\n '/api/v2/skills/save-weights' , payload\n )\n .then()\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n equipmentCategoriesList: [],\n loading: false,\n error: '',\n pagination: {\n current_page: 1,\n last_page: 1\n }\n }\n}\n\nconst getters = {\n equipmentCategoriesList: state => state.equipmentCategoriesList,\n getPaginationData: state => state.pagination,\n loading: state => state.loading\n}\n\nconst actions = {\n fetchData({commit, state}) {\n commit('setLoading', true);\n\n ApiService.get('api/v2',\n 'equipment-categories?page=' + state.pagination.current_page + '&perPage=10')\n .then(\n response => {\n commit('setEquipmentCategoriesList' , response.data.data)\n commit(\"setPagination\", response.data)\n }).catch(error => {\n commit('setError', error)\n console.log(error)\n }).finally(() => {\n commit('setLoading' , false)\n });\n },\n\n createNew({commit, dispatch }, payload) {\n ApiService\n .post(\n \"/api/v2/equipment-categories\" , payload\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Equipment Category created successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n\n update({ commit , dispatch}, payload) {\n commit(\"setLoading\", true);\n ApiService\n .update(\n \"/api/v2/equipment-categories\", payload.id, payload.values\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Equipment Category edited successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n commit(\"setLoading\", false)\n });\n },\n\n destroyData({commit, dispatch}, id) {\n ApiService\n .delete(\n \"/api/v2/equipment-categories/\" + id\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Equipment Category deleted successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n\n resetPageNumber({commit}){\n commit('resetPageNumber')\n },\n setPageNumber({commit} , value){\n commit('setPageNumber', value)\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n}\nconst mutations = {\n setEquipmentCategoriesList(state, value) {\n state.equipmentCategoriesList = value\n },\n setError(state, value) {\n state.error = value\n },\n setLoading(state, value) {\n state.loading = value\n },\n setPagination(state, value) {\n state.pagination = value;\n },\n setPageNumber(state, value){\n state.pagination.current_page = value\n },\n resetState(state) {\n state = Object.assign(state, initialState())\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n freelancers: {},\n loading: false,\n pagination: {\n currentPage: 1,\n lastPage: 1\n },\n error: '',\n searchedSkillIDs: [],\n searchString: '',\n searchedBranchID: '',\n sortParams: {\n sortedBy: \"last_name\", //These were the default values used in wci2020 - v1\n isOrderAsc: true\n }\n };\n};\n\nconst getters = {\n loading: state => state.loading,\n getFreelancersList: state => state.freelancers,\n getPaginationData: state => state.pagination,\n getSortData: state => state.sortParams,\n getSearchString: state => state.searchString,\n getBranchID: state => state.searchedBranchID\n}\n\nconst actions = {\n fetchData({ commit , state}) {\n commit(\"setLoading\", true);\n ApiService\n .get(\n \"/api/v2\",\n \"freelancers?perPage=10\" + \n '&page='+ state.pagination.currentPage +\n \"&sort=\" + state.sortParams.sortedBy + \n \"&order=\" + ((state.sortParams.isOrderAsc) ? \"asc\" : \"desc\") +\n ((state.searchString == '') ? '' : \"&filter[search]=\" + state.searchString) +\n ((state.searchedBranchID == '') ? '' : \"&filter[branch]=\" + state.searchedBranchID) +\n ((state.searchedSkillIDs === \"\" || state.searchedSkillIDs.length == 0) ? '' : \"&filter[skills]=\" + state.searchedSkillIDs)\n )\n .then(response => {\n commit('setFreelancersList' , response.data.data);\n commit('setPaginationData', response.data.meta);\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n commit(\"setLoading\", false);\n });\n },\n fetchFreelancersWithSearchedSkills({commit, state , dispatch}, query) {\n if(query.skill !== \"\") {\n ApiService.get(`/api/v2`, \n `sub-skills?filter[parent_id]=` + ((query.skill == '') ? null : query.skill)\n ).then(response => {\n if(query.reset) commit('resetPageNumber');\n commit('setCurrentSearchedSkillIDs' , response.data.data);\n commit('setPaginationData', response.data);\n }).finally(() => {\n dispatch('fetchData');\n })\n }\n else {\n commit(\"setCurrentSearchedSkillIDs\" , '');\n dispatch('fetchData');\n }\n },\n setCurrentPageNumber({commit}, value) {\n commit(\"setCurrentPage\" , value);\n },\n setSearchBySkill({commit} , value) {\n commit('setSkillSearchFilter', value);\n },\n setSearchString({commit} , value) {\n commit('setSearchString', value);\n },\n setSearchByBranch({commit}, value) {\n commit('setSearchByBranch', value);\n },\n setSortParams({commit}, value){\n commit(\"setSortParams\" , value);\n commit('resetPageNumber');\n },\n setLoading({commit}, value) {\n commit('setLoading', value);\n },\n resetPageNumber({commit}){\n commit(\"resetPageNumber\")\n },\n resetSortParams({commit}){\n commit(\"resetSortParams\")\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n}\nconst mutations = {\n setLoading(state, value) {\n state.loading = value;\n },\n setFreelancersList(state, value) {\n state.freelancers = value;\n },\n setCurrentSearchedSkillIDs(state , value) {\n if(value !== '') {\n state.searchedSkillIDs = [];\n for(let i = 0 ; i < value.length ; i ++) {\n state.searchedSkillIDs.push(value[i].id);\n }\n }else state.searchedSkillIDs = value\n },\n setSkillSearchFilter(state, value) {\n state.searchedSkillID = value;\n },\n setError(state , value) {\n state.error = value;\n },\n setPaginationData(state, value) {\n state.pagination.lastPage = value.last_page;\n },\n resetPageNumber(state) {\n state.pagination.currentPage = 1;\n },\n setCurrentPage(state, value) {\n state.pagination.currentPage = value;\n },\n setSearchString(state, value) {\n state.searchString = value;\n },\n setSearchByBranch(state, value) {\n state.searchedBranchID = value;\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n },\n setSortParams(state , value) {\n state.sortParams = value;\n },\n resetSortParams(state){\n state.sortParams.sortedBy = \"last_name\",\n state.sortParams.isOrderAsc = true;\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n data: {},\n loading: false,\n error : \"\",\n pagination: {\n currentPage: 1,\n lastPage: 1\n },\n sortParams: {\n sortedBy: \"id\", //Default Values\n isOrderAsc: true\n },\n showActive: true\n };\n};\n\nconst getters = {\n loading: state => state.loading,\n getData: state => state.data,\n getPaginationData: state => state.pagination,\n getSortData: state => state.sortParams\n}\n\nconst actions = {\n fetchData({ commit , state}) {\n commit(\"setLoading\", true);\n ApiService\n .get(\n \"/api/v2\",\n \"countries?page=\"+ state.pagination.currentPage +\n \"&perPage=10\"+\n \"&sort=\"+ state.sortParams.sortedBy + \n \"&operational=\" + state.showActive +\n \"&order=\" + ((state.sortParams.isOrderAsc) ? \"asc\" : \"desc\")\n )\n .then(response => {\n console.log(response);\n commit(\"setData\", response.data.data);\n commit(\"setPaginationData\", response.data.last_page)\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n commit(\"setLoading\", false);\n });\n },\n update({ commit, dispatch , state}, payload) {\n commit(\"setLoading\", true);\n ApiService\n .update(\n \"/api/v2/countries\" ,payload.id, payload.values\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Country edited successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n commit(\"setLoading\", false)\n });\n },\n createNew({commit, dispatch , state}, payload) {\n ApiService\n .post(\n \"/api/v2/countries\" , payload\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Country created successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n destroyData({commit, dispatch}, value) {\n ApiService\n .delete(\n \"/api/v2/countries/\" + value\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Country deleted successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n setCurrentPage({commit}, value){\n commit(\"setCurrentPage\", value);\n },\n resetState({commit}) {\n commit(\"resetState\");\n },\n setSortParams({commit}, value){\n commit(\"setSortParams\" , value);\n },\n setShowActive({commit}, value){\n commit(\"setShowActive\" , value);\n }\n}\nconst mutations = {\n setLoading(state, value) {\n state.loading = value;\n },\n setShowActive(state, value) {\n state.showActive = value;\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n },\n setData(state, value) {\n state.data = value;\n },\n setError(state, value) {\n state.error = value;\n },\n setPaginationData(state, value) {\n state.pagination.lastPage = value;\n },\n resetPageNumber(state){\n state.pagination.currentPage = 1;\n },\n setCurrentPage(state, value) {\n state.pagination.currentPage = value;\n },\n setSortParams(state, value) {\n state.sortParams = value;\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n data: {},\n loading: false,\n pagination: {\n currentPage: 1,\n lastPage: 1\n },\n sortParams: {\n sortedBy: \"id\", //Default Values\n isOrderAsc: true\n }\n };\n};\n\nconst getters = {\n loading: state => state.loading,\n getData: state => state.data,\n getPaginationData: state => state.pagination,\n getSortData: state => state.sortParams\n}\n\nconst actions = {\n fetchData({ commit , state}) {\n commit(\"setLoading\", true);\n ApiService\n .get(\n \"/api/v2\",\n \"languages?page=\"+ state.pagination.currentPage +\n \"&perPage=10\" +\n \"&sort=\"+ state.sortParams.sortedBy + \n \"&order=\" + ((state.sortParams.isOrderAsc) ? \"asc\" : \"desc\")\n )\n .then(response => {\n commit(\"setData\", response.data.data);\n commit(\"setPaginationData\", response.data.last_page)\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n commit(\"setLoading\", false);\n });\n },\n\n update({ commit , dispatch}, payload) {\n commit(\"setLoading\", true);\n ApiService\n .update(\n \"/api/v2/languages\", payload.id, payload.values\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Language edited successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n commit(\"setLoading\", false)\n });\n },\n createNew({commit, dispatch }, payload) {\n ApiService\n .post(\n \"/api/v2/languages\" , payload\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Language created successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n destroyData({commit, dispatch}, value) {\n ApiService\n .delete(\n \"/api/v2/languages/\" + value\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Language deleted successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n setCurrentPage({commit}, value) {\n commit(\"setCurrentPage\", value);\n },\n resetState({commit}) {\n commit(\"resetState\");\n },\n setSortParams({commit}, value){\n commit(\"setSortParams\" , value)\n }\n}\nconst mutations = {\n setLoading(state, value) {\n state.loading = value;\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n },\n setData(state, value) {\n state.data = value;\n },\n setEror(state, value) {\n state.error = value;\n },\n setPaginationData(state, value) {\n state.pagination.lastPage = value;\n },\n resetPageNumber(state){\n state.pagination.currentPage = 1;\n },\n setCurrentPage(state, value) {\n state.pagination.currentPage = value;\n },\n setSortParams(state, value){\n state.sortParams = value\n }\n \n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n data: {},\n loading: false,\n pagination: {\n currentPage: 1,\n lastPage: 1\n },\n sortParams: {\n sortedBy: \"id\", //Default Values\n isOrderAsc: true\n }\n };\n};\n\nconst getters = {\n loading: state => state.loading,\n getData: state => state.data,\n getPaginationData: state => state.pagination,\n getSortData: state => state.sortParams\n}\n\nconst actions = {\n fetchData({ commit , state}) {\n commit(\"setLoading\", true);\n ApiService\n .get(\n \"/api/v2\",\n \"permissions?&perPage=10\" +\n \"&page=\" + state.pagination.currentPage +\n \"&sort=\" + state.sortParams.sortedBy + \n \"&order=\" + ((state.sortParams.isOrderAsc) ? \"asc\" : \"desc\")) \n .then(response => {\n commit(\"setData\", response.data.data);\n commit(\"setPaginationData\", response.data.last_page)\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n commit(\"setLoading\", false);\n });\n },\n\n update({ commit , dispatch}, payload) {\n commit(\"setLoading\", true);\n ApiService\n .update(\n \"/api/v2/permissions\", payload.id, payload.values\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Permission edited successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n commit(\"setLoading\", false)\n });\n },\n createNew({commit, dispatch }, payload) {\n ApiService\n .post(\n \"/api/v2/permissions\", payload\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Permission created successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n destroyData({commit, dispatch}, value) {\n ApiService\n .delete(\n \"/api/v2/permissions/\" + value\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Permission deleted successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n setCurrentPage({commit}, value) {\n commit(\"setCurrentPage\", value);\n },\n resetState({commit}) {\n commit(\"resetState\");\n },\n setSortParams({commit}, value) {\n commit(\"setSortParams\" , value)\n }\n}\nconst mutations = {\n setLoading(state, value) {\n state.loading = value;\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n },\n setData(state, value) {\n state.data = value;\n },\n setEror(state, value) {\n state.error = value;\n },\n setPaginationData(state, value) {\n state.pagination.lastPage = value;\n },\n resetPageNumber(state){\n state.pagination.currentPage = 1;\n },\n setCurrentPage(state, value) {\n state.pagination.currentPage = value;\n },\n setSortParams(state, value){\n state.sortParams = value\n }\n \n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n data: {},\n loading: false\n };\n};\n\nconst getters = {\n loading: state => state.loading,\n getData: state => state.data\n}\n\nconst actions = {\n fetchData({ commit , state}) {\n commit(\"setLoading\", true);\n ApiService\n .get(\n \"/api/v2\",\n \"roles?\")\n .then(response => {\n commit(\"setData\", response.data.data);\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n commit(\"setLoading\", false);\n });\n },\n\n update({ commit , dispatch}, value) {\n commit(\"setLoading\", true);\n const payLoad = {\n title: value.title,\n description: value.description,\n permission: value.permissionIds\n }\n ApiService\n .update(\n \"/api/v2/roles\" ,value.id, payLoad\n )\n .then()\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n commit(\"setLoading\", false)\n });\n },\n createNew({commit, dispatch }, value) {\n ApiService\n .post(\n \"/api/v2/roles\" , value\n )\n .then()\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n destroyData({commit, dispatch}, value) {\n ApiService\n .delete(\n \"/api/v2/roles/\" + value.id\n )\n .then()\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n }\n}\nconst mutations = {\n setLoading(state, value) {\n state.loading = value;\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n },\n setData(state, value) {\n state.data = value;\n },\n setEror(state, value) {\n state.error = value;\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n data: [],\n loading: false,\n error: '',\n pagination: {\n currentPage : 1,\n lastPage: 1\n },\n myVenues: [],\n searchParams: {\n countryID: \"\",\n searchText:\"\" \n },\n isBeingAddedToMyVenues: [],\n activeTab: \"active\"\n }\n}\n\nconst getters = {\n getData: state => state.data,\n loading: state => state.loading,\n getPaginationData: state => state.pagination,\n myVenues: state => state.myVenues,\n isBeingAddedToMyVenues: state => state.isBeingAddedToMyVenues\n}\n\nconst actions = {\n fetchData({commit, state}) {\n commit('setLoading', true);\n\n ApiService.get('api/v2','venues?' +\n 'page=' + state.pagination.currentPage +\n '&perPage=10' +\n '&filter[country_id]=' + state.searchParams.countryID +\n ((state.searchParams.searchText == \"\") ? \"\" : '&name=' + state.searchParams.searchText) +\n ((state.activeTab == 'active') ? \"&filter[accepted]=1\" : \"\") +\n ((state.activeTab == 'new') ? \"&filter[accepted]=0\" : \"\") +\n ((state.activeTab == \"myVenues\") ? \"&filter[myVenues]=true\" : \"\")\n )\n .then(\n response => {\n commit('setData' , response.data.data)\n commit('setPaginationData', response.data.last_page)\n }).catch(error => {\n commit('setError', error)\n }).finally(() => {\n commit('setLoading' , false)\n }); \n },\n destroyData({commit, dispatch}, value) {\n ApiService\n .delete(\n \"/api/v2/venues/\" + value\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Venue deleted successfully`,\n showConfirmButton: false,\n timer: 2000\n });\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n approveVenue({dispatch}, value) {\n ApiService\n .post(\n \"/api/v2/venues/\" + value + \"/make-public\"\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Venue approved successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n console.log(error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n declineVenue({dispatch}, value) {\n ApiService\n .post(\n \"/api/v2/venues/\" + value + \"/decline\"\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Venue declined successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n console.log(error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n addToMyVenues({ commit }, venue) {\n commit(\"isBeingAddedToMyVenues\", venue.id);\n ApiService\n .post(\n \"/api/v2/venues/\" + venue.id + \"/clone\"\n )\n .then(() => {\n commit(\"wasAddedToMyVenues\", { id: venue.id , result: true });\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Venue added successfully`,\n showConfirmButton: false,\n timer: 800\n });\n })\n .catch(error => {\n commit(\"wasAddedToMyVenues\", { id: venue.id , result: false });\n Swal.fire({\n position: 'top-end',\n icon: 'error',\n title: error,\n showConfirmButton: false,\n timer: 800\n });\n });\n },\n fetchMyVenues({ commit }) {\n commit('setLoading' , true)\n ApiService.get('api/v2','venues?' + \"&filter[myVenues]=true&isForMyVenues=true\"\n )\n .then(\n response => {\n commit('setMyVenues' , response.data.data);\n }).catch(error => {\n commit('setError', error);\n }).finally(() => {\n commit('setLoading' , false);\n }); \n },\n changePageNumber({commit}, value) {\n commit(\"setPageNumber\", value)\n },\n setSearchParameters({commit}, value) {\n commit(\"setSearchParams\", value);\n },\n resetPageNumber({commit}) {\n commit(\"setPageNumber\", 1)\n },\n setActiveTab({commit}, value) {\n commit(\"setCurrentTab\", value)\n },\n resetState({commit}) {\n commit(\"resetState\")\n },\n createNew({dispatch}, value) {\n return new Promise((resolve, reject) => {\n const payload = {\n name : value.name,\n entrance: value.entrance,\n country_id: value.country,\n city: value.city,\n address: value.address,\n zip: value.zip,\n province: value.province,\n notes: value.notes,\n company_id: value.company_id,\n public: 0\n };\n ApiService\n .post(\n \"/api/v2/venues/\", payload\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Venue created successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n reject(error)\n })\n .finally(() => {\n resolve();\n dispatch(\"resetPageNumber\");\n dispatch(\"fetchData\");\n });\n });\n },\n update({dispatch}, value) { \n const payload = {\n name : value.name,\n entrance: value.entrance,\n country_id: value.country,\n city: value.city,\n address: value.address,\n zip: value.zip,\n province: value.province,\n notes: value.notes,\n company_id: value.company_id\n };\n ApiService\n .update(\n \"/api/v2/venues\" , value.id , payload\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Venue edited successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n console.log(error);\n })\n .finally(() => {\n dispatch(\"resetPageNumber\");\n dispatch(\"fetchData\");\n });\n }\n}\nconst mutations = {\n setError(state, value) {\n state.error = value\n },\n setData(state, value) {\n state.data = value\n },\n setLoading(state, value) {\n state.loading = value\n },\n resetState(state) {\n state = Object.assign(state, initialState())\n },\n setPaginationData(state, value) {\n state.pagination.lastPage = value;\n },\n isBeingAddedToMyVenues(state, value) {\n state.isBeingAddedToMyVenues.push(value);\n },\n setMyVenues(state, data) {\n const ids = data.map(a => a.id);\n for(let i = 0; i < data.length; i++) {\n if(data[i].original_id !== null) ids.push(data[i].original_id);\n }\n state.myVenues = ids;\n },\n wasAddedToMyVenues(state, payload) {\n state.isBeingAddedToMyVenues = state.isBeingAddedToMyVenues.filter(v => v !== payload.id);\n if(payload.result) state.myVenues.push(payload.id);\n },\n setPageNumber(state, value) {\n state.pagination.currentPage = value;\n },\n setSearchParams(state, value) {\n state.searchParams = value;\n },\n setCurrentTab(state, value) {\n state.activeTab = value;\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n data: [],\n loading: false,\n isAwaitingResponse: {\n ids: []\n },\n error: '',\n pagination: {\n currentPage: 1,\n lastPage: 1\n },\n exportsHistoryPagination: {\n currentPage : 1,\n lastPage : 1\n },\n searchParams: \"\",\n showTaxIdWorkers: false,\n date: null,\n userShifts: {},\n shiftsLoading: false,\n salaryReportsHistory: [],\n summary: null\n }\n}\n\nconst getters = {\n getData: state => state.data,\n loading: state => state.loading,\n isAwaitingResponse: state => state.isAwaitingResponse,\n getSalaryReportsHistory: state => state.salaryReportsHistory,\n getExportHistoryPagination: state => state.exportsHistoryPagination,\n getPagination: state => state.pagination,\n getShiftsData: state => state.userShifts,\n getShiftsLoading: state => state.shiftsLoading,\n summary: state => state.summary\n}\n\nconst actions = {\n fetchData({commit, state}) {\n commit('setLoading', true);\n ApiService.get('api/v2' , \n 'salary?page=' + state.pagination.currentPage +\n \"&perPage=10\" +\n ((state.searchParams == \"\") ? \"\" : \"&filter[search]=\" + state.searchParams) +\n (state.showTaxIdWorkers ? \"&filter[taxIdWorkers]=1\" : \"\" ) +\n ((state.date) ? \"&filter[from]=\" + state.date[0] + \"&filter[to]=\" + state.date[1] : \"\")\n ).then(\n response => {\n commit('setData' , response.data.data)\n commit('setPagination', response.data)\n }).catch(error => {\n commit('setError', error)\n }).finally(() => {\n commit('setLoading' , false)\n }); \n },\n fetchSkillsForMissingRates({}, payload) {\n return new Promise((res, rej) => {\n ApiService.post(\"api/v2/skillsForMissingRates\", payload)\n .then(response => {\n res(response);\n })\n .catch(err => {\n rej(err);\n })\n })\n },\n downloadPaySlip({commit} , query) {\n commit(\"setIsAwaitingResponse\", { id: query.userId });\n return new Promise((res, rej) => {\n ApiService.get('api/v2', 'salaryReport', {\n params: query\n })\n .then(response => {\n res(response);\n })\n .catch(error => {\n rej(error.response);\n })\n .finally(() => {\n commit(\"setIsAwaitingResponse\", { id: query.userId });\n })\n })\n },\n fetchExportHistory({ commit, state }, query) {\n commit('clearSalaryReportsHistory');\n return new Promise((res, rej) => {\n ApiService.post('api/v2/salary/history', query).then(response => {\n commit('setSalaryReportsHistory', response.data.data)\n commit(\"setExportHistoryPages\", response.data.meta);\n res(response);\n })\n .catch(error => {\n rej(error);\n });\n })\n },\n fetchSummary({ commit }, payload) {\n return new Promise((resolve, reject) => {\n ApiService.post(\"api/v2/salary-reports-summary\", { date: payload.date, taxId: payload.taxId, search: payload.search })\n .then((response) => {\n commit(\"setSummary\", response.data);\n resolve();\n })\n .catch((err) => {\n reject(err);\n })\n })\n },\n fetchShiftsByID({commit, state}, value) {\n commit(\"setShiftsLoading\", true)\n ApiService.get('api/v2' , \n 'salary/slip?filter[userId]=' + value +\n ((state.date) ? \"&filter[from]=\" + state.date[0] + \"&filter[to]=\" + state.date[1] : \"\")\n ).then(\n response => {\n commit(\"setShifts\", response.data)\n }).catch(error => {\n commit('setError', error)\n }).finally(() => {\n commit('setShiftsLoading' , false)\n }); \n },\n downloadAllReports({commit}, query) {\n return new Promise((resolve, reject) => {\n ApiService.post('api/v2/salary/all', query)\n .then(response => {\n resolve(response.data.monitor_id);\n })\n .catch(err => {\n reject(err);\n })\n })\n },\n getProgress({commit}, id) {\n return new Promise((resolve, reject) => {\n ApiService.get('api/v2', `job-progress/${id}`)\n .then(res => {\n resolve(res.data);\n })\n .catch(err => {\n reject(err);\n })\n })\n },\n handlePayButton({ commit }, data) {\n return new Promise((resolve, reject) => {\n ApiService.post('api/v2/salary/pay', data)\n .then(res => {\n resolve(res.data);\n })\n .catch(err => {\n reject(err);\n })\n });\n },\n setCurrentPage({commit}, value) {\n commit(\"setCurrentPage\", value)\n },\n setSearchParams({commit}, value) {\n commit(\"setSearchParams\", value)\n },\n setTaxIdFilter({commit}, value) {\n commit(\"setTaxIdFilter\", value)\n },\n setSearchByDate({commit} ,value) {\n commit(\"setSearchByDate\", value);\n },\n clearSummary({ commit }) {\n commit(\"setSummary\", null)\n },\n resetPageNumber({commit}) {\n commit(\"setCurrentPage\", 1)\n } \n}\nconst mutations = {\n setError(state, value) {\n state.error = value\n },\n setSummary(state, payload) {\n state.summary = payload;\n },\n setData(state, value) {\n state.data = value\n },\n setLoading(state, value) {\n state.loading = value\n },\n setSalaryReportsHistory(state, value) {\n state.salaryReportsHistory = value;\n },\n clearSalaryReportsHistory(state) {\n state.salaryReportsHistory = [];\n },\n setExportHistoryPages(state, value) {\n state.exportsHistoryPagination.lastPage = value.last_page;\n state.exportsHistoryPagination.currentPage = value.current_page;\n },\n setIsAwaitingResponse(state, values) {\n const index = state.isAwaitingResponse.ids.indexOf(values.id);\n if (index > -1){\n state.isAwaitingResponse.ids.splice(index, 1);\n } else {\n state.isAwaitingResponse.ids.push(values.id);\n }\n },\n setPagination(state, value) {\n state.pagination.lastPage = value.last_page\n },\n setCurrentPage(state, value) {\n state.pagination.currentPage = value;\n },\n setSearchParams(state, value) {\n state.searchParams = value;\n },\n setTaxIdFilter(state, value) {\n state.showTaxIdWorkers = value;\n },\n setSearchByDate(state, value) {\n state.date = value;\n },\n setShifts(state, value) {\n state.userShifts = value;\n },\n setShiftsLoading(state, value) {\n state.shiftsLoading = value\n },\n resetState(state) {\n state = Object.assign(state, initialState())\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","/* eslint-disable @typescript-eslint/camelcase */\n/* eslint-disable prettier/prettier */\nimport ApiService from \"@/core/services/ApiService\";\nimport Swal from \"sweetalert2\";\nimport router from \"@/router\";\n\nfunction initialState() {\n return {\n roleId: [],\n user: {},\n fields: [],\n loading: false,\n possibleRoles: []\n };\n}\n\nconst getters = {\n user: state => state.user,\n role: state => state.roleId,\n possibleRoles: state => state.possibleRoles,\n fields: state => state.fields,\n loading: state => state.loading\n};\n\nconst actions = {\n setRoleId({ commit }, value) {\n commit(\"setRoleId\", value);\n },\n getFields({ commit }, data) {\n return new Promise((resolve, reject) => {\n commit(\"setLoading\", true);\n ApiService.get('api/v2', `userCreate/fields?role=${data.roleID}&step=${data.step}${data.fields ? `&payment=${data.fields}` : ''}`).then(res => {\n commit(\"setFields\", res.data)\n commit(\"setLoading\", false);\n resolve();\n }).catch(() => {\n reject()\n })\n })\n },\n fetchPossibleRoles({commit}) {\n return new Promise((resolve, reject) => {\n ApiService.get('api/v2', `userCreate/possible-roles`).then(res => {\n commit(\"setPossibleRoles\", res.data.data)\n resolve();\n }).catch(() => {\n reject()\n })\n })\n },\n resetState({commit}) {\n commit(\"resetState\");\n },\n clearFieldsAndRole({ commit }) {\n commit(\"clearFieldsAndRole\");\n },\n saveData({ commit }, data) {\n commit(\"saveData\", data);\n },\n store({ commit, state }) {\n commit(\"setLoading\", true)\n const data = {...state.user, role: state.roleId, approved: 1, status: \"active\"}\n ApiService.post('api/v2/users', data).then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `User created successfully!`,\n showConfirmButton: false,\n timer: 1500\n }).then(() => {\n commit(\"setLoading\", false);\n router.push(\"/users\");\n })\n }).catch(error => {\n commit(\"setLoading\", false);\n Swal.fire({\n position: 'top-end',\n icon: 'error',\n title: error.response.data.message,\n showConfirmButton: false,\n timer: 1500\n })\n })\n },\n \n};\n\nconst mutations = {\n setRoleId(state, role) {\n if(state.roleId.includes(role)){\n state.roleId.splice(state.roleId.indexOf(role), 1)\n }else {\n state.roleId.push(role);\n }\n },\n setFields(state, data) {\n state.fields = data;\n },\n setLoading(state, status) {\n state.loading = status;\n },\n clearFieldsAndRole(state) {\n state.fields = [];\n state.user = {};\n state.roleId = [];\n },\n setPossibleRoles(state, payload) {\n state.possibleRoles = payload;\n },\n saveData(state, data) {\n if(!data.payment.isAtPaymentSettings) {\n state.user = { ...state.user, ...data.value};\n } else {\n const paymentInfo = {\n ...data.value,\n has_tax_id: data.payment.accountType == \"TAXID\" ? true : false,\n has_danish_bank: data.payment.accountType == \"danish\" ? true : false\n }\n state.user['payment_settings'] = JSON.stringify(paymentInfo);\n }\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n },\n};\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n};\n","import ApiService from \"../../../core/services/ApiService\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n data: [],\n loading: false,\n singleArticle: null,\n error: ''\n }\n}\n\nconst getters = {\n getArticles: state => state.data,\n getSingleArticle: state => state.singleArticle,\n loading: state => state.loading\n}\n\nconst actions = {\n fetchArticles({commit}, roleId) {\n commit('setLoading', true);\n\n ApiService.get('api/v2/help?' + ((roleId) ? 'roleId=' + roleId : '')).then(\n response => {\n commit('setData' , response.data.data)\n }).catch(error => {\n commit('setError', error)\n }).finally(() => {\n commit('setLoading' , false)\n }); \n },\n fetchSingleArticle({commit}, articleId) {\n return new Promise((res, rej) => {\n ApiService.get(\"api/v2\", `help/articles/${articleId}`)\n .then(response => {\n commit(\"setSingleArticle\", response.data.data);\n })\n .catch(err => {\n rej(err);\n })\n .finally(() => {\n res();\n })\n })\n },\n saveArticle({commit}, article) {\n return new Promise((res, rej) => {\n ApiService.update(\"/api/v2/help/articles\" , article.id, article)\n .then(() => {\n res();\n })\n .catch(err => {\n rej(err)\n })\n })\n },\n createArticle({commit}, article) {\n return new Promise((res, rej) => {\n ApiService.post(\"/api/v2/help/articles\" , article)\n .then(() => {\n res();\n })\n .catch(err => {\n rej(err)\n })\n })\n },\n destroyArticle({commit}, articleId) {\n return new Promise((res, rej) => {\n ApiService.delete(\"/api/v2/help/articles/\" + articleId)\n .then(response => {\n res(response)\n })\n .catch((error) => {\n rej(error);\n })\n })\n },\n clearEditArticleState({commit}) {\n commit(\"setSingleArticle\", null);\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n}\nconst mutations = {\n setError(state, value) {\n state.error = value\n },\n setSingleArticle(state, payload) {\n state.singleArticle = payload;\n },\n setData(state, value) {\n state.data = value\n },\n setLoading(state, value) {\n state.loading = value\n },\n resetState(state) {\n state = Object.assign(state, initialState())\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","/* eslint-disable @typescript-eslint/camelcase */\n/* eslint-disable prettier/prettier */\nimport ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\nimport moment from \"moment\";\nimport store from \"@/store/index.ts\"\nimport { fireToast } from \"@/core/helpers/swal\";\n\nfunction initialState() {\n return {\n item: null,\n loading: false,\n bookableUsers: \"\",\n skills: \"\",\n shiftsWithSkill: \"\",\n currentlySelectedSkill: \"\",\n isAwaitingDelete: null,\n isAwaitingBook: null,\n allShiftsAreExpanded: false,\n pagination: {\n currentPage: 1,\n totalPages: null\n },\n successfullyBooked: \"\",\n isFetchingUsers: null,\n isAwaitingApproval: [],\n isReportingHours: [],\n isDeletingReport: [],\n isAwaitingDisapproval: [],\n isUpdatingHours: [],\n possibleWorkerSlots: [],\n clientRates: {\n rates: [],\n skills: []\n },\n workerRates: {\n historicalRates: [],\n skills: []\n },\n changeSkillPayload: null,\n statuses: ['Draft', 'Published', 'Cancelled', 'Report!', 'Reported', 'Approved', 'Invoiced', 'Paid'],\n };\n}\n\nconst getters = {\n item: (state) => state.item,\n loading: (state) => state.loading,\n allShiftsAreExpanded: (state) => state.allShiftsAreExpanded,\n changeSkillPayload: (state) => state.changeSkillPayload,\n getPagination: (state) => state.pagination,\n statuses: (state) => state.statuses,\n bookableUsers: (state) => state.bookableUsers,\n isFetchingUsers: (state) => state.isFetchingUsers,\n shiftsWithSkill: (state) => state.shiftsWithSkill,\n getJobSkills: (state) => state.skills,\n isAwaitingDelete: (state) => state.isAwaitingDelete,\n isAwaitingBook: (state) => state.isAwaitingBook,\n successfullyBooked: (state) => state.successfullyBooked,\n isReportingHours: (state) => state.isReportingHours,\n isAwaitingApproval: (state) => state.isAwaitingApproval,\n isDeletingReport: (state) => state.isDeletingReport,\n isAwaitingDisapproval: (state) => state.isAwaitingDisapproval,\n isUpdatingHours: (state) => state.isUpdatingHours,\n getClientRates: (state) => state.clientRates,\n getSkillRates: (state) => state.workerRates,\n getPossibleWorkerSlots: (state) => state.possibleWorkerSlots\n}; \n\nconst actions = {\n async fetchOne({ commit, dispatch }, id) {\n commit('setLoading', true);\n await ApiService.get(`/api/v2/jobs/fetchJobForView`, id).then((response) => {\n commit('setItem', response.data.data)\n return response.data.data;\n }).catch((error) => {\n const message = error.response.data.message || error.message;\n const { errors } = error.response.data;\n dispatch('Alert/setAlert', { message, errors, color: 'danger' }, { root: true });\n }).finally(() => {\n commit(\"setJobSkills\")\n commit('setLoading', false);\n });\n },\n openAdminJobChat({state, dispatch}, jobId) {\n return new Promise((resolve, reject) => {\n if(!jobId) {\n reject(\"Missing param: jobId\");\n }\n ApiService.post('api/v2/jobs/admin-job-chat', {job_id: jobId})\n .then(( { data } ) => {\n resolve(data.chat_id);\n })\n .catch((err) => {\n reject(err);\n });\n });\n },\n async changeStatus({ state, dispatch }, payload) {\n return new Promise((resolve, reject) => {\n const DBfriendly = {\n ...payload,\n shift_slots: [payload.shiftSlotId]\n }\n ApiService.put(`api/v2/applications/${payload.id}`, DBfriendly)\n .then((response) => {\n resolve(response.data.data);\n })\n .catch((error) => {\n reject(error)\n })\n });\n },\n async addCrewBoss({ state, dispatch }, payload) {\n return new Promise((resolve, reject) => {\n ApiService.post('api/v2/shifts/add-crew-boss', payload)\n .then((response) => {\n resolve(response.data.data);\n })\n .catch((error) => {\n reject(error)\n })\n });\n },\n async removeCrewBoss({ state, dispatch }, payload) {\n return new Promise((resolve, reject) => {\n ApiService.post('api/v2/shifts/remove-crew-boss', payload)\n .then((response) => {\n resolve(response.data.data);\n })\n .catch((error) => {\n reject(error)\n })\n });\n },\n updateAfterStatusChange({ commit, state }) {\n return new Promise((resolve, reject) => {\n ApiService.get(`/api/v2/jobs/fetchJobForView`, state.item.id).then((response) => {\n commit('setItem', response.data.data)\n resolve(response.data.data);\n })\n .catch((err) => {\n reject(err);\n });\n });\n },\n updateShiftSlot( { commit }, value) {\n commit(\"changeShiftSlotStatus\", value)\n },\n changeCurrentPage({ commit }, payload) {\n commit(\"changePage\", payload);\n },\n async fetchBookableUsers({ state, commit }, query) {\n const branches = `&branches=${query.bookFromBranches}`\n const searchString = `&username=${query.search}`\n return new Promise((resolve, reject) => {\n commit(\"setIsFetchingUsers\", true);\n const queryString =\n `bookable-users?page=${state.pagination.currentPage}&skill=${query.skill}${branches}${searchString}`\n ApiService.get(\n 'api/v2', \n queryString\n ).then(response => {\n commit(\"setBookableUsers\", response.data.data)\n commit(\"setTotalPages\", response.data.last_page)\n }).catch(error => {\n reject(error)\n }).finally(() => {\n commit(\"setIsFetchingUsers\", false)\n resolve();\n })\n })\n },\n changeBookedWorkerStatus({ commit }, payload) {\n return new Promise((resolve, reject) => {\n ApiService.put(`api/v2/applications/${payload.pivot.application_id}`, payload.payload)\n .then((response) => {\n resolve(response.data);\n })\n .catch((error) => {\n reject(error);\n });\n })\n },\n downloadJobReport({ state, commit }, jobID) {\n return new Promise((res, rej) => {\n ApiService.download(`api/v2`, `jobs/${jobID}/report`)\n .then(response => {\n const start = moment(state.item.start, \"DD/MM/YYYY\").format(\"YYYY.MM.DD\");\n const fileName = `${start} - ${state.item.company.name} - ${state.item.name}.xls`;\n const url = URL.createObjectURL(new Blob([response.data], {\n type: 'application/vnd.ms-excel'\n }));\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.click();\n res();\n })\n .catch(err => {\n rej(err);\n })\n })\n },\n deleteApplication({ commit, dispatch }, id) {\n return new Promise((resolve, reject) => {\n commit(\"isAwaitingDelete\", id)\n ApiService\n .delete(\n \"/api/v2/applications/\" + id\n )\n .then(() => {\n dispatch(\"fetchUpdatedShift\", \"Delete\");\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Application deleted successfully`,\n showConfirmButton: false,\n timer: 1200\n })\n })\n .catch(error => {\n reject(error);\n })\n .finally(() => {\n resolve();\n });\n })\n },\n getClientRatesForJob({ commit }, id) {\n return new Promise((resolve, reject) => {\n ApiService.get('api/v2', `jobs/${id}/client-rates`)\n .then(response => {\n commit('setClientRates', response.data)\n })\n .catch(err => {\n reject(err)\n })\n .finally(() => {\n resolve();\n })\n })\n },\n downloadCrewlistPDF({ state, commit }, query) {\n return new Promise((resolve, reject ) => {\n ApiService.download('api/v2', `crew-list-pdf/${state.item.id}${query.length ? `?shifts=${query}` : ''}`)\n .then(response => {\n const fileName = `${state.item.name} - crewlist.pdf`;\n const url = URL.createObjectURL(new Blob([response.data], {\n type: 'application/vnd.ms-excel'\n }));\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.click();\n resolve();\n })\n .catch(error => {\n reject(error);\n })\n })\n },\n setShiftsWithSkill({ commit }, skillID) {\n commit(\"saveCurrentSkill\", skillID);\n commit(\"setShiftsWithSelectedSkill\", skillID);\n },\n setAllShiftsAreExpanded({ commit }) {\n commit(\"setAllShiftsAreExpanded\");\n },\n saveWorkerRate({ commit }, payload) {\n return new Promise((res, rej) => {\n ApiService.post(`api/v2/jobs/${payload.job_id}/save-worker-rates`, payload)\n .then(response => {\n res(response);\n })\n .catch(err => {\n rej(err);\n })\n })\n },\n checkIsRateEmpty({ commit }, data) {\n return new Promise((resolve , reject) => {\n if(!data) {\n reject();\n }\n commit(\"isAwaitingBook\", data.assigneeId);\n const payload = {\n job_id: data.jobId,\n skill_id: data.skillId,\n assignee_id: data.assigneeId,\n };\n ApiService.post(\"api/v2/jobs/check-has-rate\", payload)\n .then((response) => {\n resolve(response)\n })\n .catch((err) => {\n commit(\"isAwaitingBook\", null);\n reject(err.response);\n })\n });\n },\n saveMissingRate({ commit }, payload) {\n return new Promise((resolve, reject) => {\n ApiService.post(\"api/v2/rates/missing-rates-book\", payload)\n .then(() => {\n resolve();\n })\n .catch(() => {\n reject();\n });\n })\n },\n bookUser({ state, commit, dispatch }, data) {\n const shifts = state.item.shifts.filter( el => {\n return data.shifts.some( f => { //get the selected shifts for booking\n return f === el.id;\n });\n });\n const shiftSlots = shifts.map(a => a.shift_slots).flat() //From the selected shifts take the shifts slots and find\n .filter(a => a.skill_id == data.skill) //the ones where the skill required is the same as the skill selected in card\n .map(a => a.id);\n const payload = {\n assignee_id: data.assigneeId,\n shiftIds: data.shifts,\n created_by_id: data.createdBy,\n shift_slots: shiftSlots,\n status: \"Booked\",\n book_anyway: !!data.book_anyway,\n booked_at: moment().format(\"YYYY-MM-DD HH:mm:ss\")\n };\n if(data.closely) payload['closely'] = true\n return new Promise((resolve, reject) => {\n ApiService\n .post(\n \"/api/v2/applications/\", payload\n )\n .then(() => {\n dispatch(\"fetchUpdatedShift\", \"Book\");\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Application added successfully`,\n showConfirmButton: false,\n timer: 1000\n }).then(() => {\n commit(\"wasSuccessfullyBooked\", data.assigneeId)\n })\n })\n .catch(error => {\n commit(\"isAwaitingBook\", null)\n if(error.response && error.response.status == 409) {\n Swal.fire({\n position: 'top-end',\n icon: 'error',\n title: error.response.data.message,\n showConfirmButton: false,\n timer: 1000\n })\n } else if (error.response && error.response.status == 410) {\n Swal.fire({\n icon: 'error',\n title: error.response.data.message,\n showDenyButton: true,\n showCancelButton: true,\n confirmButtonText: 'Book',\n denyButtonText: `Cancel`,\n }).then((result) => {\n if (result.isConfirmed) {\n const confirmedData = {\n ...data,\n closely: true\n }\n dispatch(\"bookUser\", confirmedData);\n }\n })\n }\n reject(error.response);\n })\n .finally(() => {\n resolve();\n });\n })\n },\n fetchWorkerRates({ commit }, job_id) {\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2\", `jobs/${job_id}/worker-rates`)\n .then(response => {\n commit('setWorkerRates', response.data);\n })\n .catch(err => {\n reject(err);\n })\n .finally(() => {\n resolve();\n })\n });\n },\n fetchUpdatedShift({ commit, state }, action) {\n ApiService\n .get(\n `/api/v2/jobs/${state.item.id}/updateAfterBook`\n )\n .then((response) => {\n commit(\"updateDetails\", response.data.data);\n commit(\"setShiftsWithSelectedSkill\", state.currentlySelectedSkill)\n }).finally(() => {\n if(action == \"Delete\") commit(\"isAwaitingDelete\", null)\n else commit(\"isAwaitingBook\", null)\n })\n },\n deleteReportedHours({ commit, state, dispatch }, payload) {\n const reportedHours = state.item.shifts.map(shift => shift.shift_slots).flat().find(shiftSlot => shiftSlot.id == payload.shiftSlotId).reported_hours;\n reportedHours.filter(hour => hour.shift_slot_id !== payload.shiftSlotId)\n const data = reportedHours.find(reportedHour => reportedHour.created_by_id == payload.assignee_id);\n commit(\"isDeletingReport\", payload.id);\n if(data) {\n ApiService\n .delete(\n \"/api/v2/reported-hours/\" + data.id\n )\n .then(() => {\n dispatch(\"fetchNewShiftSLot\", payload.shiftSlotId).then(() => {\n commit(\"resetIsDeletingReport\", []);\n });\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n }else {\n const application = {\n id: payload.id,\n status: \"Report!\",\n assignee_id: payload.assignee_id,\n created_by_id: payload.created_by_id,\n shift_slots: [payload.shiftSlotId]\n }\n ApiService.update(`api/v2/applications`, application.id, application)\n .then(() => {\n dispatch(\"fetchNewShiftSLot\", payload.shiftSlotId).then(() => {\n commit(\"resetIsDeletingReport\", []);\n });\n })\n }\n },\n updateReportedHours({ commit, dispatch, state }, payload) {\n commit(\"isUpdatingHours\", payload.application.id);\n if(payload.reportedHour) {\n const start = `${payload.reportedHour.start.substring(0,10)} ${payload.inputs.startTime}`\n let end = `${payload.reportedHour.start.substring(0,10)} ${payload.inputs.endTime}`;\n if(moment(start,\"DD/MM/YYYY HH:mm\").valueOf() > moment(end,\"DD/MM/YYYY HH:mm\").valueOf()) {\n end = moment(end,\"DD/MM/YYYY HH:mm\").add(1, 'day').format(\"DD/MM/YYYY HH:mm\");\n }\n const data = {\n id: payload.reportedHour.id,\n start: start,\n end: end,\n created_by_id: payload.reportedHour.created_by_id,\n shift_slot_id: payload.reportedHour.shift_slot_id,\n i_was_late: payload.inputs.iwasLate ? 1 : 0\n }\n ApiService.update(`api/v2/reported-hours`, payload.reportedHour.id, data)\n .then(() => {\n Swal.fire({\n toast: true,\n position: 'top-end',\n icon: 'success',\n title: `Report updated!`,\n showConfirmButton: false,\n timer: 1800\n })\n dispatch(\"fetchNewShiftSLot\", payload.reportedHour.shift_slot_id).then(() =>{\n commit(\"resetIsUpdatingHours\");\n });\n }).catch((err) => {\n Swal.fire({\n toast: true,\n position: 'top-end',\n icon: 'error',\n title: `${err}`,\n showConfirmButton: false,\n timer: 1300\n })\n commit(\"resetIsUpdatingHours\");\n })\n } else {\n const shiftID = state.item.shifts.map(shift => shift.shift_slots).flat().find(shiftSlot => shiftSlot.id == payload.application.shiftSlotId).shift_id;\n const shift = state.item.shifts.find(shift => shift.id == shiftID);\n const data = {\n start: `${shift.start.substring(0, 10)} ${payload.inputs.startTime}`,\n end: `${shift.end.substring(0, 10)} ${payload.inputs.endTime}`,\n i_was_late: payload.inputs.iwasLate ? 1 : 0,\n shift_slot_id: payload.application.shiftSlotId,\n created_by_id: payload.application.assignee_id\n };\n ApiService\n .post(\n \"/api/v2/reported-hours\", data\n )\n .then(() => {\n Swal.fire({\n toast: true,\n position: 'top-end',\n icon: 'success',\n title: `Report updated!`,\n showConfirmButton: false,\n timer: 1800\n })\n dispatch(\"fetchNewShiftSLot\", payload.application.shiftSlotId).then(() =>{\n commit(\"resetIsUpdatingHours\");\n });\n })\n .catch(error => {\n Swal.fire({\n toast: true,\n position: 'top-end',\n icon: 'error',\n title: `${error}`,\n showConfirmButton: false,\n timer: 800\n })\n commit(\"resetIsUpdatingHours\");\n })\n }\n },\n reportHours({ commit, dispatch }, payload) {\n const start = `${payload.data.start.substring(0, 10)} ${payload.reportedHours.startTime}`\n let end = `${payload.data.start.substring(0, 10)} ${payload.reportedHours.endTime}`;\n if (moment(start, \"DD/MM/YYYY HH:mm\").valueOf() > moment(end, \"DD/MM/YYYY HH:mm\").valueOf()) {\n end = moment(end,\"DD/MM/YYYY HH:mm\").add(1,'day').format(\"DD/MM/YYYY HH:mm\");\n }\n const data = {\n start: start,\n end: end,\n i_was_late: payload.reportedHours.iwasLate ? 1 : 0,\n shift_slot_id: payload.data.data.shiftSlotId,\n created_by_id: payload.data.data.assignee_id\n };\n commit(\"setIsReportingHours\", payload.data.data.id);\n return new Promise((resolve, reject) => {\n ApiService\n .post(\n \"/api/v2/reported-hours\", data\n )\n .then((res) => {\n Swal.fire({\n toast: true,\n position: 'top-end',\n icon: 'success',\n title: `Report successfull!`,\n showConfirmButton: false,\n timer: 1800\n })\n resolve();\n dispatch(\"fetchNewShiftSLot\", payload.data.data.shiftSlotId).then(() =>{\n commit(\"resetIsReportingHours\", []);\n });\n })\n .catch(error => {\n commit(\"resetIsReportingHours\", []);\n reject(error);\n Swal.fire({\n toast: true,\n position: 'top-end',\n icon: 'error',\n title: `${error}`,\n showConfirmButton: false,\n timer: 800\n })\n })\n });\n },\n SendMailToColAndPM({ commit }, payload) {\n return new Promise((resolve,reject)=> {\n ApiService.post('api/v2/sendMailToColAndPM', payload).then(response => {\n resolve(response);\n }).catch(error => {\n reject(error);\n })\n })\n },\n approveHours({ commit, dispatch }, payload) {\n const data = {\n id: payload.id,\n status: \"Approved\",\n created_by_id: store.getters.currentUser.id,\n assignee_id: payload.assignee_id,\n shift_slots: payload.shiftSlotId\n }\n return new Promise((resolve, reject) => {\n commit(\"isAwaitingApproval\", payload.id)\n ApiService.put(`api/v2/applications/${payload.id}`, data)\n .then(() => {\n Swal.fire({\n toast: true,\n position: 'top-end',\n icon: 'success',\n title: `Report approved!`,\n showConfirmButton: false,\n timer: 1800\n })\n resolve();\n dispatch(\"fetchNewShiftSLot\", payload.shiftSlotId).then(() => {\n commit(\"resetIsAwatingApproval\", []);\n });\n })\n .catch((error) => {\n Swal.fire({\n toast: true,\n position: 'top-end',\n icon: 'error',\n title: `${error}`,\n showConfirmButton: false,\n timer: 800\n })\n reject(error)\n })\n })\n },\n disapproveReport({ commit, dispatch }, payload) {\n const data = {\n id: payload.application.id,\n created_by_id: payload.application.created_by_id,\n assignee_id: payload.application.assignee_id,\n status: payload.reportedHour == null ? \"Report!\" : \"Reported\",\n shift_slots: payload.application.shiftSlotId\n }\n commit(\"setIsAwaitingDisapproval\", payload.application.id);\n ApiService.put(`api/v2/applications/${payload.application.id}`, data)\n .then(() => {\n Swal.fire({\n toast: true,\n position: 'top-end',\n icon: 'error',\n title: `Report Dissapproved!`,\n showConfirmButton: false,\n timer: 1800\n })\n dispatch(\"fetchNewShiftSLot\", payload.application.shiftSlotId).then(() => {\n commit(\"resetIsAwaitingDisapproval\", []);\n });\n })\n .catch((error) => {\n Swal.fire({\n toast: true,\n position: 'top-end',\n icon: 'error',\n title: `${error}`,\n showConfirmButton: false,\n timer: 800\n })\n })\n },\n fetchNewShiftSLot({ commit }, id) {\n return new Promise((resolve, reject) => {\n ApiService.get(`/api/v2/shift-slots/${id}`)\n .then((response) => {\n commit(\"updateShift\", response.data.data)\n resolve();\n })\n .catch((err) => {\n reject(err)\n })\n })\n },\n fetchPossibleSlots({commit}, payload) {\n return new Promise((resolve, reject) => {\n ApiService.get(`api/v2/application-change/${payload.shiftID}/${payload.application.id}`)\n .then(response => {\n commit(\"setPossibleWorkerSlots\", response.data)\n })\n .catch(err => {\n reject(err);\n })\n .finally(() => {\n resolve();\n })\n })\n },\n saveChangedSlot({commit}, payload) {\n return new Promise((resolve, reject) => {\n ApiService.post(`api/v2/application-change/`, payload)\n .catch(err => {\n reject(err);\n })\n .finally(() => {\n resolve();\n })\n })\n },\n updateAfterSlotChange({commit}, id) {\n return new Promise( (resolve, reject) =>\n ApiService.get(`/api/v2/jobs/fetchJobForView`, id)\n .then((response) => {\n commit('setItem', response.data.data);\n commit(\"setJobSkills\");\n })\n .catch((err) => {\n reject(err);\n })\n .finally(() => {\n resolve();\n })\n );\n },\n setChangeSkillPayload({commit}, payload) {\n commit(\"mutateSkillPayload\", payload);\n },\n getJobCrewStatus({commit}, jobId) {\n return new Promise((resolve, reject) => {\n ApiService.get('api/v2', \"job-crew-status/\" + jobId)\n .then(response => {\n resolve(response.data.crew);\n })\n .catch(err => {\n reject(err);\n })\n })\n },\n updateShiftCrew({commit}, shiftId) {\n return new Promise((resolve, reject) => {\n ApiService.get('api/v2', \"shift-crew-status/\" + shiftId)\n .then(response => {\n commit(\"changeShiftCrew\", {id: shiftId, crew: response.data.crew })\n })\n .catch(err => {\n reject(err);\n })\n });\n },\n clearNote({ commit }, id) {\n commit('clearNote', id);\n },\n updateNote({ commit }, payload) {\n commit('updateNote', payload)\n },\n saveJobNote({ state, commit }, note) {\n return new Promise((resolve, reject) => {\n if (!state.item) {\n reject(\"No job found\");\n }\n const payload = {\n job_id: state.item.id,\n note: note\n }\n ApiService.post(\"api/v2/jobs/save-note\", payload)\n .then(response => {\n commit(\"addNewNote\", response.data.note);\n resolve();\n })\n .catch(err => {\n reject(err);\n })\n });\n },\n downloadJobSalaryReport({ state }, replaceZero) {\n return new Promise((res, rej) => {\n ApiService.post(`api/v2/jobs/salaries`, { jobId: state.item.id, replaceZero: replaceZero })\n .then(response => {\n const link = document.createElement('a');\n link.href = response.data;\n document.body.appendChild(link);\n link.click();\n res();\n })\n .catch(err => {\n console.log(err.response)\n if(err.response) {\n if(err.response.data && err.response.data.type === \"ERR.NO_REPORTS_FOR_JOB\") {\n fireToast(\"No reports for requested job\", false);\n }\n if(err.response.data.type === \"MissingRates\") {\n rej(err.response.data);\n }\n }\n rej(err);\n })\n })\n },\n pinNote({ commit }, noteId) {\n return new Promise((resolve, reject) => {\n ApiService.post(\"api/v2/jobs/pin-note\", { noteId: noteId })\n .then(() => {\n commit(\"pinNote\", noteId)\n resolve();\n })\n .catch((err) => {\n reject(err);\n });\n });\n }\n};\n\nconst mutations = {\n pinNote(state, noteId) {\n if(state.item) {\n const noteIndex = state.item.notes.findIndex((i) => i.id === noteId);\n if(-1 !== noteIndex) {\n state.item.notes[noteIndex].is_pinned = !state.item.notes[noteIndex].is_pinned;\n }\n }\n },\n updateNote(state, payload) {\n if(state.item) {\n const noteIndex = state.item.notes.findIndex((i) => i.id === payload.noteId);\n if(-1 !== noteIndex) {\n state.item.notes[noteIndex].comment = payload.content;\n }\n }\n },\n clearNote(state, id) {\n if(state.item) {\n const noteIndex = state.item.notes.findIndex((i) => i.id === id);\n if(-1 !== noteIndex) {\n state.item.notes.splice(noteIndex, 1);\n }\n }\n },\n addNewNote(state, payload) {\n if(state.item) {\n if(!state.item.notes) {\n state.item.notes = [];\n }\n state.item.notes = [payload, ...state.item.notes];\n }\n },\n changeShiftCrew(state, data) {\n const shift = state.item.shifts.find(shift => shift.id === data.id);\n if(shift) {\n shift.crew = data.crew;\n }\n },\n setItem(state, item) {\n state.item = item;\n },\n mutateSkillPayload(state, data) {\n state.changeSkillPayload = data;\n },\n updateShift(state, payload) {\n const index = state.item.shifts.find(shift => shift.id == payload.shift_id).shift_slots.findIndex(shiftSlot => shiftSlot.id == payload.id)\n const shift_slot = state.item.shifts.find(shift => shift.id == payload.shift_id).shift_slots[index];\n if(shift_slot) {\n shift_slot.applications = payload.applications;\n shift_slot.reported_hours = payload.reported_hours;\n }\n },\n resetIsReportingHours(state) {\n state.isReportingHours = [];\n },\n setIsReportingHours(state, value) {\n state.isReportingHours.push(value);\n },\n setPossibleWorkerSlots(state, value) {\n state.possibleWorkerSlots = value;\n },\n setBookableUsers(state, value) {\n state.bookableUsers = value;\n },\n saveCurrentSkill(state, value) {\n state.currentlySelectedSkill = value;\n },\n resetIsDeletingReport(state, payload) {\n state.isDeletingReport = payload;\n },\n isUpdatingHours(state, value) {\n state.isUpdatingHours.push(value);\n },\n setWorkerRates(state, payload) {\n state.workerRates = payload;\n },\n resetIsUpdatingHours(state) {\n state.isUpdatingHours = [];\n },\n resetIsAwaitingDisapproval(state) {\n state.isAwaitingDisapproval = [];\n },\n setIsAwaitingDisapproval(state, value) {\n state.isAwaitingDisapproval.push(value);\n },\n isDeletingReport(state, payload) {\n state.isDeletingReport.push(payload);\n },\n setStatus(state, value) {\n state.item.status = value;\n },\n setAllShiftsAreExpanded(state) {\n state.allShiftsAreExpanded = !state.allShiftsAreExpanded;\n },\n setTotalPages(state, value) {\n state.pagination.lastPage = value;\n },\n setCurrentPage(state, value) {\n state.pagination.currentPage = value;\n },\n setLoading(state, value) {\n state.loading = value;\n },\n setClientRates(state, payload) {\n state.clientRates = payload;\n },\n changeShiftSlotStatus(state, values) {\n const application = state.item.shifts.find(shift => shift.id == values.shiftID)\n .shift_slots.find(slot => slot.id == values.shiftSlotID)\n .applications.find(application => application.id == values.id);\n if(application) {\n application.status = values.newStatus;\n if(values.booked_by) {\n application.booked_by = values.booked_by;\n }\n }\n },\n changePage(state, value) {\n state.pagination.currentPage = value;\n },\n setIsFetchingUsers(state, value) {\n state.isFetchingUsers = value;\n },\n setJobSkills(state) {\n const skills = state.item.shifts\n .map(a => a.shift_slots)\n .flat()\n .map(a => a.skill);\n const removeDuplicateSkills = Array.from(new Set(skills.map(a => a.id))).map( \n id => {\n return skills.find(a => a.id === id);\n }\n );\n state.skills = removeDuplicateSkills;\n },\n setShiftsWithSelectedSkill(state, value) {\n const shiftsWithSkill = state.item.shifts.map(a => a.shift_slots)\n .flat().filter(a => a.skill_id == value).map(a => a.shift_id) // take the shift ids of the shift slots with the selected skill\n const shifts = state.item.shifts.filter( el => {\n return shiftsWithSkill.some( f => {\n return f === el.id;\n });\n });\n state.shiftsWithSkill = shifts;\n },\n resetIsAwatingApproval(state) {\n state.isAwaitingApproval = []\n },\n isAwaitingApproval(state, value) {\n state.isAwaitingApproval.push(value);\n },\n updateDetails(state, value) {\n state.item.crew = value.crew;\n state.item.shifts = value.shifts;\n },\n isAwaitingDelete(state, value) {\n state.isAwaitingDelete = value;\n },\n isAwaitingBook(state, value) {\n state.isAwaitingBook = value;\n },\n wasSuccessfullyBooked(state, value) {\n state.successfullyBooked = value;\n }\n};\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations,\n};\n","import ApiService from \"../../../core/services/ApiService\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n data: [],\n loading: false,\n error: '',\n isAwaitingResponse: false\n }\n}\n\nconst getters = {\n getData: state => state.data,\n getError: state => state.error,\n loading: state => state.loading,\n isAwaitingResponse: state => state.isAwaitingResponse\n}\n\nconst actions = {\n fetchData({commit}, userId) {\n commit('setLoading', true);\n\n ApiService.get('api/v2' , `notes?filter[noteable_id]=${userId}`).then(\n response => {\n commit('setData' , response.data.data)\n }).catch(error => {\n commit('setError', error)\n }).finally(() => {\n commit('setLoading' , false)\n }); \n },\n\n createNew({commit, dispatch, state}, payload) {\n commit(\"setAwaitResponse\", true)\n const data = {\n ...payload,\n noteable_type: \"users\"\n };\n ApiService\n .post(\n \"/api/v2/notes\" , data\n )\n .then(() => {\n dispatch(\"fetchData\", payload.noteable_id);\n })\n .catch(error => {\n commit(\"setError\", error.response.data.message);\n })\n .finally(() => {\n commit(\"setAwaitResponse\", false)\n });\n },\n\n update({ commit , dispatch}, payload) {\n return new Promise((resolve, reject) => {\n commit(\"setAwaitResponse\", true);\n ApiService\n .update(\n \"/api/v2/notes\", payload.id, payload\n )\n .then(() => {\n if(payload.userID) {\n dispatch(\"fetchData\", payload.userID);\n }\n })\n .catch(error => {\n commit(\"setError\", error.response.data.message);\n commit(\"setAwaitResponse\", false)\n reject(error);\n })\n .finally(() => {\n commit(\"setAwaitResponse\", false)\n resolve();\n });\n })\n },\n\n destroyData({commit, dispatch}, payload) {\n return new Promise((resolve, reject) => {\n ApiService\n .delete(\n \"/api/v2/notes/\" + payload.noteID\n )\n .then(() => {\n if(payload.userID) {\n dispatch(\"fetchData\", payload.userID);\n }\n resolve();\n })\n .catch(error => {\n commit(\"setError\", error);\n reject(error);\n })\n })\n },\n clearErrors({ commit }) {\n commit(\"clearError\");\n },\n resetState({ commit }) {\n commit(\"resetState\")\n }\n}\nconst mutations = {\n setError(state, value) {\n state.error = value\n },\n setAwaitResponse(state, value) {\n state.isAwaitingResponse = value;\n },\n setData(state, value) {\n state.data = value\n },\n setLoading(state, value) {\n state.loading = value\n },\n clearError(state) {\n state.error = ''\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","/* eslint-disable */\nimport ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\n\nfunction initialState() {\n return {\n helpCategoriesList: [],\n loading: false,\n error: \"\",\n query: {\n roleId: \"\"\n },\n pagination: {\n current_page: 1,\n last_page: 1\n }\n };\n}\n\nconst getters = {\n helpCategoriesList: state => state.helpCategoriesList,\n getPaginationData: state => state.pagination,\n loading: state => state.loading\n}\n\nconst actions = {\n fetchData({ commit, state }, params = {}) {\n commit(\"setLoading\", true);\n\n ApiService\n .get(\n \"/api/v2\",\n 'help-categories?page='+\n state.pagination.current_page +\n \"&perPage=10\" +\n (state.query.roleId ? '&roleId=' + state.query.roleId : \"\"))\n .then(\n response => {\n commit('setHelpCategoriesList' , response.data.data)\n commit(\"setPagination\", response.data)\n }).catch(error => {\n commit('setError', error)\n console.log(error)\n }).finally(() => {\n commit('setLoading' , false)\n });\n },\n\n createNew({commit, dispatch }, payload) {\n ApiService\n .post(\n \"/api/v2/help-categories\" , payload\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Help category created successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n\n update({ commit , dispatch}, value) {\n commit(\"setLoading\", true);\n const payload = {\n name : value.payload.name,\n description: value.payload.description,\n target_roles: value.payload.target_roles\n };\n ApiService\n .update(\n \"/api/v2/help-categories\" , value.id, payload\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Help category edited successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n commit(\"setLoading\", false)\n });\n },\n\n destroyData({commit, dispatch}, id) {\n ApiService\n .delete(\n \"/api/v2/help-categories/\" + id\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Help category deleted successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n\n saveWeights({ commit, dispatch }, value) {\n ApiService\n .post(\n '/api/v2/help-categories/save-weights' , value\n )\n .then()\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n\n },\n\n setQuery({commit}, value) {\n commit(\"setQuery\", value);\n },\n resetPageNumber({commit}){\n commit('resetPageNumber')\n },\n setPageNumber({commit} , value){\n commit('setPageNumber', value)\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n};\n\nconst mutations = {\n setHelpCategoriesList(state, items) {\n state.helpCategoriesList = items;\n },\n setLoading(state, loading) {\n state.loading = loading;\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n },\n setQuery(state, query) {\n state.query = query;\n console.log(state.query);\n },\n setPagination(state, value) {\n state.pagination = value;\n },\n setPageNumber(state, value){\n state.pagination.current_page = value\n },\n setFetchedSingle(state , value) {\n state.singleClient = value;\n },\n resetPageNumber(state){\n state.pagination.current_page = 1\n }\n};\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n};\n","import ApiService from \"../../../core/services/ApiService\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n data: {},\n loading: false\n };\n};\n\nconst getters = {\n loadingShifts: state => state.loading,\n getShifts: state => state.data\n}\n\nconst actions = {\n async fetchShiftsByJobID({ commit , state}, jobID) {\n // This check is designated to avoid making unneeded API calls in the event that a user hit \"View Shifts\" button\n // on a job that already has fetched shifts for it.\n const jobShiftsAreAlreadyFetched = state.data.hasOwnProperty(jobID);\n if (jobShiftsAreAlreadyFetched) {\n return\n } else {\n commit(\"setLoading\", true);\n await ApiService\n .get(\n `/api/v2`, `jobs/${jobID}/shifts`)\n .then(response => {\n commit(\"setData\", {jobID: jobID, shifts: response.data.data});\n return response.data.data;\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n commit(\"setLoading\", false);\n });\n }\n }\n}\nconst mutations = {\n setLoading(state, value) {\n state.loading = value;\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n },\n setData(state, payload) {\n // We make sure for every fetched job shifts we have a key that is the ID of the job and the value is the job shifts.\n state.data[`${payload.jobID}`] = payload.shifts;\n },\n setEror(state, value) {\n state.error = value;\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\nimport moment from \"moment\";\nimport Swal from \"sweetalert2\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n data: {},\n loading: false,\n userID: \"\",\n activeTab: \"\",\n branches: \"\",\n searchString: \"\",\n parameters: \"\",\n isAwaitingResponse: {\n isLoading: false,\n indexes: []\n },\n isLoadingEstimates: false,\n pagination: {\n currentPage: 1,\n lastPage: 1\n },\n estimatedEarning: {},\n newJobs: \"\",\n error: \"\"\n };\n};\n\nconst getters = {\n loading: state => state.loading,\n shifts: state => state.data,\n getPagination: state => state.pagination,\n isAwaitingResponse: state => state.isAwaitingResponse,\n newJobs: state => state.newJobs,\n isLoadingEstimates: state => state.isLoadingEstimates,\n estimatedEarning: state => state.estimatedEarning,\n}\n\nconst actions = {\n fetchShifts({ dispatch, commit , state }, parameters) {\n commit(\"setEstimatedEarnings\", []);\n commit(\"setParameters\", parameters)\n commit(\"setQueryState\", { id: parameters.id , tab : parameters.tab});\n if(parameters.tab == \"new\") {\n return new Promise((resolve, reject) => {\n const pagination = `page=${state.pagination.currentPage}&perPage=10`;\n ApiService.get(\"api/v2/my-dashboard\" , \"new-jobs?\" + pagination)\n .then((response) => {\n commit(\"setData\", response.data.data);\n commit(\"setPagination\", response.data.meta.last_page)\n dispatch(\"fetchEstimatedEarnings\", response.data.data.map(item => item.id));\n resolve();\n })\n .catch((err) => {\n commit(\"setError\", err.message);\n reject();\n });\n });\n }\n commit(\"setBranches\", parameters.branches)\n const pagination = `page=${state.pagination.currentPage}&perPage=10`;\n const assignedTo = `&filter[assigned]=${state.userID}`;\n const searchString = (state.searchString !== \"\" ? `&filter[search]=${state.searchString}` : \"\")\n const branches = `&filter[branches]=${state.branches}`\n const activeTab = () => {\n switch(parameters.tab){\n case 'my':\n return `${assignedTo}${searchString}&filter[upcoming]=true&filter[applicationStatuses]=Booked&filter[withTrashed]=true&filter[otherJobCurrentStatus]=Draft&filter[sort]=start`;\n break;\n case 'past':\n return `${assignedTo}${searchString}&filter[past]=true&filter[applicationNotStatuses]=Applied,Reserve,Requested,Denied&filter[otherJobCurrentStatus]=Draft&filter[sort]=start`;\n break;\n case 'new':\n return `${searchString}&filter[onlyNew]=${state.userID}&filter[otherJobCurrentStatus]=Draft,Cancelled&filter[otherCurrentStatus]=Cancelled${branches}&filter[upcoming]=true&newJobs=true`;\n break;\n case 'pending':\n return `${searchString}&filter[sort]=start&filter[withTrashed]=true&${assignedTo}&filter[upcoming]=true&filter[applicationStatuses]=Applied,Reserve,Requested,Denied,Request accepted,Request denied&filter[otherJobCurrentStatus]=Draft`;\n break;\n }\n }\n const queryString = `${pagination}${activeTab()}&include=shift_slots.applications,job.company,job.venue,job.book_from_branches`\n let slug = `shifts?${queryString}`;\n if(parameters.tab === 'past') {\n slug = `my-dashboard/past-shifts?${queryString}`;\n }\n if(parameters.tab === 'my') {\n slug = `my-dashboard/my-shifts?${queryString}`;\n }\n return new Promise((resolve, reject) => {\n ApiService\n .get(\n `/api/v2`, slug)\n .then(response => {\n dispatch(\"fetchEstimatedEarnings\", response.data.data.map(item => item.id));\n commit(\"setData\", response.data.data);\n commit(\"setPagination\", response.data.meta.last_page)\n })\n .catch(error => {\n commit(\"setError\", error);\n reject();\n })\n .finally(() => {\n resolve()\n })})\n\n },\n setLoading({ commit }, value) {\n commit(\"setLoading\", value);\n },\n fetchForNewJobsCounter({ commit, state }) {\n ApiService\n .get(\n `/api/v2/my-dashboard`, `new-jobs?count=true`)\n .then(response => {\n commit(\"setNewJobsCounter\", response.data.count)\n })\n .catch(error => {\n commit(\"setError\", error)\n })\n .finally(() => {\n //...\n })\n },\n CheckInWorker({ commit, dispatch, state}, shift) {\n commit(\"setIsAwaitingResponse\", { isLoading: true, index: shift.index });\n const payload = {\n application_id: shift.my_shift_slot.applications[0].id,\n assignee_id: shift.my_shift_slot.applications[0].assignee_id,\n }\n ApiService.post(\n `api/v2/my-dashboard/check-in`, payload\n ).then((res) => {\n state.data.find(s => s.id == shift.id).my_shift_slot.applications[0].check_in_at\n = res.data.check_in_at;\n }).catch((error) => {\n commit(\"setError\", error);\n }).finally(() => {\n commit(\"setIsAwaitingResponse\", { isLoading: false, index: shift.index });\n }\n )\n },\n async reportHours({ commit, dispatch, state }, data) {\n return new Promise((resolve, reject) => {\n commit(\"setIsAwaitingResponse\", { isLoading: true, index: data.index });\n const payload = {\n id: data.shiftSlot.id,\n start: data.report.start,\n end: data.report.end,\n shift_slot_id: data.shiftSlot.my_shift_slot.id,\n created_by_id: state.userID,\n i_was_late: data.report.iwasLate ? 1 : 0,\n comment: data.report.comment\n }\n ApiService\n .post(\n \"/api/v2/reported-hours\", payload\n )\n .then((res) => {\n Swal.fire({\n toast: true,\n position: 'top-end',\n icon: 'success',\n title: `Hours reported successfully`,\n showConfirmButton: false,\n timer: 3000\n })\n resolve(res.data.data);\n })\n .catch(error => {\n reject();\n commit(\"setError\", error);\n })\n .finally(() => {\n commit(\"setIsAwaitingResponse\", { isLoading: false, index: data.index });\n });\n })\n },\n updateReport({ commit, dispatch, state}, data) {\n return new Promise((resolve, reject) => {\n commit(\"setIsAwaitingResponse\", { isLoading: true, index: data.index });\n const payload = {\n created_by_id: state.userID,\n shift_slot_id: data.reportedHours[0].shift_slot_id,\n id: data.reportedHours[0].id,\n start: data.report.start,\n end: data.report.end,\n i_was_late: data.report.iwasLate ? 1 : 0,\n comment: data.report.comment\n }\n ApiService\n .update(\n \"/api/v2/reported-hours\", data.reportedHours[0].id, payload\n )\n .then((res) => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Hours updated successfully`,\n showConfirmButton: false,\n timer: 800\n });\n resolve(res.data);\n })\n .catch(error => {\n commit(\"setError\", error);\n reject(error);\n })\n .finally(() => {\n commit(\"setIsAwaitingResponse\", { isLoading: true, index: data.index });\n });\n })\n\n },\n deleteReport({ commit, dispatch, state }, payload) {\n return new Promise((resolve, reject) => {\n commit(\"setIsAwaitingResponse\", { isLoading: true, index: payload.index });\n ApiService\n .delete(\n \"/api/v2/reported-hours/\" + payload.reportId\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Report deleted successfully`,\n showConfirmButton: false,\n timer: 800\n })\n const shiftToChange = state.data.find(shift => shift.id == payload.shiftId).my_shift_slot;\n shiftToChange.reported_hours = [];\n shiftToChange.applications[0].status = \"Report!\";\n resolve();\n })\n .catch(error => {\n reject(error);\n commit(\"setError\", error);\n })\n .finally(() => {\n commit(\"setIsAwaitingResponse\", { isLoading: true, index: payload.index });\n });\n })\n },\n unApplyWorker({ commit, state }, data) {\n commit(\"setIsAwaitingResponse\", { isLoading: true, index: data.index });\n const payload = {\n id: data.id,\n assignee_id: data.assignee_id,\n created_by_id: data.created_by_id,\n status: \"Denied\",\n shift_slots: [data.pivot.shift_slot_id]\n }\n ApiService\n .update(\n `/api/v2/applications`, data.id , payload\n )\n .then((res) => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Unapplied for shift`,\n showConfirmButton: false,\n timer: 800\n })\n state.data.find(shift => shift.id == data.shiftId).my_shift_slot.applications[0].status.name = \"Denied\";\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n commit(\"setIsAwaitingResponse\", { isLoading: false, index: data.index });\n });\n },\n applyForShift({ state, commit, dispatch}, payload) {\n return new Promise((resole, reject) => {\n ApiService.post(\n `/api/v2/applications`, payload\n )\n .then((res) => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Succesfully applied`,\n showConfirmButton: false,\n timer: 800\n });\n })\n .catch(error => {\n commit(\"setError\", error);\n reject();\n })\n .finally(() => {\n dispatch('fetchForNewJobsCounter')\n dispatch('fetchShifts', state.parameters).then(() => {\n resole()\n }); \n });\n })\n },\n fetchEstimatedEarnings({ commit }, data) {\n return new Promise((resolve, reject) => {\n commit(\"setIsLoadingEstimates\", true);\n ApiService.get(\"api/v2\", \"shifts/estimated-earnings?shifts=\" + data)\n .then((response) => {\n commit(\"setEstimatedEarnings\", response.data.data);\n commit(\"setIsLoadingEstimates\", false);\n resolve();\n })\n .catch((err) => {\n commit(\"setEstimatedEarnings\", {});\n commit(\"setIsLoadingEstimates\", false);\n reject(err);\n });\n });\n },\n setCurrentPage({commit}, pageNumber) {\n commit(\"setCurrentPage\", pageNumber);\n },\n resetPagination({ commit }) {\n commit(\"resetPagination\")\n },\n setSearchString({ commit, dispatch, state }, searchString ) {\n commit(\"searchStringMutation\", searchString),\n dispatch(\"fetchShifts\", {id: state.userID, tab: state.activeTab});\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n}\nconst mutations = {\n setLoading(state, value) {\n state.loading = value;\n },\n setEstimatedEarnings(state, payload) {\n state.estimatedEarning = payload;\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n },\n setData(state, value) {\n state.data = value;\n },\n setIsLoadingEstimates(state, value) {\n state.isLoadingEstimates = value;\n },\n setParameters(state, value) {\n state.parameters = value;\n },\n setEror(state, value) {\n state.error = value;\n },\n setQueryState(state, value) {\n state.userID = value.id;\n state.activeTab = value.tab;\n },\n setPagination(state, value) {\n state.pagination.lastPage = value;\n },\n setCurrentPage(state, value) {\n state.pagination.currentPage = value;\n },\n resetPagination(state) {\n state.pagination.currentPage = 1;\n state.pagination.lastPage = 1;\n },\n searchStringMutation(state, value) {\n console.log(value)\n state.searchString = value;\n },\n setIsAwaitingResponse(state, values) {\n state.isAwaitingResponse.isLoading = values.isLoading;\n const index = state.isAwaitingResponse.indexes.indexOf(values.index);\n if (index > -1){\n state.isAwaitingResponse.indexes.splice(index, 1);\n } else {\n state.isAwaitingResponse.indexes.push(values.index);\n }\n },\n setNewJobsCounter(state, value) {\n if(value < 20) state.newJobs = value\n else state.newJobs = \"20+\"\n },\n setError(state, value) {\n state.error = value;\n },\n setBranches(state, value) {\n state.branches = value;\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import { defineAbility } from '@casl/ability';\n\nexport default defineAbility((can, cannot) => {\n can('manage', 'all');\n cannot('delete', 'User');\n});","/* eslint-disable @typescript-eslint/camelcase */\n/* eslint-disable prettier/prettier */\nimport ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\nimport store from \"@/store/index.ts\";\nimport moment from \"moment\";\nimport * as lodash from \"lodash\";\nimport ability from \"@/config/ability\";\n\nfunction initialState() {\n return {\n blueprint: {\n dateStart: null,\n dateEnd: null,\n duration: null,\n startHour: null,\n finishHour: null,\n skills: {}\n },\n selectedCompany: null,\n skills: [],\n isFetchingFreqSkills: false,\n JobData: {\n name: null,\n company_id: null,\n country_id: null,\n city: null,\n COLid: null,\n dresscode: null,\n venue_id: null,\n entrance: null,\n invoice: null,\n address: null,\n details: null,\n book_from_branches: [],\n zip: null,\n province: null,\n project_manager_id: null,\n reason: \"\",\n bookerId: null,\n },\n templatesPagination: {\n currentPage: 1,\n lastPage: 1\n },\n hasTemplates: false,\n isSavingTemplate: false,\n jobTemplates: [],\n shifts: [],\n details: [],\n loading: false,\n bookerSearchResults: [],\n };\n}\n\nconst getters = {\n blueprint: (state) => state.blueprint,\n shifts: (state) => state.shifts,\n JobData: (state) => state.JobData,\n loading: (state) => state.loading,\n jobTemplates: (state) => state.jobTemplates,\n isSavingTemplate: (state) => state.isSavingTemplate,\n isLoadingTemplates: (state) => state.isLoadingTemplates,\n getPagination: (state) => state.templatesPagination,\n skills: (state) => state.skills,\n isFetchingFreqSkills: (state) => state.isFetchingFreqSkills,\n hasTemplates: state => state.hasTemplates,\n bookerSearchResults: state => state.bookerSearchResults,\n selectedCompany: state => state.selectedCompany\n};\n\nconst actions = {\n addShift({ commit }, shift) {\n commit('addShift', shift);\n },\n changePage({ commit, dispatch }, value) {\n commit(\"setCurrentPage\", value);\n dispatch(\"fetchTemplates\");\n },\n setDetails({ commit }, values) {\n commit(\"handleDetailsSet\", values)\n },\n resetShifts({ commit }) {\n commit('resetShifts')\n },\n setShiftSkills({ commit }, payload) {\n commit('setShiftSkills', payload)\n },\n setJobData({commit}, data) {\n commit('setJobData', data)\n },\n fetchTemplates({ commit, state }) {\n if(state.selectedCompany == null) {\n commit(\"resetTemplates\");\n return;\n }\n commit(\"isLoadingTemplates\", true);\n commit(\"resetTemplates\");\n ApiService.get('api/v2', `job-templates?${state.selectedCompany ? `filter[company_id]=${state.selectedCompany}&` : ''}perPage=5&page=${state.templatesPagination.currentPage}`)\n .then((response) => {\n commit(\"setTemplates\", response.data.data);\n commit(\"setHasTemplates\", response.data.data.length > 0 ? true : false);\n commit(\"setPagination\", response.data.meta)\n commit(\"isLoadingTemplates\", false)\n })\n },\n setBlueprint({ commit }, data) {\n commit(\"setBlueprint\", data);\n },\n searchBookers({ commit }, queryString) {\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2\", \"search-bookers?queryString=\" + queryString)\n .then((response) => {\n commit(\"setSearchResults\", response.data.data);\n resolve();\n })\n .catch((err) => {\n reject(err);\n });\n });\n },\n setSelectedCompany({commit}, payload) {\n commit('setSelectedCompany', payload);\n },\n createJob({ state, commit }) {\n return new Promise((resolve, reject) => {\n commit('setLoading', true);\n const shifts = [];\n for(let i = 0; i < state.shifts.length ; i++) {\n shifts.push ({\n startDate: state.shifts[i].startDate,\n start: `${state.shifts[i].startDate} ${state.shifts[i].startHour}`,\n endHour: state.shifts[i].endHour,\n slots: state.shifts[i].skills,\n ...state.details.find(a => a.id == state.shifts[i].id).details\n })\n }\n if(shifts.length === 0) {\n reject({\n response: {\n data: {\n type: \"shifts_invalid\",\n message: \"Please enter valid shifts.\"\n }\n }\n });\n commit('setLoading', false);\n }\n const payload = {\n name: state.JobData.name,\n company_id: state.JobData.company,\n country_id: state.JobData.country,\n city: state.JobData.city,\n is_past: false,\n status: \"Published\", //we will make that change depending on user choice just for publish functionality for now\n venue_id: state.JobData.venueId,\n entrance: state.JobData.entrance,\n invoice_reference: state.JobData.invoice,\n contact_on_location_id: state.JobData.COLid,\n address: state.JobData.address,\n details: state.JobData.details,\n book_from_branches: state.JobData.branches,\n zip: state.JobData.postal,\n province: state.JobData.area,\n project_manager_id: state.JobData.projectManager,\n reason: \"\",\n dresscode_id: state.JobData.dresscode,\n start: state.blueprint.dateStart ? state.blueprint.dateStart : shifts[0].startDate,\n end: state.blueprint.dateEnd,\n shifts: shifts\n }\n if(ability.can('can_select_job_booker', 'all')) {\n payload['booker_id'] = state.JobData.bookerId ? state.JobData.bookerId : null;\n }\n ApiService.post(`api/v2/jobs`, payload)\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Job created successfully!`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(response => {\n reject(response);\n commit('setLoading', false);\n })\n .finally(() => {\n commit('setLoading', false);\n resolve();\n });\n })\n },\n deleteShift({ commit }, id) {\n commit(\"deleteShift\", id);\n },\n saveTemplate({ commit, state }, payload) {\n const shifts = []\n state.shifts.forEach(el => {\n shifts.push({\n ...el,\n ...state.details.find(a => a.id == el.id).details\n })\n })\n const toJSON = () => {\n return JSON.stringify({\n JobData: payload.data,\n shifts: shifts\n });\n }\n const data = {\n created_by_id: store.getters.currentUser.id,\n company_id: payload.data.company !== \"\" ? payload.data.company : null,\n data: toJSON(),\n name: payload.name\n }\n commit(\"setIsSavingTemplate\", true)\n return new Promise((resolve, reject) => {\n ApiService.post('api/v2/job-templates', data)\n .then(() => {\n resolve();\n }).finally(() => {\n commit(\"setIsSavingTemplate\", false)\n reject();\n });\n })\n },\n setShiftEndHour({ commit }, data) {\n commit(\"changeEndHour\", data);\n },\n deleteSkillFromShift({commit}, payload) {\n commit(\"removeSkill\", payload);\n },\n populateShifts({ commit }, payload) {\n commit(\"populateShiftsFromTemplate\", payload)\n },\n addSingleShift({ commit }, payload) {\n commit(\"addSingleShift\", payload);\n },\n deleteBlueprintSkill({ commit }, payload) {\n commit(\"deleteBlueprintSkill\", payload);\n },\n removeZeroSlotSkill({ commit }, data) {\n commit(\"removeZeroSlotSkill\", data);\n },\n fetchSkills({ commit, dispatch }) {\n return new Promise((resolve, reject) => {\n dispatch(\"fetchFrequentlyUsedSkills\");\n ApiService.get(`/api/v2`, `skills?sort=order&order=asc&filter[parent_id]=null`)\n .then(response => {\n commit('setSkills', response.data.data);\n resolve()\n })\n .catch(() => {\n reject()\n })\n });\n },\n changeShiftSkillCount({ commit }, data) {\n commit(\"mutateShiftSkillCount\", data);\n },\n fetchFrequentlyUsedSkills({ commit, state }, id) {\n return new Promise((resolve, reject) => {\n commit(\"setIsFetchingFreqSkills\", true);\n ApiService.get(`/api/v2`, `frequentSkills${id ? '?company_id=' + id : ''}`).then(response => {\n commit(\"setIsFetchingFreqSkills\", false);\n if(response.data.preferredSkills) {\n commit('addFrequentlyUsedSkills', { data: response.data.preferredSkills , type: \"Client preferred skills\"});\n } else {\n commit('addFrequentlyUsedSkills', { data: response.data.frequentSkills, type: \"Frequently used skills\"});\n }\n resolve();\n }).catch(() => {\n commit(\"setIsFetchingFreqSkills\", false);\n reject();\n });\n });\n },\n clearPreviousFrequentSkills({ commit }) {\n commit('clearPreviousFrequentSkills');\n },\n setSearchResults({ commit }, payload) {\n commit(\"setSearchResults\", payload);\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n};\n\nconst mutations = {\n addShift(state, shift) {\n state.shifts.push(lodash.cloneDeep(shift));\n },\n setSkills(state, data) {\n state.skills = data;\n },\n clearPreviousFrequentSkills(state) {\n if(state.skills[0] && state.skills[0].id == \"freq_1\") {\n state.skills.shift();\n }\n },\n setSelectedCompany(state, payload) {\n state.selectedCompany = payload;\n },\n setIsFetchingFreqSkills(state, status) {\n state.isFetchingFreqSkills = status;\n },\n addFrequentlyUsedSkills(state, data) {\n if(data.data.length > 0 && (state.skills[0] && state.skills[0].id != \"freq_1\")){\n state.skills.unshift({\n name: data.type,\n id: \"freq_1\",\n children: data.data\n })\n }\n },\n setTemplates(state, payload) {\n for(let i = 0; i < payload.length; i++) {\n state.jobTemplates.push({\n created_by_id: payload[i].created_by_id,\n id: payload[i].id,\n JobData: JSON.parse(payload[i].json_data).JobData,\n shifts: JSON.parse(payload[i].json_data).shifts,\n company_id: payload[i].company_id,\n created_by: payload[i].created_by,\n company_name: payload[i].company_name,\n name: payload[i].name\n })\n }\n },\n populateShiftsFromTemplate(state, payload) {\n if(payload.shift.length > 0){\n state.shifts = [];\n const firstShiftDate = moment(payload.shift[0].startDate, \"DD/MM/YYYY\")\n const difference = moment(payload.userSelectedDate, \"DD/MM/YYYY\").diff(firstShiftDate , \"days\");\n for(let i = 0; i < payload.shift.length ; i++) {\n const shift = Object.assign({} ,payload.shift[i]);\n shift.details = {\n pm: shift.pm ? shift.pm : \"\",\n col: shift.col ? shift.col : \"\",\n dresscodeID: shift.dresscodeID ? shift.dresscodeID : \"\",\n dresscodeNotes: shift.dresscodeNotes ? shift.dresscodeNotes : \"\",\n workerNotes: shift.workerNotes ? shift.workerNotes : \"\",\n description: shift.description ? shift.description : \"\"\n };\n shift.startDate = moment(shift.startDate , \"DD/MM/YYYY\").add(difference, \"days\").format(\"DD/MM/YYYY\")\n shift.startLabel = moment(shift.startLabel , \"ddd DD/MM/YYYY\").add(difference, \"days\").format(\"ddd DD/MM/YYYY\")\n state.shifts.push(shift);\n }\n }\n },\n resetTemplates(state) {\n state.jobTemplates = [];\n },\n addSingleShift(state, payload) {\n const shift = {\n id: state.shifts.length + 1,\n startHour: payload.startHour,\n endHour: payload.endHour,\n startDate : payload.dateStart,\n skills : payload.skills,\n status: true,\n startLabel: moment(payload.dateStart, \"DD/MM/YYYY\").format(\"ddd DD/MM/YYYY\")\n };\n state.shifts.push(lodash.cloneDeep(shift));\n state.shifts.sort((a, b) => {\n return moment(a.startDate, \"DD/MM/YYYY\").valueOf() - moment(b.startDate, \"DD/MM/YYYY\").valueOf()\n })\n },\n changeEndHour(state, data) {\n const startHour = state.shifts.find(shift => shift.id == data.shiftID).startHour;\n const minutes = moment.duration(data.duration, 'kk:mm').asMinutes()\n state.shifts.find(shift => shift.id == data.shiftID).endHour = moment(startHour, \"kk:mm\").add(minutes, 'minutes').format(\"kk:mm\");\n },\n setBlueprint(state, value) {\n state.blueprint = lodash.cloneDeep(value);\n\n },\n removeSkill(state, payload) {\n const shift = state.shifts.find(shift => shift.id == payload.id);\n const skills = Object.assign({}, shift.skills);\n delete skills[payload.skill.id];\n shift.skills = skills;\n },\n deleteBlueprintSkill(state, payload) {\n delete state.blueprint.skills[payload.id];\n },\n setPagination(state, value) {\n state.templatesPagination.currentPage = value.current_page;\n state.templatesPagination.lastPage = value.last_page;\n },\n resetShifts(state) {\n state.shifts = [];\n },\n setSearchResults(state, payload) {\n state.bookerSearchResults = payload;\n },\n deleteShift(state, id) {\n state.shifts = state.shifts.filter(shift => shift.id != id);\n },\n mutateShiftSkillCount(state, data) {\n state.shifts[data.shiftID].skills[data.skillID].qty = data.qty;\n },\n isLoadingTemplates(state, value) {\n state.isLoadingTemplates = value;\n },\n setShiftSkills(state, payload) {\n state.shifts[payload.shiftKey].skills = Object.assign({}, payload.skills);\n },\n setJobData(state, payload) {\n state.JobData = payload;\n },\n removeZeroSlotSkill(state, payload) {\n delete state.shifts[payload.id].skills[payload.skillID];\n },\n handleDetailsSet(state, value) {\n state.details.push(value);\n },\n setCurrentPage(state, value) {\n state.templatesPagination.currentPage = value;\n },\n setLoading(state, payload) {\n state.loading = payload;\n },\n setIsSavingTemplate(state, value) {\n state.isSavingTemplate = value;\n },\n setHasTemplates(state, value) {\n state.hasTemplates = value\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n }\n};\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations,\n};\n","/* eslint-disable */\nimport Swal from \"sweetalert2\";\nimport ApiService from \"../../core/services/ApiService\";\n\nfunction initialState() {\n return {\n shifts: [],\n loading: false\n };\n}\n\nconst getters = {\n shifts: state => state.shifts,\n loading: state => state.loading\n};\n\nconst actions = {\n fetchShifts({ commit , state}, parameters) {\n commit(\"setLoading\", true);\n ApiService\n .get(\n `/api/v2/calendar`, 'shifts')\n .then(response => {\n console.log(response)\n commit(\"setShifts\", response.data.data);\n })\n .catch(error => {\n commit(\"setError\", error);\n }).finally(() => {\n commit(\"setLoading\", false);\n });\n },\n setShifts({ commit, dispatch }, value) {\n commit(\"setShifts\", value);\n },\n};\n\nconst mutations = {\n setShifts(state, items) {\n state.shifts = items;\n },\n setLoading(state, value) {\n state.loading = value\n }\n};\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n};\n","import ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n isAwaitingResponse: false,\n data: [],\n loading: false,\n userID: \"\"\n }\n}\n\nconst getters = {\n isAwaitingResponse: state => state.isAwaitingResponse,\n data: state => state.data,\n loading: state => state.loading\n}\n\nconst actions = {\n fetchSkills({commit}, userId) {\n commit('setUserID', userId)\n return new Promise((resolve, reject) => {\n ApiService.get('api/v2' , `users/showSkills/${userId}`).then(\n response => {\n commit('setData' , response.data.data)\n }).catch(error => {\n commit('setError', error)\n reject();\n }).finally(() => {\n resolve();\n })})\n },\n setLoading({ commit }, value) {\n commit(\"setLoading\", value)\n },\n removeSkill({state, dispatch, commit }, payload) {\n commit(\"setAwaitResponse\", true)\n return new Promise((resolve, reject) => {\n ApiService\n .post(\n \"/api/v2/users/skills\" , payload\n )\n .then(() => {\n commit(\"setAwaitResponse\", false)\n dispatch(\"fetchSkills\", state.userID).then(() => { \n resolve(); \n Swal.fire({\n toast: true,\n position: 'top-end',\n icon: 'success',\n title: `Skill deleted`,\n showConfirmButton: false,\n timer: 3000\n })\n })\n })\n .catch(error => {\n commit(\"setError\", error.response.data.message);\n reject();\n })});\n }, \n addNewSkill({ state, commit, dispatch }, values) {\n const payload = {\n skills: values.skills,\n user_id: values.user_id\n };\n return new Promise((resolve, reject) => {\n ApiService.post(\n \"/api/v2/users/skills\" , payload\n )\n .then(() => {\n const payloadXPEndpoint = {\n user_id: values.user_id,\n experience: values.experience,\n skill_id: values.newSkillID,\n level_id: 1\n }\n ApiService\n .post(\n \"/api/v2/users/experience\" , payloadXPEndpoint\n )\n .then(() => {\n //...\n })\n .catch(error => {\n commit(\"setError\", error.response.data.message);\n })\n .finally(() => {\n //...\n });\n })\n .catch(error => {\n commit(\"setError\", error.response.data.message);\n reject();\n })\n .then(() => {\n commit(\"setAwaitResponse\", false)\n dispatch(\"fetchSkills\", state.userID).then(() => {\n resolve();\n Swal.fire({\n toast: true,\n position: 'top-end',\n icon: 'success',\n title: `Skill added succesfully`,\n showConfirmButton: false,\n timer: 3000\n })\n })\n })});\n \n },\n editSkill({ state, commit, dispatch }, values) {\n const payload = { \n experience: values.data.experience,\n user_id: values.userId,\n level_id: values.data.levelId,\n skill_id: values.pivotData.skill_id\n }\n ApiService\n .post(\n \"/api/v2/users/experience\" , payload\n )\n .then(() => {\n //...\n })\n .catch(error => {\n commit(\"setError\", error.response.data.message);\n })\n .finally(() => {\n dispatch(\"fetchSkills\", state.userID)\n });\n },\n resetState({ commit }) {\n commit(\"resetState\")\n }\n}\nconst mutations = {\n setError(state, value) {\n state.error = value\n },\n setData(state, value) {\n state.data = value;\n },\n setAwaitResponse(state, value) {\n state.isAwaitingResponse = value;\n },\n setLoading(state, value) {\n state.loading = value\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n },\n setUserID(state, value) {\n state.userID = value;\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n\n","/* eslint-disable @typescript-eslint/camelcase */\n/* eslint-disable prettier/prettier */\nimport ApiService from \"../../../core/services/ApiService\";\nimport moment from \"moment\";\nimport router from '@/router/index.ts'\nimport Swal from \"sweetalert2\"\nimport {DateTimeFormat} from \"@/components/jobs/ReportHours/helpers\";\nimport ability from \"@/config/ability\";\n\nfunction initialState() {\n return {\n existingShifts: [],\n item: {},\n shifts: [],\n details: [],\n loading: false,\n updating: false\n };\n}\n\nconst getters = {\n job: (state) => state.item,\n existingShifts: (state) => state.existingShifts,\n loading: (state) => state.loading,\n updating: (state) => state.updating\n};\n\nconst actions = {\n fetchJob({ commit, dispatch }, id) {\n return new Promise((resolve, reject) => {\n commit('setLoading', true);\n ApiService.get(`/api/v2/jobs/edit`, id).then((response) => {\n commit('setItem', response.data.data)\n commit('setLoading', false);\n resolve()\n }).catch((error) => {\n reject(error)\n });\n })\n },\n deleteExistingSkill({ commit }, data) {\n commit(\"removeExistingSlot\", data);\n },\n generateExistingShifts({commit, state}) {\n for(let i = 0; i < state.item.shifts.length ; i++) {\n const shiftSlots = {};\n for(let x = 0; x < state.item.shifts[i].shift_slots.length; x++) {\n shiftSlots[state.item.shifts[i].shift_slots[x].skill.id] = { ...state.item.shifts[i].shift_slots[x].skill, qty: state.item.shifts[i].shift_slots[x].positions, shiftSlotID: state.item.shifts[i].shift_slots[x].id, isDeleted: false}\n }\n commit('generateExistingShifts',{\n id: state.item.shifts[i].id,\n startHour: state.item.shifts[i].start.substring(11),\n endHour: state.item.shifts[i].end.substring(11),\n startLabel: state.item.shifts[i].label.substring(16),\n startDate: state.item.shifts[i].label.substring(0,14),\n duration: state.item.shifts[i].duration,\n status: true,\n shiftSlots: shiftSlots,\n isDeleted: false,\n isEdited: false,\n details: {\n project_manager_id: state.item.shifts[i].project_manager_id ? state.item.shifts[i].project_manager_id : '',\n contact_on_location_id: state.item.shifts[i].contact_on_location_id ? state.item.shifts[i].contact_on_location_id : '' , \n dresscode_id:state.item.shifts[i].dresscode_id ? state.item.shifts[i].dresscode_id : '',\n dresscode_notes: state.item.shifts[i].dresscode_notes ? state.item.shifts[i].dresscode_notes : '',\n notes_for_workers: state.item.shifts[i].notes_for_workers ? state.item.shifts[i].notes_for_workers : '',\n description: state.item.shifts[i].description ? state.item.shifts[i].description : '',\n },\n shiftTimes: {\n start: state.item.shifts[i].start,\n end: state.item.shifts[i].end\n }\n });\n }\n state.existingShifts.sort((a, b) => {\n return moment(a.startDate, \"qqq DD/MM/YYYY\").unix - moment(b.startDate, \"qqq DD/MM/YYYY\").unix\n })\n },\n changeDate({ commit }, data) {\n commit(\"changeShiftDate\", data);\n },\n addNewShift({commit}, data) {\n commit(\"addShiftToExisting\", data)\n },\n flagForDelete({ commit }, shiftID) {\n commit(\"flagForDelete\", shiftID);\n },\n removeDeletionFlag({ commit }, shiftID) {\n commit(\"removeDeleteFlag\", shiftID);\n },\n update({ commit, state}, data) {\n const payload = {\n name: data.name,\n city: data.city,\n address: data.address,\n project_manager_id: data.projectManager ? data.projectManager : \"\",\n province: data.area,\n book_from_branches: data.branches,\n company_id: data.company,\n country_id: data.country,\n details: data.details,\n dresscode_id: data.dresscode ? data.dresscode : null,\n entrance: data.entrance,\n contact_on_location_id: data.colID,\n invoice_reference: data.invoice,\n zip: data.postal,\n venue_id: data.venueId,\n shifts: state.existingShifts\n }\n if(ability.can('can_select_job_booker', 'all')) {\n payload['booker_id'] = data.bookerId ? data.bookerId : null;\n }\n commit(\"setUpdating\", true)\n ApiService.put(`api/v2/jobs/${state.item.id}`, payload)\n .then().catch(() => {\n //handle error\n }).finally(() => {\n commit(\"setUpdating\", false)\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Job successfully updated!`,\n showConfirmButton: false,\n timer: 700\n }).then(() => {\n router.push(`/jobs/${state.item.id}/shifts`);\n });\n })\n },\n changeDetails({ commit }, payload) {\n commit(\"changeDetails\", payload);\n },\n setShiftSkills({commit}, payload) {\n commit(\"changeShiftSkills\", payload)\n },\n flagForEdited({ commit }, payload) {\n commit(\"flagForEdit\", payload);\n },\n changeStart({ commit }, id) {\n commit(\"changeStart\", id);\n },\n changeEnd({ commit }, id) {\n commit(\"changeEnd\", id);\n },\n addNewShiftSlot({ commit }, payload) {\n commit(\"addNewShiftSlot\", payload);\n },\n changeShiftSlotPositions({ commit }, payload) {\n commit(\"changeExistingShiftSlotQty\", payload);\n },\n resetState({ commit }) {\n commit(\"resetState\");\n },\n changeDuration({commit}, data) {\n commit(\"changeDuration\", data);\n }\n};\n\nconst mutations = {\n setItem(state, value) {\n state.item = value;\n },\n removeExistingSlot(state, payload) {\n state.existingShifts.find(shift => shift.id == payload.shiftID).shiftSlots[payload.skill].isDeleted = true;\n state.existingShifts.find(shift => shift.id == payload.shiftID).isEdited = true;\n },\n changeDuration(state, data) {\n const startHour = state.existingShifts.find(shift => shift.id == data.shiftID).startHour;\n console.log(state.existingShifts.find(shift => shift.id == data.shiftID))\n const minutes = moment.duration(data.duration, 'kk:mm').asMinutes()\n const shift = state.existingShifts.find(shift => shift.id == data.shiftID);\n shift.endHour = moment(startHour, \"kk:mm\").add(minutes, 'minutes').format(\"kk:mm\");\n shift.startLabel = `${shift.startHour} - ${shift.endHour}`;\n shift.duration = minutes/60;\n shift.shiftTimes.end = `${moment(shift.startDate, \"qqq DD/MM/YYYY\").format(\"DD/MM/YYYY\")} ${shift.endHour}`\n if(moment(shift.shiftTimes.end , \"DD/MM/YYYY kk:mm\").valueOf() < moment(shift.shiftTimes.start , \"DD/MM/YYYY kk:mm\").valueOf()) {\n shift.shiftTimes.end = moment(shift.shiftTimes.end, \"DD/MM/YYYY kk:mm\").add(1, \"days\").format(\"DD/MM/YYYY kk:mm\");\n }\n shift.isEdited = true;\n },\n changeShiftDate(state, data) {\n const shift = state.existingShifts.find(shift => shift.id == data.id);\n const temp = {\n start : `${data.data} ${shift.startHour}`,\n end: `${data.data} ${shift.endHour}`\n }\n shift.shiftTimes = temp;\n },\n setUpdating(state, value) {\n state.updating = value;\n },\n setLoading(state, payload) {\n state.loading = payload;\n },\n generateExistingShifts(state, value) {\n state.existingShifts.push(value);\n },\n addShiftToExisting(state, value) {\n const shift = {\n id: `new_${state.existingShifts.length}`,\n startHour: value.startHour,\n endHour: value.endHour,\n shiftSlots: value.skills,\n startLabel: `${value.startHour} - ${value.endHour}`,\n startDate: moment(value.dateStart, \"DD/MM/YYYY\").format(\"ddd DD/MM/YYYY\"),\n dateStart: value.dateStart,\n status: true,\n details: {}\n }\n state.existingShifts.push(shift)\n state.existingShifts.sort((a, b) => {\n return moment(a.startDate, \"qqq DD/MM/YYYY\").valueOf() - moment(b.startDate, \"qqq DD/MM/YYYY\").valueOf()\n })\n },\n addNewShiftSlot(state, payload) {\n const newSlots = Object.keys(payload.skill);\n const shiftSlotsKeys = Object.keys(state.existingShifts.find(shift => shift.id == payload.id).shiftSlots);\n for(let i = 0; i < newSlots.length; i++) {\n if(shiftSlotsKeys.includes(newSlots[i])) {\n state.existingShifts.find(shift => shift.id == payload.id).shiftSlots[newSlots[i]].qty = parseInt(payload.skill[newSlots[i]].qty)\n } else {\n state.existingShifts.find(shift => shift.id == payload.id).shiftSlots[payload.skill[newSlots[i]].id] = payload.skill[newSlots[i]]\n }\n }\n state.existingShifts.find(shift => shift.id == payload.id).isEdited = true;\n },\n changeExistingShiftSlotQty(state, payload) {\n state.existingShifts.find(shift => shift.id == payload.shiftID).shiftSlots[payload.skillID].qty = payload.qty;\n state.existingShifts.find(shift => shift.id == payload.shiftID).isEdited = true;\n },\n flagForDelete(state, id) {\n state.existingShifts.find(shift => shift.id == id).isDeleted = true;\n },\n flagForEdit(state, id) {\n state.existingShifts.find(shift => shift.id == id).isEdited = true;\n },\n removeDeleteFlag(state, id) {\n state.existingShifts.find(shift => shift.id == id).isDeleted = false;\n },\n changeDetails(state, payload) {\n state.existingShifts.find(shift => shift.id == payload.shiftID).details = payload.details;\n state.existingShifts.find(shift => shift.id == payload.shiftID).isEdited = true;\n },\n changeStart(state, id) {\n state.existingShifts.find(shift => shift.id == id).shiftTimes.start = \n `${state.existingShifts.find(shift => shift.id == id).shiftTimes.start.substring(0, 10)} ${state.existingShifts.find(shift => shift.id == id).startHour}`\n\n state.existingShifts.find(shift => shift.id == id).isEdited = true;\n },\n changeEnd(state, id) {\n state.existingShifts.find(shift => shift.id == id).shiftTimes.end = \n `${state.existingShifts.find(shift => shift.id == id).shiftTimes.start.substring(0, 10)} ${state.existingShifts.find(shift => shift.id == id).endHour}`\n const shiftTimes = state.existingShifts.find(shift => shift.id == id).shiftTimes\n if(moment(shiftTimes.end, DateTimeFormat).valueOf() < moment(shiftTimes.start, DateTimeFormat).valueOf()) {\n const endDate = moment(state.existingShifts.find(shift => shift.id == id).shiftTimes.end, DateTimeFormat).add(1, 'days').format(DateTimeFormat);\n state.existingShifts.find(shift => shift.id == id).shiftTimes.end = endDate;\n } else {\n state.existingShifts.find(shift => shift.id == id).shiftTimes.end = \n `${state.item.shifts.find(shift => shift.id == id).start.substring(0, 10)} ${state.existingShifts.find(shift => shift.id == id).endHour}`;\n }\n state.existingShifts.find(shift => shift.id == id).isEdited = true;\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n }\n};\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations,\n};\n","/* eslint-disable */\nimport ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\n\nfunction initialState() {\n return {\n data: [],\n loading: false,\n pagination: {\n currentPage: 1,\n lastPage: 1\n },\n searchByClient: \"\",\n searchByName: \"\"\n };\n}\n\nconst getters = {\n getData: state => state.data,\n getPagination: state => state.pagination,\n loading: state => state.loading\n}\n\nconst actions = {\n fetchData({ commit, state }, params = {}) {\n commit(\"setLoading\", true);\n commit(\"resetData\");\n ApiService.get('api/v2',\n `job-templates?perPage=8&page=${state.pagination.currentPage}${state.searchByClient !== \"\" ? `&filter[company]=${state.searchByClient}` : ''}${state.searchByName !== \"\" ? `&filter[name]=${state.searchByName}` : ''}`)\n .then((response) => {\n commit(\"setData\", response.data.data);\n commit(\"setPagination\", response.data.meta)\n })\n .catch((error) => {\n console.log(error);\n })\n .finally(() => {\n commit(\"setLoading\", false)\n })\n },\n resetState({ commit }) {\n commit(\"resetState\");\n },\n searchByClient({ commit, dispatch }, ID) {\n commit(\"setClientID\", ID);\n dispatch(\"fetchData\");\n },\n searchByName({ commit, dispatch }, data) {\n commit(\"setSearchByName\", data);\n dispatch(\"fetchData\");\n },\n changeCurrentPage({ commit, dispatch }, page) {\n commit(\"setCurrentPage\", page);\n dispatch(\"fetchData\");\n },\n destroyData({commit, dispatch}, id) {\n commit(\"setLoading\", true);\n ApiService\n .delete(\n \"/api/v2/job-templates/\" + id\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Record deleted`,\n showConfirmButton: false,\n timer: 1200\n })\n })\n .catch(error => {\n Swal.fire({\n position: 'top-end',\n icon: 'error',\n title: error,\n showConfirmButton: false,\n timer: 1200\n })\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n }\n};\n\nconst mutations = {\n setData(state, payload) {\n for(let i = 0; i < payload.length; i++) {\n state.data.push({\n created_by_id: payload[i].created_by_id,\n id: payload[i].id,\n JobData: JSON.parse(payload[i].json_data),\n company_id: payload[i].company_id,\n created_by: payload[i].created_by,\n company_name: payload[i].company_name,\n name: payload[i].name\n })\n }\n },\n setLoading(state, loading) {\n state.loading = loading;\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n },\n setPagination(state, value) {\n state.pagination.currentPage = value.current_page;\n state.pagination.lastPage = value.last_page;\n },\n setCurrentPage(state, value) {\n state.pagination.currentPage = value;\n },\n resetData(state) {\n state.data = [];\n },\n setClientID(state,value) {\n state.searchByClient = value;\n },\n setSearchByName(state, value) {\n state.searchByName = value;\n }\n};\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n};\n","/* eslint-disable @typescript-eslint/camelcase */\n/* eslint-disable prettier/prettier */\nimport ApiService from \"../../../core/services/ApiService\";\nimport router from '@/router/index.ts'\nimport Swal from \"sweetalert2\";\n\nfunction initialState() {\n return {\n template: null,\n loading: false,\n shifts: []\n };\n};\n\nconst getters = {\n getTemplate: state => state.template,\n loading: state => state.loading,\n templateShifts: state => state.shifts\n};\n\nconst actions = {\n fetchSingle({ commit }, id) {\n commit(\"setLoading\", true);\n\n ApiService.get(\"api/v2\", `job-templates/${id}`)\n .then((response) => {\n commit(\"setLoading\", false);\n commit(\"setData\", response.data.data);\n commit(\"setShifts\", response.data.data);\n })\n .catch((error) => {\n console.log(error)\n })\n },\n update({ commit, state }, payload) {\n const data = {\n created_by_id: state.template.created_by_id,\n company_id: payload.data.company,\n data: JSON.stringify({JobData: payload.data, shifts: state.shifts}),\n name: payload.name\n } \n commit(\"setLoading\", true);\n ApiService.update(\"/api/v2/job-templates\", state.template.id, data)\n .catch((error) => {\n Swal.fire({\n position: 'top-end',\n icon: 'error',\n title: error,\n showConfirmButton: false,\n timer: 1000\n });\n commit(\"setLoading\", false);\n })\n .finally(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Job template edited successfully`,\n showConfirmButton: false,\n timer: 1000\n });\n router.push(\"/jobs/templates\");\n commit(\"setLoading\", false);\n })\n },\n setShiftSkills({ commit, state }, payload) {\n commit(\"addSkillsToShift\", payload);\n },\n addNewShift({ commit }, payload) {\n commit(\"addShiftToExisting\", payload);\n },\n deleteSkillsFromShifts({ commit }, payload) {\n commit(\"removeSkillFromShift\", payload);\n },\n deleteShift({ commit }, shiftID) {\n commit(\"removeShift\", shiftID);\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n};\n\nconst mutations = {\n setLoading(state, value) {\n state.loading = value;\n },\n addShiftToExisting(state, payload) {\n const data = {\n startDate: payload.dateStart,\n startHour: payload.startHour,\n endHour: payload.endHour,\n skills: payload.skills,\n status: true,\n id: state.shifts.length == 0 ? 0 : state.shifts.map(a => a.id).reduce((a, b) => a + b) + 1\n };\n state.shifts.push(data);\n },\n removeShift(state, shiftID) {\n state.shifts.splice(state.shifts.findIndex(shift => shift.id == shiftID), 1)\n for(let i = 0; i < state.shifts.length; i++) {\n state.shifts[i].id--;\n }\n },\n addSkillsToShift(state, payload) {\n console.log(state.shifts, payload)\n state.shifts[payload.shiftKey].skills = payload.skills;\n },\n removeSkillFromShift(state, payload) {\n delete state.shifts.find(shift => shift.id == payload.shiftID).skills[payload.skillID];\n },\n setShifts(state, value) {\n const shifts = JSON.parse(value.json_data).shifts;\n if(shifts.length > 0){ \n let id = 0\n for(let i = 0; i < shifts.length; i++) {\n shifts[i].id = id;\n id++;\n }\n state.shifts = shifts;\n }\n },\n setData(state, value) {\n state.template = value;\n },\n resetState(state) {\n Object.assign(state, initialState());\n }\n};\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n};\n","import ApiService from \"../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\nimport moment from \"moment\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n data: [],\n loading: false,\n branches: [],\n clients: [],\n countryID: \"\",\n showOwn: false,\n userId: null,\n dates: {\n start: moment().startOf('month').format(\"DD/MM/YYYY HH:mm\"),\n end: moment().endOf('month').format(\"DD/MM/YYYY HH:mm\")\n }\n }\n}\n\nconst getters = {\n getData: state => state.data,\n loading: state => state.loading\n}\n\nconst actions = {\n fetchData({commit, state}) {\n state.data = [];\n commit('setLoading', true);\n const countryFilter = `${state.countryID === \"\" ? '' : `&filter[country_id]=${state.countryID}`}`;\n const branchesFilter = `${state.branches.length == 0 ? '' : `&filter[branches]=${state.branches}`}`;\n const clientsFilter = `${state.clients.length == 0 ? '' : `&filter[companies]=${state.clients}`}`;\n const filterOwn = `${state.showOwn ? `&filter[own]=true` : ``}`;\n const userFilter = `${state.userId ? `&userId=${state.userId}` : ``}`;\n\n ApiService.get(\"api/v2\", `calendar-jobs?startDate=${state.dates.start}&endDate=${state.dates.end}${countryFilter}${branchesFilter}${clientsFilter}${filterOwn}${userFilter}`)\n .then((res) =>{\n commit(\"setData\", res.data.data);\n })\n .catch((err) => {\n console.log(err);\n })\n .finally(() => {\n commit(\"setLoading\", false);\n })\n },\n searchUsers({commit}, queryString) {\n return new Promise((resolve, reject) => {\n if(\"string\" !== typeof queryString) {\n reject(\"Badly formed data\");\n }\n ApiService.get('api/v2', `users-calendar-filter?userName=${queryString}`)\n .then(response => {\n resolve(response.data.data);\n })\n .catch(err => {\n reject(err);\n });\n })\n },\n setJobsDates({ commit, dispatch }, payload) {\n commit('setFilterDates', {\n start: moment(payload.start).format(\"DD/MM/YYYY HH:mm\"),\n end: moment(payload.end).format(\"DD/MM/YYYY HH:mm\")\n });\n dispatch(\"fetchData\");\n },\n showOnlyMyJobs({ commit, dispatch }, payload) {\n commit('setOwnFilter', payload);\n dispatch(\"fetchData\");\n },\n setSearchByCountry({ commit, dispatch }, payload) {\n commit(\"setCountryFilter\", payload);\n dispatch(\"fetchData\");\n },\n setSearchByBranch({ commit, dispatch }, payload) {\n commit(\"setBranchesFilter\", payload);\n dispatch(\"fetchData\");\n },\n setSearchByClient({ commit, dispatch }, payload) {\n commit(\"setClientsFilter\", payload);\n dispatch(\"fetchData\");\n },\n setSearchByUser({ commit }, payload) {\n commit(\"setUserSearch\", payload);\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n}\n\nconst mutations = {\n setData(state, value) {\n state.data = [];\n for(let i = 0; i < value.length ; i ++) {\n for(let x = 0; x < value[i].shifts.length; x++) {\n const event = {\n id: value[i].shifts[x].id,\n title: value[i].name,\n start: moment(value[i].shifts[x].start, \"DD/MM/YYYY HH:mm\").format(),\n end: moment(value[i].shifts[x].end, \"DD/MM/YYYY HH:mm\").format(),\n display: \"block\",\n shiftID: value[i].shifts[x].id,\n jobID: value[i].id,\n crew: value[i].shifts[x].crew,\n shift_slots: value[i].shifts[x].shift_slots \n }\n state.data.push(event);\n }\n }\n },\n setUserSearch(state, payload) {\n state.userId = payload;\n },\n setCountryFilter(state, data) {\n state.countryID = data;\n },\n setBranchesFilter(state, data) {\n state.branches = data;\n },\n setClientsFilter(state, data) {\n state.clients = data;\n },\n setFilterDates(state, payload) {\n state.data = [];\n state.dates = payload;\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n },\n setLoading(state, value) {\n state.loading = value;\n },\n setOwnFilter(state, value) {\n state.showOwn = value;\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n data: {},\n all: [],\n loading: false,\n pagination: {\n currentPage: 1,\n lastPage: 1\n },\n userID: \"\"\n };\n};\n\nconst getters = {\n loading: state => state.loading,\n getData: state => state.data,\n getAll: state => state.all,\n getPagination: state => state.pagination\n}\n\nconst actions = {\n fetchData({ commit, state }, id) {\n commit(\"setLoading\", true);\n commit(\"setViewedUser\", id);\n ApiService\n .get(\n \"/api/v2\", `activities/${id}?perPage=15&page=${state.pagination.currentPage}`)\n .then(response => {\n commit(\"setData\", response.data.data);\n commit(\"setPagination\", response.data.meta.last_page)\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n commit(\"setLoading\", false);\n });\n },\n fetchAdmin({ commit }, query) {\n return new Promise((resolve, reject) => {\n ApiService.get('api/v2', `activity-log?perPage=20&page=${query.page}${query.filter ? `&filter[log_name]=${query.filter}` : ''}`)\n .then(response => {\n commit('setAll', response.data);\n })\n .catch(() => {\n reject()\n })\n .finally(() => {\n resolve();\n })\n })\n },\n resetState({ commit }) {\n commit(\"resetState\");\n },\n changePage({ commit, dispatch, state }, pageNumber) {\n commit(\"changePage\", pageNumber);\n dispatch(\"fetchData\", state.userID);\n }\n}\nconst mutations = {\n setLoading(state, value) {\n state.loading = value;\n },\n setAll(state, value) {\n state.all = value;\n },\n changePage(state, value) {\n state.pagination.currentPage = value;\n },\n setPagination(state, value) {\n state.pagination.lastPage = value;\n },\n setViewedUser(state, id) {\n state.userID = id;\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n },\n setData(state, value) {\n state.data = value;\n },\n setEror(state, value) {\n state.error = value;\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n data: [],\n loading: false,\n tableRows: [],\n presets: [],\n clientRates: [],\n isSavingRates: false\n }\n}\n\nconst getters = {\n getData: state => state.data,\n presets: state => state.presets,\n tableRows: state => state.tableRows,\n loading: state => state.loading,\n isSavingRates: state => state.isSavingRates\n}\n\nconst actions = {\n fetchData({ dispatch ,commit}, query) {\n commit('setLoading', true);\n commit(\"clearRatesArray\");\n const clientAndBranch = `${query.company !== \"\" ? `&filter[company_id]=${query.company}` : ''}${query.branch !== \"\" ? `&filter[branch_id]=${query.branch}` : ''}`;\n const skillAndLevel = `${query.skill !== \"\" ? `&filter[parent_skill_id]=${query.skill}` : ''}${query.level !== \"\" ? `&filter[level_id]=${query.level}` : ''}`\n const queryString = `${clientAndBranch}${skillAndLevel}${query.invoice ? `&filter[invoice]=true` : ''}`\n return new Promise((res, rej) => {\n ApiService.get('api/v2' , `rates?${queryString}`\n ).then(\n response => {\n commit('setData' , response.data.data);\n res()\n }).catch(error => {\n commit('setError', error);\n rej(error);\n }).finally(() => {\n commit('setLoading' , false);\n dispatch(\"fetchPresets\", queryString);\n });\n }); \n },\n fetchTableRows({ commit }, id) {\n ApiService.get('api/v2', `skillsForRates/${id}`)\n .then(response => {\n commit('setTableRows' , response.data.data)\n })\n },\n fetchPresets({ commit }, query) {\n ApiService.get('api/v2', `rates/presets?${query}`)\n .then(response => {\n commit('setPresets' , response.data.data)\n })\n },\n clearTableRows({ commit }) {\n commit(\"clearTableRows\");\n },\n buildRatesArray({ commit }, data) {\n commit(\"buildRatesArray\", data);\n },\n ChangeRate({ commit }, data) {\n commit(\"mutateRate\", data);\n },\n save({ commit, state }, data) {\n commit(\"isSavingRates\", true);\n const rates = [];\n state.clientRates.forEach(rate => {\n const temp = {\n ...rate,\n company_id: data.data.company,\n branch_id: data.data.branch,\n night_start: (data.nightHours.start == \"\" ? null : data.nightHours.start),\n night_end: (data.nightHours.end == \"\" ? null : data.nightHours.end)\n }\n rates.push(temp);\n });\n const payload = {\n jsonData: JSON.stringify({\n company_id: data.data.company,\n branch_id: data.data.branch,\n rate_clients: rates\n })\n }\n return new Promise((res, rej) => {\n if(!data.isSavingPreset){\n ApiService.post('api/v2/rates', payload)\n .then(response => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: \"Record updated successfully\",\n showConfirmButton: false,\n timer: 1000\n }).then(() => {\n commit(\"isSavingRates\", false);\n res();\n commit(\"clearRatesArray\")\n }).catch(error => {\n rej(error);\n })\n })\n } else {\n const preset = {\n jsonData: payload.jsonData,\n presetName: data.presetName\n }\n ApiService.post('api/v2/rates/presets', preset)\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: \"Preset saved successfully\",\n showConfirmButton: false,\n timer: 1000\n }).then(() => {\n commit(\"isSavingRates\", false);\n res();\n }).catch(error => {\n rej(error);\n })\n })\n } \n }) \n },\n update({ commit, state }, data) {\n commit(\"isSavingRates\", true);\n const payload = state.data;\n payload[\"currency\"] = data.currency;\n state.clientRates.forEach(rate => {\n const shallow = payload.rate_clients.find(element => element.id == rate.id);\n shallow.weekend_price = rate.weekend_price;\n shallow.standard_price = rate.standard_price;\n shallow.night_price = rate.night_price;\n shallow.night_start = (data.nightHours.start !== \"\" ? data.nightHours.start : null)\n shallow.night_end = (data.nightHours.end !== \"\" ? data.nightHours.end : null);\n shallow.rate_worker = rate.rate_worker;\n })\n const jsondata = {\n jsonData: JSON.stringify(payload)\n }\n return new Promise((res, rej) => {\n ApiService.put('api/v2/rates', jsondata)\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: \"Record updated successfully\",\n showConfirmButton: false,\n timer: 1000\n }).then(() => {\n commit(\"isSavingRates\", false);\n res();\n commit(\"clearRatesArray\")\n }).catch(error => {\n rej(error);\n })\n })\n })\n },\n setDataFromPreset({ commit }, data) {\n commit(\"setDataFromPreset\", data);\n },\n clearRatesArray({ commit }) {\n commit(\"clearRatesArray\");\n },\n handleWorkerRate({ commit }, data) {\n commit(\"addOrChangeWorkerRate\", data)\n }\n}\nconst mutations = {\n setError(state, value) {\n state.error = value\n },\n setPresets(state, data) {\n state.presets = data;\n },\n clearRatesArray(state) {\n state.clientRates = [];\n },\n setDataFromPreset(state, payload) {\n payload.id = state.data.id;\n state.data = payload;\n },\n buildRatesArray(state, data) {\n state.clientRates.push(data);\n },\n addOrChangeWorkerRate(state, data) {\n state.clientRates.find(rate => rate.skill_id == data.skillID).rate_worker = data.rate;\n },\n mutateRate(state, data) {\n const rate = state.clientRates.find(rate => rate.skill_id == data.id);\n rate.weekend_price = data.rates.weekend;\n rate.standard_price = data.rates.standart;\n rate.night_price = data.rates.nightBonus;\n },\n setData(state, value) {\n state.data = value[0];\n },\n clearTableRows(state) {\n state.tableRows = [];\n },\n setTableRows(state, value) {\n state.tableRows = value;\n },\n setLoading(state, value) {\n state.loading = value\n },\n isSavingRates(state, status) {\n state.isSavingRates = status;\n },\n resetState(state) {\n state = Object.assign(state, initialState())\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\nimport store from \"@/store/index.ts\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n nextShift: {},\n error: ''\n }\n}\nconst getters = {\n getNextShift: state => state.nextShift\n}\n\nconst actions = {\n fetchNextShift({commit}) {\n return new Promise((resolve, reject) => {\n ApiService.get(`api/v2` , `getNextShift`).then(\n response => {\n commit('setNextShift' , response.data.data)\n resolve();\n }).catch(error => {\n commit('setError', error);\n reject(error);\n })\n });\n }\n}\nconst mutations = {\n setNextShift(state, value) {\n state.nextShift = value\n },\n resetState(state) {\n state = Object.assign(state, initialState())\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\nimport router from \"@/router/index\";\nimport { forEach } from \"lodash\";\n/* eslint-disable */\nfunction initialState() {\n return {\n isLoading : false\n }\n}\n\nconst getters = {\n isLoading: state => state.isLoading\n}\n\nconst actions = {\n createNew({ commit }, payload) {\n const formData = new FormData();\n forEach(Object.keys(payload), key => {\n formData.append(key, payload[key] != null ? payload[key] : \"\");\n })\n commit(\"setIsLoading\", true);\n if(payload.issues_invoice == null) payload.issues_invoice = 0;\n ApiService.post('api/v2/register', formData)\n .then(response => {\n Swal.fire({\n icon: 'success',\n title: response.data.message,\n showConfirmButton: true,\n heightAuto: false,\n timer: 2500\n }).then(() => {\n commit(\"setIsLoading\", false);\n router.push('/sign-in')\n })\n })\n .catch(error => {\n commit(\"setIsLoading\", false);\n let errorString = '';\n if(!error.response.data.errors) {\n errorString = \"Sorry there was an error\";\n }else {\n for (const key in error.response.data.errors) {\n if(error.response.data.errors[key]. length == 1) errorString = error.response.data.errors[key][0];\n else errorString = error.response.data.errors[key][1];\n }\n }\n Swal.fire({\n icon: 'error',\n position: \"top-end\",\n heightAuto: false,\n title: errorString,\n showConfirmButton: false,\n timer: 1500,\n })\n })\n }\n}\nconst mutations = {\n setIsLoading(state, payload) {\n state.isLoading = payload;\n },\n resetState(state) {\n state = Object.assign(state, initialState())\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n data: [],\n recentlyPromoted: [],\n loading: false,\n query: {\n pagination: {\n currentPage: 1,\n totalPages: 1\n },\n searchString: \"\"\n },\n isAwaitingApproval: [],\n count: 0\n };\n};\n\nconst getters = {\n applicants: state => state.data,\n recentlyPromoted: state => state.recentlyPromoted,\n loading: state => state.loading,\n pagination: state => state.query.pagination,\n awaitingApproval: state => state.isAwaitingApproval,\n count: state => state.count\n}\n\nconst actions = {\n fetchData({ state, commit }) {\n commit(\"setLoading\", true)\n ApiService.get(\"api/v2\", `applicants?page=${state.query.pagination.currentPage}&perPage=10${state.query.searchString != \"\" ? `&filter[search]=${state.query.searchString}` : ''}`)\n .then(response => {\n commit(\"setApplicants\", response.data.data);\n commit(\"setPagination\", response.data.meta);\n }).catch(error => {\n console.log(error);\n commit(\"setLoading\", false)\n }).finally(() => {\n commit(\"setLoading\", false)\n })\n },\n approve({ commit, dispatch }, applicantID) {\n commit(\"isAwaitingApproval\", applicantID);\n ApiService.post(`/api/v2/applicants/approve`, { applicant_id : applicantID})\n .then(() => { \n commit(\"wasApproved\", applicantID);\n Swal.fire({\n icon: 'success',\n toast: true,\n position: \"top-end\",\n heightAuto: false,\n title: \"User approved succesfully.\",\n showConfirmButton: false,\n timer: 1500,\n })\n dispatch(\"getCount\");\n })\n .catch(() => {\n commit(\"wasNotApproved\", applicantID);\n Swal.fire({\n icon: 'error',\n toast: true,\n position: \"top-end\",\n heightAuto: false,\n title: \"There was an error.\",\n showConfirmButton: false,\n timer: 1500,\n })\n })\n },\n fetchRecentlyPromoted({ commit }) {\n ApiService.get(\"api/v2\", \"applicants/recently-promoted\").then(response => {\n commit(\"setRecentlyPromotedApplicants\", response.data.data);\n }).catch(error => {\n console.log(error);\n })\n },\n getCount({commit}) {\n ApiService.get(\"api/v2\", \"applicants/count\").then(response => {\n commit(\"setCount\", response.data.count);\n }).catch(error => {\n console.log(error);\n })\n },\n changeCurrentPage({ commit }, page) {\n commit(\"changePage\", page);\n },\n changeSearch({ commit }, search) {\n commit(\"changePage\", 1);\n commit(\"changeSearchString\", search);\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n}\n\nconst mutations = {\n setApplicants(state, value) {\n state.data = value;\n },\n setRecentlyPromotedApplicants(state, value) {\n state.recentlyPromoted = value;\n },\n setCount(state, value) {\n state.count = value;\n },\n isAwaitingApproval(state, value) {\n state.isAwaitingApproval.push(value);\n },\n wasApproved(state, value) {\n state.data = state.data.filter(item => item.id != value);\n state.isAwaitingApproval = state.isAwaitingApproval.filter(a => a != value);\n },\n wasNotApproved(state, value) {\n state.isAwaitingApproval = state.isAwaitingApproval.filter(a => a != value);\n },\n setLoading(state, value) {\n state.loading = value;\n },\n setPagination(state, data) {\n state.query.pagination.currentPage = data.current_page;\n state.query.pagination.totalPages = data.last_page;\n },\n changePage(state, page) {\n state.query.pagination.currentPage = page;\n },\n changeSearchString(state, search) {\n state.query.searchString = search;\n },\n resetState(state) {\n let reset = initialState();\n reset['count'] = state.count;\n state = Object.assign(state, reset)\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\nimport moment from \"moment\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n jobsStatistic: {},\n reportedHoursStatistic: {},\n workerEarnings: {},\n jobsPerClient: {},\n usersStatistic: {},\n earningsStatistic: {},\n clientRevenue: {},\n marginByClient: {},\n jobsByWorker: {\n labels: [],\n values: []\n },\n hoursByWorker: {\n labels: [],\n values: []\n },\n globalFilters: {\n company_id: null,\n branches: []\n },\n consolidatedExpenses: {\n additional_expenses: 0,\n salaries: 0,\n }\n };\n};\n\nconst getters = {\n jobsStatistic: (state) => state.jobsStatistic,\n workerEarnings: (state) => state.workerEarnings,\n reportedHoursStatistic: (state) => state.reportedHoursStatistic,\n jobsPerClient: (state) => state.jobsPerClient,\n jobsByWorker: (state) => state.jobsByWorker,\n hoursByWorker: (state) => state.hoursByWorker,\n users: (state) => state.usersStatistic,\n earnings: (state) => state.earningsStatistic,\n consolidatedExpenses: (state) => state.consolidatedExpenses,\n clientRevenue: (state) => state.clientRevenue,\n marginByClient: (state) => state.marginByClient\n}\n\nconst actions = {\n clearMarginStats({ commit }) {\n commit(\"setMarginByClient\", {});\n },\n fetchJobsStatistic({ state, commit }) {\n let queryString = \"\";\n if(state.globalFilters.company_id) {\n queryString += `filter[company_id]=${state.globalFilters.company_id}&`;\n }\n if(state.globalFilters.branches.length > 0) {\n queryString += `filter[branches]=${state.globalFilters.branches}&`;\n }\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2\", `statistics/jobs${queryString != \"\" ? `?${queryString}` : ''}`).then(response => {\n commit(\"setJobsStatistic\", response.data)\n resolve(response);\n }).catch(error => {\n reject(error);\n })\n });\n },\n fetchConsolidatedExpenses({ state, commit }, query) {\n return new Promise((resolve, reject) => {\n let queryString = \"\";\n if(query.start && query.end) {\n queryString += `start=${query.start}&end=${query.end}`;\n }\n ApiService.get(\"api/v2\", 'statistics/consolidated-expenses?' + queryString).then(response => {\n commit(\"setConsolidatedExpenses\", response.data.data);\n resolve(response);\n }).catch(error => {\n reject(error);\n })\n });\n },\n clearConsolidatedExpenses({commit}) {\n commit(\"setConsolidatedExpenses\", {additional_expenses: 0, salaries: 0});\n },\n fetchEarningStatistics({ commit }, query) {\n return new Promise((resolve, reject) => {\n let queryString = \"\";\n if(query.startDate && query.endDate) {\n queryString += `start=${query.startDate}&end=${query.endDate}`;\n }\n if(query.branchId) {\n queryString += `${queryString === '' ? '' : '&'}branch=${query.branchId}`;\n }\n ApiService.get(\"api/v2\", 'statistics/revenue?' + queryString).then(response => {\n commit(\"setEarningStatistics\", response.data.data);\n resolve(response);\n }).catch(error => {\n reject(error);\n })\n });\n },\n fetchClientRevenueStatistic({ commit }, query) {\n return new Promise((resolve, reject) => {\n let queryString = \"\";\n if(query.startDate && query.endDate) {\n queryString += `start=${query.startDate}&end=${query.endDate}`;\n }\n ApiService.get(\"api/v2\", 'statistics/client-revenue?' + queryString).then(response => {\n commit(\"setClientRevenue\", response.data);\n resolve(response);\n }).catch(error => {\n reject(error);\n })\n });\n },\n fetchJobsPerClient({ commit }) {\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2\", 'statistics/jobs-per-client').then(response => {\n commit(\"setJobsPerClient\", response.data);\n resolve(response);\n }).catch(error => {\n reject(error);\n })\n });\n },\n reportedHours({ state, commit }) {\n let queryString = \"\";\n if(state.globalFilters.company_id) {\n queryString += `filter[company_id]=${state.globalFilters.company_id}&`;\n }\n if(state.globalFilters.branches.length > 0) {\n queryString += `filter[branches]=${state.globalFilters.branches}&`;\n }\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2\", `statistics/reportedHours${queryString != \"\" ? `?${queryString}` : ''}`).then(response => {\n commit(\"setReportedHoursStatistic\", response.data)\n resolve(response);\n }).catch(error => {\n reject(error);\n })\n })\n },\n users({ commit }) {\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2\", 'statistics/users').then(response => {\n commit(\"setUsersStatistic\", response.data);\n resolve(response);\n }).catch(error => {\n reject(error);\n })\n })\n },\n fetchJobsByWorker({commit}, query) {\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2\", 'statistics/jobs-by-worker?' + query).then(response => {\n commit(\"setJobsByWorkerStatistic\", response.data);\n resolve(response);\n }).catch(error => {\n reject(error);\n })\n })\n },\n fetchHoursByWorker({commit}, query) {\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2\", 'statistics/hours-by-worker?' + query).then(response => {\n commit(\"setHoursByWorker\", response.data);\n resolve(response);\n }).catch(error => {\n reject(error);\n })\n })\n },\n downloadWorkerStatisticsReport({commit}, query) {\n return new Promise((res, rej) => {\n ApiService.download(`api/v2`, `statistics/workers?`+ query)\n .then(response => {\n const fileName = `Worker-statistics-${moment(Date.now()).format('DD/MM/YYYY')}.xls`;\n const url = URL.createObjectURL(new Blob([response.data], {\n type: 'application/vnd.ms-excel'\n }));\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.click();\n res();\n })\n .catch(err => {\n rej(err);\n })\n })\n },\n fetchWorkerEarnings({ commit }) {\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2\", 'statistics/worker-earnings').then(response => {\n commit(\"setWorkerEarnings\", response.data);\n resolve(response);\n }).catch(error => {\n reject(error);\n })\n });\n },\n fetchMarginByClient({commit}, query) {\n return new Promise((resolve, reject) => {\n let queryString = \"\";\n if(query.startDate && query.endDate) {\n queryString += `start=${query.startDate}&end=${query.endDate}`;\n }\n ApiService.get(\"api/v2\", 'statistics/client-margins?' + queryString).then(response => {\n commit(\"setMarginByClient\", response.data);\n resolve(response);\n }).catch(error => {\n reject(error);\n })\n });\n },\n setCompanyFilter({ commit }, company_id) {\n commit(\"setCompanyFilter\", company_id);\n },\n setBranchesFilter({commit}, branches) {\n commit(\"setBranchesFilter\", branches);\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n}\nconst mutations = {\n setJobsStatistic(state, data) {\n state.jobsStatistic = data;\n },\n setMarginByClient(state, payload) {\n state.marginByClient = payload;\n },\n setClientRevenue(state, data) {\n state.clientRevenue = data;\n },\n setEarningStatistics(state, data) {\n state.earningsStatistic = data;\n },\n setConsolidatedExpenses(state, data) {\n state.consolidatedExpenses = data;\n },\n setWorkerEarnings(state, data) {\n state.workerEarnings = data;\n },\n setJobsByWorkerStatistic(state, data) {\n state.jobsByWorker = data;\n },\n setHoursByWorker(state, data) {\n state.hoursByWorker = data;\n },\n setJobsPerClient(state, data) {\n state.jobsPerClient = data;\n },\n setCompanyFilter(state, company_id) {\n state.globalFilters.company_id = company_id\n },\n setBranchesFilter(state, branches) {\n state.globalFilters.branches = branches;\n },\n setReportedHoursStatistic(state, data) {\n state.reportedHoursStatistic = data;\n },\n setUsersStatistic(state, data) {\n state.usersStatistic = data;\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n company_rate: [],\n loading: false,\n storeInProgress: false,\n skills: []\n }\n}\n\nconst getters = {\n company_rate: state => state.company_rate,\n loading: state => state.loading,\n storeInProgress: state => state.storeInProgress,\n skills: state => state.skills\n}\n\nconst actions = {\n fetch({ commit }, query) {\n commit(\"setLoading\", true);\n const skill = query.skill_id != \"\" ? `skill=${query.skill_id}` : \"\";\n const branch = query.branch_id != \"\" ? `&branch=${query.branch_id}` : \"\";\n const queryString = skill + branch;\n\n return new Promise((res, rej) => {\n ApiService.get(\"api/v2\", `rates/client/${query.company_id}?${queryString}`)\n .then(response => {\n res();\n commit(\"setCompanyRate\", response.data)\n commit(\"setLoading\", false);\n }).catch(error => {\n rej(error);\n commit(\"setLoading\", false);\n })\n })\n },\n store({ commit }, payload) {\n commit('setStoreInProgress', true);\n return new Promise((res, rej) => {\n ApiService.post(\"api/v2/rates/client/\", payload).then(response => {\n commit('setCompanyRate', response.data);\n commit('setStoreInProgress', false);\n res();\n }).catch(error => {\n rej(error);\n })\n })\n },\n update({ commit, state }, payload) {\n commit('setStoreInProgress', true);\n return new Promise((res, rej) => {\n ApiService.update('api/v2', `rates/update/${state.company_rate.id}`, payload).then(response => {\n commit('setCompanyRate', response.data);\n commit('setStoreInProgress', false);\n res();\n }).catch(error => {\n rej(error);\n })\n })\n },\n saveJobRates({ commit }, payload) {\n return new Promise((resolve, reject) => {\n ApiService.post(`api/v2/jobs/${payload.jobID}/save-rates`, payload)\n .catch(() => {\n reject();\n })\n .finally(() => {\n resolve();\n })\n });\n },\n fetchSkills({ commit }, id) {\n commit('setSkills', []);\n return new Promise((resolve, reject) => {\n ApiService.get(`/api/v2`, `skills`)\n .then(response => {\n commit('setSkills', response.data.data);\n ApiService.get(`/api/v2`, `frequentSkills${id ? '?company_id=' + id : ''}`).then(response => {\n if(response.data.preferredSkills) {\n commit('addFrequentlyUsedSkills', { data: response.data.preferredSkills , type: \"Client preferred skills\"});\n } else {\n commit('addFrequentlyUsedSkills', { data: response.data.frequentSkills, type: \"Frequently used skills\"});\n }\n resolve();\n })\n .catch(() => {\n resolve();\n })\n })\n .catch(()=> {\n reject();\n });\n }) \n },\n}\nconst mutations = {\n setCompanyRate(state, data) {\n state.company_rate = data;\n },\n setLoading(state, loading) {\n state.loading = loading;\n },\n setStoreInProgress(state, loading) {\n state.storeInProgress = loading;\n },\n setSkills(state, data) {\n state.skills = data;\n },\n addFrequentlyUsedSkills(state, data) {\n if(data.data.length > 0 && (state.skills[0] && state.skills[0].id != \"freq_1\")){\n state.skills.unshift({\n name: data.type,\n id: \"freq_1\",\n children: data.data\n })\n }\n },\n resetState(state) {\n state = Object.assign(state, initialState())\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n query: {\n company_id: null,\n branch_id: null\n },\n clientCurrency: \"\",\n estimate: {}\n }\n}\n\nconst getters = {\n query: state => state.query,\n data: state => state.estimate.data,\n total: state => state.estimate.total,\n clientCurrency: state => state.clientCurrency\n}\n\nconst actions = {\n fetch({ commit }, query) {\n ApiService.post(\"api/v2/rates/client/estimate-costs\", query).then(response => {\n commit(\"setEstimates\", response.data);\n })\n },\n fetchClientCurrency({ commit }, query) {\n ApiService.post(\"api/v2/rates/client/get-currency\", ...query).then(response => {\n commit(\"setClientCurrency\", response.data);\n });\n },\n setClientID({ commit }, payload) {\n commit(\"setCompany\", payload);\n },\n clearEstimates({ commit }, ) {\n commit(\"clearEstimates\");\n },\n setBranchesID({ commit }, payload) {\n commit(\"setBranches\", payload);\n },\n}\nconst mutations = {\n setEstimates(state, data) {\n state.estimate = data;\n },\n setClientCurrency(state, data) {\n state.clientCurrency = data;\n },\n setBranches(state, data) {\n if(data.length > 0) {\n state.query.branch_id = data[0];\n }else {\n state.query.branch_id = null;\n }\n },\n clearEstimates(state) {\n state.estimate = [];\n },\n setCompany(state, data) {\n state.query.company_id = data;\n },\n resetState(state) {\n state = Object.assign(state, initialState())\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n rates: [],\n skills: [],\n levels: [],\n custom_rates: [],\n isLoading: false,\n isFetchingSingle: false,\n isSaving: false\n }\n}\n\nconst getters = {\n skills: state => state.skills,\n levels: state => state.levels,\n loading: state => state.isLoading,\n isSaving: state => state.isSaving,\n isFetchingSingle: state => state.isFetchingSingle,\n existingRates: state => state.rates,\n customRates: state => state.custom_rates\n}\n\nconst actions = {\n fetchLevels({ commit }) {\n ApiService.get(`/api/v2`, `levels`).then(response => {\n commit('setLevels', response.data.data)\n })\n },\n fetchSkills({ dispatch ,commit }) {\n ApiService.get(`/api/v2`, `skills?sort=order&order=asc`\n ).then(response => {\n commit('setSkills', response.data.data);\n dispatch(\"fetchFrequentSkills\");\n })\n },\n fetchFrequentSkills({ commit }) {\n ApiService.get('api/v2', 'rates/workers/skills').then(response => {\n commit(\"setFreqSkills\", response.data.data);\n })\n },\n store({ commit }, data) {\n commit(\"setIsSaving\", true);\n return new Promise((res, rej) => {\n const payload = {\n rates: data.rates,\n currency_id: data.currencyId\n }\n ApiService.post(\"api/v2/worker-rates/save\", payload)\n .then(response => {\n res(response.data.message);\n commit(\"setIsSaving\", false);\n })\n .catch(err => {\n rej(err);\n commit(\"setIsSaving\", false);\n })\n })\n },\n fetchOne({ commit }, query) {\n commit(\"setIsFetchingSingle\", true)\n return new Promise((res, rej) => {\n ApiService.post(\"api/v2/worker-rates/single\", query)\n .then(response => {\n commit(\"setCustomRate\", response.data)\n res(response);\n })\n .catch(err => {\n rej(err);\n })\n .finally(() => {\n commit(\"setIsFetchingSingle\", false)\n })\n })\n },\n fetchRates({ commit }, data) {\n commit(\"isLoading\", data.triggerLoad);\n const query = {\n skill_id: data.query.skillID,\n branch_id: data.query.branchID\n }\n ApiService.post('api/v2/worker-rates', query)\n .then(response => {\n commit(\"setRates\", response.data.data)\n })\n .catch(error => {\n console.log(error);\n })\n .finally(() => {\n commit(\"isLoading\", false);\n })\n },\n fetchBranch({}, branchId) {\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2\", \"branches/\" + branchId)\n .then((response) => {\n resolve(response.data.data);\n })\n .catch((err) => {\n reject(err);\n })\n });\n }\n}\nconst mutations = {\n setSkills(state, data) {\n state.skills = data;\n },\n setLevels(state, data) {\n state.levels = data;\n },\n isLoading(state, value) {\n state.isLoading = value;\n },\n setIsSaving(state, value) {\n state.isSaving = value;\n },\n setRates(state, value) { \n state.rates = value;\n },\n setFreqSkills(state, data) {\n state.skills.unshift({\n name: \"Most Booked Skills\",\n id: \"frequent\",\n children: data\n })\n },\n setCustomRate(state, data) {\n state.custom_rates = data;\n },\n setIsFetchingSingle(state, value) {\n state.isFetchingSingle = value;\n },\n resetState(state) {\n state = Object.assign(state, initialState())\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n baseCost: null,\n client_currency: null,\n job_projection: {}\n }\n}\n\nconst getters = {\n getBaseCosts: state => state.baseCost,\n getJobProjection: state => state.job_projection,\n getClientCurrency: state => state.client_currency\n}\n\nconst actions = {\n fetchAdditionalCosts({ commit }, jobID) {\n return new Promise((resolve, reject) => {22\n ApiService.get(`api/v2` ,`jobs/additional-costs/${jobID}`)\n .then(response => {\n resolve(response.data.data);\n })\n .catch(error => {\n reject(error);\n })\n })\n },\n fetchJobProjection({ commit }, jobID) {\n return new Promise((resolve, reject) => {\n ApiService.get('api/v2', `jobs/${jobID}/projection`)\n .then(response => {\n commit('setJobProjection', response.data);\n })\n .finally(() => {\n resolve();\n })\n })\n\n },\n fetchClientCurrency({ commit }, data) {\n const query = {\n company_id: data.company,\n branch_id: data.branch\n }\n ApiService.post(\"api/v2/rates/client/get-currency\", query).then(response => {\n commit(\"setClientCurrency\", response.data);\n });\n },\n deleteAdditionalCost({ commit }, cost) {\n return new Promise((resolve, reject) => {\n ApiService.delete(`api/v2/jobs/additional-costs/${cost.id}`)\n .then(response => {\n commit('updateAdditionalCosts', response.data.data);\n resolve(response.data.data);\n })\n .catch(err => {\n reject(err);\n })\n })\n },\n saveAdditionalCosts({commit}, query) {\n return new Promise((resolve, reject) => {\n ApiService.post(`api/v2/jobs/${query.jobID}/additional-costs/save`, query)\n .then(response => {\n resolve(response);\n })\n .catch(err => {\n reject(err);\n })\n })\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n}\nconst mutations = {\n resetState(state) {\n state = Object.assign(state, initialState())\n },\n setJobProjection(state, payload) {\n state.job_projection = payload;\n },\n setClientCurrency(state, value) {\n state.client_currency = value;\n },\n updateAdditionalCosts(state, data) {\n state.job_projection.additionalCosts = data;\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n chatHistory: [],\n userConversation : [],\n unreadMessages: 0,\n awaitingResponse: []\n }\n}\n\nconst getters = {\n getChatHistory: state => state.chatHistory,\n getConversation: state => state.userConversation,\n getUnreadMessages: state => state.unreadMessages\n}\n\nconst actions = {\n fetchChatHistory({commit}) {\n return new Promise((resolve, reject) => {\n ApiService.get('api/v2', 'user/chats')\n .then(response => {\n commit(\"setChatHistory\", response.data.data);\n })\n .catch(err => {\n reject(err);\n })\n .finally(() => {\n resolve();\n })\n })\n },\n fetchUnreadMessages({ commit }) {\n return new Promise((resolve, reject) => {\n ApiService.get('api/v2', 'unread-messages')\n .then(response => {\n commit(\"setUnreadMessages\", response.data.count);\n })\n .catch(err => {\n console.log(err);\n })\n .finally(() => {\n resolve();\n })\n })\n },\n addSingleItemToHistory({state}, payload) {\n state.chatHistory.unshift(payload);\n },\n updateLatestChat({commit}, payload) {\n commit(\"updateLatestChat\", payload);\n },\n fetchConversation({commit}, payload) {\n return new Promise((resolve, reject) => {\n ApiService.get('api/v2', `chat/${payload.chat_id}/messages?page=${payload.page}`)\n .then(response => {\n resolve(response.data);\n })\n .catch(err => {\n reject(err);\n });\n })\n },\n sendMessage({commit}, payload) {\n return new Promise((resolve, reject) => {\n const requestBody = {\n body: payload.messageBody,\n };\n if(null != payload.chatId) {\n requestBody['chat_id'] = payload.chatId;\n }else {\n requestBody['target_user'] = payload.userId;\n }\n ApiService.post('api/v2/chat/send-message', requestBody)\n .then(response => {\n resolve(response);\n })\n .catch(err => {\n reject(err);\n })\n });\n },\n handleChatMessageRead({dispatch, state}, chatId) {\n const chat = state.chatHistory.find(item => item.id === chatId);\n if(chat) {\n dispatch(\"fetchUnreadMessages\");\n chat.unread_messages = 0;\n }\n },\n fetchUserActiveStatus() {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n resolve(\"Active\");\n }, 150)\n })\n },\n searchUsers({commit}, queryString) {\n return new Promise((resolve, reject) => {\n if(\"string\" !== typeof queryString) {\n reject(\"Badly formed data\");\n }\n ApiService.get('api/v2', `search-users-chat?userName=${queryString}`)\n .then(response => {\n resolve(response.data.data);\n })\n .catch(err => {\n reject(err);\n });\n })\n },\n resetState({ commit }) {\n commit(\"resetState\")\n },\n handleNewMessageFromWebSocket({ commit, state }, eventData) {\n const chat = state.chatHistory.find(item => item.id === eventData.message.chat_id);\n state.unreadMessages++;\n if(chat) {\n chat.unread_messages++;\n chat.last_message = eventData.message.created_at;\n }\n }\n}\nconst mutations = {\n setChatHistory(state, payload) {\n if(null == payload) {\n state.chatHistory = [];\n } else {\n state.chatHistory = payload;\n }\n },\n updateLatestChat(state, payload) {\n if(payload) {\n const chat = state.chatHistory.find(item => item.id === payload.id);\n if(chat) {\n chat.last_message = payload.last_message;\n }\n }\n },\n setUserConversation(state, payload) {\n if(null == payload) {\n state.userConversation = [];\n } else {\n state.userConversation = payload;\n }\n },\n setUnreadMessages(state, value) {\n state.unreadMessages = value;\n },\n resetState(state) {\n Object.assign(state, initialState());\n },\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n\n","import ApiService from \"../../core/services/ApiService\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n qrImage: null,\n loading: false,\n code: null,\n };\n};\n\nconst getters = {\n qrImage: state => state.loading,\n loading: state => state.loading,\n code: state => state.code\n}\n\nconst actions = {\n fetchQrImage({ commit , state}) {\n commit(\"setLoading\", true);\n ApiService\n .get(\n \"/api/v2\",\n \"otp\")\n .then(response => {\n commit(\"setQrImage\", response.data.image);\n commit(\"setCode\", response.data.code);\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n commit(\"setLoading\", false);\n });\n },\n store({ commit, dispatch }, otpCode) {\n commit(\"setLoading\", true);\n return ApiService\n .post(\n \"/api/v2/otp\", {\n otp: otpCode\n })\n .catch((err) => {\n reject(err);\n })\n .finally(() => {\n commit(\"setLoading\", false);\n });\n },\n removeTwoFactorAuth({ commit }, password) {\n return new Promise((resolve, reject) => {\n ApiService.post(\"/api/v2/otp/disable\", {password: password})\n .then(() => {\n resolve();\n })\n .catch((err) => {\n reject(err);\n })\n });\n }\n}\nconst mutations = {\n setLoading(state, value) {\n state.loading = value;\n },\n resetState(state) {\n state = Object.assign(state, initialState());\n },\n setEror(state, value) {\n state.error = value;\n },\n setQrImage(state, value) {\n state.qrImage = value;\n },\n setCode(state, value) {\n state.code = value;\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import ApiService from \"../../../core/services/ApiService\";\n\nconst state = {\n data: []\n};\n\nconst actions = {\n downloadRosterFile({ commit }, payload) {\n return new Promise((resolve, reject) => {\n let queryString = \"\";\n if (payload.jobs) {\n payload.jobs.forEach(jobId => {\n queryString =\n queryString === \"\" ? `jobs=${jobId}` : queryString + `,${jobId}`;\n });\n } else if (payload.client) {\n queryString = `client=${payload.client}&start=${payload.startDate}&end=${payload.endDate}`;\n }\n ApiService.download(`/api/v2`, `roster?${queryString}`)\n .then(response => {\n const url = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement(\"a\");\n link.href = url;\n link.setAttribute(\"download\", \"Crew-roster.xlsx\"); // or any other extension\n document.body.appendChild(link);\n link.click();\n resolve();\n })\n .catch(err => {\n let message =\n \"An error occurred while downloading the file. Please try again.\";\n if (err.code === 404) {\n message = \"No data found for the selected date range\";\n }\n reject(message);\n });\n });\n }\n};\n\nexport default {\n namespaced: true,\n state,\n actions\n};\n","import ApiService from \"../../../core/services/ApiService\";\n\nfunction initialState() {\n return {\n quotes: []\n };\n}\n\nconst getters = {\n quotes: state => state.quotes\n};\n\nconst actions = {\n fetchQuotes({ commit }, payload) {\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2/job-quotes\", \"fetch?page=\" + payload.current)\n .then(response => {\n commit(\"setQuotes\", response.data.data);\n resolve(response.data.meta);\n })\n .catch(err => {\n reject(err);\n });\n });\n },\n saveQuote({ commit }, payload) {\n return new Promise((resolve, reject) => {\n ApiService.post(`api/v2/job-quotes/${payload.editing ? 'edit' : 'save'}`, payload)\n .then(() => {\n resolve();\n })\n .catch(err => {\n reject(err);\n });\n });\n },\n getClientData({ commit }, payload) {\n return new Promise((resolve, reject) => {\n ApiService.post(`api/v2/job-quotes/get-client-data`, payload)\n .then((response) => {\n resolve(response.data);\n })\n .catch(err => {\n reject(err);\n });\n });\n },\n deleteJobQuote({ commit }, id) {\n return new Promise((resolve, reject) => {\n ApiService.post(\"api/v2/job-quotes/delete\", { quoteId: id })\n .then(() => {\n resolve();\n })\n .catch(err => {\n reject(err);\n });\n });\n },\n getQuoteById({ commit }, id) {\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2/job-quotes\", id)\n .then(response => {\n resolve(response.data);\n })\n .catch(err => {\n reject(err);\n });\n });\n },\n downloadJobQuote({ state, commit }, id) {\n return new Promise((resolve, reject) => {\n ApiService.download(\"api/v2\", `job-quotes/generate/${id}`)\n .then(response => {\n const fileName = `job-quote.pdf`;\n const url = URL.createObjectURL(\n new Blob([response.data], {\n type: \"application/vnd.ms-excel\"\n })\n );\n const link = document.createElement(\"a\");\n link.href = url;\n link.setAttribute(\"download\", fileName);\n document.body.appendChild(link);\n link.click();\n resolve();\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n};\nconst mutations = {\n setQuotes(state, payload) {\n state.quotes = payload;\n }\n};\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n};\n","import ApiService from \"@/core/services/ApiService\";\n\nfunction initialState() {\n return {\n onCallUsers: []\n };\n}\n\nconst getters = {\n onCallUsers: state => state.onCallUsers\n};\n\nconst actions = {\n fetchOnCallUsers({ commit }) {\n return new Promise((resolve, reject) => {\n ApiService.get(\"api/v2\", \"on-call\")\n .then(({ data }) => {\n commit(\"setOnCallUsers\", data.data);\n resolve();\n })\n .catch(err => {\n reject(err);\n });\n });\n },\n addOnCallUser({ commit }, userId) {\n return new Promise((resolve, reject) => {\n ApiService.post(\"api/v2/on-call\", { userId: userId })\n .then(({ data }) => {\n resolve(data);\n })\n .catch(err => {\n reject(err);\n });\n });\n },\n removeOnCallUser({ commit }, id) {\n return new Promise((resolve, reject) => {\n ApiService.delete(\"api/v2/on-call/\" + id)\n .then(() => {\n resolve();\n })\n .catch(err => {\n reject(err);\n });\n });\n },\n searchUsers({ commit }, queryString) {\n return new Promise((resolve, reject) => {\n if (\"string\" !== typeof queryString) {\n reject(\"Badly formed data\");\n }\n ApiService.get(\"api/v2/on-call\", `search-users?userName=${queryString}`)\n .then(response => {\n resolve(response.data.data);\n })\n .catch(err => {\n reject(err);\n });\n });\n }\n};\n\nconst mutations = {\n setOnCallUsers(state, payload) {\n state.onCallUsers = payload;\n }\n};\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n};\n","import { createStore } from \"vuex\";\r\nimport { config } from \"vuex-module-decorators\";\r\n\r\nimport AuthModule from \"@/store/modules/AuthModule\";\r\nimport BodyModule from \"@/store/modules/BodyModule\";\r\nimport BreadcrumbsModule from \"@/store/modules/BreadcrumbsModule\";\r\nimport ConfigModule from \"@/store/modules/ConfigModule\";\r\nimport DashboardModule from \"@/store/modules/Dashboard/index.js\";\r\nimport ListsModule from \"@/store/modules/Lists/index.js\";\r\nimport MyDocumentsModule from \"@/store/modules/Documents/myDocuments.js\"\r\nimport UsersModule from \"@/store/modules/Users/index.js\";\r\nimport RulesModule from \"@/store/modules/rules.js\";\r\nimport { Ability } from '@casl/ability';\r\nimport AbilityModule from \"@/store/modules/AbilityModule.js\"\r\nimport ClientsModule from \"@/store/modules/Clients/index.js\";\r\nimport LevelsModule from \"@/store/modules/Levels/index.js\";\r\nimport BranchesModule from \"@/store/modules/Branches/index.js\";\r\nimport DresscodesModule from \"@/store/modules/Dresscodes/index.js\";\r\nimport DocumentsModule from \"@/store/modules/Documents/index.js\";\r\nimport DocumentTypesModule from \"@/store/modules/DocumentTypes/index.js\";\r\nimport SkillsModule from \"@/store/modules/Skills/index.js\";\r\nimport EquipmentCategoriesModule from \"@/store/modules/EquipmentCategories/index.js\";\r\nimport FreelancersModule from \"@/store/modules/Freelancers/index.js\";\r\nimport CountriesModule from \"@/store/modules/Countries/index.js\";\r\nimport LanguagesModule from \"@/store/modules/Languages/index.js\";\r\nimport PermissionsModule from \"@/store/modules/Permissions/index.js\";\r\nimport RolesModule from \"@/store/modules/Roles/index.js\";\r\nimport VenuesModule from \"@/store/modules/Venues/index.js\";\r\nimport SalaryReportsModule from \"@/store/modules/Reports/salary.js\"\r\nimport CreateUserModule from \"@/store/modules/Users/create.js\";\r\nimport HelpModule from \"@/store/modules/Help/index.js\";\r\nimport JobModule from \"@/store/modules/Jobs/single.js\";\r\nimport NotesModule from \"@/store/modules/Notes/index.js\"\r\nimport HelpCategoriesModule from \"@/store/modules/HelpCategories/index.js\";\r\nimport ShiftsModule from \"@/store/modules/Shifts/index.js\";\r\nimport MyDashboardModule from \"@/store/modules/My-dashboard/index.js\";\r\nimport JobCreateModule from \"@/store/modules/Jobs/create.js\";\r\nimport CalendarModule from \"@/store/modules/CalendarModule.js\";\r\nimport MySkillsModule from \"@/store/modules/My-skills/index.js\";\r\nimport EditJobModule from \"@/store/modules/Jobs/edit.js\";\r\nimport JobTemplatesModule from \"@/store/modules/Job-templates/index.js\";\r\nimport SingleJobTemplateModule from \"@/store/modules/Job-templates/single.js\";\r\nimport AdminCalendarModule from \"@/store/modules/AdminCalendarModule.js\";\r\nimport ActivitiesModule from \"@/store/modules/Activities/index.js\";\r\nimport RatesModule from \"@/store/modules/Rates/index.js\";\r\nimport WidgetsModule from \"@/store/modules/Widgets/index.js\";\r\nimport RegistrationModule from \"@/store/modules/Registration/index.js\";\r\nimport ApplicantsModule from \"@/store/modules/Applicants/index.js\";\r\nimport StatisticsModule from \"@/store/modules/Statistics/index.js\";\r\nimport NewRatesModule from \"@/store/modules/Rates/newRates.js\";\r\nimport PriceEstimationModule from \"@/store/modules/Rates/priceEstimates.js\";\r\nimport WorkerRatesModule from \"@/store/modules/Rates/workerRates.js\";\r\nimport AdditionalCostsModule from \"@/store/modules/Jobs/additional-costs.js\";\r\nimport LiveChatModule from \"@/store/modules/Live-chat/index.js\";\r\nimport OtpModule from \"@/store/modules/OtpModule.js\";\r\nimport RosterModule from \"@/store/modules/Roster/index.js\"\r\nimport JobQuotesModule from \"@/store/modules/JobQuotes/index.js\";\r\nimport OnCallUsersModule from \"@/store/modules/OnCall/index.js\";\r\n\r\nconfig.rawError = true;\r\n\r\nconst store = createStore({\r\n modules: {\r\n AuthModule,\r\n BodyModule,\r\n BreadcrumbsModule,\r\n OnCallUsersModule,\r\n LiveChatModule,\r\n ConfigModule,\r\n JobQuotesModule,\r\n EditJobModule,\r\n WorkerRatesModule,\r\n NewRatesModule,\r\n AdminCalendarModule,\r\n DashboardModule,\r\n PriceEstimationModule,\r\n AdditionalCostsModule,\r\n ListsModule,\r\n RulesModule,\r\n UsersModule,\r\n LevelsModule,\r\n ClientsModule,\r\n BranchesModule,\r\n DresscodesModule,\r\n DocumentsModule,\r\n DocumentTypesModule,\r\n SkillsModule,\r\n EquipmentCategoriesModule,\r\n FreelancersModule,\r\n CountriesModule,\r\n LanguagesModule,\r\n PermissionsModule,\r\n RolesModule,\r\n VenuesModule,\r\n SalaryReportsModule,\r\n CreateUserModule,\r\n JobModule,\r\n NotesModule,\r\n MyDocumentsModule,\r\n HelpModule,\r\n ShiftsModule,\r\n HelpCategoriesModule,\r\n JobCreateModule,\r\n MyDashboardModule,\r\n CalendarModule,\r\n MySkillsModule,\r\n JobTemplatesModule,\r\n SingleJobTemplateModule,\r\n ActivitiesModule,\r\n RatesModule,\r\n WidgetsModule,\r\n RegistrationModule,\r\n ApplicantsModule,\r\n StatisticsModule,\r\n OtpModule,\r\n RosterModule\r\n },\r\n plugins: [AbilityModule],\r\n state: {\r\n rules: []\r\n },\r\n getters: {\r\n ability() {\r\n return new Ability([]);\r\n }\r\n },\r\n});\r\n\r\nexport default store;\r\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=1&id=7ca588f3&lang=css\"","export class ResponseError extends Error {\n code: number; // Define the 'code' property\n constructor(message: string, code: number) {\n super(message);\n this.code = code;\n this.name = this.constructor.name;\n Error.captureStackTrace(this, this.constructor);\n }\n}","import { App } from \"vue\";\nimport axios from \"axios\";\nimport VueAxios from \"vue-axios\";\nimport JwtService from \"@/core/services/JwtService\";\nimport { AxiosResponse, AxiosRequestConfig } from \"axios\";\nimport router from \"@/router\";\nimport { ResponseError } from \"@/core/errors/CustomErrors\";\n/**\n * @description service to call HTTP request via Axios\n */\nclass ApiService {\n /**\n * @description property to share vue instance\n */\n public static vueInstance: App;\n\n /**\n * @description initialize vue axios\n */\n public static init(app: App) {\n ApiService.vueInstance = app;\n ApiService.vueInstance.use(VueAxios, axios);\n ApiService.vueInstance.axios.defaults.baseURL = process.env.VUE_APP_API_URL;\n }\n\n /**\n * @description set the default HTTP request headers\n */\n public static setHeader(): void {\n ApiService.vueInstance.axios.defaults.headers.common[\n \"Authorization\"\n ] = `Bearer ${JwtService.getToken()}`;\n }\n\n /**\n * @description send the GET HTTP request\n * @param resource: string\n * @param params: AxiosRequestConfig\n * @returns Promise\n */\n public static query(\n resource: string,\n params: AxiosRequestConfig\n ): Promise {\n return ApiService.vueInstance.axios.get(resource, params).catch(error => {\n throw new Error(`[KT] ApiService ${error}`);\n });\n }\n\n /**\n * @description send the GET HTTP request\n * @param resource: string\n * @param slug: string\n * @param config\n * @returns Promise\n */\n public static get(\n resource: string,\n slug = \"\" as string,\n config: AxiosRequestConfig = {}\n ): Promise {\n return ApiService.vueInstance.axios\n .get(`${resource}/${slug}`, config)\n .catch(error => {\n throw new Error(`[KT] ApiService ${error}`);\n });\n }\n\n /**\n * @description set the POST HTTP request\n * @param resource: string\n * @param params: AxiosRequestConfig\n * @returns Promise\n */\n public static post(\n resource: string,\n params: AxiosRequestConfig\n ): Promise {\n return ApiService.vueInstance.axios.post(`${resource}`, params);\n }\n\n /**\n * @description send the UPDATE HTTP request\n * @param resource: string\n * @param slug: string\n * @param params: AxiosRequestConfig\n * @returns Promise\n */\n public static update(\n resource: string,\n slug: string,\n params: AxiosRequestConfig\n ): Promise {\n return ApiService.vueInstance.axios.put(`${resource}/${slug}`, params);\n }\n\n /**\n * @description Send the PUT HTTP request\n * @param resource: string\n * @param params: AxiosRequestConfig\n * @returns Promise\n */\n public static put(\n resource: string,\n params: AxiosRequestConfig\n ): Promise {\n return ApiService.vueInstance.axios.put(`${resource}`, params);\n }\n\n /**\n * @description Send the DELETE HTTP request\n * @param resource: string\n * @returns Promise\n */\n public static delete(resource: string): Promise {\n return ApiService.vueInstance.axios.delete(resource).catch(error => {\n throw new Error(`[RWV] ApiService ${error}`);\n });\n }\n\n /**\n * @description send the DOWNLOAD HTTP request\n * @param resource: string\n * @param slug: string\n * @param config\n * @returns Promise\n */\n public static download(\n resource: string,\n slug = \"\" as string\n ): Promise {\n return ApiService.vueInstance.axios\n .get(`${resource}/${slug}`, { responseType: \"blob\" })\n .catch(error => {\n const errorCode = error.response ? error.response.status : 500;\n throw new ResponseError(\n `[KT] ApiService Error: ${error.message}`,\n errorCode\n );\n });\n }\n}\n\n\nexport default ApiService;\n","import moment from \"moment\";\nexport const DateTimeFormat = \"DD/MM/YYYY HH:mm\";\nexport type timeSelectorStartEnd = {\n start: string;\n end: string;\n}\nexport const DefaultTimeSelectorStartEnd = {\n start : \"00:00\",\n end: \"23:30\"\n}\nexport const getHoursFromString = (string, format): string => {\n return moment(string, format).format(\"HH:mm\");\n}\nexport const getDateFromString = (string, format): string => {\n return moment(string, format).format(\"DD/MM/YYYY\");\n}\nexport const buildDateTimeString = (date, hours) => {\n return getDateFromString(date, DateTimeFormat) + \" \" + hours\n}","enum Actions {\r\n // action types\r\n ADD_BODY_CLASSNAME = \"addBodyClassName\",\r\n REMOVE_BODY_CLASSNAME = \"removeBodyClassName\",\r\n ADD_BODY_ATTRIBUTE = \"addBodyAttribute\",\r\n REMOVE_BODY_ATTRIBUTE = \"removeBodyAttribute\",\r\n ADD_CLASSNAME = \"addClassName\",\r\n VERIFY_AUTH = \"verifyAuth\",\r\n LOGIN = \"login\",\r\n LOGOUT = \"logout\",\r\n REGISTER = \"register\",\r\n UPDATE_USER = \"updateUser\",\r\n FORGOT_PASSWORD = \"forgotPassword\",\r\n FORGOT_PASSWORD_SAVE = \"forgotPasswordSave\",\r\n SET_BREADCRUMB_ACTION = \"setBreadcrumbAction\",\r\n SET_FETCH_USER = \"setFetchUser\",\r\n SET_WEBSOCKET_CONNECTED = \"setConnectedToWebsocket\"\r\n}\r\n\r\nenum Mutations {\r\n // mutation types\r\n SET_CLASSNAME_BY_POSITION = \"appendBreadcrumb\",\r\n PURGE_AUTH = \"logOut\",\r\n SET_AUTH = \"setAuth\",\r\n SET_USER = \"setUser\",\r\n SET_PASSWORD = \"setPassword\",\r\n SET_ERROR = \"setError\",\r\n SET_BREADCRUMB_MUTATION = \"setBreadcrumbMutation\",\r\n SET_LAYOUT_CONFIG = \"setLayoutConfig\",\r\n RESET_LAYOUT_CONFIG = \"resetLayoutConfig\",\r\n OVERRIDE_LAYOUT_CONFIG = \"overrideLayoutConfig\",\r\n OVERRIDE_PAGE_LAYOUT_CONFIG = \"overridePageLayoutConfig\",\r\n SET_IS_SUBSCRIBED = \"setSubscribedToChat\",\r\n SET_FETCH_USER = \"mutateFetchUser\"\r\n}\r\n\r\nexport { Actions, Mutations };\r\n","import {createPopper, VirtualElement} from '@popperjs/core'\r\nimport {\r\n getElementChild,\r\n getElementParents,\r\n getAttributeValueByBreakpoint,\r\n getUniqueIdWithPrefix,\r\n DataUtil,\r\n ElementStyleUtil,\r\n EventHandlerUtil,\r\n insertAfterElement,\r\n slideUp,\r\n slideDown,\r\n DOMEventHandlerUtil,\r\n throttle,\r\n getHighestZindex,\r\n} from '../_utils/index'\r\n\r\nexport interface MenuOptions {\r\n dropdown: {\r\n hoverTimeout: number\r\n zindex: number\r\n }\r\n accordion: {\r\n slideSpeed: number\r\n expand: boolean\r\n }\r\n}\r\n\r\nconst defaultMenuOptions: MenuOptions = {\r\n dropdown: {\r\n hoverTimeout: 200,\r\n zindex: 105,\r\n },\r\n accordion: {\r\n slideSpeed: 250,\r\n expand: false,\r\n },\r\n}\r\n\r\ntype PopperPlacement =\r\n | 'right'\r\n | 'auto'\r\n | 'auto-start'\r\n | 'auto-end'\r\n | 'top'\r\n | 'bottom'\r\n | 'left'\r\n | 'top-start'\r\n | 'top-end'\r\n | 'bottom-start'\r\n | 'bottom-end'\r\n | 'right-start'\r\n | 'right-end'\r\n | 'left-start'\r\n | 'left-end'\r\n | undefined\r\n\r\nclass MenuComponent {\r\n element: HTMLElement\r\n options: MenuOptions\r\n instanceUid: string\r\n triggerElement: HTMLElement | null = null\r\n\r\n constructor(_element: HTMLElement, options: MenuOptions) {\r\n this.element = _element\r\n this.options = Object.assign(defaultMenuOptions, options)\r\n this.instanceUid = getUniqueIdWithPrefix('menu')\r\n // this.element.setAttribute('data-kt-menu', 'true')\r\n this._setTriggerElement()\r\n this._update()\r\n DataUtil.set(this.element, 'menu', this)\r\n return this\r\n }\r\n\r\n // Set external trigger element\r\n private _setTriggerElement = () => {\r\n const target = document.querySelector(\r\n `[data-kt-menu-target=\"#${this.element.getAttribute('id')}\"`\r\n )\r\n\r\n if (target) {\r\n this.triggerElement = target as HTMLElement\r\n } else if (this.element.closest('[data-kt-menu-trigger]')) {\r\n this.triggerElement = this.element.closest('[data-kt-menu-trigger]') as HTMLElement\r\n } else if (\r\n this.element.parentNode &&\r\n getElementChild(this.element.parentNode as HTMLElement, '[data-kt-menu-trigger]')\r\n ) {\r\n const child = getElementChild(\r\n this.element.parentNode as HTMLElement,\r\n '[data-kt-menu-trigger]'\r\n )\r\n if (child) {\r\n this.triggerElement = child\r\n }\r\n }\r\n\r\n if (this.triggerElement) {\r\n DataUtil.set(this.triggerElement, 'menu', this)\r\n }\r\n }\r\n\r\n // Test if menu has external trigger element\r\n private _isTriggerElement = (item: HTMLElement) => {\r\n return this.triggerElement === item\r\n }\r\n\r\n // Get item option(through html attributes)\r\n private _getItemOption = (item: HTMLElement, name: string) => {\r\n let value: string | JSON | null | boolean = null\r\n if (item && item.hasAttribute('data-kt-menu-' + name)) {\r\n const attr = item.getAttribute('data-kt-menu-' + name) || ''\r\n value = getAttributeValueByBreakpoint(attr)\r\n if (value !== null && String(value) === 'true') {\r\n value = true\r\n } else if (value !== null && String(value) === 'false') {\r\n value = false\r\n }\r\n }\r\n return value\r\n }\r\n\r\n // Get item element\r\n private _getItemElement = (_element: HTMLElement) => {\r\n // Element is the external trigger element\r\n if (this._isTriggerElement(_element)) {\r\n return _element\r\n }\r\n\r\n // Element has item toggler attribute\r\n if (_element.hasAttribute('data-kt-menu-trigger')) {\r\n return _element\r\n }\r\n\r\n // Element has item DOM reference in it's data storage\r\n const itemElement = DataUtil.get(_element, 'item')\r\n if (itemElement) {\r\n return itemElement\r\n }\r\n\r\n // Item is parent of element\r\n const item = _element.closest('.menu-item[data-kt-menu-trigger]')\r\n if (item) {\r\n return item\r\n }\r\n\r\n // Element's parent has item DOM reference in it's data storage\r\n const sub = _element.closest('.menu-sub')\r\n if (sub) {\r\n const subItem = DataUtil.get(sub as HTMLElement, 'item')\r\n if (subItem) {\r\n return subItem\r\n }\r\n }\r\n }\r\n\r\n // Get item parent element\r\n private _getItemParentElement = (item: HTMLElement) => {\r\n const sub = item.closest('.menu-sub')\r\n if (!sub) {\r\n return null\r\n }\r\n\r\n const subItem = DataUtil.get(sub as HTMLElement, 'item')\r\n if (subItem) {\r\n return subItem\r\n }\r\n\r\n const parentItem = sub.closest('.menu-item[data-kt-menu-trigger]')\r\n if (sub && parentItem) {\r\n return parentItem\r\n }\r\n\r\n return null\r\n }\r\n\r\n // Get item parent elements\r\n private _getItemParentElements = (item: HTMLElement) => {\r\n const parents:Array = []\r\n let parent:Element\r\n let i = 0\r\n let buffer:HTMLElement = item\r\n\r\n do {\r\n parent = this._getItemParentElement(buffer)\r\n if (parent) {\r\n parents.push(parent)\r\n buffer = parent as HTMLElement\r\n }\r\n\r\n i++\r\n } while (parent !== null && i < 20)\r\n\r\n if (this.triggerElement) {\r\n parents.unshift(this.triggerElement)\r\n }\r\n\r\n return parents\r\n }\r\n\r\n // Prepare popper config for dropdown(see: https://popper.js.org/docs/v2/)\r\n private _getDropdownPopperConfig = (item: HTMLElement) => {\r\n // Placement\r\n const placementOption = this._getItemOption(item, 'placement')\r\n let placement: PopperPlacement = 'right'\r\n if (placementOption) {\r\n placement = placementOption as PopperPlacement\r\n }\r\n\r\n // Flip\r\n const flipValue = this._getItemOption(item, 'flip')\r\n const flip = flipValue ? flipValue.toString().split(',') : []\r\n\r\n // Offset\r\n const offsetValue = this._getItemOption(item, 'offset')\r\n const offset = offsetValue ? offsetValue.toString().split(',') : []\r\n\r\n // Strategy\r\n const strategy: 'absolute' | 'fixed' | undefined =\r\n this._getItemOption(item, 'overflow') === true ? 'absolute' : 'fixed'\r\n\r\n return {\r\n placement: placement,\r\n strategy: strategy,\r\n modifiers: [\r\n {\r\n name: 'offset',\r\n options: {\r\n offset: offset,\r\n },\r\n },\r\n {\r\n name: 'preventOverflow',\r\n options: {\r\n //altBoundary: true,\r\n //altAxis: true,\r\n rootBoundary: 'clippingParents',\r\n },\r\n },\r\n {\r\n name: 'flip',\r\n options: {\r\n altBoundary: true,\r\n fallbackPlacements: flip,\r\n },\r\n },\r\n ],\r\n }\r\n }\r\n\r\n // Get item child element\r\n private _getItemChildElement = (item: HTMLElement) => {\r\n let selector = item\r\n\r\n const subItem = DataUtil.get(item, 'sub')\r\n if (subItem) {\r\n selector = subItem\r\n }\r\n\r\n if (selector) {\r\n //element = selector.querySelector('.show.menu-item[data-kt-menu-trigger]');\r\n const element = selector.querySelector('.menu-item[data-kt-menu-trigger]')\r\n if (element) {\r\n return element\r\n }\r\n }\r\n return null\r\n }\r\n\r\n // Get item child elements\r\n private _getItemChildElements = (item: HTMLElement) => {\r\n const children: Array = []\r\n let child:Element | null\r\n let i = 0\r\n let buffer = item\r\n do {\r\n child = this._getItemChildElement(buffer)\r\n if (child) {\r\n children.push(child)\r\n buffer = child as HTMLElement\r\n }\r\n\r\n i++\r\n } while (child !== null && i < 20)\r\n\r\n return children\r\n }\r\n\r\n // Get item sub element\r\n private _getItemSubElement = (item: HTMLElement) => {\r\n if (!item) {\r\n return null\r\n }\r\n\r\n if (this._isTriggerElement(item)) {\r\n return this.element\r\n }\r\n\r\n if (item.classList.contains('menu-sub')) {\r\n return item\r\n } else if (DataUtil.has(item, 'sub')) {\r\n return DataUtil.get(item, 'sub')\r\n } else {\r\n return getElementChild(item, '.menu-sub')\r\n }\r\n }\r\n\r\n private _getCss = (el: HTMLElement, styleProp: string) => {\r\n const defaultView = (el.ownerDocument || document).defaultView\r\n if (!defaultView) {\r\n return ''\r\n }\r\n\r\n // sanitize property name to css notation\r\n // (hyphen separated words eg. font-Size)\r\n styleProp = styleProp.replace(/([A-Z])/g, '-$1').toLowerCase()\r\n\r\n return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp)\r\n }\r\n\r\n // Get item sub type\r\n private _getItemSubType = (element: HTMLElement) => {\r\n const sub = this._getItemSubElement(element)\r\n if (sub && parseInt(this._getCss(sub, 'z-index')) > 0) {\r\n return 'dropdown'\r\n } else {\r\n return 'accordion'\r\n }\r\n }\r\n\r\n // Test if item's sub is shown\r\n private _isItemSubShown = (item: HTMLElement) => {\r\n let sub = this._getItemSubElement(item)\r\n if (sub) {\r\n if (this._getItemSubType(item) === 'dropdown') {\r\n return sub.classList.contains('show') && sub.hasAttribute('data-popper-placement')\r\n } else {\r\n return item.classList.contains('show')\r\n }\r\n }\r\n\r\n return false\r\n }\r\n\r\n // Test if item dropdown is permanent\r\n private _isItemDropdownPermanent = (item: HTMLElement) => {\r\n return this._getItemOption(item, 'permanent') === true\r\n }\r\n\r\n // Test if item's parent is shown\r\n private _isItemParentShown = (item: HTMLElement) => {\r\n return getElementParents(item, '.menu-item.show').length > 0\r\n }\r\n\r\n // Test of it is item sub element\r\n private _isItemSubElement = (item: HTMLElement) => {\r\n return item.classList.contains('menu-sub')\r\n }\r\n\r\n // Test if item has sub\r\n private _hasItemSub = (item: HTMLElement) => {\r\n return item.classList.contains('menu-item') && item.hasAttribute('data-kt-menu-trigger')\r\n }\r\n\r\n // Get link element\r\n private _getItemLinkElement = (item: HTMLElement) => {\r\n return getElementChild(item, '.menu-link')\r\n }\r\n\r\n // Get toggle element\r\n private _getItemToggleElement = (item: HTMLElement) => {\r\n if (this.triggerElement) {\r\n return this.triggerElement\r\n }\r\n\r\n return this._getItemLinkElement(item)\r\n }\r\n\r\n // Show item dropdown\r\n private _showDropdown = (item: HTMLElement) => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.show') === false) {\r\n return\r\n }\r\n\r\n // Hide all currently shown dropdowns except current one\r\n MenuComponent.hideDropdowns(item)\r\n\r\n // const toggle = this._isTriggerElement(item) ? item : this._getItemLinkElement(item);\r\n const sub = this._getItemSubElement(item)\r\n const width = this._getItemOption(item, 'width')\r\n const height = this._getItemOption(item, 'height')\r\n\r\n let zindex = this.options.dropdown.zindex\r\n const parentZindex = getHighestZindex(item) // update\r\n // Apply a new z-index if dropdown's toggle element or it's parent has greater z-index // update\r\n if (parentZindex !== null && parentZindex >= zindex) {\r\n zindex = parentZindex + 1\r\n }\r\n\r\n if (zindex) {\r\n ElementStyleUtil.set(sub, 'z-index', zindex)\r\n }\r\n\r\n if (width) {\r\n ElementStyleUtil.set(sub, 'width', width)\r\n }\r\n\r\n if (height) {\r\n ElementStyleUtil.set(sub, 'height', height)\r\n }\r\n\r\n this.initDropdownPopper(item, sub)\r\n\r\n item.classList.add('show')\r\n item.classList.add('menu-dropdown')\r\n sub.classList.add('show')\r\n\r\n // Append the sub the the root of the menu\r\n if (this._getItemOption(item, 'overflow') === true) {\r\n document.body.appendChild(sub)\r\n DataUtil.set(item, 'sub', sub)\r\n DataUtil.set(sub, 'item', item)\r\n DataUtil.set(sub, 'menu', this)\r\n } else {\r\n DataUtil.set(sub, 'item', item)\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.shown')\r\n }\r\n\r\n // Init dropdown popper(new)\r\n private initDropdownPopper = (item: HTMLElement, sub: HTMLElement) => {\r\n // Setup popper instance\r\n let reference\r\n const attach = this._getItemOption(item, 'attach') as string\r\n\r\n if (attach) {\r\n if (attach === 'parent') {\r\n reference = item.parentNode\r\n } else {\r\n reference = document.querySelector(attach)\r\n }\r\n } else {\r\n reference = item\r\n }\r\n\r\n if (reference) {\r\n const popper = createPopper(\r\n reference as Element | VirtualElement,\r\n sub,\r\n this._getDropdownPopperConfig(item)\r\n )\r\n DataUtil.set(item, 'popper', popper)\r\n }\r\n }\r\n\r\n // Hide item dropdown\r\n private _hideDropdown = (item: HTMLElement) => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.hide') === false) {\r\n return\r\n }\r\n\r\n const sub = this._getItemSubElement(item)\r\n ElementStyleUtil.set(sub, 'z-index', '')\r\n ElementStyleUtil.set(sub, 'width', '')\r\n ElementStyleUtil.set(sub, 'height', '')\r\n item.classList.remove('show')\r\n item.classList.remove('menu-dropdown')\r\n sub.classList.remove('show')\r\n\r\n // Append the sub back to it's parent\r\n if (this._getItemOption(item, 'overflow') === true) {\r\n if (item.classList.contains('menu-item')) {\r\n item.appendChild(sub)\r\n } else {\r\n insertAfterElement(this.element, item)\r\n }\r\n\r\n DataUtil.remove(item, 'sub')\r\n DataUtil.remove(sub, 'item')\r\n DataUtil.remove(sub, 'menu')\r\n }\r\n\r\n if (DataUtil.has(item, 'popper') === true) {\r\n DataUtil.get(item, 'popper').destroy()\r\n DataUtil.remove(item, 'popper')\r\n }\r\n\r\n // Destroy popper(new)\r\n this.destroyDropdownPopper(item)\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.hidden')\r\n }\r\n\r\n // Destroy dropdown popper(new)\r\n private destroyDropdownPopper = (item: HTMLElement) => {\r\n if (DataUtil.has(item, 'popper') === true) {\r\n DataUtil.get(item, 'popper').destroy()\r\n DataUtil.remove(item, 'popper')\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.hidden')\r\n }\r\n\r\n private _showAccordion = (item: HTMLElement) => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.accordion.show') === false) {\r\n return\r\n }\r\n\r\n if (this.options.accordion.expand === false) {\r\n this._hideAccordions(item)\r\n }\r\n\r\n if (DataUtil.has(item, 'popper') === true) {\r\n this._hideDropdown(item)\r\n }\r\n\r\n item.classList.add('hover') // updateWW\r\n item.classList.add('showing')\r\n\r\n const subElement = this._getItemSubElement(item)\r\n if (subElement) {\r\n const sub = subElement as HTMLElement\r\n slideDown(sub, this.options.accordion.slideSpeed, () => {\r\n item.classList.remove('showing')\r\n item.classList.add('show')\r\n sub.classList.add('show')\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.accordion.shown')\r\n })\r\n }\r\n }\r\n\r\n private _hideAccordion = (item: HTMLElement) => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.accordion.hide') === false) {\r\n return\r\n }\r\n\r\n const sub = this._getItemSubElement(item)\r\n item.classList.add('hiding')\r\n\r\n if (sub) {\r\n slideUp(sub, this.options.accordion.slideSpeed, () => {\r\n item.classList.remove('hiding')\r\n item.classList.remove('show')\r\n sub.classList.remove('show')\r\n item.classList.remove('hover') // update\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.accordion.hidden')\r\n })\r\n }\r\n }\r\n\r\n // Hide all shown accordions of item\r\n private _hideAccordions = (item: HTMLElement) => {\r\n const itemsToHide = this.element.querySelectorAll('.show[data-kt-menu-trigger]')\r\n if (itemsToHide && itemsToHide.length > 0) {\r\n for (var i = 0, len = itemsToHide.length; i < len; i++) {\r\n const itemToHide = itemsToHide[i] as HTMLElement\r\n\r\n if (\r\n this._getItemSubType(itemToHide) === 'accordion' &&\r\n itemToHide !== item &&\r\n item.contains(itemToHide) === false &&\r\n itemToHide.contains(item) === false\r\n ) {\r\n this._hideAccordion(itemToHide)\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Event Handlers\r\n // Reset item state classes if item sub type changed\r\n private _reset = (item: HTMLElement) => {\r\n if (this._hasItemSub(item) === false) {\r\n return\r\n }\r\n\r\n const sub = this._getItemSubElement(item)\r\n\r\n // Reset sub state if sub type is changed during the window resize\r\n if (DataUtil.has(item, 'type') && DataUtil.get(item, 'type') !== this._getItemSubType(item)) {\r\n // updated\r\n item.classList.remove('hover')\r\n item.classList.remove('show')\r\n item.classList.remove('show')\r\n if (sub && sub.removeClass) {\r\n sub.removeClass(sub, 'show')\r\n }\r\n } // updated\r\n }\r\n\r\n // TODO: not done\r\n private _destroy = () => {}\r\n\r\n // Update all item state classes if item sub type changed\r\n private _update = () => {\r\n const items = this.element.querySelectorAll('.menu-item[data-kt-menu-trigger]')\r\n items.forEach((el) => this._reset(el as HTMLElement))\r\n }\r\n\r\n // Hide item sub\r\n private _hide = (item: HTMLElement) => {\r\n if (!item) {\r\n return\r\n }\r\n\r\n if (this._isItemSubShown(item) === false) {\r\n return\r\n }\r\n\r\n if (this._getItemSubType(item) === 'dropdown') {\r\n this._hideDropdown(item)\r\n } else if (this._getItemSubType(item) === 'accordion') {\r\n this._hideAccordion(item)\r\n }\r\n }\r\n\r\n // Show item sub\r\n private _show = (item: HTMLElement) => {\r\n if (!item) {\r\n return\r\n }\r\n\r\n if (this._isItemSubShown(item) === true) {\r\n return\r\n }\r\n\r\n if (this._getItemSubType(item) === 'dropdown') {\r\n this._showDropdown(item) // // show current dropdown\r\n } else if (this._getItemSubType(item) === 'accordion') {\r\n this._showAccordion(item)\r\n }\r\n\r\n // Remember last submenu type\r\n\r\n DataUtil.set(item, 'type', this._getItemSubType(item)) // updated\r\n }\r\n\r\n // Toggle item sub\r\n private _toggle = (item: HTMLElement) => {\r\n if (!item) {\r\n return\r\n }\r\n\r\n if (this._isItemSubShown(item) === true) {\r\n this._hide(item)\r\n } else {\r\n this._show(item)\r\n }\r\n }\r\n\r\n // Mouseout handle\r\n private _mouseout = (element: HTMLElement, e: MouseEvent) => {\r\n const item = this._getItemElement(element)\r\n if (!item) {\r\n return\r\n }\r\n\r\n if (this._getItemOption(item, 'trigger') !== 'hover') {\r\n return\r\n }\r\n\r\n const timeout = setTimeout(() => {\r\n if (DataUtil.get(item, 'hover') === '1') {\r\n this._hide(item)\r\n }\r\n }, this.options.dropdown.hoverTimeout)\r\n\r\n DataUtil.set(item, 'hover', '1')\r\n DataUtil.set(item, 'timeout', timeout)\r\n }\r\n\r\n // Mouseover handle\r\n private _mouseover = (element: HTMLElement, e: MouseEvent) => {\r\n const item = this._getItemElement(element)\r\n if (!item) {\r\n return\r\n }\r\n\r\n if (this._getItemOption(item, 'trigger') !== 'hover') {\r\n return\r\n }\r\n\r\n if (DataUtil.get(item, 'hover') === '1') {\r\n clearTimeout(DataUtil.get(item, 'timeout'))\r\n DataUtil.remove(item, 'hover')\r\n DataUtil.remove(item, 'timeout')\r\n }\r\n\r\n this._show(item)\r\n }\r\n\r\n // Dismiss handler\r\n private _dismiss = (element: HTMLElement, e: Event) => {\r\n const item = this._getItemElement(element)\r\n const items = this._getItemChildElements(item)\r\n //if ( item !== null && _getItemOption(item, 'trigger') === 'click' && _getItemSubType(item) === 'dropdown' ) {\r\n const itemSubType = this._getItemSubType(item)\r\n if (item !== null && itemSubType === 'dropdown') {\r\n this._hide(item) // hide items dropdown\r\n\r\n // Hide all child elements as well\r\n if (items.length > 0) {\r\n for (let i = 0, len = items.length; i < len; i++) {\r\n //if ( _getItemOption(item, 'trigger') === 'click' && _getItemSubType(item) === 'dropdown' ) {\r\n if (items[i] !== null && this._getItemSubType(items[i] as HTMLElement) === 'dropdown') {\r\n this._hide(items[i] as HTMLElement)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Link handler\r\n private _link = (element: HTMLElement, e: Event) => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.link.click') === false) {\r\n return\r\n }\r\n\r\n // Dismiss all shown dropdowns\r\n MenuComponent.hideDropdowns(undefined)\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.link.clicked')\r\n }\r\n\r\n private _click = (element: HTMLElement, e: Event) => {\r\n e.preventDefault()\r\n const item = this._getItemElement(element)\r\n if (this._getItemOption(item, 'trigger') !== 'click') {\r\n return\r\n }\r\n\r\n if (this._getItemOption(item, 'toggle') === false) {\r\n this._show(item)\r\n } else {\r\n this._toggle(item)\r\n }\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n public click = (element: HTMLElement, e: Event) => {\r\n return this._click(element, e)\r\n }\r\n\r\n public link = (element: HTMLElement, e: Event) => {\r\n return this._link(element, e)\r\n }\r\n\r\n public dismiss = (element: HTMLElement, e: Event) => {\r\n return this._dismiss(element, e)\r\n }\r\n\r\n public mouseover = (element: HTMLElement, e: Event) => {\r\n return this._mouseover(element, e as MouseEvent)\r\n }\r\n\r\n public mouseout = (element: HTMLElement, e: Event) => {\r\n return this._mouseout(element, e as MouseEvent)\r\n }\r\n\r\n // General Methods\r\n public getItemTriggerType = (item: HTMLElement) => {\r\n return this._getItemOption(item, 'trigger')\r\n }\r\n\r\n public getItemSubType = (element: HTMLElement) => {\r\n return this._getItemSubType(element)\r\n }\r\n\r\n public show = (item: HTMLElement) => {\r\n return this._show(item)\r\n }\r\n\r\n public hide = (item: HTMLElement) => {\r\n return this._hide(item)\r\n }\r\n\r\n public reset = (item: HTMLElement) => {\r\n return this._reset(item)\r\n }\r\n\r\n public update = () => {\r\n return this._update()\r\n }\r\n\r\n public getElement = () => {\r\n return this.element\r\n }\r\n\r\n public getItemLinkElement = (item: HTMLElement) => {\r\n return this._getItemLinkElement(item)\r\n }\r\n\r\n public getItemToggleElement = (item: HTMLElement) => {\r\n return this._getItemToggleElement(item)\r\n }\r\n\r\n public getItemSubElement = (item: HTMLElement) => {\r\n return this._getItemSubElement(item)\r\n }\r\n\r\n public getItemParentElements = (item: HTMLElement) => {\r\n return this._getItemParentElements(item)\r\n }\r\n\r\n public isItemSubShown = (item: HTMLElement) => {\r\n return this._isItemSubShown(item)\r\n }\r\n\r\n public isItemParentShown = (item: HTMLElement) => {\r\n return this._isItemParentShown(item)\r\n }\r\n\r\n public getTriggerElement = () => {\r\n return this.triggerElement\r\n }\r\n\r\n public isItemDropdownPermanent = (item: HTMLElement) => {\r\n return this._isItemDropdownPermanent(item)\r\n }\r\n\r\n // Accordion Mode Methods\r\n public hideAccordions = (item: HTMLElement) => {\r\n return this._hideAccordions(item)\r\n }\r\n\r\n // Event API\r\n public on = (name: string, handler: any) => {\r\n return EventHandlerUtil.on(this.element, name, handler)\r\n }\r\n\r\n public one = (name: string, handler: any) => {\r\n return EventHandlerUtil.one(this.element, name, handler)\r\n }\r\n\r\n public off = (name: string) => {\r\n return EventHandlerUtil.off(this.element, name)\r\n }\r\n\r\n // public static methods\r\n // Get KTMenu instance by element\r\n public static getInstance = (element: HTMLElement) => {\r\n // Element has menu DOM reference in it's DATA storage\r\n const elementMenu = DataUtil.get(element, 'menu')\r\n if (elementMenu) {\r\n return elementMenu\r\n }\r\n\r\n // Element has .menu parent\r\n const menu = element.closest('.menu')\r\n if (menu) {\r\n const menuData = DataUtil.get(menu as HTMLElement, 'menu')\r\n if (menuData) {\r\n return menuData\r\n }\r\n }\r\n\r\n // Element has a parent with DOM reference to .menu in it's DATA storage\r\n if (element.classList.contains('menu-link')) {\r\n const sub = element.closest('.menu-sub')\r\n if (sub) {\r\n const subMenu = DataUtil.get(sub as HTMLElement, 'menu')\r\n if (subMenu) {\r\n return subMenu\r\n }\r\n }\r\n }\r\n\r\n return null\r\n }\r\n\r\n // Hide all dropdowns and skip one if provided\r\n public static hideDropdowns = (skip: HTMLElement | undefined) => {\r\n const items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]')\r\n\r\n if (items && items.length > 0) {\r\n for (let i = 0, len = items.length; i < len; i++) {\r\n const item = items[i]\r\n const menu = MenuComponent.getInstance(item as HTMLElement)\r\n\r\n if (menu && menu.getItemSubType(item) === 'dropdown') {\r\n if (skip) {\r\n if (\r\n menu.getItemSubElement(item).contains(skip) === false &&\r\n item.contains(skip) === false &&\r\n item !== skip\r\n ) {\r\n menu.hide(item)\r\n }\r\n } else {\r\n menu.hide(item)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n public static updateDropdowns = () => {\r\n const items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]')\r\n if (items && items.length > 0) {\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n var item = items[i]\r\n\r\n if (DataUtil.has(item as HTMLElement, 'popper')) {\r\n DataUtil.get(item as HTMLElement, 'popper').forceUpdate()\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Global handlers\r\n public static createInstances = (selector: string) => {\r\n // Initialize menus\r\n document.querySelectorAll(selector).forEach((el) => {\r\n const menuItem = el as HTMLElement\r\n let menuInstance = MenuComponent.getInstance(menuItem)\r\n if (!menuInstance) {\r\n menuInstance = new MenuComponent(el as HTMLElement, defaultMenuOptions)\r\n }\r\n })\r\n }\r\n\r\n public static initGlobalHandlers = () => {\r\n // Dropdown handler\r\n document.addEventListener('click', (e) => {\r\n const menuItems = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]')\r\n if (menuItems && menuItems.length > 0) {\r\n for (let i = 0; i < menuItems.length; i++) {\r\n const item = menuItems[i] as HTMLElement\r\n const menuObj = MenuComponent.getInstance(item) as MenuComponent\r\n if (menuObj && menuObj.getItemSubType(item) === 'dropdown') {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const menu = menuObj.getElement()\r\n const sub = menuObj.getItemSubElement(item) as HTMLElement\r\n if (item === e.target || item.contains(e.target as HTMLElement)) {\r\n continue\r\n }\r\n\r\n if (sub && (sub === e.target || sub.contains(e.target as HTMLElement))) {\r\n continue\r\n }\r\n menuObj.hide(item)\r\n }\r\n }\r\n }\r\n })\r\n\r\n // Sub toggle handler\r\n DOMEventHandlerUtil.on(\r\n document.body,\r\n '.menu-item[data-kt-menu-trigger] > .menu-link, [data-kt-menu-trigger]:not(.menu-item):not([data-kt-menu-trigger=\"auto\"])',\r\n 'click',\r\n function (this: HTMLElement, e: Event) {\r\n const menu = MenuComponent.getInstance(this) as MenuComponent\r\n if (menu) {\r\n return menu.click(this, e)\r\n }\r\n }\r\n )\r\n\r\n // // Link handler\r\n DOMEventHandlerUtil.on(\r\n document.body,\r\n '.menu-item:not([data-kt-menu-trigger]) > .menu-link',\r\n 'click',\r\n function (this: HTMLElement, e: Event) {\r\n e.stopPropagation()\r\n const menu = MenuComponent.getInstance(this)\r\n if (menu && menu.link) {\r\n return menu.link(this, e)\r\n }\r\n }\r\n )\r\n\r\n // Dismiss handler\r\n DOMEventHandlerUtil.on(\r\n document.body,\r\n '[data-kt-menu-dismiss=\"true\"]',\r\n 'click',\r\n function (this: HTMLElement, e: Event) {\r\n const menu = MenuComponent.getInstance(this) as MenuComponent\r\n if (menu) {\r\n return menu.dismiss(this, e)\r\n }\r\n }\r\n )\r\n\r\n // Mouseover handler\r\n DOMEventHandlerUtil.on(\r\n document.body,\r\n '[data-kt-menu-trigger], .menu-sub',\r\n 'mouseover',\r\n function (this: HTMLElement, e: Event) {\r\n const menu = MenuComponent.getInstance(this) as MenuComponent\r\n if (menu && menu.getItemSubType(this) === 'dropdown') {\r\n return menu.mouseover(this, e)\r\n }\r\n }\r\n )\r\n\r\n // Mouseout handler\r\n DOMEventHandlerUtil.on(\r\n document.body,\r\n '[data-kt-menu-trigger], .menu-sub',\r\n 'mouseout',\r\n function (this: HTMLElement, e: Event) {\r\n const menu = MenuComponent.getInstance(this) as MenuComponent\r\n if (menu && menu.getItemSubType(this) === 'dropdown') {\r\n return menu.mouseout(this, e)\r\n }\r\n }\r\n )\r\n\r\n // Resize handler\r\n window.addEventListener('resize', () => {\r\n let timer\r\n throttle(\r\n timer,\r\n () => {\r\n // Locate and update Drawer instances on window resize\r\n const elements = document.querySelectorAll('[data-kt-menu=\"true\"]')\r\n elements.forEach((el) => {\r\n const menu = MenuComponent.getInstance(el as HTMLElement)\r\n if (menu) {\r\n menu.update()\r\n }\r\n })\r\n },\r\n 200\r\n )\r\n })\r\n }\r\n\r\n public static bootstrap = () => {\r\n MenuComponent.initGlobalHandlers()\r\n MenuComponent.createInstances('[data-kt-menu=\"true\"]')\r\n }\r\n\r\n public static reinitialization = () => {\r\n MenuComponent.createInstances('[data-kt-menu=\"true\"]')\r\n }\r\n\r\n public static createInsance = (\r\n selector: string,\r\n options: MenuOptions = defaultMenuOptions\r\n ): MenuComponent | undefined => {\r\n const element = document.body.querySelector(selector)\r\n if (!element) {\r\n return\r\n }\r\n const item = element as HTMLElement\r\n let menu = MenuComponent.getInstance(item)\r\n if (!menu) {\r\n menu = new MenuComponent(item, options)\r\n }\r\n return menu\r\n }\r\n}\r\n\r\nexport {MenuComponent, defaultMenuOptions}\r\n","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","import {\r\n DataUtil,\r\n ElementStyleUtil,\r\n EventHandlerUtil,\r\n getUniqueIdWithPrefix,\r\n getAttributeValueByBreakpoint,\r\n} from '../_utils/index'\r\n\r\nexport interface FeedbackOptions {\r\n width?: number\r\n placement?: string\r\n content?: string\r\n type?: string\r\n}\r\n\r\nconst defaultFeedbackOptions: FeedbackOptions = {\r\n width: 100,\r\n placement: 'top-center',\r\n content: '',\r\n type: 'popup',\r\n}\r\n\r\nclass FeedbackComponent {\r\n element: HTMLElement\r\n options: FeedbackOptions\r\n instanceUid: string\r\n shown: boolean\r\n\r\n constructor(_element: HTMLElement, options: FeedbackOptions) {\r\n this.element = _element\r\n this.options = Object.assign(defaultFeedbackOptions, options)\r\n this.instanceUid = getUniqueIdWithPrefix('feedback')\r\n this.shown = false\r\n\r\n // Event handlers\r\n this._handlers() // will add in the show popup\r\n DataUtil.set(this.element, 'feedback', this)\r\n }\r\n\r\n private _handlers = () => {\r\n this.element.addEventListener('click', (e: Event) => {\r\n e.preventDefault()\r\n this._go()\r\n })\r\n }\r\n\r\n private _go = () => {}\r\n\r\n private showPopup = () => {\r\n this.element = document.createElement('DIV')\r\n\r\n this.element.classList.add('feedback feedback-popup')\r\n this.element.innerHTML = this.options.content || ''\r\n\r\n if (this.options.placement === 'top-center') {\r\n this.setPopupTopCenterPosition()\r\n }\r\n\r\n document.body.appendChild(this.element)\r\n this.element.classList.add('feedback-shown')\r\n this.shown = true\r\n }\r\n\r\n private setPopupTopCenterPosition = () => {\r\n const width = getAttributeValueByBreakpoint(this.options.width?.toString() || '0')\r\n const height = ElementStyleUtil.get(this.element, 'height')\r\n this.element.classList.add('feedback-top-center')\r\n ElementStyleUtil.set(this.element, 'width', width)\r\n ElementStyleUtil.set(this.element, 'left', '50%')\r\n ElementStyleUtil.set(this.element, 'top', '-' + height)\r\n }\r\n\r\n private hidePopup = () => {\r\n this.element.remove()\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n public show = () => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.feedback.show') === false) {\r\n return\r\n }\r\n\r\n if (this.options.type === 'popup') {\r\n this.showPopup()\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.feedback.shown')\r\n\r\n return this\r\n }\r\n\r\n public hide = () => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.feedback.hide') === false) {\r\n return\r\n }\r\n\r\n if (this.options.type === 'popup') {\r\n this.hidePopup()\r\n }\r\n\r\n this.shown = false\r\n EventHandlerUtil.trigger(this.element, 'kt.feedback.hidden')\r\n return this\r\n }\r\n\r\n public isShown = () => {\r\n return this.isShown\r\n }\r\n\r\n public getElement = () => {\r\n return this.element\r\n }\r\n\r\n // Event API\r\n public on = (name: string, handler: Function) => {\r\n return EventHandlerUtil.on(this.element, name, handler)\r\n }\r\n\r\n public one = (name: string, handler: Function) => {\r\n return EventHandlerUtil.one(this.element, name, handler)\r\n }\r\n\r\n public off = (name: string) => {\r\n return EventHandlerUtil.off(this.element, name)\r\n }\r\n\r\n public trigger = (name: string, event: Event) => {\r\n return EventHandlerUtil.trigger(this.element, name, event)\r\n }\r\n\r\n // Create Instances\r\n public static createInstances(selector: string) {\r\n throw new Error('not implemented')\r\n }\r\n\r\n // Static methods\r\n public static hasInstace(element: HTMLElement) {\r\n throw new Error('not implemented')\r\n }\r\n\r\n public static getInstance(element: HTMLElement) {\r\n throw new Error('not implemented')\r\n }\r\n\r\n public static bootstrap(attr: string = '[data-Feedback]') {\r\n throw new Error('not implemented')\r\n }\r\n}\r\n\r\nexport {FeedbackComponent, defaultFeedbackOptions}\r\n","import {EventHandlerUtil, DataUtil, getUniqueIdWithPrefix, getCSS} from '../_utils/index'\r\n\r\nexport interface IImageInputOptions {}\r\n\r\nexport interface IImageInputQueries {\r\n componentName: string\r\n instanseQuery: string\r\n inputQuery: string\r\n wrapperQuery: string\r\n cancelQuery: string\r\n removeQuery: string\r\n hiddenQuery: string\r\n}\r\n\r\nconst defaultImageInputOptions = {}\r\n\r\nconst defaultImageInputQueires: IImageInputQueries = {\r\n componentName: 'image-input',\r\n instanseQuery: '[data-kt-image-input]',\r\n inputQuery: 'input[type=\"file\"]',\r\n wrapperQuery: '.image-input-wrapper',\r\n cancelQuery: '[data-kt-image-input-action=\"cancel\"]',\r\n removeQuery: '[data-kt-image-input-action=\"remove\"]',\r\n hiddenQuery: 'input[type=\"hidden\"]',\r\n}\r\n\r\nclass ImageInputComponent {\r\n element: HTMLElement\r\n inputElement: HTMLInputElement | null\r\n wrapperElement: HTMLElement | null\r\n cancelElement: HTMLElement | null\r\n removeElement: HTMLElement | null\r\n hiddenElement: HTMLInputElement | null\r\n src: string = ''\r\n options: IImageInputOptions\r\n queries: IImageInputQueries\r\n uid: string\r\n value: string = ''\r\n\r\n constructor(_element: HTMLElement, _options: IImageInputOptions, _queries: IImageInputQueries) {\r\n // Variables\r\n this.options = Object.assign(defaultImageInputOptions, _options)\r\n this.queries = _queries\r\n this.uid = getUniqueIdWithPrefix(this.queries.componentName)\r\n\r\n // Elements\r\n this.element = _element\r\n this.inputElement = this.element.querySelector(this.queries.inputQuery)\r\n this.wrapperElement = this.element.querySelector(this.queries.wrapperQuery)\r\n this.cancelElement = this.element.querySelector(this.queries.cancelQuery)\r\n this.removeElement = this.element.querySelector(this.queries.removeQuery)\r\n this.hiddenElement = this.element.querySelector(this.queries.hiddenQuery)\r\n if (this.wrapperElement) {\r\n this.src = getCSS(this.wrapperElement, 'backgroundImage')\r\n }\r\n\r\n // Event Handlers\r\n this.handlers()\r\n\r\n DataUtil.set(this.element, this.queries.componentName, this)\r\n }\r\n\r\n private handlers(): void {\r\n this.element.addEventListener('change', this._change)\r\n if (this.cancelElement) {\r\n this.cancelElement.addEventListener('click', this._cancel)\r\n }\r\n\r\n if (this.removeElement) {\r\n this.removeElement.addEventListener('click', this._cancel)\r\n }\r\n }\r\n\r\n // Event Handlers\r\n private _change = (e: Event) => {\r\n e.preventDefault()\r\n\r\n if (this.inputElement !== null && this.inputElement.files && this.inputElement.files[0]) {\r\n // Fire change event\r\n if (EventHandlerUtil.trigger(this.element, 'kt.imageinput.change', e) === false) {\r\n return\r\n }\r\n\r\n const reader = new FileReader()\r\n\r\n reader.onload = (e: ProgressEvent) => {\r\n if (this.wrapperElement && e.target) {\r\n this.wrapperElement.style.setProperty('background-image', `url('${e.target.result}')`)\r\n }\r\n }\r\n\r\n reader.readAsDataURL(this.inputElement.files[0])\r\n this.element.classList.add('image-input-changed')\r\n this.element.classList.remove('image-input-empty')\r\n\r\n // Fire removed event\r\n EventHandlerUtil.trigger(this.element, 'kt.imageinput.changed', e)\r\n }\r\n }\r\n\r\n private _cancel = (e: Event) => {\r\n e.preventDefault()\r\n\r\n // Fire cancel event\r\n if (EventHandlerUtil.trigger(this.element, 'kt.imageinput.cancel', e) === false) {\r\n return\r\n }\r\n\r\n this.element.classList.remove('image-input-changed')\r\n this.element.classList.remove('image-input-empty')\r\n this.element.style.setProperty('background-image', this.src)\r\n if (this.inputElement) {\r\n this.inputElement.value = ''\r\n }\r\n\r\n if (this.hiddenElement !== null) {\r\n this.hiddenElement.value = '0'\r\n }\r\n\r\n // Fire canceled event\r\n EventHandlerUtil.trigger(this.element, 'kt.imageinput.canceled', e)\r\n }\r\n\r\n private _remove = (e: Event) => {\r\n e.preventDefault()\r\n\r\n // Fire remove event\r\n if (EventHandlerUtil.trigger(this.element, 'kt.imageinput.remove', e) === false) {\r\n return\r\n }\r\n\r\n this.element.classList.remove('image-input-changed')\r\n this.element.classList.add('image-input-empty')\r\n if (this.wrapperElement) {\r\n this.wrapperElement.style.setProperty('background-image', 'none')\r\n }\r\n\r\n if (this.inputElement) {\r\n this.inputElement.value = ''\r\n }\r\n\r\n if (this.hiddenElement !== null) {\r\n this.hiddenElement.value = '1'\r\n }\r\n\r\n // Fire removed event\r\n EventHandlerUtil.trigger(this.element, 'kt.imageinput.removed', e)\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n public getInputElement(): HTMLInputElement | null {\r\n return this.inputElement\r\n }\r\n\r\n public getElement(): HTMLElement {\r\n return this.element\r\n }\r\n\r\n // Event API\r\n public on = (name: string, handler: Function) => {\r\n return EventHandlerUtil.on(this.element, name, handler)\r\n }\r\n\r\n public one = (name: string, handler: Function) => {\r\n return EventHandlerUtil.one(this.element, name, handler)\r\n }\r\n\r\n public off = (name: string) => {\r\n return EventHandlerUtil.off(this.element, name)\r\n }\r\n\r\n public trigger = (name: string, event: Event) => {\r\n return EventHandlerUtil.trigger(this.element, name, event)\r\n }\r\n\r\n // Static methods\r\n public static getInstance = (\r\n el: HTMLElement,\r\n componentName: string = defaultImageInputQueires.componentName\r\n ) => {\r\n const ImageInput = DataUtil.get(el, componentName)\r\n if (ImageInput) {\r\n return ImageInput\r\n }\r\n\r\n return null\r\n }\r\n\r\n public static createInstances = (\r\n selector: string = defaultImageInputQueires.instanseQuery,\r\n options: IImageInputOptions = defaultImageInputOptions,\r\n queries: IImageInputQueries = defaultImageInputQueires\r\n ) => {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((el) => {\r\n const item = el as HTMLElement\r\n let ImageInput = ImageInputComponent.getInstance(item)\r\n if (!ImageInput) {\r\n ImageInput = new ImageInputComponent(item, options, queries)\r\n }\r\n })\r\n }\r\n\r\n public static createInsance = (\r\n selector: string = defaultImageInputQueires.instanseQuery,\r\n options: IImageInputOptions = defaultImageInputOptions,\r\n queries: IImageInputQueries = defaultImageInputQueires\r\n ): ImageInputComponent | undefined => {\r\n const element = document.body.querySelector(selector)\r\n if (!element) {\r\n return\r\n }\r\n const item = element as HTMLElement\r\n let ImageInput = ImageInputComponent.getInstance(item)\r\n if (!ImageInput) {\r\n ImageInput = new ImageInputComponent(item, options, queries)\r\n }\r\n return ImageInput\r\n }\r\n\r\n public static bootstrap = (selector: string = defaultImageInputQueires.instanseQuery) => {\r\n ImageInputComponent.createInstances(selector)\r\n }\r\n\r\n public static reinitialization = (selector: string = defaultImageInputQueires.instanseQuery) => {\r\n ImageInputComponent.createInstances(selector)\r\n }\r\n}\r\nexport {ImageInputComponent, defaultImageInputOptions, defaultImageInputQueires}\r\n","import {\r\n getElementOffset,\r\n getScrollTop,\r\n getAttributeValueByBreakpoint,\r\n getUniqueIdWithPrefix,\r\n getObjectPropertyValueByKey,\r\n stringSnakeToCamel,\r\n getCSS,\r\n DataUtil,\r\n ElementAnimateUtil,\r\n ElementStyleUtil,\r\n EventHandlerUtil,\r\n} from '../_utils/index'\r\n\r\nexport interface StickyOptions {\r\n offset: number\r\n reverse: boolean\r\n animation: boolean\r\n animationSpeed: string\r\n animationClass: string\r\n}\r\n\r\nconst defaultStickyOptions: StickyOptions = {\r\n offset: 200,\r\n reverse: false,\r\n animation: true,\r\n animationSpeed: '0.3s',\r\n animationClass: 'animation-slide-in-down',\r\n}\r\n\r\nclass StickyComponent {\r\n element: HTMLElement\r\n options: StickyOptions\r\n instanceUid: string\r\n instanceName: string | null = ''\r\n attributeName: string\r\n eventTriggerState: boolean\r\n lastScrollTop: number\r\n\r\n constructor(_element: HTMLElement, options: StickyOptions) {\r\n this.element = _element\r\n this.options = Object.assign(defaultStickyOptions, options)\r\n this.instanceUid = getUniqueIdWithPrefix('sticky')\r\n this.instanceName = this.element.getAttribute('data-kt-sticky-name')\r\n this.attributeName = 'data-kt-sticky-' + this.instanceName\r\n this.eventTriggerState = true\r\n this.lastScrollTop = 0\r\n\r\n // Event Handlers\r\n window.addEventListener('scroll', this.scroll)\r\n\r\n // Initial Launch\r\n this.scroll()\r\n\r\n DataUtil.set(this.element, 'sticky', this)\r\n }\r\n\r\n private scroll = () => {\r\n let offset = this.getOption('offset')\r\n let reverse = this.getOption('reverse')\r\n\r\n // Exit if false\r\n if (offset === false) {\r\n return\r\n }\r\n\r\n let offsetNum = 0\r\n if (typeof offset === 'string') {\r\n offsetNum = parseInt(offset)\r\n }\r\n\r\n const st = getScrollTop()\r\n\r\n // Reverse scroll mode\r\n if (reverse === true) {\r\n // Release on reverse scroll mode\r\n if (st > offsetNum && this.lastScrollTop < st) {\r\n if (document.body.hasAttribute(this.attributeName) === false) {\r\n this.enable()\r\n document.body.setAttribute(this.attributeName, 'on')\r\n }\r\n\r\n if (this.eventTriggerState === true) {\r\n EventHandlerUtil.trigger(this.element, 'kt.sticky.on')\r\n EventHandlerUtil.trigger(this.element, 'kt.sticky.change')\r\n\r\n this.eventTriggerState = false\r\n }\r\n } else {\r\n // Back scroll mode\r\n if (document.body.hasAttribute(this.attributeName)) {\r\n this.disable()\r\n document.body.removeAttribute(this.attributeName)\r\n }\r\n\r\n if (this.eventTriggerState === false) {\r\n EventHandlerUtil.trigger(this.element, 'kt.sticky.off')\r\n EventHandlerUtil.trigger(this.element, 'kt.sticky.change')\r\n\r\n this.eventTriggerState = true\r\n }\r\n }\r\n\r\n this.lastScrollTop = st\r\n return\r\n }\r\n\r\n // Classic scroll mode\r\n if (st > offsetNum) {\r\n if (document.body.hasAttribute(this.attributeName) === false) {\r\n this.enable()\r\n document.body.setAttribute(this.attributeName, 'on')\r\n }\r\n\r\n if (this.eventTriggerState === true) {\r\n EventHandlerUtil.trigger(this.element, 'kt.sticky.on')\r\n EventHandlerUtil.trigger(this.element, 'kt.sticky.change')\r\n this.eventTriggerState = false\r\n }\r\n } else {\r\n // back scroll mode\r\n if (document.body.hasAttribute(this.attributeName) === true) {\r\n this.disable()\r\n document.body.removeAttribute(this.attributeName)\r\n }\r\n\r\n if (this.eventTriggerState === false) {\r\n EventHandlerUtil.trigger(this.element, 'kt.sticky.off')\r\n EventHandlerUtil.trigger(this.element, 'kt.sticky.change')\r\n this.eventTriggerState = true\r\n }\r\n }\r\n }\r\n\r\n private getOption = (name: string) => {\r\n const dataStickyAttr = 'data-kt-sticky-' + name\r\n if (this.element.hasAttribute(dataStickyAttr) === true) {\r\n const attrValueInStr = this.element.getAttribute(dataStickyAttr)\r\n const attrValue = getAttributeValueByBreakpoint(attrValueInStr || '')\r\n if (attrValue !== null && String(attrValue) === 'true') {\r\n return true\r\n } else if (attrValue !== null && String(attrValue) === 'false') {\r\n return false\r\n }\r\n\r\n return attrValue\r\n } else {\r\n const optionName = stringSnakeToCamel(name)\r\n const option = getObjectPropertyValueByKey(this.options, optionName)\r\n if (option) {\r\n return getAttributeValueByBreakpoint(option)\r\n }\r\n }\r\n }\r\n\r\n private disable = () => {\r\n ElementStyleUtil.remove(this.element, 'top')\r\n ElementStyleUtil.remove(this.element, 'width')\r\n ElementStyleUtil.remove(this.element, 'left')\r\n ElementStyleUtil.remove(this.element, 'right')\r\n ElementStyleUtil.remove(this.element, 'z-index')\r\n ElementStyleUtil.remove(this.element, 'position')\r\n }\r\n\r\n private enable = (update: boolean = false) => {\r\n const top = this.getOption('top')\r\n const left = this.getOption('left')\r\n // const right = this.getOption(\"right\");\r\n let width = this.getOption('width')\r\n const zindex = this.getOption('zindex')\r\n\r\n if (update !== true && this.getOption('animation') === true) {\r\n ElementStyleUtil.set(this.element, 'animationDuration', this.getOption('animationSpeed'))\r\n ElementAnimateUtil.animateClass(this.element, 'animation ' + this.getOption('animationClass'))\r\n }\r\n\r\n if (zindex !== null) {\r\n ElementStyleUtil.set(this.element, 'z-index', zindex)\r\n ElementStyleUtil.set(this.element, 'position', 'fixed')\r\n }\r\n\r\n if (top !== null) {\r\n ElementStyleUtil.set(this.element, 'top', top)\r\n }\r\n\r\n if (width !== null && width !== undefined) {\r\n const widthTarget = getObjectPropertyValueByKey(width, 'target')\r\n if (widthTarget) {\r\n const targetElement = document.querySelector(widthTarget)\r\n if (targetElement) {\r\n width = getCSS(targetElement, 'width')\r\n }\r\n }\r\n ElementStyleUtil.set(this.element, 'width', width)\r\n }\r\n\r\n if (left !== null) {\r\n if (String(left).toLowerCase() === 'auto') {\r\n var offsetLeft = getElementOffset(this.element).left\r\n\r\n if (offsetLeft > 0) {\r\n ElementStyleUtil.set(this.element, 'left', String(offsetLeft) + 'px')\r\n }\r\n }\r\n }\r\n }\r\n\r\n public update = () => {\r\n if (document.body.hasAttribute(this.attributeName) === true) {\r\n this.disable()\r\n document.body.removeAttribute(this.attributeName)\r\n this.enable(true)\r\n document.body.setAttribute(this.attributeName, 'on')\r\n }\r\n }\r\n\r\n // Event API\r\n public on = (name: string, callBack: Function) => {\r\n return EventHandlerUtil.on(this.element, name, callBack)\r\n }\r\n\r\n public one = (name: string, callback: Function) => {\r\n return EventHandlerUtil.one(this.element, name, callback)\r\n }\r\n\r\n public off = (name: string) => {\r\n return EventHandlerUtil.off(this.element, name)\r\n }\r\n\r\n public trigger = (name: string) => {\r\n return EventHandlerUtil.trigger(this.element, name)\r\n }\r\n\r\n // Static methods\r\n public static hasInstace(element: HTMLElement) {\r\n return DataUtil.has(element, 'sticky')\r\n }\r\n\r\n public static getInstance(element: HTMLElement) {\r\n if (element !== null && StickyComponent.hasInstace(element)) {\r\n return DataUtil.get(element, 'sticky')\r\n }\r\n }\r\n\r\n // Create Instances\r\n public static createInstances(selector: string) {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((element) => {\r\n const item = element as HTMLElement\r\n let sticky = StickyComponent.getInstance(item)\r\n if (!sticky) {\r\n sticky = new StickyComponent(item, defaultStickyOptions)\r\n }\r\n })\r\n }\r\n\r\n public static createInsance = (\r\n selector: string,\r\n options: StickyOptions = defaultStickyOptions\r\n ): StickyComponent | undefined => {\r\n const element = document.body.querySelector(selector)\r\n if (!element) {\r\n return\r\n }\r\n const item = element as HTMLElement\r\n let sticky = StickyComponent.getInstance(item)\r\n if (!sticky) {\r\n sticky = new StickyComponent(item, options)\r\n }\r\n return sticky\r\n }\r\n\r\n public static bootstrap(attr: string = '[data-kt-sticky=\"true\"]') {\r\n StickyComponent.createInstances(attr)\r\n }\r\n\r\n public static reInitialization(attr: string = '[data-kt-sticky=\"true\"]') {\r\n StickyComponent.createInstances(attr)\r\n }\r\n}\r\n\r\nexport {StickyComponent, defaultStickyOptions}\r\n","/* eslint-disable array-callback-return */\n/* eslint-disable no-useless-escape */\nimport {DataUtil} from '../_utils/index'\n\nexport interface IPasswordMeterOptions {\n minLength: number\n checkUppercase: boolean\n checkLowercase: boolean\n checkDigit: boolean\n checkChar: boolean\n scoreHighlightClass: string\n}\n\nexport interface IPasswordMeterQueries {\n componentName: string\n instanseQuery: string\n inputQuery: string\n visibilityQuery: string\n highlightQuery: string\n}\n\nconst defaultPasswordMeterOptions = {\n minLength: 8,\n checkUppercase: true,\n checkLowercase: true,\n checkDigit: true,\n checkChar: true,\n scoreHighlightClass: 'active',\n}\n\nconst defaultPasswordMeterQueires: IPasswordMeterQueries = {\n componentName: 'password-meter',\n instanseQuery: '[data-kt-password-meter]',\n inputQuery: 'input[type]',\n visibilityQuery: '[data-kt-password-meter-control=\"visibility\"]',\n highlightQuery: '[data-kt-password-meter-control=\"highlight\"]',\n}\n\nclass PasswordMeterComponent {\n element: HTMLElement\n inputElement: HTMLInputElement | null\n visibilityElement: HTMLElement | null\n highlightElement: HTMLElement | null\n options: IPasswordMeterOptions\n queries: IPasswordMeterQueries\n score: number\n checkSteps: number\n\n constructor(\n _element: HTMLElement,\n _options: IPasswordMeterOptions,\n _queries: IPasswordMeterQueries\n ) {\n this.element = _element\n this.options = Object.assign(defaultPasswordMeterOptions, _options)\n this.queries = _queries\n this.score = 0\n this.checkSteps = 5\n\n // Elements\n this.inputElement = this.element.querySelector(this.queries.inputQuery)\n this.visibilityElement = this.element.querySelector(this.queries.visibilityQuery)\n this.highlightElement = this.element.querySelector(this.queries.highlightQuery)\n\n // Event Handlers\n this.handlers()\n\n DataUtil.set(this.element, this.queries.componentName, this)\n }\n\n private handlers(): void {\n if (this.inputElement) {\n this.inputElement.addEventListener('input', () => {\n this.check()\n })\n }\n\n if (this.visibilityElement) {\n this.visibilityElement.addEventListener('click', () => {\n this.visitbility()\n })\n }\n }\n\n private visitbility() {\n if (this.visibilityElement && this.inputElement) {\n const visibleIcon = this.visibilityElement.querySelector(\n 'i:not(.d-none), .svg-icon:not(.d-none)'\n )\n\n const hiddenIcon = this.visibilityElement.querySelector('i.d-none, .svg-icon.d-none')\n\n const typeAttr = this.inputElement.getAttribute('type') || ''\n\n if (typeAttr === 'password') {\n this.inputElement.setAttribute('type', 'text')\n } else {\n this.inputElement.setAttribute('type', 'password')\n }\n\n visibleIcon?.classList.add('d-none')\n hiddenIcon?.classList.remove('d-none')\n\n this.inputElement.focus()\n }\n }\n\n private checkScore(): number {\n return 0\n }\n\n private checkLength(): boolean {\n if (this.inputElement) {\n return this.inputElement.value.length >= this.options.minLength // 20 score\n }\n\n return false\n }\n\n private checkLowerCase(): boolean {\n const val = this.inputElement ? this.inputElement.value : ''\n return /[a-z]/.test(val) // 20 score\n }\n\n private checkUppercase(): boolean {\n const val = this.inputElement ? this.inputElement.value : ''\n return /[A-Z]/.test(val) // 20 score\n }\n\n private checkDigit(): boolean {\n const val = this.inputElement ? this.inputElement.value : ''\n return /[0-9]/.test(val) // 20 score\n }\n\n private checkChar(): boolean {\n const val = this.inputElement ? this.inputElement.value : ''\n return /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g.test(val) // 20 score\n }\n\n private getCheckScore(): number {\n let count = 1\n if (this.options.checkUppercase) {\n count++\n }\n\n if (this.options.checkLowercase) {\n count++\n }\n\n if (this.options.checkDigit) {\n count++\n }\n\n if (this.options.checkChar) {\n count++\n }\n\n this.checkSteps = count\n return 100 / this.checkSteps\n }\n\n private highlight() {\n const items = this.highlightElement\n ? [].slice.call(this.highlightElement.querySelectorAll('div'))\n : []\n const total = items.length\n let index = 0\n const checkScore = this.getCheckScore()\n const score = this.getScore()\n\n items.map((item: HTMLElement) => {\n index++\n if (checkScore * index * (this.checkSteps / total) <= score) {\n item.classList.add('active')\n } else {\n item.classList.remove('active')\n }\n })\n }\n\n ///////////////////////\n // ** Public API ** //\n ///////////////////////\n public reset = () => {\n this.score = 0\n this.highlight()\n }\n\n public getScore() {\n return this.score\n }\n\n public check() {\n let score = 0\n const checkScore = this.checkScore()\n if (this.checkLength()) {\n score = score + checkScore\n }\n\n if (this.options.checkUppercase && this.checkLowerCase()) {\n score = score + checkScore\n }\n\n if (this.options.checkLowercase && this.checkUppercase()) {\n score = score + checkScore\n }\n\n if (this.options.checkDigit && this.checkDigit()) {\n score = score + checkScore\n }\n\n if (this.options.checkChar && this.checkChar()) {\n score = score + checkScore\n }\n\n this.score = score\n this.highlight()\n }\n\n // Static methods\n public static getInstance = (\n el: HTMLElement,\n componentName: string = defaultPasswordMeterQueires.componentName\n ) => {\n const passwordMeter = DataUtil.get(el, componentName)\n if (passwordMeter) {\n return passwordMeter\n }\n\n return null\n }\n\n public static createInstances = (\n selector: string = defaultPasswordMeterQueires.instanseQuery,\n options: IPasswordMeterOptions = defaultPasswordMeterOptions,\n queries: IPasswordMeterQueries = defaultPasswordMeterQueires\n ) => {\n const elements = document.body.querySelectorAll(selector)\n elements.forEach((el) => {\n const item = el as HTMLElement\n let passwordMeter = PasswordMeterComponent.getInstance(item)\n if (!passwordMeter) {\n passwordMeter = new PasswordMeterComponent(item, options, queries)\n }\n })\n }\n\n public static createInsance = (\n selector: string = defaultPasswordMeterQueires.instanseQuery,\n options: IPasswordMeterOptions = defaultPasswordMeterOptions,\n queries: IPasswordMeterQueries = defaultPasswordMeterQueires\n ): PasswordMeterComponent | undefined => {\n const element = document.body.querySelector(selector)\n if (!element) {\n return\n }\n const item = element as HTMLElement\n let passwordMeter = PasswordMeterComponent.getInstance(item)\n if (!passwordMeter) {\n passwordMeter = new PasswordMeterComponent(item, options, queries)\n }\n return passwordMeter\n }\n\n public static bootstrap = (selector: string = defaultPasswordMeterQueires.instanseQuery) => {\n PasswordMeterComponent.createInstances(selector)\n }\n\n public static reinitialization = (\n selector: string = defaultPasswordMeterQueires.instanseQuery\n ) => {\n PasswordMeterComponent.createInstances(selector)\n }\n}\nexport {PasswordMeterComponent, defaultPasswordMeterOptions, defaultPasswordMeterQueires}\n","import {\n DataUtil,\n getAttributeValueByBreakpoint,\n stringSnakeToCamel,\n getObjectPropertyValueByKey,\n EventHandlerUtil,\n throttle,\n} from '../_utils/index'\n\nexport interface IPlaceOptions {\n mode: string\n}\n\nexport interface IPlaceQueries {\n componentName: string\n instanseQuery: string\n attrQuery: string\n}\n\nconst defaultPlaceOptions: IPlaceOptions = {\n mode: 'append',\n}\n\nconst defaultPlaceQueires: IPlaceQueries = {\n componentName: 'place',\n instanseQuery: '[data-kt-place=\"true\"]',\n attrQuery: 'data-kt-place-',\n}\n\nclass PlaceComponent {\n element: HTMLElement\n options: IPlaceOptions\n queries: IPlaceQueries\n\n constructor(_element: HTMLElement, _options: IPlaceOptions, _queries: IPlaceQueries) {\n this.element = _element\n this.options = Object.assign(defaultPlaceOptions, _options)\n this.queries = _queries\n\n // Initial update\n this.update()\n\n DataUtil.set(this.element, this.queries.componentName, this)\n }\n\n private getOption(name: string) {\n const attr = this.element.getAttribute(`${this.queries.attrQuery}${name}`)\n if (attr) {\n let value = getAttributeValueByBreakpoint(attr)\n if (attr != null && String(value) === 'true') {\n return true\n } else if (value !== null && String(value) === 'false') {\n return false\n }\n return value\n } else {\n const optionName = stringSnakeToCamel(name)\n const option = getObjectPropertyValueByKey(this.options, optionName)\n if (option) {\n return getAttributeValueByBreakpoint(option)\n } else {\n return null\n }\n }\n }\n\n ///////////////////////\n // ** Public API ** //\n ///////////////////////\n public update = () => {\n const parentSelector = this.getOption('parent')?.toString()\n const mode = this.getOption('mode')\n const parentElement = parentSelector ? document.querySelector(parentSelector) : null\n\n if (parentElement && this.element.parentNode !== parentElement) {\n if (mode === 'prepend') {\n parentElement.prepend(this.element)\n } else if (mode === 'append') {\n parentElement.append(this.element)\n }\n }\n }\n\n // Event API\n public on = (name: string, handler: Function) => {\n return EventHandlerUtil.on(this.element, name, handler)\n }\n\n public one = (name: string, handler: Function) => {\n return EventHandlerUtil.one(this.element, name, handler)\n }\n\n public off = (name: string) => {\n return EventHandlerUtil.off(this.element, name)\n }\n\n public trigger = (name: string, event: Event) => {\n return EventHandlerUtil.trigger(this.element, name, event)\n }\n\n // Static methods\n public static getInstance = (\n el: HTMLElement,\n componentName: string = defaultPlaceQueires.componentName\n ): PlaceComponent | null => {\n const place = DataUtil.get(el, componentName)\n if (place) {\n return place as PlaceComponent\n }\n\n return null\n }\n\n public static createInstances = (\n selector: string = defaultPlaceQueires.instanseQuery,\n options: IPlaceOptions = defaultPlaceOptions,\n queries: IPlaceQueries = defaultPlaceQueires\n ) => {\n const elements = document.body.querySelectorAll(selector)\n elements.forEach((el) => {\n const item = el as HTMLElement\n let place = PlaceComponent.getInstance(item)\n if (!place) {\n place = new PlaceComponent(item, options, queries)\n }\n })\n }\n\n public static createInsance = (\n selector: string = defaultPlaceQueires.instanseQuery,\n options: IPlaceOptions = defaultPlaceOptions,\n queries: IPlaceQueries = defaultPlaceQueires\n ): PlaceComponent | undefined => {\n const element = document.body.querySelector(selector)\n if (!element) {\n return\n }\n const item = element as HTMLElement\n let place = PlaceComponent.getInstance(item)\n if (!place) {\n place = new PlaceComponent(item, options, queries)\n }\n return place\n }\n\n public static bootstrap = (selector: string = defaultPlaceQueires.instanseQuery) => {\n PlaceComponent.createInstances(selector)\n }\n\n public static reinitialization = (selector: string = defaultPlaceQueires.instanseQuery) => {\n PlaceComponent.createInstances(selector)\n }\n}\n\n// Window resize handler\nwindow.addEventListener('resize', function () {\n let timer\n\n throttle(\n timer,\n () => {\n // Locate and update Offcanvas instances on window resize\n const elements = document.querySelectorAll(defaultPlaceQueires.instanseQuery)\n elements.forEach((el) => {\n const place = PlaceComponent.getInstance(el as HTMLElement)\n if (place) {\n place.update()\n }\n })\n },\n 200\n )\n})\n\nexport {PlaceComponent, defaultPlaceOptions, defaultPlaceQueires}\n","import {\r\n EventHandlerUtil,\r\n DataUtil,\r\n getBreakpoint,\r\n getAttributeValueByBreakpoint,\r\n stringSnakeToCamel,\r\n getObjectPropertyValueByKey,\r\n getViewPort,\r\n isVisibleElement,\r\n throttle,\r\n} from '../_utils/index'\r\n\r\nimport {MenuComponent, defaultMenuOptions} from './MenuComponent'\r\n\r\nexport interface ISearchOptions {\r\n minLength: number // Miniam text lenght to query search\r\n keypress: boolean // Enable search on keypress\r\n enter: boolean // Enable search on enter key press\r\n layout: 'menu' | 'inline' // Use 'menu' or 'inline' layout options to display search results\r\n responsive?: number // Pass integer value or bootstrap compatible breakpoint key(sm,md,lg,xl,xxl) to enable reponsive form mode for device width below the breakpoint value\r\n showOnFocus: boolean // Always show menu on input focus\r\n}\r\n\r\nexport interface ISearchQueries {\r\n componentName: string\r\n instanseQuery: string\r\n attrQuery: string\r\n}\r\n\r\nconst defaultSearchOptions: ISearchOptions = {\r\n minLength: 2, // Miniam text lenght to query search\r\n keypress: true, // Enable search on keypress\r\n enter: true, // Enable search on enter key press\r\n layout: 'menu', // Use 'menu' or 'inline' layout options to display search results\r\n showOnFocus: true, // Always show menu on input focus\r\n}\r\n\r\nconst defaultSearchQueires: ISearchQueries = {\r\n componentName: 'search',\r\n instanseQuery: '[data-kt-search]',\r\n attrQuery: 'data-kt-search-',\r\n}\r\n\r\nclass SearchComponent {\r\n element: HTMLElement\r\n contentElement: HTMLElement\r\n formElement: HTMLFormElement\r\n inputElement: HTMLInputElement\r\n spinnerElement: HTMLElement\r\n clearElement: HTMLElement\r\n toggleElement: HTMLElement\r\n submitElement: HTMLElement\r\n toolbarElement: HTMLElement\r\n resultsElement: HTMLElement\r\n suggestionElement: HTMLElement\r\n emptyElement: HTMLElement\r\n layout: any\r\n\r\n options: ISearchOptions\r\n queries: ISearchQueries\r\n\r\n processing: boolean = false\r\n menuObject: MenuComponent | undefined\r\n\r\n constructor(_element: HTMLElement, _options: ISearchOptions, _queries: ISearchQueries) {\r\n // Variables\r\n this.options = Object.assign(defaultSearchOptions, _options)\r\n this.queries = _queries\r\n\r\n // Elements\r\n this.element = _element\r\n this.contentElement = this._getElement('content') as HTMLElement\r\n this.formElement = this._getElement('form') as HTMLFormElement\r\n this.inputElement = this._getElement('input') as HTMLInputElement\r\n this.spinnerElement = this._getElement('spinner') as HTMLElement\r\n this.clearElement = this._getElement('clear') as HTMLElement\r\n this.toggleElement = this._getElement('toggle') as HTMLElement\r\n this.submitElement = this._getElement('submit') as HTMLElement\r\n this.toolbarElement = this._getElement('toolbar') as HTMLElement\r\n\r\n this.resultsElement = this._getElement('results') as HTMLElement\r\n this.suggestionElement = this._getElement('suggestion') as HTMLElement\r\n this.emptyElement = this._getElement('empty') as HTMLElement\r\n\r\n // Layout\r\n this.layout = this.getOption('layout')\r\n if (this.layout === 'menu') {\r\n this.menuObject = new MenuComponent(this.contentElement, defaultMenuOptions)\r\n }\r\n\r\n // Update\r\n this.update()\r\n\r\n // Event Handlers\r\n this.handlers()\r\n\r\n DataUtil.set(this.element, this.queries.componentName, this)\r\n }\r\n\r\n private _getElement = (name: string) => {\r\n return this.element.querySelector('[data-kt-search-element=\"' + name + '\"]')\r\n }\r\n\r\n // Get option\r\n private getOption = (name: string) => {\r\n const attr = this.element.getAttribute(`${this.queries.attrQuery}${name}`)\r\n if (attr) {\r\n let value = getAttributeValueByBreakpoint(attr)\r\n\r\n if (value !== null && String(value) === 'true') {\r\n return true\r\n } else if (value !== null && String(value) === 'false') {\r\n return false\r\n }\r\n\r\n return value\r\n } else {\r\n const optionName = stringSnakeToCamel(name)\r\n\r\n const option = getObjectPropertyValueByKey(this.options, optionName)\r\n if (option) {\r\n return getAttributeValueByBreakpoint(option)\r\n } else {\r\n return null\r\n }\r\n }\r\n }\r\n\r\n // Check if responsive form mode is enabled\r\n private getResponsiveFormMode = () => {\r\n const responsive = this.getOption('responsive') as string\r\n const width = getViewPort().width\r\n\r\n if (!responsive) {\r\n return null\r\n }\r\n\r\n const breakpoint = getBreakpoint(responsive)\r\n let breakPointNum = -1\r\n if (!breakpoint) {\r\n breakPointNum = parseInt(responsive)\r\n } else {\r\n breakPointNum = +breakpoint\r\n }\r\n\r\n if (width < breakPointNum) {\r\n return 'on'\r\n } else {\r\n return 'off'\r\n }\r\n }\r\n\r\n // Focus\r\n private focus = () => {\r\n this.element.classList.add('focus')\r\n\r\n if (\r\n this.getOption('show-on-focus') === true ||\r\n this.inputElement.value.length >= this.options.minLength\r\n ) {\r\n this.show()\r\n }\r\n }\r\n\r\n // Blur\r\n private blur = () => {\r\n this.element.classList.remove('focus')\r\n }\r\n\r\n // Enter\r\n private enter = (e: KeyboardEvent) => {\r\n const key = e.charCode || e.keyCode || 0\r\n\r\n if (key === 13) {\r\n e.preventDefault()\r\n\r\n this.search()\r\n }\r\n }\r\n\r\n // Input\r\n private input = () => {\r\n if (this.getOption('min-length')) {\r\n const minLength = parseInt(this.getOption('min-length') as string)\r\n\r\n if (this.inputElement.value.length >= minLength) {\r\n this.search()\r\n } else if (this.inputElement.value.length === 0) {\r\n this.clear()\r\n }\r\n }\r\n }\r\n\r\n private handlers(): void {\r\n // Focus\r\n this.inputElement.addEventListener('focus', this.focus)\r\n\r\n // Blur\r\n this.inputElement.addEventListener('blur', this.blur)\r\n\r\n // Keypress\r\n if (this.getOption('keypress') === true) {\r\n this.inputElement.addEventListener('input', this.input)\r\n }\r\n\r\n // Submit\r\n if (this.submitElement) {\r\n this.submitElement.addEventListener('click', this.search)\r\n }\r\n\r\n // Enter\r\n if (this.getOption('enter') === true) {\r\n this.inputElement.addEventListener('keypress', this.enter)\r\n }\r\n\r\n // Clear\r\n if (this.clearElement) {\r\n this.clearElement.addEventListener('click', this.clear)\r\n }\r\n\r\n // Menu\r\n if (this.menuObject) {\r\n // Toggle menu\r\n if (this.toggleElement) {\r\n this.toggleElement.addEventListener('click', this.show)\r\n\r\n this.menuObject.on('kt.menu.dropdown.show', function () {\r\n // @ts-ignore\r\n if (isVisibleElement(this.toggleElement)) {\r\n // @ts-ignore\r\n this.toggleElement.classList.add('active')\r\n // @ts-ignore\r\n this.toggleElement.classList.add('show')\r\n }\r\n })\r\n\r\n this.menuObject.on('kt.menu.dropdown.hide', function () {\r\n // @ts-ignore\r\n if (isVisibleElement(this.toggleElement)) {\r\n // @ts-ignore\r\n this.toggleElement.classList.remove('active')\r\n // @ts-ignore\r\n this.toggleElement.classList.remove('show')\r\n }\r\n })\r\n }\r\n\r\n this.menuObject.on('kt.menu.dropdown.shown', function () {\r\n // @ts-ignore\r\n this.inputElement.focus()\r\n })\r\n }\r\n\r\n // Window resize handling\r\n window.addEventListener('resize', () => {\r\n let timer\r\n\r\n throttle(\r\n timer,\r\n () => {\r\n this.update()\r\n },\r\n 200\r\n )\r\n })\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n // Update\r\n public update = () => {\r\n // Handle responsive form\r\n if (this.layout === 'menu') {\r\n let responsiveFormMode = this.getResponsiveFormMode()\r\n\r\n if (responsiveFormMode === 'on' && this.contentElement.contains(this.formElement) === false) {\r\n this.contentElement.prepend(this.formElement)\r\n this.formElement.classList.remove('d-none')\r\n } else if (\r\n responsiveFormMode === 'off' &&\r\n this.contentElement.contains(this.formElement) === true\r\n ) {\r\n this.element.prepend(this.formElement)\r\n this.formElement.classList.add('d-none')\r\n }\r\n }\r\n }\r\n\r\n // Show menu\r\n public show = () => {\r\n if (this.menuObject) {\r\n this.update()\r\n\r\n this.menuObject.show(this.element)\r\n }\r\n }\r\n\r\n // Hide menu\r\n public hide = () => {\r\n if (this.menuObject) {\r\n this.update()\r\n\r\n this.menuObject.hide(this.element)\r\n }\r\n }\r\n\r\n // Search\r\n public search = () => {\r\n if (this.processing === false) {\r\n // Show search spinner\r\n if (this.spinnerElement) {\r\n this.spinnerElement.classList.remove('d-none')\r\n }\r\n\r\n // Hide search clear button\r\n if (this.clearElement) {\r\n this.clearElement.classList.add('d-none')\r\n }\r\n\r\n // Hide search toolbar\r\n if (this.toolbarElement) {\r\n this.toolbarElement.classList.add('d-none')\r\n }\r\n\r\n // Focus input\r\n this.inputElement.focus()\r\n\r\n this.processing = true\r\n EventHandlerUtil.trigger(this.element, 'kt.search.process')\r\n }\r\n }\r\n\r\n // Complete\r\n public complete = () => {\r\n if (this.spinnerElement) {\r\n this.spinnerElement.classList.add('d-none')\r\n }\r\n\r\n // Show search toolbar\r\n if (this.clearElement) {\r\n this.clearElement.classList.remove('d-none')\r\n }\r\n\r\n if (this.inputElement.value.length === 0) {\r\n this.clear()\r\n }\r\n\r\n // Focus input\r\n this.inputElement.focus()\r\n\r\n this.show()\r\n\r\n this.processing = false\r\n }\r\n\r\n // Clear\r\n public clear = () => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.search.clear') === false) {\r\n return\r\n }\r\n\r\n // Clear and focus input\r\n this.inputElement.value = ''\r\n this.inputElement.focus()\r\n\r\n // Hide clear icon\r\n if (this.clearElement) {\r\n this.clearElement.classList.add('d-none')\r\n }\r\n\r\n // Show search toolbar\r\n if (this.toolbarElement) {\r\n this.toolbarElement.classList.remove('d-none')\r\n }\r\n\r\n // Hide menu\r\n if (this.getOption('show-on-focus') === false) {\r\n this.hide()\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.search.cleared')\r\n }\r\n\r\n public isProcessing = () => {\r\n return this.processing\r\n }\r\n\r\n public getQuery = () => {\r\n return this.inputElement.value\r\n }\r\n\r\n public getMenu = () => {\r\n return this.menuObject\r\n }\r\n\r\n public getFormElement = () => {\r\n return this.formElement\r\n }\r\n\r\n public getInputElement(): HTMLInputElement {\r\n return this.inputElement\r\n }\r\n\r\n public getContentElement(): HTMLElement {\r\n return this.contentElement\r\n }\r\n\r\n public getElement(): HTMLElement {\r\n return this.element\r\n }\r\n\r\n // Event API\r\n public on = (name: string, handler: Function) => {\r\n return EventHandlerUtil.on(this.element, name, handler)\r\n }\r\n\r\n public one = (name: string, handler: Function) => {\r\n return EventHandlerUtil.one(this.element, name, handler)\r\n }\r\n\r\n public off = (name: string) => {\r\n return EventHandlerUtil.off(this.element, name)\r\n }\r\n\r\n // Static methods\r\n public static getInstance = (\r\n el: HTMLElement,\r\n componentName: string = defaultSearchQueires.componentName\r\n ) => {\r\n const Search = DataUtil.get(el, componentName)\r\n if (Search) {\r\n return Search\r\n }\r\n\r\n return null\r\n }\r\n\r\n public static createInstances = (\r\n selector: string = defaultSearchQueires.instanseQuery,\r\n options: ISearchOptions = defaultSearchOptions,\r\n queries: ISearchQueries = defaultSearchQueires\r\n ) => {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((el) => {\r\n const item = el as HTMLElement\r\n let Search = SearchComponent.getInstance(item)\r\n if (!Search) {\r\n Search = new SearchComponent(item, options, queries)\r\n }\r\n })\r\n }\r\n\r\n public static createInsance = (\r\n selector: string = defaultSearchQueires.instanseQuery,\r\n options: ISearchOptions = defaultSearchOptions,\r\n queries: ISearchQueries = defaultSearchQueires\r\n ): SearchComponent | undefined => {\r\n const element = document.body.querySelector(selector)\r\n if (!element) {\r\n return\r\n }\r\n const item = element as HTMLElement\r\n let Search = SearchComponent.getInstance(item)\r\n if (!Search) {\r\n Search = new SearchComponent(item, options, queries)\r\n }\r\n return Search\r\n }\r\n\r\n public static bootstrap = (selector: string = defaultSearchQueires.instanseQuery) => {\r\n SearchComponent.createInstances(selector)\r\n }\r\n\r\n public static reinitialization = (selector: string = defaultSearchQueires.instanseQuery) => {\r\n SearchComponent.createInstances(selector)\r\n }\r\n}\r\nexport {SearchComponent, defaultSearchOptions, defaultSearchQueires}\r\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=7ca588f3&lang=scss\"","/* eslint-disable no-useless-escape */\r\n// DOCS: https://javascript.info/cookie\r\nexport class CookieComponent {\r\n /**\r\n * Returns the cookie with the given name, or undefined if not found\r\n *\r\n * @param {string} name - cookie name\r\n * @returns string | null\r\n */\r\n public static get(name: string): string | undefined {\r\n let matches = document.cookie.match(\r\n new RegExp('(?:^|; )' + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + '=([^;]*)')\r\n )\r\n return matches ? decodeURIComponent(matches[1]) : undefined\r\n }\r\n\r\n /**\r\n * Please note that a cookie value is encoded,\r\n * so getCookie uses a built-in decodeURIComponent function to decode it.\r\n *\r\n * @param {string} name - cookie name\r\n * @param {string | number | boolean} value - cookie value\r\n * @param {any} cookieOptions - cookie options\r\n * @returns void\r\n */\r\n public static set(name: string, value: string | number | boolean, cookieOptions: any): void {\r\n const options = {\r\n path: '/',\r\n // add other defaults here if necessary\r\n ...cookieOptions,\r\n }\r\n\r\n if (options.expires instanceof Date) {\r\n options.expires = options.expires.toUTCString()\r\n }\r\n\r\n let updatedCookie = encodeURIComponent(name) + '=' + encodeURIComponent(value)\r\n\r\n for (let optionKey in options) {\r\n updatedCookie += '; ' + optionKey\r\n let optionValue = options[optionKey]\r\n if (optionValue !== true) {\r\n updatedCookie += '=' + optionValue\r\n }\r\n }\r\n\r\n document.cookie = updatedCookie\r\n }\r\n\r\n /**\r\n * To delete a cookie, we can call it with a negative expiration date\r\n *\r\n * @param {string} name\r\n */\r\n public static delete(name: string): void {\r\n CookieComponent.set(name, '', {\r\n 'max-age': -1,\r\n })\r\n }\r\n}\r\n","import Echo from \"laravel-echo\";\nimport JwtService from \"@/core/services/JwtService\";\nimport store from \"@/store\";\nimport mitt from \"mitt\";\nimport { Actions } from \"@/store/enums/StoreEnums\";\n\nexport const eventBus = new mitt();\n\nwindow.Pusher = require(\"pusher-js\");\n\nfunction createEchoInstance() {\n window.Echo = new Echo({\n authEndpoint: process.env.VUE_APP_PUSHER_AUTH_ENDPOINT,\n broadcaster: \"pusher\",\n key: process.env.VUE_APP_PUSHER_KEY,\n cluster: process.env.VUE_APP_PUSHER_CLUSTER,\n forceTLS: true,\n auth: {\n headers: {\n Authorization: \"Bearer \" + JwtService.getToken()\n }\n }\n });\n}\n\ncreateEchoInstance();\n\nfunction handleNewChatMessage(event) {\n eventBus.emit(\"NewChatMessage\", event);\n store.dispatch(\"LiveChatModule/handleNewMessageFromWebSocket\", event);\n}\n\nfunction handleMessageReadByUser(event) {\n eventBus.emit(\"MessageReadByUser\", event.chat_id);\n store.dispatch(\"LiveChatModule/handleChatMessageRead\", event.chat_id);\n}\n\nexport function connectToLiveChat(userId) {\n try {\n if (!window.Echo) {\n createEchoInstance();\n }\n window.Echo.private(\"live-chat.\" + userId)\n .listen(\".NewChatMessage\", ev => handleNewChatMessage(ev))\n .listen(\".MessageReadByUser\", ev => handleMessageReadByUser(ev))\n .subscribed(() => {\n store.dispatch(Actions.SET_WEBSOCKET_CONNECTED, true);\n });\n } catch (e) {\n console.log(e);\n }\n}\n\nexport function leaveLiveChat() {\n if (window.Echo) {\n window.Echo.disconnect();\n delete window.Echo;\n }\n}\n\nexport function setReadStatus(userId, chatId) {\n window.Echo.private(\"live-chat.\" + userId).whisper(\"message-read-by-user\", {\n userId: userId,\n chatId: chatId\n });\n}\n","const ID_TOKEN_KEY = \"id_token\" as string;\r\n\r\n/**\r\n * @description get token form localStorage\r\n */\r\nexport const getToken = (): string | null => {\r\n return window.localStorage.getItem(ID_TOKEN_KEY);\r\n};\r\n\r\n/**\r\n * @description save token into localStorage\r\n * @param token: string\r\n */\r\nexport const saveToken = (token: string): void => {\r\n window.localStorage.setItem(ID_TOKEN_KEY, token);\r\n};\r\n\r\n/**\r\n * @description remove token form localStorage\r\n */\r\nexport const destroyToken = (): void => {\r\n window.localStorage.removeItem(ID_TOKEN_KEY);\r\n};\r\n\r\nexport default { getToken, saveToken, destroyToken };\r\n","import ApiService from \"../../../core/services/ApiService\";\nimport Swal from \"sweetalert2\";\n\n/* eslint-disable */\nfunction initialState() {\n return {\n dresscodesList: [],\n loading: false,\n error: '',\n pagination: {\n current_page: 1,\n last_page: 1\n }\n }\n}\n\nconst getters = {\n dresscodesList: state => state.dresscodesList,\n getPaginationData: state => state.pagination,\n loading: state => state.loading\n}\n\nconst actions = {\n fetchData({commit, state}) {\n commit('setLoading', true);\n\n ApiService.get('api/v2',\n 'dresscodes?page=' + state.pagination.current_page + '&perPage=10')\n .then(\n response => {\n commit('setDresscodesList' , response.data.data)\n commit(\"setPagination\", response.data)\n }).catch(error => {\n commit('setError', error)\n console.log(error)\n }).finally(() => {\n commit('setLoading' , false)\n });\n },\n\n createNew({commit, dispatch }, payload) {\n ApiService\n .post(\n \"/api/v2/dresscodes\" , payload\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Dress code created successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n\n update({ commit , dispatch}, payload) {\n commit(\"setLoading\", true);\n ApiService\n .update(\n \"/api/v2/dresscodes\", payload.id, payload.values\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Dress code edited successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n commit(\"setLoading\", false)\n });\n },\n\n destroyData({commit, dispatch}, id) {\n ApiService\n .delete(\n \"/api/v2/dresscodes/\" + id\n )\n .then(() => {\n Swal.fire({\n position: 'top-end',\n icon: 'success',\n title: `Dress code deleted successfully`,\n showConfirmButton: false,\n timer: 2000\n })\n })\n .catch(error => {\n commit(\"setError\", error);\n })\n .finally(() => {\n dispatch(\"fetchData\");\n });\n },\n resetPageNumber({commit}){\n commit('resetPageNumber')\n },\n setPageNumber({commit} , value){\n commit('setPageNumber', value)\n },\n resetState({ commit }) {\n commit(\"resetState\");\n }\n}\nconst mutations = {\n setDresscodesList(state, value) {\n state.dresscodesList = value\n },\n setError(state, value) {\n state.error = value\n },\n setLoading(state, value) {\n state.loading = value\n },\n setPagination(state, value) {\n state.pagination = value;\n },\n setPageNumber(state, value){\n state.pagination.current_page = value\n },\n resetState(state) {\n state = Object.assign(state, initialState())\n }\n}\n\nexport default {\n namespaced: true,\n state: initialState,\n getters,\n actions,\n mutations\n}\n","import Swal from \"sweetalert2\";\n\nexport const fireToast = (text: string, result: boolean): void => {\n Swal.fire({\n position: \"top-end\",\n icon: result ? \"success\" : \"error\",\n title: text,\n timer: 800,\n toast: true,\n showConfirmButton: false,\n showCancelButton: false\n });\n};\n","import {\r\n createRouter,\r\n createWebHistory,\r\n RouteRecordRaw,\r\n useRoute\r\n} from \"vue-router\";\r\nimport store from \"@/store\";\r\nimport { Mutations, Actions } from \"@/store/enums/StoreEnums\";\r\nimport { computed } from \"vue\";\r\nimport { useStore } from \"vuex\";\r\nimport { useAbility } from \"@casl/vue\";\r\nimport { isCrewBoss } from \"@/components/jobs/helpers\";\r\n\r\nconst routes: Array = [\r\n {\r\n path: \"/\",\r\n redirect: \"/dashboard\",\r\n meta: { title: \"Dashboard\" },\r\n component: () => import(\"@/layout/Layout.vue\"),\r\n children: [\r\n {\r\n path: \"/my-dashboard\",\r\n name: \"my-dashboard\",\r\n meta: { title: \"My dashboard\", permission: \"my_dashboard_access\" },\r\n component: () => import(\"@/views/MyDashboard.vue\")\r\n },\r\n {\r\n path: \"/insights\",\r\n name: \"insights-index\",\r\n meta: { title: \"Insights\", permission: \"can_view_statistics\" },\r\n component: () => import(\"@/views/statistics/index.vue\")\r\n },\r\n {\r\n path: \"/insights/workers\",\r\n name: \"insights-workers\",\r\n meta: { title: \"Worker statistics\", permission: \"can_view_statistics\" },\r\n component: () => import(\"@/components/statistics/index-workers.vue\")\r\n },\r\n {\r\n path: \"/insights/earnings\",\r\n name: \"insights-earnings\",\r\n meta: {\r\n title: \"Earnings statistics\",\r\n permission: \"can_view_earning_statistics\"\r\n },\r\n component: () => import(\"@/components/statistics/index-earnings.vue\")\r\n },\r\n {\r\n path: \"/activity-log\",\r\n name: \"activity-log\",\r\n meta: { title: \"Activity log\", permission: \"can_view_all_activities\" },\r\n component: () => import(\"@/components/system/ActivityLog.vue\")\r\n },\r\n {\r\n path: \"/calendar\",\r\n name: \"calendar\",\r\n meta: { title: \"Calendar\", permission: \"calendar_access\" },\r\n component: () => import(\"@/views/Calendar.vue\")\r\n },\r\n {\r\n path: \"/jobs/:id/edit\",\r\n name: \"job-edit\",\r\n meta: { title: \"Edit job\", permission: \"job_edit\" },\r\n component: () => import(\"@/views/jobs/JobEdit.vue\")\r\n },\r\n {\r\n path: \"/create-quote\",\r\n name: \"create-quote\",\r\n meta: { title: \"Create job quote\", permission: \"job_edit\" },\r\n component: () => import(\"@/views/job_quotes/CreateQuote.vue\")\r\n },\r\n {\r\n path: \"/edit-quote/:id\",\r\n name: \"edit-quote\",\r\n meta: { title: \"Edit job quote\", permission: \"job_edit\" },\r\n component: () => import(\"@/views/job_quotes/CreateQuote.vue\")\r\n },\r\n {\r\n path: \"/job-quotes\",\r\n name: \"job-quote\",\r\n meta: { title: \"View job quotes\", permission: \"job_edit\" },\r\n component: () => import(\"@/views/job_quotes/Index.vue\")\r\n },\r\n {\r\n path: \"/jobs/templates\",\r\n name: \"job-templates\",\r\n meta: { title: \"Job templates\", permission: \"job_template_access\" },\r\n component: () => import(\"@/views/jobs/Templates.vue\")\r\n },\r\n {\r\n path: \"/jobs/templates/:id\",\r\n name: \"job-templates-edit\",\r\n meta: { title: \"Edit job template\", permission: \"job_template_access\" },\r\n component: () => import(\"@/components/job-templates/Edit.vue\")\r\n },\r\n {\r\n path: \"/jobs/:id\",\r\n name: \"job-view\",\r\n meta: { title: \"View job\", permission: \"job_view\" },\r\n component: () => import(\"@/views/jobs/JobView.vue\"),\r\n children: [\r\n {\r\n path: \"Shifts\",\r\n name: \"job-shifts\",\r\n meta: { title: \"Job - shifts\" },\r\n component: () => import(\"@/views/jobs/tabs/JobShifts.vue\")\r\n },\r\n {\r\n path: \"book\",\r\n name: \"job-book\",\r\n meta: {\r\n title: \"Book users\",\r\n permission: [\"jobs_book_workers\", \"can_request_worker\"]\r\n },\r\n component: () =>\r\n import(\"@/components/jobs/Booking/BookWorkersIndex.vue\")\r\n },\r\n {\r\n path: \"additional-costs\",\r\n name: \"additional-costs\",\r\n meta: {\r\n title: \"Job additional costs\",\r\n permission: \"can_view_additional_costs\"\r\n },\r\n component: () =>\r\n import(\"@/components/jobs/tabs/AdditionalCosts.vue\")\r\n },\r\n {\r\n path: \"job-projection\",\r\n name: \"job-projection\",\r\n meta: {\r\n title: \"Job projection\",\r\n permission: \"can_view_job_projection\"\r\n },\r\n component: () => import(\"@/components/jobs/tabs/JobProjection.vue\")\r\n },\r\n {\r\n path: \"client-rates\",\r\n name: \"client-rates\",\r\n meta: { title: \"Client rates\", permission: \"rate_access\" },\r\n component: () => import(\"@/components/jobs/tabs/ClientRatesJob.vue\")\r\n },\r\n {\r\n path: \"worker-rates\",\r\n name: \"worker-rates-job\",\r\n meta: { title: \"Worker rates\", permission: \"rate_access\" },\r\n component: () => import(\"@/components/jobs/tabs/WorkerRatesTab.vue\")\r\n },\r\n {\r\n path: \"job-notes\",\r\n name: \"job-notes\",\r\n meta: { title: \"Job - notes\", permission: [\r\n \"job_notes_access\",\r\n () => {\r\n const store = useStore();\r\n const job = store.getters[\"JobModule/item\"];\r\n if (job) {\r\n return isCrewBoss(job);\r\n }\r\n return false;\r\n }\r\n ] },\r\n component: () => import(\"@/views/jobs/tabs/JobNotes.vue\")\r\n }\r\n ]\r\n },\r\n {\r\n path: \"/jobs/create\",\r\n name: \"job-create\",\r\n meta: { title: \"Create job\", permission: \"job_create\" },\r\n component: () => import(\"@/views/jobs/JobCreate.vue\")\r\n },\r\n {\r\n path: \"/dashboard\",\r\n name: \"dashboard\",\r\n meta: { title: \"Dashboard\", permission: \"dashboard_access\" },\r\n component: () => import(\"@/views/Dashboard.vue\")\r\n },\r\n {\r\n path: \"/approvals\",\r\n name: \"approvals\",\r\n meta: { title: \"Approvals\", permission: \"approval_access\" },\r\n component: () => import(\"@/views/approvals/ApprovalsView.vue\")\r\n },\r\n {\r\n path: \"/users\",\r\n name: \"users\",\r\n meta: { title: \"Users\" },\r\n component: () => import(\"@/views/users/IndexView.vue\")\r\n },\r\n {\r\n path: \"/live-chat\",\r\n name: \"live-chat\",\r\n meta: { title: \"Chat\", permission: \"has_live_chat\" },\r\n component: () => import(\"@/components/live-chat/LiveChatIndex.vue\")\r\n },\r\n {\r\n path: \"/users/create\",\r\n name: \"users-create\",\r\n meta: { title: \"Create user\", permission: \"user_create\" },\r\n component: () => import(\"@/views/users/Create.vue\")\r\n },\r\n {\r\n path: \"applicants\",\r\n name: \"applicants\",\r\n meta: { title: \"Applicants\", permission: \"can_view_applicants_list\" },\r\n component: () => import(\"@/views/users/Applicants.vue\")\r\n },\r\n {\r\n path: \"/users/:id\",\r\n name: \"ViewUser\",\r\n meta: { title: \"View user\" },\r\n component: () => import(\"@/views/users/UserProfileView.vue\"),\r\n children: [\r\n {\r\n path: \"personal\",\r\n name: \"personal\",\r\n meta: { title: \"User - personal\" },\r\n component: () =>\r\n import(\"@/components/users/userProfile/fields/Personal.vue\")\r\n },\r\n {\r\n path: \"settings\",\r\n name: \"settings\",\r\n meta: { title: \"User - professional\" },\r\n component: () =>\r\n import(\"@/components/users/userProfile/fields/WorkRelated.vue\")\r\n },\r\n {\r\n path: \"payment\",\r\n name: \"payment\",\r\n meta: { title: \"Payment information\" },\r\n component: () =>\r\n import(\"@/components/users/userProfile/fields/PaymentInfo.vue\")\r\n },\r\n {\r\n path: \"notes\",\r\n name: \"notes\",\r\n meta: { title: \"User - notes\" },\r\n component: () =>\r\n import(\"@/components/users/userProfile/fields/Notes.vue\")\r\n },\r\n {\r\n path: \"my-documents\",\r\n name: \"my-documents\",\r\n meta: { title: \"User - documents\" },\r\n component: () =>\r\n import(\"@/components/my-documents/MyDocumentsIndex.vue\")\r\n },\r\n {\r\n path: \"my-skills\",\r\n name: \"my-skills\",\r\n meta: { title: \"User - skills\" },\r\n component: () => import(\"@/components/my-skills/MySkillsIndex.vue\")\r\n },\r\n {\r\n path: \"user-activities\",\r\n name: \"user-activities\",\r\n meta: {\r\n title: \"User - activities\",\r\n permission: \"view_user_activity\"\r\n },\r\n component: () =>\r\n import(\"@/components/users/userProfile/fields/UserActivity.vue\")\r\n },\r\n {\r\n path: \"about-company\",\r\n meta: { title: \"About company\" },\r\n name: \"about-company\",\r\n component: () =>\r\n import(\r\n \"@/components/users/userProfile/bookerTabs/AboutCompanyTab.vue\"\r\n )\r\n },\r\n {\r\n path: \"invited-users\",\r\n meta: {\r\n title: \"Invited users\",\r\n permission: [\r\n \"can_view_all_referred_users_lists\",\r\n to => {\r\n return to.params.id == store.getters.currentUser.id;\r\n }\r\n ]\r\n },\r\n name: \"invited-users\",\r\n component: () =>\r\n import(\r\n \"@/components/users/userProfile/fields/referred-users/referred-users-tab.vue\"\r\n )\r\n },\r\n {\r\n path: \"user-calendar\",\r\n meta: { title: \"Calendar\" },\r\n name: \"user-calendar\",\r\n component: () =>\r\n import(\r\n \"@/components/users/userProfile/fields/userCalendar/user-calendar.vue\"\r\n )\r\n },\r\n {\r\n path: \"user-security\",\r\n meta: { title: \"Security\" },\r\n name: \"user-security\",\r\n component: () =>\r\n import(\r\n \"@/components/users/userProfile/fields/userSecurity/user-security.vue\"\r\n )\r\n }\r\n ]\r\n },\r\n {\r\n path: \"/users/me/:tab\",\r\n name: \"ViewUserMe\",\r\n redirect: to => {\r\n return `/users/${store.getters.currentUser.id}/${to.params.tab}`;\r\n }\r\n },\r\n {\r\n path: \"/clients\",\r\n name: \"clients\",\r\n meta: { title: \"Clients\", permission: \"company_access\" },\r\n component: () => import(\"@/views/clients/IndexView.vue\")\r\n },\r\n {\r\n path: \"/client/:id\",\r\n name: \"viewSingleClient\",\r\n meta: {\r\n title: \"View client\",\r\n permission: [\r\n \"company_access\",\r\n to => {\r\n return to.params.id == store.getters.currentUser.company_id;\r\n }\r\n ]\r\n },\r\n component: () => import(\"@/views/clients/SingleClientView.vue\")\r\n },\r\n {\r\n path: \"/clients/new\",\r\n name: \"clientsNew\",\r\n meta: { title: \"Create company\" },\r\n component: () => import(\"@/views/clients/EditOrCreateClientView.vue\")\r\n },\r\n {\r\n path: \"/clients/edit/:id\",\r\n name: \"clientsEdit\",\r\n meta: {\r\n title: \"Edit company\",\r\n permission: [\"company_create\", \"company_edit\"]\r\n },\r\n component: () => import(\"@/views/clients/EditOrCreateClientView.vue\")\r\n },\r\n {\r\n path: \"/levels\",\r\n name: \"levels\",\r\n meta: { title: \"Levels\", permission: \"level_access\" },\r\n component: () => import(\"@/views/settings/LevelsView.vue\")\r\n },\r\n {\r\n path: \"/branches\",\r\n name: \"branches\",\r\n meta: { title: \"Branches\", permission: \"branch_access\" },\r\n component: () => import(\"@/views/branches/BranchesView.vue\")\r\n },\r\n {\r\n path: \"/document-types\",\r\n name: \"document-types\",\r\n meta: { title: \"Document types\", permission: \"document_type_access\" },\r\n component: () => import(\"@/views/document_types/DocumentTypesView.vue\")\r\n },\r\n {\r\n path: \"/skills\",\r\n name: \"skills\",\r\n meta: { title: \"Skills\", permission: \"settings_skill_access\" },\r\n component: () => import(\"@/views/skills/Index.vue\")\r\n },\r\n {\r\n path: \"/equipment-categories\",\r\n name: \"equipment-categories\",\r\n meta: {\r\n title: \"Equipment categories\",\r\n permission: \"equipment_category_access\"\r\n },\r\n component: () => import(\"@/views/settings/EquipmentCategoriesView.vue\")\r\n },\r\n {\r\n path: \"/dresscodes\",\r\n name: \"dresscodes\",\r\n meta: { title: \"Dresscodes\", permission: \"dresscode_access\" },\r\n component: () => import(\"@/views/dresscodes/DresscodesView.vue\")\r\n },\r\n {\r\n path: \"/freelancers\",\r\n name: \"freelancers\",\r\n meta: { title: \"Freelancers\", permission: \"freelancer_access\" },\r\n component: () => import(\"@/views/freelancers/FreelancersView.vue\")\r\n },\r\n {\r\n path: \"/countries\",\r\n name: \"countries\",\r\n meta: { title: \"Countries\", permission: \"country_access\" },\r\n component: () => import(\"@/views/system/CountriesView.vue\")\r\n },\r\n {\r\n path: \"/languages\",\r\n name: \"languages\",\r\n meta: { title: \"Languages\", permission: \"language_access\" },\r\n component: () => import(\"@/views/system/LanguagesView.vue\")\r\n },\r\n {\r\n path: \"/permissions\",\r\n name: \"permissions\",\r\n meta: { title: \"Permissions\", permission: \"permission_access\" },\r\n component: () => import(\"@/views/settings/PermissionsView.vue\")\r\n },\r\n {\r\n path: \"/roles\",\r\n name: \"roles\",\r\n meta: { title: \"Roles\", permission: \"role_access\" },\r\n component: () => import(\"@/views/settings/RolesView.vue\")\r\n },\r\n {\r\n path: \"/worker-rates\",\r\n name: \"worker-rates\",\r\n meta: { title: \"Worker rates\", permission: \"can_manage_worker_rates\" },\r\n component: () => import(\"@/views/worker-rates/WorkerRatesView.vue\")\r\n },\r\n {\r\n path: \"/help/edit/:id\",\r\n name: \"EditHelpArticle\",\r\n meta: { title: \"Edit article\", permission: \"article_edit\" },\r\n component: () => import(\"@/components/help/EditHelpArticle.vue\")\r\n },\r\n {\r\n path: \"/help/create/:id\",\r\n name: \"CreateArticle\",\r\n meta: { title: \"Create article\", permission: \"article_create\" },\r\n component: () => import(\"@/components/help/CreateArticle.vue\")\r\n },\r\n {\r\n path: \"/venues\",\r\n name: \"venues\",\r\n meta: { title: \"Venues\", permission: \"venue_access\" },\r\n component: () => import(\"@/views/venues/VenuesView.vue\"),\r\n children: [\r\n {\r\n path: \"edit/:id\",\r\n name: \"EditVenue\",\r\n meta: { title: \"Venue - edit\" },\r\n component: () => import(\"@/views/system/CountriesView.vue\")\r\n }\r\n ]\r\n },\r\n {\r\n path: \"/salaryreports\",\r\n name: \"salaryReport\",\r\n meta: { title: \"Salary repors\", permission: \"salary_access\" },\r\n component: () => import(\"@/views/payments/SalaryReportsView.vue\")\r\n },\r\n {\r\n path: \"/help\",\r\n name: \"helpSection\",\r\n meta: { title: \"Help\", permission: \"help_access\" },\r\n component: () => import(\"@/views/help/HelpView.vue\")\r\n },\r\n {\r\n path: \"/help-categories\",\r\n name: \"HelpCategories\",\r\n meta: {\r\n title: \"Help - categories\",\r\n permission: \"help_category_access\"\r\n },\r\n component: () => import(\"@/views/help/HelpcategoriesView.vue\")\r\n }\r\n ]\r\n },\r\n {\r\n path: \"/sign-in\",\r\n name: \"sign-in\",\r\n meta: { title: \"Wanted crew\" },\r\n component: () => import(\"@/views/auth/SignIn.vue\")\r\n },\r\n {\r\n path: \"/otp/enable\",\r\n name: \"otp-enable\",\r\n meta: { title: \"Enable 2FA\" },\r\n component: () => import(\"@/views/otp/EnableOtp.vue\")\r\n },\r\n {\r\n path: \"/otp/disable\",\r\n name: \"otp-disable\",\r\n meta: { title: \"Disable 2FA\" },\r\n component: () => import(\"@/views/otp/DisableOtp.vue\")\r\n },\r\n {\r\n path: \"/two-factor\",\r\n name: \"two-factor\",\r\n meta: { title: \"Wanted crew\" },\r\n component: () => import(\"@/views/auth/TwoFactor.vue\")\r\n },\r\n {\r\n path: \"/email/verify/success\",\r\n name: \"succesfull-verify\",\r\n redirect: \"/sign-in?wasVerified=true\"\r\n },\r\n {\r\n path: \"/sign-up\",\r\n name: \"sign-up\",\r\n meta: { title: \"Sign up\" },\r\n component: () => import(\"@/views/auth/SignUp.vue\")\r\n },\r\n {\r\n path: \"/password-reset\",\r\n name: \"password-reset\",\r\n meta: { title: \"Reset password\" },\r\n component: () => import(\"@/views/auth/PasswordReset.vue\")\r\n },\r\n {\r\n path: \"/password/reset/:token\",\r\n name: \"password-change\",\r\n component: () => import(\"@/views/auth/PasswordChange.vue\")\r\n },\r\n {\r\n path: \"/privacy-policy\",\r\n name: \"privacy-policy\",\r\n meta: { title: \"Privacy policy\" },\r\n component: () => import(\"@/views/legal/PrivacyPolicy.vue\")\r\n },\r\n {\r\n path: \"/privacy-notice\",\r\n name: \"privacy-notice\",\r\n meta: { title: \"Privacy notice\" },\r\n component: () => import(\"@/views/legal/PrivacyNotice.vue\")\r\n },\r\n {\r\n path: \"/cookie-policy\",\r\n name: \"cookie-policy\",\r\n meta: { title: \"Cookie policy\" },\r\n component: () => import(\"@/views/legal/CookiePolicy.vue\")\r\n },\r\n {\r\n // the 404 route, when none of the above matches\r\n path: \"/404\",\r\n name: \"404\",\r\n meta: { title: \"Page not found\" },\r\n component: () => import(\"@/views/error/Error404.vue\")\r\n },\r\n {\r\n path: \"/maintenance\",\r\n name: \"maintenance\",\r\n meta: { title: \"Maintenance\" },\r\n component: () => import(\"@/views/error/Maintenance.vue\")\r\n },\r\n {\r\n path: \"/500\",\r\n name: \"500\",\r\n meta: { title: \"Error\" },\r\n component: () => import(\"@/views/error/Error500.vue\")\r\n },\r\n {\r\n path: \"/:pathMatch(.*)*\",\r\n redirect: \"/404\"\r\n }\r\n];\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(),\r\n routes\r\n});\r\n\r\nfunction isAllowed(permission, rules, to) {\r\n if (!rules || !permission) return false;\r\n\r\n if (!Array.isArray(permission)) {\r\n permission = [permission];\r\n }\r\n\r\n for (let i = 0; i < permission.length; i++) {\r\n const el = permission[i];\r\n\r\n if (typeof el === \"function\") {\r\n return el(to);\r\n } else if (rules.includes(el)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n if (\r\n process.env.VUE_APP_MAINTENANCE_MODE === \"true\" &&\r\n to.name !== \"maintenance\"\r\n ) {\r\n next(\"/maintenance\");\r\n }\r\n\r\n // reset config to initial state\r\n const modal = document.querySelector(\".modal\");\r\n if (modal) {\r\n document.body.style.overflow = \"inherit\";\r\n }\r\n const currentUser = computed(() => store.getters.currentUser);\r\n\r\n store.commit(Mutations.RESET_LAYOUT_CONFIG);\r\n store\r\n .dispatch(Actions.VERIFY_AUTH)\r\n .then(payload => {\r\n if (\r\n \"otp-enable\" !== to.name &&\r\n payload &&\r\n payload.should_enable_2fa &&\r\n 0 == currentUser.value.google2fa_enabled &&\r\n store.getters.isAdmin\r\n ) {\r\n next(\"/otp/enable\");\r\n } else {\r\n const rules = computed(\r\n (): null | string[] => store.getters[\"RulesModule/rules\"]\r\n );\r\n const routePermission = to.meta.permission as string | string[];\r\n store\r\n .dispatch(\"RulesModule/fetchData\")\r\n .then(() => {\r\n if (\r\n rules.value &&\r\n routePermission &&\r\n !isAllowed(routePermission, rules.value, to)\r\n ) {\r\n if (rules.value?.find(item => item == \"dashboard_access\")) {\r\n next(\"/\");\r\n } else {\r\n next(\"/my-dashboard\");\r\n }\r\n } else {\r\n next();\r\n }\r\n })\r\n .catch(() => {\r\n next();\r\n });\r\n }\r\n })\r\n .catch(() => {\r\n next();\r\n });\r\n\r\n // Scroll page to top on every route change\r\n setTimeout(() => {\r\n window.scrollTo(0, 0);\r\n }, 100);\r\n});\r\nrouter.afterEach(to => {\r\n if (to.meta.title) {\r\n document.title = `${to.meta.title}`;\r\n }\r\n});\r\n\r\nexport default router;\r\n","import {destroyToken, getToken, saveToken} from \"@/core/services/JwtService\";\n\nconst ID_RULES_KEY = \"rules\" as string;\n\n/**\n * @description rules token form localStorage\n */\nexport const getRules = (): string[] | null => {\n const rolesJson = window.localStorage.getItem(ID_RULES_KEY);\n\n\n if(rolesJson) {\n return JSON.parse(rolesJson);\n }\n\n return []\n};\n\n/**\n * @description save rules into localStorage\n * @param rules: any\n */\nexport const saveRules = (rules: any): void => {\n window.localStorage.setItem(ID_RULES_KEY, JSON.stringify(rules));\n};\n\n/**\n * @description remove rules form localStorage\n */\nexport const destroyRules = (): void => {\n window.localStorage.removeItem(ID_RULES_KEY);\n};\n\nexport default { getRules, saveRules, destroyRules };","import {\r\n DataUtil,\r\n EventHandlerUtil,\r\n getUniqueIdWithPrefix,\r\n getObjectPropertyValueByKey,\r\n stringSnakeToCamel,\r\n getAttributeValueByBreakpoint,\r\n throttle,\r\n getCSS,\r\n DOMEventHandlerUtil,\r\n ElementStyleUtil,\r\n} from '../_utils/index'\r\n\r\nexport interface DrawerOptions {\r\n overlay: boolean\r\n baseClass: string\r\n overlayClass: string\r\n direction: string\r\n}\r\n\r\nconst defaultDrawerOptions: DrawerOptions = {\r\n overlay: true,\r\n baseClass: 'drawer',\r\n overlayClass: 'drawer-overlay',\r\n direction: 'end',\r\n}\r\n\r\nclass DrawerComponent {\r\n element: HTMLElement\r\n overlayElement: HTMLElement | null = null\r\n toggleElement: HTMLElement | null = null\r\n options: DrawerOptions\r\n instanceUid: string\r\n name: string = ''\r\n shown: boolean = false\r\n lastWidth: number = 0\r\n closeElement: HTMLElement | null = null\r\n\r\n constructor(_element: HTMLElement, options: DrawerOptions) {\r\n this.element = _element\r\n this.options = Object.assign(defaultDrawerOptions, options)\r\n this.instanceUid = getUniqueIdWithPrefix('drawer')\r\n this.overlayElement = null\r\n this.name = this.element.getAttribute('data-kt-drawer-name') || ''\r\n this.shown = false\r\n this.toggleElement = null\r\n // Event Handlers\r\n this._handlers()\r\n // Update Instance\r\n this._update()\r\n // Bind Instance\r\n DataUtil.set(this.element, 'drawer', this)\r\n }\r\n\r\n private _handlers = () => {\r\n const togglers = this._getOption('toggle') as string\r\n const closers = this._getOption('close') as string\r\n\r\n if (togglers !== null && togglers.length > 0) {\r\n DOMEventHandlerUtil.on(document.body, togglers, 'click', (e: Event) => {\r\n e.preventDefault()\r\n this.toggleElement = document.getElementById(togglers)\r\n this._toggle()\r\n })\r\n }\r\n\r\n if (closers !== null && closers.length > 0) {\r\n DOMEventHandlerUtil.on(document.body, closers, 'click', (e: Event) => {\r\n e.preventDefault()\r\n this.closeElement = document.getElementById(closers)\r\n\r\n this._hide()\r\n })\r\n }\r\n }\r\n\r\n private _update = () => {\r\n const width = String(this._getOption('width'))\r\n const direction = String(this._getOption('direction'))\r\n\r\n // Reset state\r\n const hasBaseClass = this.element.classList.contains(`${this.options.baseClass}-on`)\r\n const bodyCanvasAttr = String(document.body.getAttribute(`data-kt-drawer-${this.name}-`))\r\n\r\n if (hasBaseClass === true && bodyCanvasAttr === 'on') {\r\n this.shown = true\r\n } else {\r\n this.shown = false\r\n }\r\n\r\n // Activate/deactivate\r\n if (this._getOption('activate') === true) {\r\n this.element.classList.add(this.options.baseClass)\r\n this.element.classList.add(`${this.options.baseClass}-${direction}`)\r\n ElementStyleUtil.set(this.element, 'width', width, true)\r\n\r\n this.lastWidth = parseInt(width)\r\n } else {\r\n ElementStyleUtil.set(this.element, 'width', '')\r\n this.element.classList.remove(this.options.baseClass)\r\n this.element.classList.remove(`${this.options.baseClass}-${direction}`)\r\n this._hide()\r\n }\r\n }\r\n\r\n private _getOption = (name: string) => {\r\n const attr = this.element.getAttribute(`data-kt-drawer-${name}`)\r\n if (attr) {\r\n let value = getAttributeValueByBreakpoint(attr)\r\n if (value !== null && String(value) === 'true') {\r\n return true\r\n } else {\r\n if (value !== null && String(value) === 'false') {\r\n return false\r\n }\r\n }\r\n\r\n return value\r\n } else {\r\n const optionName = stringSnakeToCamel(name)\r\n const option = getObjectPropertyValueByKey(this.options, optionName)\r\n if (option) {\r\n return getAttributeValueByBreakpoint(option)\r\n } else {\r\n return null\r\n }\r\n }\r\n }\r\n\r\n private _toggle = () => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.drawer.toggle') === false) {\r\n return\r\n }\r\n\r\n if (this.shown) {\r\n this._hide()\r\n } else {\r\n this._show()\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.drawer.toggled')\r\n }\r\n\r\n private _hide = () => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.drawer.hide') === false) {\r\n return\r\n }\r\n\r\n this.shown = false\r\n this._deleteOverlay()\r\n document.body.removeAttribute(`data-kt-drawer-${this.name}`)\r\n document.body.removeAttribute(`data-kt-drawer`)\r\n this.element.classList.remove(`${this.options.baseClass}-on`)\r\n if (this.toggleElement != null) {\r\n this.toggleElement.classList.remove('active')\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.drawer.after.hidden')\r\n }\r\n\r\n private _show = () => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.drawer.show') === false) {\r\n return\r\n }\r\n\r\n this.shown = true\r\n this._createOverlay()\r\n document.body.setAttribute(`data-kt-drawer-${this.name}`, 'on')\r\n document.body.setAttribute('data-kt-drawer', 'on')\r\n this.element.classList.add(`${this.options.baseClass}-on`)\r\n if (this.toggleElement !== null) {\r\n this.toggleElement.classList.add('active')\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.drawer.shown')\r\n }\r\n\r\n private _createOverlay = () => {\r\n if (this._getOption('overlay') === true) {\r\n this.overlayElement = document.createElement('DIV')\r\n const elementZIndex = getCSS(this.element, 'z-index')\r\n if (elementZIndex) {\r\n const overlayZindex = parseInt(elementZIndex) - 1\r\n ElementStyleUtil.set(this.overlayElement, 'z-index', overlayZindex) // update\r\n }\r\n document.body.append(this.overlayElement)\r\n const overlayClassOption = this._getOption('overlay-class')\r\n if (overlayClassOption) {\r\n this.overlayElement.classList.add(overlayClassOption.toString())\r\n }\r\n this.overlayElement.addEventListener('click', (e) => {\r\n e.preventDefault()\r\n this._hide()\r\n })\r\n }\r\n }\r\n\r\n private _deleteOverlay = () => {\r\n if (this.overlayElement !== null && this.overlayElement.parentNode) {\r\n this.overlayElement.parentNode.removeChild(this.overlayElement)\r\n }\r\n }\r\n\r\n private _getDirection = () => {\r\n return String(this._getOption('direction')) === 'left' ? 'left' : 'right'\r\n }\r\n\r\n private _getWidth = () => {\r\n let width = this._getOption('width')\r\n if (width && width === 'auto') {\r\n width = getCSS(this.element, 'width')\r\n }\r\n\r\n return width\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n public toggle = () => {\r\n this._toggle()\r\n }\r\n\r\n public show = () => {\r\n this._show()\r\n }\r\n\r\n public hide = () => {\r\n this._hide()\r\n }\r\n\r\n public isShown = () => {\r\n return this.shown\r\n }\r\n\r\n public update = () => {\r\n this._update()\r\n }\r\n\r\n public goElement = () => {\r\n return this.element\r\n }\r\n\r\n // Event API\r\n public on = (name: string, handler: Function) => {\r\n return EventHandlerUtil.on(this.element, name, handler)\r\n }\r\n\r\n public one = (name: string, handler: Function) => {\r\n return EventHandlerUtil.one(this.element, name, handler)\r\n }\r\n\r\n public off = (name: string) => {\r\n return EventHandlerUtil.off(this.element, name)\r\n }\r\n\r\n public trigger = (name: string, event: Event) => {\r\n return EventHandlerUtil.trigger(this.element, name, event)\r\n }\r\n\r\n // Static methods\r\n public static hasInstace = (element: HTMLElement): boolean => {\r\n return DataUtil.has(element, 'drawer')\r\n }\r\n\r\n public static getInstance = (element: HTMLElement) => {\r\n return DataUtil.get(element, 'drawer')\r\n }\r\n\r\n public static hideAll = () => {\r\n const oldInstances = DataUtil.getAllInstancesByKey('drawer')\r\n oldInstances.forEach((dr) => {\r\n dr.hide()\r\n })\r\n }\r\n\r\n public static updateAll = () => {\r\n const oldInstances = DataUtil.getAllInstancesByKey('drawer')\r\n oldInstances.forEach((dr) => {\r\n dr.update()\r\n })\r\n }\r\n\r\n // Create Instances\r\n public static createInstances(selector: string): void {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((element) => {\r\n const item = element as HTMLElement\r\n let drawer = DrawerComponent.getInstance(item)\r\n if (!drawer) {\r\n drawer = new DrawerComponent(item, defaultDrawerOptions)\r\n }\r\n drawer.hide()\r\n })\r\n }\r\n\r\n // Dismiss instances\r\n public static handleDismiss = () => {\r\n // External drawer toggle handler\r\n DOMEventHandlerUtil.on(document.body, '[data-kt-drawer-dismiss=\"true\"]', 'click', () => {\r\n /* @ts-ignore */\r\n const element = this.closest('[data-kt-drawer=\"true\"]')\r\n if (element) {\r\n const drawer = DrawerComponent.getInstance(element)\r\n if (drawer && drawer.isShown()) {\r\n drawer.hide()\r\n }\r\n }\r\n })\r\n }\r\n\r\n // Global Initialization\r\n public static initGlobalHandlers(): void {\r\n // Window Resize Handling\r\n window.addEventListener('resize', function () {\r\n let timer: number | undefined\r\n throttle(\r\n timer,\r\n () => {\r\n // Locate and update Drawer instances on window resize\r\n const elements = document.body.querySelectorAll('[data-kt-drawer=\"true\"]')\r\n elements.forEach((el) => {\r\n const item = el as HTMLElement\r\n const instance = DrawerComponent.getInstance(item)\r\n if (instance) {\r\n instance.update()\r\n }\r\n })\r\n },\r\n 200\r\n )\r\n })\r\n }\r\n\r\n public static bootstrap = () => {\r\n DrawerComponent.createInstances('[data-kt-drawer=\"true\"]')\r\n DrawerComponent.initGlobalHandlers()\r\n DrawerComponent.handleDismiss()\r\n }\r\n\r\n public static reinitialization = () => {\r\n DrawerComponent.createInstances('[data-kt-drawer=\"true\"]')\r\n DrawerComponent.hideAll()\r\n DrawerComponent.updateAll()\r\n DrawerComponent.handleDismiss()\r\n }\r\n}\r\n\r\nexport {DrawerComponent, defaultDrawerOptions}\r\n","export class ElementStyleUtil {\r\n public static set(element: HTMLElement, property: string, value?: any, important?: boolean) {\r\n if (important) {\r\n element.style.setProperty(property, value, 'important')\r\n } else {\r\n element.style.setProperty(property, value)\r\n }\r\n }\r\n\r\n public static get(element: HTMLElement, attributeName: string) {\r\n return element.style.getPropertyValue(attributeName)\r\n }\r\n\r\n public static remove(element: HTMLElement, attibuteName: string) {\r\n element.style.removeProperty(attibuteName)\r\n }\r\n}\r\n","export class DataUtil {\r\n static store: Map> = new Map()\r\n\r\n public static set(instance: HTMLElement | undefined, key: string, data: any): void {\r\n if (!instance) {\r\n return\r\n }\r\n\r\n const instanceData = DataUtil.store.get(instance)\r\n if (!instanceData) {\r\n const newMap = new Map().set(key, data)\r\n DataUtil.store.set(instance, newMap)\r\n return\r\n }\r\n\r\n instanceData.set(key, data)\r\n }\r\n\r\n public static get(instance: HTMLElement, key: string): any | undefined {\r\n const instanceData = DataUtil.store.get(instance)\r\n if (!instanceData) {\r\n return\r\n }\r\n\r\n return instanceData.get(key)\r\n }\r\n\r\n public static remove(instance: HTMLElement, key: string): void {\r\n const instanceData = DataUtil.store.get(instance)\r\n if (!instanceData) {\r\n return\r\n }\r\n\r\n instanceData.delete(key)\r\n }\r\n\r\n public static has(instance: HTMLElement, key: string): boolean {\r\n const instanceData = DataUtil.store.get(instance)\r\n if (instanceData) {\r\n return instanceData.has(key)\r\n }\r\n\r\n return false\r\n }\r\n\r\n public static getAllInstancesByKey(key: string) {\r\n const result: any[] = []\r\n DataUtil.store.forEach((val) => {\r\n val.forEach((v, k) => {\r\n if (k === key) {\r\n result.push(v)\r\n }\r\n })\r\n })\r\n return result\r\n }\r\n}\r\n","function getObjectPropertyValueByKey(obj: any, key: string): any | undefined {\n const map = new Map(Object.entries(obj))\n if (obj.hasOwnProperty(key) && map) {\n return map.get(key)\n }\n}\n\n/**\n * Generates unique ID for give prefix.\n * @param {string} prefix Prefix for generated ID\n * @returns {boolean}\n */\nfunction getUniqueIdWithPrefix(prefix: string | undefined): string {\n const result = Math.floor(Math.random() * new Date().getTime()).toString()\n if (!prefix) {\n return result\n }\n\n return `${prefix}${result}`\n}\n\n/* eslint-disable no-useless-escape */\nfunction stringSnakeToCamel(str: string): string {\n return str.replace(/(\\-\\w)/g, function (m) {\n return m[1].toUpperCase()\n })\n}\n\nfunction toJSON(value: string | JSON): JSON | undefined {\n if (typeof value !== 'string') {\n return value\n }\n\n if (!value) {\n return undefined\n }\n\n // (\"'\" => \"\\\"\");\n const result = value\n .toString()\n .split('')\n .map((el) => (el !== \"'\" ? el : '\"'))\n .join('')\n var jsonStr = result.replace(/(\\w+:)|(\\w+ :)/g, function (matched) {\n return '\"' + matched.substring(0, matched.length - 1) + '\":'\n })\n try {\n return JSON.parse(jsonStr)\n } catch {\n return undefined\n }\n}\n\nexport {getObjectPropertyValueByKey, getUniqueIdWithPrefix, stringSnakeToCamel, toJSON}\n","import {getUniqueIdWithPrefix} from './_TypesHelpers'\r\n\r\nexport class DOMEventHandlerUtil {\r\n public static store = new Map()\r\n\r\n public static on(\r\n element: HTMLElement,\r\n selector: string,\r\n eventName: string,\r\n callBack: any\r\n ): string {\r\n const eventId = getUniqueIdWithPrefix('DOMEvent')\r\n DOMEventHandlerUtil.store.set(eventId, (e: Event) => {\r\n const targets = element.querySelectorAll(selector)\r\n let target: HTMLElement | null = e.target as HTMLElement\r\n while (target && target !== element) {\r\n for (let i = 0; i < targets.length; i++) {\r\n if (target === targets[i]) {\r\n callBack.call(target, e)\r\n }\r\n }\r\n\r\n if (target.parentElement) {\r\n target = target.parentElement\r\n } else {\r\n target = null\r\n }\r\n }\r\n })\r\n element.addEventListener(eventName, DOMEventHandlerUtil.store.get(eventId))\r\n return eventId\r\n }\r\n\r\n public static off(element: HTMLElement, eventName: string, eventId: string): void {\r\n const funcFromStore = DOMEventHandlerUtil.store.get(eventId)\r\n if (!funcFromStore) {\r\n return\r\n }\r\n\r\n element.removeEventListener(eventName, funcFromStore)\r\n DOMEventHandlerUtil.store.delete(eventId)\r\n }\r\n\r\n public static one(element: HTMLElement, eventName: string, callBack: Function): void {\r\n element.addEventListener(eventName, function calee(e) {\r\n // remove event\r\n if (e.target && e.target.removeEventListener) {\r\n e.target.removeEventListener(e.type, calee)\r\n }\r\n\r\n if (element && e && e.currentTarget) {\r\n // if (element && element.removeEventListener && e && e.currentTarget) {\r\n e.currentTarget.removeEventListener(e.type, calee)\r\n }\r\n\r\n // call hander\r\n return callBack(e)\r\n })\r\n }\r\n}\r\n","import {DOMEventHandlerUtil} from './_DOMEventHandlerUtil'\r\nimport {ElementStyleUtil} from './_ElementStyleUtil'\r\nimport {getElementOffset} from './DomHelpers'\r\n\r\nexport class ElementAnimateUtil {\r\n public static animate(\r\n from: number,\r\n to: number,\r\n duration: number,\r\n update: Function,\r\n complete?: Function\r\n ) {\r\n /**\r\n * TinyAnimate.easings\r\n * Adapted from jQuery Easing\r\n */\r\n const easings = {\r\n linear: function (t: number, b: number, c: number, d: number) {\r\n return (c * t) / d + b\r\n },\r\n }\r\n\r\n // Create mock done() function if necessary\r\n if (!complete) {\r\n complete = function () {}\r\n }\r\n\r\n // Animation loop\r\n // let canceled = false;\r\n const change = to - from\r\n\r\n function loop(timestamp: number) {\r\n var time = (timestamp || +new Date()) - start\r\n\r\n if (time >= 0) {\r\n update(easings.linear(time, from, change, duration))\r\n }\r\n if (time >= 0 && time >= duration) {\r\n update(to)\r\n if (complete) {\r\n complete()\r\n }\r\n } else {\r\n window.requestAnimationFrame(loop)\r\n }\r\n }\r\n\r\n update(from)\r\n\r\n // Start animation loop\r\n const start =\r\n window.performance && window.performance.now ? window.performance.now() : +new Date()\r\n\r\n window.requestAnimationFrame(loop)\r\n }\r\n\r\n public static animateClass(\r\n element: HTMLElement,\r\n animationName: string,\r\n callBack?: Function\r\n ): void {\r\n const animateClasses = animationName.split(' ')\r\n animateClasses.forEach((cssClass) => element.classList.add(cssClass))\r\n DOMEventHandlerUtil.one(element, 'animationend', function () {\r\n animateClasses.forEach((cssClass) => element.classList.remove(cssClass))\r\n })\r\n\r\n if (callBack) {\r\n DOMEventHandlerUtil.one(element, 'animationend', callBack)\r\n }\r\n }\r\n\r\n public static transitionEnd(element: HTMLElement, callBack: Function) {\r\n DOMEventHandlerUtil.one(element, 'transitionend', callBack)\r\n }\r\n\r\n public static animationEnd(element: HTMLElement, callBack: Function) {\r\n DOMEventHandlerUtil.one(element, 'animationend', callBack)\r\n }\r\n\r\n public static animationDelay(element: HTMLElement, value: string) {\r\n ElementStyleUtil.set(element, 'animation-delay', value)\r\n }\r\n\r\n public static animationDuration(element: HTMLElement, value: string) {\r\n ElementStyleUtil.set(element, 'animation-duration', value)\r\n }\r\n\r\n public static scrollTo(element: HTMLElement | null, offset: number, duration: number = 500) {\r\n let targetPos = element ? getElementOffset(element).top : 0\r\n let scrollPos =\r\n window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0\r\n\r\n if (offset) {\r\n scrollPos += offset\r\n targetPos = targetPos - offset\r\n }\r\n\r\n const from = scrollPos\r\n const to = targetPos\r\n\r\n ElementAnimateUtil.animate(from, to, duration, function (value: number) {\r\n document.documentElement.scrollTop = value\r\n // document.body.parentNode.scrollTop = value;\r\n document.body.scrollTop = value\r\n }) //, easing, done\r\n }\r\n public static scrollTop(offset: number, duration: number) {\r\n ElementAnimateUtil.scrollTo(null, offset, duration)\r\n }\r\n}\r\n","import {OffsetModel} from './models/OffsetModel'\nimport {ViewPortModel} from './models/ViewPortModel'\nimport {ElementStyleUtil} from './_ElementStyleUtil'\nimport {DataUtil} from './_DataUtil'\nimport {ElementAnimateUtil} from './ElementAnimateUtil'\nimport {getObjectPropertyValueByKey, toJSON} from './_TypesHelpers'\n\nfunction getCSS(el: HTMLElement, styleProp: string) {\n const defaultView = (el.ownerDocument || document).defaultView\n\n if (!defaultView) {\n return ''\n }\n\n // sanitize property name to css notation\n // (hyphen separated words eg. font-Size)\n styleProp = styleProp.replace(/([A-Z])/g, '-$1').toLowerCase()\n\n return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp)\n}\n\nfunction getCSSVariableValue(variableName: string) {\n let hex = getComputedStyle(document.documentElement).getPropertyValue(variableName)\n if (hex && hex.length > 0) {\n hex = hex.trim()\n }\n\n return hex\n}\n\nfunction getElementActualCss(el: HTMLElement, prop: any, cache: boolean) {\n let css = ''\n\n if (!el.getAttribute('kt-hidden-' + prop) || cache === false) {\n let value\n\n // the element is hidden so:\n // making the el block so we can meassure its height but still be hidden\n css = el.style.cssText\n el.style.cssText = 'position: absolute; visibility: hidden; display: block;'\n\n if (prop === 'width') {\n value = el.offsetWidth\n } else if (prop === 'height') {\n value = el.offsetHeight\n }\n\n el.style.cssText = css\n\n // store it in cache\n if (value !== undefined) {\n el.setAttribute('kt-hidden-' + prop, value.toString())\n return parseFloat(value.toString())\n }\n return 0\n } else {\n // store it in cache\n const attributeValue = el.getAttribute('kt-hidden-' + prop)\n if (attributeValue || attributeValue === '0') {\n return parseFloat(attributeValue)\n }\n }\n}\n\nfunction getElementActualHeight(el: HTMLElement) {\n return getElementActualCss(el, 'height', false)\n}\n\nfunction getElementActualWidth(el: HTMLElement, cache?: boolean) {\n return getElementActualCss(el, 'width', false)\n}\n\nfunction getElementIndex(element: HTMLElement) {\n if (element.parentNode) {\n const c = element.parentNode.children\n for (let i = 0; i < c.length; i++) {\n if (c[i] === element) return i\n }\n }\n return -1\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches\nfunction getElementMatches(element: HTMLElement, selector: string) {\n const p = Element.prototype\n const f = p.matches || p.webkitMatchesSelector\n\n if (element && element.tagName) {\n return f.call(element, selector)\n } else {\n return false\n }\n}\n\nfunction getElementOffset(el: HTMLElement): OffsetModel {\n // Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n // Support: IE <=11 only\n // Running getBoundingClientRect on a\n // disconnected node in IE throws an error\n if (!el.getClientRects().length) {\n return {top: 0, left: 0}\n }\n\n // Get document-relative position by adding viewport scroll to viewport-relative gBCR\n const rect = el.getBoundingClientRect()\n const win = el.ownerDocument.defaultView\n if (win) {\n return {\n top: rect.top + win.pageYOffset,\n left: rect.left + win.pageXOffset,\n }\n }\n\n return rect\n}\n\nfunction getElementParents(element: Element, selector: string) {\n // Element.matches() polyfill\n if (!Element.prototype.matches) {\n Element.prototype.matches = function (s) {\n const matches = (document || this.ownerDocument).querySelectorAll(s)\n let i = matches.length\n while (--i >= 0 && matches.item(i) !== this) {}\n return i > -1\n }\n }\n\n // Set up a parent array\n const parents:Array = []\n\n let el: Element | null = element\n\n // Push each parent element to the array\n for (; el && el !== document.body; el = el.parentElement) {\n if (selector) {\n if (el.matches(selector)) {\n parents.push(el)\n }\n continue\n }\n parents.push(el)\n }\n\n // Return our parent array\n return parents\n}\n\nfunction getHighestZindex(el: HTMLElement) {\n let bufferNode: Node | null = el as Node\n let buffer = el\n while (bufferNode && bufferNode !== document) {\n // Ignore z-index if position is set to a value where z-index is ignored by the browser\n // This makes behavior of this function consistent across browsers\n // WebKit always returns auto if the element is positioned\n const position = buffer.style.getPropertyValue('position')\n if (position === 'absolute' || position === 'relative' || position === 'fixed') {\n // IE returns 0 when zIndex is not specified\n // other browsers return a string\n // we ignore the case of nested elements with an explicit value of 0\n //
\n const value = parseInt(buffer.style.getPropertyValue('z-index'))\n if (!isNaN(value) && value !== 0) {\n return value\n }\n }\n\n bufferNode = bufferNode.parentNode\n buffer = bufferNode as HTMLElement\n }\n return null\n}\n\nfunction getScrollTop(): number {\n return (document.scrollingElement || document.documentElement).scrollTop\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth\nfunction getViewPort(): ViewPortModel {\n return {\n width: window.innerWidth,\n height: window.innerHeight,\n }\n}\n\nfunction insertAfterElement(el: HTMLElement, referenceNode: HTMLElement) {\n return referenceNode.parentNode?.insertBefore(el, referenceNode.nextSibling)\n}\n\nfunction isElementHasClasses(element: HTMLElement, classesStr: string): boolean {\n const classes = classesStr.split(' ')\n for (let i = 0; i < classes.length; i++) {\n if (!element.classList.contains(classes[i])) {\n return false\n }\n }\n\n return true\n}\n\nfunction isVisibleElement(element: HTMLElement): boolean {\n return !(element.offsetWidth === 0 && element.offsetHeight === 0)\n}\n\n// Throttle function: Input as function which needs to be throttled and delay is the time interval in milliseconds\nfunction throttle(timer: number | undefined, func: Function, delay?: number) {\n // If setTimeout is already scheduled, no need to do anything\n if (timer) {\n return\n }\n\n // Schedule a setTimeout after delay seconds\n timer = window.setTimeout(function () {\n func()\n\n // Once setTimeout function execution is finished, timerId = undefined so that in
\n // the next scroll event function execution can be scheduled by the setTimeout\n timer = undefined\n }, delay)\n}\n\nfunction getElementChildren(element: HTMLElement, selector: string): Array | null {\n if (!element || !element.childNodes) {\n return null\n }\n\n const result: Array = []\n for (let i = 0; i < element.childNodes.length; i++) {\n const child = element.childNodes[i]\n // child.nodeType == 1 => Element, Text, Comment, ProcessingInstruction, CDATASection, EntityReference\n if (child.nodeType === 1 && getElementMatches(child as HTMLElement, selector)) {\n result.push(child as HTMLElement)\n }\n }\n\n return result\n}\n\nfunction getElementChild(element: HTMLElement, selector: string): HTMLElement | null {\n const children = getElementChildren(element, selector)\n return children ? children[0] : null\n}\n\nfunction isMobileDevice(): boolean {\n let test = getViewPort().width < +getBreakpoint('lg') ? true : false\n\n if (test === false) {\n // For use within normal web clients\n test = navigator.userAgent.match(/iPad/i) != null\n }\n\n return test\n}\n\nfunction slide(el: HTMLElement, dir: string, speed: number, callback: any) {\n if (\n !el ||\n (dir === 'up' && isVisibleElement(el) === false) ||\n (dir === 'down' && isVisibleElement(el) === true)\n ) {\n return\n }\n\n speed = speed ? speed : 600\n let calcHeight = getElementActualHeight(el)\n let calcPaddingTop: number = 0\n let calcPaddingBottom: number = 0\n\n if (ElementStyleUtil.get(el, 'padding-top') && DataUtil.get(el, 'slide-padding-top') !== true) {\n DataUtil.set(el, 'slide-padding-top', ElementStyleUtil.get(el, 'padding-top'))\n }\n\n if (\n ElementStyleUtil.get(el, 'padding-bottom') &&\n DataUtil.has(el, 'slide-padding-bottom') !== true\n ) {\n DataUtil.set(el, 'slide-padding-bottom', ElementStyleUtil.get(el, 'padding-bottom'))\n }\n\n if (DataUtil.has(el, 'slide-padding-top')) {\n calcPaddingTop = parseInt(DataUtil.get(el, 'slide-padding-top'))\n }\n\n if (DataUtil.has(el, 'slide-padding-bottom')) {\n calcPaddingBottom = parseInt(DataUtil.get(el, 'slide-padding-bottom'))\n }\n\n if (dir === 'up') {\n // up\n el.style.cssText = 'display: block; overflow: hidden;'\n\n if (calcPaddingTop) {\n ElementAnimateUtil.animate(0, calcPaddingTop, speed, function (value: number) {\n el.style.paddingTop = calcPaddingTop - value + 'px'\n })\n }\n\n if (calcPaddingBottom) {\n ElementAnimateUtil.animate(0, calcPaddingBottom, speed, function (value: number) {\n el.style.paddingBottom = calcPaddingBottom - value + 'px'\n })\n }\n\n ElementAnimateUtil.animate(\n 0,\n calcHeight || 0,\n speed,\n function (value: number) {\n el.style.height = (calcHeight || 0) - value + 'px'\n },\n function () {\n el.style.height = ''\n el.style.display = 'none'\n\n if (typeof callback === 'function') {\n callback()\n }\n }\n )\n } else if (dir === 'down') {\n // down\n el.style.cssText = 'display: block; overflow: hidden;'\n\n if (calcPaddingTop) {\n ElementAnimateUtil.animate(\n 0,\n calcPaddingTop,\n speed,\n function (value: number) {\n //\n el.style.paddingTop = value + 'px'\n },\n function () {\n el.style.paddingTop = ''\n }\n )\n }\n\n if (calcPaddingBottom) {\n ElementAnimateUtil.animate(\n 0,\n calcPaddingBottom,\n speed,\n function (value: number) {\n el.style.paddingBottom = value + 'px'\n },\n function () {\n el.style.paddingBottom = ''\n }\n )\n }\n\n ElementAnimateUtil.animate(\n 0,\n calcHeight || 0,\n speed,\n function (value: number) {\n el.style.height = value + 'px'\n },\n function () {\n el.style.height = ''\n el.style.display = ''\n el.style.overflow = ''\n\n if (typeof callback === 'function') {\n callback()\n }\n }\n )\n }\n}\n\nfunction slideUp(el: HTMLElement, speed: number, callback: any) {\n slide(el, 'up', speed, callback)\n}\n\nfunction slideDown(el: HTMLElement, speed: number, callback: any) {\n slide(el, 'down', speed, callback)\n}\n\nfunction getBreakpoint(breakpoint: string) {\n let value: number | string = getCSSVariableValue('--bs-' + breakpoint)\n if (value) {\n value = parseInt(value.trim())\n }\n\n return value\n}\n\nfunction getAttributeValueByBreakpoint(incomingAttr: string): string | JSON {\n let value = toJSON(incomingAttr)\n if (typeof value !== 'object') {\n return incomingAttr\n }\n\n const width = getViewPort().width\n let resultKey\n let resultBreakpoint = -1\n let breakpoint\n\n for (let key in value) {\n if (key === 'default') {\n breakpoint = 0\n } else {\n breakpoint = getBreakpoint(key) ? +getBreakpoint(key) : parseInt(key)\n }\n\n if (breakpoint <= width && breakpoint > resultBreakpoint) {\n resultKey = key\n resultBreakpoint = breakpoint\n }\n }\n\n return resultKey ? getObjectPropertyValueByKey(value, resultKey) : value\n}\n\nfunction colorLighten(color: string, amount: number) {\n const addLight = (_color: string, _amount: number) => {\n const cc = parseInt(_color, 16) + _amount\n const cNum = cc > 255 ? 255 : cc\n const c = cNum.toString(16).length > 1 ? cNum.toString(16) : `0${cNum.toString(16)}`\n return c\n }\n\n color = color.indexOf('#') >= 0 ? color.substring(1, color.length) : color\n amount = parseInt(((255 * amount) / 100).toString())\n return (color = `#${addLight(color.substring(0, 2), amount)}${addLight(\n color.substring(2, 4),\n amount\n )}${addLight(color.substring(4, 6), amount)}`)\n}\n\nfunction colorDarken(color: string, amount: number) {\n const subtractLight = (_color: string, _amount: number) => {\n const cc = parseInt(color, 16) - amount\n const cNum = cc < 0 ? 0 : cc\n const c = cNum.toString(16).length > 1 ? cNum.toString(16) : `0${cNum.toString(16)}`\n return c\n }\n\n color = color.indexOf('#') >= 0 ? color.substring(1, color.length) : color\n amount = parseInt(((255 * amount) / 100).toString())\n\n return (color = `#${subtractLight(color.substring(0, 2), amount)}${subtractLight(\n color.substring(2, 4),\n amount\n )}${subtractLight(color.substring(4, 6), amount)}`)\n}\n\nexport {\n getBreakpoint,\n getCSS,\n getCSSVariableValue,\n getElementActualCss,\n getElementActualHeight,\n getElementActualWidth,\n getElementIndex,\n getElementMatches,\n getElementOffset,\n getElementParents,\n getHighestZindex,\n getScrollTop,\n getViewPort,\n insertAfterElement,\n isElementHasClasses,\n isVisibleElement,\n throttle,\n getElementChildren,\n getElementChild,\n isMobileDevice,\n slide,\n slideUp,\n slideDown,\n getAttributeValueByBreakpoint,\n colorLighten,\n colorDarken,\n}\n","import {DataUtil} from './_DataUtil'\r\nimport {getUniqueIdWithPrefix} from './_TypesHelpers'\r\n\r\nexport interface EventMeta {\r\n name: string\r\n callback: Function\r\n one: boolean\r\n fired: boolean\r\n}\r\n\r\nexport class EventHandlerUtil {\r\n static store: Map> = new Map()\r\n\r\n private static setEventMetasByName(name: string, metas: Map): void {\r\n EventHandlerUtil.store.set(name, metas)\r\n }\r\n\r\n private static getEventMetasByName(name: string): Map | undefined {\r\n return EventHandlerUtil.store.get(name)\r\n }\r\n\r\n private static setEventMetaByNameAndHandlerId(\r\n name: string,\r\n handlerId: string,\r\n meta: EventMeta\r\n ): void {\r\n let metas = EventHandlerUtil.getEventMetasByName(name)\r\n if (!metas) {\r\n metas = new Map()\r\n }\r\n\r\n metas.set(handlerId, meta)\r\n EventHandlerUtil.setEventMetasByName(name, metas)\r\n }\r\n\r\n private static getEventsMetaByHandlerId(name: string, handlerId: string): EventMeta | undefined {\r\n const metas = EventHandlerUtil.store.get(name)\r\n if (!metas) {\r\n return\r\n }\r\n\r\n return metas.get(handlerId)\r\n }\r\n\r\n private static setFiredByNameAndHandlerId(name: string, handerId: string, fired: boolean): void {\r\n const meta = EventHandlerUtil.getEventsMetaByHandlerId(name, handerId)\r\n if (!meta) {\r\n return\r\n }\r\n\r\n meta.fired = fired\r\n EventHandlerUtil.setEventMetaByNameAndHandlerId(name, handerId, meta)\r\n }\r\n\r\n private static addEvent(\r\n element: HTMLElement,\r\n name: string,\r\n callback: Function,\r\n one: boolean = false\r\n ) {\r\n const handlerId = getUniqueIdWithPrefix('event')\r\n DataUtil.set(element, name, handlerId)\r\n const meta: EventMeta = {\r\n name: name,\r\n callback: callback,\r\n one: one,\r\n fired: false,\r\n }\r\n\r\n EventHandlerUtil.setEventMetaByNameAndHandlerId(name, handlerId, meta)\r\n }\r\n\r\n private static removeEvent(element: HTMLElement, name: string) {\r\n const handlerId = DataUtil.get(element, name)\r\n if (!handlerId) {\r\n return\r\n }\r\n\r\n const metas = EventHandlerUtil.getEventMetasByName(name)\r\n if (!metas) {\r\n return\r\n }\r\n\r\n metas.delete(handlerId)\r\n EventHandlerUtil.setEventMetasByName(name, metas)\r\n }\r\n\r\n public static trigger(element: HTMLElement, name: string, e?: Event) {\r\n if (DataUtil.has(element, name)) {\r\n const handlerId = DataUtil.get(element, name)\r\n if (!handlerId) {\r\n return undefined\r\n }\r\n\r\n const handler = EventHandlerUtil.getEventsMetaByHandlerId(name, handlerId)\r\n if (handler) {\r\n if (handler.name === name) {\r\n if (handler.one === true) {\r\n if (handler.fired === false) {\r\n EventHandlerUtil.setFiredByNameAndHandlerId(name, handlerId, true)\r\n return handler.callback.call(this, e)\r\n }\r\n } else {\r\n return handler.callback.call(this, e)\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null\r\n }\r\n\r\n public static on = function (element: HTMLElement, name: string, callBack: Function): void {\r\n EventHandlerUtil.addEvent(element, name, callBack, false)\r\n }\r\n\r\n public static one(element: HTMLElement, name: string, callBack: Function): void {\r\n EventHandlerUtil.addEvent(element, name, callBack, true)\r\n }\r\n\r\n public static off(element: HTMLElement, name: string): void {\r\n EventHandlerUtil.removeEvent(element, name)\r\n }\r\n}\r\n","import {\r\n getElementIndex,\r\n getUniqueIdWithPrefix,\r\n ElementAnimateUtil,\r\n EventHandlerUtil,\r\n DataUtil,\r\n DOMEventHandlerUtil,\r\n ElementStyleUtil,\r\n} from '../_utils/index'\r\n\r\nexport interface IStepperOptions {\r\n startIndex: number\r\n animation: boolean\r\n animationSpeed: string\r\n animationNextClass: string\r\n animationPreviousClass: string\r\n}\r\n\r\nconst defaultStepperOptions: IStepperOptions = {\r\n startIndex: 1,\r\n animation: false,\r\n animationSpeed: '0.3s',\r\n animationNextClass: 'animate__animated animate__slideInRight animate__fast',\r\n animationPreviousClass: 'animate__animated animate__slideInLeft animate__fast',\r\n}\r\n\r\nclass StepperComponent {\r\n element: HTMLElement\r\n options: IStepperOptions\r\n instanceUid: string\r\n steps: NodeListOf\r\n btnNext: HTMLElement | null\r\n btnPrev: HTMLElement | null\r\n btnSubmit: HTMLElement | null\r\n totatStepsNumber: number = 0\r\n passedStepIndex: number = 0\r\n currentStepIndex: number = 1\r\n\r\n constructor(_element: HTMLElement, options: IStepperOptions) {\r\n this.element = _element\r\n this.options = Object.assign(defaultStepperOptions, options)\r\n this.instanceUid = getUniqueIdWithPrefix('stepper')\r\n\r\n // Elements\r\n this.steps = this.element.querySelectorAll('[data-kt-stepper-element=\"nav\"]')\r\n this.btnNext = this.element.querySelector('[data-kt-stepper-action=\"next\"]')\r\n this.btnPrev = this.element.querySelector('[data-kt-stepper-action=\"previous\"]')\r\n this.btnSubmit = this.element.querySelector('[data-kt-stepper-action=\"submit\"]')\r\n\r\n // Variables\r\n this.totatStepsNumber = this.steps?.length | 0\r\n this.passedStepIndex = 0\r\n this.currentStepIndex = 1\r\n\r\n // Set Current Step\r\n if (this.options.startIndex > 1) {\r\n this._goTo(this.options.startIndex)\r\n }\r\n\r\n // Event Handlers\r\n this.initHandlers()\r\n\r\n // Bind Instance\r\n DataUtil.set(this.element, 'stepper', this)\r\n }\r\n\r\n private _goTo = (index: number) => {\r\n EventHandlerUtil.trigger(this.element, 'kt.stepper.change')\r\n // Skip if this step is already shown\r\n if (index === this.currentStepIndex || index > this.totatStepsNumber || index < 0) {\r\n return\r\n }\r\n\r\n // Validate step number\r\n index = parseInt(index.toString())\r\n // Set current step\r\n this.passedStepIndex = this.currentStepIndex\r\n this.currentStepIndex = index\r\n\r\n // Refresh elements\r\n this.refreshUI()\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.stepper.changed')\r\n }\r\n\r\n private initHandlers = () => {\r\n this.btnNext?.addEventListener('click', (e: Event) => {\r\n e.preventDefault()\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.stepper.next', e)\r\n })\r\n\r\n this.btnPrev?.addEventListener('click', (e: Event) => {\r\n e.preventDefault()\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.stepper.previous', e)\r\n })\r\n\r\n DOMEventHandlerUtil.on(this.element, '[data-kt-stepper-action=\"step\"]', 'click', (e: Event) => {\r\n e.preventDefault()\r\n\r\n if (this.steps && this.steps.length > 0) {\r\n for (let i = 0; i < this.steps.length; i++) {\r\n if ((this.steps[i] as HTMLElement) === this.element) {\r\n let index = i + 1\r\n\r\n const stepDirection = this._getStepDirection(index)\r\n EventHandlerUtil.trigger(this.element, `stepper.${stepDirection}`, e)\r\n return\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n private _getStepDirection = (index: number) => {\r\n return index > this.currentStepIndex ? 'next' : 'previous'\r\n }\r\n\r\n private getStepContent = (index: number) => {\r\n const content = this.element.querySelectorAll('[data-kt-stepper-element=\"content\"]')\r\n if (!content) {\r\n return false\r\n }\r\n\r\n if (content[index - 1]) {\r\n return content[index - 1]\r\n }\r\n\r\n return false\r\n }\r\n\r\n private getLastStepIndex = () => {\r\n return this.totatStepsNumber\r\n }\r\n\r\n private getTotalStepsNumber = () => {\r\n return this.totatStepsNumber\r\n }\r\n\r\n private refreshUI = () => {\r\n let state = ''\r\n\r\n if (this.isLastStep()) {\r\n state = 'last'\r\n } else if (this.isFirstStep()) {\r\n state = 'first'\r\n } else {\r\n state = 'between'\r\n }\r\n\r\n // Set state class\r\n this.element.classList.remove('last')\r\n this.element.classList.remove('first')\r\n this.element.classList.remove('between')\r\n\r\n this.element.classList.add(state)\r\n\r\n // Step Items\r\n const elements = this.element.querySelectorAll(\r\n '[data-kt-stepper-element=\"nav\"], [data-kt-stepper-element=\"content\"], [data-kt-stepper-element=\"info\"]'\r\n )\r\n\r\n if (!elements || elements.length <= 0) {\r\n return\r\n }\r\n\r\n for (var i = 0, len = elements.length; i < len; i++) {\r\n var element = elements[i] as HTMLElement\r\n var index = getElementIndex(element) + 1\r\n\r\n element.classList.remove('current')\r\n element.classList.remove('completed')\r\n element.classList.remove('pending')\r\n\r\n if (index === this.currentStepIndex) {\r\n element.classList.add('current')\r\n\r\n if (\r\n this.options.animation !== false &&\r\n element.getAttribute('data-kt-stepper-element') === 'content'\r\n ) {\r\n ElementStyleUtil.set(element, 'animationDuration', this.options.animationSpeed)\r\n\r\n const animation =\r\n this._getStepDirection(this.passedStepIndex) === 'previous'\r\n ? this.options.animationPreviousClass\r\n : this.options.animationNextClass\r\n ElementAnimateUtil.animateClass(element, animation)\r\n }\r\n } else {\r\n if (index < this.currentStepIndex) {\r\n element.classList.add('completed')\r\n } else {\r\n element.classList.add('pending')\r\n }\r\n }\r\n }\r\n }\r\n\r\n private isLastStep = () => {\r\n return this.currentStepIndex === this.totatStepsNumber\r\n }\r\n\r\n private isFirstStep = () => {\r\n return this.currentStepIndex === 1\r\n }\r\n\r\n private isBetweenStep = () => {\r\n return this.isLastStep() === false && this.isFirstStep() === false\r\n }\r\n\r\n // ///////////////////////\r\n // // ** Public API ** //\r\n // ///////////////////////\r\n\r\n // // Plugin API\r\n public goto = (index: number) => {\r\n return this._goTo(index)\r\n }\r\n\r\n public goNext = () => {\r\n return this.goto(this.getNextStepIndex())\r\n }\r\n\r\n public goPrev = () => {\r\n return this.goto(this.getPrevStepIndex())\r\n }\r\n\r\n public goFirst = () => {\r\n return this.goto(1)\r\n }\r\n\r\n public goLast = () => {\r\n return this.goto(this.getLastStepIndex())\r\n }\r\n\r\n public getCurrentStepIndex = () => {\r\n return this.currentStepIndex\r\n }\r\n\r\n public getNextStepIndex = () => {\r\n if (this.totatStepsNumber >= this.currentStepIndex + 1) {\r\n return this.currentStepIndex + 1\r\n } else {\r\n return this.totatStepsNumber\r\n }\r\n }\r\n\r\n public getPassedStepIndex = () => {\r\n return this.passedStepIndex\r\n }\r\n\r\n public getPrevStepIndex = () => {\r\n if (this.currentStepIndex - 1 > 1) {\r\n return this.currentStepIndex - 1\r\n } else {\r\n return 1\r\n }\r\n }\r\n\r\n public getElement = (index: number) => {\r\n return this.element\r\n }\r\n\r\n // Event API\r\n public on = (name: string, handler: Function) => {\r\n return EventHandlerUtil.on(this.element, name, handler)\r\n }\r\n\r\n public one = (name: string, handler: Function) => {\r\n return EventHandlerUtil.one(this.element, name, handler)\r\n }\r\n\r\n public off = (name: string) => {\r\n return EventHandlerUtil.off(this.element, name)\r\n }\r\n\r\n public destroy = () => {\r\n console.log('destroy stepper')\r\n }\r\n\r\n public trigger = (name: string, event: Event) => {\r\n return EventHandlerUtil.trigger(this.element, name, event)\r\n }\r\n\r\n // Static methods\r\n public static hasInstace(element: HTMLElement): boolean {\r\n return DataUtil.has(element, 'stepper')\r\n }\r\n\r\n public static getInstance(element: HTMLElement): StepperComponent | null {\r\n if (element !== null && StepperComponent.hasInstace(element)) {\r\n return DataUtil.get(element, 'stepper')\r\n }\r\n return null\r\n }\r\n\r\n // Create Instances\r\n public static createInstances(selector: string): void {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((element) => {\r\n const item = element as HTMLElement\r\n let stepper = StepperComponent.getInstance(item)\r\n if (!stepper) {\r\n stepper = new StepperComponent(item, defaultStepperOptions)\r\n }\r\n })\r\n }\r\n\r\n public static createInsance = (\r\n element: HTMLElement,\r\n options: IStepperOptions = defaultStepperOptions\r\n ): StepperComponent | null => {\r\n if (!element) {\r\n return null\r\n }\r\n let stepper = StepperComponent.getInstance(element)\r\n if (!stepper) {\r\n stepper = new StepperComponent(element, options)\r\n }\r\n return stepper\r\n }\r\n\r\n public static bootstrap(attr: string = '[data-kt-stepper]') {\r\n StepperComponent.createInstances(attr)\r\n }\r\n}\r\n\r\nexport {StepperComponent, defaultStepperOptions}\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_view = _resolveComponent(\"router-view\")!\n const _component_CookieNotification = _resolveComponent(\"CookieNotification\")!\n const _component_InviteFriendModal = _resolveComponent(\"InviteFriendModal\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_component_router_view),\n (!_ctx.hasAgreedToCookies)\n ? (_openBlock(), _createBlock(_component_CookieNotification, {\n key: 0,\n class: \"stickToBottomOfWindow\",\n onAgree: _ctx.agreeToCookies\n }, null, 8, [\"onAgree\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.$can('can_invite_workers', 'all'))\n ? (_openBlock(), _createBlock(_component_InviteFriendModal, {\n key: _ctx.modalKey,\n onSuccess: _ctx.closeInviteModal\n }, null, 8, [\"onSuccess\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"d-flex d-lg-block flex-column bg-dark text-light text-center rounded-0 cookiealert py-5\" }\nconst _hoisted_2 = /*#__PURE__*/_createTextVNode(\" We use cookies or similar technologies as specified in the cookie policy. You can consent to the use of such technologies by clicking the button or by continuing to browse otherwise. You can learn more about this in our \")\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"a\", {\n href: \"/cookie-policy\",\n target: \"_blank\"\n}, \"Cookie Policy\", -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _hoisted_2,\n _hoisted_3,\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$emit('agree'))),\n class: \"btn btn-primary d-inline mx-auto ms-lg-5 acceptcookies mt-5 mt-lg-0\"\n }, \" I agree \")\n ]))\n}","\n\nexport default {\n name: \"cookie-notification\"\n};\n","import { render } from \"./CookieNotification.vue?vue&type=template&id=77fe9d87&ts=true\"\nimport script from \"./CookieNotification.vue?vue&type=script&lang=ts\"\nexport * from \"./CookieNotification.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/codebuild/output/src1803551405/src/wci-front/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx } from \"vue\"\n\nconst _hoisted_1 = {\n class: \"modal fade\",\n id: \"invite_a_friend_modal\",\n \"data-toggle\": \"modal\"\n}\nconst _hoisted_2 = { class: \"modal-dialog\" }\nconst _hoisted_3 = { class: \"modal-content\" }\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"modal-header\" }, [\n /*#__PURE__*/_createElementVNode(\"h5\", {\n class: \"modal-title\",\n id: \"invite_a_friend_modal_label\"\n }, \" Invite a friend \"),\n /*#__PURE__*/_createElementVNode(\"div\", {\n class: \"btn btn-icon btn-sm btn-active-light-primary ms-2\",\n \"data-bs-dismiss\": \"modal\",\n \"aria-label\": \"Close\"\n }, [\n /*#__PURE__*/_createElementVNode(\"span\", { class: \"svg-icon svg-icon-2x\" })\n ])\n], -1)\nconst _hoisted_5 = { class: \"modal-body\" }\nconst _hoisted_6 = { class: \"\" }\nconst _hoisted_7 = /*#__PURE__*/_createElementVNode(\"label\", { class: \"required fs-5 fw-bold mb-2\" }, \"Address\", -1)\nconst _hoisted_8 = { class: \"fv-plugins-message-container\" }\nconst _hoisted_9 = { class: \"fv-help-block\" }\nconst _hoisted_10 = { class: \"modal-footer\" }\nconst _hoisted_11 = /*#__PURE__*/_createElementVNode(\"button\", {\n type: \"button\",\n class: \"btn btn-light\",\n \"data-bs-dismiss\": \"modal\"\n}, \" Close \", -1)\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = {\n key: 0,\n class: \"spinner-border spinner-border-sm\"\n}\nconst _hoisted_14 = /*#__PURE__*/_createTextVNode(\" Send \")\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Field = _resolveComponent(\"Field\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Form = _resolveComponent(\"Form\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createVNode(_component_Form, {\n onSubmit: _ctx.handleSubmit,\n \"validation-schema\": _ctx.validationSchema\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _hoisted_7,\n _createVNode(_component_Field, {\n type: \"text\",\n class: \"form-control form-control-solid\",\n placeholder: \"Enter email\",\n name: \"email\",\n modelValue: _ctx.email,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.email) = $event))\n }, null, 8, [\"modelValue\"]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"div\", _hoisted_9, [\n _createVNode(_component_ErrorMessage, { name: \"email\" })\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _hoisted_11,\n _createElementVNode(\"button\", {\n class: \"btn btn-primary\",\n type: \"submit\",\n disabled: _ctx.loading\n }, [\n (_ctx.loading)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_13))\n : _createCommentVNode(\"\", true),\n _hoisted_14\n ], 8, _hoisted_12)\n ])\n ]),\n _: 1\n }, 8, [\"onSubmit\", \"validation-schema\"])\n ])\n ])\n ]))\n}","\nimport { defineComponent, ref } from \"vue\";\nimport { Form, ErrorMessage, Field } from \"vee-validate\";\nimport * as Yup from \"yup\";\nimport { useStore } from \"vuex\";\nimport Swal from \"sweetalert2\";\n\nexport default defineComponent({\n name: \"invite-a-friend-modal\",\n components: {\n Form,\n Field,\n ErrorMessage\n },\n setup(props, { emit }) {\n const store = useStore();\n const email = ref(\"\");\n const loading = ref(false);\n const validationSchema = Yup.object().shape({\n email: Yup.string()\n .required()\n .email()\n .label(\"Email\")\n });\n\n function handleSubmit() {\n loading.value = true;\n store\n .dispatch(\"UsersModule/sendInviteAFriendMail\", email.value)\n .then(() => {\n loading.value = false;\n emit(\"success\");\n Swal.fire({\n toast: true,\n position: \"top-right\",\n icon: \"success\",\n title: \"Invite send successfully\",\n showConfirmButton: false,\n timer: 1300\n });\n })\n .catch(error => {\n loading.value = false;\n Swal.fire({\n toast: true,\n position: \"top-right\",\n icon: \"error\",\n title: error,\n showConfirmButton: false,\n timer: 1300\n });\n });\n }\n\n return {\n email,\n loading,\n handleSubmit,\n validationSchema\n };\n }\n});\n","import { render } from \"./invite-a-friend-modal.vue?vue&type=template&id=0a1f9554&ts=true\"\nimport script from \"./invite-a-friend-modal.vue?vue&type=script&lang=ts\"\nexport * from \"./invite-a-friend-modal.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/codebuild/output/src1803551405/src/wci-front/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\r\nimport { computed, defineComponent, onMounted, ref, nextTick } from \"vue\";\r\nimport { useStore } from \"vuex\";\r\nimport { Mutations } from \"@/store/enums/StoreEnums\";\r\nimport { useAbility } from \"@casl/vue\";\r\nimport { Ability, AbilityBuilder } from \"@casl/ability\";\r\nimport AccessService from \"@/core/services/AccessService\";\r\nimport CookieNotification from \"@/components/Cookies/CookieNotification.vue\";\r\nimport InviteFriendModal from \"@/components/users/userProfile/fields/referred-users/misc/invite-a-friend-modal.vue\";\r\nimport { Modal } from \"bootstrap\";\r\n\r\nexport default defineComponent({\r\n name: \"app\",\r\n metaInfo: {\r\n meta: [\r\n { charset: \"utf-8\" },\r\n { name: \"viewport\", content: \"width=device-width, initial-scale=1\" }\r\n ]\r\n },\r\n components: {\r\n CookieNotification,\r\n InviteFriendModal\r\n },\r\n setup() {\r\n const app = document.getElementById(\"app\");\r\n let modal = null as Modal;\r\n const modalKey = ref(0);\r\n const store = useStore();\r\n const ability = useAbility();\r\n const { can, rules } = new AbilityBuilder(Ability);\r\n const isCookieDialogOpen = ref(false);\r\n const cookiesStatus = ref(\r\n localStorage.getItem(\"areCookiesAccepted\")\r\n );\r\n function agreeToCookies() {\r\n localStorage.setItem(\"areCookiesAccepted\", \"true\");\r\n cookiesStatus.value = localStorage.getItem(\"areCookiesAccepted\");\r\n }\r\n app?.addEventListener(\"open_invite_friend_modal\", async () => {\r\n modalKey.value++;\r\n await nextTick();\r\n modal = new Modal(document.getElementById(\"invite_a_friend_modal\"));\r\n modal?.show();\r\n });\r\n const closeInviteModal = () => {\r\n modal.hide();\r\n modal = null;\r\n }\r\n const hasAgreedToCookies = computed((): boolean => {\r\n if (cookiesStatus.value !== null) return true;\r\n else return false;\r\n });\r\n onMounted(() => {\r\n const rulesStored = AccessService.getRules();\r\n\r\n if (rulesStored) {\r\n rulesStored.forEach(rule => {\r\n can(rule, \"all\");\r\n });\r\n\r\n ability.update(rules);\r\n }\r\n\r\n /**\r\n * this is to override the layout config using saved data from localStorage\r\n * remove this to use config only from static config (@/core/config/DefaultLayoutConfig.ts)\r\n */\r\n store.commit(Mutations.OVERRIDE_LAYOUT_CONFIG);\r\n });\r\n\r\n return {\r\n agreeToCookies,\r\n closeInviteModal,\r\n isCookieDialogOpen,\r\n hasAgreedToCookies,\r\n modalKey\r\n };\r\n }\r\n});\r\n","import { render } from \"./App.vue?vue&type=template&id=7ca588f3&ts=true\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=7ca588f3&lang=scss\"\nimport \"./App.vue?vue&type=style&index=1&id=7ca588f3&lang=css\"\n\nimport exportComponent from \"/codebuild/output/src1803551405/src/wci-front/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createI18n } from \"vue-i18n\";\n\nconst messages = {\n en: {\n dashboard: \"Dashboard\",\n layoutBuilder: \"Layout builder\",\n craft: \"Crafted\",\n pages: \"Pages\",\n profile: \"Profile\",\n profileOverview: \"Overview\",\n projects: \"Projects\",\n campaigns: \"Campaigns\",\n documents: \"Documents\",\n connections: \"Connections\",\n wizards: \"Wizards\",\n horizontal: \"Horizontal\",\n vertical: \"Vertical\",\n account: \"Account\",\n accountOverview: \"Overview\",\n settings: \"Settings\",\n authentication: \"Authentication\",\n basicFlow: \"Basic Flow\",\n signIn: \"Sign-in\",\n signUp: \"Sign-up\",\n passwordReset: \"Password Reset\",\n error404: \"Error 404\",\n error500: \"Error 500\",\n apps: \"Apps\",\n chat: \"Chat\",\n privateChat: \"Private Chat\",\n groupChat: \"Group Chat\",\n drawerChat: \"Drawer Chat\",\n widgets: \"Widgets\",\n widgetsLists: \"Lists\",\n widgetsStatistics: \"Statistics\",\n widgetsCharts: \"Charts\",\n widgetsMixed: \"Mixed\",\n widgetsTables: \"Tables\",\n widgetsFeeds: \"Feeds\",\n changelog: \"Changelog\",\n docsAndComponents: \"Docs & Components\",\n megaMenu: \"Mega Menu\",\n exampleLink: \"Example link\",\n modals: \"Modals\",\n general: \"General\",\n inviteFriends: \"Invite Friends\",\n viewUsers: \"View Users\",\n upgradePlan: \"Upgrade Plan\",\n shareAndEarn: \"Share & Earn\",\n forms: \"Forms\",\n newTarget: \"New Target\",\n newCard: \"New Card\",\n newAddress: \"New Address\",\n createAPIKey: \"Create API Key\",\n twoFactorAuth: \"Two Factor Auth\",\n createApp: \"Create App\",\n createAccount: \"Create Account\",\n activity: \"Activity\"\n },\n es: {\n dashboard: \"Tablero\",\n layoutBuilder: \"Constructor de maquetación\",\n craft: \"Elaborado\",\n pages: \"Paginas\",\n profile: \"Perfil\",\n profileOverview: \"Descripción general\",\n projects: \"Proyectos\",\n campaigns: \"Campañas\",\n documents: \"Documentos\",\n connections: \"Conexiones\",\n wizards: \"Magos\",\n horizontal: \"Horizontal\",\n vertical: \"Vertical\",\n account: \"Cuenta\",\n accountOverview: \"Descripción general\",\n settings: \"Ajustes\",\n authentication: \"Autenticación\",\n basicFlow: \"Flujo básico\",\n signIn: \"Registrarse\",\n signUp: \"Inscribirse\",\n passwordReset: \"Restablecimiento de contraseña\",\n error404: \"Error 404\",\n error500: \"Error 500\",\n apps: \"Aplicaciones\",\n chat: \"Chat\",\n privateChat: \"Chat privado\",\n groupChat: \"Grupo de chat\",\n drawerChat: \"Chat del cajón\",\n widgets: \"Widgets\",\n widgetsLists: \"Liza\",\n widgetsStatistics: \"Estadísticas\",\n widgetsCharts: \"Gráficos\",\n widgetsMixed: \"Mezclada\",\n widgetsTables: \"Mesas\",\n widgetsFeeds: \"Alimenta\",\n changelog: \"Registro de cambios\",\n docsAndComponents: \"Documentos & Componentes\",\n megaMenu: \"Mega menú\",\n exampleLink: \"Enlace de ejemplo\",\n modals: \"Modales\",\n general: \"General\",\n inviteFriends: \"Invitar A Amigos\",\n viewUsers: \"Ver Usuarios\",\n upgradePlan: \"Plan De Actualización\",\n shareAndEarn: \"Compartir Y Ganar\",\n forms: \"Formas\",\n newTarget: \"Nuevo Objetivo\",\n newCard: \"Nueva Tarjeta\",\n newAddress: \"Nueva Direccion\",\n createAPIKey: \"Crea Clave De Api\",\n twoFactorAuth: \"Dos Factores\",\n createApp: \"Crear Aplicacion\",\n createAccount: \"Crear Una Cuenta\",\n activity: \"Actividad\"\n },\n de: {\n dashboard: \"Instrumententafel\",\n layoutBuilder: \"Layout-Builder\",\n craft: \"Hergestellt\",\n pages: \"Seiten\",\n profile: \"Profil\",\n profileOverview: \"Überblick\",\n projects: \"Projekte\",\n campaigns: \"Kampagnen\",\n documents: \"Unterlagen\",\n connections: \"Anschlüsse\",\n wizards: \"Zauberer\",\n horizontal: \"Horizontal\",\n vertical: \"Vertikal\",\n account: \"Konto\",\n accountOverview: \"Überblick\",\n settings: \"Die Einstellungen\",\n authentication: \"Authentifizierung\",\n basicFlow: \"Grundfluss\",\n signIn: \"Einloggen\",\n signUp: \"Anmelden\",\n passwordReset: \"Passwort zurücksetzen\",\n error404: \"Fehler 404\",\n error500: \"Fehler 500\",\n apps: \"Apps\",\n chat: \"Plaudern\",\n privateChat: \"Private Chat\",\n groupChat: \"Privater Chat\",\n drawerChat: \"Gruppenchat Schubladen-Chat\",\n widgets: \"Widgets\",\n widgetsLists: \"Listen\",\n widgetsStatistics: \"Statistiken\",\n widgetsCharts: \"Diagramme\",\n widgetsMixed: \"Gemischt\",\n widgetsTables: \"Tabellen\",\n widgetsFeeds: \"Einspeisungen\",\n changelog: \"Änderungsprotokoll\",\n docsAndComponents: \"Dokumente & Komponenten\",\n megaMenu: \"Mega-Menü\",\n exampleLink: \"Beispiellink\",\n modals: \"Modale\",\n general: \"Allgemeines\",\n inviteFriends: \"Freunde Einladen\",\n viewUsers: \"Benutzer Anzeigen.\",\n upgradePlan: \"Upgrade-Plan\",\n shareAndEarn: \"Teilen & Verdienen\",\n forms: \"Formen\",\n newTarget: \"Neues Ziel\",\n newCard: \"Neue Karte\",\n newAddress: \"Neue Adresse\",\n createAPIKey: \"Api-Key Erstellen\",\n twoFactorAuth: \"Zwei Faktor Auth.\",\n createApp: \"App Erstellen\",\n createAccount: \"Benutzerkonto Erstellen\",\n activity: \"Aktivität\"\n },\n ja: {\n dashboard: \"ダッシュボード\",\n layoutBuilder: \"レイアウトビルダー\",\n craft: \"作成された\",\n pages: \"ページ\",\n profile: \"プロフィール\",\n profileOverview: \"概要\",\n projects: \"プロジェクト\",\n campaigns: \"キャンペーン\",\n documents: \"書類\",\n connections: \"接続\",\n wizards: \"ウィザード\",\n horizontal: \"横\",\n vertical: \"垂直\",\n account: \"アカウント\",\n accountOverview: \"概要\",\n settings: \"設定\",\n authentication: \"認証\",\n basicFlow: \"基本的な流れ\",\n signIn: \"サインイン\",\n signUp: \"サインアップ\",\n passwordReset: \"パスワードのリセット\",\n error404: \"エラー404\",\n error500: \"エラー 500\",\n apps: \"アプリ\",\n chat: \"チャット\",\n privateChat: \"プライベートチャット\",\n groupChat: \"グループチャット\",\n drawerChat: \"ドロワーチャット\",\n widgets: \"ウィジェット\",\n widgetsLists: \"リスト\",\n widgetsStatistics: \"統計\",\n widgetsCharts: \"チャート\",\n widgetsMixed: \"混合\",\n widgetsTables: \"テーブル\",\n widgetsFeeds: \"フィード\",\n changelog: \"変更ログ\",\n docsAndComponents: \"ドキュメントとコンポーネント\",\n megaMenu: \"メガメニュー\",\n exampleLink: \"リンク例\",\n modals: \"モーダルズ\",\n general: \"一般\",\n inviteFriends: \"友達を招待\",\n viewUsers: \"ユーザーを表示します\",\n upgradePlan: \"アップグレードプラン\",\n shareAndEarn: \"シェア&稼働\",\n forms: \"フォーム\",\n newTarget: \"新しいターゲット\",\n newCard: \"新しいカード\",\n newAddress: \"新しいアドレス\",\n createAPIKey: \"Apiキーを作成します\",\n twoFactorAuth: \"2つの要因Auth\",\n createApp: \"アプリを作成します\",\n createAccount: \"アカウントを作成する\",\n activity: \"アクティビティ\"\n },\n fr: {\n dashboard: \"Générateur de mise\",\n layoutBuilder: \"En page\",\n craft: \"Fabriqué\",\n pages: \"Pages\",\n profile: \"Profil\",\n profileOverview: \"Aperçu\",\n projects: \"Projets\",\n campaigns: \"Campagnes\",\n documents: \"Documents\",\n connections: \"Connexions\",\n wizards: \"Sorciers\",\n horizontal: \"Horizontal\",\n vertical: \"Verticale\",\n account: \"Compte\",\n accountOverview: \"Aperçu\",\n settings: \"Paramètres\",\n authentication: \"Authentification\",\n basicFlow: \"Flux de base\",\n signIn: \"SS'identifier\",\n signUp: \"Inscrivez-vous\",\n passwordReset: \"Réinitialisation du mot de passe\",\n error404: \"Erreur 404\",\n error500: \"Erreur 500\",\n apps: \"Applications\",\n chat: \"Discuter\",\n privateChat: \"Discussion privée\",\n groupChat: \"Discussion de groupe\",\n drawerChat: \"Chat de tiroir\",\n widgets: \"Widgets\",\n widgetsLists: \"Listes\",\n widgetsStatistics: \"Statistiques\",\n widgetsCharts: \"Graphiques\",\n widgetsMixed: \"Mixte\",\n widgetsTables: \"Les tables\",\n widgetsFeeds: \"Flux\",\n changelog: \"Journal des modifications\",\n docsAndComponents: \"Documents & composants\",\n megaMenu: \"Méga Menu\",\n exampleLink: \"Exemple de lien\",\n modals: \"Modals\",\n general: \"Général\",\n inviteFriends: \"Inviter Des Amis\",\n viewUsers: \"Voir Les Utilisateurs\",\n upgradePlan: \"Plan De Mise À Niveau\",\n shareAndEarn: \"Partager Et Gagner\",\n forms: \"Formes\",\n newTarget: \"Nouvelle Cible\",\n newCard: \"Nouvelle Carte\",\n newAddress: \"Nouvelle Adresse\",\n createAPIKey: \"Créer Une Touche Api\",\n twoFactorAuth: \"Deux Facteurs D'Authentification\",\n createApp: \"Créer Une Application\",\n createAccount: \"Créer Un Compte\",\n activity: \"Activité\"\n }\n};\n\nconst i18n = createI18n({\n legacy: false,\n locale: \"en\",\n globalInjection: true,\n messages\n});\n\nexport default i18n;\n","import { App } from \"vue\";\r\nimport VueApexCharts from \"vue3-apexcharts\";\r\n\r\n/**\r\n * Initialize VueApexChart component\r\n * @param app vue instance\r\n */\r\nexport function initApexCharts(app: App) {\r\n app.use(VueApexCharts);\r\n}\r\n","import { App } from \"vue\";\r\nimport InlineSvg from \"vue-inline-svg\";\r\n\r\n/**\r\n * Initialize Inline-Svg component\r\n * @param app vue instance\r\n */\r\nexport function initInlineSvg(app: App) {\r\n app.component(\"inline-svg\", InlineSvg);\r\n}\r\n","import { configure } from \"vee-validate\";\r\n\r\nexport function initVeeValidate() {\r\n // Updating default vee-validate configuration\r\n configure({\r\n validateOnBlur: true,\r\n validateOnChange: true,\r\n validateOnInput: true,\r\n validateOnModelUpdate: true\r\n });\r\n}\r\n","import {\r\n MenuComponent,\r\n DrawerComponent,\r\n ScrollComponent,\r\n ScrollTopComponent,\r\n StickyComponent,\r\n ToggleComponent\r\n} from \"@/assets/ts/components\";\r\n\r\n/**\r\n * Initialize KeenThemes custom components\r\n */\r\nsetTimeout(() => {\r\n ToggleComponent.bootstrap();\r\n ScrollTopComponent.bootstrap();\r\n DrawerComponent.bootstrap();\r\n StickyComponent.bootstrap();\r\n MenuComponent.bootstrap();\r\n ScrollComponent.bootstrap();\r\n}, 200);\r\n","import { createApp } from \"vue\";\r\nimport App from \"./App.vue\";\r\nimport { abilitiesPlugin } from '@casl/vue';\r\nimport localeDayJs from 'dayjs/locale/en-gb';\r\nimport localeElementPlus from 'element-plus/lib/locale/lang/en'\r\nimport VueDatePicker from '@vuepic/vue-datepicker';\r\nimport '@vuepic/vue-datepicker/dist/main.css'\r\n/*\r\nTIP: To get started with clean router change path to @/router/clean.ts.\r\n */\r\nimport router from \"./router\";\r\nimport store from \"./store\";\r\nimport ElementPlus from \"element-plus\";\r\nimport i18n from \"@/core/plugins/i18n\";\r\n\r\n//imports for app initialization\r\nimport ApiService from \"@/core/services/ApiService\";\r\nimport { initApexCharts } from \"@/core/plugins/apexcharts\";\r\nimport { initInlineSvg } from \"@/core/plugins/inline-svg\";\r\nimport { initVeeValidate } from \"@/core/plugins/vee-validate\";\r\nimport SmoothScroll from \"vue3-smooth-scroll\";\r\nimport VueHotjar from 'vue-hotjar-next';\r\n\r\nimport \"@/core/plugins/keenthemes\";\r\nimport \"@/core/plugins/prismjs\";\r\n\r\nconst app = createApp(App);\r\n\r\napp.use(store);\r\napp.component(\"VueDatePicker\", VueDatePicker);\r\napp.use(router);\r\napp.use(ElementPlus, {\r\n locale: {\r\n ...localeDayJs,\r\n el: localeElementPlus.el\r\n }\r\n});\r\napp.use(SmoothScroll);\r\napp.use(abilitiesPlugin, store.getters.ability, {\r\n useGlobalProperties: true\r\n})\r\nApiService.init(app);\r\ninitApexCharts(app);\r\ninitInlineSvg(app);\r\ninitVeeValidate();\r\n\r\napp.use(i18n);\r\n\r\napp.use(VueHotjar, {\r\n id: 2819198,\r\n isProduction: process.env.NODE_ENV === \"production\"\r\n});\r\n\r\napp.mount(\"#app\");\r\n","import {DataUtil, getUniqueIdWithPrefix, EventHandlerUtil} from '../_utils/index'\r\n// Helpers\r\nimport {CookieComponent} from './_CookieComponent'\r\n\r\nexport interface ToggleOptions {\r\n saveState: boolean\r\n targetState?: string\r\n toggleState?: string\r\n targetToggleMode?: string\r\n}\r\n\r\nconst defaultToggleOptions: ToggleOptions = {\r\n saveState: false,\r\n}\r\n\r\nclass ToggleComponent {\r\n element: HTMLElement\r\n instanceUid: string\r\n options: ToggleOptions\r\n state: string = ''\r\n target: HTMLElement | null = null\r\n attribute: string = ''\r\n\r\n constructor(_element: HTMLElement, options: ToggleOptions) {\r\n this.options = Object.assign(defaultToggleOptions, options)\r\n this.instanceUid = getUniqueIdWithPrefix('toggle')\r\n this.element = _element\r\n\r\n const elementTargetAttr = this.element.getAttribute('data-kt-toggle-target')\r\n if (elementTargetAttr) {\r\n this.target = document.querySelector(elementTargetAttr)\r\n }\r\n const elementToggleAttr = this.element.getAttribute('data-kt-toggle-state')\r\n this.state = elementToggleAttr || ''\r\n this.attribute = 'data-kt-' + this.element.getAttribute('data-kt-toggle-name')\r\n\r\n // Event Handlers\r\n this._handlers()\r\n\r\n // Update Instance\r\n // Bind Instance\r\n DataUtil.set(this.element, 'toggle', this)\r\n }\r\n\r\n private _handlers = () => {\r\n this.element.addEventListener('click', (e: Event) => {\r\n e.preventDefault()\r\n this._toggle()\r\n })\r\n }\r\n\r\n // Event handlers\r\n private _toggle = () => {\r\n // Trigger \"after.toggle\" event\r\n EventHandlerUtil.trigger(this.element, 'kt.toggle.change')\r\n\r\n if (this._isEnabled()) {\r\n this._disable()\r\n } else {\r\n this._enable()\r\n }\r\n\r\n // Trigger \"before.toggle\" event\r\n EventHandlerUtil.trigger(this.element, 'kt.toggle.changed')\r\n return this\r\n }\r\n\r\n private _enable = () => {\r\n if (this._isEnabled()) {\r\n return\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.toggle.enable')\r\n this.target?.setAttribute(this.attribute, 'on')\r\n if (this.state.length > 0) {\r\n this.element.classList.add(this.state)\r\n }\r\n\r\n if (this.options.saveState) {\r\n CookieComponent.set(this.attribute, 'on', {})\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.toggle.enabled')\r\n return this\r\n }\r\n\r\n private _disable = () => {\r\n if (!this._isEnabled()) {\r\n return false\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.toggle.disable')\r\n this.target?.removeAttribute(this.attribute)\r\n\r\n if (this.state.length > 0) {\r\n this.element.classList.remove(this.state)\r\n }\r\n\r\n if (this.options.saveState) {\r\n CookieComponent.delete(this.attribute)\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.toggle.disabled')\r\n return this\r\n }\r\n\r\n private _isEnabled = () => {\r\n if (!this.target) {\r\n return false\r\n }\r\n\r\n return String(this.target.getAttribute(this.attribute)).toLowerCase() === 'on'\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n // Plugin API\r\n public toggle = () => {\r\n return this._toggle()\r\n }\r\n\r\n public enable = () => {\r\n return this._enable()\r\n }\r\n\r\n public disable = () => {\r\n return this._disable()\r\n }\r\n\r\n public isEnabled = () => {\r\n return this._isEnabled()\r\n }\r\n\r\n public goElement = () => {\r\n return this.element\r\n }\r\n\r\n // Event API\r\n public on = (name: string, handler: Function) => {\r\n return EventHandlerUtil.on(this.element, name, handler)\r\n }\r\n\r\n public one = (name: string, handler: Function) => {\r\n return EventHandlerUtil.one(this.element, name, handler)\r\n }\r\n\r\n public off = (name: string) => {\r\n return EventHandlerUtil.off(this.element, name)\r\n }\r\n\r\n public trigger = (name: string, event?: Event) => {\r\n return EventHandlerUtil.trigger(this.element, name, event)\r\n }\r\n\r\n // Static methods\r\n public static getInstance = (el: HTMLElement) => {\r\n const toggleElement = DataUtil.get(el, 'toggle')\r\n if (toggleElement) {\r\n return toggleElement\r\n }\r\n\r\n return null\r\n }\r\n\r\n public static createInstances = (selector: string) => {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((el) => {\r\n const item = el as HTMLElement\r\n let toggleElement = ToggleComponent.getInstance(item)\r\n if (!toggleElement) {\r\n toggleElement = new ToggleComponent(item, defaultToggleOptions)\r\n }\r\n })\r\n }\r\n\r\n public static createInsance = (\r\n selector: string,\r\n options: ToggleOptions = defaultToggleOptions\r\n ): ToggleComponent | undefined => {\r\n const element = document.body.querySelector(selector)\r\n if (!element) {\r\n return\r\n }\r\n const item = element as HTMLElement\r\n let toggle = ToggleComponent.getInstance(item)\r\n if (!toggle) {\r\n toggle = new ToggleComponent(item, options)\r\n }\r\n return toggle\r\n }\r\n\r\n public static reinitialization = () => {\r\n ToggleComponent.createInstances('[data-kt-toggle]')\r\n }\r\n\r\n public static bootstrap = () => {\r\n ToggleComponent.createInstances('[data-kt-toggle]')\r\n }\r\n}\r\n\r\nexport {ToggleComponent, defaultToggleOptions}\r\n","import { useAbility } from \"@casl/vue\";\nimport moment from \"moment\";\nimport { useStore } from \"vuex\";\nexport function disabledDates(time: Date, minimumDate?: string|undefined): boolean {\n if (useAbility().can(\"can_create_past_jobs\", \"all\")) {\n if (undefined !== minimumDate && time) {\n const momentObject = moment(minimumDate, \"DD/MM/YYYY\");\n if (momentObject.isValid()) {\n return time < momentObject.toDate();\n }\n }\n return false;\n }\n if (time) {\n time.setHours(0, 0, 0, 0);\n if (undefined !== minimumDate) {\n const momentObject = moment(minimumDate, \"DD/MM/YYYY\");\n if (momentObject.isValid()) {\n return time < momentObject.toDate();\n }\n }\n const now: Date = new Date();\n now.setHours(0, 0, 0, 0);\n return time < now;\n }\n return false;\n}\n\nexport function isCrewBoss(job) {\n const store = useStore();\n const currentUser = store.getters.currentUser;\n if (currentUser && job) {\n const shifts = job.shifts ? job.shifts : [];\n const crewBosses = shifts.map(i => i.crew_bosses).flat();\n return crewBosses.some(i => i.id == currentUser.id);\n }\n return false;\n}\n","import {\r\n DataUtil,\r\n getObjectPropertyValueByKey,\r\n stringSnakeToCamel,\r\n getAttributeValueByBreakpoint,\r\n getViewPort,\r\n isVisibleElement,\r\n throttle,\r\n getCSS,\r\n ElementStyleUtil,\r\n} from '../_utils/index'\r\nimport {CookieComponent} from './_CookieComponent'\r\n\r\nexport interface ScrollOptions {\r\n saveState?: boolean\r\n}\r\n\r\nconst defaultScrollOptions: ScrollOptions = {\r\n saveState: true,\r\n}\r\n\r\nclass ScrollComponent {\r\n element: HTMLElement\r\n options: ScrollOptions\r\n id: string\r\n\r\n constructor(_element: HTMLElement, options: ScrollOptions) {\r\n this.element = _element\r\n this.options = Object.assign(defaultScrollOptions, options)\r\n this.id = this.element.getAttribute('id') || ''\r\n this.update()\r\n // this.element.setAttribute('data-kt-scrolltop', 'true')\r\n DataUtil.set(this.element, 'scroll', this)\r\n }\r\n\r\n private getOption = (name: string) => {\r\n if (this.element.hasAttribute('data-kt-scroll-' + name) === true) {\r\n const attr = this.element.getAttribute('data-kt-scroll-' + name) || ''\r\n let value: string | JSON | boolean = getAttributeValueByBreakpoint(attr)\r\n if (value !== null && String(value) === 'true') {\r\n value = true\r\n } else if (value !== null && String(value) === 'false') {\r\n value = false\r\n }\r\n\r\n return value\r\n } else {\r\n const optionName = stringSnakeToCamel(name)\r\n const option = getObjectPropertyValueByKey(this.options, optionName)\r\n if (option) {\r\n return getAttributeValueByBreakpoint(option)\r\n } else {\r\n return null\r\n }\r\n }\r\n }\r\n\r\n private getHeightType = () => {\r\n if (this.getOption('height')) {\r\n return 'height'\r\n }\r\n if (this.getOption('min-height')) {\r\n return 'min-height'\r\n }\r\n if (this.getOption('max-height')) {\r\n return 'max-height'\r\n }\r\n }\r\n\r\n private getAutoHeight = () => {\r\n let height: number | string = getViewPort().height\r\n const dependencies = this.getOption('dependencies')\r\n const wrappers = this.getOption('wrappers')\r\n const offset = this.getOption('offset')\r\n\r\n // Height dependencies\r\n if (dependencies !== null) {\r\n const elements = document.querySelectorAll(dependencies as string)\r\n if (elements && elements.length > 0) {\r\n for (let i = 0, len = elements.length; i < len; i++) {\r\n const element = elements[i] as HTMLElement\r\n if (isVisibleElement(element) === false) {\r\n continue\r\n }\r\n\r\n height = height - parseInt(getCSS(element, 'height'))\r\n height = height - parseInt(getCSS(element, 'margin-top'))\r\n height = height - parseInt(getCSS(element, 'margin-bottom'))\r\n\r\n const borderTop = getCSS(element, 'border-top')\r\n if (borderTop) {\r\n height = height - parseInt(borderTop)\r\n }\r\n\r\n const borderBottom = getCSS(element, 'border-bottom')\r\n if (borderBottom) {\r\n height = height - parseInt(borderBottom)\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Wrappers\r\n if (wrappers !== null) {\r\n var elements = document.querySelectorAll(wrappers as string)\r\n if (elements && elements.length > 0) {\r\n for (let i = 0, len = elements.length; i < len; i++) {\r\n const element = elements[i] as HTMLElement\r\n\r\n if (!isVisibleElement(element)) {\r\n continue\r\n }\r\n\r\n height = height - parseInt(getCSS(element, 'margin-top'))\r\n height = height - parseInt(getCSS(element, 'margin-bottom'))\r\n height = height - parseInt(getCSS(element, 'padding-top'))\r\n height = height - parseInt(getCSS(element, 'padding-bottom'))\r\n\r\n const borderTop = getCSS(element, 'border-top')\r\n if (borderTop) {\r\n height = height - parseInt(borderTop)\r\n }\r\n\r\n const borderBottom = getCSS(element, 'border-bottom')\r\n if (borderBottom) {\r\n height = height - parseInt(borderBottom)\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Custom offset\r\n if (offset !== null) {\r\n height = height - parseInt(offset as string)\r\n }\r\n\r\n height = height - parseInt(getCSS(this.element, 'margin-top'))\r\n height = height - parseInt(getCSS(this.element, 'margin-bottom'))\r\n\r\n const borderTop = getCSS(this.element, 'border-top')\r\n if (borderTop) {\r\n height = height - parseInt(borderTop)\r\n }\r\n\r\n const borderBottom = getCSS(this.element, 'border-bottom')\r\n if (borderBottom) {\r\n height = height - parseInt(borderBottom)\r\n }\r\n\r\n height = String(height) + 'px'\r\n\r\n return height\r\n }\r\n\r\n private setupHeight = () => {\r\n let height = this.getHeight()\r\n let heightType = this.getHeightType() as string\r\n\r\n // Set height\r\n if (height !== null && height.length > 0) {\r\n ElementStyleUtil.set(this.element, heightType, height)\r\n } else {\r\n ElementStyleUtil.set(this.element, heightType, '')\r\n }\r\n }\r\n\r\n private setupState = () => {\r\n if (this.getOption('save-state') === true && this.id) {\r\n const cookie = CookieComponent.get(this.id + 'st')\r\n if (cookie) {\r\n var pos = parseInt(cookie)\r\n\r\n if (pos > 0) {\r\n this.element.scrollTop = pos\r\n }\r\n }\r\n }\r\n }\r\n\r\n private setupScrollHandler = () => {\r\n if (this.getOption('save-state') === true && this.id) {\r\n this.element.addEventListener('scroll', this.scrollHandler)\r\n } else {\r\n this.element.removeEventListener('scroll', this.scrollHandler)\r\n }\r\n }\r\n\r\n private scrollHandler = () => {\r\n const cookieId = this.id + 'st'\r\n CookieComponent.set(cookieId, this.element.scrollTop, {})\r\n }\r\n\r\n private destroyScrollHandler = () => {\r\n this.element.removeEventListener('scroll', this.scrollHandler)\r\n }\r\n\r\n private resetHeight = () => {\r\n const heghtType = this.getHeightType()\r\n if (heghtType) {\r\n ElementStyleUtil.set(this.element, heghtType, '')\r\n }\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n public update = () => {\r\n // Activate/deactivate\r\n if (\r\n this.getOption('activate') === true ||\r\n !this.element.hasAttribute('data-kt-scroll-activate')\r\n ) {\r\n this.setupHeight()\r\n this.setupScrollHandler()\r\n this.setupState()\r\n } else {\r\n this.resetHeight()\r\n this.destroyScrollHandler()\r\n }\r\n }\r\n\r\n public getHeight = () => {\r\n const heightType = this.getHeightType()\r\n const height = this.getOption(heightType || '')\r\n if (height instanceof Function) {\r\n return height.call(height)\r\n } else if (height !== null && typeof height === 'string' && height.toLowerCase() === 'auto') {\r\n return this.getAutoHeight()\r\n } else {\r\n return height\r\n }\r\n }\r\n\r\n public getElement = () => {\r\n return this.element\r\n }\r\n\r\n // Static methods\r\n public static hasInstace(element: HTMLElement) {\r\n return DataUtil.has(element, 'scroll')\r\n }\r\n\r\n public static getInstance(element: HTMLElement) {\r\n if (element !== null && ScrollComponent.hasInstace(element)) {\r\n return DataUtil.get(element, 'scroll')\r\n }\r\n }\r\n\r\n // Create Instances\r\n public static createInstances(selector: string) {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((element: Element) => {\r\n const item = element as HTMLElement\r\n let scroll = ScrollComponent.getInstance(item)\r\n if (!scroll) {\r\n scroll = new ScrollComponent(item, defaultScrollOptions)\r\n }\r\n })\r\n }\r\n\r\n public static destroyAll(attr: string = '[data-kt-scroll=\"true\"]') {}\r\n\r\n public static bootstrap(attr: string = '[data-kt-scroll=\"true\"]') {\r\n ScrollComponent.createInstances(attr)\r\n ScrollComponent.resize()\r\n }\r\n\r\n public static createInstance = (\r\n element: HTMLElement,\r\n options: ScrollOptions = defaultScrollOptions\r\n ): ScrollComponent | undefined => {\r\n let scroll = ScrollComponent.getInstance(element)\r\n if (!scroll) {\r\n scroll = new ScrollComponent(element, options)\r\n }\r\n return scroll\r\n }\r\n\r\n public static reinitialization(attr: string = '[data-kt-scroll=\"true\"]') {\r\n ScrollComponent.createInstances(attr)\r\n }\r\n\r\n public static resize() {\r\n // Window Resize Handling\r\n window.addEventListener('resize', function () {\r\n let timer\r\n throttle(\r\n timer,\r\n () => {\r\n // Locate and update Drawer instances on window resize\r\n const elements = document.body.querySelectorAll('[data-kt-scroll=\"true\"]')\r\n elements.forEach((element: Element) => {\r\n const instance = ScrollComponent.getInstance(element as HTMLElement)\r\n if (instance) {\r\n instance.update()\r\n }\r\n })\r\n },\r\n 200\r\n )\r\n })\r\n }\r\n}\r\n\r\nexport {ScrollComponent, defaultScrollOptions}\r\n","import {\r\n getScrollTop,\r\n getAttributeValueByBreakpoint,\r\n throttle,\r\n getObjectPropertyValueByKey,\r\n stringSnakeToCamel,\r\n getUniqueIdWithPrefix,\r\n DataUtil,\r\n ElementAnimateUtil,\r\n} from '../_utils/index'\r\n\r\nexport interface IScrollTopOptions {\r\n offset: number\r\n speed: number\r\n}\r\n\r\nconst defaultScrollTopOptions: IScrollTopOptions = {\r\n offset: 200,\r\n speed: 600,\r\n}\r\n\r\nclass ScrollTopComponent {\r\n element: HTMLElement\r\n options: IScrollTopOptions\r\n instanceUid: string\r\n\r\n constructor(_element: HTMLElement, options: IScrollTopOptions) {\r\n this.element = _element\r\n this.options = Object.assign(defaultScrollTopOptions, options)\r\n this.instanceUid = getUniqueIdWithPrefix('scrolltop')\r\n\r\n // Event Handlers\r\n this._handlers()\r\n\r\n // Bind Instance\r\n DataUtil.set(this.element, 'scrolltop', this)\r\n }\r\n\r\n private _handlers = () => {\r\n let timer: number\r\n window.addEventListener('scroll', () => {\r\n throttle(timer, () => {\r\n this._scroll()\r\n })\r\n })\r\n\r\n this.element.addEventListener('click', (e: Event) => {\r\n e.preventDefault()\r\n this._go()\r\n })\r\n }\r\n\r\n private _scroll = () => {\r\n const offset = parseInt(this._getOption('offset') as string)\r\n const pos = getScrollTop() // current vertical position\r\n if (pos > offset) {\r\n if (!document.body.hasAttribute('data-kt-scrolltop')) {\r\n document.body.setAttribute('data-kt-scrolltop', 'on')\r\n }\r\n } else {\r\n if (document.body.hasAttribute('data-kt-scrolltop')) {\r\n document.body.removeAttribute('data-kt-scrolltop')\r\n }\r\n }\r\n }\r\n\r\n private _go = () => {\r\n const speed = parseInt(this._getOption('speed') as string)\r\n ElementAnimateUtil.scrollTop(0, speed)\r\n }\r\n\r\n private _getOption = (name: string) => {\r\n const attr = this.element.getAttribute(`data-kt-scrolltop-${name}`)\r\n if (attr) {\r\n const value = getAttributeValueByBreakpoint(attr)\r\n return value !== null && String(value) === 'true'\r\n }\r\n\r\n const optionName = stringSnakeToCamel(name)\r\n const option = getObjectPropertyValueByKey(this.options, optionName)\r\n if (option) {\r\n return getAttributeValueByBreakpoint(option)\r\n }\r\n\r\n return null\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n\r\n // Plugin API\r\n public go = () => {\r\n return this._go()\r\n }\r\n\r\n public getElement = () => {\r\n return this.element\r\n }\r\n\r\n // Static methods\r\n public static getInstance = (el: HTMLElement) => {\r\n const scrollTop = DataUtil.get(el, 'scrolltop')\r\n if (scrollTop) {\r\n return scrollTop\r\n }\r\n\r\n return null\r\n }\r\n\r\n public static createInstances = (selector: string) => {\r\n const elements = document.body.querySelectorAll(selector)\r\n elements.forEach((el) => {\r\n const item = el as HTMLElement\r\n let scrollTop = ScrollTopComponent.getInstance(item)\r\n if (!scrollTop) {\r\n scrollTop = new ScrollTopComponent(item, defaultScrollTopOptions)\r\n }\r\n })\r\n }\r\n\r\n public static createInsance = (\r\n selector: string,\r\n options: IScrollTopOptions = defaultScrollTopOptions\r\n ): ScrollTopComponent | undefined => {\r\n const element = document.body.querySelector(selector)\r\n if (!element) {\r\n return\r\n }\r\n const item = element as HTMLElement\r\n let scrollTop = ScrollTopComponent.getInstance(item)\r\n if (!scrollTop) {\r\n scrollTop = new ScrollTopComponent(item, options)\r\n }\r\n return scrollTop\r\n }\r\n\r\n public static bootstrap = () => {\r\n ScrollTopComponent.createInstances('[data-kt-scrolltop=\"true\"]')\r\n }\r\n\r\n public static reinitialization = () => {\r\n ScrollTopComponent.createInstances('[data-kt-scrolltop=\"true\"]')\r\n }\r\n\r\n public static goTop = () => {\r\n ElementAnimateUtil.scrollTop(0, defaultScrollTopOptions.speed)\r\n }\r\n}\r\nexport {ScrollTopComponent, defaultScrollTopOptions}\r\n"],"sourceRoot":""}