{"version":3,"sources":["_metronic/i18n/Metronici18n.tsx","_metronic/layout/core/DefaultLayoutConfig.ts","_metronic/helpers/AssetHelpers.ts","_metronic/helpers/RouterHelpers.ts","_metronic/helpers/components/KTSVG.tsx","_metronic/helpers/crud-helper/models.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/AsideMenuItemWithSub.tsx","_metronic/layout/components/aside/AsideMenuItem.tsx","_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/_SwapperComponent.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/page-title/DefaultTitle.tsx","_metronic/partials/layout/help-drawer/HelpDrawer.tsx","app/modules/auth/core/AuthHelpers.ts","app/modules/auth/core/_requests.ts","app/components/LoadingScreen.tsx","app/modules/auth/core/Auth.tsx","app/modules/auth/components/ForgotPassword.tsx","app/modules/auth/components/Login.tsx","app/modules/auth/components/AutoLogin.tsx","app/modules/auth/AuthPage.tsx","app/modules/auth/Logout.tsx","app/pages/dashboard/_modals/Futurisk/ResetPasswordModal.tsx","_metronic/partials/layout/header-menus/HeaderUserMenu.tsx","_metronic/partials/modals/create-app/Main.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/MasterLayout.tsx","app/modules/futurisk/ConnectAndHealForm.tsx","app/pages/dashboard/_modals/Futurisk/ConnectAndHealModal.tsx","app/modules/futurisk/ConnectAndHealLinkWidget.tsx","app/modules/futurisk/DashboardLinkWidget.tsx","app/modules/futurisk/PristynCareForm.tsx","app/pages/dashboard/_modals/Futurisk/PristynCareModal.tsx","app/modules/futurisk/PristynCareLinkWidget.tsx","app/modules/futurisk/WebView/MyWebVieWModel.tsx","app/modules/futurisk/WebView/WebViewLinkWidget.tsx","app/pages/dashboard/components/ValueAdds.tsx","app/pages/newdashboard/DashboardMiniHeader.tsx","app/modules/futurisk/claim/ClaimModel.tsx","app/modules/futurisk/claim/ClaimLinkWidget.tsx","app/modules/futurisk/FamilyListWidget.tsx","app/modules/futurisk/family/FamilyListModel.tsx","app/modules/futurisk/family/FamilyLinkWidget.tsx","app/modules/futurisk/DocumentListWidget.tsx","app/pages/dashboard/_modals/Futurisk/DocumentModal.tsx","app/modules/futurisk/DocumentLinkWidget.tsx","app/modules/futurisk/LinkWidget.tsx","app/pages/dashboard/components/Policy.tsx","app/modules/futurisk/midterm/MidTermForm.tsx","app/modules/futurisk/midterm/MidTermModal.tsx","app/modules/futurisk/midterm/MidTermLinkWidget.tsx","app/pages/dashboard/components/HelpCenter.tsx","app/pages/dashboard/components/SocialMediaLinks.tsx","app/pages/dashboard/DashboardWrapper.tsx","app/routing/PrivateRoutes.tsx","app/modules/errors/components/Error500.tsx","app/modules/errors/components/Error404.tsx","app/modules/errors/ErrorsPage.tsx","trackPathForAnalytics.tsx","_metronic/i18n/i18nProvider.tsx","_metronic/layout/MasterInit.tsx","app/App.tsx","app/routing/AppRoutes.tsx","index.tsx"],"names":["I18N_CONFIG_KEY","process","REACT_APP_I18N_CONFIG_KEY","initialState","selectedLang","I18nContext","createContext","MetronicI18nProvider","children","lang","ls","localStorage","getItem","JSON","parse","er","console","error","getConfig","Provider","value","DefaultLayoutConfig","main","type","primaryColor","darkSkinEnabled","loader","display","scrolltop","header","width","left","fixed","desktop","tabletAndMobile","menuIcon","megaMenu","aside","theme","menu","minimized","minimize","hoverable","content","layout","toolbar","tabletAndMobileMode","layouts","toolbar1","height","heightAndTabletMobileMode","toolbar2","toolbar3","toolbar4","toolbar5","footer","pageTitle","breadCrumbs","description","direction","responsive","responsiveBreakpoint","responsiveTarget","toAbsoluteUrl","pathname","checkIsActive","url","current","split","getCurrentUrl","indexOf","KTSVG","className","path","svgClassName","src","LAYOUT_CONFIG_KEY","getEmptyHTMLAttributes","asideMenu","Map","headerMobile","headerMenu","headerContainer","getEmptyCSSVariables","body","LayoutSetup","classes","asideToggle","toolbarContainer","contentContainer","footerContainer","sidebar","attributes","Object","assign","cssVariables","config","Array","from","document","forEach","attr","removeAttribute","name","style","backgroundImage","setAttribute","class","classList","add","push","typeOptions","bodyStyles","cssText","this","set","initLayout","initHeader","initPageTitle","initToolbar","initContent","initAside","initFooter","initAsideMenu","fieldsToUpdate","updatedConfig","initCSSClasses","initCSSVariables","initHTMLAttributes","isLoaded","initConfig","setItem","stringify","setLayout","getLayout","bootstrap","updatePartialConfig","LayoutContext","enableSplashScreen","splashScreen","getElementById","setProperty","disableSplashScreen","LayoutProvider","useState","setConfig","setClasses","setAttributes","setCSSVariables","_themeConfig","cl","remove","setTimeout","useEffect","useLayout","useContext","PageDataContext","setPageTitle","_title","setPageBreadcrumbs","_breadcrumbs","setPageDescription","_description","PageDataProvider","pageDescription","pageBreadcrumbs","usePageData","PageTitle","breadcrumbs","toString","MetronicSplashScreenContext","undefined","LayoutSplashScreen","visible","setCount","prev","AsideMenuItemWithSub","to","title","icon","fontIcon","hasBullet","isActive","useLocation","clsx","AsideMenuItem","active","AsideMenuMain","intl","useIntl","formatMessage","id","target","href","REACT_APP_PREVIEW_DOCS_URL","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","key","data","instanceData","store","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","window","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","getCSSVariableValue","variableName","hex","trim","getElementActualCss","prop","cache","css","getAttribute","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","getAttributeValueByBreakpoint","incomingAttr","jsonStr","join","matched","substring","toJSON","resultKey","resultBreakpoint","EventHandlerUtil","metas","handlerId","meta","getEventMetasByName","setEventMetasByName","handerId","fired","getEventsMetaByHandlerId","setEventMetaByNameAndHandlerId","handler","setFiredByNameAndHandlerId","addEvent","removeEvent","on","DrawerStore","instanceId","drawerComponentObj","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","elementId","hideAll","getAllInstances","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","state","isLastStep","isFirstStep","animateClass","isBetweenStep","goto","goNext","getNextStepIndex","goPrev","getPrevStepIndex","goFirst","goLast","getCurrentStepIndex","getPassedStepIndex","destroy","log","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","SwapperStore","defaultSwapperOptions","mode","defaultSwapperQueires","attrQuery","SwapperComponent","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","offsetValue","strategy","modifiers","flipVariations","_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","menuItem","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","clear","responsiveFormMode","isProcessing","getQuery","getMenu","getFormElement","context","Search","AsideMenu","asideMenuCSSClasses","scrollRef","useRef","ref","AsideDefault","Footer","getFullYear","DefaultTitle","isSeparator","AUTH_LOCAL_STORAGE_KEY","getAuth","lsValue","auth","API_URL","REQUEST_PASSWORD_URL","SSO_LOGIN_URL","pristyncare_URL","ResetPassword","MidtermUrl","ResetDefaultPassword","loginid","password","bodyFormData","FormData","axios","post","headers","pristyncare","Mobile","FirstName","disease","City","CrmLoginId","login","email","page","getUserByToken","token","username","Capacitor","getPlatform","LoadingScreen","alt","initAuthContextPropsState","authHelper","saveAuth","currentUser","setCurrentUser","logout","AuthContext","useAuth","AuthProvider","setAuth","removeItem","AuthInit","didRequest","loading","setLoading","requestUser","user","Status","Error","initialValues","forgotPasswordSchema","Yup","shape","min","max","required","ForgotPassword","hasErrors","setHasErrors","formik","useFormik","validationSchema","onSubmit","values","setStatus","setSubmitting","request","then","catch","noValidate","handleSubmit","placeholder","autoComplete","getFieldProps","touched","errors","role","disabled","isSubmitting","isValid","loginSchema","Login","URLSearchParams","base64","decode","debug","status","marginLeft","AutoLogin","navigate","useNavigate","location","AuthLayout","AuthPage","Logout","reload","ResetSchema","Password","ConfirmPassword","oneOf","ResetPasswordModal","handleClose","initMap","UserName","Modal","tabIndex","dialogClassName","onHide","Row","Col","xs","md","HeaderUserMenu","modalShow","setModalShow","Name","onClick","inits","appName","category","framework","dbName","dbType","nameOnCard","cardNumber","cardExpiryMonth","cardExpiryYear","cardCvv","saveCard","createAppSchema","label","Main","stepperRef","currentSchema","setCurrentSchema","initValues","prevStep","actions","resetForm","as","Topbar","HeaderWrapper","Toolbar1","Toolbar","ScrollTop","isFirstRun","reInitialization","stickyHeader","updateHeaderSticky","Content","MasterLayout","registrationSchema","Email","ContactNumber","Gender","Dob","EmployeeId","Address","Pincode","acceptTerms","ConnectAndHealForm","PhoneNumber","contactNumber","address","pincode","dob","employeeId","gender","alert","htmlFor","ConnectAndHealModal","dissmissLocation","ConnectAndHealLinkWidget","avatar","padding","linkview","isNativePlatform","open","browser","InAppBrowser","create","zoom","hideurlbar","toolbarcolor","removeSpinner","executeScript","code","subscribe","DashboardLinkWidget","rel","backgroundPosition","backgroundSize","backgroundColor","dangerouslySetInnerHTML","__html","city","firstname","mobile","PristynCareForm","source","Form","Select","size","PristynCareModal","PristynCareLinkWidget","MyWebVieWModel","WebViewLinkWidget","ValueAdds","setIsLoaded","setItems","a","Tabs","tab","Identifier","Action","Icon","Description","Url","DashboardMiniHeader","IsDefaultPasswordNotify","toast","LogoUrl","minHeight","textTransform","toLocaleLowerCase","IsHR","ClientName","IsDefaultPassword","ClaimModel","Claim","claim","ClaimType","ClaimNo","IntimationDate","PatientName","Relation","Diagnosis","Hospital","DateOfAdmission","DateOfDischarge","ApprovedDate","SettledDate","ClaimedAmount","ApprovedAmount","Deductions","ReasonForDeduction","BalanceSuminsured","ClaimStatus","ClaimLinkWidget","FamilyListWidget","color","FamilyMembers","family","DOB","SumInsured","FamilyListModel","Title","FamilyLinkWidget","DocumentListWidget","Documents","Pdf","DocumentName","DocumentModal","DocumentLinkWidget","LinkWidget","Policy","MyPolicies","policy","PolicyType","InsurerInsurerName","TpaidThirdPartyAdministratorName","moment","PolicyEffectiveDate","format","ExpiryDate","PolicyTypeId","CRMUrl","Claims","EcardUrl","NetworkHospitalUrl","DateOfJoin","resolve","thirtyFiveDaysAgo","setDate","getDate","MidTermForm","dateOfBirth","relationId","dateOfJoin","crmClientId","setFieldValue","toISOString","MidTermModal","MidTermLinkWidget","HelpCenter","paddingRight","EscalationMatrix","Entities","esclation","Level1EmployeeName","Level1MobileNo","Level1Email","CRMClientId","SocialMediaLinks","DashboardPage","fallback","DashboardWrapper","PrivateRoutes","SuspensedView","baseColor","TopBarProgress","barColors","barThickness","shadowBlur","Error500","Error404","ErrorsLayout","ErrorsPage","ga4react","GA4React","initialize","trackPathForAnalytics","ga","pageview","err","allMessages","de","en","es","fr","ja","zh","I18nProvider","locale","messages","MasterInit","App","analytics","useCallback","AppRoutes","basename","defaults","Accept","interceptors","use","Promise","reject","setupAxios","Chart","register","registerables","queryClient","QueryClient","ReactGA","ReactDOM","render","client"],"mappings":"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","file":"static/js/main.45d24edd.chunk.js","sourcesContent":["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 {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: 'fixed', // 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: false,\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: 'fixed', // 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: 'fixed', // 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","export const toAbsoluteUrl = (pathname: string) => process.env.PUBLIC_URL + pathname\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","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","import {Dispatch, SetStateAction} from 'react'\r\n\r\nexport type ID = undefined | null | number\r\n\r\nexport type PaginationState = {\r\n page: number\r\n items_per_page: 10 | 30 | 50 | 100\r\n links?: Array<{label: string; active: boolean; url: string | null; page: number | null}>\r\n}\r\n\r\nexport type SortState = {\r\n sort?: string\r\n order?: 'asc' | 'desc'\r\n}\r\n\r\nexport type FilterState = {\r\n filter?: unknown\r\n}\r\n\r\nexport type SearchState = {\r\n search?: string\r\n}\r\n\r\nexport type Response = {\r\n data?: T\r\n payload?: {\r\n message?: string\r\n errors?: {\r\n [key: string]: Array\r\n }\r\n pagination?: PaginationState\r\n }\r\n}\r\n\r\nexport type QueryState = PaginationState & SortState & FilterState & SearchState\r\n\r\nexport type QueryRequestContextProps = {\r\n state: QueryState\r\n updateState: (updates: Partial) => void\r\n}\r\n\r\nexport const initialQueryState: QueryState = {\r\n page: 1,\r\n items_per_page: 10,\r\n}\r\n\r\nexport const initialQueryRequest: QueryRequestContextProps = {\r\n state: initialQueryState,\r\n updateState: () => {},\r\n}\r\n\r\nexport type QueryResponseContextProps = {\r\n response?: Response> | undefined\r\n refetch: () => void\r\n isLoading: boolean\r\n query: string\r\n}\r\n\r\nexport const initialQueryResponse = {refetch: () => {}, isLoading: false, query: ''}\r\n\r\nexport type ListViewContextProps = {\r\n selected: Array\r\n onSelect: (selectedId: ID) => void\r\n onSelectAll: () => void\r\n clearSelected: () => void\r\n // NULL => (CREATION MODE) | MODAL IS OPENED\r\n // NUMBER => (EDIT MODE) | MODAL IS OPENED\r\n // UNDEFINED => MODAL IS CLOSED\r\n itemIdForUpdate?: ID\r\n setItemIdForUpdate: Dispatch>\r\n isAllSelected: boolean\r\n disabled: boolean\r\n}\r\n\r\nexport const initialListView: ListViewContextProps = {\r\n selected: [],\r\n onSelect: () => {},\r\n onSelectAll: () => {},\r\n clearSelected: () => {},\r\n setItemIdForUpdate: () => {},\r\n isAllSelected: false,\r\n disabled: false,\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 {toAbsoluteUrl} from '../../helpers'\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.style.backgroundImage = `url(${toAbsoluteUrl('/media/patterns/header-bg.jpg')})`\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.style.cssText += 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 enableSplashScreen()\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 {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 AsideMenuItemWithSub: React.FC = ({\r\n children,\r\n to,\r\n title,\r\n icon,\r\n fontIcon,\r\n hasBullet,\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 \r\n
\r\n {children}\r\n
\r\n \r\n )\r\n}\r\n\r\nexport {AsideMenuItemWithSub}\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","/* 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\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 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 \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: Array = []\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, target?: any, 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, target, e)\r\n }\r\n } else {\r\n return handler.callback.call(this, target, 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 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 class DrawerStore {\r\n static store: Map = new Map()\r\n\r\n public static set(instanceId: string, drawerComponentObj: DrawerComponent): void {\r\n if (DrawerStore.has(instanceId)) {\r\n return\r\n }\r\n\r\n DrawerStore.store.set(instanceId, drawerComponentObj)\r\n }\r\n\r\n public static get(instanceId: string): DrawerComponent | undefined {\r\n if (!DrawerStore.has(instanceId)) {\r\n return\r\n }\r\n return DrawerStore.store.get(instanceId)\r\n }\r\n\r\n public static remove(instanceId: string): void {\r\n if (!DrawerStore.has(instanceId)) {\r\n return\r\n }\r\n\r\n DrawerStore.store.delete(instanceId)\r\n }\r\n\r\n public static has(instanceId: string): boolean {\r\n return DrawerStore.store.has(instanceId)\r\n }\r\n\r\n public static getAllInstances() {\r\n return DrawerStore.store\r\n }\r\n}\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 DrawerStore.set(this.element.id, 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 = (elementId: string): boolean => {\r\n return DrawerStore.has(elementId)\r\n }\r\n\r\n public static getInstance = (elementId: string) => {\r\n return DrawerStore.get(elementId)\r\n }\r\n\r\n public static hideAll = () => {\r\n const oldInstances = DrawerStore.getAllInstances()\r\n oldInstances.forEach((dr) => {\r\n dr.hide()\r\n })\r\n }\r\n\r\n public static updateAll = () => {\r\n const oldInstances = DrawerStore.getAllInstances()\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.id)\r\n if (!drawer) {\r\n drawer = new DrawerComponent(item, defaultDrawerOptions)\r\n }\r\n drawer.element = item\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.id)\r\n if (instance) {\r\n instance.element = item\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 updateAll() {\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\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 ScrollComponent.updateAll()\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.getCheckScore()\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 getAttributeValueByBreakpoint,\r\n stringSnakeToCamel,\r\n getObjectPropertyValueByKey,\r\n EventHandlerUtil,\r\n throttle,\r\n} from '../_utils/index'\r\n\r\nexport class SwapperStore {\r\n static store: Map = new Map()\r\n\r\n public static set(instanceId: string, drawerComponentObj: SwapperComponent): void {\r\n if (SwapperStore.has(instanceId)) {\r\n return\r\n }\r\n\r\n SwapperStore.store.set(instanceId, drawerComponentObj)\r\n }\r\n\r\n public static get(instanceId: string): SwapperComponent | undefined {\r\n if (!SwapperStore.has(instanceId)) {\r\n return\r\n }\r\n return SwapperStore.store.get(instanceId)\r\n }\r\n\r\n public static remove(instanceId: string): void {\r\n if (!SwapperStore.has(instanceId)) {\r\n return\r\n }\r\n\r\n SwapperStore.store.delete(instanceId)\r\n }\r\n\r\n public static has(instanceId: string): boolean {\r\n return SwapperStore.store.has(instanceId)\r\n }\r\n\r\n public static getAllInstances() {\r\n return SwapperStore.store\r\n }\r\n}\r\n\r\nexport interface ISwapperOptions {\r\n mode: string\r\n}\r\n\r\nexport interface ISwapperQueries {\r\n componentName: string\r\n instanseQuery: string\r\n attrQuery: string\r\n}\r\n\r\nconst defaultSwapperOptions: ISwapperOptions = {\r\n mode: 'append',\r\n}\r\n\r\nconst defaultSwapperQueires: ISwapperQueries = {\r\n componentName: 'swapper',\r\n instanseQuery: '[data-kt-swapper=\"true\"]',\r\n attrQuery: 'data-kt-swapper-',\r\n}\r\n\r\nclass SwapperComponent {\r\n element: HTMLElement\r\n options: ISwapperOptions\r\n queries: ISwapperQueries\r\n\r\n constructor(_element: HTMLElement, _options: ISwapperOptions, _queries: ISwapperQueries) {\r\n this.element = _element\r\n this.options = Object.assign(defaultSwapperOptions, _options)\r\n this.queries = _queries\r\n\r\n // Initial update\r\n this.update()\r\n\r\n SwapperStore.set(this.element.id, 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 = defaultSwapperQueires.componentName\r\n ): SwapperComponent | null => {\r\n const place = SwapperStore.get(el.id)\r\n if (place) {\r\n return place as SwapperComponent\r\n }\r\n\r\n return null\r\n }\r\n\r\n public static createInstances = (\r\n selector: string = defaultSwapperQueires.instanseQuery,\r\n options: ISwapperOptions = defaultSwapperOptions,\r\n queries: ISwapperQueries = defaultSwapperQueires\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 = SwapperComponent.getInstance(item)\r\n if (!place) {\r\n place = new SwapperComponent(item, options, queries)\r\n }\r\n })\r\n }\r\n\r\n public static createInsance = (\r\n selector: string = defaultSwapperQueires.instanseQuery,\r\n options: ISwapperOptions = defaultSwapperOptions,\r\n queries: ISwapperQueries = defaultSwapperQueires\r\n ): SwapperComponent | 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 = SwapperComponent.getInstance(item)\r\n if (!place) {\r\n place = new SwapperComponent(item, options, queries)\r\n }\r\n return place\r\n }\r\n\r\n public static bootstrap = (selector: string = defaultSwapperQueires.instanseQuery) => {\r\n SwapperComponent.createInstances(selector)\r\n }\r\n\r\n public static reinitialization = (selector: string = defaultSwapperQueires.instanseQuery) => {\r\n SwapperComponent.createInstances(selector)\r\n }\r\n}\r\n\r\n// Window resize handler\r\nwindow.addEventListener('resize', function () {\r\n let timer\r\n throttle(\r\n timer,\r\n () => {\r\n // Locate and update Offcanvas instances on window resize\r\n const elements = document.querySelectorAll(defaultSwapperQueires.instanseQuery)\r\n elements.forEach((el) => {\r\n const place = SwapperComponent.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 {SwapperComponent, defaultSwapperOptions, defaultSwapperQueires}\r\n","import {createPopper, VirtualElement} from '@popperjs/core'\r\nimport {\r\n getElementChild,\r\n getElementParents,\r\n getAttributeValueByBreakpoint,\r\n getUniqueIdWithPrefix,\r\n DataUtil,\r\n ElementStyleUtil,\r\n EventHandlerUtil,\r\n insertAfterElement,\r\n slideUp,\r\n slideDown,\r\n DOMEventHandlerUtil,\r\n throttle,\r\n getHighestZindex,\r\n} from '../_utils/index'\r\n\r\nexport interface MenuOptions {\r\n dropdown: {\r\n hoverTimeout: number\r\n zindex: number\r\n }\r\n accordion: {\r\n slideSpeed: number\r\n expand: boolean\r\n }\r\n}\r\n\r\nconst defaultMenuOptions: MenuOptions = {\r\n dropdown: {\r\n hoverTimeout: 200,\r\n zindex: 105,\r\n },\r\n accordion: {\r\n slideSpeed: 250,\r\n expand: false,\r\n },\r\n}\r\n\r\ntype PopperPlacement =\r\n | 'right'\r\n | 'auto'\r\n | 'auto-start'\r\n | 'auto-end'\r\n | 'top'\r\n | 'bottom'\r\n | 'left'\r\n | 'top-start'\r\n | 'top-end'\r\n | 'bottom-start'\r\n | 'bottom-end'\r\n | 'right-start'\r\n | 'right-end'\r\n | 'left-start'\r\n | 'left-end'\r\n | undefined\r\n\r\nclass MenuComponent {\r\n element: HTMLElement\r\n options: MenuOptions\r\n instanceUid: string\r\n triggerElement: HTMLElement | null = null\r\n\r\n constructor(_element: HTMLElement, options: MenuOptions) {\r\n this.element = _element\r\n this.options = Object.assign(defaultMenuOptions, options)\r\n this.instanceUid = getUniqueIdWithPrefix('menu')\r\n // this.element.setAttribute('data-kt-menu', 'true')\r\n this._setTriggerElement()\r\n this._update()\r\n DataUtil.set(this.element, 'menu', this)\r\n return this\r\n }\r\n\r\n // Set external trigger element\r\n private _setTriggerElement = () => {\r\n const target = document.querySelector(\r\n `[data-kt-menu-target=\"#${this.element.getAttribute('id')}\"`\r\n )\r\n\r\n if (target) {\r\n this.triggerElement = target as HTMLElement\r\n } else if (this.element.closest('[data-kt-menu-trigger]')) {\r\n this.triggerElement = this.element.closest('[data-kt-menu-trigger]') as HTMLElement\r\n } else if (\r\n this.element.parentNode &&\r\n getElementChild(this.element.parentNode as HTMLElement, '[data-kt-menu-trigger]')\r\n ) {\r\n const child = getElementChild(\r\n this.element.parentNode as HTMLElement,\r\n '[data-kt-menu-trigger]'\r\n )\r\n if (child) {\r\n this.triggerElement = child\r\n }\r\n }\r\n\r\n if (this.triggerElement) {\r\n DataUtil.set(this.triggerElement, 'menu', this)\r\n }\r\n }\r\n\r\n // Test if menu has external trigger element\r\n private _isTriggerElement = (item: HTMLElement) => {\r\n return this.triggerElement === item\r\n }\r\n\r\n // Get item option(through html attributes)\r\n private _getItemOption = (item: HTMLElement, name: string) => {\r\n let value: string | JSON | null | boolean = null\r\n if (item && item.hasAttribute('data-kt-menu-' + name)) {\r\n const attr = item.getAttribute('data-kt-menu-' + name) || ''\r\n value = getAttributeValueByBreakpoint(attr)\r\n if (value !== null && String(value) === 'true') {\r\n value = true\r\n } else if (value !== null && String(value) === 'false') {\r\n value = false\r\n }\r\n }\r\n return value\r\n }\r\n\r\n // Get item element\r\n private _getItemElement = (_element: HTMLElement) => {\r\n // Element is the external trigger element\r\n if (this._isTriggerElement(_element)) {\r\n return _element\r\n }\r\n\r\n // Element has item toggler attribute\r\n if (_element.hasAttribute('data-kt-menu-trigger')) {\r\n return _element\r\n }\r\n\r\n // Element has item DOM reference in it's data storage\r\n const itemElement = DataUtil.get(_element, 'item')\r\n if (itemElement) {\r\n return itemElement\r\n }\r\n\r\n // Item is parent of element\r\n const item = _element.closest('.menu-item[data-kt-menu-trigger]')\r\n if (item) {\r\n return item\r\n }\r\n\r\n // Element's parent has item DOM reference in it's data storage\r\n const sub = _element.closest('.menu-sub')\r\n if (sub) {\r\n const subItem = DataUtil.get(sub as HTMLElement, 'item')\r\n if (subItem) {\r\n return subItem\r\n }\r\n }\r\n }\r\n\r\n // Get item parent element\r\n private _getItemParentElement = (item: HTMLElement) => {\r\n const sub = item.closest('.menu-sub')\r\n if (!sub) {\r\n return null\r\n }\r\n\r\n const subItem = DataUtil.get(sub as HTMLElement, 'item')\r\n if (subItem) {\r\n return subItem\r\n }\r\n\r\n const parentItem = sub.closest('.menu-item[data-kt-menu-trigger]')\r\n if (sub && parentItem) {\r\n return parentItem\r\n }\r\n\r\n return null\r\n }\r\n\r\n // Get item parent elements\r\n private _getItemParentElements = (item: HTMLElement) => {\r\n const parents: Array = []\r\n let parent: Element\r\n let i = 0\r\n let buffer: HTMLElement = item\r\n\r\n do {\r\n parent = this._getItemParentElement(buffer)\r\n if (parent) {\r\n parents.push(parent)\r\n buffer = parent as HTMLElement\r\n }\r\n\r\n i++\r\n } while (parent !== null && i < 20)\r\n\r\n if (this.triggerElement) {\r\n parents.unshift(this.triggerElement)\r\n }\r\n\r\n return parents\r\n }\r\n\r\n // Prepare popper config for dropdown(see: https://popper.js.org/docs/v2/)\r\n private _getDropdownPopperConfig = (item: HTMLElement) => {\r\n // Placement\r\n const placementOption = this._getItemOption(item, 'placement')\r\n let placement: PopperPlacement = 'right'\r\n if (placementOption) {\r\n placement = placementOption as PopperPlacement\r\n }\r\n\r\n // Flip\r\n // const flipValue = this._getItemOption(item, 'flip')\r\n // const flip = flipValue ? flipValue.toString().split(',') : []\r\n\r\n // Offset\r\n const offsetValue = this._getItemOption(item, 'offset')\r\n const offset = offsetValue ? offsetValue.toString().split(',') : []\r\n\r\n // Strategy\r\n const strategy: 'absolute' | 'fixed' | undefined =\r\n this._getItemOption(item, 'overflow') === true ? 'absolute' : 'fixed'\r\n\r\n return {\r\n placement: placement,\r\n strategy: strategy,\r\n modifiers: [\r\n {\r\n name: 'offset',\r\n options: {\r\n offset: offset,\r\n },\r\n },\r\n {\r\n name: 'preventOverflow',\r\n },\r\n {\r\n name: 'flip',\r\n options: {\r\n // altBoundary: true,\r\n // fallbackPlacements: flip,\r\n flipVariations: false,\r\n },\r\n },\r\n ],\r\n }\r\n }\r\n\r\n // Get item child element\r\n private _getItemChildElement = (item: HTMLElement) => {\r\n let selector = item\r\n\r\n const subItem = DataUtil.get(item, 'sub')\r\n if (subItem) {\r\n selector = subItem\r\n }\r\n\r\n if (selector) {\r\n //element = selector.querySelector('.show.menu-item[data-kt-menu-trigger]');\r\n const element = selector.querySelector('.menu-item[data-kt-menu-trigger]')\r\n if (element) {\r\n return element\r\n }\r\n }\r\n return null\r\n }\r\n\r\n // Get item child elements\r\n private _getItemChildElements = (item: HTMLElement) => {\r\n const children: Array = []\r\n let child: Element | null\r\n let i = 0\r\n let buffer = item\r\n do {\r\n child = this._getItemChildElement(buffer)\r\n if (child) {\r\n children.push(child)\r\n buffer = child as HTMLElement\r\n }\r\n\r\n i++\r\n } while (child !== null && i < 20)\r\n\r\n return children\r\n }\r\n\r\n // Get item sub element\r\n private _getItemSubElement = (item: HTMLElement) => {\r\n if (!item) {\r\n return null\r\n }\r\n\r\n if (this._isTriggerElement(item)) {\r\n return this.element\r\n }\r\n\r\n if (item.classList.contains('menu-sub')) {\r\n return item\r\n } else if (DataUtil.has(item, 'sub')) {\r\n return DataUtil.get(item, 'sub')\r\n } else {\r\n return getElementChild(item, '.menu-sub')\r\n }\r\n }\r\n\r\n private _getCss = (el: HTMLElement, styleProp: string) => {\r\n const defaultView = (el.ownerDocument || document).defaultView\r\n if (!defaultView) {\r\n return ''\r\n }\r\n\r\n // sanitize property name to css notation\r\n // (hyphen separated words eg. font-Size)\r\n styleProp = styleProp.replace(/([A-Z])/g, '-$1').toLowerCase()\r\n\r\n return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp)\r\n }\r\n\r\n // Get item sub type\r\n private _getItemSubType = (element: HTMLElement) => {\r\n const sub = this._getItemSubElement(element)\r\n if (sub && parseInt(this._getCss(sub, 'z-index')) > 0) {\r\n return 'dropdown'\r\n } else {\r\n return 'accordion'\r\n }\r\n }\r\n\r\n // Test if item's sub is shown\r\n private _isItemSubShown = (item: HTMLElement) => {\r\n let sub = this._getItemSubElement(item)\r\n if (sub) {\r\n if (this._getItemSubType(item) === 'dropdown') {\r\n return sub.classList.contains('show') && sub.hasAttribute('data-popper-placement')\r\n } else {\r\n return item.classList.contains('show')\r\n }\r\n }\r\n\r\n return false\r\n }\r\n\r\n // Test if item dropdown is permanent\r\n private _isItemDropdownPermanent = (item: HTMLElement) => {\r\n return this._getItemOption(item, 'permanent') === true\r\n }\r\n\r\n // Test if item's parent is shown\r\n private _isItemParentShown = (item: HTMLElement) => {\r\n return getElementParents(item, '.menu-item.show').length > 0\r\n }\r\n\r\n // Test of it is item sub element\r\n private _isItemSubElement = (item: HTMLElement) => {\r\n return item.classList.contains('menu-sub')\r\n }\r\n\r\n // Test if item has sub\r\n private _hasItemSub = (item: HTMLElement) => {\r\n return item.classList.contains('menu-item') && item.hasAttribute('data-kt-menu-trigger')\r\n }\r\n\r\n // Get link element\r\n private _getItemLinkElement = (item: HTMLElement) => {\r\n return getElementChild(item, '.menu-link')\r\n }\r\n\r\n // Get toggle element\r\n private _getItemToggleElement = (item: HTMLElement) => {\r\n if (this.triggerElement) {\r\n return this.triggerElement\r\n }\r\n\r\n return this._getItemLinkElement(item)\r\n }\r\n\r\n // Show item dropdown\r\n private _showDropdown = (item: HTMLElement) => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.show') === false) {\r\n return\r\n }\r\n\r\n // Hide all currently shown dropdowns except current one\r\n MenuComponent.hideDropdowns(item)\r\n\r\n // const toggle = this._isTriggerElement(item) ? item : this._getItemLinkElement(item);\r\n const sub = this._getItemSubElement(item)\r\n const width = this._getItemOption(item, 'width')\r\n const height = this._getItemOption(item, 'height')\r\n\r\n let zindex = this.options.dropdown.zindex\r\n const parentZindex = getHighestZindex(item) // update\r\n // Apply a new z-index if dropdown's toggle element or it's parent has greater z-index // update\r\n if (parentZindex !== null && parentZindex >= zindex) {\r\n zindex = parentZindex + 1\r\n }\r\n\r\n if (zindex) {\r\n ElementStyleUtil.set(sub, 'z-index', zindex)\r\n }\r\n\r\n if (width) {\r\n ElementStyleUtil.set(sub, 'width', width)\r\n }\r\n\r\n if (height) {\r\n ElementStyleUtil.set(sub, 'height', height)\r\n }\r\n\r\n this.initDropdownPopper(item, sub)\r\n\r\n item.classList.add('show')\r\n item.classList.add('menu-dropdown')\r\n sub.classList.add('show')\r\n\r\n // Append the sub the the root of the menu\r\n if (this._getItemOption(item, 'overflow') === true) {\r\n document.body.appendChild(sub)\r\n DataUtil.set(item, 'sub', sub)\r\n DataUtil.set(sub, 'item', item)\r\n DataUtil.set(sub, 'menu', this)\r\n } else {\r\n DataUtil.set(sub, 'item', item)\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.shown')\r\n }\r\n\r\n // Init dropdown popper(new)\r\n private initDropdownPopper = (item: HTMLElement, sub: HTMLElement) => {\r\n // Setup popper instance\r\n let reference\r\n const attach = this._getItemOption(item, 'attach') as string\r\n\r\n if (attach) {\r\n if (attach === 'parent') {\r\n reference = item.parentNode\r\n } else {\r\n reference = document.querySelector(attach)\r\n }\r\n } else {\r\n reference = item\r\n }\r\n\r\n if (reference) {\r\n const popper = createPopper(\r\n reference as Element | VirtualElement,\r\n sub,\r\n this._getDropdownPopperConfig(item)\r\n )\r\n DataUtil.set(item, 'popper', popper)\r\n }\r\n }\r\n\r\n // Hide item dropdown\r\n private _hideDropdown = (item: HTMLElement) => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.hide') === false) {\r\n return\r\n }\r\n\r\n const sub = this._getItemSubElement(item)\r\n ElementStyleUtil.set(sub, 'z-index', '')\r\n ElementStyleUtil.set(sub, 'width', '')\r\n ElementStyleUtil.set(sub, 'height', '')\r\n item.classList.remove('show')\r\n item.classList.remove('menu-dropdown')\r\n sub.classList.remove('show')\r\n\r\n // Append the sub back to it's parent\r\n if (this._getItemOption(item, 'overflow') === true) {\r\n if (item.classList.contains('menu-item')) {\r\n item.appendChild(sub)\r\n } else {\r\n insertAfterElement(this.element, item)\r\n }\r\n\r\n DataUtil.remove(item, 'sub')\r\n DataUtil.remove(sub, 'item')\r\n DataUtil.remove(sub, 'menu')\r\n }\r\n\r\n if (DataUtil.has(item, 'popper') === true) {\r\n DataUtil.get(item, 'popper').destroy()\r\n DataUtil.remove(item, 'popper')\r\n }\r\n\r\n // Destroy popper(new)\r\n this.destroyDropdownPopper(item)\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.hidden')\r\n }\r\n\r\n // Destroy dropdown popper(new)\r\n private destroyDropdownPopper = (item: HTMLElement) => {\r\n if (DataUtil.has(item, 'popper') === true) {\r\n DataUtil.get(item, 'popper').destroy()\r\n DataUtil.remove(item, 'popper')\r\n }\r\n\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.dropdown.hidden')\r\n }\r\n\r\n private _showAccordion = (item: HTMLElement) => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.accordion.show') === false) {\r\n return\r\n }\r\n\r\n if (this.options.accordion.expand === false) {\r\n this._hideAccordions(item)\r\n }\r\n\r\n if (DataUtil.has(item, 'popper') === true) {\r\n this._hideDropdown(item)\r\n }\r\n\r\n item.classList.add('hover') // updateWW\r\n item.classList.add('showing')\r\n\r\n const subElement = this._getItemSubElement(item)\r\n if (subElement) {\r\n const sub = subElement as HTMLElement\r\n slideDown(sub, this.options.accordion.slideSpeed, () => {\r\n item.classList.remove('showing')\r\n item.classList.add('show')\r\n sub.classList.add('show')\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.accordion.shown')\r\n })\r\n }\r\n }\r\n\r\n private _hideAccordion = (item: HTMLElement) => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.accordion.hide') === false) {\r\n return\r\n }\r\n\r\n const sub = this._getItemSubElement(item)\r\n item.classList.add('hiding')\r\n\r\n if (sub) {\r\n slideUp(sub, this.options.accordion.slideSpeed, () => {\r\n item.classList.remove('hiding')\r\n item.classList.remove('show')\r\n sub.classList.remove('show')\r\n item.classList.remove('hover') // update\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.accordion.hidden')\r\n })\r\n }\r\n }\r\n\r\n // Hide all shown accordions of item\r\n private _hideAccordions = (item: HTMLElement) => {\r\n const itemsToHide = this.element.querySelectorAll('.show[data-kt-menu-trigger]')\r\n if (itemsToHide && itemsToHide.length > 0) {\r\n for (var i = 0, len = itemsToHide.length; i < len; i++) {\r\n const itemToHide = itemsToHide[i] as HTMLElement\r\n\r\n if (\r\n this._getItemSubType(itemToHide) === 'accordion' &&\r\n itemToHide !== item &&\r\n item.contains(itemToHide) === false &&\r\n itemToHide.contains(item) === false\r\n ) {\r\n this._hideAccordion(itemToHide)\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Event Handlers\r\n // Reset item state classes if item sub type changed\r\n private _reset = (item: HTMLElement) => {\r\n if (this._hasItemSub(item) === false) {\r\n return\r\n }\r\n\r\n const sub = this._getItemSubElement(item)\r\n\r\n // Reset sub state if sub type is changed during the window resize\r\n if (DataUtil.has(item, 'type') && DataUtil.get(item, 'type') !== this._getItemSubType(item)) {\r\n // updated\r\n item.classList.remove('hover')\r\n item.classList.remove('show')\r\n item.classList.remove('show')\r\n if (sub && sub.removeClass) {\r\n sub.removeClass(sub, 'show')\r\n }\r\n } // updated\r\n }\r\n\r\n // TODO: not done\r\n private _destroy = () => {}\r\n\r\n // Update all item state classes if item sub type changed\r\n private _update = () => {\r\n const items = this.element.querySelectorAll('.menu-item[data-kt-menu-trigger]')\r\n items.forEach((el) => this._reset(el as HTMLElement))\r\n }\r\n\r\n // Hide item sub\r\n private _hide = (item: HTMLElement) => {\r\n if (!item) {\r\n return\r\n }\r\n\r\n if (this._isItemSubShown(item) === false) {\r\n return\r\n }\r\n\r\n if (this._getItemSubType(item) === 'dropdown') {\r\n this._hideDropdown(item)\r\n } else if (this._getItemSubType(item) === 'accordion') {\r\n this._hideAccordion(item)\r\n }\r\n }\r\n\r\n // Show item sub\r\n private _show = (item: HTMLElement) => {\r\n if (!item) {\r\n return\r\n }\r\n\r\n if (this._isItemSubShown(item) === true) {\r\n return\r\n }\r\n\r\n if (this._getItemSubType(item) === 'dropdown') {\r\n this._showDropdown(item) // // show current dropdown\r\n } else if (this._getItemSubType(item) === 'accordion') {\r\n this._showAccordion(item)\r\n }\r\n\r\n // Remember last submenu type\r\n\r\n DataUtil.set(item, 'type', this._getItemSubType(item)) // updated\r\n }\r\n\r\n // Toggle item sub\r\n private _toggle = (item: HTMLElement) => {\r\n if (!item) {\r\n return\r\n }\r\n\r\n if (this._isItemSubShown(item) === true) {\r\n this._hide(item)\r\n } else {\r\n this._show(item)\r\n }\r\n }\r\n\r\n // Mouseout handle\r\n private _mouseout = (element: HTMLElement, e: MouseEvent) => {\r\n const item = this._getItemElement(element)\r\n if (!item) {\r\n return\r\n }\r\n\r\n if (this._getItemOption(item, 'trigger') !== 'hover') {\r\n return\r\n }\r\n\r\n const timeout = setTimeout(() => {\r\n if (DataUtil.get(item, 'hover') === '1') {\r\n this._hide(item)\r\n }\r\n }, this.options.dropdown.hoverTimeout)\r\n\r\n DataUtil.set(item, 'hover', '1')\r\n DataUtil.set(item, 'timeout', timeout)\r\n }\r\n\r\n // Mouseover handle\r\n private _mouseover = (element: HTMLElement, e: MouseEvent) => {\r\n const item = this._getItemElement(element)\r\n if (!item) {\r\n return\r\n }\r\n\r\n if (this._getItemOption(item, 'trigger') !== 'hover') {\r\n return\r\n }\r\n\r\n if (DataUtil.get(item, 'hover') === '1') {\r\n clearTimeout(DataUtil.get(item, 'timeout'))\r\n DataUtil.remove(item, 'hover')\r\n DataUtil.remove(item, 'timeout')\r\n }\r\n\r\n this._show(item)\r\n }\r\n\r\n // Dismiss handler\r\n private _dismiss = (element: HTMLElement, e: Event) => {\r\n const item = this._getItemElement(element)\r\n const items = this._getItemChildElements(item)\r\n //if ( item !== null && _getItemOption(item, 'trigger') === 'click' && _getItemSubType(item) === 'dropdown' ) {\r\n const itemSubType = this._getItemSubType(item)\r\n if (item !== null && itemSubType === 'dropdown') {\r\n this._hide(item) // hide items dropdown\r\n\r\n // Hide all child elements as well\r\n if (items.length > 0) {\r\n for (let i = 0, len = items.length; i < len; i++) {\r\n //if ( _getItemOption(item, 'trigger') === 'click' && _getItemSubType(item) === 'dropdown' ) {\r\n if (items[i] !== null && this._getItemSubType(items[i] as HTMLElement) === 'dropdown') {\r\n this._hide(items[i] as HTMLElement)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Link handler\r\n private _link = (element: HTMLElement, e: Event) => {\r\n if (EventHandlerUtil.trigger(this.element, 'kt.menu.link.click') === false) {\r\n return\r\n }\r\n\r\n // Dismiss all shown dropdowns\r\n MenuComponent.hideDropdowns(undefined)\r\n EventHandlerUtil.trigger(this.element, 'kt.menu.link.clicked')\r\n }\r\n\r\n private _click = (element: HTMLElement, e: Event) => {\r\n e.preventDefault()\r\n const item = this._getItemElement(element)\r\n if (this._getItemOption(item, 'trigger') !== 'click') {\r\n return\r\n }\r\n\r\n if (this._getItemOption(item, 'toggle') === false) {\r\n this._show(item)\r\n } else {\r\n this._toggle(item)\r\n }\r\n }\r\n\r\n ///////////////////////\r\n // ** Public API ** //\r\n ///////////////////////\r\n public click = (element: HTMLElement, e: Event) => {\r\n return this._click(element, e)\r\n }\r\n\r\n public link = (element: HTMLElement, e: Event) => {\r\n return this._link(element, e)\r\n }\r\n\r\n public dismiss = (element: HTMLElement, e: Event) => {\r\n return this._dismiss(element, e)\r\n }\r\n\r\n public mouseover = (element: HTMLElement, e: Event) => {\r\n return this._mouseover(element, e as MouseEvent)\r\n }\r\n\r\n public mouseout = (element: HTMLElement, e: Event) => {\r\n return this._mouseout(element, e as MouseEvent)\r\n }\r\n\r\n // General Methods\r\n public getItemTriggerType = (item: HTMLElement) => {\r\n return this._getItemOption(item, 'trigger')\r\n }\r\n\r\n public getItemSubType = (element: HTMLElement) => {\r\n return this._getItemSubType(element)\r\n }\r\n\r\n public show = (item: HTMLElement) => {\r\n return this._show(item)\r\n }\r\n\r\n public hide = (item: HTMLElement) => {\r\n return this._hide(item)\r\n }\r\n\r\n public reset = (item: HTMLElement) => {\r\n return this._reset(item)\r\n }\r\n\r\n public update = () => {\r\n return this._update()\r\n }\r\n\r\n public getElement = () => {\r\n return this.element\r\n }\r\n\r\n public getItemLinkElement = (item: HTMLElement) => {\r\n return this._getItemLinkElement(item)\r\n }\r\n\r\n public getItemToggleElement = (item: HTMLElement) => {\r\n return this._getItemToggleElement(item)\r\n }\r\n\r\n public getItemSubElement = (item: HTMLElement) => {\r\n return this._getItemSubElement(item)\r\n }\r\n\r\n public getItemParentElements = (item: HTMLElement) => {\r\n return this._getItemParentElements(item)\r\n }\r\n\r\n public isItemSubShown = (item: HTMLElement) => {\r\n return this._isItemSubShown(item)\r\n }\r\n\r\n public isItemParentShown = (item: HTMLElement) => {\r\n return this._isItemParentShown(item)\r\n }\r\n\r\n public getTriggerElement = () => {\r\n return this.triggerElement\r\n }\r\n\r\n public isItemDropdownPermanent = (item: HTMLElement) => {\r\n return this._isItemDropdownPermanent(item)\r\n }\r\n\r\n // Accordion Mode Methods\r\n public hideAccordions = (item: HTMLElement) => {\r\n return this._hideAccordions(item)\r\n }\r\n\r\n // Event API\r\n public on = (name: string, handler: any) => {\r\n return EventHandlerUtil.on(this.element, name, handler)\r\n }\r\n\r\n public one = (name: string, handler: any) => {\r\n return EventHandlerUtil.one(this.element, name, handler)\r\n }\r\n\r\n public off = (name: string) => {\r\n return EventHandlerUtil.off(this.element, name)\r\n }\r\n\r\n // public static methods\r\n // Get KTMenu instance by element\r\n public static getInstance = (element: HTMLElement) => {\r\n // Element has menu DOM reference in it's DATA storage\r\n const elementMenu = DataUtil.get(element, 'menu')\r\n if (elementMenu) {\r\n return elementMenu\r\n }\r\n\r\n // Element has .menu parent\r\n const menu = element.closest('.menu')\r\n if (menu) {\r\n const menuData = DataUtil.get(menu as HTMLElement, 'menu')\r\n if (menuData) {\r\n return menuData\r\n }\r\n }\r\n\r\n // Element has a parent with DOM reference to .menu in it's DATA storage\r\n if (element.classList.contains('menu-link')) {\r\n const sub = element.closest('.menu-sub')\r\n if (sub) {\r\n const subMenu = DataUtil.get(sub as HTMLElement, 'menu')\r\n if (subMenu) {\r\n return subMenu\r\n }\r\n }\r\n }\r\n\r\n return null\r\n }\r\n\r\n // Hide all dropdowns and skip one if provided\r\n public static hideDropdowns = (skip: HTMLElement | undefined) => {\r\n const items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]')\r\n\r\n if (items && items.length > 0) {\r\n for (let i = 0, len = items.length; i < len; i++) {\r\n const item = items[i]\r\n const menu = MenuComponent.getInstance(item as HTMLElement)\r\n\r\n if (menu && menu.getItemSubType(item) === 'dropdown') {\r\n if (skip) {\r\n if (\r\n menu.getItemSubElement(item).contains(skip) === false &&\r\n item.contains(skip) === false &&\r\n item !== skip\r\n ) {\r\n menu.hide(item)\r\n }\r\n } else {\r\n menu.hide(item)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n public static updateDropdowns = () => {\r\n const items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]')\r\n if (items && items.length > 0) {\r\n for (var i = 0, len = items.length; i < len; i++) {\r\n var item = items[i]\r\n\r\n if (DataUtil.has(item as HTMLElement, 'popper')) {\r\n DataUtil.get(item as HTMLElement, 'popper').forceUpdate()\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Global handlers\r\n public static createInstances = (selector: string) => {\r\n // Initialize menus\r\n document.querySelectorAll(selector).forEach((el) => {\r\n const menuItem = el as HTMLElement\r\n let menuInstance = MenuComponent.getInstance(menuItem)\r\n if (!menuInstance) {\r\n menuInstance = new MenuComponent(el as HTMLElement, defaultMenuOptions)\r\n }\r\n })\r\n }\r\n\r\n public static initGlobalHandlers = () => {\r\n // Dropdown handler\r\n document.addEventListener('click', (e) => {\r\n const menuItems = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]')\r\n if (menuItems && menuItems.length > 0) {\r\n for (let i = 0; i < menuItems.length; i++) {\r\n const item = menuItems[i] as HTMLElement\r\n const menuObj = MenuComponent.getInstance(item) as MenuComponent\r\n if (menuObj && menuObj.getItemSubType(item) === 'dropdown') {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const menu = menuObj.getElement()\r\n const sub = menuObj.getItemSubElement(item) as HTMLElement\r\n if (item === e.target || item.contains(e.target as HTMLElement)) {\r\n continue\r\n }\r\n\r\n if (sub && (sub === e.target || sub.contains(e.target as HTMLElement))) {\r\n continue\r\n }\r\n menuObj.hide(item)\r\n }\r\n }\r\n }\r\n })\r\n\r\n // Sub toggle handler\r\n DOMEventHandlerUtil.on(\r\n document.body,\r\n '.menu-item[data-kt-menu-trigger] > .menu-link, [data-kt-menu-trigger]:not(.menu-item):not([data-kt-menu-trigger=\"auto\"])',\r\n 'click',\r\n function (this: HTMLElement, e: Event) {\r\n const menu = MenuComponent.getInstance(this) as MenuComponent\r\n if (menu) {\r\n return menu.click(this, e)\r\n }\r\n }\r\n )\r\n\r\n // // Link handler\r\n DOMEventHandlerUtil.on(\r\n document.body,\r\n '.menu-item:not([data-kt-menu-trigger]) > .menu-link',\r\n 'click',\r\n function (this: HTMLElement, e: Event) {\r\n e.stopPropagation()\r\n const menu = MenuComponent.getInstance(this)\r\n if (menu && menu.link) {\r\n return menu.link(this, e)\r\n }\r\n }\r\n )\r\n\r\n // Dismiss handler\r\n DOMEventHandlerUtil.on(\r\n document.body,\r\n '[data-kt-menu-dismiss=\"true\"]',\r\n 'click',\r\n function (this: HTMLElement, e: Event) {\r\n const menu = MenuComponent.getInstance(this) as MenuComponent\r\n if (menu) {\r\n return menu.dismiss(this, e)\r\n }\r\n }\r\n )\r\n\r\n // Mouseover handler\r\n DOMEventHandlerUtil.on(\r\n document.body,\r\n '[data-kt-menu-trigger], .menu-sub',\r\n 'mouseover',\r\n function (this: HTMLElement, e: Event) {\r\n const menu = MenuComponent.getInstance(this) as MenuComponent\r\n if (menu && menu.getItemSubType(this) === 'dropdown') {\r\n return menu.mouseover(this, e)\r\n }\r\n }\r\n )\r\n\r\n // Mouseout handler\r\n DOMEventHandlerUtil.on(\r\n document.body,\r\n '[data-kt-menu-trigger], .menu-sub',\r\n 'mouseout',\r\n function (this: HTMLElement, e: Event) {\r\n const menu = MenuComponent.getInstance(this) as MenuComponent\r\n if (menu && menu.getItemSubType(this) === 'dropdown') {\r\n return menu.mouseout(this, e)\r\n }\r\n }\r\n )\r\n\r\n // Resize handler\r\n window.addEventListener('resize', () => {\r\n let timer\r\n throttle(\r\n timer,\r\n () => {\r\n // Locate and update Drawer instances on window resize\r\n const elements = document.querySelectorAll('[data-kt-menu=\"true\"]')\r\n elements.forEach((el) => {\r\n const menu = MenuComponent.getInstance(el as HTMLElement)\r\n if (menu) {\r\n menu.update()\r\n }\r\n })\r\n },\r\n 200\r\n )\r\n })\r\n }\r\n\r\n public static bootstrap = () => {\r\n MenuComponent.initGlobalHandlers()\r\n MenuComponent.createInstances('[data-kt-menu=\"true\"]')\r\n }\r\n\r\n public static reinitialization = () => {\r\n MenuComponent.createInstances('[data-kt-menu=\"true\"]')\r\n }\r\n\r\n public static createInsance = (\r\n selector: string,\r\n options: MenuOptions = defaultMenuOptions\r\n ): MenuComponent | undefined => {\r\n const element = document.body.querySelector(selector)\r\n if (!element) {\r\n return\r\n }\r\n const item = element as HTMLElement\r\n let menu = MenuComponent.getInstance(item)\r\n if (!menu) {\r\n menu = new MenuComponent(item, options)\r\n }\r\n return menu\r\n }\r\n}\r\n\r\nexport {MenuComponent, defaultMenuOptions}\r\n","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 const context = this\r\n\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(context.toggleElement)) {\r\n // @ts-ignore\r\n context.toggleElement.classList.add('active')\r\n // @ts-ignore\r\n context.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(context.toggleElement)) {\r\n // @ts-ignore\r\n context.toggleElement.classList.remove('active')\r\n // @ts-ignore\r\n context.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 context.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)) {\r\n this.contentElement.prepend(this.formElement)\r\n this.formElement.classList.remove('d-none')\r\n } else if (responsiveFormMode === 'off' && this.contentElement.contains(this.formElement)) {\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) {\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', this)\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 {DrawerComponent, ScrollComponent, ToggleComponent} 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 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 clsx from 'clsx'\r\nimport {useLayout} from '../../core'\r\nimport {KTSVG} 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::Aside menu */}\r\n
\r\n \r\n
\r\n {/* end::Aside menu */}\r\n\r\n {/* begin::Footer */}\r\n \r\n {/* end::Footer */}\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, {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} = 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 {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\nexport {DefaultTitle}\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\n/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React from 'react'\r\nimport {Link} from 'react-router-dom'\r\nimport {KTSVG} from '../../../helpers'\r\n\r\nconst HelpDrawer = () => {\r\n return (\r\n \r\n {/* begin::Card */}\r\n
\r\n {/* begin::Header */}\r\n
\r\n
Learn & Get Inspired
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {/* end::Header */}\r\n\r\n {/* begin::Body */}\r\n
\r\n {/* begin::Content */}\r\n \r\n {/* begin::Support */}\r\n
\r\n {/* begin::Heading */}\r\n

\r\n Support at{' '}\r\n \r\n devs.keenthemes.com\r\n \r\n

\r\n {/* end::Heading */}\r\n\r\n {/* begin::Description */}\r\n
\r\n \r\n Join our developers community to find answer to your question and help others.\r\n \r\n \r\n FAQs\r\n \r\n
\r\n {/* end::Description */}\r\n\r\n {/* begin::Link */}\r\n \r\n Get Support\r\n \r\n {/* end::Link */}\r\n
\r\n {/* end::Support */}\r\n\r\n {/* begin::Link */}\r\n
\r\n {/* begin::Icon */}\r\n
\r\n \r\n
\r\n {/* end::Icon */}\r\n {/* begin::Info */}\r\n
\r\n {/* begin::Wrapper */}\r\n
\r\n {/* begin::Title */}\r\n \r\n Documentation & Videos\r\n \r\n {/* end::Title */}\r\n {/* begin::Description */}\r\n
\r\n From guides and video tutorials, to live demos and code examples to get started.\r\n
\r\n {/* end::Description */}\r\n
\r\n {/* end::Wrapper */}\r\n \r\n
\r\n {/* end::Info */}\r\n
\r\n {/* end::Link */}\r\n {/* begin::Link */}\r\n
\r\n {/* begin::Icon */}\r\n
\r\n \r\n
\r\n {/* end::Icon */}\r\n {/* begin::Info */}\r\n
\r\n {/* begin::Wrapper */}\r\n
\r\n {/* begin::Title */}\r\n \r\n Plugins & Components\r\n \r\n {/* end::Title */}\r\n {/* begin::Description */}\r\n
\r\n Check out our 300+ in-house components and customized 3rd-party plugins.\r\n
\r\n {/* end::Description */}\r\n
\r\n {/* end::Wrapper */}\r\n \r\n
\r\n {/* end::Info */}\r\n
\r\n {/* end::Link */}\r\n {/* begin::Link */}\r\n
\r\n {/* begin::Icon */}\r\n
\r\n \r\n
\r\n {/* end::Icon */}\r\n {/* begin::Info */}\r\n
\r\n {/* begin::Wrapper */}\r\n
\r\n {/* begin::Title */}\r\n \r\n Layout Builder\r\n \r\n {/* end::Title */}\r\n {/* begin::Description */}\r\n
\r\n Dynamically modify and preview layout\r\n
\r\n {/* end::Description */}\r\n
\r\n {/* end::Wrapper */}\r\n \r\n
\r\n {/* end::Info */}\r\n
\r\n {/* end::Link */}\r\n {/* begin::Link */}\r\n
\r\n {/* begin::Icon */}\r\n
\r\n \r\n
\r\n {/* end::Icon */}\r\n {/* begin::Info */}\r\n
\r\n {/* begin::Wrapper */}\r\n
\r\n {/* begin::Title */}\r\n \r\n What's New\r\n \r\n {/* end::Title */}\r\n {/* begin::Description */}\r\n
\r\n Latest features and improvements added with our users feedback in mind.\r\n
\r\n {/* end::Description */}\r\n
\r\n {/* end::Wrapper */}\r\n \r\n
\r\n {/* end::Info */}\r\n
\r\n {/* end::Link */}\r\n
\r\n {/* end::Content */}\r\n
\r\n {/* end::Body */}\r\n \r\n {/* end::Card */}\r\n \r\n )\r\n}\r\n\r\nexport {HelpDrawer}\r\n","import {AuthModel} from './_models'\r\n\r\nconst AUTH_LOCAL_STORAGE_KEY = 'kt-auth-react-v'\r\nconst getAuth = (): AuthModel | undefined => {\r\n if (!localStorage) {\r\n return\r\n }\r\n\r\n const lsValue: string | null = localStorage.getItem(AUTH_LOCAL_STORAGE_KEY)\r\n if (!lsValue) {\r\n return\r\n }\r\n\r\n try {\r\n const auth: AuthModel = JSON.parse(lsValue) as AuthModel\r\n if (auth) {\r\n // You can easily check auth_token expiration also\r\n return auth\r\n }\r\n } catch (error) {\r\n console.error('AUTH LOCAL STORAGE PARSE ERROR', error)\r\n }\r\n}\r\n\r\nconst setAuth = (auth: AuthModel) => {\r\n if (!localStorage) {\r\n return\r\n }\r\n\r\n try {\r\n const lsValue = JSON.stringify(auth)\r\n localStorage.setItem(AUTH_LOCAL_STORAGE_KEY, lsValue)\r\n } catch (error) {\r\n console.error('AUTH LOCAL STORAGE SAVE ERROR', error)\r\n }\r\n}\r\n\r\nconst removeAuth = () => {\r\n if (!localStorage) {\r\n return\r\n }\r\n\r\n try {\r\n localStorage.removeItem(AUTH_LOCAL_STORAGE_KEY)\r\n } catch (error) {\r\n console.error('AUTH LOCAL STORAGE REMOVE ERROR', error)\r\n }\r\n}\r\n\r\nexport function setupAxios(axios: any) {\r\n axios.defaults.headers.Accept = 'application/json'\r\n axios.interceptors.request.use(\r\n (config: {headers: {Authorization: string}}) => {\r\n const auth = getAuth()\r\n if (auth) {\r\n //config.headers.Authorization = `Bearer ${auth.api_token}`\r\n }\r\n\r\n return config\r\n },\r\n (err: any) => Promise.reject(err)\r\n )\r\n}\r\n\r\nexport {getAuth, setAuth, removeAuth, AUTH_LOCAL_STORAGE_KEY}\r\n","import axios from 'axios'\r\nimport { AuthModel, ConnectAndHealModel, FlashAidModel, HrModel, MidTermAdditionRequest, PristynCareModel, ResetPasswordModel, UserModel } from './_models'\r\nimport {\r\n Capacitor,\r\n} from '@capacitor/core';\r\n\r\nconst API_URL = process.env.REACT_APP_FUTURISK_LIVE_URL;\r\n//'http://localhost:55991' //process.env.REACT_APP_FUTURISK_LIVE_URL REACT_APP_FUTURISK_TEST_URL\r\n//REACT_APP_FUTURISK_URL\r\n\r\nexport const GET_USER_BY_ACCESSTOKEN_URL = `${API_URL}/verify_token`\r\nexport const REQUEST_PASSWORD_URL = `${API_URL}/SSO/AccountForgotPassword`\r\n//export const SSO_LOGIN_URL = 'https://sso.futurisk.in/api/login/UserDetails'\r\nexport const SSO_LOGIN_URL = `${API_URL}/api/login/UserDetails`\r\nexport const SSO_HR_URL = `${API_URL}/api/login/HrDetails`\r\nexport const pristyncare_URL = `${API_URL}/api/PristynCare`\r\nexport const ConnectAndHeal_URL = `https://etl.futurisk.in/webhook/e97c331f-bfa9-4c74-911f-f74c3f0117d8`\r\nexport const FlashAid_URL = `${API_URL}/api/FlashAid`\r\nexport const ResetPassword = `${API_URL}/SSO/ResetPassword/ResetDefaultPassword`\r\nexport const MidtermUrl = `${API_URL}/SSO/Api/MidTermAddition`\r\n\r\n// Server should return AuthModel\r\n/**\r\n * \r\n * axios.post(LOGIN_URL, {\r\n email,\r\n password,\r\n }\r\n */\r\n\r\n export function MidTermAddition(request: MidTermAdditionRequest) {\r\n return axios.post(MidtermUrl, request,{headers: { \"Content-Type\": \"application/json\" }});\r\n }\r\n\r\n export function ResetDefaultPassword(loginid: string, password : string) {\r\n var bodyFormData = new FormData();\r\n bodyFormData.append('loginid', loginid)\r\n bodyFormData.append('newpassword', password)\r\n\r\n return axios.post(ResetPassword, bodyFormData,\r\n {\r\n headers: { \"Content-Type\": \"multipart/form-data\" }\r\n }\r\n )\r\n \r\n }\r\n\r\n export function ConnectAndHealSignup(request: ConnectAndHealModel) {\r\n return axios.post<{ result: boolean }>(ConnectAndHeal_URL, request)\r\n }\r\n\r\n export function flashaid(data: FlashAidModel) {\r\n var bodyFormData = new FormData();\r\n bodyFormData.append('Mobile', data.Mobile)\r\n bodyFormData.append('FirstName', data.FirstName)\r\n bodyFormData.append('source', 'futurisk')\r\n bodyFormData.append('disease', data.disease)\r\n bodyFormData.append('City', data.City)\r\n bodyFormData.append('CrmLoginId', data.CrmLoginId)\r\n return axios.post(FlashAid_URL, bodyFormData,\r\n {\r\n headers: { \"Content-Type\": \"multipart/form-data\" }\r\n }\r\n )\r\n \r\n }\r\n\r\nexport function pristyncare(data: PristynCareModel) {\r\n var bodyFormData = new FormData();\r\n bodyFormData.append('Mobile', data.Mobile)\r\n bodyFormData.append('FirstName', data.FirstName)\r\n bodyFormData.append('source', 'futurisk')\r\n bodyFormData.append('disease', data.disease)\r\n bodyFormData.append('City', data.City)\r\n bodyFormData.append('CrmLoginId', data.CrmLoginId)\r\n return axios.post(pristyncare_URL, bodyFormData,\r\n {\r\n headers: { \"Content-Type\": \"multipart/form-data\" }\r\n }\r\n )\r\n \r\n}\r\nexport function login(email: string, password: string,page: string): AuthModel {\r\n return ({\r\n 'username': email,\r\n 'password': password,\r\n 'page':page,\r\n })\r\n}\r\n\r\n\r\n\r\n\r\n// Server should return object => { result: boolean } (Is Email in DB)\r\nexport function requestPassword(request: string) {\r\n return axios.post<{ result: boolean }>(REQUEST_PASSWORD_URL, {\r\n 'LoginID' : request,\r\n })\r\n}\r\n\r\nexport function getUserByToken(token: AuthModel) {\r\n\r\n var bodyFormData = new FormData();\r\n bodyFormData.append('username', token.username)\r\n bodyFormData.append('password', token.password)\r\n bodyFormData.append('source', Capacitor.getPlatform())\r\n bodyFormData.append('page', token.page)\r\n return axios.post(SSO_LOGIN_URL, bodyFormData, {\r\n headers: { \"Content-Type\": \"multipart/form-data\" }\r\n })\r\n}\r\n\r\nexport function getHrOptions(token: AuthModel) {\r\n\r\n var bodyFormData = new FormData();\r\n bodyFormData.append('username', token.username)\r\n bodyFormData.append('password', token.password)\r\n return axios.post(SSO_HR_URL, bodyFormData, {\r\n headers: { \"Content-Type\": \"multipart/form-data\" }\r\n })\r\n}\r\n\r\n","import React from 'react';\r\nimport { toAbsoluteUrl } from '../../_metronic/helpers/AssetHelpers';\r\n\r\nexport function LoadingScreen() {\r\n return (\r\n \r\n {/* begin::Content */}\r\n
\r\n {/* begin::Wrapper */}\r\n
\r\n \"Loading...\"\r\n
\r\n {/* end::Wrapper */}\r\n
\r\n {/* end::Content */}\r\n\r\n \r\n );\r\n}","import {\r\n FC,\r\n useState,\r\n useEffect,\r\n createContext,\r\n useContext,\r\n useRef,\r\n Dispatch,\r\n SetStateAction,\r\n} from 'react'\r\nimport {AuthModel, UserModel} from './_models'\r\nimport * as authHelper from './AuthHelpers'\r\nimport {getUserByToken} from './_requests'\r\n\r\nimport { LoadingScreen } from '../../../components/LoadingScreen'\r\n\r\ntype AuthContextProps = {\r\n auth: AuthModel | undefined\r\n saveAuth: (auth: AuthModel | undefined) => void\r\n currentUser: UserModel | undefined\r\n setCurrentUser: Dispatch>\r\n logout: () => void\r\n}\r\n\r\nconst initAuthContextPropsState = {\r\n auth: authHelper.getAuth(),\r\n saveAuth: () => {},\r\n currentUser: undefined,\r\n setCurrentUser: () => {},\r\n logout: () => {},\r\n}\r\n\r\nconst AuthContext = createContext(initAuthContextPropsState)\r\n\r\nconst useAuth = () => {\r\n return useContext(AuthContext)\r\n}\r\n\r\nconst AuthProvider: FC = ({children}) => {\r\n const [auth, setAuth] = useState(authHelper.getAuth())\r\n const [currentUser, setCurrentUser] = useState()\r\n const saveAuth = (auth: AuthModel | undefined) => {\r\n setAuth(auth)\r\n if (auth) {\r\n authHelper.setAuth(auth)\r\n } else {\r\n authHelper.removeAuth()\r\n }\r\n }\r\n\r\n const logout = () => {\r\n saveAuth(undefined)\r\n setCurrentUser(undefined)\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nconst AuthInit: FC = ({children}) => {\r\n const {auth, logout, setCurrentUser} = useAuth()\r\n const didRequest = useRef(false)\r\n const [loading, setLoading] = useState(true)\r\n\r\n useEffect(() => {\r\n const requestUser = async (user: AuthModel) => {\r\n try {\r\n if (!didRequest.current) {\r\n user.page = 'refresh';\r\n const {data} = await getUserByToken(user)\r\n if(data.Status === 'Success') {\r\n setCurrentUser(data)\r\n } else {\r\n throw new Error(data.Status)\r\n }\r\n }\r\n } catch (error) {\r\n console.error(error)\r\n if (!didRequest.current) {\r\n logout()\r\n }\r\n } finally {\r\n setLoading(false)\r\n }\r\n\r\n return () => (didRequest.current = true)\r\n }\r\n\r\n if (auth && auth.username) {\r\n requestUser(auth)\r\n } else {\r\n logout()\r\n setLoading(false)\r\n }\r\n // eslint-disable-next-line\r\n }, [])\r\n\r\n if (loading) {\r\n return \r\n }\r\n\r\n return <>{children}\r\n}\r\n\r\nexport {AuthProvider, AuthInit, useAuth}\r\n","import { useState } from 'react'\r\nimport * as Yup from 'yup'\r\nimport clsx from 'clsx'\r\nimport { Link } from 'react-router-dom'\r\nimport { useFormik } from 'formik'\r\nimport { requestPassword } from '../core/_requests'\r\n\r\nconst initialValues = {\r\n email: '',\r\n}\r\n\r\nconst forgotPasswordSchema = Yup.object().shape({\r\n email: Yup.string()\r\n\r\n .min(3, 'Minimum 3 symbols')\r\n .max(50, 'Maximum 50 symbols')\r\n \r\n .required('Login ID is required'),\r\n})\r\n\r\nexport function ForgotPassword() {\r\n const [loading, setLoading] = useState(false)\r\n const [hasErrors, setHasErrors] = useState(undefined)\r\n const formik = useFormik({\r\n initialValues,\r\n validationSchema: forgotPasswordSchema,\r\n onSubmit: (values, { setStatus, setSubmitting }) => {\r\n setLoading(true)\r\n setHasErrors(undefined)\r\n setTimeout(async () => {\r\n //let request : ForgotPasswordRequest = {loginID : values.email}\r\n var data = await requestPassword(values.email)\r\n .then(({ data: { result } }) => {\r\n setHasErrors(false)\r\n setLoading(false)\r\n\r\n })\r\n .catch(() => {\r\n setHasErrors(true)\r\n setLoading(false)\r\n setSubmitting(false)\r\n setStatus('No email ID associated with this Login ID please call 18001034569 for further assistance.')\r\n })\r\n setStatus(data);\r\n }, 1000)\r\n },\r\n })\r\n\r\n return (\r\n <>\r\n \r\n
\r\n {/* begin::Title */}\r\n

Forgot Password ?

\r\n {/* end::Title */}\r\n\r\n {/* begin::Link */}\r\n
Enter your Login ID to reset your password.
\r\n {/* end::Link */}\r\n
\r\n\r\n {/* begin::Title */}\r\n {hasErrors === true && (\r\n
\r\n
\r\n No email ID associated with this Login ID please call 18001034569 for further assistance.\r\n
\r\n
\r\n )}\r\n\r\n {hasErrors === false && (\r\n
\r\n
Sent password reset. Please check your email
\r\n
\r\n )}\r\n {/* end::Title */}\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
\r\n {formik.errors.email}\r\n
\r\n
\r\n )}\r\n
\r\n {/* end::Form group */}\r\n\r\n {/* begin::Form group */}\r\n
\r\n \r\n Submit\r\n {loading && (\r\n \r\n Please wait...\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n Cancel\r\n \r\n {' '}\r\n
\r\n {/* end::Form group */}\r\n \r\n \r\n )\r\n}\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport { useState } from 'react'\r\nimport * as Yup from 'yup'\r\nimport clsx from 'clsx'\r\nimport { Link, useLocation } from 'react-router-dom'\r\nimport { useFormik } from 'formik'\r\nimport { getUserByToken, login } from '../core/_requests'\r\nimport { toAbsoluteUrl } from '../../../../_metronic/helpers'\r\nimport { useAuth } from '../core/Auth'\r\nimport { AuthModel } from '../core/_models'\r\nimport base64 from 'react-native-base64'\r\n\r\nconst loginSchema = Yup.object().shape({\r\n loginid: Yup.string()\r\n .min(3, 'Minimum 3 symbols')\r\n .max(100, 'Maximum 50 symbols')\r\n .required('Login Id is required'),\r\n\r\n password: Yup.string()\r\n .min(3, 'Minimum 3 symbols')\r\n .max(50, 'Maximum 50 symbols')\r\n .required('Password is required'),\r\n})\r\n\r\nconst initialValues = {\r\n loginid: '',\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 { saveAuth, setCurrentUser } = useAuth()\r\n const search = useLocation().search;\r\n const user = new URLSearchParams(search).get('user');\r\n if (user !== null) {\r\n \r\n initialValues.loginid = base64.decode(user!).split(';')[0];\r\n initialValues.password = base64.decode(user!).split(';')[1];\r\n }\r\n\r\n const formik = useFormik({\r\n initialValues,\r\n validationSchema: loginSchema,\r\n onSubmit: async (values, { setStatus, setSubmitting }) => {\r\n setLoading(true)\r\n\r\n try {\r\n const auth: AuthModel = login(values.loginid, values.password, 'login')\r\n const { data: user } = await getUserByToken(auth)\r\n if (user.Status === 'Success') {\r\n saveAuth(auth)\r\n setCurrentUser(user)\r\n } else {\r\n throw new Error(user.Status)\r\n }\r\n } catch (error) {\r\n console.debug(error)\r\n saveAuth(undefined)\r\n setStatus('The login detail is incorrect')\r\n setSubmitting(false)\r\n setLoading(false)\r\n }\r\n },\r\n })\r\n\r\n return (\r\n \r\n {/* begin::Heading */}\r\n
\r\n\r\n Logo\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 )}\r\n\r\n {/* begin::Form group */}\r\n
\r\n \r\n \r\n {formik.touched.loginid && formik.errors.loginid && (\r\n
\r\n {formik.errors.loginid}\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 {/* begin::Link */}\r\n \r\n Forgot Password ?\r\n \r\n {/* end::Link */}\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 {!loading && Sign In}\r\n {loading && (\r\n \r\n Please wait...\r\n \r\n \r\n )}\r\n \r\n\r\n\r\n
\r\n {/* end::Action */}\r\n \r\n )\r\n}\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport { useEffect, useState } from 'react'\r\nimport { useLocation, useNavigate } from 'react-router-dom'\r\nimport { getUserByToken, login } from '../core/_requests'\r\nimport { useAuth } from '../core/Auth'\r\nimport { AuthModel } from '../core/_models'\r\nimport base64 from 'react-native-base64'\r\nimport { LoadingScreen } from '../../../components/LoadingScreen'\r\n\r\n\r\nconst values = {\r\n loginid: '',\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 AutoLogin() {\r\n const [loading, setLoading] = useState(true);\r\n const {logout} = useAuth()\r\n const navigate = useNavigate();\r\n const { saveAuth, setCurrentUser } = useAuth()\r\n const search = useLocation().search;\r\n const user = new URLSearchParams(search).get('user');\r\n if (user !== null) {\r\n \r\n values.loginid = base64.decode(user!).split(';')[0];\r\n values.password = base64.decode(user!).split(';')[1];\r\n }\r\n const auth: AuthModel = login(values.loginid, values.password, 'login')\r\n useEffect(() => {\r\n logout();\r\n (async () => {\r\n\r\n var data = await getUserByToken(auth);\r\n if (data.data.Status === \"Success\") {\r\n saveAuth(auth);\r\n setCurrentUser(data.data);\r\n navigate('/');\r\n //setItems(data.data);\r\n \r\n } else {\r\n window.location.href = 'https://www.futurisk.in';\r\n }\r\n setLoading(false);\r\n })();\r\n //document.location.reload()\r\n }, [])\r\n \r\n if (loading) {\r\n return ;\r\n }\r\n\r\n return (\r\n <>\r\n )\r\n}\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport {useEffect} from 'react'\r\nimport {Outlet, Route, Routes} from 'react-router-dom'\r\nimport {ForgotPassword} from './components/ForgotPassword'\r\nimport {Login} from './components/Login'\r\nimport {toAbsoluteUrl} from '../../../_metronic/helpers'\r\nimport { AutoLogin } from './components/AutoLogin'\r\n\r\nconst AuthLayout = () => {\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 \r\n \r\n {/* end::Logo */}\r\n {/* begin::Wrapper */}\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 {/* begin::Copyright */}\r\n
\r\n {new Date().getFullYear()} ©\r\n \r\n Futurisk Insurance Broking Co. Pvt. Ltd.\r\n \r\n
\r\n {/* end::Copyright */}\r\n\r\n \r\n
\r\n \r\n {/* end::Footer */}\r\n \r\n )\r\n}\r\n\r\nconst AuthPage = () => (\r\n \r\n }>\r\n } />\r\n } />\r\n } />\r\n } />\r\n \r\n \r\n)\r\n\r\nexport {AuthPage}\r\n","import {useEffect} from 'react'\r\nimport {Navigate, Routes} from 'react-router-dom'\r\nimport {useAuth} from './core/Auth'\r\n\r\nexport function Logout() {\r\n const {logout} = useAuth()\r\n useEffect(() => {\r\n logout()\r\n document.location.reload()\r\n }, [logout])\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport { Col, Modal, Row } from 'react-bootstrap'\r\nimport * as Yup from 'yup'\r\nimport { useFormik } from 'formik'\r\nimport { ResetDefaultPassword } from '../../../../modules/auth/core/_requests'\r\nimport clsx from 'clsx'\r\nimport { useAuth } from '../../../../modules/auth/core/Auth'\r\n\r\ntype Props = {\r\n show: boolean\r\n handleClose: () => void\r\n}\r\n\r\nconst ResetSchema = Yup.object().shape({\r\n\r\n Password: Yup.string()\r\n .required(\"No Password Given\")\r\n .min(\r\n 8,\r\n 'password must contain 8 or more characters with at least one of each: uppercase, lowercase, number and special'\r\n )\r\n .matches(/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{8,})/,\r\n \"Password must contain at least 8 characters, including one uppercase letter, one lowercase letter, one number, and one special character\"\r\n )\r\n ,\r\n ConfirmPassword: Yup.string()\r\n .oneOf([Yup.ref('Password'), null], 'Passwords must match')\r\n})\r\n\r\nconst ResetPasswordModal: React.FC = ({ show, handleClose }) => {\r\n useEffect(() => {\r\n initMap()\r\n }, [])\r\n\r\n //const [location, setLocation] = useState(data.location)\r\n const dissmissLocation = () => {\r\n //setLocation(data.location)\r\n handleClose()\r\n }\r\n\r\n const initMap = () => { }\r\n\r\n const initialValues = {\r\n Password: '',\r\n ConfirmPassword: ''\r\n }\r\n const username = useAuth().currentUser?.UserName!\r\n const [loading, setLoading] = useState(false)\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const [hasErrors, setHasErrors] = useState(undefined)\r\n const formik = useFormik({\r\n initialValues,\r\n validationSchema: ResetSchema,\r\n onSubmit: (values, { setStatus, setSubmitting }) => {\r\n setLoading(true)\r\n setHasErrors(undefined)\r\n setTimeout(async () => {\r\n //let request : ForgotPasswordRequest = {loginID : values.email}\r\n var data = await ResetDefaultPassword(username, values.ConfirmPassword)\r\n // eslint-disable-next-line no-empty-pattern\r\n .then(({ data: { } }) => {\r\n setHasErrors(false)\r\n setLoading(false)\r\n window.location.reload();\r\n })\r\n .catch(() => {\r\n setHasErrors(true)\r\n setLoading(false)\r\n setSubmitting(false)\r\n setStatus('Error')\r\n })\r\n setStatus(data);\r\n }, 1000)\r\n },\r\n })\r\n\r\n return (\r\n