{"version":3,"sources":["app/modules/auth/redux/AuthService.ts","app/modules/auth/redux/AuthSlice.ts","app/modules/searchShowCustomer/redux/CustomerListSlice.ts","app/modules/searchShowCustomer/models/CustomerModels.ts","app/modules/searchShowCustomer/redux/CustomerDetailSlice.ts","app/pages/product/models/productServiceModels.ts","app/pages/product/redux/StoreSlice.ts","app/pages/product/redux/CurrentStoreSlice.ts","app/pages/product/redux/ProductListSlice.ts","app/pages/product/redux/ProductDetailSlice.ts","setup/helpers/apiUrl.js","app/modules/auth/redux/AuthCRUD.ts","app/modules/auth/components/Login.tsx","_metronic/helpers/AssetHelpers.ts","_metronic/helpers/components/KTSVG.tsx","app/modules/auth/AuthPage.tsx","app/modules/auth/redux/AuthRedux.ts","app/modules/auth/Logout.tsx","app/modules/auth/redux/AuthInit.tsx","setup/redux/RootReducer.ts","setup/redux/Store.ts","_metronic/i18n/Metronici18n.tsx","_metronic/i18n/i18nProvider.tsx","_metronic/layout/core/DefaultLayoutConfig.ts","_metronic/layout/core/LayoutSetup.ts","_metronic/layout/core/LayoutProvider.tsx","_metronic/layout/core/PageData.tsx","_metronic/layout/core/MetronicSplashScreen.tsx","_metronic/layout/components/aside/AsideMenuItem.tsx","_metronic/helpers/RouterHelpers.ts","_metronic/layout/components/aside/AsideMenuMain.tsx","_metronic/assets/ts/components/_CookieComponent.ts","_metronic/assets/ts/_utils/_ElementStyleUtil.ts","_metronic/assets/ts/_utils/_DataUtil.ts","_metronic/assets/ts/_utils/_TypesHelpers.ts","_metronic/assets/ts/_utils/_DOMEventHandlerUtil.ts","_metronic/assets/ts/_utils/ElementAnimateUtil.ts","_metronic/assets/ts/_utils/DomHelpers.ts","_metronic/assets/ts/_utils/EventHandlerUtil.ts","_metronic/assets/ts/components/_DrawerComponent.ts","_metronic/assets/ts/components/_FeedbackComponent.ts","_metronic/assets/ts/components/_ImageInputComponent.ts","_metronic/assets/ts/components/_ScrollComponent.ts","_metronic/assets/ts/components/_ScrollTopComponent.ts","_metronic/assets/ts/components/_StepperComponent.ts","_metronic/assets/ts/components/_StickyComponent.ts","_metronic/assets/ts/components/_ToggleComponent.ts","_metronic/assets/ts/components/_PasswordMeterComponent.ts","_metronic/assets/ts/components/_PlaceComponent.ts","_metronic/assets/ts/components/MenuComponent.ts","_metronic/assets/ts/components/SearchComponent.ts","_metronic/layout/components/aside/AsideMenu.tsx","_metronic/layout/components/aside/AsideDefault.tsx","_metronic/layout/components/Footer.tsx","_metronic/layout/components/header/MenuInner.tsx","_metronic/layout/components/header/Header.tsx","_metronic/layout/components/header/page-title/DefaultTitle.tsx","_metronic/partials/layout/header-menus/HeaderUserMenu.tsx","_metronic/partials/content/fallback-view/FallbackView.tsx","_metronic/partials/modals/create-app/Main.tsx","_metronic/partials/modals/invite-users/InviteUsers.tsx","_metronic/partials/modals/upgrade-plan/UpgradePlan.tsx","_metronic/layout/components/header/Topbar.tsx","_metronic/layout/components/header/HeaderWrapper.tsx","_metronic/layout/components/toolbar/Toolbar1.tsx","_metronic/layout/components/toolbar/Toolbar.tsx","_metronic/layout/components/ScrollTop.tsx","_metronic/layout/components/Content.tsx","_metronic/layout/MasterInit.tsx","_metronic/layout/MasterLayout.tsx","app/modules/searchShowCustomer/redux/CustomerOperations.ts","app/modules/searchShowCustomer/components/CustomerList.tsx","app/modules/searchShowCustomer/CustomerPage.js","app/modules/updateCustomer/redux/CountryOperations.tsx","app/modules/updateCustomer/redux/CustomerOperations.tsx","app/modules/updateCustomer/UpdateCustomerPage.tsx","app/pages/dashboard/DashboardWrapper.tsx","app/pages/product/redux/StoreOperations.tsx","app/pages/product/components/StoreSelect.tsx","app/pages/product/redux/ProductOperations.tsx","app/pages/product/components/StoreChange.tsx","app/pages/product/redux/CurrentSearch.tsx","app/pages/product/components/ProductSearch.tsx","app/pages/product/components/ProductList.tsx","app/pages/product/components/ProductDetail.tsx","app/pages/product/ProductPage.tsx","app/pages/MenuTestPage.tsx","app/routing/PrivateRoutes.tsx","app/routing/Routes.tsx","app/App.tsx","index.tsx"],"names":["GetCurrentUser","user","localStorage","getItem","JSON","parse","stringify","toString","SetCurrentUser","setItem","initialState","usermodel","undefined","userSlice","createSlice","name","reducers","setUser","state","action","payload","console","log","AuthService","document","location","reload","deleteUser","actions","customerListSlice","customerList","setCustomerList","CustomerDetailClass","AD_UNVAN2","AUTH_PERSON_ID","BINA_ADI","BINA_NO","BLOCKING_DESC","BLOCKING_REASON_CD","CADDE","CINSIYET","CUSTOMER","CUST_NO","EMAIL_ADDRESS","ILETISIM_YETKILISI","IZIN_EPOSTA","IZIN_SMS","KAYIT_KANALI","KAYIT_MAGAZA","KAYIT_TARIHI","KISAAD_TICARI","LEVEL1","LEVEL4","LEVEL4_DESC","LEVEL_1_DESC","MAHALLE","MOBILE_PHONE_NO","PHONE_NO","SEMT","SIRKET_POZISYON","SIRKET_POZISYON_CD","SOKAK","SON_DEGISIKLIK_TARIHI","SON_F_SATINALMA","SON_NF_SATINALMA","SOYAD_TABELA","SOYAD_TABELA2","SOYAD_UNVAN","STATUS","STATUS_DESC","STORE_KEY","S_LISANS","TERCIH_MAGAZA","T_LISANS","VERGI_DAIRESI","VERGI_NO","YASAL_YETKILI","DateWarning","SmsIzni","EpostaIzni","AdresIzni","KayitTarihiStr","KAPI_NO","Ilce_Id","Mahalle_Id","AddressTypeCd","CustomerGuid","Kurumsal","YasalYetkili","PrmCustomerGuid","IsHaveMUGE","customerDetailItem","customerDetailSlice","setCustomerDetail","ProductList","currentPageNumber","pageCount","pageSize","totalRowsCount","results","ProductDetail","productBatches","productLogos","productImages","puarNo","puarInfoText","productCode","productStockStatus","productHeight","productWidth","ProductDepth","filterBrand","filterBrandName","filterCategory","filterCategoryName","relatedProductList","infoData","campaignAnnouncement","shoppingListItemCount","relatedStorePrices","productId","campaignId","productName","campaingShowFlag","campaingText","badgeText","oldPriceShowFlag","promotionStockLimit","oldPrice","price","unitPrice","content","packageType","startDate","endDate","salesBundle","countryOrigin","taxRate","productDescription","productCertifications","nutritiveValue","ingredients","oldPriceStrikeFlag","perContentWeigth","weightUnit","subsystemNumber","campaignTypeId","StoreModel","storeNo","storeName","storeList","storeSlice","setStoreList","store","currentStoreSlice","setCurrentStore","productList","productListSlice","setProductList","productDetail","productDetailSlice","setProductDetail","API_URL","window","Configs","LOGIN_URL","login","email","password","a","loginModel","userName","axios","post","headers","then","response","resp","catch","err","loginSchema","Yup","shape","min","max","required","initialValues","Login","useState","loading","setLoading","dispatch","useDispatch","formik","useFormik","validationSchema","onSubmit","values","setStatus","setSubmitting","setTimeout","data","Status","Detail","Info","accessToken","access_token","error","className","handleSubmit","noValidate","id","status","placeholder","getFieldProps","clsx","touched","errors","type","autoComplete","role","style","marginTop","href","target","disabled","isSubmitting","isValid","display","toAbsoluteUrl","pathname","process","KTSVG","path","svgClassName","src","AuthPage","useEffect","body","classList","add","remove","alt","component","from","exact","to","saga","actionTypes","initialAuthState","reducer","persistReducer","storage","key","whitelist","logout","requestUser","fulfillUser","takeLatest","loginSaga","put","registerSaga","Logout","clear","connector","connect","auth","props","didRequest","useRef","setShowSplashScreen","useSelector","shallowEqual","current","children","rootSaga","rootReducer","combineReducers","userReducer","UserSliceReducer","customerListReducer","CustomerListSliceReducer","customerDetailReducer","CustomerDetailSliceReducer","storeListReducer","storeListSliceReducer","currentStoreReducer","currentStoreSliceReducer","productListReducer","productListSliceReducer","productDetailReducer","productDetailSliceReducer","all","sagaMiddleware","createSagaMiddleware","middleware","getDefaultMiddleware","immutableCheck","serializableCheck","thunk","configureStore","devTools","enhancers","reduxBatch","persistor","persistStore","run","I18N_CONFIG_KEY","REACT_APP_I18N_CONFIG_KEY","selectedLang","I18nContext","createContext","MetronicI18nProvider","lang","ls","er","getConfig","Provider","value","allMessages","de","en","es","fr","ja","zh","I18nProvider","locale","useContext","messages","DefaultLayoutConfig","main","primaryColor","darkSkinEnabled","loader","scrolltop","header","width","left","fixed","desktop","tabletAndMobile","menuIcon","megaMenu","aside","theme","menu","minimized","minimize","hoverable","layout","toolbar","tabletAndMobileMode","layouts","toolbar1","height","heightAndTabletMobileMode","toolbar2","toolbar3","toolbar4","toolbar5","footer","pageTitle","breadCrumbs","description","direction","responsive","responsiveBreakpoint","responsiveTarget","LAYOUT_CONFIG_KEY","getEmptyHTMLAttributes","asideMenu","Map","headerMobile","headerMenu","headerContainer","getEmptyCSSVariables","LayoutSetup","classes","asideToggle","toolbarContainer","contentContainer","footerContainer","sidebar","attributes","Object","assign","cssVariables","config","Array","forEach","attr","removeAttribute","setAttribute","backgroundImage","class","push","typeOptions","bodyStyles","this","set","initLayout","initHeader","initPageTitle","initToolbar","initContent","initAside","initFooter","initAsideMenu","fieldsToUpdate","updatedConfig","initCSSClasses","initCSSVariables","initHTMLAttributes","isLoaded","initConfig","setLayout","getLayout","bootstrap","updatePartialConfig","LayoutContext","disableSplashScreen","splashScreen","getElementById","setProperty","LayoutProvider","setConfig","setClasses","setAttributes","setCSSVariables","_themeConfig","enableSplashScreen","cl","useLayout","PageDataContext","setPageTitle","_title","setPageBreadcrumbs","_breadcrumbs","setPageDescription","_description","PageDataProvider","pageDescription","pageBreadcrumbs","usePageData","PageTitle","breadcrumbs","MetronicSplashScreenContext","LayoutSplashScreen","visible","setCount","prev","AsideMenuItem","title","icon","fontIcon","hasBullet","isActive","url","split","getCurrentUrl","indexOf","checkIsActive","useLocation","active","AsideMenuMain","useIntl","CookieComponent","matches","cookie","match","RegExp","replace","decodeURIComponent","cookieOptions","options","expires","Date","toUTCString","updatedCookie","encodeURIComponent","optionKey","optionValue","ElementStyleUtil","element","property","important","attributeName","getPropertyValue","attibuteName","removeProperty","DataUtil","instance","instanceData","get","newMap","delete","has","result","val","v","k","getObjectPropertyValueByKey","obj","map","entries","hasOwnProperty","getUniqueIdWithPrefix","prefix","Math","floor","random","getTime","stringSnakeToCamel","str","m","toUpperCase","DOMEventHandlerUtil","selector","eventName","callBack","eventId","e","targets","querySelectorAll","i","length","call","parentElement","addEventListener","funcFromStore","removeEventListener","calee","currentTarget","ElementAnimateUtil","duration","update","complete","easings","t","b","c","d","change","start","performance","now","requestAnimationFrame","loop","timestamp","time","animationName","animateClasses","cssClass","one","offset","targetPos","getElementOffset","top","scrollPos","pageYOffset","documentElement","scrollTop","animate","scrollTo","getCSS","el","styleProp","defaultView","ownerDocument","toLowerCase","getComputedStyle","getElementActualCss","prop","cache","css","getAttribute","cssText","offsetWidth","offsetHeight","parseFloat","attributeValue","getElementIndex","parentNode","getElementMatches","p","Element","prototype","f","webkitMatchesSelector","tagName","getClientRects","rect","getBoundingClientRect","win","pageXOffset","getScrollTop","scrollingElement","getViewPort","innerWidth","innerHeight","isVisibleElement","throttle","timer","func","delay","getElementChild","childNodes","child","nodeType","getElementChildren","slide","dir","speed","callback","calcHeight","getElementActualHeight","calcPaddingTop","calcPaddingBottom","parseInt","paddingTop","paddingBottom","overflow","getBreakpoint","breakpoint","variableName","hex","trim","getCSSVariableValue","getAttributeValueByBreakpoint","incomingAttr","jsonStr","join","matched","substring","toJSON","resultKey","resultBreakpoint","EventHandlerUtil","metas","handlerId","meta","getEventMetasByName","setEventMetasByName","handerId","fired","getEventsMetaByHandlerId","setEventMetaByNameAndHandlerId","handler","setFiredByNameAndHandlerId","addEvent","removeEvent","on","defaultDrawerOptions","overlay","baseClass","overlayClass","DrawerComponent","_element","overlayElement","toggleElement","instanceUid","shown","lastWidth","closeElement","_handlers","togglers","_getOption","closers","preventDefault","_toggle","_hide","_update","String","hasBaseClass","contains","bodyCanvasAttr","optionName","option","trigger","_show","_deleteOverlay","_createOverlay","createElement","elementZIndex","overlayZindex","append","overlayClassOption","removeChild","_getDirection","_getWidth","toggle","show","hide","isShown","goElement","off","event","item","drawer","getInstance","hasInstace","hideAll","getAllInstancesByKey","dr","updateAll","handleDismiss","closest","createInstances","initGlobalHandlers","reinitialization","defaultImageInputOptions","defaultImageInputQueires","componentName","instanseQuery","inputQuery","wrapperQuery","cancelQuery","removeQuery","hiddenQuery","ImageInputComponent","_options","_queries","inputElement","wrapperElement","cancelElement","removeElement","hiddenElement","queries","uid","_change","files","reader","FileReader","onload","readAsDataURL","_cancel","_remove","querySelector","handlers","ImageInput","elements","createInsance","defaultScrollOptions","saveState","ScrollComponent","getOption","hasAttribute","getHeightType","getAutoHeight","dependencies","wrappers","len","borderTop","borderBottom","setupHeight","getHeight","heightType","setupState","pos","setupScrollHandler","scrollHandler","cookieId","destroyScrollHandler","resetHeight","heghtType","Function","getElement","scroll","resize","createInstance","defaultScrollTopOptions","ScrollTopComponent","_scroll","_go","go","goTop","defaultStepperOptions","startIndex","animation","animationSpeed","animationNextClass","animationPreviousClass","StepperComponent","steps","btnNext","btnPrev","btnSubmit","totatStepsNumber","passedStepIndex","currentStepIndex","_goTo","index","refreshUI","initHandlers","stepDirection","_getStepDirection","getStepContent","getLastStepIndex","getTotalStepsNumber","isLastStep","isFirstStep","animateClass","isBetweenStep","goto","goNext","getNextStepIndex","goPrev","getPrevStepIndex","goFirst","goLast","getCurrentStepIndex","getPassedStepIndex","destroy","stepper","defaultStickyOptions","reverse","animationClass","StickyComponent","instanceName","eventTriggerState","lastScrollTop","offsetNum","st","enable","disable","dataStickyAttr","attrValue","zindex","widthTarget","targetElement","offsetLeft","sticky","defaultToggleOptions","ToggleComponent","attribute","_isEnabled","_disable","_enable","isEnabled","elementTargetAttr","elementToggleAttr","defaultPasswordMeterOptions","minLength","checkUppercase","checkLowercase","checkDigit","checkChar","scoreHighlightClass","defaultPasswordMeterQueires","visibilityQuery","highlightQuery","PasswordMeterComponent","visibilityElement","highlightElement","score","checkSteps","reset","highlight","check","visitbility","visibleIcon","hiddenIcon","focus","test","count","items","slice","total","checkScore","getCheckScore","getScore","checkLength","checkLowerCase","passwordMeter","defaultPlaceOptions","mode","defaultPlaceQueires","attrQuery","PlaceComponent","parentSelector","prepend","place","defaultMenuOptions","dropdown","hoverTimeout","accordion","slideSpeed","expand","MenuComponent","triggerElement","_setTriggerElement","_isTriggerElement","_getItemOption","_getItemElement","itemElement","sub","subItem","_getItemParentElement","parentItem","_getItemParentElements","parent","parents","buffer","unshift","_getDropdownPopperConfig","placementOption","placement","flipValue","flip","offsetValue","strategy","modifiers","rootBoundary","altBoundary","fallbackPlacements","_getItemChildElement","_getItemChildElements","_getItemSubElement","_getCss","_getItemSubType","_isItemSubShown","_isItemDropdownPermanent","_isItemParentShown","s","getElementParents","_isItemSubElement","_hasItemSub","_getItemLinkElement","_getItemToggleElement","_showDropdown","hideDropdowns","parentZindex","bufferNode","position","isNaN","getHighestZindex","initDropdownPopper","appendChild","reference","attach","popper","createPopper","_hideDropdown","referenceNode","insertBefore","nextSibling","insertAfterElement","destroyDropdownPopper","_showAccordion","_hideAccordions","subElement","_hideAccordion","itemsToHide","itemToHide","_reset","removeClass","_destroy","_mouseout","timeout","_mouseover","clearTimeout","_dismiss","itemSubType","_link","_click","click","link","dismiss","mouseover","mouseout","getItemTriggerType","getItemSubType","getItemLinkElement","getItemToggleElement","getItemSubElement","getItemParentElements","isItemSubShown","isItemParentShown","getTriggerElement","isItemDropdownPermanent","hideAccordions","elementMenu","menuData","subMenu","skip","updateDropdowns","forceUpdate","menuInstance","menuItems","menuObj","stopPropagation","defaultSearchOptions","keypress","enter","showOnFocus","defaultSearchQueires","SearchComponent","contentElement","formElement","spinnerElement","clearElement","submitElement","toolbarElement","resultsElement","suggestionElement","emptyElement","processing","menuObject","_getElement","getResponsiveFormMode","blur","charCode","keyCode","search","input","responsiveFormMode","isProcessing","getQuery","getMenu","getFormElement","Search","AsideMenu","asideMenuCSSClasses","scrollRef","ref","AsideDefault","Footer","getFullYear","MenuInner","Header","DefaultTitle","isSeparator","HeaderUserMenu","FallbackView","inits","appName","category","framework","dbName","dbType","nameOnCard","cardNumber","cardExpiryMonth","cardExpiryYear","cardCvv","saveCard","createAppSchema","label","Main","stepperRef","currentSchema","setCurrentSchema","initValues","prevStep","resetForm","as","onClick","InviteUsers","rows","avatar","access","charAt","defaultValue","plans","subTitle","priceMonth","priceAnnual","default","custom","features","supported","UpgradePlan","currentState","setCurrentState","selected","setSelected","plan","checked","onChange","feature","Topbar","HeaderWrapper","Toolbar1","Toolbar","ScrollTop","isFirstRun","reInitialization","stickyHeader","updateHeaderSticky","Content","MasterInit","MasterLayout","GET_CUSTOMER_URL","GET_CUSTOMER_DETAIL_URL","usr","GetCustomer","searchModel","firmaUnvanType","GetCustomerDetail","customerModel","CustomerList","currentId","setCurrenetId","detailErrorStr","setDetailErrorStr","previewLoading","setPreviewLoading","handleSubmission","customer","find","x","CardNumber","viewBox","fill","xmlns","opacity","marginBottom","color","IsBloked","IsActive","handleChange","Type","BrandName","StoreKey","CustomerNumber","Email","MobilePhoneNumber","PhoneNumber","ShortName","TaxNumber","BlockedCode","colSpan","fontWeight","marginRight","fillRule","paddingLeft","FileSend","firmaUnvanChecked","setFirmaUnvanChecked","setFirmaUnvanType","radioValue","setRadioValue","currentInputType","setCurrentInputType","errorString","setErrorString","inputValue","setInputValue","currentRef","uploadButtonRef","pattern","CreateCustomerModel","F","CreateObject","handleChangeFunvan","htmlFor","marginLeft","bottom","GET_DISTRICT_LIST_URL","GET_QUARTER_LIST_URL","GetDistrictList","countryId","GetQuarterList","districtId","POST_CUSTOMER_FOR_SMS_URL","POST_CUSTOMER_FOR_UPDATE_URL","POST_CUSTOMER_TO_MCFM_URL","MUGE_OUT_REQUEST_URL","PostCustomerForSms","PostCustomerForUpdate","PostCustomerToMcfm","MugeOutRequest","customerGuid","UpdateCustomerPage","boolValues","stringValues","setCustomerState","customerState","setSuccessString","setAdddressTypeErr","setAddressEdit","setSendLinkLoading","setUpdateDataLoading","setSaveDataLoading","setDisableMugeClickLoading","adddressTypeErr","successString","defaultAddressType","setDefaultAddressType","addresEdit","sendLinkLoading","updateDataLoading","saveDataLoading","disableMugeClickLoading","dateWarningModal","setDateWarningModal","districtList","setDistrictList","quarterList","setquarterList","EditAdress","disableMugeClick","sendLinkClick","prevState","updateData","saveData","handleOption","statu","handleIput","textDecorationLine","fontStyle","tabIndex","y","rx","transform","dangerouslySetInnerHTML","__html","fontSize","margin","format","mask","padding","cursor","right","handleChangeDistrict","district","DistrictId","Name","handleChangeQuarter","quarter","QuarterId","handleAddressType","DashboardPage","DashboardWrapper","GET_STORE_LIST","GetStoreList","StoreSelect","asynCall","splittedValue","minHeight","justifyContent","maxWidth","GET_PRODUCT_LIST","GET_PRODUCT_DETAIL","GetProductList","storeNumber","productReference","GetProductDetail","subsystemNo","StoreChange","currentStore","GetCurrentSearch","SetCurrentSearch","ProductSearch","searchString","setSearchString","productData","alignItems","alignContent","CurrentSearch","ProductListPage","productListArray","getPage","page","getDetailImage","product","Cdn_url","maxHeight","stockQuantity","toFixed","textAlign","Button","variant","size","ProductDetailPage","setKey","MyCarousel","Carousel","prevIcon","nextIcon","nextLabel","prevLabel","Item","RenderHTML","backgroundColor","srcDoc","HTML","getActiveTab","textTransform","Tabs","activeKey","onSelect","Tab","eventKey","ProductPage","productDetailState","ProductPageWrapper","MenuTestPage","PrivateRoutes","fallback","Routes","isAuthorized","App","basename","Chart","register","registerables","ReactDOM","render"],"mappings":"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","file":"static/js/main.489a8f61.chunk.js","sourcesContent":["import {UserModel} from '../models/UserModel'\r\n\r\n function GetCurrentUser() {\r\n const user = localStorage.getItem('currentUserCallCenter');\r\n const resp = user != null ? JSON.parse(JSON.stringify(user.toString())) : user;\r\n return resp;\r\n }\r\n\r\n function SetCurrentUser(user:string){\r\n localStorage.setItem('currentUserCallCenter',user);\r\n }\r\n\r\n export default {\r\n GetCurrentUser,\r\n SetCurrentUser\r\n };\r\n\r\n \r\n\r\n","import { createSlice } from '@reduxjs/toolkit';\r\nimport {UserModel, UserModelState} from '../models/UserModel'\r\nimport AuthService from './AuthService'\r\n\r\n\r\nconst initialState:UserModelState = {\r\n usermodel : undefined\r\n}\r\n\r\nconst userSlice = createSlice({\r\n name:'user',\r\n initialState,\r\n reducers:{\r\n setUser(state,action:{payload:UserModel}){\r\n state.usermodel = action.payload;\r\n console.log(\"Action payload =>>>\", state.usermodel);\r\n if(action.payload != null){\r\n AuthService.SetCurrentUser(JSON.stringify(action.payload));\r\n document.location.reload()\r\n }\r\n },\r\n deleteUser(state, action:{payload:undefined}){\r\n state.usermodel = undefined;\r\n },\r\n }\r\n});\r\n\r\nexport const {\r\n setUser, \r\n deleteUser\r\n} = userSlice.actions;\r\n\r\nexport default userSlice.reducer;","import { createSlice } from '@reduxjs/toolkit';\r\nimport {CustomerResponse, CustomerResponseState} from '../models/CustomerModels'\r\n\r\n\r\nconst initialState:CustomerResponseState = {\r\n customerList :[]\r\n}\r\n\r\nconst customerListSlice = createSlice({\r\n name:'user',\r\n initialState,\r\n reducers:{\r\n setCustomerList(state,action:{payload:CustomerResponse[]}){\r\n state.customerList = action.payload;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setCustomerList\r\n} = customerListSlice.actions;\r\n\r\nexport default customerListSlice.reducer;","\r\nexport interface CustomerResponseState{\r\n customerList: CustomerResponse[]\r\n}\r\n\r\nexport interface CustomerDetailResponseState{\r\n customerDetailItem: CustomerDetail\r\n}\r\n\r\nexport class CustomerDetailClass{\r\n \r\n AD_UNVAN2 :string =\"\";\r\n AUTH_PERSON_ID :string =\"\";\r\n BINA_ADI :string =\"\";\r\n BINA_NO :string =\"\";\r\n BLOCKING_DESC :string =\"\";\r\n BLOCKING_REASON_CD :string =\"\";\r\n CADDE :string =\"\";\r\n CINSIYET :string =\"\";\r\n CUSTOMER :string =\"\";\r\n CUST_NO :string =\"\";\r\n EMAIL_ADDRESS :string =\"\";\r\n ILETISIM_YETKILISI :string =\"\";\r\n IZIN_EPOSTA :string =\"\";\r\n IZIN_SMS :string =\"\";\r\n KAYIT_KANALI :string =\"\";\r\n KAYIT_MAGAZA :string =\"\";\r\n KAYIT_TARIHI :string =\"\";\r\n KISAAD_TICARI :string =\"\";\r\n LEVEL1 :string =\"\";\r\n LEVEL4 :string =\"\";\r\n LEVEL4_DESC :string =\"\";\r\n LEVEL_1_DESC :string =\"\";\r\n MAHALLE :string =\"\";\r\n MOBILE_PHONE_NO :string =\"\";\r\n PHONE_NO :string =\"\";\r\n SEMT :string =\"\";\r\n SIRKET_POZISYON :string =\"\";\r\n SIRKET_POZISYON_CD :string =\"\";\r\n SOKAK :string =\"\";\r\n SON_DEGISIKLIK_TARIHI :string =\"\";\r\n SON_F_SATINALMA :string =\"\";\r\n SON_NF_SATINALMA :string =\"\";\r\n SOYAD_TABELA :string =\"\";\r\n SOYAD_TABELA2 :string =\"\";\r\n SOYAD_UNVAN :string =\"\";\r\n STATUS :string =\"\";\r\n STATUS_DESC :string =\"\";\r\n STORE_KEY :string =\"\";\r\n S_LISANS :string =\"\";\r\n TERCIH_MAGAZA :string =\"\";\r\n T_LISANS: string=\"\"\r\n VERGI_DAIRESI :string =\"\";\r\n VERGI_NO :string =\"\";\r\n YASAL_YETKILI :string =\"\";\r\n DateWarning:boolean =false;\r\n SmsIzni:boolean =false;\r\n EpostaIzni:boolean =false;\r\n AdresIzni:boolean =false;\r\n KayitTarihiStr:string =\"\"; \r\n KAPI_NO:string =\"\";\r\n Ilce_Id:string=\"\";\r\n Mahalle_Id:string=\"\";\r\n AddressTypeCd:string=\"R\";\r\n CustomerGuid:string=\"\";\r\n Kurumsal:boolean=false;\r\n YasalYetkili:boolean=false;\r\n PrmCustomerGuid:string =\"\";\r\n IsHaveMUGE:boolean = false;\r\n}\r\n\r\nexport interface SignModel{\r\n signName:string\r\n statu:boolean\r\n}\r\n\r\nexport interface CustomerDetail {\r\n AD_UNVAN2 :string\r\n AUTH_PERSON_ID :string \r\n BINA_ADI :string \r\n BINA_NO :string\r\n BLOCKING_DESC :string\r\n BLOCKING_REASON_CD :string\r\n CADDE :string\r\n CINSIYET :string\r\n CUSTOMER :string\r\n CUST_NO :string\r\n EMAIL_ADDRESS :string\r\n ILETISIM_YETKILISI :string\r\n IZIN_EPOSTA :string\r\n IZIN_SMS :string\r\n KAYIT_KANALI :string\r\n KAYIT_MAGAZA :string\r\n KAYIT_TARIHI :string\r\n KISAAD_TICARI :string\r\n LEVEL1 :string\r\n LEVEL4 :string\r\n LEVEL4_DESC :string\r\n LEVEL_1_DESC :string\r\n MAHALLE :string\r\n MOBILE_PHONE_NO :string\r\n PHONE_NO :string\r\n SEMT :string\r\n SIRKET_POZISYON :string\r\n SIRKET_POZISYON_CD :string\r\n SOKAK :string\r\n SON_DEGISIKLIK_TARIHI :string\r\n SON_F_SATINALMA :string\r\n SON_NF_SATINALMA :string\r\n SOYAD_TABELA :string\r\n SOYAD_TABELA2 :string\r\n SOYAD_UNVAN :string\r\n STATUS :string\r\n STATUS_DESC :string\r\n STORE_KEY :string\r\n S_LISANS :string\r\n TERCIH_MAGAZA :string\r\n T_LISANS: string\r\n VERGI_DAIRESI :string\r\n VERGI_NO :string\r\n YASAL_YETKILI :string\r\n DateWarning:boolean\r\n SmsIzni:boolean\r\n EpostaIzni:boolean\r\n AdresIzni:boolean\r\n KayitTarihiStr:string\r\n KAPI_NO:string\r\n Ilce_Id:string\r\n Mahalle_Id:string\r\n AddressTypeCd:string\r\n CustomerGuid:string\r\n Kurumsal:boolean\r\n YasalYetkili:boolean\r\n PrmCustomerGuid:string\r\n IsHaveMUGE:boolean\r\n}\r\n \r\n\r\n\r\nexport interface CustomerResponse{\r\n id :number\r\n BrandName :string\r\n CardNumber :number\r\n CustomerNumber :number\r\n Email :string\r\n MobilePhoneNumber :number\r\n PhoneNumber :number\r\n ShortName :string\r\n TaxNumber:number\r\n StoreKey:number\r\n ValidationDate:string\r\n Type:string\r\n AUTH_PERSON_ID:string\r\n IsActive:boolean\r\n IsBloked:boolean\r\n BlockedCode:string\r\n}\r\n\r\nexport interface Customer {\r\n MobilePhoneNumber : number\r\n CustomerNumber : number\r\n TaxNumber:number\r\n CardNumber :number\r\n Email :string\r\n BrandName :string\r\n PhoneNumber : number\r\n ShortName : string\r\n}\r\n ","import { createSlice } from '@reduxjs/toolkit';\r\nimport {CustomerDetail,CustomerDetailResponseState,SignModel,CustomerDetailClass} from '../models/CustomerModels'\r\n\r\n\r\nconst initialState:CustomerDetailResponseState = {\r\n customerDetailItem:new CustomerDetailClass()\r\n}\r\n\r\nconst customerDetailSlice = createSlice({\r\n name:'user',\r\n initialState,\r\n reducers:{\r\n setCustomerDetail(state,action:{payload:CustomerDetail}){\r\n state.customerDetailItem = action.payload;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setCustomerDetail,\r\n} = customerDetailSlice.actions;\r\n\r\nexport default customerDetailSlice.reducer;","import { object } from \"yup/lib/locale\";\r\n\r\n\r\n\r\nexport class Product{\r\n productId= 0;\r\n campaignId= 0;\r\n productName= null;\r\n campaignShowFlag= 0;\r\n campaignText= null;\r\n badgeText= null;\r\n packageType= null;\r\n content= 0.0;\r\n oldPriceShowFlag= 0;\r\n oldPrice= null;\r\n price= 0.0;\r\n productImages:ProductImage[]=[]\r\n oldPriceStrikeFlag= 0;\r\n perContentWeigth= 0.0;\r\n weightUnit= null;\r\n startDate=null;\r\n endDate= null;\r\n campaignTargets= null;\r\n taxRate= 0;\r\n relatedStorePrices= null;\r\n productStockStatus= 0;\r\n stockQuantity= 0\r\n}\r\n\r\nexport class ProductList{\r\n currentPageNumber=1\r\n pageCount=0\r\n pageSize=100\r\n totalRowsCount=0\r\n results:Product[] = []\r\n}\r\n\r\nexport class ProductImage{\r\n Cdn_url=\"\";\r\n Cdn_oo2_url=\"\";\r\n Descript= null;\r\n productId= 0\r\n\r\n};\r\nexport class infoData{\r\n key=\"\";\r\n value=\"\";\r\n};\r\nexport class relatedStorePrices{\r\n storeNo= 0;\r\n storeName= null;\r\n price=0.0;\r\n productStockStatus=1;\r\n stockQuantity=0;\r\n};\r\nexport class ProductDetail {\r\n productBatches= [];\r\n productLogos= null;\r\n productImages: ProductImage[]=[];\r\n puarNo= 0;\r\n puarInfoText= null;\r\n productCode= null;\r\n productStockStatus= 0;\r\n productHeight= 0;\r\n productWidth= 0;\r\n ProductDepth= 0;\r\n filterBrand= 0;\r\n filterBrandName= null;\r\n filterCategory= 0;\r\n filterCategoryName= null;\r\n relatedProductList= null;\r\n infoData: infoData[]=[];\r\n campaignAnnouncement= null;\r\n shoppingListItemCount= 0;\r\n relatedStorePrices:relatedStorePrices[]= [];\r\n productId= 0;\r\n campaignId= 0;\r\n productName= null;\r\n campaingShowFlag= 0;\r\n campaingText= null;\r\n badgeText= null;\r\n oldPriceShowFlag= 0;\r\n promotionStockLimit= 0;\r\n oldPrice= 0.0;\r\n price= 0.0;\r\n unitPrice= 0.0;\r\n content= 0.0;\r\n packageType= null;\r\n startDate= null;\r\n endDate= null;\r\n salesBundle= 0;\r\n countryOrigin= null;\r\n taxRate= 0;\r\n productDescription= null;\r\n productCertifications= null;\r\n nutritiveValue= null;\r\n ingredients= null;\r\n oldPriceStrikeFlag= 0;\r\n perContentWeigth= 0.0;\r\n weightUnit= 0;\r\n subsystemNumber= 0;\r\n campaignTypeId= 0\r\n \r\n}\r\nexport class ProductModel{\r\n productDetail= new ProductDetail;\r\n}\r\nexport class ProductListModel{\r\n productList= new ProductList;\r\n}\r\n\r\nexport class BaseStore{\r\n store = new StoreModel\r\n}\r\n\r\nexport class StoreModel{\r\n storeNo = 0\r\n storeName = \"\"\r\n}\r\n\r\nexport class StoreList{\r\n storeList:StoreModel[] = []\r\n}","import { createSlice } from '@reduxjs/toolkit';\r\nimport {StoreModel,StoreList} from '../models/productServiceModels'\r\n\r\n\r\nconst initialState:StoreList = {\r\n storeList : new StoreList().storeList\r\n}\r\n\r\nconst storeSlice = createSlice({\r\n name:'store',\r\n initialState,\r\n reducers:{\r\n setStoreList(state,action:{payload:StoreModel[]}){\r\n state.storeList = action.payload;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setStoreList,\r\n} = storeSlice.actions;\r\n\r\nexport default storeSlice.reducer;","import { createSlice } from '@reduxjs/toolkit';\r\nimport {BaseStore, StoreModel} from '../models/productServiceModels'\r\n\r\n\r\nconst initialState:BaseStore = {\r\n store:new StoreModel\r\n}\r\n\r\nconst currentStoreSlice = createSlice({\r\n name:'currentStore',\r\n initialState,\r\n reducers:{\r\n setCurrentStore(state,action:{payload:StoreModel}){\r\n console.log(\"current slice =>>\",action.payload)\r\n state.store = action.payload;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setCurrentStore,\r\n} = currentStoreSlice.actions;\r\n\r\nexport default currentStoreSlice.reducer;","import { createSlice } from '@reduxjs/toolkit';\r\nimport {ProductList, Product,ProductListModel} from '../models/productServiceModels'\r\n\r\n\r\nconst initialState:ProductListModel = {\r\n productList:new ProductListModel().productList\r\n}\r\n\r\nconst productListSlice = createSlice({\r\n name:'productList',\r\n initialState,\r\n reducers:{\r\n setProductList(state,action:{payload:ProductList}){\r\n state.productList = action.payload;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setProductList,\r\n} = productListSlice.actions;\r\n\r\nexport default productListSlice.reducer;\r\n\r\n","import { createSlice } from '@reduxjs/toolkit';\r\nimport { ProductDetail, ProductModel} from '../models/productServiceModels'\r\n\r\n\r\nconst initialState:ProductModel = {\r\n productDetail:new ProductModel().productDetail\r\n}\r\n\r\nconst productDetailSlice = createSlice({\r\n name:'productDetail',\r\n initialState,\r\n reducers:{\r\n setProductDetail(state,action:{payload:ProductDetail}){\r\n state.productDetail = action.payload;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setProductDetail,\r\n} = productDetailSlice.actions;\r\n\r\nexport default productDetailSlice.reducer;","\r\nexport const API_URL = window.Configs.API_URL;","import axios from 'axios'\r\nimport {UserModel, AccountLoginModel} from '../models/UserModel'\r\nimport {API_URL} from '../../../../setup/helpers/apiUrl'\r\n\r\nexport const LOGIN_URL = `${API_URL}/api/Account/MetroGoToken`\r\n\r\nexport async function login(email: string, password: string) {\r\n console.log(\"Resp 14\");\r\n // let loginObj:UserModel = {\r\n // userName : email,\r\n // password:password,\r\n // Info:'',\r\n // email:''\r\n // }; \r\n \r\n var loginModel = {\r\n userName:email,\r\n password:password\r\n };\r\n\r\n console.log(\"Resp 21\");\r\n console.log(\"Login url =>\",LOGIN_URL);\r\n// console.log(\"login obj =>\",loginObj);\r\n var resp;\r\n try{\r\n await axios.post(LOGIN_URL+'?projectGuid=2EF7A813-4943-4A76-BF8C-30DD48CE0C6B',loginModel,{headers:{ \"Content-Type\": \"application/json\"}})\r\n .then((response) =>{\r\n console.log(\"then =>\", response);\r\n resp = response; \r\n })\r\n .catch((err) => {\r\n console.log(\"thenCatch =>\", err);\r\n });\r\n console.log(\"Response => \", resp);\r\n return resp;\r\n } \r\n catch(err){\r\n console.log(\"login error =>\", err);\r\n console.log(\"catch resp =>\", resp);\r\n return err;\r\n }\r\n}\r\n\r\n\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, {useState} from 'react'\r\nimport {useDispatch} from 'react-redux'\r\nimport * as Yup from 'yup'\r\nimport clsx from 'clsx'\r\nimport {useFormik} from 'formik'\r\nimport {login} from '../redux/AuthCRUD'\r\nimport {UserModel} from '../models/UserModel'\r\nimport {setUser} from '../redux/AuthSlice'\r\n\r\nconst loginSchema = Yup.object().shape({\r\n email: Yup.string()\r\n .email('Wrong email format')\r\n .min(3, 'Minimum 3 symbols')\r\n .max(50, 'Maximum 50 symbols')\r\n .required('Email gerekli'),\r\n password: Yup.string()\r\n .min(3, 'Minimum 3 symbols')\r\n .max(50, 'Maximum 50 symbols')\r\n .required('Şifre gerekli'),\r\n})\r\n\r\nconst initialValues = {\r\n email: '',\r\n password: '',\r\n}\r\n\r\n/*\r\n Formik+YUP+Typescript:\r\n https://jaredpalmer.com/formik/docs/tutorial#getfieldprops\r\n https://medium.com/@maurice.de.beijer/yup-validation-and-typescript-and-formik-6c342578a20e\r\n*/\r\n\r\nexport function Login() {\r\n const [loading, setLoading] = useState(false)\r\n const dispatch = useDispatch()\r\n const formik = useFormik({\r\n initialValues,\r\n validationSchema: loginSchema,\r\n onSubmit: (values, {setStatus, setSubmitting}) => {\r\n setLoading(true) \r\n setTimeout(async () => {\r\n await login(values.email, values.password)\r\n .then((data:any) => {\r\n setLoading(false)\r\n console.log(\"Data =>\",data);\r\n if(data != null){\r\n if (data.data.Status != \"SUCCESS\"){\r\n setLoading(false)\r\n setSubmitting(false)\r\n setStatus(data.data.Detail)\r\n }else{\r\n let user:UserModel = {\r\n email: values.email,\r\n password : values.password,\r\n userName : values.email,\r\n Info : '',\r\n accessToken: data.data.Detail.access_token\r\n };\r\n console.log(\"Dispatch yapacak =>\",user);\r\n dispatch(setUser(user))\r\n document.location.reload();\r\n }\r\n }else{\r\n setLoading(false)\r\n setSubmitting(false)\r\n setStatus('Email veya şifrenizi kontrol ediniz.')\r\n }\r\n \r\n })\r\n .catch((error) => {\r\n setLoading(false)\r\n setSubmitting(false)\r\n setStatus('Email veya şifrenizi kontrol ediniz.')\r\n console.log(\"catch 53\",error)\r\n })\r\n }, 1000)\r\n },\r\n })\r\n\r\n return (\r\n \r\n {/* begin::Heading */}\r\n
\r\n

Metro Call Center

\r\n
\r\n {/* begin::Heading */}\r\n\r\n {formik.status ? (\r\n
\r\n
{formik.status}
\r\n
\r\n ) : (\r\n \r\n )}\r\n\r\n {/* begin::Form group */}\r\n
\r\n \r\n \r\n {formik.touched.email && formik.errors.email && (\r\n
\r\n {formik.errors.email}\r\n
\r\n )}\r\n
\r\n {/* end::Form group */}\r\n\r\n {/* begin::Form group */}\r\n
\r\n
\r\n
\r\n {/* begin::Label */}\r\n \r\n {/* end::Label */}\r\n
\r\n
\r\n \r\n {formik.touched.password && formik.errors.password && (\r\n
\r\n
\r\n {formik.errors.password}\r\n
\r\n
\r\n )}\r\n
\r\n {/* end::Form group */}\r\n\r\n {/* begin::Action */}\r\n
\r\n

\r\n Şifremi unuttum\r\n

\r\n
\r\n
\r\n \r\n {!loading && GİRİŞ}\r\n {loading && (\r\n \r\n Lütfen bekleyin...\r\n \r\n \r\n )}\r\n \r\n
\r\n {/* end::Action */}\r\n \r\n )\r\n}\r\n","export const toAbsoluteUrl = (pathname: string) => process.env.PUBLIC_URL + pathname\r\n","import React from 'react'\r\nimport SVG from 'react-inlinesvg'\r\nimport {toAbsoluteUrl} from '../AssetHelpers'\r\ntype Props = {\r\n className?: string\r\n path: string\r\n svgClassName?: string\r\n}\r\n\r\nconst KTSVG: React.FC = ({className = '', path, svgClassName = 'mh-50px'}) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport {KTSVG}\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, {useEffect} from 'react'\r\nimport {Redirect, Route, Switch} from 'react-router-dom'\r\n// import {Registration} from './components/Registration'\r\n// import {ForgotPassword} from './components/ForgotPassword'\r\nimport {Login} from './components/Login'\r\nimport {toAbsoluteUrl} from '../../../_metronic/helpers'\r\n\r\nexport function AuthPage() {\r\n useEffect(() => {\r\n document.body.classList.add('bg-white')\r\n return () => {\r\n document.body.classList.remove('bg-white')\r\n }\r\n }, [])\r\n\r\n return (\r\n \r\n {/* begin::Content */}\r\n
\r\n {/* begin::Logo */}\r\n \r\n Logo\r\n \r\n {/* end::Logo */}\r\n {/* begin::Wrapper */}\r\n
\r\n \r\n \r\n {/* \r\n */}\r\n \r\n \r\n \r\n
\r\n {/* end::Wrapper */}\r\n
\r\n {/* end::Content */}\r\n {/* begin::Footer */}\r\n
\r\n
\r\n \r\n bestERA 2021\r\n \r\n
\r\n
\r\n {/* end::Footer */}\r\n \r\n )\r\n}\r\n","import {Action} from '@reduxjs/toolkit'\r\nimport {persistReducer} from 'redux-persist'\r\nimport storage from 'redux-persist/lib/storage'\r\nimport {put, takeLatest} from 'redux-saga/effects'\r\nimport {UserModel} from '../models/UserModel'\r\n\r\nexport interface ActionWithPayload extends Action {\r\n payload?: T\r\n}\r\n\r\nexport const actionTypes = {\r\n Login: '[Login] Action',\r\n Logout: '[Logout] Action',\r\n Register: '[Register] Action',\r\n UserRequested: '[Request User] Action',\r\n UserLoaded: '[Load User] Auth API',\r\n SetUser: '[Set User] Action',\r\n}\r\n\r\nconst initialAuthState: IAuthState = {\r\n user: undefined,\r\n accessToken: undefined,\r\n}\r\n\r\nexport interface IAuthState {\r\n user?: UserModel\r\n accessToken?: string\r\n}\r\n\r\nexport const reducer = persistReducer(\r\n {storage, key: 'v100-demo1-auth', whitelist: ['user', 'accessToken']},\r\n (state: IAuthState = initialAuthState, action: ActionWithPayload) => {\r\n switch (action.type) {\r\n case actionTypes.Login: {\r\n const accessToken = action.payload?.accessToken\r\n console.log(\"Action access token =>\",accessToken)\r\n return {accessToken, user: undefined}\r\n }\r\n\r\n case actionTypes.Logout: {\r\n return initialAuthState\r\n }\r\n\r\n case actionTypes.UserLoaded: {\r\n const user = action.payload?.user\r\n return {...state, user}\r\n }\r\n\r\n case actionTypes.SetUser: {\r\n const user = action.payload?.user\r\n return {...state, user}\r\n }\r\n\r\n default:\r\n return state\r\n }\r\n }\r\n)\r\n\r\nexport const actions = {\r\n login: (accessToken: string) => ({type: actionTypes.Login, payload: {accessToken}}),\r\n\r\n logout: () => ({type: actionTypes.Logout}),\r\n requestUser: () => ({\r\n type: actionTypes.UserRequested,\r\n }),\r\n fulfillUser: (user: UserModel) => ({type: actionTypes.UserLoaded, payload: {user}}),\r\n setUser: (user: UserModel) => ({type: actionTypes.SetUser, payload: {user}}),\r\n}\r\n\r\nexport function* saga() {\r\n yield takeLatest(actionTypes.Login, function* loginSaga() {\r\n yield put(actions.requestUser())\r\n })\r\n\r\n yield takeLatest(actionTypes.Register, function* registerSaga() {\r\n yield put(actions.requestUser())\r\n })\r\n\r\n // yield takeLatest(actionTypes.UserRequested, function* userRequested() {\r\n // console.log(\"User Bulma =>\", actionTypes.UserRequested);\r\n // const {data: user} = yield getUserByToken()\r\n // yield put(actions.fulfillUser(user))\r\n // })\r\n}\r\n","import React, {useEffect} from 'react'\r\nimport {useDispatch} from 'react-redux'\r\nimport {Redirect, Switch} from 'react-router-dom'\r\nimport {deleteUser} from './redux/AuthSlice'\r\n\r\n\r\nexport function Logout() {\r\n const dispatch = useDispatch()\r\n useEffect(() => {\r\n dispatch(deleteUser(undefined))\r\n localStorage.clear();\r\n document.location.reload()\r\n }, [dispatch])\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n","import {FC, useRef, useEffect, useState} from 'react'\r\nimport {shallowEqual, useSelector, connect, useDispatch, ConnectedProps} from 'react-redux'\r\n// import {LayoutSplashScreen} from '../../../../_metronic/layout/core'\r\nimport * as auth from './AuthRedux'\r\nimport {RootState} from '../../../../setup'\r\n\r\nconst mapState = (state: RootState) => ({auth: state.auth})\r\nconst connector = connect(mapState, auth.actions)\r\ntype PropsFromRedux = ConnectedProps\r\n\r\nconst AuthInit: FC = (props) => {\r\n const didRequest = useRef(false)\r\n const dispatch = useDispatch()\r\n const [showSplashScreen, setShowSplashScreen] = useState(true)\r\n const accessToken = useSelector(({auth}) => auth.accessToken, shallowEqual)\r\n\r\n // We should request user by authToken before rendering the application\r\n useEffect(() => {\r\n const requestUser = async () => {\r\n try {\r\n if (!didRequest.current) {\r\n }\r\n } catch (error) {\r\n console.error(error)\r\n if (!didRequest.current) {\r\n dispatch(props.logout())\r\n }\r\n } finally {\r\n setShowSplashScreen(false)\r\n }\r\n\r\n return () => (didRequest.current = true)\r\n }\r\n\r\n if (accessToken) {\r\n requestUser()\r\n } else {\r\n dispatch(props.logout())\r\n setShowSplashScreen(false)\r\n }\r\n // eslint-disable-next-line\r\n }, [])\r\n\r\n // return showSplashScreen ? : <>{props.children}\r\n return <>{props.children}\r\n}\r\n\r\nexport default connector(AuthInit)\r\n","import {all} from 'redux-saga/effects'\r\nimport {combineReducers} from 'redux' \r\nimport UserSliceReducer from '../../app/modules/auth/redux/AuthSlice'\r\nimport CustomerListSliceReducer from '../../app/modules/searchShowCustomer/redux/CustomerListSlice'\r\nimport CustomerDetailSliceReducer from '../../app/modules/searchShowCustomer/redux/CustomerDetailSlice'\r\nimport storeListSliceReducer from '../../app/pages/product/redux/StoreSlice'\r\nimport currentStoreSliceReducer from '../../app/pages/product/redux/CurrentStoreSlice'\r\nimport productListSliceReducer from '../../app/pages/product/redux/ProductListSlice'\r\nimport productDetailSliceReducer from '../../app/pages/product/redux/ProductDetailSlice'\r\nimport * as auth from '../../app/modules/auth'\r\n\r\n\r\nexport const rootReducer = combineReducers({\r\n auth: auth.reducer, \r\n userReducer:UserSliceReducer,\r\n customerListReducer:CustomerListSliceReducer,\r\n customerDetailReducer:CustomerDetailSliceReducer,\r\n storeListReducer:storeListSliceReducer,\r\n currentStoreReducer:currentStoreSliceReducer,\r\n productListReducer:productListSliceReducer,\r\n productDetailReducer:productDetailSliceReducer\r\n\r\n})\r\n\r\nexport type RootState = ReturnType\r\n\r\nexport function* rootSaga() {\r\n yield all([auth.saga()])\r\n}\r\n\r\n\r\n\r\n","import {configureStore, getDefaultMiddleware} from '@reduxjs/toolkit'\r\nimport createSagaMiddleware from 'redux-saga'\r\nimport {reduxBatch} from '@manaflair/redux-batch'\r\nimport {persistStore} from 'redux-persist'\r\nimport {rootReducer, rootSaga} from './RootReducer'\r\n\r\nconst sagaMiddleware = createSagaMiddleware()\r\nconst middleware = [\r\n ...getDefaultMiddleware({\r\n immutableCheck: false,\r\n serializableCheck: false,\r\n thunk: true,\r\n }),\r\n sagaMiddleware,\r\n]\r\n\r\nconst store = configureStore({\r\n reducer: rootReducer,\r\n middleware,\r\n devTools: process.env.NODE_ENV !== 'production',\r\n enhancers: [reduxBatch],\r\n})\r\n\r\nexport type AppDispatch = typeof store.dispatch\r\n\r\n/**\r\n * @see https://github.com/rt2zz/redux-persist#persiststorestore-config-callback\r\n * @see https://github.com/rt2zz/redux-persist#persistor-object\r\n */\r\nexport const persistor = persistStore(store)\r\n\r\nsagaMiddleware.run(rootSaga)\r\n\r\nexport default store\r\n","import React, {FC, createContext, useContext} from 'react'\r\n\r\nconst I18N_CONFIG_KEY = process.env.REACT_APP_I18N_CONFIG_KEY || 'i18nConfig'\r\n\r\ntype Props = {\r\n selectedLang: 'de' | 'en' | 'es' | 'fr' | 'ja' | 'zh'\r\n}\r\nconst initialState: Props = {\r\n selectedLang: 'en',\r\n}\r\n\r\nfunction getConfig(): Props {\r\n const ls = localStorage.getItem(I18N_CONFIG_KEY)\r\n if (ls) {\r\n try {\r\n return JSON.parse(ls) as Props\r\n } catch (er) {\r\n console.error(er)\r\n }\r\n }\r\n return initialState\r\n}\r\n\r\n// Side effect\r\nexport function setLanguage(lang: string) {\r\n localStorage.setItem(I18N_CONFIG_KEY, JSON.stringify({selectedLang: lang}))\r\n window.location.reload()\r\n}\r\n\r\nconst I18nContext = createContext(initialState)\r\n\r\nconst useLang = () => {\r\n return useContext(I18nContext).selectedLang\r\n}\r\n\r\nconst MetronicI18nProvider: FC = ({children}) => {\r\n const lang = getConfig()\r\n return {children}\r\n}\r\n\r\nexport {MetronicI18nProvider, useLang}\r\n","import {FC} from 'react'\r\nimport {useLang} from './Metronici18n'\r\nimport {IntlProvider} from 'react-intl'\r\nimport '@formatjs/intl-relativetimeformat/polyfill'\r\nimport '@formatjs/intl-relativetimeformat/locale-data/en'\r\nimport '@formatjs/intl-relativetimeformat/locale-data/de'\r\nimport '@formatjs/intl-relativetimeformat/locale-data/es'\r\nimport '@formatjs/intl-relativetimeformat/locale-data/fr'\r\nimport '@formatjs/intl-relativetimeformat/locale-data/ja'\r\nimport '@formatjs/intl-relativetimeformat/locale-data/zh'\r\n\r\nimport deMessages from './messages/de.json'\r\nimport enMessages from './messages/en.json'\r\nimport esMessages from './messages/es.json'\r\nimport frMessages from './messages/fr.json'\r\nimport jaMessages from './messages/ja.json'\r\nimport zhMessages from './messages/zh.json'\r\n\r\nconst allMessages = {\r\n de: deMessages,\r\n en: enMessages,\r\n es: esMessages,\r\n fr: frMessages,\r\n ja: jaMessages,\r\n zh: zhMessages,\r\n}\r\n\r\nconst I18nProvider: FC = ({children}) => {\r\n const locale = useLang()\r\n const messages = allMessages[locale]\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nexport {I18nProvider}\r\n","import {ILayout} from './LayoutModels'\r\n\r\nexport const DefaultLayoutConfig: ILayout = {\r\n main: {\r\n type: 'default',\r\n primaryColor: '#009EF7',\r\n darkSkinEnabled: true,\r\n },\r\n loader: {\r\n display: true,\r\n type: 'default', // Set default|spinner-message|spinner-logo to hide or show page loader\r\n },\r\n scrolltop: {\r\n display: true,\r\n },\r\n header: {\r\n display: true, // Set true|false to show or hide Header\r\n width: 'fluid', // Set fixed|fluid to change width type\r\n left: 'menu',\r\n fixed: {\r\n desktop: true, // Set true|false to set fixed Header for desktop mode\r\n tabletAndMobile: true, // Set true|false to set fixed Header for tablet and mobile modes\r\n },\r\n menuIcon: 'svg',\r\n },\r\n megaMenu: {\r\n display: true, // Set true|false to show or hide Mega Menu\r\n },\r\n aside: {\r\n display: true,\r\n theme: 'dark',\r\n menu: 'main',\r\n fixed: true,\r\n minimized: false,\r\n minimize: true,\r\n hoverable: true,\r\n menuIcon: 'svg',\r\n },\r\n content: {\r\n width: 'fixed', // Set fixed|fluid to change width\r\n layout: 'default',\r\n },\r\n toolbar: {\r\n display: true, // Display toolbar\r\n width: 'fluid', // Set fixed|fluid to change width type,\r\n fixed: {\r\n desktop: true,\r\n tabletAndMobileMode: true,\r\n },\r\n layout: 'toolbar1',\r\n layouts: {\r\n toolbar1: {\r\n height: '55px',\r\n heightAndTabletMobileMode: '55px',\r\n },\r\n toolbar2: {\r\n height: '75px',\r\n heightAndTabletMobileMode: '65px',\r\n },\r\n toolbar3: {\r\n height: '55px',\r\n heightAndTabletMobileMode: '55px',\r\n },\r\n toolbar4: {\r\n height: '65px',\r\n heightAndTabletMobileMode: '65px',\r\n },\r\n toolbar5: {\r\n height: '75px',\r\n heightAndTabletMobileMode: '65px',\r\n },\r\n },\r\n },\r\n footer: {\r\n width: 'fluid', // Set fixed|fluid to change width type\r\n },\r\n pageTitle: {\r\n display: true,\r\n breadCrumbs: true,\r\n description: false,\r\n layout: 'default',\r\n direction: 'row',\r\n responsive: true,\r\n responsiveBreakpoint: 'lg',\r\n responsiveTarget: '#kt_toolbar_container',\r\n },\r\n}\r\n","import {\r\n IAside,\r\n IContent,\r\n IFooter,\r\n IHeader,\r\n IToolbar,\r\n ILayout,\r\n ILayoutCSSClasses,\r\n ILayoutHTMLAttributes,\r\n ILayoutCSSVariables,\r\n IPageTitle,\r\n} from './LayoutModels'\r\nimport {DefaultLayoutConfig} from './DefaultLayoutConfig'\r\n\r\nconst LAYOUT_CONFIG_KEY = process.env.REACT_APP_BASE_LAYOUT_CONFIG_KEY || 'LayoutConfig'\r\n\r\nexport function getLayout(): ILayout {\r\n const ls = localStorage.getItem(LAYOUT_CONFIG_KEY)\r\n if (ls) {\r\n try {\r\n return JSON.parse(ls) as ILayout\r\n } catch (er) {\r\n console.error(er)\r\n }\r\n }\r\n return DefaultLayoutConfig\r\n}\r\n\r\nfunction setLayout(config: ILayout): void {\r\n try {\r\n localStorage.setItem(LAYOUT_CONFIG_KEY, JSON.stringify(config))\r\n } catch (er) {\r\n console.error(er)\r\n }\r\n}\r\n\r\nexport function getEmptyCssClasses() {\r\n return {\r\n header: [],\r\n headerContainer: [],\r\n headerMobile: [],\r\n headerMenu: [],\r\n aside: [],\r\n asideMenu: [],\r\n asideToggle: [],\r\n toolbar: [],\r\n toolbarContainer: [],\r\n content: [],\r\n contentContainer: [],\r\n footerContainer: [],\r\n sidebar: [],\r\n pageTitle: [],\r\n }\r\n}\r\n\r\nexport function getEmptyHTMLAttributes() {\r\n return {\r\n asideMenu: new Map(),\r\n headerMobile: new Map(),\r\n headerMenu: new Map(),\r\n headerContainer: new Map(),\r\n pageTitle: new Map(),\r\n }\r\n}\r\n\r\nexport function getEmptyCSSVariables() {\r\n return {\r\n body: new Map(),\r\n }\r\n}\r\n\r\nexport class LayoutSetup {\r\n public static isLoaded: boolean = false\r\n public static config: ILayout = getLayout()\r\n public static classes: ILayoutCSSClasses = getEmptyCssClasses()\r\n public static attributes: ILayoutHTMLAttributes = getEmptyHTMLAttributes()\r\n public static cssVariables: ILayoutCSSVariables = getEmptyCSSVariables()\r\n\r\n private static initCSSClasses(): void {\r\n LayoutSetup.classes = getEmptyCssClasses()\r\n }\r\n\r\n private static initHTMLAttributes(): void {\r\n LayoutSetup.attributes = Object.assign({}, getEmptyHTMLAttributes())\r\n }\r\n\r\n private static initCSSVariables(): void {\r\n LayoutSetup.cssVariables = getEmptyCSSVariables()\r\n }\r\n\r\n private static initLayout(config: ILayout): void {\r\n Array.from(document.body.attributes).forEach((attr) => {\r\n document.body.removeAttribute(attr.name)\r\n })\r\n document.body.setAttribute('style', '')\r\n document.body.setAttribute('id', 'kt_body')\r\n if (config.main?.body?.backgroundImage) {\r\n document.body.style.backgroundImage = `url('${config.main.body.backgroundImage}')`\r\n }\r\n\r\n if (config.main?.body?.class) {\r\n document.body.classList.add(config.main.body.class)\r\n }\r\n\r\n // if (config.loader.display) {\r\n // document.body.classList.add('page-loading')\r\n // document.body.classList.add('page-loading-enabled')\r\n // }\r\n }\r\n\r\n private static initHeader(config: IHeader): void {\r\n LayoutSetup.classes.headerContainer.push(\r\n config.width === 'fluid' ? 'container-fluid' : 'container'\r\n )\r\n\r\n if (config.fixed.desktop) {\r\n document.body.classList.add('header-fixed')\r\n }\r\n\r\n if (config.fixed.tabletAndMobile) {\r\n document.body.classList.add('header-tablet-and-mobile-fixed')\r\n }\r\n }\r\n\r\n private static initToolbar(config: IToolbar): void {\r\n if (!config.display) {\r\n return\r\n }\r\n\r\n document.body.classList.add('toolbar-enabled')\r\n LayoutSetup.classes.toolbarContainer.push(\r\n config.width === 'fluid' ? 'container-fluid' : 'container'\r\n )\r\n\r\n if (config.fixed.desktop) {\r\n document.body.classList.add('toolbar-fixed')\r\n }\r\n\r\n if (config.fixed.tabletAndMobileMode) {\r\n document.body.classList.add('toolbar-tablet-and-mobile-fixed')\r\n }\r\n\r\n // Height setup\r\n const type = config.layout\r\n const typeOptions = config.layouts[type]\r\n if (typeOptions) {\r\n let bodyStyles: string = ''\r\n if (typeOptions.height) {\r\n bodyStyles += ` --kt-toolbar-height: ${typeOptions.height};`\r\n }\r\n\r\n if (typeOptions.heightAndTabletMobileMode) {\r\n bodyStyles += ` --kt-toolbar-height-tablet-and-mobile: ${typeOptions.heightAndTabletMobileMode};`\r\n }\r\n document.body.setAttribute('style', bodyStyles)\r\n }\r\n }\r\n\r\n private static initPageTitle(config: IPageTitle): void {\r\n if (!config.display) {\r\n return\r\n }\r\n\r\n if (config.direction === 'column') {\r\n this.classes.pageTitle.push('flex-column')\r\n this.classes.pageTitle.push('align-items-start')\r\n } else {\r\n this.classes.pageTitle.push('align-items-center')\r\n this.classes.pageTitle.push('flex-wrap')\r\n }\r\n this.classes.pageTitle.push('me-3')\r\n\r\n if (config.responsive) {\r\n this.classes.pageTitle.push('mb-5')\r\n this.classes.pageTitle.push('mb-lg-0')\r\n\r\n LayoutSetup.attributes.pageTitle.set('data-kt-swapper', true)\r\n LayoutSetup.attributes.pageTitle.set('data-kt-swapper-mode', 'prepend')\r\n LayoutSetup.attributes.pageTitle.set(\r\n 'data-kt-swapper-parent',\r\n `{ default: '#kt_content_container', '${config.responsiveBreakpoint}': '${config.responsiveTarget}'}`\r\n )\r\n }\r\n }\r\n\r\n private static initContent(config: IContent): void {\r\n LayoutSetup.classes.contentContainer.push(\r\n config.width === 'fluid' ? 'container-fluid' : 'container'\r\n )\r\n // if (Theme::getOption('layout', 'content/container-class')) {\r\n // \tTheme::addHtmlClass('content-container', Theme::getOption('layout', 'content/container-class'));\r\n // }\r\n }\r\n\r\n private static initAside(config: IAside): void {\r\n // Check if aside is displayed\r\n if (!config.display) {\r\n return\r\n }\r\n\r\n // Enable Aside\r\n document.body.classList.add('aside-enabled')\r\n LayoutSetup.classes.aside.push(`aside-${config.theme}`)\r\n\r\n // Fixed Aside\r\n if (config.fixed) {\r\n document.body.classList.add('aside-fixed')\r\n }\r\n\r\n // Default minimized\r\n if (config.minimized) {\r\n document.body.setAttribute('data-kt-aside-minimize', 'on')\r\n }\r\n\r\n // Hoverable on minimize\r\n if (config.hoverable) {\r\n LayoutSetup.classes.aside.push('aside-hoverable')\r\n }\r\n }\r\n\r\n private static initAsideMenu(config: IAside): void {\r\n // if (Theme::getOption('layout', 'aside/menu') === 'documentation') {\r\n // \tself::$menu = new Menu( Theme::getOption('menu', 'documentation'), Theme::getPagePath() );\r\n // } else {\r\n // \tself::$menu = new Menu( Theme::getOption('menu', 'main'), Theme::getPagePath() );\r\n // }\r\n // if (Theme::getOption('layout', 'aside/menu-icons-display') === false) {\r\n // \tself::$menu->displayIcons(false);\r\n // }\r\n // self::$menu->setIconType(Theme::getOption('layout', 'aside/menu-icon'));\r\n }\r\n\r\n // private static initSidebar(sidebarConfig: ISidebarConfig): void {\r\n // // / Set Sidebar enabled class\r\n // if (sidebarConfig.display) {\r\n // document.body.classList.add('sidebar-enabled')\r\n // } else {\r\n // return\r\n // }\r\n\r\n // // Set Sidebar shown status\r\n // if (sidebarConfig.shown) {\r\n // document.body.setAttribute('data-sidebar', 'on')\r\n // }\r\n\r\n // // Set Sidebar background color class\r\n // ThemeSetup.classes.sidebar.push(sidebarConfig.bgColor)\r\n // }\r\n\r\n private static initFooter(config: IFooter): void {\r\n LayoutSetup.classes.footerContainer.push(`container${config.width === 'fluid' ? '-fluid' : ''}`)\r\n }\r\n\r\n private static initConfig(config: ILayout): void {\r\n if (config.main?.darkSkinEnabled) {\r\n document.body.classList.add('dark-skin')\r\n }\r\n\r\n // Init layout\r\n LayoutSetup.initLayout(config)\r\n if (config.main?.type !== 'default') {\r\n return\r\n }\r\n\r\n LayoutSetup.initHeader(config.header)\r\n LayoutSetup.initPageTitle(config.pageTitle as IPageTitle)\r\n LayoutSetup.initToolbar(config.toolbar)\r\n LayoutSetup.initContent(config.content)\r\n LayoutSetup.initAside(config.aside)\r\n LayoutSetup.initFooter(config.footer)\r\n LayoutSetup.initAsideMenu(config.aside)\r\n }\r\n\r\n public static updatePartialConfig(fieldsToUpdate: Partial): ILayout {\r\n const config = LayoutSetup.config\r\n const updatedConfig = {...config, ...fieldsToUpdate}\r\n LayoutSetup.initCSSClasses()\r\n LayoutSetup.initCSSVariables()\r\n LayoutSetup.initHTMLAttributes()\r\n LayoutSetup.isLoaded = false\r\n LayoutSetup.config = updatedConfig\r\n LayoutSetup.initConfig(Object.assign({}, updatedConfig))\r\n LayoutSetup.isLoaded = true // remove loading there\r\n return updatedConfig\r\n }\r\n\r\n public static setConfig(config: ILayout): void {\r\n setLayout(config)\r\n }\r\n\r\n public static bootstrap = (() => {\r\n LayoutSetup.updatePartialConfig(LayoutSetup.config)\r\n })()\r\n}\r\n","import React, {createContext, useContext, useState, useEffect} from 'react'\r\nimport {DefaultLayoutConfig} from './DefaultLayoutConfig'\r\nimport {\r\n getEmptyCssClasses,\r\n getEmptyCSSVariables,\r\n getEmptyHTMLAttributes,\r\n LayoutSetup,\r\n} from './LayoutSetup'\r\nimport {\r\n ILayout,\r\n ILayoutCSSVariables,\r\n ILayoutCSSClasses,\r\n ILayoutHTMLAttributes,\r\n} from './LayoutModels'\r\n\r\nexport interface LayoutContextModel {\r\n config: ILayout\r\n classes: ILayoutCSSClasses\r\n attributes: ILayoutHTMLAttributes\r\n cssVariables: ILayoutCSSVariables\r\n setLayout: (config: LayoutSetup) => void\r\n}\r\n\r\nconst LayoutContext = createContext({\r\n config: DefaultLayoutConfig,\r\n classes: getEmptyCssClasses(),\r\n attributes: getEmptyHTMLAttributes(),\r\n cssVariables: getEmptyCSSVariables(),\r\n setLayout: (config: LayoutSetup) => {},\r\n})\r\n\r\nconst enableSplashScreen = () => {\r\n const splashScreen = document.getElementById('splash-screen')\r\n if (splashScreen) {\r\n splashScreen.style.setProperty('display', 'flex')\r\n }\r\n}\r\n\r\nconst disableSplashScreen = () => {\r\n const splashScreen = document.getElementById('splash-screen')\r\n if (splashScreen) {\r\n splashScreen.style.setProperty('display', 'none')\r\n }\r\n}\r\n\r\nconst LayoutProvider: React.FC = ({children}) => {\r\n const [config, setConfig] = useState(LayoutSetup.config)\r\n const [classes, setClasses] = useState(LayoutSetup.classes)\r\n const [attributes, setAttributes] = useState(LayoutSetup.attributes)\r\n const [cssVariables, setCSSVariables] = useState(LayoutSetup.cssVariables)\r\n const setLayout = (_themeConfig: Partial) => {\r\n enableSplashScreen()\r\n const bodyClasses = Array.from(document.body.classList)\r\n bodyClasses.forEach((cl) => document.body.classList.remove(cl))\r\n LayoutSetup.updatePartialConfig(_themeConfig)\r\n setConfig(Object.assign({}, LayoutSetup.config))\r\n setClasses(LayoutSetup.classes)\r\n setAttributes(LayoutSetup.attributes)\r\n setCSSVariables(LayoutSetup.cssVariables)\r\n setTimeout(() => {\r\n disableSplashScreen()\r\n }, 500)\r\n }\r\n const value: LayoutContextModel = {\r\n config,\r\n classes,\r\n attributes,\r\n cssVariables,\r\n setLayout,\r\n }\r\n\r\n useEffect(() => {\r\n disableSplashScreen()\r\n }, [])\r\n\r\n return {children}\r\n}\r\n\r\nexport {LayoutContext, LayoutProvider}\r\n\r\nexport function useLayout() {\r\n return useContext(LayoutContext)\r\n}\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, {FC, createContext, useContext, useEffect, useState} from 'react'\r\n\r\nexport interface PageLink {\r\n title: string\r\n path: string\r\n isActive: boolean\r\n isSeparator?: boolean\r\n}\r\n\r\nexport interface PageDataContextModel {\r\n pageTitle?: string\r\n setPageTitle: (_title: string) => void\r\n pageDescription?: string\r\n setPageDescription: (_description: string) => void\r\n pageBreadcrumbs?: Array\r\n setPageBreadcrumbs: (_breadcrumbs: Array) => void\r\n}\r\n\r\nconst PageDataContext = createContext({\r\n setPageTitle: (_title: string) => {},\r\n setPageBreadcrumbs: (_breadcrumbs: Array) => {},\r\n setPageDescription: (_description: string) => {},\r\n})\r\n\r\nconst PageDataProvider: React.FC = ({children}) => {\r\n const [pageTitle, setPageTitle] = useState('')\r\n const [pageDescription, setPageDescription] = useState('')\r\n const [pageBreadcrumbs, setPageBreadcrumbs] = useState>([])\r\n const value: PageDataContextModel = {\r\n pageTitle,\r\n setPageTitle,\r\n pageDescription,\r\n setPageDescription,\r\n pageBreadcrumbs,\r\n setPageBreadcrumbs,\r\n }\r\n return {children}\r\n}\r\n\r\nfunction usePageData() {\r\n return useContext(PageDataContext)\r\n}\r\n\r\ntype Props = {\r\n description?: string\r\n breadcrumbs?: Array\r\n}\r\n\r\nconst PageTitle: FC = ({children, description, breadcrumbs}) => {\r\n const {setPageTitle, setPageDescription, setPageBreadcrumbs} = usePageData()\r\n useEffect(() => {\r\n if (children) {\r\n setPageTitle(children.toString())\r\n }\r\n return () => {\r\n setPageTitle('')\r\n }\r\n }, [children])\r\n\r\n useEffect(() => {\r\n if (description) {\r\n setPageDescription(description)\r\n }\r\n return () => {\r\n setPageDescription('')\r\n }\r\n }, [description])\r\n\r\n useEffect(() => {\r\n if (breadcrumbs) {\r\n setPageBreadcrumbs(breadcrumbs)\r\n }\r\n return () => {\r\n setPageBreadcrumbs([])\r\n }\r\n }, [breadcrumbs])\r\n\r\n return <>\r\n}\r\n\r\nconst PageDescription: React.FC = ({children}) => {\r\n const {setPageDescription} = usePageData()\r\n useEffect(() => {\r\n if (children) {\r\n setPageDescription(children.toString())\r\n }\r\n return () => {\r\n setPageDescription('')\r\n }\r\n }, [children])\r\n return <>\r\n}\r\n\r\nexport {PageDescription, PageTitle, PageDataProvider, usePageData}\r\n","import React, {\r\n FC,\r\n createContext,\r\n useContext,\r\n useState,\r\n useEffect,\r\n SetStateAction,\r\n Dispatch,\r\n} from 'react'\r\n\r\nconst MetronicSplashScreenContext = createContext> | undefined>(\r\n undefined\r\n)\r\n\r\nconst MetronicSplashScreenProvider: FC = ({children}) => {\r\n const [count, setCount] = useState(0)\r\n let visible = count > 0\r\n\r\n useEffect(() => {\r\n const splashScreen = document.getElementById('splash-screen')\r\n\r\n // Show SplashScreen\r\n if (splashScreen && visible) {\r\n splashScreen.classList.remove('hidden')\r\n\r\n return () => {\r\n splashScreen.classList.add('hidden')\r\n }\r\n }\r\n\r\n // Hide SplashScreen\r\n let timeout: number\r\n if (splashScreen && !visible) {\r\n timeout = window.setTimeout(() => {\r\n splashScreen.classList.add('hidden')\r\n }, 3000)\r\n }\r\n\r\n return () => {\r\n clearTimeout(timeout)\r\n }\r\n }, [visible])\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nconst LayoutSplashScreen: FC<{visible?: boolean}> = ({visible = true}) => {\r\n // Everything are ready - remove splashscreen\r\n const setCount = useContext(MetronicSplashScreenContext)\r\n\r\n useEffect(() => {\r\n if (!visible) {\r\n return\r\n }\r\n\r\n if (setCount) {\r\n setCount((prev) => {\r\n return prev + 1\r\n })\r\n }\r\n\r\n return () => {\r\n if (setCount) {\r\n setCount((prev) => {\r\n return prev - 1\r\n })\r\n }\r\n }\r\n }, [setCount, visible])\r\n\r\n return null\r\n}\r\n\r\nexport {MetronicSplashScreenProvider, LayoutSplashScreen}\r\n","import React from 'react'\r\nimport clsx from 'clsx'\r\nimport {Link} from 'react-router-dom'\r\nimport {useLocation} from 'react-router'\r\nimport {checkIsActive, KTSVG} from '../../../helpers'\r\nimport {useLayout} from '../../core'\r\n\r\ntype Props = {\r\n to: string\r\n title: string\r\n icon?: string\r\n fontIcon?: string\r\n hasBullet?: boolean\r\n}\r\n\r\nconst AsideMenuItem: React.FC = ({\r\n children,\r\n to,\r\n title,\r\n icon,\r\n fontIcon,\r\n hasBullet = false,\r\n}) => {\r\n const {pathname} = useLocation()\r\n const isActive = checkIsActive(pathname, to)\r\n const {config} = useLayout()\r\n const {aside} = config\r\n\r\n return (\r\n
\r\n \r\n {hasBullet && (\r\n \r\n \r\n \r\n )}\r\n {icon && aside.menuIcon === 'svg' && (\r\n \r\n \r\n \r\n )}\r\n {fontIcon && aside.menuIcon === 'font' && }\r\n {title}\r\n \r\n {children}\r\n
\r\n )\r\n}\r\n\r\nexport {AsideMenuItem}\r\n","export function getCurrentUrl(pathname: string) {\r\n return pathname.split(/[?#]/)[0]\r\n}\r\n\r\nexport function checkIsActive(pathname: string, url: string) {\r\n const current = getCurrentUrl(pathname)\r\n if (!current || !url) {\r\n return false\r\n }\r\n\r\n if (current === url) {\r\n return true\r\n }\r\n\r\n if (current.indexOf(url) > -1) {\r\n return true\r\n }\r\n\r\n return false\r\n}\r\n","/* eslint-disable react/jsx-no-target-blank */\r\nimport React from 'react'\r\nimport {useIntl} from 'react-intl'\r\nimport {KTSVG} from '../../../helpers'\r\nimport {AsideMenuItemWithSub} from './AsideMenuItemWithSub'\r\nimport {AsideMenuItem} from './AsideMenuItem'\r\nimport { Link } from 'react-router-dom'\r\n\r\nexport function AsideMenuMain() {\r\n const intl = useIntl()\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {/* */}\r\n {/*
\r\n
\r\n Crafted\r\n
\r\n
*/}\r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n */}\r\n {/* \r\n \r\n \r\n */}\r\n {/* \r\n \r\n \r\n */}\r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n \r\n */}\r\n {/*
\r\n
\r\n Apps\r\n
\r\n
*/}\r\n {/* \r\n \r\n \r\n \r\n */}\r\n {/*
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n Changelog {process.env.REACT_APP_VERSION}\r\n \r\n
*/}\r\n \r\n )\r\n}\r\n","/* 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","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 {\r\n const map = new Map(Object.entries(obj))\r\n if (obj.hasOwnProperty(key) && map) {\r\n return map.get(key)\r\n }\r\n}\r\n\r\n/**\r\n * Generates unique ID for give prefix.\r\n * @param {string} prefix Prefix for generated ID\r\n * @returns {boolean}\r\n */\r\nfunction getUniqueIdWithPrefix(prefix: string | undefined): string {\r\n const result = Math.floor(Math.random() * new Date().getTime()).toString()\r\n if (!prefix) {\r\n return result\r\n }\r\n\r\n return `${prefix}${result}`\r\n}\r\n\r\n/* eslint-disable no-useless-escape */\r\nfunction stringSnakeToCamel(str: string): string {\r\n return str.replace(/(\\-\\w)/g, function (m) {\r\n return m[1].toUpperCase()\r\n })\r\n}\r\n\r\nfunction toJSON(value: string | JSON): JSON | undefined {\r\n if (typeof value !== 'string') {\r\n return value\r\n }\r\n\r\n if (!value) {\r\n return undefined\r\n }\r\n\r\n // (\"'\" => \"\\\"\");\r\n const result = value\r\n .toString()\r\n .split('')\r\n .map((el) => (el !== \"'\" ? el : '\"'))\r\n .join('')\r\n var jsonStr = result.replace(/(\\w+:)|(\\w+ :)/g, function (matched) {\r\n return '\"' + matched.substring(0, matched.length - 1) + '\":'\r\n })\r\n try {\r\n return JSON.parse(jsonStr)\r\n } catch {\r\n return undefined\r\n }\r\n}\r\n\r\nexport {getObjectPropertyValueByKey, getUniqueIdWithPrefix, stringSnakeToCamel, toJSON}\r\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'\r\nimport {ViewPortModel} from './models/ViewPortModel'\r\nimport {ElementStyleUtil} from './_ElementStyleUtil'\r\nimport {DataUtil} from './_DataUtil'\r\nimport {ElementAnimateUtil} from './ElementAnimateUtil'\r\nimport {getObjectPropertyValueByKey, toJSON} from './_TypesHelpers'\r\n\r\nfunction getCSS(el: HTMLElement, styleProp: string) {\r\n const defaultView = (el.ownerDocument || document).defaultView\r\n\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\nfunction getCSSVariableValue(variableName: string) {\r\n let hex = getComputedStyle(document.documentElement).getPropertyValue(variableName)\r\n if (hex && hex.length > 0) {\r\n hex = hex.trim()\r\n }\r\n\r\n return hex\r\n}\r\n\r\nfunction getElementActualCss(el: HTMLElement, prop: any, cache: boolean) {\r\n let css = ''\r\n\r\n if (!el.getAttribute('kt-hidden-' + prop) || cache === false) {\r\n let value\r\n\r\n // the element is hidden so:\r\n // making the el block so we can meassure its height but still be hidden\r\n css = el.style.cssText\r\n el.style.cssText = 'position: absolute; visibility: hidden; display: block;'\r\n\r\n if (prop === 'width') {\r\n value = el.offsetWidth\r\n } else if (prop === 'height') {\r\n value = el.offsetHeight\r\n }\r\n\r\n el.style.cssText = css\r\n\r\n // store it in cache\r\n if (value !== undefined) {\r\n el.setAttribute('kt-hidden-' + prop, value.toString())\r\n return parseFloat(value.toString())\r\n }\r\n return 0\r\n } else {\r\n // store it in cache\r\n const attributeValue = el.getAttribute('kt-hidden-' + prop)\r\n if (attributeValue || attributeValue === '0') {\r\n return parseFloat(attributeValue)\r\n }\r\n }\r\n}\r\n\r\nfunction getElementActualHeight(el: HTMLElement) {\r\n return getElementActualCss(el, 'height', false)\r\n}\r\n\r\nfunction getElementActualWidth(el: HTMLElement, cache?: boolean) {\r\n return getElementActualCss(el, 'width', false)\r\n}\r\n\r\nfunction getElementIndex(element: HTMLElement) {\r\n if (element.parentNode) {\r\n const c = element.parentNode.children\r\n for (let i = 0; i < c.length; i++) {\r\n if (c[i] === element) return i\r\n }\r\n }\r\n return -1\r\n}\r\n\r\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches\r\nfunction getElementMatches(element: HTMLElement, selector: string) {\r\n const p = Element.prototype\r\n const f = p.matches || p.webkitMatchesSelector\r\n\r\n if (element && element.tagName) {\r\n return f.call(element, selector)\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\nfunction getElementOffset(el: HTMLElement): OffsetModel {\r\n // Return zeros for disconnected and hidden (display: none) elements (gh-2310)\r\n // Support: IE <=11 only\r\n // Running getBoundingClientRect on a\r\n // disconnected node in IE throws an error\r\n if (!el.getClientRects().length) {\r\n return {top: 0, left: 0}\r\n }\r\n\r\n // Get document-relative position by adding viewport scroll to viewport-relative gBCR\r\n const rect = el.getBoundingClientRect()\r\n const win = el.ownerDocument.defaultView\r\n if (win) {\r\n return {\r\n top: rect.top + win.pageYOffset,\r\n left: rect.left + win.pageXOffset,\r\n }\r\n }\r\n\r\n return rect\r\n}\r\n\r\nfunction getElementParents(element: Element, selector: string) {\r\n // Element.matches() polyfill\r\n if (!Element.prototype.matches) {\r\n Element.prototype.matches = function (s) {\r\n const matches = (document || this.ownerDocument).querySelectorAll(s)\r\n let i = matches.length\r\n while (--i >= 0 && matches.item(i) !== this) {}\r\n return i > -1\r\n }\r\n }\r\n\r\n // Set up a parent array\r\n const parents = []\r\n\r\n let el: Element | null = element\r\n\r\n // Push each parent element to the array\r\n for (; el && el !== document.body; el = el.parentElement) {\r\n if (selector) {\r\n if (el.matches(selector)) {\r\n parents.push(el)\r\n }\r\n continue\r\n }\r\n parents.push(el)\r\n }\r\n\r\n // Return our parent array\r\n return parents\r\n}\r\n\r\nfunction getHighestZindex(el: HTMLElement) {\r\n let bufferNode: Node | null = el as Node\r\n let buffer = el\r\n while (bufferNode && bufferNode !== document) {\r\n // Ignore z-index if position is set to a value where z-index is ignored by the browser\r\n // This makes behavior of this function consistent across browsers\r\n // WebKit always returns auto if the element is positioned\r\n const position = buffer.style.getPropertyValue('position')\r\n if (position === 'absolute' || position === 'relative' || position === 'fixed') {\r\n // IE returns 0 when zIndex is not specified\r\n // other browsers return a string\r\n // we ignore the case of nested elements with an explicit value of 0\r\n //
\r\n const value = parseInt(buffer.style.getPropertyValue('z-index'))\r\n if (!isNaN(value) && value !== 0) {\r\n return value\r\n }\r\n }\r\n\r\n bufferNode = bufferNode.parentNode\r\n buffer = bufferNode as HTMLElement\r\n }\r\n return null\r\n}\r\n\r\nfunction getScrollTop(): number {\r\n return (document.scrollingElement || document.documentElement).scrollTop\r\n}\r\n\r\n// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth\r\nfunction getViewPort(): ViewPortModel {\r\n return {\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n }\r\n}\r\n\r\nfunction insertAfterElement(el: HTMLElement, referenceNode: HTMLElement) {\r\n return referenceNode.parentNode?.insertBefore(el, referenceNode.nextSibling)\r\n}\r\n\r\nfunction isElementHasClasses(element: HTMLElement, classesStr: string): boolean {\r\n const classes = classesStr.split(' ')\r\n for (let i = 0; i < classes.length; i++) {\r\n if (!element.classList.contains(classes[i])) {\r\n return false\r\n }\r\n }\r\n\r\n return true\r\n}\r\n\r\nfunction isVisibleElement(element: HTMLElement): boolean {\r\n return !(element.offsetWidth === 0 && element.offsetHeight === 0)\r\n}\r\n\r\n// Throttle function: Input as function which needs to be throttled and delay is the time interval in milliseconds\r\nfunction throttle(timer: number | undefined, func: Function, delay?: number) {\r\n // If setTimeout is already scheduled, no need to do anything\r\n if (timer) {\r\n return\r\n }\r\n\r\n // Schedule a setTimeout after delay seconds\r\n timer = window.setTimeout(function () {\r\n func()\r\n\r\n // Once setTimeout function execution is finished, timerId = undefined so that in
\r\n // the next scroll event function execution can be scheduled by the setTimeout\r\n timer = undefined\r\n }, delay)\r\n}\r\n\r\nfunction getElementChildren(element: HTMLElement, selector: string): Array | null {\r\n if (!element || !element.childNodes) {\r\n return null\r\n }\r\n\r\n const result: Array = []\r\n for (let i = 0; i < element.childNodes.length; i++) {\r\n const child = element.childNodes[i]\r\n // child.nodeType == 1 => Element, Text, Comment, ProcessingInstruction, CDATASection, EntityReference\r\n if (child.nodeType === 1 && getElementMatches(child as HTMLElement, selector)) {\r\n result.push(child as HTMLElement)\r\n }\r\n }\r\n\r\n return result\r\n}\r\n\r\nfunction getElementChild(element: HTMLElement, selector: string): HTMLElement | null {\r\n const children = getElementChildren(element, selector)\r\n return children ? children[0] : null\r\n}\r\n\r\nfunction isMobileDevice(): boolean {\r\n let test = getViewPort().width < +getBreakpoint('lg') ? true : false\r\n\r\n if (test === false) {\r\n // For use within normal web clients\r\n test = navigator.userAgent.match(/iPad/i) != null\r\n }\r\n\r\n return test\r\n}\r\n\r\nfunction slide(el: HTMLElement, dir: string, speed: number, callback: any) {\r\n if (\r\n !el ||\r\n (dir === 'up' && isVisibleElement(el) === false) ||\r\n (dir === 'down' && isVisibleElement(el) === true)\r\n ) {\r\n return\r\n }\r\n\r\n speed = speed ? speed : 600\r\n let calcHeight = getElementActualHeight(el)\r\n let calcPaddingTop: number = 0\r\n let calcPaddingBottom: number = 0\r\n\r\n if (ElementStyleUtil.get(el, 'padding-top') && DataUtil.get(el, 'slide-padding-top') !== true) {\r\n DataUtil.set(el, 'slide-padding-top', ElementStyleUtil.get(el, 'padding-top'))\r\n }\r\n\r\n if (\r\n ElementStyleUtil.get(el, 'padding-bottom') &&\r\n DataUtil.has(el, 'slide-padding-bottom') !== true\r\n ) {\r\n DataUtil.set(el, 'slide-padding-bottom', ElementStyleUtil.get(el, 'padding-bottom'))\r\n }\r\n\r\n if (DataUtil.has(el, 'slide-padding-top')) {\r\n calcPaddingTop = parseInt(DataUtil.get(el, 'slide-padding-top'))\r\n }\r\n\r\n if (DataUtil.has(el, 'slide-padding-bottom')) {\r\n calcPaddingBottom = parseInt(DataUtil.get(el, 'slide-padding-bottom'))\r\n }\r\n\r\n if (dir === 'up') {\r\n // up\r\n el.style.cssText = 'display: block; overflow: hidden;'\r\n\r\n if (calcPaddingTop) {\r\n ElementAnimateUtil.animate(0, calcPaddingTop, speed, function (value: number) {\r\n el.style.paddingTop = calcPaddingTop - value + 'px'\r\n })\r\n }\r\n\r\n if (calcPaddingBottom) {\r\n ElementAnimateUtil.animate(0, calcPaddingBottom, speed, function (value: number) {\r\n el.style.paddingBottom = calcPaddingBottom - value + 'px'\r\n })\r\n }\r\n\r\n ElementAnimateUtil.animate(\r\n 0,\r\n calcHeight || 0,\r\n speed,\r\n function (value: number) {\r\n el.style.height = (calcHeight || 0) - value + 'px'\r\n },\r\n function () {\r\n el.style.height = ''\r\n el.style.display = 'none'\r\n\r\n if (typeof callback === 'function') {\r\n callback()\r\n }\r\n }\r\n )\r\n } else if (dir === 'down') {\r\n // down\r\n el.style.cssText = 'display: block; overflow: hidden;'\r\n\r\n if (calcPaddingTop) {\r\n ElementAnimateUtil.animate(\r\n 0,\r\n calcPaddingTop,\r\n speed,\r\n function (value: number) {\r\n //\r\n el.style.paddingTop = value + 'px'\r\n },\r\n function () {\r\n el.style.paddingTop = ''\r\n }\r\n )\r\n }\r\n\r\n if (calcPaddingBottom) {\r\n ElementAnimateUtil.animate(\r\n 0,\r\n calcPaddingBottom,\r\n speed,\r\n function (value: number) {\r\n el.style.paddingBottom = value + 'px'\r\n },\r\n function () {\r\n el.style.paddingBottom = ''\r\n }\r\n )\r\n }\r\n\r\n ElementAnimateUtil.animate(\r\n 0,\r\n calcHeight || 0,\r\n speed,\r\n function (value: number) {\r\n el.style.height = value + 'px'\r\n },\r\n function () {\r\n el.style.height = ''\r\n el.style.display = ''\r\n el.style.overflow = ''\r\n\r\n if (typeof callback === 'function') {\r\n callback()\r\n }\r\n }\r\n )\r\n }\r\n}\r\n\r\nfunction slideUp(el: HTMLElement, speed: number, callback: any) {\r\n slide(el, 'up', speed, callback)\r\n}\r\n\r\nfunction slideDown(el: HTMLElement, speed: number, callback: any) {\r\n slide(el, 'down', speed, callback)\r\n}\r\n\r\nfunction getBreakpoint(breakpoint: string) {\r\n let value: number | string = getCSSVariableValue('--bs-' + breakpoint)\r\n if (value) {\r\n value = parseInt(value.trim())\r\n }\r\n\r\n return value\r\n}\r\n\r\nfunction getAttributeValueByBreakpoint(incomingAttr: string): string | JSON {\r\n let value = toJSON(incomingAttr)\r\n if (typeof value !== 'object') {\r\n return incomingAttr\r\n }\r\n\r\n const width = getViewPort().width\r\n let resultKey\r\n let resultBreakpoint = -1\r\n let breakpoint\r\n\r\n for (let key in value) {\r\n if (key === 'default') {\r\n breakpoint = 0\r\n } else {\r\n breakpoint = getBreakpoint(key) ? +getBreakpoint(key) : parseInt(key)\r\n }\r\n\r\n if (breakpoint <= width && breakpoint > resultBreakpoint) {\r\n resultKey = key\r\n resultBreakpoint = breakpoint\r\n }\r\n }\r\n\r\n return resultKey ? getObjectPropertyValueByKey(value, resultKey) : value\r\n}\r\n\r\nfunction colorLighten(color: string, amount: number) {\r\n const addLight = (_color: string, _amount: number) => {\r\n const cc = parseInt(_color, 16) + _amount\r\n const cNum = cc > 255 ? 255 : cc\r\n const c = cNum.toString(16).length > 1 ? cNum.toString(16) : `0${cNum.toString(16)}`\r\n return c\r\n }\r\n\r\n color = color.indexOf('#') >= 0 ? color.substring(1, color.length) : color\r\n amount = parseInt(((255 * amount) / 100).toString())\r\n return (color = `#${addLight(color.substring(0, 2), amount)}${addLight(\r\n color.substring(2, 4),\r\n amount\r\n )}${addLight(color.substring(4, 6), amount)}`)\r\n}\r\n\r\nfunction colorDarken(color: string, amount: number) {\r\n const subtractLight = (_color: string, _amount: number) => {\r\n const cc = parseInt(color, 16) - amount\r\n const cNum = cc < 0 ? 0 : cc\r\n const c = cNum.toString(16).length > 1 ? cNum.toString(16) : `0${cNum.toString(16)}`\r\n return c\r\n }\r\n\r\n color = color.indexOf('#') >= 0 ? color.substring(1, color.length) : color\r\n amount = parseInt(((255 * amount) / 100).toString())\r\n\r\n return (color = `#${subtractLight(color.substring(0, 2), amount)}${subtractLight(\r\n color.substring(2, 4),\r\n amount\r\n )}${subtractLight(color.substring(4, 6), amount)}`)\r\n}\r\n\r\nexport {\r\n getBreakpoint,\r\n getCSS,\r\n getCSSVariableValue,\r\n getElementActualCss,\r\n getElementActualHeight,\r\n getElementActualWidth,\r\n getElementIndex,\r\n getElementMatches,\r\n getElementOffset,\r\n getElementParents,\r\n getHighestZindex,\r\n getScrollTop,\r\n getViewPort,\r\n insertAfterElement,\r\n isElementHasClasses,\r\n isVisibleElement,\r\n throttle,\r\n getElementChildren,\r\n getElementChild,\r\n isMobileDevice,\r\n slide,\r\n slideUp,\r\n slideDown,\r\n getAttributeValueByBreakpoint,\r\n colorLighten,\r\n colorDarken,\r\n}\r\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 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","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 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","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 {\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","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","/* eslint-disable array-callback-return */\r\n/* eslint-disable no-useless-escape */\r\nimport {DataUtil} from '../_utils/index'\r\n\r\nexport interface IPasswordMeterOptions {\r\n minLength: number\r\n checkUppercase: boolean\r\n checkLowercase: boolean\r\n checkDigit: boolean\r\n checkChar: boolean\r\n scoreHighlightClass: string\r\n}\r\n\r\nexport interface IPasswordMeterQueries {\r\n componentName: string\r\n instanseQuery: string\r\n inputQuery: string\r\n visibilityQuery: string\r\n highlightQuery: string\r\n}\r\n\r\nconst defaultPasswordMeterOptions = {\r\n minLength: 8,\r\n checkUppercase: true,\r\n checkLowercase: true,\r\n checkDigit: true,\r\n checkChar: true,\r\n scoreHighlightClass: 'active',\r\n}\r\n\r\nconst defaultPasswordMeterQueires: IPasswordMeterQueries = {\r\n componentName: 'password-meter',\r\n instanseQuery: '[data-kt-password-meter]',\r\n inputQuery: 'input[type]',\r\n visibilityQuery: '[data-kt-password-meter-control=\"visibility\"]',\r\n highlightQuery: '[data-kt-password-meter-control=\"highlight\"]',\r\n}\r\n\r\nclass PasswordMeterComponent {\r\n element: HTMLElement\r\n inputElement: HTMLInputElement | null\r\n visibilityElement: HTMLElement | null\r\n highlightElement: HTMLElement | null\r\n options: IPasswordMeterOptions\r\n queries: IPasswordMeterQueries\r\n score: number\r\n checkSteps: number\r\n\r\n constructor(\r\n _element: HTMLElement,\r\n _options: IPasswordMeterOptions,\r\n _queries: IPasswordMeterQueries\r\n ) {\r\n this.element = _element\r\n this.options = Object.assign(defaultPasswordMeterOptions, _options)\r\n this.queries = _queries\r\n this.score = 0\r\n this.checkSteps = 5\r\n\r\n // Elements\r\n this.inputElement = this.element.querySelector(this.queries.inputQuery)\r\n this.visibilityElement = this.element.querySelector(this.queries.visibilityQuery)\r\n this.highlightElement = this.element.querySelector(this.queries.highlightQuery)\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 if (this.inputElement) {\r\n this.inputElement.addEventListener('input', () => {\r\n this.check()\r\n })\r\n }\r\n\r\n if (this.visibilityElement) {\r\n this.visibilityElement.addEventListener('click', () => {\r\n this.visitbility()\r\n })\r\n }\r\n }\r\n\r\n private visitbility() {\r\n if (this.visibilityElement && this.inputElement) {\r\n const visibleIcon = this.visibilityElement.querySelector(\r\n 'i:not(.d-none), .svg-icon:not(.d-none)'\r\n )\r\n\r\n const hiddenIcon = this.visibilityElement.querySelector('i.d-none, .svg-icon.d-none')\r\n\r\n const typeAttr = this.inputElement.getAttribute('type') || ''\r\n\r\n if (typeAttr === 'password') {\r\n this.inputElement.setAttribute('type', 'text')\r\n } else {\r\n this.inputElement.setAttribute('type', 'password')\r\n }\r\n\r\n visibleIcon?.classList.add('d-none')\r\n hiddenIcon?.classList.remove('d-none')\r\n\r\n this.inputElement.focus()\r\n }\r\n }\r\n\r\n private checkScore(): number {\r\n return 0\r\n }\r\n\r\n private checkLength(): boolean {\r\n if (this.inputElement) {\r\n return this.inputElement.value.length >= this.options.minLength // 20 score\r\n }\r\n\r\n return false\r\n }\r\n\r\n private checkLowerCase(): boolean {\r\n const val = this.inputElement ? this.inputElement.value : ''\r\n return /[a-z]/.test(val) // 20 score\r\n }\r\n\r\n private checkUppercase(): boolean {\r\n const val = this.inputElement ? this.inputElement.value : ''\r\n return /[A-Z]/.test(val) // 20 score\r\n }\r\n\r\n private checkDigit(): boolean {\r\n const val = this.inputElement ? this.inputElement.value : ''\r\n return /[0-9]/.test(val) // 20 score\r\n }\r\n\r\n private checkChar(): boolean {\r\n const val = this.inputElement ? this.inputElement.value : ''\r\n return /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g.test(val) // 20 score\r\n }\r\n\r\n private getCheckScore(): number {\r\n let count = 1\r\n if (this.options.checkUppercase) {\r\n count++\r\n }\r\n\r\n if (this.options.checkLowercase) {\r\n count++\r\n }\r\n\r\n if (this.options.checkDigit) {\r\n count++\r\n }\r\n\r\n if (this.options.checkChar) {\r\n count++\r\n }\r\n\r\n this.checkSteps = count\r\n return 100 / this.checkSteps\r\n }\r\n\r\n private highlight() {\r\n const items = this.highlightElement\r\n ? [].slice.call(this.highlightElement.querySelectorAll('div'))\r\n : []\r\n const total = items.length\r\n let index = 0\r\n const checkScore = this.getCheckScore()\r\n const score = this.getScore()\r\n\r\n items.map((item: HTMLElement) => {\r\n index++\r\n if (checkScore * index * (this.checkSteps / total) <= score) {\r\n item.classList.add('active')\r\n } else {\r\n item.classList.remove('active')\r\n }\r\n })\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n public reset = () => {\r\n this.score = 0\r\n this.highlight()\r\n }\r\n\r\n public getScore() {\r\n return this.score\r\n }\r\n\r\n public check() {\r\n let score = 0\r\n const checkScore = this.checkScore()\r\n if (this.checkLength()) {\r\n score = score + checkScore\r\n }\r\n\r\n if (this.options.checkUppercase && this.checkLowerCase()) {\r\n score = score + checkScore\r\n }\r\n\r\n if (this.options.checkLowercase && this.checkUppercase()) {\r\n score = score + checkScore\r\n }\r\n\r\n if (this.options.checkDigit && this.checkDigit()) {\r\n score = score + checkScore\r\n }\r\n\r\n if (this.options.checkChar && this.checkChar()) {\r\n score = score + checkScore\r\n }\r\n\r\n this.score = score\r\n this.highlight()\r\n }\r\n\r\n // Static methods\r\n public static getInstance = (\r\n el: HTMLElement,\r\n componentName: string = defaultPasswordMeterQueires.componentName\r\n ) => {\r\n const passwordMeter = DataUtil.get(el, componentName)\r\n if (passwordMeter) {\r\n return passwordMeter\r\n }\r\n\r\n return null\r\n }\r\n\r\n public static createInstances = (\r\n selector: string = defaultPasswordMeterQueires.instanseQuery,\r\n options: IPasswordMeterOptions = defaultPasswordMeterOptions,\r\n queries: IPasswordMeterQueries = defaultPasswordMeterQueires\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 passwordMeter = PasswordMeterComponent.getInstance(item)\r\n if (!passwordMeter) {\r\n passwordMeter = new PasswordMeterComponent(item, options, queries)\r\n }\r\n })\r\n }\r\n\r\n public static createInsance = (\r\n selector: string = defaultPasswordMeterQueires.instanseQuery,\r\n options: IPasswordMeterOptions = defaultPasswordMeterOptions,\r\n queries: IPasswordMeterQueries = defaultPasswordMeterQueires\r\n ): PasswordMeterComponent | 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 passwordMeter = PasswordMeterComponent.getInstance(item)\r\n if (!passwordMeter) {\r\n passwordMeter = new PasswordMeterComponent(item, options, queries)\r\n }\r\n return passwordMeter\r\n }\r\n\r\n public static bootstrap = (selector: string = defaultPasswordMeterQueires.instanseQuery) => {\r\n PasswordMeterComponent.createInstances(selector)\r\n }\r\n\r\n public static reinitialization = (\r\n selector: string = defaultPasswordMeterQueires.instanseQuery\r\n ) => {\r\n PasswordMeterComponent.createInstances(selector)\r\n }\r\n}\r\nexport {PasswordMeterComponent, defaultPasswordMeterOptions, defaultPasswordMeterQueires}\r\n","import {\r\n DataUtil,\r\n getAttributeValueByBreakpoint,\r\n stringSnakeToCamel,\r\n getObjectPropertyValueByKey,\r\n EventHandlerUtil,\r\n throttle,\r\n} from '../_utils/index'\r\n\r\nexport interface IPlaceOptions {\r\n mode: string\r\n}\r\n\r\nexport interface IPlaceQueries {\r\n componentName: string\r\n instanseQuery: string\r\n attrQuery: string\r\n}\r\n\r\nconst defaultPlaceOptions: IPlaceOptions = {\r\n mode: 'append',\r\n}\r\n\r\nconst defaultPlaceQueires: IPlaceQueries = {\r\n componentName: 'place',\r\n instanseQuery: '[data-kt-place=\"true\"]',\r\n attrQuery: 'data-kt-place-',\r\n}\r\n\r\nclass PlaceComponent {\r\n element: HTMLElement\r\n options: IPlaceOptions\r\n queries: IPlaceQueries\r\n\r\n constructor(_element: HTMLElement, _options: IPlaceOptions, _queries: IPlaceQueries) {\r\n this.element = _element\r\n this.options = Object.assign(defaultPlaceOptions, _options)\r\n this.queries = _queries\r\n\r\n // Initial update\r\n this.update()\r\n\r\n DataUtil.set(this.element, this.queries.componentName, this)\r\n }\r\n\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 if (attr != 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 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 ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n public update = () => {\r\n const parentSelector = this.getOption('parent')?.toString()\r\n const mode = this.getOption('mode')\r\n const parentElement = parentSelector ? document.querySelector(parentSelector) : null\r\n\r\n if (parentElement && this.element.parentNode !== parentElement) {\r\n if (mode === 'prepend') {\r\n parentElement.prepend(this.element)\r\n } else if (mode === 'append') {\r\n parentElement.append(this.element)\r\n }\r\n }\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 = defaultPlaceQueires.componentName\r\n ): PlaceComponent | null => {\r\n const place = DataUtil.get(el, componentName)\r\n if (place) {\r\n return place as PlaceComponent\r\n }\r\n\r\n return null\r\n }\r\n\r\n public static createInstances = (\r\n selector: string = defaultPlaceQueires.instanseQuery,\r\n options: IPlaceOptions = defaultPlaceOptions,\r\n queries: IPlaceQueries = defaultPlaceQueires\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 place = PlaceComponent.getInstance(item)\r\n if (!place) {\r\n place = new PlaceComponent(item, options, queries)\r\n }\r\n })\r\n }\r\n\r\n public static createInsance = (\r\n selector: string = defaultPlaceQueires.instanseQuery,\r\n options: IPlaceOptions = defaultPlaceOptions,\r\n queries: IPlaceQueries = defaultPlaceQueires\r\n ): PlaceComponent | 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 place = PlaceComponent.getInstance(item)\r\n if (!place) {\r\n place = new PlaceComponent(item, options, queries)\r\n }\r\n return place\r\n }\r\n\r\n public static bootstrap = (selector: string = defaultPlaceQueires.instanseQuery) => {\r\n PlaceComponent.createInstances(selector)\r\n }\r\n\r\n public static reinitialization = (selector: string = defaultPlaceQueires.instanseQuery) => {\r\n PlaceComponent.createInstances(selector)\r\n }\r\n}\r\n\r\n// Window resize handler\r\nwindow.addEventListener('resize', function () {\r\n let timer\r\n\r\n throttle(\r\n timer,\r\n () => {\r\n // Locate and update Offcanvas instances on window resize\r\n const elements = document.querySelectorAll(defaultPlaceQueires.instanseQuery)\r\n elements.forEach((el) => {\r\n const place = PlaceComponent.getInstance(el as HTMLElement)\r\n if (place) {\r\n place.update()\r\n }\r\n })\r\n },\r\n 200\r\n )\r\n})\r\n\r\nexport {PlaceComponent, defaultPlaceOptions, defaultPlaceQueires}\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 = 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 = []\r\n let parent\r\n let i = 0\r\n let buffer = 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\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 = []\r\n let child\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","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","import React, {useRef, useEffect} from 'react'\r\nimport {useLocation} from 'react-router'\r\nimport clsx from 'clsx'\r\nimport {AsideMenuMain} from './AsideMenuMain'\r\nimport {\r\n DrawerComponent,\r\n MenuComponent,\r\n ScrollComponent,\r\n ToggleComponent,\r\n} from '../../../assets/ts/components'\r\n\r\ntype Props = {\r\n asideMenuCSSClasses: string[]\r\n}\r\n\r\nconst AsideMenu: React.FC = ({asideMenuCSSClasses}) => {\r\n const scrollRef = useRef(null)\r\n const {pathname} = useLocation()\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n MenuComponent.reinitialization()\r\n DrawerComponent.reinitialization()\r\n ToggleComponent.reinitialization()\r\n ScrollComponent.reinitialization()\r\n if (scrollRef.current) {\r\n scrollRef.current.scrollTop = 0\r\n }\r\n }, 50)\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [pathname])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport {AsideMenu}\r\n","/* eslint-disable react/jsx-no-target-blank */\r\n/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, {FC} from 'react'\r\nimport {Link} from 'react-router-dom'\r\nimport clsx from 'clsx'\r\nimport {useLayout} from '../../core'\r\nimport {KTSVG, toAbsoluteUrl} from '../../../helpers'\r\nimport {AsideMenu} from './AsideMenu'\r\n\r\nconst AsideDefault: FC = () => {\r\n const {config, classes} = useLayout()\r\n const {aside} = config\r\n\r\n return (\r\n \r\n {/* begin::Brand */}\r\n \r\n )}\r\n {/* end::Aside toggler */}\r\n \r\n {/* end::Brand */}\r\n\r\n {/* begin::Aside menu */}\r\n
\r\n \r\n
\r\n {/* end::Aside menu */}\r\n\r\n \r\n )\r\n}\r\n\r\nexport {AsideDefault}\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport {FC} from 'react'\r\nimport {useLayout} from '../core'\r\n\r\nconst Footer: FC = () => {\r\n const {classes} = useLayout()\r\n return (\r\n \r\n {/* end::Container */}\r\n \r\n )\r\n}\r\n\r\nexport {Footer}\r\n","import React from 'react'\r\nimport {MenuItem} from './MenuItem'\r\nimport {MenuInnerWithSub} from './MenuInnerWithSub'\r\nimport {MegaMenu} from './MegaMenu'\r\nimport {useIntl} from 'react-intl'\r\n\r\nexport function MenuInner() {\r\n const intl = useIntl()\r\n return (\r\n <>\r\n {/* */}\r\n {/* */}\r\n \r\n \r\n )\r\n}\r\n","import React, {FC} from 'react'\r\nimport {MenuInner} from './MenuInner'\r\n\r\nconst Header: FC = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport {Header}\r\n","import clsx from 'clsx'\r\nimport React, {FC} from 'react'\r\nimport {Link} from 'react-router-dom'\r\nimport {useLayout} from '../../../core/LayoutProvider'\r\nimport {usePageData} from '../../../core/PageData'\r\n\r\nconst DefaultTitle: FC = () => {\r\n const {pageTitle, pageDescription, pageBreadcrumbs} = usePageData()\r\n const {config, attributes, classes} = useLayout()\r\n return (\r\n \r\n {/* begin::Title */}\r\n {pageTitle && (\r\n

\r\n {pageTitle}\r\n {pageDescription && config.pageTitle && config.pageTitle.description && (\r\n <>\r\n \r\n {pageDescription}\r\n \r\n )}\r\n

\r\n )}\r\n {/* end::Title */}\r\n\r\n {pageBreadcrumbs &&\r\n pageBreadcrumbs.length > 0 &&\r\n config.pageTitle &&\r\n config.pageTitle.breadCrumbs && (\r\n <>\r\n {config.pageTitle.direction === 'row' && (\r\n \r\n )}\r\n
    \r\n {Array.from(pageBreadcrumbs).map((item, index) => (\r\n \r\n {!item.isSeparator ? (\r\n \r\n {item.title}\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n ))}\r\n
  • {pageTitle}
  • \r\n
\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport {DefaultTitle}\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport {FC} from 'react'\r\nimport {shallowEqual, useSelector} from 'react-redux'\r\nimport {Link} from 'react-router-dom'\r\nimport {UserModel} from '../../../../app/modules/auth/models/UserModel'\r\nimport {RootState} from '../../../../setup'\r\nimport AuthService from '../../../../app/modules/auth/redux/AuthService'\r\n\r\nconst HeaderUserMenu: FC = () => {\r\n const user: UserModel = AuthService.GetCurrentUser() != null ? JSON.parse(AuthService.GetCurrentUser()) : null;\r\n return (\r\n \r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n {user?.email}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n Sign Out\r\n \r\n
\r\n \r\n )\r\n}\r\n\r\nexport {HeaderUserMenu}\r\n","import {toAbsoluteUrl} from '../../../helpers'\r\n\r\nexport function FallbackView() {\r\n return (\r\n
\r\n Start logo\r\n Loading ...\r\n
\r\n )\r\n}\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, {FC, useEffect, useRef, useState} from 'react'\r\nimport {KTSVG, toAbsoluteUrl} from '../../../helpers'\r\nimport {Formik, Form, FormikValues, Field, ErrorMessage} from 'formik'\r\nimport * as Yup from 'yup'\r\nimport {StepperComponent} from '../../../assets/ts/components'\r\n\r\ninterface ICreateAccount {\r\n appName: string\r\n category: string\r\n framework: string\r\n dbName: string\r\n dbType: string\r\n nameOnCard: string\r\n cardNumber: string\r\n cardExpiryMonth: string\r\n cardExpiryYear: string\r\n cardCvv: string\r\n saveCard: string\r\n}\r\n\r\nconst inits: ICreateAccount = {\r\n appName: '',\r\n category: '1',\r\n framework: '1',\r\n dbName: '',\r\n dbType: '1',\r\n nameOnCard: 'Max Doe',\r\n cardNumber: '4111 1111 1111 1111',\r\n cardExpiryMonth: '1',\r\n cardExpiryYear: '2',\r\n cardCvv: '123',\r\n saveCard: '1',\r\n}\r\n\r\nconst createAppSchema = [\r\n Yup.object({\r\n appName: Yup.string().required().label('App name'),\r\n category: Yup.string().required().label('Category'),\r\n }),\r\n Yup.object({\r\n framework: Yup.string().required().label('Framework'),\r\n }),\r\n Yup.object({\r\n dbName: Yup.string().required().label('Database name'),\r\n dbType: Yup.string().required().label('Database engine'),\r\n }),\r\n Yup.object({\r\n nameOnCard: Yup.string().required().label('Name'),\r\n cardNumber: Yup.string().required().label('Card Number'),\r\n cardExpiryMonth: Yup.string().required().label('Expiration Month'),\r\n cardExpiryYear: Yup.string().required().label('Expiration Year'),\r\n cardCvv: Yup.string().required().label('CVV'),\r\n }),\r\n]\r\n\r\nconst Main: FC = () => {\r\n const stepperRef = useRef(null)\r\n const stepper = useRef(null)\r\n const [currentSchema, setCurrentSchema] = useState(createAppSchema[0])\r\n const [initValues] = useState(inits)\r\n\r\n const loadStepper = () => {\r\n stepper.current = StepperComponent.createInsance(stepperRef.current as HTMLDivElement)\r\n }\r\n\r\n const prevStep = () => {\r\n if (!stepper.current) {\r\n return\r\n }\r\n\r\n stepper.current.goPrev()\r\n\r\n setCurrentSchema(createAppSchema[stepper.current.currentStepIndex - 1])\r\n }\r\n\r\n const submitStep = (values: ICreateAccount, actions: FormikValues) => {\r\n if (!stepper.current) {\r\n return\r\n }\r\n\r\n setCurrentSchema(createAppSchema[stepper.current.currentStepIndex])\r\n\r\n if (stepper.current.currentStepIndex !== stepper.current.totatStepsNumber) {\r\n stepper.current.goNext()\r\n } else {\r\n stepper.current.goto(1)\r\n actions.resetForm()\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (!stepperRef.current) {\r\n return\r\n }\r\n\r\n loadStepper()\r\n }, [stepperRef])\r\n\r\n return (\r\n \r\n \r\n )\r\n}\r\n\r\nexport {Main}\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, {FC} from 'react'\r\nimport {KTSVG, toAbsoluteUrl} from '../../../helpers'\r\n\r\nconst InviteUsers: FC = () => {\r\n const users = [\r\n {\r\n avatar: '/media/avatars/150-1.jpg',\r\n name: 'Emma Smith',\r\n email: 'e.smith@kpmg.com.au',\r\n access: '1',\r\n },\r\n {\r\n state: 'danger',\r\n name: 'Melody Macy',\r\n email: 'melody@altbox.com',\r\n access: '1',\r\n },\r\n {\r\n avatar: '/media/avatars/150-2.jpg',\r\n name: 'Max Smith',\r\n email: 'max@kt.com',\r\n access: '3',\r\n },\r\n {\r\n avatar: '/media/avatars/150-2.jpg',\r\n name: 'Sean Bean',\r\n email: 'sean@dellito.com',\r\n access: '2',\r\n },\r\n {\r\n avatar: '/media/avatars/150-15.jpg',\r\n name: 'Brian Cox',\r\n email: 'brian@exchange.com',\r\n access: '3',\r\n },\r\n {\r\n state: 'warning',\r\n name: 'Mikaela Collins',\r\n email: 'mikaela@pexcom.com',\r\n access: '2',\r\n },\r\n {\r\n avatar: '/media/avatars/150-8.jpg',\r\n name: 'Francis Mitcham',\r\n email: 'f.mitcham@kpmg.com.au',\r\n access: '3',\r\n },\r\n {\r\n state: 'danger',\r\n name: 'Olivia Wild',\r\n email: 'olivia@corpmail.com',\r\n access: '2',\r\n },\r\n {\r\n state: 'info',\r\n name: 'Neil Owen',\r\n email: 'owen.neil@gmail.com',\r\n access: '1',\r\n },\r\n {\r\n avatar: '/media/avatars/150-6.jpg',\r\n name: 'Dan Wilson',\r\n email: 'dam@consilting.com',\r\n access: '3',\r\n },\r\n {\r\n state: 'danger',\r\n name: 'Emma Bold',\r\n email: 'emma@intenso.com',\r\n access: '2',\r\n },\r\n {\r\n avatar: '/media/avatars/150-7.jpg',\r\n name: 'Ana Crown',\r\n email: 'ana.cf@limtel.com',\r\n access: '1',\r\n },\r\n {\r\n state: 'primary',\r\n name: 'Robert Doe',\r\n email: 'robert@benko.com',\r\n access: '3',\r\n },\r\n {\r\n avatar: '/media/avatars/150-17.jpg',\r\n name: 'John Miller',\r\n email: 'miller@mapple.com',\r\n access: '3',\r\n },\r\n {\r\n state: 'success',\r\n name: 'Lucy Kunic',\r\n email: 'lucy.m@fentech.com',\r\n access: '2',\r\n },\r\n {\r\n avatar: '/media/avatars/150-10.jpg',\r\n name: 'Ethan Wilder',\r\n email: 'ethan@loop.com.au',\r\n access: '1',\r\n },\r\n {\r\n avatar: '/media/avatars/150-7.jpg',\r\n name: 'Ana Crown',\r\n email: 'ana.cf@limtel.com',\r\n access: '3',\r\n },\r\n ]\r\n\r\n return (\r\n \r\n \r\n )\r\n}\r\n\r\nexport {InviteUsers}\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, {FC, useState} from 'react'\r\nimport {KTSVG} from '../../../helpers'\r\n\r\nconst plans = [\r\n {\r\n title: 'Startup',\r\n subTitle: 'Best for startups',\r\n description: 'Optimal for 10+ team size and new startup',\r\n priceMonth: '39',\r\n priceAnnual: '399',\r\n default: true,\r\n custom: false,\r\n features: [\r\n {\r\n title: 'Up to 10 Active Users',\r\n supported: true,\r\n },\r\n {\r\n title: 'Up to 30 Project Integrations',\r\n supported: true,\r\n },\r\n {\r\n title: 'Analytics Module',\r\n supported: true,\r\n },\r\n {\r\n title: 'Finance Module',\r\n supported: false,\r\n },\r\n {\r\n title: 'Accounting Module',\r\n supported: false,\r\n },\r\n {\r\n title: 'Network Platform',\r\n supported: false,\r\n },\r\n {\r\n title: 'Unlimited Cloud Space',\r\n supported: false,\r\n },\r\n ],\r\n },\r\n\r\n {\r\n title: 'Advanced',\r\n subTitle: 'Best for 100+ team size',\r\n description: 'Optimal for 100+ team size and grown company',\r\n priceMonth: '339',\r\n priceAnnual: '3399',\r\n default: false,\r\n custom: false,\r\n features: [\r\n {\r\n title: 'Up to 10 Active Users',\r\n supported: true,\r\n },\r\n {\r\n title: 'Up to 30 Project Integrations',\r\n supported: true,\r\n },\r\n {\r\n title: 'Analytics Module',\r\n supported: true,\r\n },\r\n {\r\n title: 'Finance Module',\r\n supported: true,\r\n },\r\n {\r\n title: 'Accounting Module',\r\n supported: true,\r\n },\r\n {\r\n title: 'Network Platform',\r\n supported: false,\r\n },\r\n {\r\n title: 'Unlimited Cloud Space',\r\n supported: false,\r\n },\r\n ],\r\n },\r\n\r\n {\r\n title: 'Enterprise',\r\n subTitle: 'Best value for 1000+ team',\r\n description: 'Optimal for 1000+ team and enterpise',\r\n priceMonth: '999',\r\n priceAnnual: '9999',\r\n label: 'Most popular',\r\n default: false,\r\n custom: false,\r\n features: [\r\n {\r\n title: 'Up to 10 Active Users',\r\n supported: true,\r\n },\r\n {\r\n title: 'Up to 30 Project Integrations',\r\n supported: true,\r\n },\r\n {\r\n title: 'Analytics Module',\r\n supported: true,\r\n },\r\n {\r\n title: 'Finance Module',\r\n supported: true,\r\n },\r\n {\r\n title: 'Accounting Module',\r\n supported: true,\r\n },\r\n {\r\n title: 'Network Platform',\r\n supported: true,\r\n },\r\n {\r\n title: 'Unlimited Cloud Space',\r\n supported: true,\r\n },\r\n ],\r\n },\r\n\r\n {\r\n title: 'Custom',\r\n subTitle: 'Requet a custom license',\r\n default: false,\r\n custom: true,\r\n },\r\n]\r\n\r\nconst UpgradePlan: FC = () => {\r\n const [currentState, setCurrentState] = useState<'month' | 'annual'>('month')\r\n const [selected, setSelected] = useState('Startup')\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport {UpgradePlan}\r\n","import clsx from 'clsx'\r\nimport React, {FC} from 'react'\r\nimport {KTSVG, toAbsoluteUrl} from '../../../helpers'\r\nimport { HeaderUserMenu} from '../../../partials'\r\nimport {useLayout} from '../../core'\r\n\r\nconst toolbarButtonMarginClass = 'ms-1 ms-lg-3',\r\n toolbarButtonHeightClass = 'w-30px h-30px w-md-40px h-md-40px',\r\n toolbarUserAvatarHeightClass = 'symbol-30px symbol-md-40px',\r\n toolbarButtonIconSizeClass = 'svg-icon-1'\r\n\r\nconst Topbar: FC = () => {\r\n const {config} = useLayout()\r\n\r\n return (\r\n
\r\n \r\n {/* begin::User */}\r\n \r\n {/* begin::Toggle */}\r\n \r\n metronic\r\n
\r\n \r\n {/* end::Toggle */}\r\n \r\n {/* end::User */}\r\n\r\n {/* begin::Aside Toggler */}\r\n {config.header.left === 'menu' && (\r\n
\r\n \r\n \r\n
\r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nexport {Topbar}\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport clsx from 'clsx'\r\nimport React, {useEffect} from 'react'\r\nimport {Link, useLocation} from 'react-router-dom'\r\nimport {MenuComponent} from '../../../assets/ts/components'\r\nimport {KTSVG, toAbsoluteUrl} from '../../../helpers'\r\nimport {useLayout} from '../../core'\r\nimport {Header} from './Header'\r\nimport {DefaultTitle} from './page-title/DefaultTitle'\r\nimport {Topbar} from './Topbar'\r\n\r\nexport function HeaderWrapper() {\r\n const {pathname} = useLocation()\r\n const {config, classes, attributes} = useLayout()\r\n const {header, aside} = config\r\n\r\n useEffect(() => {\r\n MenuComponent.reinitialization()\r\n }, [pathname])\r\n\r\n return (\r\n \r\n \r\n {/* begin::Aside mobile toggle */}\r\n {aside.display && (\r\n
\r\n \r\n \r\n
\r\n \r\n )}\r\n {/* end::Aside mobile toggle */}\r\n {/* begin::Logo */}\r\n {!aside.display && (\r\n
\r\n \r\n Logo\r\n \r\n
\r\n )}\r\n {/* end::Logo */}\r\n\r\n {aside.display && (\r\n
\r\n \r\n Logo\r\n \r\n
\r\n )}\r\n\r\n {/* begin::Wrapper */}\r\n
\r\n {/* begin::Navbar */}\r\n {header.left === 'menu' && (\r\n
\r\n
\r\n
\r\n )}\r\n\r\n {header.left === 'page-title' && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n
\r\n \r\n
\r\n
\r\n {/* end::Wrapper */}\r\n \r\n \r\n )\r\n}\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport clsx from 'clsx'\r\nimport React, {FC} from 'react'\r\nimport {KTSVG} from '../../../helpers'\r\nimport {useLayout} from '../../core'\r\nimport {DefaultTitle} from '../header/page-title/DefaultTitle'\r\n\r\nconst Toolbar1: FC = () => {\r\n const {classes} = useLayout()\r\n\r\n return (\r\n
\r\n {/* begin::Container */}\r\n \r\n \r\n\r\n {/* begin::Actions */}\r\n
\r\n \r\n\r\n \r\n
\r\n {/* end::Actions */}\r\n
\r\n {/* end::Container */}\r\n \r\n )\r\n}\r\n\r\nexport {Toolbar1}\r\n","import React from 'react'\r\nimport {useLayout} from '../../core/LayoutProvider'\r\nimport {Toolbar1} from './Toolbar1'\r\n\r\nconst Toolbar = () => {\r\n const {config} = useLayout()\r\n\r\n switch (config.toolbar.layout) {\r\n case 'toolbar1':\r\n return \r\n\r\n default:\r\n return \r\n }\r\n}\r\n\r\nexport {Toolbar}\r\n","import React, {useEffect, useRef} from 'react'\r\nimport {useLocation} from 'react-router-dom'\r\nimport {\r\n // ScrollComponent,\r\n ScrollTopComponent,\r\n MenuComponent,\r\n DrawerComponent,\r\n ToggleComponent,\r\n StickyComponent,\r\n} from '../../assets/ts/components'\r\nimport {KTSVG} from '../../helpers'\r\n\r\nexport function ScrollTop() {\r\n const {pathname} = useLocation()\r\n const isFirstRun = useRef(true)\r\n\r\n const pluginsReinitialization = () => {\r\n setTimeout(() => {\r\n // ScrollTopComponent.reinitialization()\r\n MenuComponent.reinitialization()\r\n StickyComponent.reInitialization()\r\n setTimeout(() => {\r\n ToggleComponent.reinitialization()\r\n DrawerComponent.reinitialization()\r\n // ScrollComponent.reinitialization()\r\n }, 70)\r\n }, 140)\r\n }\r\n\r\n const scrollTop = () => {\r\n ScrollTopComponent.goTop()\r\n }\r\n\r\n const updateHeaderSticky = () => {\r\n const stickyHeader = document.body.querySelectorAll(`[data-kt-sticky-name=\"header\"]`)\r\n if (stickyHeader && stickyHeader.length > 0) {\r\n const sticky = StickyComponent.getInstance(stickyHeader[0] as HTMLElement)\r\n if (sticky) {\r\n sticky.update()\r\n }\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (isFirstRun.current) {\r\n isFirstRun.current = false\r\n } else {\r\n pluginsReinitialization()\r\n }\r\n\r\n updateHeaderSticky()\r\n setTimeout(() => {\r\n scrollTop()\r\n }, 0)\r\n }, [pathname])\r\n\r\n return (\r\n
\r\n \r\n
\r\n )\r\n}\r\n","import React, {useEffect} from 'react'\r\nimport {useLocation} from 'react-router'\r\nimport clsx from 'clsx'\r\nimport {useLayout} from '../core'\r\nimport {DrawerComponent} from '../../assets/ts/components'\r\n\r\nconst Content: React.FC = ({children}) => {\r\n const {classes} = useLayout()\r\n const location = useLocation()\r\n useEffect(() => {\r\n DrawerComponent.hideAll()\r\n }, [location])\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n )\r\n}\r\n\r\nexport {Content}\r\n","import {useEffect, useRef} from 'react'\r\nimport {\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\nimport {useLayout} from './core'\r\n\r\nexport function MasterInit() {\r\n const {config} = useLayout()\r\n const isFirstRun = useRef(true)\r\n const pluginsInitialization = () => {\r\n isFirstRun.current = false\r\n setTimeout(() => {\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 }\r\n\r\n useEffect(() => {\r\n if (isFirstRun.current) {\r\n isFirstRun.current = false\r\n pluginsInitialization()\r\n }\r\n }, [config])\r\n\r\n return <>\r\n}\r\n","import React from 'react'\r\nimport {AsideDefault} from './components/aside/AsideDefault'\r\nimport {Footer} from './components/Footer'\r\nimport {HeaderWrapper} from './components/header/HeaderWrapper'\r\nimport {Toolbar} from './components/toolbar/Toolbar'\r\nimport {ScrollTop} from './components/ScrollTop'\r\nimport {Content} from './components/Content'\r\nimport {MasterInit} from './MasterInit'\r\nimport {PageDataProvider} from './core'\r\nimport {\r\n DrawerMessenger,\r\n ExploreMain,\r\n ActivityDrawer,\r\n Main,\r\n InviteUsers,\r\n UpgradePlan,\r\n} from '../partials'\r\n\r\nconst MasterLayout: React.FC = ({children}) => {\r\n return (\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n {children}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n {/* begin:: Modals */}\r\n
\r\n \r\n \r\n {/* end:: Modals */}\r\n\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport {MasterLayout}\r\n"," \r\nimport axios, { AxiosResponse } from 'axios' \r\nimport {ResponseHelper} from '../../../../setup/index'\r\nimport {API_URL} from '../../../../setup/helpers/apiUrl'\r\nimport AuthService from '../../auth/redux/AuthService' \r\nimport {UserModel} from '../../auth/models/UserModel' \r\nimport { Customer, CustomerResponse } from '../models/CustomerModels'\r\n\r\n\r\nexport const GET_CUSTOMER_URL = `${API_URL}/api/CallCenter/GetCustomerFromSqlSearch`\r\nexport const GET_CUSTOMER_DETAIL_URL = `${API_URL}/api/CallCenter/GetCustomerFromCdsQuery`\r\n\r\n\r\nconst usr:UserModel = AuthService.GetCurrentUser() != null ? JSON.parse(AuthService.GetCurrentUser()) : null ;\r\n\r\nexport async function GetCustomer(searchModel:any, firmaUnvanType:string){ \r\n let resp;\r\n try{\r\n await axios.post(GET_CUSTOMER_URL + \"?firmaUnvanType=\"+ firmaUnvanType, searchModel, {headers:{\"Authorization\":\"bearer \" + usr.accessToken}})\r\n .then((response) =>{\r\n console.log(\"then =>\", response);\r\n resp = response; \r\n })\r\n .catch((err) => {\r\n console.log(\"thenCatch =>\", err);\r\n if(err.response.status === 401){\r\n document.location.reload();\r\n }\r\n });\r\n return resp;\r\n } \r\n catch(err){\r\n console.log(\"login error =>\", err);\r\n console.log(\"catch resp =>\", resp);\r\n return err;\r\n }\r\n}\r\n\r\nexport async function GetCustomerDetail(customerModel:CustomerResponse){\r\n var resp;\r\n console.log(\"OrderSend\");\r\n try{\r\n await axios.post(GET_CUSTOMER_DETAIL_URL, customerModel,\r\n {headers:{\"content-type\":\"application/json\", \"Authorization\":\"bearer \" + usr.accessToken}})\r\n .then((response) =>{\r\n console.log(\"then =>\", response);\r\n resp = response; \r\n })\r\n .catch((err) => {\r\n console.log(\"thenCatch =>\", err);\r\n if(err.response.status === 401){\r\n document.location.reload();\r\n }\r\n });\r\n console.log(\"Response => \", resp);\r\n return resp;\r\n } \r\n catch(err){\r\n console.log(\"login error =>\", err);\r\n console.log(\"catch resp =>\", resp);\r\n return err;\r\n }\r\n}\r\n\r\n ","\r\nimport {useSelector} from 'react-redux'\r\nimport { RootState } from \"../../../../setup/redux/RootReducer\";\r\nimport {useState,useEffect} from 'react' \r\nimport { GetCustomerDetail } from '../redux/CustomerOperations'; \r\nimport { useDispatch } from \"react-redux\"; \r\nimport {setCustomerDetail} from '../../searchShowCustomer/redux/CustomerDetailSlice'\r\nimport {CustomerDetailClass} from '../models/CustomerModels'\r\n\r\nexport default function CustomerList() {\r\n\r\n const customerList = useSelector((state: RootState) => state.customerListReducer);\r\n const dispatch = useDispatch();\r\n const [currentId, setCurrenetId] = useState();\r\n const [detailErrorStr, setDetailErrorStr] = useState(\"\");\r\n\r\n const [previewLoading, setPreviewLoading] = useState(false)\r\n\r\n useEffect(() => {\r\n setDetailErrorStr(\"\");\r\n setPreviewLoading(false);\r\n }, [customerList])\r\n\r\n function handleChange(e:any) {\r\n console.log(e);\r\n const {name, value} = e.target;\r\n console.log(\"Value =>>\",value);\r\n setCurrenetId(value);\r\n }\r\n\r\n const handleSubmission = async () => {\r\n setPreviewLoading(true);\r\n setDetailErrorStr(\"\");\r\n dispatch(setCustomerDetail(new CustomerDetailClass()))\r\n if(currentId != null && currentId != \"\"){\r\n let customer = customerList.customerList.find(x=> x.CardNumber == currentId);\r\n if(customer != null){\r\n let response:any = await GetCustomerDetail(customer);\r\n if(response.data != null){\r\n if(response.data.Status != \"SUCCESS\"){\r\n setDetailErrorStr(response.data.Detail);\r\n }else{\r\n dispatch(setCustomerDetail(response.data.Detail));\r\n }\r\n }else{\r\n setDetailErrorStr(\"Servisten yanıt alınamadı\");\r\n }\r\n \r\n }\r\n }\r\n setPreviewLoading(false);\r\n }\r\n\r\n console.log(\"CustomerList =>>\",customerList)\r\n return(\r\n
\r\n {detailErrorStr != \"\" && detailErrorStr != null && \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
Dikkat
\r\n {detailErrorStr}\r\n
\r\n
\r\n
}\r\n {customerList.customerList != null && customerList.customerList != undefined && customerList.customerList.length > 0 && \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {customerList.customerList.map(customer => ( \r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n
Ticari ÜnvanKart NoMüşteri NoEmailCep NoSabit NoSatın Alma Yetkilisi Adı SoyadıVergi NoBlok Kodu
\r\n
\r\n handleChange(event)}/>\r\n
\r\n
\r\n {customer.Type == \"1\" ?Bireysel({customer.AUTH_PERSON_ID == \"0\" ? \"M\" : \"S\"})\r\n :Kurumsal({customer.AUTH_PERSON_ID == \"0\" ? \"M\" : \"S\"})\r\n }\r\n {customer.BrandName}{customer.CardNumber}{customer.StoreKey}-{customer.CustomerNumber}{customer.Email}{customer.MobilePhoneNumber}{customer.PhoneNumber}{customer.ShortName}{customer.TaxNumber}{customer.BlockedCode}
\r\n \r\n
\r\n }\r\n
\r\n )\r\n}","import React,{useState, useRef} from 'react' \r\nimport {GetCustomer} from './redux/CustomerOperations'\r\nimport {useDispatch} from 'react-redux'\r\nimport {setCustomerList} from '../searchShowCustomer/redux/CustomerListSlice'\r\nimport CustomerList from './components/CustomerList'\r\nimport {setCustomerDetail} from '../searchShowCustomer/redux/CustomerDetailSlice'\r\nimport {CustomerDetailClass} from '../searchShowCustomer/models/CustomerModels'\r\n\r\nexport default function FileSend(){\r\n const [previewLoading, setPreviewLoading] = useState(false)\r\n const [firmaUnvanChecked, setFirmaUnvanChecked] = useState(false)\r\n const [firmaUnvanType, setFirmaUnvanType] = useState(\"\");\r\n const [radioValue, setRadioValue] = useState(\"\");\r\n const [currentInputType, setCurrentInputType] = useState(\"\");\r\n const [errorString, setErrorString] = useState(\"\");\r\n const [inputValue, setInputValue] = useState();\r\n const currentRef = useRef(null);\r\n const uploadButtonRef = useRef(null);\r\n console.log(currentRef);\r\n\r\n const dispatch = useDispatch();\r\n\r\n\tconst handleSubmission = async () => {\r\n dispatch(setCustomerDetail(new CustomerDetailClass()));\r\n var pattern = new RegExp(/^((\"[\\w-\\s]+\")|([\\w-]+(?:\\.[\\w-]+)*)|(\"[\\w-\\s]+\")([\\w-]+(?:\\.[\\w-]+)*))(@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$)|(@\\[?((25[0-5]\\.|2[0-4][0-9]\\.|1[0-9]{2}\\.|[0-9]{1,2}\\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\\]?$)/i);\r\n setPreviewLoading(true);\r\n setErrorString(\"\");\r\n console.log(\"input =>\",inputValue);\r\n\r\n if(radioValue == \"\" || radioValue == null){\r\n setErrorString(\"Lütfen arama yapılacak alanı seçeniz.\");\r\n setPreviewLoading(false);\r\n return;\r\n }\r\n else if(inputValue == \"\" || inputValue == null){\r\n setErrorString(\"Lütfen arama için bir parametre giriniz\");\r\n setPreviewLoading(false);\r\n return;\r\n }\r\n else if(radioValue ==\"mail\" && !pattern.test(inputValue)){\r\n setErrorString(\"Lütfen uygun bir mail formatı giriniz\");\r\n setPreviewLoading(false);\r\n return;\r\n }\r\n console.log(\"input value =>\",inputValue);\r\n \r\n if(inputValue != null){\r\n let customer = await CreateCustomerModel();\r\n console.log(\"Customer =>\",customer);\r\n let resp = await GetCustomer(customer, firmaUnvanType);\r\n console.log(\"Response =>\",resp);\r\n if(resp.data != null){\r\n if (resp.data.Status != \"SUCCESS\"){\r\n setErrorString(resp.data.Detail);\r\n }else{\r\n dispatch(setCustomerList(resp.data.Detail));\r\n }\r\n }\r\n else{\r\n setErrorString(\"Servisten yanıt alınamadı\");\r\n } \r\n \r\n }\r\n setPreviewLoading(false);\r\n\t};\r\n\r\n const CreateObject = () => {\r\n function F() {}\r\n var customer = {\r\n CustomerNumber : 0,\r\n TaxNumber : 0,\r\n CardNumber : 0,\r\n MobilePhoneNumber : 0,\r\n PhoneNumber : 0,\r\n Email : '',\r\n ShortName : '',\r\n BrandName :''\r\n }\r\n F.prototype = customer;\r\n return new F();\r\n }\r\n\r\n const CreateCustomerModel = () => {\r\n var customer = CreateObject();\r\n switch(radioValue){\r\n case \"mNo\":\r\n customer.CustomerNumber = inputValue;\r\n break;\r\n case \"vNo\": \r\n customer.TaxNumber = inputValue;\r\n break;\r\n case \"kNo\": \r\n customer.CardNumber = inputValue;\r\n break;\r\n case \"cep\": \r\n customer.MobilePhoneNumber = inputValue;\r\n break;\r\n case \"phone\": \r\n customer.PhoneNumber = inputValue;\r\n break; \r\n case \"mail\":\r\n customer.Email = inputValue;\r\n break;\r\n case \"sName\":\r\n customer.ShortName = inputValue;\r\n break;\r\n case \"fUnvan\":\r\n customer.BrandName = inputValue;\r\n break;\r\n }\r\n return customer;\r\n }\r\n \r\n\r\n\r\n\tconst handleChangeFunvan = e => {\r\n const {name, value} = e.target;\r\n setErrorString(\"\");\r\n setFirmaUnvanType(value);\r\n }\r\n\r\n\r\n\tconst handleChange = e => {\r\n const {name, value} = e.target;\r\n setErrorString(\"\");\r\n setFirmaUnvanType(\"\");\r\n setFirmaUnvanChecked(false);\r\n if(value == \"fUnvan\"){\r\n setFirmaUnvanChecked(true); \r\n }\r\n //setInputValue(null);\r\n switch(value){\r\n case \"mNo\":\r\n case \"vNo\": \r\n case \"kNo\": \r\n case \"cep\": \r\n case \"phone\": \r\n setCurrentInputType(\"number\");\r\n setInputValue(\"\");\r\n break;\r\n case \"mail\":\r\n setCurrentInputType(\"email\");\r\n setInputValue(\"\");\r\n break;\r\n default:\r\n setCurrentInputType(\"text\");\r\n setInputValue(\"\");\r\n break;\r\n }\r\n setRadioValue(value);\r\n console.log(e);\r\n\t};\r\n \r\n\r\n return(\r\n
\r\n
\r\n {/* begin::Header */}\r\n
\r\n

\r\n Sorgulama/Doğrulama Ekranı\r\n Lütfen hangi alana göre arama yapacağınızı seçiniz\r\n

\r\n
\r\n {/* end::Header */}\r\n {/* begin::Body */}\r\n \r\n
\r\n {/* */}\r\n
\r\n {errorString != \"\" && errorString != null &&
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
Dikkat
\r\n {errorString}\r\n
\r\n
\r\n
}\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n setInputValue(e.target.value)} type={currentInputType} className=\"form-control form-control-solid\" placeholder=\"\"/>\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {/* end: Card Body */}\r\n
\r\n
\r\n
\r\n )\r\n}","import axios from 'axios' \r\nimport {ResponseHelper} from '../../../../setup/index'\r\nimport {API_URL} from '../../../../setup/helpers/apiUrl'\r\n\r\n\r\n\r\nexport const GET_DISTRICT_LIST_URL = `${API_URL}/api/Address/GetDistricts`\r\nexport const GET_QUARTER_LIST_URL = `${API_URL}/api/Address/GetQuarters`\r\n\r\n\r\n\r\nexport async function GetDistrictList(countryId:string){ \r\n let resp;\r\n try{\r\n await axios.get(GET_DISTRICT_LIST_URL + \"?id=\"+countryId)\r\n .then((response) =>{\r\n console.log(\"then =>\", response);\r\n resp = response; \r\n })\r\n .catch((err) => {\r\n console.log(\"thenCatch =>\", err);\r\n if(err.response.status === 401){\r\n document.location.reload();\r\n }\r\n });\r\n return resp;\r\n } \r\n catch(err){\r\n console.log(\"login error =>\", err);\r\n console.log(\"catch resp =>\", resp);\r\n return err;\r\n }\r\n }\r\n\r\n export async function GetQuarterList(districtId:string){ \r\n let resp;\r\n try{\r\n await axios.get(GET_QUARTER_LIST_URL + \"?id=\" + districtId)\r\n .then((response) =>{\r\n console.log(\"then =>\", response);\r\n resp = response; \r\n })\r\n .catch((err) => {\r\n console.log(\"thenCatch =>\", err);\r\n if(err.response.status === 401){\r\n document.location.reload();\r\n }\r\n });\r\n return resp;\r\n } \r\n catch(err){\r\n console.log(\"login error =>\", err);\r\n console.log(\"catch resp =>\", resp);\r\n return err;\r\n }\r\n}","import axios from 'axios'\r\nimport {ResponseHelper} from '../../../../setup/index'\r\nimport {API_URL} from '../../../../setup/helpers/apiUrl'\r\nimport AuthService from '../../../modules/auth/redux/AuthService'\r\nimport {UserModel} from '../../../modules/auth/models/UserModel'\r\nimport { Logout } from '../../auth'\r\n\r\nexport const POST_CUSTOMER_FOR_SMS_URL = `${API_URL}/api/CallCenter/SendCustomerMessageCDSResult`\r\nexport const POST_CUSTOMER_FOR_UPDATE_URL = `${API_URL}/api/CallCenter/UpdateKvkkCustomer`\r\nexport const POST_CUSTOMER_TO_MCFM_URL = `${API_URL}/api/CallCenter/SendCustomerToMcfm`\r\nexport const MUGE_OUT_REQUEST_URL = `${API_URL}/api/Muge/OutFromMuge`\r\n\r\n\r\n\r\nconst usr:UserModel = AuthService.GetCurrentUser() != null ? JSON.parse(AuthService.GetCurrentUser()) : null ;\r\n\r\nexport async function PostCustomerForSms(customer:any){\r\n let resp;\r\n try{\r\n await axios.post(POST_CUSTOMER_FOR_SMS_URL,customer,{headers:{\"Authorization\":\"bearer \" + usr.accessToken}})\r\n .then((response) =>{\r\n console.log(\"then =>\", response);\r\n resp = response;\r\n })\r\n .catch((err) => {\r\n console.log(\"thenCatch =>\", err.response);\r\n if(err.response.status === 401){\r\n Logout();\r\n }\r\n });\r\n return resp;\r\n }\r\n catch(err){\r\n console.log(\"login error =>\", err);\r\n console.log(\"catch resp =>\", resp);\r\n return err;\r\n }\r\n}\r\n\r\n\r\n\r\nexport async function PostCustomerForUpdate(customer:any){\r\n let resp;\r\n try{\r\n await axios.post(POST_CUSTOMER_FOR_UPDATE_URL,customer,{headers:{\"Authorization\":\"bearer \" + usr.accessToken}})\r\n .then((response) =>{\r\n console.log(\"then =>\", response);\r\n resp = response;\r\n })\r\n .catch((err) => {\r\n console.log(\"thenCatch =>\", err);\r\n if(err.response.status === 401){\r\n Logout();\r\n }\r\n });\r\n return resp;\r\n }\r\n catch(err){\r\n console.log(\"login error =>\", err);\r\n console.log(\"catch resp =>\", resp);\r\n return err;\r\n }\r\n}\r\n\r\nexport async function PostCustomerToMcfm(customer:any){\r\n let resp;\r\n try{\r\n await axios.post(POST_CUSTOMER_TO_MCFM_URL,customer,{headers:{\"Authorization\":\"bearer \" + usr.accessToken}})\r\n .then((response) =>{\r\n console.log(\"then =>\", response);\r\n resp = response;\r\n })\r\n .catch((err) => {\r\n console.log(\"thenCatch =>\", err);\r\n if(err.response.status === 401){\r\n Logout();\r\n }\r\n });\r\n return resp;\r\n }\r\n catch(err){\r\n console.log(\"login error =>\", err);\r\n console.log(\"catch resp =>\", resp);\r\n return err;\r\n }\r\n}\r\n\r\nexport async function MugeOutRequest(customerGuid:string){\r\n let resp;\r\n try{\r\n await axios.get(MUGE_OUT_REQUEST_URL+\"?customerGuid=\"+customerGuid)\r\n .then((response) =>{\r\n console.log(\"then =>\", response);\r\n resp = response;\r\n })\r\n .catch((err) => {\r\n console.log(\"thenCatch =>\", err);\r\n if(err.response?.status === 401){\r\n Logout();\r\n }\r\n });\r\n return resp;\r\n }\r\n catch(err){\r\n console.log(\"login error =>\", err);\r\n console.log(\"catch resp =>\", resp);\r\n return err;\r\n }\r\n}\r\n","\r\nimport {useSelector} from 'react-redux'\r\nimport { RootState } from \"../../../setup/redux/RootReducer\";\r\nimport {useState, useEffect} from 'react' \r\nimport {GetDistrictList, GetQuarterList} from './redux/CountryOperations'\r\nimport {PostCustomerForSms, PostCustomerForUpdate, PostCustomerToMcfm, MugeOutRequest} from './redux/CustomerOperations'\r\nimport {District, Quarter} from './models/RegionModels'\r\nimport NumberFormat from 'react-number-format';\r\n\r\n\r\n\r\nexport default function UpdateCustomerPage():JSX.Element {\r\n\r\n const customer = useSelector((state: RootState) => state.customerDetailReducer);\r\n const initialValues = {\r\n boolValues:false,\r\n stringValues:\"\"\r\n };\r\n\r\n console.log(\"initial val\",initialValues)\r\n\r\n useEffect(() => {\r\n setCustomerState(customer.customerDetailItem);\r\n console.log(\"23 CustomerState \", customerState); \r\n setErrorString(initialValues.stringValues);\r\n setSuccessString(initialValues.stringValues);\r\n setAdddressTypeErr(initialValues.stringValues);\r\n setAddressEdit(initialValues.boolValues);\r\n setSendLinkLoading(initialValues.boolValues);\r\n setUpdateDataLoading(initialValues.boolValues);\r\n setSaveDataLoading(initialValues.boolValues);\r\n setDisableMugeClickLoading(initialValues.boolValues);\r\n },[customer]);\r\n\r\n \r\n const [customerState, setCustomerState] = useState(customer.customerDetailItem);\r\n\r\n\r\n const [errorString, setErrorString] = useState(initialValues.stringValues);\r\n\r\n const [adddressTypeErr, setAdddressTypeErr] = useState(initialValues.stringValues);\r\n const [successString, setSuccessString] = useState(initialValues.stringValues);\r\n const [defaultAddressType, setDefaultAddressType] = useState(\"R\");\r\n\r\n const [addresEdit, setAddressEdit] = useState(initialValues.boolValues);\r\n const [sendLinkLoading, setSendLinkLoading] = useState(initialValues.boolValues);\r\n const [updateDataLoading, setUpdateDataLoading] = useState(initialValues.boolValues);\r\n const [saveDataLoading, setSaveDataLoading] = useState(initialValues.boolValues);\r\n const[disableMugeClickLoading, setDisableMugeClickLoading] = useState(initialValues.boolValues);\r\n const [dateWarningModal, setDateWarningModal] = useState(customerState.DateWarning);\r\n\r\n\r\n const [districtList, setDistrictList] = useState();\r\n const [quarterList, setquarterList] = useState();\r\n\r\n // useEffect(() => {\r\n // console.log(\"customerstate değişikliği\");\r\n \r\n // },[customerState])\r\n \r\n\r\n const EditAdress = (status:boolean) => {\r\n setAddressEdit(status);\r\n }\r\n \r\n const closeRegionBox = () => {\r\n EditAdress(false);\r\n }\r\n \r\n const disableMugeClick = async () => {\r\n setDisableMugeClickLoading(true);\r\n setErrorString(\"\");\r\n setAdddressTypeErr(\"\");\r\n\r\n let response:any = await MugeOutRequest(customerState?.PrmCustomerGuid);\r\n console.log(\"Response =>\", response);\r\n if(response.data != null){\r\n if(response.data.Status !=\"SUCCESS\"){\r\n setErrorString(response.data.Detail);\r\n }else{\r\n setSuccessString(\"Müşteri mügeden çıkarılmıştır.\");\r\n }\r\n }else{\r\n setErrorString(\"Servis bağlantısı kurulamadı\");\r\n setDisableMugeClickLoading(false)\r\n }\r\n setDisableMugeClickLoading(false);\r\n }\r\n\r\n const sendLinkClick = async () => {\r\n setSendLinkLoading(true);\r\n setErrorString(\"\");\r\n setAdddressTypeErr(\"\");\r\n let errors= \"\";\r\n console.log(\"Link gönder => \",customerState)\r\n if ((addresEdit && (customerState.Mahalle_Id == undefined || customerState.Mahalle_Id == \"0\")\r\n && (customerState.Ilce_Id == undefined || customerState.Ilce_Id == \"0\"))){\r\n errors = \"İlçe ve mahalle bilgisi boş geçilemez.
\";\r\n }\r\n if((customerState.AddressTypeCd == undefined || customerState.AddressTypeCd == \"0\" && defaultAddressType !==\"R\")){\r\n // errors+=\"Lütfen adres tipi seçiniz.
\";\r\n // setAdddressTypeErr(\"Adres tipi zorunludur\");\r\n setDefaultAddressType(\"R\");\r\n setCustomerState(prevState => ({\r\n ...prevState,\r\n AddressTypeCd:\"R\"\r\n }));\r\n }\r\n setErrorString(errors);\r\n\r\n if(errors === \"\"){\r\n let response:any = await PostCustomerForSms(customerState);\r\n console.log(\"Response =>\", response);\r\n if(response.data != null){\r\n if(response.data.Status !=\"SUCCESS\"){\r\n setErrorString(response.data.Detail);\r\n }else{\r\n setCustomerState(prevState => ({\r\n ...prevState,\r\n CustomerGuid:response.data.Detail\r\n }));\r\n setSuccessString(\"Mesaj başarıyla gönderildi\");\r\n }\r\n }else{\r\n setErrorString(\"Servis bağlantısı kurulamadı\");\r\n setSendLinkLoading(false)\r\n }\r\n }\r\n setSendLinkLoading(false)\r\n console.log(\"User =>\",customerState);\r\n }\r\n \r\n const updateData = async () => {\r\n setUpdateDataLoading(true);\r\n setErrorString(\"\");\r\n setAdddressTypeErr(\"\");\r\n let errors= \"\";\r\n console.log(\"update data => \",customerState);\r\n if ((addresEdit && (customerState.Mahalle_Id == undefined || customerState.Mahalle_Id == \"0\")\r\n && (customerState.Ilce_Id == undefined || customerState.Ilce_Id == \"0\"))){\r\n errors = \"İlçe ve mahalle bilgisi boş geçilemez.
\";\r\n }\r\n if((customerState.AddressTypeCd == undefined || customerState.AddressTypeCd == \"0\" && defaultAddressType !== \"R\")){\r\n setDefaultAddressType(\"R\")\r\n // errors+=\"Lütfen adres tipi seçiniz.
\";\r\n // setAdddressTypeErr(\"Adres tipi zorunludur\");\r\n setCustomerState(prevState => ({\r\n ...prevState,\r\n AddressTypeCd:\"R\"\r\n }));\r\n }\r\n if((customerState.CustomerGuid == undefined || customerState.CustomerGuid == \"00000000-0000-0000-0000-000000000000\")){\r\n errors+=\"Lütfen kayıt işleminden önce mesaj gönderiniz\";\r\n }\r\n setErrorString(errors);\r\n\r\n console.log(\"MCFM'e Gonder =>\" ,customerState);\r\n if(errors === \"\"){\r\n let response:any = await PostCustomerToMcfm(customerState);\r\n console.log(\"Response =>\", response);\r\n if(response.data != null){\r\n if(response.data.Status !=\"SUCCESS\"){\r\n setErrorString(response.data.Detail);\r\n }else{\r\n setSuccessString(\"Veriler MCFM'e gönderildi.\");\r\n }\r\n }else{\r\n setErrorString(\"Servis bağlantısı kurulamadı\");\r\n setSaveDataLoading(false)\r\n }\r\n }\r\n\r\n setUpdateDataLoading(false);\r\n }\r\n\r\n const handleAddressType = (e:any) => {\r\n const {name, value} = e.target;\r\n setDefaultAddressType(value);\r\n setCustomerState(prevState => ({\r\n ...prevState,\r\n AddressTypeCd: value\r\n }));\r\n }\r\n\r\n const saveData = async () => {\r\n setSaveDataLoading(true);\r\n setErrorString(\"\");\r\n setAdddressTypeErr(\"\");\r\n let errors= \"\";\r\n console.log(\"update data => \",customerState);\r\n if ((addresEdit && (customerState.Mahalle_Id == undefined || customerState.Mahalle_Id == \"0\")\r\n && (customerState.Ilce_Id == undefined || customerState.Ilce_Id == \"0\"))){\r\n errors = \"İlçe ve mahalle bilgisi boş geçilemez.
\";\r\n }\r\n if((customerState.AddressTypeCd == undefined || customerState.AddressTypeCd == \"0\" && defaultAddressType !== \"R\")){\r\n // errors+=\"Lütfen adres tipi seçiniz.
\";\r\n // setAdddressTypeErr(\"Adres tipi zorunludur\");\r\n setDefaultAddressType(\"R\");\r\n setCustomerState(prevState => ({\r\n ...prevState,\r\n AddressTypeCd:\"R\"\r\n }));\r\n }\r\n if((customerState.CustomerGuid == undefined || customerState.CustomerGuid == \"00000000-0000-0000-0000-000000000000\")){\r\n errors+=\"Lütfen kayıt işleminden önce mesaj gönderiniz\";\r\n }\r\n setErrorString(errors);\r\n\r\n if(errors === \"\"){\r\n let response:any = await PostCustomerForUpdate(customerState);\r\n console.log(\"Response =>\", response);\r\n if(response.data != null){\r\n if(response.data.Status !=\"SUCCESS\"){\r\n setErrorString(response.data.Detail);\r\n }else{\r\n setSuccessString(\"Bilgiler başarıyla güncellendi\");\r\n }\r\n }else{\r\n setErrorString(\"Servis bağlantısı kurulamadı\");\r\n setSaveDataLoading(false)\r\n }\r\n }\r\n setSaveDataLoading(false);\r\n }\r\n\r\n const handleOption = (e:any,statu:boolean) => {\r\n const {name, value} = e.target;\r\n console.log(\"Name =>\",name);\r\n console.log(\"Statu =>\",statu);\r\n console.log(\"handleOption==>\",customer.customerDetailItem);\r\n setCustomerState(prevState => ({\r\n ...prevState,\r\n [name]: statu\r\n }));\r\n console.log(\"local state 78 =>\",customerState);\r\n }\r\n\r\n const handleIput = (e:any) => {\r\n const {name, value} = e.target;\r\n console.log(\"Name =>\",name);\r\n console.log(\"Value =>\",value);\r\n console.log(\"handleOption==>\",customer.customerDetailItem);\r\n setCustomerState(prevState => ({\r\n ...prevState,\r\n [name]: value\r\n }));\r\n console.log(\"local state 99 =>\",customerState);\r\n }\r\n\r\n async function handleChangeDistrict(e:any) {\r\n const {name, value} = e.target;\r\n console.log(\"target =>>\",e);\r\n console.log(\"Value =>>\",name);\r\n\r\n if(value == \"0\"){\r\n setErrorString(\"Lütfen bir ilçe seçiniz.\");\r\n }else{\r\n let response:any = await GetQuarterList(value);\r\n console.log(\"Response =>\", response);\r\n if(response.data != null){\r\n if(response.data.Status !=\"SUCCESS\"){\r\n setErrorString(response.data.Detail);\r\n\r\n }else{\r\n setCustomerState(prevState => ({\r\n ...prevState,\r\n Ilce_Id:value\r\n }));\r\n setquarterList(response.data.Detail)\r\n }\r\n }else{\r\n setErrorString(\"Servis bağlantısı kurulamadı\");\r\n }\r\n }\r\n }\r\n\r\n async function handleChangeTown(e:any) {\r\n const {name, value} = e.target;\r\n console.log(\"Value =>>\",value);\r\n\r\n setquarterList(undefined);\r\n\r\n if(value == \"0\"){\r\n setErrorString(\"Lütfen bir il seçiniz.\");\r\n }else{\r\n let response:any = await GetDistrictList(value);\r\n console.log(\"Response =>\", response);\r\n if(response.data != null){\r\n if(response.data.Status !=\"SUCCESS\"){\r\n setErrorString(response.data.Detail);\r\n }else{\r\n setDistrictList(response.data.Detail)\r\n }\r\n }else{\r\n setErrorString(\"Servis bağlantısı kurulamadı\");\r\n }\r\n }\r\n }\r\n\r\n async function handleChangeQuarter(e:any) {\r\n const {name, value} = e.target;\r\n setCustomerState(prevState => ({\r\n ...prevState,\r\n Mahalle_Id:value\r\n }));\r\n }\r\n\r\n return <> {\r\n customer.customerDetailItem != null && customer.customerDetailItem[\"CUST_NO\"] != \"\" &&\r\n
\r\n {/* begin::Header */}\r\n
\r\n

\r\n Firma Bilgileri\r\n

\r\n
\r\n\r\n { customerState.DateWarning && dateWarningModal &&\r\n
\r\n
\r\n
\r\n
Dikkat
\r\n
\r\n

Bu kayıt 01/10/2020 tarihinden önce açılmış.

\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n }\r\n \r\n
\r\n {/* */}\r\n
\r\n { successString != \"\" &&\r\n
\r\n \r\n
Başarılı
\r\n {successString}\r\n
\r\n \r\n
\r\n }\r\n\r\n {errorString != \"\" && errorString != null &&
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
Dikkat
\r\n \r\n
\r\n
\r\n
}\r\n \r\n\r\n
\r\n
\r\n
\r\n Kayıt Tarihi: {customerState?.KayitTarihiStr}\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n

\r\n \r\n

\r\n
\r\n
\r\n
\r\n handleIput(event)}\r\n />\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n handleIput(event)}\r\n />\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n handleIput(event)}\r\n />\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n handleIput(event)}/>\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n handleIput(event)}/>\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {customerState?.IsHaveMUGE ? \r\n \r\n :Müge kaydı bulunmuyor.}\r\n
\r\n\r\n

\r\n \r\n Adres Bilgileri\r\n EditAdress(true)} style={{cursor:'pointer',height:'12',color:'#66abc5',marginLeft:7,position:'absolute',top:'10%',right:'-19%',display: addresEdit ? 'none' : 'inherit'}} xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" className=\"bi bi-pencil-fill\" viewBox=\"0 0 16 16\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

\r\n\r\n\r\n
\r\n <> İlçe: {customerState?.SEMT}
\r\n Mahalle: {customerState?.MAHALLE}
\r\n Cadde: {customerState?.CADDE}
\r\n Sokak: {customerState.SOKAK}
\r\n Bina No: {customerState.BINA_NO}
\r\n Bina Adı: {customerState.BINA_ADI}
\r\n Kapı No: {customerState.KAPI_NO}
\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n handleIput(event)} defaultValue={customerState?.CADDE} style={{padding:\"0.40em 0.75em\",width:\"73%\"}} />\r\n
\r\n\r\n
\r\n \r\n handleIput(event)} defaultValue={customerState?.SOKAK} style={{padding:\"0.40em 0.75em\",width:\"73%\"}} />\r\n
\r\n\r\n
\r\n \r\n handleIput(event)} defaultValue={customerState?.KAPI_NO} style={{padding:\"0.40em 0.75em\",width:\"73%\"}} />\r\n
\r\n\r\n
\r\n \r\n handleIput(event)} defaultValue={customerState?.BINA_ADI} style={{padding:\"0.40em 0.75em\",width:\"73%\"}}/>\r\n
\r\n\r\n\r\n\r\n
\r\n \r\n handleIput(event)} defaultValue={customerState?.BINA_NO} style={{padding:\"0.40em 0.75em\",width:\"73%\"}} />\r\n
\r\n
\r\n \r\n {adddressTypeErr != \"\" && }\r\n \r\n
\r\n\r\n\r\n
\r\n\r\n

\r\n İletişim İzinleri\r\n

\r\n \r\n
\r\n
\r\n handleOption(event,!customerState?.SmsIzni)}\r\n checked={customerState?.SmsIzni}\r\n />\r\n \r\n
\r\n
\r\n\r\n {/*
\r\n
\r\n handleOption(event,!customerState?.AramaIzni)}\r\n checked={customerState.AramaIzni}\r\n />\r\n \r\n
\r\n
*/}\r\n
\r\n
\r\n handleOption(event,!customerState?.EpostaIzni)}\r\n checked={customerState.EpostaIzni} />\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n handleOption(event,!customerState?.AdresIzni)}\r\n checked={customerState.AdresIzni} />\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {/* end: Card Body */}\r\n
\r\n
\r\n } \r\n}","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport {FC} from 'react'\r\nimport {useIntl} from 'react-intl'\r\nimport {PageTitle} from '../../../_metronic/layout/core'\r\n\r\n\r\nimport SearchShowCustomer from '../../modules/searchShowCustomer/CustomerPage'\r\nimport UpdateCustomerPage from '../../modules/updateCustomer/UpdateCustomerPage'\r\n\r\n\r\n\r\nconst DashboardPage: FC = () => (\r\n <>\r\n {/* begin::Row */}\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n {/* end::Row */}\r\n \r\n)\r\n\r\nconst DashboardWrapper: FC = () => {\r\n const intl = useIntl()\r\n return (\r\n <>\r\n {\"Ana Sayfa\"}\r\n \r\n \r\n )\r\n}\r\n\r\nexport {DashboardWrapper}\r\n","import axios from 'axios' \r\nimport {ResponseHelper} from '../../../../setup/index'\r\nimport {API_URL} from '../../../../setup/helpers/apiUrl'\r\n\r\n\r\n\r\nexport const GET_STORE_LIST = `${API_URL}/api/CallCenter/GetMetroStoreListFormService?Target=CallCenter_Product&Api=GetStoreList&UserSetting=CallCenterProductUser`\r\n\r\nexport async function GetStoreList(){ \r\n let resp;\r\n try{\r\n await axios.get(GET_STORE_LIST)\r\n .then((response) =>{\r\n console.log(\"then =>\", response);\r\n resp = response; \r\n })\r\n .catch((err) => {\r\n console.log(\"thenCatch =>\", err);\r\n if(err.response.status === 401){\r\n document.location.reload();\r\n }\r\n });\r\n return resp;\r\n } \r\n catch(err){\r\n console.log(\"login error =>\", err);\r\n console.log(\"catch resp =>\", resp);\r\n return err;\r\n }\r\n }\r\n","\r\nimport {useSelector, useDispatch} from 'react-redux'\r\nimport { RootState } from \"../../../../setup/redux/RootReducer\";\r\nimport {useState,useEffect} from 'react' \r\nimport {GetStoreList} from '../redux/StoreOperations'\r\nimport {setStoreList} from '../redux/StoreSlice'\r\nimport {setCurrentStore} from '../redux/CurrentStoreSlice' \r\n\r\n\r\n\r\n\r\nexport default function StoreSelect() {\r\n\r\n const storeList = useSelector((state: RootState) => state.storeListReducer);\r\n const dispatch = useDispatch();\r\n const [detailErrorStr, setDetailErrorStr] = useState(\"\");\r\n\r\n // const [previewLoading, setPreviewLoading] = useState(false)\r\n\r\n useEffect(() => {\r\n setDetailErrorStr(\"\");\r\n // setPreviewLoading(false);\r\n const asynCall = async () => {\r\n let response:any = await GetStoreList();\r\n console.log(\"Response =>\", response);\r\n if(response.data != null){\r\n if(response.data.Status !=\"SUCCESS\"){\r\n setDetailErrorStr(response.data.Detail);\r\n }else{\r\n dispatch(setStoreList(response.data.Detail));\r\n console.log(response.data.Detail);\r\n }\r\n }else{\r\n setDetailErrorStr(\"Servis bağlantısı kurulamadı\");\r\n }\r\n }\r\n asynCall();\r\n }, [])\r\n\r\n const handleSubmission = async () => {\r\n // setPreviewLoading(true);\r\n setDetailErrorStr(\"\");\r\n\r\n // let response:any = await GetProductList();\r\n // if(response.data != null){\r\n // if(response.data.Status !=\"SUCCESS\"){\r\n // setDetailErrorStr(response.data.Detail);\r\n // }else{\r\n // dispatch(setStoreList(response.data.Detail));\r\n // console.log(response.data.Detail);\r\n // }\r\n // }else{\r\n // setDetailErrorStr(\"Servis bağlantısı kurulamadı\");\r\n // }\r\n\r\n // setPreviewLoading(false);\r\n }\r\n async function handleChangeStore(e:any) {\r\n \r\n console.log(\"*******************************\");\r\n console.log(e.target.data);\r\n const {name, value} = e.target;\r\n console.log(\"Value =>>\",value+\" \",name);\r\n \r\n if(value != \"0\"){\r\n let splittedValue = value.split(\"//\");\r\n console.log(\"splitted =>\",splittedValue)\r\n dispatch(setCurrentStore({storeNo: splittedValue[0],storeName:splittedValue[1]}))\r\n }\r\n }\r\n\r\n return(\r\n
\r\n
\r\n {/* begin::Header */}\r\n
\r\n
\r\n

\r\n Lütfen ürün aramak istediğiniz mağazayı seçin\r\n

\r\n
\r\n \r\n
\r\n
\r\n {/* */}\r\n
\r\n {detailErrorStr != \"\" && detailErrorStr != null &&
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
Dikkat
\r\n {detailErrorStr}\r\n
\r\n
\r\n
}\r\n
\r\n
\r\n
\r\n \r\n
\r\n {/*
\r\n \r\n
*/}\r\n
\r\n
\r\n {/*
\r\n \r\n
*/}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n}","import axios from 'axios' \r\nimport {ResponseHelper} from '../../../../setup/index'\r\nimport {API_URL} from '../../../../setup/helpers/apiUrl'\r\n\r\n\r\n\r\nexport const GET_PRODUCT_LIST = `${API_URL}/api/CallCenter/GetMetroProductFromService`\r\nexport const GET_PRODUCT_DETAIL = `${API_URL}/api/CallCenter/GetMetroProductDetailFromService`\r\n\r\nexport async function GetProductList(storeNumber:number,productReference:string,currentPageNumber:number){ \r\n let resp;\r\n try{\r\n await axios.get(GET_PRODUCT_LIST +\"?storeNumber=\"+storeNumber+\"&productReference=\" + productReference+\"¤tPageNumber=\"+currentPageNumber+\"&Target=CallCenter_Product&Api=GetProductList&UserSetting=CallCenterProductUser\")\r\n .then((response) =>{\r\n console.log(\"then =>\", response);\r\n resp = response; \r\n })\r\n .catch((err) => {\r\n console.log(\"thenCatch =>\", err);\r\n if(err.response.status === 401){\r\n document.location.reload();\r\n }\r\n });\r\n return resp;\r\n } \r\n catch(err){\r\n console.log(\"login error =>\", err);\r\n console.log(\"catch resp =>\", resp);\r\n return err;\r\n }\r\n }\r\n\r\n \r\nexport async function GetProductDetail(storeNumber:number,subsystemNo:number){ \r\n let resp;\r\n try{\r\n await axios.get(GET_PRODUCT_DETAIL +\"?storeNumber=\"+storeNumber+\"&subsystemNo=\" + subsystemNo+\"&Target=CallCenter_Product&Api=GetProductDetail&UserSetting=CallCenterProductUser\")\r\n .then((response) =>{\r\n console.log(\"then =>\", response);\r\n resp = response; \r\n })\r\n .catch((err) => {\r\n console.log(\"thenCatch =>\", err);\r\n if(err.response.status === 401){\r\n document.location.reload();\r\n }\r\n });\r\n return resp;\r\n } \r\n catch(err){\r\n console.log(\"login error =>\", err);\r\n console.log(\"catch resp =>\", resp);\r\n return err;\r\n }\r\n}","import { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState } from \"../../../../setup/redux/RootReducer\";\r\nimport { setProductDetail } from '../redux/ProductDetailSlice'\r\nimport { setCurrentStore } from '../redux/CurrentStoreSlice'\r\nimport { ProductDetail} from '../models/productServiceModels'\r\n\r\n\r\n\r\n\r\nexport default function StoreChange() {\r\n const currentStore = useSelector((state: RootState) => state.currentStoreReducer);\r\n const productListArray = useSelector((state: RootState) => state.productListReducer);\r\n const dispatch = useDispatch();\r\n\r\n\r\n const changeStore = () => {\r\n dispatch(setCurrentStore({ storeNo: 0, storeName: \"\" }));\r\n dispatch(setProductDetail(new ProductDetail()));\r\n\r\n }\r\nreturn(\r\n
\r\n \r\n Seçili mağaza: {currentStore.store.storeName.split(\">\")[1]}\r\n \r\n changeStore()} style={{ textDecorationLine: \"underline\", marginLeft: \"5%\", fontSize: \"14px\", position: \"absolute\", bottom: 0, cursor: 'pointer' }}>\r\n Değiştir\r\n \r\n
\r\n)\r\n}","function GetCurrentSearch() {\r\n const user = localStorage.getItem('currentSearchText');\r\n const resp = user != null ? JSON.parse(JSON.stringify(user.toString())) : user;\r\n return resp;\r\n}\r\n\r\nfunction SetCurrentSearch(user:string){\r\n localStorage.setItem('currentSearchText',user);\r\n}\r\n\r\nexport default {\r\n GetCurrentSearch,\r\n SetCurrentSearch\r\n};\r\n\r\n\r\n","import { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState } from \"../../../../setup/redux/RootReducer\";\r\nimport { useState } from 'react'\r\nimport { setProductList } from '../redux/ProductListSlice'\r\nimport { GetProductList } from '../redux/ProductOperations'\r\nimport { setProductDetail } from '../redux/ProductDetailSlice'\r\nimport { ProductDetail, ProductList } from '../models/productServiceModels'\r\nimport CurrentSearch from '../redux/CurrentSearch' \r\n\r\n\r\n\r\n\r\n\r\nexport default function ProductSearch() {\r\n const currentStore = useSelector((state: RootState) => state.currentStoreReducer);\r\n const productListArray = useSelector((state: RootState) => state.productListReducer);\r\n const dispatch = useDispatch();\r\n const [searchString, setSearchString] = useState(\"\");\r\n const [detailErrorStr, setDetailErrorStr] = useState(\"\");\r\n const [previewLoading, setPreviewLoading] = useState(false);\r\n\r\n const setInputValue = (e: any) => {\r\n console.log(\"girdi => \", e)\r\n CurrentSearch.SetCurrentSearch(e);\r\n setSearchString(e);\r\n }\r\n const handleSubmission = async () => {\r\n setPreviewLoading(true);\r\n setDetailErrorStr(\"\");\r\n\r\n if (searchString != \"\" && searchString != null) {\r\n let response: any = await GetProductList(currentStore.store.storeNo, searchString, 1);\r\n if (response.data != null) {\r\n if (response.data.Status != \"SUCCESS\") {\r\n setDetailErrorStr(response.data.Detail.productData);\r\n dispatch(setProductList(new ProductList));\r\n\r\n } else {\r\n dispatch(setProductList(response.data.Detail.productData));\r\n dispatch(setProductDetail(new ProductDetail));\r\n console.log(response.data.Detail);\r\n }\r\n } else {\r\n setDetailErrorStr(\"Servis bağlantısı kurulamadı\");\r\n }\r\n }\r\n else {\r\n setDetailErrorStr(\"Ürün bilgisi giriniz.\");\r\n }\r\n\r\n setPreviewLoading(false);\r\n }\r\n return (\r\n
\r\n
\r\n
\r\n

\r\n Lütfen aramak istediğiniz ürünü yazın\r\n

\r\n
\r\n
\r\n
\r\n
\r\n {detailErrorStr != \"\" && detailErrorStr != null &&
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
Dikkat
\r\n {detailErrorStr}\r\n
\r\n
\r\n
}\r\n
\r\n setInputValue(e.target.value)}\r\n className=\"form-control form-control-solid\" style={{ maxWidth: 250, display: 'inline' }} placeholder=\"Ürün adı\" />\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n )\r\n}","import { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState } from \"../../../../setup/redux/RootReducer\";\r\nimport { useState } from 'react'\r\nimport { Product, ProductDetail } from '../models/productServiceModels'\r\nimport { GetProductList, GetProductDetail } from '../redux/ProductOperations'\r\nimport { setProductList } from '../redux/ProductListSlice'\r\nimport { setProductDetail } from '../redux/ProductDetailSlice'\r\nimport StoreChange from '../components/StoreChange'\r\nimport ProductSearch from '../components/ProductSearch'\r\nimport { Button } from 'react-bootstrap-v5'\r\nimport CurrentSearch from '../redux/CurrentSearch' \r\n\r\n\r\nexport default function ProductListPage() {\r\n\r\n const currentStore = useSelector((state: RootState) => state.currentStoreReducer);\r\n const productListArray = useSelector((state: RootState) => state.productListReducer);\r\n const dispatch = useDispatch();\r\n const [detailErrorStr, setDetailErrorStr] = useState(\"\");\r\n const [previewLoading, setPreviewLoading] = useState(false);\r\n\r\n\r\n const getPage=async(page :number)=>{\r\n setPreviewLoading(true);\r\n setDetailErrorStr(\"\");\r\n const searchString=CurrentSearch.GetCurrentSearch();\r\n if (searchString != \"\" && searchString != null) {\r\n let response: any = await GetProductList(currentStore.store.storeNo, searchString, page);\r\n if (response.data != null) {\r\n if (response.data.Status != \"SUCCESS\") {\r\n setDetailErrorStr(response.data.Detail);\r\n console.log(\"response.data.Detail\");\r\n\r\n\r\n } else {\r\n dispatch(setProductList(response.data.Detail.productData));\r\n dispatch(setProductDetail(new ProductDetail));\r\n console.log(response.data.Detail);\r\n }\r\n } else {\r\n setDetailErrorStr(\"Servis bağlantısı kurulamadı\");\r\n }\r\n }\r\n else {\r\n setDetailErrorStr(\"Ürün numarası giriniz.\");\r\n }\r\n\r\n setPreviewLoading(false);\r\n }\r\n\r\n const getDetailImage = async (product: Product) => {\r\n console.log(product);\r\n let response: any = await GetProductDetail(currentStore.store.storeNo, product.productId);\r\n if (response.data != null) {\r\n if (response.data.Status != \"SUCCESS\") {\r\n\r\n setDetailErrorStr(response.data.Detail);\r\n } else {\r\n\r\n dispatch(setProductDetail(response.data.Detail));\r\n console.log(response.data.Detail);\r\n }\r\n } else {\r\n setDetailErrorStr(\"Servis bağlantısı kurulamadı\");\r\n }\r\n }\r\n function isPrevDisabled() {\r\n let value = true;\r\n productListArray.productList.pageCount <= 1 || productListArray.productList.currentPageNumber == 1 ? value = true : value = false;\r\n return value;\r\n }\r\n function isNextDisabled() {\r\n let value = true;\r\n productListArray.productList.pageCount <= 1 || productListArray.productList.currentPageNumber == productListArray.productList.pageCount ? value = true : value = false;\r\n return value;\r\n }\r\n\r\n\r\n return (\r\n
\r\n\r\n
\r\n \r\n {/* begin::Header */}\r\n
\r\n \r\n \r\n \r\n
\r\n {productListArray.productList.results != null && productListArray.productList.results[0] != null &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {productListArray.productList.results.map(x =>\r\n \r\n getDetailImage(x)} style={{ cursor: 'pointer' }}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
Ürün AdıStokAdetFiyatKampanya Türü
\r\n \r\n {x.productName} ({x.productId}){x.productStockStatus == 1 ?\r\n \r\n \r\n \r\n \r\n : \r\n \r\n \r\n }{x.stockQuantity}₺{x.price.toFixed(2)}{x.packageType}
\r\n }\r\n
\r\n {' '}{' '} \r\n {' '} \r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n )\r\n}","import { useState, useEffect } from 'react'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState } from \"../../../../setup/redux/RootReducer\"\r\nimport { Tabs, Tab, Button, Carousel } from 'react-bootstrap-v5'\r\nimport StoreChange from '../components/StoreChange'\r\nimport ProductSearch from '../components/ProductSearch'\r\nimport { setProductDetail } from '../redux/ProductDetailSlice'\r\nimport {ProductDetail } from '../models/productServiceModels'\r\n\r\n\r\n//import {setCurrentStore} from '../redux/CurrentStoreSlice'\r\n// import {GetProductList, GetProductDetail} from '../redux/ProductOperations'\r\n// import {setProductList} from '../redux/ProductListSlice'\r\n\r\n\r\nexport default function ProductDetailPage() {\r\n const productDetail = useSelector((state: RootState) => state.productDetailReducer);\r\n const [key, setKey] = useState(\"\");\r\n const dispatch = useDispatch();\r\nconst setDetail=()=>{\r\n dispatch(setProductDetail(new ProductDetail()));\r\n}\r\n const MyCarousel = () => (\r\n } nextIcon={} nextLabel=\"\" prevLabel=\"\">\r\n {productDetail.productDetail.productImages.map((i, index) => (\r\n \r\n\r\n \r\n \r\n\r\n ))}\r\n \r\n\r\n );\r\n const RenderHTML = (props: any) => (