{"version":3,"file":"8105.b30c87a17eb5f0a0.js","mappings":"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","names":["root","factory","module","exports","define","f","this","toStr","Object","prototype","toString","obj","prop","hasOwnProperty","call","value","isArray","length","i","type","Array","key","intKey","parseInt","options","hasShallowProperty","getShallowPropertySafely","objectPath","keys","reduce","proxy","bind","path","doNotReplace","set","split","map","getKey","currentPath","currentValue","slice","includeInheritedProps","String","getShallowProperty","Error","has","j","ensureExists","insert","at","arr","get","splice","empty","isEmpty","isBoolean","isObject","push","apply","arguments","coalesce","paths","defaultValue","len","nextObj","del","mod","create","withInheritedProps","elementId","the","element","KTUtil","body","defaultOptions","toggleSpeed","sticky","releseOnReverse","offset","zIndex","Plugin","construct","init","build","events","header","footer","a","remove","e","preventDefault","reload","toggle","initSticky","window","addEventListener","onScrollSticky","isNaN","st","eventTrigger","updateSticky","resetSticky","top","left","right","position","Function","tooltips","document","querySelectorAll","$","tooltip","setContent","html","innerHTML","getBody","getSelf","expand","collapse","name","event","one","handler","fired","addEvent","setDefaults","destroySticky","removeEventListener","on","KTCookie","getCookie","matches","cookie","match","RegExp","replace","decodeURIComponent","undefined","setCookie","assign","expires","Date","toUTCString","updatedCookie","encodeURIComponent","optionKey","optionValue","deleteCookie","desktop","tabletAndMobile","eventTriggerState","lastScrollTop","hasAttribute","setAttribute","removeAttribute","V","args","query","closest","parentNode","getSubmenuMode","target","contains","hideDropdowns","scroll","rememberPosition","accordion","slideSpeed","autoScroll","autoScrollSpeed","expandAll","dropdown","timeout","reset","eventHandlers","pauseDropdownHoverTime","uid","update","resetSubmenuProps","event_1","handleSubmenuAccordion","isConditionalSubmenuDropdown","event_2","handleSubmenuDrodownHoverEnter","event_3","handleSubmenuDrodownHoverExit","event_4","handleSubmenuDropdownClick","event_5","handleSubmenuDropdownTabClick","event_6","handleLinkClick","height","scrollInit","mobileNativeScroll","windowScroll","resetHeightOnDestroy","handleWindowResize","scrollUpdate","scrollTop","el","submenu","state","mode","default","tablet","mobile","submenus","getAttribute","resumeDropdownHover","item","clearTimeout","showSubmenuDropdown","setTimeout","hideSubmenuDropdown","hideSubmenuDropdowns","handleSubmenuDropdownClose","shown","li","speed","subnav","closables","el_","submenu_","scrollToItem","classAlso","items","cnt","list","_e","createSubmenuDropdownClickDropoff","dropoff","createElement","appendChild","stopPropagation","pauseDropdownHover","time","date","getTime","resetActiveItem","parents","i_","len_","setActiveItem","getBreadcrumbs","breadcrumbs","link","text","title","href","submenuLink","reverse","getPageTitle","removeEvent","scrollReInit","hideDropdown","off","attrCustom","classBase","baseClass","classShown","classOverlay","toggleBy","closeBy","hide","isShown","T","show","toggleClass","classCustom","overlay","id","timer","handle","toggleElement","targetElement","targetToggleMode","targetState","toggleState","ie","toggleOn","toggleOff","getState","getComputedStyle","val","style","className","div","elMatches","Element","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","removeChild","selector","filter","children","child","cls","x","scrollingClassTimeout","y","classList","add","isAlive","settings","scrollingThreshold","EventElement","handlers","prototypeAccessors","configurable","eventName","unbind","this$1","unbindAll","every","defineProperties","EventManager","eventElements","CustomEvent","evt","createEvent","initCustomEvent","axis","diff","useScrollingClass","forceFireReachEvent","fields","ref","contentHeight","containerHeight","up","down","reach","dispatchEvent","E","addScrollingClass","removeScrollingClass","setScrollingClassInstantly","processScrollDiff$1","eventElement","ee","indexOf","forEach","once","onceHandler","env","isWebKit","documentElement","supportsTouch","navigator","maxTouchPoints","DocumentTouch","supportsIePointer","msMaxTouchPoints","isChrome","test","userAgent","roundedScrollTop","Math","floor","rect","getBoundingClientRect","containerWidth","round","width","contentWidth","scrollWidth","scrollHeight","scrollbarXRail","queryChildren","scrollbarYRail","suppressScrollX","scrollXMarginOffset","scrollbarXActive","railXWidth","railXMarginWidth","railXRatio","scrollbarXWidth","getThumbSize","toInt","scrollbarXLeft","negativeScrollAdjustment","scrollLeft","suppressScrollY","scrollYMarginOffset","scrollbarYActive","railYHeight","railYMarginHeight","railYRatio","scrollbarYHeight","scrollbarYTop","xRailOffset","isRtl","isScrollbarXUsingBottom","bottom","scrollbarXBottom","scrollbarXTop","yRailOffset","isScrollbarYUsingRight","scrollbarYRight","scrollbarYOuterWidth","scrollbarYLeft","scrollbarX","railBorderXWidth","scrollbarY","railBorderYWidth","updateCss","v","thumbSize","minScrollbarLength","max","maxScrollbarLength","min","pageY","startingScrollTop","startingMousePageY","scrollBy","touches","updateGeometry","startsWith","changedTouches","ownerDocument","mouseMoveHandler","touchMode","mouseUpHandler","bindMoves","positionTop","pageYOffset","positionLeft","pageX","pageXOffset","bindMouseScrollHandler","keyboard","isDefaultPrevented","defaultPrevented","activeElement","tagName","contentDocument","shadowRoot","isEditable","deltaX","deltaY","which","metaKey","X","altKey","shiftKey","wheelPropagation","shouldPreventDefault","wheel","wheelDeltaX","wheelDeltaY","deltaMode","wheelDelta","getDeltaFromEvent","querySelector","cursor","overflowY","maxScrollTop","clientHeight","overflowX","maxScrollLeft","clientWidth","shouldBeConsumedByChild","shouldPrevent","useBothWheelAxes","wheelSpeed","isTop","isBottom","offsetHeight","isLeft","isRight","offsetWidth","abs","ctrlKey","onwheel","mousewheelHandler","onmousewheel","touch","startOffset","startTime","easingLoop","touchStart","touchMove","touchEnd","PointerEvent","MSPointerEvent","differenceX","differenceY","targetTouches","pointerType","buttons","MSPOINTER_TYPE_MOUSE","shouldHandle","getTouch","clearInterval","currentOffset","applyTouchMove","currentTime","timeGap","magnitudeX","magnitudeY","scrollY","swipeEasing","setInterval","isInitialized","PerfectScrollbar","userSettings","nodeName","result","originalScrollLeft","focus","blur","direction","isNegativeScroll","railXStyle","borderLeftWidth","borderRightWidth","display","marginLeft","marginRight","railYStyle","styles","paddingLeft","paddingRight","outerWidth","borderTopWidth","borderBottomWidth","marginTop","marginBottom","handlerName","lastScrollLeft","onScroll","processScrollDiff","destroy","removePsClasses","join","s","ancestor","parentElement","elem","lastTime","vendors","requestAnimationFrame","cancelAnimationFrame","callback","currTime","timeToCall","Document","DocumentFragment","defineProperty","enumerable","writable","argArr","docFrag","createDocumentFragment","argItem","isNode","Node","createTextNode","insertBefore","firstChild","getAttributeNames","attributes","KTUtilElementDataStore","KTUtilElementDataStoreID","KTUtilDelegatedEventHandlers","resizeHandlers","breakpoints","_windowResizeHandler","sm","md","lg","xl","throttle","_runResizeHandlers","addResizeHandler","removeResizeHandler","runResizeHandlers","resize","Event","initUIEvent","getURLParam","paramName","params","location","search","substring","unescape","isMobileDevice","getViewPort","getBreakpoint","isDesktopDevice","isInResponsiveRange","breakpoint","isBreakpointUp","isBreakpointDown","getUniqueID","prefix","random","isset","stone","shift","getHighestZindex","css","hasFixedPositionedParent","sleep","milliseconds","start","getRandomInt","isAngularVersion","Zone","deepExtend","out","extend","getById","getElementById","getByTag","getElementsByTagName","getByTagName","getByClass","getElementsByClassName","hasClasses","classes","classesArr","hasClass","trim","addClass","classNames","removeClass","triggerCustomEvent","data","detail","triggerEvent","node","doc","nodeType","eventClass","initEvent","synthetic","fireEvent","createEventObject","index","c","string","eventTriggered","currentTarget","dataset","triggered","find","parent","findAll","insertAfter","referenceNode","nextSibling","matchesSelector","oMatchesSelector","log","childNodes","l","p","customDataTag","margin","parseFloat","win","getClientRects","defaultView","outerHeight","withMargin","visible","attr","hasAttr","removeAttr","animate","from","to","duration","easing","done","t","b","d","rAF","change","performance","now","timestamp","M","loop","actualCss","cache","HTMLElement","cssText","D","actualHeight","actualWidth","getScroll","method","self","browserSupportsBoxModel","styleProp","toLowerCase","getPropertyValue","currentStyle","str","letter","toUpperCase","oldLeft","oldRsLeft","runtimeStyle","pixelLeft","slide","dir","recalcMaxHeight","calcHeight","calcPaddingTop","calcPaddingBottom","paddingTop","paddingBottom","overflow","slideUp","slideDown","eventId","targets","callee","hash","charCodeAt","animateClass","animationName","animation","animations","OAnimation","MozAnimation","WebkitAnimation","msAnimation","transitionEnd","transition","transitions","OTransition","MozTransition","WebkitTransition","msTransition","animationEnd","animateDelay","animateDuration","scrollTo","targetPos","scrollPos","ready","attachEvent","readyState","numberString","nStr","x1","x2","rgx","detectIE","ua","msie","rv","edge","isRTL","ps","attrs","attrName","includes","optionName","filterBoolean","te","mobileHeight","disableForMobile","desktopNativeScroll","pos","console","error","scrollDestroy","scrollUpdateAll","scrollers","resetAll","setProperty","setHTML","getHTML","getDocumentHeight","getScrollTop","scrollingElement","changeColor","col","amt","usePound","num","r","g","func","delay","debounce","btnWait","message","disable","caption","btnRelease","isOffscreen","windowWidth","windowHeight","KTAppSettings","DropdownMenu1Component","constructor","ngOnInit","selectors","i0","DropdownMenu2Component","DropdownMenu3Component","DropdownMenu4Component","DropdownMenusModule","CommonModule","CoreSharedModule","CoreSiteService","CoreModuleService","imports","SharedModule","ctx_r28","oxw","ctx_r30","CoreModuleAddComponent","dialogRef","coreEnumService","coreModuleService","cmsToastrService","publicHelper","cdr","translate","Map","ProgressSpinnerModel","ErrorExceptionResult","CoreModuleModel","FormInfoModel","loading","instant","fileManagerTree","GetfileManagerTreeConfig","formInfo","formTitle","getEnumRecordStatus","DataGetAccess","ye","dataModelEnumRecordStatusResult","ServiceViewModel","subscribe","next","ret","isSuccess","fieldsInfo","fieldInfoConvertor","access","typeErrorGetAccess","errorMessage","er","DataAddContent","formAlert","formError","pName","Start","ServiceAdd","dataModel","formSubmitAllow","dataModelResult","typeSuccessAdd","close","dialogChangedDate","typeErrorMessage","Stop","typeError","onFormSubmit","formGroup","valid","onFormCancel","onActionFileSelected","model","linkMainImageId","linkMainImageIdSrc","downloadLinksrc","MAT_DIALOG_DATA","ctx","ctx_r32","ctx_r34","ctx_r36","ctx_r38","ctx_r59","ctx_r62","ctx_r65","ctx_r68","ctx_r71","ctx_r76","routes","component","contentService","cmsConfirmationDialogService","tokenHelper","router","dialog","FilterModel","ComponentOptionSearchModel","ComponentOptionStatistModel","ComponentOptionExportModel","TokenInfoModel","MatTableDataSource","optionsSearch","parentMethods","onSubmit","onSubmitOptionsSearch","optionsExport","onSubmitOptionExport","filteModelContent","sortColumn","sortType","EnumSortType","getCurrentToken","then","tokenInfo","DataGetAll","cmsApiStoreSubscribe","getCurrentTokenOnChange","ngOnDestroy","unsubscribe","tableRowsSelected","tableRowSelected","accessLoad","filterModel","JSON","parse","stringify","ServiceGetAllEditor","tableSource","listItems","childMethods","setAccess","onTableSortData","sort","active","currentPageNumber","onTablePageingData","pageIndex","rowPerPage","pageSize","onActionbuttonNewRow","accessAddRow","open","afterClosed","typeErrorAccessAdd","onActionbuttonNewRowAuto","ServiceAutoAdd","onActionbuttonEditRow","accessEditRow","CoreModuleEditComponent","typeErrorAccessEdit","typeErrorSelectedRow","onActionbuttonDeleteRow","emessage","typeErrorSelected","accessDeleteRow","typeErrorAccessDelete","confirm","confirmed","ServiceDelete","typeSuccessRemove","typeErrorRemove","catch","onActionbuttonGoToModuleList","navigate","onActionbuttonStatist","optionsStatist","statist","ServiceGetCount","totalRowCount","setStatistValue","filterStatist1","fastfilter","FilterDataModel","propertyName","EnumRecordStatus","filters","onTableDropRow","previousIndex","findIndex","row","EditStepDtoModel","centerId","currentIndex","actionGo","Z","EnumActionGoStep","ServiceEditStep","moveItemInArray","onActionbuttonConfigMainAdminRow","onActionbuttonSiteList","onActionbuttonSiteCategoryList","onActionbuttonExport","setExportFilterModel","exportlist","ServiceExportFile","linkFile","setExportLinkFile","onActionbuttonReload","onActionTableRowSelect","CoreModuleListComponent","CoreModuleRouting","RouterModule","CoreModuleModule","FormsModule","ReactiveFormsModule","warnOnNgModelWithFormControl","AngularEditorModule","ctx_r35","ctx_r37","requestId","typeErrorComponentAction","DataGetOneContent","typeErrorEditRowIsNull","setAccessLoad","ServiceGetOneById","DataEditContent","ServiceEdit","typeSuccessEdit","ctx_r4","CoreModuleSelectorComponent","categoryService","FormControl","EventEmitter","onActionReload","optionSelectForce","onActionSelectForce","_loading","loadOptions","filteredOptions","formControl","valueChanges","pipe","startWith","debounceTime","distinctUntilChanged","switchMap","displayFn","displayOption","filteModel","searchType","EnumFilterDataModelSearchTypes","clauseType","EnumClauseType","L","ServiceGetAll","response","optionSelectFirstItem","dataModelSelect","setValue","onActionSelect","toPromise","optionDisabled","optionChange","emit","onActionSelectClear","onActionEmpty","newvalue","ctx_r15","ctx_r17","CoreSiteCategoryCmsModuleEditComponent","coreSiteCategoryCmsModuleService","CoreSiteCategoryCmsModuleModel","requestLinkCmsSiteCategoryId","linkCmsSiteCategoryId","requestLinkCmsModuleId","linkCmsModuleId","H","dataAccessModel","Q","w","onActionSiteCategorySelect","onActionSelectorModuleSelect","onStepClick","stepper","previouslySelectedIndex","selectedIndex","typeErrorFormInvalid","CoreSiteCategoryCmsModuleAddComponent","ctx_r21","ctx_r23","ctx_r25","ctx_r27","ctx_r29","ctx_r41","ctx_r44","ctx_r47","ctx_r51","CoreSiteCategoryCmsModuleListComponent","activatedRoute","Number","snapshot","paramMap","LinkCmsModuleId","LinkCmsSiteCategoryId","virtual_CmsModule","virtual_CmsSiteCategory","ServiceDeleteEntity","onActionbuttonGoToSiteCategoryCmsModuleList","onActionBackToParent","onActionBackToParentModule","CoreSiteCategoryCmsModuleRouting","CoreSiteCategoryCmsModuleModule","CoreSiteCategoryCmsModuleService","CmsConfirmationDialogService","CoreSiteCategoryCmsModule","ctx_r5","CoreModuleSelectionlistComponent","fieldsStatus","dataIdsSelect","optionSelectRemoved","optionSelectAdded","ids","CoreSiteCategoryEditComponent","coreSiteCategoryService","CoreSiteCategoryModel","DataGetAllSiteCategoryCmsModule","F","z","dataCoreSiteCategoryCmsModuleModel","listG","dataCoreCpMainMenuIds","Ue","onActionSelectorUserCategorySelect","dataCoreCpMainMenuModel","onActionSelectorUserCategorySelectAdded","entity","onActionSelectorUserCategorySelectRemoved","CoreSiteCategoryAddComponent","ctx_r39","ctx_r42","ctx_r45","ctx_r49","onActionbuttonGoToSiteCategoryList","onActionbuttonModuleList","CoreSiteCategoryListComponent","CoreSiteCategoryRouting","CoreSiteCategoryService","CoreSiteCategorySelectorComponent","CoreSiteCategoryCmsModuleListViewComponent","optionSiteCategoryId","LinkSiteCategoryId","tabledisplayedColumns","listRemoveIfExist","CoreSiteAddFirstComponent","coreSiteService","coreAuthService","CoreSiteAddFirstSiteDtoModel","siteTypeId","localStorage","getItem","linkSiteCategoryId","checkValidateDomain","validateDomain","alphaExp","subDomain","GetDomainList","ServiceGetRegDomains","dataModelResultDomains","domain","_a","protocolSelect","ServiceAddFirstSite","typeSuccessAddFirstSite","clickSelectSite","typeErrorAdd","Id","authModel","AuthRenewTokenModel","siteId","ServiceRenewToken","res","onActionSelectorSelect","modelDateSiteCategory","ctx_r10","ctx_r13","CoreSiteSelectionComponent","translationService","coreSiteUserService","statusCheckExistWebSite","onActionClickSelectSite","buttonSubmittedEnabled","selectSiteId","lang","getSelectedLanguage","typeSuccessSelected","onActionAddFirstSite","ctx_r3","CoreSiteDeleteComponent","typeErrorDeleteRowIsNull","DataGetOne","formErrorStatus","typeErrorGetOne","onFormDelete","onFormChangeNewCatId","newCatId","ctx_r1","CoreSiteModuleSiteInfoComponent","requestLinkSiteId","linkSiteId","ServiceModuleDataInfo","CoreSiteModuleSiteOptimazeComponent","ServiceModuleDataOptimaze","ctx_r31","ctx_r33","ctx_r64","ctx_r67","ctx_r70","ctx_r73","ctx_r79","ctx_r82","ctx_r85","ctx_r88","ctx_r91","ctx_r94","CoreSiteListComponent","CoreSiteModel","requestLinkUserId","requestLinkSiteCategoryId","propertyAnyName","userAccessAdminAllowToAllData","userAccessAdminAllowToProfessionalData","listAddIfNotExist","onActionbuttonModuleListRow","onActionbuttonLoginToRow","onActionbuttonDomainAliasListRow","onActionbuttonUserListRow","onActionbuttonDeviceListRow","onActionbuttonResller","onActionbuttonModuleSiteInfo","onActionbuttonModuleSiteOptimaze","onActionBackToParentUserList","onActionBackToParentSiteCategoryList","ctx_r19","CoreSiteModuleEditComponent","coreModuleSiteService","CoreModuleSiteModel","requestLinkModuleId","linkModuleId","o","h","onActionSiteSelect","ctx_r14","ctx_r16","CoreSiteModuleAddComponent","ctx_r2","CmsSiteUserCreditViewComponent","coreModuleSiteUserCreditService","DataModuleGetOne","ServiceGetCredit","linkUserId","dataModuleModelResult","onFormActionCreditCharge","CmsSiteCreditViewComponent","coreModuleSiteCreditService","CoreSiteHeaderComponent","headerService","optionId","onActionbuttonLinkTo","CmsLinkToComponent","Title","urlViewContentQRCodeBase64","urlViewContent","currentSiteDomainUrl","CoreModuleHeaderComponent","ctx_r60","ctx_r63","ctx_r66","ctx_r69","ctx_r72","ctx_r75","ctx_r78","CoreSiteModuleListComponent","getModuleList","ServiceGetAllModuleName","dataModelCoreModuleResult","onActionbuttonReNewModule","LinkSiteId","filterStatist2","fastFilter2","onActionbuttonConfigSiteRow","onActionbuttonSiteCreditAccountRow","LinkModuleId","onActionbuttonSiteUserCreditAccountRow","onActionBackToParentModuleList","ctx_r115","ctx_r263","CoreSiteAddComponent","PoinModel","ENTER","COMMA","ownerSiteSetStatus","EnumSiteStatus","userLanguage","EnumLanguage","linkCreatedBySiteId","getEnumSiteStatus","getEnumLanguage","ServiceEnumSiteStatus","dataModelEnumSiteStatusResult","ServiceEnumLanguage","dataModelEnumLanguageResult","seoKeyword","keywordDataModel","listKeyword","receiveMap","mapModel","mapMarkerPoints","mapMarker","Leaflet","lat","lon","addTo","mapOptonCenter","latlng","lng","removeLayer","aboutUsGeolocationlatitude","aboutUsGeolocationlongitude","onActionFileSelectedAboutUsLinkImageId","aboutUsLinkImageId","aboutUsLinkImageIdSrc","onActionFileSelectedLinkFavIconId","linkFavIconId","linkFavIconIdSrc","onActionFileSelectedPwaIconSize190x192Id","pwaIconSize190x192Id","pwaIconSize190x192IdSrc","onActionFileSelectedPwaIconSize512x512Id","pwaIconSize512x512IdSrc","onActionFileSelectedLinkImageLogoId","linkImageLogoId","linkImageLogoIdSrc","onActionSelectCategory","addTag","chipInput","clear","removeTag","ctx_r135","ctx_r290","CoreSiteEditComponent","typeErrorEdit","onActionSelectorLinkResellerSiteIdSelect","linkResellerSiteId","onActionSelectorLinkResellerUserIdSelect","linkResellerUserId","ctx_r7","CoreUserSelectorComponent","CoreUserModel","username","lastName","CoreUserGroupSelectorComponent","CoreUserGroupModel","titleML","CoreSiteUserAddComponent","CoreSiteUserModel","requestLinkUserGroupId","linkUserGroupId","onActionSelectorSiteSelect","onActionSelectorUserSelect","onActionSelectorUserGroupSelect","CoreSiteUserEditComponent","ctx_r46","ctx_r48","ctx_r50","ctx_r52","ctx_r54","ctx_r96","ctx_r97","ctx_r99","CoreSiteUserListComponent","virtual_CmsSite","virtual_CmsUser","onActionbuttonEditSiteRow","onActionbuttonEditUserRow","onActionbuttonResllerUser","onActionbuttonResllerSite","onActionBackToParentSiteList","onActionBackToParentUserGroupList","userId","ctx_r9","ctx_r11","ctx_r18","ctx_r24","CoreInfoComponent","DataGetInfo","ServiceGetShareInfo","onActionCopied","typeSuccessCopedToClipboard","onActionbuttonResllerUserShortLinkStatus","_b","urlResellerUserShortLinkUrl","_c","indexLast","lastIndexOf","substr","onActionbuttonResllerUserCategoryShortLinkStatus","urlResellerSiteCategoryShortLinkUrl","onActionbuttonResllerSiteShortLinkStatus","urlResellerSiteShortLinkUrl","onActionbuttonlinkToSiteHome","urlSiteHomeShortLinkQRCodeBase64","urlSiteHome","onActionbuttonlinkToSiteCPanel","urlSiteCPanelShortLinkQRCodeBase64","urlSiteCPanel","onActionbuttonResllerSiteShortLinkTo","onActionbuttonResllerUserShortLinkTo","urlResellerUserShortLinkQRCodeBase64","onActionbuttonResllerUserCategoryShortLinklinkTo","urlResellerSiteCategoryShortLinkQRCodeBase64","CoreSiteResellerChartComponent","RessellerChartModel","NestedTreeControl","siteChilds","MatTreeNestedDataSource","hasChild","_","ServiceGetRessellerChart","dataSource","CoreSiteRouting","CoreSiteResolver","resolve","CoreSiteModule","CoreModuleSiteService","CoreSiteDomainAliasService","CoreUserService","CoreSiteUserService","CoreUserModule","CoreUserGroupCmsModule","ColorPickerModule","CoreSiteSelectorComponent","ctx_r22","CoreUserGroupEditComponent","coreUserGroupService","getEnumManageUserAccessUserTypes","ServiceEnumManageUserAccessUserTypes","dataModelEnumManageUserAccessUserTypesResult","P","CoreUserGroupAddComponent","ctx_r40","ctx_r43","onActionbuttonUserList","CoreUserGroupListComponent","CoreUserGroupRouting","CoreUserGroupService","CoreUserAddComponent","coreUserService","S","passwordValid","passwordIsValid","ctx_r20","CoreUserChangePasswordComponent","AuthUserChangePasswordModel","NewPasswordRepeat","ServiceChangePassword","oldPassword","newPassword","CoreUserViewComponent","getEnumSendSmsStatusType","ServiceEnumSendSmsStatusType","dataModelEnumSendSmsStatusTypeResult","ctx_r81","ctx_r83","ctx_r84","ctx_r86","CoreUserListComponent","de","onActionbuttonViewRow","accessWatchRow","typeErrorAccessWatch","onActionbuttonChangePassword","onActionbuttonSiteByGroupList","CoreUserComponent","CoreUserEditComponent","typeErrorAddRowParentIsNull","CoreUserResellerChartComponent","userChilds","CoreUserRouting","CoreEnumService","CmsFileManagerModule","ComponentOptionExportDataModel","ComponentOptionSearchDataModel","ComponentOptionStatistDataModel","CmsRecordStatusSelfSaveDirective","elRef","renderer","u","co","option","iconStatus","nativeElement","recordStatus","onChange","addLoader","ServiceSetStatus","handleSuccessCase","typeSuccessSetStatus","markForCheck","typeErrorSetStatus","handleErrorCase","removeBackground","addSuccess","src","addBackground","backgroundImg","backgroundSize","background","DOCUMENT","DirDirective","_dir","old","dirChange","PersianDate","persianCalendarService","transform","PersianCalendar","pure","PersianCalendarService","gregorianDate","today","gregorianYear","getFullYear","gregorianMonth","getMonth","getDate","WeekDay","getDay","toPersian","strWeekDay","day","strMonth","year","PersianCalendarSmall","myMonth","PersianCalendarVerySmall","PersianCalendarMonth","farsiDate","func1","func2","monthNames","month","weekDayNames","buf1","day2","ld","buf2","BoolStatusClassPipe","sanitizer","CmsImageThumbnailPipe","CmsTitlePipe","RecordStatusClassPipe","editable","DefaultLayoutConfig","demo","js","xxl","colors","theme","base","white","primary","secondary","success","info","warning","danger","light","dark","inverse","gray","fontFamily","layout","backgroundImage","pageLoader","fixed","menu","static","rootArrow","iconStyle","arrow","subheader","displayDesc","displayDaterangepicker","breadcrumb","layoutVersion","content","brand","aside","hoverTimeout","extras","offcanvas","notifications","quickActions","user","languages","cart","chat","quickPanel","toolbar","scrolltop","LAYOUT_CONFIG_LOCAL_STORAGE_KEY","environment","LayoutService","BehaviorSubject","header_container","header_mobile","header_menu","aside_menu","subheader_container","content_container","footer_container","initConfig","configFromLocalStorage","layoutConfigSubject","removeConfig","removeItem","refreshConfigToDefault","setConfigWithPageRefresh","getConfig","setConfig","config","setItem","setConfigWithoutLocalStorageChanges","getProp","setCSSClass","classesInStr","cssClasses","cssClass","getCSSClasses","getStringCSSClasses","getHTMLAttributes","setHTMLAttribute","attrKey","attrValue","attributesObj","element_r12","TestComponent","ELEMENT_DATA","trigger","minHeight","weight","symbol","description","_element","_elementForMobile","_object","idForMobile","KTHeader","isFixed","isFixedForMobile","getElement","getElementForMobile","getHeader","getHeight","getHeightForMobile","KTLayoutSubheader","_getHeight","KTLayoutFooter","KTLayoutContent","KTLayoutHeader","LayoutInitService","preInitLayout","initLayout","initLoader","initHeader","initSubheader","initContent","initAside","initFooter","initSkins","updatedConfig","subheaderFixed","headerSelfFixedDesktop","selfBodyBackgroundImage","selfBodyClass","bodyClasses","headerSelfFixedMobile","headerMenuSelfDisplay","headerMenuSelfLayout","subheaderStyle","asideMenuDropdown","asideMenuSubmenuDropdownHoverTimout","HeaderMobileComponent","headerMobileClasses","headerMobileAttributes","headerLogo","getLogoUrl","asideSelfDisplay","ngAfterViewInit","headerSelfTheme","brandSelfTheme","KTLayoutHeaderMenu","_menuElement","_menuObject","_offcanvasElement","_offcanvasObject","menuId","offcanvasId","KTOffcanvas","KTMenu","getMenuElement","getOffcanvasElement","getMenu","getOffcanvas","closeMobileOffcanvas","emptyMenuConfig","DynamicHeaderMenuService","coreCpMainMenuService","menuConfig$","menuConfigSubject","asObservable","setMenu","DataGetCpMenu","menuConfig","menuItems","alignment","page","ServiceGetAllMenu","listItemAdd","bullet","icon","mega","rootStatus","retOut","re","routeAddressLink","color","svg","listItemsChildAdd","HeaderMenuDynamicComponent","ulCSSClasses","rootArrowEnabled","headerMenuDesktopToggle","currentUrl","url","routerSubscr","NavigationEnd","detectChanges","subscriptions","menuSubscr","isMenuItemActive","sb","KTLayoutQuickSearch","form","results","placement","_init","KTLayoutQuickNotifications","KTLayoutQuickActions","KTLayoutQuickCartPanel","wrapper","KTLayoutQuickPanel","_notificationsElement","_logsElement","_settingsElement","_getContentHeight","KTLayoutQuickUser","KTLayoutHeaderTopbar","_toggleElement","KTToggle","getToggleElement","SearchResultComponent","documents","svgPath","members","imgPath","files","iconClasses","SearchDropdownInnerComponent","searchInput","openChange","showCloseButton","ctx_r6","ctx_r8","NotificationsDropdownInnerComponent","extrasNotificationsDropdownStyle","setActiveTabId","tabId","activeTabId","getActiveCSSClasses","QuickActionsDropdownInnerComponent","extrasQuickActionsDropdownStyle","CartDropdownInnerComponent","extrasCartDropdownStyle","ctx_r12","CmsTokenAccessComponent","onActionbuttonUserAccessAdminAllowToAllData","NewToall","language","toastr","loadingStatus","etitle","typeErrorAccessChange","onActionbuttonUserAccessAdminAllowToProfessionalData","NewToPerf","onActionbuttonSelectUser","inputUserId","ne","inputSiteId","onActionbuttonSelectSite","FirstLetterPipe","n","UserDropdownInnerComponent","ticketingTaskService","ErrorExceptionResultBase","extrasUserDropdownStyle","DataTaskViewerGetCount","userAccessUserType","EnumManageUserAccessUserTypes","IsAdminSite","DataTaskEditorGetCount","logout","typeOrderActionLogout","ServiceLogout","typeSuccessLogout","typeErrorLogout","checkModule","EnumTicketStatus","setAccessDataType","EnumManageUserAccessDataTypes","dataTaskGetCountViewerModelResult","typeErrorGetAll","dataTaskGetCountEditorModelResult","TopbarComponent","extraSearchDisplay","extrasSearchLayout","extrasNotificationsDisplay","extrasNotificationsLayout","extrasQuickActionsDisplay","extrasQuickActionsLayout","extrasCartDisplay","extrasCartLayout","extrasLanguagesDisplay","extrasUserDisplay","extrasUserLayout","extrasQuickPanelDisplay","HeaderComponent","loader$","loaderSubject","routerSubscription","NavigationStart","RouteConfigLoadStart","RouteConfigLoadEnd","NavigationCancel","routerLoaderTimout","headerContainerCSSClasses","headerMenuSelfStatic","getLogoURL","headerMenuCSSClasses","headerMenuHTMLAttributes","ktHeaderMenu","SubheaderService","setDefaultSubheader","setSubheaderVersion","setBreadcrumbs","breadCrumbsSubject","setTitle","titleSubject","setDescription","descriptionSubject","version","subheaderVersionSubject","updateAfterRouteChanges","pathName","getBreadcrumbsAndTitle","getLinksFromMenu","parentLiElements","childLiElements","links","aLink","SubheaderModel","activeLinks","activeLinksArray","titleSpans","titleSpan","linkPath","pathname","linkText","getTitle","parseUrlAndReturnPathname","breadCrumbs","Subheader1Component","title$","breadcrumbs$","description$","subheaderCSSClasses","subheaderContainerCSSClasses","subheaderMobileToggle","subheaderDisplayDesc","subheaderDisplayDaterangepicker","Subheader2Component","Subheader3Component","Subheader4Component","Subheader5Component","Subheader6Component","Subheader7Component","SubheaderWrapperComponent","subheaderVersion$","ResolveEnd","DynamicAsideMenuService","AsideDynamicComponent","disableAsideSelfDisplay","brandSkin","getLogo","asideMenuCSSClasses","asideMenuHTMLAttributes","brandClasses","asideSelfMinimizeToggle","asideMenuScroll","FooterComponent","configService","currentDate","currentYear","footerContainerCSSClasses","footerLayout","GetServiceVer","ServiceIp","appServerVersion","appVersion","SearchOffcanvasComponent","extrasSearchOffcanvasDirectionCSSClass","NotificationsOffcanvasComponent","extrasNotificationsOffcanvasDirectionCSSClass","QuickActionsOffcanvasComponent","extrasQuickActionsOffcanvasDirectionCSSClasses","CartOffcanvasComponent","extrasCartOffcanvasDirectionCSSClass","QuickPanelOffcanvasComponent","extrasQuickPanelOffcanvasDirectionCSSClass","UserOffcanvasComponent","extrasUserOffcanvasDirection","ToolbarComponent","navigateToBuilder","KTLayoutScrolltop","KTScrolltop","ScrollTopComponent","KTLayoutStickyCard","KTCard","card","cardWidth","KTLayoutStretchedCard","cardBody","cardHeader","KTLayoutAside","offcanvasClass","KTLayoutAsideMenu","menuDesktopMode","ScriptsInitComponent","routingChanges","offCanvas","btnQuickUserClose","click","initService","CurrentTokenInfoRenew","CheckRouteByToken","selfLayout","asideMenuStatic","subheaderDisplay","contentClasses","contentContainerClasses","contentExtended","asideHTMLAttributes","asideCSSClasses","footerDisplay","footerCSSClasses","headerCSSClasses","headerHTMLAttributes","extrasSearchOffcanvasDisplay","extrasNotificationsOffcanvasDisplay","extrasQuickActionsOffcanvasDisplay","extrasCartOffcanvasDisplay","extrasUserOffcanvasDisplay","extrasScrollTopDisplay","ktAside","ktHeaderMobile","ktHeader","LayoutComponent","loadChildren","m","DashboardModule","BuilderModule","CoreModule","Promise","CoreModuleLogModule","CoreTokenModule","CoreLogModule","ApplicationModule","ArticleModule","BankPaymentModule","BiographyModule","BlogModule","LinkManagementModule","MemberModule","NewsModule","FileManagerModule","PollingModule","SmsModule","TicketingModule","UniversalMenuModule","WebDesignerModule","MessageModule","CrisisManagementModule","OnCallModule","EducationModule","redirectTo","pathMatch","PagesRoutingModule","SubheaderModule","InlineSVGModule","NgbDropdownModule","DEFAULT_PERFECT_SCROLLBAR_CONFIG","ExtrasModule","provide","PERFECT_SCROLLBAR_CONFIG","useValue","TicketingTaskService","PagesModule","CoreCpMainMenuService","CoreConfigurationService","CoreAuthService","NgbProgressbarModule","ConfirmationDialogComponent","activeModal","decline","accept","dismiss","modalService","btnOkText","btnCancelText","dialogSize","modalRef","size","componentInstance","CmsExportListComponent","ExportFileModel","eum","EnumInfoModel","fileTypeListItems","recieveMethodListItems","optionsData","optionsChange","modelData","exportFile","CmsGuideNoticeComponent","coreGuideService","onGetOne","Identity","titleFa","descriptionFa","bodyFa","titleEn","descriptionEn","bodyEn","titleAr","descriptionAr","bodyAr","titleDe","descriptionDe","bodyDe","typeWarningMessage","Key","ServiceGetOneByKey","onActionBottunClick","bodyShow","onActionCloseBottunClick","CmsHISSelectorComponent","CoreHISModel","R","CmsHtmlListComponent","optionLoading","CmsHtmlNoticeComponent","KeysPipe","optionFields","CmsJsonListComponent","http","optionTitle","optionurlViewContentQRCodeBase64","optionurlViewContent","onActionSendUrlToQDoc","QDocModel","typeWarningSelected","post","headers","typeSuccessMessage","onActionOpenLink","serializeUrl","createUrlTree","CmsMapComponent","layers","tileLayer","opacity","maxZoom","detectRetina","zoom","center","optonCenter","setView","optionCurrentPoint","setPont","onActionCurrentPoint","iconDefault","iconRetinaUrl","iconUrl","shadowUrl","iconSize","iconAnchor","popupAnchor","tooltipAnchor","shadowSize","clearAllEventListeners","onMapReady","invalidateSize","map$","getZoom","zoom$","onMapZoomEnd","getPosition","reject","geolocation","getCurrentPosition","resp","coords","longitude","latitude","err","typeErrorGetPosition","CmsSearchListComponent","currentLang","setFields","column","accessSearchField","fieldType","fieldMap","fieldName","fieldTitle","getRules","condition","rules","ruleSet","rule","getRulesSetChild","Filter","getRulesChild","getSearchType","operator","field","ruleSetInput","Filters","onGetRules","onSaveRules","onSetRules","CmsSiteSelectorComponent","CmsStatistListComponent","CmsUserSelectorComponent","dest","source","importantProperties","removeProperty","enable","userSelect","extendStyles","initialTransform","multiplier","computedStyle","part","clientRect","threshold","pointerX","pointerY","xThreshold","yThreshold","_document","positions","elements","scrollPosition","getViewportScrollPosition","getMutableClientRect","handleScroll","_getEventTarget","cachedPosition","newTop","newLeft","viewportScrollPosition","topDifference","leftDifference","adjustClientRect","scrollX","clone","cloneNode","descendantsWithId","transferCanvasData","transferInputData","transferData","descendantElements","cloneElements","cloneUniqueId","context","getContext","drawImage","passiveEventListenerOptions","normalizePassiveListenerOptions","passive","activeEventListenerOptions","dragImportantProperties","Set","_config","_ngZone","_viewportRuler","_dragDropRegistry","_passiveTransform","_activeTransform","_hasStartedDragging","_moveEvents","Subject","_pointerMoveSubscription","Subscription","_pointerUpSubscription","_scrollSubscription","_resizeSubscription","_boundaryElement","_nativeInteractionsEnabled","_handles","_disabledHandles","_direction","dragStartDelay","_disabled","beforeStarted","started","released","ended","entered","exited","dropped","moved","_pointerDown","targetHandle","_getTargetHandle","disabled","_initializeDragSequence","_rootElement","_pointerMove","pointerPosition","_getPointerPositionOnPage","_pickupPositionOnPage","dragStartThreshold","isDelayElapsed","_dragStartTime","_getDragStartDelay","container","_dropContainer","_endDragSequence","isDragging","isReceiving","run","_startDragSequence","constrainedPointerPosition","_getConstrainedPointerPosition","_hasMoved","_lastKnownPointerPosition","_updatePointerDirectionDelta","_updateActiveDropContainer","activeTransform","_applyRootElementTransform","observers","distance","_getDragDistance","delta","_pointerDirectionDelta","_pointerUp","_nativeDragStart","withRootElement","withParent","parentDragRef","_parentPositions","ParentPositionTracker","registerDragItem","newValue","coerceBooleanProperty","_toggleNativeDragInteractions","toggleNativeDragInteractions","getPlaceholderElement","_placeholder","getRootElement","getVisibleElement","withHandles","handles","coerceElement","disabledHandles","withPreviewTemplate","template","_previewTemplate","withPlaceholderTemplate","_placeholderTemplate","rootElement","_removeRootElementListeners","runOutsideAngular","_initialTransform","SVGElement","_ownerSVGElement","ownerSVGElement","withBoundaryElement","boundaryElement","_containInsideBoundaryOnResize","_parentDragRef","dispose","_anchor","_destroyPreview","_destroyPlaceholder","removeDragItem","_removeSubscriptions","complete","disableHandle","enableHandle","delete","withDirection","_withDropContainer","getFreeDragPosition","setFreeDragPosition","withPreviewContainer","_previewContainer","_sortFromLastPointerPosition","_preview","_previewRef","_placeholderRef","stopDragging","webkitTapHighlightColor","_rootElementTapHighlight","_stopScrolling","_animatePreviewToPlaceholder","_cleanupDragArtifacts","_cleanupCachedDimensions","dropPoint","isTouchEvent","_lastTouchEventTime","dropContainer","placeholder","_createPlaceholderElement","anchor","createComment","_getShadowRoot","_createPreviewElement","toggleVisibility","replaceChild","_getPreviewInsertionPoint","_initialContainer","_initialIndex","getItemIndex","getScrollableParents","referenceElement","isTouchSequence","isAuxiliaryMouseButton","button","isSyntheticEvent","isFakeEvent","isFakeTouchstartFromScreenReader","isFakeMousedownFromScreenReader","draggable","rootStyles","pointerMove","pointerUp","scrolled","scrollEvent","_updateOnScroll","_boundaryRect","previewTemplate","_pickupPositionInElement","matchSize","_getPointerPositionInElement","_pointerPositionAtLastDirectionChange","startDragging","_previewRect","isPointerOverContainer","_isOverContainer","previousContainer","drop","rawX","rawY","newContainer","_getSiblingContainerFromPosition","exit","enter","sortingDisabled","_startScrollingIfNecessary","_sortItem","_applyPreviewTransform","previewConfig","previewClass","preview","rootRect","viewRef","viewContainer","createEmbeddedView","getRootNode","I","matchElementSize","getTransform","deepCloneNode","placeholderRect","transitionedProperties","parseCssPropertyValue","property","propertyIndex","rawDurations","rawDelays","parseCssTimeUnitsToMs","getTransformTransitionDurationInMs","placeholderConfig","placeholderTemplate","pointerEvents","elementRect","handleElement","referenceRect","point","_getViewportScrollPosition","svgMatrix","getScreenCTM","svgPoint","createSVGPoint","matrixTransform","dropContainerLock","lockAxis","constrainPosition","pickupX","pickupY","boundaryRect","previewWidth","previewHeight","_getPreviewRect","minY","maxY","clamp$1","pointerPositionOnPage","positionSinceLastChange","changeX","changeY","pointerDirectionChangeThreshold","shouldEnable","combineTransforms","currentPosition","pickupPosition","leftOverflow","rightOverflow","topOverflow","bottomOverflow","mouse","scrollDifference","_cachedShadowRoot","initialParent","previewContainer","documentRef","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","rootNodes","ELEMENT_NODE","sourceRect","array","fromIndex","toIndex","clamp","autoScrollDisabled","autoScrollStep","enterPredicate","sortPredicate","sorted","_isDragging","_itemPositions","_previousSwap","drag","overlaps","_draggables","_siblings","_orientation","_activeSiblings","_viewportScrollSubscription","_verticalScrollDirection","_horizontalScrollDirection","_stopScrollTimers","_startScrollInterval","period","scheduler","asyncScheduler","interval","animationFrameScheduler","takeUntil","_scrollNode","scrollStep","withScrollableParents","registerDropContainer","removeDropContainer","_draggingStarted","_notifyReceivingSiblings","newIndex","_getItemIndexFromPointerPosition","activeDraggables","_activeDraggables","newPositionReference","_shouldEnterAsFirstChild","_cacheItemPositions","_cacheParentPositions","_reset","withItems","previousItems","draggedItems","_cacheItems","connectedTo","withOrientation","orientation","_scrollableElements","currentItem","pointerDelta","_clientRect","isPointerNearClientRect","siblings","isHorizontal","siblingAtNewPosition","newPosition","itemOffset","_getItemOffsetPx","siblingOffset","_getSiblingOffsetPx","oldOrder","sibling","isDraggedItem","elementToOffset","ce","isInsideClientRect","scrollNode","verticalScrollDirection","horizontalScrollDirection","computedVertical","getVerticalScrollDirection","computedHorizontal","getHorizontalScrollDirection","getElementScrollDirections","getViewportSize","_initialScrollSnap","msScrollSnapType","scrollSnapType","_listenToScrollEvents","elementToMeasure","current","_stopReceiving","immediateSibling","end","itemPositions","lastItemRect","firstItemRect","_canReceive","elementFromPoint","_startReceiving","activeSiblings","activeCapturingEventOptions","capture","DragDropRegistry","_dropInstances","_dragInstances","_activeDragInstances","_globalListeners","_draggingPredicate","_preventDefaultWhileDragging","_persistentTouchmoveListener","some","_clearGlobalListeners","streams","Observable","observer","eventOptions","merge","instance","ɵfac","ɵprov","DEFAULT_CONFIG","DragDrop","createDrag","DragRef","createDropList","DropListRef","i1","CDK_DRAG_PARENT","InjectionToken","CDK_DROP_LIST_GROUP","CDK_DRAG_CONFIG","_uniqueIdCounter","CDK_DROP_LIST","CdkDropList","dragDrop","_changeDetectorRef","_scrollDispatcher","_group","_destroyed","_unsortedItems","_dropListRef","_assignDefaults","_setupInputSyncSubscription","_handleEvents","_dropLists","_items","addItem","_syncItemsWithRef","getSortedItems","documentPosition","_dragRef","compareDocumentPosition","DOCUMENT_POSITION_FOLLOWING","coerceArray","_scrollableParentsResolved","scrollableParents","getAncestorScrollContainers","scrollable","getElementRef","coerceNumberProperty","draggingDisabled","listAutoScrollDisabled","listOrientation","i3","ɵdir","useExisting","CDK_DRAG_HANDLE","CdkDragHandle","parentDrag","_stateChanges","_parentDrag","CDK_DRAG_PLACEHOLDER","CDK_DRAG_PREVIEW","CdkDrag","_viewContainerRef","_selfHandle","subscription","movedEvent","_syncInputs","onStable","take","_updateRootElement","_setupHandlesListener","freeDragPosition","ngOnChanges","changes","rootSelectorChange","rootElementSelector","positionChange","firstChange","_getBoundaryElement","boundary","templateRef","tap","childHandleElements","handleInstance","dragRef","Y","oe","DragDropModule","ɵmod","ɵinj","CdkScrollableModule","optionSelect","W","triggerCommand","block","fontName","fontSize","insertColor","insertUrl","onFileChanged","insertVideo","executeCommand","AngularEditorService","saveSelection","getSelection","sel","getRangeAt","rangeCount","savedSelection","selectedText","createRange","command","commands","execCommand","createLink","insertHtml","where","restored","restoreSelection","setFontName","setFontSize","removeAllRanges","addRange","executeInNextQueueIteration","callbackFn","checkSelection","uploadImage","file","uploadData","FormData","append","uploadUrl","reportProgress","observe","withCredentials","uploadWithCredentials","insertImage","imageUrl","setDefaultParagraphSeparator","separator","createCustomClass","customClass","newTag","tag","class","videoUrl","insertYouTubeVideoTag","insertVimeoVideoTag","sub","thumbnail_url_with_play_button","nextNode","hasChildNodes","getRangeSelectedNodes","range","includePartiallySelectedContainers","startContainer","endNode","endContainer","rangeNodes","commonAncestorContainer","unshift","getSelectedNodes","nodes","replaceWithOwnChildren","removeSelectedElements","tagNames","tagNamesArray","angularEditorConfig","spellcheck","maxHeight","minWidth","enableToolbar","showToolbar","defaultParagraphSeparator","defaultFontName","defaultFontSize","fonts","sanitize","toolbarPosition","outline","AeSelectComponent","opened","hidden","changeEvent","onTouched","label","selectedOption","isDefined","isHidden","toggleOpen","onClick","$event","isOpen","writeValue","selectedEl","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","labelButton","handleKeyDown","_handleArrowDown","_handleArrowUp","_handleSpace","_handleEnter","_handleTab","_handleBackspace","ɵcmp","O","NG_VALUE_ACCESSOR","forwardRef","multi","decls","directives","i1$1","AngularEditorToolbarComponent","editorService","htmlMode","linkSelected","headings","fontSizes","customClassId","customClassList","tagMap","BLOCKQUOTE","A","select","execute","customClasses","_customClasses","isLinkButtonDisabled","Boolean","triggerButtons","queryCommandState","elementById","triggerBlocks","found","foreColour","queryCommandValue","backColor","selection","prompt","foreColor","setEditorMode","toggleEditorModeButton","upload","watchUploadImage","reader","FileReader","onload","readAsDataURL","srcElement","setCustomClass","classId","isButtonHidden","hiddenButtons","i4","AngularEditorComponent","cdRef","defaultTabIndex","autoFocus","modeVisual","showPlaceholder","focused","touched","changed","viewMode","blurEvent","focusEvent","tabindex","parsedTabIndex","tabIndex","onFocus","onPaste","rawPaste","clipboardData","getData","toggleEditorMode","getCustomTags","onContentChange","textArea","exec","onTextAreaFocus","configure","onTextAreaMouseOut","onTextAreaBlur","relatedTarget","innerText","SecurityContext","togglePlaceholder","refreshView","editorWrapper","bToSource","oContent","editableElement","createText","oPre","setStyle","oCode","focusInstance","listen","blurInstance","selectNodeContents","editorToolbar","userSelection","focusNode","els","getFonts","tags","filterStyles","i2","N","onColorChange","onDragStart","onDragEnd","Ce","onAcceptColor","onAlphaInput","onCyanInput","onMagentaInput","onYellowInput","onBlackInput","onHueInput","onSaturationInput","onLightnessInput","onRedInput","onGreenInput","onBlueInput","onHexInput","onValueInput","onFormatToggle","$implicit","onRemovePresetColor","setColorFromString","onCancelColor","ColorFormats","HEX","RGBA","HSLA","CMYK","k","TextDirective","inputChange","rg","numeric","q","inputs","SliderDirective","dragEnd","dragStart","listenerMove","move","listenerStop","stop","mouseDown","setCursor","getX","getY","rgX","rgY","ColorPickerService","setActive","cpDialogDisplay","closeDialog","hsva2hsla","hsva","Hsla","hsla2hsva","hsla","Hsva","hsvaToRgba","Rgba","cmykToRgb","cmyk","rgbaToCmyk","rgba","Cmyk","rgbaToHsva","rgbaToHex","allowHex8","hex","normalizeCMYK","denormalizeCMYK","denormalizeRGBA","stringToHsva","colorString","stringParsers","execResult","parser","outputFormat","alphaChannel","hslaText","SUPPORTS_TOUCH","ColorPickerComponent","ngZone","platformId","service","isIE10","dialogArrowSize","dialogArrowOffset","dialogInputFields","useRootViewContainer","eyeDropperSupported","isPlatformBrowser","handleEsc","handleEnter","slider","SliderPosition","sliderDimMax","SliderDimension","hueSlider","cpWidth","alphaSlider","format","cpCmykEnabled","cpOutputFormat","listenerMouseDown","onMouseDown","listenerResize","onResize","openDialog","initialColor","updateColorPicker","directiveElementRef","setInitialColor","openColorPicker","closeColorPicker","setupDialog","elementRef","cpHeight","cpFallbackColor","cpColorMode","cpAlphaChannel","cpDisableInput","cpIgnoredElements","cpSaveClickOutside","cpCloseClickOutside","cpUseRootViewContainer","cpPosition","cpPositionOffset","cpPositionRelativeToArrow","cpPresetLabel","cpPresetColors","cpPresetColorsClass","cpMaxPresetColorsLength","cpPresetEmptyMessage","cpPresetEmptyMessageClass","cpOKButton","cpOKButtonClass","cpOKButtonText","cpCancelButton","cpCancelButtonClass","cpCancelButtonText","cpAddColorButton","cpAddColorButtonClass","cpAddColorButtonText","cpRemoveColorButtonClass","cpEyeDropper","cpTriggerElement","cpExtraTemplate","setColorMode","directiveInstance","fallbackColor","setPresetConfig","sliderH","setDialogPosition","sliderDragEnd","outputColor","sliderDragStart","isDescendant","colorSelected","cmykChanged","cmykColor","colorChanged","colorCanceled","onEyeDropper","EyeDropper","eyeDropperResult","sRGBHex","availableFormats","nextFormat","sliderChanged","onHueChange","onValueChange","onAlphaChange","validHex","inputChanged","input","onAddPresetColor","concat","presetColorsChanged","stateChanged","destroyed","cmykInput","hue","lastOutput","rgbaText","cmykText","hexText","hexAlpha","hueSliderColor","alphaSliderColor","selectedColor","alpha","transformNode","dialogHeight","dialogElement","boxDirective","createDialogBox","HTMLUnknownElement","boxParent","usePosition","elBounds","triggerElBounds","usePositionX","usePositionY","collisionTop","collisionBottom","innerHeight","collisionLeft","collisionRight","innerWidth","postions","prev","calculateAutoPositioning","arrowTop","$e","cpUsePosition","PLATFORM_ID","ColorPickerDirective","injector","cfr","appRef","vcRef","_service","dialogCreated","ignoreChanges","viewAttachedToAppRef","cpToggle","cpDisabled","cpInputChange","cpToggleChange","cpSliderChange","cpSliderDragEnd","cpSliderDragStart","colorPickerOpen","colorPickerClose","colorPickerCancel","colorPickerSelect","colorPickerChange","cpCmykColorChange","cpPresetColorsChange","handleClick","inputFocus","handleFocus","handleInput","cmpRef","detachView","hostView","colorPicker","changeDetectorRef","appInstance","componentTypes","Injector","viewContainerRef","compFactory","resolveComponentFactory","attachView","providers","createComponent","ignore","ignored"],"sourceRoot":"webpack:///","sources":["./node_modules/object-path/index.js","./src/assets/js/components/card.js","./src/assets/js/components/cookie.js","./src/assets/js/components/header.js","./src/assets/js/components/menu.js","./src/assets/js/components/offcanvas.js","./src/assets/js/components/scrolltop.js","./src/assets/js/components/toggle.js","./node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js","./src/assets/js/components/util.js","./src/app/_metronic/partials/content/dropdown-menus/dropdown-menu1/dropdown-menu1.component.ts","./src/app/_metronic/partials/content/dropdown-menus/dropdown-menu1/dropdown-menu1.component.html","./src/app/_metronic/partials/content/dropdown-menus/dropdown-menu2/dropdown-menu2.component.ts","./src/app/_metronic/partials/content/dropdown-menus/dropdown-menu2/dropdown-menu2.component.html","./src/app/_metronic/partials/content/dropdown-menus/dropdown-menu3/dropdown-menu3.component.ts","./src/app/_metronic/partials/content/dropdown-menus/dropdown-menu3/dropdown-menu3.component.html","./src/app/_metronic/partials/content/dropdown-menus/dropdown-menu4/dropdown-menu4.component.ts","./src/app/_metronic/partials/content/dropdown-menus/dropdown-menu4/dropdown-menu4.component.html","./src/app/_metronic/partials/content/dropdown-menus/dropdown-menus.module.ts","./src/app/cms-modules/core-main/core.shared.module.ts","./src/app/cms-modules/core-main/module/add/add.component.html","./src/app/cms-modules/core-main/module/add/add.component.ts","./src/app/cms-modules/core-main/module/list/list.component.html","./src/app/cms-modules/core-main/module/coreModule.routing.ts","./src/app/cms-modules/core-main/module/list/list.component.ts","./src/app/cms-modules/core-main/module/coreModule.module.ts","./src/app/cms-modules/core-main/module/edit/edit.component.html","./src/app/cms-modules/core-main/module/edit/edit.component.ts","./src/app/cms-modules/core-main/module/selector/selector.component.html","./src/app/cms-modules/core-main/module/selector/selector.component.ts","./src/app/cms-modules/core-main/site-category-module/edit/edit.component.html","./src/app/cms-modules/core-main/site-category-module/edit/edit.component.ts","./src/app/cms-modules/core-main/site-category-module/add/add.component.html","./src/app/cms-modules/core-main/site-category-module/add/add.component.ts","./src/app/cms-modules/core-main/site-category-module/list/list.component.html","./src/app/cms-modules/core-main/site-category-module/list/list.component.ts","./src/app/cms-modules/core-main/site-category-module/coreSiteCategoryCmsModule.routing.ts","./src/app/cms-modules/core-main/site-category-module/coreSiteCategoryCmsModule.module.ts","./src/app/cms-modules/core-main/module/selectionlist/selectionlist.component.html","./src/app/cms-modules/core-main/module/selectionlist/selectionlist.component.ts","./src/app/cms-modules/core-main/site-category/edit/edit.component.html","./src/app/cms-modules/core-main/site-category/edit/edit.component.ts","./src/app/cms-modules/core-main/site-category/add/add.component.html","./src/app/cms-modules/core-main/site-category/add/add.component.ts","./src/app/cms-modules/core-main/site-category/list/list.component.html","./src/app/cms-modules/core-main/site-category/coreSiteCategory.routing.ts","./src/app/cms-modules/core-main/site-category/list/list.component.ts","./src/app/cms-modules/core-main/site-category/coreSiteCategory.module.ts","./src/app/cms-modules/core-main/site-category/selector/selector.component.html","./src/app/cms-modules/core-main/site-category/selector/selector.component.ts","./src/app/cms-modules/core-main/site-category-module/listview/listview.component.html","./src/app/cms-modules/core-main/site-category-module/listview/listview.component.ts","./src/app/cms-modules/core-main/site/addFirst/addFirst.component.html","./src/app/cms-modules/core-main/site/addFirst/addFirst.component.ts","./src/app/cms-modules/core-main/site/selection/selection.component.html","./src/app/cms-modules/core-main/site/selection/selection.component.ts","./src/app/cms-modules/core-main/site/delete/delete.component.html","./src/app/cms-modules/core-main/site/delete/delete.component.ts","./src/app/cms-modules/core-main/site/module-site-info/module-site-info.component.html","./src/app/cms-modules/core-main/site/module-site-info/module-site-info.component.ts","./src/app/cms-modules/core-main/site/module-site-optimaze/module-site-optimaze.component.html","./src/app/cms-modules/core-main/site/module-site-optimaze/module-site-optimaze.component.ts","./src/app/cms-modules/core-main/site/list/list.component.html","./src/app/cms-modules/core-main/site/list/list.component.ts","./src/app/cms-modules/core-main/site/moduleEdit/moduleEdit.component.html","./src/app/cms-modules/core-main/site/moduleEdit/moduleEdit.component.ts","./src/app/cms-modules/core-main/site/moduleAdd/moduleAdd.component.html","./src/app/cms-modules/core-main/site/moduleAdd/moduleAdd.component.ts","./src/app/shared/cms-site-user-credit-view/cms-site-user-credit-view.component.html","./src/app/shared/cms-site-user-credit-view/cms-site-user-credit-view.component.ts","./src/app/shared/cms-site-credit-view/cms-site-credit-view.component.html","./src/app/shared/cms-site-credit-view/cms-site-credit-view.component.ts","./src/app/cms-modules/core-main/site/header/header.component.html","./src/app/cms-modules/core-main/site/header/header.component.ts","./src/app/cms-modules/core-main/module/header/header.component.html","./src/app/cms-modules/core-main/module/header/header.component.ts","./src/app/cms-modules/core-main/site/moduleList/moduleList.component.html","./src/app/cms-modules/core-main/site/moduleList/moduleList.component.ts","./src/app/cms-modules/core-main/site/add/add.component.html","./src/app/cms-modules/core-main/site/add/add.component.ts","./src/app/cms-modules/core-main/site/edit/edit.component.html","./src/app/cms-modules/core-main/site/edit/edit.component.ts","./src/app/cms-modules/core-main/user/selector/selector.component.html","./src/app/cms-modules/core-main/user/selector/selector.component.ts","./src/app/cms-modules/core-main/user-group/selector/selector.component.html","./src/app/cms-modules/core-main/user-group/selector/selector.component.ts","./src/app/cms-modules/core-main/site/userAdd/userAdd.component.html","./src/app/cms-modules/core-main/site/userAdd/userAdd.component.ts","./src/app/cms-modules/core-main/site/userEdit/userEdit.component.html","./src/app/cms-modules/core-main/site/userEdit/userEdit.component.ts","./src/app/cms-modules/core-main/site/userList/userList.component.html","./src/app/cms-modules/core-main/site/userList/userList.component.ts","./src/app/cms-modules/core-main/site/info/core-info.component.html","./src/app/cms-modules/core-main/site/info/core-info.component.ts","./src/app/cms-modules/core-main/site/reseller-chart/reseller-chart.component.html","./src/app/cms-modules/core-main/site/reseller-chart/reseller-chart.component.ts","./src/app/cms-modules/core-main/site/coreSite.routing.ts","./src/app/cms-modules/core-main/site/coreSite.resolver.ts","./src/app/cms-modules/core-main/site/coreSite.module.ts","./src/app/cms-modules/core-main/site/selector/selector.component.html","./src/app/cms-modules/core-main/site/selector/selector.component.ts","./src/app/cms-modules/core-main/user-group/edit/edit.component.html","./src/app/cms-modules/core-main/user-group/edit/edit.component.ts","./src/app/cms-modules/core-main/user-group/add/add.component.html","./src/app/cms-modules/core-main/user-group/add/add.component.ts","./src/app/cms-modules/core-main/user-group/list/list.component.html","./src/app/cms-modules/core-main/user-group/coreUserGroup.routing.ts","./src/app/cms-modules/core-main/user-group/list/list.component.ts","./src/app/cms-modules/core-main/user-group/coreUserGroup.module.ts","./src/app/cms-modules/core-main/user/add/add.component.html","./src/app/cms-modules/core-main/user/add/add.component.ts","./src/app/cms-modules/core-main/user/changePassword/changePassword.component.html","./src/app/cms-modules/core-main/user/changePassword/changePassword.component.ts","./src/app/cms-modules/core-main/user/view/view.component.html","./src/app/cms-modules/core-main/user/view/view.component.ts","./src/app/cms-modules/core-main/user/list/list.component.html","./src/app/cms-modules/core-main/user/list/list.component.ts","./src/app/cms-modules/core-main/user/coreUser.component.ts","./src/app/cms-modules/core-main/user/edit/edit.component.html","./src/app/cms-modules/core-main/user/edit/edit.component.ts","./src/app/cms-modules/core-main/user/reseller-chart/reseller-chart.component.html","./src/app/cms-modules/core-main/user/reseller-chart/reseller-chart.component.ts","./src/app/cms-modules/core-main/user/coreUser.routing.ts","./src/app/cms-modules/core-main/user/coreUser.module.ts","./src/app/core/cmsComponentModels/base/componentOptionExportModel.ts","./src/app/core/cmsComponentModels/base/componentOptionSearchModel.ts","./src/app/core/cmsComponentModels/base/componentOptionStatistModel.ts","./src/app/core/directive/cms-record-status-self-save.directive.ts","./src/app/core/directive/dir.directive.ts","./src/app/core/models/pointModel.ts","./src/app/core/pipe/PersianDatePipe/persian-date.pipe.ts","./src/app/core/pipe/PersianDatePipe/persian-date.service.ts","./src/app/core/pipe/boolStatusClass.pipe.ts","./src/app/core/pipe/cms-image-thumbnail.pipe.ts","./src/app/core/pipe/cms-title.pipe.ts","./src/app/core/pipe/recordStatusClass.pipe.ts","./src/app/core/configs/default-layout.config.ts","./src/app/core/services/layout.service.ts","./src/app/pages/test/test.component.html","./src/app/pages/test/test.component.ts","./src/assets/js/layout/base/header.js","./src/assets/js/layout/base/subheader.js","./src/assets/js/layout/base/footer.js","./src/assets/js/layout/base/content.js","./src/app/core/services/layout-init.service.ts","./src/app/pages/layout/components/header-mobile/header-mobile.component.html","./src/app/pages/layout/components/header-mobile/header-mobile.component.ts","./src/assets/js/layout/base/header-menu.js","./src/app/core/services/dynamic-header-menu.service.ts","./src/app/pages/layout/components/header/header-menu-dynamic/header-menu-dynamic.component.html","./src/app/pages/layout/components/header/header-menu-dynamic/header-menu-dynamic.component.ts","./src/assets/js/layout/extended/quick-search.js","./src/assets/js/layout/extended/quick-notifications.js","./src/assets/js/layout/extended/quick-actions.js","./src/assets/js/layout/extended/quick-cart.js","./src/assets/js/layout/extended/quick-panel.js","./src/assets/js/layout/extended/quick-user.js","./src/assets/js/layout/base/header-topbar.js","./src/app/pages/extras/dropdown-inner/search-dropdown-inner/search-result/search-result.component.html","./src/app/pages/extras/dropdown-inner/search-dropdown-inner/search-result/search-result.component.ts","./src/app/pages/extras/dropdown-inner/search-dropdown-inner/search-dropdown-inner.component.ts","./src/app/pages/extras/dropdown-inner/search-dropdown-inner/search-dropdown-inner.component.html","./src/app/pages/extras/dropdown-inner/notifications-dropdown-inner/notifications-dropdown-inner.component.html","./src/app/pages/extras/dropdown-inner/notifications-dropdown-inner/notifications-dropdown-inner.component.ts","./src/app/pages/extras/dropdown-inner/quick-actions-dropdown-inner/quick-actions-dropdown-inner.component.html","./src/app/pages/extras/dropdown-inner/quick-actions-dropdown-inner/quick-actions-dropdown-inner.component.ts","./src/app/pages/extras/dropdown-inner/cart-dropdown-inner/cart-dropdown-inner.component.html","./src/app/pages/extras/dropdown-inner/cart-dropdown-inner/cart-dropdown-inner.component.ts","./src/app/shared/cms-token-access/cmsTokenAccess.component.html","./src/app/shared/cms-token-access/cmsTokenAccess.component.ts","./src/app/core/pipe/first-letter.pipe.ts","./src/app/pages/extras/dropdown-inner/user-dropdown-inner/user-dropdown-inner.component.html","./src/app/pages/extras/dropdown-inner/user-dropdown-inner/user-dropdown-inner.component.ts","./src/app/pages/layout/components/topbar/topbar.component.html","./src/app/pages/layout/components/topbar/topbar.component.ts","./src/app/pages/layout/components/header/header.component.html","./src/app/pages/layout/components/header/header.component.ts","./src/app/_metronic/partials/layout/subheader/_models/subheader.model.ts","./src/app/_metronic/partials/layout/subheader/_services/subheader.service.ts","./src/app/_metronic/partials/layout/subheader/subheader1/subheader1.component.html","./src/app/_metronic/partials/layout/subheader/subheader1/subheader1.component.ts","./src/app/_metronic/partials/layout/subheader/subheader2/subheader2.component.html","./src/app/_metronic/partials/layout/subheader/subheader2/subheader2.component.ts","./src/app/_metronic/partials/layout/subheader/subheader3/subheader3.component.html","./src/app/_metronic/partials/layout/subheader/subheader3/subheader3.component.ts","./src/app/_metronic/partials/layout/subheader/subheader4/subheader4.component.html","./src/app/_metronic/partials/layout/subheader/subheader4/subheader4.component.ts","./src/app/_metronic/partials/layout/subheader/subheader5/subheader5.component.html","./src/app/_metronic/partials/layout/subheader/subheader5/subheader5.component.ts","./src/app/_metronic/partials/layout/subheader/subheader6/subheader6.component.html","./src/app/_metronic/partials/layout/subheader/subheader6/subheader6.component.ts","./src/app/_metronic/partials/layout/subheader/subheader7/subheader7.component.html","./src/app/_metronic/partials/layout/subheader/subheader7/subheader7.component.ts","./src/app/_metronic/partials/layout/subheader/subheader-wrapper/subheader-wrapper.component.html","./src/app/_metronic/partials/layout/subheader/subheader-wrapper/subheader-wrapper.component.ts","./src/app/core/services/dynamic-aside-menu.service.ts","./src/app/pages/layout/components/aside-dynamic/aside-dynamic.component.html","./src/app/pages/layout/components/aside-dynamic/aside-dynamic.component.ts","./src/app/pages/layout/components/footer/footer.component.html","./src/app/pages/layout/components/footer/footer.component.ts","./src/app/pages/extras/offcanvas/search-offcanvas/search-offcanvas.component.ts","./src/app/pages/extras/offcanvas/search-offcanvas/search-offcanvas.component.html","./src/app/pages/extras/offcanvas/notifications-offcanvas/notifications-offcanvas.component.ts","./src/app/pages/extras/offcanvas/notifications-offcanvas/notifications-offcanvas.component.html","./src/app/pages/extras/offcanvas/quick-actions-offcanvas/quick-actions-offcanvas.component.html","./src/app/pages/extras/offcanvas/quick-actions-offcanvas/quick-actions-offcanvas.component.ts","./src/app/pages/extras/offcanvas/cart-offcanvas/cart-offcanvas.component.ts","./src/app/pages/extras/offcanvas/cart-offcanvas/cart-offcanvas.component.html","./src/app/pages/extras/offcanvas/quick-panel-offcanvas/quick-panel-offcanvas.component.ts","./src/app/pages/extras/offcanvas/quick-panel-offcanvas/quick-panel-offcanvas.component.html","./src/app/pages/extras/offcanvas/user-offcanvas/user-offcanvas.component.html","./src/app/pages/extras/offcanvas/user-offcanvas/user-offcanvas.component.ts","./src/app/pages/extras/toolbar/toolbar.component.ts","./src/app/pages/extras/toolbar/toolbar.component.html","./src/assets/js/layout/extended/scrolltop.js","./src/app/pages/extras/scroll-top/scroll-top.component.ts","./src/app/pages/extras/scroll-top/scroll-top.component.html","./src/assets/js/layout/base/sticky-card.js","./src/assets/js/layout/base/stretched-card.js","./src/assets/js/layout/base/aside.js","./src/assets/js/layout/base/aside-menu.js","./src/app/pages/layout/init/scipts-init/scripts-init.component.ts","./src/app/pages/layout/layout.component.html","./src/app/pages/pages.routing.ts","./src/app/pages/layout/layout.component.ts","./src/app/_metronic/partials/layout/subheader/subheader.module.ts","./src/app/pages/extras/extras.module.ts","./src/app/pages/pages.module.ts","./src/app/shared/cms-confirmation-dialog/cmsConfirmationDialog.component.ts","./src/app/shared/cms-confirmation-dialog/cmsConfirmationDialog.component.html","./src/app/shared/cms-confirmation-dialog/cmsConfirmationDialog.service.ts","./src/app/shared/cms-export-list/cmsExportList.component.html","./src/app/shared/cms-export-list/cmsExportList.component.ts","./src/app/shared/cms-guide-notice/cms-guide-notice.component.html","./src/app/shared/cms-guide-notice/cms-guide-notice.component.ts","./src/app/shared/cms-his-selector/cmsHisSelector.component.html","./src/app/shared/cms-his-selector/cmsHisSelector.component.ts","./src/app/shared/cms-html-list/cms-html-list.component.html","./src/app/shared/cms-html-list/cms-html-list.component.ts","./src/app/shared/cms-html-notice/cms-html-notice.component.html","./src/app/shared/cms-html-notice/cms-html-notice.component.ts","./src/app/core/pipe/keys.pipe.ts","./src/app/shared/cms-json-list/cmsJsonList.component.html","./src/app/shared/cms-json-list/cmsJsonList.component.ts","./src/app/shared/cms-link-to/cms-link-to.component.html","./src/app/shared/cms-link-to/cms-link-to.component.ts","./src/app/shared/cms-map/cms-map.component.ts","./src/app/shared/cms-map/cms-map.component.html","./src/app/shared/cms-search-list/cmsSearchList.component.html","./src/app/shared/cms-search-list/cmsSearchList.component.ts","./src/app/shared/cms-site-selector/cmsSiteSelector.component.html","./src/app/shared/cms-site-selector/cmsSiteSelector.component.ts","./src/app/shared/cms-statist-list/cmsStatistList.component.html","./src/app/shared/cms-statist-list/cmsStatistList.component.ts","./src/app/shared/cms-user-selector/cmsUserSelector.component.html","./src/app/shared/cms-user-selector/cmsUserSelector.component.ts","./node_modules/@angular/cdk/fesm2015/drag-drop.mjs","./node_modules/rxjs/dist/esm/internal/observable/interval.js","./node_modules/@kolkov/angular-editor/fesm2015/kolkov-angular-editor.mjs","./node_modules/ngx-color-picker/fesm2015/ngx-color-picker.mjs"],"sourcesContent":["(function (root, factory) {\n 'use strict'\n\n /*istanbul ignore next:cant test*/\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = factory()\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory)\n } else {\n // Browser globals\n root.objectPath = factory()\n }\n})(this, function () {\n 'use strict'\n\n var toStr = Object.prototype.toString\n\n function hasOwnProperty (obj, prop) {\n if (obj == null) {\n return false\n }\n //to handle objects with null prototypes (too edge case?)\n return Object.prototype.hasOwnProperty.call(obj, prop)\n }\n\n function isEmpty (value) {\n if (!value) {\n return true\n }\n if (isArray(value) && value.length === 0) {\n return true\n } else if (typeof value !== 'string') {\n for (var i in value) {\n if (hasOwnProperty(value, i)) {\n return false\n }\n }\n return true\n }\n return false\n }\n\n function toString (type) {\n return toStr.call(type)\n }\n\n function isObject (obj) {\n return typeof obj === 'object' && toString(obj) === '[object Object]'\n }\n\n var isArray = Array.isArray || function (obj) {\n /*istanbul ignore next:cant test*/\n return toStr.call(obj) === '[object Array]'\n }\n\n function isBoolean (obj) {\n return typeof obj === 'boolean' || toString(obj) === '[object Boolean]'\n }\n\n function getKey (key) {\n var intKey = parseInt(key)\n if (intKey.toString() === key) {\n return intKey\n }\n return key\n }\n\n function factory (options) {\n options = options || {}\n\n var objectPath = function (obj) {\n return Object.keys(objectPath).reduce(function (proxy, prop) {\n if (prop === 'create') {\n return proxy\n }\n\n /*istanbul ignore else*/\n if (typeof objectPath[prop] === 'function') {\n proxy[prop] = objectPath[prop].bind(objectPath, obj)\n }\n\n return proxy\n }, {})\n }\n\n var hasShallowProperty\n if (options.includeInheritedProps) {\n hasShallowProperty = function () {\n return true\n }\n } else {\n hasShallowProperty = function (obj, prop) {\n return (typeof prop === 'number' && Array.isArray(obj)) || hasOwnProperty(obj, prop)\n }\n }\n\n function getShallowProperty (obj, prop) {\n if (hasShallowProperty(obj, prop)) {\n return obj[prop]\n }\n }\n\n var getShallowPropertySafely\n if (options.includeInheritedProps) {\n getShallowPropertySafely = function (obj, currentPath) {\n if (typeof currentPath !== 'string' && typeof currentPath !== 'number') {\n currentPath = String(currentPath)\n }\n var currentValue = getShallowProperty(obj, currentPath)\n if (currentPath === '__proto__' || currentPath === 'prototype' ||\n (currentPath === 'constructor' && typeof currentValue === 'function')) {\n throw new Error('For security reasons, object\\'s magic properties cannot be set')\n }\n return currentValue\n }\n } else {\n getShallowPropertySafely = function (obj, currentPath) {\n return getShallowProperty(obj, currentPath)\n }\n }\n\n function set (obj, path, value, doNotReplace) {\n if (typeof path === 'number') {\n path = [path]\n }\n if (!path || path.length === 0) {\n return obj\n }\n if (typeof path === 'string') {\n return set(obj, path.split('.').map(getKey), value, doNotReplace)\n }\n var currentPath = path[0]\n var currentValue = getShallowPropertySafely(obj, currentPath)\n if (path.length === 1) {\n if (currentValue === void 0 || !doNotReplace) {\n obj[currentPath] = value\n }\n return currentValue\n }\n\n if (currentValue === void 0) {\n //check if we assume an array\n if (typeof path[1] === 'number') {\n obj[currentPath] = []\n } else {\n obj[currentPath] = {}\n }\n }\n\n return set(obj[currentPath], path.slice(1), value, doNotReplace)\n }\n\n objectPath.has = function (obj, path) {\n if (typeof path === 'number') {\n path = [path]\n } else if (typeof path === 'string') {\n path = path.split('.')\n }\n\n if (!path || path.length === 0) {\n return !!obj\n }\n\n for (var i = 0; i < path.length; i++) {\n var j = getKey(path[i])\n\n if ((typeof j === 'number' && isArray(obj) && j < obj.length) ||\n (options.includeInheritedProps ? (j in Object(obj)) : hasOwnProperty(obj, j))) {\n obj = obj[j]\n } else {\n return false\n }\n }\n\n return true\n }\n\n objectPath.ensureExists = function (obj, path, value) {\n return set(obj, path, value, true)\n }\n\n objectPath.set = function (obj, path, value, doNotReplace) {\n return set(obj, path, value, doNotReplace)\n }\n\n objectPath.insert = function (obj, path, value, at) {\n var arr = objectPath.get(obj, path)\n at = ~~at\n if (!isArray(arr)) {\n arr = []\n objectPath.set(obj, path, arr)\n }\n arr.splice(at, 0, value)\n }\n\n objectPath.empty = function (obj, path) {\n if (isEmpty(path)) {\n return void 0\n }\n if (obj == null) {\n return void 0\n }\n\n var value, i\n if (!(value = objectPath.get(obj, path))) {\n return void 0\n }\n\n if (typeof value === 'string') {\n return objectPath.set(obj, path, '')\n } else if (isBoolean(value)) {\n return objectPath.set(obj, path, false)\n } else if (typeof value === 'number') {\n return objectPath.set(obj, path, 0)\n } else if (isArray(value)) {\n value.length = 0\n } else if (isObject(value)) {\n for (i in value) {\n if (hasShallowProperty(value, i)) {\n delete value[i]\n }\n }\n } else {\n return objectPath.set(obj, path, null)\n }\n }\n\n objectPath.push = function (obj, path /*, values */) {\n var arr = objectPath.get(obj, path)\n if (!isArray(arr)) {\n arr = []\n objectPath.set(obj, path, arr)\n }\n\n arr.push.apply(arr, Array.prototype.slice.call(arguments, 2))\n }\n\n objectPath.coalesce = function (obj, paths, defaultValue) {\n var value\n\n for (var i = 0, len = paths.length; i < len; i++) {\n if ((value = objectPath.get(obj, paths[i])) !== void 0) {\n return value\n }\n }\n\n return defaultValue\n }\n\n objectPath.get = function (obj, path, defaultValue) {\n if (typeof path === 'number') {\n path = [path]\n }\n if (!path || path.length === 0) {\n return obj\n }\n if (obj == null) {\n return defaultValue\n }\n if (typeof path === 'string') {\n return objectPath.get(obj, path.split('.'), defaultValue)\n }\n\n var currentPath = getKey(path[0])\n var nextObj = getShallowPropertySafely(obj, currentPath)\n if (nextObj === void 0) {\n return defaultValue\n }\n\n if (path.length === 1) {\n return nextObj\n }\n\n return objectPath.get(obj[currentPath], path.slice(1), defaultValue)\n }\n\n objectPath.del = function del (obj, path) {\n if (typeof path === 'number') {\n path = [path]\n }\n\n if (obj == null) {\n return obj\n }\n\n if (isEmpty(path)) {\n return obj\n }\n if (typeof path === 'string') {\n return objectPath.del(obj, path.split('.'))\n }\n\n var currentPath = getKey(path[0])\n getShallowPropertySafely(obj, currentPath)\n if (!hasShallowProperty(obj, currentPath)) {\n return obj\n }\n\n if (path.length === 1) {\n if (isArray(obj)) {\n obj.splice(currentPath, 1)\n } else {\n delete obj[currentPath]\n }\n } else {\n return objectPath.del(obj[currentPath], path.slice(1))\n }\n\n return obj\n }\n\n return objectPath\n }\n\n var mod = factory()\n mod.create = factory\n mod.withInheritedProps = factory({includeInheritedProps: true})\n return mod\n})\n","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport { KTUtil } from \"./util\";\r\n\r\n// Component Definition\r\nvar KTCard = function(elementId, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = KTUtil.getById(elementId);\r\n var body = KTUtil.getBody();\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n toggleSpeed: 400,\r\n sticky: {\r\n releseOnReverse: false,\r\n offset: 300,\r\n zIndex: 101\r\n }\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n /**\r\n * Construct\r\n */\r\n\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('card')) {\r\n the = KTUtil.data(element).get('card');\r\n } else {\r\n // reset menu\r\n Plugin.init(options);\r\n\r\n // build menu\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('card', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Init card\r\n */\r\n init: function(options) {\r\n the.element = element;\r\n the.events = [];\r\n\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n the.header = KTUtil.child(element, '.card-header');\r\n the.footer = KTUtil.child(element, '.card-footer');\r\n\r\n if (KTUtil.child(element, '.card-body')) {\r\n the.body = KTUtil.child(element, '.card-body');\r\n } else if (KTUtil.child(element, '.form')) {\r\n the.body = KTUtil.child(element, '.form');\r\n }\r\n },\r\n\r\n /**\r\n * Build Form Wizard\r\n */\r\n build: function() {\r\n // Remove\r\n var remove = KTUtil.find(the.header, '[data-card-tool=remove]');\r\n if (remove) {\r\n KTUtil.addEvent(remove, 'click', function(e) {\r\n e.preventDefault();\r\n Plugin.remove();\r\n });\r\n }\r\n\r\n // Reload\r\n var reload = KTUtil.find(the.header, '[data-card-tool=reload]');\r\n if (reload) {\r\n KTUtil.addEvent(reload, 'click', function(e) {\r\n e.preventDefault();\r\n Plugin.reload();\r\n });\r\n }\r\n\r\n // Toggle\r\n var toggle = KTUtil.find(the.header, '[data-card-tool=toggle]');\r\n if (toggle) {\r\n KTUtil.addEvent(toggle, 'click', function(e) {\r\n e.preventDefault();\r\n Plugin.toggle();\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Enable stickt mode\r\n */\r\n initSticky: function() {\r\n var lastScrollTop = 0;\r\n var offset = the.options.sticky.offset;\r\n\r\n if (!the.header) {\r\n return;\r\n }\r\n\r\n\t window.addEventListener('scroll', Plugin.onScrollSticky);\r\n },\r\n\r\n\t /**\r\n\t * Window scroll handle event for sticky card\r\n\t */\r\n\t onScrollSticky: function(e) {\r\n\t\t var offset = the.options.sticky.offset;\r\n\r\n\t\t if(isNaN(offset)) return;\r\n\r\n\t\t var st = KTUtil.getScrollTop();\r\n\r\n\t\t if (st >= offset && KTUtil.hasClass(body, 'card-sticky-on') === false) {\r\n\t\t\t Plugin.eventTrigger('stickyOn');\r\n\r\n\t\t\t KTUtil.addClass(body, 'card-sticky-on');\r\n\r\n\t\t\t Plugin.updateSticky();\r\n\r\n\t\t } else if ((st*1.5) <= offset && KTUtil.hasClass(body, 'card-sticky-on')) {\r\n\t\t\t // Back scroll mode\r\n\t\t\t Plugin.eventTrigger('stickyOff');\r\n\r\n\t\t\t KTUtil.removeClass(body, 'card-sticky-on');\r\n\r\n\t\t\t Plugin.resetSticky();\r\n\t\t }\r\n\t },\r\n\r\n updateSticky: function() {\r\n if (!the.header) {\r\n return;\r\n }\r\n\r\n var top;\r\n\r\n if (KTUtil.hasClass(body, 'card-sticky-on')) {\r\n if (the.options.sticky.position.top instanceof Function) {\r\n top = parseInt(the.options.sticky.position.top.call(this, the));\r\n } else {\r\n top = parseInt(the.options.sticky.position.top);\r\n }\r\n\r\n var left;\r\n if (the.options.sticky.position.left instanceof Function) {\r\n left = parseInt(the.options.sticky.position.left.call(this, the));\r\n } else {\r\n left = parseInt(the.options.sticky.position.left);\r\n }\r\n\r\n var right;\r\n if (the.options.sticky.position.right instanceof Function) {\r\n right = parseInt(the.options.sticky.position.right.call(this, the));\r\n } else {\r\n right = parseInt(the.options.sticky.position.right);\r\n }\r\n\r\n KTUtil.css(the.header, 'z-index', the.options.sticky.zIndex);\r\n KTUtil.css(the.header, 'top', top + 'px');\r\n KTUtil.css(the.header, 'left', left + 'px');\r\n KTUtil.css(the.header, 'right', right + 'px');\r\n }\r\n },\r\n\r\n resetSticky: function() {\r\n if (!the.header) {\r\n return;\r\n }\r\n\r\n if (KTUtil.hasClass(body, 'card-sticky-on') === false) {\r\n KTUtil.css(the.header, 'z-index', '');\r\n KTUtil.css(the.header, 'top', '');\r\n KTUtil.css(the.header, 'left', '');\r\n KTUtil.css(the.header, 'right', '');\r\n }\r\n },\r\n\r\n /**\r\n * Remove card\r\n */\r\n remove: function() {\r\n if (Plugin.eventTrigger('beforeRemove') === false) {\r\n return;\r\n }\r\n\r\n // Remove tooltips\r\n var tooltips;\r\n if ( tooltips = document.querySelectorAll('.tooltip.show') ) {\r\n $(tooltips).tooltip('dispose');\r\n }\r\n\r\n KTUtil.remove(element);\r\n\r\n Plugin.eventTrigger('afterRemove');\r\n },\r\n\r\n /**\r\n * Set content\r\n */\r\n setContent: function(html) {\r\n if (html) {\r\n the.body.innerHTML = html;\r\n }\r\n },\r\n\r\n /**\r\n * Get body\r\n */\r\n getBody: function() {\r\n return the.body;\r\n },\r\n\r\n /**\r\n * Get self\r\n */\r\n getSelf: function() {\r\n return element;\r\n },\r\n\r\n /**\r\n * Reload\r\n */\r\n reload: function() {\r\n Plugin.eventTrigger('reload');\r\n },\r\n\r\n /**\r\n * Toggle\r\n */\r\n toggle: function() {\r\n if (KTUtil.hasClass(element, 'card-collapse') || KTUtil.hasClass(element, 'card-collapsed')) {\r\n Plugin.expand();\r\n } else {\r\n Plugin.collapse();\r\n }\r\n },\r\n\r\n /**\r\n * Collapse\r\n */\r\n collapse: function() {\r\n if (Plugin.eventTrigger('beforeCollapse') === false) {\r\n return;\r\n }\r\n\r\n KTUtil.slideUp(the.body, the.options.toggleSpeed, function() {\r\n Plugin.eventTrigger('afterCollapse');\r\n });\r\n\r\n KTUtil.addClass(element, 'card-collapse');\r\n },\r\n\r\n /**\r\n * Expand\r\n */\r\n expand: function() {\r\n if (Plugin.eventTrigger('beforeExpand') === false) {\r\n return;\r\n }\r\n\r\n KTUtil.slideDown(the.body, the.options.toggleSpeed, function() {\r\n Plugin.eventTrigger('afterExpand');\r\n });\r\n\r\n KTUtil.removeClass(element, 'card-collapse');\r\n KTUtil.removeClass(element, 'card-collapsed');\r\n },\r\n\r\n /**\r\n * Trigger events\r\n */\r\n eventTrigger: function(name) {\r\n //KTUtil.triggerCustomEvent(name);\r\n for (var i = 0; i < the.events.length; i++) {\r\n var event = the.events[i];\r\n if (event.name == name) {\r\n if (event.one == true) {\r\n if (event.fired == false) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, the);\r\n }\r\n } else {\r\n return event.handler.call(this, the);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n\r\n return the;\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n */\r\n\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Remove card\r\n */\r\n the.remove = function() {\r\n return Plugin.remove(html);\r\n };\r\n\r\n /**\r\n * Init sticky card\r\n */\r\n the.initSticky = function() {\r\n return Plugin.initSticky();\r\n };\r\n\r\n /**\r\n * Rerender sticky layout\r\n */\r\n the.updateSticky = function() {\r\n return Plugin.updateSticky();\r\n };\r\n\r\n /**\r\n * Reset the sticky\r\n */\r\n the.resetSticky = function() {\r\n return Plugin.resetSticky();\r\n };\r\n\r\n\t/**\r\n\t * Destroy sticky card\r\n\t */\r\n\tthe.destroySticky = function() {\r\n\t\tPlugin.resetSticky();\r\n\t\twindow.removeEventListener('scroll', Plugin.onScrollSticky);\r\n\t};\r\n\r\n /**\r\n * Reload card\r\n */\r\n the.reload = function() {\r\n return Plugin.reload();\r\n };\r\n\r\n /**\r\n * Set card content\r\n */\r\n the.setContent = function(html) {\r\n return Plugin.setContent(html);\r\n };\r\n\r\n /**\r\n * Toggle card\r\n */\r\n the.toggle = function() {\r\n return Plugin.toggle();\r\n };\r\n\r\n /**\r\n * Collapse card\r\n */\r\n the.collapse = function() {\r\n return Plugin.collapse();\r\n };\r\n\r\n /**\r\n * Expand card\r\n */\r\n the.expand = function() {\r\n return Plugin.expand();\r\n };\r\n\r\n /**\r\n * Get cardbody\r\n * @returns {jQuery}\r\n */\r\n the.getBody = function() {\r\n return Plugin.getBody();\r\n };\r\n\r\n /**\r\n * Get cardbody\r\n * @returns {jQuery}\r\n */\r\n the.getSelf = function() {\r\n return Plugin.getSelf();\r\n };\r\n\r\n /**\r\n * Attach event\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n /**\r\n * Attach event that will be fired once\r\n */\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n // Construct plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n // module.exports = KTCard;\r\n}\r\n\r\nexport default KTCard;","/* eslint-disable */\r\n\"use strict\";\r\n// DOCS: https://javascript.info/cookie\r\n\r\n// Component Definition\r\nexport var KTCookie = function() {\r\n return {\r\n // returns the cookie with the given name,\r\n // or undefined if not found\r\n getCookie: function(name) {\r\n var matches = document.cookie.match(new RegExp(\r\n \"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\r\n ));\r\n return matches ? decodeURIComponent(matches[1]) : undefined;\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 setCookie: function(name, value, options) {\r\n if (!options) {\r\n options = {};\r\n }\r\n\r\n options = Object.assign({}, {path: '/'}, options);\r\n\r\n if (options.expires instanceof Date) {\r\n options.expires = options.expires.toUTCString();\r\n }\r\n\r\n var updatedCookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value);\r\n\r\n for (var optionKey in options) {\r\n if (!options.hasOwnProperty(optionKey)) {\r\n continue;\r\n }\r\n updatedCookie += \"; \" + optionKey;\r\n var 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 // To delete a cookie, we can call it with a negative expiration date:\r\n deleteCookie: function(name) {\r\n setCookie(name, \"\", {\r\n 'max-age': -1\r\n })\r\n }\r\n }\r\n}();\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n // module.exports = KTCookie;\r\n}\r\n","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport { KTUtil } from \"./util\";\r\n\r\n// Component Definition\r\nvar KTHeader = function(elementId, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = KTUtil.getById(elementId);\r\n var body = KTUtil.getBody();\r\n\r\n if (element === undefined) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n offset: {\r\n desktop: true,\r\n tabletAndMobile: true\r\n },\r\n releseOnReverse: {\r\n desktop: false,\r\n tabletAndMobile: false\r\n }\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n /**\r\n * Run plugin\r\n * @returns {KTHeader}\r\n */\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('header')) {\r\n the = KTUtil.data(element).get('header');\r\n } else {\r\n // reset header\r\n Plugin.init(options);\r\n\r\n // build header\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('header', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles subheader click toggle\r\n * @returns {KTHeader}\r\n */\r\n init: function(options) {\r\n the.events = [];\r\n\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n },\r\n\r\n /**\r\n * Reset header\r\n * @returns {KTHeader}\r\n */\r\n build: function() {\r\n var eventTriggerState = true;\r\n var lastScrollTop = 0;\r\n\r\n window.addEventListener('scroll', function() {\r\n var offset = 0, st, attrName;\r\n\r\n if (KTUtil.isBreakpointDown('lg') && the.options.offset.tabletAndMobile === false) {\r\n return;\r\n }\r\n\r\n if (KTUtil.isBreakpointUp('lg') && the.options.offset.desktop === false) {\r\n return;\r\n }\r\n\r\n if (KTUtil.isBreakpointUp('lg')) {\r\n offset = the.options.offset.desktop;\r\n } else if (KTUtil.isBreakpointDown('lg')) {\r\n offset = the.options.offset.tabletAndMobile;\r\n }\r\n\r\n st = KTUtil.getScrollTop();\r\n\r\n if (\r\n (KTUtil.isBreakpointDown('lg') && the.options.releseOnReverse.tabletAndMobile) ||\r\n (KTUtil.isBreakpointUp('lg') && the.options.releseOnReverse.desktop)\r\n ) {\r\n if (st > offset && lastScrollTop < st) { // down scroll mode\r\n if (body.hasAttribute('data-header-scroll') === false) {\r\n body.setAttribute('data-header-scroll', 'on');\r\n }\r\n\r\n if (eventTriggerState) {\r\n Plugin.eventTrigger('scrollOn', the);\r\n eventTriggerState = false;\r\n }\r\n } else { // back scroll mode\r\n if (body.hasAttribute('data-header-scroll') === true) {\r\n body.removeAttribute('data-header-scroll');\r\n }\r\n\r\n if (eventTriggerState == false) {\r\n Plugin.eventTrigger('scrollOff', the);\r\n eventTriggerState = true;\r\n }\r\n }\r\n\r\n lastScrollTop = st;\r\n } else {\r\n if (st > offset) { // down scroll mode\r\n if (body.hasAttribute('data-header-scroll') === false) {\r\n body.setAttribute('data-header-scroll', 'on');\r\n }\r\n\r\n if (eventTriggerState) {\r\n Plugin.eventTrigger('scrollOn', the);\r\n eventTriggerState = false;\r\n }\r\n } else { // back scroll mode\r\n if (body.hasAttribute('data-header-scroll') === true) {\r\n body.removeAttribute('data-header-scroll');\r\n }\r\n\r\n if (eventTriggerState == false) {\r\n Plugin.eventTrigger('scrollOff', the);\r\n eventTriggerState = true;\r\n }\r\n }\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * Trigger events\r\n */\r\n eventTrigger: function(name, args) {\r\n for (var i = 0; i < the.events.length; i++) {\r\n var event = the.events[i];\r\n if (event.name == name) {\r\n if (event.one == true) {\r\n if (event.fired == false) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, the, args);\r\n }\r\n } else {\r\n return event.handler.call(this, the, args);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n */\r\n\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Register event\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n ///////////////////////////////\r\n // ** Plugin Construction ** //\r\n ///////////////////////////////\r\n\r\n // Run plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n // Init done\r\n init = true;\r\n\r\n // Return plugin instance\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n // module.exports = KTHeader;\r\n}\r\n\r\nexport default KTHeader;","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport { KTUtil } from \"./util\";\r\n\r\n// Component Definition\r\nvar KTMenu = function(elementId, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = KTUtil.getById(elementId);\r\n var body = KTUtil.getBody();\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n // scrollable area with Perfect Scroll\r\n scroll: {\r\n rememberPosition: false\r\n },\r\n\r\n // accordion submenu mode\r\n accordion: {\r\n slideSpeed: 200, // accordion toggle slide speed in milliseconds\r\n autoScroll: false, // enable auto scrolling(focus) to the clicked menu item\r\n autoScrollSpeed: 1200,\r\n expandAll: true // allow having multiple expanded accordions in the menu\r\n },\r\n\r\n // dropdown submenu mode\r\n dropdown: {\r\n timeout: 500 // timeout in milliseconds to show and hide the hoverable submenu dropdown\r\n }\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n /**\r\n * Run plugin\r\n * @returns {KTMenu}\r\n */\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('menu')) {\r\n the = KTUtil.data(element).get('menu');\r\n } else {\r\n // reset menu\r\n Plugin.init(options);\r\n\r\n // reset menu\r\n Plugin.reset();\r\n\r\n // build menu\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('menu', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles submenu click toggle\r\n * @returns {KTMenu}\r\n */\r\n init: function(options) {\r\n the.events = [];\r\n\r\n the.eventHandlers = {};\r\n\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n // pause menu\r\n the.pauseDropdownHoverTime = 0;\r\n\r\n the.uid = KTUtil.getUniqueID();\r\n },\r\n\r\n update: function(options) {\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n // pause menu\r\n the.pauseDropdownHoverTime = 0;\r\n\r\n // reset menu\r\n Plugin.reset();\r\n\r\n the.eventHandlers = {};\r\n\r\n // build menu\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('menu', the);\r\n },\r\n\r\n reload: function() {\r\n // reset menu\r\n Plugin.reset();\r\n\r\n // build menu\r\n Plugin.build();\r\n\r\n // reset submenu props\r\n Plugin.resetSubmenuProps();\r\n },\r\n\r\n /**\r\n * Reset menu\r\n * @returns {KTMenu}\r\n */\r\n build: function() {\r\n // General accordion submenu toggle\r\n the.eventHandlers['event_1'] = KTUtil.on( element, '.menu-toggle', 'click', Plugin.handleSubmenuAccordion);\r\n\r\n // Dropdown mode(hoverable)\r\n if (Plugin.getSubmenuMode() === 'dropdown' || Plugin.isConditionalSubmenuDropdown()) {\r\n // dropdown submenu - hover toggle\r\n the.eventHandlers['event_2'] = KTUtil.on( element, '[data-menu-toggle=\"hover\"]', 'mouseover', Plugin.handleSubmenuDrodownHoverEnter);\r\n the.eventHandlers['event_3'] = KTUtil.on( element, '[data-menu-toggle=\"hover\"]', 'mouseout', Plugin.handleSubmenuDrodownHoverExit);\r\n\r\n // dropdown submenu - click toggle\r\n the.eventHandlers['event_4'] = KTUtil.on( element, '[data-menu-toggle=\"click\"] > .menu-toggle, [data-menu-toggle=\"click\"] > .menu-link .menu-toggle', 'click', Plugin.handleSubmenuDropdownClick);\r\n the.eventHandlers['event_5'] = KTUtil.on( element, '[data-menu-toggle=\"tab\"] > .menu-toggle, [data-menu-toggle=\"tab\"] > .menu-link .menu-toggle', 'click', Plugin.handleSubmenuDropdownTabClick);\r\n }\r\n\r\n // Handle general link click\r\n the.eventHandlers['event_6'] = KTUtil.on(element, '.menu-item > .menu-link:not(.menu-toggle):not(.menu-link-toggle-skip)', 'click', Plugin.handleLinkClick);\r\n\r\n // Init scrollable menu\r\n if (the.options.scroll && the.options.scroll.height) {\r\n Plugin.scrollInit();\r\n }\r\n },\r\n\r\n /**\r\n * Reset menu\r\n * @returns {KTMenu}\r\n */\r\n reset: function() {\r\n KTUtil.off( element, 'click', the.eventHandlers['event_1']);\r\n\r\n // dropdown submenu - hover toggle\r\n KTUtil.off( element, 'mouseover', the.eventHandlers['event_2']);\r\n KTUtil.off( element, 'mouseout', the.eventHandlers['event_3']);\r\n\r\n // dropdown submenu - click toggle\r\n KTUtil.off( element, 'click', the.eventHandlers['event_4']);\r\n KTUtil.off( element, 'click', the.eventHandlers['event_5']);\r\n\r\n // handle link click\r\n KTUtil.off(element, 'click', the.eventHandlers['event_6']);\r\n },\r\n\r\n /**\r\n * Init scroll menu\r\n *\r\n */\r\n scrollInit: function() {\r\n if ( the.options.scroll && the.options.scroll.height ) {\r\n KTUtil.scrollDestroy(element, true);\r\n KTUtil.scrollInit(element, {mobileNativeScroll: true, windowScroll: false, resetHeightOnDestroy: true, handleWindowResize: true, height: the.options.scroll.height, rememberPosition: the.options.scroll.rememberPosition});\r\n } else {\r\n KTUtil.scrollDestroy(element, true);\r\n }\r\n },\r\n\r\n /**\r\n * Update scroll menu\r\n */\r\n scrollUpdate: function() {\r\n if ( the.options.scroll && the.options.scroll.height ) {\r\n KTUtil.scrollUpdate(element);\r\n }\r\n },\r\n\r\n /**\r\n * Scroll top\r\n */\r\n scrollTop: function() {\r\n if ( the.options.scroll && the.options.scroll.height ) {\r\n KTUtil.scrollTop(element);\r\n }\r\n },\r\n\r\n /**\r\n * Get submenu mode for current breakpoint and menu state\r\n * @returns {KTMenu}\r\n */\r\n getSubmenuMode: function(el) {\r\n if ( KTUtil.isBreakpointUp('lg') ) {\r\n if (el && KTUtil.hasAttr(el, 'data-menu-toggle') && KTUtil.attr(el, 'data-menu-toggle') == 'hover') {\r\n return 'dropdown';\r\n }\r\n\r\n if ( KTUtil.isset(the.options.submenu, 'desktop.state.body') ) {\r\n if ( KTUtil.hasClasses(body, the.options.submenu.desktop.state.body) ) {\r\n return the.options.submenu.desktop.state.mode;\r\n } else {\r\n return the.options.submenu.desktop.default;\r\n }\r\n } else if ( KTUtil.isset(the.options.submenu, 'desktop') ) {\r\n return the.options.submenu.desktop;\r\n }\r\n } else if ( KTUtil.isBreakpointUp('md') && KTUtil.isBreakpointDown('lg') && KTUtil.isset(the.options.submenu, 'tablet') ) {\r\n return the.options.submenu.tablet;\r\n } else if ( KTUtil.isBreakpointDown('md') && KTUtil.isset(the.options.submenu, 'mobile') ) {\r\n return the.options.submenu.mobile;\r\n } else {\r\n return false;\r\n }\r\n },\r\n\r\n /**\r\n * Get submenu mode for current breakpoint and menu state\r\n * @returns {KTMenu}\r\n */\r\n isConditionalSubmenuDropdown: function() {\r\n if ( KTUtil.isBreakpointUp('lg') && KTUtil.isset(the.options.submenu, 'desktop.state.body') ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n },\r\n\r\n\r\n /**\r\n * Reset submenu attributes\r\n * @returns {KTMenu}\r\n */\r\n resetSubmenuProps: function(e) {\r\n var submenus = KTUtil.findAll(element, '.menu-submenu');\r\n if ( submenus ) {\r\n for (var i = 0, len = submenus.length; i < len; i++) {\r\n var submenu = submenus[0];\r\n\r\n KTUtil.css(submenu, 'display', '');\r\n KTUtil.css(submenu, 'overflow', '');\r\n\r\n if (submenu.hasAttribute('data-hor-direction')) {\r\n KTUtil.removeClass(submenu, 'menu-submenu-left');\r\n KTUtil.removeClass(submenu, 'menu-submenu-right');\r\n KTUtil.addClass(submenu, submenu.getAttribute('data-hor-direction'));\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Handles submenu hover toggle\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuDrodownHoverEnter: function(e) {\r\n if ( Plugin.getSubmenuMode(this) === 'accordion' ) {\r\n return;\r\n }\r\n\r\n if ( the.resumeDropdownHover() === false ) {\r\n return;\r\n }\r\n\r\n var item = this;\r\n\r\n if ( item.getAttribute('data-hover') == '1' ) {\r\n item.removeAttribute('data-hover');\r\n clearTimeout( item.getAttribute('data-timeout') );\r\n item.removeAttribute('data-timeout');\r\n }\r\n\r\n Plugin.showSubmenuDropdown(item);\r\n },\r\n\r\n /**\r\n * Handles submenu hover toggle\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuDrodownHoverExit: function(e) {\r\n if ( the.resumeDropdownHover() === false ) {\r\n return;\r\n }\r\n\r\n if ( Plugin.getSubmenuMode(this) === 'accordion' ) {\r\n return;\r\n }\r\n\r\n var item = this;\r\n var time = the.options.dropdown.timeout;\r\n\r\n var timeout = setTimeout(function() {\r\n if ( item.getAttribute('data-hover') == '1' ) {\r\n Plugin.hideSubmenuDropdown(item, true);\r\n }\r\n }, time);\r\n\r\n item.setAttribute('data-hover', '1');\r\n item.setAttribute('data-timeout', timeout);\r\n },\r\n\r\n /**\r\n * Handles submenu click toggle\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuDropdownClick: function(e) {\r\n if ( Plugin.getSubmenuMode(this) === 'accordion' ) {\r\n return;\r\n }\r\n\r\n var item = this.closest('.menu-item');\r\n\r\n // Trigger click event handlers\r\n var result = Plugin.eventTrigger('submenuToggle', this, e);\r\n if (result === false) {\r\n return;\r\n }\r\n\r\n if ( item.getAttribute('data-menu-submenu-mode') == 'accordion' ) {\r\n return;\r\n }\r\n\r\n if ( KTUtil.hasClass(item, 'menu-item-hover') === false ) {\r\n KTUtil.addClass(item, 'menu-item-open-dropdown');\r\n Plugin.showSubmenuDropdown(item);\r\n } else {\r\n KTUtil.removeClass(item, 'menu-item-open-dropdown' );\r\n Plugin.hideSubmenuDropdown(item, true);\r\n }\r\n\r\n e.preventDefault();\r\n },\r\n\r\n /**\r\n * Handles tab click toggle\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuDropdownTabClick: function(e) {\r\n if (Plugin.getSubmenuMode(this) === 'accordion') {\r\n return;\r\n }\r\n var item = this.closest('.menu-item');\r\n\r\n // Trigger click event handlers\r\n var result = Plugin.eventTrigger('submenuToggle', this, e);\r\n if (result === false) {\r\n return;\r\n }\r\n\r\n if (item.getAttribute('data-menu-submenu-mode') == 'accordion') {\r\n return;\r\n }\r\n\r\n if (KTUtil.hasClass(item, 'menu-item-hover') == false) {\r\n KTUtil.addClass(item, 'menu-item-open-dropdown');\r\n Plugin.showSubmenuDropdown(item);\r\n }\r\n\r\n e.preventDefault();\r\n },\r\n\r\n /**\r\n * Handles link click\r\n * @returns {KTMenu}\r\n */\r\n handleLinkClick: function(e) {\r\n var submenu = this.closest('.menu-item.menu-item-submenu');\r\n\r\n // Trigger click event handlers\r\n var result = Plugin.eventTrigger('linkClick', this, e);\r\n if (result === false) {\r\n return;\r\n }\r\n\r\n if ( submenu && Plugin.getSubmenuMode(submenu) === 'dropdown' ) {\r\n Plugin.hideSubmenuDropdowns();\r\n }\r\n },\r\n\r\n /**\r\n * Handles submenu dropdown close on link click\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuDropdownClose: function(e, el) {\r\n // exit if its not submenu dropdown mode\r\n if (Plugin.getSubmenuMode(el) === 'accordion') {\r\n return;\r\n }\r\n\r\n var shown = element.querySelectorAll('.menu-item.menu-item-submenu.menu-item-hover:not(.menu-item-tabs)');\r\n\r\n // check if currently clicked link's parent item ha\r\n if (shown.length > 0 && KTUtil.hasClass(el, 'menu-toggle') === false && el.querySelectorAll('.menu-toggle').length === 0) {\r\n // close opened dropdown menus\r\n for (var i = 0, len = shown.length; i < len; i++) {\r\n Plugin.hideSubmenuDropdown(shown[0], true);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * helper functions\r\n * @returns {KTMenu}\r\n */\r\n handleSubmenuAccordion: function(e, el) {\r\n var query;\r\n var item = el ? el : this;\r\n\r\n // Trigger click event handlers\r\n var result = Plugin.eventTrigger('submenuToggle', this, e);\r\n if (result === false) {\r\n return;\r\n }\r\n\r\n if ( Plugin.getSubmenuMode(el) === 'dropdown' && (query = item.closest('.menu-item') ) ) {\r\n if (query.getAttribute('data-menu-submenu-mode') != 'accordion' ) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n var li = item.closest('.menu-item');\r\n var submenu = KTUtil.child(li, '.menu-submenu, .menu-inner');\r\n\r\n if (KTUtil.hasClass(item.closest('.menu-item'), 'menu-item-open-always')) {\r\n return;\r\n }\r\n\r\n if ( li && submenu ) {\r\n e.preventDefault();\r\n var speed = the.options.accordion.slideSpeed;\r\n var hasClosables = false;\r\n\r\n if ( KTUtil.hasClass(li, 'menu-item-open') === false ) {\r\n // hide other accordions\r\n if ( the.options.accordion.expandAll === false ) {\r\n var subnav = item.closest('.menu-nav, .menu-subnav');\r\n var closables = KTUtil.children(subnav, '.menu-item.menu-item-open.menu-item-submenu:not(.menu-item-here):not(.menu-item-open-always)');\r\n\r\n if ( subnav && closables ) {\r\n for (var i = 0, len = closables.length; i < len; i++) {\r\n var el_ = closables[0];\r\n var submenu_ = KTUtil.child(el_, '.menu-submenu');\r\n if ( submenu_ ) {\r\n KTUtil.slideUp(submenu_, speed, function() {\r\n Plugin.scrollUpdate();\r\n KTUtil.removeClass(el_, 'menu-item-open');\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n KTUtil.slideDown(submenu, speed, function() {\r\n Plugin.scrollToItem(item);\r\n Plugin.scrollUpdate();\r\n\r\n Plugin.eventTrigger('submenuToggle', submenu, e);\r\n });\r\n\r\n KTUtil.addClass(li, 'menu-item-open');\r\n\r\n } else {\r\n KTUtil.slideUp(submenu, speed, function() {\r\n Plugin.scrollToItem(item);\r\n Plugin.scrollUpdate();\r\n Plugin.eventTrigger('submenuToggle', submenu, e);\r\n });\r\n\r\n KTUtil.removeClass(li, 'menu-item-open');\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * scroll to item function\r\n * @returns {KTMenu}\r\n */\r\n scrollToItem: function(item) {\r\n // handle auto scroll for accordion submenus\r\n if ( KTUtil.isBreakpointUp('lg') && the.options.accordion.autoScroll && element.getAttribute('data-menu-scroll') !== '1' ) {\r\n KTUtil.scrollTo(item, the.options.accordion.autoScrollSpeed);\r\n }\r\n },\r\n\r\n /**\r\n * Hide submenu dropdown\r\n * @returns {KTMenu}\r\n */\r\n hideSubmenuDropdown: function(item, classAlso) {\r\n // remove submenu activation class\r\n if ( classAlso ) {\r\n KTUtil.removeClass(item, 'menu-item-hover');\r\n KTUtil.removeClass(item, 'menu-item-active-tab');\r\n }\r\n\r\n // clear timeout\r\n item.removeAttribute('data-hover');\r\n\r\n if ( item.getAttribute('data-menu-toggle-class') ) {\r\n KTUtil.removeClass(body, item.getAttribute('data-menu-toggle-class'));\r\n }\r\n\r\n var timeout = item.getAttribute('data-timeout');\r\n item.removeAttribute('data-timeout');\r\n clearTimeout(timeout);\r\n },\r\n\r\n /**\r\n * Hide submenu dropdowns\r\n * @returns {KTMenu}\r\n */\r\n hideSubmenuDropdowns: function() {\r\n var items;\r\n if ( items = element.querySelectorAll('.menu-item-submenu.menu-item-hover:not(.menu-item-tabs):not([data-menu-toggle=\"tab\"])') ) {\r\n for (var j = 0, cnt = items.length; j < cnt; j++) {\r\n Plugin.hideSubmenuDropdown(items[j], true);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * helper functions\r\n * @returns {KTMenu}\r\n */\r\n showSubmenuDropdown: function(item) {\r\n // close active submenus\r\n var list = element.querySelectorAll('.menu-item-submenu.menu-item-hover, .menu-item-submenu.menu-item-active-tab');\r\n\r\n if ( list ) {\r\n for (var i = 0, len = list.length; i < len; i++) {\r\n var el = list[i];\r\n if ( item !== el && el.contains(item) === false && item.contains(el) === false ) {\r\n Plugin.hideSubmenuDropdown(el, true);\r\n }\r\n }\r\n }\r\n\r\n // add submenu activation class\r\n KTUtil.addClass(item, 'menu-item-hover');\r\n\r\n // Change the alignment of submenu is offscreen.\r\n var submenu = KTUtil.find(item, '.menu-submenu');\r\n\r\n if (submenu && submenu.hasAttribute('data-hor-direction') === false) {\r\n if (KTUtil.hasClass(submenu, 'menu-submenu-left')) {\r\n submenu.setAttribute('data-hor-direction', 'menu-submenu-left');\r\n } else if (KTUtil.hasClass(submenu, 'menu-submenu-right')) {\r\n submenu.setAttribute('data-hor-direction', 'menu-submenu-right');\r\n }\r\n }\r\n\r\n if ( submenu && KTUtil.isOffscreen(submenu, 'left', 15) === true ) {\r\n KTUtil.removeClass(submenu, 'menu-submenu-left');\r\n KTUtil.addClass(submenu, 'menu-submenu-right');\r\n } else if ( submenu && KTUtil.isOffscreen(submenu, 'right', 15) === true ) {\r\n KTUtil.removeClass(submenu, 'menu-submenu-right');\r\n KTUtil.addClass(submenu, 'menu-submenu-left');\r\n }\r\n\r\n if ( item.getAttribute('data-menu-toggle-class') ) {\r\n KTUtil.addClass(body, item.getAttribute('data-menu-toggle-class'));\r\n }\r\n },\r\n\r\n /**\r\n * Handles submenu slide toggle\r\n * @returns {KTMenu}\r\n */\r\n createSubmenuDropdownClickDropoff: function(el) {\r\n var query;\r\n var zIndex = (query = KTUtil.child(el, '.menu-submenu') ? KTUtil.css(query, 'z-index') : 0) - 1;\r\n\r\n var dropoff = document.createElement('<div class=\"menu-dropoff\" style=\"background: transparent; position: fixed; top: 0; bottom: 0; left: 0; right: 0; z-index: ' + zIndex + '\"></div>');\r\n\r\n body.appendChild(dropoff);\r\n\r\n KTUtil.addEvent(dropoff, 'click', function(e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n KTUtil.remove(this);\r\n Plugin.hideSubmenuDropdown(el, true);\r\n });\r\n },\r\n\r\n /**\r\n * Handles submenu hover toggle\r\n * @returns {KTMenu}\r\n */\r\n pauseDropdownHover: function(time) {\r\n var date = new Date();\r\n\r\n the.pauseDropdownHoverTime = date.getTime() + time;\r\n },\r\n\r\n /**\r\n * Handles submenu hover toggle\r\n * @returns {KTMenu}\r\n */\r\n resumeDropdownHover: function() {\r\n var date = new Date();\r\n\r\n return (date.getTime() > the.pauseDropdownHoverTime ? true : false);\r\n },\r\n\r\n /**\r\n * Reset menu's current active item\r\n * @returns {KTMenu}\r\n */\r\n resetActiveItem: function(item) {\r\n var list;\r\n var parents;\r\n\r\n list = element.querySelectorAll('.menu-item-active');\r\n\r\n for (var i = 0, len = list.length; i < len; i++) {\r\n var el = list[0];\r\n KTUtil.removeClass(el, 'menu-item-active');\r\n KTUtil.hide( KTUtil.child(el, '.menu-submenu') );\r\n parents = KTUtil.parents(el, '.menu-item-submenu') || [];\r\n\r\n for (var i_ = 0, len_ = parents.length; i_ < len_; i_++) {\r\n var el_ = parents[i];\r\n KTUtil.removeClass(el_, 'menu-item-open');\r\n KTUtil.hide( KTUtil.child(el_, '.menu-submenu') );\r\n }\r\n }\r\n\r\n // close open submenus\r\n if ( the.options.accordion.expandAll === false ) {\r\n if ( list = element.querySelectorAll('.menu-item-open') ) {\r\n for (var i = 0, len = list.length; i < len; i++) {\r\n KTUtil.removeClass(parents[0], 'menu-item-open');\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Sets menu's active item\r\n * @returns {KTMenu}\r\n */\r\n setActiveItem: function(item) {\r\n // reset current active item\r\n Plugin.resetActiveItem();\r\n\r\n var parents = KTUtil.parents(item, '.menu-item-submenu') || [];\r\n for (var i = 0, len = parents.length; i < len; i++) {\r\n KTUtil.addClass(parents[i], 'menu-item-open');\r\n }\r\n\r\n KTUtil.addClass(item, 'menu-item-active');\r\n },\r\n\r\n /**\r\n * Returns page breadcrumbs for the menu's active item\r\n * @returns {KTMenu}\r\n */\r\n getBreadcrumbs: function(item) {\r\n var query;\r\n var breadcrumbs = [];\r\n var link = KTUtil.child(item, '.menu-link');\r\n\r\n breadcrumbs.push({\r\n text: (query = KTUtil.child(link, '.menu-text') ? query.innerHTML : ''),\r\n title: link.getAttribute('title'),\r\n href: link.getAttribute('href')\r\n });\r\n\r\n var parents = KTUtil.parents(item, '.menu-item-submenu');\r\n for (var i = 0, len = parents.length; i < len; i++) {\r\n var submenuLink = KTUtil.child(parents[i], '.menu-link');\r\n\r\n breadcrumbs.push({\r\n text: (query = KTUtil.child(submenuLink, '.menu-text') ? query.innerHTML : ''),\r\n title: submenuLink.getAttribute('title'),\r\n href: submenuLink.getAttribute('href')\r\n });\r\n }\r\n\r\n return breadcrumbs.reverse();\r\n },\r\n\r\n /**\r\n * Returns page title for the menu's active item\r\n * @returns {KTMenu}\r\n */\r\n getPageTitle: function(item) {\r\n var query;\r\n\r\n return (query = KTUtil.child(item, '.menu-text') ? query.innerHTML : '');\r\n },\r\n\r\n /**\r\n * Trigger events\r\n */\r\n eventTrigger: function(name, target, e) {\r\n for (var i = 0; i < the.events.length; i++ ) {\r\n var event = the.events[i];\r\n if ( event.name == name ) {\r\n if ( event.one == true ) {\r\n if ( event.fired == false ) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, target, e);\r\n }\r\n } else {\r\n return event.handler.call(this, target, e);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n },\r\n\r\n removeEvent: function(name) {\r\n if (the.events[name]) {\r\n delete the.events[name];\r\n }\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n */\r\n\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Update scroll\r\n */\r\n the.scrollUpdate = function() {\r\n return Plugin.scrollUpdate();\r\n };\r\n\r\n /**\r\n * Re-init scroll\r\n */\r\n the.scrollReInit = function() {\r\n return Plugin.scrollInit();\r\n };\r\n\r\n /**\r\n * Scroll top\r\n */\r\n the.scrollTop = function() {\r\n return Plugin.scrollTop();\r\n };\r\n\r\n /**\r\n * Set active menu item\r\n */\r\n the.setActiveItem = function(item) {\r\n return Plugin.setActiveItem(item);\r\n };\r\n\r\n the.reload = function() {\r\n return Plugin.reload();\r\n };\r\n\r\n the.update = function(options) {\r\n return Plugin.update(options);\r\n };\r\n\r\n /**\r\n * Set breadcrumb for menu item\r\n */\r\n the.getBreadcrumbs = function(item) {\r\n return Plugin.getBreadcrumbs(item);\r\n };\r\n\r\n /**\r\n * Set page title for menu item\r\n */\r\n the.getPageTitle = function(item) {\r\n return Plugin.getPageTitle(item);\r\n };\r\n\r\n /**\r\n * Get submenu mode\r\n */\r\n the.getSubmenuMode = function(el) {\r\n return Plugin.getSubmenuMode(el);\r\n };\r\n\r\n /**\r\n * Hide dropdown\r\n * @returns {Object}\r\n */\r\n the.hideDropdown = function(item) {\r\n Plugin.hideSubmenuDropdown(item, true);\r\n };\r\n\r\n /**\r\n * Hide dropdowns\r\n * @returns {Object}\r\n */\r\n the.hideDropdowns = function() {\r\n Plugin.hideSubmenuDropdowns();\r\n };\r\n\r\n /**\r\n * Disable menu for given time\r\n * @returns {Object}\r\n */\r\n the.pauseDropdownHover = function(time) {\r\n Plugin.pauseDropdownHover(time);\r\n };\r\n\r\n /**\r\n * Disable menu for given time\r\n * @returns {Object}\r\n */\r\n the.resumeDropdownHover = function() {\r\n return Plugin.resumeDropdownHover();\r\n };\r\n\r\n /**\r\n * Register event\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n the.off = function(name) {\r\n return Plugin.removeEvent(name);\r\n };\r\n\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n ///////////////////////////////\r\n // ** Plugin Construction ** //\r\n ///////////////////////////////\r\n\r\n // Run plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n // Handle plugin on window resize\r\n KTUtil.addResizeHandler(function() {\r\n if (init) {\r\n the.reload();\r\n }\r\n });\r\n\r\n // Init done\r\n init = true;\r\n\r\n // Return plugin instance\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n // module.exports = KTMenu;\r\n}\r\n\r\n// Plugin global lazy initialization\r\ndocument.addEventListener(\"click\", function (e) {\r\n var body = KTUtil.getByTagName('body')[0];\r\n var query;\r\n if ( query = body.querySelectorAll('.menu-nav .menu-item.menu-item-submenu.menu-item-hover:not(.menu-item-tabs)[data-menu-toggle=\"click\"]') ) {\r\n for (var i = 0, len = query.length; i < len; i++) {\r\n var element = query[i].closest('.menu-nav').parentNode;\r\n\r\n if ( element ) {\r\n var the = KTUtil.data(element).get('menu');\r\n\r\n if ( !the ) {\r\n break;\r\n }\r\n\r\n if ( !the || the.getSubmenuMode() !== 'dropdown' ) {\r\n break;\r\n }\r\n\r\n if ( e.target !== element && element.contains(e.target) === false ) {\r\n the.hideDropdowns();\r\n }\r\n }\r\n }\r\n }\r\n});\r\n\r\nexport default KTMenu;","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport { KTUtil } from \"./util\";\r\n\r\n// Component Definition\r\nvar KTOffcanvas = function(elementId, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = KTUtil.getById(elementId);\r\n var body = KTUtil.getBody();\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n attrCustom: ''\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('offcanvas')) {\r\n the = KTUtil.data(element).get('offcanvas');\r\n } else {\r\n // Reset offcanvas\r\n Plugin.init(options);\r\n\r\n // Build offcanvas\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('offcanvas', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n init: function(options) {\r\n the.events = [];\r\n\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n the.classBase = the.options.baseClass;\r\n the.attrCustom = the.options.attrCustom;\r\n the.classShown = the.classBase + '-on';\r\n the.classOverlay = the.classBase + '-overlay';\r\n the.target;\r\n\r\n the.state = KTUtil.hasClass(element, the.classShown) ? 'shown' : 'hidden';\r\n },\r\n\r\n build: function() {\r\n // offcanvas toggle\r\n if (the.options.toggleBy) {\r\n if (typeof the.options.toggleBy === 'string') {\r\n KTUtil.addEvent(KTUtil.getById(the.options.toggleBy), 'click', function(e) {\r\n e.preventDefault();\r\n the.target = this;\r\n Plugin.toggle();\r\n });\r\n } else if (the.options.toggleBy && the.options.toggleBy[0]) {\r\n if (the.options.toggleBy[0].target) {\r\n for (var i in the.options.toggleBy) {\r\n KTUtil.addEvent(KTUtil.getById(the.options.toggleBy[i].target), 'click', function(e) {\r\n e.preventDefault();\r\n the.target = this;\r\n Plugin.toggle();\r\n });\r\n }\r\n } else {\r\n for (var i in the.options.toggleBy) {\r\n KTUtil.addEvent(KTUtil.getById(the.options.toggleBy[i]), 'click', function(e) {\r\n e.preventDefault();\r\n the.target = this;\r\n Plugin.toggle();\r\n });\r\n }\r\n }\r\n\r\n } else if (the.options.toggleBy && the.options.toggleBy.target) {\r\n KTUtil.addEvent( KTUtil.getById(the.options.toggleBy.target), 'click', function(e) {\r\n e.preventDefault();\r\n the.target = this;\r\n Plugin.toggle();\r\n });\r\n }\r\n }\r\n\r\n // offcanvas close\r\n var closeBy = KTUtil.getById(the.options.closeBy);\r\n if (closeBy) {\r\n KTUtil.addEvent(closeBy, 'click', function(e) {\r\n e.preventDefault();\r\n the.target = this;\r\n Plugin.hide();\r\n });\r\n }\r\n },\r\n\r\n isShown: function() {\r\n return (the.state == 'shown' ? true : false);\r\n },\r\n\r\n toggle: function() {\r\n Plugin.eventTrigger('toggle');\r\n\r\n if (the.state == 'shown') {\r\n Plugin.hide();\r\n } else {\r\n Plugin.show();\r\n }\r\n },\r\n\r\n show: function() {\r\n if (the.state == 'shown') {\r\n return;\r\n }\r\n\r\n Plugin.eventTrigger('beforeShow');\r\n\r\n Plugin.toggleClass('show');\r\n\r\n // Offcanvas panel\r\n KTUtil.attr(body, 'data-offcanvas-' + the.classBase, 'on');\r\n KTUtil.addClass(element, the.classShown);\r\n\r\n if (the.attrCustom.length > 0) {\r\n KTUtil.attr(body, 'data-offcanvas-' + the.classCustom, 'on');\r\n //KTUtil.addClass(body, the.classCustom);\r\n }\r\n\r\n the.state = 'shown';\r\n\r\n if (the.options.overlay) {\r\n the.overlay = KTUtil.insertAfter(document.createElement('DIV') , element );\r\n KTUtil.addClass(the.overlay, the.classOverlay);\r\n\r\n KTUtil.addEvent(the.overlay, 'click', function(e) {\r\n //e.stopPropagation();\r\n e.preventDefault();\r\n Plugin.hide(the.target);\r\n });\r\n }\r\n\r\n Plugin.eventTrigger('afterShow');\r\n },\r\n\r\n hide: function() {\r\n if (the.state == 'hidden') {\r\n return;\r\n }\r\n\r\n Plugin.eventTrigger('beforeHide');\r\n\r\n Plugin.toggleClass('hide');\r\n\r\n KTUtil.removeAttr(body, 'data-offcanvas-' + the.classBase);\r\n KTUtil.removeClass(element, the.classShown);\r\n\r\n if (the.attrCustom.length > 0) {\r\n KTUtil.removeAttr(body, 'data-offcanvas-' + the.attrCustom);\r\n }\r\n\r\n the.state = 'hidden';\r\n\r\n if (the.options.overlay && the.overlay) {\r\n KTUtil.remove(the.overlay);\r\n }\r\n\r\n Plugin.eventTrigger('afterHide');\r\n },\r\n\r\n toggleClass: function(mode) {\r\n var id = KTUtil.attr(the.target, 'id');\r\n var toggleBy;\r\n\r\n if (the.options.toggleBy && the.options.toggleBy[0] && the.options.toggleBy[0].target) {\r\n for (var i in the.options.toggleBy) {\r\n if (the.options.toggleBy[i].target === id) {\r\n toggleBy = the.options.toggleBy[i];\r\n }\r\n }\r\n } else if (the.options.toggleBy && the.options.toggleBy.target) {\r\n toggleBy = the.options.toggleBy;\r\n }\r\n\r\n if (toggleBy) {\r\n var el = KTUtil.getById(toggleBy.target);\r\n\r\n if (mode === 'show') {\r\n KTUtil.addClass(el, toggleBy.state);\r\n }\r\n\r\n if (mode === 'hide') {\r\n KTUtil.removeClass(el, toggleBy.state);\r\n }\r\n }\r\n },\r\n\r\n eventTrigger: function(name, args) {\r\n for (var i = 0; i < the.events.length; i++) {\r\n var event = the.events[i];\r\n if (event.name == name) {\r\n if (event.one == true) {\r\n if (event.fired == false) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, the, args);\r\n }\r\n } else {\r\n return event.handler.call(this, the, args);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n * @param options\r\n */\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Check if canvas is shown\r\n * @returns {boolean}\r\n */\r\n the.isShown = function() {\r\n return Plugin.isShown();\r\n };\r\n\r\n /**\r\n * Set to hide the canvas\r\n */\r\n the.hide = function() {\r\n return Plugin.hide();\r\n };\r\n\r\n /**\r\n * Set to show the canvas\r\n */\r\n the.show = function() {\r\n return Plugin.show();\r\n };\r\n\r\n /**\r\n * Attach event\r\n * @param name\r\n * @param handler\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n /**\r\n * Attach event that will be fired once\r\n * @param name\r\n * @param handler\r\n */\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n ///////////////////////////////\r\n // ** Plugin Construction ** //\r\n ///////////////////////////////\r\n\r\n // Run plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n // Init done\r\n init = true;\r\n\r\n // Return plugin instance\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n // module.exports = KTOffcanvas;\r\n}\r\n\r\nexport default KTOffcanvas;","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport { KTUtil } from \"./util\";\r\n\r\n// Component Definition\r\nvar KTScrolltop = function(elementId, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = KTUtil.getById(elementId);\r\n var body = KTUtil.getBody();\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n offset: 300,\r\n speed: 6000\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n /**\r\n * Run plugin\r\n * @returns {mscrolltop}\r\n */\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('scrolltop')) {\r\n the = KTUtil.data(element).get('scrolltop');\r\n } else {\r\n // reset scrolltop\r\n Plugin.init(options);\r\n\r\n // build scrolltop\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('scrolltop', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles subscrolltop click toggle\r\n * @returns {mscrolltop}\r\n */\r\n init: function(options) {\r\n the.events = [];\r\n\r\n // merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n },\r\n\r\n build: function() {\r\n var timer;\r\n\r\n window.addEventListener('scroll', function() {\r\n KTUtil.throttle(timer, function() {\r\n Plugin.handle();\r\n }, 200);\r\n });\r\n\r\n // handle button click\r\n KTUtil.addEvent(element, 'click', Plugin.scroll);\r\n },\r\n\r\n /**\r\n * Handles scrolltop click scrollTop\r\n */\r\n handle: function() {\r\n var pos = KTUtil.getScrollTop(); // current vertical position\r\n\r\n if (pos > the.options.offset) {\r\n if (body.hasAttribute('data-scrolltop') === false) {\r\n body.setAttribute('data-scrolltop', 'on');\r\n }\r\n } else {\r\n if (body.hasAttribute('data-scrolltop') === true) {\r\n body.removeAttribute('data-scrolltop');\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Handles scrolltop click scrollTop\r\n */\r\n scroll: function(e) {\r\n e.preventDefault();\r\n\r\n KTUtil.scrollTop(0, the.options.speed);\r\n },\r\n\r\n\r\n /**\r\n * Trigger events\r\n */\r\n eventTrigger: function(name, args) {\r\n for (var i = 0; i < the.events.length; i++) {\r\n var event = the.events[i];\r\n if (event.name == name) {\r\n if (event.one == true) {\r\n if (event.fired == false) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, the, args);\r\n }\r\n } else {\r\n return event.handler.call(this, the, args);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n */\r\n\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Get subscrolltop mode\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n /**\r\n * Set scrolltop content\r\n * @returns {mscrolltop}\r\n */\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n ///////////////////////////////\r\n // ** Plugin Construction ** //\r\n ///////////////////////////////\r\n\r\n // Run plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n // Init done\r\n init = true;\r\n\r\n // Return plugin instance\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n // module.exports = KTScrolltop;\r\n}\r\n\r\nexport default KTScrolltop;","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport { KTUtil } from \"./util\";\r\n\r\n// Component Definition\r\nvar KTToggle = function(toggleElement, targetElement, options) {\r\n // Main object\r\n var the = this;\r\n var init = false;\r\n\r\n // Get element object\r\n var element = toggleElement;\r\n var target = targetElement;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Default options\r\n var defaultOptions = {\r\n targetToggleMode: 'class' // class|attribute\r\n };\r\n\r\n ////////////////////////////\r\n // ** Private Methods ** //\r\n ////////////////////////////\r\n\r\n var Plugin = {\r\n /**\r\n * Construct\r\n */\r\n\r\n construct: function(options) {\r\n if (KTUtil.data(element).has('toggle')) {\r\n the = KTUtil.data(element).get('toggle');\r\n } else {\r\n // reset menu\r\n Plugin.init(options);\r\n\r\n // build menu\r\n Plugin.build();\r\n\r\n KTUtil.data(element).set('toggle', the);\r\n }\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles subtoggle click toggle\r\n */\r\n init: function(options) {\r\n the.element = element;\r\n the.events = [];\r\n\r\n // Merge default and user defined options\r\n the.options = KTUtil.deepExtend({}, defaultOptions, options);\r\n\r\n //alert(the.options.target.tagName);\r\n the.target = target;\r\n\r\n the.targetState = the.options.targetState;\r\n the.toggleState = the.options.toggleState;\r\n\r\n if (the.options.targetToggleMode == 'class') {\r\n the.state = KTUtil.hasClasses(the.target, the.targetState) ? 'on' : 'off';\r\n } else {\r\n the.state = KTUtil.hasAttr(the.target, 'data-' + the.targetState) ? KTUtil.attr(the.target, 'data-' + the.targetState) : 'off';\r\n }\r\n },\r\n\r\n /**\r\n * Setup toggle\r\n */\r\n build: function() {\r\n KTUtil.addEvent(element, 'mouseup', Plugin.toggle);\r\n },\r\n\r\n /**\r\n * Handles offcanvas click toggle\r\n */\r\n toggle: function(e) {\r\n Plugin.eventTrigger('beforeToggle');\r\n\r\n if (the.state == 'off') {\r\n Plugin.toggleOn();\r\n } else {\r\n Plugin.toggleOff();\r\n }\r\n\r\n Plugin.eventTrigger('afterToggle');\r\n\r\n e.preventDefault();\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles toggle click toggle\r\n */\r\n toggleOn: function() {\r\n Plugin.eventTrigger('beforeOn');\r\n\r\n if (the.options.targetToggleMode == 'class') {\r\n KTUtil.addClass(the.target, the.targetState);\r\n } else {\r\n KTUtil.attr(the.target, 'data-' + the.targetState, 'on');\r\n }\r\n\r\n if (the.toggleState) {\r\n KTUtil.addClass(element, the.toggleState);\r\n }\r\n\r\n the.state = 'on';\r\n\r\n Plugin.eventTrigger('afterOn');\r\n\r\n Plugin.eventTrigger('toggle');\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Handles toggle click toggle\r\n */\r\n toggleOff: function() {\r\n Plugin.eventTrigger('beforeOff');\r\n\r\n if (the.options.targetToggleMode == 'class') {\r\n KTUtil.removeClass(the.target, the.targetState);\r\n } else {\r\n KTUtil.removeAttr(the.target, 'data-' + the.targetState);\r\n }\r\n\r\n if (the.toggleState) {\r\n KTUtil.removeClass(element, the.toggleState);\r\n }\r\n\r\n the.state = 'off';\r\n\r\n Plugin.eventTrigger('afterOff');\r\n\r\n Plugin.eventTrigger('toggle');\r\n\r\n return the;\r\n },\r\n\r\n /**\r\n * Trigger events\r\n */\r\n eventTrigger: function(name) {\r\n for (var i = 0; i < the.events.length; i++) {\r\n var event = the.events[i];\r\n\r\n if (event.name == name) {\r\n if (event.one == true) {\r\n if (event.fired == false) {\r\n the.events[i].fired = true;\r\n return event.handler.call(this, the);\r\n }\r\n } else {\r\n return event.handler.call(this, the);\r\n }\r\n }\r\n }\r\n },\r\n\r\n addEvent: function(name, handler, one) {\r\n the.events.push({\r\n name: name,\r\n handler: handler,\r\n one: one,\r\n fired: false\r\n });\r\n\r\n return the;\r\n }\r\n };\r\n\r\n //////////////////////////\r\n // ** Public Methods ** //\r\n //////////////////////////\r\n\r\n /**\r\n * Set default options\r\n */\r\n\r\n the.setDefaults = function(options) {\r\n defaultOptions = options;\r\n };\r\n\r\n /**\r\n * Get toggle state\r\n */\r\n the.getState = function() {\r\n return the.state;\r\n };\r\n\r\n /**\r\n * Toggle\r\n */\r\n the.toggle = function() {\r\n return Plugin.toggle();\r\n };\r\n\r\n /**\r\n * Toggle on\r\n */\r\n the.toggleOn = function() {\r\n return Plugin.toggleOn();\r\n };\r\n\r\n /**\r\n * Toggle off\r\n */\r\n the.toggleOff = function() {\r\n return Plugin.toggleOff();\r\n };\r\n\r\n /**\r\n * Attach event\r\n * @returns {KTToggle}\r\n */\r\n the.on = function(name, handler) {\r\n return Plugin.addEvent(name, handler);\r\n };\r\n\r\n /**\r\n * Attach event that will be fired once\r\n * @returns {KTToggle}\r\n */\r\n the.one = function(name, handler) {\r\n return Plugin.addEvent(name, handler, true);\r\n };\r\n\r\n // Construct plugin\r\n Plugin.construct.apply(the, [options]);\r\n\r\n return the;\r\n};\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n // module.exports = KTToggle;\r\n}\r\n\r\nexport default KTToggle;","/*!\n * perfect-scrollbar v1.5.3\n * Copyright 2021 Hyunje Jun, MDBootstrap and Contributors\n * Licensed under MIT\n */\n\nfunction get(element) {\n return getComputedStyle(element);\n}\n\nfunction set(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val + \"px\";\n }\n element.style[key] = val;\n }\n return element;\n}\n\nfunction div(className) {\n var div = document.createElement('div');\n div.className = className;\n return div;\n}\n\nvar elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\nfunction matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n}\n\nfunction remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n}\n\nfunction queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n );\n}\n\nvar cls = {\n main: 'ps',\n rtl: 'ps__rtl',\n element: {\n thumb: function (x) { return (\"ps__thumb-\" + x); },\n rail: function (x) { return (\"ps__rail-\" + x); },\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: function (x) { return (\"ps--active-\" + x); },\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n },\n};\n\n/*\n * Helper methods\n */\nvar scrollingClassTimeout = { x: null, y: null };\n\nfunction addScrollingClass(i, x) {\n var classList = i.element.classList;\n var className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n}\n\nfunction removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n i.settings.scrollingThreshold\n );\n}\n\nfunction setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n}\n\nvar EventElement = function EventElement(element) {\n this.element = element;\n this.handlers = {};\n};\n\nvar prototypeAccessors = { isEmpty: { configurable: true } };\n\nEventElement.prototype.bind = function bind (eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n};\n\nEventElement.prototype.unbind = function unbind (eventName, target) {\n var this$1 = this;\n\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n if (target && handler !== target) {\n return true;\n }\n this$1.element.removeEventListener(eventName, handler, false);\n return false;\n });\n};\n\nEventElement.prototype.unbindAll = function unbindAll () {\n for (var name in this.handlers) {\n this.unbind(name);\n }\n};\n\nprototypeAccessors.isEmpty.get = function () {\n var this$1 = this;\n\n return Object.keys(this.handlers).every(\n function (key) { return this$1.handlers[key].length === 0; }\n );\n};\n\nObject.defineProperties( EventElement.prototype, prototypeAccessors );\n\nvar EventManager = function EventManager() {\n this.eventElements = [];\n};\n\nEventManager.prototype.eventElement = function eventElement (element) {\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n};\n\nEventManager.prototype.bind = function bind (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n};\n\nEventManager.prototype.unbind = function unbind (element, eventName, handler) {\n var ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n};\n\nEventManager.prototype.unbindAll = function unbindAll () {\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\n this.eventElements = [];\n};\n\nEventManager.prototype.once = function once (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (evt) {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n};\n\nfunction createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n } else {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n }\n}\n\nfunction processScrollDiff(\n i,\n axis,\n diff,\n useScrollingClass,\n forceFireReachEvent\n) {\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var fields;\n if (axis === 'top') {\n fields = [\n 'contentHeight',\n 'containerHeight',\n 'scrollTop',\n 'y',\n 'up',\n 'down' ];\n } else if (axis === 'left') {\n fields = [\n 'contentWidth',\n 'containerWidth',\n 'scrollLeft',\n 'x',\n 'left',\n 'right' ];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n}\n\nfunction processScrollDiff$1(\n i,\n diff,\n ref,\n useScrollingClass,\n forceFireReachEvent\n) {\n var contentHeight = ref[0];\n var containerHeight = ref[1];\n var scrollTop = ref[2];\n var y = ref[3];\n var up = ref[4];\n var down = ref[5];\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n }\n}\n\nfunction toInt(x) {\n return parseInt(x, 10) || 0;\n}\n\nfunction isEditable(el) {\n return (\n matches(el, 'input,[contenteditable]') ||\n matches(el, 'select,[contenteditable]') ||\n matches(el, 'textarea,[contenteditable]') ||\n matches(el, 'button,[contenteditable]')\n );\n}\n\nfunction outerWidth(element) {\n var styles = get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n}\n\nvar env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n ('maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints > 0) ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n};\n\nfunction updateGeometry(i) {\n var element = i.element;\n var roundedScrollTop = Math.floor(element.scrollTop);\n var rect = element.getBoundingClientRect();\n\n i.containerWidth = Math.round(rect.width);\n i.containerHeight = Math.round(rect.height);\n\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(\n i,\n toInt((i.railXWidth * i.containerWidth) / i.contentWidth)\n );\n i.scrollbarXLeft = toInt(\n ((i.negativeScrollAdjustment + element.scrollLeft) *\n (i.railXWidth - i.scrollbarXWidth)) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\n (i.contentHeight - i.containerHeight)\n );\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n}\n\nfunction getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n}\n\nfunction updateCss(element, i) {\n var xRailOffset = { width: i.railXWidth };\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth -\n i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n set(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth -\n 9;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n set(i.scrollbarYRail, yRailOffset);\n\n set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n}\n\nfunction clickRail(i) {\n var element = i.element;\n\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n var positionTop =\n e.pageY -\n window.pageYOffset -\n i.scrollbarYRail.getBoundingClientRect().top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n var positionLeft =\n e.pageX -\n window.pageXOffset -\n i.scrollbarXRail.getBoundingClientRect().left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n}\n\nfunction dragThumb(i) {\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail' ]);\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail' ]);\n}\n\nfunction bindMouseScrollHandler(\n i,\n ref\n) {\n var containerHeight = ref[0];\n var contentHeight = ref[1];\n var pageY = ref[2];\n var railYHeight = ref[3];\n var scrollbarY = ref[4];\n var scrollbarYHeight = ref[5];\n var scrollTop = ref[6];\n var y = ref[7];\n var scrollbarYRail = ref[8];\n\n var element = i.element;\n\n var startingScrollTop = null;\n var startingMousePageY = null;\n var scrollBy = null;\n\n function mouseMoveHandler(e) {\n if (e.touches && e.touches[0]) {\n e[pageY] = e.touches[0].pageY;\n }\n element[scrollTop] =\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n addScrollingClass(i, y);\n updateGeometry(i);\n\n e.stopPropagation();\n if (e.type.startsWith('touch') && e.changedTouches.length > 1) {\n e.preventDefault();\n }\n }\n\n function mouseUpHandler() {\n removeScrollingClass(i, y);\n i[scrollbarYRail].classList.remove(cls.state.clicking);\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n }\n\n function bindMoves(e, touchMode) {\n startingScrollTop = element[scrollTop];\n if (touchMode && e.touches) {\n e[pageY] = e.touches[0].pageY;\n }\n startingMousePageY = e[pageY];\n scrollBy =\n (i[contentHeight] - i[containerHeight]) /\n (i[railYHeight] - i[scrollbarYHeight]);\n if (!touchMode) {\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n e.preventDefault();\n } else {\n i.event.bind(i.ownerDocument, 'touchmove', mouseMoveHandler);\n }\n\n i[scrollbarYRail].classList.add(cls.state.clicking);\n\n e.stopPropagation();\n }\n\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n bindMoves(e);\n });\n i.event.bind(i[scrollbarY], 'touchstart', function (e) {\n bindMoves(e, true);\n });\n}\n\nfunction keyboard(i) {\n var element = i.element;\n\n var elementHovered = function () { return matches(element, ':hover'); };\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if (\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n e.defaultPrevented\n ) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n var activeElement = document.activeElement\n ? document.activeElement\n : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n}\n\nfunction wheel(i) {\n var element = i.element;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var roundedScrollTop = Math.floor(element.scrollTop);\n var isTop = element.scrollTop === 0;\n var isBottom =\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\n var isLeft = element.scrollLeft === 0;\n var isRight =\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n var hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n // OS X Safari\n deltaX = (-1 * e.wheelDeltaX) / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n // FIXME: this is a workaround for <select> issue in FF and IE #571\n if (!env.isWebKit && element.querySelector('select:focus')) {\n return true;\n }\n\n if (!element.contains(target)) {\n return false;\n }\n\n var cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n var style = get(cursor);\n\n // if deltaY && vertical scrollable\n if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n (cursor.scrollTop > 0 && deltaY < 0) ||\n (cursor.scrollTop < maxScrollTop && deltaY > 0)\n ) {\n return true;\n }\n }\n }\n // if deltaX && horizontal scrollable\n if (deltaX && style.overflowX.match(/(scroll|auto)/)) {\n var maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n (cursor.scrollLeft > 0 && deltaX < 0) ||\n (cursor.scrollLeft < maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function mousewheelHandler(e) {\n var ref = getDeltaFromEvent(e);\n var deltaX = ref[0];\n var deltaY = ref[1];\n\n if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {\n return;\n }\n\n var shouldPrevent = false;\n if (!i.settings.useBothWheelAxes) {\n // deltaX will only be used for horizontal scrolling and deltaY will\n // only be used for vertical scrolling - this is the default\n element.scrollTop -= deltaY * i.settings.wheelSpeed;\n element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else if (i.scrollbarYActive && !i.scrollbarXActive) {\n // only vertical scrollbar is active and useBothWheelAxes option is\n // active, so let's scroll vertical bar using both mouse wheel axes\n if (deltaY) {\n element.scrollTop -= deltaY * i.settings.wheelSpeed;\n } else {\n element.scrollTop += deltaX * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n } else if (i.scrollbarXActive && !i.scrollbarYActive) {\n // useBothWheelAxes and only horizontal bar is active, so use both\n // wheel axes for horizontal bar\n if (deltaX) {\n element.scrollLeft += deltaX * i.settings.wheelSpeed;\n } else {\n element.scrollLeft -= deltaY * i.settings.wheelSpeed;\n }\n shouldPrevent = true;\n }\n\n updateGeometry(i);\n\n shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);\n if (shouldPrevent && !e.ctrlKey) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n if (typeof window.onwheel !== 'undefined') {\n i.event.bind(element, 'wheel', mousewheelHandler);\n } else if (typeof window.onmousewheel !== 'undefined') {\n i.event.bind(element, 'mousewheel', mousewheelHandler);\n }\n}\n\nfunction touch(i) {\n if (!env.supportsTouch && !env.supportsIePointer) {\n return;\n }\n\n var element = i.element;\n\n function shouldPrevent(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n var scrollLeft = element.scrollLeft;\n var magnitudeX = Math.abs(deltaX);\n var magnitudeY = Math.abs(deltaY);\n\n if (magnitudeY > magnitudeX) {\n // user is perhaps trying to swipe up/down the page\n\n if (\n (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) ||\n (deltaY > 0 && scrollTop === 0)\n ) {\n // set prevent for mobile Chrome refresh\n return window.scrollY === 0 && deltaY > 0 && env.isChrome;\n }\n } else if (magnitudeX > magnitudeY) {\n // user is perhaps trying to swipe left/right across the page\n\n if (\n (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) ||\n (deltaX > 0 && scrollLeft === 0)\n ) {\n return true;\n }\n }\n\n return true;\n }\n\n function applyTouchMove(differenceX, differenceY) {\n element.scrollTop -= differenceY;\n element.scrollLeft -= differenceX;\n\n updateGeometry(i);\n }\n\n var startOffset = {};\n var startTime = 0;\n var speed = {};\n var easingLoop = null;\n\n function getTouch(e) {\n if (e.targetTouches) {\n return e.targetTouches[0];\n } else {\n // Maybe IE pointer\n return e;\n }\n }\n\n function shouldHandle(e) {\n if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {\n return false;\n }\n if (e.targetTouches && e.targetTouches.length === 1) {\n return true;\n }\n if (\n e.pointerType &&\n e.pointerType !== 'mouse' &&\n e.pointerType !== e.MSPOINTER_TYPE_MOUSE\n ) {\n return true;\n }\n return false;\n }\n\n function touchStart(e) {\n if (!shouldHandle(e)) {\n return;\n }\n\n var touch = getTouch(e);\n\n startOffset.pageX = touch.pageX;\n startOffset.pageY = touch.pageY;\n\n startTime = new Date().getTime();\n\n if (easingLoop !== null) {\n clearInterval(easingLoop);\n }\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n if (!element.contains(target)) {\n return false;\n }\n\n var cursor = target;\n\n while (cursor && cursor !== element) {\n if (cursor.classList.contains(cls.element.consuming)) {\n return true;\n }\n\n var style = get(cursor);\n\n // if deltaY && vertical scrollable\n if (deltaY && style.overflowY.match(/(scroll|auto)/)) {\n var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;\n if (maxScrollTop > 0) {\n if (\n (cursor.scrollTop > 0 && deltaY < 0) ||\n (cursor.scrollTop < maxScrollTop && deltaY > 0)\n ) {\n return true;\n }\n }\n }\n // if deltaX && horizontal scrollable\n if (deltaX && style.overflowX.match(/(scroll|auto)/)) {\n var maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;\n if (maxScrollLeft > 0) {\n if (\n (cursor.scrollLeft > 0 && deltaX < 0) ||\n (cursor.scrollLeft < maxScrollLeft && deltaX > 0)\n ) {\n return true;\n }\n }\n }\n\n cursor = cursor.parentNode;\n }\n\n return false;\n }\n\n function touchMove(e) {\n if (shouldHandle(e)) {\n var touch = getTouch(e);\n\n var currentOffset = { pageX: touch.pageX, pageY: touch.pageY };\n\n var differenceX = currentOffset.pageX - startOffset.pageX;\n var differenceY = currentOffset.pageY - startOffset.pageY;\n\n if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {\n return;\n }\n\n applyTouchMove(differenceX, differenceY);\n startOffset = currentOffset;\n\n var currentTime = new Date().getTime();\n\n var timeGap = currentTime - startTime;\n if (timeGap > 0) {\n speed.x = differenceX / timeGap;\n speed.y = differenceY / timeGap;\n startTime = currentTime;\n }\n\n if (shouldPrevent(differenceX, differenceY)) {\n e.preventDefault();\n }\n }\n }\n function touchEnd() {\n if (i.settings.swipeEasing) {\n clearInterval(easingLoop);\n easingLoop = setInterval(function() {\n if (i.isInitialized) {\n clearInterval(easingLoop);\n return;\n }\n\n if (!speed.x && !speed.y) {\n clearInterval(easingLoop);\n return;\n }\n\n if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {\n clearInterval(easingLoop);\n return;\n }\n\n if (!i.element) {\n clearInterval(easingLoop);\n return;\n }\n\n applyTouchMove(speed.x * 30, speed.y * 30);\n\n speed.x *= 0.8;\n speed.y *= 0.8;\n }, 10);\n }\n }\n\n if (env.supportsTouch) {\n i.event.bind(element, 'touchstart', touchStart);\n i.event.bind(element, 'touchmove', touchMove);\n i.event.bind(element, 'touchend', touchEnd);\n } else if (env.supportsIePointer) {\n if (window.PointerEvent) {\n i.event.bind(element, 'pointerdown', touchStart);\n i.event.bind(element, 'pointermove', touchMove);\n i.event.bind(element, 'pointerup', touchEnd);\n } else if (window.MSPointerEvent) {\n i.event.bind(element, 'MSPointerDown', touchStart);\n i.event.bind(element, 'MSPointerMove', touchMove);\n i.event.bind(element, 'MSPointerUp', touchEnd);\n }\n }\n}\n\nvar defaultSettings = function () { return ({\n handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollingThreshold: 1000,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: false,\n suppressScrollY: false,\n swipeEasing: true,\n useBothWheelAxes: false,\n wheelPropagation: true,\n wheelSpeed: 1,\n}); };\n\nvar handlers = {\n 'click-rail': clickRail,\n 'drag-thumb': dragThumb,\n keyboard: keyboard,\n wheel: wheel,\n touch: touch,\n};\n\nvar PerfectScrollbar = function PerfectScrollbar(element, userSettings) {\n var this$1 = this;\n if ( userSettings === void 0 ) userSettings = {};\n\n if (typeof element === 'string') {\n element = document.querySelector(element);\n }\n\n if (!element || !element.nodeName) {\n throw new Error('no element is specified to initialize PerfectScrollbar');\n }\n\n this.element = element;\n\n element.classList.add(cls.main);\n\n this.settings = defaultSettings();\n for (var key in userSettings) {\n this.settings[key] = userSettings[key];\n }\n\n this.containerWidth = null;\n this.containerHeight = null;\n this.contentWidth = null;\n this.contentHeight = null;\n\n var focus = function () { return element.classList.add(cls.state.focus); };\n var blur = function () { return element.classList.remove(cls.state.focus); };\n\n this.isRtl = get(element).direction === 'rtl';\n if (this.isRtl === true) {\n element.classList.add(cls.rtl);\n }\n this.isNegativeScroll = (function () {\n var originalScrollLeft = element.scrollLeft;\n var result = null;\n element.scrollLeft = -1;\n result = element.scrollLeft < 0;\n element.scrollLeft = originalScrollLeft;\n return result;\n })();\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? element.scrollWidth - element.clientWidth\n : 0;\n this.event = new EventManager();\n this.ownerDocument = element.ownerDocument || document;\n\n this.scrollbarXRail = div(cls.element.rail('x'));\n element.appendChild(this.scrollbarXRail);\n this.scrollbarX = div(cls.element.thumb('x'));\n this.scrollbarXRail.appendChild(this.scrollbarX);\n this.scrollbarX.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarX, 'focus', focus);\n this.event.bind(this.scrollbarX, 'blur', blur);\n this.scrollbarXActive = null;\n this.scrollbarXWidth = null;\n this.scrollbarXLeft = null;\n var railXStyle = get(this.scrollbarXRail);\n this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);\n if (isNaN(this.scrollbarXBottom)) {\n this.isScrollbarXUsingBottom = false;\n this.scrollbarXTop = toInt(railXStyle.top);\n } else {\n this.isScrollbarXUsingBottom = true;\n }\n this.railBorderXWidth =\n toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);\n // Set rail to display:block to calculate margins\n set(this.scrollbarXRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight);\n set(this.scrollbarXRail, { display: '' });\n this.railXWidth = null;\n this.railXRatio = null;\n\n this.scrollbarYRail = div(cls.element.rail('y'));\n element.appendChild(this.scrollbarYRail);\n this.scrollbarY = div(cls.element.thumb('y'));\n this.scrollbarYRail.appendChild(this.scrollbarY);\n this.scrollbarY.setAttribute('tabindex', 0);\n this.event.bind(this.scrollbarY, 'focus', focus);\n this.event.bind(this.scrollbarY, 'blur', blur);\n this.scrollbarYActive = null;\n this.scrollbarYHeight = null;\n this.scrollbarYTop = null;\n var railYStyle = get(this.scrollbarYRail);\n this.scrollbarYRight = parseInt(railYStyle.right, 10);\n if (isNaN(this.scrollbarYRight)) {\n this.isScrollbarYUsingRight = false;\n this.scrollbarYLeft = toInt(railYStyle.left);\n } else {\n this.isScrollbarYUsingRight = true;\n }\n this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;\n this.railBorderYWidth =\n toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);\n set(this.scrollbarYRail, { display: 'block' });\n this.railYMarginHeight =\n toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom);\n set(this.scrollbarYRail, { display: '' });\n this.railYHeight = null;\n this.railYRatio = null;\n\n this.reach = {\n x:\n element.scrollLeft <= 0\n ? 'start'\n : element.scrollLeft >= this.contentWidth - this.containerWidth\n ? 'end'\n : null,\n y:\n element.scrollTop <= 0\n ? 'start'\n : element.scrollTop >= this.contentHeight - this.containerHeight\n ? 'end'\n : null,\n };\n\n this.isAlive = true;\n\n this.settings.handlers.forEach(function (handlerName) { return handlers[handlerName](this$1); });\n\n this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only\n this.lastScrollLeft = element.scrollLeft; // for onScroll only\n this.event.bind(this.element, 'scroll', function (e) { return this$1.onScroll(e); });\n updateGeometry(this);\n};\n\nPerfectScrollbar.prototype.update = function update () {\n if (!this.isAlive) {\n return;\n }\n\n // Recalcuate negative scrollLeft adjustment\n this.negativeScrollAdjustment = this.isNegativeScroll\n ? this.element.scrollWidth - this.element.clientWidth\n : 0;\n\n // Recalculate rail margins\n set(this.scrollbarXRail, { display: 'block' });\n set(this.scrollbarYRail, { display: 'block' });\n this.railXMarginWidth =\n toInt(get(this.scrollbarXRail).marginLeft) +\n toInt(get(this.scrollbarXRail).marginRight);\n this.railYMarginHeight =\n toInt(get(this.scrollbarYRail).marginTop) +\n toInt(get(this.scrollbarYRail).marginBottom);\n\n // Hide scrollbars not to affect scrollWidth and scrollHeight\n set(this.scrollbarXRail, { display: 'none' });\n set(this.scrollbarYRail, { display: 'none' });\n\n updateGeometry(this);\n\n processScrollDiff(this, 'top', 0, false, true);\n processScrollDiff(this, 'left', 0, false, true);\n\n set(this.scrollbarXRail, { display: '' });\n set(this.scrollbarYRail, { display: '' });\n};\n\nPerfectScrollbar.prototype.onScroll = function onScroll (e) {\n if (!this.isAlive) {\n return;\n }\n\n updateGeometry(this);\n processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);\n processScrollDiff(\n this,\n 'left',\n this.element.scrollLeft - this.lastScrollLeft\n );\n\n this.lastScrollTop = Math.floor(this.element.scrollTop);\n this.lastScrollLeft = this.element.scrollLeft;\n};\n\nPerfectScrollbar.prototype.destroy = function destroy () {\n if (!this.isAlive) {\n return;\n }\n\n this.event.unbindAll();\n remove(this.scrollbarX);\n remove(this.scrollbarY);\n remove(this.scrollbarXRail);\n remove(this.scrollbarYRail);\n this.removePsClasses();\n\n // unset elements\n this.element = null;\n this.scrollbarX = null;\n this.scrollbarY = null;\n this.scrollbarXRail = null;\n this.scrollbarYRail = null;\n\n this.isAlive = false;\n};\n\nPerfectScrollbar.prototype.removePsClasses = function removePsClasses () {\n this.element.className = this.element.className\n .split(' ')\n .filter(function (name) { return !name.match(/^ps([-_].+|)$/); })\n .join(' ');\n};\n\nexport default PerfectScrollbar;\n","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport PerfectScrollbar from \"perfect-scrollbar\";\r\n\r\nimport { KTCookie } from \"./cookie.js\";\r\n\r\n/**\r\n * @class KTUtil base utilize class that privides helper functions\r\n */\r\n\r\n// Polyfills\r\n/**\r\n * Element.matches() polyfill (simple version)\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\r\n */\r\nif (!Element.prototype.matches) {\r\n\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n}\r\n\r\n/**\r\n * Element.closest() polyfill\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\r\n */\r\nif (!Element.prototype.closest) {\r\n\tif (!Element.prototype.matches) {\r\n\t\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n\t}\r\n\tElement.prototype.closest = function (s) {\r\n\t\tvar el = this;\r\n\t\tvar ancestor = this;\r\n\t\tif (!document.documentElement.contains(el)) return null;\r\n\t\tdo {\r\n\t\t\tif (ancestor.matches(s)) return ancestor;\r\n\t\t\tancestor = ancestor.parentElement;\r\n\t\t} while (ancestor !== null);\r\n\t\treturn null;\r\n\t};\r\n}\r\n\r\n/**\r\n * ChildNode.remove() polyfill\r\n * https://gomakethings.com/removing-an-element-from-the-dom-the-es6-way/\r\n * @author Chris Ferdinandi\r\n * @license MIT\r\n */\r\n(function (elem) {\r\n\tfor (var i = 0; i < elem.length; i++) {\r\n\t\tif (!window[elem[i]] || 'remove' in window[elem[i]].prototype) continue;\r\n\t\twindow[elem[i]].prototype.remove = function () {\r\n\t\t\tthis.parentNode.removeChild(this);\r\n\t\t};\r\n\t}\r\n})(['Element', 'CharacterData', 'DocumentType']);\r\n\r\n\r\n//\r\n// requestAnimationFrame polyfill by Erik Möller.\r\n// With fixes from Paul Irish and Tino Zijdel\r\n//\r\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\r\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\r\n//\r\n// MIT license\r\n//\r\n(function() {\r\n var lastTime = 0;\r\n var vendors = ['webkit', 'moz'];\r\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\r\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\r\n window.cancelAnimationFrame =\r\n window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\r\n }\r\n\r\n if (!window.requestAnimationFrame)\r\n window.requestAnimationFrame = function(callback) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = window.setTimeout(function() {\r\n callback(currTime + timeToCall);\r\n }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n\r\n if (!window.cancelAnimationFrame)\r\n window.cancelAnimationFrame = function(id) {\r\n clearTimeout(id);\r\n };\r\n}());\r\n\r\n// Source: https://github.com/jserz/js_piece/blob/master/DOM/ParentNode/prepend()/prepend().md\r\n(function(arr) {\r\n arr.forEach(function(item) {\r\n if (item.hasOwnProperty('prepend')) {\r\n return;\r\n }\r\n Object.defineProperty(item, 'prepend', {\r\n configurable: true,\r\n enumerable: true,\r\n writable: true,\r\n value: function prepend() {\r\n var argArr = Array.prototype.slice.call(arguments),\r\n docFrag = document.createDocumentFragment();\r\n\r\n argArr.forEach(function(argItem) {\r\n var isNode = argItem instanceof Node;\r\n docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));\r\n });\r\n\r\n this.insertBefore(docFrag, this.firstChild);\r\n }\r\n });\r\n });\r\n})([Element.prototype, Document.prototype, DocumentFragment.prototype]);\r\n\r\n// getAttributeNames\r\nif (Element.prototype.getAttributeNames == undefined) {\r\n Element.prototype.getAttributeNames = function () {\r\n var attributes = this.attributes;\r\n var length = attributes.length;\r\n var result = new Array(length);\r\n for (var i = 0; i < length; i++) {\r\n result[i] = attributes[i].name;\r\n }\r\n return result;\r\n };\r\n}\r\n\r\n// Global variables\r\nwindow.KTUtilElementDataStore = {};\r\nwindow.KTUtilElementDataStoreID = 0;\r\nwindow.KTUtilDelegatedEventHandlers = {};\r\n\r\nexport var KTUtil = function() {\r\n var resizeHandlers = [];\r\n\r\n /** @type {object} breakpoints The device width breakpoints **/\r\n var breakpoints = {\r\n sm: 544, // Small screen / phone\r\n md: 768, // Medium screen / tablet\r\n lg: 992, // Large screen / desktop\r\n xl: 1200 // Extra large screen / wide desktop\r\n };\r\n\r\n /**\r\n * Handle window resize event with some\r\n * delay to attach event handlers upon resize complete\r\n */\r\n var _windowResizeHandler = function() {\r\n var _runResizeHandlers = function() {\r\n // reinitialize other subscribed elements\r\n for (var i = 0; i < resizeHandlers.length; i++) {\r\n var each = resizeHandlers[i];\r\n each.call();\r\n }\r\n };\r\n\r\n var timer;\r\n\r\n window.addEventListener('resize', function() {\r\n KTUtil.throttle(timer, function() {\r\n _runResizeHandlers();\r\n }, 200);\r\n });\r\n };\r\n\r\n return {\r\n /**\r\n * Class main initializer.\r\n * @param {object} settings.\r\n * @returns null\r\n */\r\n //main function to initiate the theme\r\n init: function(settings) {\r\n if (settings && settings.breakpoints) {\r\n breakpoints = settings.breakpoints;\r\n }\r\n\r\n _windowResizeHandler();\r\n },\r\n\r\n /**\r\n * Adds window resize event handler.\r\n * @param {function} callback function.\r\n */\r\n addResizeHandler: function(callback) {\r\n resizeHandlers.push(callback);\r\n },\r\n\r\n /**\r\n * Removes window resize event handler.\r\n * @param {function} callback function.\r\n */\r\n removeResizeHandler: function(callback) {\r\n for (var i = 0; i < resizeHandlers.length; i++) {\r\n if (callback === resizeHandlers[i]) {\r\n delete resizeHandlers[i];\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Trigger window resize handlers.\r\n */\r\n runResizeHandlers: function() {\r\n _runResizeHandlers();\r\n },\r\n\r\n resize: function() {\r\n if (typeof(Event) === 'function') {\r\n // modern browsers\r\n window.dispatchEvent(new Event('resize'));\r\n } else {\r\n // for IE and other old browsers\r\n // causes deprecation warning on modern browsers\r\n var evt = window.document.createEvent('UIEvents');\r\n evt.initUIEvent('resize', true, false, window, 0);\r\n window.dispatchEvent(evt);\r\n }\r\n },\r\n\r\n /**\r\n * Get GET parameter value from URL.\r\n * @param {string} paramName Parameter name.\r\n * @returns {string}\r\n */\r\n getURLParam: function(paramName) {\r\n var searchString = window.location.search.substring(1),\r\n i, val, params = searchString.split(\"&\");\r\n\r\n for (i = 0; i < params.length; i++) {\r\n val = params[i].split(\"=\");\r\n if (val[0] == paramName) {\r\n return unescape(val[1]);\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n\r\n /**\r\n * Checks whether current device is mobile touch.\r\n * @returns {boolean}\r\n */\r\n isMobileDevice: function() {\r\n var test = (this.getViewPort().width < this.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\n /**\r\n * Checks whether current device is desktop.\r\n * @returns {boolean}\r\n */\r\n isDesktopDevice: function() {\r\n return KTUtil.isMobileDevice() ? false : true;\r\n },\r\n\r\n /**\r\n * Gets browser window viewport size. Ref:\r\n * http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/\r\n * @returns {object}\r\n */\r\n getViewPort: function() {\r\n var e = window,\r\n a = 'inner';\r\n if (!('innerWidth' in window)) {\r\n a = 'client';\r\n e = document.documentElement || document.body;\r\n }\r\n\r\n return {\r\n width: e[a + 'Width'],\r\n height: e[a + 'Height']\r\n };\r\n },\r\n\r\n /**\r\n * Checks whether given device mode is currently activated.\r\n * @param {string} mode Responsive mode name(e.g: desktop,\r\n * desktop-and-tablet, tablet, tablet-and-mobile, mobile)\r\n * @returns {boolean}\r\n */\r\n isInResponsiveRange: function(mode) {\r\n var breakpoint = this.getViewPort().width;\r\n\r\n if (mode == 'general') {\r\n return true;\r\n } else if (mode == 'desktop' && breakpoint >= (this.getBreakpoint('lg') + 1)) {\r\n return true;\r\n } else if (mode == 'tablet' && (breakpoint >= (this.getBreakpoint('md') + 1) && breakpoint < this.getBreakpoint('lg'))) {\r\n return true;\r\n } else if (mode == 'mobile' && breakpoint <= this.getBreakpoint('md')) {\r\n return true;\r\n } else if (mode == 'desktop-and-tablet' && breakpoint >= (this.getBreakpoint('md') + 1)) {\r\n return true;\r\n } else if (mode == 'tablet-and-mobile' && breakpoint <= this.getBreakpoint('lg')) {\r\n return true;\r\n } else if (mode == 'minimal-desktop-and-below' && breakpoint <= this.getBreakpoint('xl')) {\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n\t\t/**\r\n * Checks whether given device mode is currently activated.\r\n * @param {string} mode Responsive mode name(e.g: desktop,\r\n * desktop-and-tablet, tablet, tablet-and-mobile, mobile)\r\n * @returns {boolean}\r\n */\r\n isBreakpointUp: function(mode) {\r\n var width = this.getViewPort().width;\r\n\t\t\tvar breakpoint = this.getBreakpoint(mode);\r\n\r\n\t\t\treturn (width >= breakpoint);\r\n },\r\n\r\n\t\tisBreakpointDown: function(mode) {\r\n var width = this.getViewPort().width;\r\n\t\t\tvar breakpoint = this.getBreakpoint(mode);\r\n\r\n\t\t\treturn (width < breakpoint);\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\n getUniqueID: function(prefix) {\r\n return prefix + Math.floor(Math.random() * (new Date()).getTime());\r\n },\r\n\r\n /**\r\n * Gets window width for give breakpoint mode.\r\n * @param {string} mode Responsive mode name(e.g: xl, lg, md, sm)\r\n * @returns {number}\r\n */\r\n getBreakpoint: function(mode) {\r\n return breakpoints[mode];\r\n },\r\n\r\n /**\r\n * Checks whether object has property matchs given key path.\r\n * @param {object} obj Object contains values paired with given key path\r\n * @param {string} keys Keys path seperated with dots\r\n * @returns {object}\r\n */\r\n isset: function(obj, keys) {\r\n var stone;\r\n\r\n keys = keys || '';\r\n\r\n if (keys.indexOf('[') !== -1) {\r\n throw new Error('Unsupported object path notation.');\r\n }\r\n\r\n keys = keys.split('.');\r\n\r\n do {\r\n if (obj === undefined) {\r\n return false;\r\n }\r\n\r\n stone = keys.shift();\r\n\r\n if (!obj.hasOwnProperty(stone)) {\r\n return false;\r\n }\r\n\r\n obj = obj[stone];\r\n\r\n } while (keys.length);\r\n\r\n return true;\r\n },\r\n\r\n /**\r\n * Gets highest z-index of the given element parents\r\n * @param {object} el jQuery element object\r\n * @returns {number}\r\n */\r\n getHighestZindex: function(el) {\r\n var position, value;\r\n\r\n while (el && el !== 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 position = KTUtil.css(el, 'position');\r\n\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 // <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\r\n value = parseInt(KTUtil.css(el, 'z-index'));\r\n\r\n if (!isNaN(value) && value !== 0) {\r\n return value;\r\n }\r\n }\r\n\r\n el = el.parentNode;\r\n }\r\n\r\n return null;\r\n },\r\n\r\n /**\r\n * Checks whether the element has any parent with fixed positionfreg\r\n * @param {object} el jQuery element object\r\n * @returns {boolean}\r\n */\r\n hasFixedPositionedParent: function(el) {\r\n var position;\r\n\r\n while (el && el !== document) {\r\n position = KTUtil.css(el, 'position');\r\n\r\n if (position === \"fixed\") {\r\n return true;\r\n }\r\n\r\n el = el.parentNode;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n /**\r\n * Simulates delay\r\n */\r\n sleep: function(milliseconds) {\r\n var start = new Date().getTime();\r\n for (var i = 0; i < 1e7; i++) {\r\n if ((new Date().getTime() - start) > milliseconds) {\r\n break;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Gets randomly generated integer value within given min and max range\r\n * @param {number} min Range start value\r\n * @param {number} max Range end value\r\n * @returns {number}\r\n */\r\n getRandomInt: function(min, max) {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n },\r\n\r\n /**\r\n * Checks whether Angular library is included\r\n * @returns {boolean}\r\n */\r\n isAngularVersion: function() {\r\n return window.Zone !== undefined ? true : false;\r\n },\r\n\r\n // Deep extend: $.extend(true, {}, objA, objB);\r\n deepExtend: function(out) {\r\n out = out || {};\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n var obj = arguments[i];\r\n if (!obj) continue;\r\n\r\n for (var key in obj) {\r\n if (!obj.hasOwnProperty(key)) {\r\n continue;\r\n }\r\n\r\n // based on https://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/\r\n if ( Object.prototype.toString.call(obj[key]) === '[object Object]' ) {\r\n out[key] = KTUtil.deepExtend(out[key], obj[key]);\r\n continue;\r\n }\r\n\r\n out[key] = obj[key];\r\n }\r\n }\r\n\r\n return out;\r\n },\r\n\r\n // extend: $.extend({}, objA, objB);\r\n extend: function(out) {\r\n out = out || {};\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n if (!arguments[i])\r\n continue;\r\n\r\n for (var key in arguments[i]) {\r\n if (arguments[i].hasOwnProperty(key))\r\n out[key] = arguments[i][key];\r\n }\r\n }\r\n\r\n return out;\r\n },\r\n\r\n getById: function(el) {\r\n if (typeof el === 'string') {\r\n return document.getElementById(el);\r\n } else {\r\n return el;\r\n }\r\n },\r\n\r\n getByTag: function(query) {\r\n return document.getElementsByTagName(query);\r\n },\r\n\r\n getByTagName: function(query) {\r\n return document.getElementsByTagName(query);\r\n },\r\n\r\n getByClass: function(query) {\r\n return document.getElementsByClassName(query);\r\n },\r\n\r\n getBody: function() {\r\n return document.getElementsByTagName('body')[0];\r\n },\r\n\r\n /**\r\n * Checks whether the element has given classes\r\n * @param {object} el jQuery element object\r\n * @param {string} Classes string\r\n * @returns {boolean}\r\n */\r\n hasClasses: function(el, classes) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n var classesArr = classes.split(\" \");\r\n\r\n for (var i = 0; i < classesArr.length; i++) {\r\n if (KTUtil.hasClass(el, KTUtil.trim(classesArr[i])) == false) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n\r\n hasClass: function(el, className) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n return el.classList ? el.classList.contains(className) : new RegExp('\\\\b' + className + '\\\\b').test(el.className);\r\n },\r\n\r\n addClass: function(el, className) {\r\n if (!el || typeof className === 'undefined') {\r\n return;\r\n }\r\n\r\n var classNames = className.split(' ');\r\n\r\n if (el.classList) {\r\n for (var i = 0; i < classNames.length; i++) {\r\n if (classNames[i] && classNames[i].length > 0) {\r\n el.classList.add(KTUtil.trim(classNames[i]));\r\n }\r\n }\r\n } else if (!KTUtil.hasClass(el, className)) {\r\n for (var x = 0; x < classNames.length; x++) {\r\n el.className += ' ' + KTUtil.trim(classNames[x]);\r\n }\r\n }\r\n },\r\n\r\n removeClass: function(el, className) {\r\n if (!el || typeof className === 'undefined') {\r\n return;\r\n }\r\n\r\n var classNames = className.split(' ');\r\n\r\n if (el.classList) {\r\n for (var i = 0; i < classNames.length; i++) {\r\n el.classList.remove(KTUtil.trim(classNames[i]));\r\n }\r\n } else if (KTUtil.hasClass(el, className)) {\r\n for (var x = 0; x < classNames.length; x++) {\r\n el.className = el.className.replace(new RegExp('\\\\b' + KTUtil.trim(classNames[x]) + '\\\\b', 'g'), '');\r\n }\r\n }\r\n },\r\n\r\n triggerCustomEvent: function(el, eventName, data) {\r\n var event;\r\n if (window.CustomEvent) {\r\n event = new CustomEvent(eventName, {\r\n detail: data\r\n });\r\n } else {\r\n event = document.createEvent('CustomEvent');\r\n event.initCustomEvent(eventName, true, true, data);\r\n }\r\n\r\n el.dispatchEvent(event);\r\n },\r\n\r\n triggerEvent: function(node, eventName) {\r\n // Make sure we use the ownerDocument from the provided node to avoid cross-window problems\r\n var doc;\r\n if (node.ownerDocument) {\r\n doc = node.ownerDocument;\r\n } else if (node.nodeType == 9) {\r\n // the node may be the document itself, nodeType 9 = DOCUMENT_NODE\r\n doc = node;\r\n } else {\r\n throw new Error(\"Invalid node passed to fireEvent: \" + node.id);\r\n }\r\n\r\n if (node.dispatchEvent) {\r\n // Gecko-style approach (now the standard) takes more work\r\n var eventClass = \"\";\r\n\r\n // Different events have different event classes.\r\n // If this switch statement can't map an eventName to an eventClass,\r\n // the event firing is going to fail.\r\n switch (eventName) {\r\n case \"click\": // Dispatching of 'click' appears to not work correctly in Safari. Use 'mousedown' or 'mouseup' instead.\r\n case \"mouseenter\":\r\n case \"mouseleave\":\r\n case \"mousedown\":\r\n case \"mouseup\":\r\n eventClass = \"MouseEvents\";\r\n break;\r\n\r\n case \"focus\":\r\n case \"change\":\r\n case \"blur\":\r\n case \"select\":\r\n eventClass = \"HTMLEvents\";\r\n break;\r\n\r\n default:\r\n throw \"fireEvent: Couldn't find an event class for event '\" + eventName + \"'.\";\r\n break;\r\n }\r\n var event = doc.createEvent(eventClass);\r\n\r\n var bubbles = eventName == \"change\" ? false : true;\r\n event.initEvent(eventName, bubbles, true); // All events created as bubbling and cancelable.\r\n\r\n event.synthetic = true; // allow detection of synthetic events\r\n // The second parameter says go ahead with the default action\r\n node.dispatchEvent(event, true);\r\n } else if (node.fireEvent) {\r\n // IE-old school style\r\n var event = doc.createEventObject();\r\n event.synthetic = true; // allow detection of synthetic events\r\n node.fireEvent(\"on\" + eventName, event);\r\n }\r\n },\r\n\r\n index: function( el ){\r\n var c = el.parentNode.children, i = 0;\r\n for(; i < c.length; i++ )\r\n if( c[i] == el ) return i;\r\n },\r\n\r\n trim: function(string) {\r\n return string.trim();\r\n },\r\n\r\n eventTriggered: function(e) {\r\n if (e.currentTarget.dataset.triggered) {\r\n return true;\r\n } else {\r\n e.currentTarget.dataset.triggered = true;\r\n\r\n return false;\r\n }\r\n },\r\n\r\n remove: function(el) {\r\n if (el && el.parentNode) {\r\n el.parentNode.removeChild(el);\r\n }\r\n },\r\n\r\n find: function(parent, query) {\r\n parent = KTUtil.getById(parent);\r\n if (parent) {\r\n return parent.querySelector(query);\r\n }\r\n },\r\n\r\n findAll: function(parent, query) {\r\n parent = KTUtil.getById(parent);\r\n if (parent) {\r\n return parent.querySelectorAll(query);\r\n }\r\n },\r\n\r\n insertAfter: function(el, referenceNode) {\r\n return referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling);\r\n },\r\n\r\n parents: function(elem, selector) {\r\n // Element.matches() polyfill\r\n if (!Element.prototype.matches) {\r\n Element.prototype.matches =\r\n Element.prototype.matchesSelector ||\r\n Element.prototype.mozMatchesSelector ||\r\n Element.prototype.msMatchesSelector ||\r\n Element.prototype.oMatchesSelector ||\r\n Element.prototype.webkitMatchesSelector ||\r\n function(s) {\r\n var matches = (this.document || this.ownerDocument).querySelectorAll(s),\r\n 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 var parents = [];\r\n\r\n // Push each parent element to the array\r\n for ( ; elem && elem !== document; elem = elem.parentNode ) {\r\n if (selector) {\r\n if (elem.matches(selector)) {\r\n parents.push(elem);\r\n }\r\n continue;\r\n }\r\n parents.push(elem);\r\n }\r\n\r\n // Return our parent array\r\n return parents;\r\n },\r\n\r\n children: function(el, selector, log) {\r\n if (!el || !el.childNodes) {\r\n return;\r\n }\r\n\r\n var result = [],\r\n i = 0,\r\n l = el.childNodes.length;\r\n\r\n for (var i; i < l; ++i) {\r\n if (el.childNodes[i].nodeType == 1 && KTUtil.matches(el.childNodes[i], selector, log)) {\r\n result.push(el.childNodes[i]);\r\n }\r\n }\r\n\r\n return result;\r\n },\r\n\r\n child: function(el, selector, log) {\r\n var children = KTUtil.children(el, selector, log);\r\n\r\n return children ? children[0] : null;\r\n },\r\n\r\n matches: function(el, selector, log) {\r\n var p = Element.prototype;\r\n var f = p.matches || p.webkitMatchesSelector || p.mozMatchesSelector || p.msMatchesSelector || function(s) {\r\n return [].indexOf.call(document.querySelectorAll(s), this) !== -1;\r\n };\r\n\r\n if (el && el.tagName) {\r\n return f.call(el, selector);\r\n } else {\r\n return false;\r\n }\r\n },\r\n\r\n data: function(el) {\r\n return {\r\n set: function(name, data) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n if (el.customDataTag === undefined) {\r\n window.KTUtilElementDataStoreID++;\r\n el.customDataTag = window.KTUtilElementDataStoreID;\r\n }\r\n\r\n if (window.KTUtilElementDataStore[el.customDataTag] === undefined) {\r\n window.KTUtilElementDataStore[el.customDataTag] = {};\r\n }\r\n\r\n window.KTUtilElementDataStore[el.customDataTag][name] = data;\r\n },\r\n\r\n get: function(name) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n if (el.customDataTag === undefined) {\r\n return null;\r\n }\r\n\r\n return this.has(name) ? window.KTUtilElementDataStore[el.customDataTag][name] : null;\r\n },\r\n\r\n has: function(name) {\r\n if (!el) {\r\n return false;\r\n }\r\n\r\n if (el.customDataTag === undefined) {\r\n return false;\r\n }\r\n\r\n return (window.KTUtilElementDataStore[el.customDataTag] && window.KTUtilElementDataStore[el.customDataTag][name]) ? true : false;\r\n },\r\n\r\n remove: function(name) {\r\n if (el && this.has(name)) {\r\n delete window.KTUtilElementDataStore[el.customDataTag][name];\r\n }\r\n }\r\n };\r\n },\r\n\r\n outerWidth: function(el, margin) {\r\n var width;\r\n\r\n if (margin === true) {\r\n width = parseFloat(el.offsetWidth);\r\n width += parseFloat(KTUtil.css(el, 'margin-left')) + parseFloat(KTUtil.css(el, 'margin-right'));\r\n\r\n return parseFloat(width);\r\n } else {\r\n width = parseFloat(el.offsetWidth);\r\n\r\n return width;\r\n }\r\n },\r\n\r\n offset: function(el) {\r\n var rect, win;\r\n\r\n if ( !el ) {\r\n return;\r\n }\r\n\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\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 rect = el.getBoundingClientRect();\r\n win = el.ownerDocument.defaultView;\r\n\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 height: function(el) {\r\n return KTUtil.css(el, 'height');\r\n },\r\n\r\n outerHeight: function(el, withMargin) {\r\n var height = el.offsetHeight;\r\n var style;\r\n\r\n if (typeof withMargin !== 'undefined' && withMargin === true) {\r\n style = getComputedStyle(el);\r\n height += parseInt(style.marginTop) + parseInt(style.marginBottom);\r\n\r\n return height;\r\n } else {\r\n return height;\r\n }\r\n },\r\n\r\n visible: function(el) {\r\n return !(el.offsetWidth === 0 && el.offsetHeight === 0);\r\n },\r\n\r\n attr: function(el, name, value) {\r\n if (el == undefined) {\r\n return;\r\n }\r\n\r\n if (value !== undefined) {\r\n el.setAttribute(name, value);\r\n } else {\r\n return el.getAttribute(name);\r\n }\r\n },\r\n\r\n hasAttr: function(el, name) {\r\n if (el == undefined) {\r\n return;\r\n }\r\n\r\n return el.getAttribute(name) ? true : false;\r\n },\r\n\r\n removeAttr: function(el, name) {\r\n if (el == undefined) {\r\n return;\r\n }\r\n\r\n el.removeAttribute(name);\r\n },\r\n\r\n animate: function(from, to, duration, update, easing, done) {\r\n /**\r\n * TinyAnimate.easings\r\n * Adapted from jQuery Easing\r\n */\r\n var easings = {};\r\n var easing;\r\n\r\n easings.linear = function(t, b, c, d) {\r\n return c * t / d + b;\r\n };\r\n\r\n easing = easings.linear;\r\n\r\n // Early bail out if called incorrectly\r\n if (typeof from !== 'number' ||\r\n typeof to !== 'number' ||\r\n typeof duration !== 'number' ||\r\n typeof update !== 'function') {\r\n return;\r\n }\r\n\r\n // Create mock done() function if necessary\r\n if (typeof done !== 'function') {\r\n done = function() {};\r\n }\r\n\r\n // Pick implementation (requestAnimationFrame | setTimeout)\r\n var rAF = window.requestAnimationFrame || function(callback) {\r\n window.setTimeout(callback, 1000 / 50);\r\n };\r\n\r\n // Animation loop\r\n var canceled = false;\r\n var change = to - from;\r\n\r\n function loop(timestamp) {\r\n var time = (timestamp || +new Date()) - start;\r\n\r\n if (time >= 0) {\r\n update(easing(time, from, change, duration));\r\n }\r\n if (time >= 0 && time >= duration) {\r\n update(to);\r\n done();\r\n } else {\r\n rAF(loop);\r\n }\r\n }\r\n\r\n update(from);\r\n\r\n // Start animation loop\r\n var start = window.performance && window.performance.now ? window.performance.now() : +new Date();\r\n\r\n rAF(loop);\r\n },\r\n\r\n actualCss: function(el, prop, cache) {\r\n var css = '';\r\n\r\n if (el instanceof HTMLElement === false) {\r\n return;\r\n }\r\n\r\n if (!el.getAttribute('kt-hidden-' + prop) || cache === false) {\r\n var 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 el.setAttribute('kt-hidden-' + prop, value);\r\n\r\n return parseFloat(value);\r\n } else {\r\n // store it in cache\r\n return parseFloat(el.getAttribute('kt-hidden-' + prop));\r\n }\r\n },\r\n\r\n actualHeight: function(el, cache) {\r\n return KTUtil.actualCss(el, 'height', cache);\r\n },\r\n\r\n actualWidth: function(el, cache) {\r\n return KTUtil.actualCss(el, 'width', cache);\r\n },\r\n\r\n getScroll: function(element, method) {\r\n // The passed in `method` value should be 'Top' or 'Left'\r\n method = 'scroll' + method;\r\n return (element == window || element == document) ? (\r\n self[(method == 'scrollTop') ? 'pageYOffset' : 'pageXOffset'] ||\r\n (browserSupportsBoxModel && document.documentElement[method]) ||\r\n document.body[method]\r\n ) : element[method];\r\n },\r\n\r\n css: function(el, styleProp, value) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n if (value !== undefined) {\r\n el.style[styleProp] = value;\r\n } else {\r\n var defaultView = (el.ownerDocument || document).defaultView;\r\n // W3C standard way:\r\n if (defaultView && defaultView.getComputedStyle) {\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 return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);\r\n } else if (el.currentStyle) { // IE\r\n // sanitize property name to camelCase\r\n styleProp = styleProp.replace(/\\-(\\w)/g, function(str, letter) {\r\n return letter.toUpperCase();\r\n });\r\n value = el.currentStyle[styleProp];\r\n // convert other units to pixels on IE\r\n if (/^\\d+(em|pt|%|ex)?$/i.test(value)) {\r\n return (function(value) {\r\n var oldLeft = el.style.left,\r\n oldRsLeft = el.runtimeStyle.left;\r\n el.runtimeStyle.left = el.currentStyle.left;\r\n el.style.left = value || 0;\r\n value = el.style.pixelLeft + \"px\";\r\n el.style.left = oldLeft;\r\n el.runtimeStyle.left = oldRsLeft;\r\n return value;\r\n })(value);\r\n }\r\n return value;\r\n }\r\n }\r\n },\r\n\r\n slide: function(el, dir, speed, callback, recalcMaxHeight) {\r\n if (!el || (dir == 'up' && KTUtil.visible(el) === false) || (dir == 'down' && KTUtil.visible(el) === true)) {\r\n return;\r\n }\r\n\r\n speed = (speed ? speed : 600);\r\n var calcHeight = KTUtil.actualHeight(el);\r\n var calcPaddingTop = false;\r\n var calcPaddingBottom = false;\r\n\r\n if (KTUtil.css(el, 'padding-top') && KTUtil.data(el).has('slide-padding-top') !== true) {\r\n KTUtil.data(el).set('slide-padding-top', KTUtil.css(el, 'padding-top'));\r\n }\r\n\r\n if (KTUtil.css(el, 'padding-bottom') && KTUtil.data(el).has('slide-padding-bottom') !== true) {\r\n KTUtil.data(el).set('slide-padding-bottom', KTUtil.css(el, 'padding-bottom'));\r\n }\r\n\r\n if (KTUtil.data(el).has('slide-padding-top')) {\r\n calcPaddingTop = parseInt(KTUtil.data(el).get('slide-padding-top'));\r\n }\r\n\r\n if (KTUtil.data(el).has('slide-padding-bottom')) {\r\n calcPaddingBottom = parseInt(KTUtil.data(el).get('slide-padding-bottom'));\r\n }\r\n\r\n if (dir == 'up') { // up\r\n el.style.cssText = 'display: block; overflow: hidden;';\r\n\r\n if (calcPaddingTop) {\r\n KTUtil.animate(0, calcPaddingTop, speed, function(value) {\r\n el.style.paddingTop = (calcPaddingTop - value) + 'px';\r\n }, 'linear');\r\n }\r\n\r\n if (calcPaddingBottom) {\r\n KTUtil.animate(0, calcPaddingBottom, speed, function(value) {\r\n el.style.paddingBottom = (calcPaddingBottom - value) + 'px';\r\n }, 'linear');\r\n }\r\n\r\n KTUtil.animate(0, calcHeight, speed, function(value) {\r\n el.style.height = (calcHeight - value) + 'px';\r\n }, 'linear', 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\r\n } else if (dir == 'down') { // down\r\n el.style.cssText = 'display: block; overflow: hidden;';\r\n\r\n if (calcPaddingTop) {\r\n KTUtil.animate(0, calcPaddingTop, speed, function(value) {//\r\n el.style.paddingTop = value + 'px';\r\n }, 'linear', function() {\r\n el.style.paddingTop = '';\r\n });\r\n }\r\n\r\n if (calcPaddingBottom) {\r\n KTUtil.animate(0, calcPaddingBottom, speed, function(value) {\r\n el.style.paddingBottom = value + 'px';\r\n }, 'linear', function() {\r\n el.style.paddingBottom = '';\r\n });\r\n }\r\n\r\n KTUtil.animate(0, calcHeight, speed, function(value) {\r\n el.style.height = value + 'px';\r\n }, 'linear', 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 slideUp: function(el, speed, callback) {\r\n KTUtil.slide(el, 'up', speed, callback);\r\n },\r\n\r\n slideDown: function(el, speed, callback) {\r\n KTUtil.slide(el, 'down', speed, callback);\r\n },\r\n\r\n show: function(el, display) {\r\n if (typeof el !== 'undefined') {\r\n el.style.display = (display ? display : 'block');\r\n }\r\n },\r\n\r\n hide: function(el) {\r\n if (typeof el !== 'undefined') {\r\n el.style.display = 'none';\r\n }\r\n },\r\n\r\n addEvent: function(el, type, handler, one) {\r\n if (typeof el !== 'undefined' && el !== null) {\r\n el.addEventListener(type, handler);\r\n }\r\n },\r\n\r\n removeEvent: function(el, type, handler) {\r\n if (el !== null) {\r\n el.removeEventListener(type, handler);\r\n }\r\n },\r\n\r\n on: function(element, selector, event, handler) {\r\n if (!selector) {\r\n return;\r\n }\r\n\r\n var eventId = KTUtil.getUniqueID('event');\r\n\r\n window.KTUtilDelegatedEventHandlers[eventId] = function(e) {\r\n var targets = element.querySelectorAll(selector);\r\n var target = e.target;\r\n\r\n while (target && target !== element) {\r\n for (var i = 0, j = targets.length; i < j; i++) {\r\n if (target === targets[i]) {\r\n handler.call(target, e);\r\n }\r\n }\r\n\r\n target = target.parentNode;\r\n }\r\n }\r\n\r\n KTUtil.addEvent(element, event, window.KTUtilDelegatedEventHandlers[eventId]);\r\n\r\n return eventId;\r\n },\r\n\r\n off: function(element, event, eventId) {\r\n if (!element || !window.KTUtilDelegatedEventHandlers[eventId]) {\r\n return;\r\n }\r\n\r\n KTUtil.removeEvent(element, event, window.KTUtilDelegatedEventHandlers[eventId]);\r\n\r\n delete window.KTUtilDelegatedEventHandlers[eventId];\r\n },\r\n\r\n one: function onetime(el, type, callback) {\r\n el.addEventListener(type, function callee(e) {\r\n // remove event\r\n if (e.target && e.target.removeEventListener) {\r\n e.target.removeEventListener(e.type, callee);\r\n }\r\n\r\n // need to verify from https://themeforest.net/author_dashboard#comment_23615588\r\n if (el && el.removeEventListener) {\r\n\t\t\t\t e.currentTarget.removeEventListener(e.type, callee);\r\n\t\t\t }\r\n\r\n // call handler\r\n return callback(e);\r\n });\r\n },\r\n\r\n hash: function(str) {\r\n var hash = 0,\r\n i, chr;\r\n\r\n if (str.length === 0) return hash;\r\n for (i = 0; i < str.length; i++) {\r\n chr = str.charCodeAt(i);\r\n hash = ((hash << 5) - hash) + chr;\r\n hash |= 0; // Convert to 32bit integer\r\n }\r\n\r\n return hash;\r\n },\r\n\r\n animateClass: function(el, animationName, callback) {\r\n var animation;\r\n var animations = {\r\n animation: 'animationend',\r\n OAnimation: 'oAnimationEnd',\r\n MozAnimation: 'mozAnimationEnd',\r\n WebkitAnimation: 'webkitAnimationEnd',\r\n msAnimation: 'msAnimationEnd',\r\n };\r\n\r\n for (var t in animations) {\r\n if (el.style[t] !== undefined) {\r\n animation = animations[t];\r\n }\r\n }\r\n\r\n KTUtil.addClass(el, 'animated ' + animationName);\r\n\r\n KTUtil.one(el, animation, function() {\r\n KTUtil.removeClass(el, 'animated ' + animationName);\r\n });\r\n\r\n if (callback) {\r\n KTUtil.one(el, animation, callback);\r\n }\r\n },\r\n\r\n transitionEnd: function(el, callback) {\r\n var transition;\r\n var transitions = {\r\n transition: 'transitionend',\r\n OTransition: 'oTransitionEnd',\r\n MozTransition: 'mozTransitionEnd',\r\n WebkitTransition: 'webkitTransitionEnd',\r\n msTransition: 'msTransitionEnd'\r\n };\r\n\r\n for (var t in transitions) {\r\n if (el.style[t] !== undefined) {\r\n transition = transitions[t];\r\n }\r\n }\r\n\r\n KTUtil.one(el, transition, callback);\r\n },\r\n\r\n animationEnd: function(el, callback) {\r\n var animation;\r\n var animations = {\r\n animation: 'animationend',\r\n OAnimation: 'oAnimationEnd',\r\n MozAnimation: 'mozAnimationEnd',\r\n WebkitAnimation: 'webkitAnimationEnd',\r\n msAnimation: 'msAnimationEnd'\r\n };\r\n\r\n for (var t in animations) {\r\n if (el.style[t] !== undefined) {\r\n animation = animations[t];\r\n }\r\n }\r\n\r\n KTUtil.one(el, animation, callback);\r\n },\r\n\r\n animateDelay: function(el, value) {\r\n var vendors = ['webkit-', 'moz-', 'ms-', 'o-', ''];\r\n for (var i = 0; i < vendors.length; i++) {\r\n KTUtil.css(el, vendors[i] + 'animation-delay', value);\r\n }\r\n },\r\n\r\n animateDuration: function(el, value) {\r\n var vendors = ['webkit-', 'moz-', 'ms-', 'o-', ''];\r\n for (var i = 0; i < vendors.length; i++) {\r\n KTUtil.css(el, vendors[i] + 'animation-duration', value);\r\n }\r\n },\r\n\r\n scrollTo: function(target, offset, duration) {\r\n var duration = duration ? duration : 500;\r\n var targetPos = target ? KTUtil.offset(target).top : 0;\r\n var scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\r\n var from, to;\r\n\r\n if (offset) {\r\n scrollPos += offset;\r\n }\r\n\r\n from = scrollPos;\r\n to = targetPos;\r\n\r\n KTUtil.animate(from, to, duration, function(value) {\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\r\n scrollTop: function(offset, duration) {\r\n KTUtil.scrollTo(null, offset, duration);\r\n },\r\n\r\n isArray: function(obj) {\r\n return obj && Array.isArray(obj);\r\n },\r\n\r\n ready: function(callback) {\r\n if (document.attachEvent ? document.readyState === \"complete\" : document.readyState !== \"loading\") {\r\n callback();\r\n } else {\r\n document.addEventListener('DOMContentLoaded', callback);\r\n }\r\n },\r\n\r\n isEmpty: function(obj) {\r\n for (var prop in obj) {\r\n if (obj.hasOwnProperty(prop)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n },\r\n\r\n numberString: function(nStr) {\r\n nStr += '';\r\n var x = nStr.split('.');\r\n var x1 = x[0];\r\n var x2 = x.length > 1 ? '.' + x[1] : '';\r\n var rgx = /(\\d+)(\\d{3})/;\r\n while (rgx.test(x1)) {\r\n x1 = x1.replace(rgx, '$1' + ',' + '$2');\r\n }\r\n return x1 + x2;\r\n },\r\n\r\n detectIE: function() {\r\n var ua = window.navigator.userAgent;\r\n\r\n // Test values; Uncomment to check result …\r\n\r\n // IE 10\r\n // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';\r\n\r\n // IE 11\r\n // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';\r\n\r\n // Edge 12 (Spartan)\r\n // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';\r\n\r\n // Edge 13\r\n // ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';\r\n\r\n var msie = ua.indexOf('MSIE ');\r\n if (msie > 0) {\r\n // IE 10 or older => return version number\r\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\r\n }\r\n\r\n var trident = ua.indexOf('Trident/');\r\n if (trident > 0) {\r\n // IE 11 => return version number\r\n var rv = ua.indexOf('rv:');\r\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\r\n }\r\n\r\n var edge = ua.indexOf('Edge/');\r\n if (edge > 0) {\r\n // Edge (IE 12+) => return version number\r\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\r\n }\r\n\r\n // other browser\r\n return false;\r\n },\r\n\r\n isRTL: function() {\r\n var html = KTUtil.getByTagName('html')[0];\r\n\r\n if (html) {\r\n return (KTUtil.attr(html, 'direction') == 'rtl');\r\n }\r\n },\r\n\r\n // Scroller\r\n scrollInit: function(element, options) {\r\n if (!element) {\r\n return;\r\n }\r\n\r\n // Learn more: https://github.com/mdbootstrap/perfect-scrollbar#options\r\n var pluginDefOptions = {\r\n wheelSpeed: 0.5,\r\n swipeEasing: true,\r\n wheelPropagation: false,\r\n minScrollbarLength: 40,\r\n maxScrollbarLength: 300,\r\n suppressScrollX: true\r\n };\r\n\r\n options = KTUtil.deepExtend({}, pluginDefOptions, options);\r\n\r\n // Define init function\r\n function init() {\r\n var ps;\r\n var height;\r\n\r\n // Get extra options via data attributes\r\n var attrs = element.getAttributeNames();\r\n if (attrs.length > 0) {\r\n attrs.forEach(function(attrName) {\r\n \t\t\t// more options; https://github.com/ganlanyuan/tiny-slider#options\r\n \t\t\tif ((/^data-.*/g).test(attrName)) {\r\n if (['scroll', 'height', 'mobile-height'].includes(optionName) == false) {\r\n var optionName = attrName.replace('data-', '').toLowerCase().replace(/(?:[\\s-])\\w/g, function(match) {\r\n \t\t\t\t\treturn match.replace('-', '').toUpperCase();\r\n \t\t\t\t});\r\n\r\n options[optionName] = KTUtil.filterBoolean(element.getAttribute(attrName));\r\n }\r\n \t\t\t}\r\n \t\t});\r\n }\r\n\r\n if (options.height instanceof Function) {\r\n height = options.height.call();\r\n } else {\r\n if (KTUtil.isMobileDevice() === true && options.mobileHeight) {\r\n height = parseInt(options.mobileHeight);\r\n } else if (options.height) {\r\n height = parseInt(options.height);\r\n } else {\r\n height = parseInt(KTUtil.css(element, 'height'));\r\n }\r\n }\r\n\r\n if (height === false) {\r\n KTUtil.scrollDestroy(element, true);\r\n\r\n return;\r\n }\r\n\r\n height = parseInt(height);\r\n\r\n // Destroy scroll on table and mobile modes\r\n if ((options.mobileNativeScroll || options.disableForMobile) && KTUtil.isMobileDevice() === true) {\r\n ps = KTUtil.data(element).get('ps');\r\n if (ps) {\r\n if (options.resetHeightOnDestroy) {\r\n KTUtil.css(element, 'height', 'auto');\r\n } else {\r\n KTUtil.css(element, 'overflow', 'auto');\r\n if (height > 0) {\r\n KTUtil.css(element, 'height', height + 'px');\r\n }\r\n }\r\n\r\n ps.destroy();\r\n ps = KTUtil.data(element).remove('ps');\r\n } else if (height > 0){\r\n KTUtil.css(element, 'overflow', 'auto');\r\n KTUtil.css(element, 'height', height + 'px');\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (height > 0) {\r\n KTUtil.css(element, 'height', height + 'px');\r\n }\r\n\r\n if (options.desktopNativeScroll) {\r\n KTUtil.css(element, 'overflow', 'auto');\r\n return;\r\n }\r\n\r\n // Pass options via HTML Attributes\r\n if (KTUtil.attr(element, 'data-window-scroll') == 'true') {\r\n options.windowScroll = true;\r\n }\r\n\r\n // Init scroll\r\n ps = KTUtil.data(element).get('ps');\r\n\r\n if (ps) {\r\n ps.update();\r\n } else {\r\n KTUtil.css(element, 'overflow', 'hidden');\r\n KTUtil.addClass(element, 'scroll');\r\n\r\n ps = new PerfectScrollbar(element, options);\r\n\r\n KTUtil.data(element).set('ps', ps);\r\n }\r\n\r\n // Remember scroll position in cookie\r\n var uid = KTUtil.attr(element, 'id');\r\n try {\r\n if (uid) {\r\n var cookie = KTCookie.getCookie(uid);\r\n if (options.rememberPosition === true && cookie) {\r\n var pos = parseInt(cookie);\r\n if (pos > 0) {\r\n element.scrollTop = pos;\r\n }\r\n element.addEventListener('ps-scroll-y', function() {\r\n KTCookie.setCookie(uid, element.scrollTop, {});\r\n });\r\n }\r\n }\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n\r\n // Todo:Consider using Localstorage\r\n if (options.rememberPosition === true && KTCookie && uid) {\r\n if (KTCookie.getCookie(uid)) {\r\n var pos = parseInt(KTCookie.getCookie(uid));\r\n\r\n if (pos > 0) {\r\n element.scrollTop = pos;\r\n }\r\n }\r\n\r\n element.addEventListener('ps-scroll-y', function() {\r\n KTCookie.setCookie(uid, element.scrollTop);\r\n });\r\n }\r\n }\r\n\r\n // Init\r\n init();\r\n\r\n // Handle window resize\r\n if (options.handleWindowResize) {\r\n KTUtil.addResizeHandler(function() {\r\n init();\r\n });\r\n }\r\n },\r\n\r\n scrollUpdate: function(element) {\r\n var ps = KTUtil.data(element).get('ps');\r\n if (ps) {\r\n ps.update();\r\n }\r\n },\r\n\r\n scrollUpdateAll: function(parent) {\r\n var scrollers = KTUtil.findAll(parent, '.ps');\r\n for (var i = 0, len = scrollers.length; i < len; i++) {\r\n KTUtil.scrollUpdate(scrollers[i]);\r\n }\r\n },\r\n\r\n scrollDestroy: function(element, resetAll) {\r\n var ps = KTUtil.data(element).get('ps');\r\n\r\n if (ps) {\r\n ps.destroy();\r\n ps = KTUtil.data(element).remove('ps');\r\n }\r\n\r\n if (element && resetAll) {\r\n element.style.setProperty('overflow', '');\r\n element.style.setProperty('height', '');\r\n }\r\n },\r\n\r\n filterBoolean: function(val) {\r\n // Convert string boolean\r\n\t\t\tif (val === true || val === 'true') {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (val === false || val === 'false') {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n return val;\r\n },\r\n\r\n setHTML: function(el, html) {\r\n el.innerHTML = html;\r\n },\r\n\r\n getHTML: function(el) {\r\n if (el) {\r\n return el.innerHTML;\r\n }\r\n },\r\n\r\n getDocumentHeight: function() {\r\n var body = document.body;\r\n var html = document.documentElement;\r\n\r\n return Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight );\r\n },\r\n\r\n getScrollTop: function() {\r\n return (document.scrollingElement || document.documentElement).scrollTop;\r\n },\r\n\r\n changeColor: function(col, amt) {\r\n\r\n var usePound = false;\r\n\r\n if (col[0] == \"#\") {\r\n col = col.slice(1);\r\n usePound = true;\r\n }\r\n\r\n var num = parseInt(col,16);\r\n\r\n var r = (num >> 16) + amt;\r\n\r\n if (r > 255) r = 255;\r\n else if (r < 0) r = 0;\r\n\r\n var b = ((num >> 8) & 0x00FF) + amt;\r\n\r\n if (b > 255) b = 255;\r\n else if (b < 0) b = 0;\r\n\r\n var g = (num & 0x0000FF) + amt;\r\n\r\n if (g > 255) g = 255;\r\n else if (g < 0) g = 0;\r\n\r\n return (usePound?\"#\":\"\") + (g | (b << 8) | (r << 16)).toString(16);\r\n\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\n throttle: function (timer, func, delay) {\r\n \t// If setTimeout is already scheduled, no need to do anything\r\n \tif (timer) {\r\n \t\treturn;\r\n \t}\r\n\r\n \t// Schedule a setTimeout after delay seconds\r\n \ttimer = setTimeout(function () {\r\n \t\tfunc();\r\n\r\n \t\t// Once setTimeout function execution is finished, timerId = undefined so that in <br>\r\n \t\t// the next scroll event function execution can be scheduled by the setTimeout\r\n \t\ttimer = undefined;\r\n \t}, delay);\r\n },\r\n\r\n // Debounce function: Input as function which needs to be debounced and delay is the debounced time in milliseconds\r\n debounce: function (timer, func, delay) {\r\n \t// Cancels the setTimeout method execution\r\n \tclearTimeout(timer)\r\n\r\n \t// Executes the func after delay time.\r\n \ttimer = setTimeout(func, delay);\r\n },\r\n\r\n btnWait: function(el, cls, message, disable) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n if (typeof disable !== 'undefined' && disable === true) {\r\n KTUtil.attr(el, \"disabled\", true);\r\n }\r\n\r\n if (cls) {\r\n KTUtil.addClass(el, cls);\r\n KTUtil.attr(el, \"wait-class\", cls);\r\n }\r\n\r\n if (message) {\r\n var caption = KTUtil.find(el, '.btn-caption');\r\n\r\n if (caption) {\r\n KTUtil.data(caption).set('caption', KTUtil.getHTML(caption));\r\n KTUtil.setHTML(caption, message);\r\n } else {\r\n KTUtil.data(el).set('caption', KTUtil.getHTML(el));\r\n KTUtil.setHTML(el, message);\r\n }\r\n }\r\n },\r\n\r\n btnRelease: function(el) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n /// Show loading state on button\r\n KTUtil.removeAttr(el, \"disabled\");\r\n\r\n if (KTUtil.hasAttr(el, \"wait-class\")) {\r\n KTUtil.removeClass(el, KTUtil.attr(el, \"wait-class\"));\r\n }\r\n\r\n var caption = KTUtil.find(el, '.btn-caption');\r\n\r\n if (caption && KTUtil.data(caption).has('caption')) {\r\n KTUtil.setHTML(caption, KTUtil.data(caption).get('caption'));\r\n } else if (KTUtil.data(el).has('caption')) {\r\n KTUtil.setHTML(el, KTUtil.data(el).get('caption'));\r\n }\r\n },\r\n\r\n isOffscreen: function(el, direction, offset) {\r\n offset = offset || 0;\r\n\r\n var windowWidth = KTUtil.getViewPort().width;\r\n var windowHeight = KTUtil.getViewPort().height;\r\n\r\n var top = KTUtil.offset(el).top;\r\n var height = KTUtil.outerHeight(el) + offset;\r\n var left = KTUtil.offset(el).left;\r\n var width = KTUtil.outerWidth(el) + offset;\r\n\r\n if (direction == 'bottom') {\r\n if (windowHeight < top + height) {\r\n return true;\r\n } else if (windowHeight > top + height * 1.5) {\r\n return true;\r\n }\r\n }\r\n\r\n if (direction == 'top') {\r\n if (top < 0) {\r\n return true;\r\n } else if (top > height) {\r\n return true;\r\n }\r\n }\r\n\r\n if (direction == 'left') {\r\n if (left < 0) {\r\n return true;\r\n } else if (left * 2 > width) {\r\n //console.log('left 2');\r\n //return true;\r\n }\r\n }\r\n\r\n if (direction == 'right') {\r\n if (windowWidth < left + width) {\r\n return true;\r\n } else {\r\n //console.log('right 2');\r\n //return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n }\r\n}();\r\n\r\n// webpack support\r\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\r\n // module.exports = KTUtil;\r\n}\r\n\r\n// Initialize KTUtil class on document ready\r\nKTUtil.ready(function() {\r\n\tif (typeof KTAppSettings !== 'undefined') {\r\n\t\tKTUtil.init(KTAppSettings);\r\n\t} else {\r\n\t\tKTUtil.init();\r\n\t}\r\n});\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-dropdown-menu1',\r\n templateUrl: './dropdown-menu1.component.html',\r\n})\r\nexport class DropdownMenu1Component implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<!--begin::Navigation-->\r\n<ul class=\"navi navi-hover\">\r\n <li class=\"navi-header font-weight-bold py-4\">\r\n <span class=\"font-size-lg\">Choose Label:</span>\r\n <i\r\n class=\"flaticon2-information icon-md text-muted\"\r\n data-toggle=\"tooltip\"\r\n data-placement=\"right\"\r\n title=\"Click to learn more...\"\r\n ></i>\r\n </li>\r\n <li class=\"navi-separator mb-3 opacity-70\"></li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-text\">\r\n <span class=\"label label-xl label-inline label-light-success\"\r\n >Customer</span\r\n >\r\n </span>\r\n </a>\r\n </li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-text\">\r\n <span class=\"label label-xl label-inline label-light-danger\"\r\n >Partner</span\r\n >\r\n </span>\r\n </a>\r\n </li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-text\">\r\n <span class=\"label label-xl label-inline label-light-warning\"\r\n >Suplier</span\r\n >\r\n </span>\r\n </a>\r\n </li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-text\">\r\n <span class=\"label label-xl label-inline label-light-primary\"\r\n >Member</span\r\n >\r\n </span>\r\n </a>\r\n </li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-text\">\r\n <span class=\"label label-xl label-inline label-light-dark\">Staff</span>\r\n </span>\r\n </a>\r\n </li>\r\n <li class=\"navi-separator mt-3 opacity-70\"></li>\r\n <li class=\"navi-footer py-4\">\r\n <a class=\"btn btn-clean font-weight-bold btn-sm cursor-pointer\">\r\n <i class=\"ki ki-plus icon-sm\"></i>\r\n Add new\r\n </a>\r\n </li>\r\n</ul>\r\n<!--end::Navigation-->\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-dropdown-menu2',\r\n templateUrl: './dropdown-menu2.component.html',\r\n})\r\nexport class DropdownMenu2Component implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<!--begin::Navigation-->\r\n<ul class=\"navi navi-hover\">\r\n <li class=\"navi-header pb-1\">\r\n <span class=\"text-primary text-uppercase font-weight-bold font-size-sm\"\r\n >Add new:</span\r\n >\r\n </li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-icon\"><i class=\"flaticon2-shopping-cart-1\"></i></span>\r\n <span class=\"navi-text\">Order</span>\r\n </a>\r\n </li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-icon\"><i class=\"flaticon2-calendar-8\"></i></span>\r\n <span class=\"navi-text\">Event</span>\r\n </a>\r\n </li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-icon\"><i class=\"flaticon2-graph-1\"></i></span>\r\n <span class=\"navi-text\">Report</span>\r\n </a>\r\n </li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-icon\"><i class=\"flaticon2-rocket-1\"></i></span>\r\n <span class=\"navi-text\">Post</span>\r\n </a>\r\n </li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-icon\"><i class=\"flaticon2-writing\"></i></span>\r\n <span class=\"navi-text\">File</span>\r\n </a>\r\n </li>\r\n</ul>\r\n<!--end::Navigation-->\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-dropdown-menu3',\r\n templateUrl: './dropdown-menu3.component.html',\r\n})\r\nexport class DropdownMenu3Component implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<!--begin::Naviigation-->\r\n<ul class=\"navi\">\r\n <li class=\"navi-header font-weight-bold py-5\">\r\n <span class=\"font-size-lg\">Add New:</span>\r\n <i\r\n class=\"flaticon2-information icon-md text-muted\"\r\n data-toggle=\"tooltip\"\r\n data-placement=\"right\"\r\n title=\"Click to learn more...\"\r\n ></i>\r\n </li>\r\n <li class=\"navi-separator mb-3 opacity-70\"></li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-icon\"><i class=\"flaticon2-shopping-cart-1\"></i></span>\r\n <span class=\"navi-text\">Order</span>\r\n </a>\r\n </li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-icon\"\r\n ><i class=\"navi-icon flaticon2-calendar-8\"></i\r\n ></span>\r\n <span class=\"navi-text\">Members</span>\r\n <span class=\"navi-label\">\r\n <span class=\"label label-light-danger label-rounded font-weight-bold\"\r\n >3</span\r\n >\r\n </span>\r\n </a>\r\n </li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-icon\"\r\n ><i class=\"navi-icon flaticon2-telegram-logo\"></i\r\n ></span>\r\n <span class=\"navi-text\">Project</span>\r\n </a>\r\n </li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-icon\"\r\n ><i class=\"navi-icon flaticon2-new-email\"></i\r\n ></span>\r\n <span class=\"navi-text\">Record</span>\r\n <span class=\"navi-label\">\r\n <span class=\"label label-light-success label-rounded font-weight-bold\"\r\n >5</span\r\n >\r\n </span>\r\n </a>\r\n </li>\r\n <li class=\"navi-separator mt-3 opacity-70\"></li>\r\n <li class=\"navi-footer pt-5 pb-4\">\r\n <a class=\"btn btn-light-primary font-weight-bolder btn-sm cursor-pointer\"\r\n >More options</a\r\n >\r\n <a\r\n class=\"btn btn-clean font-weight-bold btn-sm d-none cursor-pointer\"\r\n data-toggle=\"tooltip\"\r\n data-placement=\"right\"\r\n title=\"Click to learn more...\"\r\n >Learn more</a\r\n >\r\n </li>\r\n</ul>\r\n<!--end::Naviigation-->\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-dropdown-menu4',\r\n templateUrl: './dropdown-menu4.component.html',\r\n})\r\nexport class DropdownMenu4Component implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<!--begin::Navigation-->\r\n<ul class=\"navi navi-hover py-5\">\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-icon\"><i class=\"flaticon2-drop\"></i></span>\r\n <span class=\"navi-text\">New Group</span>\r\n </a>\r\n </li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-icon\"><i class=\"flaticon2-list-3\"></i></span>\r\n <span class=\"navi-text\">Contacts</span>\r\n </a>\r\n </li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-icon\"><i class=\"flaticon2-rocket-1\"></i></span>\r\n <span class=\"navi-text\">Groups</span>\r\n <span class=\"navi-link-badge\">\r\n <span class=\"label label-light-primary label-inline font-weight-bold\"\r\n >new</span\r\n >\r\n </span>\r\n </a>\r\n </li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-icon\"><i class=\"flaticon2-bell-2\"></i></span>\r\n <span class=\"navi-text\">Calls</span>\r\n </a>\r\n </li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-icon\"><i class=\"flaticon2-gear\"></i></span>\r\n <span class=\"navi-text\">Settings</span>\r\n </a>\r\n </li>\r\n\r\n <li class=\"navi-separator my-3\"></li>\r\n\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-icon\"><i class=\"flaticon2-magnifier-tool\"></i></span>\r\n <span class=\"navi-text\">Help</span>\r\n </a>\r\n </li>\r\n <li class=\"navi-item\">\r\n <a class=\"navi-link cursor-pointer\">\r\n <span class=\"navi-icon\"><i class=\"flaticon2-bell-2\"></i></span>\r\n <span class=\"navi-text\">Privacy</span>\r\n <span class=\"navi-link-badge\">\r\n <span class=\"label label-light-danger label-rounded font-weight-bold\"\r\n >5</span\r\n >\r\n </span>\r\n </a>\r\n </li>\r\n</ul>\r\n<!--end::Navigation-->\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DropdownMenu1Component } from './dropdown-menu1/dropdown-menu1.component';\r\nimport { DropdownMenu2Component } from './dropdown-menu2/dropdown-menu2.component';\r\nimport { DropdownMenu3Component } from './dropdown-menu3/dropdown-menu3.component';\r\nimport { DropdownMenu4Component } from './dropdown-menu4/dropdown-menu4.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n DropdownMenu1Component,\r\n DropdownMenu2Component,\r\n DropdownMenu3Component,\r\n DropdownMenu4Component,\r\n ],\r\n imports: [CommonModule],\r\n exports: [\r\n DropdownMenu1Component,\r\n DropdownMenu2Component,\r\n DropdownMenu3Component,\r\n DropdownMenu4Component,\r\n ],\r\n})\r\nexport class DropdownMenusModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CoreModuleService, CoreSiteService } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { CoreSiteHeaderComponent } from './site/header/header.component';\r\nimport { CoreModuleHeaderComponent } from './module/header/header.component';\r\nimport { SharedModule } from 'src/app/shared.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n SharedModule.forRoot(),\r\n ],\r\n declarations: [\r\n CoreSiteHeaderComponent,\r\n CoreModuleHeaderComponent,\r\n ],\r\n exports: [\r\n CoreSiteHeaderComponent,\r\n CoreModuleHeaderComponent,\r\n ],\r\n providers: [\r\n CoreSiteService,\r\n CoreModuleService,\r\n\r\n ]\r\n})\r\nexport class CoreSharedModule { }\r\n","<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"{{fieldsInfo['RecordStatus']?.fieldTitle}}\" [(ngModel)]=\"dataModel.recordStatus\"\r\n name=\"dataModel.recordStatus\" #RecordStatus=\"ngModel\" panelClass=\"recordStatus-{{ dataModel.recordStatus }}\"\r\n required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumRecordStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">{{'TITLE.SELECT_STATUS' | translate}}</mat-hint>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n RecordStatus is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>{{fieldsInfo['Title']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.title\" name=\"dataModel.title\" #Title type=\"text\"\r\n placeholder=\"{{fieldsInfo['Title']?.fieldTitle}}\" minlength=\"3\" maxlength=\"100\" required />\r\n <mat-icon matSuffix *ngIf=\"dataModel.title\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.title = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Title.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"Title.errors?.required\">\r\n Title is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- NeedSiteCreditAccount Field -->\r\n <div class=\"ntk-full-width\">\r\n <mat-slide-toggle [(ngModel)]=\"dataModel.needSiteCreditAccount\"\r\n *ngIf=\"fieldsInfo['NeedSiteCreditAccount']?.accessWatchField\"\r\n [disabled]=\"!fieldsInfo['NeedSiteCreditAccount']?.accessEditField\" name=\"dataModel.needSiteCreditAccount\">\r\n {{fieldsInfo['NeedSiteCreditAccount']?.fieldTitle}}\r\n </mat-slide-toggle>\r\n </div>\r\n <!-- NeedSiteUserCreditAccount Field -->\r\n <div class=\"ntk-full-width\">\r\n <mat-slide-toggle [(ngModel)]=\"dataModel.needSiteUserCreditAccount\"\r\n *ngIf=\"fieldsInfo['NeedSiteUserCreditAccount']?.accessWatchField\"\r\n [disabled]=\"!fieldsInfo['NeedSiteUserCreditAccount']?.accessEditField\"\r\n name=\"dataModel.needSiteUserCreditAccount\">\r\n {{fieldsInfo['NeedSiteUserCreditAccount']?.fieldTitle}}\r\n </mat-slide-toggle>\r\n </div>\r\n <!-- LinkMainImageId Field -->\r\n <div class=\"mb-3\">\r\n <img *ngIf=\"dataModel?.linkMainImageIdSrc?.length>0\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\"\r\n aria-hidden src=\"{{dataModel.linkMainImageIdSrc | cmsthumbnail}}\" height=\"50\" width=\"50\" />\r\n </div>\r\n <div class=\"mb-9\">\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label (click)=\"fileManagerOpenForm = true\">Ùایل نمونه\r\n </mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.linkMainImageId\" name=\"dataModel.linkMainImageId\" #LinkMainImageId\r\n type=\"text\" placeholder=\"شناسه Ùایل اصلی\" autocomplete=\"off\" (click)=\"fileManagerOpenForm = true\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.linkMainImageId \" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.linkMainImageId = null\">close</mat-icon>\r\n <mat-icon matSuffix (click)=\"fileManagerOpenForm = true\">mode_edit</mat-icon>\r\n </mat-form-field>\r\n <cms-file-manager (itemSelected)=\"onActionFileSelected($event)\" [language]=\"appLanguage\" [isPopup]=\"true\"\r\n [(openForm)]=\"fileManagerOpenForm\" [tree]=\"fileManagerTree\" [openFilemanagerButtonLabelKey]=\"'select'\"\r\n [openDirectUploadView]=\"true\" [selectFileType]=\"selectFileTypeMainImage\" [openFilemanagerButtonView]=\"false\">\r\n </cms-file-manager>\r\n </div>\r\n\r\n <!-- Description Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>{{fieldsInfo['Description']?.fieldTitle}}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.description\" name=\"dataModel.description\" #Description type=\"text\"\r\n placeholder=\"{{fieldsInfo['Description']?.fieldTitle}}\" minlength=\"1\" maxlength=\"500\" rows=5></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.description\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.description = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Description.value.length }} / 500</mat-hint>\r\n <mat-error *ngIf=\"Description.errors?.required\">\r\n Description is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- RuleHtmlBody Field -->\r\n قوانین\r\n <angular-editor [placeholder]=\"'متن قوانین را وارد کنید ...'\" [config]=\"publicHelper.editorConfig\" id=\"main\"\r\n [(ngModel)]=\"dataModel.ruleHtmlBody\" name=\"dataModel.ruleHtmlBody\"></angular-editor>\r\n\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n <button type=\"submit\" (click)=\"onFormSubmit()\" class=\"btn btn-success\" [disabled]=\"!vform.form.valid\">\r\n <i class=\"fa fa-check-square-o\"></i> {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>","\r\nimport {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreModuleService,\r\n CoreModuleModel,\r\n DataFieldInfoModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n Inject,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { NodeInterface, TreeModel } from 'src/filemanager-api';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-core-module-add',\r\n templateUrl: './add.component.html',\r\n styleUrls: ['./add.component.scss'],\r\n})\r\nexport class CoreModuleAddComponent implements OnInit {\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreModuleAddComponent>,\r\n public coreEnumService: CoreEnumService,\r\n public coreModuleService: CoreModuleService,\r\n private cmsToastrService: CmsToastrService,\r\n public publicHelper: PublicHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n\r\n this.fileManagerTree = this.publicHelper.GetfileManagerTreeConfig();\r\n }\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n selectFileTypeMainImage = ['jpg', 'jpeg', 'png'];\r\n fileManagerTree: TreeModel;\r\n appLanguage = 'fa';\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreModuleModel> = new ErrorExceptionResult<CoreModuleModel>();\r\n dataModel: CoreModuleModel = new CoreModuleModel();\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n fileManagerOpenForm = false;\r\n\r\n\r\n ngOnInit(): void {\r\n this.formInfo.formTitle = this.translate.instant('TITLE.ADD');\r\n this.getEnumRecordStatus();\r\n this.DataGetAccess();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n\r\n DataGetAccess(): void {\r\n this.coreModuleService\r\n .ServiceViewModel()\r\n .subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n } else {\r\n this.cmsToastrService.typeErrorGetAccess(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeErrorGetAccess(er);\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n DataAddContent(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.sending_information_to_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreModuleService.ServiceAdd(this.dataModel).subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.dataModelResult = ret;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_completed_successfully');\r\n this.cmsToastrService.typeSuccessAdd();\r\n this.dialogRef.close({ dialogChangedDate: true });\r\n\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n return;\r\n }\r\n this.formInfo.formSubmitAllow = false;\r\n\r\n this.DataAddContent();\r\n\r\n\r\n }\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n onActionFileSelected(model: NodeInterface): void {\r\n this.dataModel.linkMainImageId = model.id;\r\n this.dataModel.linkMainImageIdSrc = model.downloadLinksrc;\r\n\r\n }\r\n}\r\n","<app-cms-html-list [optionLoading]=\"loading\" [optionTreeDisplay]=\"false\">\r\n <ng-container cms-tree>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n --------------------------------------\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n </ng-container>\r\n <ng-container cms-header>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n \r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </ng-container>\r\n <ng-container cms-action>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n <button *ngIf=\"dataModelResult.access.accessAddRow \" (click)=\"onActionbuttonNewRow()\" type=\"button\"\r\n class=\"btn btn-outline-primary\" id=\"openModalButton\" data-toggle=\"modal\" data-target=\"#categoryModal\">{{'ACTION.ADD' | translate}}</button>\r\n <button *ngIf=\"dataModelResult.access.accessAddRow\" (click)=\"onActionbuttonNewRowAuto()\" type=\"button\"\r\n class=\"btn btn-outline-primary\" id=\"openModalButton\" data-toggle=\"modal\" data-target=\"#categoryModal\">{{'ACTION.AUTOADD'|\r\n translate}} Dependency</button>\r\n <button *ngIf=\"dataModelResult.access.accessEditRow && tableRowSelected.id>0\" (click)=\"onActionbuttonEditRow()\"\r\n type=\"button\" class=\"btn btn-outline-warning\" data-toggle=\"modal\" data-target=\"#categoryModal\">{{'ACTION.EDIT' | translate}}</button>\r\n <button *ngIf=\"dataModelResult.access.accessDeleteRow && tableRowSelected.id>0\"\r\n (click)=\"onActionbuttonDeleteRow()\" type=\"button\" class=\"btn btn-outline-danger\">{{'ACTION.DELETE' | translate}}</button>\r\n\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle [(ngModel)]=\"optionsSearch.data.show\">{{'ACTION.SEARCH' | translate}}</mat-slide-toggle>\r\n </a>\r\n\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle (click)=\"onActionbuttonStatist()\">{{'ACTION.STATIST' | translate}}\r\n </mat-slide-toggle>\r\n </a>\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle (click)=\"onActionbuttonExport()\">{{'ACTION.EXPORTFILE' | translate}}\r\n </mat-slide-toggle>\r\n </a>\r\n <button (click)=\"onActionbuttonReload()\" type=\"button\" class=\"btn btn-outline-secondary BTN\"><mat-icon style=\"font-size: 20px;margin: -1px;\" title=\"{{'ACTION.RELOAD' | translate}}\">refresh</mat-icon></button>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n </ng-container>\r\n <ng-container cms-action-area>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n <app-cms-search-list [(options)]=\"optionsSearch\"></app-cms-search-list>\r\n <app-cms-export-list [(options)]=\"optionsExport\"></app-cms-export-list>\r\n <app-cms-statist-list [(options)]=\"optionsStatist\"></app-cms-statist-list>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n </ng-container>\r\n <ng-container cms-body>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-table [dataSource]=\"tableSource\" matSort #tableSort=\"matSort\" (matSortChange)=\"onTableSortData(tableSort)\">\r\n <!-- LinkMainImageIdSrc Column -->\r\n <ng-container matColumnDef=\"LinkMainImageIdSrc\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{'TITLE.PICTURE' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\">\r\n <img *ngIf=\"row?.linkMainImageIdSrc?.length>0\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\" aria-hidden\r\n src=\"{{row.linkMainImageIdSrc | cmsthumbnail}}\" height=\"40\" width=\"40\" />\r\n </mat-cell>\r\n </ng-container>\r\n <!-- ID Column -->\r\n <ng-container matColumnDef=\"Id\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['Id']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.id}} </mat-cell>\r\n </ng-container>\r\n <!-- linkCreatedBySiteId Column -->\r\n <ng-container matColumnDef=\"linkCreatedBySiteId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['LinkCreatedBySiteId']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.linkCreatedBySiteId}} </mat-cell>\r\n </ng-container>\r\n <!-- RecordStatus Column -->\r\n <ng-container matColumnDef=\"RecordStatus\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['RecordStatus']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> <i [ngClass]=\"row.recordStatus|statusClass\" ></i>\r\n <select matNativeControl cmsRecordStatusSelfSave [contentService]=\"contentService\" [row]=\"row\" [ngStyle]=\"{'display': row.id === tableRowSelected.id ? '' : 'none' }\">\r\n </select> </mat-cell>\r\n </ng-container>\r\n <!-- Title Column -->\r\n <ng-container matColumnDef=\"Title\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['Title']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.title}} </mat-cell>\r\n </ng-container>\r\n <!-- ClassName Column -->\r\n <ng-container matColumnDef=\"ClassName\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['ClassName']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.className}} </mat-cell>\r\n </ng-container>\r\n <!-- ShowInOrder Column -->\r\n <ng-container matColumnDef=\"ShowInOrder\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['ShowInOrder']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.showInOrder}} </mat-cell>\r\n </ng-container>\r\n <!-- CreatedDate Column -->\r\n <ng-container matColumnDef=\"CreatedDate\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['CreatedDate']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{ publicHelper.LocaleDate(row.createdDate) }} </mat-cell>\r\n </ng-container>\r\n <!-- UpdatedDate Column -->\r\n <ng-container matColumnDef=\"UpdatedDate\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['UpdatedDate']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{ publicHelper.LocaleDate(row.updatedDate) }} </mat-cell>\r\n </ng-container>\r\n <!-- ExpireDate Column -->\r\n <ng-container matColumnDef=\"ExpireDate\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['ExpireDate']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" [ngStyle]=\"{'background':publicHelper.RowStyleExpireDate(row.expireDate) }\">\r\n {{ publicHelper.LocaleDate(row.expireDate) }} </mat-cell>\r\n </ng-container>\r\n <!-- Action Column -->\r\n <ng-container matColumnDef=\"Action\">\r\n <mat-header-cell *matHeaderCellDef> {{'TITLE.OPTION' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=' Action'>\r\n <!-- Action Menu -->\r\n <button mat-icon-button [matMenuTriggerFor]=\"actionMenu\" aria-label=\"Action Menu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #actionMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"onActionbuttonEditRow(row)\" *ngIf=\"dataModelResult.access.accessEditRow\">\r\n <mat-icon>mode_edit</mat-icon>\r\n <span>{{'ACTION.EDIT' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonDeleteRow(row)\"\r\n *ngIf=\"dataModelResult.access.accessDeleteRow\">\r\n <mat-icon>delete_forever</mat-icon>\r\n <span>{{'ACTION.DELETE' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonConfigMainAdminRow(row)\"\r\n *ngIf=\"tokenInfo.userAccessAdminAllowToProfessionalData\">\r\n <mat-icon>extension</mat-icon>\r\n <span>تنظیمات مدیریتی</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonSiteList(row)\"\r\n *ngIf=\"tokenInfo.userAccessAdminAllowToProfessionalData\">\r\n <mat-icon>extension</mat-icon>\r\n <span>لیست سایتهایی</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonSiteCategoryList(row)\"\r\n *ngIf=\"tokenInfo.userAccessAdminAllowToProfessionalData\">\r\n <mat-icon>extension</mat-icon>\r\n <span>لیست دسته بندی سایتهایی</span>\r\n </button>\r\n </mat-menu>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- position Column -->\r\n <ng-container matColumnDef=\"position\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{'ACTION.ORDERING' | translate}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\">\r\n <mat-icon style=\"pointer-events: all;\" cdkDragHandle>reorder</mat-icon>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"tabledisplayedColumns\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns: tabledisplayedColumns;\" (click)=\"onActionTableRowSelect(row)\"\r\n [ngStyle]=\"{'background': row.id === tableRowSelected.id ? '#d3d3da' : '' }\">\r\n </mat-row>\r\n </mat-table>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </ng-container>\r\n <ng-container cms-footer>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n \r\n <mat-paginator #paginator [length]=\"(dataModelResult.totalRowCount)\"\r\n [pageIndex]=\"(dataModelResult.currentPageNumber-1)\" [pageSize]=\"dataModelResult.rowPerPage\"\r\n [pageSizeOptions]=\"[5, 10, 20, 100]\" (page)=\"onTablePageingData($event)\"></mat-paginator>\r\n\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </ng-container>\r\n</app-cms-html-list>\r\n","import {NgModule} from '@angular/core';\r\nimport {Routes, RouterModule} from '@angular/router';\r\nimport { CoreModuleListComponent } from './list/list.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n children: [\r\n {\r\n path: '',\r\n component: CoreModuleListComponent\r\n },\r\n ]\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class CoreModuleRouting {\r\n}\r\n","\r\nimport { Router } from '@angular/router';\r\nimport { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport {\r\n CoreModuleModel,\r\n CoreModuleService,\r\n EnumSortType,\r\n ErrorExceptionResult,\r\n FilterModel,\r\n TokenInfoModel,\r\n FilterDataModel,\r\n EnumRecordStatus,\r\n DataFieldInfoModel,\r\n EditStepDtoModel,\r\n EnumActionGoStep\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { ComponentOptionSearchModel } from 'src/app/core/cmsComponentModels/base/componentOptionSearchModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ComponentOptionExportModel } from 'src/app/core/cmsComponentModels/base/componentOptionExportModel';\r\nimport { ComponentOptionStatistModel } from 'src/app/core/cmsComponentModels/base/componentOptionStatistModel';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { Subscription } from 'rxjs';\r\nimport { CoreModuleEditComponent } from '../edit/edit.component';\r\nimport { CoreModuleAddComponent } from '../add/add.component';\r\nimport { CmsConfirmationDialogService } from 'src/app/shared/cms-confirmation-dialog/cmsConfirmationDialog.service';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n@Component({\r\n selector: 'app-core-module-list',\r\n templateUrl: './list.component.html',\r\n})\r\nexport class CoreModuleListComponent implements OnInit, OnDestroy {\r\n constructor(\r\n public contentService: CoreModuleService,\r\n public publicHelper: PublicHelper,\r\n private cmsToastrService: CmsToastrService,\r\n private cmsConfirmationDialogService: CmsConfirmationDialogService,\r\n private tokenHelper: TokenHelper,\r\n private router: Router,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n public dialog: MatDialog) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.optionsSearch.parentMethods = {\r\n onSubmit: (model) => this.onSubmitOptionsSearch(model),\r\n };\r\n this.optionsExport.parentMethods = {\r\n onSubmit: (model) => this.onSubmitOptionExport(model),\r\n };\r\n /*filter Sort*/\r\n this.filteModelContent.sortColumn = 'Id';\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n }\r\n comment: string;\r\n author: string;\r\n dataSource: any;\r\n flag = false;\r\n tableContentSelected = [];\r\n\r\n filteModelContent = new FilterModel();\r\n dataModelResult: ErrorExceptionResult<CoreModuleModel> = new ErrorExceptionResult<CoreModuleModel>();\r\n optionsSearch: ComponentOptionSearchModel = new ComponentOptionSearchModel();\r\n optionsStatist: ComponentOptionStatistModel = new ComponentOptionStatistModel();\r\n optionsExport: ComponentOptionExportModel = new ComponentOptionExportModel();\r\n tokenInfo = new TokenInfoModel();\r\n loading = new ProgressSpinnerModel();\r\n tableRowsSelected: Array<CoreModuleModel> = [];\r\n tableRowSelected: CoreModuleModel = new CoreModuleModel();\r\n tableSource: MatTableDataSource<CoreModuleModel> = new MatTableDataSource<CoreModuleModel>();\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n\r\n tabledisplayedColumns: string[] = [\r\n 'LinkMainImageIdSrc',\r\n 'Id',\r\n 'RecordStatus',\r\n 'Title',\r\n 'ClassName',\r\n 'ShowInOrder',\r\n 'CreatedDate',\r\n 'UpdatedDate',\r\n 'ExpireDate',\r\n 'position',\r\n 'Action'\r\n ];\r\n\r\n\r\n expandedElement: CoreModuleModel | null;\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n ngOnInit(): void {\r\n this.filteModelContent.sortColumn = 'ShowInMenuOrder';\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n this.DataGetAll();\r\n });\r\n\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.tokenInfo = next;\r\n this.DataGetAll();\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n DataGetAll(): void {\r\n this.tableRowsSelected = [];\r\n this.tableRowSelected = new CoreModuleModel();\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName, this.translate.instant('MESSAGE.get_information_list'));\r\n this.filteModelContent.accessLoad = true;\r\n /*filter CLone*/\r\n const filterModel = JSON.parse(JSON.stringify(this.filteModelContent));\r\n /*filter CLone*/\r\n this.contentService.ServiceGetAllEditor(filterModel).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n\r\n this.dataModelResult = ret;\r\n this.tableSource.data = ret.listItems;\r\n\r\n if (this.optionsSearch.childMethods) {\r\n this.optionsSearch.childMethods.setAccess(ret.access);\r\n }\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n onTableSortData(sort: MatSort): void {\r\n if (this.tableSource && this.tableSource.sort && this.tableSource.sort.active === sort.active) {\r\n if (this.tableSource.sort.start === 'asc') {\r\n sort.start = 'desc';\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Descending;\r\n } else if (this.tableSource.sort.start === 'desc') {\r\n this.filteModelContent.sortColumn = '';\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n } else {\r\n sort.start = 'desc';\r\n }\r\n } else {\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n }\r\n this.tableSource.sort = sort;\r\n this.filteModelContent.currentPageNumber = 0;\r\n this.DataGetAll();\r\n }\r\n onTablePageingData(event?: PageEvent): void {\r\n this.filteModelContent.currentPageNumber = event.pageIndex + 1;\r\n this.filteModelContent.rowPerPage = event.pageSize;\r\n this.DataGetAll();\r\n }\r\n\r\n\r\n\r\n onActionbuttonNewRow(): void {\r\n\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessAddRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessAdd();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreModuleAddComponent, {\r\n height: '90%',\r\n data: {}\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n this.DataGetAll();\r\n }\r\n });\r\n }\r\n onActionbuttonNewRowAuto(): any {\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n this.contentService.ServiceAutoAdd().subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.cmsToastrService.typeSuccessAdd();\r\n this.DataGetAll();\r\n }\r\n else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onActionbuttonEditRow(model: CoreModuleModel = this.tableRowSelected): void {\r\n\r\n if (!model || !model.id || model.id === 0) {\r\n this.cmsToastrService.typeErrorSelectedRow();\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessEditRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessEdit();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreModuleEditComponent, {\r\n height: '90%',\r\n data: { id: this.tableRowSelected.id }\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n this.DataGetAll();\r\n }\r\n });\r\n }\r\n onActionbuttonDeleteRow(model: CoreModuleModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n const emessage = this.translate.instant('MESSAGE.no_row_selected_to_delete');\r\n this.cmsToastrService.typeErrorSelected(emessage);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessDeleteRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessDelete();\r\n return;\r\n }\r\n\r\n\r\n const title = this.translate.instant('MESSAGE.Please_Confirm');\r\n const message = this.translate.instant('MESSAGE.Do_you_want_to_delete_this_content') + '?' + '<br> ( ' + this.tableRowSelected.title + ' ) ';\r\n this.cmsConfirmationDialogService.confirm(title, message)\r\n .then((confirmed) => {\r\n if (confirmed) {\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.contentService.ServiceDelete(this.tableRowSelected.id).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.cmsToastrService.typeSuccessRemove();\r\n this.DataGetAll();\r\n } else {\r\n this.cmsToastrService.typeErrorRemove();\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n )\r\n .catch(() => {\r\n // console.log('User dismissed the dialog (e.g., by using ESC, clicking the cross icon, or clicking outside the dialog)')\r\n }\r\n );\r\n }\r\n\r\n onActionbuttonGoToModuleList(model: CoreModuleModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n const message = this.translate.instant('MESSAGE.no_row_selected_to_display');\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n this.router.navigate(['/core/siteModule/', this.tableRowSelected.id]);\r\n }\r\n onActionbuttonStatist(): void {\r\n this.optionsStatist.data.show = !this.optionsStatist.data.show;\r\n if (!this.optionsStatist.data.show) {\r\n return;\r\n }\r\n const statist = new Map<string, number>();\r\n statist.set('Active', 0);\r\n statist.set('All', 0);\r\n this.contentService.ServiceGetCount(this.filteModelContent).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n statist.set('All', ret.totalRowCount);\r\n this.optionsStatist.childMethods.setStatistValue(statist);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n\r\n const filterStatist1 = JSON.parse(JSON.stringify(this.filteModelContent));\r\n const fastfilter = new FilterDataModel();\r\n fastfilter.propertyName = 'RecordStatus';\r\n fastfilter.value = EnumRecordStatus.Available;\r\n filterStatist1.filters.push(fastfilter);\r\n this.contentService.ServiceGetCount(filterStatist1).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n statist.set('Active', ret.totalRowCount);\r\n this.optionsStatist.childMethods.setStatistValue(statist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n\r\n }\r\n\r\n onTableDropRow(event: CdkDragDrop<CoreModuleModel[]>): void {\r\n const previousIndex = this.tableSource.data.findIndex(row => row === event.item.data);\r\n const model = new EditStepDtoModel<number>();\r\n model.id = this.tableSource.data[previousIndex].id;\r\n model.centerId = this.tableSource.data[event.currentIndex].id;\r\n if (previousIndex > event.currentIndex) {\r\n model.actionGo = EnumActionGoStep.GoUp;\r\n }\r\n else {\r\n model.actionGo = EnumActionGoStep.GoDown;\r\n }\r\n this.contentService.ServiceEditStep(model).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n moveItemInArray(this.tableSource.data, previousIndex, event.currentIndex);\r\n this.tableSource.data = this.tableSource.data.slice();\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n }\r\n onActionbuttonConfigMainAdminRow(model: CoreModuleModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n const emessage = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(emessage);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n this.router.navigate([model.className + '/config/mainadmin/']);\r\n }\r\n onActionbuttonSiteList(model: CoreModuleModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n const emessage = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(emessage);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n this.router.navigate(['core/site/modulelist/LinkModuleId/', model.id]);\r\n }\r\n onActionbuttonSiteCategoryList(model: CoreModuleModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n const emessage = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(emessage);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n this.router.navigate(['core/sitecategorymodule/LinkCmsModuleId/', model.id]);\r\n }\r\n onActionbuttonExport(): void {\r\n this.optionsExport.data.show = !this.optionsExport.data.show;\r\n this.optionsExport.childMethods.setExportFilterModel(this.filteModelContent);\r\n }\r\n onSubmitOptionExport(model: FilterModel): void {\r\n const exportlist = new Map<string, string>();\r\n exportlist.set('Download', 'loading ... ');\r\n this.contentService.ServiceExportFile(model).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n exportlist.set('Download', ret.linkFile);\r\n this.optionsExport.childMethods.setExportLinkFile(exportlist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n }\r\n\r\n onActionbuttonReload(): void {\r\n this.DataGetAll();\r\n }\r\n onSubmitOptionsSearch(model: any): void {\r\n this.filteModelContent.filters = model;\r\n this.DataGetAll();\r\n }\r\n onActionTableRowSelect(row: CoreModuleModel): void {\r\n this.tableRowSelected = row;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CoreModuleRouting } from './coreModule.routing';\r\nimport { CoreModuleComponent } from './coreModule.component';\r\nimport {\r\n CoreModuleService,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SharedModule } from 'src/app/shared.module';\r\nimport { CoreModuleTreeComponent } from './tree/tree.component';\r\nimport { CoreModuleSelectorComponent } from './selector/selector.component';\r\nimport { CoreModuleEditComponent } from './edit/edit.component';\r\nimport { CoreModuleAddComponent } from './add/add.component';\r\nimport { CoreModuleListComponent } from './list/list.component';\r\n\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\n\r\nimport { CoreModuleSelectionlistComponent } from './selectionlist/selectionlist.component';\r\nimport { CoreModuleHeaderComponent } from './header/header.component';\r\nimport { CoreSharedModule } from '../core.shared.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CoreModuleComponent,\r\n CoreModuleListComponent,\r\n CoreModuleAddComponent,\r\n CoreModuleEditComponent,\r\n CoreModuleSelectorComponent,\r\n CoreModuleTreeComponent,\r\n CoreModuleSelectionlistComponent,\r\n ],\r\n exports: [\r\n CoreModuleComponent,\r\n CoreModuleListComponent,\r\n CoreModuleAddComponent,\r\n CoreModuleEditComponent,\r\n CoreModuleSelectorComponent,\r\n CoreModuleTreeComponent,\r\n CoreModuleSelectionlistComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CoreModuleRouting,\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: 'never' }),\r\n SharedModule.forRoot(),\r\n AngularEditorModule,\r\n \r\n CoreSharedModule,\r\n ],\r\n providers: [\r\n CoreModuleService,\r\n ]\r\n})\r\nexport class CoreModuleModule {\r\n}\r\n","<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"{{fieldsInfo['RecordStatus']?.fieldTitle}}\" [(ngModel)]=\"dataModel.recordStatus\"\r\n name=\"dataModel.recordStatus\" #RecordStatus=\"ngModel\" panelClass=\"recordStatus-{{ dataModel.recordStatus }}\"\r\n required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumRecordStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">{{'TITLE.SELECT_STATUS' | translate}}</mat-hint>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n RecordStatus is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>{{fieldsInfo['Title']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.title\" name=\"dataModel.title\" #Title type=\"text\"\r\n placeholder=\"{{fieldsInfo['Title']?.fieldTitle}}\" minlength=\"3\" maxlength=\"100\" required />\r\n <mat-icon matSuffix *ngIf=\"dataModel.title\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.title = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Title.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"Title.errors?.required\">\r\n Title is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- NeedSiteCreditAccount Field -->\r\n <div class=\"ntk-full-width\">\r\n <mat-slide-toggle [(ngModel)]=\"dataModel.needSiteCreditAccount\"\r\n *ngIf=\"fieldsInfo['NeedSiteCreditAccount']?.accessWatchField\"\r\n [disabled]=\"!fieldsInfo['NeedSiteCreditAccount']?.accessEditField\" name=\"dataModel.needSiteCreditAccount\">\r\n {{fieldsInfo['NeedSiteCreditAccount']?.fieldTitle}}\r\n </mat-slide-toggle>\r\n </div>\r\n <!-- NeedSiteUserCreditAccount Field -->\r\n <div class=\"ntk-full-width\">\r\n <mat-slide-toggle [(ngModel)]=\"dataModel.needSiteUserCreditAccount\"\r\n *ngIf=\"fieldsInfo['NeedSiteUserCreditAccount']?.accessWatchField\"\r\n [disabled]=\"!fieldsInfo['NeedSiteUserCreditAccount']?.accessEditField\"\r\n name=\"dataModel.needSiteUserCreditAccount\">\r\n {{fieldsInfo['NeedSiteUserCreditAccount']?.fieldTitle}}\r\n </mat-slide-toggle>\r\n </div>\r\n <!-- ShowInOrder Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['ShowInOrder']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['ShowInOrder']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.showInOrder\" name=\"dataModel.showInOrder\" #ShowInOrder type=\"number\"\r\n [disabled]=\"!fieldsInfo['ShowInOrder']?.accessEditField\"\r\n placeholder=\"{{fieldsInfo['ShowInOrder']?.fieldTitle}}\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.showInOrder\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.showInOrder = 1\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n </mat-form-field>\r\n\r\n <!-- LinkMainImageId Field -->\r\n <div class=\"mb-3\">\r\n <img *ngIf=\"dataModel?.linkMainImageIdSrc?.length>0\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\"\r\n aria-hidden src=\"{{dataModel.linkMainImageIdSrc | cmsthumbnail}}\" height=\"50\" width=\"50\" />\r\n </div>\r\n <div class=\"mb-9\">\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label (click)=\"fileManagerOpenForm = true\">Ùایل نمونه\r\n </mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.linkMainImageId\" name=\"dataModel.linkMainImageId\" #LinkMainImageId\r\n type=\"text\" placeholder=\"شناسه Ùایل اصلی\" autocomplete=\"off\" (click)=\"fileManagerOpenForm = true\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.linkMainImageId \" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.linkMainImageId = null\">close</mat-icon>\r\n <mat-icon matSuffix (click)=\"fileManagerOpenForm = true\">mode_edit</mat-icon>\r\n </mat-form-field>\r\n <cms-file-manager (itemSelected)=\"onActionFileSelected($event)\" [language]=\"appLanguage\" [isPopup]=\"true\"\r\n [(openForm)]=\"fileManagerOpenForm\" [tree]=\"fileManagerTree\" [openFilemanagerButtonLabelKey]=\"'select'\"\r\n [openDirectUploadView]=\"true\" [selectFileType]=\"selectFileTypeMainImage\" [openFilemanagerButtonView]=\"false\">\r\n </cms-file-manager>\r\n </div>\r\n <!-- Description Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>{{fieldsInfo['Description']?.fieldTitle}}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.description\" name=\"dataModel.description\" #Description type=\"text\"\r\n placeholder=\"{{fieldsInfo['Description']?.fieldTitle}}\" minlength=\"1\" maxlength=\"500\" rows=5></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.description\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.description = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Description.value.length }} / 500</mat-hint>\r\n <mat-error *ngIf=\"Description.errors?.required\">\r\n Description is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- RuleHtmlBody Field -->\r\n قوانین\r\n <angular-editor [placeholder]=\"'متن قوانین را وارد کنید ...'\" [config]=\"publicHelper.editorConfig\" id=\"main\"\r\n [(ngModel)]=\"dataModel.ruleHtmlBody\" name=\"dataModel.ruleHtmlBody\"></angular-editor>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n <button type=\"submit\" (click)=\"onFormSubmit()\" class=\"btn btn-success\" [disabled]=\"!vform.form.valid\">\r\n <i class=\"fa fa-check-square-o\"></i> {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>","\r\nimport {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreModuleService,\r\n CoreModuleModel,\r\n DataFieldInfoModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n Inject,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { NodeInterface, TreeModel } from 'src/filemanager-api';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-core-module-edit',\r\n templateUrl: './edit.component.html',\r\n styleUrls: ['./edit.component.scss'],\r\n})\r\nexport class CoreModuleEditComponent implements OnInit {\r\n requestId = 0;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreModuleEditComponent>,\r\n public coreEnumService: CoreEnumService,\r\n public coreModuleService: CoreModuleService,\r\n private cmsToastrService: CmsToastrService,\r\n public publicHelper: PublicHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n if (data) {\r\n this.requestId = +data.id || 0;\r\n }\r\n\r\n this.fileManagerTree = this.publicHelper.GetfileManagerTreeConfig();\r\n }\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n selectFileTypeMainImage = ['jpg', 'jpeg', 'png'];\r\n\r\n fileManagerTree: TreeModel;\r\n appLanguage = 'fa';\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreModuleModel> = new ErrorExceptionResult<CoreModuleModel>();\r\n dataModel: CoreModuleModel = new CoreModuleModel();\r\n\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n\r\n fileManagerOpenForm = false;\r\n\r\n\r\n ngOnInit(): void {\r\n if (this.requestId > 0) {\r\n this.formInfo.formTitle = this.translate.instant('TITLE.Edit');\r\n this.DataGetOneContent();\r\n } else {\r\n this.cmsToastrService.typeErrorComponentAction();\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n return;\r\n }\r\n\r\n this.getEnumRecordStatus();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n DataGetOneContent(): void {\r\n if (this.requestId <= 0) {\r\n this.cmsToastrService.typeErrorEditRowIsNull();\r\n return;\r\n }\r\n\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.Receiving_Information_From_The_Server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n this.coreModuleService.setAccessLoad();\r\n this.coreModuleService.ServiceGetOneById(this.requestId).subscribe({\r\n next: (ret) => {\r\n this.dataModel = ret.item;\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n\r\n if (ret.isSuccess) {\r\n this.formInfo.formTitle = this.formInfo.formTitle + ' ' + ret.item.title;\r\n this.formInfo.formAlert = '';\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n DataEditContent(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.sending_information_to_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName, this.translate.instant('MESSAGE.sending_information_to_the_server'));\r\n\r\n this.coreModuleService.ServiceEdit(this.dataModel).subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.dataModelResult = ret;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_completed_successfully');\r\n this.cmsToastrService.typeSuccessEdit();\r\n this.dialogRef.close({ dialogChangedDate: true });\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n return;\r\n }\r\n this.formInfo.formSubmitAllow = false;\r\n this.DataEditContent();\r\n }\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n onActionFileSelected(model: NodeInterface): void {\r\n this.dataModel.linkMainImageId = model.id;\r\n this.dataModel.linkMainImageIdSrc = model.downloadLinksrc;\r\n\r\n }\r\n}\r\n","<mat-form-field class=\"ntk-full-width\">\r\n <input type=\"text\" placeholder=\"{{optionPlaceholder}}\" [attr.disabled]=\"optionDisabled? true : null\" aria-label=\"Assignee\" matInput [formControl]=\"formControl\" [matAutocomplete]=\"auto15\">\r\n <mat-autocomplete #auto15=\"matAutocomplete\" [displayWith]=\"displayFn\" (optionSelected)=\"onActionSelect($event.option.value)\">\r\n <mat-option *ngFor=\"let state of filteredOptions | async\" [value]=\"state\" [disabled]=\"optionDisabled\">\r\n <span>{{ displayOption(state) }}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon matSuffix *ngIf=\"dataModelSelect.id\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"onActionSelectClear()\">close</mat-icon>\r\n <ng-content></ng-content>\r\n</mat-form-field>\r\n\r\n","\r\nimport { Component, OnInit, Input, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\nimport {\r\n CoreEnumService,\r\n ErrorExceptionResult,\r\n FilterDataModel,\r\n FilterModel,\r\n CoreModuleModel,\r\n CoreModuleService,\r\n EnumFilterDataModelSearchTypes,\r\n EnumClauseType\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { Output } from '@angular/core';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n\r\n@Component({\r\n selector: 'app-core-module-selector',\r\n templateUrl: './selector.component.html',\r\n})\r\nexport class CoreModuleSelectorComponent implements OnInit {\r\n\r\n constructor(\r\n public coreEnumService: CoreEnumService,\r\n private cmsToastrService: CmsToastrService,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n public categoryService: CoreModuleService) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n }\r\n dataModelResult: ErrorExceptionResult<CoreModuleModel> = new ErrorExceptionResult<CoreModuleModel>();\r\n dataModelSelect: CoreModuleModel = new CoreModuleModel();\r\n formControl = new FormControl();\r\n filteredOptions: Observable<CoreModuleModel[]>;\r\n @Input() optionDisabled = false;\r\n @Input() optionSelectFirstItem = false;\r\n @Input() optionPlaceholder = '';\r\n @Output() optionChange = new EventEmitter<CoreModuleModel>();\r\n @Input() optionReload = () => this.onActionReload();\r\n @Input() set optionSelectForce(x: number | CoreModuleModel) {\r\n this.onActionSelectForce(x);\r\n }\r\n\r\n _loading: ProgressSpinnerModel = new ProgressSpinnerModel();\r\n get loading(): ProgressSpinnerModel {\r\n return this._loading;\r\n }\r\n @Input() set loading(value: ProgressSpinnerModel) {\r\n this._loading = value;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadOptions();\r\n }\r\n loadOptions(): void {\r\n this.filteredOptions = this.formControl.valueChanges\r\n .pipe(\r\n startWith(''),\r\n debounceTime(1000),\r\n distinctUntilChanged(),\r\n switchMap(val => {\r\n if (typeof val === 'string' || typeof val === 'number') {\r\n return this.DataGetAll(val || '');\r\n }\r\n return [];\r\n }),\r\n // tap(() => this.myControl.setValue(this.options[0]))\r\n );\r\n }\r\n\r\n displayFn(model?: CoreModuleModel): string | undefined {\r\n return model ? (model.title) : undefined;\r\n }\r\n displayOption(model?: CoreModuleModel): string | undefined {\r\n return model ? (model.title) : undefined;\r\n }\r\n async DataGetAll(text: string | number | any): Promise<CoreModuleModel[]> {\r\n const filteModel = new FilterModel();\r\n filteModel.rowPerPage = 20;\r\n filteModel.accessLoad = true;\r\n // this.loading.backdropEnabled = false;\r\n let filter = new FilterDataModel();\r\n filter.propertyName = 'Title';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n if (text && typeof +text === 'number' && +text > 0) {\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'Id';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Equal;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n }\r\n\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n return await this.categoryService.ServiceGetAll(filteModel)\r\n .pipe(\r\n map(response => {\r\n this.dataModelResult = response;\r\n /*select First Item */\r\n if (this.optionSelectFirstItem &&\r\n (!this.dataModelSelect || !this.dataModelSelect.id || this.dataModelSelect.id <= 0) &&\r\n this.dataModelResult.listItems.length > 0) {\r\n this.optionSelectFirstItem = false;\r\n setTimeout(() => { this.formControl.setValue(this.dataModelResult.listItems[0]); }, 1000);\r\n this.onActionSelect(this.dataModelResult.listItems[0]);\r\n }\r\n /*select First Item */\r\n this.loading.Stop(pName);\r\n\r\n return response.listItems;\r\n })\r\n ).toPromise();\r\n }\r\n onActionSelect(model: CoreModuleModel): void {\r\n if (this.optionDisabled) {\r\n return;\r\n }\r\n this.dataModelSelect = model;\r\n this.optionChange.emit(this.dataModelSelect);\r\n }\r\n onActionSelectClear(): void {\r\n if (this.optionDisabled) {\r\n return;\r\n }\r\n this.formControl.setValue(null);\r\n this.optionChange.emit(null);\r\n }\r\n onActionEmpty(): void {\r\n this.formControl.setValue(0);\r\n this.dataModelSelect = new CoreModuleModel();\r\n this.optionChange.emit(this.dataModelSelect);\r\n }\r\n push(newvalue: CoreModuleModel): Observable<CoreModuleModel[]> {\r\n return this.filteredOptions.pipe(map(items => {\r\n if (items.find(x => x.id === newvalue.id)) {\r\n return items;\r\n }\r\n items.push(newvalue);\r\n return items;\r\n }));\r\n\r\n }\r\n onActionSelectForce(id: number | CoreModuleModel): void {\r\n if (typeof id === 'number' && id > 0) {\r\n if (this.dataModelSelect && this.dataModelSelect.id === id) {\r\n return;\r\n }\r\n if (this.dataModelResult && this.dataModelResult.listItems && this.dataModelResult.listItems.find(x => x.id === id)) {\r\n const item = this.dataModelResult.listItems.find(x => x.id === id);\r\n this.dataModelSelect = item;\r\n this.formControl.setValue(item);\r\n return;\r\n }\r\n this.categoryService.ServiceGetOneById(id).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.filteredOptions = this.push(ret.item);\r\n this.dataModelSelect = ret.item;\r\n this.formControl.setValue(ret.item);\r\n this.optionChange.emit(ret.item);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n }\r\n });\r\n return;\r\n }\r\n if (typeof id === typeof CoreModuleModel) {\r\n this.filteredOptions = this.push((id as CoreModuleModel));\r\n this.dataModelSelect = (id as CoreModuleModel);\r\n this.formControl.setValue(id);\r\n return;\r\n }\r\n this.formControl.setValue(null);\r\n }\r\n\r\n onActionReload(): void {\r\n // if (this.dataModelSelect && this.dataModelSelect.id > 0) {\r\n // this.onActionSelect(null);\r\n // }\r\n this.dataModelSelect = new CoreModuleModel();\r\n // this.optionsData.Select = new CoreModuleModel();\r\n this.loadOptions();\r\n }\r\n}\r\n","<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <!-- RecordStatus Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"{{fieldsInfo['RecordStatus']?.fieldTitle}}\" [(ngModel)]=\"dataModel.recordStatus\"\r\n name=\"dataModel.recordStatus\" #RecordStatus=\"ngModel\" panelClass=\"recordStatus-{{ dataModel.recordStatus }}\"\r\n required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumRecordStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">{{'TITLE.SELECT_STATUS' | translate}}</mat-hint>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n RecordStatus is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- LinkCmsSiteId Field -->\r\n <app-core-sitecategory-selector (optionChange)=\"onActionSiteCategorySelect($event)\" [(loading)]=\"loading\"\r\n [optionDisabled]=\"!fieldsInfo['LinkCmsSiteCategoryId']?.accessEditField\"\r\n [optionSelectForce]=\"dataModel.linkCmsSiteCategoryId\" [optionPlaceholder]=\"'دسته بندی سایت'\">\r\n </app-core-sitecategory-selector>\r\n <!-- LinkModuleId Field -->\r\n <app-core-module-selector (optionChange)=\"onActionSelectorModuleSelect($event)\" [(loading)]=\"loading\"\r\n [optionDisabled]=\"!fieldsInfo['LinkCmsModuleId']?.accessEditField\" [optionSelectForce]=\"dataModel.linkCmsModuleId\"\r\n [optionPlaceholder]=\"'ماژول'\">\r\n </app-core-module-selector>\r\n <!-- ConfigValuesJson Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['ConfigValuesJson']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['ConfigValuesJson']?.FieldConfigValuesJson }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.configValuesJson\"\r\n [disabled]=\"!fieldsInfo['ConfigValuesJson']?.accessAddField\" name=\"dataModel.configValuesJson\" #ConfigValuesJson\r\n type=\"text\" placeholder=\"ConfigValuesJson\" row=\"6\" minlength=\"0\" maxlength=\"10000\"></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.configValuesJson && fieldsInfo['ConfigValuesJson']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.configValuesJson = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['ConfigValuesJson']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">{{ ConfigValuesJson.value.length }} / 10000</mat-hint>\r\n </mat-form-field>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n <button type=\"submit\" (click)=\"onFormSubmit()\" class=\"btn btn-success\" [disabled]=\"!vform.form.valid\">\r\n <i class=\"fa fa-check-square-o\"></i> {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>","\r\nimport {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n FilterModel,\r\n FilterDataModel,\r\n CoreSiteCategoryCmsModuleService,\r\n CoreSiteCategoryCmsModuleModel,\r\n CoreModuleModel,\r\n AccessModel,\r\n DataFieldInfoModel,\r\n CoreSiteCategoryModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n Inject,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { StepperSelectionEvent } from '@angular/cdk/stepper';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-core-sitecategorycmsmodule-edit',\r\n templateUrl: './edit.component.html',\r\n styleUrls: ['./edit.component.scss'],\r\n})\r\nexport class CoreSiteCategoryCmsModuleEditComponent implements OnInit {\r\n requestLinkCmsModuleId = 0;\r\n requestLinkCmsSiteCategoryId = 0;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreSiteCategoryCmsModuleEditComponent>,\r\n public coreEnumService: CoreEnumService,\r\n public coreSiteCategoryCmsModuleService: CoreSiteCategoryCmsModuleService,\r\n private cmsToastrService: CmsToastrService,\r\n public translate: TranslateService,\r\n private cdr: ChangeDetectorRef,\r\n private publicHelper: PublicHelper,\r\n\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n if (data) {\r\n this.requestLinkCmsSiteCategoryId = +data.linkCmsSiteCategoryId || 0;\r\n this.requestLinkCmsModuleId = +data.linkCmsModuleId || 0;\r\n }\r\n }\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n\r\n\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreSiteCategoryCmsModuleModel> = new ErrorExceptionResult<CoreSiteCategoryCmsModuleModel>();\r\n dataModel: CoreSiteCategoryCmsModuleModel = new CoreSiteCategoryCmsModuleModel();\r\n\r\n\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n\r\n fileManagerOpenForm = false;\r\n\r\n dataAccessModel: AccessModel;\r\n\r\n ngOnInit(): void {\r\n if (this.requestLinkCmsSiteCategoryId <= 0 || this.requestLinkCmsModuleId <= 0) {\r\n this.cmsToastrService.typeErrorComponentAction();\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n return;\r\n }\r\n\r\n this.getEnumRecordStatus();\r\n this.DataGetOneContent();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n\r\n DataGetOneContent(): void {\r\n\r\n\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.Receiving_Information_From_The_Server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n\r\n const filteModelContent = new FilterModel();\r\n /*make filter*/\r\n let filter = new FilterDataModel();\r\n filter.propertyName = 'LinkCmsSiteCategoryId';\r\n filter.value = this.requestLinkCmsSiteCategoryId;\r\n filteModelContent.filters.push(filter);\r\n /*make filter*/\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'LinkCmsModuleId';\r\n filter.value = this.requestLinkCmsModuleId;\r\n filteModelContent.filters.push(filter);\r\n\r\n filteModelContent.accessLoad = true;\r\n /*ÙŽAccess Field*/\r\n this.coreSiteCategoryCmsModuleService.setAccessLoad();\r\n\r\n this.coreSiteCategoryCmsModuleService.ServiceGetAll(filteModelContent).subscribe({\r\n next: (ret) => {\r\n\r\n /*ÙŽAccess Field*/\r\n this.dataAccessModel = ret.access;\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n this.dataModel = ret.item;\r\n if (ret.isSuccess) {\r\n if (ret.listItems && ret.listItems.length > 0) {\r\n this.dataModel = ret.listItems[0];\r\n this.formInfo.formTitle = this.formInfo.formTitle + ' ' + ret.item.linkCmsModuleId + '<==>' + ret.item.linkCmsSiteCategoryId;\r\n this.formInfo.formAlert = '';\r\n }\r\n else {\r\n this.cmsToastrService.typeErrorMessage(this.translate.instant('MESSAGE.Module_not_found_for_editing'));\r\n }\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n DataEditContent(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.sending_information_to_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName, this.translate.instant('MESSAGE.sending_information_to_the_server'));\r\n\r\n this.coreSiteCategoryCmsModuleService.ServiceEdit(this.dataModel).subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.dataModelResult = ret;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_completed_successfully');\r\n this.cmsToastrService.typeSuccessEdit();\r\n this.dialogRef.close({ dialogChangedDate: true });\r\n\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onActionSiteCategorySelect(model: CoreSiteCategoryModel): void {\r\n this.dataModel.linkCmsSiteCategoryId = null;\r\n if (model && model.id > 0) {\r\n this.dataModel.linkCmsSiteCategoryId = model.id;\r\n }\r\n }\r\n onActionSelectorModuleSelect(model: CoreModuleModel): void {\r\n this.dataModel.linkCmsModuleId = null;\r\n if (model && model.id > 0) {\r\n this.dataModel.linkCmsModuleId = model.id;\r\n }\r\n }\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n return;\r\n }\r\n this.formInfo.formSubmitAllow = false;\r\n this.DataEditContent();\r\n }\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n onStepClick(event: StepperSelectionEvent, stepper: MatStepper): void {\r\n if (event.previouslySelectedIndex < event.selectedIndex) {\r\n if (!this.formGroup.valid) {\r\n this.cmsToastrService.typeErrorFormInvalid();\r\n setTimeout(() => {\r\n stepper.selectedIndex = event.previouslySelectedIndex;\r\n // stepper.previous();\r\n }, 10);\r\n }\r\n }\r\n }\r\n}\r\n","<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"{{fieldsInfo['RecordStatus']?.fieldTitle}}\" [(ngModel)]=\"dataModel.recordStatus\"\r\n name=\"dataModel.recordStatus\" #RecordStatus=\"ngModel\" panelClass=\"recordStatus-{{ dataModel.recordStatus }}\"\r\n required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumRecordStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">{{'TITLE.SELECT_STATUS' | translate}}</mat-hint>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n RecordStatus is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <!-- LinkCmsSiteId Field -->\r\n <app-core-sitecategory-selector (optionChange)=\"onActionSiteCategorySelect($event)\" [optionDisabled]=\"false\"\r\n [(loading)]=\"loading\" [optionSelectForce]=\"dataModel.linkCmsSiteCategoryId\"\r\n [optionPlaceholder]=\"'دسته بندی سایت'\">\r\n </app-core-sitecategory-selector>\r\n <!-- LinkModuleId Field -->\r\n <app-core-module-selector (optionChange)=\"onActionSelectorModuleSelect($event)\" [optionDisabled]=\"false\"\r\n [(loading)]=\"loading\" [optionSelectFirstItem]=\"true\" [optionSelectForce]=\"dataModel.linkCmsModuleId\"\r\n [optionPlaceholder]=\"'ماژول'\">\r\n </app-core-module-selector>\r\n <!-- ConfigValuesJson Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['ConfigValuesJson']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['ConfigValuesJson']?.FieldConfigValuesJson }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.configValuesJson\"\r\n [disabled]=\"!fieldsInfo['ConfigValuesJson']?.accessAddField\" name=\"dataModel.configValuesJson\" #ConfigValuesJson\r\n type=\"text\" placeholder=\"ConfigValuesJson\" row=\"6\" minlength=\"0\" maxlength=\"10000\"></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.configValuesJson && fieldsInfo['ConfigValuesJson']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.configValuesJson = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['ConfigValuesJson']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">{{ ConfigValuesJson.value.length }} / 10000</mat-hint>\r\n </mat-form-field>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n <button type=\"submit\" (click)=\"onFormSubmit()\" class=\"btn btn-success\" [disabled]=\"!vform.form.valid\">\r\n <i class=\"fa fa-check-square-o\"></i> {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>","\r\nimport {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreSiteCategoryCmsModuleModel,\r\n CoreSiteCategoryCmsModuleService,\r\n CoreModuleModel,\r\n AccessModel,\r\n DataFieldInfoModel,\r\n CoreSiteCategoryModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n Inject,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-core-sitecategorycmsmodule-add',\r\n templateUrl: './add.component.html',\r\n styleUrls: ['./add.component.scss'],\r\n})\r\nexport class CoreSiteCategoryCmsModuleAddComponent implements OnInit {\r\n requestLinkCmsModuleId = 0;\r\n requestLinkCmsSiteCategoryId = 0;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreSiteCategoryCmsModuleAddComponent>,\r\n public coreEnumService: CoreEnumService,\r\n public coreSiteCategoryCmsModuleService: CoreSiteCategoryCmsModuleService,\r\n private cmsToastrService: CmsToastrService,\r\n private publicHelper: PublicHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n if (data) {\r\n this.requestLinkCmsSiteCategoryId = +data.linkCmsSiteCategoryId || 0;\r\n this.requestLinkCmsModuleId = +data.linkCmsModuleId || 0;\r\n }\r\n\r\n if (this.requestLinkCmsSiteCategoryId > 0) {\r\n this.dataModel.linkCmsSiteCategoryId = this.requestLinkCmsSiteCategoryId;\r\n }\r\n if (this.requestLinkCmsModuleId > 0) {\r\n this.dataModel.linkCmsModuleId = this.requestLinkCmsModuleId;\r\n }\r\n }\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n\r\n dataAccessModel: AccessModel;\r\n\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreSiteCategoryCmsModuleModel> = new ErrorExceptionResult<CoreSiteCategoryCmsModuleModel>();\r\n dataModel: CoreSiteCategoryCmsModuleModel = new CoreSiteCategoryCmsModuleModel();\r\n\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n\r\n fileManagerOpenForm = false;\r\n\r\n\r\n ngOnInit(): void {\r\n this.getEnumRecordStatus();\r\n this.DataGetAccess();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n\r\n DataGetAccess(): void {\r\n this.coreSiteCategoryCmsModuleService\r\n .ServiceViewModel()\r\n .subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.dataAccessModel = ret.access;\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n } else {\r\n this.cmsToastrService.typeErrorGetAccess(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeErrorGetAccess(er);\r\n }\r\n }\r\n );\r\n }\r\n\r\n DataAddContent(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.sending_information_to_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreSiteCategoryCmsModuleService.ServiceAdd(this.dataModel).subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.dataModelResult = ret;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_completed_successfully');\r\n this.cmsToastrService.typeSuccessAdd();\r\n this.dialogRef.close({ dialogChangedDate: true });\r\n\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n return;\r\n }\r\n this.formInfo.formSubmitAllow = false;\r\n this.DataAddContent();\r\n }\r\n onActionSiteCategorySelect(model: CoreSiteCategoryModel): void {\r\n this.dataModel.linkCmsSiteCategoryId = null;\r\n if (model && model.id > 0) {\r\n this.dataModel.linkCmsSiteCategoryId = model.id;\r\n }\r\n }\r\n onActionSelectorModuleSelect(model: CoreModuleModel): void {\r\n this.dataModel.linkCmsModuleId = null;\r\n if (model && model.id > 0) {\r\n this.dataModel.linkCmsModuleId = model.id;\r\n }\r\n }\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n}\r\n","<app-cms-html-list [optionLoading]=\"loading\" [optionTreeDisplay]=\"false\">\r\n <ng-container cms-tree>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n --------------------------------------\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n </ng-container>\r\n <ng-container cms-header>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </ng-container>\r\n <ng-container cms-action>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n <button *ngIf=\"dataModelResult.access.accessAddRow \" (click)=\"onActionbuttonNewRow()\" type=\"button\"\r\n class=\"btn btn-outline-primary\" id=\"openModalButton\" data-toggle=\"modal\" data-target=\"#categoryModal\">{{'ACTION.ADD' |\r\n translate}}</button>\r\n <button *ngIf=\"dataModelResult.access.accessEditRow && tableRowSelected.linkCmsSiteCategoryId\"\r\n (click)=\"onActionbuttonEditRow()\" type=\"button\" class=\"btn btn-outline-warning\" data-toggle=\"modal\"\r\n data-target=\"#categoryModal\">{{'ACTION.EDIT' | translate}}</button>\r\n <button *ngIf=\"dataModelResult.access.accessDeleteRow && tableRowSelected.linkCmsSiteCategoryId>0\"\r\n (click)=\"onActionbuttonDeleteRow()\" type=\"button\" class=\"btn btn-outline-danger\">{{'ACTION.DELETE' | translate}}</button>\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle [(ngModel)]=\"optionsSearch.data.show\">{{'ACTION.SEARCH' | translate}}</mat-slide-toggle>\r\n </a>\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle (click)=\"onActionbuttonStatist()\">{{'ACTION.STATIST' | translate}}\r\n </mat-slide-toggle>\r\n </a>\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle (click)=\"onActionbuttonExport()\">{{'ACTION.EXPORTFILE' | translate}}\r\n </mat-slide-toggle>\r\n </a>\r\n <button (click)=\"onActionbuttonReload()\" type=\"button\" class=\"btn btn-outline-secondary BTN\">\r\n <mat-icon style=\"font-size: 20px;margin: -1px;\" title=\"{{'ACTION.RELOAD' | translate}}\">refresh</mat-icon>\r\n </button>\r\n <button (click)=\"onActionBackToParent()\" *ngIf=\"this.requestLinkCmsSiteCategoryId>0\" type=\"button\"\r\n class=\"btn btn-outline-success BTN\">{{'ACTION.BACK' | translate}}</button>\r\n <button (click)=\"onActionBackToParentModule()\" *ngIf=\"this.requestLinkCmsModuleId>0\" type=\"button\"\r\n class=\"btn btn-outline-success BTN\">{{'ACTION.BACK' | translate}}</button>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n </ng-container>\r\n <ng-container cms-action-area>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n <app-cms-search-list [(options)]=\"optionsSearch\"></app-cms-search-list>\r\n <app-cms-export-list [(options)]=\"optionsExport\"></app-cms-export-list>\r\n <app-cms-statist-list [(options)]=\"optionsStatist\"></app-cms-statist-list>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n </ng-container>\r\n <ng-container cms-body>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-table [dataSource]=\"tableSource\" matSort #tableSort=\"matSort\" (matSortChange)=\"onTableSortData(tableSort)\">\r\n\r\n <!-- LinkCmsModuleId Column -->\r\n <ng-container matColumnDef=\"LinkCmsModuleId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['LinkCmsModuleId']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.linkCmsModuleId}} </mat-cell>\r\n </ng-container>\r\n <!-- LinkCmsSiteCategoryId Column -->\r\n <ng-container matColumnDef=\"LinkCmsSiteCategoryId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['LinkCmsSiteCategoryId']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.linkCmsSiteCategoryId}} </mat-cell>\r\n </ng-container>\r\n <!-- RecordStatus Column -->\r\n <ng-container matColumnDef=\"RecordStatus\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['RecordStatus']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> <i [ngClass]=\"row.recordStatus|statusClass\" ></i>\r\n <select matNativeControl cmsRecordStatusSelfSave [contentService]=\"contentService\" [row]=\"row\" [ngStyle]=\"{'display': row.id === tableRowSelected.id ? '' : 'none' }\">\r\n </select> </mat-cell>\r\n </ng-container>\r\n <!-- virtual_CmsSiteCategory.title Column -->\r\n <ng-container matColumnDef=\"virtual_CmsSiteCategory.title\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{'TITLE.SITE_CATEGORY' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.virtual_CmsSiteCategory.title}} </mat-cell>\r\n </ng-container>\r\n <!-- virtual_CmsModule.title Column -->\r\n <ng-container matColumnDef=\"virtual_CmsModule.title\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{'TITLE.MODULE' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.virtual_CmsModule.title}} </mat-cell>\r\n </ng-container>\r\n\r\n\r\n <!-- Action Column -->\r\n <ng-container matColumnDef=\"Action\">\r\n <mat-header-cell *matHeaderCellDef> {{'TITLE.OPTION' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=' Action'>\r\n <!-- Action Menu -->\r\n <button mat-icon-button [matMenuTriggerFor]=\"actionMenu\" aria-label=\"Action Menu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #actionMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"onActionbuttonEditRow(row)\" *ngIf=\"dataModelResult.access.accessEditRow\">\r\n <mat-icon>mode_edit</mat-icon>\r\n <span>{{'ACTION.EDIT' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonDeleteRow(row)\" *ngIf=\"dataModelResult.access.accessDeleteRow\">\r\n <mat-icon>delete_forever</mat-icon>\r\n <span>{{'ACTION.DELETE' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonConfigMainAdminRow(row)\"\r\n *ngIf=\"tokenInfo.userAccessAdminAllowToProfessionalData\">\r\n <mat-icon>extension</mat-icon>\r\n <span>تنظیمات مدیریتی مازول</span>\r\n </button>\r\n </mat-menu>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"tabledisplayedColumns\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns: tabledisplayedColumns;\" (click)=\"onActionTableRowSelect(row)\"\r\n [ngStyle]=\"{'background':( row.linkCmsModuleId === tableRowSelected.linkCmsModuleId && row.linkCmsSiteCategoryId===tableRowSelected.linkCmsSiteCategoryId )? '#d3d3da' :'' }\">\r\n </mat-row>\r\n </mat-table>\r\n\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </ng-container>\r\n <ng-container cms-footer>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <mat-paginator #paginator [length]=\"(dataModelResult.totalRowCount)\"\r\n [pageIndex]=\"(dataModelResult.currentPageNumber-1)\" [pageSize]=\"dataModelResult.rowPerPage\"\r\n [pageSizeOptions]=\"[5, 10, 20, 100]\" (page)=\"onTablePageingData($event)\"></mat-paginator>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </ng-container>\r\n</app-cms-html-list>","\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport {\r\n CoreSiteCategoryCmsModuleModel,\r\n CoreSiteCategoryCmsModuleService,\r\n EnumSortType,\r\n ErrorExceptionResult,\r\n FilterModel,\r\n TokenInfoModel,\r\n FilterDataModel,\r\n EnumRecordStatus,\r\n DataFieldInfoModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { ComponentOptionSearchModel } from 'src/app/core/cmsComponentModels/base/componentOptionSearchModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ComponentOptionExportModel } from 'src/app/core/cmsComponentModels/base/componentOptionExportModel';\r\nimport { ComponentOptionStatistModel } from 'src/app/core/cmsComponentModels/base/componentOptionStatistModel';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { Subscription } from 'rxjs';\r\nimport { CmsConfirmationDialogService } from 'src/app/shared/cms-confirmation-dialog/cmsConfirmationDialog.service';\r\nimport { CoreSiteCategoryCmsModuleEditComponent } from '../edit/edit.component';\r\nimport { CoreSiteCategoryCmsModuleAddComponent } from '../add/add.component';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-core-sitecategorycmsmodule-list',\r\n templateUrl: './list.component.html',\r\n})\r\nexport class CoreSiteCategoryCmsModuleListComponent implements OnInit, OnDestroy {\r\n requestLinkCmsModuleId = 0;\r\n requestLinkCmsSiteCategoryId = 0;\r\n constructor(\r\n public contentService: CoreSiteCategoryCmsModuleService,\r\n public publicHelper: PublicHelper,\r\n private cmsToastrService: CmsToastrService,\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n private tokenHelper: TokenHelper,\r\n private cmsConfirmationDialogService: CmsConfirmationDialogService,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n public dialog: MatDialog) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.optionsSearch.parentMethods = {\r\n onSubmit: (model) => this.onSubmitOptionsSearch(model),\r\n };\r\n this.optionsExport.parentMethods = {\r\n onSubmit: (model) => this.onSubmitOptionExport(model),\r\n };\r\n /*filter Sort*/\r\n this.filteModelContent.sortColumn = 'Id';\r\n this.filteModelContent.sortType = EnumSortType.Descending;\r\n this.requestLinkCmsModuleId = + Number(this.activatedRoute.snapshot.paramMap.get('LinkCmsModuleId'));\r\n this.requestLinkCmsSiteCategoryId = + Number(this.activatedRoute.snapshot.paramMap.get('LinkCmsSiteCategoryId'));\r\n if (this.requestLinkCmsModuleId > 0) {\r\n const filter = new FilterDataModel();\r\n filter.propertyName = 'LinkCmsModuleId';\r\n filter.value = this.requestLinkCmsModuleId;\r\n this.filteModelContent.filters.push(filter);\r\n }\r\n if (this.requestLinkCmsSiteCategoryId > 0) {\r\n const filter = new FilterDataModel();\r\n filter.propertyName = 'LinkCmsSiteCategoryId';\r\n filter.value = this.requestLinkCmsSiteCategoryId;\r\n this.filteModelContent.filters.push(filter);\r\n }\r\n }\r\n comment: string;\r\n author: string;\r\n dataSource: any;\r\n flag = false;\r\n tableContentSelected = [];\r\n\r\n filteModelContent = new FilterModel();\r\n dataModelResult: ErrorExceptionResult<CoreSiteCategoryCmsModuleModel> = new ErrorExceptionResult<CoreSiteCategoryCmsModuleModel>();\r\n optionsSearch: ComponentOptionSearchModel = new ComponentOptionSearchModel();\r\n optionsStatist: ComponentOptionStatistModel = new ComponentOptionStatistModel();\r\n optionsExport: ComponentOptionExportModel = new ComponentOptionExportModel();\r\n tokenInfo = new TokenInfoModel();\r\n loading = new ProgressSpinnerModel();\r\n tableRowsSelected: Array<CoreSiteCategoryCmsModuleModel> = [];\r\n tableRowSelected: CoreSiteCategoryCmsModuleModel = new CoreSiteCategoryCmsModuleModel();\r\n tableSource: MatTableDataSource<CoreSiteCategoryCmsModuleModel> = new MatTableDataSource<CoreSiteCategoryCmsModuleModel>();\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n\r\n tabledisplayedColumns: string[] = [\r\n 'LinkCmsModuleId',\r\n 'LinkCmsSiteCategoryId',\r\n 'RecordStatus',\r\n 'virtual_CmsSiteCategory.title',\r\n 'virtual_CmsModule.title',\r\n 'Action'\r\n ];\r\n\r\n\r\n\r\n expandedElement: CoreSiteCategoryCmsModuleModel | null;\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n ngOnInit(): void {\r\n this.filteModelContent.sortColumn = 'LinkCmsModuleId';\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n this.DataGetAll();\r\n });\r\n\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.tokenInfo = next;\r\n this.DataGetAll();\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n DataGetAll(): void {\r\n this.tableRowsSelected = [];\r\n this.tableRowSelected = new CoreSiteCategoryCmsModuleModel();\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName, this.translate.instant('MESSAGE.get_information_list'));\r\n this.filteModelContent.accessLoad = true;\r\n /*filter CLone*/\r\n const filterModel = JSON.parse(JSON.stringify(this.filteModelContent));\r\n /*filter CLone*/\r\n this.contentService.ServiceGetAllEditor(filterModel).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n this.dataModelResult = ret;\r\n this.tableSource.data = ret.listItems;\r\n if (this.optionsSearch.childMethods) {\r\n this.optionsSearch.childMethods.setAccess(ret.access);\r\n }\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n onTableSortData(sort: MatSort): void {\r\n if (this.tableSource && this.tableSource.sort && this.tableSource.sort.active === sort.active) {\r\n if (this.tableSource.sort.start === 'asc') {\r\n sort.start = 'desc';\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Descending;\r\n } else if (this.tableSource.sort.start === 'desc') {\r\n this.filteModelContent.sortColumn = '';\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n } else {\r\n sort.start = 'desc';\r\n }\r\n } else {\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n }\r\n this.tableSource.sort = sort;\r\n this.filteModelContent.currentPageNumber = 0;\r\n this.DataGetAll();\r\n }\r\n onTablePageingData(event?: PageEvent): void {\r\n this.filteModelContent.currentPageNumber = event.pageIndex + 1;\r\n this.filteModelContent.rowPerPage = event.pageSize;\r\n this.DataGetAll();\r\n }\r\n\r\n\r\n onActionbuttonNewRow(): void {\r\n\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessAddRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessAdd();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreSiteCategoryCmsModuleAddComponent, {\r\n height: '90%',\r\n data: {\r\n LinkCmsModuleId: this.requestLinkCmsModuleId,\r\n LinkCmsSiteCategoryId: this.requestLinkCmsSiteCategoryId\r\n }\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n this.DataGetAll();\r\n }\r\n });\r\n }\r\n\r\n onActionbuttonEditRow(model: CoreSiteCategoryCmsModuleModel = this.tableRowSelected): void {\r\n if (!model || !model.linkCmsModuleId || model.linkCmsModuleId === 0 ||\r\n !model.linkCmsSiteCategoryId || model.linkCmsSiteCategoryId === 0) {\r\n this.cmsToastrService.typeErrorSelectedRow();\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessEditRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessEdit();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreSiteCategoryCmsModuleEditComponent, {\r\n height: '90%',\r\n data: {\r\n LinkCmsModuleId: this.tableRowSelected.linkCmsModuleId,\r\n LinkCmsSiteCategoryId: this.tableRowSelected.linkCmsSiteCategoryId\r\n }\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n this.DataGetAll();\r\n }\r\n });\r\n }\r\n onActionbuttonDeleteRow(model: CoreSiteCategoryCmsModuleModel = this.tableRowSelected): void {\r\n if (!model || !model.linkCmsModuleId || model.linkCmsModuleId === 0 ||\r\n !model.linkCmsSiteCategoryId || model.linkCmsSiteCategoryId === 0) {\r\n const emessage = this.translate.instant('MESSAGE.no_row_selected_to_delete');\r\n this.cmsToastrService.typeErrorSelected(emessage); return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessDeleteRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessDelete();\r\n return;\r\n }\r\n const title = this.translate.instant('MESSAGE.Please_Confirm');\r\n const message = this.translate.instant('MESSAGE.Do_you_want_to_delete_this_content') + '?' + '<br> ( '\r\n + this.tableRowSelected.virtual_CmsModule.title + '<==>' + this.tableRowSelected.virtual_CmsSiteCategory.title + ' ) ';\r\n this.cmsConfirmationDialogService.confirm(title, message)\r\n .then((confirmed) => {\r\n if (confirmed) {\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.contentService.ServiceDeleteEntity(this.tableRowSelected).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.cmsToastrService.typeSuccessRemove();\r\n this.DataGetAll();\r\n } else {\r\n this.cmsToastrService.typeErrorRemove();\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n )\r\n .catch(() => {\r\n // console.log('User dismissed the dialog (e.g., by using ESC, clicking the cross icon, or clicking outside the dialog)')\r\n }\r\n );\r\n\r\n }\r\n\r\n onActionbuttonGoToSiteCategoryCmsModuleList(model: CoreSiteCategoryCmsModuleModel = this.tableRowSelected): void {\r\n if (!model || !model.linkCmsModuleId || model.linkCmsModuleId === 0 ||\r\n !model.linkCmsSiteCategoryId || model.linkCmsSiteCategoryId === 0) {\r\n const message = this.translate.instant('MESSAGE.no_row_selected_to_display');\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n this.router.navigate(['/core/siteSiteCategoryCmsModule/', this.tableRowSelected.id]);\r\n }\r\n onActionbuttonStatist(): void {\r\n this.optionsStatist.data.show = !this.optionsStatist.data.show;\r\n if (!this.optionsStatist.data.show) {\r\n return;\r\n }\r\n const statist = new Map<string, number>();\r\n statist.set('Active', 0);\r\n statist.set('All', 0);\r\n this.contentService.ServiceGetCount(this.filteModelContent).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n statist.set('All', ret.totalRowCount);\r\n this.optionsStatist.childMethods.setStatistValue(statist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n\r\n const filterStatist1 = JSON.parse(JSON.stringify(this.filteModelContent));\r\n const fastfilter = new FilterDataModel();\r\n fastfilter.propertyName = 'RecordStatus';\r\n fastfilter.value = EnumRecordStatus.Available;\r\n filterStatist1.filters.push(fastfilter);\r\n this.contentService.ServiceGetCount(filterStatist1).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n statist.set('Active', ret.totalRowCount);\r\n this.optionsStatist.childMethods.setStatistValue(statist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n\r\n }\r\n onActionbuttonConfigMainAdminRow(model: CoreSiteCategoryCmsModuleModel = this.tableRowSelected): void {\r\n if (!model || !model.linkCmsModuleId || model.linkCmsModuleId === 0\r\n || !model.linkCmsSiteCategoryId || model.linkCmsSiteCategoryId === 0) {\r\n const emessage = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(emessage);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n this.router.navigate([model.virtual_CmsModule.className + '/config/mainadmin/']);\r\n }\r\n onActionbuttonExport(): void {\r\n this.optionsExport.data.show = !this.optionsExport.data.show;\r\n this.optionsExport.childMethods.setExportFilterModel(this.filteModelContent);\r\n }\r\n onSubmitOptionExport(model: FilterModel): void {\r\n const exportlist = new Map<string, string>();\r\n exportlist.set('Download', 'loading ... ');\r\n this.contentService.ServiceExportFile(model).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n exportlist.set('Download', ret.linkFile);\r\n this.optionsExport.childMethods.setExportLinkFile(exportlist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n }\r\n\r\n onActionbuttonReload(): void {\r\n this.DataGetAll();\r\n }\r\n onSubmitOptionsSearch(model: any): void {\r\n this.filteModelContent.filters = model;\r\n this.DataGetAll();\r\n }\r\n onActionTableRowSelect(row: CoreSiteCategoryCmsModuleModel): void {\r\n this.tableRowSelected = row;\r\n }\r\n onActionBackToParent(): void {\r\n this.router.navigate(['/core/sitecategory/']);\r\n }\r\n onActionBackToParentModule(): void {\r\n this.router.navigate(['/core/module/']);\r\n }\r\n}\r\n","import {NgModule} from '@angular/core';\r\nimport {Routes, RouterModule} from '@angular/router';\r\nimport { CoreSiteCategoryCmsModuleListComponent } from './list/list.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n children: [\r\n {\r\n path: '',\r\n component: CoreSiteCategoryCmsModuleListComponent\r\n },\r\n {\r\n path: 'LinkCmsModuleId/:LinkCmsModuleId',\r\n component: CoreSiteCategoryCmsModuleListComponent\r\n },\r\n {\r\n path: 'LinkCmsSiteCategoryId/:LinkCmsSiteCategoryId',\r\n component: CoreSiteCategoryCmsModuleListComponent\r\n }\r\n ]\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class CoreSiteCategoryCmsModuleRouting {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport {\r\n CoreModuleService,\r\n CoreSiteCategoryCmsModuleService,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SharedModule } from 'src/app/shared.module';\r\nimport { CoreSiteCategoryCmsModuleTreeComponent } from './tree/tree.component';\r\nimport { CoreSiteCategoryCmsModuleSelectorComponent } from './selector/selector.component';\r\nimport { CoreSiteCategoryCmsModuleListComponent } from './list/list.component';\r\n\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\n\r\nimport { CoreSiteCategoryCmsModuleComponent } from './coreSiteCategoryCmsModule.component';\r\nimport { CoreSiteCategoryCmsModuleRouting } from './coreSiteCategoryCmsModule.routing';\r\nimport { CoreSiteCategoryCmsModuleListViewComponent } from './listview/listview.component';\r\nimport { CmsConfirmationDialogService } from 'src/app/shared/cms-confirmation-dialog/cmsConfirmationDialog.service';\r\nimport { CoreSiteCategoryCmsModuleAddComponent } from './add/add.component';\r\nimport { CoreSiteCategoryCmsModuleEditComponent } from './edit/edit.component';\r\nimport { CoreModuleModule } from '../module/coreModule.module';\r\nimport { CoreSiteCategoryCmsModule } from '../site-category/coreSiteCategory.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CoreSiteCategoryCmsModuleComponent,\r\n CoreSiteCategoryCmsModuleListComponent,\r\n CoreSiteCategoryCmsModuleListViewComponent,\r\n CoreSiteCategoryCmsModuleAddComponent,\r\n CoreSiteCategoryCmsModuleEditComponent,\r\n\r\n CoreSiteCategoryCmsModuleSelectorComponent,\r\n CoreSiteCategoryCmsModuleTreeComponent,\r\n ],\r\n exports: [\r\n CoreSiteCategoryCmsModuleComponent,\r\n CoreSiteCategoryCmsModuleListComponent,\r\n CoreSiteCategoryCmsModuleListViewComponent,\r\n CoreSiteCategoryCmsModuleAddComponent,\r\n CoreSiteCategoryCmsModuleEditComponent,\r\n\r\n CoreSiteCategoryCmsModuleSelectorComponent,\r\n CoreSiteCategoryCmsModuleTreeComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CoreSiteCategoryCmsModuleRouting,\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: 'never' }),\r\n SharedModule.forRoot(),\r\n AngularEditorModule,\r\n \r\n CoreModuleModule,\r\n CoreSiteCategoryCmsModule,\r\n ],\r\n providers: [\r\n CoreSiteCategoryCmsModuleService,\r\n CmsConfirmationDialogService,\r\n CoreModuleService,\r\n ]\r\n})\r\nexport class CoreSiteCategoryCmsModuleModule {\r\n}\r\n","<ul>\r\n <li *ngFor=\"let item of dataModelResult.listItems,index as i \">\r\n <mat-checkbox (change)=\"onActionSelect(item)\" [checked]=\"fieldsStatus.get(item.id)\" [disabled]=\"optionDisabled\">\r\n <img *ngIf=\"item.linkMainImageIdSrc\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\" aria-hidden src=\"{{item.linkMainImageIdSrc | cmsthumbnail}}\" height=\"25\" width=\"25\" />\r\n {{item.title}}\r\n </mat-checkbox>\r\n </li>\r\n</ul>\r\n","\r\nimport { Component, OnInit, Input, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\nimport { CoreEnumService, ErrorExceptionResult, FilterModel, CoreModuleModel, CoreModuleService } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { Output } from '@angular/core';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n\r\n@Component({\r\n selector: 'app-core-module-selectionlist',\r\n templateUrl: './selectionlist.component.html',\r\n})\r\nexport class CoreModuleSelectionlistComponent implements OnInit {\r\n\r\n constructor(\r\n public coreEnumService: CoreEnumService,\r\n public categoryService: CoreModuleService,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n private cmsToastrService: CmsToastrService) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n }\r\n dataModelResult: ErrorExceptionResult<CoreModuleModel> = new ErrorExceptionResult<CoreModuleModel>();\r\n dataModelSelect: CoreModuleModel[] = [];\r\n dataIdsSelect: number[] = [];\r\n loading = new ProgressSpinnerModel();\r\n formControl = new FormControl();\r\n fieldsStatus: Map<number, boolean> = new Map<number, boolean>();\r\n\r\n @Input() optionDisabled = false;\r\n @Input() optionSelectFirstItem = false;\r\n @Input() optionPlaceholder = '';\r\n @Output() optionChange = new EventEmitter<CoreModuleModel[]>();\r\n @Output() optionSelectAdded = new EventEmitter();\r\n @Output() optionSelectRemoved = new EventEmitter();\r\n @Input() optionReload = () => this.onActionReload();\r\n @Input() set optionSelectForce(x: number[] | CoreModuleModel[]) {\r\n this.onActionSelectForce(x);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.DataGetAll();\r\n }\r\n\r\n DataGetAll(): void {\r\n const filteModel = new FilterModel();\r\n filteModel.rowPerPage = 50;\r\n filteModel.accessLoad = true;\r\n // this.loading.backdropEnabled = false;\r\n\r\n\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.categoryService.ServiceGetAll(filteModel).subscribe({\r\n next: (ret) => {\r\n // this.fieldsStatus = new Map<number, boolean>();\r\n if (ret.isSuccess) {\r\n this.dataModelResult = ret;\r\n this.dataModelResult.listItems.forEach((el) => this.fieldsStatus.set(el.id, false));\r\n this.dataIdsSelect.forEach((el) => this.fieldsStatus.set(el, true));\r\n this.dataModelResult.listItems.forEach((el) => {\r\n if (this.fieldsStatus.get(el.id)) {\r\n this.dataModelSelect.push(el);\r\n }\r\n });\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onActionSelect(value: CoreModuleModel): void {\r\n if (this.fieldsStatus.get(value.id)) {\r\n this.fieldsStatus.set(value.id, false);\r\n this.optionSelectRemoved.emit(value);\r\n this.dataModelSelect.splice(this.dataModelSelect.indexOf(value), 1);\r\n } else {\r\n this.fieldsStatus.set(value.id, true);\r\n this.optionSelectAdded.emit(value);\r\n this.dataModelSelect.push(value);\r\n }\r\n this.optionChange.emit(this.dataModelSelect);\r\n }\r\n\r\n\r\n onActionSelectForce(ids: number[] | CoreModuleModel[]): void {\r\n if (typeof ids === typeof Array(Number)) {\r\n ids.forEach(element => {\r\n this.dataIdsSelect.push(element);\r\n });\r\n } else if (typeof ids === typeof Array(CoreModuleModel)) {\r\n ids.forEach(element => {\r\n this.dataIdsSelect.push(element.id);\r\n });\r\n }\r\n this.dataIdsSelect.forEach((el) => this.fieldsStatus.set(el, true));\r\n }\r\n\r\n onActionReload(): void {\r\n // this.dataModelSelect = new CoreModuleModel();\r\n this.DataGetAll();\r\n }\r\n}\r\n","<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <!-- RecordStatus Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"{{fieldsInfo['RecordStatus']?.fieldTitle}}\" [(ngModel)]=\"dataModel.recordStatus\"\r\n name=\"dataModel.recordStatus\" #RecordStatus=\"ngModel\" panelClass=\"recordStatus-{{ dataModel.recordStatus }}\"\r\n required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumRecordStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">{{'TITLE.SELECT_STATUS' | translate}}</mat-hint>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n RecordStatus is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Title Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>{{fieldsInfo['Title']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.title\" name=\"dataModel.title\" #Title type=\"text\"\r\n placeholder=\"{{fieldsInfo['Title']?.fieldTitle}}\" minlength=\"3\" maxlength=\"100\" required />\r\n <mat-icon matSuffix *ngIf=\"dataModel.title\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.title = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Title.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"Title.errors?.required\">\r\n Title is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Domains Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>Domains</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.domains\" name=\"dataModel.domains\" #Domains type=\"text\"\r\n placeholder=\"domain.com\" rows=\"10\"></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.domains\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.domains = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n </mat-form-field>\r\n <!-- Description Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>{{fieldsInfo['Description']?.fieldTitle}}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.description\" name=\"dataModel.description\" #Description type=\"text\"\r\n placeholder=\"{{fieldsInfo['Description']?.fieldTitle}}\" minlength=\"1\" maxlength=\"500\" rows=5></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.description\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.description = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Description.value.length }} / 500</mat-hint>\r\n <mat-error *ngIf=\"Description.errors?.required\">\r\n Description is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- RuleHtmlBody Field -->\r\n قوانین :\r\n <angular-editor [placeholder]=\"'متن قوانین را وارد کنید ...'\" [config]=\"publicHelper.editorConfig\" id=\"main\"\r\n [(ngModel)]=\"dataModel.ruleHtmlBody\" name=\"dataModel.ruleHtmlBody\"></angular-editor>\r\n\r\n ماژل های قابل دسترس\r\n <app-core-module-selectionlist [optionSelectForce]=\"dataCoreCpMainMenuIds\" [optionDisabled]=\"false\"\r\n (optionChange)=\"onActionSelectorUserCategorySelect($event)\"\r\n (optionSelectAdded)=\"onActionSelectorUserCategorySelectAdded($event)\"\r\n (optionSelectRemoved)=\"onActionSelectorUserCategorySelectRemoved($event)\"></app-core-module-selectionlist>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n <button type=\"submit\" (click)=\"onFormSubmit()\" class=\"btn btn-success\" [disabled]=\"!vform.form.valid\">\r\n <i class=\"fa fa-check-square-o\"></i> {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>","\r\nimport {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreSiteCategoryService,\r\n CoreSiteCategoryModel,\r\n DataFieldInfoModel,\r\n CoreModuleModel,\r\n CoreSiteCategoryCmsModuleService,\r\n CoreSiteCategoryCmsModuleModel,\r\n FilterModel,\r\n FilterDataModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n Inject,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { TreeModel } from 'src/filemanager-api';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-core-sitecategory-edit',\r\n templateUrl: './edit.component.html',\r\n styleUrls: ['./edit.component.scss'],\r\n})\r\nexport class CoreSiteCategoryEditComponent implements OnInit {\r\n requestId = 0;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreSiteCategoryEditComponent>,\r\n public coreEnumService: CoreEnumService,\r\n public coreSiteCategoryService: CoreSiteCategoryService,\r\n public coreSiteCategoryCmsModuleService: CoreSiteCategoryCmsModuleService,\r\n private cmsToastrService: CmsToastrService,\r\n public publicHelper: PublicHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n if (data) {\r\n this.requestId = +data.id || 0;\r\n }\r\n\r\n this.fileManagerTree = this.publicHelper.GetfileManagerTreeConfig();\r\n }\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n selectFileTypeMainImage = ['jpg', 'jpeg', 'png'];\r\n\r\n fileManagerTree: TreeModel;\r\n appLanguage = 'fa';\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreSiteCategoryModel> = new ErrorExceptionResult<CoreSiteCategoryModel>();\r\n dataModel: CoreSiteCategoryModel = new CoreSiteCategoryModel();\r\n\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n\r\n fileManagerOpenForm = false;\r\n\r\n dataCoreCpMainMenuModel: CoreModuleModel[];\r\n dataCoreCpMainMenuIds: number[] = [];\r\n dataCoreSiteCategoryCmsModuleModel: CoreSiteCategoryCmsModuleModel[];\r\n ngOnInit(): void {\r\n if (this.requestId > 0) {\r\n this.formInfo.formTitle = this.translate.instant('TITLE.Edit');\r\n\r\n } else {\r\n this.cmsToastrService.typeErrorComponentAction();\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n return;\r\n }\r\n this.DataGetOneContent();\r\n this.DataGetAllSiteCategoryCmsModule();\r\n this.getEnumRecordStatus();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n DataGetOneContent(): void {\r\n if (this.requestId <= 0) {\r\n this.cmsToastrService.typeErrorEditRowIsNull();\r\n return;\r\n }\r\n\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.Receiving_Information_From_The_Server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreSiteCategoryService.setAccessLoad();\r\n this.coreSiteCategoryService.ServiceGetOneById(this.requestId).subscribe({\r\n next: (ret) => {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n\r\n this.dataModel = ret.item;\r\n if (ret.isSuccess) {\r\n this.formInfo.formTitle = this.formInfo.formTitle + ' ' + ret.item.title;\r\n this.formInfo.formAlert = '';\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n DataGetAllSiteCategoryCmsModule(): void {\r\n\r\n if (this.requestId <= 0) {\r\n this.cmsToastrService.typeErrorEditRowIsNull();\r\n return;\r\n }\r\n\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.Receiving_Information_From_The_Server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n const filteModelContent = new FilterModel();\r\n const filter = new FilterDataModel();\r\n filter.propertyName = 'LinkCmsSiteCategoryId';\r\n filter.value = this.requestId;\r\n filteModelContent.filters.push(filter);\r\n\r\n this.coreSiteCategoryCmsModuleService.ServiceGetAll(filteModelContent).subscribe({\r\n next: (ret) => {\r\n this.dataCoreSiteCategoryCmsModuleModel = ret.listItems;\r\n const listG: number[] = [];\r\n this.dataCoreSiteCategoryCmsModuleModel.forEach(element => {\r\n listG.push(element.linkCmsModuleId);\r\n });\r\n this.dataCoreCpMainMenuIds = listG;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = '';\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n DataEditContent(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.sending_information_to_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName, this.translate.instant('MESSAGE.sending_information_to_the_server'));\r\n\r\n this.coreSiteCategoryService.ServiceEdit(this.dataModel).subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.dataModelResult = ret;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_completed_successfully');\r\n this.cmsToastrService.typeSuccessEdit();\r\n this.dialogRef.close({ dialogChangedDate: true });\r\n\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onActionSelectorUserCategorySelect(model: CoreModuleModel[]): void {\r\n this.dataCoreCpMainMenuModel = model;\r\n }\r\n onActionSelectorUserCategorySelectAdded(model: CoreModuleModel): void {\r\n const entity = new CoreSiteCategoryCmsModuleModel();\r\n entity.linkCmsModuleId = model.id;\r\n entity.linkCmsSiteCategoryId = this.dataModel.id;\r\n\r\n this.coreSiteCategoryCmsModuleService.ServiceAdd(entity).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_in_this_group_was_successful');\r\n this.cmsToastrService.typeSuccessEdit();\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n }\r\n onActionSelectorUserCategorySelectRemoved(model: CoreModuleModel): void {\r\n const entity = new CoreSiteCategoryCmsModuleModel();\r\n entity.linkCmsModuleId = model.id;\r\n entity.linkCmsSiteCategoryId = this.dataModel.id;\r\n\r\n this.coreSiteCategoryCmsModuleService.ServiceDeleteEntity(entity).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.Deletion_from_this_group_Was_Successful');\r\n this.cmsToastrService.typeSuccessEdit();\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n }\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n return;\r\n }\r\n this.formInfo.formSubmitAllow = false;\r\n this.DataEditContent();\r\n }\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n}\r\n","<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <!-- RecordStatus Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"{{fieldsInfo['RecordStatus']?.fieldTitle}}\" [(ngModel)]=\"dataModel.recordStatus\"\r\n name=\"dataModel.recordStatus\" #RecordStatus=\"ngModel\" panelClass=\"recordStatus-{{ dataModel.recordStatus }}\"\r\n required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumRecordStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">{{'TITLE.SELECT_STATUS' | translate}}</mat-hint>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n RecordStatus is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Title Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>{{fieldsInfo['Title']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.title\" name=\"dataModel.title\" #Title type=\"text\"\r\n placeholder=\"{{fieldsInfo['Title']?.fieldTitle}}\" minlength=\"3\" maxlength=\"100\" required />\r\n <mat-icon matSuffix *ngIf=\"dataModel.title\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.title = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Title.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"Title.errors?.required\">\r\n Title is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Domains Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>Domains</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.domains\" name=\"dataModel.domains\" #Domains type=\"text\"\r\n placeholder=\"domain.com\" rows=\"10\"></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.domains\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.domains = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n </mat-form-field>\r\n <!-- Description Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>{{fieldsInfo['Description']?.fieldTitle}}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.description\" name=\"dataModel.description\" #Description type=\"text\"\r\n placeholder=\"{{fieldsInfo['Description']?.fieldTitle}}\" minlength=\"1\" maxlength=\"500\" rows=5></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.description\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.description = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Description.value.length }} / 500</mat-hint>\r\n <mat-error *ngIf=\"Description.errors?.required\">\r\n Description is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- RuleHtmlBody Field -->\r\n قوانین\r\n <angular-editor [placeholder]=\"'متن قوانین را وارد کنید ...'\" [config]=\"publicHelper.editorConfig\" id=\"main\"\r\n [(ngModel)]=\"dataModel.ruleHtmlBody\" name=\"dataModel.ruleHtmlBody\"></angular-editor>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n <button type=\"submit\" (click)=\"onFormSubmit()\" class=\"btn btn-success\" [disabled]=\"!vform.form.valid\">\r\n <i class=\"fa fa-check-square-o\"></i> {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>","\r\nimport {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreSiteCategoryService,\r\n CoreSiteCategoryModel,\r\n DataFieldInfoModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n Inject,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { NodeInterface, TreeModel } from 'src/filemanager-api';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-core-sitecategory-add',\r\n templateUrl: './add.component.html',\r\n styleUrls: ['./add.component.scss'],\r\n})\r\nexport class CoreSiteCategoryAddComponent implements OnInit {\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreSiteCategoryAddComponent>,\r\n public coreEnumService: CoreEnumService,\r\n public coreSiteCategoryService: CoreSiteCategoryService,\r\n private cmsToastrService: CmsToastrService,\r\n public publicHelper: PublicHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.fileManagerTree = this.publicHelper.GetfileManagerTreeConfig();\r\n }\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n selectFileTypeMainImage = ['jpg', 'jpeg', 'png'];\r\n\r\n fileManagerTree: TreeModel;\r\n appLanguage = 'fa';\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreSiteCategoryModel> = new ErrorExceptionResult<CoreSiteCategoryModel>();\r\n dataModel: CoreSiteCategoryModel = new CoreSiteCategoryModel();\r\n\r\n\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n\r\n fileManagerOpenForm = false;\r\n\r\n\r\n\r\n\r\n ngOnInit(): void {\r\n this.formInfo.formTitle = this.translate.instant('TITLE.ADD');\r\n this.getEnumRecordStatus();\r\n this.DataGetAccess();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n\r\n\r\n DataGetAccess(): void {\r\n this.coreSiteCategoryService\r\n .ServiceViewModel()\r\n .subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n // this.dataAccessModel = next.access;\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n } else {\r\n this.cmsToastrService.typeErrorGetAccess(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeErrorGetAccess(er);\r\n }\r\n }\r\n );\r\n }\r\n DataAddContent(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.sending_information_to_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreSiteCategoryService.ServiceAdd(this.dataModel).subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.dataModelResult = ret;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_completed_successfully');\r\n this.cmsToastrService.typeSuccessAdd();\r\n this.dialogRef.close({ dialogChangedDate: true });\r\n\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n return;\r\n }\r\n this.formInfo.formSubmitAllow = false;\r\n\r\n this.DataAddContent();\r\n\r\n\r\n }\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n}\r\n","<app-cms-html-list [optionLoading]=\"loading\" [optionTreeDisplay]=\"false\">\r\n <ng-container cms-tree>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n --------------------------------------\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n </ng-container>\r\n <ng-container cms-header>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </ng-container>\r\n <ng-container cms-action>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n <button *ngIf=\"dataModelResult.access.accessAddRow \" (click)=\"onActionbuttonNewRow()\" type=\"button\"\r\n class=\"btn btn-outline-primary\" id=\"openModalButton\" data-toggle=\"modal\" data-target=\"#categoryModal\">{{'ACTION.ADD' |\r\n translate}}</button>\r\n <button *ngIf=\"dataModelResult.access.accessEditRow && tableRowSelected.id>0\" (click)=\"onActionbuttonEditRow()\"\r\n type=\"button\" class=\"btn btn-outline-warning\" data-toggle=\"modal\" data-target=\"#categoryModal\">{{'ACTION.EDIT' |\r\n translate}}</button>\r\n <button *ngIf=\"dataModelResult.access.accessDeleteRow && tableRowSelected.id>0\" (click)=\"onActionbuttonDeleteRow()\"\r\n type=\"button\" class=\"btn btn-outline-danger\">{{'ACTION.DELETE' | translate}}</button>\r\n\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle [(ngModel)]=\"optionsSearch.data.show\">{{'ACTION.SEARCH' | translate}}</mat-slide-toggle>\r\n </a>\r\n\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle (click)=\"onActionbuttonStatist()\">{{'ACTION.STATIST' | translate}}\r\n </mat-slide-toggle>\r\n </a>\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle (click)=\"onActionbuttonExport()\">{{'ACTION.EXPORTFILE' | translate}}\r\n </mat-slide-toggle>\r\n </a>\r\n <button (click)=\"onActionbuttonReload()\" type=\"button\" class=\"btn btn-outline-secondary BTN\">\r\n <mat-icon style=\"font-size: 20px;margin: -1px;\" title=\"{{'ACTION.RELOAD' | translate}}\">refresh</mat-icon>\r\n </button>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n </ng-container>\r\n <ng-container cms-action-area>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n <app-cms-search-list [(options)]=\"optionsSearch\"></app-cms-search-list>\r\n <app-cms-export-list [(options)]=\"optionsExport\"></app-cms-export-list>\r\n <app-cms-statist-list [(options)]=\"optionsStatist\"></app-cms-statist-list>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n </ng-container>\r\n <ng-container cms-body>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-table [dataSource]=\"tableSource\" matSort #tableSort=\"matSort\" (matSortChange)=\"onTableSortData(tableSort)\">\r\n <!-- MainImageSrc Column -->\r\n <ng-container matColumnDef=\"MainImageSrc\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{'TITLE.PICTURE' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\">\r\n <img *ngIf=\"row?.mainImageSrc?.length>0\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\" aria-hidden src=\"{{row.mainImageSrc | cmsthumbnail}}\"\r\n height=\"40\" width=\"40\" />\r\n\r\n </mat-cell>\r\n </ng-container>\r\n <!-- ID Column -->\r\n <ng-container matColumnDef=\"Id\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['Id']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.id}} </mat-cell>\r\n </ng-container>\r\n <!-- linkCreatedBySiteId Column -->\r\n <ng-container matColumnDef=\"linkCreatedBySiteId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['LinkCreatedBySiteId']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.linkCreatedBySiteId}} </mat-cell>\r\n </ng-container>\r\n <!-- RecordStatus Column -->\r\n <ng-container matColumnDef=\"RecordStatus\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['RecordStatus']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> <i [ngClass]=\"row.recordStatus|statusClass\" ></i>\r\n <select matNativeControl cmsRecordStatusSelfSave [contentService]=\"contentService\" [row]=\"row\" [ngStyle]=\"{'display': row.id === tableRowSelected.id ? '' : 'none' }\">\r\n </select> </mat-cell>\r\n </ng-container>\r\n <!-- Title Column -->\r\n <ng-container matColumnDef=\"Title\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['Title']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.title}} </mat-cell>\r\n </ng-container>\r\n <!-- Domains Column -->\r\n <ng-container matColumnDef=\"Domains\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['Domains']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.domains}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Action Column -->\r\n <ng-container matColumnDef=\"Action\">\r\n <mat-header-cell *matHeaderCellDef> {{'TITLE.OPTION' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=' Action'>\r\n <!-- Action Menu -->\r\n <button mat-icon-button [matMenuTriggerFor]=\"actionMenu\" aria-label=\"Action Menu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #actionMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"onActionbuttonEditRow(row)\" *ngIf=\"dataModelResult.access.accessEditRow\">\r\n <mat-icon>mode_edit</mat-icon>\r\n <span>{{'ACTION.EDIT' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonDeleteRow(row)\" *ngIf=\"dataModelResult.access.accessDeleteRow\">\r\n <mat-icon>delete_forever</mat-icon>\r\n <span>{{'ACTION.DELETE' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonModuleList(row)\">\r\n <mat-icon>view_module</mat-icon>\r\n <span>ماژول ها</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonSiteList(row)\">\r\n <mat-icon>view_module</mat-icon>\r\n <span>سایت ها</span>\r\n </button>\r\n </mat-menu>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"tabledisplayedColumns\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns: tabledisplayedColumns;\" (click)=\"onActionTableRowSelect(row)\"\r\n [ngStyle]=\"{'background': row.id === tableRowSelected.id ? '#d3d3da' : '' }\">\r\n </mat-row>\r\n </mat-table>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </ng-container>\r\n <ng-container cms-footer>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <mat-paginator #paginator [length]=\"(dataModelResult.totalRowCount)\"\r\n [pageIndex]=\"(dataModelResult.currentPageNumber-1)\" [pageSize]=\"dataModelResult.rowPerPage\"\r\n [pageSizeOptions]=\"[5, 10, 20, 100]\" (page)=\"onTablePageingData($event)\"></mat-paginator>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </ng-container>\r\n</app-cms-html-list>","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { CoreSiteCategoryListComponent } from './list/list.component';\r\n// import { CoreSiteCategoryCmsModuleListComponent } from './moduleList/moduleList.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n children: [\r\n {\r\n path: '',\r\n component: CoreSiteCategoryListComponent\r\n },\r\n\r\n ]\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class CoreSiteCategoryRouting {\r\n}\r\n","\r\nimport { Router } from '@angular/router';\r\nimport { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport {\r\n CoreSiteCategoryModel,\r\n CoreSiteCategoryService,\r\n EnumSortType,\r\n ErrorExceptionResult,\r\n FilterModel,\r\n TokenInfoModel,\r\n FilterDataModel,\r\n EnumRecordStatus,\r\n DataFieldInfoModel\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { ComponentOptionSearchModel } from 'src/app/core/cmsComponentModels/base/componentOptionSearchModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ComponentOptionExportModel } from 'src/app/core/cmsComponentModels/base/componentOptionExportModel';\r\nimport { ComponentOptionStatistModel } from 'src/app/core/cmsComponentModels/base/componentOptionStatistModel';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { Subscription } from 'rxjs';\r\nimport { CoreSiteCategoryEditComponent } from '../edit/edit.component';\r\nimport { CoreSiteCategoryAddComponent } from '../add/add.component';\r\nimport { CmsConfirmationDialogService } from 'src/app/shared/cms-confirmation-dialog/cmsConfirmationDialog.service';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n@Component({\r\n selector: 'app-core-sitecategory-list',\r\n templateUrl: './list.component.html',\r\n})\r\nexport class CoreSiteCategoryListComponent implements OnInit, OnDestroy {\r\n constructor(\r\n public contentService: CoreSiteCategoryService,\r\n public publicHelper: PublicHelper,\r\n private cmsToastrService: CmsToastrService,\r\n private cmsConfirmationDialogService: CmsConfirmationDialogService,\r\n private router: Router,\r\n private tokenHelper: TokenHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n public dialog: MatDialog) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.optionsSearch.parentMethods = {\r\n onSubmit: (model) => this.onSubmitOptionsSearch(model),\r\n };\r\n this.optionsExport.parentMethods = {\r\n onSubmit: (model) => this.onSubmitOptionExport(model),\r\n };\r\n /*filter Sort*/\r\n this.filteModelContent.sortColumn = 'Id';\r\n this.filteModelContent.sortType = EnumSortType.Descending;\r\n }\r\n comment: string;\r\n author: string;\r\n dataSource: any;\r\n flag = false;\r\n tableContentSelected = [];\r\n\r\n filteModelContent = new FilterModel();\r\n dataModelResult: ErrorExceptionResult<CoreSiteCategoryModel> = new ErrorExceptionResult<CoreSiteCategoryModel>();\r\n optionsSearch: ComponentOptionSearchModel = new ComponentOptionSearchModel();\r\n optionsStatist: ComponentOptionStatistModel = new ComponentOptionStatistModel();\r\n optionsExport: ComponentOptionExportModel = new ComponentOptionExportModel();\r\n tokenInfo = new TokenInfoModel();\r\n loading = new ProgressSpinnerModel();\r\n tableRowsSelected: Array<CoreSiteCategoryModel> = [];\r\n tableRowSelected: CoreSiteCategoryModel = new CoreSiteCategoryModel();\r\n tableSource: MatTableDataSource<CoreSiteCategoryModel> = new MatTableDataSource<CoreSiteCategoryModel>();\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n\r\n tabledisplayedColumns: string[] = [\r\n 'MainImageSrc',\r\n 'Id',\r\n 'RecordStatus',\r\n 'Title',\r\n 'Domains',\r\n 'Action'\r\n ];\r\n\r\n\r\n\r\n expandedElement: CoreSiteCategoryModel | null;\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n ngOnInit(): void {\r\n this.filteModelContent.sortColumn = 'Title';\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n this.DataGetAll();\r\n });\r\n\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.tokenInfo = next;\r\n this.DataGetAll();\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n DataGetAll(): void {\r\n this.tableRowsSelected = [];\r\n this.tableRowSelected = new CoreSiteCategoryModel();\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName, this.translate.instant('MESSAGE.get_information_list'));\r\n this.filteModelContent.accessLoad = true;\r\n /*filter CLone*/\r\n const filterModel = JSON.parse(JSON.stringify(this.filteModelContent));\r\n /*filter CLone*/\r\n this.contentService.ServiceGetAllEditor(filterModel).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n\r\n this.dataModelResult = ret;\r\n this.tableSource.data = ret.listItems;\r\n\r\n if (this.optionsSearch.childMethods) {\r\n this.optionsSearch.childMethods.setAccess(ret.access);\r\n }\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n onTableSortData(sort: MatSort): void {\r\n if (this.tableSource && this.tableSource.sort && this.tableSource.sort.active === sort.active) {\r\n if (this.tableSource.sort.start === 'asc') {\r\n sort.start = 'desc';\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Descending;\r\n } else if (this.tableSource.sort.start === 'desc') {\r\n this.filteModelContent.sortColumn = '';\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n } else {\r\n sort.start = 'desc';\r\n }\r\n } else {\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n }\r\n this.tableSource.sort = sort;\r\n this.filteModelContent.currentPageNumber = 0;\r\n this.DataGetAll();\r\n }\r\n onTablePageingData(event?: PageEvent): void {\r\n this.filteModelContent.currentPageNumber = event.pageIndex + 1;\r\n this.filteModelContent.rowPerPage = event.pageSize;\r\n this.DataGetAll();\r\n }\r\n\r\n\r\n onActionbuttonNewRow(): void {\r\n\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessAddRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessAdd();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreSiteCategoryAddComponent, {\r\n height: '90%',\r\n data: {}\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n this.DataGetAll();\r\n }\r\n });\r\n }\r\n\r\n onActionbuttonEditRow(model: CoreSiteCategoryModel = this.tableRowSelected): void {\r\n\r\n if (!model || !model.id || model.id === 0) {\r\n this.cmsToastrService.typeErrorSelectedRow();\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessEditRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessEdit();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreSiteCategoryEditComponent, {\r\n height: '90%',\r\n data: { id: this.tableRowSelected.id }\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n this.DataGetAll();\r\n }\r\n });\r\n }\r\n onActionbuttonDeleteRow(model: CoreSiteCategoryModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n const emessage = this.translate.instant('MESSAGE.no_row_selected_to_delete');\r\n this.cmsToastrService.typeErrorSelected(emessage);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessDeleteRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessDelete();\r\n return;\r\n }\r\n\r\n\r\n const title = this.translate.instant('MESSAGE.Please_Confirm');\r\n const message = this.translate.instant('MESSAGE.Do_you_want_to_delete_this_content') + '?' + '<br> ( ' + this.tableRowSelected.title + ' ) ';\r\n this.cmsConfirmationDialogService.confirm(title, message)\r\n .then((confirmed) => {\r\n if (confirmed) {\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.contentService.ServiceDelete(this.tableRowSelected.id).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.cmsToastrService.typeSuccessRemove();\r\n this.DataGetAll();\r\n } else {\r\n this.cmsToastrService.typeErrorRemove();\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n )\r\n .catch(() => {\r\n // console.log('User dismissed the dialog (e.g., by using ESC, clicking the cross icon, or clicking outside the dialog)')\r\n }\r\n );\r\n\r\n }\r\n\r\n\r\n onActionbuttonGoToSiteCategoryList(model: CoreSiteCategoryModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n const message = this.translate.instant('MESSAGE.no_row_selected_to_display');\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n this.router.navigate(['/core/siteSiteCategory/', this.tableRowSelected.id]);\r\n }\r\n onActionbuttonStatist(): void {\r\n this.optionsStatist.data.show = !this.optionsStatist.data.show;\r\n if (!this.optionsStatist.data.show) {\r\n return;\r\n }\r\n const statist = new Map<string, number>();\r\n statist.set('Active', 0);\r\n statist.set('All', 0);\r\n this.contentService.ServiceGetCount(this.filteModelContent).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n statist.set('All', ret.totalRowCount);\r\n this.optionsStatist.childMethods.setStatistValue(statist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n\r\n const filterStatist1 = JSON.parse(JSON.stringify(this.filteModelContent));\r\n const fastfilter = new FilterDataModel();\r\n fastfilter.propertyName = 'RecordStatus';\r\n fastfilter.value = EnumRecordStatus.Available;\r\n filterStatist1.filters.push(fastfilter);\r\n this.contentService.ServiceGetCount(filterStatist1).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n statist.set('Active', ret.totalRowCount);\r\n this.optionsStatist.childMethods.setStatistValue(statist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n\r\n }\r\n onActionbuttonModuleList(model: CoreSiteCategoryModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n\r\n const message = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessDeleteRow\r\n ) {\r\n this.cmsToastrService.typeErrorSelected();\r\n return;\r\n }\r\n this.router.navigate(['/core/sitecategorymodule/LinkCmsSiteCategoryId', this.tableRowSelected.id]);\r\n\r\n\r\n }\r\n onActionbuttonSiteList(model: CoreSiteCategoryModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n\r\n const message = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessDeleteRow\r\n ) {\r\n this.cmsToastrService.typeErrorSelected();\r\n return;\r\n }\r\n this.router.navigate(['/core/site/list/LinkSiteCategoryId', this.tableRowSelected.id]);\r\n\r\n\r\n }\r\n onActionbuttonExport(): void {\r\n this.optionsExport.data.show = !this.optionsExport.data.show;\r\n this.optionsExport.childMethods.setExportFilterModel(this.filteModelContent);\r\n }\r\n onSubmitOptionExport(model: FilterModel): void {\r\n const exportlist = new Map<string, string>();\r\n exportlist.set('Download', 'loading ... ');\r\n this.contentService.ServiceExportFile(model).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n exportlist.set('Download', ret.linkFile);\r\n this.optionsExport.childMethods.setExportLinkFile(exportlist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n }\r\n\r\n onActionbuttonReload(): void {\r\n this.DataGetAll();\r\n }\r\n onSubmitOptionsSearch(model: any): void {\r\n this.filteModelContent.filters = model;\r\n this.DataGetAll();\r\n }\r\n onActionTableRowSelect(row: CoreSiteCategoryModel): void {\r\n this.tableRowSelected = row;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CoreSiteCategoryRouting } from './coreSiteCategory.routing';\r\nimport { CoreSiteCategoryComponent } from './coreSiteCategory.component';\r\nimport {\r\n CoreModuleService,\r\n CoreSiteCategoryCmsModuleService,\r\n CoreSiteCategoryService,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SharedModule } from 'src/app/shared.module';\r\nimport { CoreSiteCategoryTreeComponent } from './tree/tree.component';\r\nimport { CoreSiteCategorySelectorComponent } from './selector/selector.component';\r\nimport { CoreSiteCategoryEditComponent } from './edit/edit.component';\r\nimport { CoreSiteCategoryAddComponent } from './add/add.component';\r\nimport { CoreSiteCategoryListComponent } from './list/list.component';\r\n\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\n\r\nimport { CoreModuleModule } from '../module/coreModule.module';\r\n// import { CoreSiteCategoryCmsModuleListComponent } from './moduleList/moduleList.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n CoreSiteCategoryComponent,\r\n CoreSiteCategoryListComponent,\r\n CoreSiteCategoryAddComponent,\r\n CoreSiteCategoryEditComponent,\r\n CoreSiteCategorySelectorComponent,\r\n CoreSiteCategoryTreeComponent,\r\n // CoreSiteCategoryCmsModuleListComponent,\r\n ],\r\n exports: [\r\n CoreSiteCategoryComponent,\r\n CoreSiteCategoryListComponent,\r\n CoreSiteCategoryAddComponent,\r\n CoreSiteCategoryEditComponent,\r\n CoreSiteCategorySelectorComponent,\r\n CoreSiteCategoryTreeComponent,\r\n // CoreSiteCategoryCmsModuleListComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CoreSiteCategoryRouting,\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: 'never' }),\r\n SharedModule.forRoot(),\r\n AngularEditorModule,\r\n \r\n CoreModuleModule,\r\n ],\r\n providers: [\r\n CoreSiteCategoryService,\r\n CoreSiteCategoryCmsModuleService,\r\n CoreModuleService,\r\n CoreSiteCategoryCmsModuleService,\r\n ]\r\n})\r\nexport class CoreSiteCategoryCmsModule {\r\n}\r\n","<mat-form-field class=\"ntk-full-width\">\r\n <input type=\"text\" placeholder=\"{{optionPlaceholder}}\" [attr.disabled]=\"optionDisabled? true : null\" aria-label=\"Assignee\" matInput [formControl]=\"formControl\" [matAutocomplete]=\"auto17\">\r\n <mat-autocomplete #auto17=\"matAutocomplete\" [displayWith]=\"displayFn\" (optionSelected)=\"onActionSelect($event.option.value)\">\r\n <mat-option *ngFor=\"let state of filteredOptions | async\" [value]=\"state\" [disabled]=\"optionDisabled\">\r\n <span>{{ displayOption(state) }}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon matSuffix *ngIf=\"dataModelSelect.id\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"onActionSelectClear()\">close</mat-icon>\r\n <ng-content></ng-content>\r\n</mat-form-field>\r\n\r\n","\r\nimport { Component, OnInit, Input, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\nimport {\r\n CoreEnumService,\r\n ErrorExceptionResult,\r\n FilterDataModel,\r\n FilterModel,\r\n CoreSiteCategoryModel,\r\n CoreSiteCategoryService,\r\n EnumFilterDataModelSearchTypes,\r\n EnumClauseType\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { Output } from '@angular/core';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n\r\n@Component({\r\n selector: 'app-core-sitecategory-selector',\r\n templateUrl: './selector.component.html',\r\n})\r\nexport class CoreSiteCategorySelectorComponent implements OnInit {\r\n\r\n constructor(\r\n public coreEnumService: CoreEnumService,\r\n private cmsToastrService: CmsToastrService,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n public categoryService: CoreSiteCategoryService) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n }\r\n\r\n dataModelResult: ErrorExceptionResult<CoreSiteCategoryModel> = new ErrorExceptionResult<CoreSiteCategoryModel>();\r\n dataModelSelect: CoreSiteCategoryModel = new CoreSiteCategoryModel();\r\n formControl = new FormControl();\r\n filteredOptions: Observable<CoreSiteCategoryModel[]>;\r\n @Input() optionDisabled = false;\r\n @Input() optionSelectFirstItem = false;\r\n @Input() optionPlaceholder = '';\r\n @Output() optionChange = new EventEmitter<CoreSiteCategoryModel>();\r\n @Input() optionReload = () => this.onActionReload();\r\n @Input() set optionSelectForce(x: number | CoreSiteCategoryModel) {\r\n this.onActionSelectForce(x);\r\n }\r\n\r\n _loading: ProgressSpinnerModel = new ProgressSpinnerModel();\r\n get loading(): ProgressSpinnerModel {\r\n return this._loading;\r\n }\r\n @Input() set loading(value: ProgressSpinnerModel) {\r\n this._loading = value;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadOptions();\r\n }\r\n loadOptions(): void {\r\n this.filteredOptions = this.formControl.valueChanges\r\n .pipe(\r\n startWith(''),\r\n debounceTime(1000),\r\n distinctUntilChanged(),\r\n switchMap(val => {\r\n if (typeof val === 'string' || typeof val === 'number') {\r\n return this.DataGetAll(val || '');\r\n }\r\n return [];\r\n }),\r\n // tap(() => this.myControl.setValue(this.options[0]))\r\n );\r\n }\r\n\r\n displayFn(model?: CoreSiteCategoryModel): string | undefined {\r\n return model ? (model.title) : undefined;\r\n }\r\n displayOption(model?: CoreSiteCategoryModel): string | undefined {\r\n return model ? (model.title) : undefined;\r\n }\r\n async DataGetAll(text: string | number | any): Promise<CoreSiteCategoryModel[]> {\r\n const filteModel = new FilterModel();\r\n filteModel.rowPerPage = 20;\r\n filteModel.accessLoad = true;\r\n let filter = new FilterDataModel();\r\n filter.propertyName = 'Title';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n if (text && typeof +text === 'number' && +text > 0) {\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'Id';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Equal;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n }\r\n this.loading.Start('DataGetAll');\r\n return await this.categoryService.ServiceGetAll(filteModel)\r\n .pipe(\r\n map(response => {\r\n this.dataModelResult = response;\r\n /*select First Item */\r\n if (this.optionSelectFirstItem &&\r\n (!this.dataModelSelect || !this.dataModelSelect.id || this.dataModelSelect.id <= 0) &&\r\n this.dataModelResult.listItems.length > 0) {\r\n this.optionSelectFirstItem = false;\r\n setTimeout(() => { \r\n this.formControl.setValue(this.dataModelResult.listItems[0]); \r\n this.onActionSelect(this.dataModelResult.listItems[0]);\r\n }, 1000);\r\n }\r\n /*select First Item */\r\n this.loading.Stop('DataGetAll');\r\n return response.listItems;\r\n })\r\n ).toPromise();\r\n }\r\n onActionSelect(model: CoreSiteCategoryModel): void {\r\n if (this.optionDisabled) {\r\n return;\r\n }\r\n this.dataModelSelect = model;\r\n this.optionChange.emit(this.dataModelSelect);\r\n }\r\n onActionSelectClear(): void {\r\n if (this.optionDisabled) {\r\n return;\r\n }\r\n this.formControl.setValue(null);\r\n this.optionChange.emit(null);\r\n }\r\n\r\n push(newvalue: CoreSiteCategoryModel): Observable<CoreSiteCategoryModel[]> {\r\n return this.filteredOptions.pipe(map(items => {\r\n if (items.find(x => x.id === newvalue.id)) {\r\n return items;\r\n }\r\n items.push(newvalue);\r\n return items;\r\n }));\r\n\r\n }\r\n onActionSelectForce(id: number | CoreSiteCategoryModel): void {\r\n if (typeof id === 'number' && id > 0) {\r\n if (this.dataModelSelect && this.dataModelSelect.id === id) {\r\n return;\r\n }\r\n if (this.dataModelResult && this.dataModelResult.listItems && this.dataModelResult.listItems.find(x => x.id === id)) {\r\n const item = this.dataModelResult.listItems.find(x => x.id === id);\r\n this.dataModelSelect = item;\r\n this.formControl.setValue(item);\r\n return;\r\n }\r\n this.categoryService.ServiceGetOneById(id).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.filteredOptions = this.push(ret.item);\r\n this.dataModelSelect = ret.item;\r\n this.formControl.setValue(ret.item);\r\n this.optionChange.emit(ret.item);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n }\r\n });\r\n return;\r\n }\r\n if (typeof id === typeof CoreSiteCategoryModel) {\r\n this.filteredOptions = this.push((id as CoreSiteCategoryModel));\r\n this.dataModelSelect = (id as CoreSiteCategoryModel);\r\n this.formControl.setValue(id);\r\n return;\r\n }\r\n this.formControl.setValue(null);\r\n }\r\n\r\n onActionReload(): void {\r\n this.dataModelSelect = new CoreSiteCategoryModel();\r\n this.loadOptions();\r\n }\r\n}\r\n","<div class=\"example-container mat-elevation-z8\">\r\n <app-progress-spinner [options]=\"loading\">\r\n </app-progress-spinner>\r\n <mat-table *ngIf=\"!loading.display\" [dataSource]=\"tableSource\" matSort #tableSort=\"matSort\"\r\n (matSortChange)=\"onTableSortData(tableSort)\">\r\n\r\n\r\n <!-- virtual_CmsSiteCategory.title Column -->\r\n <ng-container matColumnDef=\"virtual_CmsSiteCategory.title\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{'TITLE.SITE_CATEGORY' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.virtual_CmsSiteCategory.title}} </mat-cell>\r\n </ng-container>\r\n <!-- virtual_CmsModule.title Column -->\r\n <ng-container matColumnDef=\"virtual_CmsModule.title\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{'TITLE.MODULE' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.virtual_CmsModule.title}} </mat-cell>\r\n </ng-container>\r\n <!-- virtual_CmsModule.Description Column -->\r\n <ng-container matColumnDef=\"virtual_CmsModule.Description\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{'TITLE.DESCRIPTION' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.virtual_CmsModule.Description}} </mat-cell>\r\n </ng-container>\r\n\r\n\r\n <mat-header-row *matHeaderRowDef=\"tabledisplayedColumns\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns: tabledisplayedColumns;\" (click)=\"onActionTableRowSelect(row)\"\r\n [ngStyle]=\"{'background': row.id === tableRowSelected.id ? '#d3d3da' : '' }\">\r\n </mat-row>\r\n </mat-table>\r\n\r\n <mat-paginator #paginator [length]=\"(dataModelResult.totalRowCount)\"\r\n [pageIndex]=\"(dataModelResult.currentPageNumber-1)\" [pageSize]=\"dataModelResult.rowPerPage\"\r\n [pageSizeOptions]=\"[5, 10, 20, 100]\" (page)=\"onTablePageingData($event)\"></mat-paginator>\r\n\r\n</div>","\r\nimport { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport {\r\n CoreSiteCategoryCmsModuleModel,\r\n CoreSiteCategoryCmsModuleService,\r\n DataFieldInfoModel,\r\n EnumSortType,\r\n ErrorExceptionResult,\r\n FilterDataModel,\r\n FilterModel,\r\n TokenInfoModel\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { Subscription } from 'rxjs';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-core-sitecategorycmsmodule-listview',\r\n templateUrl: './listview.component.html',\r\n})\r\nexport class CoreSiteCategoryCmsModuleListViewComponent implements OnInit, OnDestroy {\r\n @Input() set optionSiteCategoryId(x: number) {\r\n this.LinkSiteCategoryId = x;\r\n this.DataGetAll();\r\n }\r\n LinkSiteCategoryId = 0;\r\n constructor(\r\n private coreSiteCategoryCmsModuleService: CoreSiteCategoryCmsModuleService,\r\n public publicHelper: PublicHelper,\r\n private cmsToastrService: CmsToastrService,\r\n private tokenHelper: TokenHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n }\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n tableContentSelected = [];\r\n filteModelContent = new FilterModel();\r\n dataModelResult: ErrorExceptionResult<CoreSiteCategoryCmsModuleModel> = new ErrorExceptionResult<CoreSiteCategoryCmsModuleModel>();\r\n tokenInfo = new TokenInfoModel();\r\n @Input() loading = new ProgressSpinnerModel();\r\n tableRowsSelected: Array<CoreSiteCategoryCmsModuleModel> = [];\r\n tableRowSelected: CoreSiteCategoryCmsModuleModel = new CoreSiteCategoryCmsModuleModel();\r\n tableSource: MatTableDataSource<CoreSiteCategoryCmsModuleModel> = new MatTableDataSource<CoreSiteCategoryCmsModuleModel>();\r\n\r\n\r\n tabledisplayedColumns: string[] = [\r\n 'virtual_CmsSiteCategory.title',\r\n 'virtual_CmsModule.title',\r\n 'virtual_CmsModule.Description',\r\n ];\r\n\r\n\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n ngOnInit(): void {\r\n this.filteModelContent.sortColumn = 'Title';\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n this.DataGetAll();\r\n });\r\n\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.tokenInfo = next;\r\n this.DataGetAll();\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n DataGetAll(): void {\r\n this.tableRowsSelected = [];\r\n this.tableRowSelected = new CoreSiteCategoryCmsModuleModel();\r\n this.filteModelContent.accessLoad = true;\r\n\r\n const filteModel = JSON.parse(JSON.stringify(this.filteModelContent));\r\n if (this.LinkSiteCategoryId && this.LinkSiteCategoryId > 0) {\r\n const fastfilter = new FilterDataModel();\r\n fastfilter.propertyName = 'LinkCmsSiteCategoryId';\r\n fastfilter.value = this.LinkSiteCategoryId;\r\n filteModel.filters.push(fastfilter);\r\n }\r\n const pName = this.constructor.name + '.ServiceGetAll';\r\n this.loading.Start(pName, 'در Øال دریاÙت لیست ماژول ها');\r\n this.coreSiteCategoryCmsModuleService.ServiceGetAll(filteModel).subscribe({\r\n next: (ret) => {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n\r\n if (ret.isSuccess) {\r\n if (this.LinkSiteCategoryId && this.LinkSiteCategoryId > 0) {\r\n this.tabledisplayedColumns = this.publicHelper.listRemoveIfExist(\r\n this.tabledisplayedColumns,\r\n 'virtual_CmsSiteCategory.title'\r\n );\r\n }\r\n this.dataModelResult = ret;\r\n this.tableSource.data = ret.listItems;\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n onTableSortData(sort: MatSort): void {\r\n if (this.tableSource && this.tableSource.sort && this.tableSource.sort.active === sort.active) {\r\n if (this.tableSource.sort.start === 'asc') {\r\n sort.start = 'desc';\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Descending;\r\n } else if (this.tableSource.sort.start === 'desc') {\r\n this.filteModelContent.sortColumn = '';\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n } else {\r\n sort.start = 'desc';\r\n }\r\n } else {\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n }\r\n this.tableSource.sort = sort;\r\n this.filteModelContent.currentPageNumber = 0;\r\n this.DataGetAll();\r\n }\r\n onTablePageingData(event?: PageEvent): void {\r\n this.filteModelContent.currentPageNumber = event.pageIndex + 1;\r\n this.filteModelContent.rowPerPage = event.pageSize;\r\n this.DataGetAll();\r\n }\r\n\r\n\r\n onActionbuttonReload(): void {\r\n this.DataGetAll();\r\n }\r\n\r\n onActionTableRowSelect(row: CoreSiteCategoryCmsModuleModel): void {\r\n this.tableRowSelected = row;\r\n }\r\n\r\n}\r\n","<app-cms-html-notice [svg]=\"'assets/media/svg/icons/Tools/Compass.svg'\">\r\n ایجاد اولین سامانه شما.\r\n <br>\r\n لطÙا تمام دقت لازم را در انتخاب نوع سامانه Ùˆ دامنه داشته باشید.\r\n</app-cms-html-notice>\r\n<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-horizontal-stepper (selectionChange)=\"onStepClick($event,stepper)\" #stepper>\r\n <mat-step label=\"مشخضات سامانه\" state=\"main\">\r\n <!-- Title Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>عنوان سامانه</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.title\" name=\"dataModel.title\" #Title type=\"text\"\r\n placeholder=\"عنوان سامانه\" minlength=\"3\" maxlength=\"100\" required />\r\n <mat-icon matSuffix *ngIf=\"dataModel.title\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.title = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Title.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"Title.errors?.required\">\r\n عنوان سامانه الزامی است\r\n </mat-error>\r\n </mat-form-field>\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>عنوان لاتین</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.subDomain\" name=\"dataModel.subDomain\" #SubDomain2 type=\"text\"\r\n (ngModelChange)=\"checkValidateDomain()\" placeholder=\"عنوان لاتین\" minlength=\"3\" maxlength=\"20\" required\r\n pattern=\"[a-zA-Z]{2,20}\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.subDomain\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.subDomain = 'myname'\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ SubDomain2.value.length }} / 20</mat-hint>\r\n <mat-error *ngIf=\"SubDomain2.errors?.required\">\r\n عنوان لاتین الزامی است\r\n </mat-error>\r\n <mat-error *ngIf=\"!validateDomain\">\r\n مجاز به ورود Ùقط کاراکتر لاتین هستید\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Description Field -->\r\n <!-- <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>توضیØات کوتاه در باره این سامانه</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.description\" name=\"dataModel.description\" #Description type=\"text\"\r\n placeholder=\"{{fieldsInfo['Description']?.fieldTitle}}\" minlength=\"1\" maxlength=\"500\" rows=5></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.description\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.description = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Description.value.length }} / 500</mat-hint>\r\n <mat-error *ngIf=\"Description.errors?.required\">\r\n ورود توضیØات سامانه الزامی است\r\n </mat-error>\r\n </mat-form-field> -->\r\n <!-- sitecategory Field -->\r\n <app-core-sitecategory-selector (optionChange)=\"onActionSelectorSelect($event)\" [optionSelectFirstItem]=\"true\"\r\n [(loading)]=\"loading\" [optionSelectForce]=\"this.dataModel.linkSiteCategoryId\"\r\n [optionPlaceholder]=\"'نوع سامانه'\" [optionDisabled]=\"siteTypeId>0\"></app-core-sitecategory-selector>\r\n\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n <mat-step label=\"امکانات سامانه\" state=\"seo\">\r\n <p>نسبت به نوع سامانه انتخابی شما این امکانات در اختیار این سامانه قرار داده Ù…ÛŒ شود</p>\r\n\r\n <app-core-sitecategorycmsmodule-listview [optionSiteCategoryId]=\"modelDateSiteCategory?.id\">\r\n </app-core-sitecategorycmsmodule-listview>\r\n\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"primary\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n <mat-step label=\"تواÙقنامه سامانه\" state=\"rule\"\r\n *ngIf=\"this.modelDateSiteCategory?.ruleHtmlBody && this.modelDateSiteCategory?.ruleHtmlBody.length>0\">\r\n <p>نسبت به نوع سامانه انتخابی شما این تواÙقنامه مورد تایید شما Ù…ÛŒ باشد</p>\r\n\r\n\r\n <div [innerHTML]=\"this.modelDateSiteCategory.ruleHtmlBody\"></div>\r\n\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"primary\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n <mat-step label=\"آدرس دسترسی به سامانه\" state=\"seo\">\r\n <p>از لیست دامنه های موجود یک دامنه را انتخاب کنید Ùˆ عنوان لاتین برای متناسب با نام سامانه خود برای\r\n آدرس دهی انخاب نمایید</p>\r\n <!-- Domain Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"دامنه\" [(ngModel)]=\"dataModel.domain\" name=\"dataModel.domain\" #Domain=\"ngModel\"\r\n panelClass=\"recordStatus-{{ dataModel.domain }}\">\r\n <mat-option *ngFor=\"\r\n let item of dataModelResultDomains.listItems;\r\n index as i\r\n \" [value]=\"item\">{{ item }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">انتخاب دامنه برای این سامانه</mat-hint>\r\n </mat-form-field>\r\n <!-- Domain Field -->\r\n <div class=\"row input-group mb-3 set-select\" style=\"margin: 2px 17px 0 0; padding-left: 34px;\">\r\n <div class=\"input-group-prepend col-4 \">\r\n <button class=\"btn btn-outline-secondary dropdown-toggle\" type=\"button\" data-toggle=\"dropdown\"\r\n aria-haspopup=\"false\" aria-expanded=\"false\">{{ dataModel.domain === undefined ? 'دامنه' :\r\n dataModel.domain }}</button>\r\n <div class=\"dropdown-menu\">\r\n <option (click)=\"domain(item)\" class=\"cursor-pointer\"\r\n *ngFor=\"let item of dataModelResultDomains.listItems;let i = index\" value=\"{{item}}\">{{item}}</option>\r\n </div>\r\n </div>\r\n <input [(ngModel)]=\"dataModel.subDomain\" name=\"subDomain\" placeholder=\"YourSubDomain\" type=\"text\"\r\n class=\"form-control text-left col-4\" aria-label=\"زیر دامنه وب سایت \" />\r\n <div class=\"input-group-prepend col-4\">\r\n <input type=\"text\" class=\"form-control text-left\" style=\"direction: ltr;\" value=\"http://\"\r\n style=\"text-align: left;\" dir=\"ltr\" readonly />\r\n </div>\r\n </div>\r\n آدرس سامانه شما:\r\n <div class=\"text-left text-wrap\"\r\n style=\"direction: ltr;font-size: xx-large; color: black;text-align-last:center\">\r\n http://{{dataModel.subDomain === undefined ?'' : dataModel.subDomain + '.'}}{{ dataModel.domain ===\r\n undefined ? '' : dataModel.domain }}</div>\r\n\r\n\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"primary\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"submit\" mat-raised-button color=\"success\" [disabled]=\"!vform.form.valid\">\r\n {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n </mat-horizontal-stepper>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n\r\n</form>","\r\nimport { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\r\nimport {\r\n AuthRenewTokenModel,\r\n\r\n CoreAuthService,\r\n CoreSiteAddFirstSiteDtoModel,\r\n CoreSiteCategoryModel,\r\n CoreSiteService,\r\n DataFieldInfoModel,\r\n ErrorExceptionResult,\r\n FilterModel,\r\n FormInfoModel\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { environment } from '../../../../../environments/environment';\r\nimport { Router } from '@angular/router';\r\nimport { CmsToastrService } from '../../../../core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { StepperSelectionEvent } from '@angular/cdk/stepper';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-core-site-add-first',\r\n templateUrl: './addFirst.component.html',\r\n styleUrls: ['./addFirst.component.scss']\r\n})\r\nexport class CoreSiteAddFirstComponent implements OnInit {\r\n\r\n constructor(\r\n private cmsToastrService: CmsToastrService,\r\n private coreSiteService: CoreSiteService,\r\n public translate: TranslateService,\r\n private publicHelper: PublicHelper,\r\n private coreAuthService: CoreAuthService,\r\n private cdr: ChangeDetectorRef,\r\n private router: Router,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.formInfo.formTitle = 'ایجاد اولین سامانه شما';\r\n\r\n\r\n /** read storage */\r\n this.siteTypeId = + localStorage.getItem('siteTypeId');\r\n if (this.siteTypeId > 0) {\r\n this.dataModel.linkSiteCategoryId = this.siteTypeId;\r\n }\r\n /** read storage */\r\n }\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n alphaExp = /^[a-zA-Z0-9]+$/;\r\n siteTypeId = 0;\r\n\r\n dataModel = new CoreSiteAddFirstSiteDtoModel();\r\n filterModel = new FilterModel();\r\n dataModelResultDomains = new ErrorExceptionResult<string>();\r\n loading = new ProgressSpinnerModel();\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n modelDateSiteCategory = new CoreSiteCategoryModel();\r\n validateDomain = true;\r\n ngOnInit(): void {\r\n this.DataGetAccess();\r\n }\r\n checkValidateDomain() {\r\n this.validateDomain = this.alphaExp.test(this.dataModel.subDomain);\r\n }\r\n DataGetAccess(): void {\r\n const pName = this.constructor.name + '.DataGetAccess';\r\n this.loading.Start(pName, 'دریاÙت دسترسی ها');\r\n this.coreSiteService\r\n .ServiceViewModel()\r\n .subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n // this.dataAccessModel = next.access;\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n } else {\r\n this.cmsToastrService.typeErrorGetAccess(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeErrorGetAccess(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n GetDomainList(): void {\r\n const pName = this.constructor.name + '.GetDomainList';\r\n this.loading.Start(pName, 'دریاÙت لیست دامنه های مجاز');\r\n this.coreSiteService.ServiceGetRegDomains(this.dataModel.linkSiteCategoryId).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.dataModelResultDomains = ret;\r\n if (ret.listItems.length > 0) {\r\n this.dataModel.domain = ret.listItems[0];\r\n }\r\n if (!this.dataModel.subDomain || this.dataModel.subDomain?.length === 0) {\r\n this.dataModel.subDomain = 'myname';\r\n }\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n protocolSelect(): void {\r\n }\r\n\r\n domain(item): void {\r\n this.dataModel.domain = item;\r\n }\r\n\r\n onFormSubmit(): void {\r\n if (this.dataModel.linkSiteCategoryId <= 0) {\r\n this.cmsToastrService.typeErrorMessage(this.translate.instant('MESSAGE.System_type_not_selected'));\r\n return;\r\n }\r\n if (!this.dataModel.title || this.dataModel.title.length === 0) {\r\n this.cmsToastrService.typeErrorMessage(this.translate.instant('MESSAGE.As_the_system_is_not_selected'));\r\n\r\n return;\r\n }\r\n if (!this.dataModel.domain || this.dataModel.domain.length === 0) {\r\n\r\n this.cmsToastrService.typeErrorMessage(this.translate.instant('MESSAGE.System_domain_not_selected'));\r\n\r\n return;\r\n }\r\n if (!this.dataModel.subDomain || this.dataModel.subDomain.length === 0) {\r\n this.cmsToastrService.typeErrorMessage(this.translate.instant('MESSAGE.System_parent_domain_not_selected'));\r\n\r\n\r\n return;\r\n }\r\n\r\n this.formInfo.formSubmitAllow = false;\r\n const pName = this.constructor.name + '.onFormSubmit';\r\n this.loading.Start(pName, 'در Øال ثبت اطلاعات اولین سامانه شما');\r\n this.coreSiteService.ServiceAddFirstSite(this.dataModel).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.cmsToastrService.typeSuccessAddFirstSite();\r\n this.clickSelectSite(ret.item.id);\r\n } else {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeErrorAdd(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.formInfo.formSubmitAllow = true;\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n clickSelectSite(Id: number): void {\r\n const pName = this.constructor.name + '.clickSelectSite';\r\n this.loading.Start(pName, 'درخواست دسترسی جدید');\r\n\r\n let authModel: AuthRenewTokenModel;\r\n authModel = new AuthRenewTokenModel();\r\n authModel.siteId = Id;\r\n this.coreAuthService.ServiceRenewToken(authModel).subscribe({\r\n next: (res) => {\r\n this.loading.Stop(pName);\r\n if (res.isSuccess) {\r\n setTimeout(() => this.router.navigate(['/dashboard/']), 2000);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onActionSelectorSelect(model: CoreSiteCategoryModel | null): void {\r\n if (!model || model.id <= 0) {\r\n this.cmsToastrService.typeErrorMessage(\r\n 'نوع سامانه را مشخص کنید',\r\n 'نوع سامانه اطلاعات مشخص نیست'\r\n );\r\n return;\r\n }\r\n this.modelDateSiteCategory = model;\r\n this.dataModel.linkSiteCategoryId = model.id;\r\n this.GetDomainList();\r\n }\r\n onStepClick(event: StepperSelectionEvent, stepper: MatStepper): void {\r\n if (event.previouslySelectedIndex < event.selectedIndex) {\r\n if (!this.formGroup.valid) {\r\n this.cmsToastrService.typeErrorFormInvalid();\r\n setTimeout(() => {\r\n stepper.selectedIndex = event.previouslySelectedIndex;\r\n // stepper.previous();\r\n }, 10);\r\n }\r\n if (!this.dataModel.linkSiteCategoryId || this.dataModel.linkSiteCategoryId <= 0) {\r\n\r\n this.cmsToastrService.typeErrorMessage(this.translate.instant('MESSAGE.System_type_not_selected'));\r\n setTimeout(() => {\r\n stepper.selectedIndex = event.previouslySelectedIndex;\r\n // stepper.previous();\r\n }, 10);\r\n }\r\n }\r\n }\r\n}\r\n","<div *ngIf=\"this.statusCheckExistWebSite\" class=\"card card-custom card-stretch gutter-b\">\r\n <!-- Header -->\r\n <div class=\"card-header border-0 mt-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label font-weight-bolder text-dark\">بررسی Øساب کاربری</span>\r\n <span class=\"text-muted mt-3 font-weight-bold font-size-sm\">بررسی سایتهایی Ú©Ù‡ شما در آن عضویت دارید..</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n ...\r\n </div>\r\n </div>\r\n <!-- Body -->\r\n <div class=\"card-body pt-8\">\r\n </div>\r\n</div>\r\n<app-progress-spinner [options]=\"loading\">\r\n</app-progress-spinner>\r\n<div *ngIf=\"!this.statusCheckExistWebSite\">\r\n <app-core-site-add-first\r\n *ngIf=\" (!dataModelResult || !dataModelResult.listItems || dataModelResult.listItems.length === 0)\">\r\n </app-core-site-add-first>\r\n <div *ngIf=\" dataModelResult && dataModelResult.listItems && dataModelResult.listItems.length > 0\"\r\n class=\" container \">\r\n <div class=\"row\">\r\n <div *ngFor=\"let item of dataModelResult.listItems\" style=\"margin-left: 10px;max-width: min-content;\">\r\n <div *ngIf=\"selectSiteId==0 || selectSiteId==item.id\" (click)=\"onActionClickSelectSite(item.virtual_CmsSite.id)\"\r\n class=\"card card-custom card-stretch gutter-b cursor-pointer\" style=\"top: 15px;width: fit-content;\">\r\n <div class=\"card-body d-flex flex-column\">\r\n <div class=\"flex-grow-1 pb-5\">\r\n <div class=\"d-flex align-items-center pr-2 mb-6 \">\r\n <span class=\"text-muted font-weight-bold font-size-lg flex-grow-1\" style=\"width: 100px;\">\r\n {{item.virtual_CmsSite.title}}\r\n </span>\r\n <div class=\"symbol symbol-50\">\r\n <span class=\"symbol-label bg-light-light\">\r\n <img src=\"{{item.virtual_CmsSite.mainImageSrc | cmsthumbnail}}\"\r\n class=\"h-90px align-self-center custom\" width=\"40px\" height=\"40px\" alt=\"\">\r\n </span>\r\n </div>\r\n </div>\r\n <p class=\"text-dark font-weight-bolder text-hover-primary font-size-h4\">\r\n دامنه\r\n </p>\r\n <p class=\"text-dark-50 font-weight-normal font-size-lg mt-6\">\r\n {{item.virtual_CmsSite.currentSiteDomainUrl}}\r\n </p>\r\n </div>\r\n <div>\r\n <p class=\"text-dark font-weight-bolder text-hover-primary font-size-h4 \">\r\n دسترسی\r\n </p>\r\n <p class=\"text-dark-50 font-weight-normal font-size-lg mt-6\">\r\n {{item.virtual_CmsUserGroup.title}}\r\n </p>\r\n </div>\r\n <div *ngIf=\"item.expireDate\" [style.backgroundColor]=\"item.expireDate < today ? 'red':''\">\r\n <p class=\"text-dark font-weight-bolder text-hover-primary font-size-h4 \">\r\n تاریخ انقضا\r\n </p>\r\n <p class=\"text-dark-50 font-weight-normal font-size-lg mt-6\">\r\n {{item.expireDate|persianDate}}\r\n </p>\r\n </div>\r\n <br>\r\n <button *ngIf=\"this.formInfo.buttonSubmittedEnabled || selectSiteId==item.id\"\r\n (click)=\"onActionClickSelectSite(item.virtual_CmsSite.id)\" type=\"button\"\r\n [disabled]=\"!this.formInfo.buttonSubmittedEnabled\" class=\"btn btn-outline-success BTN\">ورود</button>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","\r\nimport { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\r\nimport { environment } from '../../../../../environments/environment';\r\nimport { Router } from '@angular/router';\r\nimport {\r\n AuthRenewTokenModel,\r\n CoreAuthService,\r\n CoreSiteUserModel,\r\n CoreSiteUserService,\r\n ErrorExceptionResult,\r\n FilterModel,\r\n FormInfoModel\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { CmsToastrService } from '../../../../core/services/cmsToastr.service';\r\nimport { TranslationService } from 'src/app/core/i18n/translation.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n\r\n@Component({\r\n selector: 'app-site-selection',\r\n templateUrl: './selection.component.html',\r\n styleUrls: ['./selection.component.scss']\r\n})\r\nexport class CoreSiteSelectionComponent implements OnInit {\r\n\r\n constructor(\r\n private coreAuthService: CoreAuthService,\r\n private translationService: TranslationService,\r\n private coreSiteUserService: CoreSiteUserService,\r\n private cmsToastrService: CmsToastrService,\r\n private cdr: ChangeDetectorRef,\r\n private router: Router,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.loading.cdr = cdr;\r\n }\r\n @Input() loading = new ProgressSpinnerModel();\r\n\r\n today = new Date();\r\n filterModel = new FilterModel();\r\n dataModelResult: ErrorExceptionResult<CoreSiteUserModel>;\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n statusCheckExistWebSite = true;\r\n selectSiteId = 0;\r\n ngOnInit(): void {\r\n // this.dataModel = this.activatedRoute.snapshot.data.list;\r\n this.DataGetAll();\r\n }\r\n DataGetAll(): void {\r\n const pName = this.constructor.name + 'ServiceGetAll';\r\n this.loading.Start(pName);\r\n\r\n this.coreSiteUserService.ServiceGetAll(null).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.dataModelResult = ret;\r\n this.statusCheckExistWebSite = false;\r\n // if (this.dataModelResult.listItems?.length === 1) {\r\n // setTimeout(() => {\r\n // this.onActionClickSelectSite(this.dataModelResult.listItems[0].linkSiteId);\r\n // }, 5000);\r\n // }\r\n }\r\n else {\r\n this.cmsToastrService.typeError(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onActionClickSelectSite(id: number): void {\r\n if (!this.formInfo.buttonSubmittedEnabled) {\r\n return;\r\n }\r\n this.selectSiteId = id;\r\n this.formInfo.buttonSubmittedEnabled = false;\r\n let authModel: AuthRenewTokenModel;\r\n authModel = new AuthRenewTokenModel();\r\n authModel.siteId = id;\r\n authModel.lang = this.translationService.getSelectedLanguage();\r\n\r\n\r\n const pName = this.constructor.name + '.ServiceRenewToken';\r\n this.loading.Start(pName);\r\n\r\n this.coreAuthService.ServiceRenewToken(authModel).subscribe({\r\n next: (res) => {\r\n if (res.isSuccess && res.item.siteId > 0) {\r\n this.cmsToastrService.typeSuccessSelected();\r\n this.loading.Stop(pName);\r\n setTimeout(() => this.router.navigate(['/']), 5000);\r\n \r\n }\r\n else {\r\n this.cmsToastrService.typeErrorSelected();\r\n this.formInfo.buttonSubmittedEnabled = true;\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.formInfo.buttonSubmittedEnabled = true;\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n\r\n }\r\n\r\n onActionAddFirstSite(model: ErrorExceptionResult<any>): void {\r\n if (model.isSuccess) {\r\n let authModel: AuthRenewTokenModel;\r\n authModel = new AuthRenewTokenModel();\r\n\r\n const pName = this.constructor.name + '.onActionAddFirstSite';\r\n this.loading.Start(pName);\r\n\r\n this.coreAuthService.ServiceRenewToken(authModel).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n \r\n setTimeout(() => this.router.navigate(['/dashboard/']), 5000);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","<div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n</div>\r\n<div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>{{fieldsInfo['Title']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModelResult.item.title\" name=\"dataModelResult.item.title\" #Title\r\n type=\"text\" placeholder=\"{{fieldsInfo['Title']?.fieldTitle}}\" readonly />\r\n </mat-form-field>\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>{{fieldsInfo['SeoDescription']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModelResult.item.seoDescription\" name=\"dataModelResult.item.seoDescription\" #SeoDescription\r\n type=\"text\" placeholder=\"{{fieldsInfo['SeoDescription']?.fieldTitle}}\" readonly />\r\n </mat-form-field>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n</div>\r\n<div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n</div>\r\n<div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormDelete()\" [disabled]=\" !formInfo.buttonSubmittedEnabled\"\r\n class=\"btn btn-danger\">\r\n <i class=\"fa fa-check-square-o\"></i> {{'ACTION.DELETE' | translate}}\r\n </button>\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n</div>","\r\nimport { Component, OnInit, ViewChild, Inject, ChangeDetectorRef } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport {\r\n DataFieldInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreSiteModel,\r\n CoreSiteService\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n@Component({\r\n selector: 'app-core-site-delete',\r\n templateUrl: './delete.component.html',\r\n})\r\nexport class CoreSiteDeleteComponent implements OnInit {\r\n requestId = 0;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreSiteDeleteComponent>,\r\n private publicHelper: PublicHelper,\r\n private coreSiteService: CoreSiteService,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n private cmsToastrService: CmsToastrService\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n if (data) {\r\n this.requestId = +data.id || 0;\r\n }\r\n }\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreSiteModel> = new ErrorExceptionResult<CoreSiteModel>();\r\n dataModel: any = {};\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n ngOnInit(): void {\r\n if (this.requestId <= 0) {\r\n this.cmsToastrService.typeErrorDeleteRowIsNull();\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n return;\r\n }\r\n this.DataGetOne();\r\n }\r\n DataGetOne(): void {\r\n if (this.requestId === 0) {\r\n this.cmsToastrService.typeErrorDeleteRowIsNull();\r\n return;\r\n }\r\n this.formInfo.formAlert = 'در Øال لود اطلاعات';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n this.coreSiteService.setAccessLoad();\r\n this.coreSiteService\r\n .ServiceGetOneById(this.requestId)\r\n .subscribe({\r\n next: (ret) => {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n this.dataModelResult = ret;\r\n if (!ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.formInfo.formErrorStatus = true;\r\n this.cmsToastrService.typeErrorGetOne();\r\n } else {\r\n this.formInfo.formAlert = '';\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formErrorStatus = true;\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onFormDelete(): void {\r\n if (this.requestId === 0) {\r\n this.cmsToastrService.typeErrorDeleteRowIsNull();\r\n return;\r\n }\r\n this.formInfo.formSubmitAllow = false;\r\n this.formInfo.buttonSubmittedEnabled = false;\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n this.coreSiteService\r\n .ServiceDelete(this.requestId)\r\n .subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = !ret.isSuccess;\r\n if (!ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorRemove();\r\n } else {\r\n this.formInfo.formAlert = 'Øذ٠با موÙقیت انجام شد';\r\n this.cmsToastrService.typeSuccessRemove();\r\n this.dialogRef.close({ dialogChangedDate: true });\r\n }\r\n this.formInfo.buttonSubmittedEnabled = true;\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n this.formInfo.buttonSubmittedEnabled = true;\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onFormChangeNewCatId(model: CoreSiteModel): void {\r\n this.formInfo.formAlert = '';\r\n if (this.requestId === 0 || !model || model.id <= 0) {\r\n this.cmsToastrService.typeErrorDeleteRowIsNull();\r\n return;\r\n }\r\n this.dataModel.newCatId = model.id;\r\n if (this.dataModel.newCatId === this.requestId) {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError =\r\n 'شناسه دسته بندی در Øال Øذ٠با دسته بندی جایگزین یکسان است';\r\n this.formInfo.buttonSubmittedEnabled = false;\r\n } else {\r\n this.formInfo.buttonSubmittedEnabled = true;\r\n this.formInfo.formError = '';\r\n }\r\n }\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n\r\n }\r\n}"," <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n \r\n <app-cms-json-list [dataModel]=\"dataModelResult.listItems\" [optionMethod]=\"2\"></app-cms-json-list>\r\n <br>\r\n مجموع ردی٠اطلاعات:\r\n {{dataModelResult.totalRowCount}}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n","\r\nimport {\r\n CoreEnumService,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreSiteService,\r\n ProcessModuleSiteDataInfoOutputModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n Inject,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { StepperSelectionEvent } from '@angular/cdk/stepper';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n\r\n@Component({\r\n selector: 'app-core-site-module-site-info',\r\n templateUrl: './module-site-info.component.html',\r\n styleUrls: ['./module-site-info.component.scss'],\r\n})\r\nexport class CoreSiteModuleSiteInfoComponent implements OnInit {\r\n requestLinkSiteId = 0;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreSiteModuleSiteInfoComponent>,\r\n public coreEnumService: CoreEnumService,\r\n public coreSiteService: CoreSiteService,\r\n private cmsToastrService: CmsToastrService,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n if (data) {\r\n this.requestLinkSiteId = +data.linkSiteId || 0;\r\n }\r\n }\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<ProcessModuleSiteDataInfoOutputModel> = new ErrorExceptionResult<ProcessModuleSiteDataInfoOutputModel>();\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n\r\n ngOnInit(): void {\r\n if (this.requestLinkSiteId <= 0) {\r\n this.cmsToastrService.typeErrorDeleteRowIsNull();\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n return;\r\n }\r\n this.formInfo.formTitle = 'مشاهده آمار ';\r\n this.DataGetAll();\r\n }\r\n DataGetAll(): void {\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreSiteService.ServiceModuleDataInfo(this.requestLinkSiteId).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.dataModelResult = ret;\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n onStepClick(event: StepperSelectionEvent, stepper: MatStepper): void {\r\n if (event.previouslySelectedIndex < event.selectedIndex) {\r\n if (!this.formGroup.valid) {\r\n this.cmsToastrService.typeErrorFormInvalid();\r\n setTimeout(() => {\r\n stepper.selectedIndex = event.previouslySelectedIndex;\r\n // stepper.previous();\r\n }, 10);\r\n }\r\n }\r\n }\r\n}\r\n"," <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n \r\n <app-cms-json-list [dataModel]=\"dataModelResult.listItems\" [optionMethod]=\"2\"></app-cms-json-list>\r\n <br>\r\n مجموع ردی٠اطلاعات:\r\n {{dataModelResult.totalRowCount}}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n","\r\nimport {\r\n CoreEnumService,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreSiteService,\r\n ProcessModuleSiteDataOptimazeOutputModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n Inject,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { StepperSelectionEvent } from '@angular/cdk/stepper';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n\r\n@Component({\r\n selector: 'app-core-site-module-site-optimaze',\r\n templateUrl: './module-site-optimaze.component.html',\r\n styleUrls: ['./module-site-optimaze.component.scss'],\r\n})\r\nexport class CoreSiteModuleSiteOptimazeComponent implements OnInit {\r\n requestLinkSiteId = 0;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreSiteModuleSiteOptimazeComponent>,\r\n public coreEnumService: CoreEnumService,\r\n public coreSiteService: CoreSiteService,\r\n private cmsToastrService: CmsToastrService,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n if (data) {\r\n this.requestLinkSiteId = +data.linkSiteId || 0;\r\n }\r\n }\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<ProcessModuleSiteDataOptimazeOutputModel> = new ErrorExceptionResult<ProcessModuleSiteDataOptimazeOutputModel>();\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n\r\n ngOnInit(): void {\r\n if (this.requestLinkSiteId <= 0) {\r\n this.cmsToastrService.typeErrorDeleteRowIsNull();\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n return;\r\n }\r\n this.formInfo.formTitle = 'مشاهده نتیجه ';\r\n this.DataGetAll();\r\n }\r\n DataGetAll(): void {\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreSiteService.ServiceModuleDataOptimaze(this.requestLinkSiteId).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.dataModelResult = ret;\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n onStepClick(event: StepperSelectionEvent, stepper: MatStepper): void {\r\n if (event.previouslySelectedIndex < event.selectedIndex) {\r\n if (!this.formGroup.valid) {\r\n this.cmsToastrService.typeErrorFormInvalid();\r\n setTimeout(() => {\r\n stepper.selectedIndex = event.previouslySelectedIndex;\r\n // stepper.previous();\r\n }, 10);\r\n }\r\n }\r\n }\r\n}\r\n","<app-cms-guide-notice [Key]=\"'core.site.list'\" [svg]=\"'assets/media/svg/icons/General/Notifications1.svg'\"></app-cms-guide-notice>\r\n<app-cms-html-list [optionLoading]=\"loading\" [optionTreeDisplay]=\"false\">\r\n <ng-container cms-tree>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n --------------------------------------\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n </ng-container>\r\n <ng-container cms-header>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </ng-container>\r\n <ng-container cms-action>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n <button *ngIf=\"dataModelResult.access.accessAddRow \" (click)=\"onActionbuttonNewRow()\" type=\"button\"\r\n class=\"btn btn-outline-primary\" id=\"openModalButton\" data-toggle=\"modal\" data-target=\"#categoryModal\">{{'ACTION.ADD' |\r\n translate}}</button>\r\n <button *ngIf=\"dataModelResult.access.accessEditRow && tableRowSelected.id>0\" (click)=\"onActionbuttonEditRow()\"\r\n type=\"button\" class=\"btn btn-outline-warning\" data-toggle=\"modal\" data-target=\"#categoryModal\">{{'ACTION.EDIT' |\r\n translate}}</button>\r\n <button *ngIf=\"dataModelResult.access.accessDeleteRow && tableRowSelected.id>0\" (click)=\"onActionbuttonDeleteRow()\"\r\n type=\"button\" class=\"btn btn-outline-danger\">{{'ACTION.DELETE' | translate}}</button>\r\n\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle [(ngModel)]=\"optionsSearch.data.show\">{{'ACTION.SEARCH' | translate}}</mat-slide-toggle>\r\n </a>\r\n\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle (click)=\"onActionbuttonStatist()\">{{'ACTION.STATIST' | translate}}\r\n </mat-slide-toggle>\r\n </a>\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle (click)=\"onActionbuttonExport()\">{{'ACTION.EXPORTFILE' | translate}}\r\n </mat-slide-toggle>\r\n </a>\r\n <button (click)=\"onActionbuttonReload()\" type=\"button\" class=\"btn btn-outline-secondary BTN\">\r\n <mat-icon style=\"font-size: 20px;margin: -1px;\" title=\"{{'ACTION.RELOAD' | translate}}\">refresh</mat-icon>\r\n </button>\r\n <button (click)=\"onActionBackToParentUserList()\" *ngIf=\"this.requestLinkUserId>0\" type=\"button\"\r\n class=\"btn btn-outline-success BTN\">{{'ACTION.BACK' | translate}}</button>\r\n <button (click)=\"onActionBackToParentSiteCategoryList()\" *ngIf=\"this.requestLinkSiteCategoryId>0\" type=\"button\"\r\n class=\"btn btn-outline-success BTN\">{{'ACTION.BACK' | translate}}</button>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n </ng-container>\r\n <ng-container cms-action-area>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n <app-cms-search-list [(options)]=\"optionsSearch\"></app-cms-search-list>\r\n <app-cms-export-list [(options)]=\"optionsExport\"></app-cms-export-list>\r\n <app-cms-statist-list [(options)]=\"optionsStatist\"></app-cms-statist-list>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n </ng-container>\r\n <ng-container cms-body>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-table [dataSource]=\"tableSource\" matSort #tableSort=\"matSort\" (matSortChange)=\"onTableSortData(tableSort)\">\r\n <!-- MainImageSrc Column -->\r\n <ng-container matColumnDef=\"MainImageSrc\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{'TITLE.PICTURE' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\">\r\n <img *ngIf=\"row?.mainImageSrc?.length>0\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\" aria-hidden src=\"{{row.mainImageSrc | cmsthumbnail}}\"\r\n height=\"40\" width=\"40\" />\r\n\r\n </mat-cell>\r\n </ng-container>\r\n <!-- ID Column -->\r\n <ng-container matColumnDef=\"Id\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['Id']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.id}} </mat-cell>\r\n </ng-container>\r\n <!-- linkCreatedBySiteId Column -->\r\n <ng-container matColumnDef=\"linkCreatedBySiteId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['LinkCreatedBySiteId']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.linkCreatedBySiteId}} </mat-cell>\r\n </ng-container>\r\n <!-- RecordStatus Column -->\r\n <ng-container matColumnDef=\"RecordStatus\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['RecordStatus']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> <i [ngClass]=\"row.recordStatus|statusClass\" ></i>\r\n <select matNativeControl cmsRecordStatusSelfSave [contentService]=\"contentService\" [row]=\"row\" [ngStyle]=\"{'display': row.id === tableRowSelected.id ? '' : 'none' }\">\r\n </select> </mat-cell>\r\n </ng-container>\r\n <!-- Title Column -->\r\n <ng-container matColumnDef=\"Title\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['Title']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.title}} </mat-cell>\r\n </ng-container>\r\n <!-- SubDomain Column -->\r\n <ng-container matColumnDef=\"SubDomain\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['SubDomain']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.subDomain}} </mat-cell>\r\n </ng-container>\r\n <!-- Domain Column -->\r\n <ng-container matColumnDef=\"Domain\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['Domain']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.domain}} </mat-cell>\r\n </ng-container>\r\n <!-- CreatedDate Column -->\r\n <ng-container matColumnDef=\"CreatedDate\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['CreatedDate']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{ publicHelper.LocaleDate(row.createdDate) }} </mat-cell>\r\n </ng-container>\r\n <!-- UpdatedDate Column -->\r\n <ng-container matColumnDef=\"UpdatedDate\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['UpdatedDate']?.fieldTitle}}</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{ publicHelper.LocaleDate(row.updatedDate) }} </mat-cell>\r\n </ng-container>\r\n <!-- ExpireDate Column -->\r\n <ng-container matColumnDef=\"ExpireDate\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['ExpireDate']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" [ngStyle]=\"{'background':publicHelper.RowStyleExpireDate(row.expireDate) }\"> {{\r\n publicHelper.LocaleDate(row.expireDate) }} </mat-cell>\r\n </ng-container>\r\n <!-- Action Column -->\r\n <ng-container matColumnDef=\"Action\">\r\n <mat-header-cell *matHeaderCellDef> {{'TITLE.OPTION' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=' Action'>\r\n <!-- Action Menu -->\r\n <button mat-icon-button [matMenuTriggerFor]=\"actionMenu\" aria-label=\"Action Menu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #actionMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"onActionbuttonEditRow(row)\" *ngIf=\"dataModelResult.access.accessEditRow\">\r\n <mat-icon>mode_edit</mat-icon>\r\n <span>{{'ACTION.EDIT' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonDeleteRow(row)\" *ngIf=\"dataModelResult.access.accessDeleteRow\">\r\n <mat-icon>delete_forever</mat-icon>\r\n <span>{{'ACTION.DELETE' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonLoginToRow(row)\">\r\n <mat-icon>login</mat-icon>\r\n <span>{{'ACTION.LOGIN_TO_THIS_SITE' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonModuleListRow(row)\"\r\n *ngIf=\"tokenInfo.userAccessAdminAllowToAllData || tokenInfo.siteId==row.id\">\r\n <mat-icon>view_module</mat-icon>\r\n <span>{{'ACTION.MODULES' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonDomainAliasListRow(row)\"\r\n *ngIf=\"tokenInfo.userAccessAdminAllowToAllData || tokenInfo.siteId==row.id\">\r\n <mat-icon>domain</mat-icon>\r\n <span>{{'ACTION.DOMAINS' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonUserListRow(row)\"\r\n *ngIf=\"tokenInfo.userAccessAdminAllowToAllData || tokenInfo.siteId==row.id\">\r\n <mat-icon>switch_account</mat-icon>\r\n <span>{{'ACTION.USERS' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonDeviceListRow(row)\"\r\n *ngIf=\"tokenInfo.userAccessAdminAllowToAllData || tokenInfo.siteId==row.id\">\r\n <mat-icon>devices</mat-icon>\r\n <span>{{'ACTION.DEVICES' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonResller(row)\"\r\n *ngIf=\"tokenInfo.userAccessAdminAllowToAllData || tokenInfo.siteId==row.id\">\r\n <mat-icon>devices</mat-icon>\r\n <span> {{'ACTION.MARKETING_SUBSET' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonModuleSiteInfo(row)\"\r\n *ngIf=\"tokenInfo.userAccessAdminAllowToAllData ||tokenInfo.userAccessAdminAllowToProfessionalData || tokenInfo.siteId==row.id\">\r\n <mat-icon>bar_chart</mat-icon>\r\n <span>{{'ACTION.SITE_STATISTICS' | translate}} </span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonModuleSiteOptimaze(row)\"\r\n *ngIf=\"tokenInfo.userAccessAdminAllowToAllData ||tokenInfo.userAccessAdminAllowToProfessionalData || tokenInfo.siteId==row.id\">\r\n <mat-icon>bar_chart</mat-icon>\r\n <span>{{'ACTION.OPTIMIZATION' | translate}} </span>\r\n </button>\r\n </mat-menu>\r\n\r\n\r\n\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"tabledisplayedColumns\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns: tabledisplayedColumns;\" (click)=\"onActionTableRowSelect(row)\"\r\n [ngStyle]=\"{'background': row.id === tableRowSelected.id ? '#d3d3da' :'' }\">\r\n </mat-row>\r\n </mat-table>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </ng-container>\r\n <ng-container cms-footer>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n\r\n <mat-paginator #paginator [length]=\"(dataModelResult.totalRowCount)\"\r\n [pageIndex]=\"(dataModelResult.currentPageNumber-1)\" [pageSize]=\"dataModelResult.rowPerPage\"\r\n [pageSizeOptions]=\"[5, 10, 20, 100]\" (page)=\"onTablePageingData($event)\"></mat-paginator>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </ng-container>\r\n</app-cms-html-list>","\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport {\r\n CoreSiteModel,\r\n CoreSiteService,\r\n CoreAuthService,\r\n EnumSortType,\r\n ErrorExceptionResult,\r\n FilterModel,\r\n TokenInfoModel,\r\n FilterDataModel,\r\n EnumRecordStatus,\r\n DataFieldInfoModel,\r\n AuthRenewTokenModel\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { ComponentOptionSearchModel } from 'src/app/core/cmsComponentModels/base/componentOptionSearchModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ComponentOptionExportModel } from 'src/app/core/cmsComponentModels/base/componentOptionExportModel';\r\nimport { ComponentOptionStatistModel } from 'src/app/core/cmsComponentModels/base/componentOptionStatistModel';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { Subscription } from 'rxjs';\r\nimport { CoreSiteDeleteComponent } from '../delete/delete.component';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { CoreSiteModuleSiteInfoComponent } from '../module-site-info/module-site-info.component';\r\nimport { CoreSiteModuleSiteOptimazeComponent } from '../module-site-optimaze/module-site-optimaze.component';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-core-site-list',\r\n templateUrl: './list.component.html',\r\n})\r\nexport class CoreSiteListComponent implements OnInit, OnDestroy {\r\n requestLinkUserId = 0;\r\n requestLinkSiteCategoryId = 0;\r\n constructor(\r\n public contentService: CoreSiteService,\r\n private coreAuthService: CoreAuthService,\r\n public publicHelper: PublicHelper,\r\n private cmsToastrService: CmsToastrService,\r\n private router: Router,\r\n private tokenHelper: TokenHelper,\r\n private activatedRoute: ActivatedRoute,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n public dialog: MatDialog) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.optionsSearch.parentMethods = {\r\n onSubmit: (model) => this.onSubmitOptionsSearch(model),\r\n };\r\n this.optionsExport.parentMethods = {\r\n onSubmit: (model) => this.onSubmitOptionExport(model),\r\n };\r\n /*filter Sort*/\r\n this.filteModelContent.sortColumn = 'Id';\r\n this.filteModelContent.sortType = EnumSortType.Descending;\r\n this.requestLinkUserId = + Number(this.activatedRoute.snapshot.paramMap.get('LinkUserId'));\r\n this.requestLinkSiteCategoryId = + Number(this.activatedRoute.snapshot.paramMap.get('LinkSiteCategoryId'));\r\n if (this.requestLinkUserId > 0) {\r\n const filter = new FilterDataModel();\r\n filter.propertyAnyName = 'LinkUserId';\r\n filter.propertyName = 'SiteUsers';\r\n filter.value = this.requestLinkUserId;\r\n this.filteModelContent.filters.push(filter);\r\n }\r\n if (this.requestLinkSiteCategoryId > 0) {\r\n const filter = new FilterDataModel();\r\n filter.propertyName = 'LinkSiteCategoryId';\r\n filter.value = this.requestLinkSiteCategoryId;\r\n this.filteModelContent.filters.push(filter);\r\n }\r\n }\r\n comment: string;\r\n author: string;\r\n dataSource: any;\r\n flag = false;\r\n tableContentSelected = [];\r\n\r\n filteModelContent = new FilterModel();\r\n dataModelResult: ErrorExceptionResult<CoreSiteModel> = new ErrorExceptionResult<CoreSiteModel>();\r\n optionsSearch: ComponentOptionSearchModel = new ComponentOptionSearchModel();\r\n optionsStatist: ComponentOptionStatistModel = new ComponentOptionStatistModel();\r\n optionsExport: ComponentOptionExportModel = new ComponentOptionExportModel();\r\n tokenInfo = new TokenInfoModel();\r\n loading = new ProgressSpinnerModel();\r\n tableRowsSelected: Array<CoreSiteModel> = [];\r\n tableRowSelected: CoreSiteModel = new CoreSiteModel();\r\n tableSource: MatTableDataSource<CoreSiteModel> = new MatTableDataSource<CoreSiteModel>();\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n\r\n tabledisplayedColumns: string[] = [\r\n 'MainImageSrc',\r\n 'Id',\r\n 'linkCreatedBySiteId',\r\n 'RecordStatus',\r\n 'Title',\r\n 'SubDomain',\r\n 'Domain',\r\n 'CreatedDate',\r\n 'UpdatedDate',\r\n 'ExpireDate',\r\n 'Action'\r\n ];\r\n\r\n\r\n\r\n expandedElement: CoreSiteModel | null;\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n ngOnInit(): void {\r\n //this.filteModelContent.sortColumn = 'Title';\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n this.DataGetAll();\r\n });\r\n\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.tokenInfo = next;\r\n this.DataGetAll();\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n DataGetAll(): void {\r\n this.tableRowsSelected = [];\r\n this.tableRowSelected = new CoreSiteModel();\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName, this.translate.instant('MESSAGE.get_information_list'));\r\n this.filteModelContent.accessLoad = true;\r\n /*filter CLone*/\r\n const filterModel = JSON.parse(JSON.stringify(this.filteModelContent));\r\n /*filter CLone*/\r\n this.contentService.ServiceGetAllEditor(filterModel).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n\r\n this.dataModelResult = ret;\r\n this.tableSource.data = ret.listItems;\r\n if (this.tokenInfo.userAccessAdminAllowToAllData || this.tokenInfo.userAccessAdminAllowToProfessionalData) {\r\n this.tabledisplayedColumns = this.publicHelper.listAddIfNotExist(\r\n this.tabledisplayedColumns,\r\n 'linkCreatedBySiteId',\r\n 0\r\n );\r\n } else {\r\n this.tabledisplayedColumns = this.publicHelper.listRemoveIfExist(\r\n this.tabledisplayedColumns,\r\n 'linkCreatedBySiteId'\r\n );\r\n }\r\n\r\n if (this.optionsSearch.childMethods) {\r\n this.optionsSearch.childMethods.setAccess(ret.access);\r\n }\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n onTableSortData(sort: MatSort): void {\r\n if (this.tableSource && this.tableSource.sort && this.tableSource.sort.active === sort.active) {\r\n if (this.tableSource.sort.start === 'asc') {\r\n sort.start = 'desc';\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Descending;\r\n } else if (this.tableSource.sort.start === 'desc') {\r\n this.filteModelContent.sortColumn = '';\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n } else {\r\n sort.start = 'desc';\r\n }\r\n } else {\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n }\r\n this.tableSource.sort = sort;\r\n this.filteModelContent.currentPageNumber = 0;\r\n this.DataGetAll();\r\n }\r\n onTablePageingData(event?: PageEvent): void {\r\n this.filteModelContent.currentPageNumber = event.pageIndex + 1;\r\n this.filteModelContent.rowPerPage = event.pageSize;\r\n this.DataGetAll();\r\n }\r\n\r\n\r\n onActionbuttonNewRow(): void {\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessAddRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessAdd();\r\n return;\r\n }\r\n this.router.navigate(['/core/site/add']);\r\n }\r\n\r\n onActionbuttonEditRow(model: CoreSiteModel = this.tableRowSelected): void {\r\n\r\n if (!model || !model.id || model.id === 0) {\r\n this.cmsToastrService.typeErrorSelectedRow();\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessEditRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessEdit();\r\n return;\r\n }\r\n this.router.navigate(['/core/site/edit', model.id]);\r\n }\r\n onActionbuttonDeleteRow(model: CoreSiteModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n const emessage = this.translate.instant('MESSAGE.no_row_selected_to_delete');\r\n this.cmsToastrService.typeErrorSelected(emessage);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessDeleteRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessDelete();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreSiteDeleteComponent, {\r\n height: '90%',\r\n data: { id: this.tableRowSelected.id }\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n this.DataGetAll();\r\n }\r\n });\r\n\r\n }\r\n onActionbuttonModuleListRow(model: CoreSiteModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n\r\n const message = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n this.router.navigate(['/core/site/modulelist/LinkSiteId/', this.tableRowSelected.id]);\r\n }\r\n onActionbuttonLoginToRow(model: CoreSiteModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n\r\n const message = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n\r\n let authModel: AuthRenewTokenModel;\r\n authModel = new AuthRenewTokenModel();\r\n authModel.siteId = this.tableRowSelected.id;\r\n this.coreAuthService.ServiceRenewToken(authModel).subscribe({\r\n next : (res) => {\r\n if (res.isSuccess) {\r\n this.cmsToastrService.typeSuccessSelected();\r\n this.router.navigate(['/']);\r\n }\r\n else {\r\n this.cmsToastrService.typeErrorSelected();\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n }\r\n onActionbuttonDomainAliasListRow(model: CoreSiteModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n const message = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n this.router.navigate(['/core/sitedomainalias/', this.tableRowSelected.id]);\r\n }\r\n onActionbuttonUserListRow(model: CoreSiteModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n const message = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n this.router.navigate(['/core/site/userlist/LinkSiteId', this.tableRowSelected.id]);\r\n }\r\n onActionbuttonDeviceListRow(model: CoreSiteModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n const message = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n this.router.navigate(['/core/device', this.tableRowSelected.id]);\r\n }\r\n onActionbuttonResller(model: CoreSiteModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n const message = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n this.router.navigate(['/core/site/reseller-chart/LinkSiteId', this.tableRowSelected.id]);\r\n }\r\n onActionbuttonModuleSiteInfo(model: CoreSiteModel = this.tableRowSelected): void {\r\n\r\n if (!model || !model.id || model.id === 0) {\r\n const message = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessEditRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessEdit();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreSiteModuleSiteInfoComponent, {\r\n height: '90%',\r\n data: {\r\n linkSiteId: model.id,\r\n }\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n this.DataGetAll();\r\n }\r\n });\r\n }\r\n onActionbuttonModuleSiteOptimaze(model: CoreSiteModel = this.tableRowSelected): void {\r\n\r\n if (!model || !model.id || model.id === 0) {\r\n const message = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessEditRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessEdit();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreSiteModuleSiteOptimazeComponent, {\r\n height: '90%',\r\n data: {\r\n linkSiteId: model.id,\r\n }\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n this.DataGetAll();\r\n }\r\n });\r\n }\r\n\r\n onActionbuttonStatist(): void {\r\n this.optionsStatist.data.show = !this.optionsStatist.data.show;\r\n if (!this.optionsStatist.data.show) {\r\n return;\r\n }\r\n\r\n const statist = new Map<string, number>();\r\n statist.set('Active', 0);\r\n statist.set('All', 0);\r\n this.contentService.ServiceGetCount(this.filteModelContent).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n statist.set('All', ret.totalRowCount);\r\n this.optionsStatist.childMethods.setStatistValue(statist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n\r\n const filterStatist1 = JSON.parse(JSON.stringify(this.filteModelContent));\r\n const fastfilter = new FilterDataModel();\r\n fastfilter.propertyName = 'RecordStatus';\r\n fastfilter.value = EnumRecordStatus.Available;\r\n filterStatist1.filters.push(fastfilter);\r\n this.contentService.ServiceGetCount(filterStatist1).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n statist.set('Active', ret.totalRowCount);\r\n this.optionsStatist.childMethods.setStatistValue(statist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n\r\n }\r\n onActionbuttonExport(): void {\r\n this.optionsExport.data.show = !this.optionsExport.data.show;\r\n this.optionsExport.childMethods.setExportFilterModel(this.filteModelContent);\r\n }\r\n onSubmitOptionExport(model: FilterModel): void {\r\n const exportlist = new Map<string, string>();\r\n exportlist.set('Download', 'loading ... ');\r\n this.contentService.ServiceExportFile(model).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n exportlist.set('Download', ret.linkFile);\r\n this.optionsExport.childMethods.setExportLinkFile(exportlist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n }\r\n\r\n onActionbuttonReload(): void {\r\n this.DataGetAll();\r\n }\r\n onSubmitOptionsSearch(model: any): void {\r\n this.filteModelContent.filters = model;\r\n this.DataGetAll();\r\n }\r\n onActionTableRowSelect(row: CoreSiteModel): void {\r\n this.tableRowSelected = row;\r\n }\r\n onActionBackToParentUserList(): void {\r\n this.router.navigate(['/core/user/']);\r\n }\r\n onActionBackToParentSiteCategoryList(): void {\r\n this.router.navigate(['/core/sitecategory/']);\r\n }\r\n}\r\n","<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-horizontal-stepper (selectionChange)=\"onStepClick($event,stepper)\" #stepper>\r\n <mat-step label=\"مشخصات \" state=\"main\">\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"{{fieldsInfo['RecordStatus']?.fieldTitle}}\" [(ngModel)]=\"dataModel.recordStatus\"\r\n name=\"dataModel.recordStatus\" #RecordStatus=\"ngModel\" panelClass=\"recordStatus-{{ dataModel.recordStatus }}\"\r\n required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumRecordStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">{{'TITLE.SELECT_STATUS' | translate}}</mat-hint>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n RecordStatus is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- LinkCmsSiteId Field -->\r\n <app-core-site-selector (optionChange)=\"onActionSiteSelect($event)\" [optionDisabled]=\"false\"\r\n [(loading)]=\"loading\" [optionSelectForce]=\"dataModel.linkSiteId\"\r\n [optionPlaceholder]=\"'وب سایت'\"></app-core-site-selector>\r\n <!-- LinkModuleId Field -->\r\n <app-core-module-selector (optionChange)=\"onActionSelectorModuleSelect($event)\" [optionDisabled]=\"false\"\r\n [(loading)]=\"loading\" [optionSelectForce]=\"dataModel.linkModuleId\" [optionPlaceholder]=\"'ماژول'\">\r\n </app-core-module-selector>\r\n <!-- ExpireDate Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['ExpireDate']?.accessWatchField\">\r\n <mat-label>{{fieldsInfo['ExpireDate']?.fieldTitle}}</mat-label>\r\n <input matInput [matDatepicker]=\"ExpireDate\" [(ngModel)]=\"dataModel.expireDate\" name=\"dataModel.expireDate\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.expireDate && fieldsInfo['ExpireDate']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.expireDate = null\">close</mat-icon>\r\n <mat-datepicker-toggle matSuffix [for]=\"ExpireDate\"></mat-datepicker-toggle>\r\n <mat-datepicker touchUi #ExpireDate></mat-datepicker>\r\n </mat-form-field>\r\n\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button (click)=\"onFormCancel()\" type=\"button\" mat-raised-button>{{'ACTION.BACK' | translate}}</button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n <mat-step label=\"دسترسی ها\" state=\"seo\">\r\n <p>دسترسی هایی Ú©Ù‡ به منابع دارید</p>\r\n\r\n <ng-container #viewContainer></ng-container>\r\n\r\n\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"accent\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n <mat-step label=\"وضعیت\" state=\"seo\">\r\n <p>وضعیت Ùˆ مقادیر ذخیره شده این ماژول</p>\r\n\r\n\r\n\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"accent\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n <mat-step label=\"تنظیمات\" state=\"seo\">\r\n <p>تنظیمات این ماژول</p>\r\n\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"accent\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"submit\" mat-raised-button color=\"success\" [disabled]=\"!vform.form.valid\">\r\n {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n </mat-horizontal-stepper>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>","\r\nimport {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreSiteModel,\r\n FilterModel,\r\n FilterDataModel,\r\n CoreModuleSiteService,\r\n CoreModuleSiteModel,\r\n CoreModuleModel,\r\n AccessModel,\r\n DataFieldInfoModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n Inject,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { StepperSelectionEvent } from '@angular/cdk/stepper';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-core-site-module-edit',\r\n templateUrl: './moduleEdit.component.html',\r\n styleUrls: ['./moduleEdit.component.scss'],\r\n})\r\nexport class CoreSiteModuleEditComponent implements OnInit {\r\n requestLinkSiteId = 0;\r\n requestLinkModuleId = 0;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreSiteModuleEditComponent>,\r\n public coreEnumService: CoreEnumService,\r\n public coreModuleSiteService: CoreModuleSiteService,\r\n private cmsToastrService: CmsToastrService,\r\n private publicHelper: PublicHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n if (data) {\r\n this.requestLinkModuleId = +data.linkModuleId || 0;\r\n this.requestLinkSiteId = +data.linkSiteId || 0;\r\n }\r\n }\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n\r\n\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreModuleSiteModel> = new ErrorExceptionResult<CoreModuleSiteModel>();\r\n dataModel: CoreModuleSiteModel = new CoreModuleSiteModel();\r\n\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n\r\n fileManagerOpenForm = false;\r\n\r\n dataAccessModel: AccessModel;\r\n\r\n ngOnInit(): void {\r\n if (this.requestLinkModuleId <= 0 || this.requestLinkSiteId <= 0) {\r\n this.cmsToastrService.typeErrorComponentAction();\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n return;\r\n }\r\n this.getEnumRecordStatus();\r\n this.DataGetOneContent();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n\r\n DataGetOneContent(): void {\r\n\r\n\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.Receiving_Information_From_The_Server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n\r\n const filteModelContent = new FilterModel();\r\n /*make filter*/\r\n let filter = new FilterDataModel();\r\n filter.propertyName = 'LinkModuleId';\r\n filter.value = this.requestLinkModuleId;\r\n filteModelContent.filters.push(filter);\r\n /*make filter*/\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'LinkSiteId';\r\n filter.value = this.requestLinkSiteId;\r\n filteModelContent.filters.push(filter);\r\n\r\n filteModelContent.accessLoad = true;\r\n this.coreModuleSiteService.ServiceGetAll(filteModelContent).subscribe({\r\n next: (ret) => {\r\n /*ÙŽAccess Field*/\r\n this.dataAccessModel = ret.access;\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n\r\n this.dataModel = ret.item;\r\n if (ret.isSuccess) {\r\n if (ret.listItems && ret.listItems.length > 0) {\r\n this.dataModel = ret.listItems[0];\r\n this.formInfo.formTitle = this.formInfo.formTitle + ' ' + ret.item.title;\r\n this.formInfo.formAlert = '';\r\n }\r\n else {\r\n this.cmsToastrService.typeError('ماژول جهت ویرایش یاÙت نشد');\r\n }\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n DataEditContent(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.sending_information_to_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreModuleSiteService.ServiceEdit(this.dataModel).subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.dataModelResult = ret;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_completed_successfully');\r\n this.cmsToastrService.typeSuccessEdit();\r\n this.dialogRef.close({ dialogChangedDate: true });\r\n\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onActionSiteSelect(model: CoreSiteModel): void {\r\n this.dataModel.linkSiteId = null;\r\n if (model && model.id > 0) {\r\n this.dataModel.linkSiteId = model.id;\r\n }\r\n }\r\n onActionSelectorModuleSelect(model: CoreModuleModel): void {\r\n if (!model || model.id <= 0) {\r\n const message = 'ماژول مشخص نیست';\r\n this.cmsToastrService.typeErrorSelected(message);\r\n }\r\n this.dataModel.linkModuleId = model.id;\r\n }\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n return;\r\n }\r\n this.formInfo.formSubmitAllow = false;\r\n this.DataEditContent();\r\n }\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n onStepClick(event: StepperSelectionEvent, stepper: MatStepper): void {\r\n if (event.previouslySelectedIndex < event.selectedIndex) {\r\n if (!this.formGroup.valid) {\r\n this.cmsToastrService.typeErrorFormInvalid();\r\n setTimeout(() => {\r\n stepper.selectedIndex = event.previouslySelectedIndex;\r\n // stepper.previous();\r\n }, 10);\r\n }\r\n }\r\n }\r\n}\r\n","<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"{{fieldsInfo['RecordStatus']?.fieldTitle}}\" [(ngModel)]=\"dataModel.recordStatus\"\r\n name=\"dataModel.recordStatus\" #RecordStatus=\"ngModel\" panelClass=\"recordStatus-{{ dataModel.recordStatus }}\"\r\n required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumRecordStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">{{'TITLE.SELECT_STATUS' | translate}}</mat-hint>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n RecordStatus is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <!-- LinkCmsSiteId Field -->\r\n <app-core-site-selector (optionChange)=\"onActionSiteSelect($event)\" [optionDisabled]=\"false\" [(loading)]=\"loading\"\r\n [optionSelectForce]=\"dataModel.linkSiteId\" [optionPlaceholder]=\"'وب سایت'\"></app-core-site-selector>\r\n <!-- LinkModuleId Field -->\r\n <app-core-module-selector (optionChange)=\"onActionSelectorModuleSelect($event)\" [optionDisabled]=\"false\"\r\n [(loading)]=\"loading\" [optionSelectForce]=\"dataModel.linkModuleId\" [optionPlaceholder]=\"'ماژول'\">\r\n </app-core-module-selector>\r\n <!-- ExpireDate Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['ExpireDate']?.accessWatchField\">\r\n <mat-label>{{fieldsInfo['ExpireDate']?.fieldTitle}}</mat-label>\r\n <input matInput [matDatepicker]=\"ExpireDate\" [(ngModel)]=\"dataModel.expireDate\" name=\"dataModel.expireDate\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.expireDate && fieldsInfo['ExpireDate']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.expireDate = null\">close</mat-icon>\r\n <mat-datepicker-toggle matSuffix [for]=\"ExpireDate\"></mat-datepicker-toggle>\r\n <mat-datepicker touchUi #ExpireDate></mat-datepicker>\r\n </mat-form-field>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n <button type=\"submit\" (click)=\"onFormSubmit()\" class=\"btn btn-success\" [disabled]=\"!vform.form.valid\">\r\n <i class=\"fa fa-check-square-o\"></i> {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>","\r\nimport {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreSiteModel,\r\n CoreModuleSiteModel,\r\n CoreModuleSiteService,\r\n CoreModuleModel,\r\n AccessModel,\r\n DataFieldInfoModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n Inject,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-core-site-module-add',\r\n templateUrl: './moduleAdd.component.html',\r\n styleUrls: ['./moduleAdd.component.scss'],\r\n})\r\nexport class CoreSiteModuleAddComponent implements OnInit {\r\n requestLinkSiteId = 0;\r\n requestLinkModuleId = 0;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreSiteModuleAddComponent>,\r\n public coreEnumService: CoreEnumService,\r\n public coreSiteService: CoreModuleSiteService,\r\n private cmsToastrService: CmsToastrService,\r\n private publicHelper: PublicHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n if (data) {\r\n this.requestLinkModuleId = +data.linkModuleId || 0;\r\n this.requestLinkSiteId = +data.linkSiteId || 0;\r\n }\r\n if (this.requestLinkSiteId > 0) {\r\n this.dataModel.linkSiteId = this.requestLinkSiteId;\r\n }\r\n if (this.requestLinkModuleId > 0) {\r\n this.dataModel.linkModuleId = this.requestLinkModuleId;\r\n }\r\n }\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n\r\n dataAccessModel: AccessModel;\r\n\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreModuleSiteModel> = new ErrorExceptionResult<CoreModuleSiteModel>();\r\n dataModel: CoreModuleSiteModel = new CoreModuleSiteModel();\r\n\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n\r\n fileManagerOpenForm = false;\r\n\r\n\r\n ngOnInit(): void {\r\n this.getEnumRecordStatus();\r\n this.DataGetAccess();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n\r\n DataGetAccess(): void {\r\n this.coreSiteService\r\n .ServiceViewModel()\r\n .subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.dataAccessModel = ret.access;\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n } else {\r\n this.cmsToastrService.typeErrorGetAccess(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeErrorGetAccess(er);\r\n }\r\n }\r\n );\r\n }\r\n\r\n DataAddContent(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.sending_information_to_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreSiteService.ServiceAdd(this.dataModel).subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.dataModelResult = ret;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_completed_successfully');\r\n this.cmsToastrService.typeSuccessAdd();\r\n this.dialogRef.close({ dialogChangedDate: true });\r\n\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n return;\r\n }\r\n this.formInfo.formSubmitAllow = false;\r\n this.DataAddContent();\r\n }\r\n onActionSiteSelect(model: CoreSiteModel): void {\r\n this.dataModel.linkSiteId = null;\r\n if (model && model.id > 0) {\r\n this.dataModel.linkSiteId = model.id;\r\n }\r\n }\r\n onActionSelectorModuleSelect(model: CoreModuleModel): void {\r\n if (!model || model.id <= 0) {\r\n const message = 'ماژول مشخص نیست';\r\n this.cmsToastrService.typeErrorSelected(message);\r\n }\r\n this.dataModel.linkModuleId = model.id;\r\n\r\n }\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n}\r\n","<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n سایت:\r\n {{tokenInfo?.name}} {{tokenInfo?.lastName}} {{tokenInfo?.fullName}}\r\n <br>\r\n کاربر:\r\n {{tokenInfo?.title}}\r\n <br>\r\n ماژول:\r\n {{dataModuleModelResult?.item?.title}}\r\n <br>\r\n اعتبار:\r\n {{dataModelResult?.item?.Credit}}\r\n <br>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n <button type=\"submit\" (click)=\"onFormSubmit()\" class=\"btn btn-success\" [disabled]=\"!vform.form.valid\">\r\n <i class=\"fa fa-check-square-o\"></i> {{'ACTION.SAVE' | translate}}\r\n </button>\r\n <button type=\"button\" (click)=\"onFormActionCreditCharge()\" class=\"btn btn-success\" [disabled]=\"!vform.form.valid\">\r\n <i class=\"fa fa-check-square-o\"></i> شارژ اعتبار\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>","import {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreModuleSiteUserCreditService,\r\n CoreModuleSiteUserCreditModel,\r\n DataFieldInfoModel,\r\n CoreModuleModel,\r\n CoreModuleService,\r\n TokenInfoModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n Inject,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-cms-site-user-credit-view',\r\n templateUrl: './cms-site-user-credit-view.component.html',\r\n styleUrls: ['./cms-site-user-credit-view.component.scss'],\r\n})\r\nexport class CmsSiteUserCreditViewComponent implements OnInit {\r\n // requestLinkSiteId = 0;\r\n // requestLinkUserId = 0;\r\n requestLinkModuleId = 0;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CmsSiteUserCreditViewComponent>,\r\n public publicHelper: PublicHelper,\r\n public coreEnumService: CoreEnumService,\r\n public coreModuleSiteUserCreditService: CoreModuleSiteUserCreditService,\r\n public coreModuleService: CoreModuleService,\r\n private cmsToastrService: CmsToastrService,\r\n private cdr: ChangeDetectorRef,\r\n private tokenHelper: TokenHelper,\r\n private router: Router,\r\n public translate: TranslateService,\r\n ) {\r\n\r\n this.loading.cdr = this.cdr;this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n if (data) {\r\n // this.requestLinkSiteId = +data.linkSiteId || 0;\r\n // this.requestLinkUserId = +data.linkUserId || 0;\r\n this.requestLinkModuleId = +data.linkModuleId || 0;\r\n }\r\n }\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreModuleSiteUserCreditModel> = new ErrorExceptionResult<CoreModuleSiteUserCreditModel>();\r\n dataModuleModelResult: ErrorExceptionResult<CoreModuleModel> = new ErrorExceptionResult<CoreModuleModel>();\r\n tokenInfo = new TokenInfoModel();\r\n\r\n\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n\r\n\r\n ngOnInit(): void {\r\n this.formInfo.formTitle = 'اعتبار ';\r\n\r\n\r\n if (this.requestLinkModuleId <= 0) {\r\n this.cmsToastrService.typeErrorComponentAction();\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n return;\r\n }\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n });\r\n this.getEnumRecordStatus();\r\n this.DataGetOneContent();\r\n this.DataModuleGetOne();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n\r\n DataGetOneContent(): void {\r\n\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.Receiving_Information_From_The_Server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreModuleSiteUserCreditService.setAccessLoad();\r\n this.coreModuleSiteUserCreditService.ServiceGetCredit(this.requestLinkModuleId).subscribe(\r\n (next) => {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(next.access);\r\n\r\n this.dataModelResult = next;\r\n if (next.isSuccess) {\r\n this.formInfo.formTitle = this.formInfo.formTitle + ' ' + next.item.linkUserId;\r\n this.formInfo.formAlert = '';\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = next.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(next.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n (error) => {\r\n this.cmsToastrService.typeError(error);\r\n this.loading.Stop(pName);\r\n\r\n }\r\n );\r\n }\r\n\r\n DataModuleGetOne(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.Receiving_Information_From_The_Server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreModuleService.setAccessLoad();\r\n this.coreModuleService.ServiceGetOneById(this.requestLinkModuleId).subscribe(\r\n (next) => {\r\n // this.fieldsInfo = this.publicHelper.fieldInfoConvertor(next.access);\r\n\r\n this.dataModuleModelResult = next;\r\n if (next.isSuccess) {\r\n this.formInfo.formTitle = this.formInfo.formTitle + ' ' + next.item.title;\r\n this.formInfo.formAlert = '';\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = next.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(next.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n (error) => {\r\n this.cmsToastrService.typeError(error);\r\n this.loading.Stop(pName);\r\n\r\n }\r\n );\r\n }\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n return;\r\n }\r\n // this.formInfo.formSubmitAllow = false;\r\n // if (this.ComponentAction === ComponentActionEnum.add) {\r\n // this.DataAddContent();\r\n // }\r\n // if (this.ComponentAction === ComponentActionEnum.edit) {\r\n // this.DataEditContent();\r\n // }\r\n\r\n }\r\n onFormActionCreditCharge(): void {\r\n setTimeout(() => this.router.navigate(['/coremodule/site-user-credit-charge/', this.requestLinkModuleId]), 1000);\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n}\r\n","<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n سایت:\r\n {{tokenInfo?.title}}\r\n <br>\r\n ماژول:\r\n {{dataModuleModelResult?.item?.title}}\r\n <br>\r\n اعتبار:\r\n {{dataModelResult?.item?.Credit}}\r\n <br>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n <button type=\"submit\" (click)=\"onFormSubmit()\" class=\"btn btn-success\" [disabled]=\"!vform.form.valid\">\r\n <i class=\"fa fa-check-square-o\"></i> {{'ACTION.SAVE' | translate}}\r\n </button>\r\n <button type=\"button\" (click)=\"onFormActionCreditCharge()\" class=\"btn btn-success\" [disabled]=\"!vform.form.valid\">\r\n <i class=\"fa fa-check-square-o\"></i> شارژ اعتبار\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>","import {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreModuleSiteCreditService,\r\n CoreModuleSiteCreditModel,\r\n DataFieldInfoModel,\r\n CoreModuleService,\r\n CoreModuleModel,\r\n TokenInfoModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n Inject,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-cms-site-credit-view',\r\n templateUrl: './cms-site-credit-view.component.html',\r\n styleUrls: ['./cms-site-credit-view.component.scss'],\r\n})\r\nexport class CmsSiteCreditViewComponent implements OnInit {\r\n requestLinkModuleId = 0;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CmsSiteCreditViewComponent>,\r\n public publicHelper: PublicHelper,\r\n public coreEnumService: CoreEnumService,\r\n public coreModuleSiteCreditService: CoreModuleSiteCreditService,\r\n public coreModuleService: CoreModuleService,\r\n private cmsToastrService: CmsToastrService,\r\n private cdr: ChangeDetectorRef,\r\n private tokenHelper: TokenHelper,\r\n private router: Router,\r\n public translate: TranslateService,\r\n ) {\r\n\r\n this.loading.cdr = this.cdr;this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n if (data) {\r\n this.requestLinkModuleId = +data.linkModuleId || 0;\r\n }\r\n }\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreModuleSiteCreditModel> = new ErrorExceptionResult<CoreModuleSiteCreditModel>();\r\n dataModuleModelResult: ErrorExceptionResult<CoreModuleModel> = new ErrorExceptionResult<CoreModuleModel>();\r\n tokenInfo = new TokenInfoModel();\r\n\r\n\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n\r\n ngOnInit(): void {\r\n\r\n this.formInfo.formTitle = 'اعتبار سایت ';\r\n\r\n if (this.requestLinkModuleId <= 0) {\r\n this.cmsToastrService.typeErrorComponentAction();\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n return;\r\n }\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n });\r\n this.DataGetOneContent();\r\n this.DataModuleGetOne();\r\n this.getEnumRecordStatus();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n\r\n DataGetOneContent(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.Receiving_Information_From_The_Server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreModuleSiteCreditService.setAccessLoad();\r\n this.coreModuleSiteCreditService.ServiceGetCredit(this.requestLinkModuleId).subscribe(\r\n (next) => {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(next.access);\r\n\r\n this.dataModelResult = next;\r\n if (next.isSuccess) {\r\n this.formInfo.formTitle = this.formInfo.formTitle + ' ' + next.item.linkSiteId;\r\n this.formInfo.formAlert = '';\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = next.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(next.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n (error) => {\r\n this.cmsToastrService.typeError(error);\r\n this.loading.Stop(pName);\r\n\r\n }\r\n );\r\n }\r\n\r\n\r\n DataModuleGetOne(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.Receiving_Information_From_The_Server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreModuleService.setAccessLoad();\r\n this.coreModuleService.ServiceGetOneById(this.requestLinkModuleId).subscribe(\r\n (next) => {\r\n // this.fieldsInfo = this.publicHelper.fieldInfoConvertor(next.access);\r\n\r\n this.dataModuleModelResult = next;\r\n if (next.isSuccess) {\r\n this.formInfo.formTitle = this.formInfo.formTitle + ' ' + next.item.title;\r\n this.formInfo.formAlert = '';\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = next.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(next.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n (error) => {\r\n this.cmsToastrService.typeError(error);\r\n this.loading.Stop(pName);\r\n\r\n }\r\n );\r\n }\r\n\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n return;\r\n }\r\n // this.formInfo.formSubmitAllow = false;\r\n // if (this.ComponentAction === ComponentActionEnum.add) {\r\n // this.DataAddContent();\r\n // }\r\n // if (this.ComponentAction === ComponentActionEnum.edit) {\r\n // this.DataEditContent();\r\n // }\r\n\r\n }\r\n onFormActionCreditCharge(): void {\r\n setTimeout(() => this.router.navigate(['/coremodule/site-credit-charge/', this.requestLinkModuleId]), 1000);\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n}\r\n","<div class=\"table\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <div class=\"tr\">\r\n <div class=\"td\"></div>\r\n <div class=\"td align\" style=\"color: darkblue;\"> <h5> <b>{{'TITLE.Selected_Site'|translate}}</b> </h5> </div>\r\n <div class=\"td\" *ngIf=\"dataModelResult?.item?.id\">\r\n </div>\r\n </div>\r\n <div class=\"tr\">\r\n <div class=\"td\"><b>{{fieldsInfo['Id']?.fieldTitle}} </b>: </div>\r\n <div class=\"td align\">{{dataModelResult?.item?.id}}</div>\r\n <div class=\"td\"></div>\r\n <div style=\"clear: both;\"></div>\r\n </div>\r\n <div class=\"tr\">\r\n <div class=\"td\"><b>{{fieldsInfo['Title']?.fieldTitle}}</b> : </div>\r\n <div class=\"td align\">{{dataModelResult?.item?.title}}</div>\r\n <div class=\"td\" style=\"text-align: left;\">\r\n <abbr title=\"link to\">\r\n <button class=\"btn btn-outline-primary\">\r\n <mat-icon (click)=\"onActionbuttonLinkTo()\" *ngIf=\"dataModelResult?.item?.id\" >↗ \r\n </mat-icon> \r\n </button>\r\n </abbr>\r\n </div>\r\n <div style=\"clear: both;\"></div>\r\n </div>\r\n</div>","\r\nimport {\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n CoreSiteModel,\r\n CoreSiteService,\r\n DataFieldInfoModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n Input,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { CmsLinkToComponent } from 'src/app/shared/cms-link-to/cms-link-to.component';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { Subscription } from 'rxjs';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n@Component({\r\n selector: 'app-core-site-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n})\r\nexport class CoreSiteHeaderComponent implements OnInit, OnDestroy {\r\n constructor(\r\n private headerService: CoreSiteService,\r\n public publicHelper: PublicHelper,\r\n private cdr: ChangeDetectorRef,\r\n private cmsToastrService: CmsToastrService,\r\n public dialog: MatDialog,\r\n public translate: TranslateService,\r\n public tokenHelper: TokenHelper\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n }\r\n @Input() optionId = 0;\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreSiteModel> = new ErrorExceptionResult<CoreSiteModel>();\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n\r\n cmsApiStoreSubscribe: Subscription;\r\n ngOnInit(): void {\r\n if (this.optionId > 0) {\r\n this.DataGetOneContent();\r\n }\r\n this.getEnumRecordStatus();\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.DataGetOneContent();\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n DataGetOneContent(): void {\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.headerService.setAccessLoad();\r\n this.headerService.ServiceGetOneById(this.optionId).subscribe({\r\n next: (ret) => {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n if (ret.isSuccess) {\r\n this.dataModelResult = ret;\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onActionbuttonLinkTo(model: CoreSiteModel = this.dataModelResult.item): void {\r\n if (!model || !model.id || model.id > 0) {\r\n this.cmsToastrService.typeErrorSelectedRow();\r\n return;\r\n }\r\n //open popup\r\n const dialogRef = this.dialog.open(CmsLinkToComponent, {\r\n // height: \"90%\",\r\n data: {\r\n Title: model.title,\r\n urlViewContentQRCodeBase64: '',\r\n urlViewContent: model.currentSiteDomainUrl,\r\n },\r\n });\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result && result.dialogChangedDate) {\r\n }\r\n });\r\n //open popup\r\n }\r\n}\r\n","<div class=\"table\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <div class=\"tr\">\r\n <div class=\"td\"></div>\r\n <div class=\"td align\" style=\"color: darkblue;\"> <h5> <b>{{'TITLE.Selected_Module'|translate}}</b> </h5> </div>\r\n <div class=\"td\" *ngIf=\"dataModelResult?.item?.id\">\r\n </div>\r\n </div>\r\n <div class=\"tr\">\r\n <div class=\"td\"><b>{{fieldsInfo['Id']?.fieldTitle}} </b>: </div>\r\n <div class=\"td align\">{{dataModelResult?.item?.id}}</div>\r\n <div class=\"td\"></div>\r\n <div style=\"clear: both;\"></div>\r\n </div>\r\n <div class=\"tr\">\r\n <div class=\"td\"><b>{{fieldsInfo['Title']?.fieldTitle}}</b> : </div>\r\n <div class=\"td align\">{{dataModelResult?.item?.title}}</div>\r\n <div class=\"td\" style=\"text-align: left;\">\r\n \r\n </div>\r\n <div style=\"clear: both;\"></div>\r\n </div>\r\n</div>","\r\nimport {\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n CoreModuleModel,\r\n CoreModuleService,\r\n DataFieldInfoModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n Input,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { Subscription } from 'rxjs';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n@Component({\r\n selector: 'app-core-module-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n})\r\nexport class CoreModuleHeaderComponent implements OnInit, OnDestroy {\r\n constructor(\r\n private headerService: CoreModuleService,\r\n public publicHelper: PublicHelper,\r\n private cdr: ChangeDetectorRef,\r\n private cmsToastrService: CmsToastrService,\r\n public dialog: MatDialog,\r\n public translate: TranslateService,\r\n public tokenHelper: TokenHelper\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n }\r\n @Input() optionId = 0;\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreModuleModel> = new ErrorExceptionResult<CoreModuleModel>();\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n\r\n cmsApiStoreSubscribe: Subscription;\r\n ngOnInit(): void {\r\n if (this.optionId > 0) {\r\n this.DataGetOneContent();\r\n }\r\n this.getEnumRecordStatus();\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.DataGetOneContent();\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n DataGetOneContent(): void {\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.headerService.setAccessLoad();\r\n this.headerService.ServiceGetOneById(this.optionId).subscribe({\r\n next: (ret) => {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n if (ret.isSuccess) {\r\n this.dataModelResult = ret;\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n}\r\n","<app-cms-guide-notice [Key]=\"'module.site.modulelist'\" [svg]=\"'assets/media/svg/icons/General/Notifications1.svg'\"></app-cms-guide-notice>\r\n<app-core-site-header [optionId]=\"requestLinkSiteId\" *ngIf=\"requestLinkSiteId>0\"></app-core-site-header>\r\n<app-core-module-header [optionId]=\"requestLinkModuleId\" *ngIf=\"requestLinkModuleId>0\"></app-core-module-header>\r\n<app-cms-html-list [optionLoading]=\"loading\" [optionTreeDisplay]=\"false\">\r\n <ng-container cms-tree>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n --------------------------------------\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n </ng-container>\r\n <ng-container cms-header>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </ng-container>\r\n <ng-container cms-action>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n <button *ngIf=\"dataModelResult.access.accessAddRow \" (click)=\"onActionbuttonNewRow()\" type=\"button\"\r\n class=\"btn btn-outline-primary\" id=\"openModalButton\" data-toggle=\"modal\" data-target=\"#categoryModal\">{{'ACTION.ADD' |\r\n translate}}</button>\r\n <button *ngIf=\"dataModelResult.access.accessEditRow && tableRowSelected.linkSiteId\"\r\n (click)=\"onActionbuttonEditRow()\" type=\"button\" class=\"btn btn-outline-warning\" data-toggle=\"modal\"\r\n data-target=\"#categoryModal\">{{'ACTION.EDIT' | translate}}</button>\r\n <button *ngIf=\"dataModelResult.access.accessDeleteRow && tableRowSelected.linkSiteId>0\"\r\n (click)=\"onActionbuttonDeleteRow()\" type=\"button\" class=\"btn btn-outline-danger\">{{'ACTION.DELETE' | translate}}</button>\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle [(ngModel)]=\"optionsSearch.data.show\">{{'ACTION.SEARCH' | translate}}</mat-slide-toggle>\r\n </a>\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle (click)=\"onActionbuttonStatist()\">{{'ACTION.STATIST' | translate}}\r\n </mat-slide-toggle>\r\n </a>\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle (click)=\"onActionbuttonExport()\">{{'ACTION.EXPORTFILE' | translate}}\r\n </mat-slide-toggle>\r\n </a>\r\n <button (click)=\"onActionbuttonReload()\" type=\"button\" class=\"btn btn-outline-secondary BTN\">\r\n <mat-icon style=\"font-size: 20px;margin: -1px;\" title=\"{{'ACTION.RELOAD' | translate}}\">refresh</mat-icon>\r\n </button>\r\n <button (click)=\"onActionBackToParent()\" *ngIf=\"this.requestLinkSiteId>0\" type=\"button\"\r\n class=\"btn btn-outline-success BTN\">{{'ACTION.BACK' | translate}}</button>\r\n <button (click)=\"onActionBackToParentModuleList()\" *ngIf=\"this.requestLinkModuleId>0\" type=\"button\"\r\n class=\"btn btn-outline-success BTN\">{{'ACTION.BACK' | translate}}</button>\r\n <button (click)=\"onActionbuttonReNewModule()\" type=\"button\" class=\"btn btn-outline-success BTN\">{{'ACTION.EXTEND_MODULES' | translate}}</button>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n </ng-container>\r\n <ng-container cms-action-area>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n <app-cms-search-list [(options)]=\"optionsSearch\"></app-cms-search-list>\r\n <app-cms-export-list [(options)]=\"optionsExport\"></app-cms-export-list>\r\n <app-cms-statist-list [(options)]=\"optionsStatist\"></app-cms-statist-list>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n </ng-container>\r\n <ng-container cms-body>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n \r\n <mat-table [dataSource]=\"tableSource\" matSort #tableSort=\"matSort\" (matSortChange)=\"onTableSortData(tableSort)\">\r\n <!-- LinkSiteId Column -->\r\n <ng-container matColumnDef=\"LinkSiteId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['LinkSiteId']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.linkSiteId}} </mat-cell>\r\n </ng-container>\r\n <!-- LinkModuleId Column -->\r\n <ng-container matColumnDef=\"LinkModuleId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['LinkModuleId']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.linkModuleId | cmstitle : dataModelCoreModuleResult.listItems}}\r\n </mat-cell>\r\n </ng-container>\r\n <!-- RecordStatus Column -->\r\n <ng-container matColumnDef=\"RecordStatus\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['RecordStatus']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> <i [ngClass]=\"row.recordStatus|statusClass\" ></i>\r\n <select matNativeControl cmsRecordStatusSelfSave [contentService]=\"contentService\" [row]=\"row\" [ngStyle]=\"{'display': row.id === tableRowSelected.id ? '' : 'none' }\">\r\n </select> </mat-cell>\r\n </ng-container>\r\n <!-- virtual_CmsSite.title Column -->\r\n <ng-container matColumnDef=\"virtual_CmsSite.title\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{'TITLE.WEBSITE' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.virtual_CmsSite.title}} </mat-cell>\r\n </ng-container>\r\n <!-- virtual_CmsModule.title Column -->\r\n <ng-container matColumnDef=\"virtual_CmsModule.title\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{'TITLE.MODULE' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.virtual_CmsModule.title}} </mat-cell>\r\n </ng-container>\r\n <!-- HasBuyed Column -->\r\n <ng-container matColumnDef=\"HasBuyed\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['HasBuyed']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"><i [ngClass]=\"row.hasBuyed|boolclass\"></i> </mat-cell>\r\n </ng-container>\r\n <!-- CreatedDate Column -->\r\n <ng-container matColumnDef=\"CreatedDate\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['CreatedDate']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{ publicHelper.LocaleDate(row.createdDate) }} </mat-cell>\r\n </ng-container>\r\n <!-- UpdatedDate Column -->\r\n <ng-container matColumnDef=\"UpdatedDate\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header>{{fieldsInfo['UpdatedDate']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{ publicHelper.LocaleDate(row.updatedDate) }} </mat-cell>\r\n </ng-container>\r\n <!-- RenewDate Column -->\r\n <ng-container matColumnDef=\"RenewDate\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['RenewDate']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{ publicHelper.LocaleDate(row.renewDate) }} </mat-cell>\r\n </ng-container>\r\n <!-- ExpireDate Column -->\r\n <ng-container matColumnDef=\"ExpireDate\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['ExpireDate']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" [ngStyle]=\"{'background':publicHelper.RowStyleExpireDate(row.expireDate) }\">\r\n {{ publicHelper.LocaleDate(row.expireDate) }} </mat-cell>\r\n </ng-container>\r\n <!-- Action Column -->\r\n <ng-container matColumnDef=\"Action\">\r\n <mat-header-cell *matHeaderCellDef> {{'TITLE.OPTION' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=' Action'>\r\n <!-- Action Menu -->\r\n <button mat-icon-button [matMenuTriggerFor]=\"actionMenu\" aria-label=\"Action Menu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #actionMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"onActionbuttonEditRow(row)\" *ngIf=\"dataModelResult.access.accessEditRow\">\r\n <mat-icon>mode_edit</mat-icon>\r\n <span>{{'ACTION.EDIT' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonDeleteRow(row)\" *ngIf=\"dataModelResult.access.accessDeleteRow\">\r\n <mat-icon>delete_forever</mat-icon>\r\n <span>{{'ACTION.DELETE' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonConfigSiteRow(row)\">\r\n <mat-icon>extension</mat-icon>\r\n <span>{{'ACTION.MODULE_SETTINGS' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonConfigMainAdminRow(row)\"\r\n *ngIf=\"tokenInfo.userAccessAdminAllowToProfessionalData\">\r\n <mat-icon>extension</mat-icon>\r\n <span>تنظیمات مدیریتی</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonSiteCreditAccountRow(row)\"\r\n *ngIf=\"row.virtual_CmsModule.NeedSiteCreditAccount\">\r\n <mat-icon>extension</mat-icon>\r\n <span>اعتبار سایت</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonSiteUserCreditAccountRow(row)\"\r\n *ngIf=\"row.virtual_CmsModule.NeedSiteUserCreditAccount\">\r\n <mat-icon>extension</mat-icon>\r\n <span>اعتبار کاربرشما</span>\r\n </button>\r\n </mat-menu>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"tabledisplayedColumns\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns: tabledisplayedColumns;\" (click)=\"onActionTableRowSelect(row)\"\r\n [ngStyle]=\"{'background':( row.linkSiteId === tableRowSelected.linkSiteId && row.linkModuleId===tableRowSelected.linkModuleId )? '#d3d3da' :'' }\">\r\n </mat-row>\r\n </mat-table>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </ng-container>\r\n <ng-container cms-footer>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <mat-paginator #paginator [length]=\"(dataModelResult.totalRowCount)\"\r\n [pageIndex]=\"(dataModelResult.currentPageNumber-1)\" [pageSize]=\"dataModelResult.rowPerPage\"\r\n [pageSizeOptions]=\"[5, 10, 20, 100]\" (page)=\"onTablePageingData($event)\"></mat-paginator>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </ng-container>\r\n</app-cms-html-list>","\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport {\r\n EnumSortType,\r\n ErrorExceptionResult,\r\n FilterModel,\r\n TokenInfoModel,\r\n FilterDataModel,\r\n EnumRecordStatus,\r\n CoreModuleSiteService,\r\n CoreModuleSiteModel,\r\n DataFieldInfoModel,\r\n EnumFilterDataModelSearchTypes,\r\n CoreModuleService,\r\n CoreModuleModel\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { ComponentOptionSearchModel } from 'src/app/core/cmsComponentModels/base/componentOptionSearchModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ComponentOptionExportModel } from 'src/app/core/cmsComponentModels/base/componentOptionExportModel';\r\nimport { ComponentOptionStatistModel } from 'src/app/core/cmsComponentModels/base/componentOptionStatistModel';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { Subscription } from 'rxjs';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { CoreSiteModuleEditComponent } from '../moduleEdit/moduleEdit.component';\r\nimport { CoreSiteModuleAddComponent } from '../moduleAdd/moduleAdd.component';\r\nimport { CmsConfirmationDialogService } from 'src/app/shared/cms-confirmation-dialog/cmsConfirmationDialog.service';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { CmsSiteUserCreditViewComponent } from 'src/app/shared/cms-site-user-credit-view/cms-site-user-credit-view.component';\r\nimport { CmsSiteCreditViewComponent } from 'src/app/shared/cms-site-credit-view/cms-site-credit-view.component';\r\n@Component({\r\n selector: 'app-core-site-module-list',\r\n templateUrl: './moduleList.component.html',\r\n})\r\nexport class CoreSiteModuleListComponent implements OnInit, OnDestroy {\r\n requestLinkSiteId = 0;\r\n requestLinkModuleId = 0;\r\n constructor(\r\n public contentService: CoreModuleSiteService,\r\n public publicHelper: PublicHelper,\r\n private cmsToastrService: CmsToastrService,\r\n private activatedRoute: ActivatedRoute,\r\n private coreModuleService: CoreModuleService,\r\n private cmsConfirmationDialogService: CmsConfirmationDialogService,\r\n public dialog: MatDialog,\r\n private tokenHelper: TokenHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n private router: Router,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.requestLinkSiteId = + Number(this.activatedRoute.snapshot.paramMap.get('LinkSiteId'));\r\n this.requestLinkModuleId = + Number(this.activatedRoute.snapshot.paramMap.get('LinkModuleId'));\r\n if (this.requestLinkSiteId > 0) {\r\n const filter = new FilterDataModel();\r\n filter.propertyName = 'LinkSiteId';\r\n filter.value = this.requestLinkSiteId;\r\n this.filteModelContent.filters.push(filter);\r\n }\r\n if (this.requestLinkModuleId > 0) {\r\n const filter = new FilterDataModel();\r\n filter.propertyName = 'LinkModuleId';\r\n filter.value = this.requestLinkModuleId;\r\n this.filteModelContent.filters.push(filter);\r\n }\r\n this.optionsSearch.parentMethods = {\r\n onSubmit: (model) => this.onSubmitOptionsSearch(model),\r\n };\r\n this.optionsExport.parentMethods = {\r\n onSubmit: (model) => this.onSubmitOptionExport(model),\r\n };\r\n /*filter Sort*/\r\n this.filteModelContent.sortColumn = 'Id';\r\n this.filteModelContent.sortType = EnumSortType.Descending;\r\n }\r\n comment: string;\r\n author: string;\r\n dataSource: any;\r\n flag = false;\r\n tableContentSelected = [];\r\n\r\n filteModelContent = new FilterModel();\r\n dataModelResult: ErrorExceptionResult<CoreModuleSiteModel> = new ErrorExceptionResult<CoreModuleSiteModel>();\r\n optionsSearch: ComponentOptionSearchModel = new ComponentOptionSearchModel();\r\n optionsStatist: ComponentOptionStatistModel = new ComponentOptionStatistModel();\r\n optionsExport: ComponentOptionExportModel = new ComponentOptionExportModel();\r\n tokenInfo = new TokenInfoModel();\r\n @Input() loading = new ProgressSpinnerModel();\r\n tableRowsSelected: Array<CoreModuleSiteModel> = [];\r\n tableRowSelected: CoreModuleSiteModel = new CoreModuleSiteModel();\r\n tableSource: MatTableDataSource<CoreModuleSiteModel> = new MatTableDataSource<CoreModuleSiteModel>();\r\n\r\n dataModelCoreModuleResult: ErrorExceptionResult<CoreModuleModel> = new ErrorExceptionResult<CoreModuleModel>();\r\n\r\n tabledisplayedColumns: string[] = [\r\n 'LinkSiteId',\r\n 'LinkModuleId',\r\n 'RecordStatus',\r\n 'virtual_CmsSite.title',\r\n 'virtual_CmsModule.title',\r\n 'CreatedDate',\r\n 'UpdatedDate',\r\n 'RenewDate',\r\n 'HasBuyed',\r\n 'ExpireDate',\r\n 'Action'\r\n ];\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n\r\n\r\n expandedElement: CoreModuleSiteModel | null;\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n ngOnInit(): void {\r\n this.filteModelContent.sortColumn = 'Title';\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n this.DataGetAll();\r\n });\r\n\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.tokenInfo = next;\r\n this.DataGetAll();\r\n });\r\n\r\n this.getModuleList();\r\n }\r\n getModuleList(): void {\r\n const filter = new FilterModel();\r\n filter.rowPerPage = 100;\r\n this.coreModuleService.ServiceGetAllModuleName(filter).subscribe((next) => {\r\n this.dataModelCoreModuleResult = next;\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n DataGetAll(): void {\r\n this.tableRowsSelected = [];\r\n this.tableRowSelected = new CoreModuleSiteModel();\r\n\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n\r\n this.filteModelContent.accessLoad = true;\r\n /*filter CLone*/\r\n const filterModel = JSON.parse(JSON.stringify(this.filteModelContent));\r\n /*filter CLone*/\r\n this.contentService.ServiceGetAll(filterModel).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n this.dataModelResult = ret;\r\n this.tableSource.data = ret.listItems;\r\n if (this.optionsSearch.childMethods) {\r\n this.optionsSearch.childMethods.setAccess(ret.access);\r\n }\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n onTableSortData(sort: MatSort): void {\r\n if (this.tableSource && this.tableSource.sort && this.tableSource.sort.active === sort.active) {\r\n if (this.tableSource.sort.start === 'asc') {\r\n sort.start = 'desc';\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Descending;\r\n } else if (this.tableSource.sort.start === 'desc') {\r\n this.filteModelContent.sortColumn = '';\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n } else {\r\n sort.start = 'desc';\r\n }\r\n } else {\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n }\r\n this.tableSource.sort = sort;\r\n this.filteModelContent.currentPageNumber = 0;\r\n this.DataGetAll();\r\n }\r\n onTablePageingData(event?: PageEvent): void {\r\n this.filteModelContent.currentPageNumber = event.pageIndex + 1;\r\n this.filteModelContent.rowPerPage = event.pageSize;\r\n this.DataGetAll();\r\n }\r\n\r\n onActionbuttonReNewModule(): void {\r\n this.router.navigate(['core/modulesale/serial/checklist/']);\r\n }\r\n onActionbuttonNewRow(): void {\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessAddRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessAdd();\r\n return;\r\n }\r\n var LinkSiteId = this.requestLinkSiteId;\r\n var LinkModuleId = this.requestLinkModuleId;\r\n if (LinkSiteId <= 0) {\r\n LinkSiteId = this.tokenInfo.siteId;\r\n }\r\n const dialogRef = this.dialog.open(CoreSiteModuleAddComponent, {\r\n height: '90%',\r\n data: {\r\n linkSiteId: LinkSiteId,\r\n linkModuleId: LinkModuleId,\r\n }\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n this.DataGetAll();\r\n }\r\n });\r\n }\r\n\r\n onActionbuttonEditRow(model: CoreModuleSiteModel = this.tableRowSelected): void {\r\n\r\n if (!model || !model.linkModuleId || model.linkModuleId === 0) {\r\n this.cmsToastrService.typeErrorSelectedRow();\r\n return;\r\n }\r\n if (!model || !model.linkSiteId || model.linkSiteId === 0) {\r\n this.cmsToastrService.typeErrorSelectedRow();\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessEditRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessEdit();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreSiteModuleEditComponent, {\r\n height: '90%',\r\n data: {\r\n linkSiteId: model.linkSiteId,\r\n linkModuleId: model.linkModuleId\r\n }\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n this.DataGetAll();\r\n }\r\n });\r\n }\r\n\r\n onActionbuttonDeleteRow(model: CoreModuleSiteModel = this.tableRowSelected): void {\r\n if (!model || !model.linkModuleId || model.linkModuleId === 0 || !model.linkSiteId || model.linkSiteId === 0) {\r\n const emessage = this.translate.instant('MESSAGE.no_row_selected_to_delete');\r\n this.cmsToastrService.typeErrorSelected(emessage);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessDeleteRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessDelete();\r\n return;\r\n }\r\n\r\n\r\n const title = this.translate.instant('MESSAGE.Please_Confirm');\r\n const message = this.translate.instant('MESSAGE.Do_you_want_to_delete_this_content') + '?' + '<br> ( ' + this.tableRowSelected.title + ' ) ';\r\n this.cmsConfirmationDialogService.confirm(title, message)\r\n .then((confirmed) => {\r\n if (confirmed) {\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.contentService.ServiceDeleteEntity(this.tableRowSelected).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.cmsToastrService.typeSuccessRemove();\r\n this.DataGetAll();\r\n } else {\r\n this.cmsToastrService.typeErrorRemove();\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n )\r\n .catch(() => {\r\n // console.log('User dismissed the dialog (e.g., by using ESC, clicking the cross icon, or clicking outside the dialog)')\r\n }\r\n );\r\n\r\n }\r\n\r\n\r\n\r\n onActionbuttonStatist(): void {\r\n this.optionsStatist.data.show = !this.optionsStatist.data.show;\r\n if (!this.optionsStatist.data.show) {\r\n return;\r\n }\r\n const statist = new Map<string, number>();\r\n statist.set('Active', 0);\r\n statist.set('Expired Date', 0);\r\n statist.set('All', 0);\r\n this.contentService.ServiceGetCount(this.filteModelContent).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n statist.set('All', ret.totalRowCount);\r\n this.optionsStatist.childMethods.setStatistValue(statist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n\r\n const filterStatist1 = JSON.parse(JSON.stringify(this.filteModelContent));\r\n const fastfilter = new FilterDataModel();\r\n fastfilter.propertyName = 'RecordStatus';\r\n fastfilter.value = EnumRecordStatus.Available;\r\n filterStatist1.filters.push(fastfilter);\r\n this.contentService.ServiceGetCount(filterStatist1).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n statist.set('Active', ret.totalRowCount);\r\n this.optionsStatist.childMethods.setStatistValue(statist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n const filterStatist2 = JSON.parse(JSON.stringify(this.filteModelContent));\r\n const fastFilter2 = new FilterDataModel();\r\n fastFilter2.propertyName = 'ExpireDate';\r\n fastFilter2.value = new Date();\r\n fastFilter2.searchType = EnumFilterDataModelSearchTypes.GreaterThan;\r\n filterStatist2.filters.push(fastFilter2);\r\n this.contentService.ServiceGetCount(filterStatist2).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n statist.set('Expired Date', ret.totalRowCount);\r\n this.optionsStatist.childMethods.setStatistValue(statist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n }\r\n }\r\n );\r\n }\r\n onActionbuttonConfigSiteRow(model: CoreModuleSiteModel = this.tableRowSelected): void {\r\n if (!model || !model.linkModuleId || model.linkModuleId === 0 || !model.linkSiteId || model.linkSiteId === 0) {\r\n const emessage = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(emessage);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n this.router.navigate([model.virtual_CmsModule.className.toLowerCase() + '/config/site/', model.linkSiteId]);\r\n }\r\n onActionbuttonConfigMainAdminRow(model: CoreModuleSiteModel = this.tableRowSelected): void {\r\n if (!model || !model.linkModuleId || model.linkModuleId === 0 || !model.linkSiteId || model.linkSiteId === 0) {\r\n const emessage = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(emessage);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n this.router.navigate([model.virtual_CmsModule.className.toLowerCase() + '/config/mainadmin/']);\r\n }\r\n onActionbuttonSiteCreditAccountRow(model: CoreModuleSiteModel = this.tableRowSelected): void {\r\n if (!model || !model.linkModuleId || model.linkModuleId === 0 || !model.linkSiteId || model.linkSiteId === 0) {\r\n const emessage = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(emessage);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n const dialogRef = this.dialog.open(CmsSiteCreditViewComponent, {\r\n // height: '90%',\r\n data: {\r\n LinkModuleId: model.linkModuleId,\r\n }\r\n });\r\n }\r\n onActionbuttonSiteUserCreditAccountRow(model: CoreModuleSiteModel = this.tableRowSelected): void {\r\n if (!model || !model.linkModuleId || model.linkModuleId === 0 || !model.linkSiteId || model.linkSiteId === 0) {\r\n const emessage = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(emessage);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n const dialogRef = this.dialog.open(CmsSiteUserCreditViewComponent, {\r\n // height: '90%',\r\n data: {\r\n LinkModuleId: model.linkModuleId,\r\n }\r\n });\r\n }\r\n onActionbuttonExport(): void {\r\n this.optionsExport.data.show = !this.optionsExport.data.show;\r\n this.optionsExport.childMethods.setExportFilterModel(this.filteModelContent);\r\n }\r\n onSubmitOptionExport(model: FilterModel): void {\r\n const exportlist = new Map<string, string>();\r\n exportlist.set('Download', 'loading ... ');\r\n this.contentService.ServiceExportFile(model).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n exportlist.set('Download', ret.linkFile);\r\n this.optionsExport.childMethods.setExportLinkFile(exportlist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error:(er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n }\r\n\r\n onActionbuttonReload(): void {\r\n this.DataGetAll();\r\n }\r\n onSubmitOptionsSearch(model: any): void {\r\n this.filteModelContent.filters = model;\r\n this.DataGetAll();\r\n }\r\n onActionTableRowSelect(row: CoreModuleSiteModel): void {\r\n this.tableRowSelected = row;\r\n }\r\n onActionBackToParent(): void {\r\n this.router.navigate(['/core/site/']);\r\n }\r\n onActionBackToParentModuleList(): void {\r\n this.router.navigate(['/core/module/']);\r\n }\r\n\r\n}\r\n\r\n\r\n","<app-cms-html-notice [svg]=\"'assets/media/svg/icons/General/Notifications1.svg'\">\r\n <h4> ایجاد سایت</h4>\r\n در این بخش شما میتوانید سایتی جدید ایجاد نمایید.\r\n</app-cms-html-notice>\r\n<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-horizontal-stepper (selectionChange)=\"onStepClick($event,stepper)\" #stepper>\r\n <mat-step label=\"{{'TITLE.REQUIRED_INFORMATION' | translate}}\" state=\"main\">\r\n <!-- RecordStatus Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['RecordStatus']?.accessWatchField\">\r\n <mat-label>{{fieldsInfo['RecordStatus']?.fieldTitle}}</mat-label>\r\n <mat-select placeholder=\"{{fieldsInfo['RecordStatus']?.fieldTitle}}\" [(ngModel)]=\"dataModel.recordStatus\"\r\n [disabled]=\"!fieldsInfo['RecordStatus']?.accessAddField\" name=\"dataModel.recordStatus\"\r\n #RecordStatus=\"ngModel\" panelClass=\"recordStatus-{{ dataModel.recordStatus }}\" required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumRecordStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n {{ fieldsInfo['RecordStatus']?.fieldTitle }} is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['RecordStatus']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- OwnerSiteSetStatus Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"وضعیت سایت\" [(ngModel)]=\"dataModel.ownerSiteSetStatus\"\r\n name=\"dataModel.ownerSiteSetStatus\" #OwnerSiteSetStatus=\"ngModel\"\r\n panelClass=\"OwnerSiteSetStatus-{{ dataModel.ownerSiteSetStatus }}\">\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumSiteStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- UserLanguage Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"زبان سایت\" [(ngModel)]=\"dataModel.userLanguage\" name=\"dataModel.userLanguage\"\r\n #UserLanguage=\"ngModel\" panelClass=\"UserLanguage-{{ dataModel.userLanguage }}\">\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumLanguageResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- LinkSiteCategoryId Field -->\r\n <app-core-sitecategory-selector (optionChange)=\"onActionSelectCategory($event)\" [optionSelectFirstItem]=\"true\"\r\n [(loading)]=\"loading\" [optionSelectForce]=\"this.dataModel.linkSiteCategoryId\"\r\n [optionPlaceholder]=\"'نوع وب سایت'\"\r\n [optionDisabled]=\"!fieldsInfo['LinkSiteCategoryId']?.accessAddField\"></app-core-sitecategory-selector>\r\n \r\n <!-- linkCreatedBySiteId Field -->\r\n <app-core-site-selector (optionChange)=\"onActionSelectCategory($event)\" [(loading)]=\"loading\"\r\n [optionSelectForce]=\"this.dataModel.linkCreatedBySiteId\" [optionPlaceholder]=\"'سایت والد'\"\r\n [optionDisabled]=\"!fieldsInfo['LinkCreatedBySiteId']?.accessAddField\"></app-core-site-selector>\r\n <!-- Title Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Title']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['Title']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.title\" [disabled]=\"!fieldsInfo['Title']?.accessAddField\"\r\n name=\"dataModel.title\" #Title type=\"text\" placeholder=\"{{fieldsInfo['Title']?.fieldTitle}}\" minlength=\"3\"\r\n maxlength=\"100\" required />\r\n <mat-icon matSuffix *ngIf=\"dataModel.title && fieldsInfo['Title']?.accessAddField\" matSuffix mat-icon-button\r\n aria-label=\"Clear\" (click)=\"dataModel.title = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['Title']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['Title']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ Title.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"Title.errors?.required\">\r\n {{ fieldsInfo['Title']?.fieldTitle }} is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- SubDomain Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['SubDomain']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['SubDomain']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.subDomain\" [disabled]=\"!fieldsInfo['SubDomain']?.accessAddField\"\r\n name=\"dataModel.subDomain\" #SubDomain type=\"text\" placeholder=\"test\" minlength=\"0\" maxlength=\"20\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.subDomain && fieldsInfo['SubDomain']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.subDomain = ''\">close</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['SubDomain']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-icon *ngIf=\"fieldsInfo['SubDomain']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"end\">{{ SubDomain.value.length }} / 20</mat-hint>\r\n </mat-form-field>\r\n <!-- Domain Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Domain']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['Domain']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.domain\" [disabled]=\"!fieldsInfo['Domain']?.accessAddField\"\r\n name=\"dataModel.domain\" #Domain type=\"text\" placeholder=\"domain.com\" minlength=\"3\" maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.domain && fieldsInfo['Domain']?.accessAddField\" matSuffix mat-icon-button\r\n aria-label=\"Clear\" (click)=\"dataModel.domain = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['Domain']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['Domain']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ Domain.value.length }} / 20</mat-hint>\r\n </mat-form-field>\r\n <!-- ViewInCmsSiteList Field -->\r\n <div class=\"ntk-full-width\">\r\n <mat-slide-toggle [(ngModel)]=\"dataModel.viewInCmsSiteList\"\r\n *ngIf=\"fieldsInfo['ViewInCmsSiteList']?.accessWatchField\"\r\n [disabled]=\"!fieldsInfo['ViewInCmsSiteList']?.accessAddField\" name=\"dataModel.viewInCmsSiteList\">\r\n {{fieldsInfo['ViewInCmsSiteList']?.fieldTitle}}\r\n </mat-slide-toggle>\r\n </div>\r\n <!-- ExpireDate Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['ExpireDate']?.accessWatchField\">\r\n <mat-label>{{fieldsInfo['ExpireDate']?.fieldTitle}}</mat-label>\r\n <input matInput [matDatepicker]=\"ExpireDate\" [(ngModel)]=\"dataModel.expireDate\" name=\"dataModel.expireDate\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.expireDate && fieldsInfo['ExpireDate']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.expireDate = null\">close</mat-icon>\r\n <mat-datepicker-toggle matSuffix [for]=\"ExpireDate\"></mat-datepicker-toggle>\r\n <mat-datepicker touchUi #ExpireDate></mat-datepicker>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['ExpireDate']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button (click)=\"onActionBackToParent()\">\r\n {{'ACTION.BACK' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n\r\n <mat-step label=\"{{'TITLE.Web_Application' | translate}}\" state=\"seo\">\r\n <!-- PwaName Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaName']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['PwaName']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaName\" [disabled]=\"!fieldsInfo['PwaName']?.accessAddField\"\r\n name=\"dataModel.pwaName\" #PwaName type=\"text\" placeholder=\"Site Application\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.pwaName && fieldsInfo['PwaName']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaName = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaName']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaName']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">{{ PwaName.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n\r\n <!-- PwaShortName Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaShortName']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['PwaShortName']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaShortName\" [disabled]=\"!fieldsInfo['PwaShortName']?.accessAddField\"\r\n name=\"dataModel.pwaShortName\" #PwaShortName type=\"text\" placeholder=\"SiteApp\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.pwaShortName && fieldsInfo['PwaShortName']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaShortName = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaShortName']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaShortName']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">{{ PwaShortName.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n\r\n <!-- PwaDescription Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaDescription']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['PwaDescription']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaDescription\"\r\n [disabled]=\"!fieldsInfo['PwaDescription']?.accessAddField\" name=\"dataModel.pwaDescription\" #PwaDescription\r\n type=\"text\" placeholder=\"...\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.pwaDescription && fieldsInfo['PwaDescription']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaDescription = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaDescription']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaDescription']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">{{ PwaDescription.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n\r\n <!-- PwaDisplay Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaDisplay']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['PwaDisplay']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaDisplay\" [disabled]=\"!fieldsInfo['PwaDisplay']?.accessAddField\"\r\n name=\"dataModel.pwaDisplay\" #PwaDisplay type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.pwaDisplay && fieldsInfo['PwaDisplay']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaDisplay = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaDisplay']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaDisplay']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">{{ PwaDisplay.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- PwaIconSize190x192Id Field -->\r\n <div class=\"mb-3\">\r\n <img *ngIf=\"dataModel?.pwaIconSize190x192IdSrc?.length>0\" style=\"vertical-align:middle;\"\r\n class=\"ntk-hover-zoom\" aria-hidden src=\"{{dataModel.pwaIconSize190x192IdSrc | cmsthumbnail}}\" height=\"50\"\r\n width=\"50\" />\r\n </div>\r\n <div class=\"mb-9\">\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaIconSize190x192Id']?.accessWatchField\">\r\n <mat-label (click)=\"fileManagerOpenFormPwaIconSize190x192Id = true\">\r\n {{fieldsInfo['PwaIconSize190x192Id']?.fieldTitle}}\r\n </mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaIconSize190x192Id\"\r\n [disabled]=\"!fieldsInfo['PwaIconSize190x192Id']?.accessAddField\" name=\"dataModel.pwaIconSize190x192Id\"\r\n #PwaIconSize190x192Id type=\"text\" placeholder=\"شناسه Ùایل اصلی\" autocomplete=\"off\"\r\n (click)=\"fileManagerOpenFormPwaIconSize190x192Id = true\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.pwaIconSize190x192Id && fieldsInfo['PwaIconSize190x192Id']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaIconSize190x192Id = null\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaIconSize190x192Id']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaIconSize190x192Id']?.accessAddField\" matSuffix\r\n (click)=\"fileManagerOpenFormPwaIconSize190x192Id = true\">mode_edit</mat-icon>\r\n </mat-form-field>\r\n <cms-file-manager (itemSelected)=\"onActionFileSelectedPwaIconSize190x192Id($event)\" [language]=\"appLanguage\"\r\n [isPopup]=\"true\" [(openForm)]=\"fileManagerOpenFormPwaIconSize190x192Id\" [tree]=\"fileManagerTree\"\r\n [openDirectUploadView]=\"true\" [openFilemanagerButtonLabelKey]=\"'select'\"\r\n [selectFileType]=\"selectFileTypeMainImage\" [openFilemanagerButtonView]=\"false\"></cms-file-manager>\r\n </div>\r\n\r\n <!-- PwaIconSize512x512Id Field -->\r\n <div class=\"mb-3\">\r\n <img *ngIf=\"dataModel?.pwaIconSize512x512IdSrc?.length>0\" style=\"vertical-align:middle;\"\r\n class=\"ntk-hover-zoom\" aria-hidden src=\"{{dataModel.pwaIconSize512x512IdSrc | cmsthumbnail}}\" height=\"50\"\r\n width=\"50\" />\r\n </div>\r\n <div class=\"mb-9\">\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaIconSize512x512Id']?.accessWatchField\">\r\n <mat-label (click)=\"fileManagerOpenFormPwaIconSize512x512Id = true\">\r\n {{fieldsInfo['PwaIconSize512x512Id']?.fieldTitle}}\r\n </mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaIconSize512x512Id\"\r\n [disabled]=\"!fieldsInfo['PwaIconSize512x512Id']?.accessAddField\" name=\"dataModel.pwaIconSize512x512Id\"\r\n #PwaIconSize512x512Id type=\"text\" placeholder=\"شناسه Ùایل اصلی\" autocomplete=\"off\"\r\n (click)=\"fileManagerOpenFormPwaIconSize512x512Id = true\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.pwaIconSize512x512Id && fieldsInfo['PwaIconSize512x512Id']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaIconSize512x512Id = null\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaIconSize512x512Id']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaIconSize512x512Id']?.accessAddField\" matSuffix\r\n (click)=\"fileManagerOpenFormPwaIconSize512x512Id = true\">mode_edit</mat-icon>\r\n </mat-form-field>\r\n <cms-file-manager (itemSelected)=\"onActionFileSelectedPwaIconSize512x512Id($event)\" [language]=\"appLanguage\"\r\n [isPopup]=\"true\" [(openForm)]=\"fileManagerOpenFormPwaIconSize512x512Id\" [tree]=\"fileManagerTree\"\r\n [openDirectUploadView]=\"true\" [openFilemanagerButtonLabelKey]=\"'select'\"\r\n [selectFileType]=\"selectFileTypeMainImage\" [openFilemanagerButtonView]=\"false\"></cms-file-manager>\r\n </div>\r\n <!-- PwaThemeColor Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaThemeColor']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['PwaThemeColor']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaThemeColor\" name=\"dataModel.pwaThemeColor\" #PwaThemeColor\r\n [value]=\"dataModel.pwaThemeColor\" [style.background]=\"dataModel.pwaThemeColor\"\r\n [(colorPicker)]=\"dataModel.pwaThemeColor\" type=\"text\"\r\n [disabled]=\"!fieldsInfo['PwaThemeColor']?.accessAddField\"\r\n placeholder=\"{{fieldsInfo['PwaThemeColor']?.fieldTitle}}\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.pwaThemeColor\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.pwaThemeColor = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n </mat-form-field>\r\n <!-- PwaThemeBackgroundColor Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaThemeBackgroundColor']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['PwaThemeBackgroundColor']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaThemeBackgroundColor\" name=\"dataModel.pwaThemeBackgroundColor\"\r\n #PwaThemeBackgroundColor [value]=\"dataModel.pwaThemeBackgroundColor\"\r\n [style.background]=\"dataModel.pwaThemeBackgroundColor\" [(colorPicker)]=\"dataModel.pwaThemeBackgroundColor\"\r\n type=\"text\" [disabled]=\"!fieldsInfo['PwaThemeBackgroundColor']?.accessAddField\"\r\n placeholder=\"{{fieldsInfo['PwaThemeBackgroundColor']?.fieldTitle}}\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.pwaThemeBackgroundColor\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.pwaThemeBackgroundColor = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n </mat-form-field>\r\n <fieldset>\r\n <legend>Notification</legend>\r\n <!-- PwaNotifySubject Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaNotifySubject']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['PwaNotifySubject']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaNotifySubject\"\r\n [disabled]=\"!fieldsInfo['PwaNotifySubject']?.accessAddField\" name=\"dataModel.pwaNotifySubject\"\r\n #PwaNotifySubject type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.pwaNotifySubject && fieldsInfo['PwaNotifySubject']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaNotifySubject = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaNotifySubject']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaNotifySubject']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ PwaNotifySubject.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <!-- PwaNotifyPublicKey Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaNotifyPublicKey']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['PwaNotifyPublicKey']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaNotifyPublicKey\"\r\n [disabled]=\"!fieldsInfo['PwaNotifyPublicKey']?.accessAddField\" name=\"dataModel.pwaNotifyPublicKey\"\r\n #PwaNotifyPublicKey type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.pwaNotifyPublicKey && fieldsInfo['PwaNotifyPublicKey']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaNotifyPublicKey = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaNotifyPublicKey']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaNotifyPublicKey']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ PwaNotifyPublicKey.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <!-- PwaNotifyPrivateKey Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaNotifyPrivateKey']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['PwaNotifyPrivateKey']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaNotifyPrivateKey\"\r\n [disabled]=\"!fieldsInfo['PwaNotifyPrivateKey']?.accessAddField\" name=\"dataModel.pwaNotifyPrivateKey\"\r\n #PwaNotifyPrivateKey type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.pwaNotifyPrivateKey && fieldsInfo['PwaNotifyPrivateKey']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaNotifyPrivateKey = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaNotifyPrivateKey']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaNotifyPrivateKey']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ PwaNotifyPrivateKey.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n </fieldset>\r\n\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"accent\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n\r\n\r\n <mat-step label=\"{{'TITLE.FireBase' | translate}}\" state=\"seo\">\r\n\r\n <!-- FirebaseApiKey Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['FirebaseApiKey']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['FirebaseApiKey']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.firebaseApiKey\"\r\n [disabled]=\"!fieldsInfo['FirebaseApiKey']?.accessAddField\" name=\"dataModel.firebaseApiKey\" #FirebaseApiKey\r\n type=\"text\" placeholder=\"SiteApp\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.firebaseApiKey && fieldsInfo['FirebaseApiKey']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.firebaseApiKey = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['FirebaseApiKey']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['FirebaseApiKey']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ FirebaseApiKey.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <!-- FirebaseAuthDomain Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['FirebaseAuthDomain']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['FirebaseAuthDomain']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.firebaseAuthDomain\"\r\n [disabled]=\"!fieldsInfo['FirebaseAuthDomain']?.accessAddField\" name=\"dataModel.firebaseAuthDomain\"\r\n #FirebaseAuthDomain type=\"text\" placeholder=\"...\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.firebaseAuthDomain && fieldsInfo['FirebaseAuthDomain']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.firebaseAuthDomain = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['FirebaseAuthDomain']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['FirebaseAuthDomain']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ FirebaseAuthDomain.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <!-- FirebaseDatabaseURL Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['FirebaseDatabaseURL']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['FirebaseDatabaseURL']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.firebaseDatabaseURL\"\r\n [disabled]=\"!fieldsInfo['FirebaseDatabaseURL']?.accessAddField\" name=\"dataModel.firebaseDatabaseURL\"\r\n #FirebaseDatabaseURL type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.firebaseDatabaseURL && fieldsInfo['FirebaseDatabaseURL']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.firebaseDatabaseURL = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['FirebaseDatabaseURL']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['FirebaseDatabaseURL']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ FirebaseDatabaseURL.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <!-- FirebaseProjectId Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['FirebaseProjectId']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['FirebaseProjectId']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.firebaseProjectId\"\r\n [disabled]=\"!fieldsInfo['FirebaseProjectId']?.accessAddField\" name=\"dataModel.firebaseProjectId\"\r\n #FirebaseProjectId type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.firebaseProjectId && fieldsInfo['FirebaseProjectId']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.firebaseProjectId = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['FirebaseProjectId']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['FirebaseProjectId']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ FirebaseProjectId.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <!-- FirebaseStorageBucket Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['FirebaseStorageBucket']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['FirebaseStorageBucket']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.firebaseStorageBucket\"\r\n [disabled]=\"!fieldsInfo['FirebaseStorageBucket']?.accessAddField\" name=\"dataModel.firebaseStorageBucket\"\r\n #FirebaseStorageBucket type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.firebaseStorageBucket && fieldsInfo['FirebaseStorageBucket']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.firebaseStorageBucket = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['FirebaseStorageBucket']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['FirebaseStorageBucket']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ FirebaseStorageBucket.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <!-- FirebaseMessagingSenderId Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['FirebaseMessagingSenderId']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['FirebaseMessagingSenderId']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.firebaseMessagingSenderId\"\r\n [disabled]=\"!fieldsInfo['FirebaseMessagingSenderId']?.accessAddField\"\r\n name=\"dataModel.firebaseMessagingSenderId\" #FirebaseMessagingSenderId type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.firebaseMessagingSenderId && fieldsInfo['FirebaseMessagingSenderId']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.firebaseMessagingSenderId = ''\">close\r\n </mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['FirebaseMessagingSenderId']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['FirebaseMessagingSenderId']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ FirebaseMessagingSenderId.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <!-- FirebaseAppId Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['FirebaseAppId']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['FirebaseAppId']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.firebaseAppId\"\r\n [disabled]=\"!fieldsInfo['FirebaseAppId']?.accessAddField\" name=\"dataModel.firebaseAppId\" #FirebaseAppId\r\n type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.firebaseAppId && fieldsInfo['FirebaseAppId']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.firebaseAppId = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['FirebaseAppId']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['FirebaseAppId']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ FirebaseAppId.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"accent\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n\r\n\r\n <mat-step label=\"{{'TITLE.SEO' | translate}}\" state=\"seo\">\r\n <p>تنطیمات بهینه سازی سئو</p>\r\n <div class=\"mb-3\">\r\n <img *ngIf=\"dataModel?.linkFavIconIdSrc?.length>0\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\"\r\n aria-hidden src=\"{{dataModel.linkFavIconIdSrc | cmsthumbnail}}\" height=\"50\" width=\"50\" />\r\n </div>\r\n <div class=\"mb-9\">\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['LinkFavIconId']?.accessWatchField\">\r\n <mat-label (click)=\"fileManagerOpenFormLinkFavIconId = true\">\r\n {{fieldsInfo['LinkFavIconId']?.fieldTitle}}\r\n </mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.linkFavIconId\"\r\n [disabled]=\"!fieldsInfo['LinkFavIconId']?.accessAddField\" name=\"dataModel.linkFavIconId\" #LinkFavIconId\r\n type=\"text\" placeholder=\"شناسه Ùایل اصلی\" autocomplete=\"off\"\r\n (click)=\"fileManagerOpenFormLinkFavIconId = true\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.linkFavIconId && fieldsInfo['LinkFavIconId']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.linkFavIconId = null\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['LinkFavIconId']?.accessAddField\" matSuffix\r\n (click)=\"fileManagerOpenFormLinkFavIconId = true\">mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['LinkFavIconId']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <cms-file-manager (itemSelected)=\"onActionFileSelectedLinkFavIconId($event)\" [language]=\"appLanguage\"\r\n [isPopup]=\"true\" [(openForm)]=\"fileManagerOpenFormLinkFavIconId\" [tree]=\"fileManagerTree\"\r\n [openDirectUploadView]=\"true\" [openFilemanagerButtonLabelKey]=\"'select'\"\r\n [selectFileType]=\"selectFileTypeMainImage\" [openFilemanagerButtonView]=\"false\"></cms-file-manager>\r\n </div>\r\n <!-- KeywordModel Field -->\r\n <mat-form-field style=\"width: 100%;\" appearance=\"fill\">\r\n <mat-label>انتخاب کلمات کلیدی نسبت به مطلب</mat-label>\r\n <mat-chip-list #chipList aria-label=\"کلمه کلیدی\">\r\n <mat-chip *ngFor=\"let item of keywordDataModel\" (removed)=\"removeTag(item)\">\r\n {{item}}\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n <input placeholder=\"کلمه کلیدی +\" [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" [matChipInputAddOnBlur]=\"addOnBlurTag\"\r\n (matChipInputTokenEnd)=\"addTag($event)\">\r\n </mat-chip-list>\r\n </mat-form-field>\r\n\r\n\r\n <!-- CurrentSiteDomainUrl Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['CurrentSiteDomainUrl']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['CurrentSiteDomainUrl']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.currentSiteDomainUrl\"\r\n [disabled]=\"!fieldsInfo['CurrentSiteDomainUrl']?.accessAddField\" name=\"dataModel.currentSiteDomainUrl\"\r\n #CurrentSiteDomainUrl type=\"text\" placeholder=\"https://....\" minlength=\"3\" maxlength=\"100\"\r\n style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.currentSiteDomainUrl && fieldsInfo['CurrentSiteDomainUrl']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.currentSiteDomainUrl = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['CurrentSiteDomainUrl']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['CurrentSiteDomainUrl']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ CurrentSiteDomainUrl.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- Redirect Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Redirect']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['Redirect']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.redirect\" [disabled]=\"!fieldsInfo['Redirect']?.accessAddField\"\r\n name=\"dataModel.redirect\" #Redirect type=\"text\" placeholder=\"https://....\" minlength=\"3\" maxlength=\"100\"\r\n style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.redirect && fieldsInfo['Redirect']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.redirect = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['Redirect']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['Redirect']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ Redirect.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- Copyright Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Copyright']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['Copyright']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.copyright\" [disabled]=\"!fieldsInfo['Copyright']?.accessAddField\"\r\n name=\"dataModel.copyright\" #Copyright type=\"text\" placeholder=\"this site ...\" minlength=\"3\"\r\n maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.copyright && fieldsInfo['Copyright']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.copyright = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['Copyright']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['Copyright']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ Copyright.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- SeoDescription Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['SeoDescription']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['SeoDescription']?.fieldTitle }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.seoDescription\"\r\n [disabled]=\"!fieldsInfo['SeoDescription']?.accessAddField\" name=\"dataModel.seoDescription\" #SeoDescription\r\n type=\"text\" placeholder=\"{{fieldsInfo['SeoDescription']?.fieldTitle}}\" row=\"6\" minlength=\"0\"\r\n maxlength=\"1000\"></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.seoDescription && fieldsInfo['SeoDescription']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.seoDescription = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['SeoDescription']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['SeoDescription']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ SeoDescription.value.length }} / 1000</mat-hint>\r\n </mat-form-field>\r\n <!-- SeoGoogleHTMLtag Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['SeoGoogleHTMLtag']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['SeoGoogleHTMLtag']?.fieldTitle }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.seoGoogleHTMLtag\"\r\n [disabled]=\"!fieldsInfo['SeoGoogleHTMLtag']?.accessAddField\" name=\"dataModel.seoGoogleHTMLtag\"\r\n #SeoGoogleHTMLtag type=\"text\" placeholder=\"<meta ....\" minlength=\"0\" maxlength=\"1000\"></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.seoGoogleHTMLtag && fieldsInfo['SeoGoogleHTMLtag']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.seoGoogleHTMLtag = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['SeoGoogleHTMLtag']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['SeoGoogleHTMLtag']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ SeoGoogleHTMLtag.value.length }} / 1000</mat-hint>\r\n </mat-form-field>\r\n <!-- SeoGoogleAnalytics Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['SeoGoogleAnalytics']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['SeoGoogleAnalytics']?.fieldTitle }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.seoGoogleAnalytics\"\r\n [disabled]=\"!fieldsInfo['SeoGoogleAnalytics']?.accessAddField\" name=\"dataModel.seoGoogleAnalytics\"\r\n #SeoGoogleAnalytics type=\"text\" placeholder=\"\" minlength=\"\" maxlength=\"1000\"></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.seoGoogleAnalytics && fieldsInfo['SeoGoogleAnalytics']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.seoGoogleAnalytics = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['SeoGoogleAnalytics']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['SeoGoogleAnalytics']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ SeoGoogleAnalytics.value.length }} / 1000</mat-hint>\r\n </mat-form-field>\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"accent\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n <mat-step label=\"{{'ACTION.ABOUT' | translate}}\" state=\"seo\">\r\n <p>{{'TITLE.Content_Of_The_About_Us_App' | translate}}</p>\r\n <div class=\"mb-3\">\r\n <img *ngIf=\"dataModel?.linkImageLogoIdSrc?.length>0\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\"\r\n aria-hidden src=\"{{dataModel.linkImageLogoIdSrc | cmsthumbnail}}\" height=\"50\" width=\"50\" />\r\n </div>\r\n <div class=\"mb-9\">\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['LinkImageLogoId']?.accessWatchField\">\r\n <mat-label (click)=\"fileManagerOpenFormLinkImageLogoId = true\">\r\n {{fieldsInfo['LinkImageLogoId']?.fieldTitle}}\r\n </mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.linkImageLogoId\"\r\n [disabled]=\"!fieldsInfo['LinkImageLogoId']?.accessAddField\" name=\"dataModel.linkImageLogoId\"\r\n #LinkImageLogoId type=\"text\" placeholder=\"شناسه Ùایل اصلی\"\r\n (click)=\"fileManagerOpenFormLinkImageLogoId = true\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.linkImageLogoId && fieldsInfo['LinkImageLogoId']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.linkImageLogoId = null\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['LinkImageLogoId']?.accessAddField\" matSuffix\r\n (click)=\"fileManagerOpenFormLinkImageLogoId = true\">mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['LinkImageLogoId']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <cms-file-manager (itemSelected)=\"onActionFileSelectedLinkImageLogoId($event)\" [language]=\"appLanguage\"\r\n [isPopup]=\"true\" [(openForm)]=\"fileManagerOpenFormLinkImageLogoId\" [tree]=\"fileManagerTree\"\r\n [openDirectUploadView]=\"true\" [openFilemanagerButtonLabelKey]=\"'select'\"\r\n [selectFileType]=\"selectFileTypeMainImage\" [openFilemanagerButtonView]=\"false\"></cms-file-manager>\r\n </div>\r\n <!-- AboutUsTitle Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsTitle']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsTitle']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsTitle\" [disabled]=\"!fieldsInfo['AboutUsTitle']?.accessAddField\"\r\n name=\"dataModel.aboutUsTitle\" #AboutUsTitle type=\"text\"\r\n placeholder=\"{{fieldsInfo['AboutUsTitle']?.fieldTitle}}\" minlength=\"0\" maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsTitle && fieldsInfo['AboutUsTitle']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsTitle = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsTitle']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsTitle']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ AboutUsTitle.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsDescription Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsDescription']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsDescription']?.fieldTitle }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.aboutUsDescription\"\r\n [disabled]=\"!fieldsInfo['AboutUsDescription']?.accessAddField\" name=\"dataModel.aboutUsDescription\"\r\n #AboutUsDescription type=\"text\" placeholder=\"{{fieldsInfo['Description']?.fieldTitle}}\" row=\"5\"\r\n minlength=\"0\" maxlength=\"1000\"></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsDescription && fieldsInfo['AboutUsDescription']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsDescription = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsDescription']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsDescription']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ AboutUsDescription.value.length }} / 1000</mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsTel Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsTel']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsTel']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsTel\" [disabled]=\"!fieldsInfo['AboutUsTel']?.accessAddField\"\r\n class=\"input-Mobile\" name=\"dataModel.aboutUsTel\" #AboutUsTel type=\"text\" placeholder=\"021444444444\"\r\n minlength=\"0\" maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsTel && fieldsInfo['AboutUsTel']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsTel = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsTel']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsTel']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ AboutUsTel.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsFax Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsFax']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsFax']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsFax\" [disabled]=\"!fieldsInfo['AboutUsFax']?.accessAddField\"\r\n name=\"dataModel.aboutUsFax\" #AboutUsFax type=\"text\" placeholder=\"02133333333\" minlength=\"0\"\r\n maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsFax && fieldsInfo['AboutUsFax']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsFax = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsFax']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsFax']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ AboutUsFax.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsEmail Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsEmail']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsEmail']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsEmail\" [disabled]=\"!fieldsInfo['AboutUsEmail']?.accessAddField\"\r\n name=\"dataModel.aboutUsEmail\" #AboutUsEmail type=\"text\" placeholder=\"info@yourdomain.com\" minlength=\"0\"\r\n maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsEmail && fieldsInfo['AboutUsEmail']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsEmail = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsEmail']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsEmail']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ AboutUsEmail.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsAddress Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsAddress']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsAddress']?.fieldTitle }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.aboutUsAddress\"\r\n [disabled]=\"!fieldsInfo['AboutUsAddress']?.accessAddField\" name=\"dataModel.aboutUsAddress\" #AboutUsAddress\r\n type=\"text\" placeholder=\"ایران - تهران - ...\" row=\"5\" minlength=\"0\" maxlength=\"100\"></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsAddress && fieldsInfo['AboutUsAddress']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsAddress = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsAddress']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsAddress']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ AboutUsAddress.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsMoreInfoUrl Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsMoreInfoUrl']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsMoreInfoUrl']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsMoreInfoUrl\"\r\n [disabled]=\"!fieldsInfo['AboutUsMoreInfoUrl']?.accessAddField\" name=\"dataModel.aboutUsMoreInfoUrl\"\r\n #AboutUsMoreInfoUrl type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsMoreInfoUrl && fieldsInfo['AboutUsMoreInfoUrl']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsMoreInfoUrl = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsMoreInfoUrl']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsMoreInfoUrl']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkFacebook Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkFacebook']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkFacebook']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkFacebook\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkFacebook']?.accessAddField\" name=\"dataModel.aboutUsLinkFacebook\"\r\n #AboutUsLinkFacebook type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsLinkFacebook && fieldsInfo['AboutUsLinkFacebook']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkFacebook = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkFacebook']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkFacebook']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkTwitter Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkTwitter']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkTwitter']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkTwitter\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkTwitter']?.accessAddField\" name=\"dataModel.aboutUsLinkTwitter\"\r\n #AboutUsLinkTwitter type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsLinkTwitter && fieldsInfo['AboutUsLinkTwitter']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkTwitter = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkTwitter']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkTwitter']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkGooglePlus Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkGooglePlus']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkGooglePlus']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkGooglePlus\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkGooglePlus']?.accessAddField\" name=\"dataModel.aboutUsLinkGooglePlus\"\r\n #AboutUsLinkGooglePlus type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.aboutUsLinkGooglePlus && fieldsInfo['AboutUsLinkGooglePlus']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkGooglePlus = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkGooglePlus']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkGooglePlus']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkInstagram Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkInstagram']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkInstagram']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkInstagram\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkInstagram']?.accessAddField\" name=\"dataModel.aboutUsLinkInstagram\"\r\n #AboutUsLinkInstagram type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.aboutUsLinkInstagram && fieldsInfo['AboutUsLinkInstagram']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkInstagram = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkInstagram']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkInstagram']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkWhatsapp Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkWhatsapp']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkWhatsapp']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkWhatsapp\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkWhatsapp']?.accessAddField\" name=\"dataModel.aboutUsLinkWhatsapp\"\r\n #AboutUsLinkWhatsapp type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsLinkWhatsapp && fieldsInfo['AboutUsLinkWhatsapp']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkWhatsapp = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkWhatsapp']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkWhatsapp']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinklinkedin Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinklinkedin']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinklinkedin']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinklinkedin\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinklinkedin']?.accessAddField\" name=\"dataModel.aboutUsLinklinkedin\"\r\n #AboutUsLinklinkedin type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsLinklinkedin && fieldsInfo['AboutUsLinklinkedin']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinklinkedin = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinklinkedin']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinklinkedin']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkYahoo Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkYahoo']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkYahoo']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkYahoo\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkYahoo']?.accessAddField\" name=\"dataModel.aboutUsLinkYahoo\"\r\n #AboutUsLinkYahoo type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsLinkYahoo && fieldsInfo['AboutUsLinkYahoo']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkYahoo = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkYahoo']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkYahoo']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkYoutube Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkYoutube']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkYoutube']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkYoutube\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkYoutube']?.accessAddField\" name=\"dataModel.aboutUsLinkYoutube\"\r\n #AboutUsLinkYoutube type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsLinkYoutube && fieldsInfo['AboutUsLinkYoutube']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkYoutube = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkYoutube']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkYoutube']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkTelegram Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkTelegram']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkTelegram']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkTelegram\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkTelegram']?.accessAddField\" name=\"dataModel.aboutUsLinkTelegram\"\r\n #AboutUsLinkTelegram type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsLinkTelegram && fieldsInfo['AboutUsLinkTelegram']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkTelegram = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkTelegram']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkTelegram']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkPinterest Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkPinterest']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkPinterest']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkPinterest\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkPinterest']?.accessAddField\" name=\"dataModel.aboutUsLinkPinterest\"\r\n #AboutUsLinkPinterest type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.aboutUsLinkPinterest && fieldsInfo['AboutUsLinkPinterest']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkPinterest = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkPinterest']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkPinterest']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkRss Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkRss']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkRss']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkRss\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkRss']?.accessAddField\" name=\"dataModel.aboutUsLinkRss\" #AboutUsLinkRss\r\n type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsLinkRss && fieldsInfo['AboutUsLinkRss']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkRss = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkRss']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkRss']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <div class=\"mb-3\">\r\n <img *ngIf=\"dataModel?.aboutUsLinkImageIdSrc?.length>0\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\"\r\n aria-hidden src=\"{{dataModel.aboutUsLinkImageIdSrc | cmsthumbnail}}\" height=\"50\" width=\"50\" />\r\n </div>\r\n <div class=\"mb-9\">\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkImageId']?.accessWatchField\">\r\n <mat-label (click)=\"fileManagerOpenFormAboutUsLinkImageId = true\">\r\n {{fieldsInfo['AboutUsLinkImageId']?.fieldTitle}}\r\n </mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkImageId\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkImageId']?.accessAddField\" name=\"dataModel.aboutUsLinkImageId\"\r\n #AboutUsLinkImageId type=\"text\" placeholder=\"شناسه Ùایل اصلی\"\r\n (click)=\"fileManagerOpenFormAboutUsLinkImageId = true\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsLinkImageId && fieldsInfo['AboutUsLinkImageId']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkImageId = null\">close\r\n </mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkImageId']?.accessAddField\" matSuffix\r\n (click)=\"fileManagerOpenFormAboutUsLinkImageId = true\">mode_edit</mat-icon>\r\n </mat-form-field>\r\n <cms-file-manager (itemSelected)=\"onActionFileSelectedAboutUsLinkImageId($event)\" [language]=\"appLanguage\"\r\n [isPopup]=\"true\" [(openForm)]=\"fileManagerOpenFormAboutUsLinkImageId\" [tree]=\"fileManagerTree\"\r\n [openDirectUploadView]=\"true\" [openFilemanagerButtonLabelKey]=\"'select'\"\r\n [selectFileType]=\"selectFileTypeMainImage\" [openFilemanagerButtonView]=\"false\"></cms-file-manager>\r\n </div>\r\n <p>روی نقشه کلیک کنید تا موقیت مکانی مشخص گردد</p>\r\n <app-cms-map (map$)=\"receiveMap($event)\" [optonCenter]=\"mapOptonCenter\" [optonCenter]=\"mapOptonCenter\"\r\n id='main-map'></app-cms-map>\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"accent\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n\r\n <mat-step label=\"{{'TITLE.Accounting' | translate}}\" state=\"seo\">\r\n <p>وضعیت مالی Ùˆ تراکنش Øسابداری</p>\r\n <!-- HasAccountingForm Field -->\r\n <div class=\"ntk-full-width\">\r\n <mat-slide-toggle [(ngModel)]=\"dataModel.hasAccountingForm\"\r\n *ngIf=\"fieldsInfo['HasAccountingForm']?.accessWatchField\"\r\n [disabled]=\"!fieldsInfo['HasAccountingForm']?.accessAddField\" name=\"dataModel.hasAccountingForm\">\r\n {{fieldsInfo['HasAccountingForm']?.fieldTitle}}\r\n </mat-slide-toggle>\r\n </div>\r\n <!-- AccountingFormNo Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AccountingFormNo']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AccountingFormNo']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.accountingFormNo\"\r\n [disabled]=\"!fieldsInfo['AccountingFormNo']?.accessAddField\" name=\"dataModel.accountingFormNo\"\r\n #AccountingFormNo type=\"number\" placeholder=\"123\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.accountingFormNo && fieldsInfo['AccountingFormNo']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.accountingFormNo = 0\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AccountingFormNo']?.accessAddField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">{{ AccountingFormNo.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- AccountingFormCreatedDate Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AccountingFormCreatedDate']?.accessWatchField\">\r\n <mat-label>{{fieldsInfo['AccountingFormCreatedDate']?.fieldTitle}}</mat-label>\r\n <input matInput [matDatepicker]=\"AccountingFormCreatedDate\" [(ngModel)]=\"dataModel.accountingFormCreatedDate\"\r\n name=\"dataModel.accountingFormCreatedDate\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.accountingFormCreatedDate && fieldsInfo['AccountingFormCreatedDate']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.accountingFormCreatedDate = null\">close\r\n </mat-icon>\r\n <mat-datepicker-toggle matSuffix [for]=\"AccountingFormCreatedDate\"></mat-datepicker-toggle>\r\n <mat-datepicker touchUi #AccountingFormCreatedDate></mat-datepicker>\r\n </mat-form-field>\r\n <!-- AccountingFormUpdatedDate Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AccountingFormUpdatedDate']?.accessWatchField\">\r\n <mat-label>{{fieldsInfo['AccountingFormUpdatedDate']?.fieldTitle}}</mat-label>\r\n <input matInput [matDatepicker]=\"AccountingFormUpdatedDate\" [(ngModel)]=\"dataModel.accountingFormUpdatedDate\"\r\n name=\"dataModel.accountingFormUpdatedDate\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.accountingFormUpdatedDate && fieldsInfo['AccountingFormUpdatedDate']?.accessAddField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.accountingFormUpdatedDate = null\">close\r\n </mat-icon>\r\n <mat-datepicker-toggle matSuffix [for]=\"AccountingFormUpdatedDate\"></mat-datepicker-toggle>\r\n <mat-datepicker touchUi #AccountingFormUpdatedDate></mat-datepicker>\r\n </mat-form-field>\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"accent\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"submit\" mat-raised-button color=\"success\" [disabled]=\"!vform.form.valid\">\r\n {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n </mat-horizontal-stepper>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>","\r\nimport { StepperSelectionEvent } from '@angular/cdk/stepper';\r\nimport { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport {\r\n AccessModel,\r\n CoreSiteModel,\r\n CoreSiteService,\r\n CoreEnumService,\r\n DataFieldInfoModel,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreSiteCategoryModel,\r\n EnumSiteStatus,\r\n EnumLanguage\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { NodeInterface, TreeModel } from 'src/filemanager-api';\r\nimport { PoinModel } from 'src/app/core/models/pointModel';\r\nimport { Map as leafletMap } from 'leaflet';\r\nimport * as Leaflet from 'leaflet';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\r\nimport { MatChipInputEvent } from '@angular/material/chips';\r\n@Component({\r\n selector: 'app-core-site-add',\r\n templateUrl: './add.component.html',\r\n styleUrls: ['./add.component.scss']\r\n})\r\nexport class CoreSiteAddComponent implements OnInit {\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n public publicHelper: PublicHelper,\r\n public coreEnumService: CoreEnumService,\r\n private coreSiteService: CoreSiteService,\r\n private cmsToastrService: CmsToastrService,\r\n private router: Router,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.fileManagerTree = this.publicHelper.GetfileManagerTreeConfig();\r\n this.dataModel.ownerSiteSetStatus=EnumSiteStatus.Active;\r\n this.dataModel.userLanguage=EnumLanguage.fa;\r\n }\r\n requestId = 0;\r\n\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n loading = new ProgressSpinnerModel();\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataAccessModel: AccessModel;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n dataModel = new CoreSiteModel();\r\n dataModelResult: ErrorExceptionResult<CoreSiteModel> = new ErrorExceptionResult<CoreSiteModel>();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n dataModelEnumSiteStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n dataModelEnumLanguageResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n selectFileTypeMainImage = ['jpg', 'jpeg', 'png'];\r\n fileManagerOpenFormAboutUsLinkImageId = false;\r\n fileManagerOpenFormLinkFavIconId = false;\r\n fileManagerOpenFormPwaIconSize190x192Id = false;\r\n fileManagerOpenFormPwaIconSize512x512Id = false;\r\n fileManagerOpenFormLinkFileIdLogo = false;\r\n fileManagerOpenFormLinkImageLogoId = false;\r\n appLanguage = 'fa';\r\n fileManagerTree: TreeModel;\r\n mapMarker: any;\r\n private mapModel: leafletMap;\r\n private mapMarkerPoints: Array<PoinModel> = [];\r\n mapOptonCenter = new PoinModel();\r\n keywordDataModel = [];\r\n ngOnInit(): void {\r\n this.requestId = + Number(this.activatedRoute.snapshot.paramMap.get('Id'));\r\n if (this.requestId > 0) {\r\n this.dataModel.linkCreatedBySiteId = this.requestId;\r\n }\r\n this.DataGetAccess();\r\n this.getEnumRecordStatus();\r\n this.getEnumSiteStatus();\r\n this.getEnumLanguage();\r\n }\r\n getEnumSiteStatus(): void {\r\n this.coreEnumService.ServiceEnumSiteStatus().subscribe((next) => {\r\n this.dataModelEnumSiteStatusResult = next;\r\n });\r\n }\r\n getEnumLanguage(): void {\r\n this.coreEnumService.ServiceEnumLanguage().subscribe((next) => {\r\n this.dataModelEnumLanguageResult = next;\r\n });\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n this.cmsToastrService.typeErrorFormInvalid();\r\n return;\r\n }\r\n if (this.dataModel.linkSiteCategoryId <= 0) {\r\n this.cmsToastrService.typeErrorAdd('دسته بندی سامانه را مشخص کنید');\r\n return;\r\n }\r\n this.dataModel.seoKeyword = '';\r\n if (this.keywordDataModel && this.keywordDataModel.length > 0) {\r\n const listKeyword = [];\r\n this.keywordDataModel.forEach(element => {\r\n if (element.display) {\r\n listKeyword.push(element.display);\r\n } else {\r\n listKeyword.push(element);\r\n }\r\n });\r\n if (listKeyword && listKeyword.length > 0) {\r\n this.dataModel.seoKeyword = listKeyword.join(',');\r\n }\r\n }\r\n this.DataAddContent();\r\n }\r\n DataGetAccess(): void {\r\n this.coreSiteService\r\n .ServiceViewModel()\r\n .subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.dataAccessModel = ret.access;\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n } else {\r\n this.cmsToastrService.typeErrorGetAccess(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeErrorGetAccess(er);\r\n }\r\n }\r\n );\r\n }\r\n DataAddContent(): void {\r\n this.formInfo.formSubmitAllow = false;\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.sending_information_to_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n this.coreSiteService\r\n .ServiceAdd(this.dataModel)\r\n .subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = !ret.isSuccess;\r\n this.dataModelResult = ret;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_completed_successfully');\r\n this.cmsToastrService.typeSuccessAdd();\r\n setTimeout(() => this.router.navigate(['/core/site/']), 1000);\r\n } else {\r\n this.cmsToastrService.typeErrorAdd(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.loading.Stop(pName);\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeErrorAdd(er);\r\n }\r\n }\r\n );\r\n }\r\n onStepClick(event: StepperSelectionEvent, stepper: MatStepper): void {\r\n if (event.previouslySelectedIndex < event.selectedIndex) {\r\n }\r\n }\r\n receiveMap(model: leafletMap = this.mapModel): void {\r\n if (!model) {\r\n return;\r\n }\r\n this.mapModel = model;\r\n if (this.mapMarkerPoints && this.mapMarkerPoints.length > 0) {\r\n this.mapMarkerPoints.forEach(item => {\r\n this.mapMarker = Leaflet.marker([item.lat, item.lon]).addTo(this.mapModel);\r\n });\r\n this.mapOptonCenter = this.mapMarkerPoints[0];\r\n this.mapMarkerPoints = [];\r\n }\r\n this.mapModel.on('click', (e) => {\r\n // @ts-ignore\r\n const lat = e.latlng.lat;\r\n // @ts-ignore\r\n const lon = e.latlng.lng;\r\n if (this.mapMarker !== undefined) {\r\n this.mapModel.removeLayer(this.mapMarker);\r\n }\r\n if (lat === this.dataModel.aboutUsGeolocationlatitude && lon === this.dataModel.aboutUsGeolocationlongitude) {\r\n this.dataModel.aboutUsGeolocationlatitude = null;\r\n this.dataModel.aboutUsGeolocationlongitude = null;\r\n return;\r\n }\r\n this.mapMarker = Leaflet.marker([lat, lon]).addTo(this.mapModel);\r\n this.dataModel.aboutUsGeolocationlatitude = lat;\r\n this.dataModel.aboutUsGeolocationlongitude = lon;\r\n });\r\n }\r\n onActionBackToParent(): void {\r\n this.router.navigate(['/core/site/']);\r\n }\r\n onActionFileSelectedAboutUsLinkImageId(model: NodeInterface): void {\r\n this.dataModel.aboutUsLinkImageId = model.id;\r\n this.dataModel.aboutUsLinkImageIdSrc = model.downloadLinksrc;\r\n }\r\n onActionFileSelectedLinkFavIconId(model: NodeInterface): void {\r\n this.dataModel.linkFavIconId = model.id;\r\n this.dataModel.linkFavIconIdSrc = model.downloadLinksrc;\r\n }\r\n onActionFileSelectedPwaIconSize190x192Id(model: NodeInterface): void {\r\n this.dataModel.pwaIconSize190x192Id = model.id;\r\n this.dataModel.pwaIconSize190x192IdSrc = model.downloadLinksrc;\r\n }\r\n onActionFileSelectedPwaIconSize512x512Id(model: NodeInterface): void {\r\n this.dataModel.linkFavIconId = model.id;\r\n this.dataModel.pwaIconSize512x512IdSrc = model.downloadLinksrc;\r\n }\r\n onActionFileSelectedLinkImageLogoId(model: NodeInterface): void {\r\n this.dataModel.linkImageLogoId = model.id;\r\n this.dataModel.linkImageLogoIdSrc = model.downloadLinksrc;\r\n }\r\n onActionSelectCategory(model: CoreSiteCategoryModel | null): void {\r\n if (!model || model.id <= 0) {\r\n const message = 'دسته بندی سایت مشخص نیست';\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n \r\n this.dataModel.linkSiteCategoryId = model.id;\r\n }\r\n /**\r\n * tag\r\n */\r\n addOnBlurTag = true;\r\n readonly separatorKeysCodes = [ENTER, COMMA] as const;\r\n addTag(event: MatChipInputEvent): void {\r\n const value = (event.value || '').trim();\r\n // Add our item\r\n if (value) {\r\n this.keywordDataModel.push( value);\r\n }\r\n // Clear the input value\r\n event.chipInput!.clear();\r\n }\r\n \r\n removeTag(item: string): void {\r\n const index = this.keywordDataModel.indexOf(item);\r\n \r\n if (index >= 0) {\r\n this.keywordDataModel.splice(index, 1);\r\n }\r\n }\r\n /**\r\n * tag\r\n */\r\n}","<app-cms-html-notice [svg]=\"'assets/media/svg/icons/Design/Edit.svg'\">\r\n <h4> {{'TITLE.Edit' | translate}}</h4>\r\n در این بخش شما میتوانید Ù…Øتوای سایت خود را ویرایش نمایید.\r\n <br>\r\n</app-cms-html-notice>\r\n<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-horizontal-stepper (selectionChange)=\"onStepClick($event,stepper)\" #stepper>\r\n <mat-step label=\"{{'TITLE.REQUIRED_INFORMATION' | translate}}\" state=\"main\">\r\n <!-- RecordStatus Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['RecordStatus']?.accessWatchField\">\r\n <mat-label>{{fieldsInfo['RecordStatus']?.fieldTitle}}</mat-label>\r\n <mat-select placeholder=\"{{fieldsInfo['RecordStatus']?.fieldTitle}}\" [(ngModel)]=\"dataModel.recordStatus\"\r\n [disabled]=\"!fieldsInfo['RecordStatus']?.accessEditField\" name=\"dataModel.recordStatus\"\r\n #RecordStatus=\"ngModel\" panelClass=\"recordStatus-{{ dataModel.recordStatus }}\" required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumRecordStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['RecordStatus']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n {{ fieldsInfo['RecordStatus']?.fieldTitle }} is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- OwnerSiteSetStatus Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"وضعیت سایت\" [(ngModel)]=\"dataModel.ownerSiteSetStatus\"\r\n name=\"dataModel.ownerSiteSetStatus\" #OwnerSiteSetStatus=\"ngModel\"\r\n panelClass=\"OwnerSiteSetStatus-{{ dataModel.ownerSiteSetStatus }}\">\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumSiteStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- UserLanguage Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"زبان سایت\" [(ngModel)]=\"dataModel.userLanguage\" name=\"dataModel.userLanguage\"\r\n #UserLanguage=\"ngModel\" panelClass=\"UserLanguage-{{ dataModel.userLanguage }}\">\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumLanguageResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!-- LinkSiteCategoryId Field -->\r\n <app-core-sitecategory-selector (optionChange)=\"onActionSelectCategory($event)\" [(loading)]=\"loading\"\r\n [optionSelectForce]=\"this.dataModel.linkSiteCategoryId\" [optionPlaceholder]=\"'نوع وب سایت'\"\r\n [optionDisabled]=\"!fieldsInfo['LinkSiteCategoryId']?.accessEditField\"></app-core-sitecategory-selector>\r\n <!-- linkCreatedBySiteId Field -->\r\n <app-core-site-selector (optionChange)=\"onActionSelectCategory($event)\" [(loading)]=\"loading\"\r\n [optionSelectForce]=\"this.dataModel.linkCreatedBySiteId\" [optionPlaceholder]=\"'سایت والد'\"\r\n [optionDisabled]=\"!fieldsInfo['LinkCreatedBySiteId']?.accessEditField\"></app-core-site-selector>\r\n <!-- Title Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Title']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['Title']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.title\" [disabled]=\"!fieldsInfo['Title']?.accessEditField\"\r\n name=\"dataModel.title\" #Title type=\"text\" placeholder=\"{{fieldsInfo['Title']?.fieldTitle}}\" minlength=\"3\"\r\n maxlength=\"100\" required />\r\n <mat-icon matSuffix *ngIf=\"dataModel.title && fieldsInfo['Title']?.accessEditField\" matSuffix mat-icon-button\r\n aria-label=\"Clear\" (click)=\"dataModel.title = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['Title']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['Title']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ Title.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"Title.errors?.required\">\r\n {{ fieldsInfo['Title']?.fieldTitle }} is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- linkHISId Field -->\r\n <app-cms-his-selector (optionChange)=\"this.dataModel.linkHISId=$event?.id\" [(loading)]=\"loading\"\r\n [optionSelectForce]=\"this.dataModel.linkHISId\" [optionPlaceholder]=\"'نرم اÙزار اچ ای اس'\"\r\n [optionDisabled]=\"!fieldsInfo['LinkHISId']?.accessEditField\"></app-cms-his-selector>\r\n <!-- hospitalKeyHIS Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['HospitalKeyHIS']?.accessWatchField\">\r\n <mat-label>کلید نرم اقزار HIS</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.hospitalKeyHIS\"\r\n [disabled]=\"!fieldsInfo['HospitalKeyHIS']?.accessEditField\" name=\"dataModel.hospitalKeyHIS\" #hospitalKeyHIS\r\n type=\"text\" minlength=\"0\" maxlength=\"36\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.hospitalKeyHIS && fieldsInfo['HospitalKeyHIS']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.hospitalKeyHIS = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['HospitalKeyHIS']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['HospitalKeyHIS']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ hospitalKeyHIS.value.length }} / 36</mat-hint>\r\n </mat-form-field>\r\n <!-- SubDomain Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['SubDomain']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['SubDomain']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.subDomain\" [disabled]=\"!fieldsInfo['SubDomain']?.accessEditField\"\r\n name=\"dataModel.subDomain\" #SubDomain type=\"text\" placeholder=\"test\" minlength=\"0\" maxlength=\"20\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.subDomain && fieldsInfo['SubDomain']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.subDomain = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['SubDomain']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['SubDomain']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ SubDomain.value.length }} / 20</mat-hint>\r\n </mat-form-field>\r\n <!-- Domain Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Domain']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['Domain']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.domain\" [disabled]=\"!fieldsInfo['Domain']?.accessEditField\"\r\n name=\"dataModel.domain\" #Domain type=\"text\" placeholder=\"domain.com\" minlength=\"3\" maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.domain && fieldsInfo['Domain']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.domain = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['Domain']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['Domain']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ Domain.value.length }} / 20</mat-hint>\r\n </mat-form-field>\r\n <!-- SSL Field -->\r\n <div class=\"ntk-full-width\">\r\n <mat-slide-toggle [(ngModel)]=\"dataModel.ssl\" *ngIf=\"fieldsInfo['SSL']?.accessWatchField\"\r\n [disabled]=\"!fieldsInfo['SSL']?.accessEditField\" name=\"dataModel.sSL\">\r\n {{fieldsInfo['SSL']?.fieldTitle}}\r\n </mat-slide-toggle>\r\n </div>\r\n <!-- ViewInCmsSiteList Field -->\r\n <div class=\"ntk-full-width\">\r\n <mat-slide-toggle [(ngModel)]=\"dataModel.viewInCmsSiteList\"\r\n *ngIf=\"fieldsInfo['ViewInCmsSiteList']?.accessWatchField\"\r\n [disabled]=\"!fieldsInfo['ViewInCmsSiteList']?.accessEditField\" name=\"dataModel.viewInCmsSiteList\">\r\n {{fieldsInfo['ViewInCmsSiteList']?.fieldTitle}}\r\n </mat-slide-toggle>\r\n </div>\r\n <!-- ExpireDate Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['ExpireDate']?.accessWatchField\">\r\n <mat-label>{{fieldsInfo['ExpireDate']?.fieldTitle}}</mat-label>\r\n <input matInput [matDatepicker]=\"ExpireDate\" [(ngModel)]=\"dataModel.expireDate\" name=\"dataModel.expireDate\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.expireDate && fieldsInfo['ExpireDate']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.expireDate = null\">close</mat-icon>\r\n <mat-datepicker-toggle matSuffix [for]=\"ExpireDate\"></mat-datepicker-toggle>\r\n <mat-datepicker touchUi #ExpireDate></mat-datepicker>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['ExpireDate']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button (click)=\"onActionBackToParent()\">\r\n {{'ACTION.BACK' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n <mat-step label=\"{{'TITLE.Web_Application' | translate}}\" state=\"seo\">\r\n <!-- PwaName Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaName']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['PwaName']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaName\" [disabled]=\"!fieldsInfo['PwaName']?.accessEditField\"\r\n name=\"dataModel.pwaName\" #PwaName type=\"text\" placeholder=\"Site Application\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.pwaName && fieldsInfo['PwaName']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaName = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaName']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaName']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">{{ PwaName.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n\r\n <!-- PwaShortName Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaShortName']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['PwaShortName']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaShortName\" [disabled]=\"!fieldsInfo['PwaShortName']?.accessEditField\"\r\n name=\"dataModel.pwaShortName\" #PwaShortName type=\"text\" placeholder=\"SiteApp\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.pwaShortName && fieldsInfo['PwaShortName']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaShortName = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaShortName']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaShortName']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">{{ PwaShortName.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n\r\n <!-- PwaDescription Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaDescription']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['PwaDescription']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaDescription\"\r\n [disabled]=\"!fieldsInfo['PwaDescription']?.accessEditField\" name=\"dataModel.pwaDescription\" #PwaDescription\r\n type=\"text\" placeholder=\"...\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.pwaDescription && fieldsInfo['PwaDescription']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaDescription = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaDescription']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaDescription']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">{{ PwaDescription.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n\r\n <!-- PwaDisplay Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaDisplay']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['PwaDisplay']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaDisplay\" [disabled]=\"!fieldsInfo['PwaDisplay']?.accessEditField\"\r\n name=\"dataModel.pwaDisplay\" #PwaDisplay type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.pwaDisplay && fieldsInfo['PwaDisplay']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaDisplay = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaDisplay']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaDisplay']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">{{ PwaDisplay.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n\r\n <!-- PwaIconSize190x192Id Field -->\r\n <div class=\"mb-3\">\r\n <img *ngIf=\"dataModel?.pwaIconSize190x192IdSrc?.length>0\" style=\"vertical-align:middle;\"\r\n class=\"ntk-hover-zoom\" aria-hidden src=\"{{dataModel.pwaIconSize190x192IdSrc | cmsthumbnail}}\" height=\"50\"\r\n width=\"50\" />\r\n </div>\r\n <div class=\"mb-9\">\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaIconSize190x192Id']?.accessWatchField\">\r\n <mat-label (click)=\"fileManagerOpenFormPwaIconSize190x192Id = true\">\r\n {{fieldsInfo['PwaIconSize190x192Id']?.fieldTitle}}\r\n </mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaIconSize190x192Id\"\r\n [disabled]=\"!fieldsInfo['PwaIconSize190x192Id']?.accessEditField\" name=\"dataModel.pwaIconSize190x192Id\"\r\n #PwaIconSize190x192Id type=\"text\" placeholder=\"شناسه Ùایل اصلی\" autocomplete=\"off\"\r\n (click)=\"fileManagerOpenFormPwaIconSize190x192Id = true\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.pwaIconSize190x192Id && fieldsInfo['PwaIconSize190x192Id']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaIconSize190x192Id = null\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaIconSize190x192Id']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaIconSize190x192Id']?.accessEditField\" matSuffix\r\n (click)=\"fileManagerOpenFormPwaIconSize190x192Id = true\">mode_edit</mat-icon>\r\n </mat-form-field>\r\n <cms-file-manager (itemSelected)=\"onActionFileSelectedPwaIconSize190x192Id($event)\" [language]=\"appLanguage\"\r\n [isPopup]=\"true\" [(openForm)]=\"fileManagerOpenFormPwaIconSize190x192Id\" [tree]=\"fileManagerTree\"\r\n [openDirectUploadView]=\"true\" [openFilemanagerButtonLabelKey]=\"'select'\"\r\n [selectFileType]=\"selectFileTypeMainImage\" [openFilemanagerButtonView]=\"false\"></cms-file-manager>\r\n </div>\r\n\r\n <!-- PwaIconSize512x512Id Field -->\r\n <div class=\"mb-3\">\r\n <img *ngIf=\"dataModel?.pwaIconSize512x512IdSrc?.length>0\" style=\"vertical-align:middle;\"\r\n class=\"ntk-hover-zoom\" aria-hidden src=\"{{dataModel.pwaIconSize512x512IdSrc | cmsthumbnail}}\" height=\"50\"\r\n width=\"50\" />\r\n </div>\r\n <div class=\"mb-9\">\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaIconSize512x512Id']?.accessWatchField\">\r\n <mat-label (click)=\"fileManagerOpenFormPwaIconSize512x512Id = true\">\r\n {{fieldsInfo['PwaIconSize512x512Id']?.fieldTitle}}\r\n </mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaIconSize512x512Id\"\r\n [disabled]=\"!fieldsInfo['PwaIconSize512x512Id']?.accessEditField\" name=\"dataModel.pwaIconSize512x512Id\"\r\n #PwaIconSize512x512Id type=\"text\" placeholder=\"شناسه Ùایل اصلی\" autocomplete=\"off\"\r\n (click)=\"fileManagerOpenFormPwaIconSize512x512Id = true\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.pwaIconSize512x512Id && fieldsInfo['PwaIconSize512x512Id']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaIconSize512x512Id = null\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaIconSize512x512Id']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaIconSize512x512Id']?.accessEditField\" matSuffix\r\n (click)=\"fileManagerOpenFormPwaIconSize512x512Id = true\">mode_edit</mat-icon>\r\n </mat-form-field>\r\n <cms-file-manager (itemSelected)=\"onActionFileSelectedPwaIconSize512x512Id($event)\" [language]=\"appLanguage\"\r\n [isPopup]=\"true\" [(openForm)]=\"fileManagerOpenFormPwaIconSize512x512Id\" [tree]=\"fileManagerTree\"\r\n [openDirectUploadView]=\"true\" [openFilemanagerButtonLabelKey]=\"'select'\"\r\n [selectFileType]=\"selectFileTypeMainImage\" [openFilemanagerButtonView]=\"false\"></cms-file-manager>\r\n </div>\r\n\r\n <!-- PwaThemeColor Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaThemeColor']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['PwaThemeColor']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaThemeColor\" name=\"dataModel.pwaThemeColor\" #PwaThemeColor\r\n [value]=\"dataModel.pwaThemeColor\" [style.background]=\"dataModel.pwaThemeColor\"\r\n [(colorPicker)]=\"dataModel.pwaThemeColor\" type=\"text\"\r\n [disabled]=\"!fieldsInfo['PwaThemeColor']?.accessEditField\"\r\n placeholder=\"{{fieldsInfo['PwaThemeColor']?.fieldTitle}}\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.pwaThemeColor\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.pwaThemeColor = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n </mat-form-field>\r\n <!-- PwaThemeBackgroundColor Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaThemeBackgroundColor']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['PwaThemeBackgroundColor']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaThemeBackgroundColor\" name=\"dataModel.pwaThemeBackgroundColor\"\r\n #PwaThemeBackgroundColor [value]=\"dataModel.pwaThemeBackgroundColor\"\r\n [style.background]=\"dataModel.pwaThemeBackgroundColor\" [(colorPicker)]=\"dataModel.pwaThemeBackgroundColor\"\r\n type=\"text\" [disabled]=\"!fieldsInfo['PwaThemeBackgroundColor']?.accessEditField\"\r\n placeholder=\"{{fieldsInfo['PwaThemeBackgroundColor']?.fieldTitle}}\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.pwaThemeBackgroundColor\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.pwaThemeBackgroundColor = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n </mat-form-field>\r\n\r\n <fieldset>\r\n <legend>Notification</legend>\r\n <!-- PwaNotifySubject Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaNotifySubject']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['PwaNotifySubject']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaNotifySubject\"\r\n [disabled]=\"!fieldsInfo['PwaNotifySubject']?.accessEditField\" name=\"dataModel.pwaNotifySubject\"\r\n #PwaDisplay type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.pwaNotifySubject && fieldsInfo['PwaNotifySubject']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaNotifySubject = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaNotifySubject']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaNotifySubject']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ PwaNotifySubject.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <!-- PwaNotifyPublicKey Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaNotifyPublicKey']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['PwaNotifyPublicKey']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaNotifyPublicKey\"\r\n [disabled]=\"!fieldsInfo['PwaNotifyPublicKey']?.accessEditField\" name=\"dataModel.pwaNotifyPublicKey\"\r\n #PwaDisplay type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.pwaNotifyPublicKey && fieldsInfo['PwaNotifyPublicKey']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaNotifyPublicKey = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaNotifyPublicKey']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaNotifyPublicKey']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ PwaNotifyPublicKey.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <!-- PwaNotifyPrivateKey Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PwaNotifyPrivateKey']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['PwaNotifyPrivateKey']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwaNotifyPrivateKey\"\r\n [disabled]=\"!fieldsInfo['PwaNotifyPrivateKey']?.accessEditField\" name=\"dataModel.pwaNotifyPrivateKey\"\r\n #PwaDisplay type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.pwaNotifyPrivateKey && fieldsInfo['PwaNotifyPrivateKey']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.pwaNotifyPrivateKey = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['PwaNotifyPrivateKey']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['PwaNotifyPrivateKey']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ PwaNotifyPrivateKey.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n </fieldset>\r\n\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"accent\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n\r\n <mat-step label=\"{{'TITLE.FireBase' | translate}}\" state=\"seo\">\r\n\r\n <!-- FirebaseApiKey Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['FirebaseApiKey']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['FirebaseApiKey']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.firebaseApiKey\"\r\n [disabled]=\"!fieldsInfo['FirebaseApiKey']?.accessEditField\" name=\"dataModel.firebaseApiKey\" #FirebaseApiKey\r\n type=\"text\" placeholder=\"SiteApp\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.firebaseApiKey && fieldsInfo['FirebaseApiKey']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.firebaseApiKey = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['FirebaseApiKey']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['FirebaseApiKey']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ FirebaseApiKey.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <!-- FirebaseAuthDomain Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['FirebaseAuthDomain']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['FirebaseAuthDomain']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.firebaseAuthDomain\"\r\n [disabled]=\"!fieldsInfo['FirebaseAuthDomain']?.accessEditField\" name=\"dataModel.firebaseAuthDomain\"\r\n #FirebaseAuthDomain type=\"text\" placeholder=\"...\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.firebaseAuthDomain && fieldsInfo['FirebaseAuthDomain']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.firebaseAuthDomain = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['FirebaseAuthDomain']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['FirebaseAuthDomain']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ FirebaseAuthDomain.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <!-- FirebaseDatabaseURL Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['FirebaseDatabaseURL']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['FirebaseDatabaseURL']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.firebaseDatabaseURL\"\r\n [disabled]=\"!fieldsInfo['FirebaseDatabaseURL']?.accessEditField\" name=\"dataModel.firebaseDatabaseURL\"\r\n #FirebaseDatabaseURL type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.firebaseDatabaseURL && fieldsInfo['FirebaseDatabaseURL']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.firebaseDatabaseURL = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['FirebaseDatabaseURL']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['FirebaseDatabaseURL']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ FirebaseDatabaseURL.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <!-- FirebaseProjectId Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['FirebaseProjectId']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['FirebaseProjectId']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.firebaseProjectId\"\r\n [disabled]=\"!fieldsInfo['FirebaseProjectId']?.accessEditField\" name=\"dataModel.firebaseProjectId\"\r\n #FirebaseProjectId type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.firebaseProjectId && fieldsInfo['FirebaseProjectId']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.firebaseProjectId = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['FirebaseProjectId']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['FirebaseProjectId']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ FirebaseProjectId.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <!-- FirebaseStorageBucket Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['FirebaseStorageBucket']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['FirebaseStorageBucket']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.firebaseStorageBucket\"\r\n [disabled]=\"!fieldsInfo['FirebaseStorageBucket']?.accessEditField\" name=\"dataModel.firebaseStorageBucket\"\r\n #FirebaseStorageBucket type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.firebaseStorageBucket && fieldsInfo['FirebaseStorageBucket']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.firebaseStorageBucket = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['FirebaseStorageBucket']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['FirebaseStorageBucket']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ FirebaseStorageBucket.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <!-- FirebaseMessagingSenderId Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['FirebaseMessagingSenderId']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['FirebaseMessagingSenderId']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.firebaseMessagingSenderId\"\r\n [disabled]=\"!fieldsInfo['FirebaseMessagingSenderId']?.accessEditField\"\r\n name=\"dataModel.firebaseMessagingSenderId\" #FirebaseMessagingSenderId type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.firebaseMessagingSenderId && fieldsInfo['FirebaseMessagingSenderId']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.firebaseMessagingSenderId = ''\">close\r\n </mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['FirebaseMessagingSenderId']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['FirebaseMessagingSenderId']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ FirebaseMessagingSenderId.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <!-- FirebaseAppId Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['FirebaseAppId']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['FirebaseAppId']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.firebaseAppId\"\r\n [disabled]=\"!fieldsInfo['FirebaseAppId']?.accessEditField\" name=\"dataModel.firebaseAppId\" #FirebaseAppId\r\n type=\"text\" placeholder=\"\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.firebaseAppId && fieldsInfo['FirebaseAppId']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.firebaseAppId = ''\">close</mat-icon>\r\n <mat-icon matTooltip=\"{{fieldsInfo['FirebaseAppId']?.FieldDescription}}\" matSuffix>info</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['FirebaseAppId']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <!-- <mat-hint align=\"start\">{{ FirebaseAppId.value.length }} / 100</mat-hint> -->\r\n </mat-form-field>\r\n\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"accent\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n\r\n <mat-step label=\"{{'TITLE.SEO' | translate}}\" state=\"seo\">\r\n <p>تنطیمات بهینه سازی سئو</p>\r\n <div class=\"mb-3\">\r\n <img *ngIf=\"dataModel?.linkFavIconIdSrc?.length>0\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\"\r\n aria-hidden src=\"{{dataModel.linkFavIconIdSrc | cmsthumbnail}}\" height=\"50\" width=\"50\" />\r\n </div>\r\n <div class=\"mb-9\">\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['LinkFavIconId']?.accessWatchField\">\r\n <mat-label (click)=\"fileManagerOpenFormLinkFavIconId = true\">\r\n {{fieldsInfo['LinkFavIconId']?.fieldTitle}}\r\n </mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.linkFavIconId\"\r\n [disabled]=\"!fieldsInfo['LinkFavIconId']?.accessEditField\" name=\"dataModel.linkFavIconId\" #LinkFavIconId\r\n type=\"text\" placeholder=\"شناسه Ùایل اصلی\" autocomplete=\"off\"\r\n (click)=\"fileManagerOpenFormLinkFavIconId = true\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.linkFavIconId && fieldsInfo['LinkFavIconId']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.linkFavIconId = null\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['LinkFavIconId']?.accessEditField\" matSuffix\r\n (click)=\"fileManagerOpenFormLinkFavIconId = true\">mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['LinkFavIconId']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <cms-file-manager (itemSelected)=\"onActionFileSelectedLinkFavIconId($event)\" [language]=\"appLanguage\"\r\n [isPopup]=\"true\" [(openForm)]=\"fileManagerOpenFormLinkFavIconId\" [tree]=\"fileManagerTree\"\r\n [openDirectUploadView]=\"true\" [openFilemanagerButtonLabelKey]=\"'select'\"\r\n [selectFileType]=\"selectFileTypeMainImage\" [openFilemanagerButtonView]=\"false\"></cms-file-manager>\r\n </div>\r\n <!-- SeoDescription Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['SeoDescription']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['SeoDescription']?.FieldDescription }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.seoDescription\"\r\n [disabled]=\"!fieldsInfo['SeoDescription']?.accessEditField\" name=\"dataModel.seoDescription\" #SeoDescription\r\n type=\"text\" placeholder=\"{{fieldsInfo['SeoDescription']?.fieldTitle}}\" row=\"6\" minlength=\"0\"\r\n maxlength=\"1000\"></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.seoDescription && fieldsInfo['SeoDescription']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.seoDescription = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['SeoDescription']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['SeoDescription']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ SeoDescription.value.length }} / 1000</mat-hint>\r\n </mat-form-field>\r\n <!-- KeywordModel Field -->\r\n <mat-form-field style=\"width: 100%;\" appearance=\"fill\">\r\n <mat-label>انتخاب کلمات کلیدی نسبت به مطلب</mat-label>\r\n <mat-chip-list #chipList aria-label=\"کلمه کلیدی\">\r\n <mat-chip *ngFor=\"let item of keywordDataModel\" (removed)=\"removeTag(item)\">\r\n {{item}}\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n <input placeholder=\"کلمه کلیدی +\" [matChipInputFor]=\"chipList\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\" [matChipInputAddOnBlur]=\"addOnBlurTag\"\r\n (matChipInputTokenEnd)=\"addTag($event)\">\r\n </mat-chip-list>\r\n </mat-form-field>\r\n\r\n\r\n\r\n <!-- CurrentSiteDomainUrl Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['CurrentSiteDomainUrl']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['CurrentSiteDomainUrl']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.currentSiteDomainUrl\"\r\n [disabled]=\"!fieldsInfo['CurrentSiteDomainUrl']?.accessEditField\" name=\"dataModel.currentSiteDomainUrl\"\r\n #CurrentSiteDomainUrl type=\"text\" placeholder=\"https://....\" minlength=\"3\" maxlength=\"100\"\r\n style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.currentSiteDomainUrl && fieldsInfo['CurrentSiteDomainUrl']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.currentSiteDomainUrl = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['CurrentSiteDomainUrl']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['CurrentSiteDomainUrl']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ CurrentSiteDomainUrl.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- Redirect Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Redirect']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['Redirect']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.redirect\" [disabled]=\"!fieldsInfo['Redirect']?.accessEditField\"\r\n name=\"dataModel.redirect\" #Redirect type=\"text\" placeholder=\"https://....\" minlength=\"3\" maxlength=\"100\"\r\n style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.redirect && fieldsInfo['Redirect']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.redirect = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['Redirect']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['Redirect']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ Redirect.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- Copyright Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Copyright']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['Copyright']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.copyright\" [disabled]=\"!fieldsInfo['Copyright']?.accessEditField\"\r\n name=\"dataModel.copyright\" #Copyright type=\"text\" placeholder=\"this site ...\" minlength=\"3\"\r\n maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.copyright && fieldsInfo['Copyright']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.copyright = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['Copyright']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['Copyright']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ Copyright.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- ConfigNeshanMapApiKey Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['ConfigNeshanMapApiKey']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['ConfigNeshanMapApiKey']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.configNeshanMapApiKey\"\r\n [disabled]=\"!fieldsInfo['ConfigNeshanMapApiKey']?.accessEditField\" name=\"dataModel.configNeshanMapApiKey\"\r\n #ConfigNeshanMapApiKey type=\"text\" placeholder=\"Api Key ...\" minlength=\"3\" maxlength=\"100\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.configNeshanMapApiKey && fieldsInfo['ConfigNeshanMapApiKey']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.configNeshanMapApiKey = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['ConfigNeshanMapApiKey']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['ConfigNeshanMapApiKey']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ ConfigNeshanMapApiKey.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <hr>\r\n <!-- SeoGoogleHTMLtag Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['SeoGoogleHTMLtag']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['SeoGoogleHTMLtag']?.fieldTitle }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.seoGoogleHTMLtag\"\r\n [disabled]=\"!fieldsInfo['SeoGoogleHTMLtag']?.accessEditField\" name=\"dataModel.seoGoogleHTMLtag\"\r\n #SeoGoogleHTMLtag type=\"text\" placeholder=\"<meta ....\" minlength=\"0\"></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.seoGoogleHTMLtag && fieldsInfo['SeoGoogleHTMLtag']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.seoGoogleHTMLtag = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['SeoGoogleHTMLtag']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['SeoGoogleHTMLtag']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ SeoGoogleHTMLtag.value.length }} </mat-hint>\r\n </mat-form-field>\r\n <!-- SeoGoogleAnalytics Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['SeoGoogleAnalytics']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['SeoGoogleAnalytics']?.fieldTitle }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.seoGoogleAnalytics\"\r\n [disabled]=\"!fieldsInfo['SeoGoogleAnalytics']?.accessEditField\" name=\"dataModel.seoGoogleAnalytics\"\r\n #SeoGoogleAnalytics type=\"text\" placeholder=\"\" minlength=\"\"></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.seoGoogleAnalytics && fieldsInfo['SeoGoogleAnalytics']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.seoGoogleAnalytics = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['SeoGoogleAnalytics']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['SeoGoogleAnalytics']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ SeoGoogleAnalytics.value.length }} </mat-hint>\r\n </mat-form-field>\r\n <hr>\r\n <p>تنظیمات Twitter Card</p>\r\n <!-- SeoTwitterCardSite Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['SeoTwitterCardSite']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['SeoTwitterCardSite']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.seoTwitterCardSite\"\r\n [disabled]=\"!fieldsInfo['SeoTwitterCardSite']?.accessEditField\" name=\"dataModel.seoTwitterCardSite\"\r\n #SeoTwitterCardSite type=\"text\" placeholder=\"@username\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.seoTwitterCardSite && fieldsInfo['SeoTwitterCardSite']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.seoTwitterCardSite = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['SeoTwitterCardSite']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['SeoTwitterCardSite']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- SeoTwitterCardCreator Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['SeoTwitterCardCreator']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['SeoTwitterCardCreator']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.seoTwitterCardCreator\"\r\n [disabled]=\"!fieldsInfo['SeoTwitterCardCreator']?.accessEditField\" name=\"dataModel.seoTwitterCardCreator\"\r\n #SeoTwitterCardCreator type=\"text\" placeholder=\"@username\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.seoTwitterCardCreator && fieldsInfo['SeoTwitterCardCreator']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.seoTwitterCardCreator = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['SeoTwitterCardCreator']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['SeoTwitterCardCreator']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"accent\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n <mat-step label=\"{{'ACTION.ABOUT' | translate}}\" state=\"seo\">\r\n <p>{{'TITLE.Content_Of_The_About_Us_App' | translate}}</p>\r\n <div class=\"mb-3\">\r\n <img *ngIf=\"dataModel?.linkImageLogoIdSrc?.length>0\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\"\r\n aria-hidden src=\"{{dataModel.linkImageLogoIdSrc | cmsthumbnail}}\" height=\"50\" width=\"50\" />\r\n </div>\r\n <div class=\"mb-9\">\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['LinkImageLogoId']?.accessWatchField\">\r\n <mat-label (click)=\"fileManagerOpenFormLinkImageLogoId = true\">\r\n {{fieldsInfo['LinkImageLogoId']?.fieldTitle}}\r\n </mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.linkImageLogoId\"\r\n [disabled]=\"!fieldsInfo['LinkImageLogoId']?.accessEditField\" name=\"dataModel.linkImageLogoId\"\r\n #LinkImageLogoId type=\"text\" placeholder=\"شناسه Ùایل اصلی\"\r\n (click)=\"fileManagerOpenFormLinkImageLogoId = true\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.linkImageLogoId && fieldsInfo['LinkImageLogoId']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.linkImageLogoId = null\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['LinkImageLogoId']?.accessEditField\" matSuffix\r\n (click)=\"fileManagerOpenFormLinkImageLogoId = true\">mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['LinkImageLogoId']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <cms-file-manager (itemSelected)=\"onActionFileSelectedLinkImageLogoId($event)\" [language]=\"appLanguage\"\r\n [isPopup]=\"true\" [(openForm)]=\"fileManagerOpenFormLinkImageLogoId\" [tree]=\"fileManagerTree\"\r\n [openDirectUploadView]=\"true\" [openFilemanagerButtonLabelKey]=\"'select'\"\r\n [selectFileType]=\"selectFileTypeMainImage\" [openFilemanagerButtonView]=\"false\"></cms-file-manager>\r\n </div>\r\n <!-- AboutUsTitle Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsTitle']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsTitle']?.FieldAboutUsTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsTitle\" [disabled]=\"!fieldsInfo['AboutUsTitle']?.accessEditField\"\r\n name=\"dataModel.aboutUsTitle\" #AboutUsTitle type=\"text\" placeholder=\"{{fieldsInfo['Title']?.fieldTitle}}\"\r\n minlength=\"0\" maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsTitle && fieldsInfo['AboutUsTitle']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsTitle = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsTitle']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsTitle']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ AboutUsTitle.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsDescription Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsDescription']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsDescription']?.fieldTitle }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.aboutUsDescription\"\r\n [disabled]=\"!fieldsInfo['AboutUsDescription']?.accessEditField\" name=\"dataModel.aboutUsDescription\"\r\n #AboutUsDescription type=\"text\" placeholder=\"{{fieldsInfo['Description']?.fieldTitle}}\" row=\"5\"\r\n minlength=\"0\" maxlength=\"1000\"></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsDescription && fieldsInfo['AboutUsDescription']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsDescription = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsDescription']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsDescription']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ AboutUsDescription.value.length }} / 1000</mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsTel Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsTel']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsTel']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsTel\" [disabled]=\"!fieldsInfo['AboutUsTel']?.accessEditField\"\r\n class=\"input-Mobile\" name=\"dataModel.aboutUsTel\" #AboutUsTel type=\"text\" placeholder=\"021444444444\"\r\n minlength=\"0\" maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsTel && fieldsInfo['AboutUsTel']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsTel = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsTel']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsTel']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ AboutUsTel.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsFax Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsFax']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsFax']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsFax\" [disabled]=\"!fieldsInfo['AboutUsFax']?.accessEditField\"\r\n name=\"dataModel.aboutUsFax\" #AboutUsFax type=\"text\" placeholder=\"02133333333\" minlength=\"0\"\r\n maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsFax && fieldsInfo['AboutUsFax']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsFax = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsFax']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsFax']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ AboutUsFax.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsEmail Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsEmail']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsEmail']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsEmail\" [disabled]=\"!fieldsInfo['AboutUsEmail']?.accessEditField\"\r\n name=\"dataModel.aboutUsEmail\" #AboutUsEmail type=\"text\" placeholder=\"info@yourdomain.com\" minlength=\"0\"\r\n maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsEmail && fieldsInfo['AboutUsEmail']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsEmail = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsEmail']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsEmail']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ AboutUsEmail.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsAddress Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsAddress']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsAddress']?.fieldTitle }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.aboutUsAddress\"\r\n [disabled]=\"!fieldsInfo['AboutUsAddress']?.accessEditField\" name=\"dataModel.aboutUsAddress\" #AboutUsAddress\r\n type=\"text\" placeholder=\"ایران - تهران - ...\" row=\"5\" minlength=\"0\" maxlength=\"100\"></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsAddress && fieldsInfo['AboutUsAddress']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsAddress = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsAddress']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsAddress']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint align=\"end\">{{ AboutUsAddress.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsMoreInfoUrl Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsMoreInfoUrl']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsMoreInfoUrl']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsMoreInfoUrl\"\r\n [disabled]=\"!fieldsInfo['AboutUsMoreInfoUrl']?.accessEditField\" name=\"dataModel.aboutUsMoreInfoUrl\"\r\n #AboutUsMoreInfoUrl type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsMoreInfoUrl && fieldsInfo['AboutUsMoreInfoUrl']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsMoreInfoUrl = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsMoreInfoUrl']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsMoreInfoUrl']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkCompanyAuthorSite Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkCompanyAuthorSite']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkCompanyAuthorSite']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkCompanyAuthorSite\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkCompanyAuthorSite']?.accessEditField\"\r\n name=\"dataModel.aboutUsLinkCompanyAuthorSite\" #AboutUsLinkCompanyAuthorSite type=\"text\"\r\n placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.aboutUsLinkCompanyAuthorSite && fieldsInfo['AboutUsLinkCompanyAuthorSite']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkCompanyAuthorSite = ''\">close\r\n </mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkCompanyAuthorSite']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkCompanyAuthorSite']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkCompanyPublisherSite Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkCompanyPublisherSite']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkCompanyPublisherSite']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkCompanyPublisherSite\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkCompanyPublisherSite']?.accessEditField\"\r\n name=\"dataModel.aboutUsLinkCompanyPublisherSite\" #AboutUsLinkCompanyPublisherSite type=\"text\"\r\n placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.aboutUsLinkCompanyPublisherSite && fieldsInfo['AboutUsLinkCompanyPublisherSite']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkCompanyPublisherSite = ''\">close\r\n </mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkCompanyPublisherSite']?.accessEditField\" matSuffix>mode_edit\r\n </mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkCompanyPublisherSite']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkFacebook Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkFacebook']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkFacebook']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkFacebook\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkFacebook']?.accessEditField\" name=\"dataModel.aboutUsLinkFacebook\"\r\n #AboutUsLinkFacebook type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.aboutUsLinkFacebook && fieldsInfo['AboutUsLinkFacebook']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkFacebook = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkFacebook']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkFacebook']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkTwitter Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkTwitter']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkTwitter']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkTwitter\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkTwitter']?.accessEditField\" name=\"dataModel.aboutUsLinkTwitter\"\r\n #AboutUsLinkTwitter type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsLinkTwitter && fieldsInfo['AboutUsLinkTwitter']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkTwitter = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkTwitter']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkTwitter']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkGooglePlus Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkGooglePlus']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkGooglePlus']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkGooglePlus\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkGooglePlus']?.accessEditField\" name=\"dataModel.aboutUsLinkGooglePlus\"\r\n #AboutUsLinkGooglePlus type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.aboutUsLinkGooglePlus && fieldsInfo['AboutUsLinkGooglePlus']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkGooglePlus = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkGooglePlus']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkGooglePlus']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkInstagram Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkInstagram']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkInstagram']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkInstagram\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkInstagram']?.accessEditField\" name=\"dataModel.aboutUsLinkInstagram\"\r\n #AboutUsLinkInstagram type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.aboutUsLinkInstagram && fieldsInfo['AboutUsLinkInstagram']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkInstagram = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkInstagram']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkInstagram']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkWhatsapp Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkWhatsapp']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkWhatsapp']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkWhatsapp\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkWhatsapp']?.accessEditField\" name=\"dataModel.aboutUsLinkWhatsapp\"\r\n #AboutUsLinkWhatsapp type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.aboutUsLinkWhatsapp && fieldsInfo['AboutUsLinkWhatsapp']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkWhatsapp = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkWhatsapp']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkWhatsapp']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinklinkedin Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinklinkedin']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinklinkedin']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinklinkedin\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinklinkedin']?.accessEditField\" name=\"dataModel.aboutUsLinklinkedin\"\r\n #AboutUsLinklinkedin type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.aboutUsLinklinkedin && fieldsInfo['AboutUsLinklinkedin']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinklinkedin = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinklinkedin']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinklinkedin']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkYahoo Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkYahoo']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkYahoo']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkYahoo\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkYahoo']?.accessEditField\" name=\"dataModel.aboutUsLinkYahoo\"\r\n #AboutUsLinkYahoo type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsLinkYahoo && fieldsInfo['AboutUsLinkYahoo']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkYahoo = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkYahoo']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkYahoo']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkYoutube Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkYoutube']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkYoutube']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkYoutube\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkYoutube']?.accessEditField\" name=\"dataModel.aboutUsLinkYoutube\"\r\n #AboutUsLinkYoutube type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsLinkYoutube && fieldsInfo['AboutUsLinkYoutube']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkYoutube = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkYoutube']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkYoutube']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkTelegram Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkTelegram']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkTelegram']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkTelegram\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkTelegram']?.accessEditField\" name=\"dataModel.aboutUsLinkTelegram\"\r\n #AboutUsLinkTelegram type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.aboutUsLinkTelegram && fieldsInfo['AboutUsLinkTelegram']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkTelegram = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkTelegram']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkTelegram']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkPinterest Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkPinterest']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkPinterest']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkPinterest\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkPinterest']?.accessEditField\" name=\"dataModel.aboutUsLinkPinterest\"\r\n #AboutUsLinkPinterest type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.aboutUsLinkPinterest && fieldsInfo['AboutUsLinkPinterest']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkPinterest = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkPinterest']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkPinterest']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- AboutUsLinkRss Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkRss']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AboutUsLinkRss']?.fieldTitle }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkRss\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkRss']?.accessEditField\" name=\"dataModel.aboutUsLinkRss\" #AboutUsLinkRss\r\n type=\"text\" placeholder=\"https://....\" style=\"text-align: left;\" dir=\"ltr\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.aboutUsLinkRss && fieldsInfo['AboutUsLinkRss']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkRss = ''\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkRss']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['AboutUsLinkRss']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n </mat-form-field>\r\n <hr>\r\n <div class=\"mb-3\">\r\n <img *ngIf=\"dataModel?.aboutUsLinkImageIdSrc?.length>0\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\"\r\n aria-hidden src=\"{{dataModel.aboutUsLinkImageIdSrc | cmsthumbnail}}\" height=\"50\" width=\"50\" />\r\n </div>\r\n <div class=\"mb-9\">\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AboutUsLinkImageId']?.accessWatchField\">\r\n <mat-label (click)=\"fileManagerOpenFormAboutUsLinkImageId = true\">\r\n {{fieldsInfo['AboutUsLinkImageId']?.fieldTitle}}\r\n </mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.aboutUsLinkImageId\"\r\n [disabled]=\"!fieldsInfo['AboutUsLinkImageId']?.accessEditField\" name=\"dataModel.aboutUsLinkImageId\"\r\n #AboutUsLinkImageId type=\"text\" placeholder=\"شناسه Ùایل اصلی\"\r\n (click)=\"fileManagerOpenFormAboutUsLinkImageId = true\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.aboutUsLinkImageId && fieldsInfo['AboutUsLinkImageId']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.aboutUsLinkImageId = null\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AboutUsLinkImageId']?.accessEditField\" matSuffix\r\n (click)=\"fileManagerOpenFormAboutUsLinkImageId = true\">mode_edit</mat-icon>\r\n </mat-form-field>\r\n <cms-file-manager (itemSelected)=\"onActionFileSelectedAboutUsLinkImageId($event)\" [language]=\"appLanguage\"\r\n [isPopup]=\"true\" [(openForm)]=\"fileManagerOpenFormAboutUsLinkImageId\" [tree]=\"fileManagerTree\"\r\n [openDirectUploadView]=\"true\" [openFilemanagerButtonLabelKey]=\"'select'\"\r\n [selectFileType]=\"selectFileTypeMainImage\" [openFilemanagerButtonView]=\"false\"></cms-file-manager>\r\n </div>\r\n <div class=\"mb-12\">\r\n <angular-editor [placeholder]=\"'متن Øریم خصوصی کاربر را وارد کنید'\" [config]=\"publicHelper.editorConfigFull\"\r\n id=\"main\" *ngIf=\"fieldsInfo['AboutUsPrivacyPolicyHtmlBody']?.accessWatchField\"\r\n [disabled]=\"!fieldsInfo['AboutUsPrivacyPolicyHtmlBody']?.accessEditField\"\r\n [(ngModel)]=\"dataModel.aboutUsPrivacyPolicyHtmlBody\" name=\"dataModel.aboutUsPrivacyPolicyHtmlBody\">\r\n </angular-editor>\r\n </div>\r\n <p>روی نقشه کلیک کنید تا موقیت مکانی مشخص گردد</p>\r\n <app-cms-map (map$)=\"receiveMap($event)\" [optonCenter]=\"mapOptonCenter\" [optonCenter]=\"mapOptonCenter\"\r\n id='main-map'></app-cms-map>\r\n\r\n\r\n <div class=\"mb-12\">\r\n <angular-editor [placeholder]=\"'یاداشت مدیریت سایت'\" [config]=\"publicHelper.editorConfigFull\" id=\"main\"\r\n *ngIf=\"fieldsInfo['AdminSiteMemo']?.accessWatchField\"\r\n [disabled]=\"!fieldsInfo['AdminSiteMemo']?.accessEditField\" [(ngModel)]=\"dataModel.adminSiteMemo\"\r\n name=\"dataModel.adminSiteMemo\">\r\n </angular-editor>\r\n </div>\r\n <div class=\"mb-12\">\r\n <angular-editor [placeholder]=\"'یاداشت مدیریت Ú©Ù„ سامانه'\" [config]=\"publicHelper.editorConfigFull\" id=\"main\"\r\n *ngIf=\"fieldsInfo['AdminMainMemo']?.accessWatchField\"\r\n [disabled]=\"!fieldsInfo['AdminMainMemo']?.accessEditField\" [(ngModel)]=\"dataModel.adminMainMemo\"\r\n name=\"dataModel.adminMainMemo\">\r\n </angular-editor>\r\n </div>\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"accent\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n <mat-step label=\"{{'TITLE.Accounting' | translate}}\" state=\"seo\">\r\n <p>وضعیت مالی Ùˆ تراکنش Øسابداری</p>\r\n <!-- LinkResellerUserId Field -->\r\n <app-cms-user-selector [optionDisabled]=\"!fieldsInfo['LinkResellerUserId']?.accessEditField\"\r\n [optionSelectForce]=\"dataModel.linkResellerUserId\" [(loading)]=\"loading\"\r\n (optionChange)=\"onActionSelectorLinkResellerUserIdSelect($event)\" [optionPlaceholder]=\"'کاربر معرÙ'\">\r\n </app-cms-user-selector>\r\n <!-- LinkResellerSiteId Field -->\r\n <app-cms-site-selector [optionDisabled]=\"!fieldsInfo['LinkResellerSiteId']?.accessEditField\"\r\n [optionSelectForce]=\"dataModel.linkResellerSiteId\" [(loading)]=\"loading\"\r\n (optionChange)=\"onActionSelectorLinkResellerSiteIdSelect($event)\" [optionPlaceholder]=\"'سایت معرÙ'\">\r\n </app-cms-site-selector>\r\n <!-- HasAccountingForm Field -->\r\n <div class=\"ntk-full-width\">\r\n <mat-slide-toggle [(ngModel)]=\"dataModel.hasAccountingForm\"\r\n *ngIf=\"fieldsInfo['HasAccountingForm']?.accessWatchField\"\r\n [disabled]=\"!fieldsInfo['HasAccountingForm']?.accessEditField\" name=\"dataModel.hasAccountingForm\">\r\n {{fieldsInfo['HasAccountingForm']?.fieldTitle}}\r\n </mat-slide-toggle>\r\n </div>\r\n <!-- AccountingFormNo Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AccountingFormNo']?.accessWatchField\">\r\n <mat-label>{{ fieldsInfo['AccountingFormNo']?.FieldAccountingFormNo }}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.accountingFormNo\"\r\n [disabled]=\"!fieldsInfo['AccountingFormNo']?.accessEditField\" name=\"dataModel.accountingFormNo\"\r\n #AccountingFormNo type=\"number\" placeholder=\"123\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.accountingFormNo && fieldsInfo['AccountingFormNo']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.accountingFormNo = 0\">close</mat-icon>\r\n <mat-icon *ngIf=\"fieldsInfo['AccountingFormNo']?.accessEditField\" matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"end\">{{ AccountingFormNo.value.length }} / 100</mat-hint>\r\n </mat-form-field>\r\n <!-- AccountingFormCreatedDate Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AccountingFormCreatedDate']?.accessWatchField\">\r\n <mat-label>{{fieldsInfo['AccountingFormCreatedDate']?.fieldTitle}}</mat-label>\r\n <input matInput [matDatepicker]=\"AccountingFormCreatedDate\" [(ngModel)]=\"dataModel.accountingFormCreatedDate\"\r\n name=\"dataModel.accountingFormCreatedDate\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.accountingFormCreatedDate && fieldsInfo['AccountingFormCreatedDate']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.accountingFormCreatedDate = null\">close\r\n </mat-icon>\r\n <mat-datepicker-toggle matSuffix [for]=\"AccountingFormCreatedDate\"></mat-datepicker-toggle>\r\n <mat-datepicker touchUi #AccountingFormCreatedDate></mat-datepicker>\r\n </mat-form-field>\r\n <!-- AccountingFormUpdatedDate Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['AccountingFormUpdatedDate']?.accessWatchField\">\r\n <mat-label>{{fieldsInfo['AccountingFormUpdatedDate']?.fieldTitle}}</mat-label>\r\n <input matInput [matDatepicker]=\"AccountingFormUpdatedDate\" [(ngModel)]=\"dataModel.accountingFormUpdatedDate\"\r\n name=\"dataModel.accountingFormUpdatedDate\" />\r\n <mat-icon matSuffix\r\n *ngIf=\"dataModel.accountingFormUpdatedDate && fieldsInfo['AccountingFormUpdatedDate']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.accountingFormUpdatedDate = null\">close\r\n </mat-icon>\r\n <mat-datepicker-toggle matSuffix [for]=\"AccountingFormUpdatedDate\"></mat-datepicker-toggle>\r\n <mat-datepicker touchUi #AccountingFormUpdatedDate></mat-datepicker>\r\n </mat-form-field>\r\n <div class=\"mb-12\">\r\n <angular-editor [placeholder]=\"'یاداشت Øسابدری'\" [config]=\"publicHelper.editorConfigFull\" id=\"main\"\r\n *ngIf=\"fieldsInfo['AccountingMemo']?.accessWatchField\"\r\n [disabled]=\"!fieldsInfo['AccountingMemo']?.accessEditField\" [(ngModel)]=\"dataModel.accountingMemo\"\r\n name=\"dataModel.accountingMemo\">\r\n </angular-editor>\r\n </div>\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"accent\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"submit\" mat-raised-button color=\"success\" [disabled]=\"!vform.form.valid\">\r\n {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n </mat-horizontal-stepper>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>","\r\nimport { StepperSelectionEvent } from '@angular/cdk/stepper';\r\nimport { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport {\r\n AccessModel,\r\n CoreSiteModel,\r\n CoreSiteService,\r\n CoreEnumService,\r\n DataFieldInfoModel,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreSiteCategoryModel,\r\n TokenInfoModel,\r\n CoreUserModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { NodeInterface, TreeModel } from 'src/filemanager-api';\r\nimport { PoinModel } from 'src/app/core/models/pointModel';\r\nimport { Map as leafletMap } from 'leaflet';\r\nimport * as Leaflet from 'leaflet';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { Subscription } from 'rxjs';\r\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\r\nimport { MatChipInputEvent } from '@angular/material/chips';\r\n@Component({\r\n selector: 'app-core-site-edit',\r\n templateUrl: './edit.component.html',\r\n styleUrls: ['./edit.component.scss']\r\n})\r\nexport class CoreSiteEditComponent implements OnInit, OnDestroy {\r\n requestId = 0;\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n public publicHelper: PublicHelper,\r\n public coreEnumService: CoreEnumService,\r\n private coreSiteService: CoreSiteService,\r\n private cmsToastrService: CmsToastrService,\r\n private router: Router,\r\n public translate: TranslateService,\r\n private cdr: ChangeDetectorRef,\r\n private tokenHelper: TokenHelper\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.requestId = + Number(this.activatedRoute.snapshot.paramMap.get('Id'));\r\n if (this.requestId === 0 && this.tokenInfo && this.tokenInfo.siteId>0) {\r\n this.requestId = this.tokenInfo.siteId;\r\n }\r\n this.fileManagerTree = this.publicHelper.GetfileManagerTreeConfig();\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n if (this.requestId === 0 && this.tokenInfo && this.tokenInfo.siteId>0) {\r\n this.requestId = this.tokenInfo.siteId;\r\n }\r\n this.DataGetOne(this.requestId);\r\n });\r\n \r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.tokenInfo = next;\r\n if (this.requestId === 0 && this.tokenInfo && this.tokenInfo.siteId>0) {\r\n this.requestId = this.tokenInfo.siteId;\r\n }\r\n this.DataGetOne(this.requestId);\r\n });\r\n }\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n loading = new ProgressSpinnerModel();\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataAccessModel: AccessModel;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n dataModel = new CoreSiteModel();\r\n dataModelResult: ErrorExceptionResult<CoreSiteModel> = new ErrorExceptionResult<CoreSiteModel>();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n dataModelEnumSiteStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n dataModelEnumLanguageResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n selectFileTypeMainImage = ['jpg', 'jpeg', 'png'];\r\n fileManagerOpenFormAboutUsLinkImageId = false;\r\n fileManagerOpenFormLinkFavIconId = false;\r\n fileManagerOpenFormPwaIconSize190x192Id = false;\r\n fileManagerOpenFormPwaIconSize512x512Id = false;\r\n fileManagerOpenFormLinkFileIdLogo = false;\r\n fileManagerOpenFormLinkImageLogoId = false;\r\n appLanguage = 'fa';\r\n tokenInfo = new TokenInfoModel();\r\n cmsApiStoreSubscribe: Subscription;\r\n fileManagerTree: TreeModel;\r\n mapMarker: any;\r\n private mapModel: leafletMap;\r\n private mapMarkerPoints: Array<PoinModel> = [];\r\n mapOptonCenter = new PoinModel();\r\n keywordDataModel = [];\r\n ngOnInit(): void {\r\n this.getEnumRecordStatus();\r\n this.getEnumSiteStatus();\r\n this.getEnumLanguage();\r\n\r\n }\r\n ngOnDestroy() {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n getEnumSiteStatus(): void {\r\n this.coreEnumService.ServiceEnumSiteStatus().subscribe((next) => {\r\n this.dataModelEnumSiteStatusResult = next;\r\n });\r\n }\r\n getEnumLanguage(): void {\r\n this.coreEnumService.ServiceEnumLanguage().subscribe((next) => {\r\n this.dataModelEnumLanguageResult = next;\r\n });\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n this.cmsToastrService.typeErrorFormInvalid();\r\n return;\r\n }\r\n if (this.dataModel.linkCreatedBySiteId <= 0) {\r\n this.cmsToastrService.typeErrorEdit('سورس کد برنامه مشخص کنید');\r\n\r\n return;\r\n }\r\n this.dataModel.seoKeyword = '';\r\n if (this.keywordDataModel && this.keywordDataModel.length > 0) {\r\n const listKeyword = [];\r\n this.keywordDataModel.forEach(element => {\r\n if (element.display) {\r\n listKeyword.push(element.display);\r\n } else {\r\n listKeyword.push(element);\r\n }\r\n });\r\n if (listKeyword && listKeyword.length > 0) {\r\n this.dataModel.seoKeyword = listKeyword.join(',');\r\n }\r\n }\r\n this.DataEditContent();\r\n }\r\n DataGetOne(id: number): void {\r\n if(!id || id<=0)\r\n return;\r\n this.formInfo.formSubmitAllow = false;\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.get_information_from_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n /*ÙŽAccess Field*/\r\n this.coreSiteService.setAccessLoad();\r\n this.coreSiteService\r\n .ServiceGetOneById(id)\r\n .subscribe({\r\n next: (ret) => {\r\n /*ÙŽAccess Field*/\r\n this.dataAccessModel = ret.access;\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n this.dataModelResult = ret;\r\n this.formInfo.formSubmitAllow = true;\r\n if (ret.isSuccess) {\r\n this.dataModel = ret.item;\r\n const lat = this.dataModel.aboutUsGeolocationlatitude;\r\n const lon = this.dataModel.aboutUsGeolocationlongitude;\r\n if (lat > 0 && lon > 0) {\r\n this.mapMarkerPoints = [];\r\n this.mapMarkerPoints.push({ lat, lon });\r\n this.receiveMap();\r\n }\r\n this.keywordDataModel = [];\r\n if (this.dataModel.seoKeyword && this.dataModel.seoKeyword.length > 0) {\r\n this.keywordDataModel = this.dataModel.seoKeyword.split(',');\r\n }\r\n } else {\r\n this.cmsToastrService.typeErrorGetOne(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeErrorGetOne(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n DataEditContent(): void {\r\n this.formInfo.formSubmitAllow = false;\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.sending_information_to_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName, this.translate.instant('MESSAGE.sending_information_to_the_server'));\r\n this.coreSiteService\r\n .ServiceEdit(this.dataModel)\r\n .subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = !ret.isSuccess;\r\n this.dataModelResult = ret;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_completed_successfully');\r\n this.cmsToastrService.typeSuccessEdit();\r\n this.formInfo.formSubmitAllow = true;\r\n } else {\r\n this.cmsToastrService.typeErrorEdit(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.loading.Stop(pName);\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);;\r\n }\r\n }\r\n );\r\n }\r\n onStepClick(event: StepperSelectionEvent, stepper: MatStepper): void {\r\n if (event.previouslySelectedIndex < event.selectedIndex) {\r\n // if (!this.formGroup.valid) {\r\n // this.cmsToastrService.typeErrorFormInvalid();\r\n // setTimeout(() => {\r\n // stepper.selectedIndex = event.previouslySelectedIndex;\r\n // // stepper.previous();\r\n // }, 10);\r\n // }\r\n }\r\n }\r\n receiveMap(model: leafletMap = this.mapModel): void {\r\n if (!model) {\r\n return;\r\n }\r\n this.mapModel = model;\r\n if (this.mapMarkerPoints && this.mapMarkerPoints.length > 0) {\r\n this.mapMarkerPoints.forEach(item => {\r\n this.mapMarker = Leaflet.marker([item.lat, item.lon]).addTo(this.mapModel);\r\n });\r\n this.mapOptonCenter = this.mapMarkerPoints[0];\r\n this.mapMarkerPoints = [];\r\n }\r\n this.mapModel.on('click', (e) => {\r\n // @ts-ignore\r\n const lat = e.latlng.lat;\r\n // @ts-ignore\r\n const lon = e.latlng.lng;\r\n if (this.mapMarker !== undefined) {\r\n this.mapModel.removeLayer(this.mapMarker);\r\n }\r\n if (lat === this.dataModel.aboutUsGeolocationlatitude && lon === this.dataModel.aboutUsGeolocationlongitude) {\r\n this.dataModel.aboutUsGeolocationlatitude = null;\r\n this.dataModel.aboutUsGeolocationlongitude = null;\r\n return;\r\n }\r\n this.mapMarker = Leaflet.marker([lat, lon]).addTo(this.mapModel);\r\n this.dataModel.aboutUsGeolocationlatitude = lat;\r\n this.dataModel.aboutUsGeolocationlongitude = lon;\r\n });\r\n }\r\n onActionBackToParent(): void {\r\n this.router.navigate(['/core/site/']);\r\n }\r\n onActionFileSelectedAboutUsLinkImageId(model: NodeInterface): void {\r\n this.dataModel.aboutUsLinkImageId = model.id;\r\n this.dataModel.aboutUsLinkImageIdSrc = model.downloadLinksrc;\r\n }\r\n onActionFileSelectedLinkFavIconId(model: NodeInterface): void {\r\n this.dataModel.linkFavIconId = model.id;\r\n this.dataModel.linkFavIconIdSrc = model.downloadLinksrc;\r\n }\r\n onActionFileSelectedPwaIconSize190x192Id(model: NodeInterface): void {\r\n this.dataModel.pwaIconSize190x192Id = model.id;\r\n this.dataModel.pwaIconSize190x192IdSrc = model.downloadLinksrc;\r\n }\r\n onActionFileSelectedPwaIconSize512x512Id(model: NodeInterface): void {\r\n this.dataModel.linkFavIconId = model.id;\r\n this.dataModel.pwaIconSize512x512IdSrc = model.downloadLinksrc;\r\n }\r\n onActionFileSelectedLinkImageLogoId(model: NodeInterface): void {\r\n this.dataModel.linkImageLogoId = model.id;\r\n this.dataModel.linkImageLogoIdSrc = model.downloadLinksrc;\r\n }\r\n onActionSelectCategory(model: CoreSiteCategoryModel | null): void {\r\n if (!model || model.id <= 0) {\r\n const message = 'دسته بندی سایت مشخص نیست';\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.dataModel.linkSiteCategoryId = model.id;\r\n }\r\n onActionSelectorLinkResellerSiteIdSelect(model: CoreSiteModel | null): void {\r\n this.dataModel.linkResellerSiteId = null;\r\n if (!model || model.id <= 0) {\r\n return;\r\n }\r\n this.dataModel.linkResellerSiteId = model.id;\r\n }\r\n onActionSelectorLinkResellerUserIdSelect(model: CoreUserModel | null): void {\r\n this.dataModel.linkResellerUserId = null;\r\n if (!model || model.id <= 0) {\r\n return;\r\n }\r\n this.dataModel.linkResellerUserId = model.id;\r\n }\r\n /**\r\n * tag\r\n */\r\n addOnBlurTag = true;\r\n readonly separatorKeysCodes = [ENTER, COMMA] as const;\r\n addTag(event: MatChipInputEvent): void {\r\n const value = (event.value || '').trim();\r\n // Add our item\r\n if (value) {\r\n this.keywordDataModel.push( value);\r\n }\r\n // Clear the input value\r\n event.chipInput!.clear();\r\n }\r\n \r\n removeTag(item: string): void {\r\n const index = this.keywordDataModel.indexOf(item);\r\n \r\n if (index >= 0) {\r\n this.keywordDataModel.splice(index, 1);\r\n }\r\n }\r\n /**\r\n * tag\r\n */\r\n}","<mat-form-field class=\"ntk-full-width\">\r\n <span matPrefix><img *ngIf=\"dataModelSelect && dataModelSelect.linkMainImageIdSrc\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\" aria-hidden src=\"{{dataModelSelect.linkMainImageIdSrc | cmsthumbnail}}\" height=\"25\" width=\"25\" /> </span>\r\n <input type=\"text\" placeholder=\"{{optionPlaceholder}}\" aria-label=\"Assignee\" matInput [formControl]=\"formControl\" [matAutocomplete]=\"auto21\">\r\n <mat-autocomplete #auto21=\"matAutocomplete\" [displayWith]=\"displayFn\" (optionSelected)=\"onActionSelect($event.option.value)\">\r\n <mat-option *ngFor=\"let state of filteredOptions | async\" [value]=\"state\">\r\n <img *ngIf=\"state.linkMainImageIdSrc\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\" aria-hidden src=\"{{state.linkMainImageIdSrc | cmsthumbnail}}\" height=\"25\" width=\"25\" />\r\n <span>{{ displayOption(state) }}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon matSuffix *ngIf=\"dataModelSelect.id\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"onActionSelectClear()\">close</mat-icon>\r\n <ng-content></ng-content>\r\n</mat-form-field>\r\n\r\n","import { Component, OnInit, Input, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\nimport {\r\n CoreEnumService,\r\n ErrorExceptionResult,\r\n FilterDataModel,\r\n FilterModel,\r\n CoreUserModel,\r\n CoreUserService,\r\n EnumFilterDataModelSearchTypes,\r\n EnumClauseType\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { Output } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n\r\n@Component({\r\n selector: 'app-core-user-selector',\r\n templateUrl: './selector.component.html',\r\n styleUrls: ['./selector.component.scss']\r\n})\r\nexport class CoreUserSelectorComponent implements OnInit {\r\n\r\n constructor(\r\n public coreEnumService: CoreEnumService,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n public categoryService: CoreUserService) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n\r\n }\r\n dataModelResult: ErrorExceptionResult<CoreUserModel> = new ErrorExceptionResult<CoreUserModel>();\r\n dataModelSelect: CoreUserModel = new CoreUserModel();\r\n formControl = new FormControl();\r\n filteredOptions: Observable<CoreUserModel[]>;\r\n @Input() optionDisabled = false;\r\n @Input() optionSelectFirstItem = false;\r\n @Input() optionPlaceholder = '';\r\n @Output() optionChange = new EventEmitter<CoreUserModel>();\r\n @Input() optionReload = () => this.onActionReload();\r\n @Input() set optionSelectForce(x: number | CoreUserModel) {\r\n this.onActionSelectForce(x);\r\n }\r\n\r\n _loading: ProgressSpinnerModel = new ProgressSpinnerModel();\r\n get loading(): ProgressSpinnerModel {\r\n return this._loading;\r\n }\r\n @Input() set loading(value: ProgressSpinnerModel) {\r\n this._loading = value;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadOptions();\r\n }\r\n loadOptions(): void {\r\n this.filteredOptions = this.formControl.valueChanges\r\n .pipe(\r\n startWith(''),\r\n debounceTime(1000),\r\n distinctUntilChanged(),\r\n switchMap(val => {\r\n if (typeof val === 'string' || typeof val === 'number') {\r\n return this.DataGetAll(val || '');\r\n }\r\n return [];\r\n }),\r\n // tap(() => this.myControl.setValue(this.options[0]))\r\n );\r\n }\r\n\r\n displayFn(model?: CoreUserModel): string | undefined {\r\n return model ? (model.username + ' # ' + model.name + ' # ' + model.lastName) : undefined;\r\n }\r\n displayOption(model?: CoreUserModel): string | undefined {\r\n return model ? (model.username + ' # ' + model.name + ' # ' + model.lastName) : undefined;\r\n }\r\n async DataGetAll(text: string | number | any): Promise<CoreUserModel[]> {\r\n const filteModel = new FilterModel();\r\n filteModel.rowPerPage = 20;\r\n filteModel.accessLoad = true;\r\n // this.loading.backdropEnabled = false;\r\n if (text && text.length > 0) {\r\n let filter = new FilterDataModel();\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'username';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n /*Filters */\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'name';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'email';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'lastname';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n\r\n if (text && typeof +text === 'number' && +text > 0) {\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'Id';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Equal;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n\r\n }\r\n }\r\n \r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n return await this.categoryService.ServiceGetAll(filteModel)\r\n .pipe(\r\n map(response => {\r\n this.dataModelResult = response;\r\n /*select First Item */\r\n if (this.optionSelectFirstItem &&\r\n (!this.dataModelSelect || !this.dataModelSelect.id || this.dataModelSelect.id <= 0) &&\r\n this.dataModelResult.listItems.length > 0) {\r\n this.optionSelectFirstItem = false;\r\n setTimeout(() => { this.formControl.setValue(this.dataModelResult.listItems[0]); }, 1000);\r\n this.onActionSelect(this.dataModelResult.listItems[0]);\r\n }\r\n /*select First Item */\r\n this.loading.Stop(pName);\r\n\r\n return response.listItems;\r\n })\r\n ).toPromise();\r\n }\r\n onActionSelect(model: CoreUserModel): void {\r\n if (this.optionDisabled) {\r\n return;\r\n }\r\n this.dataModelSelect = model;\r\n this.optionChange.emit(this.dataModelSelect);\r\n }\r\n onActionSelectClear(): void {\r\n if (this.optionDisabled) {\r\n return;\r\n }\r\n this.formControl.setValue(null);\r\n this.optionChange.emit(null);\r\n }\r\n\r\n push(newvalue: CoreUserModel): Observable<CoreUserModel[]> {\r\n return this.filteredOptions.pipe(map(items => {\r\n if (items.find(x => x.id === newvalue.id)) {\r\n return items;\r\n }\r\n items.push(newvalue);\r\n return items;\r\n }));\r\n\r\n }\r\n onActionSelectForce(id: number | CoreUserModel): void {\r\n if (typeof id === 'number' && id > 0) {\r\n if (this.dataModelSelect && this.dataModelSelect.id === id) {\r\n return;\r\n }\r\n if (this.dataModelResult && this.dataModelResult.listItems && this.dataModelResult.listItems.find(x => x.id === id)) {\r\n const item = this.dataModelResult.listItems.find(x => x.id === id);\r\n this.dataModelSelect = item;\r\n this.formControl.setValue(item);\r\n return;\r\n }\r\n this.categoryService.ServiceGetOneById(id).subscribe((next) => {\r\n if (next.isSuccess) {\r\n this.filteredOptions = this.push(next.item);\r\n this.dataModelSelect = next.item;\r\n this.formControl.setValue(next.item);\r\n this.optionChange.emit(next.item);\r\n }\r\n });\r\n return;\r\n }\r\n if (typeof id === typeof CoreUserModel) {\r\n this.filteredOptions = this.push((id as CoreUserModel));\r\n this.dataModelSelect = (id as CoreUserModel);\r\n this.formControl.setValue(id);\r\n return;\r\n }\r\n this.formControl.setValue(null);\r\n }\r\n\r\n onActionReload(): void {\r\n // if (this.dataModelSelect && this.dataModelSelect.id > 0) {\r\n // this.onActionSelect(null);\r\n // }\r\n this.dataModelSelect = new CoreUserModel();\r\n // this.optionsData.Select = new CoreUserModel();\r\n this.loadOptions();\r\n }\r\n}\r\n","<mat-form-field class=\"ntk-full-width\">\r\n <input type=\"text\" placeholder=\"{{optionPlaceholder}}\" [attr.disabled]=\"optionDisabled? true : null\" aria-label=\"Assignee\" matInput [formControl]=\"formControl\" [matAutocomplete]=\"auto22\">\r\n <mat-autocomplete #auto22=\"matAutocomplete\" [displayWith]=\"displayFn\" (optionSelected)=\"onActionSelect($event.option.value)\">\r\n <mat-option *ngFor=\"let state of filteredOptions | async\" [value]=\"state\" [disabled]=\"optionDisabled\">\r\n <span>{{ displayOption(state) }}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon matSuffix *ngIf=\"dataModelSelect.id\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"onActionSelectClear()\">close</mat-icon>\r\n <ng-content></ng-content>\r\n</mat-form-field>\r\n\r\n","\r\nimport { Component, OnInit, Input, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\nimport {\r\n CoreEnumService,\r\n ErrorExceptionResult,\r\n FilterDataModel,\r\n FilterModel,\r\n CoreUserGroupModel,\r\n CoreUserGroupService,\r\n EnumFilterDataModelSearchTypes,\r\n EnumClauseType\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { Output } from '@angular/core';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-core-usercategory-selector',\r\n templateUrl: './selector.component.html',\r\n styleUrls: ['./selector.component.scss']\r\n})\r\nexport class CoreUserGroupSelectorComponent implements OnInit {\r\n\r\n constructor(\r\n public coreEnumService: CoreEnumService,\r\n private cmsToastrService: CmsToastrService,\r\n private cdr: ChangeDetectorRef,\r\n public categoryService: CoreUserGroupService) {\r\n }\r\n dataModelResult: ErrorExceptionResult<CoreUserGroupModel> = new ErrorExceptionResult<CoreUserGroupModel>();\r\n dataModelSelect: CoreUserGroupModel = new CoreUserGroupModel();\r\n formControl = new FormControl();\r\n filteredOptions: Observable<CoreUserGroupModel[]>;\r\n @Input() optionDisabled = false;\r\n @Input() optionSelectFirstItem = false;\r\n @Input() optionPlaceholder = '';\r\n @Output() optionChange = new EventEmitter<CoreUserGroupModel>();\r\n @Input() optionReload = () => this.onActionReload();\r\n @Input() set optionSelectForce(x: number | CoreUserGroupModel) {\r\n this.onActionSelectForce(x);\r\n }\r\n\r\n _loading: ProgressSpinnerModel = new ProgressSpinnerModel();\r\n get loading(): ProgressSpinnerModel {\r\n return this._loading;\r\n }\r\n @Input() set loading(value: ProgressSpinnerModel) {\r\n this._loading = value;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadOptions();\r\n }\r\n loadOptions(): void {\r\n this.filteredOptions = this.formControl.valueChanges\r\n .pipe(\r\n startWith(''),\r\n debounceTime(1000),\r\n distinctUntilChanged(),\r\n switchMap(val => {\r\n if (typeof val === 'string' || typeof val === 'number') {\r\n return this.DataGetAll(val || '');\r\n }\r\n return [];\r\n }),\r\n // tap(() => this.myControl.setValue(this.options[0]))\r\n );\r\n }\r\n\r\n displayFn(model?: CoreUserGroupModel): string | undefined {\r\n return model ? (model.titleML) : undefined;\r\n }\r\n displayOption(model?: CoreUserGroupModel): string | undefined {\r\n return model ? (model.titleML) : undefined;\r\n }\r\n async DataGetAll(text: string | number | any): Promise<CoreUserGroupModel[]> {\r\n const filteModel = new FilterModel();\r\n filteModel.rowPerPage = 20;\r\n filteModel.accessLoad = true;\r\n // this.loading.backdropEnabled = false;\r\n let filter = new FilterDataModel();\r\n filter.propertyName = 'Title';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n if (text && typeof +text === 'number' && +text > 0) {\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'Id';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Equal;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n }\r\n\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n return await this.categoryService.ServiceGetAll(filteModel)\r\n .pipe(\r\n map(response => {\r\n this.dataModelResult = response;\r\n /*select First Item */\r\n if (this.optionSelectFirstItem &&\r\n (!this.dataModelSelect || !this.dataModelSelect.id || this.dataModelSelect.id <= 0) &&\r\n this.dataModelResult.listItems.length > 0) {\r\n this.optionSelectFirstItem = false;\r\n setTimeout(() => { this.formControl.setValue(this.dataModelResult.listItems[0]); }, 1000);\r\n this.onActionSelect(this.dataModelResult.listItems[0]);\r\n }\r\n /*select First Item */\r\n this.loading.Stop(pName);\r\n\r\n return response.listItems;\r\n })\r\n ).toPromise();\r\n }\r\n onActionSelect(model: CoreUserGroupModel): void {\r\n this.dataModelSelect = model;\r\n this.optionChange.emit(this.dataModelSelect);\r\n }\r\n onActionSelectClear(): void {\r\n this.formControl.setValue(null);\r\n this.optionChange.emit(null);\r\n }\r\n\r\n push(newvalue: CoreUserGroupModel): Observable<CoreUserGroupModel[]> {\r\n return this.filteredOptions.pipe(map(items => {\r\n if (items.find(x => x.id === newvalue.id)) {\r\n return items;\r\n }\r\n items.push(newvalue);\r\n return items;\r\n }));\r\n\r\n }\r\n onActionSelectForce(id: number | CoreUserGroupModel): void {\r\n if (typeof id === 'number' && id > 0) {\r\n if (this.dataModelSelect && this.dataModelSelect.id === id) {\r\n return;\r\n }\r\n if (this.dataModelResult && this.dataModelResult.listItems && this.dataModelResult.listItems.find(x => x.id === id)) {\r\n const item = this.dataModelResult.listItems.find(x => x.id === id);\r\n this.dataModelSelect = item;\r\n this.formControl.setValue(item);\r\n return;\r\n }\r\n this.categoryService.ServiceGetOneById(id).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.filteredOptions = this.push(ret.item);\r\n this.dataModelSelect = ret.item;\r\n this.formControl.setValue(ret.item);\r\n this.optionChange.emit(ret.item);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n }\r\n });\r\n return;\r\n }\r\n if (typeof id === typeof CoreUserGroupModel) {\r\n this.filteredOptions = this.push((id as CoreUserGroupModel));\r\n this.dataModelSelect = (id as CoreUserGroupModel);\r\n this.formControl.setValue(id);\r\n return;\r\n }\r\n this.formControl.setValue(null);\r\n }\r\n\r\n onActionReload(): void {\r\n this.dataModelSelect = new CoreUserGroupModel();\r\n this.loadOptions();\r\n }\r\n}\r\n","<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"{{fieldsInfo['RecordStatus']?.fieldTitle}}\" [(ngModel)]=\"dataModel.recordStatus\"\r\n name=\"dataModel.recordStatus\" #RecordStatus=\"ngModel\" panelClass=\"recordStatus-{{ dataModel.recordStatus }}\"\r\n required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumRecordStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">{{'TITLE.SELECT_STATUS' | translate}}</mat-hint>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n RecordStatus is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <!-- LinkCmsSiteId Field -->\r\n <app-core-site-selector (optionChange)=\"onActionSelectorSiteSelect($event)\" [optionDisabled]=\"false\"\r\n [(loading)]=\"loading\" [optionSelectForce]=\"dataModel.linkSiteId\"\r\n [optionPlaceholder]=\"'وب سایت'\"></app-core-site-selector>\r\n <!-- LinkuserId Field -->\r\n <app-core-user-selector (optionChange)=\"onActionSelectorUserSelect($event)\" [optionDisabled]=\"false\"\r\n [(loading)]=\"loading\" [optionSelectForce]=\"dataModel.linkUserId\" [optionPlaceholder]=\"'کاربر'\">\r\n </app-core-user-selector>\r\n <!-- LinkUserGroupId Field -->\r\n <app-core-usercategory-selector (optionChange)=\"onActionSelectorUserGroupSelect($event)\" [optionDisabled]=\"false\"\r\n [(loading)]=\"loading\" [optionSelectForce]=\"dataModel.linkUserGroupId\" [optionPlaceholder]=\"'نوع Øساب'\">\r\n </app-core-usercategory-selector>\r\n\r\n\r\n <!-- ExpireDate Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['ExpireDate']?.accessWatchField\">\r\n <mat-label>{{fieldsInfo['ExpireDate']?.fieldTitle}}</mat-label>\r\n <input matInput [matDatepicker]=\"ExpireDate\" [(ngModel)]=\"dataModel.expireDate\" name=\"dataModel.expireDate\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.expireDate && fieldsInfo['ExpireDate']?.accessAddField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.expireDate = null\">close</mat-icon>\r\n <mat-datepicker-toggle matSuffix [for]=\"ExpireDate\"></mat-datepicker-toggle>\r\n <mat-datepicker touchUi #ExpireDate></mat-datepicker>\r\n </mat-form-field>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n <button type=\"submit\" (click)=\"onFormSubmit()\" class=\"btn btn-success\" [disabled]=\"!vform.form.valid\">\r\n <i class=\"fa fa-check-square-o\"></i> {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n\r\n</form>","\r\nimport {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreSiteModel,\r\n CoreSiteUserModel,\r\n CoreSiteUserService,\r\n AccessModel,\r\n DataFieldInfoModel,\r\n CoreUserModel,\r\n CoreUserGroupModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n Inject,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-core-site-user-add',\r\n templateUrl: './userAdd.component.html',\r\n styleUrls: ['./userAdd.component.scss'],\r\n})\r\nexport class CoreSiteUserAddComponent implements OnInit {\r\n requestLinkSiteId = 0;\r\n requestLinkUserId = 0;\r\n requestLinkUserGroupId = 0;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreSiteUserAddComponent>,\r\n public coreEnumService: CoreEnumService,\r\n public coreSiteService: CoreSiteUserService,\r\n private cmsToastrService: CmsToastrService,\r\n private publicHelper: PublicHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n if (data) {\r\n this.requestLinkUserId = +data.linkUserId || 0;\r\n this.requestLinkSiteId = +data.linkSiteId || 0;\r\n this.requestLinkUserGroupId = +data.linkUserGroupId || 0;\r\n }\r\n if (this.requestLinkSiteId > 0) {\r\n this.dataModel.linkSiteId = this.requestLinkSiteId;\r\n }\r\n if (this.requestLinkUserId > 0) {\r\n this.dataModel.linkUserId = this.requestLinkUserId;\r\n }\r\n if (this.requestLinkUserGroupId > 0) {\r\n this.dataModel.linkUserGroupId = this.requestLinkUserGroupId;\r\n }\r\n }\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n\r\n dataAccessModel: AccessModel;\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreSiteUserModel> = new ErrorExceptionResult<CoreSiteUserModel>();\r\n dataModel: CoreSiteUserModel = new CoreSiteUserModel();\r\n\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n\r\n fileManagerOpenForm = false;\r\n\r\n\r\n ngOnInit(): void {\r\n this.getEnumRecordStatus();\r\n this.DataGetAccess();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n\r\n DataGetAccess(): void {\r\n this.coreSiteService\r\n .ServiceViewModel()\r\n .subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.dataAccessModel = ret.access;\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n } else {\r\n this.cmsToastrService.typeErrorGetAccess(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeErrorGetAccess(er);\r\n }\r\n }\r\n );\r\n }\r\n\r\n DataAddContent(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.sending_information_to_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreSiteService.ServiceAdd(this.dataModel).subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.dataModelResult = ret;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_completed_successfully');\r\n this.cmsToastrService.typeSuccessAdd();\r\n this.dialogRef.close({ dialogChangedDate: true });\r\n\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n return;\r\n }\r\n this.formInfo.formSubmitAllow = false;\r\n this.DataAddContent();\r\n }\r\n\r\n onActionSelectorSiteSelect(model: CoreSiteModel): void {\r\n this.dataModel.linkSiteId = null;\r\n if (model && model.id > 0) {\r\n this.dataModel.linkSiteId = model.id;\r\n }\r\n }\r\n onActionSelectorUserSelect(model: CoreUserModel): void {\r\n this.dataModel.linkUserId = null;\r\n if (model && model.id > 0) {\r\n this.dataModel.linkUserId = model.id;\r\n }\r\n }\r\n onActionSelectorUserGroupSelect(model: CoreUserGroupModel): void {\r\n this.dataModel.linkUserGroupId = null;\r\n if (model && model.id > 0) {\r\n this.dataModel.linkUserGroupId = model.id;\r\n }\r\n }\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n}\r\n","<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n\r\n\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"{{fieldsInfo['RecordStatus']?.fieldTitle}}\" [(ngModel)]=\"dataModel.recordStatus\"\r\n name=\"dataModel.recordStatus\" #RecordStatus=\"ngModel\" panelClass=\"recordStatus-{{ dataModel.recordStatus }}\"\r\n required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumRecordStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">{{'TITLE.SELECT_STATUS' | translate}}</mat-hint>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n RecordStatus is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- LinkCmsSiteId Field -->\r\n <app-core-site-selector (optionChange)=\"onActionSelectorSiteSelect($event)\" [optionDisabled]=\"false\"\r\n [(loading)]=\"loading\" [optionSelectForce]=\"dataModel.linkSiteId\"\r\n [optionPlaceholder]=\"'وب سایت'\"></app-core-site-selector>\r\n <!-- LinkuserId Field -->\r\n <app-core-user-selector (optionChange)=\"onActionSelectorUserSelect($event)\" [optionDisabled]=\"false\"\r\n [(loading)]=\"loading\" [optionSelectForce]=\"dataModel.linkUserId\" [optionPlaceholder]=\"'کاربر'\">\r\n </app-core-user-selector>\r\n <!-- LinkUserGroupId Field -->\r\n <app-core-usercategory-selector (optionChange)=\"onActionSelectorUserGroupSelect($event)\" [optionDisabled]=\"false\"\r\n [(loading)]=\"loading\" [optionSelectForce]=\"dataModel.linkUserGroupId\" [optionPlaceholder]=\"'نوع Øساب'\">\r\n </app-core-usercategory-selector>\r\n\r\n <!-- ExpireDate Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['ExpireDate']?.accessWatchField\">\r\n <mat-label>{{fieldsInfo['ExpireDate']?.fieldTitle}}</mat-label>\r\n <input matInput [matDatepicker]=\"ExpireDate\" [(ngModel)]=\"dataModel.expireDate\" name=\"dataModel.expireDate\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.expireDate && fieldsInfo['ExpireDate']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.expireDate = null\">close</mat-icon>\r\n <mat-datepicker-toggle matSuffix [for]=\"ExpireDate\"></mat-datepicker-toggle>\r\n <mat-datepicker touchUi #ExpireDate></mat-datepicker>\r\n </mat-form-field>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n <button type=\"submit\" (click)=\"onFormSubmit()\" class=\"btn btn-success\" [disabled]=\"!vform.form.valid\">\r\n <i class=\"fa fa-check-square-o\"></i> {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>","\r\nimport {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreSiteModel,\r\n FilterModel,\r\n FilterDataModel,\r\n CoreSiteUserService,\r\n CoreSiteUserModel,\r\n AccessModel,\r\n DataFieldInfoModel,\r\n CoreUserModel,\r\n CoreUserGroupModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n Inject,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-core-site-user-edit',\r\n templateUrl: './userEdit.component.html',\r\n styleUrls: ['./userEdit.component.scss'],\r\n})\r\nexport class CoreSiteUserEditComponent implements OnInit {\r\n requestLinkSiteId = 0;\r\n requestLinkUserId = 0;\r\n requestLinkUserGroupId = 0;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreSiteUserEditComponent>,\r\n public coreEnumService: CoreEnumService,\r\n public coreSiteUserService: CoreSiteUserService,\r\n private cmsToastrService: CmsToastrService,\r\n private publicHelper: PublicHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n if (data) {\r\n this.requestLinkUserId = +data.linkUserId || 0;\r\n this.requestLinkSiteId = +data.linkSiteId || 0;\r\n this.requestLinkUserGroupId = +data.linkUserGroupId || 0;\r\n }\r\n }\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreSiteUserModel> = new ErrorExceptionResult<CoreSiteUserModel>();\r\n dataModel: CoreSiteUserModel = new CoreSiteUserModel();\r\n\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n\r\n fileManagerOpenForm = false;\r\n\r\n dataAccessModel: AccessModel;\r\n\r\n ngOnInit(): void {\r\n if (this.requestLinkUserId <= 0 || this.requestLinkSiteId <= 0) {\r\n this.cmsToastrService.typeErrorComponentAction();\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n return;\r\n }\r\n this.getEnumRecordStatus();\r\n this.DataGetOneContent();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n\r\n DataGetOneContent(): void {\r\n\r\n\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.Receiving_Information_From_The_Server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n\r\n const filteModelContent = new FilterModel();\r\n /*make filter*/\r\n let filter = new FilterDataModel();\r\n filter.propertyName = 'LinkUserId';\r\n filter.value = this.requestLinkUserId;\r\n filteModelContent.filters.push(filter);\r\n /*make filter*/\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'LinkSiteId';\r\n filter.value = this.requestLinkSiteId;\r\n filteModelContent.filters.push(filter);\r\n\r\n filteModelContent.accessLoad = true;\r\n\r\n this.coreSiteUserService.ServiceGetAll(filteModelContent).subscribe({\r\n next: (ret) => {\r\n /*ÙŽAccess Field*/\r\n this.dataAccessModel = ret.access;\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n\r\n this.dataModel = ret.item;\r\n if (ret.isSuccess) {\r\n if (ret.listItems && ret.listItems.length > 0) {\r\n this.dataModel = ret.listItems[0];\r\n this.formInfo.formTitle = this.formInfo.formTitle;\r\n this.formInfo.formAlert = '';\r\n }\r\n else {\r\n this.cmsToastrService.typeError('ماژول جهت ویرایش یاÙت نشد');\r\n\r\n }\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n DataEditContent(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.sending_information_to_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreSiteUserService.ServiceEdit(this.dataModel).subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.dataModelResult = ret;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_completed_successfully');\r\n this.cmsToastrService.typeSuccessEdit();\r\n this.dialogRef.close({ dialogChangedDate: true });\r\n\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n onActionSelectorSiteSelect(model: CoreSiteModel): void {\r\n this.dataModel.linkSiteId = null;\r\n if (model && model.id > 0) {\r\n this.dataModel.linkSiteId = model.id;\r\n }\r\n }\r\n onActionSelectorUserSelect(model: CoreUserModel): void {\r\n this.dataModel.linkUserId = null;\r\n if (model && model.id > 0) {\r\n this.dataModel.linkUserId = model.id;\r\n }\r\n }\r\n onActionSelectorUserGroupSelect(model: CoreUserGroupModel): void {\r\n this.dataModel.linkUserGroupId = null;\r\n if (model && model.id > 0) {\r\n this.dataModel.linkUserGroupId = model.id;\r\n }\r\n }\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n return;\r\n }\r\n this.formInfo.formSubmitAllow = false;\r\n this.DataEditContent();\r\n }\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n}\r\n","<app-cms-guide-notice [Key]=\"'core.site.userlist'\" [svg]=\"'assets/media/svg/icons/General/Notifications1.svg'\">\r\n</app-cms-guide-notice>\r\n<app-cms-html-list [optionLoading]=\"loading\" [optionTreeDisplay]=\"false\">\r\n <ng-container cms-tree>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n --------------------------------------\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n </ng-container>\r\n <ng-container cms-header>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </ng-container>\r\n <ng-container cms-action>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n <button *ngIf=\"dataModelResult.access.accessAddRow \" (click)=\"onActionbuttonNewRow()\" type=\"button\"\r\n class=\"btn btn-outline-primary\" id=\"openModalButton\" data-toggle=\"modal\"\r\n data-target=\"#categoryModal\">{{'ACTION.ADD' |\r\n translate}}</button>\r\n <button *ngIf=\"dataModelResult.access.accessEditRow && tableRowSelected.linkSiteId>0\"\r\n (click)=\"onActionbuttonEditRow()\" type=\"button\" class=\"btn btn-outline-warning\" data-toggle=\"modal\"\r\n data-target=\"#categoryModal\">{{'ACTION.EDIT' | translate}}</button>\r\n <button *ngIf=\"dataModelResult.access.accessDeleteRow && tableRowSelected.linkSiteId>0\"\r\n (click)=\"onActionbuttonDeleteRow()\" type=\"button\" class=\"btn btn-outline-danger\">{{'ACTION.DELETE' |\r\n translate}}</button>\r\n\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle [(ngModel)]=\"optionsSearch.data.show\">{{'ACTION.SEARCH' | translate}}</mat-slide-toggle>\r\n </a>\r\n\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle (click)=\"onActionbuttonStatist()\">{{'ACTION.STATIST' | translate}}\r\n </mat-slide-toggle>\r\n </a>\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle (click)=\"onActionbuttonExport()\">{{'ACTION.EXPORTFILE' | translate}}\r\n </mat-slide-toggle>\r\n </a>\r\n <button (click)=\"onActionbuttonReload()\" type=\"button\" class=\"btn btn-outline-secondary BTN\">\r\n <mat-icon style=\"font-size: 20px;margin: -1px;\" title=\"{{'ACTION.RELOAD' | translate}}\">refresh</mat-icon>\r\n </button>\r\n <button (click)=\"onActionBackToParentSiteList()\" *ngIf=\"this.requestLinkSiteId>0\" type=\"button\"\r\n class=\"btn btn-outline-success BTN\">{{'ACTION.BACK' | translate}}</button>\r\n <button (click)=\"onActionBackToParentUserList()\" *ngIf=\"this.requestLinkUserId>0\" type=\"button\"\r\n class=\"btn btn-outline-success BTN\">{{'ACTION.BACK' | translate}}</button>\r\n <button (click)=\"onActionBackToParentUserGroupList()\" *ngIf=\"this.requestLinkUserGroupId>0\" type=\"button\"\r\n class=\"btn btn-outline-success BTN\">{{'ACTION.BACK' | translate}}</button>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n </ng-container>\r\n <ng-container cms-action-area>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n <app-cms-search-list [(options)]=\"optionsSearch\"></app-cms-search-list>\r\n <app-cms-export-list [(options)]=\"optionsExport\"></app-cms-export-list>\r\n <app-cms-statist-list [(options)]=\"optionsStatist\"></app-cms-statist-list>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n </ng-container>\r\n <ng-container cms-body>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-table [dataSource]=\"tableSource\" matSort #tableSort=\"matSort\" (matSortChange)=\"onTableSortData(tableSort)\">\r\n <!-- LinkSiteId Column -->\r\n <ng-container matColumnDef=\"LinkSiteId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['LinkSiteId']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.linkSiteId}} </mat-cell>\r\n </ng-container>\r\n <!-- LinkUserId Column -->\r\n <ng-container matColumnDef=\"LinkUserId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['LinkUserId']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.linkUserId}} </mat-cell>\r\n </ng-container>\r\n <!-- LinkUserGroupId Column -->\r\n <ng-container matColumnDef=\"LinkUserGroupId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['LinkUserGroupId']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.linkUserGroupId}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- RecordStatus Column -->\r\n <ng-container matColumnDef=\"RecordStatus\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['RecordStatus']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> <i [ngClass]=\"row.recordStatus|statusClass\"></i>\r\n <select matNativeControl cmsRecordStatusSelfSave [contentService]=\"contentService\" [row]=\"row\"\r\n [ngStyle]=\"{'display': row.id === tableRowSelected.id ? '' : 'none' }\">\r\n </select>\r\n </mat-cell>\r\n </ng-container>\r\n <!-- Username Column -->\r\n <ng-container matColumnDef=\"virtual_CmsUser.username\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> نام کاربری </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.virtual_CmsUser.username}} </mat-cell>\r\n </ng-container>\r\n <!-- Mobile Column -->\r\n <ng-container matColumnDef=\"virtual_CmsUser.mobile\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> Mobile </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.virtual_CmsUser.mobile}} </mat-cell>\r\n </ng-container>\r\n <!-- Email Column -->\r\n <ng-container matColumnDef=\"virtual_CmsUser.email\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> Email </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.virtual_CmsUser.email}} </mat-cell>\r\n </ng-container>\r\n <!-- Name Column -->\r\n <ng-container matColumnDef=\"virtual_CmsUser.name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> Name </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.virtual_CmsUser.name}} </mat-cell>\r\n </ng-container>\r\n <!-- LastName Column -->\r\n <ng-container matColumnDef=\"virtual_CmsUser.lastName\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> LastName </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.virtual_CmsUser.lastName}} </mat-cell>\r\n </ng-container>\r\n <!-- CompanyName Column -->\r\n <ng-container matColumnDef=\"virtual_CmsUser.CompanyName\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> Company Name </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.virtual_CmsUser.CompanyName}} </mat-cell>\r\n </ng-container>\r\n <!-- CompanyName Column -->\r\n <ng-container matColumnDef=\"virtual_CmsUserGroup.title\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> Group Title </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.virtual_CmsUserGroup.title}} </mat-cell>\r\n </ng-container>\r\n <!-- CompanyName Column -->\r\n <ng-container matColumnDef=\"virtual_CmsSite.title\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> Site Title </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.virtual_CmsSite.title}} </mat-cell>\r\n </ng-container>\r\n <!-- CompanyName Column -->\r\n <ng-container matColumnDef=\"virtual_CmsSite.domain\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> Site Domain </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.virtual_CmsSite.domain}} </mat-cell>\r\n </ng-container>\r\n <!-- CompanyName Column -->\r\n <ng-container matColumnDef=\"virtual_CmsSite.subDomain\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> Site SubDomain </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.virtual_CmsSite.subDomain}} </mat-cell>\r\n </ng-container>\r\n <!-- CreatedDate Column -->\r\n <ng-container matColumnDef=\"CreatedDate\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['CreatedDate']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{ publicHelper.LocaleDate(row.createdDate) }} </mat-cell>\r\n </ng-container>\r\n <!-- UpdatedDate Column -->\r\n <ng-container matColumnDef=\"UpdatedDate\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['UpdatedDate']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{ publicHelper.LocaleDate(row.updatedDate) }} </mat-cell>\r\n </ng-container>\r\n <!-- Action Column -->\r\n <ng-container matColumnDef=\"Action\">\r\n <mat-header-cell *matHeaderCellDef> {{'TITLE.OPTION' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=' Action'>\r\n <!-- Action Menu -->\r\n <button mat-icon-button [matMenuTriggerFor]=\"actionMenu\" aria-label=\"Action Menu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #actionMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"onActionbuttonEditRow(row)\" *ngIf=\"dataModelResult.access.accessEditRow\">\r\n <mat-icon>mode_edit</mat-icon>\r\n <span>{{'ACTION.EDIT' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonDeleteRow(row)\" *ngIf=\"dataModelResult.access.accessDeleteRow\">\r\n <mat-icon>delete_forever</mat-icon>\r\n <span>{{'ACTION.DELETE' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonSiteList(row)\">\r\n <mat-icon>web</mat-icon>\r\n <span>{{'ACTION.MEMBER_SITES' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonEditSiteRow(row)\">\r\n <mat-icon>language</mat-icon>\r\n <span> {{'ACTION.EDIT_SITES' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonEditUserRow(row)\">\r\n <mat-icon>person_search</mat-icon>\r\n <span>{{'ACTION.USER_EDITING' | translate}}</span>\r\n </button>\r\n <button mat-menu-item *ngIf=\"tokenInfo.userAccessAdminAllowToProfessionalData\"\r\n (click)=\"onActionbuttonLoginToRow(row)\">\r\n <mat-icon>login</mat-icon>\r\n <span>ورود به این کاربر</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonResllerUser(row)\"\r\n *ngIf=\"tokenInfo.userAccessAdminAllowToAllData || tokenInfo.siteId==row.id\">\r\n <mat-icon>devices</mat-icon>\r\n <span> زیرمجموع بازاریابی کاربر</span>\r\n </button>\r\n\r\n <button mat-menu-item (click)=\"onActionbuttonResllerSite(row)\"\r\n *ngIf=\"tokenInfo.userAccessAdminAllowToAllData || tokenInfo.siteId==row.id\">\r\n <mat-icon>devices</mat-icon>\r\n <span> زیرمجموع بازاریابی سایت</span>\r\n </button>\r\n </mat-menu>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"tabledisplayedColumns\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns: tabledisplayedColumns;\" (click)=\"onActionTableRowSelect(row)\"\r\n [ngStyle]=\"{'background':( row.linkSiteId === tableRowSelected.linkSiteId && row.linkUserId===tableRowSelected.linkUserId )? '#d3d3da' :'' }\">\r\n\r\n </mat-row>\r\n </mat-table>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </ng-container>\r\n <ng-container cms-footer>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n\r\n <mat-paginator #paginator [length]=\"(dataModelResult.totalRowCount)\"\r\n [pageIndex]=\"(dataModelResult.currentPageNumber-1)\" [pageSize]=\"dataModelResult.rowPerPage\"\r\n [pageSizeOptions]=\"[5, 10, 20, 100]\" (page)=\"onTablePageingData($event)\"></mat-paginator>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </ng-container>\r\n</app-cms-html-list>","\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport {\r\n CoreUserModel,\r\n EnumSortType,\r\n ErrorExceptionResult,\r\n FilterModel,\r\n TokenInfoModel,\r\n FilterDataModel,\r\n EnumRecordStatus,\r\n CoreSiteUserService,\r\n CoreSiteUserModel,\r\n DataFieldInfoModel,\r\n AuthRenewTokenModel,\r\n CoreAuthService\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { ComponentOptionSearchModel } from 'src/app/core/cmsComponentModels/base/componentOptionSearchModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ComponentOptionExportModel } from 'src/app/core/cmsComponentModels/base/componentOptionExportModel';\r\nimport { ComponentOptionStatistModel } from 'src/app/core/cmsComponentModels/base/componentOptionStatistModel';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { Subscription } from 'rxjs';\r\nimport { CmsConfirmationDialogService } from 'src/app/shared/cms-confirmation-dialog/cmsConfirmationDialog.service';\r\nimport { CoreSiteUserAddComponent } from '../userAdd/userAdd.component';\r\nimport { CoreSiteUserEditComponent } from '../userEdit/userEdit.component';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n@Component({\r\n selector: 'app-core-site-user-list',\r\n templateUrl: './userList.component.html',\r\n})\r\nexport class CoreSiteUserListComponent implements OnInit, OnDestroy {\r\n requestLinkSiteId = 0;\r\n requestLinkUserId = 0;\r\n requestLinkUserGroupId = 0;\r\n constructor(\r\n public contentService: CoreSiteUserService,\r\n private cmsConfirmationDialogService: CmsConfirmationDialogService,\r\n public publicHelper: PublicHelper,\r\n private cmsToastrService: CmsToastrService,\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n private tokenHelper: TokenHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n private coreAuthService: CoreAuthService,\r\n public dialog: MatDialog) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.requestLinkSiteId = + Number(this.activatedRoute.snapshot.paramMap.get('LinkSiteId'));\r\n this.requestLinkUserId = + Number(this.activatedRoute.snapshot.paramMap.get('LinkUserId'));\r\n this.requestLinkUserGroupId = + Number(this.activatedRoute.snapshot.paramMap.get('LinkUserGroupId'));\r\n\r\n this.optionsSearch.parentMethods = {\r\n onSubmit: (model) => this.onSubmitOptionsSearch(model),\r\n };\r\n this.optionsExport.parentMethods = {\r\n onSubmit: (model) => this.onSubmitOptionExport(model),\r\n };\r\n /*filter Sort*/\r\n this.filteModelContent.sortColumn = 'Id';\r\n this.filteModelContent.sortType = EnumSortType.Descending;\r\n\r\n if (this.requestLinkSiteId > 0) {\r\n const filter = new FilterDataModel();\r\n filter.propertyName = 'LinkSiteId';\r\n filter.value = this.requestLinkSiteId;\r\n this.filteModelContent.filters.push(filter);\r\n }\r\n if (this.requestLinkUserId > 0) {\r\n const filter = new FilterDataModel();\r\n filter.propertyName = 'LinkUserId';\r\n filter.value = this.requestLinkUserId;\r\n this.filteModelContent.filters.push(filter);\r\n }\r\n if (this.requestLinkUserGroupId > 0) {\r\n const filter = new FilterDataModel();\r\n filter.propertyName = 'LinkUserGroupId';\r\n filter.value = this.requestLinkUserGroupId;\r\n this.filteModelContent.filters.push(filter);\r\n }\r\n }\r\n comment: string;\r\n author: string;\r\n dataSource: any;\r\n flag = false;\r\n tableContentSelected = [];\r\n\r\n filteModelContent = new FilterModel();\r\n dataModelResult: ErrorExceptionResult<CoreSiteUserModel> = new ErrorExceptionResult<CoreSiteUserModel>();\r\n optionsSearch: ComponentOptionSearchModel = new ComponentOptionSearchModel();\r\n optionsStatist: ComponentOptionStatistModel = new ComponentOptionStatistModel();\r\n optionsExport: ComponentOptionExportModel = new ComponentOptionExportModel();\r\n tokenInfo = new TokenInfoModel();\r\n loading = new ProgressSpinnerModel();\r\n tableRowsSelected: Array<CoreSiteUserModel> = [];\r\n tableRowSelected: CoreSiteUserModel = new CoreSiteUserModel();\r\n tableSource: MatTableDataSource<CoreSiteUserModel> = new MatTableDataSource<CoreSiteUserModel>();\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n\r\n tabledisplayedColumns: string[] = [\r\n 'LinkSiteId',\r\n 'LinkUserId',\r\n 'LinkUserGroupId',\r\n 'RecordStatus',\r\n 'virtual_CmsUser.username',\r\n 'virtual_CmsUser.mobile',\r\n 'virtual_CmsUser.email',\r\n 'virtual_CmsUser.name',\r\n 'virtual_CmsUser.lastName',\r\n 'virtual_CmsUser.CompanyName',\r\n 'virtual_CmsUserGroup.title',\r\n 'virtual_CmsSite.title',\r\n 'virtual_CmsSite.domain',\r\n 'virtual_CmsSite.subDomain',\r\n 'Action'\r\n ];\r\n\r\n\r\n\r\n expandedElement: CoreUserModel | null;\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n ngOnInit(): void {\r\n this.filteModelContent.sortColumn = 'Title';\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n this.DataGetAll();\r\n });\r\n\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.tokenInfo = next;\r\n this.DataGetAll();\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n DataGetAll(): void {\r\n this.tableRowsSelected = [];\r\n this.tableRowSelected = new CoreSiteUserModel();\r\n\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n\r\n this.filteModelContent.accessLoad = true;\r\n /*filter CLone*/\r\n const filterModel = JSON.parse(JSON.stringify(this.filteModelContent));\r\n /*filter CLone*/\r\n this.contentService.ServiceGetAll(filterModel).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n this.dataModelResult = ret;\r\n this.tableSource.data = ret.listItems;\r\n if (this.tokenInfo.userAccessAdminAllowToAllData || this.tokenInfo.userAccessAdminAllowToProfessionalData) {\r\n this.tabledisplayedColumns = this.publicHelper.listAddIfNotExist(\r\n this.tabledisplayedColumns,\r\n 'LinkSiteId',\r\n 0\r\n );\r\n } else {\r\n this.tabledisplayedColumns = this.publicHelper.listRemoveIfExist(\r\n this.tabledisplayedColumns,\r\n 'LinkSiteId'\r\n );\r\n }\r\n\r\n if (this.optionsSearch.childMethods) {\r\n this.optionsSearch.childMethods.setAccess(ret.access);\r\n }\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n onTableSortData(sort: MatSort): void {\r\n if (this.tableSource && this.tableSource.sort && this.tableSource.sort.active === sort.active) {\r\n if (this.tableSource.sort.start === 'asc') {\r\n sort.start = 'desc';\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Descending;\r\n } else if (this.tableSource.sort.start === 'desc') {\r\n this.filteModelContent.sortColumn = '';\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n } else {\r\n sort.start = 'desc';\r\n }\r\n } else {\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n }\r\n this.tableSource.sort = sort;\r\n this.filteModelContent.currentPageNumber = 0;\r\n this.DataGetAll();\r\n }\r\n onTablePageingData(event?: PageEvent): void {\r\n this.filteModelContent.currentPageNumber = event.pageIndex + 1;\r\n this.filteModelContent.rowPerPage = event.pageSize;\r\n this.DataGetAll();\r\n }\r\n\r\n\r\n onActionbuttonNewRow(): void {\r\n\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessAddRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessAdd();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreSiteUserAddComponent, {\r\n height: '90%',\r\n data: {\r\n linkSiteId: this.requestLinkSiteId,\r\n linkUserId: this.requestLinkUserId,\r\n linkUserGroupId: this.requestLinkUserGroupId,\r\n }\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n this.DataGetAll();\r\n }\r\n });\r\n }\r\n\r\n onActionbuttonEditRow(model: CoreSiteUserModel = this.tableRowSelected): void {\r\n\r\n if (!model || !model.linkUserId || model.linkUserId === 0 || !model.linkSiteId || model.linkSiteId === 0) {\r\n this.cmsToastrService.typeErrorSelectedRow();\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessEditRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessEdit();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreSiteUserEditComponent, {\r\n height: '90%',\r\n data: {\r\n linkSiteId: model.linkSiteId,\r\n linkUserId: model.linkUserId,\r\n linkUserGroupId: model.linkUserGroupId,\r\n }\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n this.DataGetAll();\r\n }\r\n });\r\n }\r\n\r\n onActionbuttonDeleteRow(model: CoreSiteUserModel = this.tableRowSelected): void {\r\n if (!model || !model.linkUserId || model.linkUserId === 0 || !model.linkSiteId || model.linkSiteId === 0) {\r\n this.cmsToastrService.typeErrorDeleteRowIsNull();\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessDeleteRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessDelete();\r\n return;\r\n }\r\n const title = this.translate.instant('MESSAGE.Please_Confirm');\r\n const message = this.translate.instant('MESSAGE.Do_you_want_to_delete_this_content') + '?' + '<br> ( '\r\n + this.tableRowSelected.virtual_CmsSite.title + '<-->' + this.tableRowSelected.virtual_CmsUser.username + ' ) ';\r\n this.cmsConfirmationDialogService.confirm(title, message)\r\n .then((confirmed) => {\r\n if (confirmed) {\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.contentService.ServiceDeleteEntity(this.tableRowSelected).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.cmsToastrService.typeSuccessRemove();\r\n this.DataGetAll();\r\n } else {\r\n this.cmsToastrService.typeErrorRemove();\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n )\r\n .catch(() => {\r\n // console.log('User dismissed the dialog (e.g., by using ESC, clicking the cross icon, or clicking outside the dialog)')\r\n }\r\n );\r\n }\r\n\r\n onActionbuttonEditSiteRow(model: CoreSiteUserModel = this.tableRowSelected): void {\r\n\r\n if (!model || !model.linkUserId || model.linkUserId === 0 || !model.linkSiteId || model.linkSiteId === 0) {\r\n this.cmsToastrService.typeErrorSelected(this.translate.instant('MESSAGE.No_row_selected_for_editing'));\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n this.router.navigate(['/core/site/edit', model.linkSiteId]);\r\n\r\n }\r\n onActionbuttonEditUserRow(model: CoreSiteUserModel = this.tableRowSelected): void {\r\n\r\n if (!model || !model.linkUserId || model.linkUserId === 0 || !model.linkSiteId || model.linkSiteId === 0) {\r\n this.cmsToastrService.typeErrorSelected(this.translate.instant('MESSAGE.No_row_selected_for_editing'));\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n this.router.navigate(['/core/user/edit', model.linkUserId]);\r\n\r\n }\r\n onActionbuttonResllerUser(model: CoreSiteUserModel = this.tableRowSelected): void {\r\n\r\n if (!model || !model.linkUserId || model.linkUserId === 0 || !model.linkSiteId || model.linkSiteId === 0) {\r\n this.cmsToastrService.typeErrorSelected(this.translate.instant('MESSAGE.No_row_selected_for_editing'));\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n this.router.navigate(['/core/user/reseller-chart/LinkUserId', model.linkUserId]);\r\n\r\n }\r\n onActionbuttonResllerSite(model: CoreSiteUserModel = this.tableRowSelected): void {\r\n\r\n if (!model || !model.linkUserId || model.linkUserId === 0 || !model.linkSiteId || model.linkSiteId === 0) {\r\n this.cmsToastrService.typeErrorSelected(this.translate.instant('MESSAGE.No_row_selected_for_editing'));\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n this.router.navigate(['/core/site/reseller-chart/LinkSiteId', model.linkSiteId]);\r\n\r\n }\r\n onActionbuttonStatist(): void {\r\n this.optionsStatist.data.show = !this.optionsStatist.data.show;\r\n if (!this.optionsStatist.data.show) {\r\n return;\r\n }\r\n const statist = new Map<string, number>();\r\n statist.set('Active', 0);\r\n statist.set('All', 0);\r\n this.contentService.ServiceGetCount(this.filteModelContent).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n statist.set('All', ret.totalRowCount);\r\n this.optionsStatist.childMethods.setStatistValue(statist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n\r\n const filterStatist1 = JSON.parse(JSON.stringify(this.filteModelContent));\r\n const fastfilter = new FilterDataModel();\r\n fastfilter.propertyName = 'RecordStatus';\r\n fastfilter.value = EnumRecordStatus.Available;\r\n filterStatist1.filters.push(fastfilter);\r\n this.contentService.ServiceGetCount(filterStatist1).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n statist.set('Active', ret.totalRowCount);\r\n this.optionsStatist.childMethods.setStatistValue(statist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n\r\n }\r\n onActionbuttonExport(): void {\r\n this.optionsExport.data.show = !this.optionsExport.data.show;\r\n this.optionsExport.childMethods.setExportFilterModel(this.filteModelContent);\r\n }\r\n onSubmitOptionExport(model: FilterModel): void {\r\n const exportlist = new Map<string, string>();\r\n exportlist.set('Download', 'loading ... ');\r\n this.contentService.ServiceExportFile(model).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n exportlist.set('Download', ret.linkFile);\r\n this.optionsExport.childMethods.setExportLinkFile(exportlist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n }\r\n\r\n onActionbuttonReload(): void {\r\n this.DataGetAll();\r\n }\r\n onSubmitOptionsSearch(model: any): void {\r\n this.filteModelContent.filters = model;\r\n this.DataGetAll();\r\n }\r\n onActionTableRowSelect(row: CoreSiteUserModel): void {\r\n this.tableRowSelected = row;\r\n }\r\n onActionbuttonSiteList(model: CoreSiteUserModel = this.tableRowSelected): void {\r\n if (!model || !model.linkUserId || model.linkUserId === 0 || !model.linkSiteId || model.linkSiteId === 0) {\r\n this.cmsToastrService.typeErrorSelectedRow();\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n this.router.navigate(['/core/site/list/LinkUserId/', model.id]);\r\n }\r\n onActionBackToParentSiteList(): void {\r\n this.router.navigate(['/core/site/']);\r\n }\r\n onActionBackToParentUserList(): void {\r\n this.router.navigate(['/core/user/']);\r\n }\r\n onActionBackToParentUserGroupList(): void {\r\n this.router.navigate(['/core/usergroup/']);\r\n }\r\n onActionbuttonLoginToRow(model: CoreSiteUserModel = this.tableRowSelected): void {\r\n if (!model || !model.linkUserId || model.linkUserId === 0) {\r\n\r\n const message = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n\r\n let authModel: AuthRenewTokenModel;\r\n authModel = new AuthRenewTokenModel();\r\n authModel.userId = this.tableRowSelected.linkUserId;\r\n authModel.siteId = this.tableRowSelected.linkSiteId;\r\n this.coreAuthService.ServiceRenewToken(authModel).subscribe({\r\n next: (res) => {\r\n if (res.isSuccess) {\r\n this.cmsToastrService.typeSuccessSelected();\r\n this.router.navigate(['/']);\r\n }\r\n else {\r\n this.cmsToastrService.typeErrorSelected();\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","<div class=\"row alert alert-custom alert-white alert-shadow gutter-b\" role=\"alert\">\r\n <div class=\"col-1 alert-icon alert-icon-top\">\r\n <span class=\"svg-icon svg-icon-3x svg-icon-primary\" [inlineSVG]=\"'assets/media/svg/icons/Tools/Compass.svg'\"></span>\r\n </div>\r\n <div class=\"col-11\">\r\n <h5>\r\n مشخصات Ùˆ لینک های اشتراک گزاری برای شما Ùˆ وب سایت شما\r\n </h5>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-sm-12 col-xs-18 alert-text\">\r\n <br>\r\n <p *ngIf=\"dataModelResult.item?.userTitle?.length>0\">\r\n\r\n نام شما:\r\n <br>\r\n {{dataModelResult.item.userTitle}}\r\n </p>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-sm-12 col-xs-18\">\r\n <p *ngIf=\"dataModelResult.item?.siteTitle?.length>0\">\r\n\r\n عنوان سامانه:\r\n <br>\r\n {{dataModelResult.item.siteTitle}}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n<!-- آدرس وب سایت -->\r\n\r\n<div class=\"row alert alert-custom alert-white alert-shadow gutter-b\" role=\"alert\" *ngIf=\"dataModelResult.item?.urlSiteHome?.length>0\">\r\n <div class=\"col-md-6 col-sm-6 col-xs-9\">\r\n <div class=\"row\">\r\n <div class=\"col-1 alert-icon alert-icon-top\">\r\n <span class=\"svg-icon svg-icon-3x svg-icon-primary\"\r\n [inlineSVG]=\"'assets/media/svg/icons/Home/Earth.svg'\"></span>\r\n </div>\r\n <div class=\"col-11\">\r\n <h5>\r\n آدرس وب سایت\r\n </h5>\r\n </div>\r\n </div>\r\n <br>\r\n <h4>توضیØات:</h4>\r\n <p>\r\n در این بخش شما میتوانید لینک وبسایت خود را مشاهده نمایید Ùˆ آن را Ú©Ù¾ÛŒ کنید Ùˆ با دیگران به اشتراک بگذارید.\r\n <br>\r\n همچنین میتوانید با کلیک بر روی گزینه \"بارکد\" لینک خود را به صورت بارکد دریاÙت نمایید.\r\n </p>\r\n <br>\r\n <h5>\r\n آدرس وب سایت\r\n </h5>\r\n <a href=\"{{dataModelResult.item?.urlSiteHome}}\">\r\n {{dataModelResult.item.urlSiteHome}}\r\n </a>\r\n <span class=\"navi-icon\" [cdkCopyToClipboard]=\"dataModelResult.item.urlSiteHome\" (click)=\"onActionCopied()\"><i\r\n class=\"flaticon2-copy\"></i></span>\r\n <br>\r\n <br>\r\n <br>\r\n <button mat-button (click)=\"onActionbuttonlinkToSiteHome()\" class=\"border\">\r\n <mat-icon>qr_code_2</mat-icon>\r\n <span> {{'ACTION.QRCODE' | translate}}</span>\r\n </button>\r\n <br>\r\n <br>\r\n </div>\r\n <div class=\"col-md-6 col-sm-6 col-xs-9\">\r\n <img src=\"/assets/media/stock-900x600/27.jpg\" height=\"100%\" width=\"100%\">\r\n <br>\r\n </div>\r\n</div>\r\n\r\n<!-- آدرس سامانه مدیریت Ù…Øتوا -->\r\n\r\n<div class=\"row alert alert-custom alert-white alert-shadow gutter-b\" role=\"alert\" *ngIf=\"dataModelResult.item?.urlSiteCPanel?.length>0\">\r\n <div class=\"col-md-6 col-sm-6 col-xs-9\">\r\n <div class=\"row\">\r\n <div class=\"col-1 alert-icon alert-icon-top\">\r\n <span class=\"svg-icon svg-icon-3x svg-icon-primary\"\r\n [inlineSVG]=\"'assets/media/svg/icons/General/User.svg'\"></span>\r\n </div>\r\n <div class=\"col-11\" *ngIf=\"dataModelResult.item?.urlSiteCPanel?.length>0\">\r\n <h5>\r\n آدرس سامانه مدیریت Ù…Øتوا\r\n </h5>\r\n </div>\r\n </div>\r\n <br>\r\n <h4>توضیØات:</h4>\r\n <p>\r\n در این بخش شما میتوانید لینک سامانه مدیریت Ù…Øتوا خود را مشاهده نمایید Ùˆ آن را Ú©Ù¾ÛŒ کنید Ùˆ با دیگران به اشتراک\r\n بگذارید.\r\n <br>\r\n سامانه مدیریت Ù…Øتوا به شما این امکان را میدهد Ú©Ù‡ به سایت خود Ù…Øتوا اضاÙÙ‡ ،ویرایش Ùˆ Øذ٠کنید Ùˆ تمام قسمت های سایت\r\n خود را مدیریت کنید.\r\n <br>\r\n همچنین میتوانید با کلیک بر روی گزینه \"بارکد\" لینک خود را به صورت بارکد دریاÙت نمایید.\r\n\r\n </p>\r\n <br>\r\n <h5>\r\n آدرس سامانه مدیریت Ù…Øتوا\r\n </h5>\r\n <a href=\"{{dataModelResult.item.urlSiteCPanel}}\">\r\n {{dataModelResult.item.urlSiteCPanel}}\r\n </a>\r\n <span class=\"navi-icon\" [cdkCopyToClipboard]=\"dataModelResult.item.urlSiteCPanel\" (click)=\"onActionCopied()\"><i\r\n class=\"flaticon2-copy\"></i></span>\r\n <br>\r\n <br>\r\n <br>\r\n <button mat-button (click)=\"onActionbuttonlinkToSiteCPanel()\" class=\"border\">\r\n <mat-icon>qr_code_2</mat-icon>\r\n <span> {{'ACTION.QRCODE' | translate}}</span>\r\n </button>\r\n <br>\r\n <br>\r\n </div>\r\n <div class=\"col-md-6 col-sm-6 col-xs-9\">\r\n <img src=\"\\assets\\media\\stcok-900x600/5.jpg\" height=\"100%\" width=\"100%\">\r\n <br>\r\n </div>\r\n</div>\r\n\r\n<!-- آدرس اشتراک گزاری وب سایت -->\r\n\r\n<div class=\"row alert alert-custom alert-white alert-shadow gutter-b\" role=\"alert\" *ngIf=\"dataModelResult.item?.urlResellerSiteShortLinkUrl?.length>0\">\r\n <div class=\"col-md-6 col-sm-6 col-xs-9\">\r\n <div class=\"row\">\r\n <div class=\"col-1 alert-icon alert-icon-top\">\r\n <span class=\"svg-icon svg-icon-3x svg-icon-primary\"\r\n [inlineSVG]=\"'assets/media/svg/icons/Map/Location-arrow.svg'\"></span>\r\n </div>\r\n <div class=\"col-11\" *ngIf=\"dataModelResult.item?.urlResellerSite?.length>0\">\r\n <h5>\r\n آدرس اشتراک گزاری وب سایت\r\n </h5>\r\n </div>\r\n </div>\r\n <br>\r\n <h4>توضیØات:</h4>\r\n <p>\r\n در این بخش شما میتوانید لینک آدرس اشتراک گزاری وب سایت خود را مشاهده نمایید Ùˆ آن را Ú©Ù¾ÛŒ کنید Ùˆ با دیگران به اشتراک\r\n بگذارید.\r\n <br>\r\n میتوانید با کلیک بر روی گزینه \"مشاهده چارت\" لیست سایت های زیر مجموعه خود را مشاهده نمایید.\r\n <br>\r\n همچنین میتوانید با کلیک بر روی گزینه \"مشاهده آمار بازدید\" تعداد بازدید سایت خود را مشاهده نمایید.\r\n <br>\r\n علاوه بر آن با کلیک بر روی گزینه \"بارکد\" لینک خود را به صورت بارکد دریاÙت نمایید.\r\n </p>\r\n <br>\r\n <h5>\r\n آدرس اشتراک گزاری وب سایت\r\n </h5>\r\n\r\n <a href=\"{{dataModelResult.item.urlResellerSiteShortLinkUrl}}\">\r\n {{dataModelResult.item.urlResellerSiteShortLinkUrl}}\r\n </a>\r\n <span class=\"navi-icon\" [cdkCopyToClipboard]=\"dataModelResult.item.urlResellerSiteShortLinkUrl\"\r\n (click)=\"onActionCopied()\"><i class=\"flaticon2-copy\"></i></span>\r\n <br>\r\n <br>\r\n <br>\r\n <button mat-button (click)=\"onActionbuttonResllerSite()\" class=\"border\">\r\n <mat-icon>visibility</mat-icon>\r\n <span> {{'ACTION.VIEW_CHART' | translate}}</span>\r\n </button>\r\n <button mat-button (click)=\"onActionbuttonResllerSiteShortLinkStatus()\" class=\"border\">\r\n <mat-icon>visibility</mat-icon>\r\n <span> {{'ACTION.VIEW_VISIT_STATISTICS' | translate}}</span>\r\n </button>\r\n <button mat-button (click)=\"onActionbuttonResllerSiteShortLinkTo()\" class=\"border\">\r\n <mat-icon>qr_code_2</mat-icon>\r\n <span> {{'ACTION.QRCODE' | translate}}</span>\r\n </button>\r\n <br>\r\n <br>\r\n </div>\r\n <div class=\"col-md-6 col-sm-6 col-xs-9\">\r\n <img src=\"\\assets\\media\\stock-600x400/img-52.jpg\" height=\"100%\" width=\"100%\">\r\n </div>\r\n</div>\r\n\r\n<!-- آدرس اشتراک گزاری با Øساب کاربری شما -->\r\n\r\n<div class=\"row alert alert-custom alert-white alert-shadow gutter-b\" role=\"alert\" *ngIf=\"dataModelResult.item?.urlResellerUserShortLinkUrl?.length>0\">\r\n <div class=\"col-md-6 col-sm-6 col-xs-9\">\r\n <div class=\"row\">\r\n <div class=\"col-1 alert-icon alert-icon-top\">\r\n <span class=\"svg-icon svg-icon-3x svg-icon-primary\"\r\n [inlineSVG]=\"'assets/media/svg/icons/Map/Location-arrow.svg'\"></span>\r\n </div>\r\n <div class=\"col-11\" *ngIf=\"dataModelResult.item?.urlResellerUser?.length>0\">\r\n <h5>\r\n آدرس اشتراک گزاری با Øساب کاربری شما\r\n </h5>\r\n </div>\r\n </div>\r\n <br>\r\n <h4>توضیØات:</h4>\r\n <p>\r\n در این بخش شما میتوانید لینک آدرس اشتراک گزاری با Øساب کاربری خودتان را مشاهده نمایید Ùˆ آن را Ú©Ù¾ÛŒ کنید Ùˆ با دیگران\r\n به اشتراک\r\n بگذارید.\r\n <br>\r\n میتوانید با کلیک بر روی گزینه \"مشاهده چارت\" لیست سایت های زیر مجموعه خود را مشاهده نمایید.\r\n <br>\r\n همچنین میتوانید با کلیک بر روی گزینه \"مشاهده آمار بازدید\" تعداد بازدید سایت خود را مشاهده نمایید.\r\n <br>\r\n علاوه بر آن با کلیک بر روی گزینه \"بارکد\" لینک خود را به صورت بارکد دریاÙت نمایید.\r\n </p>\r\n <br>\r\n <h5>\r\n آدرس اشتراک گزاری با Øساب کاربری شما\r\n </h5>\r\n\r\n <a href=\"{{dataModelResult.item.urlResellerUserShortLinkUrl}}\">\r\n {{dataModelResult.item.urlResellerUserShortLinkUrl}}\r\n </a>\r\n <span class=\"navi-icon\" [cdkCopyToClipboard]=\"dataModelResult.item.urlResellerUserShortLinkUrl\"\r\n (click)=\"onActionCopied()\"><i class=\"flaticon2-copy\"></i></span>\r\n <br>\r\n <br>\r\n <br>\r\n <button mat-button (click)=\"onActionbuttonResllerUser()\" class=\"border\">\r\n <mat-icon>visibility</mat-icon>\r\n <span> {{'ACTION.VIEW_CHART' | translate}}</span>\r\n </button>\r\n <button mat-button (click)=\"onActionbuttonResllerUserShortLinkStatus()\" class=\"border\">\r\n <mat-icon>visibility</mat-icon>\r\n <span> {{'ACTION.VIEW_VISIT_STATISTICS' | translate}}</span>\r\n </button>\r\n <button mat-button (click)=\"onActionbuttonResllerUserShortLinkTo()\" class=\"border\">\r\n <mat-icon>qr_code_2</mat-icon>\r\n <span> {{'ACTION.QRCODE' | translate}}</span>\r\n </button>\r\n <br>\r\n <br>\r\n </div>\r\n <div class=\"col-md-6 col-sm-6 col-xs-9\">\r\n <img src=\"\\assets\\media\\stock-600x400/img-61.jpg\" height=\"100%\" width=\"100%\">\r\n </div>\r\n</div>\r\n\r\n<!-- آدرس اشتراک گزاری با دسته بندی سامانه موجود -->\r\n\r\n<div class=\"row alert alert-custom alert-white alert-shadow gutter-b\" role=\"alert\" *ngIf=\"dataModelResult.item?.urlResellerSiteCategoryShortLinkUrl?.length>0\">\r\n <div class=\"col-md-6 col-sm-6 col-xs-9\">\r\n <div class=\"row\">\r\n <div class=\"col-1 alert-icon alert-icon-top\">\r\n <span class=\"svg-icon svg-icon-3x svg-icon-primary\"\r\n [inlineSVG]=\"'assets/media/svg/icons/Map/Location-arrow.svg'\"></span>\r\n </div>\r\n <div class=\"col-11\" *ngIf=\"dataModelResult.item?.urlResellerUser?.length>0\">\r\n <h5>\r\n آدرس اشتراک گزاری با دسته بندی سامانه موجود\r\n </h5>\r\n </div>\r\n </div>\r\n <br>\r\n <h4>توضیØات:</h4>\r\n <p>\r\n در این بخش شما میتوانید لینک آدرس اشتراک گزاری با دسته بندی سامانه موجود خود را مشاهده نمایید Ùˆ آن را Ú©Ù¾ÛŒ کنید Ùˆ\r\n با دیگران به اشتراک\r\n بگذارید.\r\n <br>\r\n میتوانید با کلیک بر روی گزینه \"مشاهده چارت\" لیست سایت های زیر مجموعه خود را مشاهده نمایید.\r\n <br>\r\n همچنین میتوانید با کلیک بر روی گزینه \"مشاهده آمار بازدید\" تعداد بازدید سایت خود را مشاهده نمایید.\r\n <br>\r\n علاوه بر آن با کلیک بر روی گزینه \"بارکد\" لینک خود را به صورت بارکد دریاÙت نمایید.\r\n </p>\r\n <div >\r\n <br>\r\n <h5>\r\n آدرس اشتراک گزاری با دسته بندی سامانه موجود\r\n </h5>\r\n <a href=\"{{dataModelResult.item.urlResellerSiteCategoryShortLinkUrl}}\">\r\n {{dataModelResult.item.urlResellerSiteCategoryShortLinkUrl}}\r\n </a>\r\n <span class=\"navi-icon\" [cdkCopyToClipboard]=\"dataModelResult.item.urlResellerSiteCategoryShortLinkUrl\"\r\n (click)=\"onActionCopied()\"><i class=\"flaticon2-copy\"></i></span>\r\n <br>\r\n <br>\r\n <br>\r\n <button mat-button (click)=\"onActionbuttonResllerUser()\" class=\"border\">\r\n <mat-icon>visibility</mat-icon>\r\n <span> {{'ACTION.VIEW_CHART' | translate}}</span>\r\n </button>\r\n <button mat-button (click)=\"onActionbuttonResllerUserCategoryShortLinkStatus()\" class=\"border\">\r\n <mat-icon>visibility</mat-icon>\r\n <span> {{'ACTION.VIEW_VISIT_STATISTICS' | translate}}</span>\r\n </button>\r\n <button mat-button (click)=\"onActionbuttonResllerUserCategoryShortLinklinkTo()\" class=\"border\">\r\n <mat-icon>qr_code_2</mat-icon>\r\n <span> {{'ACTION.QRCODE' | translate}}</span>\r\n </button>\r\n <br>\r\n <br>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 col-sm-6 col-xs-9\">\r\n <img src=\"\\assets\\media\\stock-600x400/img-63.jpg\" height=\"100%\" width=\"100%\">\r\n </div>\r\n</div>\r\n<!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->","\r\nimport { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { CoreSiteService, ErrorExceptionResult, ShareInfoModel, TokenInfoModel } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { Subscription } from 'rxjs';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { CmsLinkToComponent } from 'src/app/shared/cms-link-to/cms-link-to.component';\r\n\r\n@Component({\r\n selector: 'app-core-info',\r\n templateUrl: './core-info.component.html',\r\n styleUrls: ['./core-info.component.scss']\r\n})\r\nexport class CoreInfoComponent implements OnInit, OnDestroy {\r\n\r\n constructor(\r\n private tokenHelper: TokenHelper,\r\n private cmsToastrService: CmsToastrService,\r\n private coreSiteService: CoreSiteService,\r\n private router: Router,\r\n public translate: TranslateService,\r\n private cdr: ChangeDetectorRef,\r\n public dialog: MatDialog\r\n\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n });\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.tokenInfo = next;\r\n this.DataGetInfo();\r\n });\r\n this.DataGetInfo();\r\n }\r\n cmsApiStoreSubscribe: Subscription;\r\n tokenInfo: TokenInfoModel;\r\n loading = new ProgressSpinnerModel();\r\n\r\n dataModelResult: ErrorExceptionResult<ShareInfoModel> = new ErrorExceptionResult<ShareInfoModel>();\r\n\r\n ngOnInit(): void {\r\n /** read storage */\r\n const siteId = + localStorage.getItem('siteId');\r\n if (siteId > 0) {\r\n // this.dataModel.siteId = siteId;\r\n }\r\n const ResellerSiteId = + localStorage.getItem('ResellerSiteId');\r\n if (ResellerSiteId > 0) {\r\n // this.dataModel.resellerSiteId = ResellerSiteId;\r\n }\r\n const ResellerUserId = + localStorage.getItem('ResellerUserId');\r\n if (ResellerUserId > 0) {\r\n // this.dataModel.resellerUserId = ResellerUserId;\r\n }\r\n /** read storage */\r\n }\r\n DataGetInfo(): void {\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreSiteService.ServiceGetShareInfo().subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.dataModelResult = ret;\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n ngOnDestroy() {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n onActionCopied(): void {\r\n this.cmsToastrService.typeSuccessCopedToClipboard();\r\n }\r\n onActionbuttonResllerUser(): void {\r\n\r\n this.router.navigate(['/core/user/reseller-chart']);\r\n\r\n }\r\n onActionbuttonResllerUserShortLinkStatus(): void {\r\n if (this.dataModelResult?.item?.urlResellerUserShortLinkUrl?.length > 0) {\r\n\r\n const indexLast = this.dataModelResult.item.urlResellerUserShortLinkUrl.lastIndexOf('/');\r\n if (indexLast > 0) {\r\n const key = this.dataModelResult.item.urlResellerUserShortLinkUrl.substr(indexLast + 1);\r\n // const url = this.router.serializeUrl(\r\n // this.router.createUrlTree([encodeURI('#/linkmanagement/target-billboard-log/Key/' + key)])\r\n // );\r\n // window.open(url, '_blank');\r\n this.router.navigate(['/linkmanagement/target-billboard-log/Key/' + key]);\r\n }\r\n }\r\n }\r\n onActionbuttonResllerUserCategoryShortLinkStatus(): void {\r\n if (this.dataModelResult?.item?.urlResellerSiteCategoryShortLinkUrl?.length > 0) {\r\n const indexLast = this.dataModelResult.item.urlResellerSiteCategoryShortLinkUrl.lastIndexOf('/');\r\n if (indexLast > 0) {\r\n const key = this.dataModelResult.item.urlResellerSiteCategoryShortLinkUrl.substr(indexLast + 1);\r\n // const url = this.router.serializeUrl(\r\n // this.router.createUrlTree([encodeURI('#/linkmanagement/target-billboard-log/Key/' + key)])\r\n // );\r\n // window.open(url, '_blank');\r\n this.router.navigate(['/linkmanagement/target-billboard-log/Key/' + key]);\r\n }\r\n }\r\n }\r\n onActionbuttonResllerSite(): void {\r\n\r\n\r\n this.router.navigate(['/core/site/reseller-chart']);\r\n\r\n }\r\n onActionbuttonResllerSiteShortLinkStatus(): void {\r\n if (this.dataModelResult?.item?.urlResellerSiteShortLinkUrl?.length > 0) {\r\n const indexLast = this.dataModelResult.item.urlResellerSiteShortLinkUrl.lastIndexOf('/');\r\n if (indexLast > 0) {\r\n const key = this.dataModelResult.item.urlResellerSiteShortLinkUrl.substr(indexLast + 1);\r\n\r\n // const url = this.router.serializeUrl(\r\n // this.router.createUrlTree([encodeURI('#/linkmanagement/target-billboard-log/Key/' + key)])\r\n // );\r\n // window.open(url, '_blank');\r\n this.router.navigate(['/linkmanagement/target-billboard-log/Key/' + key]);\r\n }\r\n }\r\n }\r\n onActionbuttonlinkToSiteHome(): void {\r\n //open popup\r\n const dialogRef = this.dialog.open(CmsLinkToComponent, {\r\n // height: \"90%\",\r\n data: {\r\n Title: 'آدرس وب سایت',\r\n urlViewContentQRCodeBase64: this.dataModelResult.item.urlSiteHomeShortLinkQRCodeBase64,\r\n urlViewContent: this.dataModelResult.item.urlSiteHome,\r\n },\r\n });\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result && result.dialogChangedDate) {\r\n }\r\n });\r\n //open popup\r\n }\r\n onActionbuttonlinkToSiteCPanel(): void {\r\n //open popup\r\n const dialogRef = this.dialog.open(CmsLinkToComponent, {\r\n // height: \"90%\",\r\n data: {\r\n Title: 'آدرس سامانه مدیریت Ù…Øتوا',\r\n urlViewContentQRCodeBase64: this.dataModelResult.item.urlSiteCPanelShortLinkQRCodeBase64,\r\n urlViewContent: this.dataModelResult.item.urlSiteCPanel,\r\n },\r\n });\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result && result.dialogChangedDate) {\r\n }\r\n });\r\n //open popup\r\n }\r\n onActionbuttonResllerSiteShortLinkTo(): void {\r\n //open popup\r\n const dialogRef = this.dialog.open(CmsLinkToComponent, {\r\n // height: \"90%\",\r\n data: {\r\n Title: 'آدرس اشتراک گزاری وب سایت',\r\n urlViewContentQRCodeBase64: this.dataModelResult.item.urlSiteCPanelShortLinkQRCodeBase64,\r\n urlViewContent: this.dataModelResult.item.urlSiteCPanel,\r\n },\r\n });\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result && result.dialogChangedDate) {\r\n }\r\n });\r\n //open popup\r\n }\r\n onActionbuttonResllerUserShortLinkTo(): void {\r\n //open popup\r\n const dialogRef = this.dialog.open(CmsLinkToComponent, {\r\n // height: \"90%\",\r\n data: {\r\n Title: 'آدرس اشتراک گزاری با Øساب کاربری شما',\r\n urlViewContentQRCodeBase64: this.dataModelResult.item.urlResellerUserShortLinkQRCodeBase64,\r\n urlViewContent: this.dataModelResult.item.urlResellerUserShortLinkUrl,\r\n },\r\n });\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result && result.dialogChangedDate) {\r\n }\r\n });\r\n //open popup\r\n }\r\n onActionbuttonResllerUserCategoryShortLinklinkTo(): void {\r\n //open popup \r\n const dialogRef = this.dialog.open(CmsLinkToComponent, {\r\n // height: \"90%\",\r\n data: {\r\n Title: 'آدرس اشتراک گزاری با Øساب کاربری شما',\r\n urlViewContentQRCodeBase64: this.dataModelResult.item.urlResellerSiteCategoryShortLinkQRCodeBase64,\r\n urlViewContent: this.dataModelResult.item.urlResellerSiteCategoryShortLinkUrl,\r\n },\r\n });\r\n dialogRef.afterClosed().subscribe((result) => {\r\n if (result && result.dialogChangedDate) {\r\n }\r\n });\r\n //open popup\r\n }\r\n}\r\n","<div class=\"ntk-cms-html-tree-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n\r\n <button (click)=\"onActionReload()\" type=\"button\" class=\"btn btn-outline-secondary BTN\">\r\n <mat-icon style=\"font-size: 20px;margin: -1px;\" title=\"{{'ACTION.RELOAD' | translate}}\">refresh</mat-icon>\r\n </button>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n</div>\r\n<div class=\"row\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <div class=\"col-lg-6 col-sm-12\">\r\n <div class=\"ntk-cms-html-tree-body\">\r\n <mat-tree class=\"category-tree cursor-pointer\" [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding (click)=\"onActionSelect(node)\"\r\n [ngStyle]=\"{'background': dataModelSelect.linkSiteId>0 && dataModelSelect.linkSiteId === node.linkSiteId ? '#d3d3da' : '' }\">\r\n <button mat-icon-button disabled></button>\r\n {{node.Site.id}}/{{node.Site.title}}\r\n </mat-tree-node>\r\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasChild\">\r\n <li>\r\n <div class=\"mat-tree-node\" (click)=\"onActionSelect(node)\"\r\n [ngStyle]=\"{'background': dataModelSelect.linkSiteId>0 && dataModelSelect.linkSiteId === node.linkSiteId ? '#d3d3da' : '' }\">\r\n <button mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'Toggle ' + node.title\"\r\n (click)=\"onActionSelect(node)\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n {{node.Site.id}}/{{node.Site.title}}\r\n </div>\r\n <ul [class.category-tree-invisible]=\"!treeControl.isExpanded(node)\">\r\n <ng-container matTreeNodeOutlet></ng-container>\r\n </ul>\r\n </li>\r\n </mat-nested-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 col-sm-12\">\r\n <div class=\"ntk-cms-html-tree-body\">\r\n <div class=\"table\" *ngIf=\"dataModelSelect?.userChilds?.length>0\">\r\n <div class=\"th\">\r\n <div class=\"td\">شناسه کاربری</div>\r\n <div class=\"td\">نام</div>\r\n <div class=\"td\">نام خانوادگی</div>\r\n <div class=\"td\">نام شرکت</div>\r\n <div class=\"td\">تاریخ ساخت</div>\r\n <div class=\"clear\"></div>\r\n </div>\r\n <div class=\"tr\" *ngFor=\"let item of dataModelSelect.userChilds\">\r\n <div class=\"td\">{{item.user?.id}}</div>\r\n <div class=\"td\">{{item.user?.name}}</div>\r\n <div class=\"td\">{{item.user?.lastName}}</div>\r\n <div class=\"td\">{{item.user?.companyName}}</div>\r\n <div class=\"td\">{{item.user?.createdDate |persianDate}}</div>\r\n <div style=\"clear: both;\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n</div>\r\n<div class=\"ntk-cms-html-tree-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n</div>","\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\nimport { NestedTreeControl } from '@angular/cdk/tree';\r\nimport {\r\n MatTreeNestedDataSource,\r\n} from '@angular/material/tree';\r\nimport {\r\n CoreEnumService,\r\n ErrorExceptionResult,\r\n FilterModel,\r\n CoreSiteService,\r\n RessellerChartModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { Subscription } from 'rxjs';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-core-site-reseller-chart',\r\n templateUrl: './reseller-chart.component.html',\r\n styleUrls: ['./reseller-chart.component.scss'],\r\n})\r\nexport class CoreSiteResellerChartComponent implements OnInit, OnDestroy {\r\n requestLinkSiteId = 0;\r\n constructor(\r\n private cmsToastrService: CmsToastrService,\r\n public coreEnumService: CoreEnumService,\r\n public categoryService: CoreSiteService,\r\n private activatedRoute: ActivatedRoute,\r\n public dialog: MatDialog,\r\n private cdr: ChangeDetectorRef,\r\n private tokenHelper: TokenHelper,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.requestLinkSiteId = + Number(this.activatedRoute.snapshot.paramMap.get('LinkSiteId'));\r\n }\r\n\r\n dataModelSelect: RessellerChartModel = new RessellerChartModel();\r\n dataModelResult: ErrorExceptionResult<RessellerChartModel> = new ErrorExceptionResult<RessellerChartModel>();\r\n filteModel = new FilterModel();\r\n @Input() loading = new ProgressSpinnerModel();\r\n treeControl = new NestedTreeControl<RessellerChartModel>(node => node.siteChilds);\r\n\r\n dataSource = new MatTreeNestedDataSource<RessellerChartModel>();\r\n @Output() optionChange = new EventEmitter<RessellerChartModel>();\r\n cmsApiStoreSubscribe: Subscription;\r\n @Input() optionReload = () => this.onActionReload();\r\n\r\n // hasChild = (_: number, node: RessellerChartModel) => false;\r\n hasChild(_: number, node: RessellerChartModel): boolean {\r\n if (node && node.siteChilds && node.siteChilds.length > 0) {\r\n return true;\r\n }\r\n // if (node && node.userChilds && node.userChilds.length > 0) {\r\n // return true;\r\n // }\r\n return false;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.DataGetAll();\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((value) => {\r\n this.DataGetAll();\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n DataGetAll(): void {\r\n this.filteModel.rowPerPage = 200;\r\n this.filteModel.accessLoad = true;\r\n\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.categoryService.ServiceGetRessellerChart(this.requestLinkSiteId).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.dataModelResult = ret;\r\n this.dataSource.data = [this.dataModelResult.item];\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onActionSelect(model: RessellerChartModel): void {\r\n this.dataModelSelect = model;\r\n this.optionChange.emit(this.dataModelSelect);\r\n }\r\n onActionReload(): void {\r\n if (this.dataModelSelect) {\r\n this.onActionSelect(this.dataModelSelect);\r\n }\r\n else {\r\n this.onActionSelect(null);\r\n }\r\n this.dataModelSelect = new RessellerChartModel();\r\n this.DataGetAll();\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { CoreSiteAddFirstComponent } from './addFirst/addFirst.component';\r\nimport { CoreSiteSelectionComponent } from './selection/selection.component';\r\nimport { CoreSiteListComponent } from './list/list.component';\r\nimport { CoreSiteModuleListComponent } from './moduleList/moduleList.component';\r\nimport { CoreSiteModuleEditComponent } from './moduleEdit/moduleEdit.component';\r\nimport { CoreSiteModuleAddComponent } from './moduleAdd/moduleAdd.component';\r\nimport { CoreSiteAddComponent } from './add/add.component';\r\nimport { CoreSiteEditComponent } from './edit/edit.component';\r\nimport { CoreSiteUserListComponent } from './userList/userList.component';\r\nimport { CoreInfoComponent } from './info/core-info.component';\r\nimport { CoreSiteResellerChartComponent } from './reseller-chart/reseller-chart.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n children: [\r\n {\r\n path: '',\r\n component: CoreSiteListComponent\r\n },\r\n {\r\n path: 'list/LinkUserId/:LinkUserId',\r\n component: CoreSiteListComponent\r\n },\r\n {\r\n path: 'list/LinkSiteCategoryId/:LinkSiteCategoryId',\r\n component: CoreSiteListComponent\r\n },\r\n {\r\n path: 'selection',\r\n component: CoreSiteSelectionComponent\r\n },\r\n {\r\n path: 'addFirst',\r\n component: CoreSiteAddFirstComponent\r\n },\r\n {\r\n path: 'add',\r\n component: CoreSiteAddComponent\r\n },\r\n {\r\n path: 'edit',\r\n component: CoreSiteEditComponent\r\n },\r\n {\r\n path: 'edit/:Id',\r\n component: CoreSiteEditComponent\r\n },\r\n /** modulelist */\r\n {\r\n path: 'modulelist',\r\n component: CoreSiteModuleListComponent\r\n },\r\n {\r\n path: 'modulelist/LinkSiteId/:LinkSiteId',\r\n component: CoreSiteModuleListComponent\r\n },\r\n {\r\n path: 'modulelist/LinkModuleId/:LinkModuleId',\r\n component: CoreSiteModuleListComponent\r\n },\r\n /** modulelist */\r\n {\r\n path: 'moduleadd/:LinkSiteId',\r\n component: CoreSiteModuleAddComponent\r\n },\r\n {\r\n path: 'moduleadd/:LinkSiteId/:LinkModuleId',\r\n component: CoreSiteModuleAddComponent\r\n },\r\n {\r\n path: 'moduleedit/:LinkSiteId/:LinkModuleId',\r\n component: CoreSiteModuleEditComponent\r\n },\r\n /** userlist */\r\n {\r\n path: 'userlist',\r\n component: CoreSiteUserListComponent\r\n },\r\n {\r\n path: 'userlist/LinkSiteId/:LinkSiteId',\r\n component: CoreSiteUserListComponent\r\n },\r\n {\r\n path: 'userlist/LinkUserGroupId/:LinkUserGroupId',\r\n component: CoreSiteUserListComponent\r\n },\r\n {\r\n path: 'userlist/LinkUserId/:LinkUserId',\r\n component: CoreSiteUserListComponent\r\n },\r\n /** userlist */\r\n {\r\n path: 'info',\r\n component: CoreInfoComponent\r\n },\r\n {\r\n path: 'reseller-chart',\r\n component: CoreSiteResellerChartComponent\r\n\r\n },\r\n {\r\n path: 'reseller-chart/LinkSiteId/:LinkSiteId',\r\n component: CoreSiteResellerChartComponent\r\n\r\n }\r\n ]\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class CoreSiteRouting {\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {Resolve} from '@angular/router';\r\nimport {CoreSiteService, FilterModel} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {Observable} from 'rxjs';\r\n\r\n@Injectable()\r\nexport class CoreSiteResolver implements Resolve<any> {\r\n\r\n filterModel = new FilterModel();\r\n\r\n constructor(private coreSiteService: CoreSiteService) {\r\n }\r\n\r\n resolve(): Observable<any> {\r\n return this.coreSiteService.ServiceGetAll(this.filterModel);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CoreSiteRouting } from './coreSite.routing';\r\nimport { CoreSiteComponent } from './coreSite.component';\r\nimport {\r\n CoreModuleService,\r\n CoreModuleSiteService,\r\n CoreSiteCategoryCmsModuleService,\r\n CoreSiteCategoryService,\r\n CoreSiteDomainAliasService,\r\n CoreSiteService,\r\n CoreSiteUserService,\r\n CoreUserService\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CoreSiteSelectionComponent } from './selection/selection.component';\r\nimport { CoreSiteAddFirstComponent } from './addFirst/addFirst.component';\r\nimport { CoreSiteResolver } from './coreSite.resolver';\r\nimport { SharedModule } from 'src/app/shared.module';\r\nimport { CoreSiteTreeComponent } from './tree/tree.component';\r\nimport { CoreSiteSelectorComponent } from './selector/selector.component';\r\nimport { CoreSiteDeleteComponent } from './delete/delete.component';\r\nimport { CoreSiteEditComponent } from './edit/edit.component';\r\nimport { CoreSiteAddComponent } from './add/add.component';\r\nimport { CoreSiteListComponent } from './list/list.component';\r\n\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\n\r\nimport { CoreSiteCategoryCmsModule } from '../site-category/coreSiteCategory.module';\r\nimport { CoreSiteCategoryCmsModuleModule } from '../site-category-module/coreSiteCategoryCmsModule.module';\r\nimport { CoreSiteModuleListComponent } from './moduleList/moduleList.component';\r\nimport { CoreSiteModuleEditComponent } from './moduleEdit/moduleEdit.component';\r\nimport { CoreSiteModuleAddComponent } from './moduleAdd/moduleAdd.component';\r\nimport { CmsConfirmationDialogService } from 'src/app/shared/cms-confirmation-dialog/cmsConfirmationDialog.service';\r\nimport { CoreModuleModule } from '../module/coreModule.module';\r\nimport { CoreSiteUserListComponent } from './userList/userList.component';\r\nimport { CoreSiteUserAddComponent } from './userAdd/userAdd.component';\r\nimport { CoreSiteUserEditComponent } from './userEdit/userEdit.component';\r\nimport { CoreUserModule } from '../user/coreUser.module';\r\nimport { CoreUserGroupCmsModule } from '../user-group/coreUserGroup.module';\r\nimport { CoreSiteResellerChartComponent } from './reseller-chart/reseller-chart.component';\r\nimport { CoreSiteModuleSiteInfoComponent } from './module-site-info/module-site-info.component';\r\nimport { CoreSiteModuleSiteOptimazeComponent } from './module-site-optimaze/module-site-optimaze.component';\r\nimport { ColorPickerModule } from 'ngx-color-picker';\r\nimport { CoreSiteHeaderComponent } from './header/header.component';\r\nimport { CoreModuleHeaderComponent } from '../module/header/header.component';\r\nimport { CoreSharedModule } from '../core.shared.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CoreSiteComponent,\r\n CoreSiteAddFirstComponent,\r\n CoreSiteSelectionComponent,\r\n CoreSiteListComponent,\r\n CoreSiteAddComponent,\r\n CoreSiteEditComponent,\r\n CoreSiteDeleteComponent,\r\n CoreSiteSelectorComponent,\r\n CoreSiteTreeComponent,\r\n CoreSiteModuleListComponent,\r\n CoreSiteModuleAddComponent,\r\n CoreSiteModuleEditComponent,\r\n CoreSiteUserListComponent,\r\n CoreSiteUserAddComponent,\r\n CoreSiteUserEditComponent,\r\n CoreSiteResellerChartComponent,\r\n CoreSiteModuleSiteInfoComponent,\r\n CoreSiteModuleSiteOptimazeComponent,\r\n\r\n ],\r\n exports: [\r\n CoreSiteComponent,\r\n CoreSiteAddFirstComponent,\r\n CoreSiteSelectionComponent,\r\n CoreSiteListComponent,\r\n CoreSiteAddComponent,\r\n CoreSiteEditComponent,\r\n CoreSiteDeleteComponent,\r\n CoreSiteSelectorComponent,\r\n CoreSiteTreeComponent,\r\n CoreSiteModuleListComponent,\r\n CoreSiteModuleAddComponent,\r\n CoreSiteModuleEditComponent,\r\n CoreSiteUserListComponent,\r\n CoreSiteUserAddComponent,\r\n CoreSiteUserEditComponent,\r\n CoreSiteResellerChartComponent,\r\n CoreSiteModuleSiteInfoComponent,\r\n CoreSiteModuleSiteOptimazeComponent,\r\n\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CoreSiteRouting,\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: 'never' }),\r\n SharedModule.forRoot(),\r\n AngularEditorModule,\r\n \r\n CoreSiteCategoryCmsModule,\r\n CoreSiteCategoryCmsModuleModule,\r\n CoreModuleModule,\r\n CoreUserModule,\r\n CoreUserGroupCmsModule,\r\n ColorPickerModule,\r\n CoreSharedModule,\r\n ],\r\n providers: [\r\n CoreSiteService,\r\n CoreSiteCategoryCmsModuleService,\r\n CoreModuleService,\r\n CoreSiteCategoryService,\r\n CoreSiteResolver,\r\n CoreModuleSiteService,\r\n CoreSiteDomainAliasService,\r\n CmsConfirmationDialogService,\r\n CoreUserService,\r\n CoreSiteUserService,\r\n ]\r\n})\r\nexport class CoreSiteModule {\r\n}\r\n","<mat-form-field class=\"ntk-full-width\">\r\n <input type=\"text\" placeholder=\"{{optionPlaceholder}}\" [attr.disabled]=\"optionDisabled? true : null\" aria-label=\"Assignee\" matInput [formControl]=\"formControl\" [matAutocomplete]=\"auto16\">\r\n <mat-autocomplete #auto16=\"matAutocomplete\" [displayWith]=\"displayFn\" (optionSelected)=\"onActionSelect($event.option.value)\">\r\n <mat-option *ngFor=\"let state of filteredOptions | async\" [value]=\"state\" [disabled]=\"optionDisabled\">\r\n \r\n <span>{{ displayOption(state) }}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon matSuffix *ngIf=\"dataModelSelect.id\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"onActionSelectClear()\">close</mat-icon>\r\n <ng-content></ng-content>\r\n</mat-form-field>\r\n","\r\nimport { Component, OnInit, Input, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\nimport {\r\n CoreEnumService,\r\n ErrorExceptionResult,\r\n FilterDataModel,\r\n FilterModel,\r\n CoreSiteModel,\r\n CoreSiteService,\r\n EnumFilterDataModelSearchTypes,\r\n EnumClauseType\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { Output } from '@angular/core';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n\r\n@Component({\r\n selector: 'app-core-site-selector',\r\n templateUrl: './selector.component.html',\r\n styleUrls: ['./selector.component.scss']\r\n})\r\nexport class CoreSiteSelectorComponent implements OnInit {\r\n\r\n constructor(\r\n public coreEnumService: CoreEnumService,\r\n private cmsToastrService: CmsToastrService,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n public categoryService: CoreSiteService) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n }\r\n dataModelResult: ErrorExceptionResult<CoreSiteModel> = new ErrorExceptionResult<CoreSiteModel>();\r\n dataModelSelect: CoreSiteModel = new CoreSiteModel();\r\n formControl = new FormControl();\r\n filteredOptions: Observable<CoreSiteModel[]>;\r\n @Input() optionDisabled = false;\r\n @Input() optionSelectFirstItem = false;\r\n @Input() optionPlaceholder = '';\r\n @Output() optionChange = new EventEmitter<CoreSiteModel>();\r\n @Input() optionReload = () => this.onActionReload();\r\n @Input() set optionSelectForce(x: number | CoreSiteModel) {\r\n this.onActionSelectForce(x);\r\n }\r\n\r\n _loading: ProgressSpinnerModel = new ProgressSpinnerModel();\r\n get loading(): ProgressSpinnerModel {\r\n return this._loading;\r\n }\r\n @Input() set loading(value: ProgressSpinnerModel) {\r\n this._loading = value;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadOptions();\r\n }\r\n loadOptions(): void {\r\n this.filteredOptions = this.formControl.valueChanges\r\n .pipe(\r\n startWith(''),\r\n debounceTime(1000),\r\n distinctUntilChanged(),\r\n switchMap(val => {\r\n if (typeof val === 'string' || typeof val === 'number') {\r\n return this.DataGetAll(val || '');\r\n }\r\n return [];\r\n }),\r\n // tap(() => this.myControl.setValue(this.options[0]))\r\n );\r\n }\r\n\r\n displayFn(model?: CoreSiteModel): string | undefined {\r\n return model ? (model.title) : undefined;\r\n }\r\n displayOption(model?: CoreSiteModel): string | undefined {\r\n return model ? (model.title) : undefined;\r\n }\r\n async DataGetAll(text: string | number | any): Promise<CoreSiteModel[]> {\r\n const filteModel = new FilterModel();\r\n filteModel.rowPerPage = 20;\r\n filteModel.accessLoad = true;\r\n // this.loading.backdropEnabled = false;\r\n if (text && text.length > 0) {\r\n let filter = new FilterDataModel();\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'SubDomain';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n /*Filters */\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'Domain';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'Title';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n\r\n if (text && typeof +text === 'number' && +text > 0) {\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'Id';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Equal;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n\r\n }\r\n }\r\n \r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n return await this.categoryService.ServiceGetAll(filteModel)\r\n .pipe(\r\n map(response => {\r\n this.dataModelResult = response;\r\n /*select First Item */\r\n if (this.optionSelectFirstItem &&\r\n (!this.dataModelSelect || !this.dataModelSelect.id || this.dataModelSelect.id <= 0) &&\r\n this.dataModelResult.listItems.length > 0) {\r\n this.optionSelectFirstItem = false;\r\n setTimeout(() => {\r\n this.formControl.setValue(this.dataModelResult.listItems[0]);\r\n this.onActionSelect(this.dataModelResult.listItems[0]); \r\n }, 10000);\r\n \r\n }\r\n /*select First Item */\r\n this.loading.Stop(pName);\r\n\r\n return response.listItems;\r\n })\r\n ).toPromise();\r\n }\r\n onActionSelect(model: CoreSiteModel): void {\r\n if (this.optionDisabled) {\r\n return;\r\n }\r\n this.dataModelSelect = model;\r\n this.optionChange.emit(this.dataModelSelect);\r\n }\r\n onActionSelectClear(): void {\r\n if (this.optionDisabled) {\r\n return;\r\n }\r\n this.formControl.setValue(null);\r\n this.optionChange.emit(null);\r\n }\r\n\r\n push(newvalue: CoreSiteModel): Observable<CoreSiteModel[]> {\r\n return this.filteredOptions.pipe(map(items => {\r\n if (items.find(x => x.id === newvalue.id)) {\r\n return items;\r\n }\r\n items.push(newvalue);\r\n return items;\r\n }));\r\n\r\n }\r\n onActionSelectForce(id: number | CoreSiteModel): void {\r\n if (typeof id === 'number' && id > 0) {\r\n if (this.dataModelSelect && this.dataModelSelect.id === id) {\r\n return;\r\n }\r\n if (this.dataModelResult && this.dataModelResult.listItems && this.dataModelResult.listItems.find(x => x.id === id)) {\r\n const item = this.dataModelResult.listItems.find(x => x.id === id);\r\n this.dataModelSelect = item;\r\n this.formControl.setValue(item);\r\n return;\r\n }\r\n this.categoryService.ServiceGetOneById(id).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.filteredOptions = this.push(ret.item);\r\n this.dataModelSelect = ret.item;\r\n this.formControl.setValue(ret.item);\r\n this.optionChange.emit(ret.item);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n }\r\n });\r\n return;\r\n }\r\n if (typeof id === typeof CoreSiteModel) {\r\n this.filteredOptions = this.push((id as CoreSiteModel));\r\n this.dataModelSelect = (id as CoreSiteModel);\r\n this.formControl.setValue(id);\r\n return;\r\n }\r\n this.formControl.setValue(null);\r\n }\r\n\r\n onActionReload(): void {\r\n // if (this.dataModelSelect && this.dataModelSelect.id > 0) {\r\n // this.onActionSelect(null);\r\n // }\r\n this.dataModelSelect = new CoreSiteModel();\r\n // this.optionsData.Select = new CoreSiteModel();\r\n this.loadOptions();\r\n }\r\n}\r\n","<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"{{fieldsInfo['RecordStatus']?.fieldTitle}}\" [(ngModel)]=\"dataModel.recordStatus\"\r\n name=\"dataModel.recordStatus\" #RecordStatus=\"ngModel\" panelClass=\"recordStatus-{{ dataModel.recordStatus }}\"\r\n required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumRecordStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">{{'TITLE.SELECT_STATUS' | translate}}</mat-hint>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n RecordStatus is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- UserType Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"وضعیت\" [(ngModel)]=\"dataModel.userType\" name=\"dataModel.userType\" #UserType=\"ngModel\"\r\n panelClass=\"UserType-{{ dataModel.userType }}\" required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumManageUserAccessUserTypesResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">{{'TITLE.SELECT_STATUS' | translate}}</mat-hint>\r\n <mat-error *ngIf=\"UserType.errors?.required\">\r\n UserType is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Title Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>{{fieldsInfo['Title']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.title\" name=\"dataModel.title\" #Title type=\"text\"\r\n placeholder=\"{{fieldsInfo['Title']?.fieldTitle}}\" minlength=\"3\" maxlength=\"100\" required />\r\n <mat-icon matSuffix *ngIf=\"dataModel.title\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.title = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Title.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"Title.errors?.required\">\r\n Title is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>{{fieldsInfo['Description']?.fieldTitle}}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.description\" name=\"dataModel.description\" #Description type=\"text\"\r\n placeholder=\"{{fieldsInfo['Description']?.fieldTitle}}\" minlength=\"1\" maxlength=\"500\" rows=5></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.description\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.description = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Description.value.length }} / 500</mat-hint>\r\n <mat-error *ngIf=\"Description.errors?.required\">\r\n Description is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n <button type=\"submit\" (click)=\"onFormSubmit()\" class=\"btn btn-success\" [disabled]=\"!vform.form.valid\">\r\n <i class=\"fa fa-check-square-o\"></i> {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>","\r\nimport {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreUserGroupService,\r\n CoreUserGroupModel,\r\n DataFieldInfoModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n Inject,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { TreeModel } from 'src/filemanager-api';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-core-usercategory-edit',\r\n templateUrl: './edit.component.html',\r\n styleUrls: ['./edit.component.scss'],\r\n})\r\nexport class CoreUserGroupEditComponent implements OnInit {\r\n requestId = 0;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreUserGroupEditComponent>,\r\n public coreEnumService: CoreEnumService,\r\n public coreUserGroupService: CoreUserGroupService,\r\n private cmsToastrService: CmsToastrService,\r\n public publicHelper: PublicHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n if (data) {\r\n this.requestId = +data.id || 0;\r\n }\r\n\r\n this.fileManagerTree = this.publicHelper.GetfileManagerTreeConfig();\r\n }\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n selectFileTypeMainImage = ['jpg', 'jpeg', 'png'];\r\n\r\n fileManagerTree: TreeModel;\r\n appLanguage = 'fa';\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreUserGroupModel> = new ErrorExceptionResult<CoreUserGroupModel>();\r\n dataModel: CoreUserGroupModel = new CoreUserGroupModel();\r\n\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n dataModelEnumManageUserAccessUserTypesResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n fileManagerOpenForm = false;\r\n\r\n\r\n ngOnInit(): void {\r\n if (this.requestId > 0) {\r\n this.formInfo.formTitle = this.translate.instant('TITLE.Edit');\r\n this.DataGetOneContent();\r\n } else {\r\n this.cmsToastrService.typeErrorComponentAction();\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n return;\r\n }\r\n this.getEnumManageUserAccessUserTypes();\r\n this.getEnumRecordStatus();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n getEnumManageUserAccessUserTypes(): void {\r\n this.coreEnumService.ServiceEnumManageUserAccessUserTypes().subscribe((next) => {\r\n this.dataModelEnumManageUserAccessUserTypesResult = next;\r\n });\r\n }\r\n DataGetOneContent(): void {\r\n if (this.requestId <= 0) {\r\n this.cmsToastrService.typeErrorEditRowIsNull();\r\n return;\r\n }\r\n\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.Receiving_Information_From_The_Server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreUserGroupService.setAccessLoad();\r\n this.coreUserGroupService.ServiceGetOneById(this.requestId).subscribe({\r\n next: (ret) => {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n this.dataModel = ret.item;\r\n if (ret.isSuccess) {\r\n this.formInfo.formTitle = this.formInfo.formTitle + ' ' + ret.item.title;\r\n this.formInfo.formAlert = '';\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n DataEditContent(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.sending_information_to_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName, this.translate.instant('MESSAGE.sending_information_to_the_server'));\r\n\r\n this.coreUserGroupService.ServiceEdit(this.dataModel).subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.dataModelResult = ret;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_completed_successfully');\r\n this.cmsToastrService.typeSuccessEdit();\r\n this.dialogRef.close({ dialogChangedDate: true });\r\n\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n return;\r\n }\r\n this.formInfo.formSubmitAllow = false;\r\n this.DataEditContent();\r\n }\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n}\r\n","<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n\t<app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"{{fieldsInfo['RecordStatus']?.fieldTitle}}\" [(ngModel)]=\"dataModel.recordStatus\" name=\"dataModel.recordStatus\"\r\n #RecordStatus=\"ngModel\" panelClass=\"recordStatus-{{ dataModel.recordStatus }}\" required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumRecordStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">{{'TITLE.SELECT_STATUS' | translate}}</mat-hint>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n RecordStatus is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <!-- UserType Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"وضعیت\" [(ngModel)]=\"dataModel.userType\" name=\"dataModel.userType\"\r\n #UserType=\"ngModel\" panelClass=\"UserType-{{ dataModel.userType }}\" required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumManageUserAccessUserTypesResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">{{'TITLE.SELECT_STATUS' | translate}}</mat-hint>\r\n <mat-error *ngIf=\"UserType.errors?.required\">\r\n UserType is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>{{fieldsInfo['Title']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.title\" name=\"dataModel.title\" #Title type=\"text\" placeholder=\"{{fieldsInfo['Title']?.fieldTitle}}\"\r\n minlength=\"3\" maxlength=\"100\" required />\r\n <mat-icon matSuffix *ngIf=\"dataModel.title\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.title = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Title.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"Title.errors?.required\">\r\n Title is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>{{fieldsInfo['Description']?.fieldTitle}}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.description\" name=\"dataModel.description\" #Description type=\"text\"\r\n placeholder=\"{{fieldsInfo['Description']?.fieldTitle}}\" minlength=\"1\" maxlength=\"500\" rows=5></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.description\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.description = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Description.value.length }} / 500</mat-hint>\r\n <mat-error *ngIf=\"Description.errors?.required\">\r\n Description is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n\t <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n <button type=\"submit\" (click)=\"onFormSubmit()\" class=\"btn btn-success\" [disabled]=\"!vform.form.valid\">\r\n <i class=\"fa fa-check-square-o\"></i> {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>","\r\nimport {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreUserGroupService,\r\n CoreUserGroupModel,\r\n DataFieldInfoModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n Inject,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { TreeModel } from 'src/filemanager-api';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-core-usercategory-add',\r\n templateUrl: './add.component.html',\r\n styleUrls: ['./add.component.scss'],\r\n})\r\nexport class CoreUserGroupAddComponent implements OnInit {\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreUserGroupAddComponent>,\r\n public coreEnumService: CoreEnumService,\r\n public coreUserGroupService: CoreUserGroupService,\r\n private cmsToastrService: CmsToastrService,\r\n public publicHelper: PublicHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.fileManagerTree = this.publicHelper.GetfileManagerTreeConfig();\r\n }\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n selectFileTypeMainImage = ['jpg', 'jpeg', 'png'];\r\n\r\n fileManagerTree: TreeModel;\r\n appLanguage = 'fa';\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreUserGroupModel> = new ErrorExceptionResult<CoreUserGroupModel>();\r\n dataModel: CoreUserGroupModel = new CoreUserGroupModel();\r\n\r\n\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n dataModelEnumManageUserAccessUserTypesResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n\r\n fileManagerOpenForm = false;\r\n\r\n\r\n\r\n\r\n ngOnInit(): void {\r\n\r\n this.formInfo.formTitle = this.translate.instant('TITLE.ADD');\r\n this.getEnumManageUserAccessUserTypes();\r\n this.DataGetAccess();\r\n this.getEnumRecordStatus();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n\r\n getEnumManageUserAccessUserTypes(): void {\r\n this.coreEnumService.ServiceEnumManageUserAccessUserTypes().subscribe((next) => {\r\n this.dataModelEnumManageUserAccessUserTypesResult = next;\r\n });\r\n }\r\n DataGetAccess(): void {\r\n this.coreUserGroupService\r\n .ServiceViewModel()\r\n .subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n } else {\r\n this.cmsToastrService.typeErrorGetAccess(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeErrorGetAccess(er);\r\n }\r\n }\r\n );\r\n }\r\n DataAddContent(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.sending_information_to_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreUserGroupService.ServiceAdd(this.dataModel).subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.dataModelResult = ret;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_completed_successfully');\r\n this.cmsToastrService.typeSuccessAdd();\r\n this.dialogRef.close({ dialogChangedDate: true });\r\n\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n return;\r\n }\r\n this.formInfo.formSubmitAllow = false;\r\n\r\n this.DataAddContent();\r\n\r\n\r\n }\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n}\r\n","<app-cms-html-list [optionLoading]=\"loading\" [optionTreeDisplay]=\"false\">\r\n <ng-container cms-tree>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n --------------------------------------\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n </ng-container>\r\n <ng-container cms-header>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </ng-container>\r\n <ng-container cms-action>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n <button *ngIf=\"dataModelResult.access.accessAddRow \" (click)=\"onActionbuttonNewRow()\" type=\"button\"\r\n class=\"btn btn-outline-primary\" id=\"openModalButton\" data-toggle=\"modal\" data-target=\"#categoryModal\">{{'ACTION.ADD' |\r\n translate}}</button>\r\n <button *ngIf=\"dataModelResult.access.accessEditRow && tableRowSelected.id>0\" (click)=\"onActionbuttonEditRow()\"\r\n type=\"button\" class=\"btn btn-outline-warning\" data-toggle=\"modal\" data-target=\"#categoryModal\">{{'ACTION.EDIT' |\r\n translate}}</button>\r\n <button *ngIf=\"dataModelResult.access.accessDeleteRow && tableRowSelected.id>0\" (click)=\"onActionbuttonDeleteRow()\"\r\n type=\"button\" class=\"btn btn-outline-danger\">{{'ACTION.DELETE' | translate}}</button>\r\n\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle [(ngModel)]=\"optionsSearch.data.show\">{{'ACTION.SEARCH' | translate}}</mat-slide-toggle>\r\n </a>\r\n\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle (click)=\"onActionbuttonStatist()\">{{'ACTION.STATIST' | translate}}\r\n </mat-slide-toggle>\r\n </a>\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle (click)=\"onActionbuttonExport()\">{{'ACTION.EXPORTFILE' | translate}}\r\n </mat-slide-toggle>\r\n </a>\r\n <button (click)=\"onActionbuttonReload()\" type=\"button\" class=\"btn btn-outline-secondary BTN\">\r\n <mat-icon style=\"font-size: 20px;margin: -1px;\" title=\"{{'ACTION.RELOAD' | translate}}\">refresh</mat-icon>\r\n </button>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n </ng-container>\r\n <ng-container cms-action-area>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n <app-cms-search-list [(options)]=\"optionsSearch\"></app-cms-search-list>\r\n <app-cms-export-list [(options)]=\"optionsExport\"></app-cms-export-list>\r\n <app-cms-statist-list [(options)]=\"optionsStatist\"></app-cms-statist-list>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n </ng-container>\r\n <ng-container cms-body>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-table [dataSource]=\"tableSource\" matSort #tableSort=\"matSort\" (matSortChange)=\"onTableSortData(tableSort)\">\r\n\r\n <!-- ID Column -->\r\n <ng-container matColumnDef=\"Id\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['Id']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.id}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- RecordStatus Column -->\r\n <ng-container matColumnDef=\"RecordStatus\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['RecordStatus']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> <i [ngClass]=\"row.recordStatus|statusClass\" ></i>\r\n <select matNativeControl cmsRecordStatusSelfSave [contentService]=\"contentService\" [row]=\"row\" [ngStyle]=\"{'display': row.id === tableRowSelected.id ? '' : 'none' }\">\r\n </select> </mat-cell>\r\n </ng-container>\r\n <!-- Title Column -->\r\n <ng-container matColumnDef=\"Title\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['Title']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.title}} </mat-cell>\r\n </ng-container>\r\n <!-- TitleML Column -->\r\n <ng-container matColumnDef=\"TitleML\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['TitleML']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.titleML}} </mat-cell>\r\n </ng-container>\r\n <!-- TitleResourceLanguage Column -->\r\n <ng-container matColumnDef=\"TitleResourceLanguage\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['TitleResourceLanguage']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.titleResourceLanguage}} </mat-cell>\r\n </ng-container>\r\n <!-- UserType Column -->\r\n <ng-container matColumnDef=\"UserType\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['UserType']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.userType}} </mat-cell>\r\n </ng-container>\r\n <!-- UserTypeTitle Column -->\r\n <ng-container matColumnDef=\"UserTypeTitle\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['UserTypeTitle']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.userTypeTitle}} </mat-cell>\r\n </ng-container>\r\n\r\n <!-- Action Column -->\r\n <ng-container matColumnDef=\"Action\">\r\n <mat-header-cell *matHeaderCellDef> {{'TITLE.OPTION' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=' Action'>\r\n <!-- Action Menu -->\r\n <button mat-icon-button [matMenuTriggerFor]=\"actionMenu\" aria-label=\"Action Menu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #actionMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"onActionbuttonEditRow(row)\" *ngIf=\"dataModelResult.access.accessEditRow\">\r\n <mat-icon>mode_edit</mat-icon>\r\n <span>{{'ACTION.EDIT' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonDeleteRow(row)\" *ngIf=\"dataModelResult.access.accessDeleteRow\">\r\n <mat-icon>delete_forever</mat-icon>\r\n <span>{{'ACTION.DELETE' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonUserList(row)\">\r\n <mat-icon>person</mat-icon>\r\n <span>{{'ACTION.USERS' | translate}}</span>\r\n </button>\r\n </mat-menu>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"tabledisplayedColumns\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns: tabledisplayedColumns;\" (click)=\"onActionTableRowSelect(row)\"\r\n [ngStyle]=\"{'background': row.id === tableRowSelected.id ? '#d3d3da' : '' }\">\r\n </mat-row>\r\n </mat-table>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </ng-container>\r\n <ng-container cms-footer>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <mat-paginator #paginator [length]=\"(dataModelResult.totalRowCount)\"\r\n [pageIndex]=\"(dataModelResult.currentPageNumber-1)\" [pageSize]=\"dataModelResult.rowPerPage\"\r\n [pageSizeOptions]=\"[5, 10, 20, 100]\" (page)=\"onTablePageingData($event)\"></mat-paginator>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </ng-container>\r\n</app-cms-html-list>","import {NgModule} from '@angular/core';\r\nimport {Routes, RouterModule} from '@angular/router';\r\nimport { CoreUserGroupListComponent } from './list/list.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n children: [\r\n {\r\n path: '',\r\n component: CoreUserGroupListComponent\r\n },\r\n ]\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class CoreUserGroupRouting {\r\n}\r\n","\r\nimport { Router } from '@angular/router';\r\nimport { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport {\r\n CoreUserGroupModel,\r\n CoreUserGroupService,\r\n EnumSortType,\r\n ErrorExceptionResult,\r\n FilterModel,\r\n TokenInfoModel,\r\n FilterDataModel,\r\n EnumRecordStatus,\r\n DataFieldInfoModel\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { ComponentOptionSearchModel } from 'src/app/core/cmsComponentModels/base/componentOptionSearchModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ComponentOptionExportModel } from 'src/app/core/cmsComponentModels/base/componentOptionExportModel';\r\nimport { ComponentOptionStatistModel } from 'src/app/core/cmsComponentModels/base/componentOptionStatistModel';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { Subscription } from 'rxjs';\r\nimport { CoreUserGroupEditComponent } from '../edit/edit.component';\r\nimport { CoreUserGroupAddComponent } from '../add/add.component';\r\nimport { CmsConfirmationDialogService } from 'src/app/shared/cms-confirmation-dialog/cmsConfirmationDialog.service';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n@Component({\r\n selector: 'app-core-usergroup-list',\r\n templateUrl: './list.component.html',\r\n\r\n})\r\nexport class CoreUserGroupListComponent implements OnInit, OnDestroy {\r\n constructor(\r\n public contentService: CoreUserGroupService,\r\n public publicHelper: PublicHelper,\r\n private cmsToastrService: CmsToastrService,\r\n private cmsConfirmationDialogService: CmsConfirmationDialogService,\r\n private router: Router,\r\n private tokenHelper: TokenHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n public dialog: MatDialog) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.optionsSearch.parentMethods = {\r\n onSubmit: (model) => this.onSubmitOptionsSearch(model),\r\n };\r\n this.optionsExport.parentMethods = {\r\n onSubmit: (model) => this.onSubmitOptionExport(model),\r\n };\r\n /*filter Sort*/\r\n this.filteModelContent.sortColumn = 'Id';\r\n this.filteModelContent.sortType = EnumSortType.Descending;\r\n }\r\n comment: string;\r\n author: string;\r\n dataSource: any;\r\n flag = false;\r\n tableContentSelected = [];\r\n\r\n filteModelContent = new FilterModel();\r\n dataModelResult: ErrorExceptionResult<CoreUserGroupModel> = new ErrorExceptionResult<CoreUserGroupModel>();\r\n optionsSearch: ComponentOptionSearchModel = new ComponentOptionSearchModel();\r\n optionsStatist: ComponentOptionStatistModel = new ComponentOptionStatistModel();\r\n optionsExport: ComponentOptionExportModel = new ComponentOptionExportModel();\r\n tokenInfo = new TokenInfoModel();\r\n loading = new ProgressSpinnerModel();\r\n tableRowsSelected: Array<CoreUserGroupModel> = [];\r\n tableRowSelected: CoreUserGroupModel = new CoreUserGroupModel();\r\n tableSource: MatTableDataSource<CoreUserGroupModel> = new MatTableDataSource<CoreUserGroupModel>();\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n\r\n tabledisplayedColumns: string[] = [\r\n 'Id',\r\n 'RecordStatus',\r\n 'Title',\r\n 'TitleML',\r\n 'TitleResourceLanguage',\r\n 'UserType',\r\n 'UserTypeTitle',\r\n 'Action'\r\n ];\r\n\r\n\r\n\r\n expandedElement: CoreUserGroupModel | null;\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n ngOnInit(): void {\r\n this.filteModelContent.sortColumn = 'Title';\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n this.DataGetAll();\r\n });\r\n\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.tokenInfo = next;\r\n this.DataGetAll();\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n DataGetAll(): void {\r\n this.tableRowsSelected = [];\r\n this.tableRowSelected = new CoreUserGroupModel();\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName, this.translate.instant('MESSAGE.get_information_list'));\r\n this.filteModelContent.accessLoad = true;\r\n /*filter CLone*/\r\n const filterModel = JSON.parse(JSON.stringify(this.filteModelContent));\r\n /*filter CLone*/\r\n this.contentService.ServiceGetAllEditor(filterModel).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n\r\n this.dataModelResult = ret;\r\n this.tableSource.data = ret.listItems;\r\n\r\n if (this.optionsSearch.childMethods) {\r\n this.optionsSearch.childMethods.setAccess(ret.access);\r\n }\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n onTableSortData(sort: MatSort): void {\r\n if (this.tableSource && this.tableSource.sort && this.tableSource.sort.active === sort.active) {\r\n if (this.tableSource.sort.start === 'asc') {\r\n sort.start = 'desc';\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Descending;\r\n } else if (this.tableSource.sort.start === 'desc') {\r\n this.filteModelContent.sortColumn = '';\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n } else {\r\n sort.start = 'desc';\r\n }\r\n } else {\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n }\r\n this.tableSource.sort = sort;\r\n this.filteModelContent.currentPageNumber = 0;\r\n this.DataGetAll();\r\n }\r\n onTablePageingData(event?: PageEvent): void {\r\n this.filteModelContent.currentPageNumber = event.pageIndex + 1;\r\n this.filteModelContent.rowPerPage = event.pageSize;\r\n this.DataGetAll();\r\n }\r\n\r\n\r\n onActionbuttonNewRow(): void {\r\n\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessAddRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessAdd();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreUserGroupAddComponent, {\r\n height: '90%',\r\n data: {}\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n this.DataGetAll();\r\n }\r\n });\r\n }\r\n\r\n onActionbuttonEditRow(model: CoreUserGroupModel = this.tableRowSelected): void {\r\n\r\n if (!model || !model.id || model.id === 0) {\r\n this.cmsToastrService.typeErrorSelectedRow();\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessEditRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessEdit();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreUserGroupEditComponent, {\r\n height: '90%',\r\n data: { id: this.tableRowSelected.id }\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n this.DataGetAll();\r\n }\r\n });\r\n }\r\n onActionbuttonDeleteRow(model: CoreUserGroupModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n const emessage = this.translate.instant('MESSAGE.no_row_selected_to_delete');\r\n this.cmsToastrService.typeErrorSelected(emessage);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessDeleteRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessDelete();\r\n return;\r\n }\r\n\r\n\r\n const title = this.translate.instant('MESSAGE.Please_Confirm');\r\n const message = this.translate.instant('MESSAGE.Do_you_want_to_delete_this_content') + '?' + '<br> ( ' + this.tableRowSelected.title + ' ) ';\r\n this.cmsConfirmationDialogService.confirm(title, message)\r\n .then((confirmed) => {\r\n if (confirmed) {\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.contentService.ServiceDelete(this.tableRowSelected.id).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.cmsToastrService.typeSuccessRemove();\r\n this.DataGetAll();\r\n } else {\r\n this.cmsToastrService.typeErrorRemove();\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n )\r\n .catch(() => {\r\n // console.log('User dismissed the dialog (e.g., by using ESC, clicking the cross icon, or clicking outside the dialog)')\r\n }\r\n );\r\n\r\n }\r\n\r\n\r\n onActionbuttonUserList(model: CoreUserGroupModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n const message = this.translate.instant('MESSAGE.no_row_selected_to_display');\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n this.router.navigate(['/core/site/userlist/LinkUserGroupId/', this.tableRowSelected.id]);\r\n }\r\n onActionbuttonStatist(): void {\r\n this.optionsStatist.data.show = !this.optionsStatist.data.show;\r\n if (!this.optionsStatist.data.show) {\r\n return;\r\n }\r\n const statist = new Map<string, number>();\r\n statist.set('Active', 0);\r\n statist.set('All', 0);\r\n this.contentService.ServiceGetCount(this.filteModelContent).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n statist.set('All', ret.totalRowCount);\r\n this.optionsStatist.childMethods.setStatistValue(statist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n\r\n const filterStatist1 = JSON.parse(JSON.stringify(this.filteModelContent));\r\n const fastfilter = new FilterDataModel();\r\n fastfilter.propertyName = 'RecordStatus';\r\n fastfilter.value = EnumRecordStatus.Available;\r\n filterStatist1.filters.push(fastfilter);\r\n this.contentService.ServiceGetCount(filterStatist1).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n statist.set('Active', ret.totalRowCount);\r\n this.optionsStatist.childMethods.setStatistValue(statist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n\r\n }\r\n onActionbuttonExport(): void {\r\n this.optionsExport.data.show = !this.optionsExport.data.show;\r\n this.optionsExport.childMethods.setExportFilterModel(this.filteModelContent);\r\n }\r\n onSubmitOptionExport(model: FilterModel): void {\r\n const exportlist = new Map<string, string>();\r\n exportlist.set('Download', 'loading ... ');\r\n this.contentService.ServiceExportFile(model).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n exportlist.set('Download', ret.linkFile);\r\n this.optionsExport.childMethods.setExportLinkFile(exportlist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n }\r\n\r\n onActionbuttonReload(): void {\r\n this.DataGetAll();\r\n }\r\n onSubmitOptionsSearch(model: any): void {\r\n this.filteModelContent.filters = model;\r\n this.DataGetAll();\r\n }\r\n onActionTableRowSelect(row: CoreUserGroupModel): void {\r\n this.tableRowSelected = row;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CoreUserGroupRouting } from './coreUserGroup.routing';\r\nimport { CoreUserGroupComponent } from './coreUserGroup.component';\r\nimport {\r\n CoreModuleService,\r\n CoreUserGroupService,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SharedModule } from 'src/app/shared.module';\r\nimport { CoreUserGroupTreeComponent } from './tree/tree.component';\r\nimport { CoreUserGroupSelectorComponent } from './selector/selector.component';\r\nimport { CoreUserGroupEditComponent } from './edit/edit.component';\r\nimport { CoreUserGroupAddComponent } from './add/add.component';\r\nimport { CoreUserGroupListComponent } from './list/list.component';\r\n\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\n\r\nimport { CoreUserGroupSelectionlistComponent } from './selectionlist/selectionlist.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CoreUserGroupComponent,\r\n CoreUserGroupListComponent,\r\n CoreUserGroupAddComponent,\r\n CoreUserGroupEditComponent,\r\n CoreUserGroupSelectorComponent,\r\n CoreUserGroupTreeComponent,\r\n CoreUserGroupSelectionlistComponent,\r\n ],\r\n exports: [\r\n CoreUserGroupComponent,\r\n CoreUserGroupListComponent,\r\n CoreUserGroupAddComponent,\r\n CoreUserGroupEditComponent,\r\n CoreUserGroupSelectorComponent,\r\n CoreUserGroupTreeComponent,\r\n CoreUserGroupSelectionlistComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n CoreUserGroupRouting,\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: 'never' }),\r\n \r\n SharedModule.forRoot(),\r\n AngularEditorModule,\r\n \r\n // CmsFileManagerModule\r\n\r\n ],\r\n providers: [\r\n CoreUserGroupService,\r\n CoreModuleService,\r\n ]\r\n})\r\nexport class CoreUserGroupCmsModule {\r\n}\r\n","<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <!-- RecordStatus Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"{{fieldsInfo['RecordStatus']?.fieldTitle}}\" [(ngModel)]=\"dataModel.recordStatus\"\r\n name=\"dataModel.recordStatus\" #RecordStatus=\"ngModel\" panelClass=\"recordStatus-{{ dataModel.recordStatus }}\"\r\n required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumRecordStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">{{'TITLE.SELECT_STATUS' | translate}}</mat-hint>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n RecordStatus is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <!-- Username Field -->\r\n\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Username']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['Username']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.username\" name=\"dataModel.username\" #Username type=\"text\"\r\n [disabled]=\"!fieldsInfo['Username']?.accessAddField\" placeholder=\"{{fieldsInfo['Username']?.fieldTitle}}\"\r\n minlength=\"3\" maxlength=\"100\" required />\r\n <mat-icon matSuffix *ngIf=\"dataModel.username\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.username = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Username.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"Username.errors?.required\">\r\n Username is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Email Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Email']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['Email']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.email\" name=\"dataModel.email\" #Email type=\"text\"\r\n [disabled]=\"!fieldsInfo['Email']?.accessAddField\" placeholder=\"{{fieldsInfo['Email']?.fieldTitle}}\"\r\n minlength=\"3\" maxlength=\"100\" required />\r\n <mat-icon matSuffix *ngIf=\"dataModel.email\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.email = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Email.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"Email.errors?.required\">\r\n Email is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <!-- Mobile Field -->\r\n\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Mobile']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['Mobile']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.mobile\" name=\"dataModel.mobile\" #Mobile type=\"text\" class=\"input-Mobile\"\r\n [disabled]=\"!fieldsInfo['Mobile']?.accessAddField\" placeholder=\"00989120000000\" minlength=\"9\" maxlength=\"20\"\r\n required />\r\n <mat-icon matSuffix *ngIf=\"dataModel.mobile\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.mobile = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Mobile.value.length }} / 20</mat-hint>\r\n <mat-error *ngIf=\"Mobile.errors?.required\">\r\n Mobile is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <!-- password Field -->\r\n\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Pwd']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['Pwd']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.pwd\" name=\"dataModel.pwd\" #Pwd type=\"password\"\r\n [disabled]=\"!fieldsInfo['Pwd']?.accessAddField\" placeholder=\"{{fieldsInfo['Pwd']?.fieldTitle}}\" minlength=\"3\"\r\n maxlength=\"50\" required />\r\n <mat-icon matSuffix *ngIf=\"dataModel.pwd\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.pwd = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ Pwd.value.length }} / 50</mat-hint>\r\n <mat-error *ngIf=\"Pwd.errors?.required\">\r\n password is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <app-password-strength [passwordToCheck]=\"dataModel.pwd\" (passwordStrength)=\"passwordValid($event)\">\r\n </app-password-strength>\r\n\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n <button type=\"submit\" (click)=\"onFormSubmit()\" class=\"btn btn-success\" [disabled]=\"!vform.form.valid\">\r\n <i class=\"fa fa-check-square-o\"></i> {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>","\r\nimport {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreUserService,\r\n CoreUserModel,\r\n DataFieldInfoModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n Inject,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { NodeInterface, TreeModel } from 'src/filemanager-api';\r\nimport { StepperSelectionEvent } from '@angular/cdk/stepper';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-core-user-add',\r\n templateUrl: './add.component.html',\r\n styleUrls: ['./add.component.scss'],\r\n})\r\nexport class CoreUserAddComponent implements OnInit {\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreUserAddComponent>,\r\n public coreEnumService: CoreEnumService,\r\n public coreUserService: CoreUserService,\r\n private cmsToastrService: CmsToastrService,\r\n private publicHelper: PublicHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.fileManagerTree = this.publicHelper.GetfileManagerTreeConfig();\r\n }\r\n selectFileTypeMainImage = ['jpg', 'jpeg', 'png'];\r\n\r\n fileManagerTree: TreeModel;\r\n appLanguage = 'fa';\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreUserModel> = new ErrorExceptionResult<CoreUserModel>();\r\n dataModel: CoreUserModel = new CoreUserModel();\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n passwordIsValid = false;\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n\r\n fileManagerOpenForm = false;\r\n\r\n\r\n onActionFileSelected(model: NodeInterface): void {\r\n this.dataModel.linkMainImageId = model.id;\r\n this.dataModel.linkMainImageIdSrc = model.downloadLinksrc;\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.formInfo.formTitle = this.translate.instant('TITLE.ADD');\r\n this.getEnumRecordStatus();\r\n this.DataGetAccess();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n\r\n DataGetAccess(): void {\r\n this.coreUserService\r\n .ServiceViewModel()\r\n .subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n } else {\r\n this.cmsToastrService.typeErrorGetAccess(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeErrorGetAccess(er);\r\n }\r\n }\r\n );\r\n }\r\n DataAddContent(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.sending_information_to_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreUserService.ServiceAdd(this.dataModel).subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.dataModelResult = ret;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_completed_successfully');\r\n this.cmsToastrService.typeSuccessAdd();\r\n this.dialogRef.close({ dialogChangedDate: true });\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n return;\r\n }\r\n this.formInfo.formSubmitAllow = false;\r\n\r\n this.DataAddContent();\r\n }\r\n passwordValid(event): void {\r\n this.passwordIsValid = event;\r\n }\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n onStepClick(event: StepperSelectionEvent, stepper: MatStepper): void {\r\n if (event.previouslySelectedIndex < event.selectedIndex) {\r\n if (!this.formGroup.valid) {\r\n this.cmsToastrService.typeErrorFormInvalid();\r\n setTimeout(() => {\r\n stepper.selectedIndex = event.previouslySelectedIndex;\r\n // stepper.previous();\r\n }, 10);\r\n }\r\n }\r\n }\r\n}\r\n","<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n\t<app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n \r\n <!-- OldPassword Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"!tokenInfo.userAccessAdminAllowToProfessionalData\">\r\n <mat-label>کلمه عبور قدیم</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.oldPassword\" name=\"dataModel.oldPassword\" #OldPassword type=\"password\" placeholder=\"کلمه عبور قدیم\"\r\n minlength=\"3\" maxlength=\"100\" required />\r\n <mat-icon matSuffix *ngIf=\"dataModel.oldPassword\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.oldPassword = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ OldPassword.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"OldPassword.errors?.required\">\r\n OldPassword is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <!-- NewPassword Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>کلمه عبور جدید</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.newPassword\" name=\"dataModel.newPassword\" #NewPassword type=\"password\" placeholder=\"کلمه عبور جدید\"\r\n minlength=\"3\" maxlength=\"100\" required />\r\n <mat-icon matSuffix *ngIf=\"dataModel.newPassword\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.newPassword = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ NewPassword.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"NewPassword.errors?.required\">\r\n New Password is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <app-password-strength\r\n [passwordToCheck]=\"dataModel.newPassword\"\r\n (passwordStrength)=\"passwordValid($event)\"\r\n ></app-password-strength>\r\n\r\n\r\n <!-- NewPasswordRepeat Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>تکرار کلمه عبور جدید</mat-label>\r\n <input matInput [(ngModel)]=\"NewPasswordRepeat\" name=\"NewPasswordRepeat\" #NewPasswordRepeat2 type=\"password\" placeholder=\"تکرار کلمه عبور جدید\"\r\n minlength=\"3\" maxlength=\"100\" required />\r\n <mat-icon matSuffix *ngIf=\"NewPasswordRepeat\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"this.NewPasswordRepeat = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ NewPasswordRepeat2.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"NewPasswordRepeat2.errors?.required\">\r\n Repeat New Password is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n\t <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n <button type=\"submit\" (click)=\"onFormSubmit()\" class=\"btn btn-success\" [disabled]=\"!vform.form.valid \">\r\n <i class=\"fa fa-check-square-o\"></i> {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>\r\n","\r\nimport {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreAuthService,\r\n CoreUserModel,\r\n AccessModel,\r\n DataFieldInfoModel,\r\n AuthUserChangePasswordModel,\r\n TokenInfoModel\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n Inject,\r\n OnDestroy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { StepperSelectionEvent } from '@angular/cdk/stepper';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { Subscription } from 'rxjs';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\n\r\n@Component({\r\n selector: 'app-core-user-changepassword',\r\n templateUrl: './changePassword.component.html',\r\n styleUrls: ['./changePassword.component.scss'],\r\n})\r\nexport class CoreUserChangePasswordComponent implements OnInit, OnDestroy {\r\n requestLinkUserId = 0;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreUserChangePasswordComponent>,\r\n public coreEnumService: CoreEnumService,\r\n public coreAuthService: CoreAuthService,\r\n private cmsToastrService: CmsToastrService,\r\n public translate: TranslateService,\r\n private tokenHelper: TokenHelper,\r\n private cdr: ChangeDetectorRef,\r\n public publicHelper: PublicHelper,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n if (data) {\r\n this.requestLinkUserId = +data.linkUserId || 0;\r\n }\r\n this.NewPasswordRepeat = '';\r\n }\r\n tokenInfo = new TokenInfoModel();\r\n\r\n NewPasswordRepeat: string;\r\n passwordIsValid = false;\r\n\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreUserModel> = new ErrorExceptionResult<CoreUserModel>();\r\n dataModel: AuthUserChangePasswordModel = new AuthUserChangePasswordModel();\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n dataAccessModel: AccessModel;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n fileManagerOpenForm = false;\r\n\r\n dataCoreUserIds: number[] = [];\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n ngOnInit(): void {\r\n this.formInfo.formTitle = 'تغییر کلمه عبور ';\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n });\r\n\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.tokenInfo = next;\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n DataEditContent(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.sending_information_to_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n if (this.requestLinkUserId > 0) {\r\n this.dataModel.linkUserId = this.requestLinkUserId;\r\n }\r\n this.coreAuthService.ServiceChangePassword(this.dataModel).subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = true;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_completed_successfully');\r\n this.cmsToastrService.typeSuccessEdit();\r\n this.dialogRef.close({ dialogChangedDate: true });\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n passwordValid(event): void {\r\n this.passwordIsValid = event;\r\n }\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n return;\r\n }\r\n if (this.tokenInfo.userAccessAdminAllowToProfessionalData) {\r\n if (!this.dataModel.oldPassword || this.dataModel.oldPassword.length === 0) {\r\n this.dataModel.oldPassword = '000';\r\n }\r\n } else {\r\n if (!this.dataModel.oldPassword || this.dataModel.oldPassword.length === 0) {\r\n this.cmsToastrService.typeErrorMessage(this.translate.instant('MESSAGE.Enter_the_previous_password'));\r\n\r\n return;\r\n }\r\n }\r\n if (!this.dataModel.newPassword || this.dataModel.newPassword.length === 0) {\r\n this.cmsToastrService.typeErrorMessage(this.translate.instant('MESSAGE.Enter_the_new_password'));\r\n\r\n\r\n\r\n return;\r\n }\r\n if (this.dataModel.newPassword !== this.NewPasswordRepeat) {\r\n this.cmsToastrService.typeErrorMessage(this.translate.instant('MESSAGE.The_new_password_is_equivalent_to_a_duplicate'));\r\n\r\n\r\n return;\r\n }\r\n this.formInfo.formSubmitAllow = false;\r\n this.DataEditContent();\r\n }\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n onStepClick(event: StepperSelectionEvent, stepper: MatStepper): void {\r\n if (event.previouslySelectedIndex < event.selectedIndex) {\r\n if (!this.formGroup.valid) {\r\n this.cmsToastrService.typeErrorFormInvalid();\r\n setTimeout(() => {\r\n stepper.selectedIndex = event.previouslySelectedIndex;\r\n // stepper.previous();\r\n }, 10);\r\n }\r\n }\r\n }\r\n\r\n}\r\n"," <div class=\"ntk-cms-html-card-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n {{ formInfo.formTitle }}\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-body\">\r\n\t<app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <app-cms-json-list [dataModel]=\"dataModel\" [optionMethod]=\"1\" ></app-cms-json-list>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n\t <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n <div class=\"form-actions\">\r\n <small class=\"form-text text-muted\">{{ formInfo.formAlert }} </small>\r\n <small class=\"form-text text-muted danger\">{{ formInfo.formError }}\r\n </small>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <div class=\"form-actions\" *ngIf=\"formInfo.formSubmitAllow && !loading.display\">\r\n <button type=\"button\" (click)=\"onFormCancel()\" class=\"btn btn-light\">\r\n <i class=\"ft-x\"></i> {{'ACTION.CANCEL' | translate}}\r\n </button>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n\r\n","\r\nimport {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreUserService,\r\n CoreUserModel,\r\n TokenInfoModel,\r\n DataFieldInfoModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n Inject,\r\n OnDestroy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { Subscription } from 'rxjs';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-application-memberinfo-view',\r\n templateUrl: './view.component.html',\r\n styleUrls: ['./view.component.scss']\r\n})\r\nexport class CoreUserViewComponent implements OnInit, OnDestroy {\r\n requestId = 0;\r\n constructor(\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CoreUserViewComponent>,\r\n public coreEnumService: CoreEnumService,\r\n public coreUserService: CoreUserService,\r\n private cmsToastrService: CmsToastrService,\r\n public publicHelper: PublicHelper,\r\n private cdr: ChangeDetectorRef,\r\n private tokenHelper: TokenHelper,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n if (data) {\r\n this.requestId = + data.id || 0;\r\n }\r\n }\r\n tokenInfo = new TokenInfoModel();\r\n\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreUserModel> = new ErrorExceptionResult<CoreUserModel>();\r\n dataModel: CoreUserModel = new CoreUserModel();\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumSendSmsStatusTypeResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n\r\n fileManagerOpenForm = false;\r\n\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n ngOnInit(): void {\r\n this.formInfo.formTitle = 'مشاهده ';\r\n if (this.requestId <= 0) {\r\n this.cmsToastrService.typeErrorComponentAction();\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n return;\r\n }\r\n this.DataGetOneContent();\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n });\r\n\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.tokenInfo = next;\r\n });\r\n this.getEnumSendSmsStatusType();\r\n }\r\n\r\n getEnumSendSmsStatusType(): void {\r\n this.coreEnumService.ServiceEnumSendSmsStatusType().subscribe((next) => {\r\n this.dataModelEnumSendSmsStatusTypeResult = next;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n\r\n\r\n DataGetOneContent(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.Receiving_Information_From_The_Server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n /*ÙŽAccess Field*/\r\n this.coreUserService.setAccessLoad();\r\n\r\n this.coreUserService.ServiceGetOneById(this.requestId).subscribe({\r\n next: (ret) => {\r\n /*ÙŽAccess Field*/\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n this.dataModel = ret.item;\r\n if (ret.isSuccess) {\r\n this.formInfo.formTitle = this.formInfo.formTitle + ' ' + ret.item.id;\r\n this.formInfo.formAlert = '';\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n onFormCancel(): void {\r\n this.dialogRef.close({ dialogChangedDate: false });\r\n }\r\n}\r\n","<app-cms-guide-notice [Key]=\"'core.user.list'\" [svg]=\"'assets/media/svg/icons/General/Notifications1.svg'\"></app-cms-guide-notice>\r\n<app-cms-html-list [optionLoading]=\"loading\" [optionTreeDisplay]=\"false\">\r\n <ng-container cms-tree>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n --------------------------------------\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n </ng-container>\r\n <ng-container cms-header>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </ng-container>\r\n <ng-container cms-action>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n <button *ngIf=\"dataModelResult.access.accessWatchRow && tableRowSelected.id>0\" (click)=\"onActionbuttonViewRow()\"\r\n type=\"button\" class=\"btn btn-outline-secondary BTN\" data-toggle=\"modal\" data-target=\"#categoryModal\">{{'ACTION.VIEW' |\r\n translate}}</button>\r\n <button *ngIf=\"dataModelResult.access.accessAddRow \" (click)=\"onActionbuttonNewRow()\" type=\"button\"\r\n class=\"btn btn-outline-primary\" id=\"openModalButton\" data-toggle=\"modal\" data-target=\"#categoryModal\">{{'ACTION.ADD' |\r\n translate}}</button>\r\n <button *ngIf=\"dataModelResult.access.accessEditRow && tableRowSelected.id>0\" (click)=\"onActionbuttonEditRow()\"\r\n type=\"button\" class=\"btn btn-outline-warning\" data-toggle=\"modal\" data-target=\"#categoryModal\">{{'ACTION.EDIT' |\r\n translate}}</button>\r\n <button *ngIf=\"dataModelResult.access.accessDeleteRow && tableRowSelected.id>0\" (click)=\"onActionbuttonDeleteRow()\"\r\n type=\"button\" class=\"btn btn-outline-danger\">{{'ACTION.DELETE' | translate}}</button>\r\n\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle [(ngModel)]=\"optionsSearch.data.show\">{{'ACTION.SEARCH' | translate}}</mat-slide-toggle>\r\n </a>\r\n\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle (click)=\"onActionbuttonStatist()\">{{'ACTION.STATIST' | translate}}\r\n </mat-slide-toggle>\r\n </a>\r\n <a class=\"btn btn-outline-info btn-sm BTN\">\r\n <mat-slide-toggle (click)=\"onActionbuttonExport()\">{{'ACTION.EXPORTFILE' | translate}}\r\n </mat-slide-toggle>\r\n </a>\r\n <button (click)=\"onActionbuttonReload()\" type=\"button\" class=\"btn btn-outline-secondary BTN\">\r\n <mat-icon style=\"font-size: 20px;margin: -1px;\" title=\"{{'ACTION.RELOAD' | translate}}\">refresh</mat-icon>\r\n </button>\r\n <button (click)=\"onActionBackToParentSiteList()\" *ngIf=\"this.requestLinkSiteId>0\" type=\"button\"\r\n class=\"btn btn-outline-success BTN\">{{'ACTION.BACK' | translate}}</button>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n </ng-container>\r\n <ng-container cms-action-area>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n <app-cms-search-list [(options)]=\"optionsSearch\"></app-cms-search-list>\r\n <app-cms-export-list [(options)]=\"optionsExport\"></app-cms-export-list>\r\n <app-cms-statist-list [(options)]=\"optionsStatist\"></app-cms-statist-list>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n </ng-container>\r\n <ng-container cms-body>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-table [dataSource]=\"tableSource\" matSort #tableSort=\"matSort\" (matSortChange)=\"onTableSortData(tableSort)\">\r\n <!-- LinkMainImageIdSrc Column -->\r\n <ng-container matColumnDef=\"LinkMainImageIdSrc\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{'TITLE.PICTURE' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\">\r\n <img *ngIf=\"row?.linkMainImageIdSrc?.length>0\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\" aria-hidden\r\n src=\"{{row.linkMainImageIdSrc | cmsthumbnail}}\" height=\"40\" width=\"40\" />\r\n\r\n </mat-cell>\r\n </ng-container>\r\n <!-- ID Column -->\r\n <ng-container matColumnDef=\"Id\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['Id']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.id}} </mat-cell>\r\n </ng-container>\r\n <!-- LinkSiteId Column -->\r\n <ng-container matColumnDef=\"LinkSiteId\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['LinkSiteId']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.linkSiteId}} </mat-cell>\r\n </ng-container>\r\n <!-- RecordStatus Column -->\r\n <ng-container matColumnDef=\"RecordStatus\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['RecordStatus']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> <i [ngClass]=\"row.recordStatus|statusClass\" ></i>\r\n <select matNativeControl cmsRecordStatusSelfSave [contentService]=\"contentService\" [row]=\"row\" [ngStyle]=\"{'display': row.id === tableRowSelected.id ? '' : 'none' }\">\r\n </select> </mat-cell>\r\n </ng-container>\r\n <!-- Username Column -->\r\n <ng-container matColumnDef=\"Username\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['Username']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.username}} </mat-cell>\r\n </ng-container>\r\n <!-- Mobile Column -->\r\n <ng-container matColumnDef=\"Mobile\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['Mobile']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.mobile}} </mat-cell>\r\n </ng-container>\r\n <!-- Email Column -->\r\n <ng-container matColumnDef=\"Email\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['Email']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.email}} </mat-cell>\r\n </ng-container>\r\n <!-- Name Column -->\r\n <ng-container matColumnDef=\"Name\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['Name']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.name}} </mat-cell>\r\n </ng-container>\r\n <!-- LastName Column -->\r\n <ng-container matColumnDef=\"LastName\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['LastName']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.lastName}} </mat-cell>\r\n </ng-container>\r\n <!-- CompanyName Column -->\r\n <ng-container matColumnDef=\"CompanyName\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['CompanyName']?.fieldTitle}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{row.companyName}} </mat-cell>\r\n </ng-container>\r\n <!-- CreatedDate Column -->\r\n <ng-container matColumnDef=\"CreatedDate\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['CreatedDate']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{ publicHelper.LocaleDate(row.createdDate) }} </mat-cell>\r\n </ng-container>\r\n <!-- UpdatedDate Column -->\r\n <ng-container matColumnDef=\"UpdatedDate\">\r\n <mat-header-cell *matHeaderCellDef mat-sort-header> {{fieldsInfo['UpdatedDate']?.fieldTitle}}\r\n </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\"> {{ publicHelper.LocaleDate(row.updatedDate) }} </mat-cell>\r\n </ng-container>\r\n <!-- Action Column -->\r\n <ng-container matColumnDef=\"Action\">\r\n <mat-header-cell *matHeaderCellDef> {{'TITLE.OPTION' | translate}} </mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=' Action'>\r\n <!-- Action Menu -->\r\n <button mat-icon-button [matMenuTriggerFor]=\"actionMenu\" aria-label=\"Action Menu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #actionMenu=\"matMenu\">\r\n <button mat-menu-item (click)=\"onActionbuttonViewRow(row)\">\r\n <mat-icon>visibility</mat-icon>\r\n <span>{{'ACTION.VIEW' | translate}}</span>\r\n </button>\r\n <button mat-menu-item *ngIf=\"tokenInfo.userAccessAdminAllowToProfessionalData || row.id==tokenInfo.userId\"\r\n (click)=\"onActionbuttonEditRow(row)\">\r\n <mat-icon>mode_edit</mat-icon>\r\n <span>{{'ACTION.EDIT' | translate}}</span>\r\n </button>\r\n <button mat-menu-item *ngIf=\"tokenInfo.userAccessAdminAllowToProfessionalData || row.id==tokenInfo.userId\"\r\n (click)=\"onActionbuttonChangePassword(row)\">\r\n <mat-icon>lock</mat-icon>\r\n <span>تغییر کلمه عبور</span>\r\n </button>\r\n <button mat-menu-item *ngIf=\"tokenInfo.userAccessAdminAllowToProfessionalData\"\r\n (click)=\"onActionbuttonDeleteRow(row)\">\r\n <mat-icon>delete_forever</mat-icon>\r\n <span>{{'ACTION.DELETE' | translate}}</span>\r\n </button>\r\n <button mat-menu-item *ngIf=\"tokenInfo.userAccessAdminAllowToProfessionalData\"\r\n (click)=\"onActionbuttonLoginToRow(row)\">\r\n <mat-icon>login</mat-icon>\r\n <span>ورود به این کاربر</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonSiteList(row)\">\r\n <mat-icon>supervised_user_circle</mat-icon>\r\n <span>{{'ACTION.MEMBER_SITES' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonSiteByGroupList(row)\">\r\n <mat-icon>supervisor_account</mat-icon>\r\n <span>{{'ACTION.ACCESS_MEMBER_SITES' | translate}}</span>\r\n </button>\r\n <button mat-menu-item (click)=\"onActionbuttonResller(row)\"\r\n *ngIf=\"tokenInfo.userAccessAdminAllowToAllData || tokenInfo.siteId==row.id\">\r\n <mat-icon>devices</mat-icon>\r\n <span> زیرمجموع بازاریابی</span>\r\n </button>\r\n </mat-menu>\r\n </mat-cell>\r\n </ng-container>\r\n <mat-header-row *matHeaderRowDef=\"tabledisplayedColumns\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns: tabledisplayedColumns;\" (click)=\"onActionTableRowSelect(row)\"\r\n [ngStyle]=\"{'background': row.id === tableRowSelected.id ? '#d3d3da' : '' }\">\r\n </mat-row>\r\n </mat-table>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </ng-container>\r\n <ng-container cms-footer>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n <mat-paginator #paginator [length]=\"(dataModelResult.totalRowCount)\"\r\n [pageIndex]=\"(dataModelResult.currentPageNumber-1)\" [pageSize]=\"dataModelResult.rowPerPage\"\r\n [pageSizeOptions]=\"[5, 10, 20, 100]\" (page)=\"onTablePageingData($event)\"></mat-paginator>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </ng-container>\r\n</app-cms-html-list>","\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport {\r\n CoreUserModel,\r\n CoreUserService,\r\n CoreAuthService,\r\n EnumSortType,\r\n ErrorExceptionResult,\r\n FilterModel,\r\n TokenInfoModel,\r\n FilterDataModel,\r\n EnumRecordStatus,\r\n DataFieldInfoModel,\r\n AuthRenewTokenModel\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { ComponentOptionSearchModel } from 'src/app/core/cmsComponentModels/base/componentOptionSearchModel';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ComponentOptionExportModel } from 'src/app/core/cmsComponentModels/base/componentOptionExportModel';\r\nimport { ComponentOptionStatistModel } from 'src/app/core/cmsComponentModels/base/componentOptionStatistModel';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { Subscription } from 'rxjs';\r\nimport { CoreUserAddComponent } from '../add/add.component';\r\nimport { CmsConfirmationDialogService } from 'src/app/shared/cms-confirmation-dialog/cmsConfirmationDialog.service';\r\nimport { CoreUserChangePasswordComponent } from '../changePassword/changePassword.component';\r\nimport { CoreUserViewComponent } from '../view/view.component';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n@Component({\r\n selector: 'app-core-user-list',\r\n templateUrl: './list.component.html',\r\n\r\n})\r\nexport class CoreUserListComponent implements OnInit, OnDestroy {\r\n requestLinkSiteId = 0;\r\n constructor(\r\n private coreUserService: CoreUserService,\r\n public contentService: CmsConfirmationDialogService,\r\n public publicHelper: PublicHelper,\r\n private router: Router,\r\n private cmsToastrService: CmsToastrService,\r\n private activatedRoute: ActivatedRoute,\r\n private coreAuthService: CoreAuthService,\r\n private tokenHelper: TokenHelper,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n public dialog: MatDialog) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.requestLinkSiteId = + Number(this.activatedRoute.snapshot.paramMap.get('LinkSiteId'));\r\n\r\n this.optionsSearch.parentMethods = {\r\n onSubmit: (model) => this.onSubmitOptionsSearch(model),\r\n };\r\n this.optionsExport.parentMethods = {\r\n onSubmit: (model) => this.onSubmitOptionExport(model),\r\n };\r\n /*filter Sort*/\r\n this.filteModelContent.sortColumn = 'Id';\r\n this.filteModelContent.sortType = EnumSortType.Descending;\r\n if (this.requestLinkSiteId > 0) {\r\n const filter = new FilterDataModel();\r\n filter.propertyAnyName = 'LinkSiteId';\r\n filter.propertyName = 'SiteUsers';\r\n filter.value = this.requestLinkSiteId;\r\n this.filteModelContent.filters.push(filter);\r\n }\r\n }\r\n comment: string;\r\n author: string;\r\n dataSource: any;\r\n flag = false;\r\n tableContentSelected = [];\r\n\r\n filteModelContent = new FilterModel();\r\n dataModelResult: ErrorExceptionResult<CoreUserModel> = new ErrorExceptionResult<CoreUserModel>();\r\n optionsSearch: ComponentOptionSearchModel = new ComponentOptionSearchModel();\r\n optionsStatist: ComponentOptionStatistModel = new ComponentOptionStatistModel();\r\n optionsExport: ComponentOptionExportModel = new ComponentOptionExportModel();\r\n tokenInfo = new TokenInfoModel();\r\n loading = new ProgressSpinnerModel();\r\n tableRowsSelected: Array<CoreUserModel> = [];\r\n tableRowSelected: CoreUserModel = new CoreUserModel();\r\n tableSource: MatTableDataSource<CoreUserModel> = new MatTableDataSource<CoreUserModel>();\r\n\r\n\r\n tabledisplayedColumns: string[] = [\r\n 'LinkMainImageIdSrc',\r\n 'Id',\r\n 'RecordStatus',\r\n 'Username',\r\n 'Mobile',\r\n 'Email',\r\n 'Name',\r\n 'LastName',\r\n 'CompanyName',\r\n 'Action'\r\n ];\r\n\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n expandedElement: CoreUserModel | null;\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n ngOnInit(): void {\r\n this.filteModelContent.sortColumn = 'Title';\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n this.DataGetAll();\r\n });\r\n\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.tokenInfo = next;\r\n this.DataGetAll();\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n DataGetAll(): void {\r\n this.tableRowsSelected = [];\r\n this.tableRowSelected = new CoreUserModel();\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName, this.translate.instant('MESSAGE.get_information_list'));\r\n this.filteModelContent.accessLoad = true;\r\n /*filter CLone*/\r\n const filterModel = JSON.parse(JSON.stringify(this.filteModelContent));\r\n /*filter CLone*/\r\n this.coreUserService.ServiceGetAllEditor(filterModel).subscribe({\r\n next: (ret) => {\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n if (ret.isSuccess) {\r\n this.dataModelResult = ret;\r\n this.tableSource.data = ret.listItems;\r\n if (this.tokenInfo.userAccessAdminAllowToAllData || this.tokenInfo.userAccessAdminAllowToProfessionalData) {\r\n this.tabledisplayedColumns = this.publicHelper.listAddIfNotExist(\r\n this.tabledisplayedColumns,\r\n 'LinkSiteId',\r\n 0\r\n );\r\n } else {\r\n this.tabledisplayedColumns = this.publicHelper.listRemoveIfExist(\r\n this.tabledisplayedColumns,\r\n 'LinkSiteId'\r\n );\r\n }\r\n\r\n if (this.optionsSearch.childMethods) {\r\n this.optionsSearch.childMethods.setAccess(ret.access);\r\n }\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n onTableSortData(sort: MatSort): void {\r\n if (this.tableSource && this.tableSource.sort && this.tableSource.sort.active === sort.active) {\r\n if (this.tableSource.sort.start === 'asc') {\r\n sort.start = 'desc';\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Descending;\r\n } else if (this.tableSource.sort.start === 'desc') {\r\n this.filteModelContent.sortColumn = '';\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n } else {\r\n sort.start = 'desc';\r\n }\r\n } else {\r\n this.filteModelContent.sortColumn = sort.active;\r\n this.filteModelContent.sortType = EnumSortType.Ascending;\r\n }\r\n this.tableSource.sort = sort;\r\n this.filteModelContent.currentPageNumber = 0;\r\n this.DataGetAll();\r\n }\r\n onTablePageingData(event?: PageEvent): void {\r\n this.filteModelContent.currentPageNumber = event.pageIndex + 1;\r\n this.filteModelContent.rowPerPage = event.pageSize;\r\n this.DataGetAll();\r\n }\r\n\r\n\r\n onActionbuttonNewRow(): void {\r\n\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessAddRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessAdd();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreUserAddComponent, {\r\n height: '90%',\r\n data: {}\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n this.DataGetAll();\r\n }\r\n });\r\n }\r\n\r\n onActionbuttonViewRow(model: CoreUserModel = this.tableRowSelected): void {\r\n\r\n if (!model || !model.id || model.id === 0) {\r\n this.cmsToastrService.typeErrorSelectedRow();\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessWatchRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessWatch();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreUserViewComponent, {\r\n height: '90%',\r\n data: { id: this.tableRowSelected.id }\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n // this.DataGetAll();\r\n }\r\n });\r\n }\r\n onActionbuttonEditRow(model: CoreUserModel = this.tableRowSelected): void {\r\n\r\n if (!model || !model.id || model.id === 0) {\r\n this.cmsToastrService.typeErrorSelectedRow();\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessEditRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessEdit();\r\n return;\r\n }\r\n this.router.navigate(['/core/user/edit', this.tableRowSelected.id]);\r\n\r\n }\r\n onActionbuttonChangePassword(model: CoreUserModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n this.cmsToastrService.typeErrorSelectedRow();\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n if (this.tokenInfo.userId != model.id &&\r\n (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessEditRow\r\n )) {\r\n this.cmsToastrService.typeErrorAccessEdit();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreUserChangePasswordComponent, {\r\n //height: '90%',\r\n data: { linkUserId: this.tableRowSelected.id }\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n this.DataGetAll();\r\n }\r\n });\r\n }\r\n\r\n onActionbuttonDeleteRow(mode: CoreUserModel = this.tableRowSelected): void {\r\n if (mode == null || !mode.id || mode.id === 0) {\r\n this.cmsToastrService.typeErrorDeleteRowIsNull();\r\n return;\r\n }\r\n this.tableRowSelected = mode;\r\n if (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessDeleteRow\r\n ) {\r\n this.cmsToastrService.typeErrorAccessDelete();\r\n return;\r\n }\r\n const title = this.translate.instant('MESSAGE.Please_Confirm');\r\n const message = this.translate.instant('MESSAGE.Do_you_want_to_delete_this_content') + '?' + '<br> ( ' + this.tableRowSelected.username + ' ) ';\r\n this.contentService.confirm(title, message)\r\n .then((confirmed) => {\r\n if (confirmed) {\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.coreUserService.ServiceDelete(this.tableRowSelected.id).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.cmsToastrService.typeSuccessRemove();\r\n this.DataGetAll();\r\n } else {\r\n this.cmsToastrService.typeErrorRemove();\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n )\r\n .catch(() => {\r\n // console.log('User dismissed the dialog (e.g., by using ESC, clicking the cross icon, or clicking outside the dialog)')\r\n }\r\n );\r\n }\r\n onActionbuttonLoginToRow(model: CoreUserModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n\r\n const message = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n\r\n let authModel: AuthRenewTokenModel;\r\n authModel = new AuthRenewTokenModel();\r\n authModel.userId = this.tableRowSelected.id;\r\n this.coreAuthService.ServiceRenewToken(authModel).subscribe({\r\n next: (res) => {\r\n if (res.isSuccess) {\r\n this.cmsToastrService.typeSuccessSelected();\r\n this.router.navigate(['/']);\r\n }\r\n else {\r\n this.cmsToastrService.typeErrorSelected();\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n }\r\n\r\n onActionbuttonStatist(): void {\r\n this.optionsStatist.data.show = !this.optionsStatist.data.show;\r\n if (!this.optionsStatist.data.show) {\r\n return;\r\n }\r\n const statist = new Map<string, number>();\r\n statist.set('Active', 0);\r\n statist.set('All', 0);\r\n this.coreUserService.ServiceGetCount(this.filteModelContent).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n statist.set('All', ret.totalRowCount);\r\n this.optionsStatist.childMethods.setStatistValue(statist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n\r\n const filterStatist1 = JSON.parse(JSON.stringify(this.filteModelContent));\r\n const fastfilter = new FilterDataModel();\r\n fastfilter.propertyName = 'RecordStatus';\r\n fastfilter.value = EnumRecordStatus.Available;\r\n filterStatist1.filters.push(fastfilter);\r\n this.coreUserService.ServiceGetCount(filterStatist1).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n statist.set('Active', ret.totalRowCount);\r\n this.optionsStatist.childMethods.setStatistValue(statist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n\r\n }\r\n onActionbuttonExport(): void {\r\n this.optionsExport.data.show = !this.optionsExport.data.show;\r\n this.optionsExport.childMethods.setExportFilterModel(this.filteModelContent);\r\n }\r\n onSubmitOptionExport(model: FilterModel): void {\r\n const exportlist = new Map<string, string>();\r\n exportlist.set('Download', 'loading ... ');\r\n this.coreUserService.ServiceExportFile(model).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n exportlist.set('Download', ret.linkFile);\r\n this.optionsExport.childMethods.setExportLinkFile(exportlist);\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n }\r\n }\r\n );\r\n }\r\n\r\n onActionbuttonReload(): void {\r\n this.DataGetAll();\r\n }\r\n onSubmitOptionsSearch(model: any): void {\r\n this.filteModelContent.filters = model;\r\n this.DataGetAll();\r\n }\r\n onActionTableRowSelect(row: CoreUserModel): void {\r\n this.tableRowSelected = row;\r\n }\r\n onActionbuttonSiteList(model: CoreUserModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n this.cmsToastrService.typeErrorSelectedRow();\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n this.router.navigate(['/core/site/list/LinkUserId', this.tableRowSelected.id]);\r\n }\r\n onActionbuttonSiteByGroupList(model: CoreUserModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n this.cmsToastrService.typeErrorSelectedRow();\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n this.router.navigate(['/core/site/userlist/LinkUserId/', this.tableRowSelected.id]);\r\n }\r\n onActionbuttonResller(model: CoreUserModel = this.tableRowSelected): void {\r\n if (!model || !model.id || model.id === 0) {\r\n const message = this.translate.instant('ERRORMESSAGE.MESSAGE.typeErrorSelectedRow');\r\n this.cmsToastrService.typeErrorSelected(message);\r\n return;\r\n }\r\n this.tableRowSelected = model;\r\n\r\n this.router.navigate(['/core/user/reseller-chart/LinkUserId', this.tableRowSelected.id]);\r\n }\r\n onActionBackToParentSiteList(): void {\r\n this.router.navigate(['/core/site/']);\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-core-user',\r\n template: '<router-outlet></router-outlet>',\r\n})\r\nexport class CoreUserComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<app-cms-html-notice [svg]=\"'assets/media/svg/icons/Design/Edit.svg'\">\r\n <h4> {{'TITLE.Edit' | translate}}</h4>\r\n در این بخش شما میتوانید مشخصات کاربر را ویرایش نمایید.\r\n <br>\r\n</app-cms-html-notice>\r\n<form (ngSubmit)=\"onFormSubmit()\" #vform=\"ngForm\">\r\n <!-- <div class=\"ntk-cms-html-card-header\"> -->\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n <!-- ویرایش : {{dataModel.name}} {{dataModel.lastName}} -->\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n <!-- </div> -->\r\n <div class=\"ntk-cms-html-card-body\">\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <mat-horizontal-stepper (selectionChange)=\"onStepClick($event,stepper)\" #stepper>\r\n\r\n <mat-step label=\"{{'TITLE.REQUIRED_INFORMATION' | translate}}\" state=\"main\">\r\n <!-- RecordStatus Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['RecordStatus']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['RecordStatus']?.fieldTitle}}</mat-label>\r\n <mat-select [disabled]=\"!fieldsInfo['RecordStatus']?.accessEditField\"\r\n placeholder=\"{{fieldsInfo['RecordStatus']?.fieldTitle}}\" [(ngModel)]=\"dataModel.recordStatus\"\r\n name=\"dataModel.recordStatus\" #RecordStatus=\"ngModel\" panelClass=\"recordStatus-{{ dataModel.recordStatus }}\"\r\n required>\r\n <mat-option *ngFor=\"\r\n let item of dataModelEnumRecordStatusResult.listItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['Email']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint style=\"text-align: left;\">{{'TITLE.SELECT_STATUS' | translate}}</mat-hint>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n RecordStatus is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <!-- Username Field -->\r\n\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Username']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['Username']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.username\" name=\"dataModel.username\" #Username type=\"text\"\r\n [disabled]=\"!fieldsInfo['Username']?.accessEditField\" placeholder=\"{{fieldsInfo['Username']?.fieldTitle}}\"\r\n minlength=\"3\" maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.username\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.username = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['Username']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint style=\"text-align: left;\">{{ Username.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"Username.errors?.required\">\r\n {{fieldsInfo['Username']?.fieldTitle}} <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <!-- Email Field -->\r\n\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Email']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['Email']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.email\" name=\"dataModel.email\" #Email type=\"text\"\r\n [disabled]=\"!fieldsInfo['Email']?.accessEditField\" placeholder=\"{{fieldsInfo['Email']?.fieldTitle}}\"\r\n minlength=\"3\" maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.email\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.email = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['Email']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint style=\"text-align: left;\">{{ Email.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"Email.errors?.required\">\r\n {{fieldsInfo['Email']?.fieldTitle}} <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <!-- EmailConfirmed Field -->\r\n <div class=\"ntk-full-width\">\r\n <mat-slide-toggle [(ngModel)]=\"dataModel.emailConfirmed\"\r\n *ngIf=\"fieldsInfo['EmailConfirmed']?.accessWatchField\"\r\n [disabled]=\"!fieldsInfo['EmailConfirmed']?.accessEditField\" name=\"dataModel.emailConfirmed\">\r\n {{fieldsInfo['EmailConfirmed']?.fieldTitle}}\r\n </mat-slide-toggle>\r\n </div>\r\n <!-- Mobile Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Mobile']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['Mobile']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.mobile\" name=\"dataModel.mobile\" #Mobile type=\"text\"\r\n class=\"input-Mobile\" [disabled]=\"!fieldsInfo['Mobile']?.accessEditField\"\r\n placeholder=\"{{fieldsInfo['Mobile']?.fieldTitle}}\" minlength=\"3\" maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.mobile\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.mobile = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['Mobile']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint style=\"text-align: left;\">{{ Mobile.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"Mobile.errors?.required\">\r\n {{fieldsInfo['Mobile']?.fieldTitle}} <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- MobileConfirmed Field -->\r\n <div class=\"ntk-full-width\">\r\n <mat-slide-toggle [(ngModel)]=\"dataModel.mobileConfirmed\"\r\n *ngIf=\"fieldsInfo['MobileConfirmed']?.accessWatchField\"\r\n [disabled]=\"!fieldsInfo['MobileConfirmed']?.accessEditField\" name=\"dataModel.mobileConfirmed\">\r\n {{fieldsInfo['MobileConfirmed']?.fieldTitle}}\r\n </mat-slide-toggle>\r\n </div>\r\n <!-- ExpireDate Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['ExpireDate']?.accessWatchField\">\r\n <mat-label>{{fieldsInfo['ExpireDate']?.fieldTitle}}</mat-label>\r\n <input matInput [matDatepicker]=\"ExpireDate\" [(ngModel)]=\"dataModel.expireDate\" name=\"dataModel.expireDate\"\r\n disabled=\"{{!fieldsInfo['ExpireDate']?.accessEditField}}\"\r\n placeholder=\"{{fieldsInfo['ExpireDate']?.fieldTitle}}\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.expireDate && fieldsInfo['ExpireDate']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.expireDate = null\">close</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['ExpireDate']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-datepicker-toggle matSuffix [for]=\"ExpireDate\"></mat-datepicker-toggle>\r\n <mat-datepicker touchUi #ExpireDate></mat-datepicker>\r\n </mat-form-field>\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button (click)=\"onActionBackToParent()\">\r\n {{'ACTION.BACK' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" (click)=\"onActionbuttonChangePassword()\"\r\n *ngIf=\"this.tokenInfo.userId == this.dataModel.id || dataModelResult.access.accessEditRow\">\r\n {{'AUTH.FORGOT.PASSWORD' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n\r\n <mat-step label=\"مشخصات شخصی\" state=\"seo\">\r\n <p>اطلاعات صاØب Øساب را وارد کنید</p>\r\n\r\n\r\n <!-- Name Field -->\r\n\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Name']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['Name']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.name\" name=\"dataModel.name\" #Name type=\"text\"\r\n [disabled]=\"!fieldsInfo['Name']?.accessEditField\" placeholder=\"{{fieldsInfo['Name']?.fieldTitle}}\"\r\n minlength=\"3\" maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.name\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.name = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['Name']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint style=\"text-align: left;\">{{ Name.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"Name.errors?.required\">\r\n {{fieldsInfo['Name']?.fieldTitle}} <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <!-- LastName Field -->\r\n\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['LastName']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['LastName']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.lastName\" name=\"dataModel.lastName\" #LastName type=\"text\"\r\n [disabled]=\"!fieldsInfo['LastName']?.accessEditField\" placeholder=\"{{fieldsInfo['LastName']?.fieldTitle}}\"\r\n minlength=\"3\" maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.lastName\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.lastName = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['LastName']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint style=\"text-align: left;\">{{ LastName.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"LastName.errors?.required\">\r\n {{fieldsInfo['LastName']?.fieldTitle}} <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <!-- BirthDay Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['BirthDay']?.accessWatchField\">\r\n <mat-label>{{fieldsInfo['BirthDay']?.fieldTitle}}</mat-label>\r\n <input matInput [matDatepicker]=\"BirthDay\" [(ngModel)]=\"dataModel.birthDay\" name=\"dataModel.birthDay\"\r\n [disabled]=\"!fieldsInfo['BirthDay']?.accessEditField\"\r\n placeholder=\"{{fieldsInfo['BirthDay']?.fieldTitle}}\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.birthDay && fieldsInfo['BirthDay']?.accessEditField\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.birthDay = null\">close</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['BirthDay']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-datepicker-toggle matSuffix [for]=\"BirthDay\"></mat-datepicker-toggle>\r\n <mat-datepicker touchUi #BirthDay></mat-datepicker>\r\n </mat-form-field>\r\n <!-- CompanyName Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['CompanyName']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['CompanyName']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.companyName\" name=\"dataModel.companyName\" #CompanyName type=\"text\"\r\n [disabled]=\"!fieldsInfo['CompanyName']?.accessEditField\"\r\n placeholder=\"{{fieldsInfo['CompanyName']?.fieldTitle}}\" minlength=\"3\" maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.companyName\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.companyName = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['CompanyName']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint style=\"text-align: left;\">{{ CompanyName.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"CompanyName.errors?.required\">\r\n {{fieldsInfo['CompanyName']?.fieldTitle}} <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <!-- Tell Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Tell']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['Tell']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.tell\" name=\"dataModel.tell\" #Tell type=\"text\"\r\n [disabled]=\"!fieldsInfo['Tell']?.accessEditField\" placeholder=\"{{fieldsInfo['Tell']?.fieldTitle}}\"\r\n minlength=\"3\" maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.tell\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.tell = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['Tell']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint style=\"text-align: left;\">{{ Tell.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"Tell.errors?.required\">\r\n {{fieldsInfo['Tell']?.fieldTitle}} <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- PostalCode Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['PostalCode']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['PostalCode']?.fieldTitle}}</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.postalCode\" name=\"dataModel.postalCode\" #PostalCode type=\"text\"\r\n [disabled]=\"!fieldsInfo['PostalCode']?.accessEditField\"\r\n placeholder=\"{{fieldsInfo['PostalCode']?.fieldTitle}}\" minlength=\"3\" maxlength=\"100\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.postalCode\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.postalCode = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['PostalCode']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint style=\"text-align: left;\">{{ PostalCode.value.length }} / 100</mat-hint>\r\n <mat-error *ngIf=\"PostalCode.errors?.required\">\r\n {{fieldsInfo['PostalCode']?.fieldTitle}} <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- Address Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['Address']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['Address']?.fieldTitle}}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.address\" name=\"dataModel.address\"\r\n [disabled]=\"!fieldsInfo['Address']?.accessEditField\" #Address type=\"text\"\r\n placeholder=\" {{fieldsInfo['Address']?.fieldTitle}}\" minlength=\"1\" maxlength=\"1000\" rows=5></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.address\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.address = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint align=\"start\">\r\n <mat-icon matSuffix class=\"info-field-icon\">info</mat-icon>\r\n <strong class=\"info-field-text\">{{fieldsInfo['Address']?.FieldDescription}}</strong>\r\n </mat-hint>\r\n <mat-hint style=\"text-align: left;\">{{ Address.value.length }} / 1000</mat-hint>\r\n </mat-form-field>\r\n\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"accent\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n <mat-step label=\"تنظیمات امینتی\" state=\"seo\">\r\n <p>تنظیمات لازیم برای امنیت این Øساب کاربری</p>\r\n\r\n <!-- LinkResellerUserId Field -->\r\n <app-cms-user-selector [optionDisabled]=\"!fieldsInfo['LinkResellerUserId']?.accessEditField\"\r\n [optionSelectForce]=\"dataModel.linkResellerUserId\" [(loading)]=\"loading\"\r\n (optionChange)=\"onActionSelectorLinkResellerUserIdSelect($event)\" [optionPlaceholder]=\"'کاربر معرÙ'\">\r\n </app-cms-user-selector>\r\n <!-- LinkResellerSiteId Field -->\r\n <app-cms-site-selector [optionDisabled]=\"!fieldsInfo['LinkResellerSiteId']?.accessEditField\"\r\n [optionSelectForce]=\"dataModel.linkResellerSiteId\" [(loading)]=\"loading\"\r\n (optionChange)=\"onActionSelectorLinkResellerSiteIdSelect($event)\" [optionPlaceholder]=\"'سایت معرÙ'\">\r\n </app-cms-site-selector>\r\n <!-- ExpireLockAccount Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['ExpireLockAccount']?.accessWatchField\">\r\n <mat-label>{{fieldsInfo['ExpireLockAccount']?.fieldTitle}}</mat-label>\r\n <input matInput [matDatepicker]=\"ExpireLockAccount\" [(ngModel)]=\"dataModel.expireLockAccount\"\r\n name=\"dataModel.expireLockAccount\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.expireLockAccount && fieldsInfo['ExpireLockAccount']?.accessEditField\"\r\n matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"dataModel.expireLockAccount = null\">close</mat-icon>\r\n <mat-datepicker-toggle matSuffix [for]=\"ExpireLockAccount\"></mat-datepicker-toggle>\r\n <mat-datepicker touchUi #ExpireLockAccount></mat-datepicker>\r\n </mat-form-field>\r\n\r\n\r\n <!-- FirewallAllowIP Field -->\r\n <mat-form-field class=\"ntk-full-width\" *ngIf=\"fieldsInfo['FirewallAllowIP']?.accessWatchField\">\r\n <mat-label> {{fieldsInfo['FirewallAllowIP']?.fieldTitle}}</mat-label>\r\n <textarea matInput [(ngModel)]=\"dataModel.firewallAllowIP\" name=\"dataModel.firewallAllowIP\"\r\n [disabled]=\"!fieldsInfo['FirewallAllowIP']?.accessEditField\" #FirewallAllowIP type=\"text\"\r\n placeholder=\" {{fieldsInfo['FirewallAllowIP']?.fieldTitle}}\" minlength=\"1\" maxlength=\"1000\"\r\n rows=5></textarea>\r\n <mat-icon matSuffix *ngIf=\"dataModel.firewallAllowIP\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.firewallAllowIP = ''\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-hint style=\"text-align: left;\">{{ FirewallAllowIP.value.length }} / 1000</mat-hint>\r\n </mat-form-field>\r\n\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"accent\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"button\" mat-raised-button color=\"primary\" [disabled]=\"!vform.form.valid\" matStepperNext>\r\n {{'ACTION.NEXT' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n <mat-step label=\"{{'TITLE.ATTACH_FILES' | translate}}\" state=\"file\">\r\n <p>Ùایل های مربوط به این Øساب کاربری</p>\r\n\r\n\r\n <mat-form-field class=\"ntk-full-width\">\r\n <img *ngIf=\"dataModel?.linkMainImageIdSrc?.length>0\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\"\r\n aria-hidden src=\"{{dataModel.linkMainImageIdSrc | cmsthumbnail}}\" height=\"50\" width=\"50\" />\r\n <mat-label (click)=\"fileManagerOpenForm = true\">Ùایل عکس</mat-label>\r\n <input matInput [(ngModel)]=\"dataModel.linkMainImageId\" name=\"dataModel.linkMainImageId\" #LinkMainImageId\r\n type=\"text\" placeholder=\"شناسه Ùایل آیکن\" (click)=\"fileManagerOpenForm = true\" />\r\n <mat-icon matSuffix *ngIf=\"dataModel.linkMainImageId\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"dataModel.linkMainImageId = null\">close</mat-icon>\r\n <mat-icon matSuffix (click)=\"fileManagerOpenForm = true\">mode_edit</mat-icon>\r\n </mat-form-field>\r\n\r\n <cms-file-manager (itemSelected)=\"onActionFileSelected($event)\" [language]=\"appLanguage\"\r\n [selectFileType]=\"selectFileTypeMainImage\" [isPopup]=\"true\" [(openForm)]=\"fileManagerOpenForm\"\r\n [openDirectUploadView]=\"true\" [tree]=\"fileManagerTree\" [openFilemanagerButtonLabelKey]=\"'select'\"\r\n [openFilemanagerButtonView]=\"false\">\r\n </cms-file-manager>\r\n <div *ngIf=\"formInfo.formSubmitAllow && !loading.display\" class=\"ntk-button-row\">\r\n <button type=\"button\" mat-raised-button color=\"accent\" matStepperPrevious>\r\n {{'ACTION.BEFOR' | translate}}\r\n </button>\r\n <button type=\"submit\" mat-raised-button color=\"success\" [disabled]=\"!vform.form.valid\">\r\n {{'ACTION.SAVE' | translate}}\r\n </button>\r\n </div>\r\n </mat-step>\r\n\r\n <!-- Icon overrides. -->\r\n <ng-template matStepperIcon=\"main\">\r\n <mat-icon>call_end</mat-icon>\r\n </ng-template>\r\n <ng-template matStepperIcon=\"seo\">\r\n <mat-icon>call_end</mat-icon>\r\n </ng-template>\r\n <ng-template matStepperIcon=\"file\">\r\n <mat-icon>forum</mat-icon>\r\n </ng-template>\r\n <ng-template matStepperIcon=\"loaction\">\r\n <mat-icon>forum</mat-icon>\r\n </ng-template>\r\n\r\n </mat-horizontal-stepper>\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-message\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </div>\r\n <div class=\"ntk-cms-html-card-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </div>\r\n</form>","\r\nimport {\r\n CoreEnumService,\r\n EnumInfoModel,\r\n ErrorExceptionResult,\r\n FormInfoModel,\r\n CoreUserService,\r\n CoreUserModel,\r\n AccessModel,\r\n DataFieldInfoModel,\r\n TokenInfoModel,\r\n CoreSiteModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n OnDestroy,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { NodeInterface, TreeModel } from 'src/filemanager-api';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { StepperSelectionEvent } from '@angular/cdk/stepper';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { Subscription } from 'rxjs';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { CoreUserChangePasswordComponent } from '../changePassword/changePassword.component';\r\n\r\n@Component({\r\n selector: 'app-core-user-edit',\r\n templateUrl: './edit.component.html',\r\n styleUrls: ['./edit.component.scss'],\r\n})\r\nexport class CoreUserEditComponent implements OnInit, OnDestroy {\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n public coreEnumService: CoreEnumService,\r\n public coreUserService: CoreUserService,\r\n private cmsToastrService: CmsToastrService,\r\n private publicHelper: PublicHelper,\r\n private tokenHelper: TokenHelper,\r\n private router: Router,\r\n private cdr: ChangeDetectorRef,\r\n public dialog: MatDialog,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.requestId = + Number(this.activatedRoute.snapshot.paramMap.get('Id'));\r\n this.fileManagerTree = this.publicHelper.GetfileManagerTreeConfig();\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n });\r\n\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((value) => {\r\n this.tokenInfo = value;\r\n this.DataGetOneContent();\r\n });\r\n }\r\n tokenInfo: TokenInfoModel;\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n requestId = 0;\r\n selectFileTypeMainImage = ['jpg', 'jpeg', 'png'];\r\n\r\n fileManagerTree: TreeModel;\r\n appLanguage = 'fa';\r\n\r\n loading = new ProgressSpinnerModel();\r\n dataModelResult: ErrorExceptionResult<CoreUserModel> = new ErrorExceptionResult<CoreUserModel>();\r\n dataModel: CoreUserModel = new CoreUserModel();\r\n @ViewChild('vform', { static: false }) formGroup: FormGroup;\r\n\r\n formInfo: FormInfoModel = new FormInfoModel();\r\n dataModelEnumRecordStatusResult: ErrorExceptionResult<EnumInfoModel> = new ErrorExceptionResult<EnumInfoModel>();\r\n dataAccessModel: AccessModel;\r\n fieldsInfo: Map<string, DataFieldInfoModel> = new Map<string, DataFieldInfoModel>();\r\n\r\n fileManagerOpenForm = false;\r\n\r\n onActionFileSelected(model: NodeInterface): void {\r\n this.dataModel.linkMainImageId = model.id;\r\n this.dataModel.linkMainImageIdSrc = model.downloadLinksrc;\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.requestId === 0) {\r\n this.requestId = this.tokenInfo.userId;\r\n }\r\n if (this.requestId === 0) {\r\n this.cmsToastrService.typeErrorAddRowParentIsNull();\r\n return;\r\n }\r\n\r\n this.formInfo.formTitle = this.translate.instant('TITLE.Edit');\r\n this.DataGetOneContent();\r\n this.getEnumRecordStatus();\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n this.dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n }\r\n DataGetOneContent(): void {\r\n\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.Receiving_Information_From_The_Server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n /*ÙŽAccess Field*/\r\n this.coreUserService.setAccessLoad();\r\n this.coreUserService.ServiceGetOneById(this.requestId).subscribe({\r\n next: (ret) => {\r\n /*ÙŽAccess Field*/\r\n this.dataAccessModel = ret.access;\r\n this.fieldsInfo = this.publicHelper.fieldInfoConvertor(ret.access);\r\n\r\n this.dataModel = ret.item;\r\n if (ret.isSuccess) {\r\n this.formInfo.formTitle = this.formInfo.formTitle + ' ' + ret.item.username;\r\n this.formInfo.formAlert = '';\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n\r\n DataEditContent(): void {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.sending_information_to_the_server');\r\n this.formInfo.formError = '';\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName, this.translate.instant('MESSAGE.sending_information_to_the_server'));\r\n\r\n\r\n this.coreUserService.ServiceEdit(this.dataModel).subscribe({\r\n next: (ret) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.dataModelResult = ret;\r\n if (ret.isSuccess) {\r\n this.formInfo.formAlert = this.translate.instant('MESSAGE.registration_completed_successfully');\r\n this.cmsToastrService.typeSuccessEdit();\r\n if (ret.item.id === this.tokenInfo.userId) {\r\n this.tokenHelper.getCurrentToken();\r\n }\r\n } else {\r\n this.formInfo.formAlert = this.translate.instant('ERRORMESSAGE.MESSAGE.typeError');\r\n this.formInfo.formError = ret.errorMessage;\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.formInfo.formSubmitAllow = true;\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onFormSubmit(): void {\r\n if (!this.formGroup.valid) {\r\n return;\r\n }\r\n this.formInfo.formSubmitAllow = false;\r\n this.DataEditContent();\r\n }\r\n onActionBackToParent(): void {\r\n this.router.navigate(['/core/user/']);\r\n }\r\n onStepClick(event: StepperSelectionEvent, stepper: MatStepper): void {\r\n if (event.previouslySelectedIndex < event.selectedIndex) {\r\n if (!this.formGroup.valid) {\r\n this.cmsToastrService.typeErrorFormInvalid();\r\n setTimeout(() => {\r\n stepper.selectedIndex = event.previouslySelectedIndex;\r\n // stepper.previous();\r\n }, 10);\r\n }\r\n }\r\n }\r\n onActionSelectorLinkResellerSiteIdSelect(model: CoreSiteModel | null): void {\r\n this.dataModel.linkResellerSiteId = null;\r\n if (!model || model.id <= 0) {\r\n return;\r\n }\r\n this.dataModel.linkResellerSiteId = model.id;\r\n }\r\n onActionSelectorLinkResellerUserIdSelect(model: CoreUserModel | null): void {\r\n this.dataModel.linkResellerUserId = null;\r\n if (!model || model.id <= 0) {\r\n return;\r\n }\r\n this.dataModel.linkResellerUserId = model.id;\r\n }\r\n onActionbuttonChangePassword(): void {\r\n if (this.tokenInfo.userId != this.dataModel.id &&\r\n (\r\n this.dataModelResult == null ||\r\n this.dataModelResult.access == null ||\r\n !this.dataModelResult.access.accessEditRow\r\n )) {\r\n this.cmsToastrService.typeErrorAccessEdit();\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(CoreUserChangePasswordComponent, {\r\n //height: '90%',\r\n data: { linkUserId: this.dataModel.id }\r\n });\r\n dialogRef.afterClosed().subscribe(result => {\r\n if (result && result.dialogChangedDate) {\r\n\r\n }\r\n });\r\n }\r\n\r\n}\r\n\r\n\r\n","<div class=\"ntk-cms-html-tree-header\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n\r\n <button (click)=\"onActionReload()\" type=\"button\" class=\"btn btn-outline-secondary BTN\">\r\n <mat-icon style=\"font-size: 20px;margin: -1px;\" title=\"{{'ACTION.RELOAD' | translate}}\">refresh</mat-icon>\r\n </button>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n</div>\r\n<div class=\"row\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n\r\n <div class=\" col-lg-6 col-sm-12\">\r\n <div class=\"ntk-cms-html-tree-body\">\r\n <mat-tree class=\"category-tree cursor-pointer\" [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding (click)=\"onActionSelect(node)\"\r\n [ngStyle]=\"{'background': dataModelSelect.linkUserId>0 && dataModelSelect.linkUserId === node.linkUserId ? '#d3d3da' : '' }\">\r\n <button mat-icon-button disabled></button>\r\n {{node.User.id}}/{{node.User.name}} {{node.User.lastName}}\r\n </mat-tree-node>\r\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasChild\">\r\n <li>\r\n <div class=\"mat-tree-node\" (click)=\"onActionSelect(node)\"\r\n [ngStyle]=\"{'background': dataModelSelect.linkUserId>0 && dataModelSelect.linkUserId === node.linkUserId ? '#d3d3da' : '' }\">\r\n <button mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'Toggle ' + node.title\"\r\n (click)=\"onActionSelect(node)\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n {{node.User.id}}/{{node.User.name}} {{node.User.lastName}}\r\n </div>\r\n <ul [class.category-tree-invisible]=\"!treeControl.isExpanded(node)\">\r\n <ng-container matTreeNodeOutlet></ng-container>\r\n </ul>\r\n </li>\r\n </mat-nested-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n <div class=\" col-lg-6 col-sm-12\">\r\n <div class=\"ntk-cms-html-tree-body\">\r\n <div class=\"table\" *ngIf=\"dataModelSelect?.siteChilds?.length>0\">\r\n <div class=\"th\">\r\n <div class=\"td\">شناسه سایت</div>\r\n <div class=\"td\">عنوان</div>\r\n <div class=\"td\">دامنه</div>\r\n <div class=\"td\">زیر دامنه</div>\r\n <div class=\"td\">تاریخ ساخت</div>\r\n <div class=\"clear\"></div>\r\n </div>\r\n <div class=\"tr\" *ngFor=\"let item of dataModelSelect.siteChilds\">\r\n <div class=\"td\">{{item.site?.id}}</div>\r\n <div class=\"td\">{{item.site?.title}}</div>\r\n <div class=\"td\">{{item.site?.domain}}</div>\r\n <div class=\"td\">{{item.site?.subDomain}}</div>\r\n <div class=\"td\">{{item.site?.createdDate |persianDate}}</div>\r\n <div style=\"clear: both;\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n</div>\r\n<div class=\"ntk-cms-html-tree-footer\">\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n\r\n\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n</div>","\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\nimport { NestedTreeControl } from '@angular/cdk/tree';\r\nimport {\r\n MatTreeNestedDataSource,\r\n} from '@angular/material/tree';\r\nimport {\r\n CoreEnumService,\r\n ErrorExceptionResult,\r\n FilterModel,\r\n CoreUserService,\r\n RessellerChartModel,\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { Subscription } from 'rxjs';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-core-user-reseller-chart',\r\n templateUrl: './reseller-chart.component.html',\r\n styleUrls: ['./reseller-chart.component.scss'],\r\n})\r\nexport class CoreUserResellerChartComponent implements OnInit, OnDestroy {\r\n requestLinkUserId = 0;\r\n constructor(\r\n private cmsToastrService: CmsToastrService,\r\n public coreEnumService: CoreEnumService,\r\n public categoryService: CoreUserService,\r\n public dialog: MatDialog,\r\n private activatedRoute: ActivatedRoute,\r\n private cdr: ChangeDetectorRef,\r\n private tokenHelper: TokenHelper,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n this.requestLinkUserId = + Number(this.activatedRoute.snapshot.paramMap.get('LinkUserId'));\r\n\r\n }\r\n\r\n dataModelSelect: RessellerChartModel = new RessellerChartModel();\r\n dataModelResult: ErrorExceptionResult<RessellerChartModel> = new ErrorExceptionResult<RessellerChartModel>();\r\n filteModel = new FilterModel();\r\n @Input() loading = new ProgressSpinnerModel();\r\n treeControl = new NestedTreeControl<RessellerChartModel>(node => node.userChilds);\r\n\r\n dataSource = new MatTreeNestedDataSource<RessellerChartModel>();\r\n @Output() optionChange = new EventEmitter<RessellerChartModel>();\r\n cmsApiStoreSubscribe: Subscription;\r\n @Input() optionReload = () => this.onActionReload();\r\n\r\n // hasChild = (_: number, node: RessellerChartModel) => false;\r\n hasChild(_: number, node: RessellerChartModel): boolean {\r\n // if (node && node.siteChilds && node.siteChilds.length > 0) {\r\n // return true;\r\n // }\r\n if (node && node.userChilds && node.userChilds.length > 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.DataGetAll();\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((value) => {\r\n this.DataGetAll();\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n DataGetAll(): void {\r\n this.filteModel.rowPerPage = 200;\r\n this.filteModel.accessLoad = true;\r\n\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n this.categoryService.ServiceGetRessellerChart(this.requestLinkUserId).subscribe({\r\n next: (ret) => {\r\n if (ret.isSuccess) {\r\n this.dataModelResult = ret;\r\n this.dataSource.data = [this.dataModelResult.item];\r\n } else {\r\n this.cmsToastrService.typeErrorMessage(ret.errorMessage);\r\n }\r\n this.loading.Stop(pName);\r\n },\r\n error: (er) => {\r\n this.cmsToastrService.typeError(er);\r\n this.loading.Stop(pName);\r\n }\r\n }\r\n );\r\n }\r\n onActionSelect(model: RessellerChartModel): void {\r\n this.dataModelSelect = model;\r\n this.optionChange.emit(this.dataModelSelect);\r\n }\r\n onActionReload(): void {\r\n if (this.dataModelSelect) {\r\n this.onActionSelect(this.dataModelSelect);\r\n }\r\n else {\r\n this.onActionSelect(null);\r\n }\r\n this.dataModelSelect = new RessellerChartModel();\r\n this.DataGetAll();\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { CoreUserListComponent } from './list/list.component';\r\nimport { CoreUserComponent } from './coreUser.component';\r\nimport { CoreUserEditComponent } from './edit/edit.component';\r\nimport { CoreUserResellerChartComponent } from './reseller-chart/reseller-chart.component';\r\n\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: CoreUserComponent,\r\n children: [\r\n {\r\n path: '',\r\n component: CoreUserListComponent\r\n }, {\r\n path: 'siteuser/:LinkSiteId',\r\n component: CoreUserListComponent\r\n },\r\n {\r\n path: 'edit/:Id',\r\n component: CoreUserEditComponent\r\n },\r\n {\r\n path: 'reseller-chart',\r\n component: CoreUserResellerChartComponent\r\n\r\n },\r\n {\r\n path: 'reseller-chart/LinkUserId/:LinkUserId',\r\n component: CoreUserResellerChartComponent\r\n\r\n }\r\n\r\n ]\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class CoreUserRouting {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CoreUserRouting } from './coreUser.routing';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { SharedModule } from 'src/app/shared.module';\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\n\r\nimport { CmsFileManagerModule } from 'src/filemanager-api';\r\nimport { CoreEnumService, CoreModuleService, CoreSiteUserService, CoreUserGroupService, CoreUserService } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { CmsConfirmationDialogService } from 'src/app/shared/cms-confirmation-dialog/cmsConfirmationDialog.service';\r\nimport { CoreUserComponent } from './coreUser.component';\r\nimport { CoreUserListComponent } from './list/list.component';\r\nimport { CoreUserAddComponent } from './add/add.component';\r\nimport { CoreUserEditComponent } from './edit/edit.component';\r\nimport { CoreUserSelectorComponent } from './selector/selector.component';\r\nimport { CoreUserChangePasswordComponent } from './changePassword/changePassword.component';\r\nimport { CoreUserViewComponent } from './view/view.component';\r\nimport { CoreUserResellerChartComponent } from './reseller-chart/reseller-chart.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CoreUserComponent,\r\n CoreUserListComponent,\r\n CoreUserAddComponent,\r\n CoreUserEditComponent,\r\n CoreUserChangePasswordComponent,\r\n CoreUserSelectorComponent,\r\n CoreUserViewComponent,\r\n CoreUserResellerChartComponent\r\n ],\r\n exports: [\r\n CoreUserComponent,\r\n CoreUserListComponent,\r\n CoreUserAddComponent,\r\n CoreUserEditComponent,\r\n CoreUserChangePasswordComponent,\r\n CoreUserSelectorComponent,\r\n CoreUserViewComponent,\r\n CoreUserResellerChartComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n CoreUserRouting,\r\n FormsModule,\r\n ReactiveFormsModule.withConfig({ warnOnNgModelWithFormControl: 'never' }),\r\n \r\n SharedModule.forRoot(),\r\n AngularEditorModule,\r\n \r\n CmsFileManagerModule\r\n ],\r\n providers: [\r\n CoreModuleService,\r\n CoreEnumService,\r\n CoreUserService,\r\n CoreUserGroupService,\r\n CoreSiteUserService,\r\n CmsConfirmationDialogService\r\n ]\r\n})\r\nexport class CoreUserModule { }\r\n","import { FilterModel } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { ComponentOptionModel } from './componentOptionModel';\r\n\r\nexport class ComponentOptionExportModel\r\n implements\r\n ComponentOptionModel<\r\n ComponentOptionExportDataModel,\r\n ComponentOptionExportChildMethodsModel,\r\n ComponentOptionExportParentMethodsModel\r\n > {\r\n childMethods: ComponentOptionExportChildMethodsModel;\r\n parentMethods: ComponentOptionExportParentMethodsModel;\r\n data: ComponentOptionExportDataModel = new ComponentOptionExportDataModel();\r\n constructor() {\r\n this.data = new ComponentOptionExportDataModel();\r\n }\r\n}\r\n\r\nexport class ComponentOptionExportChildMethodsModel {\r\n setExportLinkFile: (x: Map<string, string>) => void;\r\n setExportFilterModel: (x: FilterModel) => void;\r\n}\r\nexport class ComponentOptionExportParentMethodsModel {\r\n onSubmit: (model: FilterModel) => void;\r\n}\r\nexport class ComponentOptionExportDataModel {\r\n show = false;\r\n}\r\n","import { AccessModel, FilterDataModel } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { ComponentOptionModel } from './componentOptionModel';\r\n\r\nexport class ComponentOptionSearchModel\r\n implements\r\n ComponentOptionModel<\r\n ComponentOptionSearchDataModel,\r\n ComponentOptionSearchChildMethodsModel,\r\n ComponentOptionSearchParentMethodsModel\r\n > {\r\n childMethods: ComponentOptionSearchChildMethodsModel;\r\n parentMethods: ComponentOptionSearchParentMethodsModel;\r\n data: ComponentOptionSearchDataModel = new ComponentOptionSearchDataModel();\r\n constructor() {\r\n this.data = new ComponentOptionSearchDataModel();\r\n }\r\n}\r\n\r\nexport class ComponentOptionSearchChildMethodsModel {\r\n setAccess: (x: AccessModel) => void;\r\n}\r\nexport class ComponentOptionSearchParentMethodsModel {\r\n onSubmit: (x: Array<FilterDataModel>) => void;\r\n}\r\nexport class ComponentOptionSearchDataModel {\r\n show = false;\r\n select: any;\r\n access: AccessModel;\r\n}\r\n","import { FilterDataModel } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { ComponentOptionModel } from './componentOptionModel';\r\n\r\nexport class ComponentOptionStatistModel\r\n implements\r\n ComponentOptionModel<\r\n ComponentOptionStatistDataModel,\r\n ComponentOptionStatistChildMethodsModel,\r\n ComponentOptionStatistParentMethodsModel\r\n > {\r\n childMethods: ComponentOptionStatistChildMethodsModel;\r\n parentMethods: ComponentOptionStatistParentMethodsModel;\r\n data: ComponentOptionStatistDataModel = new ComponentOptionStatistDataModel();\r\n constructor() {\r\n this.data = new ComponentOptionStatistDataModel();\r\n }\r\n}\r\n\r\nexport class ComponentOptionStatistChildMethodsModel {\r\n setStatistValue: (x: Map<string, number>) => void;\r\n}\r\nexport class ComponentOptionStatistParentMethodsModel {\r\n onSubmit: (x: Array<FilterDataModel>) => void;\r\n}\r\nexport class ComponentOptionStatistDataModel {\r\n show = false;\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n ChangeDetectorRef,\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Inject,\r\n Input,\r\n Renderer2\r\n} from '@angular/core';\r\nimport { EnumRecordStatus } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { PublicHelper } from '../helpers/publicHelper';\r\nimport { CmsToastrService } from '../services/cmsToastr.service';\r\n\r\nconst SUCCESS_ICON = 'https://i.pinimg.com/originals/7b/dd/1b/7bdd1bc7db7fd48025d4e39a0e2f0fd8.jpg';\r\nconst ERROR_ICON = 'https://www.seekpng.com/png/detail/334-3345964_error-icon-download-attention-symbol.png';\r\nconst LOADING_ICON = 'https://replit.com/public/images/loading_dots.gif';\r\n/**\r\n * `persistOnChange` directive takes an Input - @param observableFn which @returns an Observable ideally returned by an http request.\r\n * and shows loader when the request is in-flight and shows a tick mark on API success.\r\n * In API failure cases, shows the error message below the host.\r\n * Ideally to be used with the Select element(not limitted to)\r\n */\r\n@Directive({\r\n selector: '[cmsRecordStatusSelfSave]'\r\n})\r\nexport class CmsRecordStatusSelfSaveDirective {\r\n @Input('row')\r\n row: any;\r\n @Input('contentService')\r\n contentService: any;\r\n constructor(\r\n private elRef: ElementRef,\r\n private renderer: Renderer2,\r\n public publicHelper: PublicHelper,\r\n public cmsToastrService: CmsToastrService,\r\n private cdr: ChangeDetectorRef,\r\n @Inject(DOCUMENT) private document: Document,\r\n // @Optional() @Host() select: SelectControlValueAccessor\r\n ) {\r\n\r\n this.getEnumRecordStatus();\r\n }\r\n async getEnumRecordStatus(): Promise<void> {\r\n const dataModelEnumRecordStatusResult = await this.publicHelper.getEnumRecordStatus();\r\n dataModelEnumRecordStatusResult.listItems.forEach(co => {\r\n const option = document.createElement('option');\r\n option.innerHTML = ' '+co.title + ' ' + '<i Class=\"' + this.iconStatus(co.value) + '\"></i>';\r\n option.value = co.value.toString();\r\n this.elRef.nativeElement.add(option);\r\n });\r\n\r\n if (this.elRef.nativeElement.options.length > 0 && this.row && this.row.recordStatus) {\r\n this.renderer.setProperty(this.elRef.nativeElement, 'value', this.row.recordStatus);\r\n }\r\n }\r\n\r\n @HostListener('change')\r\n onChange() {\r\n const element: HTMLElement = this.elRef.nativeElement;\r\n const recordStatus = element['value'] as EnumRecordStatus;\r\n this.addLoader(element);\r\n this.contentService.ServiceSetStatus(this.row.id, recordStatus).subscribe(\r\n (next) => {\r\n if (next.isSuccess) {\r\n this.handleSuccessCase(element);\r\n this.cmsToastrService.typeSuccessSetStatus(next.errorMessage);\r\n this.row.recordStatus = recordStatus|0;\r\n this.cdr.markForCheck();\r\n }\r\n else {\r\n this.renderer.setProperty(this.elRef.nativeElement, 'value', this.row.recordStatus);\r\n this.cmsToastrService.typeErrorSetStatus(next.errorMessage);\r\n this.handleErrorCase(element);\r\n }\r\n },\r\n (error) => {\r\n this.renderer.setProperty(this.elRef.nativeElement, 'value', this.row.recordStatus);\r\n this.cmsToastrService.typeError(error);\r\n this.handleErrorCase(element);\r\n }\r\n\r\n );\r\n }\r\n\r\n handleSuccessCase(element: HTMLElement) {\r\n this.removeBackground(element);\r\n this.addSuccess(element);\r\n setTimeout(() => {\r\n this.removeBackground(element);\r\n }, 1000);\r\n }\r\n\r\n handleErrorCase(element) {\r\n this.removeBackground(element);\r\n const child = this.document.createElement('img');\r\n child.style.width = '20px';\r\n child.src = ERROR_ICON;\r\n const parent = this.renderer.parentNode(this.elRef.nativeElement);\r\n this.renderer.appendChild(parent, child);\r\n setTimeout(() => {\r\n this.renderer.removeChild(parent, child);\r\n }, 1000);\r\n }\r\n\r\n addLoader(element: HTMLElement) {\r\n this.addBackground(element, LOADING_ICON, 20);\r\n }\r\n addSuccess(element: HTMLElement) {\r\n this.addBackground(element, SUCCESS_ICON, 20);\r\n }\r\n\r\n addBackground(\r\n element: HTMLElement,\r\n backgroundImg: string,\r\n backgroundSize: number\r\n ) {\r\n element.style.background = `#fff url(\"${backgroundImg}\") no-repeat right 20px center`;\r\n element.style.backgroundSize = `${backgroundSize}px`;\r\n }\r\n\r\n removeBackground(element: HTMLElement) {\r\n element.style.background = 'none';\r\n }\r\n iconStatus(value: EnumRecordStatus): string {\r\n let ret = '';\r\n switch (value) {\r\n case 1:\r\n ret = 'fa fa-check';\r\n break;\r\n case 2:\r\n ret = 'fa fa-eye-slash';\r\n break;\r\n case 3:\r\n ret = 'fa fa-times';\r\n break;\r\n case 4:\r\n ret = 'fa fa-hourglass-half';\r\n break;\r\n case 5:\r\n ret = 'far fa-thumbs-down';\r\n break;\r\n case 6:\r\n ret = 'fa fa-archive';\r\n break;\r\n default:\r\n ret = 'fa fa-check';\r\n }\r\n return ret;\r\n }\r\n}\r\n// <select selfSave [observableFn]=\"post()\">\r\n// <option value=\"One\">One</option>\r\n// <option value=\"Two\">Two</option>\r\n// </select>","import {\r\n NgModule,\r\n ModuleWithProviders,\r\n Directive,\r\n HostBinding,\r\n Output,\r\n Input,\r\n EventEmitter\r\n} from '@angular/core';\r\n\r\nexport type LayoutDirection = 'ltr' | 'rtl';\r\n\r\n/**\r\n * Directive to listen to changes of direction of part of the DOM.\r\n *\r\n * Applications should use this directive instead of the native attribute so that Material\r\n * components can listen on changes of direction.\r\n */\r\n@Directive({\r\n selector: '[dir]',\r\n // TODO(hansl): maybe `$implicit` isn't the best option here, but for now that's the best we got.\r\n exportAs: '$implicit'\r\n})\r\nexport class DirDirective {\r\n @Input('dir') _dir: LayoutDirection = 'ltr';\r\n\r\n @Output() dirChange = new EventEmitter<void>();\r\n\r\n @HostBinding('attr.dir')\r\n get dir(): LayoutDirection {\r\n return this._dir;\r\n }\r\n set dir(v: LayoutDirection) {\r\n let old = this._dir;\r\n this._dir = v;\r\n if (old != this._dir) {\r\n this.dirChange.emit(null);\r\n }\r\n }\r\n\r\n get value(): LayoutDirection { return this.dir; }\r\n set value(v: LayoutDirection) { this.dir = v; }\r\n}\r\n\r\n","export class PoinModel {\r\n lat: number;\r\n lon: number;\r\n}\r\n","import { Injectable, Pipe } from '@angular/core';\r\nimport { PersianCalendarService } from './persian-date.service';\r\n\r\n/*\r\n Generated class for the PersianDate pipe.\r\n\r\n See https://angular.io/docs/ts/latest/guide/pipes.html for more info on\r\n Angular 2 Pipes.\r\n*/\r\n// tslint:disable-next-line: use-pipe-transform-interface\r\n@Pipe({\r\n name: 'persianDate'\r\n})\r\n@Injectable()\r\nexport class PersianDate {\r\n /**\r\n *\r\n */\r\n constructor(public persianCalendarService: PersianCalendarService) {\r\n\r\n }\r\n /*\r\n Takes a value and convert it to\r\n */\r\n transform(value: string | Date): string {\r\n if (typeof value === 'string') {\r\n if (!value || value.length === 0) {\r\n return '';\r\n }\r\n const d = new Date(value);\r\n if (!d) {\r\n return '';\r\n }\r\n return this.persianCalendarService.PersianCalendar(d);\r\n }\r\n if (typeof value === typeof Date) {\r\n if (!value ) {\r\n return '';\r\n }\r\n return this.persianCalendarService.PersianCalendar(value);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PersianCalendarService {\r\n weekDayNames: string[] = ['شنبه', 'یکشنبه', 'دوشنبه',\r\n 'سه شنبه', 'چهارشنبه',\r\n 'پنج شنبه', 'جمعه'];\r\n monthNames: string[] = [\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 strWeekDay: string = null;\r\n strMonth: string = null;\r\n day: number = null;\r\n month: number = null;\r\n myMonth: number = null;\r\n year: number = null;\r\n ld: number = null;\r\n farsiDate: string = null;\r\n\r\n today: Date = new Date();\r\n\r\n gregorianYear: number = null;\r\n gregorianMonth: number = null;\r\n gregorianDate: number = null;\r\n WeekDay: number = null;\r\n buf1: number[] = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];\r\n buf2: number[] = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335];\r\n\r\n constructor() {\r\n }\r\n PersianCalendar(gregorianDate: Date): string {\r\n this.today = new Date(gregorianDate) ;\r\n this.gregorianYear = this.today.getFullYear();\r\n this.gregorianMonth = this.today.getMonth() + 1;\r\n this.gregorianDate = this.today.getDate();\r\n this.WeekDay = this.today.getDay();\r\n this.toPersian(gregorianDate);\r\n return this.strWeekDay + ' ' + this.day + ' ' + this.strMonth + ' ' + this.year;\r\n }\r\n PersianCalendarSmall(gregorianDate: Date): string {\r\n this.today = new Date(gregorianDate);\r\n this.gregorianYear = this.today.getFullYear();\r\n this.gregorianMonth = this.today.getMonth() + 1;\r\n this.gregorianDate = this.today.getDate();\r\n this.WeekDay = this.today.getDay();\r\n this.toPersian(gregorianDate);\r\n return this.day + ' # ' + this.myMonth + ' # ' + this.year;\r\n }\r\n PersianCalendarVerySmall(gregorianDate: Date): string {\r\n this.today = new Date(gregorianDate);\r\n this.gregorianYear = this.today.getFullYear();\r\n this.gregorianMonth = this.today.getMonth() + 1;\r\n this.gregorianDate = this.today.getDate();\r\n this.WeekDay = this.today.getDay();\r\n this.toPersian(gregorianDate);\r\n return this.day + ' ' + this.strMonth;\r\n }\r\n PersianCalendarMonth(gregorianDate: Date): string {\r\n this.today = new Date(gregorianDate);\r\n this.gregorianYear = this.today.getFullYear();\r\n this.gregorianMonth = this.today.getMonth() + 1;\r\n this.gregorianDate = this.today.getDate();\r\n this.WeekDay = this.today.getDay();\r\n this.toPersian(gregorianDate);\r\n return this.strMonth;\r\n }\r\n toPersian(gregorianDate: Date): void {\r\n if ((this.gregorianYear % 4) !== 0) {\r\n this.farsiDate = this.func1();\r\n } else {\r\n this.farsiDate = this.func2();\r\n }\r\n this.strMonth = this.monthNames[Math.floor(this.month - 1)];\r\n this.myMonth = Math.floor(this.month);\r\n // this.strWeekDay = this.weekDayNames[this.WeekDay + 1];\r\n if (this.WeekDay === 6) {\r\n this.strWeekDay = this.weekDayNames[0];\r\n } else {\r\n this.strWeekDay = this.weekDayNames[this.WeekDay + 1];\r\n }\r\n }\r\n\r\n\r\n func1(): string {\r\n this.day = this.buf1[this.gregorianMonth - 1] + this.gregorianDate;\r\n if (this.day > 79) {\r\n this.day = this.day - 79;\r\n if (this.day <= 186) {\r\n const day2 = this.day;\r\n this.month = (day2 / 31) + 1;\r\n this.day = (day2 % 31);\r\n if (day2 % 31 === 0) {\r\n this.month--;\r\n this.day = 31;\r\n }\r\n this.year = this.gregorianYear - 621;\r\n } else {\r\n const day2 = this.day - 186;\r\n this.month = (day2 / 30) + 7;\r\n this.day = (day2 % 30);\r\n if (day2 % 30 === 0) {\r\n this.month = (day2 / 30) + 6;\r\n this.day = 30;\r\n }\r\n this.year = this.gregorianYear - 621;\r\n }\r\n } else {\r\n this.ld = this.gregorianYear > 1996 && this.gregorianYear % 4 === 1 ? 11 : 10;\r\n const day2 = this.day + this.ld;\r\n this.month = (day2 / 30) + 10;\r\n this.day = (day2 % 30);\r\n if (day2 % 30 === 0) {\r\n this.month--;\r\n this.day = 30;\r\n }\r\n this.year = this.gregorianYear - 622;\r\n }\r\n const fullDate = this.day + '/' + Math.floor(this.month) + '/' + this.year;\r\n return fullDate;\r\n }\r\n\r\n\r\n\r\n func2(): string {\r\n this.day = this.buf2[this.gregorianMonth - 1] + this.gregorianDate;\r\n this.ld = this.gregorianYear >= 1996 ? 79 : 80;\r\n if (this.day > this.ld) {\r\n this.day = this.day - this.ld;\r\n if (this.day <= 186) {\r\n const day2 = this.day;\r\n this.month = (day2 / 31) + 1;\r\n this.day = (day2 % 31);\r\n if (day2 % 31 === 0) {\r\n this.month--;\r\n this.day = 31;\r\n }\r\n this.year = this.gregorianYear - 621;\r\n } else {\r\n const day2 = this.day - 186;\r\n this.month = (day2 / 30) + 7;\r\n this.day = (day2 % 30);\r\n if (day2 % 30 === 0) {\r\n this.month--;\r\n this.day = 30;\r\n }\r\n this.year = this.gregorianYear - 621;\r\n }\r\n const fullDate = this.day + '/' + Math.floor(this.month) + '/' + this.year;\r\n return fullDate;\r\n } else {\r\n const day2 = this.day + 10;\r\n this.month = (day2 / 30) + 10;\r\n this.day = (day2 % 30);\r\n if (day2 % 30 === 0) {\r\n this.month--;\r\n this.day = 30;\r\n }\r\n this.year = this.gregorianYear - 622;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n\r\n@Pipe({\r\n name: 'boolclass'\r\n})\r\nexport class BoolStatusClassPipe implements PipeTransform {\r\n constructor(private sanitizer: DomSanitizer) { }\r\n\r\n transform(value: boolean | null): SafeHtml {\r\n if (value === true) {\r\n return 'fa fa-thumbs-up';\r\n\r\n } else if (value === false) {\r\n return 'fa fa-thumbs-down';\r\n }\r\n return 'fa fa-archive';\r\n\r\n }\r\n\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\n\r\n@Pipe({ name: 'cmsthumbnail' })\r\nexport class CmsImageThumbnailPipe implements PipeTransform {\r\n transform(value): any {\r\n value = value + '';\r\n return value.replace('/images/', '/thumbnails/');\r\n }\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { EnumInfoModel } from 'projects/ntk-hospital-api/src/public-api';\r\n\r\n@Pipe({ name: 'cmstitle' })\r\nexport class CmsTitlePipe implements PipeTransform {\r\n transform(value, args: any[]): any {\r\n if (!value || !args || args.length === 0) {\r\n return '';\r\n }\r\n const find = args.find(x => x.id === value);\r\n if (!find) {\r\n return value;\r\n }\r\n if (!find.titleML || find.titleML.length === 0) {\r\n return find.title;\r\n }\r\n return find.titleML;\r\n }\r\n}\r\n","import { Pipe, PipeTransform, SecurityContext } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { EnumRecordStatus } from 'projects/ntk-hospital-api/src/public-api';\r\n\r\n@Pipe({\r\n name: 'statusClass'\r\n})\r\nexport class RecordStatusClassPipe implements PipeTransform {\r\n constructor(private sanitizer: DomSanitizer) { }\r\n\r\n transform(value: EnumRecordStatus, editable = false): SafeHtml {\r\n let ret = '';\r\n switch (value) {\r\n case 1:\r\n ret = 'fa fa-check';\r\n break;\r\n case 2:\r\n ret = 'fa fa-times';\r\n break;\r\n case 3:\r\n ret = 'fa fa-trash';\r\n break;\r\n case 4:\r\n ret = 'fa fa-hourglass-half';\r\n break;\r\n case 5:\r\n ret = 'far fa-thumbs-down';\r\n break;\r\n case 6:\r\n ret = 'fa fa-archive';\r\n break;\r\n default:\r\n ret = 'fa fa-check';\r\n }\r\n return ret;\r\n }\r\n\r\n}\r\n","export const DefaultLayoutConfig = {\r\n demo: 'demo2',\r\n // Javascript Settings\r\n js: {\r\n breakpoints: {\r\n sm: 576,\r\n md: 768,\r\n lg: 992,\r\n xl: 1200,\r\n xxl: 1200,\r\n },\r\n colors: {\r\n theme: {\r\n base: {\r\n white: '#ffffff',\r\n primary: '#6993FF',\r\n secondary: '#E5EAEE',\r\n success: '#1BC5BD',\r\n info: '#8950FC',\r\n warning: '#FFA800',\r\n danger: '#F64E60',\r\n light: '#F3F6F9',\r\n dark: '#212121',\r\n },\r\n light: {\r\n white: '#ffffff',\r\n primary: '#E1E9FF',\r\n secondary: '#ECF0F3',\r\n success: '#C9F7F5',\r\n info: '#EEE5FF',\r\n warning: '#FFF4DE',\r\n danger: '#FFE2E5',\r\n light: '#F3F6F9',\r\n dark: '#D6D6E0',\r\n },\r\n inverse: {\r\n white: '#ffffff',\r\n primary: '#ffffff',\r\n secondary: '#212121',\r\n success: '#ffffff',\r\n info: '#ffffff',\r\n warning: '#ffffff',\r\n danger: '#ffffff',\r\n light: '#464E5F',\r\n dark: '#ffffff',\r\n },\r\n },\r\n gray: {\r\n 'gray-100': '#F3F6F9',\r\n 'gray-200': '#ECF0F3',\r\n 'gray-300': '#E5EAEE',\r\n 'gray-400': '#D6D6E0',\r\n 'gray-500': '#B5B5C3',\r\n 'gray-600': '#80808F',\r\n 'gray-700': '#464E5F',\r\n 'gray-800': '#1B283F',\r\n 'gray-900': '#212121',\r\n },\r\n },\r\n fontFamily: 'IRANSans',\r\n },\r\n\r\n // Base Settins\r\n self: {\r\n layout: 'default', // blank/default page mode\r\n backgroundImage: 'bg/bg-6.jpg'\r\n },\r\n\r\n // Page loader\r\n pageLoader: {\r\n type: '', // default|spinner-message|spinner-logo\r\n },\r\n\r\n // Header\r\n header: {\r\n self: {\r\n display: true,\r\n width: 'fixed', // fixed|fluid,\r\n fixed: {\r\n desktop: true,\r\n mobile: false,\r\n },\r\n },\r\n\r\n menu: {\r\n self: {\r\n display: true,\r\n static: true, // static => true | dynamic => true\r\n layout: 'default', // tab/default,\r\n rootArrow: false,\r\n iconStyle: 'duotone', // duotone, line, bold, solid\r\n },\r\n\r\n desktop: {\r\n arrow: true,\r\n toggle: 'click',\r\n submenu: {\r\n theme: 'light',\r\n arrow: true,\r\n },\r\n },\r\n\r\n mobile: {\r\n submenu: {\r\n theme: 'dark',\r\n accordion: true,\r\n },\r\n },\r\n },\r\n },\r\n\r\n // Subheader\r\n subheader: {\r\n display: false,\r\n displayDesc: false,\r\n displayDaterangepicker: true,\r\n breadcrumb: {\r\n display: true\r\n },\r\n layoutVersion: 'v7', // [1..7]\r\n fixed: false,\r\n width: 'fixed', // fixed|fluid,\r\n clear: false,\r\n style: 'transparent', // transparent/solid\r\n },\r\n\r\n // Content\r\n content: {\r\n width: 'fixed', // fluid|fixed\r\n },\r\n\r\n // Brand\r\n brand: {\r\n self: {\r\n theme: 'dark', // light/dark\r\n },\r\n },\r\n\r\n // Aside\r\n aside: {\r\n self: {\r\n display: false\r\n },\r\n\r\n menu: {\r\n static: true, // static => true | dynamic => true\r\n dropdown: false, // ok\r\n scroll: false, // ok\r\n iconStyle: 'duotone', // duotone, line, bold, solid\r\n submenu: {\r\n accordion: true, //\r\n dropdown: {\r\n arrow: true,\r\n hoverTimeout: 500, // in milliseconds\r\n },\r\n },\r\n },\r\n },\r\n\r\n // Footer\r\n footer: {\r\n display: true,\r\n width: 'fixed', // fluid/fixed\r\n fixed: false,\r\n layout: 'compact' // compact/extended\r\n },\r\n\r\n // Extras\r\n extras: {\r\n // Search\r\n search: {\r\n display: false,\r\n layout: 'dropdown', // offcanvas, dropdown,\r\n offcanvas: {\r\n direction: 'right',\r\n },\r\n },\r\n\r\n // Notifications\r\n notifications: {\r\n display: false,\r\n layout: 'dropdown', // offcanvas, dropdown,\r\n dropdown: {\r\n style: 'dark', // light|dark\r\n },\r\n offcanvas: {\r\n direction: 'right',\r\n },\r\n },\r\n\r\n // Quick Actionss\r\n quickActions: {\r\n display: true,\r\n layout: 'dropdown', // offcanvas, dropdown,\r\n dropdown: {\r\n style: 'dark', // light|dark\r\n },\r\n offcanvas: {\r\n direction: 'right',\r\n },\r\n },\r\n\r\n // User\r\n user: {\r\n display: true,\r\n layout: 'dropdown', // offcanvas, dropdown,\r\n dropdown: {\r\n style: 'light', // light|dark\r\n },\r\n offcanvas: {\r\n direction: 'right',\r\n },\r\n },\r\n\r\n // Languages\r\n languages: {\r\n display: true,\r\n },\r\n\r\n // Cart\r\n cart: {\r\n display: false,\r\n layout: 'dropdown', // offcanvas, dropdown,\r\n offcanvas: {\r\n direction: 'right',\r\n },\r\n dropdown: {\r\n style: 'dark', // light|dark\r\n },\r\n },\r\n\r\n // Chat\r\n chat: {\r\n display: false,\r\n },\r\n\r\n // Quick Panel\r\n quickPanel: {\r\n display: false,\r\n offcanvas: {\r\n direction: 'right',\r\n },\r\n },\r\n\r\n // Page Toolbar\r\n toolbar: {\r\n display: true,\r\n },\r\n\r\n // Scrolltop\r\n scrolltop: {\r\n display: true,\r\n },\r\n },\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from 'src/environments/environment';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport * as objectPath from 'object-path';\r\nimport { DefaultLayoutConfig } from '../configs/default-layout.config';\r\n\r\nconst LAYOUT_CONFIG_LOCAL_STORAGE_KEY = `${environment.appVersion}-layoutConfig`;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LayoutService {\r\n private layoutConfigSubject: BehaviorSubject<any> = new BehaviorSubject<any>(\r\n undefined\r\n );\r\n\r\n // scope list of css classes\r\n private classes = {\r\n header: [],\r\n header_container: [],\r\n header_mobile: [],\r\n header_menu: [],\r\n aside_menu: [],\r\n subheader: [],\r\n subheader_container: [],\r\n content: [],\r\n content_container: [],\r\n footer_container: [],\r\n };\r\n\r\n // scope list of html attributes\r\n private attrs = {\r\n aside_menu: {},\r\n };\r\n\r\n constructor() {}\r\n\r\n initConfig(): any {\r\n const configFromLocalStorage = localStorage.getItem(\r\n LAYOUT_CONFIG_LOCAL_STORAGE_KEY\r\n );\r\n if (configFromLocalStorage) {\r\n try {\r\n this.layoutConfigSubject.next(JSON.parse(configFromLocalStorage));\r\n return;\r\n } catch (error) {\r\n this.removeConfig();\r\n console.error('config parse from local storage', error);\r\n }\r\n }\r\n this.layoutConfigSubject.next(DefaultLayoutConfig);\r\n }\r\n\r\n private removeConfig() {\r\n localStorage.removeItem(LAYOUT_CONFIG_LOCAL_STORAGE_KEY);\r\n }\r\n\r\n refreshConfigToDefault() {\r\n this.setConfigWithPageRefresh(undefined);\r\n }\r\n\r\n getConfig(): any {\r\n const config = this.layoutConfigSubject.value;\r\n if (!config) {\r\n return DefaultLayoutConfig;\r\n }\r\n return config;\r\n }\r\n\r\n setConfig(config: any) {\r\n if (!config) {\r\n this.removeConfig();\r\n } else {\r\n localStorage.setItem(\r\n LAYOUT_CONFIG_LOCAL_STORAGE_KEY,\r\n JSON.stringify(config)\r\n );\r\n }\r\n this.layoutConfigSubject.next(config);\r\n }\r\n\r\n setConfigWithoutLocalStorageChanges(config: any) {\r\n this.layoutConfigSubject.next(config);\r\n }\r\n\r\n setConfigWithPageRefresh(config: any) {\r\n this.setConfig(config);\r\n document.location.reload();\r\n }\r\n\r\n getProp(path: string): any {\r\n return objectPath.get(this.layoutConfigSubject.value, path);\r\n }\r\n\r\n setCSSClass(path: string, classesInStr: string) {\r\n const cssClasses = this.classes[path];\r\n if (!cssClasses) {\r\n this.classes[path] = [];\r\n }\r\n classesInStr\r\n .split(' ')\r\n .forEach((cssClass: string) => this.classes[path].push(cssClass));\r\n }\r\n\r\n getCSSClasses(path: string): string[] {\r\n const cssClasses = this.classes[path];\r\n if (!cssClasses) {\r\n return [];\r\n }\r\n\r\n return cssClasses;\r\n }\r\n\r\n getStringCSSClasses(path: string) {\r\n return this.getCSSClasses(path).join(' ');\r\n }\r\n\r\n getHTMLAttributes(path: string): any {\r\n const attributesObj = this.attrs[path];\r\n if (!attributesObj) {\r\n return {};\r\n }\r\n return attributesObj;\r\n }\r\n\r\n setHTMLAttribute(path, attrKey: string, attrValue: any) {\r\n const attributesObj = this.attrs[path];\r\n if (!attributesObj) {\r\n this.attrs[path] = {};\r\n }\r\n this.attrs[path][attrKey] = attrValue;\r\n }\r\n}\r\n","<table mat-table [dataSource]=\"dataSource\" multiTemplateDataRows class=\"mat-elevation-z8\">\r\n <ng-container matColumnDef=\"{{column}}\" *ngFor=\"let column of columnsToDisplay\">\r\n <th mat-header-cell *matHeaderCellDef> {{column}} </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element[column]}} </td>\r\n </ng-container>\r\n\r\n <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"columnsToDisplay.length\">\r\n <div class=\"example-element-detail\" [@detailExpand]=\"element == expandedElement ? 'expanded' : 'collapsed'\">\r\n <div class=\"example-element-diagram\">\r\n <div class=\"example-element-position\"> {{element.position}} </div>\r\n <div class=\"example-element-symbol\"> {{element.symbol}} </div>\r\n <div class=\"example-element-name\"> {{element.name}} </div>\r\n <div class=\"example-element-weight\"> {{element.weight}} </div>\r\n </div>\r\n <div class=\"example-element-description\">\r\n {{element.description}}\r\n <span class=\"example-element-description-attribution\"> -- Wikipedia </span>\r\n </div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"columnsToDisplay\"></tr>\r\n <tr mat-row *matRowDef=\"let element; columns: columnsToDisplay;\" class=\"example-element-row\"\r\n [class.example-expanded-row]=\"expandedElement === element\"\r\n (click)=\"expandedElement = expandedElement === element ? null : element\">\r\n </tr>\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"example-detail-row\"></tr>\r\n</table>","import {Component} from '@angular/core';\r\nimport {animate, state, style, transition, trigger} from '@angular/animations';\r\n\r\n/**\r\n * @title Table with expandable rows\r\n */\r\n@Component({\r\n selector: 'app-test',\r\n styleUrls: ['test.component.css'],\r\n templateUrl: 'test.component.html',\r\n animations: [\r\n trigger('detailExpand', [\r\n state('collapsed', style({height: '0px', minHeight: '0'})),\r\n state('expanded', style({height: '*'})),\r\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\r\n ]),\r\n ],\r\n})\r\nexport class TestComponent {\r\n dataSource = ELEMENT_DATA;\r\n columnsToDisplay = ['name', 'weight', 'symbol', 'position'];\r\n expandedElement: PeriodicElement | null;\r\n}\r\n\r\nexport interface PeriodicElement {\r\n name: string;\r\n position: number;\r\n weight: number;\r\n symbol: string;\r\n description: string;\r\n}\r\n\r\nconst ELEMENT_DATA: PeriodicElement[] = [\r\n {\r\n position: 1,\r\n name: 'Hydrogen',\r\n weight: 1.0079,\r\n symbol: 'H',\r\n description: `Hydrogen is a chemical element with symbol H and atomic number 1. With a standard\r\n atomic weight of 1.008, hydrogen is the lightest element on the periodic table.`,\r\n },\r\n {\r\n position: 2,\r\n name: 'Helium',\r\n weight: 4.0026,\r\n symbol: 'He',\r\n description: `Helium is a chemical element with symbol He and atomic number 2. It is a\r\n colorless, odorless, tasteless, non-toxic, inert, monatomic gas, the first in the noble gas\r\n group in the periodic table. Its boiling point is the lowest among all the elements.`,\r\n },\r\n {\r\n position: 3,\r\n name: 'Lithium',\r\n weight: 6.941,\r\n symbol: 'Li',\r\n description: `Lithium is a chemical element with symbol Li and atomic number 3. It is a soft,\r\n silvery-white alkali metal. Under standard conditions, it is the lightest metal and the\r\n lightest solid element.`,\r\n },\r\n {\r\n position: 4,\r\n name: 'Beryllium',\r\n weight: 9.0122,\r\n symbol: 'Be',\r\n description: `Beryllium is a chemical element with symbol Be and atomic number 4. It is a\r\n relatively rare element in the universe, usually occurring as a product of the spallation of\r\n larger atomic nuclei that have collided with cosmic rays.`,\r\n },\r\n {\r\n position: 5,\r\n name: 'Boron',\r\n weight: 10.811,\r\n symbol: 'B',\r\n description: `Boron is a chemical element with symbol B and atomic number 5. Produced entirely\r\n by cosmic ray spallation and supernovae and not by stellar nucleosynthesis, it is a\r\n low-abundance element in the Solar system and in the Earth's crust.`,\r\n },\r\n {\r\n position: 6,\r\n name: 'Carbon',\r\n weight: 12.0107,\r\n symbol: 'C',\r\n description: `Carbon is a chemical element with symbol C and atomic number 6. It is nonmetallic\r\n and tetravalent—making four electrons available to form covalent chemical bonds. It belongs\r\n to group 14 of the periodic table.`,\r\n },\r\n {\r\n position: 7,\r\n name: 'Nitrogen',\r\n weight: 14.0067,\r\n symbol: 'N',\r\n description: `Nitrogen is a chemical element with symbol N and atomic number 7. It was first\r\n discovered and isolated by Scottish physician Daniel Rutherford in 1772.`,\r\n },\r\n {\r\n position: 8,\r\n name: 'Oxygen',\r\n weight: 15.9994,\r\n symbol: 'O',\r\n description: `Oxygen is a chemical element with symbol O and atomic number 8. It is a member of\r\n the chalcogen group on the periodic table, a highly reactive nonmetal, and an oxidizing\r\n agent that readily forms oxides with most elements as well as with other compounds.`,\r\n },\r\n {\r\n position: 9,\r\n name: 'Fluorine',\r\n weight: 18.9984,\r\n symbol: 'F',\r\n description: `Fluorine is a chemical element with symbol F and atomic number 9. It is the\r\n lightest halogen and exists as a highly toxic pale yellow diatomic gas at standard\r\n conditions.`,\r\n },\r\n {\r\n position: 10,\r\n name: 'Neon',\r\n weight: 20.1797,\r\n symbol: 'Ne',\r\n description: `Neon is a chemical element with symbol Ne and atomic number 10. It is a noble gas.\r\n Neon is a colorless, odorless, inert monatomic gas under standard conditions, with about\r\n two-thirds the density of air.`,\r\n },\r\n];\r\n","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport KTHeader from \"./../../components/header.js\";\r\nimport { KTUtil } from \"./../../components/util.js\";\r\n\r\nvar KTLayoutHeader = function() {\r\n // Private Properties\r\n var _element;\r\n var _elementForMobile;\r\n var _object;\r\n\r\n\t// Private Functions\r\n\tvar _init = function() {\r\n\t\tvar options = {\r\n offset: {\r\n desktop: 300,\r\n tabletAndMobile: false\r\n }\r\n\t\t};\r\n\r\n\t\t_object = new KTHeader(_element, options);\r\n\t}\r\n\r\n // Get Height\r\n var _getHeight = function() {\r\n var height = 0;\r\n\r\n if (_element) {\r\n height = KTUtil.actualHeight(_element) + 1;\r\n }\r\n\r\n return height;\r\n }\r\n\r\n // Get Height\r\n var _getHeightForMobile = function() {\r\n var height;\r\n\r\n height = KTUtil.actualHeight(_elementForMobile);\r\n\r\n return height;\r\n }\r\n\r\n // Public Methods\r\n\treturn {\r\n\t\tinit: function(id, idForMobile) {\r\n _element = KTUtil.getById(id);\r\n _elementForMobile = KTUtil.getById(idForMobile);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n\t\t},\r\n\r\n isFixed: function() {\r\n return KTUtil.hasClass(KTUtil.getBody(), 'header-fixed')\r\n },\r\n\r\n isFixedForMobile: function() {\r\n return KTUtil.hasClass(KTUtil.getBody(), 'header-mobile-fixed')\r\n },\r\n\r\n getElement: function() {\r\n return _element;\r\n },\r\n\r\n getElementForMobile: function() {\r\n return _elementForMobile;\r\n },\r\n\r\n getHeader: function() {\r\n return _object;\r\n },\r\n\r\n getHeight: function() {\r\n return _getHeight();\r\n },\r\n\r\n getHeightForMobile: function() {\r\n return _getHeightForMobile();\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutHeader;\r\n}\r\n\r\nexport default KTLayoutHeader;","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport { KTUtil } from \"./../../components/util.js\";\r\n\r\nvar KTLayoutSubheader = function() {\r\n // Private properties\r\n var _element;\r\n\r\n // Private functions\r\n var _getHeight = function() {\r\n var height = 0;\r\n\r\n if (_element) {\r\n height = KTUtil.actualHeight(_element);\r\n }\r\n\r\n return height;\r\n }\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\t\t},\r\n\r\n isFixed: function() {\r\n return KTUtil.hasClass(KTUtil.getBody(), 'subheader-fixed');\r\n },\r\n\r\n getElement: function() {\r\n return _element;\r\n },\r\n\r\n getHeight: function() {\r\n return _getHeight();\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutSubheader;\r\n}\r\n\r\nexport default KTLayoutSubheader;","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport { KTUtil } from \"./../../components/util.js\";\r\n\r\nvar KTLayoutFooter = function() {\r\n // Private properties\r\n var _element;\r\n\r\n\t// Private functions\r\n\tvar _getHeight = function() {\r\n\t\tvar height = 0;\r\n\r\n if (_element) {\r\n height = KTUtil.actualHeight(_element);\r\n }\r\n\r\n\t\treturn height;\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\t\t},\r\n\r\n\t\tgetHeight: function() {\r\n\t\t\treturn _getHeight();\r\n\t\t},\r\n\r\n getElement: function() {\r\n return _element;\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutFooter;\r\n}\r\n\r\nexport default KTLayoutFooter;","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport { KTUtil } from \"./../../components/util.js\";\r\nimport KTLayoutHeader from \"./header.js\";\r\nimport KTLayoutSubheader from \"./subheader.js\";\r\nimport KTLayoutFooter from \"./footer.js\";\r\n\r\nvar KTLayoutContent = function() {\r\n // Private properties\r\n var _element;\r\n\r\n\t// Private functions\r\n\tvar _getHeight = function() {\r\n\t\tvar height;\r\n\r\n\t\theight = KTUtil.getViewPort().height;\r\n\r\n if (_element) {\r\n height = height - parseInt(KTUtil.css(_element, 'paddingTop')) - parseInt(KTUtil.css(_element, 'paddingBottom'));\r\n } \r\n\r\n height = height - KTLayoutHeader.getHeight();\r\n height = height - KTLayoutSubheader.getHeight();\r\n height = height - KTLayoutFooter.getHeight();\r\n\r\n\t\treturn height;\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\t\t},\r\n\r\n\t\tgetHeight: function() {\r\n\t\t\treturn _getHeight();\r\n\t\t},\r\n\r\n getElement: function() {\r\n return _element;\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutContent;\r\n}\r\n\r\nexport default KTLayoutContent;","import { Injectable } from '@angular/core';\r\nimport { LayoutService } from './layout.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LayoutInitService {\r\n constructor(private layout: LayoutService) {\r\n }\r\n\r\n init() {\r\n this.layout.initConfig();\r\n\r\n this.preInitLayout();\r\n // init base layout\r\n this.initLayout();\r\n this.initLoader();\r\n\r\n // init header and subheader menu\r\n this.initHeader();\r\n this.initSubheader();\r\n\r\n // init content\r\n this.initContent();\r\n // init aside and aside menu\r\n this.initAside();\r\n\r\n // init footer\r\n this.initFooter();\r\n\r\n this.initSkins();\r\n }\r\n\r\n // init base layout\r\n private preInitLayout() {\r\n const config = this.layout.getConfig();\r\n const updatedConfig = Object.assign({}, config);\r\n const subheaderFixed = this.layout.getProp('subheader.fixed');\r\n const headerSelfFixedDesktop = this.layout.getProp(\r\n 'header.self.fixed.desktop'\r\n );\r\n if (subheaderFixed && headerSelfFixedDesktop) {\r\n updatedConfig.subheader.style = 'solid';\r\n } else {\r\n updatedConfig.subheader.fixed = false;\r\n }\r\n\r\n this.layout.setConfigWithoutLocalStorageChanges(updatedConfig);\r\n }\r\n\r\n private initLayout() {\r\n const selfBodyBackgroundImage = this.layout.getProp(\r\n 'self.backgroundImage'\r\n );\r\n if (selfBodyBackgroundImage) {\r\n document.body.style.backgroundImage = `url(\"./assets/media/${selfBodyBackgroundImage}\")`;\r\n }\r\n\r\n const selfBodyClass = (\r\n this.layout.getProp('self.body.class') || ''\r\n ).toString();\r\n if (selfBodyClass) {\r\n const bodyClasses: string[] = selfBodyClass.split(' ');\r\n bodyClasses.forEach((cssClass) => document.body.classList.add(cssClass));\r\n }\r\n\r\n document.body.classList.add('quick-panel-right');\r\n document.body.classList.add('demo-panel-right');\r\n document.body.classList.add('offcanvas-right');\r\n }\r\n\r\n private initLoader() { }\r\n\r\n // init header and subheader menu\r\n private initHeader() {\r\n // Fixed header\r\n const headerSelfFixedDesktop = this.layout.getProp(\r\n 'header.self.fixed.desktop'\r\n );\r\n if (headerSelfFixedDesktop) {\r\n document.body.classList.add('header-fixed');\r\n this.layout.setCSSClass('header', 'header-fixed');\r\n } else {\r\n document.body.classList.add('header-static');\r\n }\r\n\r\n const headerSelfFixedMobile = this.layout.getProp(\r\n 'header.self.fixed.mobile'\r\n );\r\n if (headerSelfFixedMobile) {\r\n document.body.classList.add('header-mobile-fixed');\r\n this.layout.setCSSClass('header_mobile', 'header-mobile-fixed');\r\n }\r\n\r\n // Menu\r\n const headerMenuSelfDisplay = this.layout.getProp(\r\n 'header.menu.self.display'\r\n );\r\n const headerMenuSelfLayout = this.layout.getProp('header.menu.self.layout');\r\n if (headerMenuSelfDisplay) {\r\n this.layout.setCSSClass(\r\n 'header_menu',\r\n `header-menu-layout-${headerMenuSelfLayout}`\r\n );\r\n\r\n if (this.layout.getProp('header.menu.self.rootArrow')) {\r\n this.layout.setCSSClass('header_menu', 'header-menu-root-arrow');\r\n }\r\n }\r\n\r\n if (this.layout.getProp('header.self.width') === 'fluid') {\r\n this.layout.setCSSClass('header_container', 'container-fluid');\r\n } else {\r\n this.layout.setCSSClass('header_container', 'container');\r\n }\r\n }\r\n\r\n private initSubheader() {\r\n const subheaderDisplay = this.layout.getProp('subheader.display');\r\n if (subheaderDisplay) {\r\n document.body.classList.add('subheader-enabled');\r\n } else {\r\n return;\r\n }\r\n\r\n // Fixed content head\r\n const subheaderFixed = this.layout.getProp('subheader.fixed');\r\n const headerSelfFixedDesktop = this.layout.getProp(\r\n 'header.self.fixed.desktop'\r\n );\r\n if (subheaderFixed && headerSelfFixedDesktop) {\r\n document.body.classList.add('subheader-fixed');\r\n }\r\n\r\n const subheaderStyle = this.layout.getProp('subheader.style');\r\n if (subheaderStyle) {\r\n this.layout.setCSSClass('subheader', `subheader-${subheaderStyle}`);\r\n }\r\n\r\n if (this.layout.getProp('subheader.width') === 'fluid') {\r\n this.layout.setCSSClass('subheader_container', 'container-fluid');\r\n } else {\r\n this.layout.setCSSClass('subheader_container', 'container');\r\n }\r\n }\r\n\r\n // init content\r\n private initContent() {\r\n if (this.layout.getProp('content.fit-top')) {\r\n this.layout.setCSSClass('content', 'pt-0');\r\n }\r\n\r\n if (this.layout.getProp('content.fit-bottom')) {\r\n this.layout.setCSSClass('content', 'pb-0');\r\n }\r\n\r\n if (this.layout.getProp('content.width') === 'fluid') {\r\n this.layout.setCSSClass('content_container', 'container-fluid');\r\n } else {\r\n this.layout.setCSSClass('content_container', 'container');\r\n }\r\n }\r\n\r\n // init aside and aside menu\r\n private initAside() {\r\n if (this.layout.getProp('aside.self.display') !== true) {\r\n return;\r\n }\r\n\r\n // Enable Aside\r\n document.body.classList.add('aside-enabled');\r\n document.body.classList.add('aside-static');\r\n\r\n // Menu\r\n // Dropdown Submenu\r\n const asideMenuDropdown = this.layout.getProp('aside.menu.dropdown');\r\n if (asideMenuDropdown) {\r\n this.layout.setCSSClass('aside_menu', 'aside-menu-dropdown');\r\n this.layout.setHTMLAttribute('aside_menu', 'data-menu-dropdown', '1');\r\n }\r\n\r\n // Scrollable Menu\r\n if (asideMenuDropdown !== true) {\r\n this.layout.setHTMLAttribute('aside_menu', 'data-menu-scroll', '1');\r\n } else {\r\n this.layout.setHTMLAttribute('aside_menu', 'data-menu-scroll', '0');\r\n }\r\n\r\n const asideMenuSubmenuDropdownHoverTimout = this.layout.getProp(\r\n 'aside.menu.submenu.dropdown.hoverTimeout'\r\n );\r\n if (asideMenuSubmenuDropdownHoverTimout) {\r\n this.layout.setHTMLAttribute(\r\n 'aside_menu',\r\n 'data-menu-dropdown-timeout',\r\n asideMenuSubmenuDropdownHoverTimout\r\n );\r\n }\r\n }\r\n\r\n // init footer\r\n private initFooter() {\r\n if (this.layout.getProp('footer.width') === 'fluid') {\r\n this.layout.setCSSClass('footer_container', 'container-fluid');\r\n } else {\r\n this.layout.setCSSClass('footer_container', 'container');\r\n }\r\n }\r\n\r\n /**\r\n * Set the body class name based on page skin options\r\n */\r\n private initSkins() {\r\n }\r\n}\r\n","<!--begin::Logo-->\r\n<a routerLink=\"/\">\r\n <img alt=\"Logo\" [attr.src]=\"headerLogo\" class=\"logo-default max-h-30px\" />\r\n</a>\r\n<!--end::Logo-->\r\n\r\n<!--begin::Toolbar-->\r\n<div class=\"d-flex align-items-center\">\r\n <ng-container *ngIf=\"asideSelfDisplay\">\r\n <!--begin::Aside Mobile Toggle-->\r\n <button\r\n class=\"btn p-0 burger-icon burger-icon-left\"\r\n id=\"kt_aside_mobile_toggle\"\r\n >\r\n <span></span>\r\n </button>\r\n <!--end::Aside Mobile Toggle-->\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"headerMenuSelfDisplay\">\r\n <!--begin::Header Menu Mobile Toggle-->\r\n <button\r\n class=\"btn p-0 burger-icon burger-icon-left ml-4\"\r\n id=\"kt_header_mobile_toggle\"\r\n >\r\n <span></span>\r\n </button>\r\n <!--end::Header Menu Mobile Toggle-->\r\n </ng-container>\r\n\r\n <!--begin::Topbar Mobile Toggle-->\r\n <button\r\n class=\"btn btn-icon btn-hover-transparent-white p-0 ml-3\"\r\n id=\"kt_header_mobile_topbar_toggle\"\r\n >\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/General/User.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-xl\"\r\n ></span>\r\n </button>\r\n <!--end::Topbar Mobile Toggle-->\r\n</div>\r\n<!--end::Toolbar-->\r\n","import { Component, OnInit, AfterViewInit } from '@angular/core';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\n\r\n@Component({\r\n selector: 'app-header-mobile',\r\n templateUrl: './header-mobile.component.html',\r\n})\r\nexport class HeaderMobileComponent implements OnInit, AfterViewInit {\r\n headerLogo = '';\r\n asideSelfDisplay = true;\r\n headerMenuSelfDisplay = true;\r\n headerMobileClasses = '';\r\n headerMobileAttributes = {};\r\n constructor(private layout: LayoutService) {}\r\n\r\n ngOnInit(): void {\r\n // build view by layout config settings\r\n this.headerMobileClasses = this.layout.getStringCSSClasses('header_mobile');\r\n this.headerMobileAttributes = this.layout.getHTMLAttributes(\r\n 'header_mobile'\r\n );\r\n\r\n this.headerLogo = this.getLogoUrl();\r\n this.asideSelfDisplay = this.layout.getProp('aside.self.display');\r\n this.headerMenuSelfDisplay = this.layout.getProp(\r\n 'header.menu.self.display'\r\n );\r\n }\r\n\r\n ngAfterViewInit() {\r\n // Init Header Topbar For Mobile Mode\r\n // KTLayoutHeaderTopbar.init('kt_header_mobile_topbar_toggle');\r\n }\r\n\r\n private getLogoUrl() {\r\n const headerSelfTheme = this.layout.getProp('header.self.theme') || '';\r\n const brandSelfTheme = this.layout.getProp('brand.self.theme') || '';\r\n let result = 'logo-light.png';\r\n if (!this.asideSelfDisplay) {\r\n if (headerSelfTheme === 'light') {\r\n result = 'logo-dark.png';\r\n }\r\n } else {\r\n if (brandSelfTheme === 'light') {\r\n result = 'logo-dark.png';\r\n }\r\n }\r\n return `./assets/media/logos/${result}`;\r\n }\r\n}\r\n","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport KTOffcanvas from \"./../../components/offcanvas.js\";\r\nimport KTMenu from \"./../../components/menu.js\";\r\nimport { KTUtil } from \"./../../components/util.js\";\r\n\r\nvar KTLayoutHeaderMenu = function() {\r\n // Private properties\r\n\tvar _menuElement;\r\n var _menuObject;\r\n var _offcanvasElement;\r\n var _offcanvasObject;\r\n\r\n // Private functions\r\n\tvar _init = function() {\r\n\t\t_offcanvasObject = new KTOffcanvas(_offcanvasElement, {\r\n\t\t\toverlay: true,\r\n\t\t\tbaseClass: 'header-menu-wrapper',\r\n\t\t\tcloseBy: 'kt_header_menu_mobile_close_btn',\r\n\t\t\ttoggleBy: {\r\n\t\t\t\ttarget: 'kt_header_mobile_toggle',\r\n\t\t\t\tstate: 'burger-icon-active'\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t_menuObject = new KTMenu(_menuElement, {\r\n\t\t\tsubmenu: {\r\n\t\t\t\tdesktop: 'dropdown',\r\n\t\t\t\ttablet: 'accordion',\r\n\t\t\t\tmobile: 'accordion'\r\n\t\t\t},\r\n\t\t\taccordion: {\r\n\t\t\t\tslideSpeed: 200, // accordion toggle slide speed in milliseconds\r\n\t\t\t\texpandAll: false // allow having multiple expanded accordions in the menu\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Close aside offcanvas panel before page reload On tablet and mobile\r\n _menuObject.on('linkClick', function(menu) {\r\n if (KTUtil.isBreakpointDown('lg')) { // Tablet and mobile mode\r\n _offcanvasObject.hide(); // Hide offcanvas after general link click\r\n }\r\n });\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n init: function(menuId, offcanvasId) {\r\n _menuElement = KTUtil.getById(menuId);\r\n _offcanvasElement = KTUtil.getById(offcanvasId);\r\n\r\n if (!_menuElement) {\r\n return;\r\n }\r\n\r\n // Initialize menu\r\n _init();\r\n\t\t},\r\n\r\n\t\tgetMenuElement: function() {\r\n\t\t\treturn _menuElement;\r\n\t\t},\r\n\r\n getOffcanvasElement: function() {\r\n\t\t\treturn _offcanvasElement;\r\n\t\t},\r\n\r\n getMenu: function() {\r\n\t\t\treturn _menuObject;\r\n\t\t},\r\n\r\n\t\tpauseDropdownHover: function(time) {\r\n\t\t\tif (_menuObject) {\r\n\t\t\t\t_menuObject.pauseDropdownHover(time);\r\n\t\t\t}\r\n\t\t},\r\n\r\n getOffcanvas: function() {\r\n\t\t\treturn _offcanvasObject;\r\n\t\t},\r\n\r\n\t\tcloseMobileOffcanvas: function() {\r\n\t\t\tif (_menuObject && KTUtil.isMobileDevice()) {\r\n\t\t\t\t_offcanvasObject.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutHeaderMenu;\r\n}\r\n\r\nexport default KTLayoutHeaderMenu;","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { CoreAuthService, CoreCpMainMenuModel, CoreCpMainMenuService, TokenInfoModel } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { environment } from 'src/environments/environment';\r\n\r\nconst emptyMenuConfig = {\r\n items: []\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DynamicHeaderMenuService implements OnDestroy {\r\n private menuConfigSubject = new BehaviorSubject<any>(emptyMenuConfig);\r\n menuConfig$: Observable<any>;\r\n constructor(\r\n private coreCpMainMenuService: CoreCpMainMenuService,\r\n public coreAuthService: CoreAuthService,\r\n private tokenHelper: TokenHelper,\r\n public translate: TranslateService,\r\n ) {\r\n this.menuConfig$ = this.menuConfigSubject.asObservable();\r\n this.setMenu([]);\r\n // this.loadMenu();\r\n\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n if (this.tokenInfo && this.tokenInfo.userId > 0 && this.tokenInfo.siteId > 0) {\r\n setTimeout(() => { this.DataGetCpMenu(); }, 1000);\r\n }\r\n });\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((value) => {\r\n this.tokenInfo = value;\r\n\r\n if (this.tokenInfo && this.tokenInfo.userId > 0 && this.tokenInfo.siteId > 0) {\r\n setTimeout(() => { this.DataGetCpMenu(); }, 1000);\r\n }\r\n });\r\n }\r\n tokenInfo = new TokenInfoModel();\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n\r\n private setMenu(menuConfig) {\r\n this.menuConfigSubject.next(menuConfig);\r\n }\r\n\r\n private getMenu(): any {\r\n return this.menuConfigSubject.value;\r\n }\r\n ngOnDestroy() {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n DataGetCpMenu(): void {\r\n const menuItems: any = [{\r\n title: this.translate.instant('MENU.DASHBOARD'),\r\n root: true,\r\n alignment: 'left',\r\n page: '/dashboard',\r\n translate: this.translate.instant('MENU.DASHBOARD'),\r\n }];\r\n this.coreCpMainMenuService.ServiceGetAllMenu(null).subscribe(\r\n (next) => {\r\n const list = [];\r\n next.listItems.forEach(element => {\r\n list.push(this.listItemAdd(element, true));\r\n });\r\n\r\n menuItems.push({\r\n title: this.translate.instant('MENU.MENU'),\r\n bullet: 'dot',\r\n icon: 'flaticon-web',\r\n //page: '#',\r\n //translate: 'MENU.MENU',\r\n mega: false,\r\n submenu: list\r\n });\r\n\r\n this.setMenu(menuItems);\r\n }\r\n ,(error)=>{\r\n this.setMenu(menuItems);\r\n }\r\n );\r\n }\r\n listItemAdd(item: CoreCpMainMenuModel, rootStatus = false): any {\r\n let retOut: any;\r\n retOut = {\r\n title: item.titleML,\r\n root: rootStatus,\r\n page: (item.routeAddressLink?.length > 0) ? item.routeAddressLink : null,\r\n color: item.color,\r\n icon: item.icon,\r\n svg: '',\r\n bullet: 'dot',\r\n mega: true,\r\n };\r\n if (item.children && item.children.length > 0) {\r\n retOut.submenu = this.listItemsChildAdd(item);\r\n }\r\n return retOut;\r\n }\r\n listItemsChildAdd(item: CoreCpMainMenuModel): any {\r\n const list = [];\r\n if (item && item.children) {\r\n item.children.forEach(element => {\r\n list.push(this.listItemAdd(element));\r\n });\r\n }\r\n return list;\r\n }\r\n}\r\n","<ng-container *ngIf=\"menuConfig\">\r\n <!-- begin::Header Nav -->\r\n <ul class=\"menu-nav\" [ngClass]=\"ulCSSClasses\">\r\n <ng-container *ngFor=\"let item of menuConfig\">\r\n <ng-container *ngIf=\"item.title\" [ngTemplateOutlet]=\"menu1LevelTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: item }\"></ng-container>\r\n </ng-container>\r\n </ul>\r\n <!-- end::Header Nav -->\r\n</ng-container>\r\n\r\n<!-- begin::1 Level -->\r\n<ng-template #menu1LevelTemplate let-item=\"item\">\r\n <!-- begin::if don't have submenu -->\r\n <ng-container *ngIf=\"!item.submenu\">\r\n <!-- begin::1 Level -->\r\n <li class=\"menu-item menu-item-rel\" routerLinkActive=\"menu-item-active\">\r\n <a *ngIf=\"item.page && item.page.length>0\" class=\"menu-link\" [routerLink]=\"item.page\" routerLinkActive=\"active\">\r\n <i [ngClass]=\"item.icon\" [style.color]=\"item.color?.length>0 ? item.color:''\"\r\n aria-hidden=\"true\"><span></span></i> \r\n <span class=\"menu-text\" >\r\n {{item.title}}</span>\r\n <ng-container *ngIf=\"rootArrowEnabled\">\r\n <i class=\"menu-arrow\"></i>\r\n </ng-container>\r\n </a>\r\n <a *ngIf=\"!item.page || item.page.length==0\" class=\"menu-link\" routerLinkActive=\"active\">\r\n <i [ngClass]=\"item.icon\" [style.color]=\"item.color?.length>0 ? item.color:''\"\r\n aria-hidden=\"true\"><span></span></i> \r\n <span class=\"menu-text\" >\r\n {{item.title}}</span>\r\n <ng-container *ngIf=\"rootArrowEnabled\">\r\n <i class=\"menu-arrow\"></i>\r\n </ng-container>\r\n </a>\r\n </li>\r\n <!-- end::1 Level -->\r\n </ng-container>\r\n <!-- end::if don't have submenu -->\r\n\r\n <!-- begin::if has submenu classic -->\r\n <ng-container *ngIf=\"item.submenu && !item.mega\">\r\n <!-- begin::1 Level -->\r\n <li [attr.data-menu-toggle]=\"headerMenuDesktopToggle\" aria-haspopup=\"true\"\r\n class=\"menu-item menu-item-submenu menu-item-rel\" routerLinkActive=\"menu-item-active\"\r\n [ngClass]=\"{ 'menu-item-active': isMenuItemActive(item.page) }\">\r\n <a *ngIf=\"item.page && item.page.length>0\" class=\"menu-link menu-toggle\" [routerLink]=\"item.page\" routerLinkActive=\"active\"\r\n [ngClass]=\"{ 'active ': isMenuItemActive(item.page) }\">\r\n <i [ngClass]=\"item.icon\" [style.color]=\"item.color?.length>0 ? item.color:''\"\r\n aria-hidden=\"true\"><span></span></i> \r\n <span class=\"menu-text\">{{item.title}}</span>\r\n <i class=\"menu-arrow\"></i>\r\n </a>\r\n <a *ngIf=\"!item.page || item.page.length==0\" class=\"menu-link menu-toggle\" routerLinkActive=\"active\"\r\n [ngClass]=\"{ 'active ': isMenuItemActive(item.page) }\">\r\n <i [ngClass]=\"item.icon\" [style.color]=\"item.color?.length>0 ? item.color:''\"\r\n aria-hidden=\"true\"><span></span></i> \r\n <span class=\"menu-text\">{{item.title}}</span>\r\n <i class=\"menu-arrow\"></i>\r\n </a>\r\n <div class=\"menu-submenu menu-submenu-classic menu-submenu-left\">\r\n <ul class=\"menu-subnav\">\r\n <ng-container *ngFor=\"let sub of item.submenu\" [ngTemplateOutlet]=\"menu2LevelTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: sub }\"></ng-container>\r\n </ul>\r\n </div>\r\n </li>\r\n </ng-container>\r\n <!-- end::if has submenu classic -->\r\n\r\n <!-- begin::if has submenu mega -->\r\n <ng-container *ngIf=\"item.submenu && item.mega\">\r\n <!-- begin::1 Level -->\r\n <li class=\"menu-item menu-item-submenu menu-item-rel\" routerLinkActive=\"menu-item-active\"\r\n [attr.data-menu-toggle]=\"headerMenuDesktopToggle\" aria-haspopup=\"true\"\r\n [ngClass]=\"{ 'menu-item-active ': isMenuItemActive(item.page) }\">\r\n <a class=\"menu-link menu-toggle\" routerLinkActive=\"active\" [routerLink]=\"item.page\"\r\n [ngClass]=\"{ 'active ': isMenuItemActive(item.page) }\">\r\n <i [ngClass]=\"item.icon\" [style.color]=\"item.color?.length>0 ? item.color:''\"\r\n aria-hidden=\"true\"><span></span></i> \r\n <span class=\"menu-text\">{{item.title}}</span>\r\n <i class=\"menu-arrow\"></i>\r\n </a>\r\n <div class=\"menu-submenu menu-submenu-fixed menu-submenu-left\" style=\"width: '1000px';\">\r\n <div class=\"menu-subnav\">\r\n <ul class=\"menu-content\">\r\n <ng-container *ngFor=\"let sub of item.submenu\" [ngTemplateOutlet]=\"menu2LevelTemplateMega\"\r\n [ngTemplateOutletContext]=\"{ item: sub }\"></ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n </li>\r\n </ng-container>\r\n <!-- end::if has submenu mega -->\r\n</ng-template>\r\n\r\n<!-- begin::2 Level -->\r\n<ng-template #menu2LevelTemplate let-item=\"item\">\r\n <!-- begin::if don't have submenu -->\r\n <ng-container *ngIf=\"!item.submenu\">\r\n <li class=\"menu-item\" aria-haspopup=\"true\" routerLinkActive=\"menu-item-active\">\r\n <a class=\"menu-link\" [routerLink]=\"item.page\" routerLinkActive=\"active\">\r\n <i [ngClass]=\"item.icon\" [style.color]=\"item.color?.length>0 ? item.color:''\"\r\n aria-hidden=\"true\"><span></span></i> \r\n <span class=\"menu-text\" >{{item.title}}</span></a>\r\n </li>\r\n </ng-container>\r\n <!-- end::if don't have submenu -->\r\n\r\n <!-- begin::if has submenu -->\r\n <ng-container *ngIf=\"item.submenu\">\r\n <!-- begin::2 Level -->\r\n <li class=\"menu-item menu-item-submenu\" data-menu-toggle=\"hover\" aria-haspopup=\"true\"\r\n routerLinkActive=\"menu-item-active\" [ngClass]=\"{ 'menu-item-active ': isMenuItemActive(item.page) }\">\r\n <a class=\"menu-link menu-toggle\" [routerLink]=\"item.page\" routerLinkActive=\"active\"\r\n [ngClass]=\"{ 'active ': isMenuItemActive(item.page) }\">\r\n <ng-container *ngIf=\"item.svg\">\r\n <span [inlineSVG]=\"item.svg\" cacheSVG=\"true\" class=\"svg-icon menu-icon\"></span>\r\n </ng-container>\r\n <i [ngClass]=\"item.icon\" [style.color]=\"item.color?.length>0 ? item.color:''\"\r\n aria-hidden=\"true\"><span></span></i> \r\n <span class=\"menu-text\" >{{item.title}}</span>\r\n <i class=\"menu-arrow\"></i>\r\n </a>\r\n <div class=\"menu-submenu menu-submenu-classic menu-submenu-right\">\r\n <ul class=\"menu-subnav\">\r\n <!-- submenu-->\r\n <ng-container *ngFor=\"let sub of item.submenu\" [ngTemplateOutlet]=\"menu3LevelTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: sub }\"></ng-container>\r\n </ul>\r\n </div>\r\n </li>\r\n </ng-container>\r\n <!-- end::if has submenu -->\r\n</ng-template>\r\n<!-- end::2 Level -->\r\n\r\n<!-- begin::3 Level -->\r\n<ng-template #menu3LevelTemplate let-item=\"item\">\r\n <!-- begin::3 Level -->\r\n <li class=\"menu-item\" routerLinkActive=\"menu-item-active\">\r\n <a class=\"menu-link\" [routerLink]=\"item.page\" routerLinkActive=\"active\">\r\n <i class=\"menu-bullet menu-bullet-dot\"><span></span></i>\r\n <i [ngClass]=\"item.icon\" [style.color]=\"item.color?.length>0 ? item.color:''\"\r\n aria-hidden=\"true\"><span></span></i> \r\n <span class=\"menu-text\">{{item.title}}</span>\r\n </a>\r\n </li>\r\n <!-- end::3 Level -->\r\n</ng-template>\r\n<!-- end::3 Level -->\r\n\r\n<!-- begin::2 Level Mega -->\r\n<ng-template #menu2LevelTemplateMega let-item=\"item\">\r\n <li class=\"menu-item\">\r\n <h3 class=\"menu-heading menu-toggle\">\r\n <i class=\"menu-bullet menu-bullet-dot\"><span></span></i>\r\n <i [ngClass]=\"item.icon\" [style.color]=\"item.color?.length>0 ? item.color:''\"\r\n aria-hidden=\"true\"><span></span></i> \r\n <span class=\"menu-text\">{{item.title}}</span>\r\n <i class=\"menu-arrow\"></i>\r\n </h3>\r\n <ul class=\"menu-inner\">\r\n <!-- submenu-->\r\n <ng-container *ngFor=\"let sub of item.submenu\" [ngTemplateOutlet]=\"menu3LevelTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: sub }\"></ng-container>\r\n </ul>\r\n </li>\r\n</ng-template>\r\n<!-- end::3 Level -->","import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { DynamicHeaderMenuService } from 'src/app/core/services/dynamic-header-menu.service';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-header-menu-dynamic',\r\n templateUrl: './header-menu-dynamic.component.html',\r\n styleUrls: ['./header-menu-dynamic.component.scss']\r\n})\r\nexport class HeaderMenuDynamicComponent implements OnInit, OnDestroy {\r\n subscriptions: Subscription[] = [];\r\n currentUrl: string;\r\n menuConfig: any;\r\n\r\n ulCSSClasses: string;\r\n rootArrowEnabled: boolean;\r\n headerMenuDesktopToggle: string;\r\n\r\n constructor(\r\n private layout: LayoutService,\r\n private router: Router,\r\n private menu: DynamicHeaderMenuService,\r\n private cdr: ChangeDetectorRef) { }\r\n\r\n ngOnInit(): void {\r\n this.ulCSSClasses = this.layout.getStringCSSClasses('header_menu_nav');\r\n this.rootArrowEnabled = this.layout.getProp('header.menu.self.rootArrow');\r\n this.headerMenuDesktopToggle = this.layout.getProp(\r\n 'header.menu.desktop.toggle'\r\n );\r\n\r\n // router subscription\r\n this.currentUrl = this.router.url.split(/[?#]/)[0];\r\n const routerSubscr = this.router.events.pipe(\r\n filter(event => event instanceof NavigationEnd)\r\n ).subscribe((event) => {\r\n this.currentUrl = event['url'];\r\n this.cdr.detectChanges();\r\n });\r\n this.subscriptions.push(routerSubscr);\r\n\r\n // menu load\r\n const menuSubscr = this.menu.menuConfig$.subscribe(res => {\r\n this.menuConfig = res;\r\n this.cdr.detectChanges();\r\n });\r\n this.subscriptions.push(menuSubscr);\r\n }\r\n\r\n isMenuItemActive(path) {\r\n if (!this.currentUrl || !path) {\r\n return false;\r\n }\r\n\r\n if (this.currentUrl === path) {\r\n return true;\r\n }\r\n\r\n if (this.currentUrl.indexOf(path) > -1) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(sb => sb.unsubscribe());\r\n }\r\n}\r\n","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport { KTUtil } from \"./../../components/util.js\";\r\nimport KTOffcanvas from \"./../../components/offcanvas.js\";\r\n\r\nvar KTLayoutQuickSearch = function() {\r\n // Private properties\r\n var _element;\r\n var _offcanvasObject;\r\n\r\n // Private functions\r\n var _init = function() {\r\n var header = KTUtil.find(_element, '.offcanvas-header');\r\n var content = KTUtil.find(_element, '.offcanvas-content');\r\n var form = KTUtil.find(_element, '.quick-search-form');\r\n var results = KTUtil.find(_element, '.quick-search-wrapper');\r\n\r\n _offcanvasObject = new KTOffcanvas(_element, {\r\n overlay: true,\r\n baseClass: 'offcanvas',\r\n placement: 'right',\r\n closeBy: 'kt_quick_search_close',\r\n toggleBy: 'kt_quick_search_toggle'\r\n });\r\n\r\n KTUtil.scrollInit(results, {\r\n disableForMobile: true,\r\n resetHeightOnDestroy: true,\r\n handleWindowResize: true,\r\n height: function() {\r\n var height = parseInt(KTUtil.getViewPort().height);\r\n\r\n if (header) {\r\n height = height - parseInt(KTUtil.actualHeight(header));\r\n height = height - parseInt(KTUtil.css(header, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(header, 'marginBottom'));\r\n }\r\n\r\n if (content) {\r\n height = height - parseInt(KTUtil.css(content, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(content, 'marginBottom'));\r\n }\r\n\r\n if (results) {\r\n height = height - parseInt(KTUtil.actualHeight(form));\r\n height = height - parseInt(KTUtil.css(form, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(form, 'marginBottom'));\r\n\r\n height = height - parseInt(KTUtil.css(results, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(results, 'marginBottom'));\r\n }\r\n\r\n height = height - parseInt(KTUtil.css(_element, 'paddingTop'));\r\n height = height - parseInt(KTUtil.css(_element, 'paddingBottom'));\r\n\r\n height = height - 2;\r\n\r\n return height;\r\n }\r\n });\r\n }\r\n\r\n // Public methods\r\n return {\r\n init: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n },\r\n\r\n getElement: function() {\r\n return _element;\r\n }\r\n };\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutQuickSearch;\r\n}\r\n\r\nexport default KTLayoutQuickSearch;","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport { KTUtil } from \"./../../components/util.js\";\r\nimport KTOffcanvas from \"./../../components/offcanvas.js\";\r\n\r\nvar KTLayoutQuickNotifications = function() {\r\n // Private properties\r\n var _element;\r\n var _offcanvasObject;\r\n\r\n // Private functions\r\n var _init = function() {\r\n var header = KTUtil.find(_element, '.offcanvas-header');\r\n var content = KTUtil.find(_element, '.offcanvas-content');\r\n\r\n _offcanvasObject = new KTOffcanvas(_element, {\r\n overlay: true,\r\n baseClass: 'offcanvas',\r\n placement: 'right',\r\n closeBy: 'kt_quick_notifications_close',\r\n toggleBy: 'kt_quick_notifications_toggle'\r\n });\r\n\r\n KTUtil.scrollInit(content, {\r\n disableForMobile: true,\r\n resetHeightOnDestroy: true,\r\n handleWindowResize: true,\r\n height: function() {\r\n var height = parseInt(KTUtil.getViewPort().height);\r\n\r\n if (header) {\r\n height = height - parseInt(KTUtil.actualHeight(header));\r\n height = height - parseInt(KTUtil.css(header, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(header, 'marginBottom'));\r\n }\r\n\r\n if (content) {\r\n height = height - parseInt(KTUtil.css(content, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(content, 'marginBottom'));\r\n }\r\n\r\n height = height - parseInt(KTUtil.css(_element, 'paddingTop'));\r\n height = height - parseInt(KTUtil.css(_element, 'paddingBottom'));\r\n\r\n height = height - 2;\r\n\r\n return height;\r\n }\r\n });\r\n }\r\n\r\n // Public methods\r\n return {\r\n init: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n },\r\n\r\n getElement: function() {\r\n return _element;\r\n }\r\n };\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutQuickNotifications;\r\n}\r\n\r\nexport default KTLayoutQuickNotifications;","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport { KTUtil } from \"./../../components/util.js\";\r\nimport KTOffcanvas from \"./../../components/offcanvas.js\";\r\n\r\nvar KTLayoutQuickActions = function() {\r\n // Private properties\r\n var _element;\r\n var _offcanvasObject;\r\n\r\n // Private functions\r\n var _init = function() {\r\n var header = KTUtil.find(_element, '.offcanvas-header');\r\n var content = KTUtil.find(_element, '.offcanvas-content');\r\n\r\n _offcanvasObject = new KTOffcanvas(_element, {\r\n overlay: true,\r\n baseClass: 'offcanvas',\r\n placement: 'right',\r\n closeBy: 'kt_quick_actions_close',\r\n toggleBy: 'kt_quick_actions_toggle'\r\n });\r\n\r\n KTUtil.scrollInit(content, {\r\n disableForMobile: true,\r\n resetHeightOnDestroy: true,\r\n handleWindowResize: true,\r\n height: function() {\r\n var height = parseInt(KTUtil.getViewPort().height);\r\n\r\n if (header) {\r\n height = height - parseInt(KTUtil.actualHeight(header));\r\n height = height - parseInt(KTUtil.css(header, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(header, 'marginBottom'));\r\n }\r\n\r\n if (content) {\r\n height = height - parseInt(KTUtil.css(content, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(content, 'marginBottom'));\r\n }\r\n\r\n height = height - parseInt(KTUtil.css(_element, 'paddingTop'));\r\n height = height - parseInt(KTUtil.css(_element, 'paddingBottom'));\r\n\r\n height = height - 2;\r\n\r\n return height;\r\n }\r\n });\r\n }\r\n\r\n // Public methods\r\n return {\r\n init: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n },\r\n\r\n getElement: function() {\r\n return _element;\r\n }\r\n };\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutQuickActions;\r\n}\r\n\r\nexport default KTLayoutQuickActions;","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport KTOffcanvas from \"./../../components/offcanvas.js\";\r\nimport { KTUtil } from \"./../../components/util.js\";\r\n\r\nvar KTLayoutQuickCartPanel = function() {\r\n // Private properties\r\n var _element;\r\n var _offcanvasObject;\r\n\r\n // Private functions\r\n var _init = function() {\r\n _offcanvasObject = new KTOffcanvas(_element, {\r\n overlay: true,\r\n baseClass: 'offcanvas',\r\n placement: 'right',\r\n closeBy: 'kt_quick_cart_close',\r\n toggleBy: 'kt_quick_cart_toggle'\r\n });\r\n\r\n var header = KTUtil.find(_element, '.offcanvas-header');\r\n var content = KTUtil.find(_element, '.offcanvas-content');\r\n var wrapper = KTUtil.find(_element, '.offcanvas-wrapper');\r\n var footer = KTUtil.find(_element, '.offcanvas-footer');\r\n\r\n KTUtil.scrollInit(wrapper, {\r\n disableForMobile: true,\r\n resetHeightOnDestroy: true,\r\n handleWindowResize: true,\r\n height: function() {\r\n var height = parseInt(KTUtil.getViewPort().height);\r\n\r\n if (header) {\r\n height = height - parseInt(KTUtil.actualHeight(header));\r\n height = height - parseInt(KTUtil.css(header, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(header, 'marginBottom'));\r\n }\r\n\r\n if (content) {\r\n height = height - parseInt(KTUtil.css(content, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(content, 'marginBottom'));\r\n }\r\n\r\n if (wrapper) {\r\n height = height - parseInt(KTUtil.css(wrapper, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(wrapper, 'marginBottom'));\r\n }\r\n\r\n if (footer) {\r\n height = height - parseInt(KTUtil.actualHeight(footer));\r\n height = height - parseInt(KTUtil.css(footer, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(footer, 'marginBottom'));\r\n }\r\n\r\n height = height - parseInt(KTUtil.css(_element, 'paddingTop'));\r\n height = height - parseInt(KTUtil.css(_element, 'paddingBottom'));\r\n\r\n height = height - 2;\r\n\r\n return height;\r\n }\r\n });\r\n }\r\n\r\n // Public methods\r\n return {\r\n init: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n }\r\n };\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutQuickCartPanel;\r\n}\r\n\r\nexport default KTLayoutQuickCartPanel;","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport { KTUtil } from \"./../../components/util.js\";\r\nimport KTOffcanvas from \"./../../components/offcanvas.js\";\r\n\r\nvar KTLayoutQuickPanel = function() {\r\n // Private properties\r\n var _element;\r\n var _offcanvasObject;\r\n var _notificationsElement;\r\n var _logsElement;\r\n var _settingsElement;\r\n\r\n // Private functions\r\n var _getContentHeight = function() {\r\n var height;\r\n\r\n var header = KTUtil.find(_element, '.offcanvas-header');\r\n var content = KTUtil.find(_element, '.offcanvas-content');\r\n\r\n var height = parseInt(KTUtil.getViewPort().height);\r\n\r\n if (header) {\r\n height = height - parseInt(KTUtil.actualHeight(header));\r\n height = height - parseInt(KTUtil.css(header, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(header, 'marginBottom'));\r\n }\r\n\r\n if (content) {\r\n height = height - parseInt(KTUtil.css(content, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(content, 'marginBottom'));\r\n }\r\n\r\n height = height - parseInt(KTUtil.css(_element, 'paddingTop'));\r\n height = height - parseInt(KTUtil.css(_element, 'paddingBottom'));\r\n\r\n height = height - 2;\r\n\r\n return height;\r\n }\r\n\r\n var _init = function() {\r\n _offcanvasObject = new KTOffcanvas(_element, {\r\n overlay: true,\r\n baseClass: 'offcanvas',\r\n placement: 'right',\r\n closeBy: 'kt_quick_panel_close',\r\n toggleBy: 'kt_quick_panel_toggle'\r\n });\r\n }\r\n\r\n var _initNotifications = function() {\r\n KTUtil.scrollInit(_notificationsElement, {\r\n mobileNativeScroll: true,\r\n resetHeightOnDestroy: true,\r\n handleWindowResize: true,\r\n height: function() {\r\n return _getContentHeight();\r\n }\r\n });\r\n }\r\n\r\n var _initLogs = function() {\r\n KTUtil.scrollInit(_logsElement, {\r\n mobileNativeScroll: true,\r\n resetHeightOnDestroy: true,\r\n handleWindowResize: true,\r\n height: function() {\r\n return _getContentHeight();\r\n }\r\n });\r\n }\r\n\r\n var _initSettings = function() {\r\n KTUtil.scrollInit(_settingsElement, {\r\n mobileNativeScroll: true,\r\n resetHeightOnDestroy: true,\r\n handleWindowResize: true,\r\n height: function() {\r\n return _getContentHeight();\r\n }\r\n });\r\n }\r\n\r\n var _updateScrollbars = function() {\r\n $(_element).find('a[data-toggle=\"tab\"]').on('shown.bs.tab', function (e) {\r\n KTUtil.scrollUpdate(_notificationsElement);\r\n KTUtil.scrollUpdate(_logsElement);\r\n KTUtil.scrollUpdate(_settingsElement);\r\n });\r\n }\r\n\r\n // Public methods\r\n return {\r\n init: function(id) {\r\n _element = KTUtil.getById(id);\r\n _notificationsElement = KTUtil.getById('kt_quick_panel_notifications');\r\n _logsElement = KTUtil.getById('kt_quick_panel_logs');\r\n _settingsElement = KTUtil.getById('kt_quick_panel_settings');\r\n\r\n _init();\r\n _initNotifications();\r\n _initLogs();\r\n _initSettings();\r\n\r\n \r\n }\r\n };\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutQuickPanel;\r\n}\r\n\r\nexport default KTLayoutQuickPanel;","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport { KTUtil } from \"./../../components/util.js\";\r\nimport KTOffcanvas from \"./../../components/offcanvas.js\";\r\n\r\nvar KTLayoutQuickUser = function() {\r\n // Private properties\r\n var _element;\r\n var _offcanvasObject;\r\n\r\n // Private functions\r\n var _init = function() {\r\n var header = KTUtil.find(_element, '.offcanvas-header');\r\n var content = KTUtil.find(_element, '.offcanvas-content');\r\n\r\n _offcanvasObject = new KTOffcanvas(_element, {\r\n overlay: true,\r\n baseClass: 'offcanvas',\r\n placement: 'right',\r\n closeBy: 'kt_quick_user_close',\r\n toggleBy: 'kt_quick_user_toggle'\r\n });\r\n\r\n KTUtil.scrollInit(content, {\r\n disableForMobile: true,\r\n resetHeightOnDestroy: true,\r\n handleWindowResize: true,\r\n height: function() {\r\n var height = parseInt(KTUtil.getViewPort().height);\r\n\r\n if (header) {\r\n height = height - parseInt(KTUtil.actualHeight(header));\r\n height = height - parseInt(KTUtil.css(header, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(header, 'marginBottom'));\r\n }\r\n\r\n if (content) {\r\n height = height - parseInt(KTUtil.css(content, 'marginTop'));\r\n height = height - parseInt(KTUtil.css(content, 'marginBottom'));\r\n }\r\n\r\n height = height - parseInt(KTUtil.css(_element, 'paddingTop'));\r\n height = height - parseInt(KTUtil.css(_element, 'paddingBottom'));\r\n\r\n height = height - 2;\r\n\r\n return height;\r\n }\r\n });\r\n }\r\n\r\n // Public methods\r\n return {\r\n init: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n },\r\n\r\n getElement: function() {\r\n return _element;\r\n }\r\n };\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n // module.exports = KTLayoutQuickUser;\r\n}\r\n\r\nexport default KTLayoutQuickUser;","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport KTToggle from \"./../../components/toggle.js\";\r\nimport { KTUtil } from \"./../../components/util.js\";\r\n\r\nvar KTLayoutHeaderTopbar = function() {\r\n // Private properties\r\n\tvar _toggleElement;\r\n var _toggleObject;\r\n\r\n // Private functions\r\n var _init = function() {\r\n\t\t_toggleObject = new KTToggle(_toggleElement, KTUtil.getBody(), {\r\n\t\t\ttargetState: 'topbar-mobile-on',\r\n\t\t\ttoggleState: 'active'\r\n\t\t});\r\n }\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _toggleElement = KTUtil.getById(id);\r\n\r\n\t\t\tif (!_toggleElement) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n\t\t},\r\n\r\n getToggleElement: function() {\r\n return _toggleElement;\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutHeaderTopbar;\r\n}\r\n\r\nexport default KTLayoutHeaderTopbar;","<ng-container *ngIf=\"data !== null\">\r\n <!--begin::Wrapper-->\r\n <div class=\"quick-search-wrapper pt-5\">\r\n <div\r\n [ngStyle]=\"{ 'max-height': '30vh', position: 'relative' }\"\r\n class=\"scroll\"\r\n perfectScrollbar\r\n >\r\n <div class=\"quick-search-result\">\r\n <!-- Has Result -->\r\n <ng-container *ngIf=\"data.length > 0\">\r\n <ng-container *ngFor=\"let item of data\">\r\n <ng-container\r\n *ngIf=\"item.type === 0\"\r\n [ngTemplateOutlet]=\"documentsTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: item }\"\r\n ></ng-container>\r\n <ng-container\r\n *ngIf=\"item.type === 1\"\r\n [ngTemplateOutlet]=\"membersTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: item }\"\r\n ></ng-container>\r\n <ng-container\r\n *ngIf=\"item.type === 2\"\r\n [ngTemplateOutlet]=\"filesTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: item }\"\r\n ></ng-container>\r\n </ng-container>\r\n </ng-container>\r\n <!-- No Result -->\r\n <ng-container *ngIf=\"data.length === 0\">\r\n <div class=\"text-muted d-none\">\r\n No record found\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <!--end::Wrapper-->\r\n</ng-container>\r\n\r\n<ng-template #documentsTemplate let-item=\"item\">\r\n <div class=\"font-size-sm text-primary font-weight-bolder text-uppercase mb-2\">\r\n Documents\r\n </div>\r\n <div class=\"mb-10\">\r\n <ng-container *ngFor=\"let el of item.items\">\r\n <div class=\"d-flex align-items-center flex-grow-1 mb-2\">\r\n <div class=\"symbol symbol-45 bg-transparent flex-shrink-0\">\r\n <!-- <span class=\"icon-svg\" [inlineSVG]=\"el.svgPath\"></span> -->\r\n <img [src]=\"el.svgPath\" alt=\"\" />\r\n </div>\r\n <div class=\"d-flex flex-column ml-3 mt-2 mb-2\">\r\n <a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n {{ el.title }}\r\n </a>\r\n <span class=\"font-size-sm font-weight-bold text-muted\">\r\n {{ el.description }}\r\n </span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #membersTemplate let-item=\"item\">\r\n <div class=\"font-size-sm text-primary font-weight-bolder text-uppercase mb-2\">\r\n Members\r\n </div>\r\n <div class=\"mb-10\">\r\n <ng-container *ngFor=\"let el of item.items\">\r\n <div class=\"d-flex align-items-center flex-grow-1 mb-2\">\r\n <div class=\"symbol symbol-45 symbol-circle flex-shrink-0\">\r\n <div\r\n class=\"symbol-label\"\r\n [ngStyle]=\"{ 'background-image': 'url(' + el.imgPath + ')' }\"\r\n ></div>\r\n </div>\r\n <div class=\"d-flex flex-column ml-3 mt-2 mb-2\">\r\n <a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n {{ el.title }}\r\n </a>\r\n <span class=\"font-size-sm font-weight-bold text-muted\">\r\n {{ el.description }}\r\n </span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #filesTemplate let-item=\"item\">\r\n <div class=\"font-size-sm text-primary font-weight-bolder text-uppercase mb-2\">\r\n Files\r\n </div>\r\n <div class=\"mb-10\">\r\n <ng-container *ngFor=\"let el of item.items\">\r\n <div class=\"d-flex align-items-center flex-grow-1 mb-2\">\r\n <div class=\"symbol symbol-45 symbol-circle flex-shrink-0\">\r\n <div class=\"symbol-label\">\r\n <i [ngClass]=\"el.iconClasses\"></i>\r\n </div>\r\n </div>\r\n <div class=\"d-flex flex-column ml-3 mt-2 mb-2\">\r\n <a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n {{ el.title }}\r\n </a>\r\n <span class=\"font-size-sm font-weight-bold text-muted\">\r\n {{ el.description }}\r\n </span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</ng-template>\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-search-result',\r\n templateUrl: './search-result.component.html',\r\n styleUrls: ['./search-result.component.scss'],\r\n})\r\nexport class SearchResultComponent implements OnInit {\r\n // Public properties\r\n @Input() data: any[];\r\n constructor() { }\r\n\r\n ngOnInit(): void { }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\n\r\nconst documents = {\r\n title: 'Documents',\r\n type: 0,\r\n items: [\r\n {\r\n svgPath: 'assets/media/svg/files/doc.svg',\r\n title: 'AirPlus Requirements',\r\n description: 'by Grog John',\r\n },\r\n {\r\n svgPath: 'assets/media/svg/files/pdf.svg',\r\n title: 'TechNav Documentation',\r\n description: 'by Mary Brown',\r\n },\r\n {\r\n svgPath: 'assets/media/svg/files/xml.svg',\r\n title: 'All Framework Docs',\r\n description: 'by Nick Stone',\r\n },\r\n {\r\n svgPath: 'assets/media/svg/files/csv.svg',\r\n title: 'Finance & Accounting Reports',\r\n description: 'by Jhon Larson',\r\n },\r\n ],\r\n};\r\n\r\nconst members = {\r\n title: 'Members',\r\n type: 1,\r\n items: [\r\n {\r\n imgPath: 'assets/media/users/300_20.jpg',\r\n title: 'Milena Gibson',\r\n description: 'UI Designer',\r\n },\r\n {\r\n imgPath: 'assets/media/users/300_15.jpg',\r\n title: 'Stefan JohnStefan',\r\n description: 'Marketing Manager',\r\n },\r\n {\r\n imgPath: 'assets/media/users/300_12.jpg',\r\n title: 'Anna Strong',\r\n description: 'Software Developer',\r\n },\r\n {\r\n imgPath: 'assets/media/users/300_16.jpg',\r\n title: 'Nick Bold',\r\n description: 'Project Coordinator',\r\n },\r\n ],\r\n};\r\n\r\nconst files = {\r\n title: 'Files',\r\n type: 2,\r\n items: [\r\n {\r\n iconClasses: 'flaticon-psd text-primary',\r\n title: '79 PSD files generated',\r\n description: 'by Grog John',\r\n },\r\n {\r\n iconClasses: 'flaticon2-supermarket text-warning',\r\n title: '$2900 worth products sold',\r\n description: 'Total 234 items',\r\n },\r\n {\r\n iconClasses: 'flaticon-safe-shield-protection text-info',\r\n title: '4 New items submitted',\r\n description: 'Marketing Manager',\r\n },\r\n {\r\n iconClasses: 'flaticon-safe-shield-protection text-warning',\r\n title: '4 New items submitted',\r\n description: 'Marketing Manager',\r\n },\r\n ],\r\n};\r\n\r\n@Component({\r\n selector: 'app-search-dropdown-inner',\r\n templateUrl: './search-dropdown-inner.component.html',\r\n})\r\nexport class SearchDropdownInnerComponent implements OnInit {\r\n @ViewChild('searchInput', { static: true }) searchInput: ElementRef;\r\n data: any[] = [];\r\n loading: boolean;\r\n\r\n constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n /**\r\n * Search\r\n * @param e: Event\r\n */\r\n search(e) {\r\n this.data = null;\r\n if (e.target.value.length > 1) {\r\n this.loading = true;\r\n // simulate getting search result\r\n setTimeout(() => {\r\n // Uncomment this. Right now it's just mock\r\n // this.data = this.searchInData(e.target.value);\r\n this.data = [documents, members, files];\r\n this.loading = false;\r\n this.cdr.markForCheck();\r\n }, 500);\r\n }\r\n }\r\n /**\r\n * Clear search\r\n *\r\n * @param e: Event\r\n */\r\n clear(e) {\r\n this.data = null;\r\n this.searchInput.nativeElement.value = '';\r\n }\r\n\r\n openChange() {\r\n setTimeout(() => this.searchInput.nativeElement.focus());\r\n }\r\n\r\n showCloseButton() {\r\n return this.data && this.data.length && !this.loading;\r\n }\r\n}\r\n","<div\r\n class=\"quick-search quick-search-dropdown\"\r\n [ngClass]=\"{ 'quick-search-has-result': data?.length }\"\r\n id=\"kt_quick_search_dropdown\"\r\n>\r\n <!--begin:Form-->\r\n <form method=\"get\" class=\"quick-search-form\">\r\n <div class=\"input-group\">\r\n <div class=\"input-group-prepend\">\r\n <span class=\"input-group-text\">\r\n <span\r\n class=\"svg-icon svg-icon-lg\"\r\n [inlineSVG]=\"'./assets/media/svg/icons/General/Search.svg'\"\r\n ></span>\r\n </span>\r\n </div>\r\n <input\r\n #searchInput\r\n (keyup)=\"search($event)\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n placeholder=\"Search...\"\r\n />\r\n <div\r\n class=\"input-group-append\"\r\n [ngClass]=\"{ 'spinner spinner-sm spinner-primary': loading }\"\r\n >\r\n <span class=\"input-group-text\">\r\n <i\r\n (click)=\"clear($event)\"\r\n class=\"quick-search-close ki ki-close icon-sm text-muted\"\r\n [style.display]=\"showCloseButton() ? 'block' : 'none'\"\r\n ></i>\r\n </span>\r\n </div>\r\n </div>\r\n </form>\r\n <!--end::Form-->\r\n\r\n <app-search-result [data]=\"data\"></app-search-result>\r\n</div>\r\n","<!--begin::Header-->\r\n<ng-container *ngIf=\"extrasNotificationsDropdownStyle === 'light'\">\r\n <div class=\"d-flex flex-column pt-12 bg-dark-o-5 rounded-top\">\r\n <!--begin::Title-->\r\n <h4 class=\"d-flex flex-center\">\r\n <span class=\"text-dark\">User Notifications</span>\r\n <span\r\n class=\"btn btn-text btn-success btn-sm font-weight-bold btn-font-md ml-2\"\r\n >23 new</span\r\n >\r\n </h4>\r\n <!--end::Title-->\r\n\r\n <!--begin::Tabs-->\r\n <ul\r\n class=\"nav nav-bold nav-tabs nav-tabs-line nav-tabs-line-3x nav-tabs-primary mt-3 px-8\"\r\n role=\"tablist\"\r\n >\r\n <li class=\"nav-item\">\r\n <a\r\n class=\"nav-link cursor-pointer\"\r\n data-toggle=\"tab\"\r\n (click)=\"setActiveTabId('topbar_notifications_notifications')\"\r\n [ngClass]=\"getActiveCSSClasses('topbar_notifications_notifications')\"\r\n >Alerts</a\r\n >\r\n </li>\r\n <li class=\"nav-item\">\r\n <a\r\n class=\"nav-link cursor-pointer\"\r\n data-toggle=\"tab\"\r\n (click)=\"setActiveTabId('topbar_notifications_events')\"\r\n [ngClass]=\"getActiveCSSClasses('topbar_notifications_events')\"\r\n >Events</a\r\n >\r\n </li>\r\n <li class=\"nav-item\">\r\n <a\r\n class=\"nav-link cursor-pointer\"\r\n data-toggle=\"tab\"\r\n (click)=\"setActiveTabId('topbar_notifications_logs')\"\r\n [ngClass]=\"getActiveCSSClasses('topbar_notifications_logs')\"\r\n >Logs</a\r\n >\r\n </li>\r\n </ul>\r\n <!--end::Tabs-->\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"extrasNotificationsDropdownStyle === 'dark'\">\r\n <div\r\n class=\"d-flex flex-column pt-12 bgi-size-cover bgi-no-repeat rounded-top\"\r\n style=\"background-image: url('./assets/media/misc/bg-1.jpg');\"\r\n >\r\n <!--begin::Title-->\r\n <h4 class=\"d-flex flex-center rounded-top\">\r\n <span class=\"text-white\">User Notifications</span>\r\n <span\r\n class=\"btn btn-text btn-success btn-sm font-weight-bold btn-font-md ml-2\"\r\n >23 new</span\r\n >\r\n </h4>\r\n <!--end::Title-->\r\n\r\n <!--begin::Tabs-->\r\n <ul\r\n class=\"nav nav-bold nav-tabs nav-tabs-line nav-tabs-line-3x nav-tabs-line-transparent-white nav-tabs-line-active-border-success mt-3 px-8\"\r\n role=\"tablist\"\r\n >\r\n <li class=\"nav-item\">\r\n <a\r\n class=\"nav-link cursor-pointer\"\r\n data-toggle=\"tab\"\r\n (click)=\"setActiveTabId('topbar_notifications_notifications')\"\r\n [ngClass]=\"getActiveCSSClasses('topbar_notifications_notifications')\"\r\n >Alerts</a\r\n >\r\n </li>\r\n <li class=\"nav-item\">\r\n <a\r\n class=\"nav-link cursor-pointer\"\r\n data-toggle=\"tab\"\r\n (click)=\"setActiveTabId('topbar_notifications_events')\"\r\n [ngClass]=\"getActiveCSSClasses('topbar_notifications_events')\"\r\n >Events</a\r\n >\r\n </li>\r\n <li class=\"nav-item\">\r\n <a\r\n class=\"nav-link cursor-pointer\"\r\n data-toggle=\"tab\"\r\n (click)=\"setActiveTabId('topbar_notifications_logs')\"\r\n [ngClass]=\"getActiveCSSClasses('topbar_notifications_logs')\"\r\n >Logs</a\r\n >\r\n </li>\r\n </ul>\r\n <!--end::Tabs-->\r\n </div>\r\n</ng-container>\r\n<!--end::Header-->\r\n\r\n<!--begin::Content-->\r\n<div class=\"tab-content\">\r\n <!--begin::Tabpane-->\r\n <div\r\n class=\"tab-pane p-8\"\r\n id=\"topbar_notifications_notifications\"\r\n role=\"tabpanel\"\r\n [ngClass]=\"getActiveCSSClasses('topbar_notifications_notifications')\"\r\n >\r\n <!--begin::Scroll-->\r\n <div\r\n class=\"scroll pr-7 mr-n7 ps\"\r\n style=\"position: relative; max-height: 300px;\"\r\n perfectScrollbar\r\n >\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center mb-6\">\r\n <!--begin::Symbol-->\r\n <div class=\"symbol symbol-40 symbol-light-primary mr-5\">\r\n <span class=\"symbol-label\">\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/Home/Library.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-xl svg-icon-primary\"\r\n ></span>\r\n </span>\r\n </div>\r\n <!--end::Symbol-->\r\n\r\n <!--begin::Text-->\r\n <div class=\"d-flex flex-column font-weight-bold\">\r\n <a href=\"#\" class=\"text-dark text-hover-primary mb-1 font-size-lg\"\r\n >Cool App</a\r\n >\r\n <span class=\"text-muted\">Marketing campaign planning</span>\r\n </div>\r\n <!--end::Text-->\r\n </div>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center mb-6\">\r\n <!--begin::Symbol-->\r\n <div class=\"symbol symbol-40 symbol-light-warning mr-5\">\r\n <span class=\"symbol-label\">\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/Communication/Write.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-xl svg-icon-warning\"\r\n ></span>\r\n </span>\r\n </div>\r\n <!--end::Symbol-->\r\n\r\n <!--begin::Text-->\r\n <div class=\"d-flex flex-column font-weight-bold\">\r\n <a href=\"#\" class=\"text-dark-75 text-hover-primary mb-1 font-size-lg\"\r\n >Awesome SAAS</a\r\n >\r\n <span class=\"text-muted\">Project status update meeting</span>\r\n </div>\r\n <!--end::Text-->\r\n </div>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center mb-6\">\r\n <!--begin::Symbol-->\r\n <div class=\"symbol symbol-40 symbol-light-success mr-5\">\r\n <span class=\"symbol-label\">\r\n <span\r\n [inlineSVG]=\"\r\n './assets/media/svg/icons/Communication/Group-chat.svg'\r\n \"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-xl svg-icon-success\"\r\n ></span>\r\n </span>\r\n </div>\r\n <!--end::Symbol-->\r\n\r\n <!--begin::Text-->\r\n <div class=\"d-flex flex-column font-weight-bold\">\r\n <a href=\"#\" class=\"text-dark text-hover-primary mb-1 font-size-lg\"\r\n >Claudy Sys</a\r\n >\r\n <span class=\"text-muted\">Project Deployment & Launch</span>\r\n </div>\r\n <!--end::Text-->\r\n </div>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center mb-6\">\r\n <!--begin::Symbol-->\r\n <div class=\"symbol symbol-40 symbol-light-danger mr-5\">\r\n <span class=\"symbol-label\">\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/General/Attachment2.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-xl svg-icon-danger\"\r\n ></span>\r\n </span>\r\n </div>\r\n <!--end::Symbol-->\r\n\r\n <!--begin::Text-->\r\n <div class=\"d-flex flex-column font-weight-bold\">\r\n <a href=\"#\" class=\"text-dark text-hover-primary mb-1 font-size-lg\"\r\n >Trilo Service</a\r\n >\r\n <span class=\"text-muted\">Analytics & Requirement Study</span>\r\n </div>\r\n <!--end::Text-->\r\n </div>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center mb-6\">\r\n <!--begin::Symbol-->\r\n <div class=\"symbol symbol-40 symbol-light-info mr-5\">\r\n <span class=\"symbol-label\">\r\n <span\r\n [inlineSVG]=\"\r\n './assets/media/svg/icons/Communication/Shield-user.svg'\r\n \"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-xl svg-icon-info\"\r\n ></span>\r\n </span>\r\n </div>\r\n <!--end::Symbol-->\r\n\r\n <!--begin::Text-->\r\n <div class=\"d-flex flex-column font-weight-bold\">\r\n <a href=\"#\" class=\"text-dark text-hover-primary mb-1 font-size-lg\"\r\n >Bravia SAAS</a\r\n >\r\n <span class=\"text-muted\">Reporting Application</span>\r\n </div>\r\n <!--end::Text-->\r\n </div>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center mb-6\">\r\n <!--begin::Symbol-->\r\n <div class=\"symbol symbol-40 symbol-light-danger mr-5\">\r\n <span class=\"symbol-label\">\r\n <span\r\n [inlineSVG]=\"\r\n './assets/media/svg/icons/Communication/Mail-notification.svg'\r\n \"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-xl svg-icon-danger\"\r\n ></span>\r\n </span>\r\n </div>\r\n <!--end::Symbol-->\r\n\r\n <!--begin::Text-->\r\n <div class=\"d-flex flex-column font-weight-bold\">\r\n <a href=\"#\" class=\"text-dark text-hover-primary mb-1 font-size-lg\"\r\n >Express Wind</a\r\n >\r\n <span class=\"text-muted\">Software Analytics & Design</span>\r\n </div>\r\n <!--end::Text-->\r\n </div>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center mb-6\">\r\n <!--begin::Symbol-->\r\n <div class=\"symbol symbol-40 symbol-light-success mr-5\">\r\n <span class=\"symbol-label\">\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/Design/Bucket.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-xl svg-icon-success\"\r\n ></span>\r\n </span>\r\n </div>\r\n <!--end::Symbol-->\r\n\r\n <!--begin::Text-->\r\n <div class=\"d-flex flex-column font-weight-bold\">\r\n <a href=\"#\" class=\"text-dark text-hover-primary mb-1 font-size-lg\"\r\n >Bruk Fitness</a\r\n >\r\n <span class=\"text-muted\">Web Design & Development</span>\r\n </div>\r\n <!--end::Text-->\r\n </div>\r\n <!--end::Item-->\r\n </div>\r\n <!--end::Scroll-->\r\n\r\n <!--begin::Action-->\r\n <div class=\"d-flex flex-center pt-7\">\r\n <a href=\"#\" class=\"btn btn-light-primary font-weight-bold text-center\"\r\n >See All</a\r\n >\r\n </div>\r\n <!--end::Action-->\r\n </div>\r\n <!--end::Tabpane-->\r\n\r\n <!--begin::Tabpane-->\r\n <div\r\n class=\"tab-pane\"\r\n id=\"topbar_notifications_events\"\r\n role=\"tabpanel\"\r\n [ngClass]=\"getActiveCSSClasses('topbar_notifications_events')\"\r\n >\r\n <!--begin::Nav-->\r\n <div\r\n class=\"navi navi-hover scroll my-4\"\r\n data-scroll=\"true\"\r\n style=\"position: relative; max-height: 300px;\"\r\n perfectScrollbar\r\n >\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon2-line-chart text-success\"></i>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n New report has been received\r\n </div>\r\n <div class=\"text-muted\">\r\n 23 hrs ago\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon2-paper-plane text-danger\"></i>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n Finance report has been generated\r\n </div>\r\n <div class=\"text-muted\">\r\n 25 hrs ago\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon2-user flaticon2-line- text-success\"></i>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n New order has been received\r\n </div>\r\n <div class=\"text-muted\">\r\n 2 hrs ago\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon2-pin text-primary\"></i>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n New customer is registered\r\n </div>\r\n <div class=\"text-muted\">\r\n 3 hrs ago\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon2-sms text-danger\"></i>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n Application has been approved\r\n </div>\r\n <div class=\"text-muted\">\r\n 3 hrs ago\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon2-pie-chart-3 text-warning\"></i>\r\n </div>\r\n <div class=\"navinavinavi-text\">\r\n <div class=\"font-weight-bold\">\r\n New file has been uploaded\r\n </div>\r\n <div class=\"text-muted\">\r\n 5 hrs ago\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon-pie-chart-1 text-info\"></i>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n New user feedback received\r\n </div>\r\n <div class=\"text-muted\">\r\n 8 hrs ago\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon2-settings text-success\"></i>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n System reboot has been successfully completed\r\n </div>\r\n <div class=\"text-muted\">\r\n 12 hrs ago\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon-safe-shield-protection text-primary\"></i>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n New order has been placed\r\n </div>\r\n <div class=\"text-muted\">\r\n 15 hrs ago\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon2-notification text-primary\"></i>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n Company meeting canceled\r\n </div>\r\n <div class=\"text-muted\">\r\n 19 hrs ago\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon2-fax text-success\"></i>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n New report has been received\r\n </div>\r\n <div class=\"text-muted\">\r\n 23 hrs ago\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon-download-1 text-danger\"></i>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n Finance report has been generated\r\n </div>\r\n <div class=\"text-muted\">\r\n 25 hrs ago\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon-security text-warning\"></i>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n New customer comment recieved\r\n </div>\r\n <div class=\"text-muted\">\r\n 2 days ago\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon2-analytics-1 text-success\"></i>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n New customer is registered\r\n </div>\r\n <div class=\"text-muted\">\r\n 3 days ago\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n </div>\r\n <!--end::Nav-->\r\n </div>\r\n <!--end::Tabpane-->\r\n\r\n <!--begin::Tabpane-->\r\n <div\r\n class=\"tab-pane\"\r\n id=\"topbar_notifications_logs\"\r\n role=\"tabpanel\"\r\n [ngClass]=\"getActiveCSSClasses('topbar_notifications_logs')\"\r\n >\r\n <!--begin::Nav-->\r\n <div class=\"d-flex flex-center text-center text-muted min-h-200px\">\r\n All caught up!\r\n <br />\r\n No new notifications.\r\n </div>\r\n <!--end::Nav-->\r\n </div>\r\n <!--end::Tabpane-->\r\n</div>\r\n<!--end::Content-->\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\n\r\n@Component({\r\n selector: 'app-notifications-dropdown-inner',\r\n templateUrl: './notifications-dropdown-inner.component.html',\r\n})\r\nexport class NotificationsDropdownInnerComponent implements OnInit {\r\n extrasNotificationsDropdownStyle: 'light' | 'dark' = 'dark';\r\n activeTabId:\r\n | 'topbar_notifications_notifications'\r\n | 'topbar_notifications_events'\r\n | 'topbar_notifications_logs' = 'topbar_notifications_notifications';\r\n constructor(private layout: LayoutService) {}\r\n\r\n ngOnInit(): void {\r\n this.extrasNotificationsDropdownStyle = this.layout.getProp(\r\n 'extras.notifications.dropdown.style'\r\n );\r\n }\r\n\r\n setActiveTabId(tabId) {\r\n this.activeTabId = tabId;\r\n }\r\n\r\n getActiveCSSClasses(tabId) {\r\n if (tabId !== this.activeTabId) {\r\n return '';\r\n }\r\n return 'active show';\r\n }\r\n}\r\n","<!--begin:Header-->\r\n<ng-container *ngIf=\"extrasQuickActionsDropdownStyle === 'light'\">\r\n <div class=\"d-flex flex-column flex-center py-10 bg-dark-o-5 rounded-top bg-light\">\r\n <h4 class=\"text-dark font-weight-bold\">\r\n {{'TITLE.Quick_Actions'| translate}}\r\n </h4>\r\n <span class=\"btn btn-success btn-sm font-weight-bold font-size-sm mt-2\">23 tasks pending</span>\r\n </div>\r\n</ng-container>\r\n<ng-container *ngIf=\"extrasQuickActionsDropdownStyle === 'dark'\">\r\n <div class=\"d-flex flex-column flex-center py-10 bgi-size-cover bgi-no-repeat rounded-top\"\r\n style=\"background-image: url('./assets/media/misc/bg-1.jpg');\">\r\n <h4 class=\"text-white font-weight-bold\">\r\n {{'TITLE.Quick_Actions'| translate}}\r\n </h4>\r\n </div>\r\n</ng-container>\r\n<!--end:Header-->\r\n\r\n<!--begin:Nav-->\r\n<div class=\"row row-paddingless\">\r\n\r\n <!--begin:Item-->\r\n <div class=\"col-6\">\r\n <a [routerLink]=\"'/ticketing/faq'\" class=\"d-block py-10 px-5 text-center bg-hover-light border-right border-bottom\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/Shopping/Box1.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-3x svg-icon-success m-0\"></span>\r\n <span class=\"d-block text-dark-75 font-weight-bold font-size-h6 mt-2 mb-1\">{{'TITLE.FAQ'|translate}}</span>\r\n <span class=\"d-block text-dark-50 font-size-lg\">{{'TITLE.HELP'|translate}}</span>\r\n </a>\r\n </div>\r\n <!--end:Item-->\r\n <!--begin:Item-->\r\n <div class=\"col-6\">\r\n <a [routerLink]=\"'/ticketing/contactus'\"\r\n class=\"d-block py-10 px-5 text-center bg-hover-light border-right border-bottom\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/Communication/Mail-attachment.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-3x svg-icon-success m-0\"></span>\r\n <span class=\"d-block text-dark-75 font-weight-bold font-size-h6 mt-2 mb-1\">{{'TITLE.Contactus'|translate}}</span>\r\n <span class=\"d-block text-dark-50 font-size-lg\">{{'TITLE.Send_Message_To_Admin'|translate}}</span>\r\n </a>\r\n </div>\r\n <!--end:Item-->\r\n\r\n <!--begin:Item-->\r\n <div class=\"col-6\" *ngIf=\"this.tokenInfo?.siteId>0\">\r\n <a [routerLink]=\"'core/site/edit'\" class=\"d-block py-10 px-5 text-center bg-hover-light border-right\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/General/Settings-1.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-3x svg-icon-success m-0\"></span>\r\n <span\r\n class=\"d-block text-dark-75 font-weight-bold font-size-h6 mt-2 mb-1\">{{'TITLE.Config_Site'|translate}}</span>\r\n <span class=\"d-block text-dark-50 font-size-lg\">{{'TITLE.Config_Site_And_Seo'|translate}}</span>\r\n </a>\r\n </div>\r\n <!--end:Item-->\r\n\r\n <!--begin:Item-->\r\n <div class=\"col-6\" *ngIf=\"this.tokenInfo?.siteId>0\">\r\n <a [routerLink]=\"'core/site/modulelist'\" class=\"d-block py-10 px-5 text-center bg-hover-light\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/General/Thunder-move.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-3x svg-icon-success m-0\"></span>\r\n <span\r\n class=\"d-block text-dark-75 font-weight-bold font-size-h6 mt-2 mb-1\">{{'TITLE.Config_Modules'|translate}}</span>\r\n <span class=\"d-block text-dark-50 font-size-lg\">{{'TITLE.Config_Modules_And_Renew'|translate}}</span>\r\n </a>\r\n </div>\r\n <!--end:Item-->\r\n <!--begin:Item-->\r\n <div class=\"col-6\" *ngIf=\"this.tokenInfo?.siteId>0\">\r\n <a [routerLink]=\"'core/site/selection'\" class=\"d-block py-10 px-5 text-center bg-hover-light border-right\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/Code/CMD.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-3x svg-icon-success m-0\"></span>\r\n <span\r\n class=\"d-block text-dark-75 font-weight-bold font-size-h6 mt-2 mb-1\">{{'TITLE.Select_Site'|translate}}</span>\r\n <span class=\"d-block text-dark-50 font-size-lg\">{{'TITLE.Select_Site_Panle'|translate}}</span>\r\n </a>\r\n </div>\r\n <!--end:Item-->\r\n <!--begin:Item-->\r\n <div class=\"col-6\" *ngIf=\"this.tokenInfo?.siteId>0\">\r\n <a [routerLink]=\"'core/site/info'\" class=\"d-block py-10 px-5 text-center bg-hover-light border-right\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/Communication/Share.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-3x svg-icon-success m-0\"></span>\r\n <span\r\n class=\"d-block text-dark-75 font-weight-bold font-size-h6 mt-2 mb-1\">{{'TITLE.Share_Data'|translate}}</span>\r\n <span class=\"d-block text-dark-50 font-size-lg\">{{'TITLE.Share_Data_Link'|translate}}</span>\r\n </a>\r\n </div>\r\n <!--end:Item-->\r\n</div>\r\n<!--end:Nav-->","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { NtkCmsApiStoreService, TokenInfoModel } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { Subscription } from 'rxjs';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\n\r\n@Component({\r\n selector: 'app-quick-actions-dropdown-inner',\r\n templateUrl: './quick-actions-dropdown-inner.component.html',\r\n})\r\nexport class QuickActionsDropdownInnerComponent implements OnInit, OnDestroy {\r\n constructor(\r\n private layout: LayoutService,\r\n private tokenHelper: TokenHelper,\r\n ) {\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n });\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.tokenInfo = next;\r\n });\r\n }\r\n tokenInfo: TokenInfoModel;\r\n extrasQuickActionsDropdownStyle: 'light' | 'dark' = 'light';\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n ngOnInit(): void {\r\n this.extrasQuickActionsDropdownStyle = this.layout.getProp(\r\n 'extras.quickActions.dropdown.style'\r\n );\r\n }\r\n ngOnDestroy() {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n}\r\n","<ng-container *ngIf=\"extrasCartDropdownStyle === 'light'\">\r\n <!--begin::Header-->\r\n <div class=\"d-flex align-items-center p-10 rounded-top bg-light\">\r\n <span class=\"btn btn-md btn-icon bg-light-success mr-4\">\r\n <i class=\"flaticon2-shopping-cart-1 text-success\"></i>\r\n </span>\r\n <h4 class=\"flex-grow-1 m-0 mr-3\">My Cart</h4>\r\n <button type=\"button\" class=\"btn btn-success btn-sm\">2 Items</button>\r\n </div>\r\n <!--end::Header-->\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"extrasCartDropdownStyle === 'dark'\">\r\n <!--begin::Header-->\r\n <div\r\n class=\"d-flex align-items-center py-10 px-8 bgi-size-cover bgi-no-repeat rounded-top\"\r\n style=\"background-image: url('./assets/media/misc/bg-1.jpg');\"\r\n >\r\n <span class=\"btn btn-md btn-icon bg-white-o-15 mr-4\">\r\n <i class=\"flaticon2-shopping-cart-1 text-success\"></i>\r\n </span>\r\n <h4 class=\"text-white m-0 flex-grow-1 mr-3\">My Cart</h4>\r\n <button type=\"button\" class=\"btn btn-success btn-sm\">2 Items</button>\r\n </div>\r\n <!--end::Header-->\r\n</ng-container>\r\n\r\n<!--begin::Scroll-->\r\n<div\r\n class=\"scroll scroll-push\"\r\n data-scroll=\"true\"\r\n style=\"position: relative; max-height: 250px;\"\r\n perfectScrollbar\r\n>\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center justify-content-between p-8\">\r\n <div class=\"d-flex flex-column mr-2\">\r\n <a\r\n href=\"#\"\r\n class=\"font-weight-bold text-dark-75 font-size-lg text-hover-primary\"\r\n >\r\n iBlender\r\n </a>\r\n <span class=\"text-muted\">\r\n Best kichen gadget in 2020\r\n </span>\r\n <div class=\"d-flex align-items-center mt-2\">\r\n <span class=\"font-weight-bold mr-1 text-dark-75 font-size-lg\"\r\n >$ 350</span\r\n >\r\n <span class=\"text-muted mr-1\">for</span>\r\n <span class=\"font-weight-bold mr-2 text-dark-75 font-size-lg\">5</span>\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon mr-2\"\r\n ><i class=\"ki ki-minus icon-xs\"></i\r\n ></a>\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon\"\r\n ><i class=\"ki ki-plus icon-xs\"></i\r\n ></a>\r\n </div>\r\n </div>\r\n <a href=\"#\" class=\"symbol symbol-70 flex-shrink-0\">\r\n <img src=\"./assets/media/stock-600x400/img-1.jpg\" title=\"\" alt=\"\" />\r\n </a>\r\n </div>\r\n <!--end::Item-->\r\n\r\n <!--begin::Separator-->\r\n <div class=\"separator separator-solid\"></div>\r\n <!--end::Separator-->\r\n\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center justify-content-between p-8\">\r\n <div class=\"d-flex flex-column mr-2\">\r\n <a\r\n href=\"#\"\r\n class=\"font-weight-bold text-dark-75 font-size-lg text-hover-primary\"\r\n >\r\n SmartCleaner\r\n </a>\r\n <span class=\"text-muted\">\r\n Smart tool for cooking\r\n </span>\r\n <div class=\"d-flex align-items-center mt-2\">\r\n <span class=\"font-weight-bold mr-1 text-dark-75 font-size-lg\"\r\n >$ 650</span\r\n >\r\n <span class=\"text-muted mr-1\">for</span>\r\n <span class=\"font-weight-bold mr-2 text-dark-75 font-size-lg\">4</span>\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon mr-2\"\r\n ><i class=\"ki ki-minus icon-xs\"></i\r\n ></a>\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon\"\r\n ><i class=\"ki ki-plus icon-xs\"></i\r\n ></a>\r\n </div>\r\n </div>\r\n <a href=\"#\" class=\"symbol symbol-70 flex-shrink-0\">\r\n <img src=\"./assets/media/stock-600x400/img-2.jpg\" title=\"\" alt=\"\" />\r\n </a>\r\n </div>\r\n <!--end::Item-->\r\n\r\n <!--begin::Separator-->\r\n <div class=\"separator separator-solid\"></div>\r\n <!--end::Separator-->\r\n\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center justify-content-between p-8\">\r\n <div class=\"d-flex flex-column mr-2\">\r\n <a\r\n href=\"#\"\r\n class=\"font-weight-bold text-dark-75 font-size-lg text-hover-primary\"\r\n >\r\n CameraMax\r\n </a>\r\n <span class=\"text-muted\">\r\n Professional camera for edge cutting shots\r\n </span>\r\n <div class=\"d-flex align-items-center mt-2\">\r\n <span class=\"font-weight-bold mr-1 text-dark-75 font-size-lg\"\r\n >$ 150</span\r\n >\r\n <span class=\"text-muted mr-1\">for</span>\r\n <span class=\"font-weight-bold mr-2 text-dark-75 font-size-lg\">3</span>\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon mr-2\"\r\n ><i class=\"ki ki-minus icon-xs\"></i\r\n ></a>\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon\"\r\n ><i class=\"ki ki-plus icon-xs\"></i\r\n ></a>\r\n </div>\r\n </div>\r\n <a href=\"#\" class=\"symbol symbol-70 flex-shrink-0\">\r\n <img src=\"./assets/media/stock-600x400/img-3.jpg\" title=\"\" alt=\"\" />\r\n </a>\r\n </div>\r\n <!--end::Item-->\r\n\r\n <!--begin::Separator-->\r\n <div class=\"separator separator-solid\"></div>\r\n <!--end::Separator-->\r\n\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center justify-content-between p-8\">\r\n <div class=\"d-flex flex-column mr-2\">\r\n <a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n 4DPrinter\r\n </a>\r\n <span class=\"text-muted\">\r\n Manufactoring unique objects\r\n </span>\r\n <div class=\"d-flex align-items-center mt-2\">\r\n <span class=\"font-weight-bold mr-1 text-dark-75 font-size-lg\"\r\n >$ 1450</span\r\n >\r\n <span class=\"text-muted mr-1\">for</span>\r\n <span class=\"font-weight-bold mr-2 text-dark-75 font-size-lg\">7</span>\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon mr-2\"\r\n ><i class=\"ki ki-minus icon-xs\"></i\r\n ></a>\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon\"\r\n ><i class=\"ki ki-plus icon-xs\"></i\r\n ></a>\r\n </div>\r\n </div>\r\n <a href=\"#\" class=\"symbol symbol-70 flex-shrink-0\">\r\n <img src=\"./assets/media/stock-600x400/img-4.jpg\" title=\"\" alt=\"\" />\r\n </a>\r\n </div>\r\n <!--end::Item-->\r\n</div>\r\n<!--end::Scroll-->\r\n\r\n<!--begin::Summary-->\r\n<div class=\"p-8\">\r\n <div class=\"d-flex align-items-center justify-content-between mb-4\">\r\n <span class=\"font-weight-bold text-muted font-size-sm mr-2\">Total</span>\r\n <span class=\"font-weight-bolder text-dark-50 text-right\">$1840.00</span>\r\n </div>\r\n <div class=\"d-flex align-items-center justify-content-between mb-7\">\r\n <span class=\"font-weight-bold text-muted font-size-sm mr-2\">Sub total</span>\r\n <span class=\"font-weight-bolder text-primary text-right\">$5640.00</span>\r\n </div>\r\n <div class=\"text-right\">\r\n <button type=\"button\" class=\"btn btn-primary text-weight-bold\">\r\n Place Order\r\n </button>\r\n </div>\r\n</div>\r\n<!--end::Summary-->\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\n\r\n@Component({\r\n selector: 'app-cart-dropdown-inner',\r\n templateUrl: './cart-dropdown-inner.component.html',\r\n})\r\nexport class CartDropdownInnerComponent implements OnInit {\r\n extrasCartDropdownStyle: 'light' | 'dark' = 'light';\r\n constructor(private layout: LayoutService) {}\r\n\r\n ngOnInit(): void {\r\n this.extrasCartDropdownStyle = this.layout.getProp(\r\n 'extras.cart.dropdown.style'\r\n );\r\n }\r\n}\r\n","<span class=\"ml-3\" *ngIf=\" loadingStatus\">Loading ...</span>\r\n<div>\r\n <a (click)=\"onActionbuttonUserAccessAdminAllowToAllData()\"\r\n *ngIf=\"tokenInfo &&( tokenInfo.userAccessUserType == 1 || tokenInfo.userAccessUserType == 2 || tokenInfo.userAccessUserType == 3)\"\r\n class=\"btn btn-raised mr-1 shadow-z-2 btn-success \" style=\"width:95% ;margin: 4px;\">\r\n <i [className]=\"tokenInfo.userAccessAdminAllowToAllData ? 'fa fa-toggle-on' : 'fa fa-toggle-off'\"></i> نمایش\r\n همه اطلاعات\r\n </a>\r\n <a (click)=\"onActionbuttonUserAccessAdminAllowToProfessionalData()\"\r\n *ngIf=\"tokenInfo &&( tokenInfo.userAccessUserType == 1 || tokenInfo.userAccessUserType == 2 || tokenInfo.userAccessUserType == 3)\"\r\n class=\"btn btn-raised mr-1 shadow-z-2 btn-success\" style=\"width:95%;margin: 4px;\">\r\n <i [className]=\"tokenInfo.userAccessAdminAllowToProfessionalData ? 'fa fa-toggle-on' : 'fa fa-toggle-off'\">\r\n </i> نمایش اطلاعات تخصصی\r\n </a>\r\n <div class=\"input-group\"\r\n *ngIf=\"tokenInfo &&( tokenInfo.userAccessUserType == 1 || tokenInfo.userAccessUserType == 2 || tokenInfo.userAccessUserType == 3)\"\r\n style=\"direction: ltr;width:95%;margin: 4px;\">\r\n <div class=\"input-group-prepend\">\r\n <button (click)=\"onActionbuttonSelectUser()\" class=\"btn btn-outline-primary\" type=\"button\">برو</button>\r\n </div>\r\n <input [(ngModel)]=\"inputUserId\" type=\"text\" class=\"form-control\" placeholder=\"شناسه کاربر\">\r\n </div>\r\n <div class=\"input-group\"\r\n *ngIf=\"tokenInfo &&( tokenInfo.userAccessUserType == 1 || tokenInfo.userAccessUserType == 2 || tokenInfo.userAccessUserType == 3)\"\r\n style=\"direction: ltr;width:95%;margin: 4px;\">\r\n <div class=\"input-group-prepend\">\r\n <button (click)=\"onActionbuttonSelectSite()\" class=\"btn btn-outline-primary\" type=\"button\">برو</button>\r\n </div>\r\n <input [(ngModel)]=\"inputSiteId\" type=\"text\" class=\"form-control\" placeholder=\"شناسه سایت\">\r\n </div>\r\n <!-- LinkCmsSiteId Field -->\r\n <div style=\"margin: 4px;\">\r\n <app-cms-site-selector (optionChange)=\"onActionSiteSelect($event)\" [optionDisabled]=\"false\"\r\n [optionSelectForce]=\"this.tokenInfo.siteId\" [optionPlaceholder]=\"'وب سایت'\"></app-cms-site-selector>\r\n </div>\r\n</div>","import { Component, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport {\r\n AuthRenewTokenModel,\r\n CoreAuthService,\r\n TokenInfoModel,\r\n NtkCmsApiStoreService,\r\n CoreSiteModel\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { Subscription } from 'rxjs';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\n\r\n@Component({\r\n selector: 'app-cms-token-access',\r\n templateUrl: './cmsTokenAccess.component.html',\r\n})\r\nexport class CmsTokenAccessComponent implements OnInit, OnDestroy {\r\n\r\n constructor(\r\n public coreAuthService: CoreAuthService,\r\n public translate: TranslateService,\r\n private cmsToastrService: CmsToastrService,\r\n private tokenHelper: TokenHelper,\r\n ) {\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n });\r\n\r\n\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((value) => {\r\n this.tokenInfo = value;\r\n });\r\n\r\n\r\n }\r\n\r\n tokenInfo: TokenInfoModel = new TokenInfoModel();\r\n loadingStatus = false;\r\n inputSiteId?: number;\r\n inputUserId?: number;\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n onActionbuttonUserAccessAdminAllowToAllData(): void {\r\n const authModel: AuthRenewTokenModel = new AuthRenewTokenModel();\r\n const NewToall = !this.tokenInfo.userAccessAdminAllowToAllData;\r\n authModel.userAccessAdminAllowToProfessionalData = this.tokenInfo.userAccessAdminAllowToProfessionalData;\r\n authModel.userAccessAdminAllowToAllData = NewToall;\r\n authModel.siteId = this.tokenInfo.siteId;\r\n authModel.userId = this.tokenInfo.userId;\r\n authModel.lang = this.tokenInfo.language;\r\n\r\n const title = this.translate.instant('TITLE.Information');\r\n let message = '';\r\n if (authModel.userAccessAdminAllowToAllData) {\r\n message = 'درخواست برای دسترسی به کلیه اطلاعات به سرور ارسال شد';\r\n } else {\r\n message = 'درخواست قطع دسترسی به Ú©Ù„ اطلاعات به سرور ارسال شد';\r\n }\r\n this.cmsToastrService.toastr.info(message, title);\r\n this.loadingStatus = true;\r\n this.coreAuthService.ServiceRenewToken(authModel).subscribe(\r\n (next) => {\r\n this.loadingStatus = false;\r\n if (next.isSuccess) {\r\n const etitle = this.translate.instant('TITLE.Information');\r\n const emessage = '';\r\n if (next.item.userAccessAdminAllowToAllData === NewToall) {\r\n message = 'دسترسی تایید شد';\r\n this.cmsToastrService.toastr.success(emessage, etitle);\r\n } else {\r\n message = 'دسترسی جدید تایید نشد';\r\n this.cmsToastrService.toastr.warning(emessage, etitle);\r\n }\r\n } else {\r\n this.cmsToastrService.typeErrorAccessChange(next.errorMessage);\r\n }\r\n },\r\n (error) => {\r\n this.cmsToastrService.typeErrorAccessChange(error);\r\n }\r\n );\r\n }\r\n\r\n onActionbuttonUserAccessAdminAllowToProfessionalData(): void {\r\n const authModel: AuthRenewTokenModel = new AuthRenewTokenModel();\r\n const NewToPerf = !this.tokenInfo.userAccessAdminAllowToProfessionalData;\r\n authModel.userAccessAdminAllowToProfessionalData = NewToPerf;\r\n authModel.userAccessAdminAllowToAllData = this.tokenInfo.userAccessAdminAllowToAllData;\r\n authModel.siteId = this.tokenInfo.siteId;\r\n authModel.userId = this.tokenInfo.userId;\r\n authModel.lang = this.tokenInfo.language;\r\n\r\n const title = this.translate.instant('TITLE.Information');\r\n let message = '';\r\n if (authModel.userAccessAdminAllowToProfessionalData) {\r\n message = 'درخواست برای دسترسی ØرÙÙ‡ ایی به سرور ارسال شد';\r\n } else {\r\n message = 'درخواست قطع دسترسی ØرÙÙ‡ ایی به سرور ارسال شد';\r\n }\r\n this.cmsToastrService.toastr.info(message, title);\r\n this.loadingStatus = true;\r\n this.coreAuthService.ServiceRenewToken(authModel).subscribe(\r\n (next) => {\r\n this.loadingStatus = false;\r\n if (next.isSuccess) {\r\n const etitle = this.translate.instant('TITLE.Information');\r\n if (next.item.userAccessAdminAllowToProfessionalData === NewToPerf) {\r\n const emessage = 'دسترسی تایید شد';\r\n this.cmsToastrService.toastr.success(emessage, etitle);\r\n } else {\r\n const emessage = 'دسترسی جدید تایید نشد';\r\n this.cmsToastrService.toastr.warning(emessage, etitle);\r\n }\r\n } else {\r\n this.cmsToastrService.typeErrorAccessChange(next.errorMessage);\r\n }\r\n },\r\n (error) => {\r\n this.cmsToastrService.typeErrorAccessChange(error);\r\n }\r\n );\r\n }\r\n\r\n onActionbuttonSelectUser(): void {\r\n if (this.inputUserId === this.tokenInfo.userId) {\r\n const etitle = 'هشدار';\r\n const emessage = 'شناسه درخواستی این کاربر با کاربری Ú©Ù‡ در آن هستید یکسان است';\r\n this.cmsToastrService.toastr.warning(emessage, etitle);\r\n return;\r\n }\r\n const authModel: AuthRenewTokenModel = new AuthRenewTokenModel();\r\n authModel.userAccessAdminAllowToProfessionalData = this.tokenInfo.userAccessAdminAllowToProfessionalData;\r\n authModel.userAccessAdminAllowToAllData = this.tokenInfo.userAccessAdminAllowToAllData;\r\n authModel.siteId = this.tokenInfo.siteId;\r\n authModel.userId = this.inputUserId;\r\n authModel.lang = this.tokenInfo.language;\r\n\r\n const title = this.translate.instant('TITLE.Information');\r\n const message = 'درخواست تغییر کاربر به سرور ارسال شد';\r\n this.cmsToastrService.toastr.info(message, title);\r\n this.loadingStatus = true;\r\n this.coreAuthService.ServiceRenewToken(authModel).subscribe(\r\n (next) => {\r\n this.loadingStatus = false;\r\n if (next.isSuccess) {\r\n if (next.item.userId === +this.inputUserId) {\r\n\r\n this.cmsToastrService.toastr.success('دسترسی به کاربر جدید تایید شد', title);\r\n this.inputSiteId = null;\r\n this.inputUserId = null;\r\n } else {\r\n this.cmsToastrService.toastr.warning('دسترسی به کاربر جدید تایید نشد', title);\r\n }\r\n } else {\r\n this.cmsToastrService.typeErrorAccessChange(next.errorMessage);\r\n }\r\n },\r\n (error) => {\r\n this.cmsToastrService.typeErrorAccessChange(error);\r\n }\r\n );\r\n }\r\n\r\n onActionbuttonSelectSite(): void {\r\n if (this.inputSiteId === this.tokenInfo.siteId) {\r\n const etitle = 'هشدار';\r\n const emessage = 'شناسه این وب سایت با وب سایتی Ú©Ù‡ در آن هستید یکسان است';\r\n this.cmsToastrService.toastr.warning(emessage, etitle);\r\n return;\r\n }\r\n const authModel: AuthRenewTokenModel = new AuthRenewTokenModel();\r\n authModel.userAccessAdminAllowToProfessionalData = this.tokenInfo.userAccessAdminAllowToProfessionalData;\r\n authModel.userAccessAdminAllowToAllData = this.tokenInfo.userAccessAdminAllowToAllData;\r\n authModel.userId = this.tokenInfo.userId;\r\n authModel.siteId = this.inputSiteId;\r\n authModel.lang = this.tokenInfo.language;\r\n\r\n const title = this.translate.instant('TITLE.Information');\r\n const message = this.translate.instant('MESSAGE.Request_to_change_site_was_sent_to_the_server');\r\n this.cmsToastrService.toastr.info(message, title);\r\n this.loadingStatus = true;\r\n this.coreAuthService.ServiceRenewToken(authModel).subscribe(\r\n (next) => {\r\n this.loadingStatus = false;\r\n if (next.isSuccess) {\r\n if (next.item.siteId === +this.inputSiteId) {\r\n this.cmsToastrService.toastr.success(this.translate.instant('MESSAGE.New_site_acess_confirmed'), title);\r\n this.inputSiteId = null;\r\n this.inputUserId = null;\r\n } else {\r\n this.cmsToastrService.toastr.warning(this.translate.instant('ERRORMESSAGE.MESSAGE.New_site_acess_denied'), title);\r\n }\r\n } else {\r\n this.inputSiteId = this.tokenInfo.siteId;\r\n this.cmsToastrService.typeErrorAccessChange(next.errorMessage);\r\n }\r\n\r\n },\r\n (error) => {\r\n this.cmsToastrService.typeErrorAccessChange(error);\r\n }\r\n );\r\n }\r\n onActionSiteSelect(model: CoreSiteModel): void {\r\n if (model && model.id > 0) {\r\n if (model.id !== this.tokenInfo.siteId) {\r\n this.inputSiteId = model.id;\r\n this.onActionbuttonSelectSite();\r\n }\r\n }\r\n }\r\n}\r\n","// Angular\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**\r\n * Returns only first letter of string\r\n */\r\n@Pipe({\r\n name: 'firstLetter',\r\n})\r\nexport class FirstLetterPipe implements PipeTransform {\r\n /**\r\n * Transform\r\n *\r\n * @param value: any\r\n * @param args: any\r\n */\r\n transform(value: any, args?: any): any {\r\n return value\r\n .split(' ')\r\n .map((n) => n[0])\r\n .join('');\r\n }\r\n}\r\n","<ng-container *ngIf=\"tokenInfo && tokenInfo.userId>0\">\r\n <ng-container *ngIf=\"extrasUserDropdownStyle === 'light'\">\r\n <!--begin::Header-->\r\n <div class=\"d-flex align-items-center p-8 rounded-top\">\r\n <!--begin::Symbol-->\r\n <div class=\"symbol symbol-md bg-light-primary mr-3 flex-shrink-0\">\r\n <img\r\n src=\"{{ (tokenInfo.linkMainImageIdSrc && tokenInfo.linkMainImageIdSrc.length>0) ? tokenInfo.linkMainImageIdSrc : './assets/media/users/300_21.jpg' }}\"\r\n alt=\"\" />\r\n </div>\r\n <!--end::Symbol-->\r\n <!--begin::Text-->\r\n <div class=\"text-dark m-0 flex-grow-1 mr-3 font-size-h5\">\r\n {{ tokenInfo.name}} {{ tokenInfo.lastName }}\r\n </div>\r\n <span class=\"label label-light-info label-lg font-weight-bold label-inline\">{{ tokenInfo.userAccessUserTypeTitle }}\r\n </span>\r\n <!--end::Text-->\r\n </div>\r\n <div class=\"separator separator-solid\"></div>\r\n <!--end::Header-->\r\n </ng-container>\r\n <ng-container *ngIf=\"extrasUserDropdownStyle === 'dark'\">\r\n <!--begin::Header-->\r\n <div\r\n class=\"d-flex align-items-center justify-content-between flex-wrap p-8 bgi-size-cover bgi-no-repeat rounded-top\"\r\n style=\"background-image: url('./assets/media/misc/bg-1.jpg');\">\r\n <div class=\"d-flex align-items-center mr-2\">\r\n <!--begin::Symbol-->\r\n <div class=\"symbol bg-white-o-15 mr-3\">\r\n <span class=\"symbol-label text-success font-weight-bold font-size-h4\">{{ tokenInfo.name | firstLetter\r\n }}</span>\r\n </div>\r\n <!--end::Symbol-->\r\n\r\n <!--begin::Text-->\r\n <div class=\"text-white m-0 flex-grow-1 mr-3 font-size-h5\">\r\n {{ tokenInfo.name }} {{ tokenInfo.lastName }}\r\n </div>\r\n <!--end::Text-->\r\n </div>\r\n <span class=\"label label-info label-lg font-weight-bold label-inline\">{{ tokenInfo.userAccessUserTypeTitle }}\r\n </span>\r\n </div>\r\n <!--end::Header-->\r\n </ng-container>\r\n\r\n <!--begin::Nav-->\r\n <div class=\"navi navi-spacer-x-0 pt-5\">\r\n <!--begin::Item-->\r\n <a class=\"navi-item px-8 cursor-pointer\" routerLink=\"{{'/core/user/edit/' +this.tokenInfo.userId}}\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon2-calendar-3 text-success\"></i>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n {{'TITLE.User_Profile'| translate}}\r\n </div>\r\n <div class=\"text-muted\">\r\n {{'TITLE.Account_settings_and_more'| translate}}\r\n <span class=\"label label-light-info label-inline font-weight-bold\">{{'TITLE.User_Id'|\r\n translate}}:{{this.tokenInfo.userId}}</span>\r\n <span class=\"label label-light-success label-inline font-weight-bold\">{{'TITLE.Site_Id'|\r\n translate}}:{{this.tokenInfo.siteId}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n <!--begin::Item-->\r\n <a class=\"navi-item px-8 cursor-pointer\" routerLink=\"{{'/ticketing/task/contactus-list'}}\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon2-mail text-warning\"></i>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n {{'TITLE.My_Messages'| translate}}\r\n </div>\r\n <div class=\"text-muted\">\r\n {{'TITLE.Inbox_and_tasks'| translate}}\r\n <span class=\"label label-light-info label-inline font-weight-bold\">{{dataTaskGetCountEditorModelResult.totalRowCount}} {{'TITLE.MESSAGES'|translate}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n <!--begin::Item-->\r\n <ng-container *ngIf=\"IsAdminSite\">\r\n <a class=\"navi-item px-8 cursor-pointer\" routerLink=\"{{'/ticketing/task'}}\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon2-hourglass text-primary\"></i>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n {{'TITLE.My_Tasks'| translate}}\r\n </div>\r\n <div class=\"text-muted\">\r\n {{'TITLE.latest_tasks_and_projects'| translate}}\r\n <span class=\"label label-light-info label-inline font-weight-bold\">{{dataTaskGetCountViewerModelResult.totalRowCount}} {{'TITLE.MESSAGES'|translate}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n <!--end::Item-->\r\n <!--begin::Item-->\r\n <a class=\"navi-item px-8 cursor-pointer\" routerLink=\"{{'/coretoken/userlog'}}\">\r\n <div class=\"navi-link\">\r\n <div class=\"navi-icon mr-2\">\r\n <i class=\"flaticon2-rocket-1 text-danger\"></i>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n {{'TITLE.My_Activities'| translate}}\r\n </div>\r\n <div class=\"text-muted\">\r\n {{'TITLE.Logs_and_notifications'| translate}}\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n <div class=\"navi-separator mt-3\"></div>\r\n <app-cms-token-access></app-cms-token-access>\r\n <!--begin::Footer-->\r\n <div class=\"navi-separator mt-3\"></div>\r\n <div class=\"navi-footer px-8 py-5\">\r\n <a class=\"btn btn-light-primary font-weight-bold cursor-pointer\" (click)=\"logout()\">{{'TITLE.Sing_Out'|\r\n translate}}</a>\r\n <a class=\"btn btn-clean font-weight-bold cursor-pointer\">ver: {{this.publicHelper.appClientVersion}} </a>\r\n </div>\r\n <!--end::Footer-->\r\n </div>\r\n <!--end::Nav-->\r\n</ng-container>","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { CoreAuthService, EnumManageUserAccessDataTypes, EnumManageUserAccessUserTypes, EnumTicketStatus, ErrorExceptionResultBase, FilterDataModel, FilterModel, TicketingTaskService, TokenInfoModel } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { map } from 'rxjs/operators';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { environment } from 'src/environments/environment';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n@Component({\r\n selector: 'app-user-dropdown-inner',\r\n templateUrl: './user-dropdown-inner.component.html',\r\n})\r\nexport class UserDropdownInnerComponent implements OnInit, OnDestroy {\r\n extrasUserDropdownStyle: 'light' | 'dark' = 'light';\r\n // user$: Observable<UserModel>;\r\n constructor(\r\n private layout: LayoutService,\r\n private coreAuthService: CoreAuthService,\r\n private cmsToastrService: CmsToastrService,\r\n private cdr: ChangeDetectorRef,\r\n private tokenHelper: TokenHelper,\r\n public publicHelper: PublicHelper,\r\n private ticketingTaskService: TicketingTaskService,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n }\r\n tokenInfo: TokenInfoModel;\r\n cmsApiStoreSubscribe: Subscription;\r\n @Input()\r\n loading = new ProgressSpinnerModel();\r\n IsAdminSite = false;\r\n env = environment;\r\n ngOnInit(): void {\r\n this.extrasUserDropdownStyle = this.layout.getProp(\r\n 'extras.user.dropdown.style'\r\n );\r\n // this.user$ = this.auth.currentUserSubject.asObservable();\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n this.DataTaskViewerGetCount();\r\n if (this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.AdminCpSite\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.AdminMainCms\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.AdminResellerCms\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.SupportCpSite\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.SupportMainCms\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.SupportResellerCms) {\r\n this.IsAdminSite = true;\r\n this.DataTaskEditorGetCount();\r\n }\r\n else {\r\n this.IsAdminSite = false;\r\n }\r\n });\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((value) => {\r\n this.tokenInfo = value;\r\n this.DataTaskViewerGetCount();\r\n if (this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.AdminCpSite\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.AdminMainCms\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.AdminResellerCms\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.SupportCpSite\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.SupportMainCms\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.SupportResellerCms) {\r\n this.IsAdminSite = true;\r\n this.DataTaskEditorGetCount();\r\n }\r\n else {\r\n this.IsAdminSite = false;\r\n }\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n async logout() {\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName, 'خروج از Øساب کاربری');\r\n this.cmsToastrService.typeOrderActionLogout();\r\n const retOut = await this.coreAuthService.ServiceLogout().pipe(map(next => {\r\n this.loading.Stop(pName);\r\n if (next.isSuccess) {\r\n this.cmsToastrService.typeSuccessLogout();\r\n } else {\r\n this.cmsToastrService.typeErrorLogout();\r\n }\r\n return;\r\n })).toPromise();\r\n document.location.reload();\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n dataTaskGetCountViewerModelResult = new ErrorExceptionResultBase();\r\n dataTaskGetCountEditorModelResult = new ErrorExceptionResultBase();\r\n DataTaskViewerGetCount(): void {\r\n if (!this.publicHelper.checkModule('ticketingTaskService'))\r\n return;\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n\r\n /*filter CLone*/\r\n const filterModel = new FilterModel();\r\n /*filter CLone*/\r\n const filter = new FilterDataModel();\r\n filter.propertyName = 'TicketStatus';\r\n filter.value = EnumTicketStatus.Unread;\r\n filterModel.filters.push(filter);\r\n this.ticketingTaskService.setAccessDataType(EnumManageUserAccessDataTypes.Viewer)\r\n this.ticketingTaskService.ServiceGetCount(filterModel).subscribe(\r\n (next) => {\r\n\r\n if (next.isSuccess) {\r\n this.dataTaskGetCountViewerModelResult = next;\r\n }\r\n else {\r\n this.cmsToastrService.typeErrorGetAll(next.errorMessage);\r\n\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n (error) => {\r\n this.cmsToastrService.typeError(error);\r\n\r\n this.loading.Stop(pName);\r\n\r\n }\r\n );\r\n }\r\n\r\n DataTaskEditorGetCount(): void {\r\n if (!this.publicHelper.checkModule('ticketingTaskService'))\r\n return;\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n\r\n /*filter CLone*/\r\n const filterModel = new FilterModel();\r\n /*filter CLone*/\r\n const filter = new FilterDataModel();\r\n filter.propertyName = 'TicketStatus';\r\n filter.value = EnumTicketStatus.Unread;\r\n filterModel.filters.push(filter);\r\n this.ticketingTaskService.setAccessDataType(EnumManageUserAccessDataTypes.Editor)\r\n this.ticketingTaskService.ServiceGetCount(filterModel).subscribe(\r\n (next) => {\r\n\r\n if (next.isSuccess) {\r\n this.dataTaskGetCountEditorModelResult = next;\r\n }\r\n else {\r\n this.cmsToastrService.typeErrorGetAll(next.errorMessage);\r\n\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n (error) => {\r\n this.cmsToastrService.typeError(error);\r\n\r\n this.loading.Stop(pName);\r\n\r\n }\r\n );\r\n }\r\n}\r\n","<!--begin::Topbar-->\r\n<ng-container *ngIf=\"extraSearchDisplay\">\r\n <ng-container *ngIf=\"extrasSearchLayout === 'offcanvas'\">\r\n <!--begin::Search-->\r\n <div class=\"topbar-item\">\r\n <div class=\"btn btn-icon btn-hover-transparent-white btn-lg btn-dropdown mr-1\" id=\"kt_quick_search_toggle\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/General/Search.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-xl\"></span>\r\n </div>\r\n </div>\r\n <!--end::Search-->\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extrasSearchLayout === 'dropdown'\" id=\"kt_quick_search_toggle\">\r\n <div class=\"dropdown\" id=\"kt_quick_search_toggle\" autoClose=\"outside\" ngbDropdown>\r\n <!--begin::Toggle-->\r\n <div class=\"topbar-item\" ngbDropdownToggle>\r\n <div class=\"btn btn-icon btn-hover-transparent-white btn-lg btn-dropdown mr-1\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/General/Search.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-xl\"></span>\r\n </div>\r\n </div>\r\n <!--end::Toggle-->\r\n\r\n <!--begin::Dropdown-->\r\n <div class=\"dropdown-menu p-0 m-0 dropdown-menu-left dropdown-menu-anim-up dropdown-menu-lg\" ngbDropdownMenu>\r\n <app-search-dropdown-inner></app-search-dropdown-inner>\r\n </div>\r\n <!--end::Dropdown-->\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"extrasNotificationsDisplay\">\r\n <ng-container *ngIf=\"extrasNotificationsLayout === 'offcanvas'\">\r\n <!--begin::Notifications-->\r\n <div class=\"topbar-item\">\r\n <div class=\"btn btn-icon btn-hover-transparent-white btn-dropdown btn-lg mr-1 pulse pulse-primary\"\r\n id=\"kt_quick_notifications_toggle\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/Code/Compiling.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-xl\"></span>\r\n <span class=\"pulse-ring\"></span>\r\n </div>\r\n </div>\r\n <!--end::Notifications-->\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extrasNotificationsLayout === 'dropdown'\">\r\n <!--begin::Notifications-->\r\n <div class=\"dropdown\" ngbDropdown placement=\"bottom\">\r\n <!--begin::Toggle-->\r\n <div class=\"topbar-item\" data-toggle=\"dropdown\" data-offset=\"10px,0px\" ngbDropdownToggle>\r\n <div class=\"btn btn-icon btn-hover-transparent-white btn-dropdown btn-lg mr-1 pulse pulse-primary\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/Code/Compiling.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-xl\"></span>\r\n <span class=\"pulse-ring\"></span>\r\n </div>\r\n </div>\r\n <!--end::Toggle-->\r\n\r\n <!--begin::Dropdown-->\r\n <div ngbDropdownMenu class=\"dropdown-menu p-0 m-0 dropdown-menu-anim-up dropdown-menu-lg\">\r\n <form>\r\n <app-notifications-dropdown-inner></app-notifications-dropdown-inner>\r\n </form>\r\n </div>\r\n <!--end::Dropdown-->\r\n </div>\r\n <!--end::Notifications-->\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"extrasQuickActionsDisplay\">\r\n <ng-container *ngIf=\"extrasQuickActionsLayout === 'offcanvas'\">\r\n <!--begin::Quick Actions-->\r\n <div class=\"topbar-item\">\r\n <div class=\"btn btn-icon btn-hover-transparent-white btn-dropdown btn-lg mr-1\" id=\"kt_quick_actions_toggle\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/Media/Equalizer.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-xl\"></span>\r\n </div>\r\n </div>\r\n <!--end::Quick Actions-->\r\n </ng-container>\r\n <ng-container *ngIf=\"extrasQuickActionsLayout === 'dropdown'\">\r\n <!--begin::Quick Actions-->\r\n <div class=\"dropdown\" ngbDropdown placement=\"bottom\">\r\n <!--begin::Toggle-->\r\n <div class=\"topbar-item\" data-toggle=\"dropdown\" data-offset=\"10px,0px\" ngbDropdownToggle>\r\n <div class=\"btn btn-icon btn-hover-transparent-white btn-dropdown btn-lg mr-1\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/Media/Equalizer.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-xl\"></span>\r\n </div>\r\n </div>\r\n <!--end::Toggle-->\r\n <!--begin::Dropdown-->\r\n <div class=\"dropdown-menu p-0 m-0 dropdown-menu-anim-up dropdown-menu-lg\" ngbDropdownMenu>\r\n <app-quick-actions-dropdown-inner></app-quick-actions-dropdown-inner>\r\n </div>\r\n <!--end::Dropdown-->\r\n </div>\r\n <!--end::Quick Actions-->\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"extrasCartDisplay\">\r\n <ng-container *ngIf=\"extrasCartLayout === 'offcanvas'\">\r\n <!--begin::Cart-->\r\n <div class=\"topbar-item\">\r\n <div class=\"btn btn-icon btn-hover-transparent-white btn-dropdown btn-lg mr-1\" id=\"kt_quick_cart_toggle\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/Shopping/Cart3.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-xl\"></span>\r\n </div>\r\n </div>\r\n <!--end::Cart-->\r\n </ng-container>\r\n <ng-container *ngIf=\"extrasCartLayout === 'dropdown'\">\r\n <!--begin::Cart-->\r\n <div class=\"dropdown\" ngbDropdown placement=\"bottom\">\r\n <!--begin::Toggle-->\r\n <div class=\"topbar-item\" data-toggle=\"dropdown\" data-offset=\"10px,0px\" ngbDropdownToggle>\r\n <div class=\"btn btn-icon btn-hover-transparent-white btn-dropdown btn-lg mr-1\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/Shopping/Cart3.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-xl\"></span>\r\n </div>\r\n </div>\r\n <!--end::Toggle-->\r\n <!--begin::Dropdown-->\r\n <div ngbDropdownMenu class=\"dropdown-menu p-0 m-0 dropdown-menu-xl dropdown-menu-anim-up\">\r\n <form>\r\n <app-cart-dropdown-inner></app-cart-dropdown-inner>\r\n </form>\r\n </div>\r\n <!--end::Dropdown-->\r\n </div>\r\n <!--end::Cart-->\r\n </ng-container>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"extrasQuickPanelDisplay\">\r\n <!--begin::Quick panel-->\r\n <div class=\"topbar-item\">\r\n <div class=\"btn btn-icon btn-hover-transparent-white btn-lg mr-1\" id=\"kt_quick_panel_toggle\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/Layout/Layout-4-blocks.svg'\" [cacheSVG]=\"true\"\r\n class=\"svg-icon svg-icon-xl\"></span>\r\n </div>\r\n </div>\r\n <!--end::Quick panel-->\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"extrasLanguagesDisplay\">\r\n <app-language-selector\r\n style=\"margin-top: 20px\"></app-language-selector>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"extrasUserDisplay\">\r\n <ng-container *ngIf=\"extrasUserLayout === 'offcanvas'\">\r\n <!--begin::User-->\r\n <div class=\"topbar-item\">\r\n <div class=\"btn btn-icon btn-hover-transparent-white d-flex align-items-center btn-lg px-md-2 w-md-auto\"\r\n id=\"kt_quick_user_toggle\">\r\n <span class=\"text-white opacity-70 font-weight-bold font-size-base d-none d-md-inline mr-1\">{{'TRANSLATOR.HI'|translate}},</span>\r\n <span\r\n class=\"text-white opacity-90 font-weight-bolder font-size-base d-none d-md-inline mr-4\">{{ tokenInfo?.name }}</span>\r\n <span class=\"symbol symbol-35\">\r\n <span\r\n class=\"symbol-label text-white font-size-h5 font-weight-bold bg-white-o-30\">{{ tokenInfo?.lastName }}</span>\r\n </span>\r\n </div>\r\n </div>\r\n <!--end::User-->\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extrasUserLayout === 'dropdown'\">\r\n <!--begin::User-->\r\n <ng-container *ngIf=\"tokenInfo && tokenInfo.userId>0\">\r\n <div class=\"dropdown\" ngbDropdown placement=\"bottom-left\">\r\n <div class=\"topbar-item\" data-toggle=\"dropdown\" data-offset=\"0px,0px\" ngbDropdownToggle>\r\n <div class=\"btn btn-icon btn-hover-transparent-white d-flex align-items-center btn-lg px-md-2 w-md-auto\">\r\n <span class=\"text-white opacity-70 font-weight-bold font-size-base d-none d-md-inline mr-1\">{{'TRANSLATOR.HI'|translate}}</span>\r\n <span\r\n class=\"text-white opacity-90 font-weight-bolder font-size-base d-none d-md-inline mr-4\">{{ tokenInfo?.name }}</span>\r\n <span class=\"symbol symbol-35\">\r\n <span\r\n class=\"symbol-label text-white font-size-h5 font-weight-bold bg-white-o-30\">{{ tokenInfo?.lastName }}</span>\r\n </span>\r\n </div>\r\n </div>\r\n <!--end::Toggle-->\r\n <!--begin::Dropdown-->\r\n <div ngbDropdownMenu\r\n class=\"dropdown-menu p-0 m-0 dropdown-menu-left dropdown-menu-anim-up dropdown-menu-lg p-0\">\r\n <app-user-dropdown-inner></app-user-dropdown-inner>\r\n </div>\r\n </div>\r\n <!--end::Dropdown-->\r\n </ng-container>\r\n <!--end::User-->\r\n </ng-container>\r\n</ng-container>\r\n\r\n<!--end::Topbar-->","import { Component, OnInit, AfterViewInit, ChangeDetectorRef, OnDestroy } from '@angular/core';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\nimport KTLayoutQuickSearch from '../../../../../assets/js/layout/extended/quick-search';\r\nimport KTLayoutQuickNotifications from '../../../../../assets/js/layout/extended/quick-notifications';\r\nimport KTLayoutQuickActions from '../../../../../assets/js/layout/extended/quick-actions';\r\nimport KTLayoutQuickCartPanel from '../../../../../assets/js/layout/extended/quick-cart';\r\nimport KTLayoutQuickPanel from '../../../../../assets/js/layout/extended/quick-panel';\r\nimport KTLayoutQuickUser from '../../../../../assets/js/layout/extended/quick-user';\r\nimport KTLayoutHeaderTopbar from '../../../../../assets/js/layout/base/header-topbar';\r\nimport { KTUtil } from '../../../../../assets/js/components/util';\r\nimport { NtkCmsApiStoreService, TokenInfoModel } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\n\r\n@Component({\r\n selector: 'app-topbar',\r\n templateUrl: './topbar.component.html',\r\n})\r\nexport class TopbarComponent implements OnInit, AfterViewInit, OnDestroy {\r\n // user$: Observable<UserModel>;\r\n // tobbar extras\r\n extraSearchDisplay: boolean;\r\n extrasSearchLayout: 'offcanvas' | 'dropdown';\r\n extrasNotificationsDisplay: boolean;\r\n extrasNotificationsLayout: 'offcanvas' | 'dropdown';\r\n extrasQuickActionsDisplay: boolean;\r\n extrasQuickActionsLayout: 'offcanvas' | 'dropdown';\r\n extrasCartDisplay: boolean;\r\n extrasCartLayout: 'offcanvas' | 'dropdown';\r\n extrasQuickPanelDisplay: boolean;\r\n extrasLanguagesDisplay: boolean;\r\n extrasUserDisplay: boolean;\r\n extrasUserLayout: 'offcanvas' | 'dropdown';\r\n\r\n constructor(\r\n private layout: LayoutService,\r\n private tokenHelper: TokenHelper,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n // this.user$ = this.auth.currentUserSubject.asObservable();\r\n\r\n }\r\n tokenInfo: TokenInfoModel;\r\n cmsApiStoreSubscribe: Subscription;\r\n ngOnInit(): void {\r\n // topbar extras\r\n this.extraSearchDisplay = this.layout.getProp('extras.search.display');\r\n this.extrasSearchLayout = this.layout.getProp('extras.search.layout');\r\n this.extrasNotificationsDisplay = this.layout.getProp(\r\n 'extras.notifications.display'\r\n );\r\n this.extrasNotificationsLayout = this.layout.getProp(\r\n 'extras.notifications.layout'\r\n );\r\n this.extrasQuickActionsDisplay = this.layout.getProp(\r\n 'extras.quickActions.display'\r\n );\r\n this.extrasQuickActionsLayout = this.layout.getProp(\r\n 'extras.quickActions.layout'\r\n );\r\n this.extrasCartDisplay = this.layout.getProp('extras.cart.display');\r\n this.extrasCartLayout = this.layout.getProp('extras.cart.layout');\r\n this.extrasLanguagesDisplay = this.layout.getProp(\r\n 'extras.languages.display'\r\n );\r\n this.extrasUserDisplay = this.layout.getProp('extras.user.display');\r\n this.extrasUserLayout = this.layout.getProp('extras.user.layout');\r\n this.extrasQuickPanelDisplay = this.layout.getProp(\r\n 'extras.quickPanel.display'\r\n );\r\n\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n });\r\n\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((value) => {\r\n this.tokenInfo = value;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n KTUtil.ready(() => {\r\n // Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.\r\n // Add 'implements AfterViewInit' to the class.\r\n if (this.extraSearchDisplay && this.extrasSearchLayout === 'offcanvas') {\r\n KTLayoutQuickSearch.init('kt_quick_search');\r\n }\r\n\r\n if (\r\n this.extrasNotificationsDisplay &&\r\n this.extrasNotificationsLayout === 'offcanvas'\r\n ) {\r\n // Init Quick Notifications Offcanvas Panel\r\n KTLayoutQuickNotifications.init('kt_quick_notifications');\r\n }\r\n\r\n if (\r\n this.extrasQuickActionsDisplay &&\r\n this.extrasQuickActionsLayout === 'offcanvas'\r\n ) {\r\n // Init Quick Actions Offcanvas Panel\r\n KTLayoutQuickActions.init('kt_quick_actions');\r\n }\r\n\r\n if (this.extrasCartDisplay && this.extrasCartLayout === 'offcanvas') {\r\n // Init Quick Cart Panel\r\n KTLayoutQuickCartPanel.init('kt_quick_cart');\r\n }\r\n\r\n if (this.extrasQuickPanelDisplay) {\r\n // Init Quick Offcanvas Panel\r\n KTLayoutQuickPanel.init('kt_quick_panel');\r\n }\r\n\r\n if (this.extrasUserDisplay && this.extrasUserLayout === 'offcanvas') {\r\n // Init Quick User Panel\r\n KTLayoutQuickUser.init('kt_quick_user');\r\n }\r\n\r\n // Init Header Topbar For Mobile Mode\r\n KTLayoutHeaderTopbar.init('kt_header_mobile_topbar_toggle');\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n}\r\n","<!--begin::Container-->\r\n<div\r\n [ngClass]=\"headerContainerCSSClasses\"\r\n class=\"d-flex align-items-stretch justify-content-between\"\r\n>\r\n <ng-container *ngIf=\"loader$ | async as _loader\">\r\n <ngb-progressbar\r\n class=\"loading-bar\"\r\n height=\"5px\"\r\n [value]=\"_loader\"\r\n ></ngb-progressbar>\r\n </ng-container>\r\n\r\n <!--begin::Left-->\r\n <div class=\"d-flex align-items-stretch mr-3\">\r\n <!--begin::Header Logo-->\r\n <div class=\"header-logo\">\r\n <a routerLink=\"/\">\r\n <img\r\n alt=\"Logo\"\r\n src=\"./assets/media/logos/logo-letter-9.png\"\r\n class=\"logo-default max-h-40px\"\r\n />\r\n <img\r\n alt=\"Logo\"\r\n src=\"./assets/media/logos/logo-letter-1.png\"\r\n class=\"logo-sticky max-h-40px\"\r\n />\r\n </a>\r\n </div>\r\n <!--end::Header Logo-->\r\n <ng-container *ngIf=\"headerMenuSelfDisplay\">\r\n <!--begin::Header Menu Wrapper-->\r\n <div\r\n class=\"header-menu-wrapper header-menu-wrapper-left\"\r\n id=\"kt_header_menu_wrapper\"\r\n >\r\n <!--begin::Header Menu-->\r\n <!-- Don't change id => 'kt_header_menu' -->\r\n \r\n <!-- DYNAMIC MENU -->\r\n <app-header-menu-dynamic\r\n #ktHeaderMenu\r\n id=\"kt_header_menu\"\r\n class=\"header-menu header-menu-left header-menu-mobile\"\r\n [ngClass]=\"headerMenuCSSClasses\"\r\n ></app-header-menu-dynamic>\r\n <!--end::Header Menu-->\r\n </div>\r\n <!--end::Header Menu Wrapper-->\r\n </ng-container>\r\n </div>\r\n <!--end::Left-->\r\n <!--begin::Topbar-->\r\n <app-topbar class=\"topbar\"></app-topbar>\r\n <!--end::Topbar-->\r\n</div>\r\n<!--end::Container-->\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n AfterViewInit,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport {\r\n Router,\r\n NavigationStart,\r\n RouteConfigLoadStart,\r\n RouteConfigLoadEnd,\r\n NavigationEnd,\r\n NavigationCancel,\r\n} from '@angular/router';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\nimport KTLayoutHeader from '../../../../../assets/js/layout/base/header';\r\nimport KTLayoutHeaderMenu from '../../../../../assets/js/layout/base/header-menu';\r\nimport { KTUtil } from '../../../../../assets/js/components/util';\r\nimport { Subscription, Observable, BehaviorSubject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n})\r\nexport class HeaderComponent implements OnInit, AfterViewInit, OnDestroy {\r\n headerContainerCSSClasses: string;\r\n headerMenuSelfDisplay: boolean;\r\n headerMenuSelfStatic: boolean;\r\n asideSelfDisplay: boolean;\r\n headerLogo: string;\r\n headerSelfTheme: string;\r\n headerMenuCSSClasses;\r\n headerMenuHTMLAttributes: any = {};\r\n routerLoaderTimout: any;\r\n\r\n @ViewChild('ktHeaderMenu', { static: true }) ktHeaderMenu: ElementRef;\r\n loader$: Observable<number>;\r\n\r\n private loaderSubject: BehaviorSubject<number> = new BehaviorSubject<number>(0);\r\n private unsubscribe: Subscription[] = []; // Read more: => https://brianflove.com/2016/12/11/anguar-2-unsubscribe-observables/\r\n\r\n constructor(private layout: LayoutService, private router: Router) {\r\n this.loader$ = this.loaderSubject;\r\n // page progress bar percentage\r\n const routerSubscription = this.router.events.subscribe((event) => {\r\n if (event instanceof NavigationStart) {\r\n // set page progress bar loading to start on NavigationStart event router\r\n this.loaderSubject.next(10);\r\n }\r\n if (event instanceof RouteConfigLoadStart) {\r\n this.loaderSubject.next(65);\r\n }\r\n if (event instanceof RouteConfigLoadEnd) {\r\n this.loaderSubject.next(90);\r\n }\r\n if (event instanceof NavigationEnd || event instanceof NavigationCancel) {\r\n // set page progress bar loading to end on NavigationEnd event router\r\n this.loaderSubject.next(100);\r\n if (this.routerLoaderTimout) {\r\n clearTimeout(this.routerLoaderTimout);\r\n }\r\n this.routerLoaderTimout = setTimeout(() => {\r\n this.loaderSubject.next(0);\r\n }, 300);\r\n }\r\n });\r\n this.unsubscribe.push(routerSubscription);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.headerContainerCSSClasses = this.layout.getStringCSSClasses(\r\n 'header_container'\r\n );\r\n this.headerMenuSelfDisplay = this.layout.getProp(\r\n 'header.menu.self.display'\r\n );\r\n this.asideSelfDisplay = this.layout.getProp('aside.self.display');\r\n this.headerMenuSelfStatic = this.layout.getProp('header.menu.self.static');\r\n this.headerSelfTheme = this.layout.getProp('header.self.theme') || '';\r\n this.headerLogo = this.getLogoURL();\r\n this.headerMenuCSSClasses = this.layout.getStringCSSClasses('header_menu');\r\n this.headerMenuHTMLAttributes = this.layout.getHTMLAttributes(\r\n 'header_menu'\r\n );\r\n }\r\n\r\n private getLogoURL(): string {\r\n let result = 'logo-light.png';\r\n\r\n if (this.headerSelfTheme && this.headerSelfTheme === 'light') {\r\n result = 'logo-dark.png';\r\n }\r\n\r\n if (this.headerSelfTheme && this.headerSelfTheme === 'dark') {\r\n result = 'logo-dark.png';\r\n }\r\n\r\n return `./assets/media/logos/${result}`;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.ktHeaderMenu) {\r\n for (const key in this.headerMenuHTMLAttributes) {\r\n if (this.headerMenuHTMLAttributes.hasOwnProperty(key)) {\r\n this.ktHeaderMenu.nativeElement.attributes[\r\n key\r\n ] = this.headerMenuHTMLAttributes[key];\r\n }\r\n }\r\n }\r\n\r\n KTUtil.ready(() => {\r\n // Init Desktop & Mobile Headers\r\n KTLayoutHeader.init('kt_header', 'kt_header_mobile');\r\n // Init Header Menu\r\n KTLayoutHeaderMenu.init('kt_header_menu', 'kt_header_menu_wrapper');\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n if (this.routerLoaderTimout) {\r\n clearTimeout(this.routerLoaderTimout);\r\n }\r\n }\r\n}\r\n","import { BreadcrumbItemModel } from './breadcrumb-item.model';\r\n\r\nexport class SubheaderModel {\r\n breadcrumbs: BreadcrumbItemModel[] = [];\r\n title = '';\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { BehaviorSubject, Subscription } from 'rxjs';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\nimport { BreadcrumbItemModel } from '../_models/breadcrumb-item.model';\r\n\r\nimport { SubheaderModel } from '../_models/subheader.model';\r\n\r\n// kt_header_menu\r\n// kt_aside_menu\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SubheaderService implements OnDestroy {\r\n titleSubject: BehaviorSubject<string> = new BehaviorSubject<string>(\r\n 'Dashboard'\r\n );\r\n descriptionSubject: BehaviorSubject<string> = new BehaviorSubject<string>('');\r\n breadCrumbsSubject: BehaviorSubject<\r\n BreadcrumbItemModel[]\r\n > = new BehaviorSubject<BreadcrumbItemModel[]>([]);\r\n subheaderVersionSubject: BehaviorSubject<string> = new BehaviorSubject<\r\n string\r\n >('v1'); // [1-6]\r\n // private fields\r\n private unsubscribe: Subscription[] = []; // Read more: => https://brianflove.com/2016/12/11/anguar-2-unsubscribe-observables/\r\n\r\n constructor(private layout: LayoutService) {\r\n this.setDefaultSubheader();\r\n }\r\n\r\n setDefaultSubheader() {\r\n this.setSubheaderVersion(this.layout.getProp('subheader.layoutVersion'));\r\n }\r\n\r\n setBreadcrumbs(breadcrumbs: BreadcrumbItemModel[] = []) {\r\n this.breadCrumbsSubject.next(breadcrumbs);\r\n }\r\n\r\n setTitle(title: string = '') {\r\n this.titleSubject.next(title);\r\n }\r\n\r\n setDescription(description: string) {\r\n this.descriptionSubject.next(description);\r\n }\r\n\r\n private setSubheaderVersion(version: string = 'v1') {\r\n this.subheaderVersionSubject.next(version);\r\n }\r\n\r\n // use this method in SubheaderWrapper\r\n updateAfterRouteChanges(pathName) {\r\n const aside = this.getBreadcrumbsAndTitle('kt_aside_menu', pathName);\r\n const header = this.getBreadcrumbsAndTitle('kt_header_menu', pathName);\r\n const breadcrumbs =\r\n aside && aside.breadcrumbs.length > 0\r\n ? aside.breadcrumbs\r\n : header.breadcrumbs;\r\n\r\n this.setBreadcrumbs(breadcrumbs);\r\n\r\n this.setTitle(\r\n aside && aside.title && aside.title.length > 0\r\n ? aside.title\r\n : header.title\r\n );\r\n }\r\n\r\n private getLinksFromMenu(menu): HTMLAnchorElement[] {\r\n const parentLiElements = Array.from(\r\n menu.getElementsByClassName('menu-item-open') || []\r\n ) as HTMLElement[];\r\n const childLiElements = Array.from(\r\n menu.getElementsByClassName('menu-item-active') || []\r\n ) as HTMLElement[];\r\n const result: HTMLAnchorElement[] = [];\r\n parentLiElements.forEach((el) => {\r\n const links = Array.from(\r\n el.getElementsByClassName('menu-link') || []\r\n ) as HTMLAnchorElement[];\r\n if (links && links.length > 0) {\r\n const aLink = links[0];\r\n if (\r\n aLink.href &&\r\n aLink.href.length &&\r\n aLink.href.length > 0 &&\r\n aLink.innerHTML !== '/'\r\n ) {\r\n result.push(aLink);\r\n }\r\n }\r\n });\r\n\r\n childLiElements.forEach((el) => {\r\n const links = Array.from(\r\n el.getElementsByClassName('menu-link') || []\r\n ) as HTMLAnchorElement[];\r\n if (links && links.length > 0) {\r\n const aLink = links[0];\r\n if (\r\n aLink.href &&\r\n aLink.href.length &&\r\n aLink.href.length > 0 &&\r\n aLink.innerHTML !== '/'\r\n ) {\r\n result.push(aLink);\r\n }\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n private getBreadcrumbsAndTitle(menuId, pathName): SubheaderModel {\r\n const result = new SubheaderModel();\r\n const menu = document.getElementById(menuId);\r\n if (!menu) {\r\n return result;\r\n }\r\n\r\n const activeLinksArray = this.getLinksFromMenu(menu);\r\n\r\n const activeLinks = activeLinksArray.filter((el) => el.tagName === 'A');\r\n if (!activeLinks) {\r\n return result;\r\n }\r\n\r\n activeLinks.forEach((link) => {\r\n const titleSpans = link.getElementsByClassName('menu-text');\r\n if (titleSpans) {\r\n const titleSpan = Array.from(titleSpans).find(\r\n (t) => t.innerHTML && t.innerHTML.trim().length > 0\r\n );\r\n if (titleSpan) {\r\n result.breadcrumbs.push({\r\n title: titleSpan.innerHTML,\r\n linkPath: link.pathname,\r\n linkText: titleSpan.innerHTML,\r\n });\r\n }\r\n }\r\n });\r\n result.title = this.getTitle(result.breadcrumbs, pathName);\r\n return result;\r\n }\r\n\r\n private parseUrlAndReturnPathname(href): string {\r\n const url = document.createElement('a');\r\n url.href =\r\n 'https://developer.mozilla.org:8080/en-US/search?q=URL#search-results-close-container';\r\n\r\n return url.pathname;\r\n }\r\n\r\n private getTitle(breadCrumbs, pathname) {\r\n if (!breadCrumbs || !pathname) {\r\n return '';\r\n }\r\n\r\n const length = breadCrumbs.length;\r\n if (!length) {\r\n return '';\r\n }\r\n\r\n return breadCrumbs[length - 1].title;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n }\r\n}\r\n","<!--begin::Subheader-->\r\n<div\r\n class=\"subheader py-2 py-lg-6\"\r\n [ngClass]=\"subheaderCSSClasses\"\r\n id=\"kt_subheader\"\r\n>\r\n <div\r\n [ngClass]=\"subheaderContainerCSSClasses\"\r\n class=\"d-flex align-items-center justify-content-between flex-wrap flex-sm-nowrap\"\r\n >\r\n <!--begin::Info-->\r\n <div class=\"d-flex align-items-center flex-wrap mr-1\">\r\n <ng-container *ngIf=\"subheaderMobileToggle\">\r\n <!--begin::Mobile Toggle-->\r\n <button\r\n class=\"burger-icon burger-icon-left mr-4 d-inline-block d-lg-none\"\r\n id=\"kt_subheader_mobile_toggle\"\r\n >\r\n <span></span>\r\n </button>\r\n <!--end::Mobile Toggle-->\r\n </ng-container>\r\n\r\n <!--begin::Page Heading-->\r\n <div class=\"d-flex align-items-baseline flex-wrap mr-5\">\r\n <!--begin::Page Title-->\r\n <ng-container *ngIf=\"title$ | async as _title\">\r\n <h5 class=\"text-dark font-weight-bold my-1 mr-5\">\r\n {{ _title }}\r\n <ng-container *ngIf=\"subheaderDisplayDesc\">\r\n <ng-container *ngIf=\"description$ | async as _description\">\r\n <small>{{ _description }}</small>\r\n </ng-container>\r\n </ng-container>\r\n </h5>\r\n </ng-container>\r\n <!--end::Page Title-->\r\n\r\n <!--begin::Breadcrumb-->\r\n <ul\r\n class=\"breadcrumb breadcrumb-transparent breadcrumb-dot font-weight-bold p-0 my-2 font-size-sm\"\r\n >\r\n <li\r\n class=\"breadcrumb-item\"\r\n *ngFor=\"let bc of breadcrumbs\"\r\n routerLinkActive=\"active\"\r\n >\r\n <a [routerLink]=\"bc.linkPath\" class=\"text-muted\">\r\n {{ bc.linkText }}\r\n </a>\r\n </li>\r\n </ul>\r\n <!--end::Breadcrumb-->\r\n </div>\r\n <!--end::Page Heading-->\r\n </div>\r\n <!--end::Info-->\r\n\r\n <!--begin::Toolbar-->\r\n <div class=\"d-flex align-items-center\">\r\n <ng-container *ngIf=\"subheaderDisplayDaterangepicker\">\r\n <!--begin::Daterange-->\r\n <a\r\n class=\"btn btn-light-primary btn-sm font-weight-bold mr-2 cursor-pointer\"\r\n id=\"kt_dashboard_daterangepicker\"\r\n data-toggle=\"tooltip\"\r\n title=\"Select dashboard daterange\"\r\n data-placement=\"left\"\r\n >\r\n <span\r\n class=\"opacity-60 font-weight-bold mr-2\"\r\n id=\"kt_dashboard_daterangepicker_title\"\r\n >Today</span\r\n >\r\n <span class=\"font-weight-bold\" id=\"kt_dashboard_daterangepicker_date\"\r\n >Aug 16</span\r\n >\r\n </a>\r\n <!--end::Daterange-->\r\n </ng-container>\r\n <ng-container *ngIf=\"!subheaderDisplayDaterangepicker\">\r\n <!--begin::Actions-->\r\n <a\r\n class=\"btn btn-light-primary font-weight-bolder btn-sm cursor-pointer\"\r\n >\r\n Actions\r\n </a>\r\n <!--end::Actions-->\r\n </ng-container>\r\n\r\n <!--begin::Dropdown-->\r\n <div\r\n class=\"dropdown dropdown-inline\"\r\n data-toggle=\"tooltip\"\r\n title=\"Quick actions\"\r\n placement=\"bottom-right\"\r\n ngbDropdown\r\n >\r\n <a\r\n class=\"btn btn-icon cursor-pointer\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n ngbDropdownToggle\r\n >\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/Files/File-plus.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-success svg-icon-2x\"\r\n ></span>\r\n </a>\r\n <div\r\n class=\"dropdown-menu dropdown-menu-md dropdown-menu-right p-0 m-0\"\r\n ngbDropdownMenu\r\n >\r\n <app-dropdown-menu1></app-dropdown-menu1>\r\n </div>\r\n </div>\r\n <!--end::Dropdown-->\r\n </div>\r\n <!--end::Toolbar-->\r\n </div>\r\n</div>\r\n<!--end::Subheader-->\r\n","import { Component, OnInit, Input, ChangeDetectorRef } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { SubheaderService } from '../_services/subheader.service';\r\nimport { BreadcrumbItemModel } from '../_models/breadcrumb-item.model';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\n\r\n@Component({\r\n selector: 'app-subheader1',\r\n templateUrl: './subheader1.component.html',\r\n})\r\nexport class Subheader1Component implements OnInit {\r\n subheaderCSSClasses = '';\r\n subheaderContainerCSSClasses = '';\r\n subheaderMobileToggle = false;\r\n subheaderDisplayDesc = false;\r\n subheaderDisplayDaterangepicker = false;\r\n title$: Observable<string>;\r\n breadcrumbs$: Observable<BreadcrumbItemModel[]>;\r\n breadcrumbs: BreadcrumbItemModel[] = [];\r\n description$: Observable<string>;\r\n @Input() title: string;\r\n\r\n constructor(\r\n private layout: LayoutService,\r\n private subheader: SubheaderService,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n this.title$ = this.subheader.titleSubject.asObservable();\r\n }\r\n\r\n ngOnInit() {\r\n this.title$ = this.subheader.titleSubject.asObservable();\r\n this.breadcrumbs$ = this.subheader.breadCrumbsSubject.asObservable();\r\n this.description$ = this.subheader.descriptionSubject.asObservable();\r\n this.subheaderCSSClasses = this.layout.getStringCSSClasses('subheader');\r\n this.subheaderContainerCSSClasses = this.layout.getStringCSSClasses(\r\n 'subheader_container'\r\n );\r\n this.subheaderMobileToggle = this.layout.getProp('subheader.mobileToggle');\r\n this.subheaderDisplayDesc = this.layout.getProp('subheader.displayDesc');\r\n this.subheaderDisplayDaterangepicker = this.layout.getProp(\r\n 'subheader.displayDaterangepicker'\r\n );\r\n this.breadcrumbs$.subscribe((res) => {\r\n this.breadcrumbs = res;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n}\r\n","<!--begin::Subheader-->\r\n<div\r\n class=\"subheader py-2 py-lg-6\"\r\n [ngClass]=\"subheaderCSSClasses\"\r\n id=\"kt_subheader\"\r\n>\r\n <div\r\n [ngClass]=\"subheaderContainerCSSClasses\"\r\n class=\"d-flex align-items-center justify-content-between flex-wrap flex-sm-nowrap\"\r\n >\r\n <!--begin::Info-->\r\n <div class=\"d-flex align-items-center flex-wrap mr-2\">\r\n <ng-container *ngIf=\"subheaderMobileToggle\">\r\n <!--begin::Mobile Toggle-->\r\n <button\r\n class=\"burger-icon burger-icon-left mr-4 d-inline-block d-lg-none\"\r\n id=\"kt_subheader_mobile_toggle\"\r\n >\r\n <span></span>\r\n </button>\r\n <!--end::Mobile Toggle-->\r\n </ng-container>\r\n\r\n <!--begin::Page Title-->\r\n <ng-container *ngIf=\"title$ | async as _title\">\r\n <h5 class=\"text-dark font-weight-bold mt-2 mb-2 mr-5\">\r\n {{ _title }}\r\n <ng-container *ngIf=\"subheaderDisplayDesc\">\r\n <ng-container *ngIf=\"description$ | async as _description\">\r\n <small>{{ _description }}</small>\r\n </ng-container>\r\n </ng-container>\r\n </h5>\r\n </ng-container>\r\n <!--end::Page Title-->\r\n <!--begin::Action-->\r\n <div\r\n class=\"subheader-separator subheader-separator-ver mt-2 mb-2 mr-4 bg-gray-200\"\r\n ></div>\r\n\r\n <span class=\"text-muted font-weight-bold mr-4\">#XRS-45670</span>\r\n\r\n <a href=\"#\" class=\"btn btn-light-primary font-weight-bolder btn-sm\">\r\n Add New\r\n </a>\r\n <!--end::Action-->\r\n </div>\r\n <!--end::Info-->\r\n\r\n <!--begin::Toolbar-->\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <!--begin::Actions-->\r\n <a\r\n class=\"btn btn-bg-white btn-icon-info btn-hover-primary btn-icon mr-3 my-2 my-lg-0 cursor-pointer\"\r\n >\r\n <i class=\"flaticon2-file icon-md\"></i>\r\n </a>\r\n\r\n <a\r\n class=\"btn btn-bg-white btn-icon-danger btn-hover-primary btn-icon mr-3 my-2 my-lg-0 cursor-pointer\"\r\n >\r\n <i class=\"flaticon-download-1 icon-md\"></i>\r\n </a>\r\n\r\n <a\r\n class=\"btn btn-bg-white btn-icon-success btn-hover-primary btn-icon mr-3 my-2 my-lg-0 cursor-pointer\"\r\n >\r\n <i class=\"flaticon2-fax icon-md\"></i>\r\n </a>\r\n\r\n <a\r\n class=\"btn btn-bg-white btn-icon-warning btn-hover-primary btn-icon mr-3 my-2 my-lg-0 cursor-pointer\"\r\n >\r\n <i class=\"flaticon2-settings icon-md\"></i>\r\n </a>\r\n <!--end::Actions-->\r\n\r\n <ng-container *ngIf=\"subheaderDisplayDaterangepicker\">\r\n <!--begin::Daterange-->\r\n <a\r\n class=\"btn btn-bg-white font-weight-bold mr-3 my-2 my-lg-0 cursor-pointer\"\r\n id=\"kt_dashboard_daterangepicker\"\r\n data-toggle=\"tooltip\"\r\n title=\"Select dashboard daterange\"\r\n data-placement=\"left\"\r\n >\r\n <span\r\n class=\"text-muted font-weight-bold mr-2\"\r\n id=\"kt_dashboard_daterangepicker_title\"\r\n >Today</span\r\n >\r\n <span\r\n class=\"text-primary font-weight-bolder\"\r\n id=\"kt_dashboard_daterangepicker_date\"\r\n >Aug 16</span\r\n >\r\n </a>\r\n <!--end::Daterange-->\r\n </ng-container>\r\n\r\n <!--begin::Dropdown-->\r\n </div>\r\n <!--end::Toolbar-->\r\n <div\r\n class=\"dropdown dropdown-inline my-2 my-lg-0\"\r\n data-toggle=\"tooltip\"\r\n title=\"Quick actions\"\r\n data-placement=\"left\"\r\n placement=\"bottom-right\"\r\n ngbDropdown\r\n >\r\n <a\r\n class=\"btn btn-primary btn-icon cursor-pointer\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n ngbDropdownToggle\r\n >\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/General/Settings-2.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-md\"\r\n ></span>\r\n </a>\r\n <div\r\n class=\"dropdown-menu p-0 sm-0 dropdown-menu-md dropdown-menu-right\"\r\n ngbDropdownMenu\r\n >\r\n <app-dropdown-menu1></app-dropdown-menu1>\r\n </div>\r\n </div>\r\n <!--end::Dropdown-->\r\n </div>\r\n</div>\r\n<!--end::Subheader-->\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BreadcrumbItemModel } from '../_models/breadcrumb-item.model';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\nimport { SubheaderService } from '../_services/subheader.service';\r\n\r\n@Component({\r\n selector: 'app-subheader2',\r\n templateUrl: './subheader2.component.html',\r\n})\r\nexport class Subheader2Component implements OnInit {\r\n subheaderCSSClasses = '';\r\n subheaderContainerCSSClasses = '';\r\n subheaderMobileToggle = false;\r\n subheaderDisplayDesc = false;\r\n subheaderDisplayDaterangepicker = false;\r\n title$: Observable<string>;\r\n breadcrumbs$: Observable<BreadcrumbItemModel[]>;\r\n description$: Observable<string>;\r\n\r\n constructor(\r\n private layout: LayoutService,\r\n private subheader: SubheaderService\r\n ) {\r\n this.title$ = this.subheader.titleSubject.asObservable();\r\n this.breadcrumbs$ = this.subheader.breadCrumbsSubject.asObservable();\r\n this.description$ = this.subheader.descriptionSubject.asObservable();\r\n }\r\n\r\n ngOnInit() {\r\n this.subheaderCSSClasses = this.layout.getStringCSSClasses('subheader');\r\n this.subheaderContainerCSSClasses = this.layout.getStringCSSClasses(\r\n 'subheader_container'\r\n );\r\n this.subheaderMobileToggle = this.layout.getProp('subheader.mobileToggle');\r\n this.subheaderDisplayDesc = this.layout.getProp('subheader.displayDesc');\r\n this.subheaderDisplayDaterangepicker = this.layout.getProp(\r\n 'subheader.displayDaterangepicker'\r\n );\r\n }\r\n}\r\n","<!--begin::Subheader-->\r\n<div\r\n class=\"subheader py-2 py-lg-4\"\r\n id=\"kt_subheader\"\r\n [ngClass]=\"subheaderCSSClasses\"\r\n>\r\n <div\r\n [ngClass]=\"subheaderContainerCSSClasses\"\r\n class=\"d-flex align-items-center justify-content-between flex-wrap flex-sm-nowrap\"\r\n >\r\n <!--begin::Info-->\r\n <div class=\"d-flex align-items-center flex-wrap mr-2\">\r\n <ng-container *ngIf=\"subheaderMobileToggle\">\r\n <!--begin::Mobile Toggle-->\r\n <button\r\n class=\"burger-icon burger-icon-left mr-4 d-inline-block d-lg-none\"\r\n id=\"kt_subheader_mobile_toggle\"\r\n >\r\n <span></span>\r\n </button>\r\n <!--end::Mobile Toggle-->\r\n </ng-container>\r\n\r\n <!--begin::Page Title-->\r\n <ng-container *ngIf=\"title$ | async as _title\">\r\n <h5 class=\"text-dark font-weight-bold mt-2 mb-2 mr-5\">\r\n {{ _title }}\r\n <ng-container *ngIf=\"subheaderDisplayDesc\">\r\n <ng-container *ngIf=\"description$ | async as _description\">\r\n <small>{{ _description }}</small>\r\n </ng-container>\r\n </ng-container>\r\n </h5>\r\n </ng-container>\r\n <!--end::Page Title-->\r\n\r\n <!--begin::Actions-->\r\n <div\r\n class=\"subheader-separator subheader-separator-ver mt-2 mb-2 mr-4 bg-gray-200\"\r\n ></div>\r\n\r\n <span class=\"text-muted font-weight-bold mr-4\">#XRS-45670</span>\r\n\r\n <a class=\"btn btn-light-warning font-weight-bolder btn-sm cursor-pointer\">\r\n Add New\r\n </a>\r\n <!--end::Actions-->\r\n </div>\r\n <!--end::Info-->\r\n\r\n <!--begin::Toolbar-->\r\n <div class=\"d-flex align-items-center\">\r\n <!--begin::Actions-->\r\n <a\r\n class=\"btn btn-clean btn-sm font-weight-bold font-size-base mr-1 cursor-pointer\"\r\n >\r\n Today\r\n </a>\r\n <a\r\n class=\"btn btn-clean btn-sm font-weight-bold font-size-base mr-1 cursor-pointer\"\r\n >\r\n Month\r\n </a>\r\n <a\r\n class=\"btn btn-clean btn-sm font-weight-bold font-size-base mr-1 cursor-pointer\"\r\n >\r\n Year\r\n </a>\r\n <!--end::Actions-->\r\n\r\n <ng-container *ngIf=\"subheaderDisplayDaterangepicker\">\r\n <!--begin::Daterange-->\r\n <a\r\n class=\"btn btn-sm btn-light font-weight-bold mr-2 cursor-pointer\"\r\n id=\"kt_dashboard_daterangepicker\"\r\n data-toggle=\"tooltip\"\r\n title=\"Select dashboard daterange\"\r\n data-placement=\"left\"\r\n >\r\n <span\r\n class=\"text-muted font-size-base font-weight-bold mr-2\"\r\n id=\"kt_dashboard_daterangepicker_title\"\r\n >Today</span\r\n >\r\n <span\r\n class=\"text-primary font-size-base font-weight-bolder\"\r\n id=\"kt_dashboard_daterangepicker_date\"\r\n >Aug 16</span\r\n >\r\n </a>\r\n <!--end::Daterange-->\r\n </ng-container>\r\n\r\n <!--begin::Dropdowns-->\r\n <div\r\n class=\"dropdown dropdown-inline\"\r\n data-toggle=\"tooltip\"\r\n title=\"Quick actions\"\r\n data-placement=\"left\"\r\n placement=\"bottom-right\"\r\n ngbDropdown\r\n >\r\n <a\r\n class=\"btn btn-sm btn-clean btn-icon cursor-pointer\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n ngbDropdownToggle\r\n >\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/Files/File-plus.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-success svg-icon-lg\"\r\n ></span>\r\n </a>\r\n <div\r\n ngbDropdownMenu\r\n class=\"dropdown-menu p-0 m-0 dropdown-menu-md dropdown-menu-right py-3\"\r\n >\r\n <app-dropdown-menu4></app-dropdown-menu4>\r\n </div>\r\n </div>\r\n <!--end::Dropdowns-->\r\n </div>\r\n <!--end::Toolbar-->\r\n </div>\r\n</div>\r\n<!--end::Subheader-->\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BreadcrumbItemModel } from '../_models/breadcrumb-item.model';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\nimport { SubheaderService } from '../_services/subheader.service';\r\n\r\n@Component({\r\n selector: 'app-subheader3',\r\n templateUrl: './subheader3.component.html',\r\n})\r\nexport class Subheader3Component implements OnInit {\r\n subheaderCSSClasses = '';\r\n subheaderContainerCSSClasses = '';\r\n subheaderMobileToggle = false;\r\n subheaderDisplayDesc = false;\r\n subheaderDisplayDaterangepicker = false;\r\n title$: Observable<string>;\r\n breadcrumbs$: Observable<BreadcrumbItemModel[]>;\r\n description$: Observable<string>;\r\n\r\n constructor(\r\n private layout: LayoutService,\r\n private subheader: SubheaderService\r\n ) {\r\n this.title$ = this.subheader.titleSubject.asObservable();\r\n this.breadcrumbs$ = this.subheader.breadCrumbsSubject.asObservable();\r\n this.description$ = this.subheader.descriptionSubject.asObservable();\r\n }\r\n\r\n ngOnInit() {\r\n this.subheaderCSSClasses = this.layout.getStringCSSClasses('subheader');\r\n this.subheaderContainerCSSClasses = this.layout.getStringCSSClasses(\r\n 'subheader_container'\r\n );\r\n this.subheaderMobileToggle = this.layout.getProp('subheader.mobileToggle');\r\n this.subheaderDisplayDesc = this.layout.getProp('subheader.displayDesc');\r\n this.subheaderDisplayDaterangepicker = this.layout.getProp(\r\n 'subheader.displayDaterangepicker'\r\n );\r\n }\r\n}\r\n","<!--begin::Subheader-->\r\n<div\r\n class=\"subheader py-2 py-lg-4\"\r\n id=\"kt_subheader\"\r\n [ngClass]=\"subheaderCSSClasses\"\r\n>\r\n <div\r\n [ngClass]=\"subheaderContainerCSSClasses\"\r\n class=\"d-flex align-items-center justify-content-between flex-wrap flex-sm-nowrap\"\r\n >\r\n <!--begin::Info-->\r\n <div class=\"d-flex align-items-center flex-wrap mr-2\">\r\n <ng-container *ngIf=\"subheaderMobileToggle\">\r\n <!--begin::Mobile Toggle-->\r\n <button\r\n class=\"burger-icon burger-icon-left mr-4 d-inline-block d-lg-none\"\r\n id=\"kt_subheader_mobile_toggle\"\r\n >\r\n <span></span>\r\n </button>\r\n <!--end::Mobile Toggle-->\r\n </ng-container>\r\n\r\n <!--begin::Actions-->\r\n <a\r\n class=\"btn btn-light-danger font-weight-bolder btn-sm mr-2 cursor-pointer\"\r\n >\r\n Reports\r\n </a>\r\n <a\r\n class=\"btn btn-light-success font-weight-bolder btn-sm mr-2 cursor-pointer\"\r\n >\r\n Import\r\n </a>\r\n <!--end::Actions-->\r\n\r\n <!--begin::Inputs-->\r\n <div class=\"input-group input-group-sm input-group-solid max-w-175px\">\r\n <input type=\"text\" class=\"form-control pl-4\" placeholder=\"Search...\" />\r\n <div class=\"input-group-append\">\r\n <span class=\"input-group-text\">\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/General/Search.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-md\"\r\n ></span>\r\n </span>\r\n </div>\r\n </div>\r\n <!--end::Inputs-->\r\n </div>\r\n <!--end::Info-->\r\n\r\n <!--begin::Toolbar-->\r\n <div class=\"d-flex align-items-center\">\r\n <ng-container *ngIf=\"subheaderDisplayDaterangepicker\">\r\n <!--begin::Daterange-->\r\n <a\r\n class=\"btn btn-light btn-sm font-weight-bold mr-2 cursor-pointer\"\r\n id=\"kt_dashboard_daterangepicker\"\r\n data-toggle=\"tooltip\"\r\n title=\"Select dashboard daterange\"\r\n data-placement=\"left\"\r\n >\r\n <span\r\n class=\"text-muted font-weight-bold mr-2\"\r\n id=\"kt_dashboard_daterangepicker_title\"\r\n >Today</span\r\n >\r\n <span\r\n class=\"text-primary font-weight-bold\"\r\n id=\"kt_dashboard_daterangepicker_date\"\r\n >Aug 16</span\r\n >\r\n <span\r\n [inlineSVG]=\"\r\n './assets/media/svg/icons/Communication/Chat-check.svg'\r\n \"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-sm svg-icon-primary ml-1\"\r\n ></span>\r\n </a>\r\n <!--end::Daterange-->\r\n </ng-container>\r\n\r\n <!--begin::Actions-->\r\n <a\r\n class=\"btn btn-light btn-hover-primary btn-sm btn-icon mr-2 cursor-pointer\"\r\n >\r\n <i class=\"flaticon2-file text-muted\"></i>\r\n </a>\r\n <a\r\n class=\"btn btn-light btn-hover-primary btn-sm btn-icon mr-2 cursor-pointer\"\r\n >\r\n <i class=\"flaticon-download-1 text-muted\"></i>\r\n </a>\r\n <a\r\n class=\"btn btn-light btn-hover-primary btn-sm btn-icon mr-2 cursor-pointer\"\r\n >\r\n <i class=\"flaticon2-fax text-muted\"></i>\r\n </a>\r\n <a\r\n class=\"btn btn-light btn-hover-primary btn-sm btn-icon mr-2 cursor-pointer\"\r\n >\r\n <i class=\"flaticon2-settings text-muted\"></i>\r\n </a>\r\n <!--end::Actions-->\r\n\r\n <!--begin::Dropdowns-->\r\n <div\r\n class=\"dropdown dropdown-inline\"\r\n data-toggle=\"tooltip\"\r\n title=\"Quick actions\"\r\n data-placement=\"left\"\r\n placement=\"bottom-right\"\r\n ngbDropdown\r\n >\r\n <a\r\n class=\"btn btn-icon btn-light-primary btn-sm cursor-pointer\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n ngbDropdownToggle\r\n >\r\n <i class=\"ki ki-plus icon-1x\"></i>\r\n </a>\r\n <div\r\n ngbDropdownMenu\r\n class=\"dropdown-menu p-0 m-0 dropdown-menu-md dropdown-menu-right\"\r\n >\r\n <app-dropdown-menu2></app-dropdown-menu2>\r\n </div>\r\n </div>\r\n <!--end::Dropdowns-->\r\n </div>\r\n <!--end::Toolbar-->\r\n </div>\r\n</div>\r\n<!--end::Subheader-->\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BreadcrumbItemModel } from '../_models/breadcrumb-item.model';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\nimport { SubheaderService } from '../_services/subheader.service';\r\n\r\n@Component({\r\n selector: 'app-subheader4',\r\n templateUrl: './subheader4.component.html',\r\n})\r\nexport class Subheader4Component implements OnInit {\r\n subheaderCSSClasses = '';\r\n subheaderContainerCSSClasses = '';\r\n subheaderMobileToggle = false;\r\n subheaderDisplayDesc = false;\r\n subheaderDisplayDaterangepicker = false;\r\n title$: Observable<string>;\r\n breadcrumbs$: Observable<BreadcrumbItemModel[]>;\r\n description$: Observable<string>;\r\n\r\n constructor(\r\n private layout: LayoutService,\r\n private subheader: SubheaderService\r\n ) {\r\n this.title$ = this.subheader.titleSubject.asObservable();\r\n this.breadcrumbs$ = this.subheader.breadCrumbsSubject.asObservable();\r\n this.description$ = this.subheader.descriptionSubject.asObservable();\r\n }\r\n\r\n ngOnInit() {\r\n this.subheaderCSSClasses = this.layout.getStringCSSClasses('subheader');\r\n this.subheaderContainerCSSClasses = this.layout.getStringCSSClasses(\r\n 'subheader_container'\r\n );\r\n this.subheaderMobileToggle = this.layout.getProp('subheader.mobileToggle');\r\n this.subheaderDisplayDesc = this.layout.getProp('subheader.displayDesc');\r\n this.subheaderDisplayDaterangepicker = this.layout.getProp(\r\n 'subheader.displayDaterangepicker'\r\n );\r\n }\r\n}\r\n","<!--begin::Subheader-->\r\n<div\r\n class=\"subheader py-2 py-lg-4\"\r\n [ngClass]=\"subheaderCSSClasses\"\r\n id=\"kt_subheader\"\r\n>\r\n <div\r\n [ngClass]=\"subheaderContainerCSSClasses\"\r\n class=\"d-flex align-items-center justify-content-between flex-wrap flex-sm-nowrap\"\r\n >\r\n <!--begin::Details-->\r\n <div class=\"d-flex align-items-center flex-wrap mr-2\">\r\n <ng-container *ngIf=\"subheaderMobileToggle\">\r\n <!--begin::Mobile Toggle-->\r\n <button\r\n class=\"burger-icon burger-icon-left mr-4 d-inline-block d-lg-none\"\r\n id=\"kt_subheader_mobile_toggle\"\r\n >\r\n <span></span>\r\n </button>\r\n <!--end::Mobile Toggle-->\r\n </ng-container>\r\n\r\n <!--begin::Title-->\r\n <ng-container *ngIf=\"title$ | async as _title\">\r\n <h5 class=\"text-dark font-weight-bold mt-2 mb-2 mr-5\">\r\n {{ _title }}\r\n </h5>\r\n </ng-container>\r\n <!--end::Title-->\r\n\r\n <!--begin::Separator-->\r\n <div\r\n class=\"subheader-separator subheader-separator-ver mt-2 mb-2 mr-5 bg-gray-200\"\r\n ></div>\r\n <!--end::Separator-->\r\n\r\n <!--begin::Search Form-->\r\n <div class=\"d-flex align-items-center\" id=\"kt_subheader_search\">\r\n <ng-container *ngIf=\"subheaderDisplayDesc\">\r\n <ng-container *ngIf=\"description$ | async as _description\">\r\n <span class=\"text-dark-50 font-weight-bold\" id=\"kt_subheader_total\">\r\n {{ _description }}</span\r\n >\r\n </ng-container>\r\n </ng-container>\r\n\r\n <form class=\"ml-5\">\r\n <div\r\n class=\"input-group input-group-sm input-group-solid\"\r\n style=\"max-width: 175px;\"\r\n >\r\n <input\r\n type=\"text\"\r\n class=\"form-control\"\r\n id=\"kt_subheader_search_form\"\r\n placeholder=\"Search...\"\r\n />\r\n <div class=\"input-group-append\">\r\n <span class=\"input-group-text\">\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/General/Search.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon\"\r\n ></span>\r\n <!--<i class=\"flaticon2-search-1 icon-sm\"></i>-->\r\n </span>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <!--end::Search Form-->\r\n </div>\r\n <!--end::Details-->\r\n\r\n <!--begin::Toolbar-->\r\n <div class=\"d-flex align-items-center\">\r\n <!--begin::Dropdown-->\r\n <div\r\n class=\"dropdown dropdown-inline\"\r\n data-toggle=\"tooltip\"\r\n title=\"Quick actions\"\r\n placement=\"bottom-right\"\r\n ngbDropdown\r\n >\r\n <a\r\n class=\"btn btn-icon cursor-pointer\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n ngbDropdownToggle\r\n >\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/Files/File-plus.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-success svg-icon-2x\"\r\n ></span>\r\n </a>\r\n <div\r\n class=\"dropdown-menu dropdown-menu-md dropdown-menu-right p-0 m-0\"\r\n ngbDropdownMenu\r\n >\r\n <app-dropdown-menu3></app-dropdown-menu3>\r\n </div>\r\n </div>\r\n <!--end::Dropdown-->\r\n </div>\r\n <!--end::Toolbar-->\r\n </div>\r\n</div>\r\n<!--end::Subheader-->\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BreadcrumbItemModel } from '../_models/breadcrumb-item.model';\r\nimport { SubheaderService } from '../_services/subheader.service';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\n\r\n@Component({\r\n selector: 'app-subheader5',\r\n templateUrl: './subheader5.component.html',\r\n})\r\nexport class Subheader5Component implements OnInit {\r\n subheaderCSSClasses = '';\r\n subheaderContainerCSSClasses = '';\r\n subheaderMobileToggle = false;\r\n subheaderDisplayDesc = false;\r\n subheaderDisplayDaterangepicker = false;\r\n title$: Observable<string>;\r\n breadcrumbs$: Observable<BreadcrumbItemModel[]>;\r\n description$: Observable<string>;\r\n\r\n constructor(\r\n private layout: LayoutService,\r\n private subheader: SubheaderService\r\n ) {\r\n this.title$ = this.subheader.titleSubject.asObservable();\r\n this.breadcrumbs$ = this.subheader.breadCrumbsSubject.asObservable();\r\n this.description$ = this.subheader.descriptionSubject.asObservable();\r\n }\r\n\r\n ngOnInit() {\r\n this.subheaderCSSClasses = this.layout.getStringCSSClasses('subheader');\r\n this.subheaderContainerCSSClasses = this.layout.getStringCSSClasses(\r\n 'subheader_container'\r\n );\r\n this.subheaderMobileToggle = this.layout.getProp('subheader.mobileToggle');\r\n this.subheaderDisplayDesc = this.layout.getProp('subheader.displayDesc');\r\n this.subheaderDisplayDaterangepicker = this.layout.getProp(\r\n 'subheader.displayDaterangepicker'\r\n );\r\n }\r\n}\r\n","<!--begin::Subheader-->\r\n<div\r\n class=\"subheader py-3 py-lg-8\"\r\n [ngClass]=\"subheaderCSSClasses\"\r\n id=\"kt_subheader\"\r\n>\r\n <div\r\n [ngClass]=\"subheaderContainerCSSClasses\"\r\n class=\"d-flex align-items-center justify-content-between flex-wrap flex-sm-nowrap\"\r\n >\r\n <!--begin::Info-->\r\n <div class=\"d-flex align-items-center mr-1\">\r\n <ng-container *ngIf=\"subheaderMobileToggle\">\r\n <!--begin::Mobile Toggle-->\r\n <button\r\n class=\"burger-icon burger-icon-left mr-4 d-inline-block d-lg-none\"\r\n id=\"kt_subheader_mobile_toggle\"\r\n >\r\n <span></span>\r\n </button>\r\n <!--end::Mobile Toggle-->\r\n </ng-container>\r\n\r\n <!--begin::Page Heading-->\r\n <div class=\"d-flex align-items-baseline flex-wrap mr-5\">\r\n <!--begin::Page Title-->\r\n <ng-container *ngIf=\"title$ | async as _title\">\r\n <h2\r\n class=\"d-flex align-items-center text-dark font-weight-bold my-1 mr-3\"\r\n >\r\n {{ _title }}\r\n <ng-container *ngIf=\"subheaderDisplayDesc\">\r\n <ng-container *ngIf=\"description$ | async as _description\">\r\n <small>{{ _description }}</small>\r\n </ng-container>\r\n </ng-container>\r\n </h2>\r\n </ng-container>\r\n <!--end::Page Title-->\r\n <!--begin::Breadcrumb-->\r\n <ul\r\n class=\"breadcrumb breadcrumb-transparent breadcrumb-dot font-weight-bold my-2 p-0\"\r\n >\r\n <li\r\n class=\"breadcrumb-item\"\r\n *ngFor=\"let bc of breadcrumbs$ | async\"\r\n routerLinkActive=\"active\"\r\n >\r\n <a [routerLink]=\"bc.linkPath\" class=\"text-muted\">\r\n {{ bc.linkText }}\r\n </a>\r\n </li>\r\n </ul>\r\n <!--end::Breadcrumb-->\r\n </div>\r\n <!--end::Page Heading-->\r\n </div>\r\n <!--end::Info-->\r\n\r\n <!--begin::Toolbar-->\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <!--begin::Button-->\r\n <a\r\n class=\"btn btn-primary btn-fixed-height font-weight-bold px-2 px-lg-5 mr-2\"\r\n >\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/Communication/Add-user.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-lg\"\r\n ></span>\r\n <span class=\"d-none d-md-inline\">New Member</span>\r\n </a>\r\n <!--end::Button-->\r\n\r\n <!--begin::Dropdown-->\r\n <div\r\n class=\"dropdown dropdown-inline\"\r\n data-toggle=\"tooltip\"\r\n title=\"Quick actions\"\r\n data-placement=\"left\"\r\n placement=\"bottom-right\"\r\n ngbDropdown\r\n >\r\n <a\r\n class=\"btn btn-primary btn-fixed-height font-weight-bold px-2 px-lg-5 mr-2\"\r\n data-toggle=\"dropdown\"\r\n aria-haspopup=\"true\"\r\n aria-expanded=\"false\"\r\n ngbDropdownToggle\r\n >\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/Files/File.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-lg\"\r\n ></span>\r\n <span class=\"d-none d-md-inline\">New Report</span>\r\n </a>\r\n <div\r\n class=\"dropdown-menu p-0 m-0 dropdown-menu-md dropdown-menu-right\"\r\n ngbDropdownMenu\r\n >\r\n <app-dropdown-menu1></app-dropdown-menu1>\r\n </div>\r\n </div>\r\n <!--end::Dropdown-->\r\n <!--begin::Button-->\r\n <a\r\n class=\"btn btn-primary btn-icon font-weight-bold\"\r\n data-toggle=\"modal\"\r\n data-target=\"#kt_chat_modal\"\r\n >\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/Communication/Group-chat.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-lg\"\r\n ></span>\r\n </a>\r\n <!--end::Button-->\r\n </div>\r\n <!--end::Toolbar-->\r\n </div>\r\n</div>\r\n<!--end::Subheader-->\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BreadcrumbItemModel } from '../_models/breadcrumb-item.model';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\nimport { SubheaderService } from '../_services/subheader.service';\r\n\r\n@Component({\r\n selector: 'app-subheader6',\r\n templateUrl: './subheader6.component.html',\r\n})\r\nexport class Subheader6Component implements OnInit {\r\n subheaderCSSClasses = '';\r\n subheaderContainerCSSClasses = '';\r\n subheaderMobileToggle = false;\r\n subheaderDisplayDesc = false;\r\n subheaderDisplayDaterangepicker = false;\r\n title$: Observable<string>;\r\n breadcrumbs$: Observable<BreadcrumbItemModel[]>;\r\n description$: Observable<string>;\r\n\r\n constructor(\r\n private layout: LayoutService,\r\n private subheader: SubheaderService\r\n ) {\r\n this.title$ = this.subheader.titleSubject.asObservable();\r\n this.breadcrumbs$ = this.subheader.breadCrumbsSubject.asObservable();\r\n this.description$ = this.subheader.descriptionSubject.asObservable();\r\n }\r\n\r\n ngOnInit() {\r\n this.subheaderCSSClasses = this.layout.getStringCSSClasses('subheader');\r\n this.subheaderContainerCSSClasses = this.layout.getStringCSSClasses(\r\n 'subheader_container'\r\n );\r\n this.subheaderMobileToggle = this.layout.getProp('subheader.mobileToggle');\r\n this.subheaderDisplayDesc = this.layout.getProp('subheader.displayDesc');\r\n this.subheaderDisplayDaterangepicker = this.layout.getProp(\r\n 'subheader.displayDaterangepicker'\r\n );\r\n }\r\n}\r\n","<!--begin::Subheader-->\r\n<div class=\"subheader py-2 py-lg-12\" [ngClass]=\"subheaderCSSClasses\" id=\"kt_subheader\">\r\n <div [ngClass]=\"subheaderContainerCSSClasses\"\r\n class=\"d-flex align-items-center justify-content-between flex-wrap flex-sm-nowrap\">\r\n <!--begin::Info-->\r\n <div class=\"d-flex align-items-center flex-wrap mr-1\">\r\n <ng-container *ngIf=\"subheaderMobileToggle\">\r\n <!--begin::Mobile Toggle-->\r\n <button class=\"burger-icon burger-icon-left mr-4 d-inline-block d-lg-none\" id=\"kt_subheader_mobile_toggle\">\r\n <span></span>\r\n </button>\r\n <!--end::Mobile Toggle-->\r\n </ng-container>\r\n\r\n <!--begin::Page Heading-->\r\n <div class=\"d-flex flex-column\">\r\n <!--begin::Page Title-->\r\n <ng-container *ngIf=\"title$ | async as _title\">\r\n <h2 class=\"text-white font-weight-bold my-2 mr-5\">\r\n {{ _title }}\r\n <ng-container *ngIf=\"subheaderDisplayDesc\">\r\n <ng-container *ngIf=\"description$ | async as _description\">\r\n <small>{{ _description }}</small>\r\n </ng-container>\r\n </ng-container>\r\n </h2>\r\n </ng-container>\r\n <!--end::Page Title-->\r\n <!--begin::Breadcrumb-->\r\n <ng-container *ngIf=\"breadcrumbs$ | async as breadcrumbs\">\r\n <div class=\"d-flex align-items-center font-weight-bold my-2\">\r\n <a href=\"/\" class=\"opacity-75 hover-opacity-100\">\r\n <i class=\"flaticon2-shelter text-white icon-1x\"></i>\r\n </a>\r\n <ng-container *ngFor=\"let bc of breadcrumbs\">\r\n <span class=\"label label-dot label-sm bg-white opacity-75 mx-3\"></span>\r\n <a [routerLink]=\"bc.linkPath\" routerLinkActive=\"active\"\r\n class=\"text-white text-hover-white opacity-75 hover-opacity-100\">\r\n {{ bc.linkText }}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <!--end::Breadcrumb-->\r\n </div>\r\n <!--end::Page Heading-->\r\n </div>\r\n <!--end::Info-->\r\n\r\n <!--begin::Toolbar-->\r\n <div class=\"d-flex align-items-center\">\r\n <!--begin::Button-->\r\n <a href=\"#\" class=\"btn btn-transparent-white font-weight-bold py-3 px-6 mr-2\">\r\n Reports\r\n </a>\r\n <!--end::Button-->\r\n\r\n <!--begin::Dropdown-->\r\n <div class=\"dropdown dropdown-inline ml-2\" data-toggle=\"tooltip\" title=\"Quick actions\" data-placement=\"left\"\r\n placement=\"bottom-right\" ngbDropdown>\r\n <a class=\"btn btn-white font-weight-bold py-3 px-6\" data-toggle=\"dropdown\" aria-haspopup=\"true\"\r\n aria-expanded=\"false\" ngbDropdownToggle>\r\n Actions\r\n </a>\r\n <div class=\"dropdown-menu p-0 m-0 dropdown-menu-md dropdown-menu-right\" ngbDropdownMenu>\r\n <app-dropdown-menu4></app-dropdown-menu4>\r\n </div>\r\n </div>\r\n <!--end::Dropdown-->\r\n </div>\r\n <!--end::Toolbar-->\r\n </div>\r\n</div>\r\n<!--end::Subheader-->","import { Component, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { BreadcrumbItemModel } from '../_models/breadcrumb-item.model';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\nimport { SubheaderService } from '../_services/subheader.service';\r\n\r\n@Component({\r\n selector: 'app-subheader7',\r\n templateUrl: './subheader7.component.html',\r\n})\r\nexport class Subheader7Component implements OnInit {\r\n subheaderCSSClasses = '';\r\n subheaderContainerCSSClasses = '';\r\n subheaderMobileToggle = false;\r\n subheaderDisplayDesc = false;\r\n subheaderDisplayDaterangepicker = false;\r\n title$: Observable<string>;\r\n breadcrumbs$: Observable<BreadcrumbItemModel[]>;\r\n description$: Observable<string>;\r\n\r\n constructor(\r\n private layout: LayoutService,\r\n private subheader: SubheaderService\r\n ) {\r\n this.title$ = this.subheader.titleSubject.asObservable();\r\n this.breadcrumbs$ = this.subheader.breadCrumbsSubject.asObservable();\r\n this.description$ = this.subheader.descriptionSubject.asObservable();\r\n }\r\n\r\n ngOnInit() {\r\n this.subheaderCSSClasses = this.layout.getStringCSSClasses('subheader');\r\n this.subheaderContainerCSSClasses = this.layout.getStringCSSClasses(\r\n 'subheader_container'\r\n );\r\n this.subheaderMobileToggle = this.layout.getProp('subheader.mobileToggle');\r\n this.subheaderDisplayDesc = this.layout.getProp('subheader.displayDesc');\r\n this.subheaderDisplayDaterangepicker = this.layout.getProp(\r\n 'subheader.displayDaterangepicker'\r\n );\r\n }\r\n}\r\n","<ng-container *ngIf=\"subheaderVersion$ | async as _version\">\r\n <ng-container *ngIf=\"_version === 'v1'\">\r\n <app-subheader1></app-subheader1>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"_version === 'v2'\">\r\n <app-subheader2></app-subheader2>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"_version === 'v3'\">\r\n <app-subheader3></app-subheader3>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"_version === 'v4'\">\r\n <app-subheader4></app-subheader4>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"_version === 'v5'\">\r\n <app-subheader5></app-subheader5>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"_version === 'v6'\">\r\n <app-subheader6></app-subheader6>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"_version === 'v7'\">\r\n <app-subheader7></app-subheader7>\r\n </ng-container>\r\n</ng-container>","import { Component, OnInit, AfterViewInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { SubheaderService } from '../_services/subheader.service';\r\nimport { KTUtil } from '../../../../../../assets/js/components/util';\r\nimport KTLayoutSubheader from '../../../../../../assets/js/layout/base/subheader';\r\nimport { Router, ResolveEnd } from '@angular/router';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-subheader-wrapper',\r\n templateUrl: './subheader-wrapper.component.html',\r\n})\r\nexport class SubheaderWrapperComponent implements OnInit, AfterViewInit {\r\n subheaderVersion$: Observable<string>;\r\n constructor(private subheader: SubheaderService, private router: Router) {\r\n this.subheader.setDefaultSubheader();\r\n this.subheaderVersion$ = this.subheader.subheaderVersionSubject.asObservable();\r\n\r\n const initSubheader = () => {\r\n setTimeout(() => {\r\n this.subheader.updateAfterRouteChanges(this.router.url);\r\n }, 0);\r\n };\r\n\r\n initSubheader();\r\n // subscribe to router events\r\n this.router.events\r\n .pipe(filter((event) => event instanceof ResolveEnd))\r\n .subscribe(initSubheader);\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n ngAfterViewInit() {\r\n KTUtil.ready(() => {\r\n KTLayoutSubheader.init('kt_subheader');\r\n });\r\n }\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { CoreAuthService, CoreCpMainMenuModel, CoreCpMainMenuService, TokenInfoModel } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\n\r\n\r\nconst emptyMenuConfig = {\r\n items: []\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DynamicAsideMenuService implements OnDestroy {\r\n private menuConfigSubject = new BehaviorSubject<any>(emptyMenuConfig);\r\n menuConfig$: Observable<any>;\r\n constructor(\r\n private coreCpMainMenuService: CoreCpMainMenuService,\r\n public coreAuthService: CoreAuthService,\r\n private tokenHelper: TokenHelper,\r\n public translate: TranslateService,\r\n ) {\r\n this.menuConfig$ = this.menuConfigSubject.asObservable();\r\n this.setMenu([]);\r\n // this.loadMenu();\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n if (this.tokenInfo && this.tokenInfo.userId > 0 && this.tokenInfo.siteId > 0) {\r\n setTimeout(() => { this.DataGetCpMenu(); }, 1000);\r\n }\r\n });\r\n \r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.tokenInfo = next;\r\n if (this.tokenInfo && this.tokenInfo.userId > 0 && this.tokenInfo.siteId > 0) {\r\n setTimeout(() => { this.DataGetCpMenu(); }, 1000);\r\n }\r\n });\r\n }\r\n tokenInfo = new TokenInfoModel();\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n private setMenu(menuConfig) {\r\n this.menuConfigSubject.next(menuConfig);\r\n }\r\n\r\n private getMenu(): any {\r\n return this.menuConfigSubject.value;\r\n }\r\n DataGetCpMenu(): void {\r\n const menuItems: any = [{\r\n title:this.translate.instant( 'MENU.DASHBOARD'),\r\n root: true,\r\n icon: 'flaticon2-architecture-and-city',\r\n svg: './assets/media/svg/icons/Design/Layers.svg',\r\n page: '/dashboard',\r\n translate: this.translate.instant( 'MENU.DASHBOARD'),\r\n bullet: 'dot',\r\n }];\r\n this.coreCpMainMenuService.ServiceGetAllMenu(null).subscribe(\r\n (next) => {\r\n const list = [];\r\n next.listItems.forEach(element => {\r\n list.push(this.listItemAdd(element, true));\r\n });\r\n list.forEach(element => {\r\n menuItems.push(element);\r\n });\r\n this.setMenu(menuItems);\r\n } ,(error)=>{\r\n this.setMenu(menuItems);\r\n }\r\n );\r\n }\r\n listItemAdd(item: CoreCpMainMenuModel, rootStatus = false): any {\r\n let retOut: any;\r\n retOut = {\r\n title: item.titleML,\r\n root: rootStatus,\r\n page: (item.routeAddressLink?.length > 0) ? item.routeAddressLink : null,\r\n color: item.color,\r\n icon: item.icon,\r\n svg: '',\r\n };\r\n if (item.children && item.children.length > 0) {\r\n retOut.submenu = this.listItemsChildAdd(item);\r\n }\r\n return retOut;\r\n }\r\n listItemsChildAdd(item: CoreCpMainMenuModel): any {\r\n const list = [];\r\n if (item && item.children) {\r\n item.children.forEach(element => {\r\n list.push(this.listItemAdd(element));\r\n });\r\n }\r\n return list;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n}\r\n","<!--begin::Aside Menu-->\r\n<div class=\"aside-menu-wrapper flex-column-fluid\" id=\"kt_aside_menu_wrapper\">\r\n <!--begin::Menu Container-->\r\n <ng-container *ngIf=\"menuConfig\">\r\n <div id=\"kt_aside_menu\" class=\"aside-menu min-h-lg-800px\" [ngClass]=\"asideMenuCSSClasses\" data-menu-vertical=\"1\"\r\n [attr.data-menu-scroll]=\"asideMenuScroll\" [attr.data-menu-dropdown]=\"asideMenuDropdown\"\r\n data-menu-dropdown-timeout=\"500\">\r\n <!-- begin::Menu Nav -->\r\n <ul class=\"menu-nav\" [ngClass]=\"ulCSSClasses\">\r\n <ng-container *ngFor=\"let item of menuConfig\">\r\n <ng-container *ngIf=\"item.section\" [ngTemplateOutlet]=\"menuItemSectionTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: item }\"></ng-container>\r\n <ng-container *ngIf=\"item.separator\" [ngTemplateOutlet]=\"menuItemSeparatorTemplate\"></ng-container>\r\n <ng-container *ngIf=\"item.title\" [ngTemplateOutlet]=\"menu1LevelTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: item }\"></ng-container>\r\n </ng-container>\r\n </ul>\r\n <!-- end::Menu Nav -->\r\n </div>\r\n <!--end::Menu Container-->\r\n </ng-container>\r\n</div>\r\n<!--end::Aside Menu-->\r\n\r\n<!-- begin::1 Level -->\r\n<ng-template #menu1LevelTemplate let-item=\"item\">\r\n <!-- begin::if don't have submenu -->\r\n <ng-container *ngIf=\"!item.submenu\">\r\n <li class=\"menu-item\" aria-haspopup=\"true\" routerLinkActive=\"menu-item-active\">\r\n <a class=\"menu-link\" [routerLink]=\"item.page\" routerLinkActive=\"active\">\r\n <span *ngIf=\"item.svg && item.svg.length>0\" [inlineSVG]=\"item.svg\" cacheSVG=\"true\"\r\n class=\"svg-icon menu-icon\"></span>\r\n <i [ngClass]=\"item.icon\" [style.color]=\"item.color?.length>0 ? item.color:''\"\r\n aria-hidden=\"true\"><span></span></i> \r\n <span class=\"menu-text\" >{{\r\n item.title\r\n }}</span>\r\n </a>\r\n </li>\r\n </ng-container>\r\n <!-- end::if don't have submenu -->\r\n\r\n <!-- begin::if has submenu -->\r\n <ng-container *ngIf=\"item.submenu\">\r\n <li class=\"menu-item menu-item-submenu\" aria-haspopup=\"true\" data-menu-toggle=\"hover\"\r\n [ngClass]=\"{ 'menu-item-open': isMenuItemActive(item.page) }\" routerLinkActive=\"menu-item-open\">\r\n <a class=\"menu-link menu-toggle\" [routerLink]=\"item.page\" routerLinkActive=\"active\"\r\n [ngClass]=\"{ 'active ': isMenuItemActive(item.page) }\">\r\n <span *ngIf=\"item.svg && item.svg.length>0\" [inlineSVG]=\"item.svg\" cacheSVG=\"true\"\r\n class=\"svg-icon menu-icon\"></span>\r\n <i [ngClass]=\"item.icon\" [style.color]=\"item.color?.length>0 ? item.color:''\"\r\n aria-hidden=\"true\"><span></span></i> \r\n <span class=\"menu-text\" >{{\r\n item.title\r\n }}</span>\r\n <i class=\"menu-arrow\"></i>\r\n </a>\r\n <div class=\"menu-submenu\">\r\n <i class=\"menu-arrow\"></i>\r\n <ul class=\"menu-subnav\">\r\n <li class=\"menu-item menu-item-parent\" aria-haspopup=\"true\">\r\n <span class=\"menu-link\">\r\n <i [ngClass]=\"item.icon\" class=\"menu-bullet\" [style.color]=\"item.color?.length>0 ? item.color:''\" aria-hidden=\"true\"><span></span></i> \r\n <span class=\"menu-text\" >{{\r\n item.title\r\n }}</span>\r\n </span>\r\n </li>\r\n <ng-container *ngFor=\"let sub of item.submenu\" [ngTemplateOutlet]=\"menu2LevelTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: sub }\"></ng-container>\r\n </ul>\r\n </div>\r\n </li>\r\n </ng-container>\r\n <!-- end::if has submenu -->\r\n</ng-template>\r\n<!-- end::1 Level -->\r\n\r\n<!-- begin::2 Level -->\r\n<ng-template #menu2LevelTemplate let-item=\"item\">\r\n <!-- begin::if don't have submenu -->\r\n <ng-container *ngIf=\"!item.submenu\">\r\n <li class=\"menu-item\" routerLinkActive=\"menu-item-active\" aria-haspopup=\"true\" data-menu-toggle=\"hover\">\r\n <a class=\"menu-link\" [routerLink]=\"item.page\" routerLinkActive=\"active\">\r\n <i *ngIf=\"!item.icon || item.icon.length===0\" class=\"menu-bullet menu-bullet-dot\">\r\n <span></span>\r\n </i>\r\n <i [ngClass]=\"item.icon\" class=\"menu-bullet\" [style.color]=\"item.color?.length>0 ? item.color:''\" aria-hidden=\"true\"><span></span></i> \r\n <span class=\"menu-text\" >{{item.title}}</span>\r\n </a>\r\n </li>\r\n </ng-container>\r\n <!-- end::if don't have submenu -->\r\n\r\n <!-- begin::if has submenu -->\r\n <ng-container *ngIf=\"item.submenu\">\r\n <li class=\"menu-item menu-item-submenu\" aria-haspopup=\"true\" data-menu-toggle=\"hover\"\r\n [ngClass]=\"{ 'menu-item-open': isMenuItemActive(item.page) }\" routerLinkActive=\"menu-item-open\">\r\n <a class=\"menu-link menu-toggle\" [routerLink]=\"item.page\" [ngClass]=\"{ 'active ': isMenuItemActive(item.page) }\"\r\n routerLinkActive=\"active\">\r\n <i *ngIf=\"!item.icon || item.icon.length===0\" class=\"menu-bullet menu-bullet-dot\">\r\n <span></span>\r\n </i>\r\n <i [ngClass]=\"item.icon\" class=\"menu-bullet\" [style.color]=\"item.color?.length>0 ? item.color:''\" aria-hidden=\"true\"><span></span></i> \r\n <span class=\"menu-text\" >\r\n {{item.title}}\r\n </span>\r\n <i class=\"menu-arrow\"></i>\r\n </a>\r\n <div class=\"menu-submenu\">\r\n <i class=\"menu-arrow\"></i>\r\n <ul class=\"menu-subnav\">\r\n <!-- submenu-->\r\n <ng-container *ngFor=\"let sub of item.submenu\" [ngTemplateOutlet]=\"menu3LevelTemplate\"\r\n [ngTemplateOutletContext]=\"{ item: sub }\"></ng-container>\r\n </ul>\r\n </div>\r\n </li>\r\n </ng-container>\r\n <!-- end::if has submenu -->\r\n</ng-template>\r\n<!-- end::2 Level -->\r\n\r\n<!-- begin::3 Level -->\r\n<ng-template #menu3LevelTemplate let-item=\"item\">\r\n <li class=\"menu-item\" aria-haspopup=\"true\" routerLinkActive=\"menu-item-active\">\r\n <a class=\"menu-link\" [routerLink]=\"item.page\" routerLinkActive=\"active\">\r\n <i *ngIf=\"!item.icon || item.icon.length===0\" class=\"menu-bullet menu-bullet-dot\">\r\n <span></span>\r\n </i>\r\n <i [ngClass]=\"item.icon\" class=\"menu-bullet\" [style.color]=\"item.color?.length>0 ? item.color:''\" aria-hidden=\"true\">\r\n <span></span>\r\n </i> \r\n <span class=\"menu-text\" >{{\r\n item.title\r\n }}</span>\r\n </a>\r\n </li>\r\n</ng-template>\r\n<!-- end::3 Level -->\r\n\r\n<!-- begin::Separator -->\r\n<ng-template #menuItemSeparatorTemplate>\r\n <li class=\"menu-separator\"><span></span></li>\r\n</ng-template>\r\n<!-- end::3 Separator -->\r\n\r\n<!-- begin::Section -->\r\n<ng-template #menuItemSectionTemplate let-item=\"item\">\r\n <li class=\"menu-section\">\r\n <h4 class=\"menu-text\" >{{ item.section }}</h4>\r\n <i class=\"menu-icon flaticon-more-v2\"></i>\r\n </li>\r\n</ng-template>\r\n<!-- end::Section -->","import { Component, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\nimport { NtkCmsApiStoreService, TokenInfoModel } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { DynamicAsideMenuService } from 'src/app/core/services/dynamic-aside-menu.service';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-aside-dynamic',\r\n templateUrl: './aside-dynamic.component.html',\r\n styleUrls: ['./aside-dynamic.component.scss']\r\n})\r\nexport class AsideDynamicComponent implements OnInit, OnDestroy {\r\n\r\n\r\n constructor(\r\n private layout: LayoutService,\r\n private router: Router,\r\n private menu: DynamicAsideMenuService,\r\n private tokenHelper: TokenHelper,\r\n private cdr: ChangeDetectorRef) {\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n });\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((value) => {\r\n this.tokenInfo = value;\r\n this.cdr.detectChanges();\r\n });\r\n\r\n }\r\n tokenInfo: TokenInfoModel;\r\n menuConfig: any;\r\n subscriptions: Subscription[] = [];\r\n\r\n disableAsideSelfDisplay: boolean;\r\n headerLogo: string;\r\n brandSkin: string;\r\n ulCSSClasses: string;\r\n asideMenuHTMLAttributes: any = {};\r\n asideMenuCSSClasses: string;\r\n asideMenuDropdown;\r\n brandClasses: string;\r\n asideMenuScroll = 1;\r\n asideSelfMinimizeToggle = false;\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n currentUrl: string;\r\n ngOnInit(): void {\r\n // load view settings\r\n this.disableAsideSelfDisplay =\r\n this.layout.getProp('aside.self.display') === false;\r\n this.brandSkin = this.layout.getProp('brand.self.theme');\r\n this.headerLogo = this.getLogo();\r\n this.ulCSSClasses = this.layout.getProp('aside_menu_nav');\r\n this.asideMenuCSSClasses = this.layout.getStringCSSClasses('aside_menu');\r\n this.asideMenuHTMLAttributes = this.layout.getHTMLAttributes('aside_menu');\r\n this.asideMenuDropdown = this.layout.getProp('aside.menu.dropdown') ? '1' : '0';\r\n this.brandClasses = this.layout.getProp('brand');\r\n this.asideSelfMinimizeToggle = this.layout.getProp(\r\n 'aside.self.minimize.toggle'\r\n );\r\n this.asideMenuScroll = this.layout.getProp('aside.menu.scroll') ? 1 : 0;\r\n this.asideMenuCSSClasses = `${this.asideMenuCSSClasses} ${this.asideMenuScroll === 1 ? 'scroll my-4 ps ps--active-y' : ''}`;\r\n\r\n // router subscription\r\n this.currentUrl = this.router.url.split(/[?#]/)[0];\r\n const routerSubscr = this.router.events.pipe(\r\n filter(event => event instanceof NavigationEnd)\r\n ).subscribe((event) => {\r\n this.currentUrl = event['url'];\r\n this.cdr.detectChanges();\r\n });\r\n this.subscriptions.push(routerSubscr);\r\n\r\n // menu load\r\n const menuSubscr = this.menu.menuConfig$.subscribe(res => {\r\n this.menuConfig = res;\r\n this.cdr.detectChanges();\r\n });\r\n this.subscriptions.push(menuSubscr);\r\n }\r\n\r\n private getLogo() {\r\n if (this.brandSkin === 'light') {\r\n return './assets/media/logos/logo-dark.png';\r\n } else {\r\n return './assets/media/logos/logo-light.png';\r\n }\r\n }\r\n\r\n isMenuItemActive(path) {\r\n if (!this.currentUrl || !path) {\r\n return false;\r\n }\r\n\r\n if (this.currentUrl === path) {\r\n return true;\r\n }\r\n\r\n if (this.currentUrl.indexOf(path) > -1) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n this.subscriptions.forEach(sb => sb.unsubscribe());\r\n }\r\n}\r\n","<app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n<!-- compact -->\r\n<ng-container *ngIf=\"footerLayout === 'compact'\">\r\n <!--begin::Container-->\r\n <div [ngClass]=\"footerContainerCSSClasses\"\r\n class=\"d-flex flex-column flex-md-row align-items-center justify-content-between\">\r\n <!--begin::Copyright-->\r\n <div class=\"text-dark order-2 order-md-1\">\r\n <span class=\"text-muted font-weight-bold mr-2\">{{ currentYear }} ©</span>\r\n <a href=\"https://ntk.ir\" target=\"_blank\" class=\"text-dark-75 text-hover-primary\">NTK co</a>\r\n </div>\r\n <div class=\"text-dark order-2 order-md-1\">\r\n ver: {{this.publicHelper.appClientVersion}} /{{this.publicHelper.appServerVersion}}\r\n </div>\r\n <!--end::Copyright-->\r\n\r\n <!--begin::Nav-->\r\n <div class=\"nav nav-dark order-1 order-md-2\">\r\n <a href=\"https://ntk.ir\" target=\"_blank\" class=\"nav-link pr-3 pl-0\">About</a>\r\n <a href=\"https://ntk.ir\" target=\"_blank\" class=\"nav-link px-3\">Team</a>\r\n <a routerLink=\"/ticketing/contactus\" class=\"nav-link pl-3 pr-0\">Contact</a>\r\n </div>\r\n <!--end::Nav-->\r\n </div>\r\n <!--end::Container-->\r\n</ng-container>\r\n<!-- extended -->\r\n<ng-container *ngIf=\"footerLayout === 'extended'\">\r\n <!--begin::Container-->\r\n <div [ngClass]=\"footerContainerCSSClasses\" class=\"container py-lg-18 py-8\">\r\n <!--begin::Row-->\r\n <div class=\"row\">\r\n <!--begin::Col-->\r\n <div class=\"col-lg-4 my-lg-0 my-5\">\r\n <h4 class=\"text-white pb-3\">{{'ACTION.ABOUT' | translate}}</h4>\r\n <p class=\"m-0 text-white opacity-45\">\r\n به منظور بهره گیری هر Ú†Ù‡ بیشتر Ùˆ برداشتن گامهای عملی در راستای ارائه راهکار برای کاربردی نمودن مباØØ« تخصصی\r\n صنعت Ø¢ÛŒ تی Ùˆ تبلیغات در ایران سایت شرکت نگین تجارت کاروی پایه گذاری شد Ùˆ با عنایت به اهمیت روزاÙزون زمینه های\r\n کاربردی Ùنآوری اطلاعات Ùˆ نقش بسیار مؤثر آن درØÙ„ معضلات Ùˆ چالشهای موجود Ùˆ در راستای تامین نیازهای تبلیغاتی Ùˆ\r\n سیستم های اطلاع رسانی جامعه از این بازار جدید، جایگاه این سیستم اطلاع رسانی Ùارسی در راستای اقتدار ملی Ùˆ توسعه\r\n صنعت Ø¢ÛŒ تی در کشور Ùˆ مشتریان بالقوه Ùˆ خدمات ایرانیان در سرتاسر دنیا این کنسرسیوم با Ù…Øوریت مجموعه شرکت نگین\r\n تجارت کاروی Ø´Ú©Ù„ گرÙت.\r\n </p>\r\n </div>\r\n <!--end::Col-->\r\n\r\n <!--begin::Col-->\r\n <div class=\"col-lg-4 my-lg-0 my-5\">\r\n <h4 class=\"text-white pb-3\">{{'ACTION.QUICKLINKS' | translate}}</h4>\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"d-flex flex-column mr-18\">\r\n <a href=\"#\" class=\"text-white opacity-55 text-hover-primary\">{{'ACTION.GENERALREPORTS' | translate}}</a>\r\n <a href=\"#\"\r\n class=\"py-2 text-white opacity-55 text-hover-primary\">{{'ACTION.DASHBOARDWIDGETS' | translate}}</a>\r\n <a href=\"#\" class=\"text-white opacity-50 text-hover-primary\">{{'ACTION.CUSTOMPAGES' | translate}}</a>\r\n </div>\r\n <div class=\"d-flex flex-column\">\r\n <a href=\"#\" class=\"text-white opacity-55 text-hover-primary\">{{'ACTION.USERSETTING' | translate}}</a>\r\n <a href=\"#\" class=\"py-2 text-white opacity-55 text-hover-primary\">{{'ACTION.CUSTOMPAGES' | translate}}</a>\r\n <a href=\"#\" class=\"text-white opacity-55 text-hover-primary\">{{'ACTION.INTRANETSETTING' | translate}}</a>\r\n </div>\r\n </div>\r\n </div>\r\n <!--end::Col-->\r\n\r\n <!--begin::Col-->\r\n <div class=\"col-lg-4 my-lg-0 my-5\">\r\n <h4 class=\"text-white pb-3\">{{'ACTION.GETINTOUCH' | translate}}</h4>\r\n <form class=\"rounded\" style=\"background-color: rgba(0, 0, 0, 0.2)\">\r\n <div class=\"input-group p-2 align-items-center\">\r\n <input type=\"text\" class=\"form-control rounded-right border-0 bg-transparent text-white opacity-80\"\r\n placeholder=\"{{'ACTION.ENTERYOUREMAIL' | translate}}\" />\r\n <div class=\"input-group-append p-0 mr-1\">\r\n <button class=\"btn btn-fh btn-sm btn-primary px-6 rounded-left\" type=\"button\">\r\n {{'ACTION.SEND' | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n <!--end::Col-->\r\n </div>\r\n <!--end::Row-->\r\n </div>\r\n <!--end::Container-->\r\n\r\n <!--begin::Container-->\r\n <div class=\"separator separator-solid opacity-7\"></div>\r\n <!--end::Container-->\r\n\r\n <!--begin::Container-->\r\n <div class=\"container py-8\" [ngClass]=\"footerContainerCSSClasses\">\r\n <div class=\"d-flex align-items-center justify-content-between flex-lg-row flex-column\">\r\n <!--begin::Copyright-->\r\n <div class=\"d-flex align-items-center order-lg-1 order-2\">\r\n <img alt=\"Logo\" src=\"./assets/media/logos/logo-letter-1.png\" class=\"logo-sticky max-h-35px\" />\r\n <span class=\"text-muted font-weight-bold mx-2\">{{ currentYear }} ©</span>\r\n <a href=\"https://ntk.ir\" target=\"_blank\" class=\"text-primary text-hover-primary\">NTK co</a>\r\n </div>\r\n <div class=\"text-dark order-2 order-md-1\">\r\n ver: {{this.publicHelper.appClientVersion}} /{{this.publicHelper.appServerVersion}}\r\n </div>\r\n <!--end::Copyright-->\r\n\r\n <!--begin::Nav-->\r\n <div class=\"d-flex align-items-center order-lg-2 order-1 mb-lg-0 mb-5\">\r\n <a href=\"https://ntk.ir\" target=\"_blank\"\r\n class=\"text-white opacity-55 pl-0 text-hover-primary\">{{'ACTION.PURCHASELISECSE' | translate}}</a>\r\n <a href=\"https://ntk.ir\" target=\"_blank\"\r\n class=\"text-white opacity-55 px-6 text-hover-primary\">{{'ACTION.TEAM' | translate}}</a>\r\n <a href=\"https://ntk.ir\" target=\"_blank\"\r\n class=\"text-white opacity-55 pr-0 text-hover-primary\">{{'ACTION.CONTACT' | translate}}</a>\r\n </div>\r\n <!--end::Nav-->\r\n </div>\r\n </div>\r\n <!--end::Container-->\r\n</ng-container>","import { Component, OnInit, AfterViewInit, ChangeDetectorRef } from '@angular/core';\r\n//\r\nimport KTLayoutFooter from '../../../../../assets/js/layout/base/footer';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { CoreConfigurationService } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\n\r\n@Component({\r\n selector: 'app-footer',\r\n templateUrl: './footer.component.html',\r\n})\r\nexport class FooterComponent implements OnInit, AfterViewInit {\r\n footerContainerCSSClasses: string;\r\n currentYear: string;\r\n footerLayout: string;\r\n\r\n constructor(\r\n private configService: CoreConfigurationService,\r\n private layout: LayoutService,\r\n private cdr: ChangeDetectorRef,\r\n private cmsToastrService: CmsToastrService,\r\n public translate: TranslateService,\r\n public publicHelper: PublicHelper) {\r\n this.loading.cdr = this.cdr;this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n const currentDate = new Date();\r\n this.currentYear = currentDate.getFullYear().toString();\r\n this.publicHelper.appServerVersion\r\n }\r\n loading = new ProgressSpinnerModel();\r\n\r\n ngOnInit(): void {\r\n this.footerContainerCSSClasses = this.layout.getStringCSSClasses(\r\n 'footer_container'\r\n );\r\n this.footerLayout = this.layout.getProp('footer.layout');\r\n this.GetServiceVer();\r\n }\r\n\r\n ngAfterViewInit() {\r\n // Init Footer\r\n KTLayoutFooter.init('kt_footer');\r\n }\r\n GetServiceVer(): void {\r\n const pName = this.constructor.name + 'ServiceIp';\r\n this.loading.Start(pName, 'دریاÙت اطلاعات سرور');\r\n this.configService.ServiceIp().subscribe(\r\n async (next) => {\r\n this.publicHelper.appServerVersion=next.appVersion\r\n this.loading.Stop(pName);\r\n },\r\n (error) => {\r\n this.cmsToastrService.typeErrorGetOne(error);\r\n this.loading.Stop(pName);\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit } from '@angular/core';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-search-offcanvas',\r\n templateUrl: './search-offcanvas.component.html',\r\n})\r\nexport class SearchOffcanvasComponent implements OnInit {\r\n extrasSearchOffcanvasDirectionCSSClass: string;\r\n constructor(private layout: LayoutService) { }\r\n\r\n ngOnInit(): void {\r\n this.extrasSearchOffcanvasDirectionCSSClass = `offcanvas-${this.layout.getProp('extras.search.offcanvas.direction')}`;\r\n }\r\n}\r\n","<!--begin::Search Panel-->\r\n<div\r\n id=\"kt_quick_search\" \r\n class=\"offcanvas p-10\"\r\n [ngClass]=\"extrasSearchOffcanvasDirectionCSSClass\">\r\n <!--begin::Header-->\r\n <div class=\"offcanvas-header d-flex align-items-center justify-content-between mb-5\">\r\n\t\t<h3 class=\"font-weight-bold m-0\">\r\n\t\t\tSearch\r\n\t\t\t<small class=\"text-muted font-size-sm ml-2\">files, reports, members</small>\r\n\t\t</h3>\r\n\t\t<a href=\"#\" class=\"btn btn-xs btn-icon btn-light btn-hover-primary\" id=\"kt_quick_search_close\">\r\n\t\t\t<i class=\"ki ki-close icon-xs text-muted\"></i>\r\n\t\t</a>\r\n\t</div>\r\n <!--end::Header-->\r\n \r\n <!--begin::Content-->\r\n <div class=\"offcanvas-content\">\r\n\t\t<!--begin::Container-->\r\n\t\t<div class=\"quick-search quick-search-offcanvas quick-search-has-result\" id=\"kt_quick_search_offcanvas\">\r\n\t\t\t<!--begin::Form-->\r\n\t\t\t<form method=\"get\" class=\"quick-search-form border-bottom pt-5 pb-1\">\r\n\t\t\t\t<div class=\"input-group\">\r\n\t\t\t\t\t<div class=\"input-group-prepend\">\r\n\t\t\t\t\t\t<span class=\"input-group-text\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/General/Search.svg'\" cacheSVG=\"true\" class=\"svg-icon svg-icon-lg\"></span>\r\n </span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<input type=\"text\" class=\"form-control \" placeholder=\"Search...\"/>\r\n\t\t\t\t\t<div class=\"input-group-append\">\r\n\t\t\t\t\t\t<span class=\"input-group-text\">\r\n <i class=\"quick-search-close ki ki-close icon-sm text-muted\"></i>\r\n </span>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</form>\r\n\t\t\t<!--end::Form-->\r\n\r\n\t\t\t<!--begin::Wrapper-->\r\n\t\t\t<div class=\"quick-search-wrapper pt-5\">\r\n\t\t\t\t<div class=\"quick-search-result\">\r\n\t\t\t\t\t<!--begin::Message-->\r\n\t\t\t\t\t<div class=\"text-muted d-none\">\r\n\t\t\t\t\t\tNo record found\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!--end::Message-->\r\n\r\n\t\t\t\t\t<!--begin::Section-->\r\n\t\t\t\t\t<div class=\"font-size-sm text-primary font-weight-bolder text-uppercase mb-2\">\r\n\t\t\t\t\t\tDocuments\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"mb-10\">\r\n\t\t\t\t\t\t<!--begin::Item-->\r\n\t\t\t\t\t\t<div class=\"d-flex align-items-center flex-grow-1 mb-2\">\r\n\t\t\t\t\t\t\t<div class=\"symbol symbol-30 bg-transparent flex-shrink-0\">\r\n\t\t\t\t\t\t\t\t<img src=\"./assets/media/svg/files/doc.svg\" alt=\"\"/>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"d-flex flex-column ml-3 mt-2 mb-2\">\r\n\t\t\t\t\t\t\t\t<a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n\t\t\t\t\t\t\t\t\tAirPlus Requirements\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<span class=\"font-size-sm font-weight-bold text-muted\">\r\n\t\t\t\t\t\t\t\t\tby Grog John\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<!--end::Item-->\r\n\r\n\t\t\t\t\t\t<!--begin::Item-->\r\n\t\t\t\t\t\t<div class=\"d-flex align-items-center flex-grow-1 mb-2\">\r\n\t\t\t\t\t\t\t<div class=\"symbol symbol-30 bg-transparent flex-shrink-0\">\r\n\t\t\t\t\t\t\t\t<img src=\"./assets/media/svg/files/pdf.svg\" alt=\"\"/>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"d-flex flex-column ml-3 mt-2 mb-2\">\r\n\t\t\t\t\t\t\t\t<a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n\t\t\t\t\t\t\t\tTechNav Documentation\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<span class=\"font-size-sm font-weight-bold text-muted\">\r\n\t\t\t\t\t\t\t\tby Mary Broun\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<!--end::Item-->\r\n\r\n\t\t\t\t\t\t<!--begin::Item-->\r\n\t\t\t\t\t\t<div class=\"d-flex align-items-center flex-grow-1 mb-2\">\r\n\t\t\t\t\t\t\t<div class=\"symbol symbol-30 bg-transparent flex-shrink-0\">\r\n\t\t\t\t\t\t\t\t<img src=\"./assets/media/svg/files/xml.svg\" alt=\"\"/>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"d-flex flex-column ml-3 mt-2 mb-2\">\r\n\t\t\t\t\t\t\t\t<a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n\t\t\t\t\t\t\t\tAll Framework Docs\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<span class=\"font-size-sm font-weight-bold text-muted\">\r\n\t\t\t\t\t\t\t\tby Nick Stone\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<!--end::Item-->\r\n\r\n\t\t\t\t\t\t<!--begin::Item-->\r\n\t\t\t\t\t\t<div class=\"d-flex align-items-center flex-grow-1 mb-2\">\r\n\t\t\t\t\t\t\t<div class=\"symbol symbol-30 bg-transparent flex-shrink-0\">\r\n\t\t\t\t\t\t\t\t<img src=\"./assets/media/svg/files/csv.svg\" alt=\"\"/>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"d-flex flex-column ml-3 mt-2 mb-2\">\r\n\t\t\t\t\t\t\t\t<a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n\t\t\t\t\t\t\t\t\tFinance & Accounting Reports\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<span class=\"font-size-sm font-weight-bold text-muted\">\r\n\t\t\t\t\t\t\t\t\tby Jhon Larson\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<!--end::Item-->\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!--end::Section-->\r\n\r\n\t\t\t\t\t<!--begin::Section-->\r\n\t\t\t\t\t<div class=\"font-size-sm text-primary font-weight-bolder text-uppercase mb-2\">\r\n\t\t\t\t\t\tMembers\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"mb-10\">\r\n\t\t\t\t\t\t<div class=\"d-flex align-items-center flex-grow-1 mb-2\">\r\n\t\t\t\t\t\t\t<div class=\"symbol symbol-30 flex-shrink-0\">\r\n\t\t\t\t\t\t\t\t<div class=\"symbol-label\" style=\"background-image:url('./assets/media/users/300_20.jpg')\"></div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"d-flex flex-column ml-3 mt-2 mb-2\">\r\n\t\t\t\t\t\t\t\t<a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n\t\t\t\t\t\t\t\tMilena Gibson\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<span class=\"font-size-sm font-weight-bold text-muted\">\r\n\t\t\t\t\t\t\t\tUI Designer\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"d-flex align-items-center flex-grow-1 mb-2\">\r\n\t\t\t\t\t\t\t<div class=\"symbol symbol-30 flex-shrink-0\">\r\n\t\t\t\t\t\t\t\t<div class=\"symbol-label\" style=\"background-image:url('./assets/media/users/300_15.jpg')\"></div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"d-flex flex-column ml-3 mt-2 mb-2\">\r\n\t\t\t\t\t\t\t\t<a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n\t\t\t\t\t\t\t\tStefan JohnStefan\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<span class=\"font-size-sm font-weight-bold text-muted\">\r\n\t\t\t\t\t\t\t\tMarketing Manager\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"d-flex align-items-center flex-grow-1 mb-2\">\r\n\t\t\t\t\t\t\t<div class=\"symbol symbol-30 flex-shrink-0\">\r\n\t\t\t\t\t\t\t\t<div class=\"symbol-label\" style=\"background-image:url('./assets/media/users/300_12.jpg')\"></div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"d-flex flex-column ml-3 mt-2 mb-2\">\r\n\t\t\t\t\t\t\t\t<a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n\t\t\t\t\t\t\t\tAnna Strong\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<span class=\"font-size-sm font-weight-bold text-muted\">\r\n\t\t\t\t\t\t\t\tSoftware Developer\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"d-flex align-items-center flex-grow-1 mb-2\">\r\n\t\t\t\t\t\t\t<div class=\"symbol symbol-30 flex-shrink-0\" >\r\n\t\t\t\t\t\t\t\t<div class=\"symbol-label\" style=\"background-image:url('./assets/media/users/300_16.jpg')\"></div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"d-flex flex-column ml-3 mt-2 mb-2\">\r\n\t\t\t\t\t\t\t\t<a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n\t\t\t\t\t\t\t\tNick Bold\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<span class=\"font-size-sm font-weight-bold text-muted\">\r\n\t\t\t\t\t\t\t\tProject Coordinator\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!--end::Section-->\r\n\r\n\t\t\t\t\t<!--begin::Section-->\r\n\t\t\t\t\t<div class=\"font-size-sm text-primary font-weight-bolder text-uppercase mb-2\">\r\n\t\t\t\t\t\tFiles\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"mb-10\">\r\n\t\t\t\t\t\t<div class=\"d-flex align-items-center flex-grow-1 mb-2\">\r\n\t\t\t\t\t\t\t<div class=\"symbol symbol-30 flex-shrink-0\">\r\n\t\t\t\t\t\t\t\t<div class=\"symbol-label\">\r\n\t\t\t\t\t\t\t\t\t<i class=\"flaticon-psd text-primary\"></i>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"d-flex flex-column ml-3 mt-2 mb-2\">\r\n\t\t\t\t\t\t\t\t<a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n\t\t\t\t\t\t\t\t79 PSD files generated\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<span class=\"font-size-sm font-weight-bold text-muted\">\r\n\t\t\t\t\t\t\t\tby Grog John\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"d-flex align-items-center flex-grow-1 mb-2\">\r\n\t\t\t\t\t\t\t<div class=\"symbol symbol-30 flex-shrink-0\">\r\n\t\t\t\t\t\t\t\t<div class=\"symbol-label\">\r\n\t\t\t\t\t\t\t\t\t<i class=\"flaticon2-supermarket text-warning\"></i>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"d-flex flex-column ml-3 mt-2 mb-2\">\r\n\t\t\t\t\t\t\t\t<a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n\t\t\t\t\t\t\t\t$2900 worth products sold\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<span class=\"font-size-sm font-weight-bold text-muted\">\r\n\t\t\t\t\t\t\t\tTotal 234 items\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"d-flex align-items-center flex-grow-1 mb-2\">\r\n\t\t\t\t\t\t\t<div class=\"symbol symbol-30 flex-shrink-0\">\r\n\t\t\t\t\t\t\t\t<div class=\"symbol-label\">\r\n\t\t\t\t\t\t\t\t\t<i class=\"flaticon-safe-shield-protection text-info\"></i>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"d-flex flex-column ml-3 mt-2 mb-2\">\r\n\t\t\t\t\t\t\t\t<a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n\t\t\t\t\t\t\t\t4 New items submitted\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<span class=\"font-size-sm font-weight-bold text-muted\">\r\n\t\t\t\t\t\t\t\tMarketing Manager\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"d-flex align-items-center flex-grow-1 mb-2\">\r\n\t\t\t\t\t\t\t<div class=\"symbol symbol-30 flex-shrink-0\">\r\n\t\t\t\t\t\t\t\t<div class=\"symbol-label\">\r\n\t\t\t\t\t\t\t\t\t<i class=\"flaticon-safe-shield-protection text-warning\"></i>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"d-flex flex-column ml-3 mt-2 mb-2\">\r\n\t\t\t\t\t\t\t\t<a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n\t\t\t\t\t\t\t\t4 New items submitted\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<span class=\"font-size-sm font-weight-bold text-muted\">\r\n\t\t\t\t\t\t\t\tMarketing Manager\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<!--end::Section-->\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<!--end::Wrapper-->\r\n\t\t</div>\r\n\t\t<!--end::Container-->\r\n\t</div>\r\n\t<!--end::Content-->\r\n</div>\r\n<!--end::Search Panel-->\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\n\r\n@Component({\r\n selector: 'app-notifications-offcanvas',\r\n templateUrl: './notifications-offcanvas.component.html',\r\n})\r\nexport class NotificationsOffcanvasComponent implements OnInit {\r\n extrasNotificationsOffcanvasDirectionCSSClass: string;\r\n\r\n constructor(private layout: LayoutService) {}\r\n ngOnInit(): void {\r\n this.extrasNotificationsOffcanvasDirectionCSSClass = `offcanvas-${this.layout.getProp(\r\n 'extras.notifications.offcanvas.direction'\r\n )}`;\r\n }\r\n}\r\n","<!-- begin::Notifications Panel-->\r\n<div\r\n id=\"kt_quick_notifications\"\r\n class=\"offcanvas p-10\"\r\n [ngClass]=\"extrasNotificationsOffcanvasDirectionCSSClass\"\r\n>\r\n <!--begin::Header-->\r\n <div\r\n class=\"offcanvas-header d-flex align-items-center justify-content-between mb-10\"\r\n >\r\n <h3 class=\"font-weight-bold m-0\">\r\n Notifications\r\n <small class=\"text-muted font-size-sm ml-2\">24 New</small>\r\n </h3>\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-xs btn-icon btn-light btn-hover-primary\"\r\n id=\"kt_quick_notifications_close\"\r\n >\r\n <i class=\"ki ki-close icon-xs text-muted\"></i>\r\n </a>\r\n </div>\r\n <!--end::Header-->\r\n\r\n <!--begin::Content-->\r\n <div class=\"offcanvas-content pr-5 mr-n5\">\r\n <!--begin::Nav-->\r\n <div class=\"navi navi-icon-circle navi-spacer-x-0\">\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 symbol-circle mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon-bell text-success icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 5 new user generated report\r\n </div>\r\n <div class=\"text-muted\">\r\n Reports based on sales\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 symbol-circle mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon2-box text-danger icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 2 new items submited\r\n </div>\r\n <div class=\"text-muted\">\r\n by Grog John\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 symbol-circle mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon-psd text-primary icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 79 PSD files generated\r\n </div>\r\n <div class=\"text-muted\">\r\n Reports based on sales\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 symbol-circle mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon2-supermarket text-warning icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n $2900 worth producucts sold\r\n </div>\r\n <div class=\"text-muted\">\r\n Total 234 items\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 symbol-circle mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon-paper-plane-1 text-success icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 4.5h-avarage response time\r\n </div>\r\n <div class=\"text-muted\">\r\n Fostest is Barry\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 symbol-circle mr-3\">\r\n <div class=\"symbol-label\">\r\n <i\r\n class=\"flaticon-safe-shield-protection text-danger icon-lg\"\r\n ></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 3 Defence alerts\r\n </div>\r\n <div class=\"text-muted\">\r\n 40% less alerts thar last week\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 symbol-circle mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon-notepad text-primary icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n Avarage 4 blog posts per author\r\n </div>\r\n <div class=\"text-muted\">\r\n Most posted 12 time\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 symbol-circle mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon-users-1 text-warning icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 16 authors joined last week\r\n </div>\r\n <div class=\"text-muted\">\r\n 9 photodrapehrs, 7 designer\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 symbol-circle mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon2-box text-info icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 2 new items have been submited\r\n </div>\r\n <div class=\"text-muted\">\r\n by Grog John\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 symbol-circle mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon2-download text-success icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 2.8 GB-total downloads size\r\n </div>\r\n <div class=\"text-muted\">\r\n Mostly PSD end AL concepts\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 symbol-circle mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon2-supermarket text-danger icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n $2900 worth producucts sold\r\n </div>\r\n <div class=\"text-muted\">\r\n Total 234 items\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 symbol-circle mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon-bell text-primary icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 7 new user generated report\r\n </div>\r\n <div class=\"text-muted\">\r\n Reports based on sales\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 symbol-circle mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon-paper-plane-1 text-success icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 4.5h-avarage response time\r\n </div>\r\n <div class=\"text-muted\">\r\n Fostest is Barry\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n </div>\r\n <!--end::Nav-->\r\n </div>\r\n <!--end::Content-->\r\n</div>\r\n<!-- end::Notifications Panel-->\r\n","<!--begin::Quick Actions Panel-->\r\n<div id=\"kt_quick_actions\" class=\"offcanvas p-10\" [ngClass]=\"extrasQuickActionsOffcanvasDirectionCSSClasses\">\r\n <!--begin::Header-->\r\n <div class=\"offcanvas-header d-flex align-items-center justify-content-between pb-10\">\r\n <h3 class=\"font-weight-bold m-0\">\r\n {{'TITLE.Quick_Actions'| translate}}\r\n <small class=\"text-muted font-size-sm ml-2\">finance & reports</small>\r\n </h3>\r\n <a href=\"#\" class=\"btn btn-xs btn-icon btn-light btn-hover-primary\" id=\"kt_quick_actions_close\">\r\n <i class=\"ki ki-close icon-xs text-muted\"></i>\r\n </a>\r\n </div>\r\n <!--end::Header-->\r\n\r\n <!--begin::Content-->\r\n <div class=\"offcanvas-content pr-5 mr-n5\">\r\n <div class=\"row gutter-b\">\r\n <!--begin::Item-->\r\n <div class=\"col-6\">\r\n <a [routerLink]=\"'/ticketing/faq'\"\r\n class=\"btn btn-block btn-light btn-hover-primary text-dark-50 text-center py-10 px-5\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/Shopping/Box1.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-3x svg-icon-primary m-0\"></span>\r\n <span class=\"d-block font-weight-bold font-size-h6 mt-2\">{{'TITLE.FAQ'|translate}}</span>\r\n </a>\r\n </div>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <div class=\"col-6\">\r\n <a [routerLink]=\"'/ticketing/contactus'\"\r\n class=\"btn btn-block btn-light btn-hover-primary text-dark-50 text-center py-10 px-5\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/Communication/Mail-attachment.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-3x svg-icon-primary m-0\"></span>\r\n <span class=\"d-block font-weight-bold font-size-h6 mt-2\">{{'TITLE.Contactus'|translate}}</span>\r\n </a>\r\n </div>\r\n <!--end::Item-->\r\n </div>\r\n <div class=\"row gutter-b\">\r\n <!--begin::Item-->\r\n <div class=\"col-6\" *ngIf=\"this.tokenInfo?.siteId>0\">\r\n <a [routerLink]=\"'core/site/edit'\"\r\n class=\"btn btn-block btn-light btn-hover-primary text-dark-50 text-center py-10 px-5\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/General/Settings-1.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-3x svg-icon-primary m-0\"></span>\r\n <span class=\"d-block font-weight-bold font-size-h6 mt-2\">{{'TITLE.Config_Site'|translate}}</span>\r\n </a>\r\n </div>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <div class=\"col-6\" *ngIf=\"this.tokenInfo?.siteId>0\">\r\n <a [routerLink]=\"'core/site/modulelist'\"\r\n class=\"btn btn-block btn-light btn-hover-primary text-dark-50 text-center py-10 px-5\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/General/Thunder-move.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-3x svg-icon-primary m-0\"></span>\r\n <span class=\"d-block font-weight-bold font-size-h6 mt-2\">{{'TITLE.Config_Modules_And_Renew'|translate}}</span>\r\n </a>\r\n </div>\r\n <!--end::Item-->\r\n </div>\r\n <div class=\"row gutter-b\">\r\n <!--begin::Item-->\r\n <div class=\"col-6\" *ngIf=\"this.tokenInfo?.siteId>0\">\r\n <a [routerLink]=\"'core/site/edit'\"\r\n class=\"btn btn-block btn-light btn-hover-primary text-dark-50 text-center py-10 px-5\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/Code/CMD.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-3x svg-icon-primary m-0\"></span>\r\n <span class=\"d-block font-weight-bold font-size-h6 mt-2\">{{'TITLE.Select_Site'|translate}}</span>\r\n </a>\r\n </div>\r\n <!--end::Item-->\r\n <!--begin::Item-->\r\n <div class=\"col-6\" *ngIf=\"this.tokenInfo?.siteId>0\">\r\n <a [routerLink]=\"'core/site/info'\"\r\n class=\"btn btn-block btn-light btn-hover-primary text-dark-50 text-center py-10 px-5\">\r\n <span [inlineSVG]=\"'./assets/media/svg/icons/Communication/Share.svg'\" cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-3x svg-icon-primary m-0\"></span>\r\n <span class=\"d-block font-weight-bold font-size-h6 mt-2\">{{'TITLE.Share_Data'|translate}}</span>\r\n </a>\r\n </div>\r\n <!--end::Item-->\r\n\r\n </div>\r\n\r\n </div>\r\n <!--end::Content-->\r\n</div>\r\n<!--end::Quick Actions Panel-->","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { NtkCmsApiStoreService, TokenInfoModel } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { Subscription } from 'rxjs';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\n\r\n@Component({\r\n selector: 'app-quick-actions-offcanvas',\r\n templateUrl: './quick-actions-offcanvas.component.html',\r\n})\r\nexport class QuickActionsOffcanvasComponent implements OnInit , OnDestroy {\r\n\r\n constructor(\r\n private layout: LayoutService,\r\n private tokenHelper: TokenHelper,\r\n ) {\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n });\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.tokenInfo = next;\r\n });\r\n }\r\n tokenInfo: TokenInfoModel;\r\n extrasQuickActionsOffcanvasDirectionCSSClasses = 'offcanvas-right';\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n ngOnInit(): void {\r\n this.extrasQuickActionsOffcanvasDirectionCSSClasses = `offcanvas-${this.layout.getProp(\r\n 'extras.quickActions.offcanvas.direction'\r\n )}`;\r\n }\r\n ngOnDestroy() {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\n\r\n@Component({\r\n selector: 'app-cart-offcanvas',\r\n templateUrl: './cart-offcanvas.component.html',\r\n})\r\nexport class CartOffcanvasComponent implements OnInit {\r\n extrasCartOffcanvasDirectionCSSClass = 'offcanvas-right';\r\n constructor(private layout: LayoutService) {}\r\n\r\n ngOnInit(): void {\r\n this.extrasCartOffcanvasDirectionCSSClass = `offcanvas-${this.layout.getProp(\r\n 'extras.cart.offcanvas.direction'\r\n )}`;\r\n }\r\n}\r\n","<!--begin::Quick Cart-->\r\n<div\r\n id=\"kt_quick_cart\"\r\n class=\"offcanvas p-10\"\r\n [ngClass]=\"extrasCartOffcanvasDirectionCSSClass\"\r\n>\r\n <!--begin::Header-->\r\n <div\r\n class=\"offcanvas-header d-flex align-items-center justify-content-between pb-7\"\r\n >\r\n <h4 class=\"font-weight-bold m-0\">\r\n Shopping Cart\r\n </h4>\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-xs btn-icon btn-light btn-hover-primary\"\r\n id=\"kt_quick_cart_close\"\r\n >\r\n <i class=\"ki ki-close icon-xs text-muted\"></i>\r\n </a>\r\n </div>\r\n <!--end::Header-->\r\n\r\n <!--begin::Content-->\r\n <div class=\"offcanvas-content\">\r\n <!--begin::Wrapper-->\r\n <div class=\"offcanvas-wrapper mb-5 scroll-pull\">\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center justify-content-between py-8\">\r\n <div class=\"d-flex flex-column mr-2\">\r\n <a\r\n href=\"#\"\r\n class=\"font-weight-bold text-dark-75 font-size-lg text-hover-primary\"\r\n >\r\n iBlender\r\n </a>\r\n <span class=\"text-muted\">\r\n The best kitchen gadget in 2020\r\n </span>\r\n <div class=\"d-flex align-items-center mt-2\">\r\n <span class=\"font-weight-bold mr-1 text-dark-75 font-size-lg\"\r\n >$ 350</span\r\n >\r\n <span class=\"text-muted mr-1\">for</span>\r\n <span class=\"font-weight-bold mr-2 text-dark-75 font-size-lg\"\r\n >5</span\r\n >\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon mr-2\"\r\n ><i class=\"ki ki-minus icon-xs\"></i\r\n ></a>\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon\"\r\n ><i class=\"ki ki-plus icon-xs\"></i\r\n ></a>\r\n </div>\r\n </div>\r\n <a href=\"#\" class=\"symbol symbol-70 flex-shrink-0\">\r\n <img src=\"./assets/media/stock-600x400/img-1.jpg\" title=\"\" alt=\"\" />\r\n </a>\r\n </div>\r\n <!--end::Item-->\r\n\r\n <!--begin::Separator-->\r\n <div class=\"separator separator-solid\"></div>\r\n <!--end::Separator-->\r\n\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center justify-content-between py-8\">\r\n <div class=\"d-flex flex-column mr-2\">\r\n <a\r\n href=\"#\"\r\n class=\"font-weight-bold text-dark-75 font-size-lg text-hover-primary\"\r\n >\r\n SmartCleaner\r\n </a>\r\n <span class=\"text-muted\">\r\n Smart tool for cooking\r\n </span>\r\n <div class=\"d-flex align-items-center mt-2\">\r\n <span class=\"font-weight-bold mr-1 text-dark-75 font-size-lg\"\r\n >$ 650</span\r\n >\r\n <span class=\"text-muted mr-1\">for</span>\r\n <span class=\"font-weight-bold mr-2 text-dark-75 font-size-lg\"\r\n >4</span\r\n >\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon mr-2\"\r\n ><i class=\"ki ki-minus icon-xs\"></i\r\n ></a>\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon\"\r\n ><i class=\"ki ki-plus icon-xs\"></i\r\n ></a>\r\n </div>\r\n </div>\r\n <a href=\"#\" class=\"symbol symbol-70 flex-shrink-0\">\r\n <img src=\"./assets/media/stock-600x400/img-2.jpg\" title=\"\" alt=\"\" />\r\n </a>\r\n </div>\r\n <!--end::Item-->\r\n\r\n <!--begin::Separator-->\r\n <div class=\"separator separator-solid\"></div>\r\n <!--end::Separator-->\r\n\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center justify-content-between py-8\">\r\n <div class=\"d-flex flex-column mr-2\">\r\n <a\r\n href=\"#\"\r\n class=\"font-weight-bold text-dark-75 font-size-lg text-hover-primary\"\r\n >\r\n CameraMax\r\n </a>\r\n <span class=\"text-muted\">\r\n Professional camera for edge cutting shots\r\n </span>\r\n <div class=\"d-flex align-items-center mt-2\">\r\n <span class=\"font-weight-bold mr-1 text-dark-75 font-size-lg\"\r\n >$ 150</span\r\n >\r\n <span class=\"text-muted mr-1\">for</span>\r\n <span class=\"font-weight-bold mr-2 text-dark-75 font-size-lg\"\r\n >3</span\r\n >\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon mr-2\"\r\n ><i class=\"ki ki-minus icon-xs\"></i\r\n ></a>\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon\"\r\n ><i class=\"ki ki-plus icon-xs\"></i\r\n ></a>\r\n </div>\r\n </div>\r\n <a href=\"#\" class=\"symbol symbol-70 flex-shrink-0\">\r\n <img src=\"./assets/media/stock-600x400/img-3.jpg\" title=\"\" alt=\"\" />\r\n </a>\r\n </div>\r\n <!--end::Item-->\r\n\r\n <!--begin::Separator-->\r\n <div class=\"separator separator-solid\"></div>\r\n <!--end::Separator-->\r\n\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center justify-content-between py-8\">\r\n <div class=\"d-flex flex-column mr-2\">\r\n <a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n 4D Printer\r\n </a>\r\n <span class=\"text-muted\">\r\n Manufactoring unique objects\r\n </span>\r\n <div class=\"d-flex align-items-center mt-2\">\r\n <span class=\"font-weight-bold mr-1 text-dark-75 font-size-lg\"\r\n >$ 1450</span\r\n >\r\n <span class=\"text-muted mr-1\">for</span>\r\n <span class=\"font-weight-bold mr-2 text-dark-75 font-size-lg\"\r\n >7</span\r\n >\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon mr-2\"\r\n ><i class=\"ki ki-minus icon-xs\"></i\r\n ></a>\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon\"\r\n ><i class=\"ki ki-plus icon-xs\"></i\r\n ></a>\r\n </div>\r\n </div>\r\n <a href=\"#\" class=\"symbol symbol-70 flex-shrink-0\">\r\n <img src=\"./assets/media/stock-600x400/img-4.jpg\" title=\"\" alt=\"\" />\r\n </a>\r\n </div>\r\n <!--end::Item-->\r\n\r\n <!--begin::Separator-->\r\n <div class=\"separator separator-solid\"></div>\r\n <!--end::Separator-->\r\n\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center justify-content-between py-8\">\r\n <div class=\"d-flex flex-column mr-2\">\r\n <a href=\"#\" class=\"font-weight-bold text-dark text-hover-primary\">\r\n MotionWire\r\n </a>\r\n <span class=\"text-muted\">\r\n Perfect animation tool\r\n </span>\r\n <div class=\"d-flex align-items-center mt-2\">\r\n <span class=\"font-weight-bold mr-1 text-dark-75 font-size-lg\"\r\n >$ 650</span\r\n >\r\n <span class=\"text-muted mr-1\">for</span>\r\n <span class=\"font-weight-bold mr-2 text-dark-75 font-size-lg\"\r\n >7</span\r\n >\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon mr-2\"\r\n ><i class=\"ki ki-minus icon-xs\"></i\r\n ></a>\r\n <a href=\"#\" class=\"btn btn-xs btn-light-success btn-icon\"\r\n ><i class=\"ki ki-plus icon-xs\"></i\r\n ></a>\r\n </div>\r\n </div>\r\n <a href=\"#\" class=\"symbol symbol-70 flex-shrink-0\">\r\n <img src=\"./assets/media/stock-600x400/img-8.jpg\" title=\"\" alt=\"\" />\r\n </a>\r\n </div>\r\n <!--end::Item-->\r\n </div>\r\n <!--end::Wrapper-->\r\n\r\n <!--begin::Purchase-->\r\n <div class=\"offcanvas-footer\">\r\n <div class=\"d-flex align-items-center justify-content-between mb-4\">\r\n <span class=\"font-weight-bold text-muted font-size-sm mr-2\">Total</span>\r\n <span class=\"font-weight-bolder text-dark-50 text-right\">$1840.00</span>\r\n </div>\r\n <div class=\"d-flex align-items-center justify-content-between mb-7\">\r\n <span class=\"font-weight-bold text-muted font-size-sm mr-2\"\r\n >Sub total</span\r\n >\r\n <span class=\"font-weight-bolder text-primary text-right\">$5640.00</span>\r\n </div>\r\n <div class=\"text-right\">\r\n <button type=\"button\" class=\"btn btn-primary text-weight-bold\">\r\n Place Order\r\n </button>\r\n </div>\r\n </div>\r\n <!--end::Purchase-->\r\n </div>\r\n <!--end::Content-->\r\n</div>\r\n<!--end::Quick Cart-->\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\n\r\n@Component({\r\n selector: 'app-quick-panel-offcanvas',\r\n templateUrl: './quick-panel-offcanvas.component.html',\r\n})\r\nexport class QuickPanelOffcanvasComponent implements OnInit {\r\n extrasQuickPanelOffcanvasDirectionCSSClass = 'offcanvas-right';\r\n activeTabId:\r\n | 'kt_quick_panel_logs'\r\n | 'kt_quick_panel_notifications'\r\n | 'kt_quick_panel_settings' = 'kt_quick_panel_logs';\r\n\r\n constructor(private layout: LayoutService) {}\r\n\r\n ngOnInit(): void {\r\n this.extrasQuickPanelOffcanvasDirectionCSSClass = `offcanvas-${this.layout.getProp(\r\n 'extras.quickPanel.offcanvas.direction'\r\n )}`;\r\n }\r\n\r\n setActiveTabId(tabId) {\r\n this.activeTabId = tabId;\r\n }\r\n\r\n getActiveCSSClasses(tabId) {\r\n if (tabId !== this.activeTabId) {\r\n return '';\r\n }\r\n return 'active show';\r\n }\r\n}\r\n","<!--begin::Quick Panel-->\r\n<div\r\n id=\"kt_quick_panel\"\r\n class=\"offcanvas pt-5 pb-10\"\r\n [ngClass]=\"extrasQuickPanelOffcanvasDirectionCSSClass\"\r\n>\r\n <!--begin::Header-->\r\n <div\r\n class=\"offcanvas-header offcanvas-header-navs d-flex align-items-center justify-content-between mb-5\"\r\n >\r\n <ul\r\n class=\"nav nav-bold nav-tabs nav-tabs-line nav-tabs-line-3x nav-tabs-primary flex-grow-1 px-10\"\r\n role=\"tablist\"\r\n >\r\n <li class=\"nav-item\">\r\n <a\r\n class=\"nav-link cursor-pointer\"\r\n data-toggle=\"tab\"\r\n [ngClass]=\"getActiveCSSClasses('kt_quick_panel_logs')\"\r\n (click)=\"setActiveTabId('kt_quick_panel_logs')\"\r\n >Audit Logs</a\r\n >\r\n </li>\r\n\r\n <li class=\"nav-item\">\r\n <a\r\n class=\"nav-link cursor-pointer\"\r\n data-toggle=\"tab\"\r\n [ngClass]=\"getActiveCSSClasses('kt_quick_panel_notifications')\"\r\n (click)=\"setActiveTabId('kt_quick_panel_notifications')\"\r\n >Notifications</a\r\n >\r\n </li>\r\n <li class=\"nav-item\">\r\n <a\r\n class=\"nav-link cursor-pointer\"\r\n [ngClass]=\"getActiveCSSClasses('kt_quick_panel_settings')\"\r\n (click)=\"setActiveTabId('kt_quick_panel_settings')\"\r\n data-toggle=\"tab\"\r\n >Settings</a\r\n >\r\n </li>\r\n </ul>\r\n <div class=\"offcanvas-close mt-n1 pr-5\">\r\n <a\r\n href=\"#\"\r\n class=\"btn btn-xs btn-icon btn-light btn-hover-primary\"\r\n id=\"kt_quick_panel_close\"\r\n >\r\n <i class=\"ki ki-close icon-xs text-muted\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n <!--end::Header-->\r\n\r\n <!--begin::Content-->\r\n <div class=\"offcanvas-content px-10\">\r\n <div class=\"tab-content\">\r\n <!--begin::Tabpane-->\r\n <div\r\n class=\"tab-pane fade pt-3 pr-5 mr-n5\"\r\n id=\"kt_quick_panel_logs\"\r\n [ngClass]=\"getActiveCSSClasses('kt_quick_panel_logs')\"\r\n role=\"tabpanel\"\r\n >\r\n <!--begin::Section-->\r\n <div class=\"mb-15\">\r\n <h5 class=\"font-weight-bold mb-5\">System Messages</h5>\r\n <!--begin: Item-->\r\n <div class=\"d-flex align-items-center flex-wrap mb-5\">\r\n <div class=\"symbol symbol-50 symbol-light mr-5\">\r\n <span class=\"symbol-label\">\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/misc/006-plurk.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon h-50 align-self-center\"\r\n ></span>\r\n </span>\r\n </div>\r\n <div class=\"d-flex flex-column flex-grow-1 mr-2\">\r\n <a\r\n href=\"#\"\r\n class=\"font-weight-bolder text-dark-75 text-hover-primary font-size-lg mb-1\"\r\n >Top Authors</a\r\n >\r\n <span class=\"text-muted font-weight-bold\"\r\n >Most Successful Fellas</span\r\n >\r\n </div>\r\n <span\r\n class=\"btn btn-sm btn-light font-weight-bolder py-1 my-lg-0 my-2 text-dark-50\"\r\n >+82$</span\r\n >\r\n </div>\r\n <!--end: Item-->\r\n\r\n <!--begin: Item-->\r\n <div class=\"d-flex align-items-center flex-wrap mb-5\">\r\n <div class=\"symbol symbol-50 symbol-light mr-5\">\r\n <span class=\"symbol-label\">\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/misc/015-telegram.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon h-50 align-self-center\"\r\n ></span>\r\n </span>\r\n </div>\r\n <div class=\"d-flex flex-column flex-grow-1 mr-2\">\r\n <a\r\n href=\"#\"\r\n class=\"font-weight-bolder text-dark-75 text-hover-primary font-size-lg mb-1\"\r\n >Popular Authors</a\r\n >\r\n <span class=\"text-muted font-weight-bold\"\r\n >Most Successful Fellas</span\r\n >\r\n </div>\r\n <span\r\n class=\"btn btn-sm btn-light font-weight-bolder my-lg-0 my-2 py-1 text-dark-50\"\r\n >+280$</span\r\n >\r\n </div>\r\n <!--end: Item-->\r\n\r\n <!--begin: Item-->\r\n <div class=\"d-flex align-items-center flex-wrap mb-5\">\r\n <div class=\"symbol symbol-50 symbol-light mr-5\">\r\n <span class=\"symbol-label\">\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/misc/003-puzzle.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon h-50 align-self-center\"\r\n ></span>\r\n </span>\r\n </div>\r\n <div class=\"d-flex flex-column flex-grow-1 mr-2\">\r\n <a\r\n href=\"#\"\r\n class=\"font-weight-bolder text-dark-75 text-hover-primary font-size-lg mb-1\"\r\n >New Users</a\r\n >\r\n <span class=\"text-muted font-weight-bold\"\r\n >Most Successful Fellas</span\r\n >\r\n </div>\r\n <span\r\n class=\"btn btn-sm btn-light font-weight-bolder my-lg-0 my-2 py-1 text-dark-50\"\r\n >+4500$</span\r\n >\r\n </div>\r\n <!--end: Item-->\r\n\r\n <!--begin: Item-->\r\n <div class=\"d-flex align-items-center flex-wrap mb-5\">\r\n <div class=\"symbol symbol-50 symbol-light mr-5\">\r\n <span class=\"symbol-label\">\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/misc/005-bebo.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon h-50 align-self-center\"\r\n ></span>\r\n </span>\r\n </div>\r\n <div class=\"d-flex flex-column flex-grow-1 mr-2\">\r\n <a\r\n href=\"#\"\r\n class=\"font-weight-bolder text-dark-75 text-hover-primary font-size-lg mb-1\"\r\n >Active Customers</a\r\n >\r\n <span class=\"text-muted font-weight-bold\"\r\n >Most Successful Fellas</span\r\n >\r\n </div>\r\n <span\r\n class=\"btn btn-sm btn-light font-weight-bolder my-lg-0 my-2 py-1 text-dark-50\"\r\n >+4500$</span\r\n >\r\n </div>\r\n <!--end: Item-->\r\n\r\n <!--begin: Item-->\r\n <div class=\"d-flex align-items-center flex-wrap\">\r\n <div class=\"symbol symbol-50 symbol-light mr-5\">\r\n <span class=\"symbol-label\">\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/misc/014-kickstarter.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon h-50 align-self-center\"\r\n ></span>\r\n </span>\r\n </div>\r\n <div class=\"d-flex flex-column flex-grow-1 mr-2\">\r\n <a\r\n href=\"#\"\r\n class=\"font-weight-bolder text-dark-75 text-hover-primary font-size-lg mb-1\"\r\n >Bestseller Theme</a\r\n >\r\n <span class=\"text-muted font-weight-bold\"\r\n >Most Successful Fellas</span\r\n >\r\n </div>\r\n <span\r\n class=\"btn btn-sm btn-light font-weight-bolder my-lg-0 my-2 py-1 text-dark-50\"\r\n >+4500$</span\r\n >\r\n </div>\r\n <!--end: Item-->\r\n </div>\r\n <!--end::Section-->\r\n\r\n <!--begin::Section-->\r\n <div class=\"mb-5\">\r\n <h5 class=\"font-weight-bold mb-5\">Notifications</h5>\r\n\r\n <!--begin: Item-->\r\n <div\r\n class=\"d-flex align-items-center bg-light-warning rounded p-5 mb-5\"\r\n >\r\n <span class=\"svg-icon svg-icon-warning mr-5\">\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/Home/Library.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-lg\"\r\n ></span>\r\n </span>\r\n\r\n <div class=\"d-flex flex-column flex-grow-1 mr-2\">\r\n <a\r\n href=\"#\"\r\n class=\"font-weight-normal text-dark-75 text-hover-primary font-size-lg mb-1\"\r\n >Another purpose persuade</a\r\n >\r\n <span class=\"text-muted font-size-sm\">Due in 2 Days</span>\r\n </div>\r\n\r\n <span class=\"font-weight-bolder text-warning py-1 font-size-lg\"\r\n >+28%</span\r\n >\r\n </div>\r\n <!--end: Item-->\r\n\r\n <!--begin: Item-->\r\n <div\r\n class=\"d-flex align-items-center bg-light-success rounded p-5 mb-5\"\r\n >\r\n <span class=\"svg-icon svg-icon-success mr-5\">\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/Communication/Write.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-lg\"\r\n ></span>\r\n </span>\r\n <div class=\"d-flex flex-column flex-grow-1 mr-2\">\r\n <a\r\n href=\"#\"\r\n class=\"font-weight-normal text-dark-75 text-hover-primary font-size-lg mb-1\"\r\n >Would be to people</a\r\n >\r\n <span class=\"text-muted font-size-sm\">Due in 2 Days</span>\r\n </div>\r\n\r\n <span class=\"font-weight-bolder text-success py-1 font-size-lg\"\r\n >+50%</span\r\n >\r\n </div>\r\n <!--end: Item-->\r\n\r\n <!--begin: Item-->\r\n <div\r\n class=\"d-flex align-items-center bg-light-danger rounded p-5 mb-5\"\r\n >\r\n <span class=\"svg-icon svg-icon-danger mr-5\">\r\n <span\r\n [inlineSVG]=\"\r\n './assets/media/svg/icons/Communication/Group-chat.svg'\r\n \"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-lg\"\r\n ></span>\r\n </span>\r\n <div class=\"d-flex flex-column flex-grow-1 mr-2\">\r\n <a\r\n href=\"#\"\r\n class=\"font-weight-normel text-dark-75 text-hover-primary font-size-lg mb-1\"\r\n >Purpose would be to persuade</a\r\n >\r\n <span class=\"text-muted font-size-sm\">Due in 2 Days</span>\r\n </div>\r\n\r\n <span class=\"font-weight-bolder text-danger py-1 font-size-lg\"\r\n >-27%</span\r\n >\r\n </div>\r\n <!--end: Item-->\r\n\r\n <!--begin: Item-->\r\n <div class=\"d-flex align-items-center bg-light-info rounded p-5\">\r\n <span class=\"svg-icon svg-icon-info mr-5\">\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/General/Attachment2.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon svg-icon-lg\"\r\n ></span>\r\n </span>\r\n\r\n <div class=\"d-flex flex-column flex-grow-1 mr-2\">\r\n <a\r\n href=\"#\"\r\n class=\"font-weight-normel text-dark-75 text-hover-primary font-size-lg mb-1\"\r\n >The best product</a\r\n >\r\n <span class=\"text-muted font-size-sm\">Due in 2 Days</span>\r\n </div>\r\n\r\n <span class=\"font-weight-bolder text-info py-1 font-size-lg\"\r\n >+8%</span\r\n >\r\n </div>\r\n <!--end: Item-->\r\n </div>\r\n\r\n <!--end::Section-->\r\n </div>\r\n <!--end::Tabpane-->\r\n\r\n <!--begin::Tabpane-->\r\n <div\r\n class=\"tab-pane fade pt-2 pr-5 mr-n5\"\r\n id=\"kt_quick_panel_notifications\"\r\n [ngClass]=\"getActiveCSSClasses('kt_quick_panel_notifications')\"\r\n role=\"tabpanel\"\r\n >\r\n <!--begin::Nav-->\r\n <div class=\"navi navi-icon-circle navi-spacer-x-0\">\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon-bell text-success icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 5 new user generated report\r\n </div>\r\n <div class=\"text-muted\">\r\n Reports based on sales\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon2-box text-danger icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 2 new items submited\r\n </div>\r\n <div class=\"text-muted\">\r\n by Grog John\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon-psd text-primary icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 79 PSD files generated\r\n </div>\r\n <div class=\"text-muted\">\r\n Reports based on sales\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon2-supermarket text-warning icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n $2900 worth producucts sold\r\n </div>\r\n <div class=\"text-muted\">\r\n Total 234 items\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon-paper-plane-1 text-success icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 4.5h-avarage response time\r\n </div>\r\n <div class=\"text-muted\">\r\n Fostest is Barry\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 mr-3\">\r\n <div class=\"symbol-label\">\r\n <i\r\n class=\"flaticon-safe-shield-protection text-danger icon-lg\"\r\n ></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 3 Defence alerts\r\n </div>\r\n <div class=\"text-muted\">\r\n 40% less alerts thar last week\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon-notepad text-primary icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n Avarage 4 blog posts per author\r\n </div>\r\n <div class=\"text-muted\">\r\n Most posted 12 time\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon-users-1 text-warning icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 16 authors joined last week\r\n </div>\r\n <div class=\"text-muted\">\r\n 9 photodrapehrs, 7 designer\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon2-box text-info icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 2 new items have been submited\r\n </div>\r\n <div class=\"text-muted\">\r\n by Grog John\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon2-download text-success icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 2.8 GB-total downloads size\r\n </div>\r\n <div class=\"text-muted\">\r\n Mostly PSD end AL concepts\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon2-supermarket text-danger icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n $2900 worth producucts sold\r\n </div>\r\n <div class=\"text-muted\">\r\n Total 234 items\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon-bell text-primary icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 7 new user generated report\r\n </div>\r\n <div class=\"text-muted\">\r\n Reports based on sales\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n <!--begin::Item-->\r\n <a href=\"#\" class=\"navi-item\">\r\n <div class=\"navi-link rounded\">\r\n <div class=\"symbol symbol-50 mr-3\">\r\n <div class=\"symbol-label\">\r\n <i class=\"flaticon-paper-plane-1 text-success icon-lg\"></i>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold font-size-lg\">\r\n 4.5h-avarage response time\r\n </div>\r\n <div class=\"text-muted\">\r\n Fostest is Barry\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end::Item-->\r\n </div>\r\n <!--end::Nav-->\r\n </div>\r\n <!--end::Tabpane-->\r\n\r\n <!--begin::Tabpane-->\r\n <div\r\n class=\"tab-pane fade pt-3 pr-5 mr-n5\"\r\n id=\"kt_quick_panel_settings\"\r\n [ngClass]=\"getActiveCSSClasses('kt_quick_panel_settings')\"\r\n role=\"tabpanel\"\r\n >\r\n <form class=\"form\">\r\n <!--begin::Section-->\r\n <div>\r\n <h5 class=\"font-weight-bold mb-3\">Customer Care</h5>\r\n <div class=\"form-group mb-0 row align-items-center\">\r\n <label class=\"col-8 col-form-label\">Enable Notifications:</label>\r\n <div class=\"col-4 d-flex justify-content-end\">\r\n <span class=\"switch switch-success switch-sm\">\r\n <label>\r\n <input type=\"checkbox\" checked=\"checked\" name=\"select\" />\r\n <span></span>\r\n </label>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"form-group mb-0 row align-items-center\">\r\n <label class=\"col-8 col-form-label\">Enable Case Tracking:</label>\r\n <div class=\"col-4 d-flex justify-content-end\">\r\n <span class=\"switch switch-success switch-sm\">\r\n <label>\r\n <input type=\"checkbox\" name=\"quick_panel_notifications_2\" />\r\n <span></span>\r\n </label>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"form-group mb-0 row align-items-center\">\r\n <label class=\"col-8 col-form-label\">Support Portal:</label>\r\n <div class=\"col-4 d-flex justify-content-end\">\r\n <span class=\"switch switch-success switch-sm\">\r\n <label>\r\n <input type=\"checkbox\" checked=\"checked\" name=\"select\" />\r\n <span></span>\r\n </label>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!--end::Section-->\r\n\r\n <div class=\"separator separator-dashed my-6\"></div>\r\n\r\n <!--begin::Section-->\r\n <div class=\"pt-2\">\r\n <h5 class=\"font-weight-bold mb-3\">Reports</h5>\r\n <div class=\"form-group mb-0 row align-items-center\">\r\n <label class=\"col-8 col-form-label\">Generate Reports:</label>\r\n <div class=\"col-4 d-flex justify-content-end\">\r\n <span class=\"switch switch-sm switch-danger\">\r\n <label>\r\n <input type=\"checkbox\" checked=\"checked\" name=\"select\" />\r\n <span></span>\r\n </label>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"form-group mb-0 row align-items-center\">\r\n <label class=\"col-8 col-form-label\">Enable Report Export:</label>\r\n <div class=\"col-4 d-flex justify-content-end\">\r\n <span class=\"switch switch-sm switch-danger\">\r\n <label>\r\n <input type=\"checkbox\" name=\"select\" />\r\n <span></span>\r\n </label>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"form-group mb-0 row align-items-center\">\r\n <label class=\"col-8 col-form-label\">Allow Data Collection:</label>\r\n <div class=\"col-4 d-flex justify-content-end\">\r\n <span class=\"switch switch-sm switch-danger\">\r\n <label>\r\n <input type=\"checkbox\" checked=\"checked\" name=\"select\" />\r\n <span></span>\r\n </label>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!--end::Section-->\r\n\r\n <div class=\"separator separator-dashed my-6\"></div>\r\n\r\n <!--begin::Section-->\r\n <div class=\"pt-2\">\r\n <h5 class=\"font-weight-bold mb-3\">Memebers</h5>\r\n <div class=\"form-group mb-0 row align-items-center\">\r\n <label class=\"col-8 col-form-label\">Enable Member singup:</label>\r\n <div class=\"col-4 d-flex justify-content-end\">\r\n <span class=\"switch switch-sm switch-primary\">\r\n <label>\r\n <input type=\"checkbox\" checked=\"checked\" name=\"select\" />\r\n <span></span>\r\n </label>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"form-group mb-0 row align-items-center\">\r\n <label class=\"col-8 col-form-label\">Allow User Feedbacks:</label>\r\n <div class=\"col-4 d-flex justify-content-end\">\r\n <span class=\"switch switch-sm switch-primary\">\r\n <label>\r\n <input type=\"checkbox\" name=\"select\" />\r\n <span></span>\r\n </label>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"form-group mb-0 row align-items-center\">\r\n <label class=\"col-8 col-form-label\"\r\n >Enable Customer Portal:</label\r\n >\r\n <div class=\"col-4 d-flex justify-content-end\">\r\n <span class=\"switch switch-sm switch-primary\">\r\n <label>\r\n <input type=\"checkbox\" checked=\"checked\" name=\"select\" />\r\n <span></span>\r\n </label>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <!--end::Section-->\r\n </form>\r\n </div>\r\n <!--end::Tabpane-->\r\n </div>\r\n </div>\r\n <!--end::Content-->\r\n</div>\r\n<!--end::Quick Panel-->\r\n","<!-- begin::User Panel-->\r\n<div id=\"kt_quick_user\" class=\"offcanvas p-10\" [ngClass]=\"extrasUserOffcanvasDirection\">\r\n <ng-container *ngIf=\"this.tokenInfo\">\r\n <!--begin::Header-->\r\n <div class=\"offcanvas-header d-flex align-items-center justify-content-between pb-5\">\r\n <h3 class=\"font-weight-bold m-0\">\r\n {{'TITLE.User_Profile'| translate}}\r\n </h3>\r\n <a href=\"#\" class=\"btn btn-xs btn-icon btn-light btn-hover-primary\" id=\"kt_quick_user_close\">\r\n <i class=\"ki ki-close icon-xs text-muted\"></i>\r\n </a>\r\n </div>\r\n <!--end::Header-->\r\n\r\n <!--begin::Content-->\r\n <div class=\"offcanvas-content pr-5 mr-n5\">\r\n <!--begin::Header-->\r\n <div class=\"d-flex align-items-center mt-5\">\r\n <div class=\"symbol symbol-100 mr-5\">\r\n <div class=\"symbol-label\" style=\"background-image: url('{{tokenInfo.linkMainImageIdSrc}}');\"></div>\r\n <i class=\"symbol-badge bg-success\"></i>\r\n </div>\r\n <div class=\"d-flex flex-column\">\r\n <a href=\"#\" class=\"font-weight-bold font-size-h5 text-dark-75 text-hover-primary\">\r\n {{ this.tokenInfo.name }} {{ this.tokenInfo.lastName }}\r\n </a>\r\n <div class=\"text-muted mt-1\">\r\n {{this.tokenInfo.userAccessUserTypeTitle}}\r\n </div>\r\n <div class=\"navi mt-2\">\r\n <a href=\"#\" class=\"navi-item\">\r\n <span class=\"navi-link p-0 pb-2\">\r\n <span class=\"navi-icon mr-1\">\r\n <span [inlineSVG]=\"\r\n './assets/media/svg/icons/Communication/Mail-notification.svg'\r\n \" cacheSVG=\"true\" class=\"svg-icon svg-icon-lg svg-icon-primary\"></span>\r\n </span>\r\n <span class=\"navi-text text-muted text-hover-primary\">{{this.tokenInfo.username}}</span>\r\n </span>\r\n </a>\r\n\r\n <a class=\"btn btn-sm btn-light-primary font-weight-bolder py-2 px-5 cursor-pointer\"\r\n (click)=\"logout()\">{{'TITLE.Sing_Out'| translate}}</a>\r\n <a class=\"btn btn-clean font-weight-bold cursor-pointer\">ver: {{this.publicHelper.appClientVersion}} </a>\r\n </div>\r\n </div>\r\n </div>\r\n <!--end::Header-->\r\n\r\n <!--begin::Separator-->\r\n <div class=\"separator separator-dashed mt-8 mb-5\"></div>\r\n <!--end::Separator-->\r\n\r\n <!--begin::Nav-->\r\n <div class=\"navi navi-spacer-x-0 p-0\">\r\n <!--begin::Item-->\r\n <a class=\"navi-item cursor-pointer\" routerLink=\"{{'/core/user/edit/' +this.tokenInfo.userId}}\">\r\n <div class=\"navi-link\">\r\n <div class=\"symbol symbol-40 bg-light mr-3\">\r\n <div class=\"symbol-label\">\r\n <span [inlineSVG]=\"\r\n './assets/media/svg/icons/General/Notification2.svg'\r\n \" cacheSVG=\"true\" class=\"svg-icon svg-icon-md svg-icon-success\"></span>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n {{'TITLE.User_Profile'| translate}}\r\n </div>\r\n <div class=\"text-muted\">\r\n {{'TITLE.Account_settings_and_more'| translate}}\r\n <span class=\"label label-light-info label-inline font-weight-bold\">{{'TITLE.User_Id'|\r\n translate}}:{{this.tokenInfo.userId}}</span>\r\n <span class=\"label label-light-success label-inline font-weight-bold\">{{'TITLE.Site_Id'|\r\n translate}}:{{this.tokenInfo.siteId}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n <!--end:Item-->\r\n\r\n <!--begin::Item-->\r\n <a class=\"navi-item cursor-pointer\" routerLink=\"{{'/ticketing/task/contactus-list'}}\">\r\n <div class=\"navi-link\">\r\n <div class=\"symbol symbol-40 bg-light mr-3\">\r\n <div class=\"symbol-label\">\r\n <span [inlineSVG]=\"\r\n './assets/media/svg/icons/Shopping/Chart-bar1.svg'\r\n \" cacheSVG=\"true\" class=\"svg-icon svg-icon-md svg-icon-warning\"></span>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n {{'TITLE.My_Messages'| translate}}\r\n </div>\r\n <div class=\"text-muted\">\r\n {{'TITLE.Inbox_and_tasks'| translate}}\r\n <span class=\"label label-light-info label-inline font-weight-bold\">{{dataTaskGetCountEditorModelResult.totalRowCount}} {{'TITLE.MESSAGES'|translate}}</span>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </a>\r\n <!--end:Item-->\r\n <!--begin::Item-->\r\n <ng-container *ngIf=\"IsAdminSite\">\r\n <a class=\"navi-item cursor-pointer\" routerLink=\"{{'/ticketing/task'}}\">\r\n <div class=\"navi-link\">\r\n <div class=\"symbol symbol-40 bg-light mr-3\">\r\n <div class=\"symbol-label\">\r\n <span [inlineSVG]=\"\r\n './assets/media/svg/icons/Communication/Mail-opened.svg'\r\n \" cacheSVG=\"true\" class=\"svg-icon svg-icon-md svg-icon-primary\"></span>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n {{'TITLE.My_Tasks'| translate}}\r\n </div>\r\n <div class=\"text-muted\">\r\n {{'TITLE.latest_tasks_and_projects'| translate}}\r\n <span class=\"label label-light-info label-inline font-weight-bold\">{{dataTaskGetCountViewerModelResult.totalRowCount}} {{'TITLE.MESSAGES'|translate}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n <!--end:Item-->\r\n\r\n <!--begin::Item-->\r\n <ng-container *ngIf=\"IsAdminSite\">\r\n\r\n <a class=\"navi-item cursor-pointer\" routerLink=\"{{'/coretoken/userlog'}}\">\r\n <div class=\"navi-link\">\r\n <div class=\"symbol symbol-40 bg-light mr-3\">\r\n <div class=\"symbol-label\">\r\n <span [inlineSVG]=\"\r\n './assets/media/svg/icons/Files/Selected-file.svg'\r\n \" cacheSVG=\"true\" class=\"svg-icon svg-icon-md svg-icon-danger\"></span>\r\n </div>\r\n </div>\r\n <div class=\"navi-text\">\r\n <div class=\"font-weight-bold\">\r\n {{'TITLE.My_Activities'| translate}}\r\n </div>\r\n <div class=\"text-muted\">\r\n {{'TITLE.Logs_and_notifications'| translate}}\r\n </div>\r\n </div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n <!--end:Item-->\r\n\r\n\r\n </div>\r\n <!--end::Nav-->\r\n\r\n <!--begin::Separator-->\r\n <div class=\"separator separator-dashed my-7\"></div>\r\n <!--end::Separator-->\r\n\r\n <!--begin::Notifications-->\r\n <div>\r\n <app-cms-token-access></app-cms-token-access>\r\n </div>\r\n <!--end::Notifications-->\r\n </div>\r\n <!--end::Content-->\r\n </ng-container>\r\n</div>\r\n<!-- end::User Panel-->","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { CoreAuthService, EnumManageUserAccessDataTypes, EnumManageUserAccessUserTypes, EnumTicketStatus, ErrorExceptionResultBase, FilterDataModel, FilterModel, TicketingTaskService, TokenInfoModel } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { map } from 'rxjs/operators';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { environment } from 'src/environments/environment';\r\nimport { PublicHelper } from 'src/app/core/helpers/publicHelper';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-user-offcanvas',\r\n templateUrl: './user-offcanvas.component.html',\r\n})\r\nexport class UserOffcanvasComponent implements OnInit, OnDestroy {\r\n extrasUserOffcanvasDirection = 'offcanvas-right';\r\n // user$: Observable<UserModel>;\r\n\r\n constructor(\r\n private layout: LayoutService,\r\n private coreAuthService: CoreAuthService,\r\n private cmsToastrService: CmsToastrService,\r\n private cdr: ChangeDetectorRef,\r\n private tokenHelper: TokenHelper,\r\n public publicHelper: PublicHelper,\r\n private ticketingTaskService: TicketingTaskService,\r\n public translate: TranslateService,\r\n ) {\r\n this.loading.cdr = this.cdr;\r\n this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n }\r\n tokenInfo: TokenInfoModel;\r\n cmsApiStoreSubscribe: Subscription;\r\n @Input()\r\n loading = new ProgressSpinnerModel();\r\n IsAdminSite = false;\r\n env = environment;\r\n ngOnInit(): void {\r\n\r\n this.extrasUserOffcanvasDirection = `offcanvas-${this.layout.getProp(\r\n 'extras.user.offcanvas.direction'\r\n )}`;\r\n // this.user$ = this.auth.currentUserSubject.asObservable();\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n this.DataTaskViewerGetCount();\r\n this.cdr.detectChanges();\r\n if (this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.AdminCpSite\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.AdminMainCms\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.AdminResellerCms\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.SupportCpSite\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.SupportMainCms\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.SupportResellerCms) {\r\n this.IsAdminSite = true;\r\n this.DataTaskEditorGetCount();\r\n }\r\n else {\r\n this.IsAdminSite = false;\r\n }\r\n });\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((value) => {\r\n this.tokenInfo = value;\r\n this.DataTaskViewerGetCount();\r\n this.cdr.detectChanges();\r\n if (this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.AdminCpSite\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.AdminMainCms\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.AdminResellerCms\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.SupportCpSite\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.SupportMainCms\r\n || this.tokenInfo.userAccessUserType === EnumManageUserAccessUserTypes.SupportResellerCms) {\r\n this.IsAdminSite = true;\r\n this.DataTaskEditorGetCount();\r\n }\r\n else {\r\n this.IsAdminSite = false;\r\n }\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n async logout() {\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName, 'خروج Øساب کاربری');\r\n this.cmsToastrService.typeOrderActionLogout();\r\n const retOut = await this.coreAuthService.ServiceLogout().pipe(map(next => {\r\n if (next.isSuccess) {\r\n this.cmsToastrService.typeSuccessLogout();\r\n } else {\r\n this.cmsToastrService.typeErrorLogout();\r\n }\r\n this.loading.Stop(pName);\r\n return;\r\n })).toPromise();\r\n document.location.reload();\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n dataTaskGetCountViewerModelResult =new ErrorExceptionResultBase();\r\n dataTaskGetCountEditorModelResult =new ErrorExceptionResultBase();\r\n DataTaskViewerGetCount(): void {\r\n if (!this.publicHelper.checkModule('ticketingTaskService'))\r\n return;\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n\r\n /*filter CLone*/\r\n const filterModel = new FilterModel();\r\n /*filter CLone*/\r\n const filter = new FilterDataModel();\r\n filter.propertyName = 'TicketStatus';\r\n filter.value = EnumTicketStatus.Unread;\r\n filterModel.filters.push(filter);\r\n this.ticketingTaskService.setAccessDataType(EnumManageUserAccessDataTypes.Viewer)\r\n this.ticketingTaskService.ServiceGetCount(filterModel).subscribe(\r\n (next) => {\r\n\r\n if (next.isSuccess) {\r\n this.dataTaskGetCountViewerModelResult = next;\r\n }\r\n else {\r\n this.cmsToastrService.typeErrorGetAll(next.errorMessage);\r\n\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n (error) => {\r\n this.cmsToastrService.typeError(error);\r\n\r\n this.loading.Stop(pName);\r\n\r\n }\r\n );\r\n }\r\n\r\n DataTaskEditorGetCount(): void {\r\n if (!this.publicHelper.checkModule('ticketingTaskService'))\r\n return;\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n\r\n /*filter CLone*/\r\n const filterModel = new FilterModel();\r\n /*filter CLone*/\r\n const filter = new FilterDataModel();\r\n filter.propertyName = 'TicketStatus';\r\n filter.value = EnumTicketStatus.Unread;\r\n filterModel.filters.push(filter);\r\n this.ticketingTaskService.setAccessDataType(EnumManageUserAccessDataTypes.Editor)\r\n this.ticketingTaskService.ServiceGetCount(filterModel).subscribe(\r\n (next) => {\r\n\r\n if (next.isSuccess) {\r\n this.dataTaskGetCountEditorModelResult = next;\r\n }\r\n else {\r\n this.cmsToastrService.typeErrorGetAll(next.errorMessage);\r\n\r\n }\r\n this.loading.Stop(pName);\r\n\r\n },\r\n (error) => {\r\n this.cmsToastrService.typeError(error);\r\n\r\n this.loading.Stop(pName);\r\n\r\n }\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'app-toolbar',\r\n templateUrl: './toolbar.component.html',\r\n})\r\nexport class ToolbarComponent implements OnInit {\r\n constructor(private router: Router) { }\r\n env = environment;\r\n\r\n ngOnInit(): void { }\r\n navigateToBuilder() {\r\n this.router.navigate(['/builder']);\r\n\r\n }\r\n}\r\n","<!--begin::Sticky Toolbar-->\r\n<ul class=\"sticky-toolbar nav flex-column pl-2 pr-2 pt-3 pb-3 mt-4\">\r\n <!--begin::Item-->\r\n <li\r\n class=\"nav-item mb-2\"\r\n data-toggle=\"tooltip\"\r\n title=\"Layout Builder\"\r\n data-placement=\"left\"\r\n (click)=\"navigateToBuilder()\"\r\n >\r\n <a\r\n class=\"btn btn-sm btn-icon btn-bg-light btn-icon-primary btn-hover-primary cursor-pointer\"\r\n >\r\n <i class=\"flaticon2-gear\"></i>\r\n </a>\r\n </li>\r\n <!--end::Item-->\r\n\r\n <!--begin::Item-->\r\n <li\r\n class=\"nav-item mb-2\"\r\n data-toggle=\"tooltip\"\r\n title=\"Documentation\"\r\n data-placement=\"left\"\r\n >\r\n <a\r\n class=\"btn btn-sm btn-icon btn-bg-light btn-icon-warning btn-hover-warning\"\r\n href=\"{{this.env.cmsServerConfig.configCompanyWebSite}}\"\r\n target=\"_blank\"\r\n >\r\n <i class=\"flaticon2-telegram-logo\"></i>\r\n </a>\r\n </li>\r\n <!--end::Item-->\r\n</ul>\r\n<!--end::Sticky Toolbar-->\r\n","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport KTScrolltop from \"./../../components/scrolltop.js\";\r\nimport { KTUtil } from \"./../../components/util.js\";\r\n\r\nvar KTLayoutScrolltop = function() {\r\n // Private properties\r\n var _element;\r\n var _object;\r\n\r\n // Private functions\r\n var _init = function() {\r\n _object = new KTScrolltop(_element, {\r\n offset: 300,\r\n speed: 600,\r\n });\r\n }\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n\t\t},\r\n\r\n getElement: function() {\r\n return _element;\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutScrolltop;\r\n}\r\n\r\nexport default KTLayoutScrolltop;","import { Component, OnInit, AfterViewInit } from '@angular/core';\r\nimport { KTUtil } from 'src/assets/js/components/util';\r\nimport KTLayoutScrolltop from 'src/assets/js/layout/extended/scrolltop';\r\n\r\n\r\n@Component({\r\n selector: 'app-scroll-top',\r\n templateUrl: './scroll-top.component.html',\r\n})\r\nexport class ScrollTopComponent implements OnInit, AfterViewInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n ngAfterViewInit() {\r\n KTUtil.ready(() => {\r\n // Init Scrolltop\r\n KTLayoutScrolltop.init('kt_scrolltop');\r\n });\r\n }\r\n}\r\n","<!--begin::Scrolltop-->\r\n<div id=\"kt_scrolltop\" class=\"scrolltop\">\r\n <span\r\n [inlineSVG]=\"'./assets/media/svg/icons/Navigation/Up-2.svg'\"\r\n cacheSVG=\"true\"\r\n class=\"svg-icon\"\r\n ></span>\r\n</div>\r\n<!--end::Scrolltop-->\r\n","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport KTLayoutHeader from \"./header.js\";\r\nimport KTCard from \"./../../components/card.js\";\r\nimport { KTUtil } from \"./../../components/util.js\";\r\nimport KTLayoutSubheader from \"./subheader.js\";\r\n\r\nvar KTLayoutStickyCard = function() {\r\n // Private properties\r\n\tvar _element;\r\n var _object;\r\n\r\n\t// Private functions\r\n\tvar _init = function() {\r\n\t\tvar offset = 300;\r\n\r\n\t\tif (typeof KTLayoutHeader !== 'undefined') {\r\n\t\t\toffset = KTLayoutHeader.getHeight();\r\n\t\t}\r\n\r\n _object = new KTCard(_element, {\r\n\t\t\tsticky: {\r\n\t\t\t\toffset: offset,\r\n\t\t\t\tzIndex: 90,\r\n\t\t\t\tposition: {\r\n\t\t\t\t\ttop: function() {\r\n\t\t\t\t\t\tvar pos = 0;\r\n var body = KTUtil.getBody();\r\n\r\n\t\t\t\t\t\tif (KTUtil.isBreakpointUp('lg')) {\r\n\t\t\t\t\t\t\tif (typeof KTLayoutHeader !== 'undefined' && KTLayoutHeader.isFixed()) {\r\n\t\t\t\t\t\t\t\tpos = pos + KTLayoutHeader.getHeight();\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (typeof KTLayoutSubheader !== 'undefined' && KTLayoutSubheader.isFixed()) {\r\n\t\t\t\t\t\t\t\tpos = pos + KTLayoutSubheader.getHeight();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif (typeof KTLayoutHeader !== 'undefined' && KTLayoutHeader.isFixedForMobile()) {\r\n\t\t\t\t\t\t\t\tpos = pos + KTLayoutHeader.getHeightForMobile();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tpos = pos - 1; // remove header border width\r\n\r\n\t\t\t\t\t\treturn pos;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tleft: function(card) {\r\n\t\t\t\t\t\treturn KTUtil.offset(_element).left;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tright: function(card) {\r\n\t\t\t\t\t\tvar body = KTUtil.getBody();\r\n\r\n\t\t\t\t\t\tvar cardWidth = parseInt(KTUtil.css(_element, 'width'));\r\n\t\t\t\t\t\tvar bodyWidth = parseInt(KTUtil.css(body, 'width'));\r\n\t\t\t\t\t\tvar cardOffsetLeft = KTUtil.offset(_element).left;\r\n\r\n\t\t\t\t\t\treturn bodyWidth - cardWidth - cardOffsetLeft;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t_object.initSticky();\r\n\r\n\t\tKTUtil.addResizeHandler(function() {\r\n\t\t\t_object.updateSticky();\r\n\t\t});\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n\t\t\t_init();\r\n\t\t},\r\n\r\n\t\tupdate: function() {\r\n\t\t\tif (_object) {\r\n\t\t\t\t_object.updateSticky();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutStickyCard;\r\n}\r\n\r\nexport default KTLayoutStickyCard;","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport { KTUtil } from \"./../../components/util.js\";\r\nimport KTLayoutContent from \"./content.js\";\r\n\r\nvar KTLayoutStretchedCard = function() {\r\n // Private properties\r\n\tvar _element;\r\n\r\n\t// Private functions\r\n\tvar _init = function() {\r\n\t\tvar scroll = KTUtil.find(_element, '.card-scroll');\r\n\t\tvar cardBody = KTUtil.find(_element, '.card-body');\r\n\t\tvar cardHeader = KTUtil.find(_element, '.card-header');\r\n\r\n\t\tvar height = KTLayoutContent.getHeight();\r\n\r\n\t\theight = height - parseInt(KTUtil.actualHeight(cardHeader));\r\n\r\n\t\theight = height - parseInt(KTUtil.css(_element, 'marginTop')) - parseInt(KTUtil.css(_element, 'marginBottom'));\r\n\t\theight = height - parseInt(KTUtil.css(_element, 'paddingTop')) - parseInt(KTUtil.css(_element, 'paddingBottom'));\r\n\r\n\t\theight = height - parseInt(KTUtil.css(cardBody, 'paddingTop')) - parseInt(KTUtil.css(cardBody, 'paddingBottom'));\r\n\t\theight = height - parseInt(KTUtil.css(cardBody, 'marginTop')) - parseInt(KTUtil.css(cardBody, 'marginBottom'));\r\n\r\n\t\theight = height - 3;\r\n\r\n\t\tKTUtil.css(scroll, 'height', height + 'px');\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n\t\t\t_init();\r\n\r\n // Re-calculate on window resize\r\n KTUtil.addResizeHandler(function() {\r\n\t\t\t\t_init();\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tupdate: function() {\r\n\t\t\t_init();\r\n\t\t}\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutStretchedCard;\r\n}\r\n\r\nexport default KTLayoutStretchedCard;","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport { KTUtil } from \"./../../components/util.js\";\r\nimport KTOffcanvas from \"./../../components/offcanvas.js\";\r\n\r\nvar KTLayoutAside = function() {\r\n // Private properties\r\n var _body;\r\n var _element;\r\n var _offcanvasObject;\r\n\r\n // Private functions\r\n\t// Initialize\r\n\tvar _init = function() {\r\n\t\tvar offcanvasClass = KTUtil.hasClass(_element, 'aside-offcanvas-default') ? 'aside-offcanvas-default' : 'aside';\r\n\r\n // Initialize mobile aside offcanvas\r\n\t\t_offcanvasObject = new KTOffcanvas(_element, {\r\n\t\t\tbaseClass: offcanvasClass,\r\n\t\t\toverlay: true,\r\n\t\t\tcloseBy: 'kt_aside_close_btn',\r\n\t\t\ttoggleBy: {\r\n\t\t\t\ttarget: 'kt_aside_mobile_toggle',\r\n\t\t\t\tstate: 'mobile-toggle-active'\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n _body = KTUtil.getBody();\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize\r\n _init();\r\n },\r\n\r\n getElement: function() {\r\n return _element;\r\n },\r\n\r\n getOffcanvas: function() {\r\n return _offcanvasObject;\r\n }\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutAside;\r\n}\r\n\r\nexport default KTLayoutAside;","/* eslint-disable */\r\n\"use strict\";\r\n\r\nimport { KTUtil } from \"./../../components/util.js\";\r\nimport KTMenu from \"./../../components/menu.js\";\r\nimport KTLayoutAside from \"./aside.js\";\r\n\r\nvar KTLayoutAsideMenu = function() {\r\n // Private properties\r\n var _element;\r\n var _menuObject;\r\n\r\n\t// Initialize\r\n\tvar _init = function() {\r\n\t\tvar menuDesktopMode = (KTUtil.attr(_element, 'data-menu-dropdown') === '1' ? 'dropdown' : 'accordion');\r\n var scroll;\r\n\r\n\t\tif (KTUtil.isBreakpointDown('lg') && KTUtil.attr(_element, 'data-menu-scroll') === '1') {\r\n\t\t\tscroll = {\r\n\t\t\t\trememberPosition: true, // remember position on page reload\r\n\t\t\t\theight: function() { // calculate available scrollable area height\r\n\t\t\t\t\tvar height = parseInt(KTUtil.getViewPort().height);\r\n\r\n\t\t\t\t\theight = height - (parseInt(KTUtil.css(_element, 'marginBottom')) + parseInt(KTUtil.css(_element, 'marginTop')));\r\n\r\n\t\t\t\t\treturn height;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t_menuObject = new KTMenu(_element, {\r\n\t\t\t// Vertical scroll\r\n\t\t\tscroll: scroll,\r\n\r\n\t\t\t// Submenu setup\r\n\t\t\tsubmenu: {\r\n\t\t\t\tdesktop: menuDesktopMode,\r\n\t\t\t\ttablet: 'accordion', // menu set to accordion in tablet mode\r\n\t\t\t\tmobile: 'accordion' // menu set to accordion in mobile mode\r\n\t\t\t},\r\n\r\n\t\t\t// Accordion setup\r\n\t\t\taccordion: {\r\n\t\t\t\texpandAll: false // allow having multiple expanded accordions in the menu\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t // Close aside offcanvas panel before page reload On tablet and mobile\r\n _menuObject.on('linkClick', function(menu) {\r\n if (KTUtil.isBreakpointDown('lg')) { // Tablet and mobile mode\r\n KTLayoutAside.getOffcanvas().hide(); // Hide offcanvas after general link click\r\n }\r\n });\r\n\t}\r\n\r\n // Public methods\r\n\treturn {\r\n\t\tinit: function(id) {\r\n _element = KTUtil.getById(id);\r\n\r\n if (!_element) {\r\n return;\r\n }\r\n\r\n // Initialize menu\r\n _init();\r\n\t\t},\r\n\r\n\t\tgetElement: function() {\r\n\t\t\treturn _element;\r\n\t\t},\r\n\r\n getMenu: function() {\r\n\t\t\treturn _menuObject;\r\n\t\t},\r\n\r\n pauseDropdownHover: function(time) {\r\n\t\t\tif (_menuObject) {\r\n\t\t\t\t_menuObject.pauseDropdownHover(time);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tcloseMobileOffcanvas: function() {\r\n\t\t\tif (_menuObject && KTUtil.isMobileDevice()) {\r\n\t\t\t\t_menuObject.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}();\r\n\r\n// Webpack support\r\nif (typeof module !== 'undefined') {\r\n\t// module.exports = KTLayoutAsideMenu;\r\n}\r\n\r\nexport default KTLayoutAsideMenu;","import { Component, OnInit, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { KTUtil } from '../../../../../assets/js/components/util';\r\nimport { NavigationCancel, NavigationEnd, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport KTLayoutStickyCard from '../../../../../assets/js/layout/base/sticky-card';\r\nimport KTLayoutStretchedCard from '../../../../../assets/js/layout/base/stretched-card';\r\nimport KTLayoutAside from '../../../../../assets/js/layout/base/aside';\r\nimport KTLayoutAsideMenu from '../../../../../assets/js/layout/base/aside-menu';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\n\r\n@Component({\r\n selector: 'app-scripts-init',\r\n templateUrl: './scripts-init.component.html',\r\n})\r\nexport class ScriptsInitComponent implements OnInit, AfterViewInit, OnDestroy {\r\n asideSelfMinimizeToggle = false;\r\n private unsubscribe: Subscription[] = []; // Read more: => https://brianflove.com/2016/12/11/anguar-2-unsubscribe-observables/\r\n\r\n constructor(private layout: LayoutService, private router: Router) { }\r\n\r\n ngOnInit(): void {\r\n this.asideSelfMinimizeToggle = this.layout.getProp(\r\n 'aside.self.minimize.toggle'\r\n );\r\n this.routingChanges();\r\n }\r\n\r\n ngAfterViewInit() {\r\n KTUtil.ready(() => {\r\n // Init Aside\r\n KTLayoutAside.init('kt_aside');\r\n // Init Aside Menu\r\n KTLayoutAsideMenu.init('kt_aside_menu');\r\n // Init Sticky Card\r\n KTLayoutStickyCard.init('kt_page_sticky_card');\r\n // Init Stretched Card\r\n KTLayoutStretchedCard.init('kt_page_stretched_card');\r\n });\r\n }\r\n\r\n routingChanges() {\r\n const routerSubscription = this.router.events.subscribe((event) => {\r\n if (event instanceof NavigationEnd || event instanceof NavigationCancel) {\r\n const offCanvas = KTLayoutAside.getOffcanvas();\r\n if (offCanvas) {\r\n offCanvas.hide();\r\n }\r\n const btnQuickUserClose = document.getElementById('kt_quick_user_close');\r\n if (btnQuickUserClose) {\r\n btnQuickUserClose.click();\r\n }\r\n }\r\n });\r\n this.unsubscribe.push(routerSubscription);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unsubscribe.forEach((sb) => sb.unsubscribe());\r\n }\r\n}\r\n","<!--begin::Main-->\r\n<ng-container *ngIf=\"selfLayout !== 'blank'; else blankLayout\">\r\n <!-- begin:: Header Mobile -->\r\n <app-header-mobile\r\n #ktHeaderMobile\r\n id=\"kt_header_mobile\"\r\n class=\"header-mobile\"\r\n [ngClass]=\"headerMobileClasses\"\r\n ></app-header-mobile>\r\n <!-- end:: Header Mobile -->\r\n <div class=\"d-flex flex-column flex-root\">\r\n <!--begin::Page-->\r\n <div class=\"d-flex flex-row flex-column-fluid page\">\r\n <!--begin::Wrapper-->\r\n <div class=\"d-flex flex-column flex-row-fluid wrapper\" id=\"kt_wrapper\">\r\n <!-- begin:: Header -->\r\n <app-header\r\n #ktHeader\r\n id=\"kt_header\"\r\n class=\"header\"\r\n [ngClass]=\"headerCSSClasses\"\r\n ></app-header>\r\n <!-- end:: Header -->\r\n\r\n <!-- begin:: Content -->\r\n <div\r\n class=\"content d-flex flex-column flex-column-fluid\"\r\n id=\"kt_content\"\r\n [ngClass]=\"contentClasses\"\r\n >\r\n <!-- begin:: Content Head -->\r\n <ng-container *ngIf=\"subheaderDisplay\">\r\n <app-subheader-wrapper></app-subheader-wrapper>\r\n </ng-container>\r\n <!-- end:: Content Head -->\r\n\r\n <!-- begin:: Content Body -->\r\n <ng-container *ngIf=\"contentExtended\">\r\n <ng-container *ngIf=\"asideSelfDisplay\">\r\n <div class=\"d-lg-flex flex-row-fluid\">\r\n \r\n <ng-container >\r\n <!--begin::DYNAMIC Aside-->\r\n <app-aside-dynamic\r\n #ktAside\r\n id=\"kt_aside\"\r\n class=\"aside aside-left d-flex flex-column flex-row-auto\"\r\n [ngClass]=\"asideCSSClasses\"\r\n ></app-aside-dynamic>\r\n <!--end::DYNAMIC Aside-->\r\n </ng-container>\r\n <div class=\"content-wrapper\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!asideSelfDisplay\">\r\n <router-outlet></router-outlet>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"!contentExtended\">\r\n <!--begin::Entry-->\r\n <div class=\"d-flex flex-column-fluid\">\r\n <!--begin::Container-->\r\n <div [ngClass]=\"contentContainerClasses\">\r\n <ng-container *ngIf=\"asideSelfDisplay\">\r\n <div class=\"d-lg-flex flex-row-fluid\">\r\n \r\n <ng-container >\r\n <!--begin::DYNAMIC Aside-->\r\n <app-aside-dynamic\r\n #ktAside\r\n id=\"kt_aside\"\r\n class=\"aside aside-left d-flex flex-column flex-row-auto\"\r\n [ngClass]=\"asideCSSClasses\"\r\n ></app-aside-dynamic>\r\n <!--end::DYNAMIC Aside-->\r\n </ng-container>\r\n\r\n <div class=\"content-wrapper flex-row-fluid\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!asideSelfDisplay\">\r\n <router-outlet></router-outlet>\r\n </ng-container>\r\n <!--end::Container-->\r\n </div>\r\n </div>\r\n <!--end::Entry-->\r\n </ng-container>\r\n <!-- end:: Content Body -->\r\n </div>\r\n <!-- end:: Content -->\r\n <!--begin::Footer-->\r\n <!-- compact -->\r\n <div style=\"height:30px;\">\r\n\r\n </div>\r\n <ng-container *ngIf=\"footerLayout === 'compact'\">\r\n <app-footer\r\n style=\"position: fixed;bottom: 0px;width: 100%;\"\r\n class=\"footer bg-white py-4 d-flex flex-lg-column\"\r\n id=\"kt_footer\"\r\n [ngClass]=\"footerCSSClasses\"\r\n ></app-footer>\r\n </ng-container>\r\n <!-- extended -->\r\n <ng-container *ngIf=\"footerLayout === 'extended'\">\r\n <app-footer\r\n class=\"footer kt-grid__item bgi-position-center-center bgi-size-cover bgi-no-cover\"\r\n id=\"kt_footer\"\r\n [ngClass]=\"footerCSSClasses\"\r\n style=\"position: fixed;bottom: 0px;width: 100%;background-image: url('./assets/media/bg/bg-2.jpg')\"\r\n >\r\n ></app-footer\r\n >\r\n </ng-container>\r\n <!--end::Footer-->\r\n </div>\r\n <!--end::Wrapper-->\r\n </div>\r\n <!-- end:: Body -->\r\n <!--end::Page-->\r\n\r\n <!--begin::Offcanvases-->\r\n <ng-container *ngIf=\"extrasSearchOffcanvasDisplay\">\r\n <app-search-offcanvas></app-search-offcanvas>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extrasNotificationsOffcanvasDisplay\">\r\n <app-notifications-offcanvas></app-notifications-offcanvas>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extrasQuickActionsOffcanvasDisplay\">\r\n <app-quick-actions-offcanvas></app-quick-actions-offcanvas>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extrasCartOffcanvasDisplay\">\r\n <app-cart-offcanvas></app-cart-offcanvas>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"extrasQuickPanelDisplay\">\r\n <app-quick-panel-offcanvas></app-quick-panel-offcanvas>\r\n </ng-container>\r\n <ng-container *ngIf=\"extrasUserOffcanvasDisplay\">\r\n <app-user-offcanvas></app-user-offcanvas>\r\n </ng-container>\r\n\r\n <app-toolbar></app-toolbar>\r\n\r\n <ng-container *ngIf=\"extrasScrollTopDisplay\">\r\n <app-scroll-top></app-scroll-top>\r\n </ng-container>\r\n <!--end::Offcanvases-->\r\n </div>\r\n</ng-container>\r\n\r\n<ng-template #blankLayout>\r\n <div class=\"d-flex flex-column flex-root\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n</ng-template>\r\n<app-scripts-init></app-scripts-init>\r\n<!--end::Main-->\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { TestComponent } from './test/test.component';\r\nimport { LayoutComponent } from './layout/layout.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'test',\r\n component: TestComponent\r\n },\r\n {\r\n path: '',\r\n component: LayoutComponent,\r\n children: [\r\n\r\n {\r\n path: 'dashboard',\r\n loadChildren: () =>\r\n import('./dashboard/dashboard.module').then((m) => m.DashboardModule),\r\n },\r\n {\r\n path: 'builder',\r\n loadChildren: () =>\r\n import('./builder/builder.module').then((m) => m.BuilderModule),\r\n },\r\n\r\n\r\n\r\n // ** cms */\r\n {\r\n path: 'core',\r\n loadChildren: () =>\r\n import('../cms-modules/core-main/core.module').then(m => m.CoreModule)\r\n },\r\n {\r\n path: 'coremodule',\r\n loadChildren: () =>\r\n import('../cms-modules/core-module/coreModule.module').then(m => m.CoreModuleModule)\r\n },\r\n {\r\n path: 'coremodulelog',\r\n loadChildren: () =>\r\n import('../cms-modules/core-module-log/core-module-log.module').then(m => m.CoreModuleLogModule)\r\n },\r\n {\r\n path: 'coretoken',\r\n loadChildren: () =>\r\n import('../cms-modules/core-token/coreToken.module').then(m => m.CoreTokenModule)\r\n },\r\n {\r\n path: 'corelog',\r\n loadChildren: () =>\r\n import('../cms-modules/core-log/coreLog.module').then(m => m.CoreLogModule)\r\n },\r\n\r\n {\r\n path: 'application',\r\n loadChildren: () =>\r\n import('../cms-modules/application/application.module').then(m => m.ApplicationModule)\r\n },\r\n {\r\n path: 'article',\r\n loadChildren: () =>\r\n import('../cms-modules/article/article.module').then(m => m.ArticleModule)\r\n },\r\n {\r\n path: 'bankpayment',\r\n loadChildren: () =>\r\n import('../cms-modules/bank-payment/bank-payment.module').then(m => m.BankPaymentModule)\r\n },\r\n {\r\n path: 'biography',\r\n loadChildren: () =>\r\n import('../cms-modules/biography/biography.module').then(m => m.BiographyModule)\r\n },\r\n {\r\n path: 'blog',\r\n loadChildren: () =>\r\n import('../cms-modules/blog/blog.module').then(m => m.BlogModule)\r\n },\r\n\r\n {\r\n path: 'linkmanagement',\r\n loadChildren: () =>\r\n import('../cms-modules/link-management/linkManagement.module').then(m => m.LinkManagementModule)\r\n },\r\n {\r\n path: 'member',\r\n loadChildren: () =>\r\n import('../cms-modules/member/member.module').then(m => m.MemberModule)\r\n },\r\n\r\n {\r\n path: 'news',\r\n loadChildren: () =>\r\n import('../cms-modules/news/news.module').then(m => m.NewsModule)\r\n },\r\n\r\n {\r\n path: 'filemanager',\r\n loadChildren: () =>\r\n import('../cms-modules/file-manager/fileManager.module').then(m => m.FileManagerModule)\r\n },\r\n {\r\n path: 'polling',\r\n loadChildren: () =>\r\n import('../cms-modules/polling/polling.module').then(m => m.PollingModule)\r\n },\r\n {\r\n path: 'sms',\r\n loadChildren: () =>\r\n import('../cms-modules/sms/sms.module').then(m => m.SmsModule)\r\n },\r\n {\r\n path: 'ticketing',\r\n loadChildren: () =>\r\n import('../cms-modules/ticketing/ticketing.module').then(m => m.TicketingModule)\r\n },\r\n {\r\n path: 'universalmenu',\r\n loadChildren: () =>\r\n import('../cms-modules/universal-menu/universalMenu.module').then(m => m.UniversalMenuModule)\r\n },\r\n {\r\n path: 'webdesigner',\r\n loadChildren: () =>\r\n import('../cms-modules/web-designer/webDesigner.module').then(m => m.WebDesignerModule)\r\n },\r\n\r\n {\r\n path: 'message',\r\n loadChildren: () => import('../cms-modules/message/message.module').then(m => m.MessageModule)\r\n },\r\n {\r\n path: 'crisis-management',\r\n loadChildren: () => import('../cms-modules/crisis-management/crisis-management.module').then(m => m.CrisisManagementModule)\r\n },\r\n {\r\n path: 'on-call',\r\n loadChildren: () => import('../cms-modules/on-call/on-call.module').then(m => m.OnCallModule)\r\n },\r\n {\r\n path: 'education',\r\n loadChildren: () => import('../cms-modules/education/education.module').then(m => m.EducationModule)\r\n },\r\n // ** cms */\r\n {\r\n path: '',\r\n redirectTo: 'dashboard', // dashboard // auth\r\n pathMatch: 'full',\r\n },\r\n {\r\n path: '**',\r\n redirectTo: 'error/404',\r\n },\r\n ],\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class PagesRoutingModule { }\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n AfterViewInit,\r\n OnDestroy,\r\n} from '@angular/core';\r\n\r\nimport KTLayoutContent from '../../../assets/js/layout/base/content';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { NtkCmsApiStoreService, TokenInfoModel } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { Subscription } from 'rxjs';\r\nimport { LayoutService } from 'src/app/core/services/layout.service';\r\nimport { LayoutInitService } from 'src/app/core/services/layout-init.service';\r\n\r\n@Component({\r\n selector: 'app-layout',\r\n templateUrl: './layout.component.html',\r\n styleUrls: ['./layout.component.scss'],\r\n})\r\nexport class LayoutComponent implements OnInit, AfterViewInit , OnDestroy {\r\n // Public variables\r\n selfLayout = 'default';\r\n asideSelfDisplay: true;\r\n asideMenuStatic: true;\r\n contentClasses = '';\r\n contentContainerClasses = '';\r\n subheaderDisplay = true;\r\n contentExtended: false;\r\n asideCSSClasses: string;\r\n asideHTMLAttributes: any = {};\r\n headerMobileClasses = '';\r\n headerMobileAttributes = {};\r\n footerDisplay: boolean;\r\n footerLayout: string;\r\n footerCSSClasses: string;\r\n headerCSSClasses: string;\r\n headerHTMLAttributes: any = {};\r\n // offcanvases\r\n extrasSearchOffcanvasDisplay = false;\r\n extrasNotificationsOffcanvasDisplay = false;\r\n extrasQuickActionsOffcanvasDisplay = false;\r\n extrasCartOffcanvasDisplay = false;\r\n extrasUserOffcanvasDisplay = false;\r\n extrasQuickPanelDisplay = false;\r\n extrasScrollTopDisplay = false;\r\n @ViewChild('ktAside', { static: true }) ktAside: ElementRef;\r\n @ViewChild('ktHeaderMobile', { static: true }) ktHeaderMobile: ElementRef;\r\n @ViewChild('ktHeader', { static: true }) ktHeader: ElementRef;\r\n\r\n constructor(\r\n private initService: LayoutInitService,\r\n private layout: LayoutService,\r\n private tokenHelper: TokenHelper,\r\n ) {\r\n this.initService.init();\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.tokenInfo = value;\r\n });\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.tokenInfo = next;\r\n });\r\n }\r\n tokenInfo: TokenInfoModel = new TokenInfoModel();\r\n cmsApiStoreSubscribe: Subscription;\r\n\r\n ngOnInit(): void {\r\n // First Token Info\r\n this.tokenHelper.CurrentTokenInfoRenew();\r\n this.tokenHelper.CheckRouteByToken();\r\n\r\n // build view by layout config settings\r\n this.selfLayout = this.layout.getProp('self.layout');\r\n this.asideSelfDisplay = this.layout.getProp('aside.self.display');\r\n this.asideMenuStatic = this.layout.getProp('aside.menu.static');\r\n this.subheaderDisplay = this.layout.getProp('subheader.display');\r\n this.contentClasses = this.layout.getStringCSSClasses('content');\r\n this.contentContainerClasses = this.layout.getStringCSSClasses(\r\n 'content_container'\r\n );\r\n this.contentExtended = this.layout.getProp('content.extended');\r\n this.asideHTMLAttributes = this.layout.getHTMLAttributes('aside');\r\n this.asideCSSClasses = this.layout.getStringCSSClasses('aside');\r\n this.headerMobileClasses = this.layout.getStringCSSClasses('header_mobile');\r\n this.headerMobileAttributes = this.layout.getHTMLAttributes(\r\n 'header_mobile'\r\n );\r\n // Footer view\r\n this.footerDisplay = this.layout.getProp('footer.display');\r\n this.footerCSSClasses = this.layout.getStringCSSClasses('footer');\r\n this.footerLayout = this.layout.getProp('footer.layout');\r\n // Header view\r\n this.headerCSSClasses = this.layout.getStringCSSClasses('header');\r\n this.headerHTMLAttributes = this.layout.getHTMLAttributes('header');\r\n // offcanvases\r\n if (this.layout.getProp('extras.search.display')) {\r\n this.extrasSearchOffcanvasDisplay =\r\n this.layout.getProp('extras.search.layout') === 'offcanvas';\r\n }\r\n\r\n if (this.layout.getProp('extras.notifications.display')) {\r\n this.extrasNotificationsOffcanvasDisplay =\r\n this.layout.getProp('extras.notifications.layout') === 'offcanvas';\r\n }\r\n\r\n if (this.layout.getProp('extras.quickActions.display')) {\r\n this.extrasQuickActionsOffcanvasDisplay =\r\n this.layout.getProp('extras.quickActions.layout') === 'offcanvas';\r\n }\r\n\r\n if (this.layout.getProp('extras.cart.display')) {\r\n this.extrasCartOffcanvasDisplay =\r\n this.layout.getProp('extras.cart.layout') === 'offcanvas';\r\n }\r\n\r\n if (this.layout.getProp('extras.user.display')) {\r\n this.extrasUserOffcanvasDisplay =\r\n this.layout.getProp('extras.user.layout') === 'offcanvas';\r\n }\r\n\r\n this.extrasQuickPanelDisplay = this.layout.getProp(\r\n 'extras.quickPanel.display'\r\n );\r\n\r\n this.extrasScrollTopDisplay = this.layout.getProp(\r\n 'extras.scrolltop.display'\r\n );\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n ngAfterViewInit(): void {\r\n if (this.ktAside) {\r\n for (const key in this.asideHTMLAttributes) {\r\n if (this.asideHTMLAttributes.hasOwnProperty(key)) {\r\n this.ktAside.nativeElement.attributes[key] = this.asideHTMLAttributes[\r\n key\r\n ];\r\n }\r\n }\r\n }\r\n\r\n if (this.ktHeaderMobile) {\r\n for (const key in this.headerMobileAttributes) {\r\n if (this.headerMobileAttributes.hasOwnProperty(key)) {\r\n this.ktHeaderMobile.nativeElement.attributes[\r\n key\r\n ] = this.headerMobileAttributes[key];\r\n }\r\n }\r\n }\r\n\r\n if (this.ktHeader) {\r\n for (const key in this.headerHTMLAttributes) {\r\n if (this.headerHTMLAttributes.hasOwnProperty(key)) {\r\n this.ktHeader.nativeElement.attributes[\r\n key\r\n ] = this.headerHTMLAttributes[key];\r\n }\r\n }\r\n }\r\n // Init Content\r\n KTLayoutContent.init('kt_content');\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { InlineSVGModule } from 'ng-inline-svg-2';\r\nimport { Subheader1Component } from './subheader1/subheader1.component';\r\nimport { Subheader2Component } from './subheader2/subheader2.component';\r\nimport { Subheader3Component } from './subheader3/subheader3.component';\r\nimport { Subheader4Component } from './subheader4/subheader4.component';\r\nimport { Subheader5Component } from './subheader5/subheader5.component';\r\nimport { Subheader6Component } from './subheader6/subheader6.component';\r\nimport { Subheader7Component } from './subheader7/subheader7.component';\r\nimport { SubheaderWrapperComponent } from './subheader-wrapper/subheader-wrapper.component';\r\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { DropdownMenusModule } from '../../content/dropdown-menus/dropdown-menus.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n Subheader1Component,\r\n Subheader2Component,\r\n Subheader3Component,\r\n Subheader4Component,\r\n Subheader5Component,\r\n Subheader6Component,\r\n Subheader7Component,\r\n SubheaderWrapperComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n InlineSVGModule,\r\n NgbDropdownModule,\r\n DropdownMenusModule,\r\n ],\r\n exports: [SubheaderWrapperComponent],\r\n})\r\nexport class SubheaderModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { InlineSVGModule } from 'ng-inline-svg-2';\r\nimport { PERFECT_SCROLLBAR_CONFIG } from 'ngx-perfect-scrollbar';\r\nimport { PerfectScrollbarConfigInterface } from 'ngx-perfect-scrollbar';\r\nimport { SearchDropdownInnerComponent } from './dropdown-inner/search-dropdown-inner/search-dropdown-inner.component';\r\nimport { NotificationsDropdownInnerComponent } from './dropdown-inner/notifications-dropdown-inner/notifications-dropdown-inner.component';\r\nimport { QuickActionsDropdownInnerComponent } from './dropdown-inner/quick-actions-dropdown-inner/quick-actions-dropdown-inner.component';\r\nimport { CartDropdownInnerComponent } from './dropdown-inner/cart-dropdown-inner/cart-dropdown-inner.component';\r\nimport { UserDropdownInnerComponent } from './dropdown-inner/user-dropdown-inner/user-dropdown-inner.component';\r\nimport { SearchOffcanvasComponent } from './offcanvas/search-offcanvas/search-offcanvas.component';\r\nimport { SearchResultComponent } from './dropdown-inner/search-dropdown-inner/search-result/search-result.component';\r\nimport { NotificationsOffcanvasComponent } from './offcanvas/notifications-offcanvas/notifications-offcanvas.component';\r\nimport { QuickActionsOffcanvasComponent } from './offcanvas/quick-actions-offcanvas/quick-actions-offcanvas.component';\r\nimport { CartOffcanvasComponent } from './offcanvas/cart-offcanvas/cart-offcanvas.component';\r\nimport { QuickPanelOffcanvasComponent } from './offcanvas/quick-panel-offcanvas/quick-panel-offcanvas.component';\r\nimport { UserOffcanvasComponent } from './offcanvas/user-offcanvas/user-offcanvas.component';\r\nimport { ScrollTopComponent } from './scroll-top/scroll-top.component';\r\nimport { ToolbarComponent } from './toolbar/toolbar.component';\r\nimport { SharedModule } from 'src/app/shared.module';\r\nimport { TicketingTaskService } from 'projects/ntk-hospital-api/src/public-api';\r\n\r\nconst DEFAULT_PERFECT_SCROLLBAR_CONFIG: PerfectScrollbarConfigInterface = {\r\n suppressScrollX: true,\r\n};\r\n\r\n@NgModule({\r\n declarations: [\r\n SearchDropdownInnerComponent,\r\n NotificationsDropdownInnerComponent,\r\n QuickActionsDropdownInnerComponent,\r\n CartDropdownInnerComponent,\r\n UserDropdownInnerComponent,\r\n SearchOffcanvasComponent,\r\n SearchResultComponent,\r\n NotificationsOffcanvasComponent,\r\n QuickActionsOffcanvasComponent,\r\n CartOffcanvasComponent,\r\n QuickPanelOffcanvasComponent,\r\n UserOffcanvasComponent,\r\n ScrollTopComponent,\r\n ToolbarComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n InlineSVGModule,\r\n // PerfectScrollbarModule,\r\n // CoreModule,\r\n RouterModule,\r\n SharedModule.forRoot(),\r\n ],\r\n providers: [\r\n {\r\n provide: PERFECT_SCROLLBAR_CONFIG,\r\n useValue: DEFAULT_PERFECT_SCROLLBAR_CONFIG,\r\n },\r\n TicketingTaskService\r\n ],\r\n exports: [\r\n SearchDropdownInnerComponent,\r\n NotificationsDropdownInnerComponent,\r\n QuickActionsDropdownInnerComponent,\r\n CartDropdownInnerComponent,\r\n UserDropdownInnerComponent,\r\n SearchOffcanvasComponent,\r\n NotificationsOffcanvasComponent,\r\n QuickActionsOffcanvasComponent,\r\n CartOffcanvasComponent,\r\n QuickPanelOffcanvasComponent,\r\n UserOffcanvasComponent,\r\n ToolbarComponent,\r\n ScrollTopComponent,\r\n\r\n ],\r\n})\r\nexport class ExtrasModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { PagesRoutingModule } from './pages.routing';\r\nimport {\r\n NgbDropdownModule,\r\n NgbProgressbarModule,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { LayoutComponent } from './layout/layout.component';\r\nimport { ScriptsInitComponent } from './layout/init/scipts-init/scripts-init.component';\r\nimport { HeaderMobileComponent } from './layout/components/header-mobile/header-mobile.component';\r\nimport { FooterComponent } from './layout/components/footer/footer.component';\r\nimport { HeaderComponent } from './layout/components/header/header.component';\r\nimport { TopbarComponent } from './layout/components/topbar/topbar.component';\r\n\r\nimport { SubheaderModule } from '../_metronic/partials/layout/subheader/subheader.module';\r\nimport { AsideDynamicComponent } from './layout/components/aside-dynamic/aside-dynamic.component';\r\nimport { HeaderMenuDynamicComponent } from './layout/components/header/header-menu-dynamic/header-menu-dynamic.component';\r\nimport { CoreSiteModule } from '../cms-modules/core-main/site/coreSite.module';\r\nimport { SharedModule } from '../shared.module';\r\nimport { CoreAuthService, CoreConfigurationService, CoreCpMainMenuService, CoreModuleService } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { InlineSVGModule } from 'ng-inline-svg-2';\r\nimport { TestComponent } from './test/test.component';\r\nimport { ExtrasModule } from './extras/extras.module';\r\nimport { DynamicHeaderMenuService } from '../core/services/dynamic-header-menu.service';\r\nimport { DynamicAsideMenuService } from '../core/services/dynamic-aside-menu.service';\r\n\r\n@NgModule({\r\n declarations: [\r\n LayoutComponent,\r\n ScriptsInitComponent,\r\n HeaderMobileComponent,\r\n FooterComponent,\r\n HeaderComponent,\r\n TopbarComponent,\r\n AsideDynamicComponent,\r\n HeaderMenuDynamicComponent,\r\n TestComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n PagesRoutingModule,\r\n InlineSVGModule,\r\n ExtrasModule,\r\n NgbDropdownModule,\r\n NgbProgressbarModule,\r\n // CoreModule,\r\n SubheaderModule,\r\n CoreSiteModule,\r\n SharedModule.forRoot(),\r\n ],\r\n providers: [\r\n CoreModuleService,\r\n CoreCpMainMenuService,\r\n CoreConfigurationService,\r\n CoreAuthService,\r\n DynamicHeaderMenuService,\r\n DynamicAsideMenuService,\r\n\r\n ]\r\n})\r\nexport class PagesModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-confirmation-dialog',\r\n templateUrl: './cmsConfirmationDialog.component.html',\r\n})\r\nexport class ConfirmationDialogComponent implements OnInit {\r\n\r\n @Input() title: string;\r\n @Input() message: string;\r\n @Input() btnOkText: string;\r\n @Input() btnCancelText: string;\r\n\r\n constructor(private activeModal: NgbActiveModal) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n public decline(): void {\r\n this.activeModal.close(false);\r\n }\r\n\r\n public accept(): void {\r\n this.activeModal.close(true);\r\n }\r\n\r\n public dismiss(): void {\r\n this.activeModal.dismiss();\r\n }\r\n\r\n}\r\n","<div class=\"modal-header\">\r\n <h4 class=\"modal-title\">{{ title }}</h4>\r\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"dismiss()\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n</div>\r\n<div class=\"modal-body\" [innerHTML]=\"message\">\r\n\r\n</div>\r\n<div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"decline()\">{{ btnCancelText }}</button>\r\n <button type=\"button\" class=\"btn btn-danger\" (click)=\"accept()\">{{ btnOkText }}</button>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ConfirmationDialogComponent } from './cmsConfirmationDialog.component';\r\n@Injectable()\r\nexport class CmsConfirmationDialogService {\r\n constructor(private modalService: NgbModal) { }\r\n public confirm(\r\n title: string,\r\n message: string,\r\n btnOkText: string = 'OK',\r\n btnCancelText: string = 'Cancel',\r\n dialogSize: 'sm'|'lg' = 'sm'): Promise<boolean> {\r\n \r\n const modalRef = this.modalService.open(ConfirmationDialogComponent, { size: dialogSize });\r\n modalRef.componentInstance.title = title;\r\n modalRef.componentInstance.message = message;\r\n modalRef.componentInstance.btnOkText = btnOkText;\r\n modalRef.componentInstance.btnCancelText = btnCancelText;\r\n return modalRef.result;\r\n }\r\n\r\n}\r\n","<div *ngIf=\"optionsData.data.show\" class=\"alert alert-info\" style=\"direction: ltr\">\r\n <!-- FileType Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"Ùرمت Ùایل خروجی\" [(ngModel)]=\"filterModel.exportFile.fileType\"\r\n name=\"filterModel.exportFile.FileType\" #RecordStatus=\"ngModel\"\r\n panelClass=\"recordStatus-{{ filterModel.exportFile.fileType }}\" required>\r\n <mat-option *ngFor=\"\r\n let item of fileTypeListItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">انتخاب Ùرمت Ùایل</mat-hint>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n RecordStatus is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- RecieveMethod Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-select placeholder=\"روش دریاÙت\" [(ngModel)]=\"filterModel.exportFile.recieveMethod\"\r\n name=\"filterModel.exportFile.recieveMethod\" #RecordStatus=\"ngModel\"\r\n panelClass=\"recordStatus-{{ filterModel.exportFile.recieveMethod }}\" required>\r\n <mat-option *ngFor=\"\r\n let item of recieveMethodListItems;\r\n index as i\r\n \" [value]=\"item.value\">{{ item.description }}</mat-option>\r\n </mat-select>\r\n <mat-hint style=\"text-align: left;\">انتخاب روش دریاÙت Ùایل</mat-hint>\r\n <mat-error *ngIf=\"RecordStatus.errors?.required\">\r\n RecordStatus is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- CurrentPageNumber Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>از صÙØÙ‡</mat-label>\r\n <input matInput [(ngModel)]=\"filterModel.currentPageNumber\" name=\"filterModel.currentPageNumber\" #CurrentPageNumber\r\n type=\"number\" placeholder=\"شماره صÙØÙ‡\" required />\r\n <mat-icon matSuffix *ngIf=\"filterModel.currentPageNumber\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"filterModel.currentPageNumber =0\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-error *ngIf=\"CurrentPageNumber.errors?.required\">\r\n Current Page Number is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <!-- RowPerPage Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>تعداد ردیÙ</mat-label>\r\n <input matInput [(ngModel)]=\"filterModel.rowPerPage\" name=\"filterModel.rowPerPage\" #RowPerPage type=\"number\"\r\n placeholder=\"تعداد ردی٠خروجی Ùایل\" required />\r\n <mat-icon matSuffix *ngIf=\"filterModel.rowPerPage\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"filterModel.rowPerPage = 100\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-error *ngIf=\"RowPerPage.errors?.required\">\r\n Row Per Page is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <!-- SkipRowData Field -->\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label>پرش از تعداد ردیÙ</mat-label>\r\n <input matInput [(ngModel)]=\"filterModel.skipRowData\" name=\"filterModel.skipRowData\" #SkipRowData type=\"number\"\r\n placeholder=\"عدد تعداد ردی٠ردی٠پرش\" required />\r\n <mat-icon matSuffix *ngIf=\"filterModel.skipRowData\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"filterModel.skipRowData =0\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n <mat-error *ngIf=\"SkipRowData.errors?.required\">\r\n Skip Row Data is <strong>{{'MESSAGE.required' | translate}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <button (click)=\"onSubmit()\" type=\"button\" class=\"btn btn-warning BTN\">{{'ACTION.FILE_CREATION' |translate}}</button>\r\n <mat-list>\r\n <div mat-subheader>لیست دانلود</div>\r\n <mat-list-item *ngFor=\"let folder of modelData| keyvalue\">\r\n <a href=\"{{folder.value}}\" target=\"_blank\"><mat-icon mat-list-icon>download</mat-icon></a>\r\n <div mat-line><a href=\"{{folder.value}}\" target=\"_blank\"> {{folder.key}}</a></div>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n </mat-list>\r\n</div>\r\n","import { EnumInfoModel, ExportFileModel, FilterDataModel, FilterModel } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { EventEmitter } from '@angular/core';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { ComponentOptionExportModel } from 'src/app/core/cmsComponentModels/base/componentOptionExportModel';\r\nimport { Output } from '@angular/core';\r\nimport { Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-cms-export-list',\r\n templateUrl: './cmsExportList.component.html',\r\n})\r\nexport class CmsExportListComponent implements OnInit {\r\n constructor() {\r\n let eum = new EnumInfoModel();\r\n eum.value = 1;\r\n eum.key = 'Excel';\r\n eum.description = 'Excel';\r\n this.fileTypeListItems.push(eum);\r\n\r\n eum = new EnumInfoModel();\r\n eum.value = 2;\r\n eum.key = 'PDF';\r\n eum.description = 'PDF';\r\n this.fileTypeListItems.push(eum);\r\n\r\n eum = new EnumInfoModel();\r\n eum.value = 3;\r\n eum.key = 'Text';\r\n eum.description = 'Text';\r\n this.fileTypeListItems.push(eum);\r\n\r\n\r\n eum = new EnumInfoModel();\r\n eum.value = 0;\r\n eum.key = 'Now';\r\n eum.description = 'Now';\r\n this.recieveMethodListItems.push(eum);\r\n\r\n eum = new EnumInfoModel();\r\n eum.value = 1;\r\n eum.key = 'Email';\r\n eum.description = 'Email';\r\n this.recieveMethodListItems.push(eum);\r\n\r\n eum = new EnumInfoModel();\r\n eum.value = 2;\r\n eum.key = 'FileManager';\r\n eum.description = 'FileManager';\r\n this.recieveMethodListItems.push(eum);\r\n }\r\n public optionsData: ComponentOptionExportModel = new ComponentOptionExportModel();\r\n @Output() optionsChange: EventEmitter<ComponentOptionExportModel> = new EventEmitter<ComponentOptionExportModel>();\r\n @Input() set options(model: ComponentOptionExportModel) {\r\n if (!model) {\r\n model = new ComponentOptionExportModel();\r\n }\r\n this.optionsData = model;\r\n this.optionsData.childMethods = {\r\n setExportLinkFile: (x: Map<string, string>) => this.setExportLinkFile(x),\r\n setExportFilterModel: (x: FilterModel) => this.setExportFilterModel(x),\r\n };\r\n this.optionsChange.emit(model);\r\n }\r\n get options(): ComponentOptionExportModel {\r\n return this.optionsData;\r\n }\r\n exportFileModel: ExportFileModel = new ExportFileModel();\r\n filterModel: FilterModel = new FilterModel();\r\n modelData: Map<string, string> = new Map<string, string>();\r\n fileTypeListItems: Array<EnumInfoModel> = new Array<EnumInfoModel>();\r\n recieveMethodListItems: Array<EnumInfoModel> = new Array<EnumInfoModel>();\r\n ngOnInit(): void { }\r\n setExportLinkFile(model: Map<string, string>): void {\r\n this.modelData = model;\r\n }\r\n setExportFilterModel(model: FilterModel): void {\r\n this.filterModel = JSON.parse(JSON.stringify(model));\r\n if (!this.filterModel.exportFile) {\r\n this.filterModel.exportFile = new ExportFileModel();\r\n }\r\n }\r\n\r\n onSubmit(): void {\r\n if (this.optionsData.parentMethods) {\r\n this.modelData = new Map<string, string>();\r\n this.optionsData.parentMethods.onSubmit(this.filterModel);\r\n }\r\n }\r\n}\r\n","<!--begin::Notice-->\r\n\r\n<div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"alert alert-custom alert-white alert-shadow gutter-b\" [ngClass]=\"classes\" role=\"alert\">\r\n <ng-container *ngIf=\"icon || svg\">\r\n <div class=\"alert-icon alert-icon-top\">\r\n <ng-container *ngIf=\"svg\">\r\n <span class=\"svg-icon svg-icon-3x svg-icon-primary\" [inlineSVG]=\"svg\"></span>\r\n </ng-container>\r\n <ng-container *ngIf=\"icon\">\r\n <i [ngClass]=\"icon\"></i>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div class=\"alert-text\">\r\n <h4> {{ title }}</h4>\r\n <div [innerHTML]=\"description\"></div>\r\n <div *ngIf=\"bodyShow\" [innerHTML]=\"body\"></div>\r\n </div>\r\n <div style=\"align-self: end;\">\r\n <button type=\"button\" *ngIf=\"!bodyShow&& body?.length>0\" class=\"btn btn-outline-primary\"\r\n (click)=\"onActionBottunClick()\">\r\n بیشتر...\r\n </button>\r\n <button type=\"button\" *ngIf=\"bodyShow\" class=\"btn btn-outline-primary\" (click)=\"onActionCloseBottunClick()\">\r\n بستن راهنما\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--end::Notice-->","import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { CoreGuideService } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { TokenHelper } from 'src/app/core/helpers/tokenHelper';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'app-cms-guide-notice',\r\n templateUrl: './cms-guide-notice.component.html',\r\n})\r\nexport class CmsGuideNoticeComponent implements OnInit, OnDestroy {\r\n\r\n @Input() Identity: number;\r\n @Input() Key: string;\r\n @Input() title: string;\r\n description: string;\r\n body: string;\r\n @Input() classes: string;\r\n @Input() icon: string;\r\n @Input() svg: string;\r\n\r\n constructor(\r\n // private activeModal: NgbActiveModal,\r\n private tokenHelper: TokenHelper,\r\n private cdr: ChangeDetectorRef,\r\n private coreGuideService: CoreGuideService,\r\n private cmsToastrService: CmsToastrService,\r\n ) { }\r\n closeResult = '';\r\n cmsApiStoreSubscribe: Subscription;\r\n lang = '';\r\n ngOnInit(): void {\r\n\r\n this.tokenHelper.getCurrentToken().then((value) => {\r\n this.lang = value.language;\r\n this.onGetOne();\r\n });\r\n this.cmsApiStoreSubscribe = this.tokenHelper.getCurrentTokenOnChange().subscribe((next) => {\r\n this.lang = next.language;\r\n this.onGetOne();\r\n });\r\n\r\n }\r\n ngOnDestroy(): void {\r\n this.cmsApiStoreSubscribe.unsubscribe();\r\n }\r\n bodyShow = false;\r\n onGetOne(): void {\r\n if (this.Identity > 0) {\r\n this.coreGuideService.ServiceGetOneById(this.Identity).pipe(\r\n map(\r\n (next) => {\r\n if (next.isSuccess) {\r\n\r\n switch (this.lang) {\r\n case 'fa': {\r\n this.title = next.item.titleFa;\r\n this.description = next.item.descriptionFa;\r\n this.body = next.item.bodyFa;\r\n break;\r\n }\r\n case 'en': {\r\n this.title = next.item.titleEn;\r\n this.description = next.item.descriptionEn;\r\n this.body = next.item.bodyEn;\r\n break;\r\n }\r\n case 'ar': {\r\n this.title = next.item.titleAr;\r\n this.description = next.item.descriptionAr;\r\n this.body = next.item.bodyAr;\r\n break;\r\n }\r\n case 'de': {\r\n this.title = next.item.titleDe;\r\n this.description = next.item.descriptionDe;\r\n this.body = next.item.bodyDe;\r\n break;\r\n }\r\n default: {\r\n this.title = next.item.titleFa;\r\n this.description = next.item.descriptionFa;\r\n this.body = next.item.bodyFa;\r\n break;\r\n }\r\n }\r\n\r\n } else if (!environment.production) {\r\n\r\n this.cmsToastrService.typeWarningMessage(next.errorMessage, this.Key + ' راهنما یاÙت نشد ');\r\n console.log( this.Key , ' راهنما یاÙت نشد ');\r\n }\r\n else {\r\n console.log( this.Key , ' راهنما یاÙت نشد ');\r\n }\r\n },\r\n (error) => {\r\n this.cmsToastrService.typeError(error);\r\n })\r\n ).toPromise();\r\n } else if (this.Key && this.Key.length > 0) {\r\n this.coreGuideService.ServiceGetOneByKey(this.Key).pipe(\r\n map(\r\n (next) => {\r\n if (next.isSuccess) {\r\n\r\n switch (this.lang) {\r\n case 'fa': {\r\n this.title = next.item.titleFa;\r\n this.description = next.item.descriptionFa;\r\n this.body = next.item.bodyFa;\r\n break;\r\n }\r\n case 'en': {\r\n this.title = next.item.titleEn;\r\n this.description = next.item.descriptionEn;\r\n this.body = next.item.bodyEn;\r\n break;\r\n }\r\n case 'ar': {\r\n this.title = next.item.titleAr;\r\n this.description = next.item.descriptionAr;\r\n this.body = next.item.bodyAr;\r\n break;\r\n }\r\n case 'de': {\r\n this.title = next.item.titleDe;\r\n this.description = next.item.descriptionDe;\r\n this.body = next.item.bodyDe;\r\n break;\r\n }\r\n default: {\r\n this.title = next.item.titleFa;\r\n this.description = next.item.descriptionFa;\r\n this.body = next.item.bodyFa;\r\n break;\r\n }\r\n }\r\n\r\n } else if (!environment.production) {\r\n\r\n this.cmsToastrService.typeWarningMessage(next.errorMessage, this.Key + ' راهنما یاÙت نشد ');\r\n console.log( this.Key , ' راهنما یاÙت نشد ');\r\n }\r\n else {\r\n console.log( this.Key , ' راهنما یاÙت نشد ');\r\n }\r\n },\r\n (error) => {\r\n this.cmsToastrService.typeError(error);\r\n })\r\n ).toPromise();\r\n\r\n }\r\n }\r\n\r\n onActionBottunClick() {\r\n this.bodyShow = true;\r\n this.cdr.detectChanges();\r\n }\r\n onActionCloseBottunClick() {\r\n this.bodyShow = false;\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n","<mat-form-field class=\"ntk-full-width\">\r\n <input type=\"text\" placeholder=\"{{optionPlaceholder}}\" [attr.disabled]=\"optionDisabled? true : null\" aria-label=\"Assignee\" matInput [formControl]=\"formControl\" [matAutocomplete]=\"auto34\">\r\n <mat-autocomplete #auto34=\"matAutocomplete\" [displayWith]=\"displayFn\" (optionSelected)=\"onActionSelect($event.option.value)\">\r\n <mat-option *ngFor=\"let state of filteredOptions | async\" [value]=\"state\" [disabled]=\"optionDisabled\">\r\n <span>{{ displayOption(state) }}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon matSuffix *ngIf=\"dataModelSelect.id\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"onActionSelectClear()\">close</mat-icon>\r\n <ng-content></ng-content>\r\n</mat-form-field>\r\n","import { Component, OnInit, Input, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\nimport {\r\n CoreEnumService,\r\n ErrorExceptionResult,\r\n FilterDataModel,\r\n FilterModel,\r\n CoreHISModel,\r\n CoreHISService,\r\n EnumFilterDataModelSearchTypes,\r\n EnumClauseType\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { Output } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n\r\n@Component({\r\n selector: 'app-cms-his-selector',\r\n templateUrl: './cmsHisSelector.component.html',\r\n})\r\nexport class CmsHISSelectorComponent implements OnInit {\r\n\r\n constructor(\r\n public coreEnumService: CoreEnumService,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n public categoryService: CoreHISService,\r\n ) {\r\n this.loading.cdr = this.cdr; this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n }\r\n dataModelResult: ErrorExceptionResult<CoreHISModel> = new ErrorExceptionResult<CoreHISModel>();\r\n dataModelSelect: CoreHISModel = new CoreHISModel();\r\n formControl = new FormControl();\r\n filteredOptions: Observable<CoreHISModel[]>;\r\n @Input() optionDisabled = false;\r\n @Input() optionSelectFirstItem = false;\r\n @Input() optionPlaceholder = '';\r\n @Output() optionChange = new EventEmitter<CoreHISModel>();\r\n @Input() optionReload = () => this.onActionReload();\r\n @Input() set optionSelectForce(x: string | CoreHISModel) {\r\n this.onActionSelectForce(x);\r\n }\r\n\r\n _loading: ProgressSpinnerModel = new ProgressSpinnerModel();\r\n get loading(): ProgressSpinnerModel {\r\n return this._loading;\r\n }\r\n @Input() set loading(value: ProgressSpinnerModel) {\r\n this._loading = value;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadOptions();\r\n }\r\n loadOptions(): void {\r\n this.filteredOptions = this.formControl.valueChanges\r\n .pipe(\r\n startWith(''),\r\n debounceTime(1000),\r\n distinctUntilChanged(),\r\n switchMap(val => {\r\n if (typeof val === 'string' || typeof val === 'number') {\r\n return this.DataGetAll(val);\r\n }\r\n return this.DataGetAll('');\r\n }),\r\n // tap(() => this.myControl.setValue(this.options[0]))\r\n );\r\n }\r\n\r\n displayFn(model?: CoreHISModel): string | undefined {\r\n return model ? (model.title) : undefined;\r\n }\r\n displayOption(model?: CoreHISModel): string | undefined {\r\n return model ? (model.title) : undefined;\r\n }\r\n async DataGetAll(text: string | number | any): Promise<CoreHISModel[]> {\r\n const filteModel = new FilterModel();\r\n filteModel.rowPerPage = 20;\r\n filteModel.accessLoad = true;\r\n // this.loading.backdropEnabled = false;\r\n if (text && text.length > 0) {\r\n let filter = new FilterDataModel();\r\n\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'Title';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n\r\n if (text && typeof +text === 'string' && +text > 0) {\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'Id';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Equal;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n\r\n }\r\n }\r\n\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n return await this.categoryService.ServiceGetAll(filteModel)\r\n .pipe(\r\n map(response => {\r\n this.dataModelResult = response;\r\n /*select First Item */\r\n if (this.optionSelectFirstItem &&\r\n (!this.dataModelSelect || !this.dataModelSelect.id || this.dataModelSelect.id.length == 0) &&\r\n this.dataModelResult.listItems.length > 0) {\r\n this.optionSelectFirstItem = false;\r\n setTimeout(() => { this.formControl.setValue(this.dataModelResult.listItems[0]); }, 1000);\r\n this.onActionSelect(this.dataModelResult.listItems[0]);\r\n }\r\n /*select First Item */\r\n this.loading.Stop(pName);\r\n\r\n return response.listItems;\r\n })\r\n ).toPromise();\r\n }\r\n onActionSelect(model: CoreHISModel): void {\r\n if (this.optionDisabled) {\r\n return;\r\n }\r\n this.dataModelSelect = model;\r\n this.optionChange.emit(this.dataModelSelect);\r\n }\r\n onActionSelectClear(): void {\r\n if (this.optionDisabled) {\r\n return;\r\n }\r\n this.formControl.setValue(null);\r\n this.optionChange.emit(null);\r\n }\r\n push(newvalue: CoreHISModel): Observable<CoreHISModel[]> {\r\n return this.filteredOptions.pipe(map(items => {\r\n if (items.find(x => x.id === newvalue.id)) {\r\n return items;\r\n }\r\n items.push(newvalue);\r\n return items;\r\n }));\r\n\r\n }\r\n onActionSelectForce(id: string | CoreHISModel): void {\r\n if (typeof id === 'string' && id.length > 0) {\r\n if (this.dataModelSelect && this.dataModelSelect.id === id) {\r\n return;\r\n }\r\n if (this.dataModelResult && this.dataModelResult.listItems && this.dataModelResult.listItems.find(x => x.id === id)) {\r\n const item = this.dataModelResult.listItems.find(x => x.id === id);\r\n this.dataModelSelect = item;\r\n this.formControl.setValue(item);\r\n return;\r\n }\r\n this.categoryService.ServiceGetOneById(id).subscribe((next) => {\r\n if (next.isSuccess) {\r\n this.filteredOptions = this.push(next.item);\r\n this.dataModelSelect = next.item;\r\n this.formControl.setValue(next.item);\r\n this.optionChange.emit(next.item);\r\n }\r\n });\r\n return;\r\n }\r\n if (typeof id === typeof CoreHISModel) {\r\n this.filteredOptions = this.push((id as CoreHISModel));\r\n this.dataModelSelect = (id as CoreHISModel);\r\n this.formControl.setValue(id);\r\n return;\r\n }\r\n this.formControl.setValue(null);\r\n }\r\n\r\n onActionReload(): void {\r\n // if (this.dataModelSelect && this.dataModelSelect.id > 0) {\r\n // this.onActionSelect(null);\r\n // }\r\n this.dataModelSelect = new CoreHISModel();\r\n // this.optionsData.Select = new CoreHISModel();\r\n this.loadOptions();\r\n }\r\n}\r\n","<div class=\"row\">\r\n <div *ngIf=\"optionTreeDisplay\" [ngClass]=\"optionClassTree\">\r\n <!--begin::tree-->\r\n <ng-content select=\"[cms-tree]\"></ng-content>\r\n <!--end::tree-->\r\n </div>\r\n <div [ngClass]=\"optionTreeDisplay?optionClassList:'col-xl-12'\">\r\n <!--begin::Header-->\r\n <div *ngIf=\"optionHeaderDisplay ||optionActionDisplay\" class=\"ntk-cms-html-list-header\">\r\n <ng-content *ngIf=\"optionHeaderDisplay\" select=\"[cms-header]\"></ng-content>\r\n <ng-content *ngIf=\"optionActionDisplay\" select=\"[cms-action]\"></ng-content>\r\n </div>\r\n <!--end::Header-->\r\n <ng-content select=\"[cms-action-area]\"></ng-content>\r\n <!--begin::Body-->\r\n <div [ngClass]=\"optionClassBody\" >\r\n <app-progress-spinner [options]=\"loading\"> </app-progress-spinner>\r\n <ng-content select=\"[cms-body]\"></ng-content>\r\n </div>\r\n <!--end::Body-->\r\n <!--begin::Footer-->\r\n <div class=\"ntk-cms-html-list-footer\">\r\n <ng-content select=\"[cms-message]\"></ng-content>\r\n <ng-content *ngIf=\"optionFooterDisplay && !loading.display\" select=\"[cms-footer]\"></ng-content>\r\n </div>\r\n <!--end::Footer-->\r\n </div>\r\n</div>","import { Component, OnInit, Input } from '@angular/core';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\n\r\n@Component({\r\n selector: 'app-cms-html-list',\r\n templateUrl: './cms-html-list.component.html',\r\n})\r\nexport class CmsHtmlListComponent implements OnInit {\r\n @Input() optionHeaderDisplay = true;\r\n @Input() optionActionDisplay = true;\r\n @Input() optionFooterDisplay = true;\r\n @Input() optionClassTree = 'col-xl-3';\r\n @Input() optionClassList = 'col-xl-9';\r\n @Input() optionClassBody = 'ntk-cms-html-tree-body';\r\n\r\n @Input() optionTreeDisplay = true;\r\n @Input()\r\n public set optionLoading(v: ProgressSpinnerModel) {\r\n this.loading = v;\r\n }\r\n loading = new ProgressSpinnerModel();\r\n constructor() { }\r\n ngOnInit(): void {\r\n\r\n }\r\n /*\r\n <app-cms-html-list [optionLoading]=\"loading\" [optionTreeDisplay]=\"true\">\r\n <ng-container cms-tree>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n --------------------------------------\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-tree-->\r\n </ng-container>\r\n <ng-container cms-header>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n --------------------------------------\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-header-->\r\n </ng-container>\r\n <ng-container cms-action>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n --------------------------------------\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-->\r\n </ng-container>\r\n <ng-container cms-action-area>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n --------------------------------------\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-action-area-->\r\n </ng-container>\r\n <ng-container cms-body>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n --------------------------------------\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-body-->\r\n </ng-container>\r\n <ng-container cms-message>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n --------------------------------------\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-message-->\r\n </ng-container>\r\n <ng-container cms-footer>\r\n <!--begin:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n --------------------------------------\r\n <!--end:::::::::::::::::::::::::::::::::::::::::cms-footer-->\r\n </ng-container>\r\n </app-cms-html-list>\r\n*/\r\n}\r\n\r\n","<!--begin::Notice-->\r\n<div\r\n class=\"alert alert-custom alert-white alert-shadow gutter-b\"\r\n [ngClass]=\"classes\"\r\n role=\"alert\"\r\n>\r\n <ng-container *ngIf=\"icon || svg\">\r\n <div class=\"alert-icon alert-icon-top\">\r\n <ng-container *ngIf=\"svg\">\r\n <span\r\n class=\"svg-icon svg-icon-3x svg-icon-primary\"\r\n [inlineSVG]=\"svg\"\r\n ></span>\r\n </ng-container>\r\n <ng-container *ngIf=\"icon\">\r\n <i [ngClass]=\"icon\"></i>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div class=\"alert-text\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n<!--end::Notice-->\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-cms-html-notice',\r\n templateUrl: './cms-html-notice.component.html',\r\n})\r\nexport class CmsHtmlNoticeComponent implements OnInit {\r\n // Public properties\r\n @Input() classes: string;\r\n @Input() icon: string;\r\n @Input() svg: string;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\n\r\n@Pipe({ name: 'keys' })\r\nexport class KeysPipe implements PipeTransform {\r\n transform(value, optionFields: Map<string, string>): any {\r\n if (!value) {\r\n return [];\r\n }\r\n let retOut = Object.keys(value);\r\n retOut = retOut.filter(x => x && x.length > 0 && x.toLowerCase().indexOf('antiinjection') < 0);\r\n if (optionFields && optionFields.size > 0) {\r\n retOut = retOut.filter(x => x && x.length > 0 && optionFields.has(x));\r\n }\r\n return retOut;\r\n }\r\n}\r\n// <table>\r\n// <thead>\r\n// <tr>\r\n// <th *ngFor=\"let head of items[0] | keys\">{{head}}</th>\r\n// </tr>\r\n// </thead>\r\n// <tbody>\r\n// <tr *ngFor=\"let item of items\">\r\n// <td *ngFor=\"let list of item | keys\">{{item[list]}}</td>\r\n// </tr>\r\n// </tbody>\r\n// </table>\r\n\r\n// <table>\r\n// <thead>\r\n// <tr>\r\n// <th *ngFor=\"let head of dataModel | keys\">{{head}}</th>\r\n// </tr>\r\n// </thead>\r\n// <tbody>\r\n// <tr>\r\n// <td *ngFor=\"let list of dataModel | keys\">{{dataModel[list]}}</td>\r\n// </tr>\r\n// </tbody>\r\n// </table>\r\n//\r\n// <table>\r\n// <thead>\r\n// <tr>\r\n// <th>\r\n// پارامتر\r\n// </th>\r\n// <th>\r\n// مقادیر\r\n// </th>\r\n// </tr>\r\n// </thead>\r\n// <tbody>\r\n// <tr *ngFor=\"let head of dataModel | keys\">\r\n// <td>{{head}}</td>\r\n// <td>{{dataModel[head]}}</td>\r\n// </tr>\r\n// </tbody>\r\n// </table>\r\n","<!--optionMethod 1-->\r\n<div class=\"table\" *ngIf=\"optionMethod===1 && dataModel\">\r\n <div class=\"th\" *ngIf=\"optionViewHead\">\r\n <div class=\"td\">پارامتر</div>\r\n <div class=\"td\">مقادیر</div>\r\n <div class=\"clear\"></div>\r\n </div>\r\n <div class=\"tr\" *ngFor=\"let head of dataModel | keys : optionFields \">\r\n <div class=\"td\">{{(optionFields && optionFields.size>0)? optionFields.get(head): head}}</div>\r\n <div class=\"td\">{{dataModel[head]}}</div>\r\n <div style=\"clear: both;\"></div>\r\n </div>\r\n</div>\r\n<!--optionMethod 2-->\r\n<div class=\"table\" *ngIf=\"optionMethod===2 && dataModel\">\r\n <div class=\"th\" *ngIf=\"optionViewHead\">\r\n <div class=\"td\" *ngFor=\"let head of dataModel[0] | keys : optionFields\" >{{(optionFields && optionFields.size>0)?\r\n optionFields.get(head): head}}</div>\r\n <div class=\"clear\"></div>\r\n </div>\r\n <div class=\"tr\" *ngFor=\"let item of dataModel\">\r\n <div class=\"td\" *ngFor=\"let list of item | keys: optionFields\">{{item[list]}}</div>\r\n <div style=\"clear: both;\"></div>\r\n </div>\r\n</div>\r\n\r\n<!--optionMethod 3-->\r\n<div class=\"table\" *ngIf=\"optionMethod===3 && dataModel\">\r\n <div class=\"th\" *ngIf=\"optionViewHead\">\r\n <div class=\"td\" *ngFor=\"let head of dataModel[0] | keys : optionFields\" >{{(optionFields && optionFields.size>0)?\r\n optionFields.get(head): head}}</div>\r\n <div class=\"clear\"></div>\r\n </div>\r\n <div class=\"tr\">\r\n <div class=\"td\" *ngFor=\"let list of dataModel | keys : optionFields\">{{dataModel[list]}}</div>\r\n <div style=\"clear: both;\"></div>\r\n </div>\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-cms-json-list',\r\n templateUrl: './cmsJsonList.component.html',\r\n styleUrls: ['./cmsJsonList.component.scss']\r\n})\r\nexport class CmsJsonListComponent implements OnInit {\r\n\r\n constructor() { }\r\n @Input() optionMethod = 1;\r\n @Input() dataModel: any;\r\n @Input() optionFields: Map<string, string>;\r\n @Input() optionViewHead: boolean = true;\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"row\">\r\n\r\n <div *ngIf=\"optionurlViewContent && optionurlViewContent.length>0\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-sm-12 col-xs-18\">\r\n <p> {{optionTitle}}</p>\r\n </div>\r\n </div>\r\n <!-- username Field -->\r\n <div class=\"row\">\r\n <div class=\"col-md-4 col-sm-4 col-xs-6\">\r\n <mat-form-field class=\"ntk-full-width\">\r\n <mat-label> {{'ACTION.ID_Code' | translate}}</mat-label>\r\n <input matInput [(ngModel)]=\"QDocModel.username\" name=\"QDocModel.username\" #QDocCode type=\"text\"\r\n placeholder=\"12345\" />\r\n <mat-icon matSuffix *ngIf=\"QDocModel.username\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n (click)=\"QDocModel.username = 0\">close</mat-icon>\r\n <mat-icon matSuffix>mode_edit</mat-icon>\r\n </mat-form-field>\r\n\r\n\r\n <button type=\"button\" (click)=\"onActionSendUrlToQDoc()\" class=\"btn btn-success BTN\"\r\n *ngIf=\"optionurlViewContent && optionurlViewContent.length>0 && QDocModel.username\">\r\n <i class=\"fa fa-check-square-o\"></i> {{'ACTION.VIEW' | translate}}\r\n </button>\r\n <br>\r\n <app-cms-guide-notice [Key]=\"'linkto.content'\"></app-cms-guide-notice>\r\n <br>\r\n <button class=\"btn btn-secondary BTN\" type=\"button\" (click)=\"onActionOpenLink()\">{{'ACTION.VIEW_PAGE' |\r\n translate}}</button>\r\n </div>\r\n\r\n <div class=\"col-md-8 col-sm-8 col-xs-12\" style=\"text-align: center;\">\r\n <div *ngIf=\"optionurlViewContentQRCodeBase64?.length>0 && optionurlViewContent?.length>0\">\r\n <a href=\"{{optionurlViewContent}}\" target=\"_blank\">\r\n <img [src]=\"optionurlViewContentQRCodeBase64\" alt=\"بارکد را اسکن کنید\" height=\"200px\"\r\n width=\"200px\">\r\n </a>\r\n </div>\r\n <div class=\"mt-4\">\r\n <a target=\"_blank\" href=\"whatsapp://send?text={{optionTitle}}- {{optionurlViewContent}}\" class=\"style whatsapp\">\r\n <i class=\"flaticon-whatsapp text-dark\"></i>\r\n </a>\r\n\r\n <a target=\"_blank\"\r\n href=\"https://telegram.me/share/url?url={{optionurlViewContent}}&text={{optionTitle}}\"\r\n class=\"style telegram\">\r\n <i class=\"flaticon2-telegram-logo text-dark\"></i>\r\n </a>\r\n\r\n <a target=\"_blank\"\r\n href=\"https://www.linkedin.com/shareArticle?url={{optionurlViewContent}}&title={{optionTitle}}\"\r\n class=\"style linkedin\">\r\n <i class=\"flaticon-linkedin-logo text-dark\"></i>\r\n </a>\r\n\r\n <a target=\"_blank\" href=\"http://www.facebook.com/share.php?u={{optionurlViewContent}}\" class=\"style facebook\">\r\n <i class=\"flaticon-facebook-letter-logo text-dark\"></i>\r\n </a>\r\n\r\n <a target=\"_blank\" href=\"http://twitter.com/share?text={{optionTitle}}&url={{optionurlViewContent}}\"\r\n class=\"style twitter\">\r\n <i class=\"flaticon-twitter-logo text-dark\"></i>\r\n </a>\r\n <span class=\"navi-icon style cursor\" [cdkCopyToClipboard]=\"optionurlViewContent\"\r\n (click)=\"onActionCopied()\">\r\n <i class=\"flaticon2-copy text-dark\"></i></span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { HttpClient } from '@angular/common/http';\r\nimport { Component, Inject, Input, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Router } from '@angular/router';\r\nimport { map } from 'rxjs/operators';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'app-cms-link-to',\r\n templateUrl: './cms-link-to.component.html',\r\n styleUrls: ['./cms-link-to.component.scss']\r\n})\r\nexport class CmsLinkToComponent implements OnInit {\r\n constructor(private cmsToastrService: CmsToastrService,\r\n @Inject(MAT_DIALOG_DATA) public data: any,\r\n private dialogRef: MatDialogRef<CmsLinkToComponent>,\r\n public http: HttpClient,\r\n private router: Router,\r\n ) {\r\n if (data) {\r\n this.optionTitle = data.title;\r\n this.optionurlViewContentQRCodeBase64 = data.urlViewContentQRCodeBase64;\r\n this.optionurlViewContent = data.urlViewContent;\r\n }\r\n }\r\n @Input() optionTitle = '';\r\n @Input() optionurlViewContentQRCodeBase64 = '';\r\n @Input() optionurlViewContent = '';\r\n QDocModel: any = {};\r\n ngOnInit(): void {\r\n }\r\n onActionSendUrlToQDoc(): void {\r\n this.QDocModel.message = this.optionurlViewContent;\r\n if (!this.QDocModel.username && this.QDocModel.username.length <= 0) {\r\n const message = 'کد شناسه را از وبسایت https://Qdoc.ir دریاÙت نمایید';\r\n this.cmsToastrService.typeWarningSelected(message);\r\n return;\r\n }\r\n this.http.post(environment.cmsServerConfig.configQDocServerPath, this.QDocModel, {\r\n headers: {},\r\n })\r\n .pipe(\r\n map((ret: any) => {\r\n this.cmsToastrService.typeSuccessMessage('دستور به وب سایت ارسال شد');\r\n })\r\n // \r\n // this.cmsToastrService.typeErrorMessage('برروز خطا در ارسال دستور');\r\n // \r\n ).toPromise();\r\n }\r\n onActionCopied(): void {\r\n this.cmsToastrService.typeSuccessCopedToClipboard();\r\n }\r\n onActionOpenLink():void{\r\n const url = this.router.serializeUrl(\r\n this.router.createUrlTree([this.optionurlViewContent])\r\n );\r\n window.open(this.optionurlViewContent, '_blank');\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, Input, Output, EventEmitter, AfterViewInit } from '@angular/core';\r\nimport * as L from 'leaflet';\r\nimport { Map, ZoomAnimEvent, MapOptions, tileLayer } from 'leaflet';\r\nimport { PoinModel } from 'src/app/core/models/pointModel';\r\nimport { CmsToastrService } from 'src/app/core/services/cmsToastr.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Component({\r\n selector: 'app-cms-map',\r\n templateUrl: './cms-map.component.html',\r\n styleUrls: ['./cms-map.component.scss']\r\n})\r\nexport class CmsMapComponent implements OnInit, OnDestroy, AfterViewInit {\r\n @Output() map$: EventEmitter<Map> = new EventEmitter<Map>();\r\n @Output() zoom$: EventEmitter<number> = new EventEmitter<number>();\r\n @Input() options: MapOptions = {\r\n layers: [tileLayer(environment.leafletUrl, {\r\n opacity: 0.7,\r\n maxZoom: 19,\r\n detectRetina: true,\r\n // attribution: '© <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'\r\n })],\r\n zoom: 16,\r\n center: [32.684985, 51.6359425],\r\n // center: latLng(0, 0),\r\n };\r\n @Input() set optonCenter(model: PoinModel) {\r\n if (this.map && model && model.lat && model.lon && model.lat !== 0 && model.lon !== 0) {\r\n this.map.setView(new L.LatLng(model.lat, model.lon), this.zoom);\r\n }\r\n }\r\n @Input() set optionCurrentPoint(setPont: boolean) {\r\n this.onActionCurrentPoint(setPont);\r\n }\r\n public map: Map;\r\n public zoom: number;\r\n destroy = false;\r\n\r\n constructor(private cmsToastrService: CmsToastrService,\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n const iconRetinaUrl = 'assets/leaflet/marker-icon-2x.png';\r\n const iconUrl = 'assets/leaflet/marker-icon.png';\r\n const shadowUrl = 'assets/leaflet/marker-shadow.png';\r\n const iconDefault = L.icon({\r\n iconRetinaUrl,\r\n iconUrl,\r\n shadowUrl,\r\n iconSize: [25, 41],\r\n iconAnchor: [12, 41],\r\n popupAnchor: [1, -34],\r\n tooltipAnchor: [16, -28],\r\n shadowSize: [41, 41]\r\n });\r\n L.Marker.prototype.options.icon = iconDefault;\r\n\r\n\r\n\r\n }\r\n ngAfterViewInit(): void {\r\n }\r\n ngOnDestroy(): void {\r\n if (this.map) {\r\n this.map.clearAllEventListeners();\r\n // this.map.remove();\r\n this.destroy = true;\r\n }\r\n }\r\n\r\n onMapReady(map: Map): void {\r\n setTimeout(() => {\r\n if (this.map && !this.destroy) {\r\n map.invalidateSize();\r\n }\r\n }, 500);\r\n this.map = map;\r\n this.map$.emit(map);\r\n this.zoom = map.getZoom();\r\n this.zoom$.emit(this.zoom);\r\n }\r\n\r\n onMapZoomEnd(e: ZoomAnimEvent): void {\r\n this.zoom = e.target.getZoom();\r\n this.zoom$.emit(this.zoom);\r\n }\r\n onActionCurrentPoint(setPont: boolean = true): any {\r\n this.getPosition().then(pos => {\r\n // console.log(`Positon: ${pos.lng} ${pos.lat}`);\r\n // L.marker([pos.lat, pos.lon]).addTo(this.map);\r\n this.map.setView(new L.LatLng(pos.lat, pos.lon), this.zoom);\r\n });\r\n }\r\n getPosition(): Promise<any> {\r\n return new Promise((resolve, reject) => {\r\n navigator.geolocation.getCurrentPosition(resp => {\r\n resolve({ lon: resp.coords.longitude, lat: resp.coords.latitude });\r\n // console.log('lat', resp.coords.longitude);\r\n // localStorage.setItem('ln', JSON.stringify(resp.coords.longitude));\r\n // localStorage.setItem('lt', JSON.stringify(resp.coords.longitude));\r\n },\r\n err => {\r\n // reject(err);\r\n this.cmsToastrService.typeErrorGetPosition();\r\n });\r\n });\r\n }\r\n\r\n}\r\n","<div class=\"map-container\"\r\n leaflet\r\n [leafletOptions]=\"options\"\r\n (leafletMapReady)=\"onMapReady($event)\"\r\n (leafletMapZoomEnd)=\"onMapZoomEnd($event)\"\r\n ></div>\r\n","<div *ngIf=\"optionsData.data.show\" class=\"alert alert-info\" style=\"direction: ltr\">\r\n <ngx-ntk-query-builder [(ngModel)]=\"query\" [fieldMap]=\"fieldMap\" [language]=\"lang\">\r\n </ngx-ntk-query-builder>\r\n <a href=\"javascript:void(0)\" (click)=\"onSubmit()\" class=\"btn btn-raised mr-1 shadow-z-3 btn-success\">{{'ACTION.SEARCH' | translate}}</a>\r\n</div>\r\n","import { Output } from '@angular/core';\r\nimport { EventEmitter } from '@angular/core';\r\nimport {\r\n Component,\r\n OnInit,\r\n Input,\r\n} from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { RuleSet, QueryBuilderFieldMap, Rule } from 'ngx-ntk-query-builder';\r\nimport { AccessModel, EnumClauseType, FilterDataModel } from 'projects/ntk-hospital-api/src/public-api';\r\nimport { ComponentOptionSearchModel } from 'src/app/core/cmsComponentModels/base/componentOptionSearchModel';\r\n\r\n@Component({\r\n selector: 'app-cms-search-list',\r\n templateUrl: './cmsSearchList.component.html',\r\n})\r\nexport class CmsSearchListComponent implements OnInit {\r\n public optionsData: ComponentOptionSearchModel = new ComponentOptionSearchModel();\r\n @Output() optionsChange: EventEmitter<ComponentOptionSearchModel> = new EventEmitter<ComponentOptionSearchModel>();\r\n @Input() set options(model: ComponentOptionSearchModel) {\r\n if (!model) {\r\n model = new ComponentOptionSearchModel();\r\n }\r\n this.optionsData = model;\r\n this.optionsData.childMethods = {\r\n setAccess: (x: AccessModel) => this.setAccess(x),\r\n };\r\n this.optionsChange.emit(model);\r\n }\r\n get options(): ComponentOptionSearchModel {\r\n return this.optionsData;\r\n }\r\n\r\n\r\n filters: Array<FilterDataModel>;\r\n lang: string;\r\n model: any;\r\n query: RuleSet;\r\n fieldMap: QueryBuilderFieldMap = {};\r\n constructor(\r\n public translate: TranslateService,\r\n ) {\r\n this.lang = this.translate.currentLang;\r\n\r\n }\r\n ngOnInit(): void {\r\n // if (this.optionsData) {\r\n // this.optionsData.childMethods = {\r\n // setAccess: (x) => this.setAccess(x)\r\n // };\r\n // }\r\n }\r\n setAccess(model: AccessModel): void {\r\n this.optionsData.data.access = model;\r\n if (!this.filters || this.filters.length === 0) {\r\n this.setFields();\r\n }\r\n }\r\n setFields(): void {\r\n if (\r\n this.optionsData &&\r\n this.optionsData.data.access &&\r\n this.optionsData.data.access.fieldsInfo\r\n ) {\r\n this.optionsData.data.access.fieldsInfo.forEach((column) => {\r\n if (!column.accessSearchField) { return; }\r\n if (\r\n column.fieldType === 'System.Int32' ||\r\n column.fieldType === 'System.Int64'\r\n ) {\r\n this.fieldMap[column.fieldName] = {\r\n name: column.fieldTitle,\r\n type: 'integer',\r\n };\r\n } else if (column.fieldType === 'System.String') {\r\n this.fieldMap[column.fieldName] = {\r\n name: column.fieldTitle,\r\n type: 'string',\r\n };\r\n } else if (column.fieldType === 'MongoDB.Bson.ObjectId') {\r\n this.fieldMap[column.fieldName] = {\r\n name: column.fieldName,\r\n type: 'string',\r\n };\r\n } else if (column.fieldType === 'System.Boolean') {\r\n this.fieldMap[column.fieldName] = {\r\n name: column.fieldTitle,\r\n type: 'select',\r\n\r\n options: [\r\n { name: 'بله', value: true },\r\n { name: 'خیر', value: false },\r\n ],\r\n };\r\n } else if (column.fieldType === 'System.DateTime') {\r\n this.fieldMap[column.fieldName] = {\r\n name: column.fieldTitle,\r\n type: 'date',\r\n settings: {},\r\n };\r\n } else if (column.fieldType === 'link') {\r\n this.fieldMap[column.fieldName] = {\r\n name: column.fieldTitle,\r\n type: 'string',\r\n };\r\n } else {\r\n // console.log(\"Error: Type is not defined for columns! Please add 'type' property for each columns in gridOptions.\");\r\n }\r\n });\r\n }\r\n }\r\n getRules(): void {\r\n this.filters = new Array<FilterDataModel>();\r\n let clauseType: EnumClauseType = EnumClauseType.And;\r\n if (!this.query || !this.query.condition) { return; }\r\n\r\n if (this.query.condition === 'or') { clauseType = EnumClauseType.Or; }\r\n this.query.rules.forEach((column) => {\r\n const ruleSet = column as RuleSet;\r\n const rule = column as Rule;\r\n if (\r\n ruleSet &&\r\n ruleSet.condition &&\r\n ruleSet.rules &&\r\n ruleSet.rules.length > 0\r\n ) {\r\n const filter = new FilterDataModel();\r\n filter.filters = this.getRulesSetChild(ruleSet);\r\n filter.clauseType = clauseType;\r\n this.filters.push(filter);\r\n } else if (rule) {\r\n const Filter = this.getRulesChild(rule);\r\n Filter.clauseType = clauseType;\r\n this.filters.push(Filter);\r\n }\r\n });\r\n }\r\n getRulesChild(rule: Rule): FilterDataModel {\r\n const searchType = this.getSearchType(rule.operator);\r\n const filter = new FilterDataModel();\r\n filter.propertyName = rule.field;\r\n filter.value = rule.value;\r\n filter.searchType = searchType;\r\n return filter;\r\n }\r\n getRulesSetChild(ruleSetInput: RuleSet): Array<FilterDataModel> {\r\n const Filters = new Array<FilterDataModel>();\r\n let clauseType: EnumClauseType = EnumClauseType.And;\r\n if (ruleSetInput.condition === 'or') { clauseType = EnumClauseType.Or; }\r\n ruleSetInput.rules.forEach((column) => {\r\n const ruleSet = column as RuleSet;\r\n const rule = column as Rule;\r\n if (\r\n ruleSet &&\r\n ruleSet.condition &&\r\n ruleSet.rules &&\r\n ruleSet.rules.length > 0\r\n ) {\r\n const filter = new FilterDataModel();\r\n filter.filters = this.getRulesSetChild(ruleSet);\r\n filter.clauseType = clauseType;\r\n Filters.push(filter);\r\n } else if (rule) {\r\n const filter = this.getRulesChild(rule);\r\n filter.clauseType = clauseType;\r\n Filters.push(filter);\r\n }\r\n });\r\n return Filters;\r\n }\r\n\r\n onSubmit(): void {\r\n this.getRules();\r\n if (this.optionsData.parentMethods) {\r\n this.optionsData.parentMethods.onSubmit(this.filters);\r\n }\r\n }\r\n onGetRules(): void {\r\n // console.log(this.query);\r\n }\r\n onSaveRules(): void {\r\n\r\n }\r\n onSetRules(): void {\r\n\r\n }\r\n getSearchType(operator: string): number {\r\n switch (operator) {\r\n case 'equal':\r\n return 0;\r\n case 'not_equal':\r\n return 1;\r\n case 'less':\r\n return 2;\r\n case 'greater':\r\n return 3;\r\n case 'between':\r\n return 4;\r\n case 'contains':\r\n return 5;\r\n case 'not_contains':\r\n return 6;\r\n case 'begins_with':\r\n return 7;\r\n case 'ends_with':\r\n return 8;\r\n case 'less_or_equal':\r\n return 9;\r\n case 'greater_or_equal':\r\n return 10;\r\n }\r\n return 0;\r\n }\r\n}\r\n","<mat-form-field class=\"ntk-full-width\">\r\n <input type=\"text\" placeholder=\"{{optionPlaceholder}}\" [attr.disabled]=\"optionDisabled? true : null\" aria-label=\"Assignee\" matInput [formControl]=\"formControl\" [matAutocomplete]=\"auto34\">\r\n <mat-autocomplete #auto34=\"matAutocomplete\" [displayWith]=\"displayFn\" (optionSelected)=\"onActionSelect($event.option.value)\">\r\n <mat-option *ngFor=\"let state of filteredOptions | async\" [value]=\"state\" [disabled]=\"optionDisabled\">\r\n <span>{{ displayOption(state) }}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon matSuffix *ngIf=\"dataModelSelect.id\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"onActionSelectClear()\">close</mat-icon>\r\n <ng-content></ng-content>\r\n</mat-form-field>\r\n","import { Component, OnInit, Input, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\nimport {\r\n CoreEnumService,\r\n ErrorExceptionResult,\r\n FilterDataModel,\r\n FilterModel,\r\n CoreSiteModel,\r\n CoreSiteService,\r\n EnumFilterDataModelSearchTypes,\r\n EnumClauseType\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { catchError, debounceTime, distinctUntilChanged, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { Output } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n\r\n@Component({\r\n selector: 'app-cms-site-selector',\r\n templateUrl: './cmsSiteSelector.component.html',\r\n})\r\nexport class CmsSiteSelectorComponent implements OnInit {\r\n\r\n constructor(\r\n public coreEnumService: CoreEnumService,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n public categoryService: CoreSiteService) {\r\n this.loading.cdr = this.cdr;this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n }\r\n dataModelResult: ErrorExceptionResult<CoreSiteModel> = new ErrorExceptionResult<CoreSiteModel>();\r\n dataModelSelect: CoreSiteModel = new CoreSiteModel();\r\n formControl = new FormControl();\r\n filteredOptions: Observable<CoreSiteModel[]>;\r\n @Input() optionDisabled = false;\r\n @Input() optionSelectFirstItem = false;\r\n @Input() optionPlaceholder = '';\r\n @Output() optionChange = new EventEmitter<CoreSiteModel>();\r\n @Input() optionReload = () => this.onActionReload();\r\n @Input() set optionSelectForce(x: number | CoreSiteModel) {\r\n this.onActionSelectForce(x);\r\n }\r\n\r\n _loading: ProgressSpinnerModel = new ProgressSpinnerModel();\r\n get loading(): ProgressSpinnerModel {\r\n return this._loading;\r\n }\r\n @Input() set loading(value: ProgressSpinnerModel) {\r\n this._loading = value;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadOptions();\r\n }\r\n loadOptions(): void {\r\n this.filteredOptions = this.formControl.valueChanges\r\n .pipe(\r\n startWith(''),\r\n debounceTime(1000),\r\n distinctUntilChanged(),\r\n switchMap(val => {\r\n if (typeof val === 'string' || typeof val === 'number') {\r\n return this.DataGetAll(val);\r\n }\r\n return this.DataGetAll('');\r\n }),\r\n // tap(() => this.myControl.setValue(this.options[0]))\r\n );\r\n }\r\n\r\n displayFn(model?: CoreSiteModel): string | undefined {\r\n return model ? (model.title) : undefined;\r\n }\r\n displayOption(model?: CoreSiteModel): string | undefined {\r\n return model ? (model.title) : undefined;\r\n }\r\n async DataGetAll(text: string | number | any): Promise<CoreSiteModel[]> {\r\n const filteModel = new FilterModel();\r\n filteModel.rowPerPage = 20;\r\n filteModel.accessLoad = true;\r\n // this.loading.backdropEnabled = false;\r\n if (text && text.length > 0) {\r\n let filter = new FilterDataModel();\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'SubDomain';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n /*Filters */\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'Domain';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'Title';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n\r\n if (text && typeof +text === 'number' && +text > 0) {\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'Id';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Equal;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n\r\n }\r\n }\r\n\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName,'لیست سایتهای مجاز');\r\n\r\n return await this.categoryService.ServiceGetAll(filteModel)\r\n .pipe(\r\n map(response => {\r\n this.dataModelResult = response;\r\n /*select First Item */\r\n if (this.optionSelectFirstItem &&\r\n (!this.dataModelSelect || !this.dataModelSelect.id || this.dataModelSelect.id <= 0) &&\r\n this.dataModelResult.listItems.length > 0) {\r\n this.optionSelectFirstItem = false;\r\n setTimeout(() => { this.formControl.setValue(this.dataModelResult.listItems[0]); }, 1000);\r\n this.onActionSelect(this.dataModelResult.listItems[0]);\r\n }\r\n /*select First Item */\r\n this.loading.Stop(pName);\r\n\r\n return response.listItems;\r\n })\r\n ).toPromise();\r\n }\r\n onActionSelect(model: CoreSiteModel): void {\r\n if (this.optionDisabled) {\r\n return;\r\n }\r\n this.dataModelSelect = model;\r\n this.optionChange.emit(this.dataModelSelect);\r\n }\r\n onActionSelectClear(): void {\r\n if (this.optionDisabled) {\r\n return;\r\n }\r\n this.formControl.setValue(null);\r\n this.optionChange.emit(null);\r\n }\r\n push(newvalue: CoreSiteModel): Observable<CoreSiteModel[]> {\r\n return this.filteredOptions.pipe(map(items => {\r\n if (items.find(x => x.id === newvalue.id)) {\r\n return items;\r\n }\r\n items.push(newvalue);\r\n return items;\r\n }));\r\n\r\n }\r\n onActionSelectForce(id: number | CoreSiteModel): void {\r\n if (typeof id === 'number' && id > 0) {\r\n if (this.dataModelSelect && this.dataModelSelect.id === id) {\r\n return;\r\n }\r\n if (this.dataModelResult && this.dataModelResult.listItems && this.dataModelResult.listItems.find(x => x.id === id)) {\r\n const item = this.dataModelResult.listItems.find(x => x.id === id);\r\n this.dataModelSelect = item;\r\n this.formControl.setValue(item);\r\n return;\r\n }\r\n this.categoryService.ServiceGetOneById(id).subscribe((next) => {\r\n if (next.isSuccess) {\r\n this.filteredOptions = this.push(next.item);\r\n this.dataModelSelect = next.item;\r\n this.formControl.setValue(next.item);\r\n this.optionChange.emit(next.item);\r\n }\r\n });\r\n return;\r\n }\r\n if (typeof id === typeof CoreSiteModel) {\r\n this.filteredOptions = this.push((id as CoreSiteModel));\r\n this.dataModelSelect = (id as CoreSiteModel);\r\n this.formControl.setValue(id);\r\n return;\r\n }\r\n this.formControl.setValue(null);\r\n }\r\n\r\n onActionReload(): void {\r\n // if (this.dataModelSelect && this.dataModelSelect.id > 0) {\r\n // this.onActionSelect(null);\r\n // }\r\n this.dataModelSelect = new CoreSiteModel();\r\n // this.optionsData.Select = new CoreSiteModel();\r\n this.loadOptions();\r\n }\r\n}\r\n","<div *ngIf=\"optionsData.data.show\" class=\"alert alert-info\" style=\"direction: ltr\">\r\n <mat-list>\r\n <div mat-subheader>{{'ACTION.STATIST' | translate}}</div>\r\n <mat-list-item *ngFor=\"let folder of modelData| keyvalue\">\r\n <mat-icon mat-list-icon>insights</mat-icon>\r\n <div mat-line>{{folder.key}}</div>\r\n <div mat-line> {{folder.value}} </div>\r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n </mat-list>\r\n</div>\r\n","import { Output, Input } from '@angular/core';\r\nimport { EventEmitter } from '@angular/core';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { ComponentOptionStatistModel } from 'src/app/core/cmsComponentModels/base/componentOptionStatistModel';\r\n\r\n@Component({\r\n selector: 'app-cms-statist-list',\r\n templateUrl: './cmsStatistList.component.html',\r\n})\r\nexport class CmsStatistListComponent implements OnInit {\r\n constructor() { }\r\n public optionsData: ComponentOptionStatistModel = new ComponentOptionStatistModel();\r\n @Output()\r\n optionsChange: EventEmitter<ComponentOptionStatistModel> = new EventEmitter<ComponentOptionStatistModel>();\r\n @Input() set options(model: ComponentOptionStatistModel) {\r\n if (!model) {\r\n model = new ComponentOptionStatistModel();\r\n }\r\n this.optionsData = model;\r\n this.optionsData.childMethods = {\r\n setStatistValue: (x: Map<string, number>) => this.setStatistValue(x),\r\n };\r\n this.optionsChange.emit(model);\r\n }\r\n get options(): ComponentOptionStatistModel {\r\n return this.optionsData;\r\n }\r\n modelData: Map<string, number> = new Map<string, number>();\r\n ngOnInit(): void { }\r\n setStatistValue(model: Map<string, number>): void {\r\n this.modelData = model;\r\n }\r\n}\r\n","<mat-form-field class=\"ntk-full-width\">\r\n <span matPrefix ><img class=\"ntk-hover-zoom\" *ngIf=\"dataModelSelect && dataModelSelect.linkMainImageIdSrc\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\" aria-hidden src=\"{{dataModelSelect.linkMainImageIdSrc | cmsthumbnail}}\" height=\"25\" width=\"25\" /> </span>\r\n <input type=\"text\" placeholder=\"{{optionPlaceholder}}\" [attr.disabled]=\"optionDisabled? true : null\" aria-label=\"Assignee\" matInput [formControl]=\"formControl\" [matAutocomplete]=\"auto35\">\r\n <mat-autocomplete #auto35=\"matAutocomplete\" [displayWith]=\"displayFn\" (optionSelected)=\"onActionSelect($event.option.value)\">\r\n <mat-option *ngFor=\"let state of filteredOptions | async\" [value]=\"state\" [disabled]=\"optionDisabled\">\r\n <img *ngIf=\"state.linkMainImageIdSrc\" style=\"vertical-align:middle;\" class=\"ntk-hover-zoom\" aria-hidden src=\"{{state.linkMainImageIdSrc | cmsthumbnail}}\" height=\"25\" width=\"25\" />\r\n <span>{{ displayOption(state) }}</span>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon matSuffix *ngIf=\"dataModelSelect.id\" matSuffix\r\n mat-icon-button aria-label=\"Clear\" (click)=\"onActionSelectClear()\">close</mat-icon>\r\n <ng-content></ng-content>\r\n</mat-form-field>\r\n","import { Component, OnInit, Input, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\nimport {\r\n CoreEnumService,\r\n ErrorExceptionResult,\r\n FilterDataModel,\r\n FilterModel,\r\n CoreUserModel,\r\n CoreUserService,\r\n EnumFilterDataModelSearchTypes,\r\n EnumClauseType\r\n} from 'projects/ntk-hospital-api/src/public-api';\r\nimport { FormControl } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { catchError, debounceTime, distinctUntilChanged, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { ProgressSpinnerModel } from 'src/app/core/models/progressSpinnerModel';\r\nimport { Output } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n\r\n@Component({\r\n selector: 'app-cms-user-selector',\r\n templateUrl: './cmsUserSelector.component.html',\r\n})\r\nexport class CmsUserSelectorComponent implements OnInit {\r\n\r\n constructor(\r\n public coreEnumService: CoreEnumService,\r\n private cdr: ChangeDetectorRef,\r\n public translate: TranslateService,\r\n public categoryService: CoreUserService) {\r\n this.loading.cdr = this.cdr;this.loading.message = this.translate.instant('MESSAGE.Receiving_information');\r\n }\r\n dataModelResult: ErrorExceptionResult<CoreUserModel> = new ErrorExceptionResult<CoreUserModel>();\r\n dataModelSelect: CoreUserModel = new CoreUserModel();\r\n formControl = new FormControl();\r\n filteredOptions: Observable<CoreUserModel[]>;\r\n @Input() optionDisabled = false;\r\n @Input() optionSelectFirstItem = false;\r\n @Input() optionPlaceholder = '';\r\n @Output() optionChange = new EventEmitter<CoreUserModel>();\r\n @Input() optionReload = () => this.onActionReload();\r\n @Input() set optionSelectForce(x: number | CoreUserModel) {\r\n this.onActionSelectForce(x);\r\n }\r\n\r\n _loading: ProgressSpinnerModel = new ProgressSpinnerModel();\r\n get loading(): ProgressSpinnerModel {\r\n return this._loading;\r\n }\r\n @Input() set loading(value: ProgressSpinnerModel) {\r\n this._loading = value;\r\n }\r\n\r\n\r\n\r\n ngOnInit(): void {\r\n this.loadOptions();\r\n }\r\n loadOptions(): void {\r\n this.filteredOptions = this.formControl.valueChanges\r\n .pipe(\r\n startWith(''),\r\n debounceTime(1000),\r\n distinctUntilChanged(),\r\n switchMap(val => {\r\n if (typeof val === 'string' || typeof val === 'number') {\r\n return this.DataGetAll(val);\r\n }\r\n return this.DataGetAll('');\r\n }),\r\n // tap(() => this.myControl.setValue(this.options[0]))\r\n );\r\n }\r\n\r\n displayFn(model?: CoreUserModel): string | undefined {\r\n var retOut = '';\r\n if (model) {\r\n if (model.username && model.username.length > 0)\r\n retOut = retOut + \" \" + model.username;\r\n if (model.name && model.name.length > 0)\r\n retOut = retOut + \" \" + model.name;\r\n if (model.lastName && model.lastName.length > 0)\r\n retOut = retOut + \" \" + model.lastName;\r\n retOut = retOut + '#:' + model.id;\r\n }\r\n return retOut\r\n }\r\n displayOption(model?: CoreUserModel): string | undefined {\r\n var retOut = '';\r\n if (model) {\r\n if (model.username && model.username.length > 0)\r\n retOut = retOut + \" \" + model.username;\r\n if (model.name && model.name.length > 0)\r\n retOut = retOut + \" \" + model.name;\r\n if (model.lastName && model.lastName.length > 0)\r\n retOut = retOut + \" \" + model.lastName;\r\n retOut = retOut + '#:' + model.id;\r\n }\r\n return retOut\r\n }\r\n async DataGetAll(text: string | number | any): Promise<CoreUserModel[]> {\r\n const filteModel = new FilterModel();\r\n filteModel.rowPerPage = 20;\r\n filteModel.accessLoad = true;\r\n // this.loading.backdropEnabled = false;\r\n if (text && text.length > 0) {\r\n let filter = new FilterDataModel();\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'username';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n /*Filters */\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'name';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'email';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'lastname';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Contains;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n\r\n if (text && typeof +text === 'number' && +text > 0) {\r\n /*Filters */\r\n filter = new FilterDataModel();\r\n filter.propertyName = 'Id';\r\n filter.value = text;\r\n filter.searchType = EnumFilterDataModelSearchTypes.Equal;\r\n filter.clauseType = EnumClauseType.Or;\r\n filteModel.filters.push(filter);\r\n\r\n }\r\n }\r\n\r\n const pName = this.constructor.name + 'main';\r\n this.loading.Start(pName);\r\n\r\n return await this.categoryService.ServiceGetAll(filteModel)\r\n .pipe(\r\n map(response => {\r\n this.dataModelResult = response;\r\n /*select First Item */\r\n if (this.optionSelectFirstItem &&\r\n (!this.dataModelSelect || !this.dataModelSelect.id || this.dataModelSelect.id <= 0) &&\r\n this.dataModelResult.listItems.length > 0) {\r\n this.optionSelectFirstItem = false;\r\n setTimeout(() => { this.formControl.setValue(this.dataModelResult.listItems[0]); }, 1000);\r\n this.onActionSelect(this.dataModelResult.listItems[0]);\r\n }\r\n /*select First Item */\r\n this.loading.Stop(pName);\r\n\r\n return response.listItems;\r\n })\r\n ).toPromise();\r\n }\r\n onActionSelect(model: CoreUserModel): void {\r\n if (this.optionDisabled) {\r\n return;\r\n }\r\n this.dataModelSelect = model;\r\n this.optionChange.emit(this.dataModelSelect);\r\n }\r\n onActionSelectClear(): void {\r\n if (this.optionDisabled) {\r\n return;\r\n }\r\n this.formControl.setValue(null);\r\n this.optionChange.emit(null);\r\n }\r\n push(newvalue: CoreUserModel): Observable<CoreUserModel[]> {\r\n return this.filteredOptions.pipe(map(items => {\r\n if (items.find(x => x.id === newvalue.id)) {\r\n return items;\r\n }\r\n items.push(newvalue);\r\n return items;\r\n }));\r\n\r\n }\r\n onActionSelectForce(id: number | CoreUserModel): void {\r\n if (typeof id === 'number' && id > 0) {\r\n if (this.dataModelSelect && this.dataModelSelect.id === id) {\r\n return;\r\n }\r\n if (this.dataModelResult && this.dataModelResult.listItems && this.dataModelResult.listItems.find(x => x.id === id)) {\r\n const item = this.dataModelResult.listItems.find(x => x.id === id);\r\n this.dataModelSelect = item;\r\n this.formControl.setValue(item);\r\n return;\r\n }\r\n this.categoryService.ServiceGetOneById(id).subscribe((next) => {\r\n if (next.isSuccess) {\r\n this.filteredOptions = this.push(next.item);\r\n this.dataModelSelect = next.item;\r\n this.formControl.setValue(next.item);\r\n this.optionChange.emit(next.item);\r\n }\r\n });\r\n return;\r\n }\r\n if (typeof id === typeof CoreUserModel) {\r\n this.filteredOptions = this.push((id as CoreUserModel));\r\n this.dataModelSelect = (id as CoreUserModel);\r\n this.formControl.setValue(id);\r\n return;\r\n }\r\n this.formControl.setValue(null);\r\n }\r\n\r\n onActionReload(): void {\r\n // if (this.dataModelSelect && this.dataModelSelect.id > 0) {\r\n // this.onActionSelect(null);\r\n // }\r\n this.dataModelSelect = new CoreUserModel();\r\n // this.optionsData.Select = new CoreUserModel();\r\n this.loadOptions();\r\n }\r\n}\r\n","import * as i0 from '@angular/core';\nimport { Injectable, Inject, InjectionToken, Directive, Input, EventEmitter, Optional, SkipSelf, Output, Self, ContentChildren, ContentChild, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { _getEventTarget, normalizePassiveListenerOptions, _getShadowRoot } from '@angular/cdk/platform';\nimport { coerceBooleanProperty, coerceElement, coerceArray, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { isFakeTouchstartFromScreenReader, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { Subject, Subscription, interval, animationFrameScheduler, Observable, merge } from 'rxjs';\nimport { takeUntil, startWith, map, take, tap, switchMap } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/scrolling';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport * as i3 from '@angular/cdk/bidi';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Shallow-extends a stylesheet object with another stylesheet-like object.\n * Note that the keys in `source` have to be dash-cased.\n * @docs-private\n */\nfunction extendStyles(dest, source, importantProperties) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n const value = source[key];\n if (value) {\n dest.setProperty(key, value, (importantProperties === null || importantProperties === void 0 ? void 0 : importantProperties.has(key)) ? 'important' : '');\n }\n else {\n dest.removeProperty(key);\n }\n }\n }\n return dest;\n}\n/**\n * Toggles whether the native drag interactions should be enabled for an element.\n * @param element Element on which to toggle the drag interactions.\n * @param enable Whether the drag interactions should be enabled.\n * @docs-private\n */\nfunction toggleNativeDragInteractions(element, enable) {\n const userSelect = enable ? '' : 'none';\n extendStyles(element.style, {\n 'touch-action': enable ? '' : 'none',\n '-webkit-user-drag': enable ? '' : 'none',\n '-webkit-tap-highlight-color': enable ? '' : 'transparent',\n 'user-select': userSelect,\n '-ms-user-select': userSelect,\n '-webkit-user-select': userSelect,\n '-moz-user-select': userSelect,\n });\n}\n/**\n * Toggles whether an element is visible while preserving its dimensions.\n * @param element Element whose visibility to toggle\n * @param enable Whether the element should be visible.\n * @param importantProperties Properties to be set as `!important`.\n * @docs-private\n */\nfunction toggleVisibility(element, enable, importantProperties) {\n extendStyles(element.style, {\n position: enable ? '' : 'fixed',\n top: enable ? '' : '0',\n opacity: enable ? '' : '0',\n left: enable ? '' : '-999em',\n }, importantProperties);\n}\n/**\n * Combines a transform string with an optional other transform\n * that exited before the base transform was applied.\n */\nfunction combineTransforms(transform, initialTransform) {\n return initialTransform && initialTransform != 'none'\n ? transform + ' ' + initialTransform\n : transform;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Parses a CSS time value to milliseconds. */\nfunction parseCssTimeUnitsToMs(value) {\n // Some browsers will return it in seconds, whereas others will return milliseconds.\n const multiplier = value.toLowerCase().indexOf('ms') > -1 ? 1 : 1000;\n return parseFloat(value) * multiplier;\n}\n/** Gets the transform transition duration, including the delay, of an element in milliseconds. */\nfunction getTransformTransitionDurationInMs(element) {\n const computedStyle = getComputedStyle(element);\n const transitionedProperties = parseCssPropertyValue(computedStyle, 'transition-property');\n const property = transitionedProperties.find(prop => prop === 'transform' || prop === 'all');\n // If there's no transition for `all` or `transform`, we shouldn't do anything.\n if (!property) {\n return 0;\n }\n // Get the index of the property that we're interested in and match\n // it up to the same index in `transition-delay` and `transition-duration`.\n const propertyIndex = transitionedProperties.indexOf(property);\n const rawDurations = parseCssPropertyValue(computedStyle, 'transition-duration');\n const rawDelays = parseCssPropertyValue(computedStyle, 'transition-delay');\n return (parseCssTimeUnitsToMs(rawDurations[propertyIndex]) +\n parseCssTimeUnitsToMs(rawDelays[propertyIndex]));\n}\n/** Parses out multiple values from a computed style into an array. */\nfunction parseCssPropertyValue(computedStyle, name) {\n const value = computedStyle.getPropertyValue(name);\n return value.split(',').map(part => part.trim());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Gets a mutable version of an element's bounding `ClientRect`. */\nfunction getMutableClientRect(element) {\n const clientRect = element.getBoundingClientRect();\n // We need to clone the `clientRect` here, because all the values on it are readonly\n // and we need to be able to update them. Also we can't use a spread here, because\n // the values on a `ClientRect` aren't own properties. See:\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect#Notes\n return {\n top: clientRect.top,\n right: clientRect.right,\n bottom: clientRect.bottom,\n left: clientRect.left,\n width: clientRect.width,\n height: clientRect.height,\n x: clientRect.x,\n y: clientRect.y,\n };\n}\n/**\n * Checks whether some coordinates are within a `ClientRect`.\n * @param clientRect ClientRect that is being checked.\n * @param x Coordinates along the X axis.\n * @param y Coordinates along the Y axis.\n */\nfunction isInsideClientRect(clientRect, x, y) {\n const { top, bottom, left, right } = clientRect;\n return y >= top && y <= bottom && x >= left && x <= right;\n}\n/**\n * Updates the top/left positions of a `ClientRect`, as well as their bottom/right counterparts.\n * @param clientRect `ClientRect` that should be updated.\n * @param top Amount to add to the `top` position.\n * @param left Amount to add to the `left` position.\n */\nfunction adjustClientRect(clientRect, top, left) {\n clientRect.top += top;\n clientRect.bottom = clientRect.top + clientRect.height;\n clientRect.left += left;\n clientRect.right = clientRect.left + clientRect.width;\n}\n/**\n * Checks whether the pointer coordinates are close to a ClientRect.\n * @param rect ClientRect to check against.\n * @param threshold Threshold around the ClientRect.\n * @param pointerX Coordinates along the X axis.\n * @param pointerY Coordinates along the Y axis.\n */\nfunction isPointerNearClientRect(rect, threshold, pointerX, pointerY) {\n const { top, right, bottom, left, width, height } = rect;\n const xThreshold = width * threshold;\n const yThreshold = height * threshold;\n return (pointerY > top - yThreshold &&\n pointerY < bottom + yThreshold &&\n pointerX > left - xThreshold &&\n pointerX < right + xThreshold);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Keeps track of the scroll position and dimensions of the parents of an element. */\nclass ParentPositionTracker {\n constructor(_document) {\n this._document = _document;\n /** Cached positions of the scrollable parent elements. */\n this.positions = new Map();\n }\n /** Clears the cached positions. */\n clear() {\n this.positions.clear();\n }\n /** Caches the positions. Should be called at the beginning of a drag sequence. */\n cache(elements) {\n this.clear();\n this.positions.set(this._document, {\n scrollPosition: this.getViewportScrollPosition(),\n });\n elements.forEach(element => {\n this.positions.set(element, {\n scrollPosition: { top: element.scrollTop, left: element.scrollLeft },\n clientRect: getMutableClientRect(element),\n });\n });\n }\n /** Handles scrolling while a drag is taking place. */\n handleScroll(event) {\n const target = _getEventTarget(event);\n const cachedPosition = this.positions.get(target);\n if (!cachedPosition) {\n return null;\n }\n const scrollPosition = cachedPosition.scrollPosition;\n let newTop;\n let newLeft;\n if (target === this._document) {\n const viewportScrollPosition = this.getViewportScrollPosition();\n newTop = viewportScrollPosition.top;\n newLeft = viewportScrollPosition.left;\n }\n else {\n newTop = target.scrollTop;\n newLeft = target.scrollLeft;\n }\n const topDifference = scrollPosition.top - newTop;\n const leftDifference = scrollPosition.left - newLeft;\n // Go through and update the cached positions of the scroll\n // parents that are inside the element that was scrolled.\n this.positions.forEach((position, node) => {\n if (position.clientRect && target !== node && target.contains(node)) {\n adjustClientRect(position.clientRect, topDifference, leftDifference);\n }\n });\n scrollPosition.top = newTop;\n scrollPosition.left = newLeft;\n return { top: topDifference, left: leftDifference };\n }\n /**\n * Gets the scroll position of the viewport. Note that we use the scrollX and scrollY directly,\n * instead of going through the `ViewportRuler`, because the first value the ruler looks at is\n * the top/left offset of the `document.documentElement` which works for most cases, but breaks\n * if the element is offset by something like the `BlockScrollStrategy`.\n */\n getViewportScrollPosition() {\n return { top: window.scrollY, left: window.scrollX };\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Creates a deep clone of an element. */\nfunction deepCloneNode(node) {\n const clone = node.cloneNode(true);\n const descendantsWithId = clone.querySelectorAll('[id]');\n const nodeName = node.nodeName.toLowerCase();\n // Remove the `id` to avoid having multiple elements with the same id on the page.\n clone.removeAttribute('id');\n for (let i = 0; i < descendantsWithId.length; i++) {\n descendantsWithId[i].removeAttribute('id');\n }\n if (nodeName === 'canvas') {\n transferCanvasData(node, clone);\n }\n else if (nodeName === 'input' || nodeName === 'select' || nodeName === 'textarea') {\n transferInputData(node, clone);\n }\n transferData('canvas', node, clone, transferCanvasData);\n transferData('input, textarea, select', node, clone, transferInputData);\n return clone;\n}\n/** Matches elements between an element and its clone and allows for their data to be cloned. */\nfunction transferData(selector, node, clone, callback) {\n const descendantElements = node.querySelectorAll(selector);\n if (descendantElements.length) {\n const cloneElements = clone.querySelectorAll(selector);\n for (let i = 0; i < descendantElements.length; i++) {\n callback(descendantElements[i], cloneElements[i]);\n }\n }\n}\n// Counter for unique cloned radio button names.\nlet cloneUniqueId = 0;\n/** Transfers the data of one input element to another. */\nfunction transferInputData(source, clone) {\n // Browsers throw an error when assigning the value of a file input programmatically.\n if (clone.type !== 'file') {\n clone.value = source.value;\n }\n // Radio button `name` attributes must be unique for radio button groups\n // otherwise original radio buttons can lose their checked state\n // once the clone is inserted in the DOM.\n if (clone.type === 'radio' && clone.name) {\n clone.name = `mat-clone-${clone.name}-${cloneUniqueId++}`;\n }\n}\n/** Transfers the data of one canvas element to another. */\nfunction transferCanvasData(source, clone) {\n const context = clone.getContext('2d');\n if (context) {\n // In some cases `drawImage` can throw (e.g. if the canvas size is 0x0).\n // We can't do much about it so just ignore the error.\n try {\n context.drawImage(source, 0, 0);\n }\n catch (_a) { }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Options that can be used to bind a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });\n/** Options that can be used to bind an active event listener. */\nconst activeEventListenerOptions = normalizePassiveListenerOptions({ passive: false });\n/**\n * Time in milliseconds for which to ignore mouse events, after\n * receiving a touch event. Used to avoid doing double work for\n * touch devices where the browser fires fake mouse events, in\n * addition to touch events.\n */\nconst MOUSE_EVENT_IGNORE_TIME = 800;\n/** Inline styles to be set as `!important` while dragging. */\nconst dragImportantProperties = new Set([\n // Needs to be important, because some `mat-table` sets `position: sticky !important`. See #22781.\n 'position',\n]);\n/**\n * Reference to a draggable item. Used to manipulate or dispose of the item.\n */\nclass DragRef {\n constructor(element, _config, _document, _ngZone, _viewportRuler, _dragDropRegistry) {\n this._config = _config;\n this._document = _document;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._dragDropRegistry = _dragDropRegistry;\n /**\n * CSS `transform` applied to the element when it isn't being dragged. We need a\n * passive transform in order for the dragged element to retain its new position\n * after the user has stopped dragging and because we need to know the relative\n * position in case they start dragging again. This corresponds to `element.style.transform`.\n */\n this._passiveTransform = { x: 0, y: 0 };\n /** CSS `transform` that is applied to the element while it's being dragged. */\n this._activeTransform = { x: 0, y: 0 };\n /**\n * Whether the dragging sequence has been started. Doesn't\n * necessarily mean that the element has been moved.\n */\n this._hasStartedDragging = false;\n /** Emits when the item is being moved. */\n this._moveEvents = new Subject();\n /** Subscription to pointer movement events. */\n this._pointerMoveSubscription = Subscription.EMPTY;\n /** Subscription to the event that is dispatched when the user lifts their pointer. */\n this._pointerUpSubscription = Subscription.EMPTY;\n /** Subscription to the viewport being scrolled. */\n this._scrollSubscription = Subscription.EMPTY;\n /** Subscription to the viewport being resized. */\n this._resizeSubscription = Subscription.EMPTY;\n /** Cached reference to the boundary element. */\n this._boundaryElement = null;\n /** Whether the native dragging interactions have been enabled on the root element. */\n this._nativeInteractionsEnabled = true;\n /** Elements that can be used to drag the draggable item. */\n this._handles = [];\n /** Registered handles that are currently disabled. */\n this._disabledHandles = new Set();\n /** Layout direction of the item. */\n this._direction = 'ltr';\n /**\n * Amount of milliseconds to wait after the user has put their\n * pointer down before starting to drag the element.\n */\n this.dragStartDelay = 0;\n this._disabled = false;\n /** Emits as the drag sequence is being prepared. */\n this.beforeStarted = new Subject();\n /** Emits when the user starts dragging the item. */\n this.started = new Subject();\n /** Emits when the user has released a drag item, before any animations have started. */\n this.released = new Subject();\n /** Emits when the user stops dragging an item in the container. */\n this.ended = new Subject();\n /** Emits when the user has moved the item into a new container. */\n this.entered = new Subject();\n /** Emits when the user removes the item its container by dragging it into another container. */\n this.exited = new Subject();\n /** Emits when the user drops the item inside a container. */\n this.dropped = new Subject();\n /**\n * Emits as the user is dragging the item. Use with caution,\n * because this event will fire for every pixel that the user has dragged.\n */\n this.moved = this._moveEvents;\n /** Handler for the `mousedown`/`touchstart` events. */\n this._pointerDown = (event) => {\n this.beforeStarted.next();\n // Delegate the event based on whether it started from a handle or the element itself.\n if (this._handles.length) {\n const targetHandle = this._getTargetHandle(event);\n if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) {\n this._initializeDragSequence(targetHandle, event);\n }\n }\n else if (!this.disabled) {\n this._initializeDragSequence(this._rootElement, event);\n }\n };\n /** Handler that is invoked when the user moves their pointer after they've initiated a drag. */\n this._pointerMove = (event) => {\n const pointerPosition = this._getPointerPositionOnPage(event);\n if (!this._hasStartedDragging) {\n const distanceX = Math.abs(pointerPosition.x - this._pickupPositionOnPage.x);\n const distanceY = Math.abs(pointerPosition.y - this._pickupPositionOnPage.y);\n const isOverThreshold = distanceX + distanceY >= this._config.dragStartThreshold;\n // Only start dragging after the user has moved more than the minimum distance in either\n // direction. Note that this is preferrable over doing something like `skip(minimumDistance)`\n // in the `pointerMove` subscription, because we're not guaranteed to have one move event\n // per pixel of movement (e.g. if the user moves their pointer quickly).\n if (isOverThreshold) {\n const isDelayElapsed = Date.now() >= this._dragStartTime + this._getDragStartDelay(event);\n const container = this._dropContainer;\n if (!isDelayElapsed) {\n this._endDragSequence(event);\n return;\n }\n // Prevent other drag sequences from starting while something in the container is still\n // being dragged. This can happen while we're waiting for the drop animation to finish\n // and can cause errors, because some elements might still be moving around.\n if (!container || (!container.isDragging() && !container.isReceiving())) {\n // Prevent the default action as soon as the dragging sequence is considered as\n // \"started\" since waiting for the next event can allow the device to begin scrolling.\n event.preventDefault();\n this._hasStartedDragging = true;\n this._ngZone.run(() => this._startDragSequence(event));\n }\n }\n return;\n }\n // We prevent the default action down here so that we know that dragging has started. This is\n // important for touch devices where doing this too early can unnecessarily block scrolling,\n // if there's a dragging delay.\n event.preventDefault();\n const constrainedPointerPosition = this._getConstrainedPointerPosition(pointerPosition);\n this._hasMoved = true;\n this._lastKnownPointerPosition = pointerPosition;\n this._updatePointerDirectionDelta(constrainedPointerPosition);\n if (this._dropContainer) {\n this._updateActiveDropContainer(constrainedPointerPosition, pointerPosition);\n }\n else {\n const activeTransform = this._activeTransform;\n activeTransform.x =\n constrainedPointerPosition.x - this._pickupPositionOnPage.x + this._passiveTransform.x;\n activeTransform.y =\n constrainedPointerPosition.y - this._pickupPositionOnPage.y + this._passiveTransform.y;\n this._applyRootElementTransform(activeTransform.x, activeTransform.y);\n }\n // Since this event gets fired for every pixel while dragging, we only\n // want to fire it if the consumer opted into it. Also we have to\n // re-enter the zone because we run all of the events on the outside.\n if (this._moveEvents.observers.length) {\n this._ngZone.run(() => {\n this._moveEvents.next({\n source: this,\n pointerPosition: constrainedPointerPosition,\n event,\n distance: this._getDragDistance(constrainedPointerPosition),\n delta: this._pointerDirectionDelta,\n });\n });\n }\n };\n /** Handler that is invoked when the user lifts their pointer up, after initiating a drag. */\n this._pointerUp = (event) => {\n this._endDragSequence(event);\n };\n /** Handles a native `dragstart` event. */\n this._nativeDragStart = (event) => {\n if (this._handles.length) {\n const targetHandle = this._getTargetHandle(event);\n if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) {\n event.preventDefault();\n }\n }\n else if (!this.disabled) {\n // Usually this isn't necessary since the we prevent the default action in `pointerDown`,\n // but some cases like dragging of links can slip through (see #24403).\n event.preventDefault();\n }\n };\n this.withRootElement(element).withParent(_config.parentDragRef || null);\n this._parentPositions = new ParentPositionTracker(_document);\n _dragDropRegistry.registerDragItem(this);\n }\n /** Whether starting to drag this element is disabled. */\n get disabled() {\n return this._disabled || !!(this._dropContainer && this._dropContainer.disabled);\n }\n set disabled(value) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this._toggleNativeDragInteractions();\n this._handles.forEach(handle => toggleNativeDragInteractions(handle, newValue));\n }\n }\n /**\n * Returns the element that is being used as a placeholder\n * while the current element is being dragged.\n */\n getPlaceholderElement() {\n return this._placeholder;\n }\n /** Returns the root draggable element. */\n getRootElement() {\n return this._rootElement;\n }\n /**\n * Gets the currently-visible element that represents the drag item.\n * While dragging this is the placeholder, otherwise it's the root element.\n */\n getVisibleElement() {\n return this.isDragging() ? this.getPlaceholderElement() : this.getRootElement();\n }\n /** Registers the handles that can be used to drag the element. */\n withHandles(handles) {\n this._handles = handles.map(handle => coerceElement(handle));\n this._handles.forEach(handle => toggleNativeDragInteractions(handle, this.disabled));\n this._toggleNativeDragInteractions();\n // Delete any lingering disabled handles that may have been destroyed. Note that we re-create\n // the set, rather than iterate over it and filter out the destroyed handles, because while\n // the ES spec allows for sets to be modified while they're being iterated over, some polyfills\n // use an array internally which may throw an error.\n const disabledHandles = new Set();\n this._disabledHandles.forEach(handle => {\n if (this._handles.indexOf(handle) > -1) {\n disabledHandles.add(handle);\n }\n });\n this._disabledHandles = disabledHandles;\n return this;\n }\n /**\n * Registers the template that should be used for the drag preview.\n * @param template Template that from which to stamp out the preview.\n */\n withPreviewTemplate(template) {\n this._previewTemplate = template;\n return this;\n }\n /**\n * Registers the template that should be used for the drag placeholder.\n * @param template Template that from which to stamp out the placeholder.\n */\n withPlaceholderTemplate(template) {\n this._placeholderTemplate = template;\n return this;\n }\n /**\n * Sets an alternate drag root element. The root element is the element that will be moved as\n * the user is dragging. Passing an alternate root element is useful when trying to enable\n * dragging on an element that you might not have access to.\n */\n withRootElement(rootElement) {\n const element = coerceElement(rootElement);\n if (element !== this._rootElement) {\n if (this._rootElement) {\n this._removeRootElementListeners(this._rootElement);\n }\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener('mousedown', this._pointerDown, activeEventListenerOptions);\n element.addEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);\n element.addEventListener('dragstart', this._nativeDragStart, activeEventListenerOptions);\n });\n this._initialTransform = undefined;\n this._rootElement = element;\n }\n if (typeof SVGElement !== 'undefined' && this._rootElement instanceof SVGElement) {\n this._ownerSVGElement = this._rootElement.ownerSVGElement;\n }\n return this;\n }\n /**\n * Element to which the draggable's position will be constrained.\n */\n withBoundaryElement(boundaryElement) {\n this._boundaryElement = boundaryElement ? coerceElement(boundaryElement) : null;\n this._resizeSubscription.unsubscribe();\n if (boundaryElement) {\n this._resizeSubscription = this._viewportRuler\n .change(10)\n .subscribe(() => this._containInsideBoundaryOnResize());\n }\n return this;\n }\n /** Sets the parent ref that the ref is nested in. */\n withParent(parent) {\n this._parentDragRef = parent;\n return this;\n }\n /** Removes the dragging functionality from the DOM element. */\n dispose() {\n var _a, _b;\n this._removeRootElementListeners(this._rootElement);\n // Do this check before removing from the registry since it'll\n // stop being considered as dragged once it is removed.\n if (this.isDragging()) {\n // Since we move out the element to the end of the body while it's being\n // dragged, we have to make sure that it's removed if it gets destroyed.\n (_a = this._rootElement) === null || _a === void 0 ? void 0 : _a.remove();\n }\n (_b = this._anchor) === null || _b === void 0 ? void 0 : _b.remove();\n this._destroyPreview();\n this._destroyPlaceholder();\n this._dragDropRegistry.removeDragItem(this);\n this._removeSubscriptions();\n this.beforeStarted.complete();\n this.started.complete();\n this.released.complete();\n this.ended.complete();\n this.entered.complete();\n this.exited.complete();\n this.dropped.complete();\n this._moveEvents.complete();\n this._handles = [];\n this._disabledHandles.clear();\n this._dropContainer = undefined;\n this._resizeSubscription.unsubscribe();\n this._parentPositions.clear();\n this._boundaryElement =\n this._rootElement =\n this._ownerSVGElement =\n this._placeholderTemplate =\n this._previewTemplate =\n this._anchor =\n this._parentDragRef =\n null;\n }\n /** Checks whether the element is currently being dragged. */\n isDragging() {\n return this._hasStartedDragging && this._dragDropRegistry.isDragging(this);\n }\n /** Resets a standalone drag item to its initial position. */\n reset() {\n this._rootElement.style.transform = this._initialTransform || '';\n this._activeTransform = { x: 0, y: 0 };\n this._passiveTransform = { x: 0, y: 0 };\n }\n /**\n * Sets a handle as disabled. While a handle is disabled, it'll capture and interrupt dragging.\n * @param handle Handle element that should be disabled.\n */\n disableHandle(handle) {\n if (!this._disabledHandles.has(handle) && this._handles.indexOf(handle) > -1) {\n this._disabledHandles.add(handle);\n toggleNativeDragInteractions(handle, true);\n }\n }\n /**\n * Enables a handle, if it has been disabled.\n * @param handle Handle element to be enabled.\n */\n enableHandle(handle) {\n if (this._disabledHandles.has(handle)) {\n this._disabledHandles.delete(handle);\n toggleNativeDragInteractions(handle, this.disabled);\n }\n }\n /** Sets the layout direction of the draggable item. */\n withDirection(direction) {\n this._direction = direction;\n return this;\n }\n /** Sets the container that the item is part of. */\n _withDropContainer(container) {\n this._dropContainer = container;\n }\n /**\n * Gets the current position in pixels the draggable outside of a drop container.\n */\n getFreeDragPosition() {\n const position = this.isDragging() ? this._activeTransform : this._passiveTransform;\n return { x: position.x, y: position.y };\n }\n /**\n * Sets the current position in pixels the draggable outside of a drop container.\n * @param value New position to be set.\n */\n setFreeDragPosition(value) {\n this._activeTransform = { x: 0, y: 0 };\n this._passiveTransform.x = value.x;\n this._passiveTransform.y = value.y;\n if (!this._dropContainer) {\n this._applyRootElementTransform(value.x, value.y);\n }\n return this;\n }\n /**\n * Sets the container into which to insert the preview element.\n * @param value Container into which to insert the preview.\n */\n withPreviewContainer(value) {\n this._previewContainer = value;\n return this;\n }\n /** Updates the item's sort order based on the last-known pointer position. */\n _sortFromLastPointerPosition() {\n const position = this._lastKnownPointerPosition;\n if (position && this._dropContainer) {\n this._updateActiveDropContainer(this._getConstrainedPointerPosition(position), position);\n }\n }\n /** Unsubscribes from the global subscriptions. */\n _removeSubscriptions() {\n this._pointerMoveSubscription.unsubscribe();\n this._pointerUpSubscription.unsubscribe();\n this._scrollSubscription.unsubscribe();\n }\n /** Destroys the preview element and its ViewRef. */\n _destroyPreview() {\n var _a, _b;\n (_a = this._preview) === null || _a === void 0 ? void 0 : _a.remove();\n (_b = this._previewRef) === null || _b === void 0 ? void 0 : _b.destroy();\n this._preview = this._previewRef = null;\n }\n /** Destroys the placeholder element and its ViewRef. */\n _destroyPlaceholder() {\n var _a, _b;\n (_a = this._placeholder) === null || _a === void 0 ? void 0 : _a.remove();\n (_b = this._placeholderRef) === null || _b === void 0 ? void 0 : _b.destroy();\n this._placeholder = this._placeholderRef = null;\n }\n /**\n * Clears subscriptions and stops the dragging sequence.\n * @param event Browser event object that ended the sequence.\n */\n _endDragSequence(event) {\n // Note that here we use `isDragging` from the service, rather than from `this`.\n // The difference is that the one from the service reflects whether a dragging sequence\n // has been initiated, whereas the one on `this` includes whether the user has passed\n // the minimum dragging threshold.\n if (!this._dragDropRegistry.isDragging(this)) {\n return;\n }\n this._removeSubscriptions();\n this._dragDropRegistry.stopDragging(this);\n this._toggleNativeDragInteractions();\n if (this._handles) {\n this._rootElement.style.webkitTapHighlightColor =\n this._rootElementTapHighlight;\n }\n if (!this._hasStartedDragging) {\n return;\n }\n this.released.next({ source: this });\n if (this._dropContainer) {\n // Stop scrolling immediately, instead of waiting for the animation to finish.\n this._dropContainer._stopScrolling();\n this._animatePreviewToPlaceholder().then(() => {\n this._cleanupDragArtifacts(event);\n this._cleanupCachedDimensions();\n this._dragDropRegistry.stopDragging(this);\n });\n }\n else {\n // Convert the active transform into a passive one. This means that next time\n // the user starts dragging the item, its position will be calculated relatively\n // to the new passive transform.\n this._passiveTransform.x = this._activeTransform.x;\n const pointerPosition = this._getPointerPositionOnPage(event);\n this._passiveTransform.y = this._activeTransform.y;\n this._ngZone.run(() => {\n this.ended.next({\n source: this,\n distance: this._getDragDistance(pointerPosition),\n dropPoint: pointerPosition,\n });\n });\n this._cleanupCachedDimensions();\n this._dragDropRegistry.stopDragging(this);\n }\n }\n /** Starts the dragging sequence. */\n _startDragSequence(event) {\n if (isTouchEvent(event)) {\n this._lastTouchEventTime = Date.now();\n }\n this._toggleNativeDragInteractions();\n const dropContainer = this._dropContainer;\n if (dropContainer) {\n const element = this._rootElement;\n const parent = element.parentNode;\n const placeholder = (this._placeholder = this._createPlaceholderElement());\n const anchor = (this._anchor = this._anchor || this._document.createComment(''));\n // Needs to happen before the root element is moved.\n const shadowRoot = this._getShadowRoot();\n // Insert an anchor node so that we can restore the element's position in the DOM.\n parent.insertBefore(anchor, element);\n // There's no risk of transforms stacking when inside a drop container so\n // we can keep the initial transform up to date any time dragging starts.\n this._initialTransform = element.style.transform || '';\n // Create the preview after the initial transform has\n // been cached, because it can be affected by the transform.\n this._preview = this._createPreviewElement();\n // We move the element out at the end of the body and we make it hidden, because keeping it in\n // place will throw off the consumer's `:last-child` selectors. We can't remove the element\n // from the DOM completely, because iOS will stop firing all subsequent events in the chain.\n toggleVisibility(element, false, dragImportantProperties);\n this._document.body.appendChild(parent.replaceChild(placeholder, element));\n this._getPreviewInsertionPoint(parent, shadowRoot).appendChild(this._preview);\n this.started.next({ source: this }); // Emit before notifying the container.\n dropContainer.start();\n this._initialContainer = dropContainer;\n this._initialIndex = dropContainer.getItemIndex(this);\n }\n else {\n this.started.next({ source: this });\n this._initialContainer = this._initialIndex = undefined;\n }\n // Important to run after we've called `start` on the parent container\n // so that it has had time to resolve its scrollable parents.\n this._parentPositions.cache(dropContainer ? dropContainer.getScrollableParents() : []);\n }\n /**\n * Sets up the different variables and subscriptions\n * that will be necessary for the dragging sequence.\n * @param referenceElement Element that started the drag sequence.\n * @param event Browser event object that started the sequence.\n */\n _initializeDragSequence(referenceElement, event) {\n // Stop propagation if the item is inside another\n // draggable so we don't start multiple drag sequences.\n if (this._parentDragRef) {\n event.stopPropagation();\n }\n const isDragging = this.isDragging();\n const isTouchSequence = isTouchEvent(event);\n const isAuxiliaryMouseButton = !isTouchSequence && event.button !== 0;\n const rootElement = this._rootElement;\n const target = _getEventTarget(event);\n const isSyntheticEvent = !isTouchSequence &&\n this._lastTouchEventTime &&\n this._lastTouchEventTime + MOUSE_EVENT_IGNORE_TIME > Date.now();\n const isFakeEvent = isTouchSequence\n ? isFakeTouchstartFromScreenReader(event)\n : isFakeMousedownFromScreenReader(event);\n // If the event started from an element with the native HTML drag&drop, it'll interfere\n // with our own dragging (e.g. `img` tags do it by default). Prevent the default action\n // to stop it from happening. Note that preventing on `dragstart` also seems to work, but\n // it's flaky and it fails if the user drags it away quickly. Also note that we only want\n // to do this for `mousedown` since doing the same for `touchstart` will stop any `click`\n // events from firing on touch devices.\n if (target && target.draggable && event.type === 'mousedown') {\n event.preventDefault();\n }\n // Abort if the user is already dragging or is using a mouse button other than the primary one.\n if (isDragging || isAuxiliaryMouseButton || isSyntheticEvent || isFakeEvent) {\n return;\n }\n // If we've got handles, we need to disable the tap highlight on the entire root element,\n // otherwise iOS will still add it, even though all the drag interactions on the handle\n // are disabled.\n if (this._handles.length) {\n const rootStyles = rootElement.style;\n this._rootElementTapHighlight = rootStyles.webkitTapHighlightColor || '';\n rootStyles.webkitTapHighlightColor = 'transparent';\n }\n this._hasStartedDragging = this._hasMoved = false;\n // Avoid multiple subscriptions and memory leaks when multi touch\n // (isDragging check above isn't enough because of possible temporal and/or dimensional delays)\n this._removeSubscriptions();\n this._pointerMoveSubscription = this._dragDropRegistry.pointerMove.subscribe(this._pointerMove);\n this._pointerUpSubscription = this._dragDropRegistry.pointerUp.subscribe(this._pointerUp);\n this._scrollSubscription = this._dragDropRegistry\n .scrolled(this._getShadowRoot())\n .subscribe(scrollEvent => this._updateOnScroll(scrollEvent));\n if (this._boundaryElement) {\n this._boundaryRect = getMutableClientRect(this._boundaryElement);\n }\n // If we have a custom preview we can't know ahead of time how large it'll be so we position\n // it next to the cursor. The exception is when the consumer has opted into making the preview\n // the same size as the root element, in which case we do know the size.\n const previewTemplate = this._previewTemplate;\n this._pickupPositionInElement =\n previewTemplate && previewTemplate.template && !previewTemplate.matchSize\n ? { x: 0, y: 0 }\n : this._getPointerPositionInElement(referenceElement, event);\n const pointerPosition = (this._pickupPositionOnPage =\n this._lastKnownPointerPosition =\n this._getPointerPositionOnPage(event));\n this._pointerDirectionDelta = { x: 0, y: 0 };\n this._pointerPositionAtLastDirectionChange = { x: pointerPosition.x, y: pointerPosition.y };\n this._dragStartTime = Date.now();\n this._dragDropRegistry.startDragging(this, event);\n }\n /** Cleans up the DOM artifacts that were added to facilitate the element being dragged. */\n _cleanupDragArtifacts(event) {\n // Restore the element's visibility and insert it at its old position in the DOM.\n // It's important that we maintain the position, because moving the element around in the DOM\n // can throw off `NgFor` which does smart diffing and re-creates elements only when necessary,\n // while moving the existing elements in all other cases.\n toggleVisibility(this._rootElement, true, dragImportantProperties);\n this._anchor.parentNode.replaceChild(this._rootElement, this._anchor);\n this._destroyPreview();\n this._destroyPlaceholder();\n this._boundaryRect = this._previewRect = this._initialTransform = undefined;\n // Re-enter the NgZone since we bound `document` events on the outside.\n this._ngZone.run(() => {\n const container = this._dropContainer;\n const currentIndex = container.getItemIndex(this);\n const pointerPosition = this._getPointerPositionOnPage(event);\n const distance = this._getDragDistance(pointerPosition);\n const isPointerOverContainer = container._isOverContainer(pointerPosition.x, pointerPosition.y);\n this.ended.next({ source: this, distance, dropPoint: pointerPosition });\n this.dropped.next({\n item: this,\n currentIndex,\n previousIndex: this._initialIndex,\n container: container,\n previousContainer: this._initialContainer,\n isPointerOverContainer,\n distance,\n dropPoint: pointerPosition,\n });\n container.drop(this, currentIndex, this._initialIndex, this._initialContainer, isPointerOverContainer, distance, pointerPosition);\n this._dropContainer = this._initialContainer;\n });\n }\n /**\n * Updates the item's position in its drop container, or moves it\n * into a new one, depending on its current drag position.\n */\n _updateActiveDropContainer({ x, y }, { x: rawX, y: rawY }) {\n // Drop container that draggable has been moved into.\n let newContainer = this._initialContainer._getSiblingContainerFromPosition(this, x, y);\n // If we couldn't find a new container to move the item into, and the item has left its\n // initial container, check whether the it's over the initial container. This handles the\n // case where two containers are connected one way and the user tries to undo dragging an\n // item into a new container.\n if (!newContainer &&\n this._dropContainer !== this._initialContainer &&\n this._initialContainer._isOverContainer(x, y)) {\n newContainer = this._initialContainer;\n }\n if (newContainer && newContainer !== this._dropContainer) {\n this._ngZone.run(() => {\n // Notify the old container that the item has left.\n this.exited.next({ item: this, container: this._dropContainer });\n this._dropContainer.exit(this);\n // Notify the new container that the item has entered.\n this._dropContainer = newContainer;\n this._dropContainer.enter(this, x, y, newContainer === this._initialContainer &&\n // If we're re-entering the initial container and sorting is disabled,\n // put item the into its starting index to begin with.\n newContainer.sortingDisabled\n ? this._initialIndex\n : undefined);\n this.entered.next({\n item: this,\n container: newContainer,\n currentIndex: newContainer.getItemIndex(this),\n });\n });\n }\n // Dragging may have been interrupted as a result of the events above.\n if (this.isDragging()) {\n this._dropContainer._startScrollingIfNecessary(rawX, rawY);\n this._dropContainer._sortItem(this, x, y, this._pointerDirectionDelta);\n this._applyPreviewTransform(x - this._pickupPositionInElement.x, y - this._pickupPositionInElement.y);\n }\n }\n /**\n * Creates the element that will be rendered next to the user's pointer\n * and will be used as a preview of the element that is being dragged.\n */\n _createPreviewElement() {\n const previewConfig = this._previewTemplate;\n const previewClass = this.previewClass;\n const previewTemplate = previewConfig ? previewConfig.template : null;\n let preview;\n if (previewTemplate && previewConfig) {\n // Measure the element before we've inserted the preview\n // since the insertion could throw off the measurement.\n const rootRect = previewConfig.matchSize ? this._rootElement.getBoundingClientRect() : null;\n const viewRef = previewConfig.viewContainer.createEmbeddedView(previewTemplate, previewConfig.context);\n viewRef.detectChanges();\n preview = getRootNode(viewRef, this._document);\n this._previewRef = viewRef;\n if (previewConfig.matchSize) {\n matchElementSize(preview, rootRect);\n }\n else {\n preview.style.transform = getTransform(this._pickupPositionOnPage.x, this._pickupPositionOnPage.y);\n }\n }\n else {\n const element = this._rootElement;\n preview = deepCloneNode(element);\n matchElementSize(preview, element.getBoundingClientRect());\n if (this._initialTransform) {\n preview.style.transform = this._initialTransform;\n }\n }\n extendStyles(preview.style, {\n // It's important that we disable the pointer events on the preview, because\n // it can throw off the `document.elementFromPoint` calls in the `CdkDropList`.\n 'pointer-events': 'none',\n // We have to reset the margin, because it can throw off positioning relative to the viewport.\n 'margin': '0',\n 'position': 'fixed',\n 'top': '0',\n 'left': '0',\n 'z-index': `${this._config.zIndex || 1000}`,\n }, dragImportantProperties);\n toggleNativeDragInteractions(preview, false);\n preview.classList.add('cdk-drag-preview');\n preview.setAttribute('dir', this._direction);\n if (previewClass) {\n if (Array.isArray(previewClass)) {\n previewClass.forEach(className => preview.classList.add(className));\n }\n else {\n preview.classList.add(previewClass);\n }\n }\n return preview;\n }\n /**\n * Animates the preview element from its current position to the location of the drop placeholder.\n * @returns Promise that resolves when the animation completes.\n */\n _animatePreviewToPlaceholder() {\n // If the user hasn't moved yet, the transitionend event won't fire.\n if (!this._hasMoved) {\n return Promise.resolve();\n }\n const placeholderRect = this._placeholder.getBoundingClientRect();\n // Apply the class that adds a transition to the preview.\n this._preview.classList.add('cdk-drag-animating');\n // Move the preview to the placeholder position.\n this._applyPreviewTransform(placeholderRect.left, placeholderRect.top);\n // If the element doesn't have a `transition`, the `transitionend` event won't fire. Since\n // we need to trigger a style recalculation in order for the `cdk-drag-animating` class to\n // apply its style, we take advantage of the available info to figure out whether we need to\n // bind the event in the first place.\n const duration = getTransformTransitionDurationInMs(this._preview);\n if (duration === 0) {\n return Promise.resolve();\n }\n return this._ngZone.runOutsideAngular(() => {\n return new Promise(resolve => {\n const handler = ((event) => {\n var _a;\n if (!event ||\n (_getEventTarget(event) === this._preview && event.propertyName === 'transform')) {\n (_a = this._preview) === null || _a === void 0 ? void 0 : _a.removeEventListener('transitionend', handler);\n resolve();\n clearTimeout(timeout);\n }\n });\n // If a transition is short enough, the browser might not fire the `transitionend` event.\n // Since we know how long it's supposed to take, add a timeout with a 50% buffer that'll\n // fire if the transition hasn't completed when it was supposed to.\n const timeout = setTimeout(handler, duration * 1.5);\n this._preview.addEventListener('transitionend', handler);\n });\n });\n }\n /** Creates an element that will be shown instead of the current element while dragging. */\n _createPlaceholderElement() {\n const placeholderConfig = this._placeholderTemplate;\n const placeholderTemplate = placeholderConfig ? placeholderConfig.template : null;\n let placeholder;\n if (placeholderTemplate) {\n this._placeholderRef = placeholderConfig.viewContainer.createEmbeddedView(placeholderTemplate, placeholderConfig.context);\n this._placeholderRef.detectChanges();\n placeholder = getRootNode(this._placeholderRef, this._document);\n }\n else {\n placeholder = deepCloneNode(this._rootElement);\n }\n // Stop pointer events on the preview so the user can't\n // interact with it while the preview is animating.\n placeholder.style.pointerEvents = 'none';\n placeholder.classList.add('cdk-drag-placeholder');\n return placeholder;\n }\n /**\n * Figures out the coordinates at which an element was picked up.\n * @param referenceElement Element that initiated the dragging.\n * @param event Event that initiated the dragging.\n */\n _getPointerPositionInElement(referenceElement, event) {\n const elementRect = this._rootElement.getBoundingClientRect();\n const handleElement = referenceElement === this._rootElement ? null : referenceElement;\n const referenceRect = handleElement ? handleElement.getBoundingClientRect() : elementRect;\n const point = isTouchEvent(event) ? event.targetTouches[0] : event;\n const scrollPosition = this._getViewportScrollPosition();\n const x = point.pageX - referenceRect.left - scrollPosition.left;\n const y = point.pageY - referenceRect.top - scrollPosition.top;\n return {\n x: referenceRect.left - elementRect.left + x,\n y: referenceRect.top - elementRect.top + y,\n };\n }\n /** Determines the point of the page that was touched by the user. */\n _getPointerPositionOnPage(event) {\n const scrollPosition = this._getViewportScrollPosition();\n const point = isTouchEvent(event)\n ? // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.\n // Also note that on real devices we're guaranteed for either `touches` or `changedTouches`\n // to have a value, but Firefox in device emulation mode has a bug where both can be empty\n // for `touchstart` and `touchend` so we fall back to a dummy object in order to avoid\n // throwing an error. The value returned here will be incorrect, but since this only\n // breaks inside a developer tool and the value is only used for secondary information,\n // we can get away with it. See https://bugzilla.mozilla.org/show_bug.cgi?id=1615824.\n event.touches[0] || event.changedTouches[0] || { pageX: 0, pageY: 0 }\n : event;\n const x = point.pageX - scrollPosition.left;\n const y = point.pageY - scrollPosition.top;\n // if dragging SVG element, try to convert from the screen coordinate system to the SVG\n // coordinate system\n if (this._ownerSVGElement) {\n const svgMatrix = this._ownerSVGElement.getScreenCTM();\n if (svgMatrix) {\n const svgPoint = this._ownerSVGElement.createSVGPoint();\n svgPoint.x = x;\n svgPoint.y = y;\n return svgPoint.matrixTransform(svgMatrix.inverse());\n }\n }\n return { x, y };\n }\n /** Gets the pointer position on the page, accounting for any position constraints. */\n _getConstrainedPointerPosition(point) {\n const dropContainerLock = this._dropContainer ? this._dropContainer.lockAxis : null;\n let { x, y } = this.constrainPosition ? this.constrainPosition(point, this) : point;\n if (this.lockAxis === 'x' || dropContainerLock === 'x') {\n y = this._pickupPositionOnPage.y;\n }\n else if (this.lockAxis === 'y' || dropContainerLock === 'y') {\n x = this._pickupPositionOnPage.x;\n }\n if (this._boundaryRect) {\n const { x: pickupX, y: pickupY } = this._pickupPositionInElement;\n const boundaryRect = this._boundaryRect;\n const { width: previewWidth, height: previewHeight } = this._getPreviewRect();\n const minY = boundaryRect.top + pickupY;\n const maxY = boundaryRect.bottom - (previewHeight - pickupY);\n const minX = boundaryRect.left + pickupX;\n const maxX = boundaryRect.right - (previewWidth - pickupX);\n x = clamp$1(x, minX, maxX);\n y = clamp$1(y, minY, maxY);\n }\n return { x, y };\n }\n /** Updates the current drag delta, based on the user's current pointer position on the page. */\n _updatePointerDirectionDelta(pointerPositionOnPage) {\n const { x, y } = pointerPositionOnPage;\n const delta = this._pointerDirectionDelta;\n const positionSinceLastChange = this._pointerPositionAtLastDirectionChange;\n // Amount of pixels the user has dragged since the last time the direction changed.\n const changeX = Math.abs(x - positionSinceLastChange.x);\n const changeY = Math.abs(y - positionSinceLastChange.y);\n // Because we handle pointer events on a per-pixel basis, we don't want the delta\n // to change for every pixel, otherwise anything that depends on it can look erratic.\n // To make the delta more consistent, we track how much the user has moved since the last\n // delta change and we only update it after it has reached a certain threshold.\n if (changeX > this._config.pointerDirectionChangeThreshold) {\n delta.x = x > positionSinceLastChange.x ? 1 : -1;\n positionSinceLastChange.x = x;\n }\n if (changeY > this._config.pointerDirectionChangeThreshold) {\n delta.y = y > positionSinceLastChange.y ? 1 : -1;\n positionSinceLastChange.y = y;\n }\n return delta;\n }\n /** Toggles the native drag interactions, based on how many handles are registered. */\n _toggleNativeDragInteractions() {\n if (!this._rootElement || !this._handles) {\n return;\n }\n const shouldEnable = this._handles.length > 0 || !this.isDragging();\n if (shouldEnable !== this._nativeInteractionsEnabled) {\n this._nativeInteractionsEnabled = shouldEnable;\n toggleNativeDragInteractions(this._rootElement, shouldEnable);\n }\n }\n /** Removes the manually-added event listeners from the root element. */\n _removeRootElementListeners(element) {\n element.removeEventListener('mousedown', this._pointerDown, activeEventListenerOptions);\n element.removeEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);\n element.removeEventListener('dragstart', this._nativeDragStart, activeEventListenerOptions);\n }\n /**\n * Applies a `transform` to the root element, taking into account any existing transforms on it.\n * @param x New transform value along the X axis.\n * @param y New transform value along the Y axis.\n */\n _applyRootElementTransform(x, y) {\n const transform = getTransform(x, y);\n const styles = this._rootElement.style;\n // Cache the previous transform amount only after the first drag sequence, because\n // we don't want our own transforms to stack on top of each other.\n // Should be excluded none because none + translate3d(x, y, x) is invalid css\n if (this._initialTransform == null) {\n this._initialTransform =\n styles.transform && styles.transform != 'none' ? styles.transform : '';\n }\n // Preserve the previous `transform` value, if there was one. Note that we apply our own\n // transform before the user's, because things like rotation can affect which direction\n // the element will be translated towards.\n styles.transform = combineTransforms(transform, this._initialTransform);\n }\n /**\n * Applies a `transform` to the preview, taking into account any existing transforms on it.\n * @param x New transform value along the X axis.\n * @param y New transform value along the Y axis.\n */\n _applyPreviewTransform(x, y) {\n var _a;\n // Only apply the initial transform if the preview is a clone of the original element, otherwise\n // it could be completely different and the transform might not make sense anymore.\n const initialTransform = ((_a = this._previewTemplate) === null || _a === void 0 ? void 0 : _a.template) ? undefined : this._initialTransform;\n const transform = getTransform(x, y);\n this._preview.style.transform = combineTransforms(transform, initialTransform);\n }\n /**\n * Gets the distance that the user has dragged during the current drag sequence.\n * @param currentPosition Current position of the user's pointer.\n */\n _getDragDistance(currentPosition) {\n const pickupPosition = this._pickupPositionOnPage;\n if (pickupPosition) {\n return { x: currentPosition.x - pickupPosition.x, y: currentPosition.y - pickupPosition.y };\n }\n return { x: 0, y: 0 };\n }\n /** Cleans up any cached element dimensions that we don't need after dragging has stopped. */\n _cleanupCachedDimensions() {\n this._boundaryRect = this._previewRect = undefined;\n this._parentPositions.clear();\n }\n /**\n * Checks whether the element is still inside its boundary after the viewport has been resized.\n * If not, the position is adjusted so that the element fits again.\n */\n _containInsideBoundaryOnResize() {\n let { x, y } = this._passiveTransform;\n if ((x === 0 && y === 0) || this.isDragging() || !this._boundaryElement) {\n return;\n }\n const boundaryRect = this._boundaryElement.getBoundingClientRect();\n const elementRect = this._rootElement.getBoundingClientRect();\n // It's possible that the element got hidden away after dragging (e.g. by switching to a\n // different tab). Don't do anything in this case so we don't clear the user's position.\n if ((boundaryRect.width === 0 && boundaryRect.height === 0) ||\n (elementRect.width === 0 && elementRect.height === 0)) {\n return;\n }\n const leftOverflow = boundaryRect.left - elementRect.left;\n const rightOverflow = elementRect.right - boundaryRect.right;\n const topOverflow = boundaryRect.top - elementRect.top;\n const bottomOverflow = elementRect.bottom - boundaryRect.bottom;\n // If the element has become wider than the boundary, we can't\n // do much to make it fit so we just anchor it to the left.\n if (boundaryRect.width > elementRect.width) {\n if (leftOverflow > 0) {\n x += leftOverflow;\n }\n if (rightOverflow > 0) {\n x -= rightOverflow;\n }\n }\n else {\n x = 0;\n }\n // If the element has become taller than the boundary, we can't\n // do much to make it fit so we just anchor it to the top.\n if (boundaryRect.height > elementRect.height) {\n if (topOverflow > 0) {\n y += topOverflow;\n }\n if (bottomOverflow > 0) {\n y -= bottomOverflow;\n }\n }\n else {\n y = 0;\n }\n if (x !== this._passiveTransform.x || y !== this._passiveTransform.y) {\n this.setFreeDragPosition({ y, x });\n }\n }\n /** Gets the drag start delay, based on the event type. */\n _getDragStartDelay(event) {\n const value = this.dragStartDelay;\n if (typeof value === 'number') {\n return value;\n }\n else if (isTouchEvent(event)) {\n return value.touch;\n }\n return value ? value.mouse : 0;\n }\n /** Updates the internal state of the draggable element when scrolling has occurred. */\n _updateOnScroll(event) {\n const scrollDifference = this._parentPositions.handleScroll(event);\n if (scrollDifference) {\n const target = _getEventTarget(event);\n // ClientRect dimensions are based on the scroll position of the page and its parent\n // node so we have to update the cached boundary ClientRect if the user has scrolled.\n if (this._boundaryRect &&\n target !== this._boundaryElement &&\n target.contains(this._boundaryElement)) {\n adjustClientRect(this._boundaryRect, scrollDifference.top, scrollDifference.left);\n }\n this._pickupPositionOnPage.x += scrollDifference.left;\n this._pickupPositionOnPage.y += scrollDifference.top;\n // If we're in free drag mode, we have to update the active transform, because\n // it isn't relative to the viewport like the preview inside a drop list.\n if (!this._dropContainer) {\n this._activeTransform.x -= scrollDifference.left;\n this._activeTransform.y -= scrollDifference.top;\n this._applyRootElementTransform(this._activeTransform.x, this._activeTransform.y);\n }\n }\n }\n /** Gets the scroll position of the viewport. */\n _getViewportScrollPosition() {\n var _a;\n return (((_a = this._parentPositions.positions.get(this._document)) === null || _a === void 0 ? void 0 : _a.scrollPosition) ||\n this._parentPositions.getViewportScrollPosition());\n }\n /**\n * Lazily resolves and returns the shadow root of the element. We do this in a function, rather\n * than saving it in property directly on init, because we want to resolve it as late as possible\n * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the\n * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.\n */\n _getShadowRoot() {\n if (this._cachedShadowRoot === undefined) {\n this._cachedShadowRoot = _getShadowRoot(this._rootElement);\n }\n return this._cachedShadowRoot;\n }\n /** Gets the element into which the drag preview should be inserted. */\n _getPreviewInsertionPoint(initialParent, shadowRoot) {\n const previewContainer = this._previewContainer || 'global';\n if (previewContainer === 'parent') {\n return initialParent;\n }\n if (previewContainer === 'global') {\n const documentRef = this._document;\n // We can't use the body if the user is in fullscreen mode,\n // because the preview will render under the fullscreen element.\n // TODO(crisbeto): dedupe this with the `FullscreenOverlayContainer` eventually.\n return (shadowRoot ||\n documentRef.fullscreenElement ||\n documentRef.webkitFullscreenElement ||\n documentRef.mozFullScreenElement ||\n documentRef.msFullscreenElement ||\n documentRef.body);\n }\n return coerceElement(previewContainer);\n }\n /** Lazily resolves and returns the dimensions of the preview. */\n _getPreviewRect() {\n // Cache the preview element rect if we haven't cached it already or if\n // we cached it too early before the element dimensions were computed.\n if (!this._previewRect || (!this._previewRect.width && !this._previewRect.height)) {\n this._previewRect = (this._preview || this._rootElement).getBoundingClientRect();\n }\n return this._previewRect;\n }\n /** Gets a handle that is the target of an event. */\n _getTargetHandle(event) {\n return this._handles.find(handle => {\n return event.target && (event.target === handle || handle.contains(event.target));\n });\n }\n}\n/**\n * Gets a 3d `transform` that can be applied to an element.\n * @param x Desired position of the element along the X axis.\n * @param y Desired position of the element along the Y axis.\n */\nfunction getTransform(x, y) {\n // Round the transforms since some browsers will\n // blur the elements for sub-pixel transforms.\n return `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`;\n}\n/** Clamps a value between a minimum and a maximum. */\nfunction clamp$1(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/** Determines whether an event is a touch event. */\nfunction isTouchEvent(event) {\n // This function is called for every pixel that the user has dragged so we need it to be\n // as fast as possible. Since we only bind mouse events and touch events, we can assume\n // that if the event's name starts with `t`, it's a touch event.\n return event.type[0] === 't';\n}\n/**\n * Gets the root HTML element of an embedded view.\n * If the root is not an HTML element it gets wrapped in one.\n */\nfunction getRootNode(viewRef, _document) {\n const rootNodes = viewRef.rootNodes;\n if (rootNodes.length === 1 && rootNodes[0].nodeType === _document.ELEMENT_NODE) {\n return rootNodes[0];\n }\n const wrapper = _document.createElement('div');\n rootNodes.forEach(node => wrapper.appendChild(node));\n return wrapper;\n}\n/**\n * Matches the target element's size to the source's size.\n * @param target Element that needs to be resized.\n * @param sourceRect Dimensions of the source element.\n */\nfunction matchElementSize(target, sourceRect) {\n target.style.width = `${sourceRect.width}px`;\n target.style.height = `${sourceRect.height}px`;\n target.style.transform = getTransform(sourceRect.left, sourceRect.top);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Moves an item one index in an array to another.\n * @param array Array in which to move the item.\n * @param fromIndex Starting index of the item.\n * @param toIndex Index to which the item should be moved.\n */\nfunction moveItemInArray(array, fromIndex, toIndex) {\n const from = clamp(fromIndex, array.length - 1);\n const to = clamp(toIndex, array.length - 1);\n if (from === to) {\n return;\n }\n const target = array[from];\n const delta = to < from ? -1 : 1;\n for (let i = from; i !== to; i += delta) {\n array[i] = array[i + delta];\n }\n array[to] = target;\n}\n/**\n * Moves an item from one array to another.\n * @param currentArray Array from which to transfer the item.\n * @param targetArray Array into which to put the item.\n * @param currentIndex Index of the item in its current array.\n * @param targetIndex Index at which to insert the item.\n */\nfunction transferArrayItem(currentArray, targetArray, currentIndex, targetIndex) {\n const from = clamp(currentIndex, currentArray.length - 1);\n const to = clamp(targetIndex, targetArray.length);\n if (currentArray.length) {\n targetArray.splice(to, 0, currentArray.splice(from, 1)[0]);\n }\n}\n/**\n * Copies an item from one array to another, leaving it in its\n * original position in current array.\n * @param currentArray Array from which to copy the item.\n * @param targetArray Array into which is copy the item.\n * @param currentIndex Index of the item in its current array.\n * @param targetIndex Index at which to insert the item.\n *\n */\nfunction copyArrayItem(currentArray, targetArray, currentIndex, targetIndex) {\n const to = clamp(targetIndex, targetArray.length);\n if (currentArray.length) {\n targetArray.splice(to, 0, currentArray[currentIndex]);\n }\n}\n/** Clamps a number between zero and a maximum. */\nfunction clamp(value, max) {\n return Math.max(0, Math.min(max, value));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Proximity, as a ratio to width/height, at which a\n * dragged item will affect the drop container.\n */\nconst DROP_PROXIMITY_THRESHOLD = 0.05;\n/**\n * Proximity, as a ratio to width/height at which to start auto-scrolling the drop list or the\n * viewport. The value comes from trying it out manually until it feels right.\n */\nconst SCROLL_PROXIMITY_THRESHOLD = 0.05;\n/**\n * Reference to a drop list. Used to manipulate or dispose of the container.\n */\nclass DropListRef {\n constructor(element, _dragDropRegistry, _document, _ngZone, _viewportRuler) {\n this._dragDropRegistry = _dragDropRegistry;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n /** Whether starting a dragging sequence from this container is disabled. */\n this.disabled = false;\n /** Whether sorting items within the list is disabled. */\n this.sortingDisabled = false;\n /**\n * Whether auto-scrolling the view when the user\n * moves their pointer close to the edges is disabled.\n */\n this.autoScrollDisabled = false;\n /** Number of pixels to scroll for each frame when auto-scrolling an element. */\n this.autoScrollStep = 2;\n /**\n * Function that is used to determine whether an item\n * is allowed to be moved into a drop container.\n */\n this.enterPredicate = () => true;\n /** Functions that is used to determine whether an item can be sorted into a particular index. */\n this.sortPredicate = () => true;\n /** Emits right before dragging has started. */\n this.beforeStarted = new Subject();\n /**\n * Emits when the user has moved a new drag item into this container.\n */\n this.entered = new Subject();\n /**\n * Emits when the user removes an item from the container\n * by dragging it into another container.\n */\n this.exited = new Subject();\n /** Emits when the user drops an item inside the container. */\n this.dropped = new Subject();\n /** Emits as the user is swapping items while actively dragging. */\n this.sorted = new Subject();\n /** Whether an item in the list is being dragged. */\n this._isDragging = false;\n /** Cache of the dimensions of all the items inside the container. */\n this._itemPositions = [];\n /**\n * Keeps track of the item that was last swapped with the dragged item, as well as what direction\n * the pointer was moving in when the swap occured and whether the user's pointer continued to\n * overlap with the swapped item after the swapping occurred.\n */\n this._previousSwap = { drag: null, delta: 0, overlaps: false };\n /** Draggable items in the container. */\n this._draggables = [];\n /** Drop lists that are connected to the current one. */\n this._siblings = [];\n /** Direction in which the list is oriented. */\n this._orientation = 'vertical';\n /** Connected siblings that currently have a dragged item. */\n this._activeSiblings = new Set();\n /** Layout direction of the drop list. */\n this._direction = 'ltr';\n /** Subscription to the window being scrolled. */\n this._viewportScrollSubscription = Subscription.EMPTY;\n /** Vertical direction in which the list is currently scrolling. */\n this._verticalScrollDirection = 0 /* NONE */;\n /** Horizontal direction in which the list is currently scrolling. */\n this._horizontalScrollDirection = 0 /* NONE */;\n /** Used to signal to the current auto-scroll sequence when to stop. */\n this._stopScrollTimers = new Subject();\n /** Shadow root of the current element. Necessary for `elementFromPoint` to resolve correctly. */\n this._cachedShadowRoot = null;\n /** Starts the interval that'll auto-scroll the element. */\n this._startScrollInterval = () => {\n this._stopScrolling();\n interval(0, animationFrameScheduler)\n .pipe(takeUntil(this._stopScrollTimers))\n .subscribe(() => {\n const node = this._scrollNode;\n const scrollStep = this.autoScrollStep;\n if (this._verticalScrollDirection === 1 /* UP */) {\n node.scrollBy(0, -scrollStep);\n }\n else if (this._verticalScrollDirection === 2 /* DOWN */) {\n node.scrollBy(0, scrollStep);\n }\n if (this._horizontalScrollDirection === 1 /* LEFT */) {\n node.scrollBy(-scrollStep, 0);\n }\n else if (this._horizontalScrollDirection === 2 /* RIGHT */) {\n node.scrollBy(scrollStep, 0);\n }\n });\n };\n this.element = coerceElement(element);\n this._document = _document;\n this.withScrollableParents([this.element]);\n _dragDropRegistry.registerDropContainer(this);\n this._parentPositions = new ParentPositionTracker(_document);\n }\n /** Removes the drop list functionality from the DOM element. */\n dispose() {\n this._stopScrolling();\n this._stopScrollTimers.complete();\n this._viewportScrollSubscription.unsubscribe();\n this.beforeStarted.complete();\n this.entered.complete();\n this.exited.complete();\n this.dropped.complete();\n this.sorted.complete();\n this._activeSiblings.clear();\n this._scrollNode = null;\n this._parentPositions.clear();\n this._dragDropRegistry.removeDropContainer(this);\n }\n /** Whether an item from this list is currently being dragged. */\n isDragging() {\n return this._isDragging;\n }\n /** Starts dragging an item. */\n start() {\n this._draggingStarted();\n this._notifyReceivingSiblings();\n }\n /**\n * Emits an event to indicate that the user moved an item into the container.\n * @param item Item that was moved into the container.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param index Index at which the item entered. If omitted, the container will try to figure it\n * out automatically.\n */\n enter(item, pointerX, pointerY, index) {\n this._draggingStarted();\n // If sorting is disabled, we want the item to return to its starting\n // position if the user is returning it to its initial container.\n let newIndex;\n if (index == null) {\n newIndex = this.sortingDisabled ? this._draggables.indexOf(item) : -1;\n if (newIndex === -1) {\n // We use the coordinates of where the item entered the drop\n // zone to figure out at which index it should be inserted.\n newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY);\n }\n }\n else {\n newIndex = index;\n }\n const activeDraggables = this._activeDraggables;\n const currentIndex = activeDraggables.indexOf(item);\n const placeholder = item.getPlaceholderElement();\n let newPositionReference = activeDraggables[newIndex];\n // If the item at the new position is the same as the item that is being dragged,\n // it means that we're trying to restore the item to its initial position. In this\n // case we should use the next item from the list as the reference.\n if (newPositionReference === item) {\n newPositionReference = activeDraggables[newIndex + 1];\n }\n // If we didn't find a new position reference, it means that either the item didn't start off\n // in this container, or that the item requested to be inserted at the end of the list.\n if (!newPositionReference &&\n (newIndex == null || newIndex === -1 || newIndex < activeDraggables.length - 1) &&\n this._shouldEnterAsFirstChild(pointerX, pointerY)) {\n newPositionReference = activeDraggables[0];\n }\n // Since the item may be in the `activeDraggables` already (e.g. if the user dragged it\n // into another container and back again), we have to ensure that it isn't duplicated.\n if (currentIndex > -1) {\n activeDraggables.splice(currentIndex, 1);\n }\n // Don't use items that are being dragged as a reference, because\n // their element has been moved down to the bottom of the body.\n if (newPositionReference && !this._dragDropRegistry.isDragging(newPositionReference)) {\n const element = newPositionReference.getRootElement();\n element.parentElement.insertBefore(placeholder, element);\n activeDraggables.splice(newIndex, 0, item);\n }\n else {\n coerceElement(this.element).appendChild(placeholder);\n activeDraggables.push(item);\n }\n // The transform needs to be cleared so it doesn't throw off the measurements.\n placeholder.style.transform = '';\n // Note that the positions were already cached when we called `start` above,\n // but we need to refresh them since the amount of items has changed and also parent rects.\n this._cacheItemPositions();\n this._cacheParentPositions();\n // Notify siblings at the end so that the item has been inserted into the `activeDraggables`.\n this._notifyReceivingSiblings();\n this.entered.next({ item, container: this, currentIndex: this.getItemIndex(item) });\n }\n /**\n * Removes an item from the container after it was dragged into another container by the user.\n * @param item Item that was dragged out.\n */\n exit(item) {\n this._reset();\n this.exited.next({ item, container: this });\n }\n /**\n * Drops an item into this container.\n * @param item Item being dropped into the container.\n * @param currentIndex Index at which the item should be inserted.\n * @param previousIndex Index of the item when dragging started.\n * @param previousContainer Container from which the item got dragged in.\n * @param isPointerOverContainer Whether the user's pointer was over the\n * container when the item was dropped.\n * @param distance Distance the user has dragged since the start of the dragging sequence.\n */\n drop(item, currentIndex, previousIndex, previousContainer, isPointerOverContainer, distance, dropPoint) {\n this._reset();\n this.dropped.next({\n item,\n currentIndex,\n previousIndex,\n container: this,\n previousContainer,\n isPointerOverContainer,\n distance,\n dropPoint,\n });\n }\n /**\n * Sets the draggable items that are a part of this list.\n * @param items Items that are a part of this list.\n */\n withItems(items) {\n const previousItems = this._draggables;\n this._draggables = items;\n items.forEach(item => item._withDropContainer(this));\n if (this.isDragging()) {\n const draggedItems = previousItems.filter(item => item.isDragging());\n // If all of the items being dragged were removed\n // from the list, abort the current drag sequence.\n if (draggedItems.every(item => items.indexOf(item) === -1)) {\n this._reset();\n }\n else {\n this._cacheItems();\n }\n }\n return this;\n }\n /** Sets the layout direction of the drop list. */\n withDirection(direction) {\n this._direction = direction;\n return this;\n }\n /**\n * Sets the containers that are connected to this one. When two or more containers are\n * connected, the user will be allowed to transfer items between them.\n * @param connectedTo Other containers that the current containers should be connected to.\n */\n connectedTo(connectedTo) {\n this._siblings = connectedTo.slice();\n return this;\n }\n /**\n * Sets the orientation of the container.\n * @param orientation New orientation for the container.\n */\n withOrientation(orientation) {\n this._orientation = orientation;\n return this;\n }\n /**\n * Sets which parent elements are can be scrolled while the user is dragging.\n * @param elements Elements that can be scrolled.\n */\n withScrollableParents(elements) {\n const element = coerceElement(this.element);\n // We always allow the current element to be scrollable\n // so we need to ensure that it's in the array.\n this._scrollableElements =\n elements.indexOf(element) === -1 ? [element, ...elements] : elements.slice();\n return this;\n }\n /** Gets the scrollable parents that are registered with this drop container. */\n getScrollableParents() {\n return this._scrollableElements;\n }\n /**\n * Figures out the index of an item in the container.\n * @param item Item whose index should be determined.\n */\n getItemIndex(item) {\n if (!this._isDragging) {\n return this._draggables.indexOf(item);\n }\n // Items are sorted always by top/left in the cache, however they flow differently in RTL.\n // The rest of the logic still stands no matter what orientation we're in, however\n // we need to invert the array when determining the index.\n const items = this._orientation === 'horizontal' && this._direction === 'rtl'\n ? this._itemPositions.slice().reverse()\n : this._itemPositions;\n return items.findIndex(currentItem => currentItem.drag === item);\n }\n /**\n * Whether the list is able to receive the item that\n * is currently being dragged inside a connected drop list.\n */\n isReceiving() {\n return this._activeSiblings.size > 0;\n }\n /**\n * Sorts an item inside the container based on its position.\n * @param item Item to be sorted.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param pointerDelta Direction in which the pointer is moving along each axis.\n */\n _sortItem(item, pointerX, pointerY, pointerDelta) {\n // Don't sort the item if sorting is disabled or it's out of range.\n if (this.sortingDisabled ||\n !this._clientRect ||\n !isPointerNearClientRect(this._clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {\n return;\n }\n const siblings = this._itemPositions;\n const newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY, pointerDelta);\n if (newIndex === -1 && siblings.length > 0) {\n return;\n }\n const isHorizontal = this._orientation === 'horizontal';\n const currentIndex = siblings.findIndex(currentItem => currentItem.drag === item);\n const siblingAtNewPosition = siblings[newIndex];\n const currentPosition = siblings[currentIndex].clientRect;\n const newPosition = siblingAtNewPosition.clientRect;\n const delta = currentIndex > newIndex ? 1 : -1;\n // How many pixels the item's placeholder should be offset.\n const itemOffset = this._getItemOffsetPx(currentPosition, newPosition, delta);\n // How many pixels all the other items should be offset.\n const siblingOffset = this._getSiblingOffsetPx(currentIndex, siblings, delta);\n // Save the previous order of the items before moving the item to its new index.\n // We use this to check whether an item has been moved as a result of the sorting.\n const oldOrder = siblings.slice();\n // Shuffle the array in place.\n moveItemInArray(siblings, currentIndex, newIndex);\n this.sorted.next({\n previousIndex: currentIndex,\n currentIndex: newIndex,\n container: this,\n item,\n });\n siblings.forEach((sibling, index) => {\n // Don't do anything if the position hasn't changed.\n if (oldOrder[index] === sibling) {\n return;\n }\n const isDraggedItem = sibling.drag === item;\n const offset = isDraggedItem ? itemOffset : siblingOffset;\n const elementToOffset = isDraggedItem\n ? item.getPlaceholderElement()\n : sibling.drag.getRootElement();\n // Update the offset to reflect the new position.\n sibling.offset += offset;\n // Since we're moving the items with a `transform`, we need to adjust their cached\n // client rects to reflect their new position, as well as swap their positions in the cache.\n // Note that we shouldn't use `getBoundingClientRect` here to update the cache, because the\n // elements may be mid-animation which will give us a wrong result.\n if (isHorizontal) {\n // Round the transforms since some browsers will\n // blur the elements, for sub-pixel transforms.\n elementToOffset.style.transform = combineTransforms(`translate3d(${Math.round(sibling.offset)}px, 0, 0)`, sibling.initialTransform);\n adjustClientRect(sibling.clientRect, 0, offset);\n }\n else {\n elementToOffset.style.transform = combineTransforms(`translate3d(0, ${Math.round(sibling.offset)}px, 0)`, sibling.initialTransform);\n adjustClientRect(sibling.clientRect, offset, 0);\n }\n });\n // Note that it's important that we do this after the client rects have been adjusted.\n this._previousSwap.overlaps = isInsideClientRect(newPosition, pointerX, pointerY);\n this._previousSwap.drag = siblingAtNewPosition.drag;\n this._previousSwap.delta = isHorizontal ? pointerDelta.x : pointerDelta.y;\n }\n /**\n * Checks whether the user's pointer is close to the edges of either the\n * viewport or the drop list and starts the auto-scroll sequence.\n * @param pointerX User's pointer position along the x axis.\n * @param pointerY User's pointer position along the y axis.\n */\n _startScrollingIfNecessary(pointerX, pointerY) {\n if (this.autoScrollDisabled) {\n return;\n }\n let scrollNode;\n let verticalScrollDirection = 0 /* NONE */;\n let horizontalScrollDirection = 0 /* NONE */;\n // Check whether we should start scrolling any of the parent containers.\n this._parentPositions.positions.forEach((position, element) => {\n // We have special handling for the `document` below. Also this would be\n // nicer with a for...of loop, but it requires changing a compiler flag.\n if (element === this._document || !position.clientRect || scrollNode) {\n return;\n }\n if (isPointerNearClientRect(position.clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {\n [verticalScrollDirection, horizontalScrollDirection] = getElementScrollDirections(element, position.clientRect, pointerX, pointerY);\n if (verticalScrollDirection || horizontalScrollDirection) {\n scrollNode = element;\n }\n }\n });\n // Otherwise check if we can start scrolling the viewport.\n if (!verticalScrollDirection && !horizontalScrollDirection) {\n const { width, height } = this._viewportRuler.getViewportSize();\n const clientRect = {\n width,\n height,\n top: 0,\n right: width,\n bottom: height,\n left: 0,\n };\n verticalScrollDirection = getVerticalScrollDirection(clientRect, pointerY);\n horizontalScrollDirection = getHorizontalScrollDirection(clientRect, pointerX);\n scrollNode = window;\n }\n if (scrollNode &&\n (verticalScrollDirection !== this._verticalScrollDirection ||\n horizontalScrollDirection !== this._horizontalScrollDirection ||\n scrollNode !== this._scrollNode)) {\n this._verticalScrollDirection = verticalScrollDirection;\n this._horizontalScrollDirection = horizontalScrollDirection;\n this._scrollNode = scrollNode;\n if ((verticalScrollDirection || horizontalScrollDirection) && scrollNode) {\n this._ngZone.runOutsideAngular(this._startScrollInterval);\n }\n else {\n this._stopScrolling();\n }\n }\n }\n /** Stops any currently-running auto-scroll sequences. */\n _stopScrolling() {\n this._stopScrollTimers.next();\n }\n /** Starts the dragging sequence within the list. */\n _draggingStarted() {\n const styles = coerceElement(this.element).style;\n this.beforeStarted.next();\n this._isDragging = true;\n // We need to disable scroll snapping while the user is dragging, because it breaks automatic\n // scrolling. The browser seems to round the value based on the snapping points which means\n // that we can't increment/decrement the scroll position.\n this._initialScrollSnap = styles.msScrollSnapType || styles.scrollSnapType || '';\n styles.scrollSnapType = styles.msScrollSnapType = 'none';\n this._cacheItems();\n this._viewportScrollSubscription.unsubscribe();\n this._listenToScrollEvents();\n }\n /** Caches the positions of the configured scrollable parents. */\n _cacheParentPositions() {\n const element = coerceElement(this.element);\n this._parentPositions.cache(this._scrollableElements);\n // The list element is always in the `scrollableElements`\n // so we can take advantage of the cached `ClientRect`.\n this._clientRect = this._parentPositions.positions.get(element).clientRect;\n }\n /** Refreshes the position cache of the items and sibling containers. */\n _cacheItemPositions() {\n const isHorizontal = this._orientation === 'horizontal';\n this._itemPositions = this._activeDraggables\n .map(drag => {\n const elementToMeasure = drag.getVisibleElement();\n return {\n drag,\n offset: 0,\n initialTransform: elementToMeasure.style.transform || '',\n clientRect: getMutableClientRect(elementToMeasure),\n };\n })\n .sort((a, b) => {\n return isHorizontal\n ? a.clientRect.left - b.clientRect.left\n : a.clientRect.top - b.clientRect.top;\n });\n }\n /** Resets the container to its initial state. */\n _reset() {\n this._isDragging = false;\n const styles = coerceElement(this.element).style;\n styles.scrollSnapType = styles.msScrollSnapType = this._initialScrollSnap;\n // TODO(crisbeto): may have to wait for the animations to finish.\n this._activeDraggables.forEach(item => {\n var _a;\n const rootElement = item.getRootElement();\n if (rootElement) {\n const initialTransform = (_a = this._itemPositions.find(current => current.drag === item)) === null || _a === void 0 ? void 0 : _a.initialTransform;\n rootElement.style.transform = initialTransform || '';\n }\n });\n this._siblings.forEach(sibling => sibling._stopReceiving(this));\n this._activeDraggables = [];\n this._itemPositions = [];\n this._previousSwap.drag = null;\n this._previousSwap.delta = 0;\n this._previousSwap.overlaps = false;\n this._stopScrolling();\n this._viewportScrollSubscription.unsubscribe();\n this._parentPositions.clear();\n }\n /**\n * Gets the offset in pixels by which the items that aren't being dragged should be moved.\n * @param currentIndex Index of the item currently being dragged.\n * @param siblings All of the items in the list.\n * @param delta Direction in which the user is moving.\n */\n _getSiblingOffsetPx(currentIndex, siblings, delta) {\n const isHorizontal = this._orientation === 'horizontal';\n const currentPosition = siblings[currentIndex].clientRect;\n const immediateSibling = siblings[currentIndex + delta * -1];\n let siblingOffset = currentPosition[isHorizontal ? 'width' : 'height'] * delta;\n if (immediateSibling) {\n const start = isHorizontal ? 'left' : 'top';\n const end = isHorizontal ? 'right' : 'bottom';\n // Get the spacing between the start of the current item and the end of the one immediately\n // after it in the direction in which the user is dragging, or vice versa. We add it to the\n // offset in order to push the element to where it will be when it's inline and is influenced\n // by the `margin` of its siblings.\n if (delta === -1) {\n siblingOffset -= immediateSibling.clientRect[start] - currentPosition[end];\n }\n else {\n siblingOffset += currentPosition[start] - immediateSibling.clientRect[end];\n }\n }\n return siblingOffset;\n }\n /**\n * Gets the offset in pixels by which the item that is being dragged should be moved.\n * @param currentPosition Current position of the item.\n * @param newPosition Position of the item where the current item should be moved.\n * @param delta Direction in which the user is moving.\n */\n _getItemOffsetPx(currentPosition, newPosition, delta) {\n const isHorizontal = this._orientation === 'horizontal';\n let itemOffset = isHorizontal\n ? newPosition.left - currentPosition.left\n : newPosition.top - currentPosition.top;\n // Account for differences in the item width/height.\n if (delta === -1) {\n itemOffset += isHorizontal\n ? newPosition.width - currentPosition.width\n : newPosition.height - currentPosition.height;\n }\n return itemOffset;\n }\n /**\n * Checks if pointer is entering in the first position\n * @param pointerX Position of the user's pointer along the X axis.\n * @param pointerY Position of the user's pointer along the Y axis.\n */\n _shouldEnterAsFirstChild(pointerX, pointerY) {\n if (!this._activeDraggables.length) {\n return false;\n }\n const itemPositions = this._itemPositions;\n const isHorizontal = this._orientation === 'horizontal';\n // `itemPositions` are sorted by position while `activeDraggables` are sorted by child index\n // check if container is using some sort of \"reverse\" ordering (eg: flex-direction: row-reverse)\n const reversed = itemPositions[0].drag !== this._activeDraggables[0];\n if (reversed) {\n const lastItemRect = itemPositions[itemPositions.length - 1].clientRect;\n return isHorizontal ? pointerX >= lastItemRect.right : pointerY >= lastItemRect.bottom;\n }\n else {\n const firstItemRect = itemPositions[0].clientRect;\n return isHorizontal ? pointerX <= firstItemRect.left : pointerY <= firstItemRect.top;\n }\n }\n /**\n * Gets the index of an item in the drop container, based on the position of the user's pointer.\n * @param item Item that is being sorted.\n * @param pointerX Position of the user's pointer along the X axis.\n * @param pointerY Position of the user's pointer along the Y axis.\n * @param delta Direction in which the user is moving their pointer.\n */\n _getItemIndexFromPointerPosition(item, pointerX, pointerY, delta) {\n const isHorizontal = this._orientation === 'horizontal';\n const index = this._itemPositions.findIndex(({ drag, clientRect }) => {\n // Skip the item itself.\n if (drag === item) {\n return false;\n }\n if (delta) {\n const direction = isHorizontal ? delta.x : delta.y;\n // If the user is still hovering over the same item as last time, their cursor hasn't left\n // the item after we made the swap, and they didn't change the direction in which they're\n // dragging, we don't consider it a direction swap.\n if (drag === this._previousSwap.drag &&\n this._previousSwap.overlaps &&\n direction === this._previousSwap.delta) {\n return false;\n }\n }\n return isHorizontal\n ? // Round these down since most browsers report client rects with\n // sub-pixel precision, whereas the pointer coordinates are rounded to pixels.\n pointerX >= Math.floor(clientRect.left) && pointerX < Math.floor(clientRect.right)\n : pointerY >= Math.floor(clientRect.top) && pointerY < Math.floor(clientRect.bottom);\n });\n return index === -1 || !this.sortPredicate(index, item, this) ? -1 : index;\n }\n /** Caches the current items in the list and their positions. */\n _cacheItems() {\n this._activeDraggables = this._draggables.slice();\n this._cacheItemPositions();\n this._cacheParentPositions();\n }\n /**\n * Checks whether the user's pointer is positioned over the container.\n * @param x Pointer position along the X axis.\n * @param y Pointer position along the Y axis.\n */\n _isOverContainer(x, y) {\n return this._clientRect != null && isInsideClientRect(this._clientRect, x, y);\n }\n /**\n * Figures out whether an item should be moved into a sibling\n * drop container, based on its current position.\n * @param item Drag item that is being moved.\n * @param x Position of the item along the X axis.\n * @param y Position of the item along the Y axis.\n */\n _getSiblingContainerFromPosition(item, x, y) {\n return this._siblings.find(sibling => sibling._canReceive(item, x, y));\n }\n /**\n * Checks whether the drop list can receive the passed-in item.\n * @param item Item that is being dragged into the list.\n * @param x Position of the item along the X axis.\n * @param y Position of the item along the Y axis.\n */\n _canReceive(item, x, y) {\n if (!this._clientRect ||\n !isInsideClientRect(this._clientRect, x, y) ||\n !this.enterPredicate(item, this)) {\n return false;\n }\n const elementFromPoint = this._getShadowRoot().elementFromPoint(x, y);\n // If there's no element at the pointer position, then\n // the client rect is probably scrolled out of the view.\n if (!elementFromPoint) {\n return false;\n }\n const nativeElement = coerceElement(this.element);\n // The `ClientRect`, that we're using to find the container over which the user is\n // hovering, doesn't give us any information on whether the element has been scrolled\n // out of the view or whether it's overlapping with other containers. This means that\n // we could end up transferring the item into a container that's invisible or is positioned\n // below another one. We use the result from `elementFromPoint` to get the top-most element\n // at the pointer position and to find whether it's one of the intersecting drop containers.\n return elementFromPoint === nativeElement || nativeElement.contains(elementFromPoint);\n }\n /**\n * Called by one of the connected drop lists when a dragging sequence has started.\n * @param sibling Sibling in which dragging has started.\n */\n _startReceiving(sibling, items) {\n const activeSiblings = this._activeSiblings;\n if (!activeSiblings.has(sibling) &&\n items.every(item => {\n // Note that we have to add an exception to the `enterPredicate` for items that started off\n // in this drop list. The drag ref has logic that allows an item to return to its initial\n // container, if it has left the initial container and none of the connected containers\n // allow it to enter. See `DragRef._updateActiveDropContainer` for more context.\n return this.enterPredicate(item, this) || this._draggables.indexOf(item) > -1;\n })) {\n activeSiblings.add(sibling);\n this._cacheParentPositions();\n this._listenToScrollEvents();\n }\n }\n /**\n * Called by a connected drop list when dragging has stopped.\n * @param sibling Sibling whose dragging has stopped.\n */\n _stopReceiving(sibling) {\n this._activeSiblings.delete(sibling);\n this._viewportScrollSubscription.unsubscribe();\n }\n /**\n * Starts listening to scroll events on the viewport.\n * Used for updating the internal state of the list.\n */\n _listenToScrollEvents() {\n this._viewportScrollSubscription = this._dragDropRegistry\n .scrolled(this._getShadowRoot())\n .subscribe(event => {\n if (this.isDragging()) {\n const scrollDifference = this._parentPositions.handleScroll(event);\n if (scrollDifference) {\n // Since we know the amount that the user has scrolled we can shift all of the\n // client rectangles ourselves. This is cheaper than re-measuring everything and\n // we can avoid inconsistent behavior where we might be measuring the element before\n // its position has changed.\n this._itemPositions.forEach(({ clientRect }) => {\n adjustClientRect(clientRect, scrollDifference.top, scrollDifference.left);\n });\n // We need two loops for this, because we want all of the cached\n // positions to be up-to-date before we re-sort the item.\n this._itemPositions.forEach(({ drag }) => {\n if (this._dragDropRegistry.isDragging(drag)) {\n // We need to re-sort the item manually, because the pointer move\n // events won't be dispatched while the user is scrolling.\n drag._sortFromLastPointerPosition();\n }\n });\n }\n }\n else if (this.isReceiving()) {\n this._cacheParentPositions();\n }\n });\n }\n /**\n * Lazily resolves and returns the shadow root of the element. We do this in a function, rather\n * than saving it in property directly on init, because we want to resolve it as late as possible\n * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the\n * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.\n */\n _getShadowRoot() {\n if (!this._cachedShadowRoot) {\n const shadowRoot = _getShadowRoot(coerceElement(this.element));\n this._cachedShadowRoot = (shadowRoot || this._document);\n }\n return this._cachedShadowRoot;\n }\n /** Notifies any siblings that may potentially receive the item. */\n _notifyReceivingSiblings() {\n const draggedItems = this._activeDraggables.filter(item => item.isDragging());\n this._siblings.forEach(sibling => sibling._startReceiving(this, draggedItems));\n }\n}\n/**\n * Gets whether the vertical auto-scroll direction of a node.\n * @param clientRect Dimensions of the node.\n * @param pointerY Position of the user's pointer along the y axis.\n */\nfunction getVerticalScrollDirection(clientRect, pointerY) {\n const { top, bottom, height } = clientRect;\n const yThreshold = height * SCROLL_PROXIMITY_THRESHOLD;\n if (pointerY >= top - yThreshold && pointerY <= top + yThreshold) {\n return 1 /* UP */;\n }\n else if (pointerY >= bottom - yThreshold && pointerY <= bottom + yThreshold) {\n return 2 /* DOWN */;\n }\n return 0 /* NONE */;\n}\n/**\n * Gets whether the horizontal auto-scroll direction of a node.\n * @param clientRect Dimensions of the node.\n * @param pointerX Position of the user's pointer along the x axis.\n */\nfunction getHorizontalScrollDirection(clientRect, pointerX) {\n const { left, right, width } = clientRect;\n const xThreshold = width * SCROLL_PROXIMITY_THRESHOLD;\n if (pointerX >= left - xThreshold && pointerX <= left + xThreshold) {\n return 1 /* LEFT */;\n }\n else if (pointerX >= right - xThreshold && pointerX <= right + xThreshold) {\n return 2 /* RIGHT */;\n }\n return 0 /* NONE */;\n}\n/**\n * Gets the directions in which an element node should be scrolled,\n * assuming that the user's pointer is already within it scrollable region.\n * @param element Element for which we should calculate the scroll direction.\n * @param clientRect Bounding client rectangle of the element.\n * @param pointerX Position of the user's pointer along the x axis.\n * @param pointerY Position of the user's pointer along the y axis.\n */\nfunction getElementScrollDirections(element, clientRect, pointerX, pointerY) {\n const computedVertical = getVerticalScrollDirection(clientRect, pointerY);\n const computedHorizontal = getHorizontalScrollDirection(clientRect, pointerX);\n let verticalScrollDirection = 0 /* NONE */;\n let horizontalScrollDirection = 0 /* NONE */;\n // Note that we here we do some extra checks for whether the element is actually scrollable in\n // a certain direction and we only assign the scroll direction if it is. We do this so that we\n // can allow other elements to be scrolled, if the current element can't be scrolled anymore.\n // This allows us to handle cases where the scroll regions of two scrollable elements overlap.\n if (computedVertical) {\n const scrollTop = element.scrollTop;\n if (computedVertical === 1 /* UP */) {\n if (scrollTop > 0) {\n verticalScrollDirection = 1 /* UP */;\n }\n }\n else if (element.scrollHeight - scrollTop > element.clientHeight) {\n verticalScrollDirection = 2 /* DOWN */;\n }\n }\n if (computedHorizontal) {\n const scrollLeft = element.scrollLeft;\n if (computedHorizontal === 1 /* LEFT */) {\n if (scrollLeft > 0) {\n horizontalScrollDirection = 1 /* LEFT */;\n }\n }\n else if (element.scrollWidth - scrollLeft > element.clientWidth) {\n horizontalScrollDirection = 2 /* RIGHT */;\n }\n }\n return [verticalScrollDirection, horizontalScrollDirection];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Event options that can be used to bind an active, capturing event. */\nconst activeCapturingEventOptions = normalizePassiveListenerOptions({\n passive: false,\n capture: true,\n});\n/**\n * Service that keeps track of all the drag item and drop container\n * instances, and manages global event listeners on the `document`.\n * @docs-private\n */\n// Note: this class is generic, rather than referencing CdkDrag and CdkDropList directly, in order\n// to avoid circular imports. If we were to reference them here, importing the registry into the\n// classes that are registering themselves will introduce a circular import.\nclass DragDropRegistry {\n constructor(_ngZone, _document) {\n this._ngZone = _ngZone;\n /** Registered drop container instances. */\n this._dropInstances = new Set();\n /** Registered drag item instances. */\n this._dragInstances = new Set();\n /** Drag item instances that are currently being dragged. */\n this._activeDragInstances = [];\n /** Keeps track of the event listeners that we've bound to the `document`. */\n this._globalListeners = new Map();\n /**\n * Predicate function to check if an item is being dragged. Moved out into a property,\n * because it'll be called a lot and we don't want to create a new function every time.\n */\n this._draggingPredicate = (item) => item.isDragging();\n /**\n * Emits the `touchmove` or `mousemove` events that are dispatched\n * while the user is dragging a drag item instance.\n */\n this.pointerMove = new Subject();\n /**\n * Emits the `touchend` or `mouseup` events that are dispatched\n * while the user is dragging a drag item instance.\n */\n this.pointerUp = new Subject();\n /**\n * Emits when the viewport has been scrolled while the user is dragging an item.\n * @deprecated To be turned into a private member. Use the `scrolled` method instead.\n * @breaking-change 13.0.0\n */\n this.scroll = new Subject();\n /**\n * Event listener that will prevent the default browser action while the user is dragging.\n * @param event Event whose default action should be prevented.\n */\n this._preventDefaultWhileDragging = (event) => {\n if (this._activeDragInstances.length > 0) {\n event.preventDefault();\n }\n };\n /** Event listener for `touchmove` that is bound even if no dragging is happening. */\n this._persistentTouchmoveListener = (event) => {\n if (this._activeDragInstances.length > 0) {\n // Note that we only want to prevent the default action after dragging has actually started.\n // Usually this is the same time at which the item is added to the `_activeDragInstances`,\n // but it could be pushed back if the user has set up a drag delay or threshold.\n if (this._activeDragInstances.some(this._draggingPredicate)) {\n event.preventDefault();\n }\n this.pointerMove.next(event);\n }\n };\n this._document = _document;\n }\n /** Adds a drop container to the registry. */\n registerDropContainer(drop) {\n if (!this._dropInstances.has(drop)) {\n this._dropInstances.add(drop);\n }\n }\n /** Adds a drag item instance to the registry. */\n registerDragItem(drag) {\n this._dragInstances.add(drag);\n // The `touchmove` event gets bound once, ahead of time, because WebKit\n // won't preventDefault on a dynamically-added `touchmove` listener.\n // See https://bugs.webkit.org/show_bug.cgi?id=184250.\n if (this._dragInstances.size === 1) {\n this._ngZone.runOutsideAngular(() => {\n // The event handler has to be explicitly active,\n // because newer browsers make it passive by default.\n this._document.addEventListener('touchmove', this._persistentTouchmoveListener, activeCapturingEventOptions);\n });\n }\n }\n /** Removes a drop container from the registry. */\n removeDropContainer(drop) {\n this._dropInstances.delete(drop);\n }\n /** Removes a drag item instance from the registry. */\n removeDragItem(drag) {\n this._dragInstances.delete(drag);\n this.stopDragging(drag);\n if (this._dragInstances.size === 0) {\n this._document.removeEventListener('touchmove', this._persistentTouchmoveListener, activeCapturingEventOptions);\n }\n }\n /**\n * Starts the dragging sequence for a drag instance.\n * @param drag Drag instance which is being dragged.\n * @param event Event that initiated the dragging.\n */\n startDragging(drag, event) {\n // Do not process the same drag twice to avoid memory leaks and redundant listeners\n if (this._activeDragInstances.indexOf(drag) > -1) {\n return;\n }\n this._activeDragInstances.push(drag);\n if (this._activeDragInstances.length === 1) {\n const isTouchEvent = event.type.startsWith('touch');\n // We explicitly bind __active__ listeners here, because newer browsers will default to\n // passive ones for `mousemove` and `touchmove`. The events need to be active, because we\n // use `preventDefault` to prevent the page from scrolling while the user is dragging.\n this._globalListeners\n .set(isTouchEvent ? 'touchend' : 'mouseup', {\n handler: (e) => this.pointerUp.next(e),\n options: true,\n })\n .set('scroll', {\n handler: (e) => this.scroll.next(e),\n // Use capturing so that we pick up scroll changes in any scrollable nodes that aren't\n // the document. See https://github.com/angular/components/issues/17144.\n options: true,\n })\n // Preventing the default action on `mousemove` isn't enough to disable text selection\n // on Safari so we need to prevent the selection event as well. Alternatively this can\n // be done by setting `user-select: none` on the `body`, however it has causes a style\n // recalculation which can be expensive on pages with a lot of elements.\n .set('selectstart', {\n handler: this._preventDefaultWhileDragging,\n options: activeCapturingEventOptions,\n });\n // We don't have to bind a move event for touch drag sequences, because\n // we already have a persistent global one bound from `registerDragItem`.\n if (!isTouchEvent) {\n this._globalListeners.set('mousemove', {\n handler: (e) => this.pointerMove.next(e),\n options: activeCapturingEventOptions,\n });\n }\n this._ngZone.runOutsideAngular(() => {\n this._globalListeners.forEach((config, name) => {\n this._document.addEventListener(name, config.handler, config.options);\n });\n });\n }\n }\n /** Stops dragging a drag item instance. */\n stopDragging(drag) {\n const index = this._activeDragInstances.indexOf(drag);\n if (index > -1) {\n this._activeDragInstances.splice(index, 1);\n if (this._activeDragInstances.length === 0) {\n this._clearGlobalListeners();\n }\n }\n }\n /** Gets whether a drag item instance is currently being dragged. */\n isDragging(drag) {\n return this._activeDragInstances.indexOf(drag) > -1;\n }\n /**\n * Gets a stream that will emit when any element on the page is scrolled while an item is being\n * dragged.\n * @param shadowRoot Optional shadow root that the current dragging sequence started from.\n * Top-level listeners won't pick up events coming from the shadow DOM so this parameter can\n * be used to include an additional top-level listener at the shadow root level.\n */\n scrolled(shadowRoot) {\n const streams = [this.scroll];\n if (shadowRoot && shadowRoot !== this._document) {\n // Note that this is basically the same as `fromEvent` from rjxs, but we do it ourselves,\n // because we want to guarantee that the event is bound outside of the `NgZone`. With\n // `fromEvent` it'll only happen if the subscription is outside the `NgZone`.\n streams.push(new Observable((observer) => {\n return this._ngZone.runOutsideAngular(() => {\n const eventOptions = true;\n const callback = (event) => {\n if (this._activeDragInstances.length) {\n observer.next(event);\n }\n };\n shadowRoot.addEventListener('scroll', callback, eventOptions);\n return () => {\n shadowRoot.removeEventListener('scroll', callback, eventOptions);\n };\n });\n }));\n }\n return merge(...streams);\n }\n ngOnDestroy() {\n this._dragInstances.forEach(instance => this.removeDragItem(instance));\n this._dropInstances.forEach(instance => this.removeDropContainer(instance));\n this._clearGlobalListeners();\n this.pointerMove.complete();\n this.pointerUp.complete();\n }\n /** Clears out the global event listeners from the `document`. */\n _clearGlobalListeners() {\n this._globalListeners.forEach((config, name) => {\n this._document.removeEventListener(name, config.handler, config.options);\n });\n this._globalListeners.clear();\n }\n}\nDragDropRegistry.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: DragDropRegistry, deps: [{ token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nDragDropRegistry.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: DragDropRegistry, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: DragDropRegistry, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Default configuration to be used when creating a `DragRef`. */\nconst DEFAULT_CONFIG = {\n dragStartThreshold: 5,\n pointerDirectionChangeThreshold: 5,\n};\n/**\n * Service that allows for drag-and-drop functionality to be attached to DOM elements.\n */\nclass DragDrop {\n constructor(_document, _ngZone, _viewportRuler, _dragDropRegistry) {\n this._document = _document;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._dragDropRegistry = _dragDropRegistry;\n }\n /**\n * Turns an element into a draggable item.\n * @param element Element to which to attach the dragging functionality.\n * @param config Object used to configure the dragging behavior.\n */\n createDrag(element, config = DEFAULT_CONFIG) {\n return new DragRef(element, config, this._document, this._ngZone, this._viewportRuler, this._dragDropRegistry);\n }\n /**\n * Turns an element into a drop list.\n * @param element Element to which to attach the drop list functionality.\n */\n createDropList(element) {\n return new DropListRef(element, this._dragDropRegistry, this._document, this._ngZone, this._viewportRuler);\n }\n}\nDragDrop.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: DragDrop, deps: [{ token: DOCUMENT }, { token: i0.NgZone }, { token: i1.ViewportRuler }, { token: DragDropRegistry }], target: i0.ɵɵFactoryTarget.Injectable });\nDragDrop.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: DragDrop, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: DragDrop, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.NgZone }, { type: i1.ViewportRuler }, { type: DragDropRegistry }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used for a `CdkDrag` to provide itself as a parent to the\n * drag-specific child directive (`CdkDragHandle`, `CdkDragPreview` etc.). Used primarily\n * to avoid circular imports.\n * @docs-private\n */\nconst CDK_DRAG_PARENT = new InjectionToken('CDK_DRAG_PARENT');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `CdkDropListGroup`. It serves as\n * alternative token to the actual `CdkDropListGroup` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DROP_LIST_GROUP = new InjectionToken('CdkDropListGroup');\n/**\n * Declaratively connects sibling `cdkDropList` instances together. All of the `cdkDropList`\n * elements that are placed inside a `cdkDropListGroup` will be connected to each other\n * automatically. Can be used as an alternative to the `cdkDropListConnectedTo` input\n * from `cdkDropList`.\n */\nclass CdkDropListGroup {\n constructor() {\n /** Drop lists registered inside the group. */\n this._items = new Set();\n this._disabled = false;\n }\n /** Whether starting a dragging sequence from inside this group is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n ngOnDestroy() {\n this._items.clear();\n }\n}\nCdkDropListGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkDropListGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCdkDropListGroup.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkDropListGroup, selector: \"[cdkDropListGroup]\", inputs: { disabled: [\"cdkDropListGroupDisabled\", \"disabled\"] }, providers: [{ provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup }], exportAs: [\"cdkDropListGroup\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkDropListGroup, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDropListGroup]',\n exportAs: 'cdkDropListGroup',\n providers: [{ provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup }],\n }]\n }], propDecorators: { disabled: [{\n type: Input,\n args: ['cdkDropListGroupDisabled']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to configure the\n * behavior of the drag&drop-related components.\n */\nconst CDK_DRAG_CONFIG = new InjectionToken('CDK_DRAG_CONFIG');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Asserts that a particular node is an element.\n * @param node Node to be checked.\n * @param name Name to attach to the error message.\n */\nfunction assertElementNode(node, name) {\n if (node.nodeType !== 1) {\n throw Error(`${name} must be attached to an element node. ` + `Currently attached to \"${node.nodeName}\".`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Counter used to generate unique ids for drop zones. */\nlet _uniqueIdCounter = 0;\n/**\n * Injection token that can be used to reference instances of `CdkDropList`. It serves as\n * alternative token to the actual `CdkDropList` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DROP_LIST = new InjectionToken('CdkDropList');\n/** Container that wraps a set of draggable items. */\nclass CdkDropList {\n constructor(\n /** Element that the drop list is attached to. */\n element, dragDrop, _changeDetectorRef, _scrollDispatcher, _dir, _group, config) {\n this.element = element;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollDispatcher = _scrollDispatcher;\n this._dir = _dir;\n this._group = _group;\n /** Emits when the list has been destroyed. */\n this._destroyed = new Subject();\n /**\n * Other draggable containers that this container is connected to and into which the\n * container's items can be transferred. Can either be references to other drop containers,\n * or their unique IDs.\n */\n this.connectedTo = [];\n /**\n * Unique ID for the drop zone. Can be used as a reference\n * in the `connectedTo` of another `CdkDropList`.\n */\n this.id = `cdk-drop-list-${_uniqueIdCounter++}`;\n /**\n * Function that is used to determine whether an item\n * is allowed to be moved into a drop container.\n */\n this.enterPredicate = () => true;\n /** Functions that is used to determine whether an item can be sorted into a particular index. */\n this.sortPredicate = () => true;\n /** Emits when the user drops an item inside the container. */\n this.dropped = new EventEmitter();\n /**\n * Emits when the user has moved a new drag item into this container.\n */\n this.entered = new EventEmitter();\n /**\n * Emits when the user removes an item from the container\n * by dragging it into another container.\n */\n this.exited = new EventEmitter();\n /** Emits as the user is swapping items while actively dragging. */\n this.sorted = new EventEmitter();\n /**\n * Keeps track of the items that are registered with this container. Historically we used to\n * do this with a `ContentChildren` query, however queries don't handle transplanted views very\n * well which means that we can't handle cases like dragging the headers of a `mat-table`\n * correctly. What we do instead is to have the items register themselves with the container\n * and then we sort them based on their position in the DOM.\n */\n this._unsortedItems = new Set();\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n assertElementNode(element.nativeElement, 'cdkDropList');\n }\n this._dropListRef = dragDrop.createDropList(element);\n this._dropListRef.data = this;\n if (config) {\n this._assignDefaults(config);\n }\n this._dropListRef.enterPredicate = (drag, drop) => {\n return this.enterPredicate(drag.data, drop.data);\n };\n this._dropListRef.sortPredicate = (index, drag, drop) => {\n return this.sortPredicate(index, drag.data, drop.data);\n };\n this._setupInputSyncSubscription(this._dropListRef);\n this._handleEvents(this._dropListRef);\n CdkDropList._dropLists.push(this);\n if (_group) {\n _group._items.add(this);\n }\n }\n /** Whether starting a dragging sequence from this container is disabled. */\n get disabled() {\n return this._disabled || (!!this._group && this._group.disabled);\n }\n set disabled(value) {\n // Usually we sync the directive and ref state right before dragging starts, in order to have\n // a single point of failure and to avoid having to use setters for everything. `disabled` is\n // a special case, because it can prevent the `beforeStarted` event from firing, which can lock\n // the user in a disabled state, so we also need to sync it as it's being set.\n this._dropListRef.disabled = this._disabled = coerceBooleanProperty(value);\n }\n /** Registers an items with the drop list. */\n addItem(item) {\n this._unsortedItems.add(item);\n if (this._dropListRef.isDragging()) {\n this._syncItemsWithRef();\n }\n }\n /** Removes an item from the drop list. */\n removeItem(item) {\n this._unsortedItems.delete(item);\n if (this._dropListRef.isDragging()) {\n this._syncItemsWithRef();\n }\n }\n /** Gets the registered items in the list, sorted by their position in the DOM. */\n getSortedItems() {\n return Array.from(this._unsortedItems).sort((a, b) => {\n const documentPosition = a._dragRef\n .getVisibleElement()\n .compareDocumentPosition(b._dragRef.getVisibleElement());\n // `compareDocumentPosition` returns a bitmask so we have to use a bitwise operator.\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // tslint:disable-next-line:no-bitwise\n return documentPosition & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n });\n }\n ngOnDestroy() {\n const index = CdkDropList._dropLists.indexOf(this);\n if (index > -1) {\n CdkDropList._dropLists.splice(index, 1);\n }\n if (this._group) {\n this._group._items.delete(this);\n }\n this._unsortedItems.clear();\n this._dropListRef.dispose();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Syncs the inputs of the CdkDropList with the options of the underlying DropListRef. */\n _setupInputSyncSubscription(ref) {\n if (this._dir) {\n this._dir.change\n .pipe(startWith(this._dir.value), takeUntil(this._destroyed))\n .subscribe(value => ref.withDirection(value));\n }\n ref.beforeStarted.subscribe(() => {\n const siblings = coerceArray(this.connectedTo).map(drop => {\n if (typeof drop === 'string') {\n const correspondingDropList = CdkDropList._dropLists.find(list => list.id === drop);\n if (!correspondingDropList && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n console.warn(`CdkDropList could not find connected drop list with id \"${drop}\"`);\n }\n return correspondingDropList;\n }\n return drop;\n });\n if (this._group) {\n this._group._items.forEach(drop => {\n if (siblings.indexOf(drop) === -1) {\n siblings.push(drop);\n }\n });\n }\n // Note that we resolve the scrollable parents here so that we delay the resolution\n // as long as possible, ensuring that the element is in its final place in the DOM.\n if (!this._scrollableParentsResolved) {\n const scrollableParents = this._scrollDispatcher\n .getAncestorScrollContainers(this.element)\n .map(scrollable => scrollable.getElementRef().nativeElement);\n this._dropListRef.withScrollableParents(scrollableParents);\n // Only do this once since it involves traversing the DOM and the parents\n // shouldn't be able to change without the drop list being destroyed.\n this._scrollableParentsResolved = true;\n }\n ref.disabled = this.disabled;\n ref.lockAxis = this.lockAxis;\n ref.sortingDisabled = coerceBooleanProperty(this.sortingDisabled);\n ref.autoScrollDisabled = coerceBooleanProperty(this.autoScrollDisabled);\n ref.autoScrollStep = coerceNumberProperty(this.autoScrollStep, 2);\n ref\n .connectedTo(siblings.filter(drop => drop && drop !== this).map(list => list._dropListRef))\n .withOrientation(this.orientation);\n });\n }\n /** Handles events from the underlying DropListRef. */\n _handleEvents(ref) {\n ref.beforeStarted.subscribe(() => {\n this._syncItemsWithRef();\n this._changeDetectorRef.markForCheck();\n });\n ref.entered.subscribe(event => {\n this.entered.emit({\n container: this,\n item: event.item.data,\n currentIndex: event.currentIndex,\n });\n });\n ref.exited.subscribe(event => {\n this.exited.emit({\n container: this,\n item: event.item.data,\n });\n this._changeDetectorRef.markForCheck();\n });\n ref.sorted.subscribe(event => {\n this.sorted.emit({\n previousIndex: event.previousIndex,\n currentIndex: event.currentIndex,\n container: this,\n item: event.item.data,\n });\n });\n ref.dropped.subscribe(event => {\n this.dropped.emit({\n previousIndex: event.previousIndex,\n currentIndex: event.currentIndex,\n previousContainer: event.previousContainer.data,\n container: event.container.data,\n item: event.item.data,\n isPointerOverContainer: event.isPointerOverContainer,\n distance: event.distance,\n dropPoint: event.dropPoint,\n });\n // Mark for check since all of these events run outside of change\n // detection and we're not guaranteed for something else to have triggered it.\n this._changeDetectorRef.markForCheck();\n });\n }\n /** Assigns the default input values based on a provided config object. */\n _assignDefaults(config) {\n const { lockAxis, draggingDisabled, sortingDisabled, listAutoScrollDisabled, listOrientation } = config;\n this.disabled = draggingDisabled == null ? false : draggingDisabled;\n this.sortingDisabled = sortingDisabled == null ? false : sortingDisabled;\n this.autoScrollDisabled = listAutoScrollDisabled == null ? false : listAutoScrollDisabled;\n this.orientation = listOrientation || 'vertical';\n if (lockAxis) {\n this.lockAxis = lockAxis;\n }\n }\n /** Syncs up the registered drag items with underlying drop list ref. */\n _syncItemsWithRef() {\n this._dropListRef.withItems(this.getSortedItems().map(item => item._dragRef));\n }\n}\n/** Keeps track of the drop lists that are currently on the page. */\nCdkDropList._dropLists = [];\nCdkDropList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkDropList, deps: [{ token: i0.ElementRef }, { token: DragDrop }, { token: i0.ChangeDetectorRef }, { token: i1.ScrollDispatcher }, { token: i3.Directionality, optional: true }, { token: CDK_DROP_LIST_GROUP, optional: true, skipSelf: true }, { token: CDK_DRAG_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkDropList.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkDropList, selector: \"[cdkDropList], cdk-drop-list\", inputs: { connectedTo: [\"cdkDropListConnectedTo\", \"connectedTo\"], data: [\"cdkDropListData\", \"data\"], orientation: [\"cdkDropListOrientation\", \"orientation\"], id: \"id\", lockAxis: [\"cdkDropListLockAxis\", \"lockAxis\"], disabled: [\"cdkDropListDisabled\", \"disabled\"], sortingDisabled: [\"cdkDropListSortingDisabled\", \"sortingDisabled\"], enterPredicate: [\"cdkDropListEnterPredicate\", \"enterPredicate\"], sortPredicate: [\"cdkDropListSortPredicate\", \"sortPredicate\"], autoScrollDisabled: [\"cdkDropListAutoScrollDisabled\", \"autoScrollDisabled\"], autoScrollStep: [\"cdkDropListAutoScrollStep\", \"autoScrollStep\"] }, outputs: { dropped: \"cdkDropListDropped\", entered: \"cdkDropListEntered\", exited: \"cdkDropListExited\", sorted: \"cdkDropListSorted\" }, host: { properties: { \"attr.id\": \"id\", \"class.cdk-drop-list-disabled\": \"disabled\", \"class.cdk-drop-list-dragging\": \"_dropListRef.isDragging()\", \"class.cdk-drop-list-receiving\": \"_dropListRef.isReceiving()\" }, classAttribute: \"cdk-drop-list\" }, providers: [\n // Prevent child drop lists from picking up the same group as their parent.\n { provide: CDK_DROP_LIST_GROUP, useValue: undefined },\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\n ], exportAs: [\"cdkDropList\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkDropList, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDropList], cdk-drop-list',\n exportAs: 'cdkDropList',\n providers: [\n // Prevent child drop lists from picking up the same group as their parent.\n { provide: CDK_DROP_LIST_GROUP, useValue: undefined },\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\n ],\n host: {\n 'class': 'cdk-drop-list',\n '[attr.id]': 'id',\n '[class.cdk-drop-list-disabled]': 'disabled',\n '[class.cdk-drop-list-dragging]': '_dropListRef.isDragging()',\n '[class.cdk-drop-list-receiving]': '_dropListRef.isReceiving()',\n },\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: DragDrop }, { type: i0.ChangeDetectorRef }, { type: i1.ScrollDispatcher }, { type: i3.Directionality, decorators: [{\n type: Optional\n }] }, { type: CdkDropListGroup, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_DROP_LIST_GROUP]\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_DRAG_CONFIG]\n }] }];\n }, propDecorators: { connectedTo: [{\n type: Input,\n args: ['cdkDropListConnectedTo']\n }], data: [{\n type: Input,\n args: ['cdkDropListData']\n }], orientation: [{\n type: Input,\n args: ['cdkDropListOrientation']\n }], id: [{\n type: Input\n }], lockAxis: [{\n type: Input,\n args: ['cdkDropListLockAxis']\n }], disabled: [{\n type: Input,\n args: ['cdkDropListDisabled']\n }], sortingDisabled: [{\n type: Input,\n args: ['cdkDropListSortingDisabled']\n }], enterPredicate: [{\n type: Input,\n args: ['cdkDropListEnterPredicate']\n }], sortPredicate: [{\n type: Input,\n args: ['cdkDropListSortPredicate']\n }], autoScrollDisabled: [{\n type: Input,\n args: ['cdkDropListAutoScrollDisabled']\n }], autoScrollStep: [{\n type: Input,\n args: ['cdkDropListAutoScrollStep']\n }], dropped: [{\n type: Output,\n args: ['cdkDropListDropped']\n }], entered: [{\n type: Output,\n args: ['cdkDropListEntered']\n }], exited: [{\n type: Output,\n args: ['cdkDropListExited']\n }], sorted: [{\n type: Output,\n args: ['cdkDropListSorted']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `CdkDragHandle`. It serves as\n * alternative token to the actual `CdkDragHandle` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_HANDLE = new InjectionToken('CdkDragHandle');\n/** Handle that can be used to drag a CdkDrag instance. */\nclass CdkDragHandle {\n constructor(element, parentDrag) {\n this.element = element;\n /** Emits when the state of the handle has changed. */\n this._stateChanges = new Subject();\n this._disabled = false;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n assertElementNode(element.nativeElement, 'cdkDragHandle');\n }\n this._parentDrag = parentDrag;\n }\n /** Whether starting to drag through this handle is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._stateChanges.next(this);\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n}\nCdkDragHandle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkDragHandle, deps: [{ token: i0.ElementRef }, { token: CDK_DRAG_PARENT, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkDragHandle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkDragHandle, selector: \"[cdkDragHandle]\", inputs: { disabled: [\"cdkDragHandleDisabled\", \"disabled\"] }, host: { classAttribute: \"cdk-drag-handle\" }, providers: [{ provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkDragHandle, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDragHandle]',\n host: {\n 'class': 'cdk-drag-handle',\n },\n providers: [{ provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle }],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_DRAG_PARENT]\n }, {\n type: Optional\n }, {\n type: SkipSelf\n }] }];\n }, propDecorators: { disabled: [{\n type: Input,\n args: ['cdkDragHandleDisabled']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `CdkDragPlaceholder`. It serves as\n * alternative token to the actual `CdkDragPlaceholder` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_PLACEHOLDER = new InjectionToken('CdkDragPlaceholder');\n/**\n * Element that will be used as a template for the placeholder of a CdkDrag when\n * it is being dragged. The placeholder is displayed in place of the element being dragged.\n */\nclass CdkDragPlaceholder {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCdkDragPlaceholder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkDragPlaceholder, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkDragPlaceholder.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkDragPlaceholder, selector: \"ng-template[cdkDragPlaceholder]\", inputs: { data: \"data\" }, providers: [{ provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkDragPlaceholder, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkDragPlaceholder]',\n providers: [{ provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder }],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { data: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `CdkDragPreview`. It serves as\n * alternative token to the actual `CdkDragPreview` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_PREVIEW = new InjectionToken('CdkDragPreview');\n/**\n * Element that will be used as a template for the preview\n * of a CdkDrag when it is being dragged.\n */\nclass CdkDragPreview {\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._matchSize = false;\n }\n /** Whether the preview should preserve the same size as the item that is being dragged. */\n get matchSize() {\n return this._matchSize;\n }\n set matchSize(value) {\n this._matchSize = coerceBooleanProperty(value);\n }\n}\nCdkDragPreview.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkDragPreview, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkDragPreview.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkDragPreview, selector: \"ng-template[cdkDragPreview]\", inputs: { data: \"data\", matchSize: \"matchSize\" }, providers: [{ provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkDragPreview, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkDragPreview]',\n providers: [{ provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview }],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { data: [{\n type: Input\n }], matchSize: [{\n type: Input\n }] } });\n\nconst DRAG_HOST_CLASS = 'cdk-drag';\n/** Element that can be moved inside a CdkDropList container. */\nclass CdkDrag {\n constructor(\n /** Element that the draggable is attached to. */\n element, \n /** Droppable container that the draggable is a part of. */\n dropContainer, \n /**\n * @deprecated `_document` parameter no longer being used and will be removed.\n * @breaking-change 12.0.0\n */\n _document, _ngZone, _viewContainerRef, config, _dir, dragDrop, _changeDetectorRef, _selfHandle, _parentDrag) {\n this.element = element;\n this.dropContainer = dropContainer;\n this._ngZone = _ngZone;\n this._viewContainerRef = _viewContainerRef;\n this._dir = _dir;\n this._changeDetectorRef = _changeDetectorRef;\n this._selfHandle = _selfHandle;\n this._parentDrag = _parentDrag;\n this._destroyed = new Subject();\n /** Emits when the user starts dragging the item. */\n this.started = new EventEmitter();\n /** Emits when the user has released a drag item, before any animations have started. */\n this.released = new EventEmitter();\n /** Emits when the user stops dragging an item in the container. */\n this.ended = new EventEmitter();\n /** Emits when the user has moved the item into a new container. */\n this.entered = new EventEmitter();\n /** Emits when the user removes the item its container by dragging it into another container. */\n this.exited = new EventEmitter();\n /** Emits when the user drops the item inside a container. */\n this.dropped = new EventEmitter();\n /**\n * Emits as the user is dragging the item. Use with caution,\n * because this event will fire for every pixel that the user has dragged.\n */\n this.moved = new Observable((observer) => {\n const subscription = this._dragRef.moved\n .pipe(map(movedEvent => ({\n source: this,\n pointerPosition: movedEvent.pointerPosition,\n event: movedEvent.event,\n delta: movedEvent.delta,\n distance: movedEvent.distance,\n })))\n .subscribe(observer);\n return () => {\n subscription.unsubscribe();\n };\n });\n this._dragRef = dragDrop.createDrag(element, {\n dragStartThreshold: config && config.dragStartThreshold != null ? config.dragStartThreshold : 5,\n pointerDirectionChangeThreshold: config && config.pointerDirectionChangeThreshold != null\n ? config.pointerDirectionChangeThreshold\n : 5,\n zIndex: config === null || config === void 0 ? void 0 : config.zIndex,\n });\n this._dragRef.data = this;\n // We have to keep track of the drag instances in order to be able to match an element to\n // a drag instance. We can't go through the global registry of `DragRef`, because the root\n // element could be different.\n CdkDrag._dragInstances.push(this);\n if (config) {\n this._assignDefaults(config);\n }\n // Note that usually the container is assigned when the drop list is picks up the item, but in\n // some cases (mainly transplanted views with OnPush, see #18341) we may end up in a situation\n // where there are no items on the first change detection pass, but the items get picked up as\n // soon as the user triggers another pass by dragging. This is a problem, because the item would\n // have to switch from standalone mode to drag mode in the middle of the dragging sequence which\n // is too late since the two modes save different kinds of information. We work around it by\n // assigning the drop container both from here and the list.\n if (dropContainer) {\n this._dragRef._withDropContainer(dropContainer._dropListRef);\n dropContainer.addItem(this);\n }\n this._syncInputs(this._dragRef);\n this._handleEvents(this._dragRef);\n }\n /** Whether starting to drag this element is disabled. */\n get disabled() {\n return this._disabled || (this.dropContainer && this.dropContainer.disabled);\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._dragRef.disabled = this._disabled;\n }\n /**\n * Returns the element that is being used as a placeholder\n * while the current element is being dragged.\n */\n getPlaceholderElement() {\n return this._dragRef.getPlaceholderElement();\n }\n /** Returns the root draggable element. */\n getRootElement() {\n return this._dragRef.getRootElement();\n }\n /** Resets a standalone drag item to its initial position. */\n reset() {\n this._dragRef.reset();\n }\n /**\n * Gets the pixel coordinates of the draggable outside of a drop container.\n */\n getFreeDragPosition() {\n return this._dragRef.getFreeDragPosition();\n }\n ngAfterViewInit() {\n // Normally this isn't in the zone, but it can cause major performance regressions for apps\n // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.\n this._ngZone.runOutsideAngular(() => {\n // We need to wait for the zone to stabilize, in order for the reference\n // element to be in the proper place in the DOM. This is mostly relevant\n // for draggable elements inside portals since they get stamped out in\n // their original DOM position and then they get transferred to the portal.\n this._ngZone.onStable.pipe(take(1), takeUntil(this._destroyed)).subscribe(() => {\n this._updateRootElement();\n this._setupHandlesListener();\n if (this.freeDragPosition) {\n this._dragRef.setFreeDragPosition(this.freeDragPosition);\n }\n });\n });\n }\n ngOnChanges(changes) {\n const rootSelectorChange = changes['rootElementSelector'];\n const positionChange = changes['freeDragPosition'];\n // We don't have to react to the first change since it's being\n // handled in `ngAfterViewInit` where it needs to be deferred.\n if (rootSelectorChange && !rootSelectorChange.firstChange) {\n this._updateRootElement();\n }\n // Skip the first change since it's being handled in `ngAfterViewInit`.\n if (positionChange && !positionChange.firstChange && this.freeDragPosition) {\n this._dragRef.setFreeDragPosition(this.freeDragPosition);\n }\n }\n ngOnDestroy() {\n if (this.dropContainer) {\n this.dropContainer.removeItem(this);\n }\n const index = CdkDrag._dragInstances.indexOf(this);\n if (index > -1) {\n CdkDrag._dragInstances.splice(index, 1);\n }\n // Unnecessary in most cases, but used to avoid extra change detections with `zone-paths-rxjs`.\n this._ngZone.runOutsideAngular(() => {\n this._destroyed.next();\n this._destroyed.complete();\n this._dragRef.dispose();\n });\n }\n /** Syncs the root element with the `DragRef`. */\n _updateRootElement() {\n var _a;\n const element = this.element.nativeElement;\n let rootElement = element;\n if (this.rootElementSelector) {\n rootElement =\n element.closest !== undefined\n ? element.closest(this.rootElementSelector)\n : // Comment tag doesn't have closest method, so use parent's one.\n (_a = element.parentElement) === null || _a === void 0 ? void 0 : _a.closest(this.rootElementSelector);\n }\n if (rootElement && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n assertElementNode(rootElement, 'cdkDrag');\n }\n this._dragRef.withRootElement(rootElement || element);\n }\n /** Gets the boundary element, based on the `boundaryElement` value. */\n _getBoundaryElement() {\n const boundary = this.boundaryElement;\n if (!boundary) {\n return null;\n }\n if (typeof boundary === 'string') {\n return this.element.nativeElement.closest(boundary);\n }\n return coerceElement(boundary);\n }\n /** Syncs the inputs of the CdkDrag with the options of the underlying DragRef. */\n _syncInputs(ref) {\n ref.beforeStarted.subscribe(() => {\n if (!ref.isDragging()) {\n const dir = this._dir;\n const dragStartDelay = this.dragStartDelay;\n const placeholder = this._placeholderTemplate\n ? {\n template: this._placeholderTemplate.templateRef,\n context: this._placeholderTemplate.data,\n viewContainer: this._viewContainerRef,\n }\n : null;\n const preview = this._previewTemplate\n ? {\n template: this._previewTemplate.templateRef,\n context: this._previewTemplate.data,\n matchSize: this._previewTemplate.matchSize,\n viewContainer: this._viewContainerRef,\n }\n : null;\n ref.disabled = this.disabled;\n ref.lockAxis = this.lockAxis;\n ref.dragStartDelay =\n typeof dragStartDelay === 'object' && dragStartDelay\n ? dragStartDelay\n : coerceNumberProperty(dragStartDelay);\n ref.constrainPosition = this.constrainPosition;\n ref.previewClass = this.previewClass;\n ref\n .withBoundaryElement(this._getBoundaryElement())\n .withPlaceholderTemplate(placeholder)\n .withPreviewTemplate(preview)\n .withPreviewContainer(this.previewContainer || 'global');\n if (dir) {\n ref.withDirection(dir.value);\n }\n }\n });\n // This only needs to be resolved once.\n ref.beforeStarted.pipe(take(1)).subscribe(() => {\n var _a;\n // If we managed to resolve a parent through DI, use it.\n if (this._parentDrag) {\n ref.withParent(this._parentDrag._dragRef);\n return;\n }\n // Otherwise fall back to resolving the parent by looking up the DOM. This can happen if\n // the item was projected into another item by something like `ngTemplateOutlet`.\n let parent = this.element.nativeElement.parentElement;\n while (parent) {\n if (parent.classList.contains(DRAG_HOST_CLASS)) {\n ref.withParent(((_a = CdkDrag._dragInstances.find(drag => {\n return drag.element.nativeElement === parent;\n })) === null || _a === void 0 ? void 0 : _a._dragRef) || null);\n break;\n }\n parent = parent.parentElement;\n }\n });\n }\n /** Handles the events from the underlying `DragRef`. */\n _handleEvents(ref) {\n ref.started.subscribe(() => {\n this.started.emit({ source: this });\n // Since all of these events run outside of change detection,\n // we need to ensure that everything is marked correctly.\n this._changeDetectorRef.markForCheck();\n });\n ref.released.subscribe(() => {\n this.released.emit({ source: this });\n });\n ref.ended.subscribe(event => {\n this.ended.emit({\n source: this,\n distance: event.distance,\n dropPoint: event.dropPoint,\n });\n // Since all of these events run outside of change detection,\n // we need to ensure that everything is marked correctly.\n this._changeDetectorRef.markForCheck();\n });\n ref.entered.subscribe(event => {\n this.entered.emit({\n container: event.container.data,\n item: this,\n currentIndex: event.currentIndex,\n });\n });\n ref.exited.subscribe(event => {\n this.exited.emit({\n container: event.container.data,\n item: this,\n });\n });\n ref.dropped.subscribe(event => {\n this.dropped.emit({\n previousIndex: event.previousIndex,\n currentIndex: event.currentIndex,\n previousContainer: event.previousContainer.data,\n container: event.container.data,\n isPointerOverContainer: event.isPointerOverContainer,\n item: this,\n distance: event.distance,\n dropPoint: event.dropPoint,\n });\n });\n }\n /** Assigns the default input values based on a provided config object. */\n _assignDefaults(config) {\n const { lockAxis, dragStartDelay, constrainPosition, previewClass, boundaryElement, draggingDisabled, rootElementSelector, previewContainer, } = config;\n this.disabled = draggingDisabled == null ? false : draggingDisabled;\n this.dragStartDelay = dragStartDelay || 0;\n if (lockAxis) {\n this.lockAxis = lockAxis;\n }\n if (constrainPosition) {\n this.constrainPosition = constrainPosition;\n }\n if (previewClass) {\n this.previewClass = previewClass;\n }\n if (boundaryElement) {\n this.boundaryElement = boundaryElement;\n }\n if (rootElementSelector) {\n this.rootElementSelector = rootElementSelector;\n }\n if (previewContainer) {\n this.previewContainer = previewContainer;\n }\n }\n /** Sets up the listener that syncs the handles with the drag ref. */\n _setupHandlesListener() {\n // Listen for any newly-added handles.\n this._handles.changes\n .pipe(startWith(this._handles), \n // Sync the new handles with the DragRef.\n tap((handles) => {\n const childHandleElements = handles\n .filter(handle => handle._parentDrag === this)\n .map(handle => handle.element);\n // Usually handles are only allowed to be a descendant of the drag element, but if\n // the consumer defined a different drag root, we should allow the drag element\n // itself to be a handle too.\n if (this._selfHandle && this.rootElementSelector) {\n childHandleElements.push(this.element);\n }\n this._dragRef.withHandles(childHandleElements);\n }), \n // Listen if the state of any of the handles changes.\n switchMap((handles) => {\n return merge(...handles.map(item => {\n return item._stateChanges.pipe(startWith(item));\n }));\n }), takeUntil(this._destroyed))\n .subscribe(handleInstance => {\n // Enabled/disable the handle that changed in the DragRef.\n const dragRef = this._dragRef;\n const handle = handleInstance.element.nativeElement;\n handleInstance.disabled ? dragRef.disableHandle(handle) : dragRef.enableHandle(handle);\n });\n }\n}\nCdkDrag._dragInstances = [];\nCdkDrag.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkDrag, deps: [{ token: i0.ElementRef }, { token: CDK_DROP_LIST, optional: true, skipSelf: true }, { token: DOCUMENT }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: CDK_DRAG_CONFIG, optional: true }, { token: i3.Directionality, optional: true }, { token: DragDrop }, { token: i0.ChangeDetectorRef }, { token: CDK_DRAG_HANDLE, optional: true, self: true }, { token: CDK_DRAG_PARENT, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkDrag.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkDrag, selector: \"[cdkDrag]\", inputs: { data: [\"cdkDragData\", \"data\"], lockAxis: [\"cdkDragLockAxis\", \"lockAxis\"], rootElementSelector: [\"cdkDragRootElement\", \"rootElementSelector\"], boundaryElement: [\"cdkDragBoundary\", \"boundaryElement\"], dragStartDelay: [\"cdkDragStartDelay\", \"dragStartDelay\"], freeDragPosition: [\"cdkDragFreeDragPosition\", \"freeDragPosition\"], disabled: [\"cdkDragDisabled\", \"disabled\"], constrainPosition: [\"cdkDragConstrainPosition\", \"constrainPosition\"], previewClass: [\"cdkDragPreviewClass\", \"previewClass\"], previewContainer: [\"cdkDragPreviewContainer\", \"previewContainer\"] }, outputs: { started: \"cdkDragStarted\", released: \"cdkDragReleased\", ended: \"cdkDragEnded\", entered: \"cdkDragEntered\", exited: \"cdkDragExited\", dropped: \"cdkDragDropped\", moved: \"cdkDragMoved\" }, host: { properties: { \"class.cdk-drag-disabled\": \"disabled\", \"class.cdk-drag-dragging\": \"_dragRef.isDragging()\" }, classAttribute: \"cdk-drag\" }, providers: [{ provide: CDK_DRAG_PARENT, useExisting: CdkDrag }], queries: [{ propertyName: \"_previewTemplate\", first: true, predicate: CDK_DRAG_PREVIEW, descendants: true }, { propertyName: \"_placeholderTemplate\", first: true, predicate: CDK_DRAG_PLACEHOLDER, descendants: true }, { propertyName: \"_handles\", predicate: CDK_DRAG_HANDLE, descendants: true }], exportAs: [\"cdkDrag\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkDrag, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDrag]',\n exportAs: 'cdkDrag',\n host: {\n 'class': DRAG_HOST_CLASS,\n '[class.cdk-drag-disabled]': 'disabled',\n '[class.cdk-drag-dragging]': '_dragRef.isDragging()',\n },\n providers: [{ provide: CDK_DRAG_PARENT, useExisting: CdkDrag }],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_DROP_LIST]\n }, {\n type: Optional\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.NgZone }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_DRAG_CONFIG]\n }] }, { type: i3.Directionality, decorators: [{\n type: Optional\n }] }, { type: DragDrop }, { type: i0.ChangeDetectorRef }, { type: CdkDragHandle, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [CDK_DRAG_HANDLE]\n }] }, { type: CdkDrag, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [CDK_DRAG_PARENT]\n }] }];\n }, propDecorators: { _handles: [{\n type: ContentChildren,\n args: [CDK_DRAG_HANDLE, { descendants: true }]\n }], _previewTemplate: [{\n type: ContentChild,\n args: [CDK_DRAG_PREVIEW]\n }], _placeholderTemplate: [{\n type: ContentChild,\n args: [CDK_DRAG_PLACEHOLDER]\n }], data: [{\n type: Input,\n args: ['cdkDragData']\n }], lockAxis: [{\n type: Input,\n args: ['cdkDragLockAxis']\n }], rootElementSelector: [{\n type: Input,\n args: ['cdkDragRootElement']\n }], boundaryElement: [{\n type: Input,\n args: ['cdkDragBoundary']\n }], dragStartDelay: [{\n type: Input,\n args: ['cdkDragStartDelay']\n }], freeDragPosition: [{\n type: Input,\n args: ['cdkDragFreeDragPosition']\n }], disabled: [{\n type: Input,\n args: ['cdkDragDisabled']\n }], constrainPosition: [{\n type: Input,\n args: ['cdkDragConstrainPosition']\n }], previewClass: [{\n type: Input,\n args: ['cdkDragPreviewClass']\n }], previewContainer: [{\n type: Input,\n args: ['cdkDragPreviewContainer']\n }], started: [{\n type: Output,\n args: ['cdkDragStarted']\n }], released: [{\n type: Output,\n args: ['cdkDragReleased']\n }], ended: [{\n type: Output,\n args: ['cdkDragEnded']\n }], entered: [{\n type: Output,\n args: ['cdkDragEntered']\n }], exited: [{\n type: Output,\n args: ['cdkDragExited']\n }], dropped: [{\n type: Output,\n args: ['cdkDragDropped']\n }], moved: [{\n type: Output,\n args: ['cdkDragMoved']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass DragDropModule {\n}\nDragDropModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: DragDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDragDropModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: DragDropModule, declarations: [CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder], exports: [CdkScrollableModule,\n CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder] });\nDragDropModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: DragDropModule, providers: [DragDrop], imports: [CdkScrollableModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: DragDropModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder,\n ],\n exports: [\n CdkScrollableModule,\n CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder,\n ],\n providers: [DragDrop],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CDK_DRAG_CONFIG, CDK_DRAG_HANDLE, CDK_DRAG_PARENT, CDK_DRAG_PLACEHOLDER, CDK_DRAG_PREVIEW, CDK_DROP_LIST, CDK_DROP_LIST_GROUP, CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDragPreview, CdkDropList, CdkDropListGroup, DragDrop, DragDropModule, DragDropRegistry, DragRef, DropListRef, copyArrayItem, moveItemInArray, transferArrayItem };\n","import { asyncScheduler } from '../scheduler/async';\nimport { timer } from './timer';\nexport function interval(period = 0, scheduler = asyncScheduler) {\n if (period < 0) {\n period = 0;\n }\n return timer(period, period, scheduler);\n}\n","import * as i0 from '@angular/core';\nimport { Injectable, Inject, EventEmitter, forwardRef, Component, ViewEncapsulation, Input, HostBinding, Output, ViewChild, HostListener, SecurityContext, Attribute, NgModule } from '@angular/core';\nimport * as i1$1 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i1 from '@angular/common/http';\nimport * as i4 from '@angular/forms';\nimport { NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport * as i2 from '@angular/platform-browser';\n\nclass AngularEditorService {\n constructor(http, doc) {\n this.http = http;\n this.doc = doc;\n /**\n * save selection when the editor is focussed out\n */\n this.saveSelection = () => {\n if (this.doc.getSelection) {\n const sel = this.doc.getSelection();\n if (sel.getRangeAt && sel.rangeCount) {\n this.savedSelection = sel.getRangeAt(0);\n this.selectedText = sel.toString();\n }\n }\n else if (this.doc.getSelection && this.doc.createRange) {\n this.savedSelection = document.createRange();\n }\n else {\n this.savedSelection = null;\n }\n };\n }\n /**\n * Executed command from editor header buttons exclude toggleEditorMode\n * @param command string from triggerCommand\n */\n executeCommand(command) {\n const commands = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'pre'];\n if (commands.includes(command)) {\n this.doc.execCommand('formatBlock', false, command);\n return;\n }\n this.doc.execCommand(command, false, null);\n }\n /**\n * Create URL link\n * @param url string from UI prompt\n */\n createLink(url) {\n if (!url.includes('http')) {\n this.doc.execCommand('createlink', false, url);\n }\n else {\n const newUrl = '<a href=\"' + url + '\" target=\"_blank\">' + this.selectedText + '</a>';\n this.insertHtml(newUrl);\n }\n }\n /**\n * insert color either font or background\n *\n * @param color color to be inserted\n * @param where where the color has to be inserted either text/background\n */\n insertColor(color, where) {\n const restored = this.restoreSelection();\n if (restored) {\n if (where === 'textColor') {\n this.doc.execCommand('foreColor', false, color);\n }\n else {\n this.doc.execCommand('hiliteColor', false, color);\n }\n }\n }\n /**\n * Set font name\n * @param fontName string\n */\n setFontName(fontName) {\n this.doc.execCommand('fontName', false, fontName);\n }\n /**\n * Set font size\n * @param fontSize string\n */\n setFontSize(fontSize) {\n this.doc.execCommand('fontSize', false, fontSize);\n }\n /**\n * Create raw HTML\n * @param html HTML string\n */\n insertHtml(html) {\n const isHTMLInserted = this.doc.execCommand('insertHTML', false, html);\n if (!isHTMLInserted) {\n throw new Error('Unable to perform the operation');\n }\n }\n /**\n * restore selection when the editor is focused in\n *\n * saved selection when the editor is focused out\n */\n restoreSelection() {\n if (this.savedSelection) {\n if (this.doc.getSelection) {\n const sel = this.doc.getSelection();\n sel.removeAllRanges();\n sel.addRange(this.savedSelection);\n return true;\n }\n else if (this.doc.getSelection /*&& this.savedSelection.select*/) {\n // this.savedSelection.select();\n return true;\n }\n }\n else {\n return false;\n }\n }\n /**\n * setTimeout used for execute 'saveSelection' method in next event loop iteration\n */\n executeInNextQueueIteration(callbackFn, timeout = 1e2) {\n setTimeout(callbackFn, timeout);\n }\n /** check any selection is made or not */\n checkSelection() {\n const selectedText = this.savedSelection.toString();\n if (selectedText.length === 0) {\n throw new Error('No Selection Made');\n }\n return true;\n }\n /**\n * Upload file to uploadUrl\n * @param file The file\n */\n uploadImage(file) {\n const uploadData = new FormData();\n uploadData.append('file', file, file.name);\n return this.http.post(this.uploadUrl, uploadData, {\n reportProgress: true,\n observe: 'events',\n withCredentials: this.uploadWithCredentials,\n });\n }\n /**\n * Insert image with Url\n * @param imageUrl The imageUrl.\n */\n insertImage(imageUrl) {\n this.doc.execCommand('insertImage', false, imageUrl);\n }\n setDefaultParagraphSeparator(separator) {\n this.doc.execCommand('defaultParagraphSeparator', false, separator);\n }\n createCustomClass(customClass) {\n let newTag = this.selectedText;\n if (customClass) {\n const tagName = customClass.tag ? customClass.tag : 'span';\n newTag = '<' + tagName + ' class=\"' + customClass.class + '\">' + this.selectedText + '</' + tagName + '>';\n }\n this.insertHtml(newTag);\n }\n insertVideo(videoUrl) {\n if (videoUrl.match('www.youtube.com')) {\n this.insertYouTubeVideoTag(videoUrl);\n }\n if (videoUrl.match('vimeo.com')) {\n this.insertVimeoVideoTag(videoUrl);\n }\n }\n insertYouTubeVideoTag(videoUrl) {\n const id = videoUrl.split('v=')[1];\n const imageUrl = `https://img.youtube.com/vi/${id}/0.jpg`;\n const thumbnail = `\n <div style='position: relative'>\n <a href='${videoUrl}' target='_blank'>\n <img src=\"${imageUrl}\" alt=\"click to watch\"/>\n <img style='position: absolute; left:200px; top:140px'\n src=\"https://img.icons8.com/color/96/000000/youtube-play.png\"/>\n </a>\n </div>`;\n this.insertHtml(thumbnail);\n }\n insertVimeoVideoTag(videoUrl) {\n const sub = this.http.get(`https://vimeo.com/api/oembed.json?url=${videoUrl}`).subscribe(data => {\n const imageUrl = data.thumbnail_url_with_play_button;\n const thumbnail = `<div>\n <a href='${videoUrl}' target='_blank'>\n <img src=\"${imageUrl}\" alt=\"${data.title}\"/>\n </a>\n </div>`;\n this.insertHtml(thumbnail);\n sub.unsubscribe();\n });\n }\n nextNode(node) {\n if (node.hasChildNodes()) {\n return node.firstChild;\n }\n else {\n while (node && !node.nextSibling) {\n node = node.parentNode;\n }\n if (!node) {\n return null;\n }\n return node.nextSibling;\n }\n }\n getRangeSelectedNodes(range, includePartiallySelectedContainers) {\n let node = range.startContainer;\n const endNode = range.endContainer;\n let rangeNodes = [];\n // Special case for a range that is contained within a single node\n if (node === endNode) {\n rangeNodes = [node];\n }\n else {\n // Iterate nodes until we hit the end container\n while (node && node !== endNode) {\n rangeNodes.push(node = this.nextNode(node));\n }\n // Add partially selected nodes at the start of the range\n node = range.startContainer;\n while (node && node !== range.commonAncestorContainer) {\n rangeNodes.unshift(node);\n node = node.parentNode;\n }\n }\n // Add ancestors of the range container, if required\n if (includePartiallySelectedContainers) {\n node = range.commonAncestorContainer;\n while (node) {\n rangeNodes.push(node);\n node = node.parentNode;\n }\n }\n return rangeNodes;\n }\n getSelectedNodes() {\n const nodes = [];\n if (this.doc.getSelection) {\n const sel = this.doc.getSelection();\n for (let i = 0, len = sel.rangeCount; i < len; ++i) {\n nodes.push.apply(nodes, this.getRangeSelectedNodes(sel.getRangeAt(i), true));\n }\n }\n return nodes;\n }\n replaceWithOwnChildren(el) {\n const parent = el.parentNode;\n while (el.hasChildNodes()) {\n parent.insertBefore(el.firstChild, el);\n }\n parent.removeChild(el);\n }\n removeSelectedElements(tagNames) {\n const tagNamesArray = tagNames.toLowerCase().split(',');\n this.getSelectedNodes().forEach((node) => {\n if (node.nodeType === 1 &&\n tagNamesArray.indexOf(node.tagName.toLowerCase()) > -1) {\n // Remove the node and replace it with its children\n this.replaceWithOwnChildren(node);\n }\n });\n }\n}\nAngularEditorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: AngularEditorService, deps: [{ token: i1.HttpClient }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nAngularEditorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: AngularEditorService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: AngularEditorService, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: i1.HttpClient }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\n\nconst angularEditorConfig = {\n editable: true,\n spellcheck: true,\n height: 'auto',\n minHeight: '0',\n maxHeight: 'auto',\n width: 'auto',\n minWidth: '0',\n translate: 'yes',\n enableToolbar: true,\n showToolbar: true,\n placeholder: 'Enter text here...',\n defaultParagraphSeparator: '',\n defaultFontName: '',\n defaultFontSize: '',\n fonts: [\n { class: 'arial', name: 'Arial' },\n { class: 'times-new-roman', name: 'Times New Roman' },\n { class: 'calibri', name: 'Calibri' },\n { class: 'comic-sans-ms', name: 'Comic Sans MS' }\n ],\n uploadUrl: 'v1/image',\n uploadWithCredentials: false,\n sanitize: true,\n toolbarPosition: 'top',\n outline: true,\n /*toolbarHiddenButtons: [\n ['bold', 'italic', 'underline', 'strikeThrough', 'superscript', 'subscript'],\n ['heading', 'fontName', 'fontSize', 'color'],\n ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', 'indent', 'outdent'],\n ['cut', 'copy', 'delete', 'removeFormat', 'undo', 'redo'],\n ['paragraph', 'blockquote', 'removeBlockquote', 'horizontalLine', 'orderedList', 'unorderedList'],\n ['link', 'unlink', 'image', 'video']\n ]*/\n};\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n\nclass AeSelectComponent {\n constructor(elRef, r) {\n this.elRef = elRef;\n this.r = r;\n this.options = [];\n this.disabled = false;\n this.optionId = 0;\n this.opened = false;\n this.hidden = 'inline-block';\n // eslint-disable-next-line @angular-eslint/no-output-native, @angular-eslint/no-output-rename\n this.changeEvent = new EventEmitter();\n this.onChange = () => {\n };\n this.onTouched = () => {\n };\n }\n get label() {\n return this.selectedOption && this.selectedOption.hasOwnProperty('label') ? this.selectedOption.label : 'Select';\n }\n get value() {\n return this.selectedOption.value;\n }\n ngOnInit() {\n this.selectedOption = this.options[0];\n if (isDefined(this.isHidden) && this.isHidden) {\n this.hide();\n }\n }\n hide() {\n this.hidden = 'none';\n }\n optionSelect(option, event) {\n event.stopPropagation();\n this.setValue(option.value);\n this.onChange(this.selectedOption.value);\n this.changeEvent.emit(this.selectedOption.value);\n this.onTouched();\n this.opened = false;\n }\n toggleOpen(event) {\n // event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.opened = !this.opened;\n }\n onClick($event) {\n if (!this.elRef.nativeElement.contains($event.target)) {\n this.close();\n }\n }\n close() {\n this.opened = false;\n }\n get isOpen() {\n return this.opened;\n }\n writeValue(value) {\n if (!value || typeof value !== 'string') {\n return;\n }\n this.setValue(value);\n }\n setValue(value) {\n let index = 0;\n const selectedEl = this.options.find((el, i) => {\n index = i;\n return el.value === value;\n });\n if (selectedEl) {\n this.selectedOption = selectedEl;\n this.optionId = index;\n }\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled) {\n this.labelButton.nativeElement.disabled = isDisabled;\n const div = this.labelButton.nativeElement;\n const action = isDisabled ? 'addClass' : 'removeClass';\n this.r[action](div, 'disabled');\n this.disabled = isDisabled;\n }\n handleKeyDown($event) {\n if (!this.opened) {\n return;\n }\n // console.log($event.key);\n // if (KeyCode[$event.key]) {\n switch ($event.key) {\n case 'ArrowDown':\n this._handleArrowDown($event);\n break;\n case 'ArrowUp':\n this._handleArrowUp($event);\n break;\n case 'Space':\n this._handleSpace($event);\n break;\n case 'Enter':\n this._handleEnter($event);\n break;\n case 'Tab':\n this._handleTab($event);\n break;\n case 'Escape':\n this.close();\n $event.preventDefault();\n break;\n case 'Backspace':\n this._handleBackspace();\n break;\n }\n // } else if ($event.key && $event.key.length === 1) {\n // this._keyPress$.next($event.key.toLocaleLowerCase());\n // }\n }\n _handleArrowDown($event) {\n if (this.optionId < this.options.length - 1) {\n this.optionId++;\n }\n }\n _handleArrowUp($event) {\n if (this.optionId >= 1) {\n this.optionId--;\n }\n }\n _handleSpace($event) {\n }\n _handleEnter($event) {\n this.optionSelect(this.options[this.optionId], $event);\n }\n _handleTab($event) {\n }\n _handleBackspace() {\n }\n}\nAeSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: AeSelectComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nAeSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: AeSelectComponent, selector: \"ae-select\", inputs: { options: \"options\", isHidden: [\"hidden\", \"isHidden\"] }, outputs: { changeEvent: \"change\" }, host: { listeners: { \"document:click\": \"onClick($event)\", \"keydown\": \"handleKeyDown($event)\" }, properties: { \"style.display\": \"this.hidden\" } }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AeSelectComponent),\n multi: true,\n }\n ], viewQueries: [{ propertyName: \"labelButton\", first: true, predicate: [\"labelButton\"], descendants: true, static: true }], ngImport: i0, template: \"<span class=\\\"ae-font ae-picker\\\" [ngClass]=\\\"{'ae-expanded':isOpen}\\\">\\n <button [tabIndex]=\\\"-1\\\" #labelButton tabindex=\\\"0\\\" type=\\\"button\\\" role=\\\"button\\\" class=\\\"ae-picker-label\\\" (click)=\\\"toggleOpen($event);\\\">{{label}}\\n <svg viewBox=\\\"0 0 18 18\\\">\\n <!-- <use x=\\\"0\\\" y=\\\"0\\\" xlink:href=\\\"../assets/icons.svg#hom\\\"></use>-->\\n <polygon class=\\\"ae-stroke\\\" points=\\\"7 11 9 13 11 11 7 11\\\"></polygon>\\n <polygon class=\\\"ae-stroke\\\" points=\\\"7 7 9 5 11 7 7 7\\\"></polygon>\\n </svg>\\n </button>\\n <span class=\\\"ae-picker-options\\\">\\n <button tabindex=\\\"-1\\\" type=\\\"button\\\" role=\\\"button\\\" class=\\\"ae-picker-item\\\"\\n *ngFor=\\\"let item of options; let i = index\\\"\\n [ngClass]=\\\"{'selected': item.value === value, 'focused': i === optionId}\\\"\\n (click)=\\\"optionSelect(item, $event)\\\">\\n {{item.label}}\\n </button>\\n <span class=\\\"dropdown-item\\\" *ngIf=\\\"!options.length\\\">No items for select</span>\\n </span>\\n</span>\\n\", styles: [\".ae-font.ae-picker{color:#444;display:inline-block;float:left;width:100%;position:relative;vertical-align:middle}.ae-font .ae-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:10px;position:relative;width:100%;line-height:26px;vertical-align:middle;font-size:85%;text-align:left;background-color:#fff;min-width:2rem;float:left;border:1px solid #ddd;text-overflow:clip;overflow:hidden;white-space:nowrap}.ae-font .ae-picker-label:before{content:\\\"\\\";position:absolute;right:0;top:0;width:20px;height:100%;background:linear-gradient(to right,white,#ffffff 100%)}.ae-font .ae-picker-label:focus{outline:none}.ae-font .ae-picker-label:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.ae-font .ae-picker-label:hover:before{background:linear-gradient(to right,#f5f5f5 100%,#ffffff 100%)}.ae-font .ae-picker-label:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.ae-font .ae-picker-label:disabled:before{background:linear-gradient(to right,#f5f5f5 100%,#ffffff 100%)}.ae-font .ae-picker-label svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ae-font .ae-picker-label svg:not(:root){overflow:hidden}.ae-font .ae-picker-label svg .ae-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ae-font .ae-picker-options{background-color:#fff;display:none;min-width:100%;position:absolute;white-space:nowrap;z-index:3;border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ae-font .ae-picker-options .ae-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px;padding-left:5px;z-index:3;text-align:left;background-color:transparent;min-width:2rem;width:100%;border:0 solid #ddd}.ae-font .ae-picker-options .ae-picker-item.selected{color:#06c;background-color:#fff4c2}.ae-font .ae-picker-options .ae-picker-item.focused,.ae-font .ae-picker-options .ae-picker-item:hover{background-color:#fffa98}.ae-font.ae-expanded{display:block;margin-top:-1px;z-index:1}.ae-font.ae-expanded .ae-picker-label{color:#ccc;z-index:2}.ae-font.ae-expanded .ae-picker-label svg{color:#ccc;z-index:2}.ae-font.ae-expanded .ae-picker-label svg .ae-stroke{stroke:#ccc}.ae-font.ae-expanded .ae-picker-options{display:block;margin-top:-1px;top:100%;z-index:3;border-color:#ccc}\\n\"], directives: [{ type: i1$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1$1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: AeSelectComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ae-select', encapsulation: ViewEncapsulation.None, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AeSelectComponent),\n multi: true,\n }\n ], template: \"<span class=\\\"ae-font ae-picker\\\" [ngClass]=\\\"{'ae-expanded':isOpen}\\\">\\n <button [tabIndex]=\\\"-1\\\" #labelButton tabindex=\\\"0\\\" type=\\\"button\\\" role=\\\"button\\\" class=\\\"ae-picker-label\\\" (click)=\\\"toggleOpen($event);\\\">{{label}}\\n <svg viewBox=\\\"0 0 18 18\\\">\\n <!-- <use x=\\\"0\\\" y=\\\"0\\\" xlink:href=\\\"../assets/icons.svg#hom\\\"></use>-->\\n <polygon class=\\\"ae-stroke\\\" points=\\\"7 11 9 13 11 11 7 11\\\"></polygon>\\n <polygon class=\\\"ae-stroke\\\" points=\\\"7 7 9 5 11 7 7 7\\\"></polygon>\\n </svg>\\n </button>\\n <span class=\\\"ae-picker-options\\\">\\n <button tabindex=\\\"-1\\\" type=\\\"button\\\" role=\\\"button\\\" class=\\\"ae-picker-item\\\"\\n *ngFor=\\\"let item of options; let i = index\\\"\\n [ngClass]=\\\"{'selected': item.value === value, 'focused': i === optionId}\\\"\\n (click)=\\\"optionSelect(item, $event)\\\">\\n {{item.label}}\\n </button>\\n <span class=\\\"dropdown-item\\\" *ngIf=\\\"!options.length\\\">No items for select</span>\\n </span>\\n</span>\\n\", styles: [\".ae-font.ae-picker{color:#444;display:inline-block;float:left;width:100%;position:relative;vertical-align:middle}.ae-font .ae-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:10px;position:relative;width:100%;line-height:26px;vertical-align:middle;font-size:85%;text-align:left;background-color:#fff;min-width:2rem;float:left;border:1px solid #ddd;text-overflow:clip;overflow:hidden;white-space:nowrap}.ae-font .ae-picker-label:before{content:\\\"\\\";position:absolute;right:0;top:0;width:20px;height:100%;background:linear-gradient(to right,white,#ffffff 100%)}.ae-font .ae-picker-label:focus{outline:none}.ae-font .ae-picker-label:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.ae-font .ae-picker-label:hover:before{background:linear-gradient(to right,#f5f5f5 100%,#ffffff 100%)}.ae-font .ae-picker-label:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.ae-font .ae-picker-label:disabled:before{background:linear-gradient(to right,#f5f5f5 100%,#ffffff 100%)}.ae-font .ae-picker-label svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ae-font .ae-picker-label svg:not(:root){overflow:hidden}.ae-font .ae-picker-label svg .ae-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ae-font .ae-picker-options{background-color:#fff;display:none;min-width:100%;position:absolute;white-space:nowrap;z-index:3;border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ae-font .ae-picker-options .ae-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px;padding-left:5px;z-index:3;text-align:left;background-color:transparent;min-width:2rem;width:100%;border:0 solid #ddd}.ae-font .ae-picker-options .ae-picker-item.selected{color:#06c;background-color:#fff4c2}.ae-font .ae-picker-options .ae-picker-item.focused,.ae-font .ae-picker-options .ae-picker-item:hover{background-color:#fffa98}.ae-font.ae-expanded{display:block;margin-top:-1px;z-index:1}.ae-font.ae-expanded .ae-picker-label{color:#ccc;z-index:2}.ae-font.ae-expanded .ae-picker-label svg{color:#ccc;z-index:2}.ae-font.ae-expanded .ae-picker-label svg .ae-stroke{stroke:#ccc}.ae-font.ae-expanded .ae-picker-options{display:block;margin-top:-1px;top:100%;z-index:3;border-color:#ccc}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { options: [{\n type: Input\n }], isHidden: [{\n type: Input,\n args: ['hidden']\n }], hidden: [{\n type: HostBinding,\n args: ['style.display']\n }], changeEvent: [{\n type: Output,\n args: ['change']\n }], labelButton: [{\n type: ViewChild,\n args: ['labelButton', { static: true }]\n }], onClick: [{\n type: HostListener,\n args: ['document:click', ['$event']]\n }], handleKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n\nclass AngularEditorToolbarComponent {\n constructor(r, editorService, er, doc) {\n this.r = r;\n this.editorService = editorService;\n this.er = er;\n this.doc = doc;\n this.htmlMode = false;\n this.linkSelected = false;\n this.block = 'default';\n this.fontName = 'Times New Roman';\n this.fontSize = '3';\n this.headings = [\n {\n label: 'Heading 1',\n value: 'h1',\n },\n {\n label: 'Heading 2',\n value: 'h2',\n },\n {\n label: 'Heading 3',\n value: 'h3',\n },\n {\n label: 'Heading 4',\n value: 'h4',\n },\n {\n label: 'Heading 5',\n value: 'h5',\n },\n {\n label: 'Heading 6',\n value: 'h6',\n },\n {\n label: 'Heading 7',\n value: 'h7',\n },\n {\n label: 'Paragraph',\n value: 'p',\n },\n {\n label: 'Predefined',\n value: 'pre'\n },\n {\n label: 'Standard',\n value: 'div'\n },\n {\n label: 'default',\n value: 'default'\n }\n ];\n this.fontSizes = [\n {\n label: '1',\n value: '1',\n },\n {\n label: '2',\n value: '2',\n },\n {\n label: '3',\n value: '3',\n },\n {\n label: '4',\n value: '4',\n },\n {\n label: '5',\n value: '5',\n },\n {\n label: '6',\n value: '6',\n },\n {\n label: '7',\n value: '7',\n }\n ];\n this.customClassId = '-1';\n this.customClassList = [{ label: '', value: '' }];\n // uploadUrl: string;\n this.tagMap = {\n BLOCKQUOTE: 'indent',\n A: 'link'\n };\n this.select = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'P', 'PRE', 'DIV'];\n this.buttons = ['bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', 'justifyLeft', 'justifyCenter',\n 'justifyRight', 'justifyFull', 'indent', 'outdent', 'insertUnorderedList', 'insertOrderedList', 'link'];\n this.fonts = [{ label: '', value: '' }];\n this.execute = new EventEmitter();\n }\n set customClasses(classes) {\n if (classes) {\n this._customClasses = classes;\n this.customClassList = this._customClasses.map((x, i) => ({ label: x.name, value: i.toString() }));\n this.customClassList.unshift({ label: 'Clear Class', value: '-1' });\n }\n }\n set defaultFontName(value) {\n if (value) {\n this.fontName = value;\n }\n }\n set defaultFontSize(value) {\n if (value) {\n this.fontSize = value;\n }\n }\n get isLinkButtonDisabled() {\n return this.htmlMode || !Boolean(this.editorService.selectedText);\n }\n /**\n * Trigger command from editor header buttons\n * @param command string from toolbar buttons\n */\n triggerCommand(command) {\n this.execute.emit(command);\n }\n /**\n * highlight editor buttons when cursor moved or positioning\n */\n triggerButtons() {\n if (!this.showToolbar) {\n return;\n }\n this.buttons.forEach(e => {\n const result = this.doc.queryCommandState(e);\n const elementById = this.doc.getElementById(e + '-' + this.id);\n if (result) {\n this.r.addClass(elementById, 'active');\n }\n else {\n this.r.removeClass(elementById, 'active');\n }\n });\n }\n /**\n * trigger highlight editor buttons when cursor moved or positioning in block\n */\n triggerBlocks(nodes) {\n if (!this.showToolbar) {\n return;\n }\n this.linkSelected = nodes.findIndex(x => x.nodeName === 'A') > -1;\n let found = false;\n this.select.forEach(y => {\n const node = nodes.find(x => x.nodeName === y);\n if (node !== undefined && y === node.nodeName) {\n if (found === false) {\n this.block = node.nodeName.toLowerCase();\n found = true;\n }\n }\n else if (found === false) {\n this.block = 'default';\n }\n });\n found = false;\n if (this._customClasses) {\n this._customClasses.forEach((y, index) => {\n const node = nodes.find(x => {\n if (x instanceof Element) {\n return x.className === y.class;\n }\n });\n if (node !== undefined) {\n if (found === false) {\n this.customClassId = index.toString();\n found = true;\n }\n }\n else if (found === false) {\n this.customClassId = '-1';\n }\n });\n }\n Object.keys(this.tagMap).map(e => {\n const elementById = this.doc.getElementById(this.tagMap[e] + '-' + this.id);\n const node = nodes.find(x => x.nodeName === e);\n if (node !== undefined && e === node.nodeName) {\n this.r.addClass(elementById, 'active');\n }\n else {\n this.r.removeClass(elementById, 'active');\n }\n });\n this.foreColour = this.doc.queryCommandValue('ForeColor');\n this.fontSize = this.doc.queryCommandValue('FontSize');\n this.fontName = this.doc.queryCommandValue('FontName').replace(/\"/g, '');\n this.backColor = this.doc.queryCommandValue('backColor');\n }\n /**\n * insert URL link\n */\n insertUrl() {\n let url = 'https:\\/\\/';\n const selection = this.editorService.savedSelection;\n if (selection && selection.commonAncestorContainer.parentElement.nodeName === 'A') {\n const parent = selection.commonAncestorContainer.parentElement;\n if (parent.href !== '') {\n url = parent.href;\n }\n }\n url = prompt('Insert URL link', url);\n if (url && url !== '' && url !== 'https://') {\n this.editorService.createLink(url);\n }\n }\n /**\n * insert Video link\n */\n insertVideo() {\n this.execute.emit('');\n const url = prompt('Insert Video link', `https://`);\n if (url && url !== '' && url !== `https://`) {\n this.editorService.insertVideo(url);\n }\n }\n /** insert color */\n insertColor(color, where) {\n this.editorService.insertColor(color, where);\n this.execute.emit('');\n }\n /**\n * set font Name/family\n * @param foreColor string\n */\n setFontName(foreColor) {\n this.editorService.setFontName(foreColor);\n this.execute.emit('');\n }\n /**\n * set font Size\n * @param fontSize string\n */\n setFontSize(fontSize) {\n this.editorService.setFontSize(fontSize);\n this.execute.emit('');\n }\n /**\n * toggle editor mode (WYSIWYG or SOURCE)\n * @param m boolean\n */\n setEditorMode(m) {\n const toggleEditorModeButton = this.doc.getElementById('toggleEditorMode' + '-' + this.id);\n if (m) {\n this.r.addClass(toggleEditorModeButton, 'active');\n }\n else {\n this.r.removeClass(toggleEditorModeButton, 'active');\n }\n this.htmlMode = m;\n }\n /**\n * Upload image when file is selected.\n */\n onFileChanged(event) {\n const file = event.target.files[0];\n if (file.type.includes('image/')) {\n if (this.upload) {\n this.upload(file).subscribe((response) => this.watchUploadImage(response, event));\n }\n else if (this.uploadUrl) {\n this.editorService.uploadImage(file).subscribe((response) => this.watchUploadImage(response, event));\n }\n else {\n const reader = new FileReader();\n reader.onload = (e) => {\n const fr = e.currentTarget;\n this.editorService.insertImage(fr.result.toString());\n };\n reader.readAsDataURL(file);\n }\n }\n }\n watchUploadImage(response, event) {\n const { imageUrl } = response.body;\n this.editorService.insertImage(imageUrl);\n event.srcElement.value = null;\n }\n /**\n * Set custom class\n */\n setCustomClass(classId) {\n if (classId === '-1') {\n this.execute.emit('clear');\n }\n else {\n this.editorService.createCustomClass(this._customClasses[+classId]);\n }\n }\n isButtonHidden(name) {\n if (!name) {\n return false;\n }\n if (!(this.hiddenButtons instanceof Array)) {\n return false;\n }\n let result;\n for (const arr of this.hiddenButtons) {\n if (arr instanceof Array) {\n result = arr.find(item => item === name);\n }\n if (result) {\n break;\n }\n }\n return result !== undefined;\n }\n focus() {\n this.execute.emit('focus');\n console.log('focused');\n }\n}\nAngularEditorToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: AngularEditorToolbarComponent, deps: [{ token: i0.Renderer2 }, { token: AngularEditorService }, { token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });\nAngularEditorToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: AngularEditorToolbarComponent, selector: \"angular-editor-toolbar\", inputs: { id: \"id\", uploadUrl: \"uploadUrl\", upload: \"upload\", showToolbar: \"showToolbar\", fonts: \"fonts\", customClasses: \"customClasses\", defaultFontName: \"defaultFontName\", defaultFontSize: \"defaultFontSize\", hiddenButtons: \"hiddenButtons\" }, outputs: { execute: \"execute\" }, viewQueries: [{ propertyName: \"myInputFile\", first: true, predicate: [\"fileInput\"], descendants: true, static: true }], ngImport: i0, template: \"<div class=\\\"angular-editor-toolbar\\\" *ngIf=\\\"showToolbar\\\">\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <button type=\\\"button\\\" title=\\\"Undo\\\" class=\\\"angular-editor-button\\\" (click)=\\\"triggerCommand('undo')\\\"\\n [hidden]=\\\"isButtonHidden('undo')\\\" tabindex=\\\"-1\\\"><i\\n class='fa fa-undo'></i></button>\\n <button type=\\\"button\\\" title=\\\"Redo\\\" class=\\\"angular-editor-button\\\" (click)=\\\"triggerCommand('redo')\\\"\\n [hidden]=\\\"isButtonHidden('redo')\\\" tabindex=\\\"-1\\\"><i\\n class='fa fa-repeat'></i></button>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <button [id]=\\\"'bold-'+id\\\" type=\\\"button\\\" title=\\\"Bold\\\" class=\\\"angular-editor-button\\\" (click)=\\\"triggerCommand('bold')\\\"\\n [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('bold')\\\" tabindex=\\\"-1\\\"><i class='fa fa-bold'></i></button>\\n <button [id]=\\\"'italic-'+id\\\" type=\\\"button\\\" title=\\\"Italic\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('italic')\\\"\\n [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('italic')\\\" tabindex=\\\"-1\\\"><i class='fa fa-italic'></i>\\n </button>\\n <button [id]=\\\"'underline-'+id\\\" type=\\\"button\\\" title=\\\"Underline\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('underline')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('underline')\\\"\\n tabindex=\\\"-1\\\"><i class='fa fa-underline'></i></button>\\n <button [id]=\\\"'strikeThrough-'+id\\\" type=\\\"button\\\" title=\\\"Strikethrough\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('strikeThrough')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('strikeThrough')\\\"\\n tabindex=\\\"-1\\\"><i class='fa fa-strikethrough'></i></button>\\n <button [id]=\\\"'subscript-'+id\\\" type=\\\"button\\\" title=\\\"Subscript\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('subscript')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('subscript')\\\"\\n tabindex=\\\"-1\\\"><i class='fa fa-subscript'></i></button>\\n <button [id]=\\\"'superscript-'+id\\\" type=\\\"button\\\" title=\\\"Superscript\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('superscript')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('superscript')\\\"\\n tabindex=\\\"-1\\\"><i class='fa fa-superscript'></i></button>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <button [id]=\\\"'justifyLeft-'+id\\\" type=\\\"button\\\" title=\\\"Justify Left\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('justifyLeft')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('justifyLeft')\\\"\\n tabindex=\\\"-1\\\"><i\\n class='fa fa-align-left'></i></button>\\n <button [id]=\\\"'justifyCenter-'+id\\\" type=\\\"button\\\" title=\\\"Justify Center\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('justifyCenter')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('justifyCenter')\\\"\\n tabindex=\\\"-1\\\"><i\\n class='fa fa-align-center'></i></button>\\n <button [id]=\\\"'justifyRight-'+id\\\" type=\\\"button\\\" title=\\\"Justify Right\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('justifyRight')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('justifyRight')\\\"\\n tabindex=\\\"-1\\\">\\n <i class='fa fa-align-right'></i></button>\\n <button [id]=\\\"'justifyFull-'+id\\\" type=\\\"button\\\" title=\\\"Justify Full\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('justifyFull')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('justifyFull')\\\"\\n tabindex=\\\"-1\\\"><i\\n class='fa fa-align-justify'></i></button>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <button [id]=\\\"'indent-'+id\\\" type=\\\"button\\\" title=\\\"Indent\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('indent')\\\"\\n [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('indent')\\\" tabindex=\\\"-1\\\"><i\\n class='fa fa-indent'></i></button>\\n <button [id]=\\\"'outdent-'+id\\\" type=\\\"button\\\" title=\\\"Outdent\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('outdent')\\\"\\n [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('outdent')\\\" tabindex=\\\"-1\\\"><i\\n class='fa fa-outdent'></i></button>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <button [id]=\\\"'insertUnorderedList-'+id\\\" type=\\\"button\\\" title=\\\"Unordered List\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('insertUnorderedList')\\\" [disabled]=\\\"htmlMode\\\"\\n [hidden]=\\\"isButtonHidden('insertUnorderedList')\\\" tabindex=\\\"-1\\\"><i\\n class='fa fa-list-ul'></i></button>\\n <button [id]=\\\"'insertOrderedList-'+id\\\" type=\\\"button\\\" title=\\\"Ordered List\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('insertOrderedList')\\\" [disabled]=\\\"htmlMode\\\"\\n [hidden]=\\\"isButtonHidden('insertOrderedList')\\\" tabindex=\\\"-1\\\"><i\\n class='fa fa-list-ol'></i></button>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n\\n <ae-select class=\\\"select-heading\\\" [options]=\\\"headings\\\"\\n [(ngModel)]=\\\"block\\\"\\n (change)=\\\"triggerCommand(block)\\\"\\n [disabled]=\\\"htmlMode\\\"\\n [hidden]=\\\"isButtonHidden('heading')\\\"\\n tabindex=\\\"-1\\\"></ae-select>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n\\n <ae-select class=\\\"select-font\\\" [options]=\\\"fonts\\\"\\n [(ngModel)]=\\\"fontName\\\"\\n (change)=\\\"setFontName(fontName)\\\"\\n [disabled]=\\\"htmlMode\\\"\\n [hidden]=\\\"isButtonHidden('fontName')\\\"\\n tabindex=\\\"-1\\\"></ae-select>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n\\n <ae-select class=\\\"select-font-size\\\" [options]=\\\"fontSizes\\\"\\n [(ngModel)]=\\\"fontSize\\\"\\n (change)=\\\"setFontSize(fontSize)\\\"\\n [disabled]=\\\"htmlMode\\\"\\n [hidden]=\\\"isButtonHidden('fontSize')\\\"\\n tabindex=\\\"-1\\\">\\n </ae-select>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <input\\n style=\\\"display: none\\\"\\n type=\\\"color\\\" (change)=\\\"insertColor(fgInput.value, 'textColor')\\\"\\n #fgInput>\\n <button [id]=\\\"'foregroundColorPicker-'+id\\\" type=\\\"button\\\" class=\\\"angular-editor-button\\\" (click)=\\\"focus(); ; fgInput.click()\\\"\\n title=\\\"Text Color\\\"\\n [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('textColor')\\\" tabindex=\\\"-1\\\"><span\\n class=\\\"color-label foreground\\\"><i class=\\\"fa fa-font\\\"></i></span>\\n </button>\\n <input\\n style=\\\"display: none\\\"\\n type=\\\"color\\\" (change)=\\\"insertColor(bgInput.value, 'backgroundColor')\\\"\\n #bgInput>\\n <button [id]=\\\"'backgroundColorPicker-'+id\\\" type=\\\"button\\\" class=\\\"angular-editor-button\\\" (click)=\\\"focus(); ; bgInput.click()\\\"\\n title=\\\"Background Color\\\"\\n [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('backgroundColor')\\\" tabindex=\\\"-1\\\"><span\\n class=\\\"color-label background\\\"><i class=\\\"fa fa-font\\\"></i></span>\\n </button>\\n </div>\\n <div *ngIf=\\\"_customClasses\\\" class=\\\"angular-editor-toolbar-set\\\">\\n <ae-select class=\\\"select-custom-style\\\" [options]=\\\"customClassList\\\"\\n [(ngModel)]=\\\"customClassId\\\"\\n (change)=\\\"setCustomClass(customClassId)\\\"\\n [disabled]=\\\"htmlMode\\\"\\n [hidden]=\\\"isButtonHidden('customClasses')\\\"\\n tabindex=\\\"-1\\\"></ae-select>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <button [id]=\\\"'link-'+id\\\" type=\\\"button\\\" class=\\\"angular-editor-button\\\" (click)=\\\"insertUrl()\\\"\\n title=\\\"Insert Link\\\" [disabled]=\\\"isLinkButtonDisabled\\\" [hidden]=\\\"isButtonHidden('link')\\\" tabindex=\\\"-1\\\">\\n <i class=\\\"fa fa-link\\\"></i>\\n </button>\\n <button [id]=\\\"'unlink-'+id\\\" type=\\\"button\\\" class=\\\"angular-editor-button\\\" (click)=\\\"triggerCommand('unlink')\\\"\\n title=\\\"Unlink\\\" [disabled]=\\\"htmlMode || !linkSelected\\\" [hidden]=\\\"isButtonHidden('unlink')\\\" tabindex=\\\"-1\\\">\\n <i class=\\\"fa fa-chain-broken\\\"></i>\\n </button>\\n <input\\n style=\\\"display: none\\\"\\n accept=\\\"image/*\\\"\\n type=\\\"file\\\" (change)=\\\"onFileChanged($event)\\\"\\n #fileInput>\\n <button [id]=\\\"'insertImage-'+id\\\" type=\\\"button\\\" class=\\\"angular-editor-button\\\" (click)=\\\"focus(); fileInput.click()\\\"\\n title=\\\"Insert Image\\\"\\n [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('insertImage')\\\" tabindex=\\\"-1\\\"><i class=\\\"fa fa-image\\\"></i>\\n </button>\\n <button [id]=\\\"'insertVideo-'+id\\\" type=\\\"button\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"insertVideo()\\\" title=\\\"Insert Video\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('insertVideo')\\\"\\n tabindex=\\\"-1\\\"><i\\n class=\\\"fa fa-video-camera\\\"></i></button>\\n <button [id]=\\\"'insertHorizontalRule-'+id\\\" type=\\\"button\\\" title=\\\"Horizontal Line\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('insertHorizontalRule')\\\" [disabled]=\\\"htmlMode\\\"\\n [hidden]=\\\"isButtonHidden('insertHorizontalRule')\\\" tabindex=\\\"-1\\\"><i\\n class=\\\"fa fa-minus\\\"></i></button>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <button [id]=\\\"'clearFormatting-'+id\\\" type=\\\"button\\\" title=\\\"Clear Formatting\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('removeFormat')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('removeFormat')\\\"\\n tabindex=\\\"-1\\\"><i class='fa fa-remove'></i>\\n </button>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <button [id]=\\\"'toggleEditorMode-'+id\\\" type=\\\"button\\\" title=\\\"HTML Code\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('toggleEditorMode')\\\" [hidden]=\\\"isButtonHidden('toggleEditorMode')\\\" tabindex=\\\"-1\\\"><i\\n class='fa fa-code'></i></button>\\n </div>\\n</div>\\n\", styles: [\"/*!\\n * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\\n */@font-face{font-family:FontAwesome;src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0);src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format(\\\"embedded-opentype\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0) format(\\\"woff2\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0) format(\\\"woff\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0) format(\\\"truetype\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format(\\\"svg\\\");font-weight:400;font-style:normal}.fa{display:inline-block;font: 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";transform:scaleY(-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:\\\"\\\\f000\\\"}.fa-music:before{content:\\\"\\\\f001\\\"}.fa-search:before{content:\\\"\\\\f002\\\"}.fa-envelope-o:before{content:\\\"\\\\f003\\\"}.fa-heart:before{content:\\\"\\\\f004\\\"}.fa-star:before{content:\\\"\\\\f005\\\"}.fa-star-o:before{content:\\\"\\\\f006\\\"}.fa-user:before{content:\\\"\\\\f007\\\"}.fa-film:before{content:\\\"\\\\f008\\\"}.fa-th-large:before{content:\\\"\\\\f009\\\"}.fa-th:before{content:\\\"\\\\f00a\\\"}.fa-th-list:before{content:\\\"\\\\f00b\\\"}.fa-check:before{content:\\\"\\\\f00c\\\"}.fa-remove:before,.fa-close:before,.fa-times:before{content:\\\"\\\\f00d\\\"}.fa-search-plus:before{content:\\\"\\\\f00e\\\"}.fa-search-minus:before{content:\\\"\\\\f010\\\"}.fa-power-off:before{content:\\\"\\\\f011\\\"}.fa-signal:before{content:\\\"\\\\f012\\\"}.fa-gear:before,.fa-cog:before{content:\\\"\\\\f013\\\"}.fa-trash-o:before{content:\\\"\\\\f014\\\"}.fa-home:before{content:\\\"\\\\f015\\\"}.fa-file-o:before{content:\\\"\\\\f016\\\"}.fa-clock-o:before{content:\\\"\\\\f017\\\"}.fa-road:before{content:\\\"\\\\f018\\\"}.fa-download:before{content:\\\"\\\\f019\\\"}.fa-arrow-circle-o-down:before{content:\\\"\\\\f01a\\\"}.fa-arrow-circle-o-up:before{content:\\\"\\\\f01b\\\"}.fa-inbox:before{content:\\\"\\\\f01c\\\"}.fa-play-circle-o:before{content:\\\"\\\\f01d\\\"}.fa-rotate-right:before,.fa-repeat:before{content:\\\"\\\\f01e\\\"}.fa-refresh:before{content:\\\"\\\\f021\\\"}.fa-list-alt:before{content:\\\"\\\\f022\\\"}.fa-lock:before{content:\\\"\\\\f023\\\"}.fa-flag:before{content:\\\"\\\\f024\\\"}.fa-headphones:before{content:\\\"\\\\f025\\\"}.fa-volume-off:before{content:\\\"\\\\f026\\\"}.fa-volume-down:before{content:\\\"\\\\f027\\\"}.fa-volume-up:before{content:\\\"\\\\f028\\\"}.fa-qrcode:before{content:\\\"\\\\f029\\\"}.fa-barcode:before{content:\\\"\\\\f02a\\\"}.fa-tag:before{content:\\\"\\\\f02b\\\"}.fa-tags:before{content:\\\"\\\\f02c\\\"}.fa-book:before{content:\\\"\\\\f02d\\\"}.fa-bookmark:before{content:\\\"\\\\f02e\\\"}.fa-print:before{content:\\\"\\\\f02f\\\"}.fa-camera:before{content:\\\"\\\\f030\\\"}.fa-font:before{content:\\\"\\\\f031\\\"}.fa-bold:before{content:\\\"\\\\f032\\\"}.fa-italic:before{content:\\\"\\\\f033\\\"}.fa-text-height:before{content:\\\"\\\\f034\\\"}.fa-text-width:before{content:\\\"\\\\f035\\\"}.fa-align-left:before{content:\\\"\\\\f036\\\"}.fa-align-center:before{content:\\\"\\\\f037\\\"}.fa-align-right:before{content:\\\"\\\\f038\\\"}.fa-align-justify:before{content:\\\"\\\\f039\\\"}.fa-list:before{content:\\\"\\\\f03a\\\"}.fa-dedent:before,.fa-outdent:before{content:\\\"\\\\f03b\\\"}.fa-indent:before{content:\\\"\\\\f03c\\\"}.fa-video-camera:before{content:\\\"\\\\f03d\\\"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:\\\"\\\\f03e\\\"}.fa-pencil:before{content:\\\"\\\\f040\\\"}.fa-map-marker:before{content:\\\"\\\\f041\\\"}.fa-adjust:before{content:\\\"\\\\f042\\\"}.fa-tint:before{content:\\\"\\\\f043\\\"}.fa-edit:before,.fa-pencil-square-o:before{content:\\\"\\\\f044\\\"}.fa-share-square-o:before{content:\\\"\\\\f045\\\"}.fa-check-square-o:before{content:\\\"\\\\f046\\\"}.fa-arrows:before{content:\\\"\\\\f047\\\"}.fa-step-backward:before{content:\\\"\\\\f048\\\"}.fa-fast-backward:before{content:\\\"\\\\f049\\\"}.fa-backward:before{content:\\\"\\\\f04a\\\"}.fa-play:before{content:\\\"\\\\f04b\\\"}.fa-pause:before{content:\\\"\\\\f04c\\\"}.fa-stop:before{content:\\\"\\\\f04d\\\"}.fa-forward:before{content:\\\"\\\\f04e\\\"}.fa-fast-forward:before{content:\\\"\\\\f050\\\"}.fa-step-forward:before{content:\\\"\\\\f051\\\"}.fa-eject:before{content:\\\"\\\\f052\\\"}.fa-chevron-left:before{content:\\\"\\\\f053\\\"}.fa-chevron-right:before{content:\\\"\\\\f054\\\"}.fa-plus-circle:before{content:\\\"\\\\f055\\\"}.fa-minus-circle:before{content:\\\"\\\\f056\\\"}.fa-times-circle:before{content:\\\"\\\\f057\\\"}.fa-check-circle:before{content:\\\"\\\\f058\\\"}.fa-question-circle:before{content:\\\"\\\\f059\\\"}.fa-info-circle:before{content:\\\"\\\\f05a\\\"}.fa-crosshairs:before{content:\\\"\\\\f05b\\\"}.fa-times-circle-o:before{content:\\\"\\\\f05c\\\"}.fa-check-circle-o:before{content:\\\"\\\\f05d\\\"}.fa-ban:before{content:\\\"\\\\f05e\\\"}.fa-arrow-left:before{content:\\\"\\\\f060\\\"}.fa-arrow-right:before{content:\\\"\\\\f061\\\"}.fa-arrow-up:before{content:\\\"\\\\f062\\\"}.fa-arrow-down:before{content:\\\"\\\\f063\\\"}.fa-mail-forward:before,.fa-share:before{content:\\\"\\\\f064\\\"}.fa-expand:before{content:\\\"\\\\f065\\\"}.fa-compress:before{content:\\\"\\\\f066\\\"}.fa-plus:before{content:\\\"\\\\f067\\\"}.fa-minus:before{content:\\\"\\\\f068\\\"}.fa-asterisk:before{content:\\\"\\\\f069\\\"}.fa-exclamation-circle:before{content:\\\"\\\\f06a\\\"}.fa-gift:before{content:\\\"\\\\f06b\\\"}.fa-leaf:before{content:\\\"\\\\f06c\\\"}.fa-fire:before{content:\\\"\\\\f06d\\\"}.fa-eye:before{content:\\\"\\\\f06e\\\"}.fa-eye-slash:before{content:\\\"\\\\f070\\\"}.fa-warning:before,.fa-exclamation-triangle:before{content:\\\"\\\\f071\\\"}.fa-plane:before{content:\\\"\\\\f072\\\"}.fa-calendar:before{content:\\\"\\\\f073\\\"}.fa-random:before{content:\\\"\\\\f074\\\"}.fa-comment:before{content:\\\"\\\\f075\\\"}.fa-magnet:before{content:\\\"\\\\f076\\\"}.fa-chevron-up:before{content:\\\"\\\\f077\\\"}.fa-chevron-down:before{content:\\\"\\\\f078\\\"}.fa-retweet:before{content:\\\"\\\\f079\\\"}.fa-shopping-cart:before{content:\\\"\\\\f07a\\\"}.fa-folder:before{content:\\\"\\\\f07b\\\"}.fa-folder-open:before{content:\\\"\\\\f07c\\\"}.fa-arrows-v:before{content:\\\"\\\\f07d\\\"}.fa-arrows-h:before{content:\\\"\\\\f07e\\\"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:\\\"\\\\f080\\\"}.fa-twitter-square:before{content:\\\"\\\\f081\\\"}.fa-facebook-square:before{content:\\\"\\\\f082\\\"}.fa-camera-retro:before{content:\\\"\\\\f083\\\"}.fa-key:before{content:\\\"\\\\f084\\\"}.fa-gears:before,.fa-cogs:before{content:\\\"\\\\f085\\\"}.fa-comments:before{content:\\\"\\\\f086\\\"}.fa-thumbs-o-up:before{content:\\\"\\\\f087\\\"}.fa-thumbs-o-down:before{content:\\\"\\\\f088\\\"}.fa-star-half:before{content:\\\"\\\\f089\\\"}.fa-heart-o:before{content:\\\"\\\\f08a\\\"}.fa-sign-out:before{content:\\\"\\\\f08b\\\"}.fa-linkedin-square:before{content:\\\"\\\\f08c\\\"}.fa-thumb-tack:before{content:\\\"\\\\f08d\\\"}.fa-external-link:before{content:\\\"\\\\f08e\\\"}.fa-sign-in:before{content:\\\"\\\\f090\\\"}.fa-trophy:before{content:\\\"\\\\f091\\\"}.fa-github-square:before{content:\\\"\\\\f092\\\"}.fa-upload:before{content:\\\"\\\\f093\\\"}.fa-lemon-o:before{content:\\\"\\\\f094\\\"}.fa-phone:before{content:\\\"\\\\f095\\\"}.fa-square-o:before{content:\\\"\\\\f096\\\"}.fa-bookmark-o:before{content:\\\"\\\\f097\\\"}.fa-phone-square:before{content:\\\"\\\\f098\\\"}.fa-twitter:before{content:\\\"\\\\f099\\\"}.fa-facebook-f:before,.fa-facebook:before{content:\\\"\\\\f09a\\\"}.fa-github:before{content:\\\"\\\\f09b\\\"}.fa-unlock:before{content:\\\"\\\\f09c\\\"}.fa-credit-card:before{content:\\\"\\\\f09d\\\"}.fa-feed:before,.fa-rss:before{content:\\\"\\\\f09e\\\"}.fa-hdd-o:before{content:\\\"\\\\f0a0\\\"}.fa-bullhorn:before{content:\\\"\\\\f0a1\\\"}.fa-bell:before{content:\\\"\\\\f0f3\\\"}.fa-certificate:before{content:\\\"\\\\f0a3\\\"}.fa-hand-o-right:before{content:\\\"\\\\f0a4\\\"}.fa-hand-o-left:before{content:\\\"\\\\f0a5\\\"}.fa-hand-o-up:before{content:\\\"\\\\f0a6\\\"}.fa-hand-o-down:before{content:\\\"\\\\f0a7\\\"}.fa-arrow-circle-left:before{content:\\\"\\\\f0a8\\\"}.fa-arrow-circle-right:before{content:\\\"\\\\f0a9\\\"}.fa-arrow-circle-up:before{content:\\\"\\\\f0aa\\\"}.fa-arrow-circle-down:before{content:\\\"\\\\f0ab\\\"}.fa-globe:before{content:\\\"\\\\f0ac\\\"}.fa-wrench:before{content:\\\"\\\\f0ad\\\"}.fa-tasks:before{content:\\\"\\\\f0ae\\\"}.fa-filter:before{content:\\\"\\\\f0b0\\\"}.fa-briefcase:before{content:\\\"\\\\f0b1\\\"}.fa-arrows-alt:before{content:\\\"\\\\f0b2\\\"}.fa-group:before,.fa-users:before{content:\\\"\\\\f0c0\\\"}.fa-chain:before,.fa-link:before{content:\\\"\\\\f0c1\\\"}.fa-cloud:before{content:\\\"\\\\f0c2\\\"}.fa-flask:before{content:\\\"\\\\f0c3\\\"}.fa-cut:before,.fa-scissors:before{content:\\\"\\\\f0c4\\\"}.fa-copy:before,.fa-files-o:before{content:\\\"\\\\f0c5\\\"}.fa-paperclip:before{content:\\\"\\\\f0c6\\\"}.fa-save:before,.fa-floppy-o:before{content:\\\"\\\\f0c7\\\"}.fa-square:before{content:\\\"\\\\f0c8\\\"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:\\\"\\\\f0c9\\\"}.fa-list-ul:before{content:\\\"\\\\f0ca\\\"}.fa-list-ol:before{content:\\\"\\\\f0cb\\\"}.fa-strikethrough:before{content:\\\"\\\\f0cc\\\"}.fa-underline:before{content:\\\"\\\\f0cd\\\"}.fa-table:before{content:\\\"\\\\f0ce\\\"}.fa-magic:before{content:\\\"\\\\f0d0\\\"}.fa-truck:before{content:\\\"\\\\f0d1\\\"}.fa-pinterest:before{content:\\\"\\\\f0d2\\\"}.fa-pinterest-square:before{content:\\\"\\\\f0d3\\\"}.fa-google-plus-square:before{content:\\\"\\\\f0d4\\\"}.fa-google-plus:before{content:\\\"\\\\f0d5\\\"}.fa-money:before{content:\\\"\\\\f0d6\\\"}.fa-caret-down:before{content:\\\"\\\\f0d7\\\"}.fa-caret-up:before{content:\\\"\\\\f0d8\\\"}.fa-caret-left:before{content:\\\"\\\\f0d9\\\"}.fa-caret-right:before{content:\\\"\\\\f0da\\\"}.fa-columns:before{content:\\\"\\\\f0db\\\"}.fa-unsorted:before,.fa-sort:before{content:\\\"\\\\f0dc\\\"}.fa-sort-down:before,.fa-sort-desc:before{content:\\\"\\\\f0dd\\\"}.fa-sort-up:before,.fa-sort-asc:before{content:\\\"\\\\f0de\\\"}.fa-envelope:before{content:\\\"\\\\f0e0\\\"}.fa-linkedin:before{content:\\\"\\\\f0e1\\\"}.fa-rotate-left:before,.fa-undo:before{content:\\\"\\\\f0e2\\\"}.fa-legal:before,.fa-gavel:before{content:\\\"\\\\f0e3\\\"}.fa-dashboard:before,.fa-tachometer:before{content:\\\"\\\\f0e4\\\"}.fa-comment-o:before{content:\\\"\\\\f0e5\\\"}.fa-comments-o:before{content:\\\"\\\\f0e6\\\"}.fa-flash:before,.fa-bolt:before{content:\\\"\\\\f0e7\\\"}.fa-sitemap:before{content:\\\"\\\\f0e8\\\"}.fa-umbrella:before{content:\\\"\\\\f0e9\\\"}.fa-paste:before,.fa-clipboard:before{content:\\\"\\\\f0ea\\\"}.fa-lightbulb-o:before{content:\\\"\\\\f0eb\\\"}.fa-exchange:before{content:\\\"\\\\f0ec\\\"}.fa-cloud-download:before{content:\\\"\\\\f0ed\\\"}.fa-cloud-upload:before{content:\\\"\\\\f0ee\\\"}.fa-user-md:before{content:\\\"\\\\f0f0\\\"}.fa-stethoscope:before{content:\\\"\\\\f0f1\\\"}.fa-suitcase:before{content:\\\"\\\\f0f2\\\"}.fa-bell-o:before{content:\\\"\\\\f0a2\\\"}.fa-coffee:before{content:\\\"\\\\f0f4\\\"}.fa-cutlery:before{content:\\\"\\\\f0f5\\\"}.fa-file-text-o:before{content:\\\"\\\\f0f6\\\"}.fa-building-o:before{content:\\\"\\\\f0f7\\\"}.fa-hospital-o:before{content:\\\"\\\\f0f8\\\"}.fa-ambulance:before{content:\\\"\\\\f0f9\\\"}.fa-medkit:before{content:\\\"\\\\f0fa\\\"}.fa-fighter-jet:before{content:\\\"\\\\f0fb\\\"}.fa-beer:before{content:\\\"\\\\f0fc\\\"}.fa-h-square:before{content:\\\"\\\\f0fd\\\"}.fa-plus-square:before{content:\\\"\\\\f0fe\\\"}.fa-angle-double-left:before{content:\\\"\\\\f100\\\"}.fa-angle-double-right:before{content:\\\"\\\\f101\\\"}.fa-angle-double-up:before{content:\\\"\\\\f102\\\"}.fa-angle-double-down:before{content:\\\"\\\\f103\\\"}.fa-angle-left:before{content:\\\"\\\\f104\\\"}.fa-angle-right:before{content:\\\"\\\\f105\\\"}.fa-angle-up:before{content:\\\"\\\\f106\\\"}.fa-angle-down:before{content:\\\"\\\\f107\\\"}.fa-desktop:before{content:\\\"\\\\f108\\\"}.fa-laptop:before{content:\\\"\\\\f109\\\"}.fa-tablet:before{content:\\\"\\\\f10a\\\"}.fa-mobile-phone:before,.fa-mobile:before{content:\\\"\\\\f10b\\\"}.fa-circle-o:before{content:\\\"\\\\f10c\\\"}.fa-quote-left:before{content:\\\"\\\\f10d\\\"}.fa-quote-right:before{content:\\\"\\\\f10e\\\"}.fa-spinner:before{content:\\\"\\\\f110\\\"}.fa-circle:before{content:\\\"\\\\f111\\\"}.fa-mail-reply:before,.fa-reply:before{content:\\\"\\\\f112\\\"}.fa-github-alt:before{content:\\\"\\\\f113\\\"}.fa-folder-o:before{content:\\\"\\\\f114\\\"}.fa-folder-open-o:before{content:\\\"\\\\f115\\\"}.fa-smile-o:before{content:\\\"\\\\f118\\\"}.fa-frown-o:before{content:\\\"\\\\f119\\\"}.fa-meh-o:before{content:\\\"\\\\f11a\\\"}.fa-gamepad:before{content:\\\"\\\\f11b\\\"}.fa-keyboard-o:before{content:\\\"\\\\f11c\\\"}.fa-flag-o:before{content:\\\"\\\\f11d\\\"}.fa-flag-checkered:before{content:\\\"\\\\f11e\\\"}.fa-terminal:before{content:\\\"\\\\f120\\\"}.fa-code:before{content:\\\"\\\\f121\\\"}.fa-mail-reply-all:before,.fa-reply-all:before{content:\\\"\\\\f122\\\"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:\\\"\\\\f123\\\"}.fa-location-arrow:before{content:\\\"\\\\f124\\\"}.fa-crop:before{content:\\\"\\\\f125\\\"}.fa-code-fork:before{content:\\\"\\\\f126\\\"}.fa-unlink:before,.fa-chain-broken:before{content:\\\"\\\\f127\\\"}.fa-question:before{content:\\\"\\\\f128\\\"}.fa-info:before{content:\\\"\\\\f129\\\"}.fa-exclamation:before{content:\\\"\\\\f12a\\\"}.fa-superscript:before{content:\\\"\\\\f12b\\\"}.fa-subscript:before{content:\\\"\\\\f12c\\\"}.fa-eraser:before{content:\\\"\\\\f12d\\\"}.fa-puzzle-piece:before{content:\\\"\\\\f12e\\\"}.fa-microphone:before{content:\\\"\\\\f130\\\"}.fa-microphone-slash:before{content:\\\"\\\\f131\\\"}.fa-shield:before{content:\\\"\\\\f132\\\"}.fa-calendar-o:before{content:\\\"\\\\f133\\\"}.fa-fire-extinguisher:before{content:\\\"\\\\f134\\\"}.fa-rocket:before{content:\\\"\\\\f135\\\"}.fa-maxcdn:before{content:\\\"\\\\f136\\\"}.fa-chevron-circle-left:before{content:\\\"\\\\f137\\\"}.fa-chevron-circle-right:before{content:\\\"\\\\f138\\\"}.fa-chevron-circle-up:before{content:\\\"\\\\f139\\\"}.fa-chevron-circle-down:before{content:\\\"\\\\f13a\\\"}.fa-html5:before{content:\\\"\\\\f13b\\\"}.fa-css3:before{content:\\\"\\\\f13c\\\"}.fa-anchor:before{content:\\\"\\\\f13d\\\"}.fa-unlock-alt:before{content:\\\"\\\\f13e\\\"}.fa-bullseye:before{content:\\\"\\\\f140\\\"}.fa-ellipsis-h:before{content:\\\"\\\\f141\\\"}.fa-ellipsis-v:before{content:\\\"\\\\f142\\\"}.fa-rss-square:before{content:\\\"\\\\f143\\\"}.fa-play-circle:before{content:\\\"\\\\f144\\\"}.fa-ticket:before{content:\\\"\\\\f145\\\"}.fa-minus-square:before{content:\\\"\\\\f146\\\"}.fa-minus-square-o:before{content:\\\"\\\\f147\\\"}.fa-level-up:before{content:\\\"\\\\f148\\\"}.fa-level-down:before{content:\\\"\\\\f149\\\"}.fa-check-square:before{content:\\\"\\\\f14a\\\"}.fa-pencil-square:before{content:\\\"\\\\f14b\\\"}.fa-external-link-square:before{content:\\\"\\\\f14c\\\"}.fa-share-square:before{content:\\\"\\\\f14d\\\"}.fa-compass:before{content:\\\"\\\\f14e\\\"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:\\\"\\\\f150\\\"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:\\\"\\\\f151\\\"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:\\\"\\\\f152\\\"}.fa-euro:before,.fa-eur:before{content:\\\"\\\\f153\\\"}.fa-gbp:before{content:\\\"\\\\f154\\\"}.fa-dollar:before,.fa-usd:before{content:\\\"\\\\f155\\\"}.fa-rupee:before,.fa-inr:before{content:\\\"\\\\f156\\\"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:\\\"\\\\f157\\\"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:\\\"\\\\f158\\\"}.fa-won:before,.fa-krw:before{content:\\\"\\\\f159\\\"}.fa-bitcoin:before,.fa-btc:before{content:\\\"\\\\f15a\\\"}.fa-file:before{content:\\\"\\\\f15b\\\"}.fa-file-text:before{content:\\\"\\\\f15c\\\"}.fa-sort-alpha-asc:before{content:\\\"\\\\f15d\\\"}.fa-sort-alpha-desc:before{content:\\\"\\\\f15e\\\"}.fa-sort-amount-asc:before{content:\\\"\\\\f160\\\"}.fa-sort-amount-desc:before{content:\\\"\\\\f161\\\"}.fa-sort-numeric-asc:before{content:\\\"\\\\f162\\\"}.fa-sort-numeric-desc:before{content:\\\"\\\\f163\\\"}.fa-thumbs-up:before{content:\\\"\\\\f164\\\"}.fa-thumbs-down:before{content:\\\"\\\\f165\\\"}.fa-youtube-square:before{content:\\\"\\\\f166\\\"}.fa-youtube:before{content:\\\"\\\\f167\\\"}.fa-xing:before{content:\\\"\\\\f168\\\"}.fa-xing-square:before{content:\\\"\\\\f169\\\"}.fa-youtube-play:before{content:\\\"\\\\f16a\\\"}.fa-dropbox:before{content:\\\"\\\\f16b\\\"}.fa-stack-overflow:before{content:\\\"\\\\f16c\\\"}.fa-instagram:before{content:\\\"\\\\f16d\\\"}.fa-flickr:before{content:\\\"\\\\f16e\\\"}.fa-adn:before{content:\\\"\\\\f170\\\"}.fa-bitbucket:before{content:\\\"\\\\f171\\\"}.fa-bitbucket-square:before{content:\\\"\\\\f172\\\"}.fa-tumblr:before{content:\\\"\\\\f173\\\"}.fa-tumblr-square:before{content:\\\"\\\\f174\\\"}.fa-long-arrow-down:before{content:\\\"\\\\f175\\\"}.fa-long-arrow-up:before{content:\\\"\\\\f176\\\"}.fa-long-arrow-left:before{content:\\\"\\\\f177\\\"}.fa-long-arrow-right:before{content:\\\"\\\\f178\\\"}.fa-apple:before{content:\\\"\\\\f179\\\"}.fa-windows:before{content:\\\"\\\\f17a\\\"}.fa-android:before{content:\\\"\\\\f17b\\\"}.fa-linux:before{content:\\\"\\\\f17c\\\"}.fa-dribbble:before{content:\\\"\\\\f17d\\\"}.fa-skype:before{content:\\\"\\\\f17e\\\"}.fa-foursquare:before{content:\\\"\\\\f180\\\"}.fa-trello:before{content:\\\"\\\\f181\\\"}.fa-female:before{content:\\\"\\\\f182\\\"}.fa-male:before{content:\\\"\\\\f183\\\"}.fa-gittip:before,.fa-gratipay:before{content:\\\"\\\\f184\\\"}.fa-sun-o:before{content:\\\"\\\\f185\\\"}.fa-moon-o:before{content:\\\"\\\\f186\\\"}.fa-archive:before{content:\\\"\\\\f187\\\"}.fa-bug:before{content:\\\"\\\\f188\\\"}.fa-vk:before{content:\\\"\\\\f189\\\"}.fa-weibo:before{content:\\\"\\\\f18a\\\"}.fa-renren:before{content:\\\"\\\\f18b\\\"}.fa-pagelines:before{content:\\\"\\\\f18c\\\"}.fa-stack-exchange:before{content:\\\"\\\\f18d\\\"}.fa-arrow-circle-o-right:before{content:\\\"\\\\f18e\\\"}.fa-arrow-circle-o-left:before{content:\\\"\\\\f190\\\"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:\\\"\\\\f191\\\"}.fa-dot-circle-o:before{content:\\\"\\\\f192\\\"}.fa-wheelchair:before{content:\\\"\\\\f193\\\"}.fa-vimeo-square:before{content:\\\"\\\\f194\\\"}.fa-turkish-lira:before,.fa-try:before{content:\\\"\\\\f195\\\"}.fa-plus-square-o:before{content:\\\"\\\\f196\\\"}.fa-space-shuttle:before{content:\\\"\\\\f197\\\"}.fa-slack:before{content:\\\"\\\\f198\\\"}.fa-envelope-square:before{content:\\\"\\\\f199\\\"}.fa-wordpress:before{content:\\\"\\\\f19a\\\"}.fa-openid:before{content:\\\"\\\\f19b\\\"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:\\\"\\\\f19c\\\"}.fa-mortar-board:before,.fa-graduation-cap:before{content:\\\"\\\\f19d\\\"}.fa-yahoo:before{content:\\\"\\\\f19e\\\"}.fa-google:before{content:\\\"\\\\f1a0\\\"}.fa-reddit:before{content:\\\"\\\\f1a1\\\"}.fa-reddit-square:before{content:\\\"\\\\f1a2\\\"}.fa-stumbleupon-circle:before{content:\\\"\\\\f1a3\\\"}.fa-stumbleupon:before{content:\\\"\\\\f1a4\\\"}.fa-delicious:before{content:\\\"\\\\f1a5\\\"}.fa-digg:before{content:\\\"\\\\f1a6\\\"}.fa-pied-piper-pp:before{content:\\\"\\\\f1a7\\\"}.fa-pied-piper-alt:before{content:\\\"\\\\f1a8\\\"}.fa-drupal:before{content:\\\"\\\\f1a9\\\"}.fa-joomla:before{content:\\\"\\\\f1aa\\\"}.fa-language:before{content:\\\"\\\\f1ab\\\"}.fa-fax:before{content:\\\"\\\\f1ac\\\"}.fa-building:before{content:\\\"\\\\f1ad\\\"}.fa-child:before{content:\\\"\\\\f1ae\\\"}.fa-paw:before{content:\\\"\\\\f1b0\\\"}.fa-spoon:before{content:\\\"\\\\f1b1\\\"}.fa-cube:before{content:\\\"\\\\f1b2\\\"}.fa-cubes:before{content:\\\"\\\\f1b3\\\"}.fa-behance:before{content:\\\"\\\\f1b4\\\"}.fa-behance-square:before{content:\\\"\\\\f1b5\\\"}.fa-steam:before{content:\\\"\\\\f1b6\\\"}.fa-steam-square:before{content:\\\"\\\\f1b7\\\"}.fa-recycle:before{content:\\\"\\\\f1b8\\\"}.fa-automobile:before,.fa-car:before{content:\\\"\\\\f1b9\\\"}.fa-cab:before,.fa-taxi:before{content:\\\"\\\\f1ba\\\"}.fa-tree:before{content:\\\"\\\\f1bb\\\"}.fa-spotify:before{content:\\\"\\\\f1bc\\\"}.fa-deviantart:before{content:\\\"\\\\f1bd\\\"}.fa-soundcloud:before{content:\\\"\\\\f1be\\\"}.fa-database:before{content:\\\"\\\\f1c0\\\"}.fa-file-pdf-o:before{content:\\\"\\\\f1c1\\\"}.fa-file-word-o:before{content:\\\"\\\\f1c2\\\"}.fa-file-excel-o:before{content:\\\"\\\\f1c3\\\"}.fa-file-powerpoint-o:before{content:\\\"\\\\f1c4\\\"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:\\\"\\\\f1c5\\\"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:\\\"\\\\f1c6\\\"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:\\\"\\\\f1c7\\\"}.fa-file-movie-o:before,.fa-file-video-o:before{content:\\\"\\\\f1c8\\\"}.fa-file-code-o:before{content:\\\"\\\\f1c9\\\"}.fa-vine:before{content:\\\"\\\\f1ca\\\"}.fa-codepen:before{content:\\\"\\\\f1cb\\\"}.fa-jsfiddle:before{content:\\\"\\\\f1cc\\\"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:\\\"\\\\f1cd\\\"}.fa-circle-o-notch:before{content:\\\"\\\\f1ce\\\"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:\\\"\\\\f1d0\\\"}.fa-ge:before,.fa-empire:before{content:\\\"\\\\f1d1\\\"}.fa-git-square:before{content:\\\"\\\\f1d2\\\"}.fa-git:before{content:\\\"\\\\f1d3\\\"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:\\\"\\\\f1d4\\\"}.fa-tencent-weibo:before{content:\\\"\\\\f1d5\\\"}.fa-qq:before{content:\\\"\\\\f1d6\\\"}.fa-wechat:before,.fa-weixin:before{content:\\\"\\\\f1d7\\\"}.fa-send:before,.fa-paper-plane:before{content:\\\"\\\\f1d8\\\"}.fa-send-o:before,.fa-paper-plane-o:before{content:\\\"\\\\f1d9\\\"}.fa-history:before{content:\\\"\\\\f1da\\\"}.fa-circle-thin:before{content:\\\"\\\\f1db\\\"}.fa-header:before{content:\\\"\\\\f1dc\\\"}.fa-paragraph:before{content:\\\"\\\\f1dd\\\"}.fa-sliders:before{content:\\\"\\\\f1de\\\"}.fa-share-alt:before{content:\\\"\\\\f1e0\\\"}.fa-share-alt-square:before{content:\\\"\\\\f1e1\\\"}.fa-bomb:before{content:\\\"\\\\f1e2\\\"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:\\\"\\\\f1e3\\\"}.fa-tty:before{content:\\\"\\\\f1e4\\\"}.fa-binoculars:before{content:\\\"\\\\f1e5\\\"}.fa-plug:before{content:\\\"\\\\f1e6\\\"}.fa-slideshare:before{content:\\\"\\\\f1e7\\\"}.fa-twitch:before{content:\\\"\\\\f1e8\\\"}.fa-yelp:before{content:\\\"\\\\f1e9\\\"}.fa-newspaper-o:before{content:\\\"\\\\f1ea\\\"}.fa-wifi:before{content:\\\"\\\\f1eb\\\"}.fa-calculator:before{content:\\\"\\\\f1ec\\\"}.fa-paypal:before{content:\\\"\\\\f1ed\\\"}.fa-google-wallet:before{content:\\\"\\\\f1ee\\\"}.fa-cc-visa:before{content:\\\"\\\\f1f0\\\"}.fa-cc-mastercard:before{content:\\\"\\\\f1f1\\\"}.fa-cc-discover:before{content:\\\"\\\\f1f2\\\"}.fa-cc-amex:before{content:\\\"\\\\f1f3\\\"}.fa-cc-paypal:before{content:\\\"\\\\f1f4\\\"}.fa-cc-stripe:before{content:\\\"\\\\f1f5\\\"}.fa-bell-slash:before{content:\\\"\\\\f1f6\\\"}.fa-bell-slash-o:before{content:\\\"\\\\f1f7\\\"}.fa-trash:before{content:\\\"\\\\f1f8\\\"}.fa-copyright:before{content:\\\"\\\\f1f9\\\"}.fa-at:before{content:\\\"\\\\f1fa\\\"}.fa-eyedropper:before{content:\\\"\\\\f1fb\\\"}.fa-paint-brush:before{content:\\\"\\\\f1fc\\\"}.fa-birthday-cake:before{content:\\\"\\\\f1fd\\\"}.fa-area-chart:before{content:\\\"\\\\f1fe\\\"}.fa-pie-chart:before{content:\\\"\\\\f200\\\"}.fa-line-chart:before{content:\\\"\\\\f201\\\"}.fa-lastfm:before{content:\\\"\\\\f202\\\"}.fa-lastfm-square:before{content:\\\"\\\\f203\\\"}.fa-toggle-off:before{content:\\\"\\\\f204\\\"}.fa-toggle-on:before{content:\\\"\\\\f205\\\"}.fa-bicycle:before{content:\\\"\\\\f206\\\"}.fa-bus:before{content:\\\"\\\\f207\\\"}.fa-ioxhost:before{content:\\\"\\\\f208\\\"}.fa-angellist:before{content:\\\"\\\\f209\\\"}.fa-cc:before{content:\\\"\\\\f20a\\\"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:\\\"\\\\f20b\\\"}.fa-meanpath:before{content:\\\"\\\\f20c\\\"}.fa-buysellads:before{content:\\\"\\\\f20d\\\"}.fa-connectdevelop:before{content:\\\"\\\\f20e\\\"}.fa-dashcube:before{content:\\\"\\\\f210\\\"}.fa-forumbee:before{content:\\\"\\\\f211\\\"}.fa-leanpub:before{content:\\\"\\\\f212\\\"}.fa-sellsy:before{content:\\\"\\\\f213\\\"}.fa-shirtsinbulk:before{content:\\\"\\\\f214\\\"}.fa-simplybuilt:before{content:\\\"\\\\f215\\\"}.fa-skyatlas:before{content:\\\"\\\\f216\\\"}.fa-cart-plus:before{content:\\\"\\\\f217\\\"}.fa-cart-arrow-down:before{content:\\\"\\\\f218\\\"}.fa-diamond:before{content:\\\"\\\\f219\\\"}.fa-ship:before{content:\\\"\\\\f21a\\\"}.fa-user-secret:before{content:\\\"\\\\f21b\\\"}.fa-motorcycle:before{content:\\\"\\\\f21c\\\"}.fa-street-view:before{content:\\\"\\\\f21d\\\"}.fa-heartbeat:before{content:\\\"\\\\f21e\\\"}.fa-venus:before{content:\\\"\\\\f221\\\"}.fa-mars:before{content:\\\"\\\\f222\\\"}.fa-mercury:before{content:\\\"\\\\f223\\\"}.fa-intersex:before,.fa-transgender:before{content:\\\"\\\\f224\\\"}.fa-transgender-alt:before{content:\\\"\\\\f225\\\"}.fa-venus-double:before{content:\\\"\\\\f226\\\"}.fa-mars-double:before{content:\\\"\\\\f227\\\"}.fa-venus-mars:before{content:\\\"\\\\f228\\\"}.fa-mars-stroke:before{content:\\\"\\\\f229\\\"}.fa-mars-stroke-v:before{content:\\\"\\\\f22a\\\"}.fa-mars-stroke-h:before{content:\\\"\\\\f22b\\\"}.fa-neuter:before{content:\\\"\\\\f22c\\\"}.fa-genderless:before{content:\\\"\\\\f22d\\\"}.fa-facebook-official:before{content:\\\"\\\\f230\\\"}.fa-pinterest-p:before{content:\\\"\\\\f231\\\"}.fa-whatsapp:before{content:\\\"\\\\f232\\\"}.fa-server:before{content:\\\"\\\\f233\\\"}.fa-user-plus:before{content:\\\"\\\\f234\\\"}.fa-user-times:before{content:\\\"\\\\f235\\\"}.fa-hotel:before,.fa-bed:before{content:\\\"\\\\f236\\\"}.fa-viacoin:before{content:\\\"\\\\f237\\\"}.fa-train:before{content:\\\"\\\\f238\\\"}.fa-subway:before{content:\\\"\\\\f239\\\"}.fa-medium:before{content:\\\"\\\\f23a\\\"}.fa-yc:before,.fa-y-combinator:before{content:\\\"\\\\f23b\\\"}.fa-optin-monster:before{content:\\\"\\\\f23c\\\"}.fa-opencart:before{content:\\\"\\\\f23d\\\"}.fa-expeditedssl:before{content:\\\"\\\\f23e\\\"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:\\\"\\\\f240\\\"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:\\\"\\\\f241\\\"}.fa-battery-2:before,.fa-battery-half:before{content:\\\"\\\\f242\\\"}.fa-battery-1:before,.fa-battery-quarter:before{content:\\\"\\\\f243\\\"}.fa-battery-0:before,.fa-battery-empty:before{content:\\\"\\\\f244\\\"}.fa-mouse-pointer:before{content:\\\"\\\\f245\\\"}.fa-i-cursor:before{content:\\\"\\\\f246\\\"}.fa-object-group:before{content:\\\"\\\\f247\\\"}.fa-object-ungroup:before{content:\\\"\\\\f248\\\"}.fa-sticky-note:before{content:\\\"\\\\f249\\\"}.fa-sticky-note-o:before{content:\\\"\\\\f24a\\\"}.fa-cc-jcb:before{content:\\\"\\\\f24b\\\"}.fa-cc-diners-club:before{content:\\\"\\\\f24c\\\"}.fa-clone:before{content:\\\"\\\\f24d\\\"}.fa-balance-scale:before{content:\\\"\\\\f24e\\\"}.fa-hourglass-o:before{content:\\\"\\\\f250\\\"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:\\\"\\\\f251\\\"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:\\\"\\\\f252\\\"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:\\\"\\\\f253\\\"}.fa-hourglass:before{content:\\\"\\\\f254\\\"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:\\\"\\\\f255\\\"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:\\\"\\\\f256\\\"}.fa-hand-scissors-o:before{content:\\\"\\\\f257\\\"}.fa-hand-lizard-o:before{content:\\\"\\\\f258\\\"}.fa-hand-spock-o:before{content:\\\"\\\\f259\\\"}.fa-hand-pointer-o:before{content:\\\"\\\\f25a\\\"}.fa-hand-peace-o:before{content:\\\"\\\\f25b\\\"}.fa-trademark:before{content:\\\"\\\\f25c\\\"}.fa-registered:before{content:\\\"\\\\f25d\\\"}.fa-creative-commons:before{content:\\\"\\\\f25e\\\"}.fa-gg:before{content:\\\"\\\\f260\\\"}.fa-gg-circle:before{content:\\\"\\\\f261\\\"}.fa-tripadvisor:before{content:\\\"\\\\f262\\\"}.fa-odnoklassniki:before{content:\\\"\\\\f263\\\"}.fa-odnoklassniki-square:before{content:\\\"\\\\f264\\\"}.fa-get-pocket:before{content:\\\"\\\\f265\\\"}.fa-wikipedia-w:before{content:\\\"\\\\f266\\\"}.fa-safari:before{content:\\\"\\\\f267\\\"}.fa-chrome:before{content:\\\"\\\\f268\\\"}.fa-firefox:before{content:\\\"\\\\f269\\\"}.fa-opera:before{content:\\\"\\\\f26a\\\"}.fa-internet-explorer:before{content:\\\"\\\\f26b\\\"}.fa-tv:before,.fa-television:before{content:\\\"\\\\f26c\\\"}.fa-contao:before{content:\\\"\\\\f26d\\\"}.fa-500px:before{content:\\\"\\\\f26e\\\"}.fa-amazon:before{content:\\\"\\\\f270\\\"}.fa-calendar-plus-o:before{content:\\\"\\\\f271\\\"}.fa-calendar-minus-o:before{content:\\\"\\\\f272\\\"}.fa-calendar-times-o:before{content:\\\"\\\\f273\\\"}.fa-calendar-check-o:before{content:\\\"\\\\f274\\\"}.fa-industry:before{content:\\\"\\\\f275\\\"}.fa-map-pin:before{content:\\\"\\\\f276\\\"}.fa-map-signs:before{content:\\\"\\\\f277\\\"}.fa-map-o:before{content:\\\"\\\\f278\\\"}.fa-map:before{content:\\\"\\\\f279\\\"}.fa-commenting:before{content:\\\"\\\\f27a\\\"}.fa-commenting-o:before{content:\\\"\\\\f27b\\\"}.fa-houzz:before{content:\\\"\\\\f27c\\\"}.fa-vimeo:before{content:\\\"\\\\f27d\\\"}.fa-black-tie:before{content:\\\"\\\\f27e\\\"}.fa-fonticons:before{content:\\\"\\\\f280\\\"}.fa-reddit-alien:before{content:\\\"\\\\f281\\\"}.fa-edge:before{content:\\\"\\\\f282\\\"}.fa-credit-card-alt:before{content:\\\"\\\\f283\\\"}.fa-codiepie:before{content:\\\"\\\\f284\\\"}.fa-modx:before{content:\\\"\\\\f285\\\"}.fa-fort-awesome:before{content:\\\"\\\\f286\\\"}.fa-usb:before{content:\\\"\\\\f287\\\"}.fa-product-hunt:before{content:\\\"\\\\f288\\\"}.fa-mixcloud:before{content:\\\"\\\\f289\\\"}.fa-scribd:before{content:\\\"\\\\f28a\\\"}.fa-pause-circle:before{content:\\\"\\\\f28b\\\"}.fa-pause-circle-o:before{content:\\\"\\\\f28c\\\"}.fa-stop-circle:before{content:\\\"\\\\f28d\\\"}.fa-stop-circle-o:before{content:\\\"\\\\f28e\\\"}.fa-shopping-bag:before{content:\\\"\\\\f290\\\"}.fa-shopping-basket:before{content:\\\"\\\\f291\\\"}.fa-hashtag:before{content:\\\"\\\\f292\\\"}.fa-bluetooth:before{content:\\\"\\\\f293\\\"}.fa-bluetooth-b:before{content:\\\"\\\\f294\\\"}.fa-percent:before{content:\\\"\\\\f295\\\"}.fa-gitlab:before{content:\\\"\\\\f296\\\"}.fa-wpbeginner:before{content:\\\"\\\\f297\\\"}.fa-wpforms:before{content:\\\"\\\\f298\\\"}.fa-envira:before{content:\\\"\\\\f299\\\"}.fa-universal-access:before{content:\\\"\\\\f29a\\\"}.fa-wheelchair-alt:before{content:\\\"\\\\f29b\\\"}.fa-question-circle-o:before{content:\\\"\\\\f29c\\\"}.fa-blind:before{content:\\\"\\\\f29d\\\"}.fa-audio-description:before{content:\\\"\\\\f29e\\\"}.fa-volume-control-phone:before{content:\\\"\\\\f2a0\\\"}.fa-braille:before{content:\\\"\\\\f2a1\\\"}.fa-assistive-listening-systems:before{content:\\\"\\\\f2a2\\\"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:\\\"\\\\f2a3\\\"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:\\\"\\\\f2a4\\\"}.fa-glide:before{content:\\\"\\\\f2a5\\\"}.fa-glide-g:before{content:\\\"\\\\f2a6\\\"}.fa-signing:before,.fa-sign-language:before{content:\\\"\\\\f2a7\\\"}.fa-low-vision:before{content:\\\"\\\\f2a8\\\"}.fa-viadeo:before{content:\\\"\\\\f2a9\\\"}.fa-viadeo-square:before{content:\\\"\\\\f2aa\\\"}.fa-snapchat:before{content:\\\"\\\\f2ab\\\"}.fa-snapchat-ghost:before{content:\\\"\\\\f2ac\\\"}.fa-snapchat-square:before{content:\\\"\\\\f2ad\\\"}.fa-pied-piper:before{content:\\\"\\\\f2ae\\\"}.fa-first-order:before{content:\\\"\\\\f2b0\\\"}.fa-yoast:before{content:\\\"\\\\f2b1\\\"}.fa-themeisle:before{content:\\\"\\\\f2b2\\\"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:\\\"\\\\f2b3\\\"}.fa-fa:before,.fa-font-awesome:before{content:\\\"\\\\f2b4\\\"}.fa-handshake-o:before{content:\\\"\\\\f2b5\\\"}.fa-envelope-open:before{content:\\\"\\\\f2b6\\\"}.fa-envelope-open-o:before{content:\\\"\\\\f2b7\\\"}.fa-linode:before{content:\\\"\\\\f2b8\\\"}.fa-address-book:before{content:\\\"\\\\f2b9\\\"}.fa-address-book-o:before{content:\\\"\\\\f2ba\\\"}.fa-vcard:before,.fa-address-card:before{content:\\\"\\\\f2bb\\\"}.fa-vcard-o:before,.fa-address-card-o:before{content:\\\"\\\\f2bc\\\"}.fa-user-circle:before{content:\\\"\\\\f2bd\\\"}.fa-user-circle-o:before{content:\\\"\\\\f2be\\\"}.fa-user-o:before{content:\\\"\\\\f2c0\\\"}.fa-id-badge:before{content:\\\"\\\\f2c1\\\"}.fa-drivers-license:before,.fa-id-card:before{content:\\\"\\\\f2c2\\\"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:\\\"\\\\f2c3\\\"}.fa-quora:before{content:\\\"\\\\f2c4\\\"}.fa-free-code-camp:before{content:\\\"\\\\f2c5\\\"}.fa-telegram:before{content:\\\"\\\\f2c6\\\"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:\\\"\\\\f2c7\\\"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:\\\"\\\\f2c8\\\"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:\\\"\\\\f2c9\\\"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:\\\"\\\\f2ca\\\"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:\\\"\\\\f2cb\\\"}.fa-shower:before{content:\\\"\\\\f2cc\\\"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:\\\"\\\\f2cd\\\"}.fa-podcast:before{content:\\\"\\\\f2ce\\\"}.fa-window-maximize:before{content:\\\"\\\\f2d0\\\"}.fa-window-minimize:before{content:\\\"\\\\f2d1\\\"}.fa-window-restore:before{content:\\\"\\\\f2d2\\\"}.fa-times-rectangle:before,.fa-window-close:before{content:\\\"\\\\f2d3\\\"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:\\\"\\\\f2d4\\\"}.fa-bandcamp:before{content:\\\"\\\\f2d5\\\"}.fa-grav:before{content:\\\"\\\\f2d6\\\"}.fa-etsy:before{content:\\\"\\\\f2d7\\\"}.fa-imdb:before{content:\\\"\\\\f2d8\\\"}.fa-ravelry:before{content:\\\"\\\\f2d9\\\"}.fa-eercast:before{content:\\\"\\\\f2da\\\"}.fa-microchip:before{content:\\\"\\\\f2db\\\"}.fa-snowflake-o:before{content:\\\"\\\\f2dc\\\"}.fa-superpowers:before{content:\\\"\\\\f2dd\\\"}.fa-wpexplorer:before{content:\\\"\\\\f2de\\\"}.fa-meetup:before{content:\\\"\\\\f2e0\\\"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}a{cursor:pointer}.angular-editor-textarea{min-height:150px;overflow:auto;margin-top:5px;resize:vertical}.angular-editor-textarea:after{content:\\\"\\\";position:absolute;bottom:0;right:0;display:block;width:8px;height:8px;cursor:nwse-resize;background-color:#ffffff80}.angular-editor-toolbar{font:100 14px/15px Roboto,Arial,sans-serif;background-color:#f5f5f5;font-size:.8rem;padding:.2rem;border:1px solid #ddd}.angular-editor-toolbar .angular-editor-toolbar-set{display:none;margin-right:5px;vertical-align:baseline}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button{background-color:#fff;vertical-align:middle;border:1px solid #ddd;padding:.4rem;min-width:2rem;float:left}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:focus,.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.focus{outline:0}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label{pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.foreground :after{background:#555555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.background{background:#555555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active{background:#fff5b9}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active:hover{background-color:#fffa98}.angular-editor-toolbar .angular-editor-toolbar-set select{font-size:11px;width:90px;vertical-align:middle;background-color:transparent;border:.5px solid rgba(255,255,255,0);border-radius:5px;outline:none;padding:.4rem;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-heading optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .default{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h1{font-size:24px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h2{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h3{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h4{font-size:15px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h5{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h6{font-size:13px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .div,.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .pre{font-size:12px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size{display:inline-block;width:50px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size1{font-size:10px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size2{font-size:12px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size3{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size4{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size5{font-size:18px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size6{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size7{font-size:22px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .color-label{position:relative;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .background{font-size:smaller;background:#1b1b1b;color:#fff;padding:3px}.angular-editor-toolbar .angular-editor-toolbar-set .foreground :after{position:absolute;content:\\\"\\\";left:-1px;top:auto;bottom:-3px;right:auto;width:15px;height:2px;z-index:0;background:#1b1b1b}.angular-editor-toolbar .angular-editor-toolbar-set:not([style*=\\\"display:none\\\"]):not([style*=\\\"display: none\\\"]){display:inline-block}.select-button{display:inline-block}.select-button.disabled{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}\\n\"], components: [{ type: AeSelectComponent, selector: \"ae-select\", inputs: [\"options\", \"hidden\"], outputs: [\"change\"] }], directives: [{ type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i4.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i4.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: AngularEditorToolbarComponent, decorators: [{\n type: Component,\n args: [{ selector: 'angular-editor-toolbar', template: \"<div class=\\\"angular-editor-toolbar\\\" *ngIf=\\\"showToolbar\\\">\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <button type=\\\"button\\\" title=\\\"Undo\\\" class=\\\"angular-editor-button\\\" (click)=\\\"triggerCommand('undo')\\\"\\n [hidden]=\\\"isButtonHidden('undo')\\\" tabindex=\\\"-1\\\"><i\\n class='fa fa-undo'></i></button>\\n <button type=\\\"button\\\" title=\\\"Redo\\\" class=\\\"angular-editor-button\\\" (click)=\\\"triggerCommand('redo')\\\"\\n [hidden]=\\\"isButtonHidden('redo')\\\" tabindex=\\\"-1\\\"><i\\n class='fa fa-repeat'></i></button>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <button [id]=\\\"'bold-'+id\\\" type=\\\"button\\\" title=\\\"Bold\\\" class=\\\"angular-editor-button\\\" (click)=\\\"triggerCommand('bold')\\\"\\n [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('bold')\\\" tabindex=\\\"-1\\\"><i class='fa fa-bold'></i></button>\\n <button [id]=\\\"'italic-'+id\\\" type=\\\"button\\\" title=\\\"Italic\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('italic')\\\"\\n [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('italic')\\\" tabindex=\\\"-1\\\"><i class='fa fa-italic'></i>\\n </button>\\n <button [id]=\\\"'underline-'+id\\\" type=\\\"button\\\" title=\\\"Underline\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('underline')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('underline')\\\"\\n tabindex=\\\"-1\\\"><i class='fa fa-underline'></i></button>\\n <button [id]=\\\"'strikeThrough-'+id\\\" type=\\\"button\\\" title=\\\"Strikethrough\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('strikeThrough')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('strikeThrough')\\\"\\n tabindex=\\\"-1\\\"><i class='fa fa-strikethrough'></i></button>\\n <button [id]=\\\"'subscript-'+id\\\" type=\\\"button\\\" title=\\\"Subscript\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('subscript')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('subscript')\\\"\\n tabindex=\\\"-1\\\"><i class='fa fa-subscript'></i></button>\\n <button [id]=\\\"'superscript-'+id\\\" type=\\\"button\\\" title=\\\"Superscript\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('superscript')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('superscript')\\\"\\n tabindex=\\\"-1\\\"><i class='fa fa-superscript'></i></button>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <button [id]=\\\"'justifyLeft-'+id\\\" type=\\\"button\\\" title=\\\"Justify Left\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('justifyLeft')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('justifyLeft')\\\"\\n tabindex=\\\"-1\\\"><i\\n class='fa fa-align-left'></i></button>\\n <button [id]=\\\"'justifyCenter-'+id\\\" type=\\\"button\\\" title=\\\"Justify Center\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('justifyCenter')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('justifyCenter')\\\"\\n tabindex=\\\"-1\\\"><i\\n class='fa fa-align-center'></i></button>\\n <button [id]=\\\"'justifyRight-'+id\\\" type=\\\"button\\\" title=\\\"Justify Right\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('justifyRight')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('justifyRight')\\\"\\n tabindex=\\\"-1\\\">\\n <i class='fa fa-align-right'></i></button>\\n <button [id]=\\\"'justifyFull-'+id\\\" type=\\\"button\\\" title=\\\"Justify Full\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('justifyFull')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('justifyFull')\\\"\\n tabindex=\\\"-1\\\"><i\\n class='fa fa-align-justify'></i></button>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <button [id]=\\\"'indent-'+id\\\" type=\\\"button\\\" title=\\\"Indent\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('indent')\\\"\\n [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('indent')\\\" tabindex=\\\"-1\\\"><i\\n class='fa fa-indent'></i></button>\\n <button [id]=\\\"'outdent-'+id\\\" type=\\\"button\\\" title=\\\"Outdent\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('outdent')\\\"\\n [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('outdent')\\\" tabindex=\\\"-1\\\"><i\\n class='fa fa-outdent'></i></button>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <button [id]=\\\"'insertUnorderedList-'+id\\\" type=\\\"button\\\" title=\\\"Unordered List\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('insertUnorderedList')\\\" [disabled]=\\\"htmlMode\\\"\\n [hidden]=\\\"isButtonHidden('insertUnorderedList')\\\" tabindex=\\\"-1\\\"><i\\n class='fa fa-list-ul'></i></button>\\n <button [id]=\\\"'insertOrderedList-'+id\\\" type=\\\"button\\\" title=\\\"Ordered List\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('insertOrderedList')\\\" [disabled]=\\\"htmlMode\\\"\\n [hidden]=\\\"isButtonHidden('insertOrderedList')\\\" tabindex=\\\"-1\\\"><i\\n class='fa fa-list-ol'></i></button>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n\\n <ae-select class=\\\"select-heading\\\" [options]=\\\"headings\\\"\\n [(ngModel)]=\\\"block\\\"\\n (change)=\\\"triggerCommand(block)\\\"\\n [disabled]=\\\"htmlMode\\\"\\n [hidden]=\\\"isButtonHidden('heading')\\\"\\n tabindex=\\\"-1\\\"></ae-select>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n\\n <ae-select class=\\\"select-font\\\" [options]=\\\"fonts\\\"\\n [(ngModel)]=\\\"fontName\\\"\\n (change)=\\\"setFontName(fontName)\\\"\\n [disabled]=\\\"htmlMode\\\"\\n [hidden]=\\\"isButtonHidden('fontName')\\\"\\n tabindex=\\\"-1\\\"></ae-select>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n\\n <ae-select class=\\\"select-font-size\\\" [options]=\\\"fontSizes\\\"\\n [(ngModel)]=\\\"fontSize\\\"\\n (change)=\\\"setFontSize(fontSize)\\\"\\n [disabled]=\\\"htmlMode\\\"\\n [hidden]=\\\"isButtonHidden('fontSize')\\\"\\n tabindex=\\\"-1\\\">\\n </ae-select>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <input\\n style=\\\"display: none\\\"\\n type=\\\"color\\\" (change)=\\\"insertColor(fgInput.value, 'textColor')\\\"\\n #fgInput>\\n <button [id]=\\\"'foregroundColorPicker-'+id\\\" type=\\\"button\\\" class=\\\"angular-editor-button\\\" (click)=\\\"focus(); ; fgInput.click()\\\"\\n title=\\\"Text Color\\\"\\n [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('textColor')\\\" tabindex=\\\"-1\\\"><span\\n class=\\\"color-label foreground\\\"><i class=\\\"fa fa-font\\\"></i></span>\\n </button>\\n <input\\n style=\\\"display: none\\\"\\n type=\\\"color\\\" (change)=\\\"insertColor(bgInput.value, 'backgroundColor')\\\"\\n #bgInput>\\n <button [id]=\\\"'backgroundColorPicker-'+id\\\" type=\\\"button\\\" class=\\\"angular-editor-button\\\" (click)=\\\"focus(); ; bgInput.click()\\\"\\n title=\\\"Background Color\\\"\\n [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('backgroundColor')\\\" tabindex=\\\"-1\\\"><span\\n class=\\\"color-label background\\\"><i class=\\\"fa fa-font\\\"></i></span>\\n </button>\\n </div>\\n <div *ngIf=\\\"_customClasses\\\" class=\\\"angular-editor-toolbar-set\\\">\\n <ae-select class=\\\"select-custom-style\\\" [options]=\\\"customClassList\\\"\\n [(ngModel)]=\\\"customClassId\\\"\\n (change)=\\\"setCustomClass(customClassId)\\\"\\n [disabled]=\\\"htmlMode\\\"\\n [hidden]=\\\"isButtonHidden('customClasses')\\\"\\n tabindex=\\\"-1\\\"></ae-select>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <button [id]=\\\"'link-'+id\\\" type=\\\"button\\\" class=\\\"angular-editor-button\\\" (click)=\\\"insertUrl()\\\"\\n title=\\\"Insert Link\\\" [disabled]=\\\"isLinkButtonDisabled\\\" [hidden]=\\\"isButtonHidden('link')\\\" tabindex=\\\"-1\\\">\\n <i class=\\\"fa fa-link\\\"></i>\\n </button>\\n <button [id]=\\\"'unlink-'+id\\\" type=\\\"button\\\" class=\\\"angular-editor-button\\\" (click)=\\\"triggerCommand('unlink')\\\"\\n title=\\\"Unlink\\\" [disabled]=\\\"htmlMode || !linkSelected\\\" [hidden]=\\\"isButtonHidden('unlink')\\\" tabindex=\\\"-1\\\">\\n <i class=\\\"fa fa-chain-broken\\\"></i>\\n </button>\\n <input\\n style=\\\"display: none\\\"\\n accept=\\\"image/*\\\"\\n type=\\\"file\\\" (change)=\\\"onFileChanged($event)\\\"\\n #fileInput>\\n <button [id]=\\\"'insertImage-'+id\\\" type=\\\"button\\\" class=\\\"angular-editor-button\\\" (click)=\\\"focus(); fileInput.click()\\\"\\n title=\\\"Insert Image\\\"\\n [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('insertImage')\\\" tabindex=\\\"-1\\\"><i class=\\\"fa fa-image\\\"></i>\\n </button>\\n <button [id]=\\\"'insertVideo-'+id\\\" type=\\\"button\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"insertVideo()\\\" title=\\\"Insert Video\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('insertVideo')\\\"\\n tabindex=\\\"-1\\\"><i\\n class=\\\"fa fa-video-camera\\\"></i></button>\\n <button [id]=\\\"'insertHorizontalRule-'+id\\\" type=\\\"button\\\" title=\\\"Horizontal Line\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('insertHorizontalRule')\\\" [disabled]=\\\"htmlMode\\\"\\n [hidden]=\\\"isButtonHidden('insertHorizontalRule')\\\" tabindex=\\\"-1\\\"><i\\n class=\\\"fa fa-minus\\\"></i></button>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <button [id]=\\\"'clearFormatting-'+id\\\" type=\\\"button\\\" title=\\\"Clear Formatting\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('removeFormat')\\\" [disabled]=\\\"htmlMode\\\" [hidden]=\\\"isButtonHidden('removeFormat')\\\"\\n tabindex=\\\"-1\\\"><i class='fa fa-remove'></i>\\n </button>\\n </div>\\n <div class=\\\"angular-editor-toolbar-set\\\">\\n <button [id]=\\\"'toggleEditorMode-'+id\\\" type=\\\"button\\\" title=\\\"HTML Code\\\" class=\\\"angular-editor-button\\\"\\n (click)=\\\"triggerCommand('toggleEditorMode')\\\" [hidden]=\\\"isButtonHidden('toggleEditorMode')\\\" tabindex=\\\"-1\\\"><i\\n class='fa fa-code'></i></button>\\n </div>\\n</div>\\n\", styles: [\"/*!\\n * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\\n */@font-face{font-family:FontAwesome;src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0);src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format(\\\"embedded-opentype\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0) format(\\\"woff2\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0) format(\\\"woff\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0) format(\\\"truetype\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format(\\\"svg\\\");font-weight:400;font-style:normal}.fa{display:inline-block;font: 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";transform:scaleY(-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:\\\"\\\\f000\\\"}.fa-music:before{content:\\\"\\\\f001\\\"}.fa-search:before{content:\\\"\\\\f002\\\"}.fa-envelope-o:before{content:\\\"\\\\f003\\\"}.fa-heart:before{content:\\\"\\\\f004\\\"}.fa-star:before{content:\\\"\\\\f005\\\"}.fa-star-o:before{content:\\\"\\\\f006\\\"}.fa-user:before{content:\\\"\\\\f007\\\"}.fa-film:before{content:\\\"\\\\f008\\\"}.fa-th-large:before{content:\\\"\\\\f009\\\"}.fa-th:before{content:\\\"\\\\f00a\\\"}.fa-th-list:before{content:\\\"\\\\f00b\\\"}.fa-check:before{content:\\\"\\\\f00c\\\"}.fa-remove:before,.fa-close:before,.fa-times:before{content:\\\"\\\\f00d\\\"}.fa-search-plus:before{content:\\\"\\\\f00e\\\"}.fa-search-minus:before{content:\\\"\\\\f010\\\"}.fa-power-off:before{content:\\\"\\\\f011\\\"}.fa-signal:before{content:\\\"\\\\f012\\\"}.fa-gear:before,.fa-cog:before{content:\\\"\\\\f013\\\"}.fa-trash-o:before{content:\\\"\\\\f014\\\"}.fa-home:before{content:\\\"\\\\f015\\\"}.fa-file-o:before{content:\\\"\\\\f016\\\"}.fa-clock-o:before{content:\\\"\\\\f017\\\"}.fa-road:before{content:\\\"\\\\f018\\\"}.fa-download:before{content:\\\"\\\\f019\\\"}.fa-arrow-circle-o-down:before{content:\\\"\\\\f01a\\\"}.fa-arrow-circle-o-up:before{content:\\\"\\\\f01b\\\"}.fa-inbox:before{content:\\\"\\\\f01c\\\"}.fa-play-circle-o:before{content:\\\"\\\\f01d\\\"}.fa-rotate-right:before,.fa-repeat:before{content:\\\"\\\\f01e\\\"}.fa-refresh:before{content:\\\"\\\\f021\\\"}.fa-list-alt:before{content:\\\"\\\\f022\\\"}.fa-lock:before{content:\\\"\\\\f023\\\"}.fa-flag:before{content:\\\"\\\\f024\\\"}.fa-headphones:before{content:\\\"\\\\f025\\\"}.fa-volume-off:before{content:\\\"\\\\f026\\\"}.fa-volume-down:before{content:\\\"\\\\f027\\\"}.fa-volume-up:before{content:\\\"\\\\f028\\\"}.fa-qrcode:before{content:\\\"\\\\f029\\\"}.fa-barcode:before{content:\\\"\\\\f02a\\\"}.fa-tag:before{content:\\\"\\\\f02b\\\"}.fa-tags:before{content:\\\"\\\\f02c\\\"}.fa-book:before{content:\\\"\\\\f02d\\\"}.fa-bookmark:before{content:\\\"\\\\f02e\\\"}.fa-print:before{content:\\\"\\\\f02f\\\"}.fa-camera:before{content:\\\"\\\\f030\\\"}.fa-font:before{content:\\\"\\\\f031\\\"}.fa-bold:before{content:\\\"\\\\f032\\\"}.fa-italic:before{content:\\\"\\\\f033\\\"}.fa-text-height:before{content:\\\"\\\\f034\\\"}.fa-text-width:before{content:\\\"\\\\f035\\\"}.fa-align-left:before{content:\\\"\\\\f036\\\"}.fa-align-center:before{content:\\\"\\\\f037\\\"}.fa-align-right:before{content:\\\"\\\\f038\\\"}.fa-align-justify:before{content:\\\"\\\\f039\\\"}.fa-list:before{content:\\\"\\\\f03a\\\"}.fa-dedent:before,.fa-outdent:before{content:\\\"\\\\f03b\\\"}.fa-indent:before{content:\\\"\\\\f03c\\\"}.fa-video-camera:before{content:\\\"\\\\f03d\\\"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:\\\"\\\\f03e\\\"}.fa-pencil:before{content:\\\"\\\\f040\\\"}.fa-map-marker:before{content:\\\"\\\\f041\\\"}.fa-adjust:before{content:\\\"\\\\f042\\\"}.fa-tint:before{content:\\\"\\\\f043\\\"}.fa-edit:before,.fa-pencil-square-o:before{content:\\\"\\\\f044\\\"}.fa-share-square-o:before{content:\\\"\\\\f045\\\"}.fa-check-square-o:before{content:\\\"\\\\f046\\\"}.fa-arrows:before{content:\\\"\\\\f047\\\"}.fa-step-backward:before{content:\\\"\\\\f048\\\"}.fa-fast-backward:before{content:\\\"\\\\f049\\\"}.fa-backward:before{content:\\\"\\\\f04a\\\"}.fa-play:before{content:\\\"\\\\f04b\\\"}.fa-pause:before{content:\\\"\\\\f04c\\\"}.fa-stop:before{content:\\\"\\\\f04d\\\"}.fa-forward:before{content:\\\"\\\\f04e\\\"}.fa-fast-forward:before{content:\\\"\\\\f050\\\"}.fa-step-forward:before{content:\\\"\\\\f051\\\"}.fa-eject:before{content:\\\"\\\\f052\\\"}.fa-chevron-left:before{content:\\\"\\\\f053\\\"}.fa-chevron-right:before{content:\\\"\\\\f054\\\"}.fa-plus-circle:before{content:\\\"\\\\f055\\\"}.fa-minus-circle:before{content:\\\"\\\\f056\\\"}.fa-times-circle:before{content:\\\"\\\\f057\\\"}.fa-check-circle:before{content:\\\"\\\\f058\\\"}.fa-question-circle:before{content:\\\"\\\\f059\\\"}.fa-info-circle:before{content:\\\"\\\\f05a\\\"}.fa-crosshairs:before{content:\\\"\\\\f05b\\\"}.fa-times-circle-o:before{content:\\\"\\\\f05c\\\"}.fa-check-circle-o:before{content:\\\"\\\\f05d\\\"}.fa-ban:before{content:\\\"\\\\f05e\\\"}.fa-arrow-left:before{content:\\\"\\\\f060\\\"}.fa-arrow-right:before{content:\\\"\\\\f061\\\"}.fa-arrow-up:before{content:\\\"\\\\f062\\\"}.fa-arrow-down:before{content:\\\"\\\\f063\\\"}.fa-mail-forward:before,.fa-share:before{content:\\\"\\\\f064\\\"}.fa-expand:before{content:\\\"\\\\f065\\\"}.fa-compress:before{content:\\\"\\\\f066\\\"}.fa-plus:before{content:\\\"\\\\f067\\\"}.fa-minus:before{content:\\\"\\\\f068\\\"}.fa-asterisk:before{content:\\\"\\\\f069\\\"}.fa-exclamation-circle:before{content:\\\"\\\\f06a\\\"}.fa-gift:before{content:\\\"\\\\f06b\\\"}.fa-leaf:before{content:\\\"\\\\f06c\\\"}.fa-fire:before{content:\\\"\\\\f06d\\\"}.fa-eye:before{content:\\\"\\\\f06e\\\"}.fa-eye-slash:before{content:\\\"\\\\f070\\\"}.fa-warning:before,.fa-exclamation-triangle:before{content:\\\"\\\\f071\\\"}.fa-plane:before{content:\\\"\\\\f072\\\"}.fa-calendar:before{content:\\\"\\\\f073\\\"}.fa-random:before{content:\\\"\\\\f074\\\"}.fa-comment:before{content:\\\"\\\\f075\\\"}.fa-magnet:before{content:\\\"\\\\f076\\\"}.fa-chevron-up:before{content:\\\"\\\\f077\\\"}.fa-chevron-down:before{content:\\\"\\\\f078\\\"}.fa-retweet:before{content:\\\"\\\\f079\\\"}.fa-shopping-cart:before{content:\\\"\\\\f07a\\\"}.fa-folder:before{content:\\\"\\\\f07b\\\"}.fa-folder-open:before{content:\\\"\\\\f07c\\\"}.fa-arrows-v:before{content:\\\"\\\\f07d\\\"}.fa-arrows-h:before{content:\\\"\\\\f07e\\\"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:\\\"\\\\f080\\\"}.fa-twitter-square:before{content:\\\"\\\\f081\\\"}.fa-facebook-square:before{content:\\\"\\\\f082\\\"}.fa-camera-retro:before{content:\\\"\\\\f083\\\"}.fa-key:before{content:\\\"\\\\f084\\\"}.fa-gears:before,.fa-cogs:before{content:\\\"\\\\f085\\\"}.fa-comments:before{content:\\\"\\\\f086\\\"}.fa-thumbs-o-up:before{content:\\\"\\\\f087\\\"}.fa-thumbs-o-down:before{content:\\\"\\\\f088\\\"}.fa-star-half:before{content:\\\"\\\\f089\\\"}.fa-heart-o:before{content:\\\"\\\\f08a\\\"}.fa-sign-out:before{content:\\\"\\\\f08b\\\"}.fa-linkedin-square:before{content:\\\"\\\\f08c\\\"}.fa-thumb-tack:before{content:\\\"\\\\f08d\\\"}.fa-external-link:before{content:\\\"\\\\f08e\\\"}.fa-sign-in:before{content:\\\"\\\\f090\\\"}.fa-trophy:before{content:\\\"\\\\f091\\\"}.fa-github-square:before{content:\\\"\\\\f092\\\"}.fa-upload:before{content:\\\"\\\\f093\\\"}.fa-lemon-o:before{content:\\\"\\\\f094\\\"}.fa-phone:before{content:\\\"\\\\f095\\\"}.fa-square-o:before{content:\\\"\\\\f096\\\"}.fa-bookmark-o:before{content:\\\"\\\\f097\\\"}.fa-phone-square:before{content:\\\"\\\\f098\\\"}.fa-twitter:before{content:\\\"\\\\f099\\\"}.fa-facebook-f:before,.fa-facebook:before{content:\\\"\\\\f09a\\\"}.fa-github:before{content:\\\"\\\\f09b\\\"}.fa-unlock:before{content:\\\"\\\\f09c\\\"}.fa-credit-card:before{content:\\\"\\\\f09d\\\"}.fa-feed:before,.fa-rss:before{content:\\\"\\\\f09e\\\"}.fa-hdd-o:before{content:\\\"\\\\f0a0\\\"}.fa-bullhorn:before{content:\\\"\\\\f0a1\\\"}.fa-bell:before{content:\\\"\\\\f0f3\\\"}.fa-certificate:before{content:\\\"\\\\f0a3\\\"}.fa-hand-o-right:before{content:\\\"\\\\f0a4\\\"}.fa-hand-o-left:before{content:\\\"\\\\f0a5\\\"}.fa-hand-o-up:before{content:\\\"\\\\f0a6\\\"}.fa-hand-o-down:before{content:\\\"\\\\f0a7\\\"}.fa-arrow-circle-left:before{content:\\\"\\\\f0a8\\\"}.fa-arrow-circle-right:before{content:\\\"\\\\f0a9\\\"}.fa-arrow-circle-up:before{content:\\\"\\\\f0aa\\\"}.fa-arrow-circle-down:before{content:\\\"\\\\f0ab\\\"}.fa-globe:before{content:\\\"\\\\f0ac\\\"}.fa-wrench:before{content:\\\"\\\\f0ad\\\"}.fa-tasks:before{content:\\\"\\\\f0ae\\\"}.fa-filter:before{content:\\\"\\\\f0b0\\\"}.fa-briefcase:before{content:\\\"\\\\f0b1\\\"}.fa-arrows-alt:before{content:\\\"\\\\f0b2\\\"}.fa-group:before,.fa-users:before{content:\\\"\\\\f0c0\\\"}.fa-chain:before,.fa-link:before{content:\\\"\\\\f0c1\\\"}.fa-cloud:before{content:\\\"\\\\f0c2\\\"}.fa-flask:before{content:\\\"\\\\f0c3\\\"}.fa-cut:before,.fa-scissors:before{content:\\\"\\\\f0c4\\\"}.fa-copy:before,.fa-files-o:before{content:\\\"\\\\f0c5\\\"}.fa-paperclip:before{content:\\\"\\\\f0c6\\\"}.fa-save:before,.fa-floppy-o:before{content:\\\"\\\\f0c7\\\"}.fa-square:before{content:\\\"\\\\f0c8\\\"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:\\\"\\\\f0c9\\\"}.fa-list-ul:before{content:\\\"\\\\f0ca\\\"}.fa-list-ol:before{content:\\\"\\\\f0cb\\\"}.fa-strikethrough:before{content:\\\"\\\\f0cc\\\"}.fa-underline:before{content:\\\"\\\\f0cd\\\"}.fa-table:before{content:\\\"\\\\f0ce\\\"}.fa-magic:before{content:\\\"\\\\f0d0\\\"}.fa-truck:before{content:\\\"\\\\f0d1\\\"}.fa-pinterest:before{content:\\\"\\\\f0d2\\\"}.fa-pinterest-square:before{content:\\\"\\\\f0d3\\\"}.fa-google-plus-square:before{content:\\\"\\\\f0d4\\\"}.fa-google-plus:before{content:\\\"\\\\f0d5\\\"}.fa-money:before{content:\\\"\\\\f0d6\\\"}.fa-caret-down:before{content:\\\"\\\\f0d7\\\"}.fa-caret-up:before{content:\\\"\\\\f0d8\\\"}.fa-caret-left:before{content:\\\"\\\\f0d9\\\"}.fa-caret-right:before{content:\\\"\\\\f0da\\\"}.fa-columns:before{content:\\\"\\\\f0db\\\"}.fa-unsorted:before,.fa-sort:before{content:\\\"\\\\f0dc\\\"}.fa-sort-down:before,.fa-sort-desc:before{content:\\\"\\\\f0dd\\\"}.fa-sort-up:before,.fa-sort-asc:before{content:\\\"\\\\f0de\\\"}.fa-envelope:before{content:\\\"\\\\f0e0\\\"}.fa-linkedin:before{content:\\\"\\\\f0e1\\\"}.fa-rotate-left:before,.fa-undo:before{content:\\\"\\\\f0e2\\\"}.fa-legal:before,.fa-gavel:before{content:\\\"\\\\f0e3\\\"}.fa-dashboard:before,.fa-tachometer:before{content:\\\"\\\\f0e4\\\"}.fa-comment-o:before{content:\\\"\\\\f0e5\\\"}.fa-comments-o:before{content:\\\"\\\\f0e6\\\"}.fa-flash:before,.fa-bolt:before{content:\\\"\\\\f0e7\\\"}.fa-sitemap:before{content:\\\"\\\\f0e8\\\"}.fa-umbrella:before{content:\\\"\\\\f0e9\\\"}.fa-paste:before,.fa-clipboard:before{content:\\\"\\\\f0ea\\\"}.fa-lightbulb-o:before{content:\\\"\\\\f0eb\\\"}.fa-exchange:before{content:\\\"\\\\f0ec\\\"}.fa-cloud-download:before{content:\\\"\\\\f0ed\\\"}.fa-cloud-upload:before{content:\\\"\\\\f0ee\\\"}.fa-user-md:before{content:\\\"\\\\f0f0\\\"}.fa-stethoscope:before{content:\\\"\\\\f0f1\\\"}.fa-suitcase:before{content:\\\"\\\\f0f2\\\"}.fa-bell-o:before{content:\\\"\\\\f0a2\\\"}.fa-coffee:before{content:\\\"\\\\f0f4\\\"}.fa-cutlery:before{content:\\\"\\\\f0f5\\\"}.fa-file-text-o:before{content:\\\"\\\\f0f6\\\"}.fa-building-o:before{content:\\\"\\\\f0f7\\\"}.fa-hospital-o:before{content:\\\"\\\\f0f8\\\"}.fa-ambulance:before{content:\\\"\\\\f0f9\\\"}.fa-medkit:before{content:\\\"\\\\f0fa\\\"}.fa-fighter-jet:before{content:\\\"\\\\f0fb\\\"}.fa-beer:before{content:\\\"\\\\f0fc\\\"}.fa-h-square:before{content:\\\"\\\\f0fd\\\"}.fa-plus-square:before{content:\\\"\\\\f0fe\\\"}.fa-angle-double-left:before{content:\\\"\\\\f100\\\"}.fa-angle-double-right:before{content:\\\"\\\\f101\\\"}.fa-angle-double-up:before{content:\\\"\\\\f102\\\"}.fa-angle-double-down:before{content:\\\"\\\\f103\\\"}.fa-angle-left:before{content:\\\"\\\\f104\\\"}.fa-angle-right:before{content:\\\"\\\\f105\\\"}.fa-angle-up:before{content:\\\"\\\\f106\\\"}.fa-angle-down:before{content:\\\"\\\\f107\\\"}.fa-desktop:before{content:\\\"\\\\f108\\\"}.fa-laptop:before{content:\\\"\\\\f109\\\"}.fa-tablet:before{content:\\\"\\\\f10a\\\"}.fa-mobile-phone:before,.fa-mobile:before{content:\\\"\\\\f10b\\\"}.fa-circle-o:before{content:\\\"\\\\f10c\\\"}.fa-quote-left:before{content:\\\"\\\\f10d\\\"}.fa-quote-right:before{content:\\\"\\\\f10e\\\"}.fa-spinner:before{content:\\\"\\\\f110\\\"}.fa-circle:before{content:\\\"\\\\f111\\\"}.fa-mail-reply:before,.fa-reply:before{content:\\\"\\\\f112\\\"}.fa-github-alt:before{content:\\\"\\\\f113\\\"}.fa-folder-o:before{content:\\\"\\\\f114\\\"}.fa-folder-open-o:before{content:\\\"\\\\f115\\\"}.fa-smile-o:before{content:\\\"\\\\f118\\\"}.fa-frown-o:before{content:\\\"\\\\f119\\\"}.fa-meh-o:before{content:\\\"\\\\f11a\\\"}.fa-gamepad:before{content:\\\"\\\\f11b\\\"}.fa-keyboard-o:before{content:\\\"\\\\f11c\\\"}.fa-flag-o:before{content:\\\"\\\\f11d\\\"}.fa-flag-checkered:before{content:\\\"\\\\f11e\\\"}.fa-terminal:before{content:\\\"\\\\f120\\\"}.fa-code:before{content:\\\"\\\\f121\\\"}.fa-mail-reply-all:before,.fa-reply-all:before{content:\\\"\\\\f122\\\"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:\\\"\\\\f123\\\"}.fa-location-arrow:before{content:\\\"\\\\f124\\\"}.fa-crop:before{content:\\\"\\\\f125\\\"}.fa-code-fork:before{content:\\\"\\\\f126\\\"}.fa-unlink:before,.fa-chain-broken:before{content:\\\"\\\\f127\\\"}.fa-question:before{content:\\\"\\\\f128\\\"}.fa-info:before{content:\\\"\\\\f129\\\"}.fa-exclamation:before{content:\\\"\\\\f12a\\\"}.fa-superscript:before{content:\\\"\\\\f12b\\\"}.fa-subscript:before{content:\\\"\\\\f12c\\\"}.fa-eraser:before{content:\\\"\\\\f12d\\\"}.fa-puzzle-piece:before{content:\\\"\\\\f12e\\\"}.fa-microphone:before{content:\\\"\\\\f130\\\"}.fa-microphone-slash:before{content:\\\"\\\\f131\\\"}.fa-shield:before{content:\\\"\\\\f132\\\"}.fa-calendar-o:before{content:\\\"\\\\f133\\\"}.fa-fire-extinguisher:before{content:\\\"\\\\f134\\\"}.fa-rocket:before{content:\\\"\\\\f135\\\"}.fa-maxcdn:before{content:\\\"\\\\f136\\\"}.fa-chevron-circle-left:before{content:\\\"\\\\f137\\\"}.fa-chevron-circle-right:before{content:\\\"\\\\f138\\\"}.fa-chevron-circle-up:before{content:\\\"\\\\f139\\\"}.fa-chevron-circle-down:before{content:\\\"\\\\f13a\\\"}.fa-html5:before{content:\\\"\\\\f13b\\\"}.fa-css3:before{content:\\\"\\\\f13c\\\"}.fa-anchor:before{content:\\\"\\\\f13d\\\"}.fa-unlock-alt:before{content:\\\"\\\\f13e\\\"}.fa-bullseye:before{content:\\\"\\\\f140\\\"}.fa-ellipsis-h:before{content:\\\"\\\\f141\\\"}.fa-ellipsis-v:before{content:\\\"\\\\f142\\\"}.fa-rss-square:before{content:\\\"\\\\f143\\\"}.fa-play-circle:before{content:\\\"\\\\f144\\\"}.fa-ticket:before{content:\\\"\\\\f145\\\"}.fa-minus-square:before{content:\\\"\\\\f146\\\"}.fa-minus-square-o:before{content:\\\"\\\\f147\\\"}.fa-level-up:before{content:\\\"\\\\f148\\\"}.fa-level-down:before{content:\\\"\\\\f149\\\"}.fa-check-square:before{content:\\\"\\\\f14a\\\"}.fa-pencil-square:before{content:\\\"\\\\f14b\\\"}.fa-external-link-square:before{content:\\\"\\\\f14c\\\"}.fa-share-square:before{content:\\\"\\\\f14d\\\"}.fa-compass:before{content:\\\"\\\\f14e\\\"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:\\\"\\\\f150\\\"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:\\\"\\\\f151\\\"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:\\\"\\\\f152\\\"}.fa-euro:before,.fa-eur:before{content:\\\"\\\\f153\\\"}.fa-gbp:before{content:\\\"\\\\f154\\\"}.fa-dollar:before,.fa-usd:before{content:\\\"\\\\f155\\\"}.fa-rupee:before,.fa-inr:before{content:\\\"\\\\f156\\\"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:\\\"\\\\f157\\\"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:\\\"\\\\f158\\\"}.fa-won:before,.fa-krw:before{content:\\\"\\\\f159\\\"}.fa-bitcoin:before,.fa-btc:before{content:\\\"\\\\f15a\\\"}.fa-file:before{content:\\\"\\\\f15b\\\"}.fa-file-text:before{content:\\\"\\\\f15c\\\"}.fa-sort-alpha-asc:before{content:\\\"\\\\f15d\\\"}.fa-sort-alpha-desc:before{content:\\\"\\\\f15e\\\"}.fa-sort-amount-asc:before{content:\\\"\\\\f160\\\"}.fa-sort-amount-desc:before{content:\\\"\\\\f161\\\"}.fa-sort-numeric-asc:before{content:\\\"\\\\f162\\\"}.fa-sort-numeric-desc:before{content:\\\"\\\\f163\\\"}.fa-thumbs-up:before{content:\\\"\\\\f164\\\"}.fa-thumbs-down:before{content:\\\"\\\\f165\\\"}.fa-youtube-square:before{content:\\\"\\\\f166\\\"}.fa-youtube:before{content:\\\"\\\\f167\\\"}.fa-xing:before{content:\\\"\\\\f168\\\"}.fa-xing-square:before{content:\\\"\\\\f169\\\"}.fa-youtube-play:before{content:\\\"\\\\f16a\\\"}.fa-dropbox:before{content:\\\"\\\\f16b\\\"}.fa-stack-overflow:before{content:\\\"\\\\f16c\\\"}.fa-instagram:before{content:\\\"\\\\f16d\\\"}.fa-flickr:before{content:\\\"\\\\f16e\\\"}.fa-adn:before{content:\\\"\\\\f170\\\"}.fa-bitbucket:before{content:\\\"\\\\f171\\\"}.fa-bitbucket-square:before{content:\\\"\\\\f172\\\"}.fa-tumblr:before{content:\\\"\\\\f173\\\"}.fa-tumblr-square:before{content:\\\"\\\\f174\\\"}.fa-long-arrow-down:before{content:\\\"\\\\f175\\\"}.fa-long-arrow-up:before{content:\\\"\\\\f176\\\"}.fa-long-arrow-left:before{content:\\\"\\\\f177\\\"}.fa-long-arrow-right:before{content:\\\"\\\\f178\\\"}.fa-apple:before{content:\\\"\\\\f179\\\"}.fa-windows:before{content:\\\"\\\\f17a\\\"}.fa-android:before{content:\\\"\\\\f17b\\\"}.fa-linux:before{content:\\\"\\\\f17c\\\"}.fa-dribbble:before{content:\\\"\\\\f17d\\\"}.fa-skype:before{content:\\\"\\\\f17e\\\"}.fa-foursquare:before{content:\\\"\\\\f180\\\"}.fa-trello:before{content:\\\"\\\\f181\\\"}.fa-female:before{content:\\\"\\\\f182\\\"}.fa-male:before{content:\\\"\\\\f183\\\"}.fa-gittip:before,.fa-gratipay:before{content:\\\"\\\\f184\\\"}.fa-sun-o:before{content:\\\"\\\\f185\\\"}.fa-moon-o:before{content:\\\"\\\\f186\\\"}.fa-archive:before{content:\\\"\\\\f187\\\"}.fa-bug:before{content:\\\"\\\\f188\\\"}.fa-vk:before{content:\\\"\\\\f189\\\"}.fa-weibo:before{content:\\\"\\\\f18a\\\"}.fa-renren:before{content:\\\"\\\\f18b\\\"}.fa-pagelines:before{content:\\\"\\\\f18c\\\"}.fa-stack-exchange:before{content:\\\"\\\\f18d\\\"}.fa-arrow-circle-o-right:before{content:\\\"\\\\f18e\\\"}.fa-arrow-circle-o-left:before{content:\\\"\\\\f190\\\"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:\\\"\\\\f191\\\"}.fa-dot-circle-o:before{content:\\\"\\\\f192\\\"}.fa-wheelchair:before{content:\\\"\\\\f193\\\"}.fa-vimeo-square:before{content:\\\"\\\\f194\\\"}.fa-turkish-lira:before,.fa-try:before{content:\\\"\\\\f195\\\"}.fa-plus-square-o:before{content:\\\"\\\\f196\\\"}.fa-space-shuttle:before{content:\\\"\\\\f197\\\"}.fa-slack:before{content:\\\"\\\\f198\\\"}.fa-envelope-square:before{content:\\\"\\\\f199\\\"}.fa-wordpress:before{content:\\\"\\\\f19a\\\"}.fa-openid:before{content:\\\"\\\\f19b\\\"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:\\\"\\\\f19c\\\"}.fa-mortar-board:before,.fa-graduation-cap:before{content:\\\"\\\\f19d\\\"}.fa-yahoo:before{content:\\\"\\\\f19e\\\"}.fa-google:before{content:\\\"\\\\f1a0\\\"}.fa-reddit:before{content:\\\"\\\\f1a1\\\"}.fa-reddit-square:before{content:\\\"\\\\f1a2\\\"}.fa-stumbleupon-circle:before{content:\\\"\\\\f1a3\\\"}.fa-stumbleupon:before{content:\\\"\\\\f1a4\\\"}.fa-delicious:before{content:\\\"\\\\f1a5\\\"}.fa-digg:before{content:\\\"\\\\f1a6\\\"}.fa-pied-piper-pp:before{content:\\\"\\\\f1a7\\\"}.fa-pied-piper-alt:before{content:\\\"\\\\f1a8\\\"}.fa-drupal:before{content:\\\"\\\\f1a9\\\"}.fa-joomla:before{content:\\\"\\\\f1aa\\\"}.fa-language:before{content:\\\"\\\\f1ab\\\"}.fa-fax:before{content:\\\"\\\\f1ac\\\"}.fa-building:before{content:\\\"\\\\f1ad\\\"}.fa-child:before{content:\\\"\\\\f1ae\\\"}.fa-paw:before{content:\\\"\\\\f1b0\\\"}.fa-spoon:before{content:\\\"\\\\f1b1\\\"}.fa-cube:before{content:\\\"\\\\f1b2\\\"}.fa-cubes:before{content:\\\"\\\\f1b3\\\"}.fa-behance:before{content:\\\"\\\\f1b4\\\"}.fa-behance-square:before{content:\\\"\\\\f1b5\\\"}.fa-steam:before{content:\\\"\\\\f1b6\\\"}.fa-steam-square:before{content:\\\"\\\\f1b7\\\"}.fa-recycle:before{content:\\\"\\\\f1b8\\\"}.fa-automobile:before,.fa-car:before{content:\\\"\\\\f1b9\\\"}.fa-cab:before,.fa-taxi:before{content:\\\"\\\\f1ba\\\"}.fa-tree:before{content:\\\"\\\\f1bb\\\"}.fa-spotify:before{content:\\\"\\\\f1bc\\\"}.fa-deviantart:before{content:\\\"\\\\f1bd\\\"}.fa-soundcloud:before{content:\\\"\\\\f1be\\\"}.fa-database:before{content:\\\"\\\\f1c0\\\"}.fa-file-pdf-o:before{content:\\\"\\\\f1c1\\\"}.fa-file-word-o:before{content:\\\"\\\\f1c2\\\"}.fa-file-excel-o:before{content:\\\"\\\\f1c3\\\"}.fa-file-powerpoint-o:before{content:\\\"\\\\f1c4\\\"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:\\\"\\\\f1c5\\\"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:\\\"\\\\f1c6\\\"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:\\\"\\\\f1c7\\\"}.fa-file-movie-o:before,.fa-file-video-o:before{content:\\\"\\\\f1c8\\\"}.fa-file-code-o:before{content:\\\"\\\\f1c9\\\"}.fa-vine:before{content:\\\"\\\\f1ca\\\"}.fa-codepen:before{content:\\\"\\\\f1cb\\\"}.fa-jsfiddle:before{content:\\\"\\\\f1cc\\\"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:\\\"\\\\f1cd\\\"}.fa-circle-o-notch:before{content:\\\"\\\\f1ce\\\"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:\\\"\\\\f1d0\\\"}.fa-ge:before,.fa-empire:before{content:\\\"\\\\f1d1\\\"}.fa-git-square:before{content:\\\"\\\\f1d2\\\"}.fa-git:before{content:\\\"\\\\f1d3\\\"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:\\\"\\\\f1d4\\\"}.fa-tencent-weibo:before{content:\\\"\\\\f1d5\\\"}.fa-qq:before{content:\\\"\\\\f1d6\\\"}.fa-wechat:before,.fa-weixin:before{content:\\\"\\\\f1d7\\\"}.fa-send:before,.fa-paper-plane:before{content:\\\"\\\\f1d8\\\"}.fa-send-o:before,.fa-paper-plane-o:before{content:\\\"\\\\f1d9\\\"}.fa-history:before{content:\\\"\\\\f1da\\\"}.fa-circle-thin:before{content:\\\"\\\\f1db\\\"}.fa-header:before{content:\\\"\\\\f1dc\\\"}.fa-paragraph:before{content:\\\"\\\\f1dd\\\"}.fa-sliders:before{content:\\\"\\\\f1de\\\"}.fa-share-alt:before{content:\\\"\\\\f1e0\\\"}.fa-share-alt-square:before{content:\\\"\\\\f1e1\\\"}.fa-bomb:before{content:\\\"\\\\f1e2\\\"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:\\\"\\\\f1e3\\\"}.fa-tty:before{content:\\\"\\\\f1e4\\\"}.fa-binoculars:before{content:\\\"\\\\f1e5\\\"}.fa-plug:before{content:\\\"\\\\f1e6\\\"}.fa-slideshare:before{content:\\\"\\\\f1e7\\\"}.fa-twitch:before{content:\\\"\\\\f1e8\\\"}.fa-yelp:before{content:\\\"\\\\f1e9\\\"}.fa-newspaper-o:before{content:\\\"\\\\f1ea\\\"}.fa-wifi:before{content:\\\"\\\\f1eb\\\"}.fa-calculator:before{content:\\\"\\\\f1ec\\\"}.fa-paypal:before{content:\\\"\\\\f1ed\\\"}.fa-google-wallet:before{content:\\\"\\\\f1ee\\\"}.fa-cc-visa:before{content:\\\"\\\\f1f0\\\"}.fa-cc-mastercard:before{content:\\\"\\\\f1f1\\\"}.fa-cc-discover:before{content:\\\"\\\\f1f2\\\"}.fa-cc-amex:before{content:\\\"\\\\f1f3\\\"}.fa-cc-paypal:before{content:\\\"\\\\f1f4\\\"}.fa-cc-stripe:before{content:\\\"\\\\f1f5\\\"}.fa-bell-slash:before{content:\\\"\\\\f1f6\\\"}.fa-bell-slash-o:before{content:\\\"\\\\f1f7\\\"}.fa-trash:before{content:\\\"\\\\f1f8\\\"}.fa-copyright:before{content:\\\"\\\\f1f9\\\"}.fa-at:before{content:\\\"\\\\f1fa\\\"}.fa-eyedropper:before{content:\\\"\\\\f1fb\\\"}.fa-paint-brush:before{content:\\\"\\\\f1fc\\\"}.fa-birthday-cake:before{content:\\\"\\\\f1fd\\\"}.fa-area-chart:before{content:\\\"\\\\f1fe\\\"}.fa-pie-chart:before{content:\\\"\\\\f200\\\"}.fa-line-chart:before{content:\\\"\\\\f201\\\"}.fa-lastfm:before{content:\\\"\\\\f202\\\"}.fa-lastfm-square:before{content:\\\"\\\\f203\\\"}.fa-toggle-off:before{content:\\\"\\\\f204\\\"}.fa-toggle-on:before{content:\\\"\\\\f205\\\"}.fa-bicycle:before{content:\\\"\\\\f206\\\"}.fa-bus:before{content:\\\"\\\\f207\\\"}.fa-ioxhost:before{content:\\\"\\\\f208\\\"}.fa-angellist:before{content:\\\"\\\\f209\\\"}.fa-cc:before{content:\\\"\\\\f20a\\\"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:\\\"\\\\f20b\\\"}.fa-meanpath:before{content:\\\"\\\\f20c\\\"}.fa-buysellads:before{content:\\\"\\\\f20d\\\"}.fa-connectdevelop:before{content:\\\"\\\\f20e\\\"}.fa-dashcube:before{content:\\\"\\\\f210\\\"}.fa-forumbee:before{content:\\\"\\\\f211\\\"}.fa-leanpub:before{content:\\\"\\\\f212\\\"}.fa-sellsy:before{content:\\\"\\\\f213\\\"}.fa-shirtsinbulk:before{content:\\\"\\\\f214\\\"}.fa-simplybuilt:before{content:\\\"\\\\f215\\\"}.fa-skyatlas:before{content:\\\"\\\\f216\\\"}.fa-cart-plus:before{content:\\\"\\\\f217\\\"}.fa-cart-arrow-down:before{content:\\\"\\\\f218\\\"}.fa-diamond:before{content:\\\"\\\\f219\\\"}.fa-ship:before{content:\\\"\\\\f21a\\\"}.fa-user-secret:before{content:\\\"\\\\f21b\\\"}.fa-motorcycle:before{content:\\\"\\\\f21c\\\"}.fa-street-view:before{content:\\\"\\\\f21d\\\"}.fa-heartbeat:before{content:\\\"\\\\f21e\\\"}.fa-venus:before{content:\\\"\\\\f221\\\"}.fa-mars:before{content:\\\"\\\\f222\\\"}.fa-mercury:before{content:\\\"\\\\f223\\\"}.fa-intersex:before,.fa-transgender:before{content:\\\"\\\\f224\\\"}.fa-transgender-alt:before{content:\\\"\\\\f225\\\"}.fa-venus-double:before{content:\\\"\\\\f226\\\"}.fa-mars-double:before{content:\\\"\\\\f227\\\"}.fa-venus-mars:before{content:\\\"\\\\f228\\\"}.fa-mars-stroke:before{content:\\\"\\\\f229\\\"}.fa-mars-stroke-v:before{content:\\\"\\\\f22a\\\"}.fa-mars-stroke-h:before{content:\\\"\\\\f22b\\\"}.fa-neuter:before{content:\\\"\\\\f22c\\\"}.fa-genderless:before{content:\\\"\\\\f22d\\\"}.fa-facebook-official:before{content:\\\"\\\\f230\\\"}.fa-pinterest-p:before{content:\\\"\\\\f231\\\"}.fa-whatsapp:before{content:\\\"\\\\f232\\\"}.fa-server:before{content:\\\"\\\\f233\\\"}.fa-user-plus:before{content:\\\"\\\\f234\\\"}.fa-user-times:before{content:\\\"\\\\f235\\\"}.fa-hotel:before,.fa-bed:before{content:\\\"\\\\f236\\\"}.fa-viacoin:before{content:\\\"\\\\f237\\\"}.fa-train:before{content:\\\"\\\\f238\\\"}.fa-subway:before{content:\\\"\\\\f239\\\"}.fa-medium:before{content:\\\"\\\\f23a\\\"}.fa-yc:before,.fa-y-combinator:before{content:\\\"\\\\f23b\\\"}.fa-optin-monster:before{content:\\\"\\\\f23c\\\"}.fa-opencart:before{content:\\\"\\\\f23d\\\"}.fa-expeditedssl:before{content:\\\"\\\\f23e\\\"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:\\\"\\\\f240\\\"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:\\\"\\\\f241\\\"}.fa-battery-2:before,.fa-battery-half:before{content:\\\"\\\\f242\\\"}.fa-battery-1:before,.fa-battery-quarter:before{content:\\\"\\\\f243\\\"}.fa-battery-0:before,.fa-battery-empty:before{content:\\\"\\\\f244\\\"}.fa-mouse-pointer:before{content:\\\"\\\\f245\\\"}.fa-i-cursor:before{content:\\\"\\\\f246\\\"}.fa-object-group:before{content:\\\"\\\\f247\\\"}.fa-object-ungroup:before{content:\\\"\\\\f248\\\"}.fa-sticky-note:before{content:\\\"\\\\f249\\\"}.fa-sticky-note-o:before{content:\\\"\\\\f24a\\\"}.fa-cc-jcb:before{content:\\\"\\\\f24b\\\"}.fa-cc-diners-club:before{content:\\\"\\\\f24c\\\"}.fa-clone:before{content:\\\"\\\\f24d\\\"}.fa-balance-scale:before{content:\\\"\\\\f24e\\\"}.fa-hourglass-o:before{content:\\\"\\\\f250\\\"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:\\\"\\\\f251\\\"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:\\\"\\\\f252\\\"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:\\\"\\\\f253\\\"}.fa-hourglass:before{content:\\\"\\\\f254\\\"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:\\\"\\\\f255\\\"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:\\\"\\\\f256\\\"}.fa-hand-scissors-o:before{content:\\\"\\\\f257\\\"}.fa-hand-lizard-o:before{content:\\\"\\\\f258\\\"}.fa-hand-spock-o:before{content:\\\"\\\\f259\\\"}.fa-hand-pointer-o:before{content:\\\"\\\\f25a\\\"}.fa-hand-peace-o:before{content:\\\"\\\\f25b\\\"}.fa-trademark:before{content:\\\"\\\\f25c\\\"}.fa-registered:before{content:\\\"\\\\f25d\\\"}.fa-creative-commons:before{content:\\\"\\\\f25e\\\"}.fa-gg:before{content:\\\"\\\\f260\\\"}.fa-gg-circle:before{content:\\\"\\\\f261\\\"}.fa-tripadvisor:before{content:\\\"\\\\f262\\\"}.fa-odnoklassniki:before{content:\\\"\\\\f263\\\"}.fa-odnoklassniki-square:before{content:\\\"\\\\f264\\\"}.fa-get-pocket:before{content:\\\"\\\\f265\\\"}.fa-wikipedia-w:before{content:\\\"\\\\f266\\\"}.fa-safari:before{content:\\\"\\\\f267\\\"}.fa-chrome:before{content:\\\"\\\\f268\\\"}.fa-firefox:before{content:\\\"\\\\f269\\\"}.fa-opera:before{content:\\\"\\\\f26a\\\"}.fa-internet-explorer:before{content:\\\"\\\\f26b\\\"}.fa-tv:before,.fa-television:before{content:\\\"\\\\f26c\\\"}.fa-contao:before{content:\\\"\\\\f26d\\\"}.fa-500px:before{content:\\\"\\\\f26e\\\"}.fa-amazon:before{content:\\\"\\\\f270\\\"}.fa-calendar-plus-o:before{content:\\\"\\\\f271\\\"}.fa-calendar-minus-o:before{content:\\\"\\\\f272\\\"}.fa-calendar-times-o:before{content:\\\"\\\\f273\\\"}.fa-calendar-check-o:before{content:\\\"\\\\f274\\\"}.fa-industry:before{content:\\\"\\\\f275\\\"}.fa-map-pin:before{content:\\\"\\\\f276\\\"}.fa-map-signs:before{content:\\\"\\\\f277\\\"}.fa-map-o:before{content:\\\"\\\\f278\\\"}.fa-map:before{content:\\\"\\\\f279\\\"}.fa-commenting:before{content:\\\"\\\\f27a\\\"}.fa-commenting-o:before{content:\\\"\\\\f27b\\\"}.fa-houzz:before{content:\\\"\\\\f27c\\\"}.fa-vimeo:before{content:\\\"\\\\f27d\\\"}.fa-black-tie:before{content:\\\"\\\\f27e\\\"}.fa-fonticons:before{content:\\\"\\\\f280\\\"}.fa-reddit-alien:before{content:\\\"\\\\f281\\\"}.fa-edge:before{content:\\\"\\\\f282\\\"}.fa-credit-card-alt:before{content:\\\"\\\\f283\\\"}.fa-codiepie:before{content:\\\"\\\\f284\\\"}.fa-modx:before{content:\\\"\\\\f285\\\"}.fa-fort-awesome:before{content:\\\"\\\\f286\\\"}.fa-usb:before{content:\\\"\\\\f287\\\"}.fa-product-hunt:before{content:\\\"\\\\f288\\\"}.fa-mixcloud:before{content:\\\"\\\\f289\\\"}.fa-scribd:before{content:\\\"\\\\f28a\\\"}.fa-pause-circle:before{content:\\\"\\\\f28b\\\"}.fa-pause-circle-o:before{content:\\\"\\\\f28c\\\"}.fa-stop-circle:before{content:\\\"\\\\f28d\\\"}.fa-stop-circle-o:before{content:\\\"\\\\f28e\\\"}.fa-shopping-bag:before{content:\\\"\\\\f290\\\"}.fa-shopping-basket:before{content:\\\"\\\\f291\\\"}.fa-hashtag:before{content:\\\"\\\\f292\\\"}.fa-bluetooth:before{content:\\\"\\\\f293\\\"}.fa-bluetooth-b:before{content:\\\"\\\\f294\\\"}.fa-percent:before{content:\\\"\\\\f295\\\"}.fa-gitlab:before{content:\\\"\\\\f296\\\"}.fa-wpbeginner:before{content:\\\"\\\\f297\\\"}.fa-wpforms:before{content:\\\"\\\\f298\\\"}.fa-envira:before{content:\\\"\\\\f299\\\"}.fa-universal-access:before{content:\\\"\\\\f29a\\\"}.fa-wheelchair-alt:before{content:\\\"\\\\f29b\\\"}.fa-question-circle-o:before{content:\\\"\\\\f29c\\\"}.fa-blind:before{content:\\\"\\\\f29d\\\"}.fa-audio-description:before{content:\\\"\\\\f29e\\\"}.fa-volume-control-phone:before{content:\\\"\\\\f2a0\\\"}.fa-braille:before{content:\\\"\\\\f2a1\\\"}.fa-assistive-listening-systems:before{content:\\\"\\\\f2a2\\\"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:\\\"\\\\f2a3\\\"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:\\\"\\\\f2a4\\\"}.fa-glide:before{content:\\\"\\\\f2a5\\\"}.fa-glide-g:before{content:\\\"\\\\f2a6\\\"}.fa-signing:before,.fa-sign-language:before{content:\\\"\\\\f2a7\\\"}.fa-low-vision:before{content:\\\"\\\\f2a8\\\"}.fa-viadeo:before{content:\\\"\\\\f2a9\\\"}.fa-viadeo-square:before{content:\\\"\\\\f2aa\\\"}.fa-snapchat:before{content:\\\"\\\\f2ab\\\"}.fa-snapchat-ghost:before{content:\\\"\\\\f2ac\\\"}.fa-snapchat-square:before{content:\\\"\\\\f2ad\\\"}.fa-pied-piper:before{content:\\\"\\\\f2ae\\\"}.fa-first-order:before{content:\\\"\\\\f2b0\\\"}.fa-yoast:before{content:\\\"\\\\f2b1\\\"}.fa-themeisle:before{content:\\\"\\\\f2b2\\\"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:\\\"\\\\f2b3\\\"}.fa-fa:before,.fa-font-awesome:before{content:\\\"\\\\f2b4\\\"}.fa-handshake-o:before{content:\\\"\\\\f2b5\\\"}.fa-envelope-open:before{content:\\\"\\\\f2b6\\\"}.fa-envelope-open-o:before{content:\\\"\\\\f2b7\\\"}.fa-linode:before{content:\\\"\\\\f2b8\\\"}.fa-address-book:before{content:\\\"\\\\f2b9\\\"}.fa-address-book-o:before{content:\\\"\\\\f2ba\\\"}.fa-vcard:before,.fa-address-card:before{content:\\\"\\\\f2bb\\\"}.fa-vcard-o:before,.fa-address-card-o:before{content:\\\"\\\\f2bc\\\"}.fa-user-circle:before{content:\\\"\\\\f2bd\\\"}.fa-user-circle-o:before{content:\\\"\\\\f2be\\\"}.fa-user-o:before{content:\\\"\\\\f2c0\\\"}.fa-id-badge:before{content:\\\"\\\\f2c1\\\"}.fa-drivers-license:before,.fa-id-card:before{content:\\\"\\\\f2c2\\\"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:\\\"\\\\f2c3\\\"}.fa-quora:before{content:\\\"\\\\f2c4\\\"}.fa-free-code-camp:before{content:\\\"\\\\f2c5\\\"}.fa-telegram:before{content:\\\"\\\\f2c6\\\"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:\\\"\\\\f2c7\\\"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:\\\"\\\\f2c8\\\"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:\\\"\\\\f2c9\\\"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:\\\"\\\\f2ca\\\"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:\\\"\\\\f2cb\\\"}.fa-shower:before{content:\\\"\\\\f2cc\\\"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:\\\"\\\\f2cd\\\"}.fa-podcast:before{content:\\\"\\\\f2ce\\\"}.fa-window-maximize:before{content:\\\"\\\\f2d0\\\"}.fa-window-minimize:before{content:\\\"\\\\f2d1\\\"}.fa-window-restore:before{content:\\\"\\\\f2d2\\\"}.fa-times-rectangle:before,.fa-window-close:before{content:\\\"\\\\f2d3\\\"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:\\\"\\\\f2d4\\\"}.fa-bandcamp:before{content:\\\"\\\\f2d5\\\"}.fa-grav:before{content:\\\"\\\\f2d6\\\"}.fa-etsy:before{content:\\\"\\\\f2d7\\\"}.fa-imdb:before{content:\\\"\\\\f2d8\\\"}.fa-ravelry:before{content:\\\"\\\\f2d9\\\"}.fa-eercast:before{content:\\\"\\\\f2da\\\"}.fa-microchip:before{content:\\\"\\\\f2db\\\"}.fa-snowflake-o:before{content:\\\"\\\\f2dc\\\"}.fa-superpowers:before{content:\\\"\\\\f2dd\\\"}.fa-wpexplorer:before{content:\\\"\\\\f2de\\\"}.fa-meetup:before{content:\\\"\\\\f2e0\\\"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}a{cursor:pointer}.angular-editor-textarea{min-height:150px;overflow:auto;margin-top:5px;resize:vertical}.angular-editor-textarea:after{content:\\\"\\\";position:absolute;bottom:0;right:0;display:block;width:8px;height:8px;cursor:nwse-resize;background-color:#ffffff80}.angular-editor-toolbar{font:100 14px/15px Roboto,Arial,sans-serif;background-color:#f5f5f5;font-size:.8rem;padding:.2rem;border:1px solid #ddd}.angular-editor-toolbar .angular-editor-toolbar-set{display:none;margin-right:5px;vertical-align:baseline}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button{background-color:#fff;vertical-align:middle;border:1px solid #ddd;padding:.4rem;min-width:2rem;float:left}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:focus,.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.focus{outline:0}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label{pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.foreground :after{background:#555555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.background{background:#555555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active{background:#fff5b9}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active:hover{background-color:#fffa98}.angular-editor-toolbar .angular-editor-toolbar-set select{font-size:11px;width:90px;vertical-align:middle;background-color:transparent;border:.5px solid rgba(255,255,255,0);border-radius:5px;outline:none;padding:.4rem;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-heading optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .default{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h1{font-size:24px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h2{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h3{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h4{font-size:15px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h5{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h6{font-size:13px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .div,.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .pre{font-size:12px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size{display:inline-block;width:50px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size1{font-size:10px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size2{font-size:12px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size3{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size4{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size5{font-size:18px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size6{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size7{font-size:22px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .color-label{position:relative;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .background{font-size:smaller;background:#1b1b1b;color:#fff;padding:3px}.angular-editor-toolbar .angular-editor-toolbar-set .foreground :after{position:absolute;content:\\\"\\\";left:-1px;top:auto;bottom:-3px;right:auto;width:15px;height:2px;z-index:0;background:#1b1b1b}.angular-editor-toolbar .angular-editor-toolbar-set:not([style*=\\\"display:none\\\"]):not([style*=\\\"display: none\\\"]){display:inline-block}.select-button{display:inline-block}.select-button.disabled{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.Renderer2 }, { type: AngularEditorService }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n }, propDecorators: { id: [{\n type: Input\n }], uploadUrl: [{\n type: Input\n }], upload: [{\n type: Input\n }], showToolbar: [{\n type: Input\n }], fonts: [{\n type: Input\n }], customClasses: [{\n type: Input\n }], defaultFontName: [{\n type: Input\n }], defaultFontSize: [{\n type: Input\n }], hiddenButtons: [{\n type: Input\n }], execute: [{\n type: Output\n }], myInputFile: [{\n type: ViewChild,\n args: ['fileInput', { static: true }]\n }] } });\n\nclass AngularEditorComponent {\n constructor(r, editorService, doc, sanitizer, cdRef, defaultTabIndex, autoFocus) {\n this.r = r;\n this.editorService = editorService;\n this.doc = doc;\n this.sanitizer = sanitizer;\n this.cdRef = cdRef;\n this.autoFocus = autoFocus;\n this.modeVisual = true;\n this.showPlaceholder = false;\n this.disabled = false;\n this.focused = false;\n this.touched = false;\n this.changed = false;\n this.id = '';\n this.config = angularEditorConfig;\n this.placeholder = '';\n this.viewMode = new EventEmitter();\n /** emits `blur` event when focused out from the textarea */\n // eslint-disable-next-line @angular-eslint/no-output-native, @angular-eslint/no-output-rename\n this.blurEvent = new EventEmitter();\n /** emits `focus` event when focused in to the textarea */\n // eslint-disable-next-line @angular-eslint/no-output-rename, @angular-eslint/no-output-native\n this.focusEvent = new EventEmitter();\n this.tabindex = -1;\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex = (parsedTabIndex || parsedTabIndex === 0) ? parsedTabIndex : null;\n }\n onFocus() {\n this.focus();\n }\n ngOnInit() {\n this.config.toolbarPosition = this.config.toolbarPosition ? this.config.toolbarPosition : angularEditorConfig.toolbarPosition;\n }\n ngAfterViewInit() {\n if (isDefined(this.autoFocus)) {\n this.focus();\n }\n }\n onPaste(event) {\n if (this.config.rawPaste) {\n event.preventDefault();\n const text = event.clipboardData.getData('text/plain');\n document.execCommand('insertHTML', false, text);\n return text;\n }\n }\n /**\n * Executed command from editor header buttons\n * @param command string from triggerCommand\n */\n executeCommand(command) {\n this.focus();\n if (command === 'focus') {\n return;\n }\n if (command === 'toggleEditorMode') {\n this.toggleEditorMode(this.modeVisual);\n }\n else if (command !== '') {\n if (command === 'clear') {\n this.editorService.removeSelectedElements(this.getCustomTags());\n this.onContentChange(this.textArea.nativeElement);\n }\n else if (command === 'default') {\n this.editorService.removeSelectedElements('h1,h2,h3,h4,h5,h6,p,pre');\n this.onContentChange(this.textArea.nativeElement);\n }\n else {\n this.editorService.executeCommand(command);\n }\n this.exec();\n }\n }\n /**\n * focus event\n */\n onTextAreaFocus(event) {\n if (this.focused) {\n event.stopPropagation();\n return;\n }\n this.focused = true;\n this.focusEvent.emit(event);\n if (!this.touched || !this.changed) {\n this.editorService.executeInNextQueueIteration(() => {\n this.configure();\n this.touched = true;\n });\n }\n }\n /**\n * @description fires when cursor leaves textarea\n */\n onTextAreaMouseOut(event) {\n this.editorService.saveSelection();\n }\n /**\n * blur event\n */\n onTextAreaBlur(event) {\n /**\n * save selection if focussed out\n */\n this.editorService.executeInNextQueueIteration(this.editorService.saveSelection);\n if (typeof this.onTouched === 'function') {\n this.onTouched();\n }\n if (event.relatedTarget !== null) {\n const parent = event.relatedTarget.parentElement;\n if (!parent.classList.contains('angular-editor-toolbar-set') && !parent.classList.contains('ae-picker')) {\n this.blurEvent.emit(event);\n this.focused = false;\n }\n }\n }\n /**\n * focus the text area when the editor is focused\n */\n focus() {\n if (this.modeVisual) {\n this.textArea.nativeElement.focus();\n }\n else {\n const sourceText = this.doc.getElementById('sourceText' + this.id);\n sourceText.focus();\n this.focused = true;\n }\n }\n /**\n * Executed from the contenteditable section while the input property changes\n * @param element html element from contenteditable\n */\n onContentChange(element) {\n let html = '';\n if (this.modeVisual) {\n html = element.innerHTML;\n }\n else {\n html = element.innerText;\n }\n if ((!html || html === '<br>')) {\n html = '';\n }\n if (typeof this.onChange === 'function') {\n this.onChange(this.config.sanitize || this.config.sanitize === undefined ?\n this.sanitizer.sanitize(SecurityContext.HTML, html) : html);\n if ((!html) !== this.showPlaceholder) {\n this.togglePlaceholder(this.showPlaceholder);\n }\n }\n this.changed = true;\n }\n /**\n * Set the function to be called\n * when the control receives a change event.\n *\n * @param fn a function\n */\n registerOnChange(fn) {\n this.onChange = e => (e === '<br>' ? fn('') : fn(e));\n }\n /**\n * Set the function to be called\n * when the control receives a touch event.\n *\n * @param fn a function\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Write a new value to the element.\n *\n * @param value value to be executed when there is a change in contenteditable\n */\n writeValue(value) {\n if ((!value || value === '<br>' || value === '') !== this.showPlaceholder) {\n this.togglePlaceholder(this.showPlaceholder);\n }\n if (value === undefined || value === '' || value === '<br>') {\n value = null;\n }\n this.refreshView(value);\n }\n /**\n * refresh view/HTML of the editor\n *\n * @param value html string from the editor\n */\n refreshView(value) {\n const normalizedValue = value === null ? '' : value;\n this.r.setProperty(this.textArea.nativeElement, 'innerHTML', normalizedValue);\n return;\n }\n /**\n * toggles placeholder based on input string\n *\n * @param value A HTML string from the editor\n */\n togglePlaceholder(value) {\n if (!value) {\n this.r.addClass(this.editorWrapper.nativeElement, 'show-placeholder');\n this.showPlaceholder = true;\n }\n else {\n this.r.removeClass(this.editorWrapper.nativeElement, 'show-placeholder');\n this.showPlaceholder = false;\n }\n }\n /**\n * Implements disabled state for this element\n *\n * @param isDisabled Disabled flag\n */\n setDisabledState(isDisabled) {\n const div = this.textArea.nativeElement;\n const action = isDisabled ? 'addClass' : 'removeClass';\n this.r[action](div, 'disabled');\n this.disabled = isDisabled;\n }\n /**\n * toggles editor mode based on bToSource bool\n *\n * @param bToSource A boolean value from the editor\n */\n toggleEditorMode(bToSource) {\n let oContent;\n const editableElement = this.textArea.nativeElement;\n if (bToSource) {\n oContent = this.r.createText(editableElement.innerHTML);\n this.r.setProperty(editableElement, 'innerHTML', '');\n this.r.setProperty(editableElement, 'contentEditable', false);\n const oPre = this.r.createElement('pre');\n this.r.setStyle(oPre, 'margin', '0');\n this.r.setStyle(oPre, 'outline', 'none');\n const oCode = this.r.createElement('code');\n this.r.setProperty(oCode, 'id', 'sourceText' + this.id);\n this.r.setStyle(oCode, 'display', 'block');\n this.r.setStyle(oCode, 'white-space', 'pre-wrap');\n this.r.setStyle(oCode, 'word-break', 'keep-all');\n this.r.setStyle(oCode, 'outline', 'none');\n this.r.setStyle(oCode, 'margin', '0');\n this.r.setStyle(oCode, 'background-color', '#fff5b9');\n this.r.setProperty(oCode, 'contentEditable', true);\n this.r.appendChild(oCode, oContent);\n this.focusInstance = this.r.listen(oCode, 'focus', (event) => this.onTextAreaFocus(event));\n this.blurInstance = this.r.listen(oCode, 'blur', (event) => this.onTextAreaBlur(event));\n this.r.appendChild(oPre, oCode);\n this.r.appendChild(editableElement, oPre);\n // ToDo move to service\n this.doc.execCommand('defaultParagraphSeparator', false, 'div');\n this.modeVisual = false;\n this.viewMode.emit(false);\n oCode.focus();\n }\n else {\n if (this.doc.querySelectorAll) {\n this.r.setProperty(editableElement, 'innerHTML', editableElement.innerText);\n }\n else {\n oContent = this.doc.createRange();\n oContent.selectNodeContents(editableElement.firstChild);\n this.r.setProperty(editableElement, 'innerHTML', oContent.toString());\n }\n this.r.setProperty(editableElement, 'contentEditable', true);\n this.modeVisual = true;\n this.viewMode.emit(true);\n this.onContentChange(editableElement);\n editableElement.focus();\n }\n this.editorToolbar.setEditorMode(!this.modeVisual);\n }\n /**\n * toggles editor buttons when cursor moved or positioning\n *\n * Send a node array from the contentEditable of the editor\n */\n exec() {\n this.editorToolbar.triggerButtons();\n let userSelection;\n if (this.doc.getSelection) {\n userSelection = this.doc.getSelection();\n this.editorService.executeInNextQueueIteration(this.editorService.saveSelection);\n }\n let a = userSelection.focusNode;\n const els = [];\n while (a && a.id !== 'editor') {\n els.unshift(a);\n a = a.parentNode;\n }\n this.editorToolbar.triggerBlocks(els);\n }\n configure() {\n this.editorService.uploadUrl = this.config.uploadUrl;\n this.editorService.uploadWithCredentials = this.config.uploadWithCredentials;\n if (this.config.defaultParagraphSeparator) {\n this.editorService.setDefaultParagraphSeparator(this.config.defaultParagraphSeparator);\n }\n if (this.config.defaultFontName) {\n this.editorService.setFontName(this.config.defaultFontName);\n }\n if (this.config.defaultFontSize) {\n this.editorService.setFontSize(this.config.defaultFontSize);\n }\n }\n getFonts() {\n const fonts = this.config.fonts ? this.config.fonts : angularEditorConfig.fonts;\n return fonts.map(x => {\n return { label: x.name, value: x.name };\n });\n }\n getCustomTags() {\n const tags = ['span'];\n this.config.customClasses.forEach(x => {\n if (x.tag !== undefined) {\n if (!tags.includes(x.tag)) {\n tags.push(x.tag);\n }\n }\n });\n return tags.join(',');\n }\n ngOnDestroy() {\n if (this.blurInstance) {\n this.blurInstance();\n }\n if (this.focusInstance) {\n this.focusInstance();\n }\n }\n filterStyles(html) {\n html = html.replace('position: fixed;', '');\n return html;\n }\n}\nAngularEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: AngularEditorComponent, deps: [{ token: i0.Renderer2 }, { token: AngularEditorService }, { token: DOCUMENT }, { token: i2.DomSanitizer }, { token: i0.ChangeDetectorRef }, { token: 'tabindex', attribute: true }, { token: 'autofocus', attribute: true }], target: i0.ɵɵFactoryTarget.Component });\nAngularEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: AngularEditorComponent, selector: \"angular-editor\", inputs: { id: \"id\", config: \"config\", placeholder: \"placeholder\", tabIndex: \"tabIndex\" }, outputs: { html: \"html\", viewMode: \"viewMode\", blurEvent: \"blur\", focusEvent: \"focus\" }, host: { listeners: { \"focus\": \"onFocus()\" }, properties: { \"attr.tabindex\": \"this.tabindex\" } }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AngularEditorComponent),\n multi: true\n },\n AngularEditorService\n ], viewQueries: [{ propertyName: \"textArea\", first: true, predicate: [\"editor\"], descendants: true, static: true }, { propertyName: \"editorWrapper\", first: true, predicate: [\"editorWrapper\"], descendants: true, static: true }, { propertyName: \"editorToolbar\", first: true, predicate: [\"editorToolbar\"], descendants: true }], ngImport: i0, template: \"<div\\n class=\\\"angular-editor\\\"\\n #angularEditor\\n [style.width]=\\\"config.width\\\"\\n [style.minWidth]=\\\"config.minWidth\\\"\\n>\\n <angular-editor-toolbar\\n *ngIf=\\\"config.toolbarPosition === 'top'\\\"\\n #editorToolbar\\n [id]=\\\"id\\\"\\n [uploadUrl]=\\\"config.uploadUrl\\\"\\n [upload]=\\\"config.upload\\\"\\n [showToolbar]=\\\"config.showToolbar !== undefined ? config.showToolbar : true\\\"\\n [fonts]=\\\"getFonts()\\\"\\n [customClasses]=\\\"config.customClasses\\\"\\n [defaultFontName]=\\\"config.defaultFontName\\\"\\n [defaultFontSize]=\\\"config.defaultFontSize\\\"\\n [hiddenButtons]=\\\"config.toolbarHiddenButtons\\\"\\n (execute)=\\\"executeCommand($event)\\\"\\n ></angular-editor-toolbar>\\n\\n <div\\n class=\\\"angular-editor-wrapper\\\"\\n #editorWrapper\\n >\\n <div\\n #editor\\n class=\\\"angular-editor-textarea\\\"\\n [attr.contenteditable]=\\\"config.editable\\\"\\n [attr.tabindex]=\\\"disabled ? -1 : tabIndex\\\"\\n [attr.translate]=\\\"config.translate\\\"\\n [attr.spellcheck]=\\\"config.spellcheck\\\"\\n [style.height]=\\\"config.height\\\"\\n [style.minHeight]=\\\"config.minHeight\\\"\\n [style.maxHeight]=\\\"config.maxHeight\\\"\\n [style.outline]=\\\"config.outline === false ? 'none': undefined\\\"\\n (input)=\\\"onContentChange($event.target)\\\"\\n (focus)=\\\"onTextAreaFocus($event)\\\"\\n (blur)=\\\"onTextAreaBlur($event)\\\"\\n (click)=\\\"exec()\\\"\\n (keyup)=\\\"exec()\\\"\\n (mouseout)=\\\"onTextAreaMouseOut($event)\\\"\\n (paste)=\\\"onPaste($event)\\\"\\n >\\n </div>\\n <span class=\\\"angular-editor-placeholder\\\">{{ placeholder || config['placeholder'] }}</span>\\n </div>\\n <angular-editor-toolbar\\n *ngIf=\\\"config.toolbarPosition === 'bottom'\\\"\\n #editorToolbar\\n [id]=\\\"id\\\"\\n [uploadUrl]=\\\"config.uploadUrl\\\"\\n [upload]=\\\"config.upload\\\"\\n [showToolbar]=\\\"config.showToolbar !== undefined ? config.showToolbar : true\\\"\\n [fonts]=\\\"getFonts()\\\"\\n [customClasses]=\\\"config.customClasses\\\"\\n [defaultFontName]=\\\"config.defaultFontName\\\"\\n [defaultFontSize]=\\\"config.defaultFontSize\\\"\\n [hiddenButtons]=\\\"config.toolbarHiddenButtons\\\"\\n (execute)=\\\"executeCommand($event)\\\"\\n ></angular-editor-toolbar>\\n</div>\\n\", styles: [\"/*!\\n * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\\n */@font-face{font-family:FontAwesome;src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0);src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format(\\\"embedded-opentype\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0) format(\\\"woff2\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0) format(\\\"woff\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0) format(\\\"truetype\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format(\\\"svg\\\");font-weight:400;font-style:normal}.fa{display:inline-block;font: 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";transform:scaleY(-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:\\\"\\\\f000\\\"}.fa-music:before{content:\\\"\\\\f001\\\"}.fa-search:before{content:\\\"\\\\f002\\\"}.fa-envelope-o:before{content:\\\"\\\\f003\\\"}.fa-heart:before{content:\\\"\\\\f004\\\"}.fa-star:before{content:\\\"\\\\f005\\\"}.fa-star-o:before{content:\\\"\\\\f006\\\"}.fa-user:before{content:\\\"\\\\f007\\\"}.fa-film:before{content:\\\"\\\\f008\\\"}.fa-th-large:before{content:\\\"\\\\f009\\\"}.fa-th:before{content:\\\"\\\\f00a\\\"}.fa-th-list:before{content:\\\"\\\\f00b\\\"}.fa-check:before{content:\\\"\\\\f00c\\\"}.fa-remove:before,.fa-close:before,.fa-times:before{content:\\\"\\\\f00d\\\"}.fa-search-plus:before{content:\\\"\\\\f00e\\\"}.fa-search-minus:before{content:\\\"\\\\f010\\\"}.fa-power-off:before{content:\\\"\\\\f011\\\"}.fa-signal:before{content:\\\"\\\\f012\\\"}.fa-gear:before,.fa-cog:before{content:\\\"\\\\f013\\\"}.fa-trash-o:before{content:\\\"\\\\f014\\\"}.fa-home:before{content:\\\"\\\\f015\\\"}.fa-file-o:before{content:\\\"\\\\f016\\\"}.fa-clock-o:before{content:\\\"\\\\f017\\\"}.fa-road:before{content:\\\"\\\\f018\\\"}.fa-download:before{content:\\\"\\\\f019\\\"}.fa-arrow-circle-o-down:before{content:\\\"\\\\f01a\\\"}.fa-arrow-circle-o-up:before{content:\\\"\\\\f01b\\\"}.fa-inbox:before{content:\\\"\\\\f01c\\\"}.fa-play-circle-o:before{content:\\\"\\\\f01d\\\"}.fa-rotate-right:before,.fa-repeat:before{content:\\\"\\\\f01e\\\"}.fa-refresh:before{content:\\\"\\\\f021\\\"}.fa-list-alt:before{content:\\\"\\\\f022\\\"}.fa-lock:before{content:\\\"\\\\f023\\\"}.fa-flag:before{content:\\\"\\\\f024\\\"}.fa-headphones:before{content:\\\"\\\\f025\\\"}.fa-volume-off:before{content:\\\"\\\\f026\\\"}.fa-volume-down:before{content:\\\"\\\\f027\\\"}.fa-volume-up:before{content:\\\"\\\\f028\\\"}.fa-qrcode:before{content:\\\"\\\\f029\\\"}.fa-barcode:before{content:\\\"\\\\f02a\\\"}.fa-tag:before{content:\\\"\\\\f02b\\\"}.fa-tags:before{content:\\\"\\\\f02c\\\"}.fa-book:before{content:\\\"\\\\f02d\\\"}.fa-bookmark:before{content:\\\"\\\\f02e\\\"}.fa-print:before{content:\\\"\\\\f02f\\\"}.fa-camera:before{content:\\\"\\\\f030\\\"}.fa-font:before{content:\\\"\\\\f031\\\"}.fa-bold:before{content:\\\"\\\\f032\\\"}.fa-italic:before{content:\\\"\\\\f033\\\"}.fa-text-height:before{content:\\\"\\\\f034\\\"}.fa-text-width:before{content:\\\"\\\\f035\\\"}.fa-align-left:before{content:\\\"\\\\f036\\\"}.fa-align-center:before{content:\\\"\\\\f037\\\"}.fa-align-right:before{content:\\\"\\\\f038\\\"}.fa-align-justify:before{content:\\\"\\\\f039\\\"}.fa-list:before{content:\\\"\\\\f03a\\\"}.fa-dedent:before,.fa-outdent:before{content:\\\"\\\\f03b\\\"}.fa-indent:before{content:\\\"\\\\f03c\\\"}.fa-video-camera:before{content:\\\"\\\\f03d\\\"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:\\\"\\\\f03e\\\"}.fa-pencil:before{content:\\\"\\\\f040\\\"}.fa-map-marker:before{content:\\\"\\\\f041\\\"}.fa-adjust:before{content:\\\"\\\\f042\\\"}.fa-tint:before{content:\\\"\\\\f043\\\"}.fa-edit:before,.fa-pencil-square-o:before{content:\\\"\\\\f044\\\"}.fa-share-square-o:before{content:\\\"\\\\f045\\\"}.fa-check-square-o:before{content:\\\"\\\\f046\\\"}.fa-arrows:before{content:\\\"\\\\f047\\\"}.fa-step-backward:before{content:\\\"\\\\f048\\\"}.fa-fast-backward:before{content:\\\"\\\\f049\\\"}.fa-backward:before{content:\\\"\\\\f04a\\\"}.fa-play:before{content:\\\"\\\\f04b\\\"}.fa-pause:before{content:\\\"\\\\f04c\\\"}.fa-stop:before{content:\\\"\\\\f04d\\\"}.fa-forward:before{content:\\\"\\\\f04e\\\"}.fa-fast-forward:before{content:\\\"\\\\f050\\\"}.fa-step-forward:before{content:\\\"\\\\f051\\\"}.fa-eject:before{content:\\\"\\\\f052\\\"}.fa-chevron-left:before{content:\\\"\\\\f053\\\"}.fa-chevron-right:before{content:\\\"\\\\f054\\\"}.fa-plus-circle:before{content:\\\"\\\\f055\\\"}.fa-minus-circle:before{content:\\\"\\\\f056\\\"}.fa-times-circle:before{content:\\\"\\\\f057\\\"}.fa-check-circle:before{content:\\\"\\\\f058\\\"}.fa-question-circle:before{content:\\\"\\\\f059\\\"}.fa-info-circle:before{content:\\\"\\\\f05a\\\"}.fa-crosshairs:before{content:\\\"\\\\f05b\\\"}.fa-times-circle-o:before{content:\\\"\\\\f05c\\\"}.fa-check-circle-o:before{content:\\\"\\\\f05d\\\"}.fa-ban:before{content:\\\"\\\\f05e\\\"}.fa-arrow-left:before{content:\\\"\\\\f060\\\"}.fa-arrow-right:before{content:\\\"\\\\f061\\\"}.fa-arrow-up:before{content:\\\"\\\\f062\\\"}.fa-arrow-down:before{content:\\\"\\\\f063\\\"}.fa-mail-forward:before,.fa-share:before{content:\\\"\\\\f064\\\"}.fa-expand:before{content:\\\"\\\\f065\\\"}.fa-compress:before{content:\\\"\\\\f066\\\"}.fa-plus:before{content:\\\"\\\\f067\\\"}.fa-minus:before{content:\\\"\\\\f068\\\"}.fa-asterisk:before{content:\\\"\\\\f069\\\"}.fa-exclamation-circle:before{content:\\\"\\\\f06a\\\"}.fa-gift:before{content:\\\"\\\\f06b\\\"}.fa-leaf:before{content:\\\"\\\\f06c\\\"}.fa-fire:before{content:\\\"\\\\f06d\\\"}.fa-eye:before{content:\\\"\\\\f06e\\\"}.fa-eye-slash:before{content:\\\"\\\\f070\\\"}.fa-warning:before,.fa-exclamation-triangle:before{content:\\\"\\\\f071\\\"}.fa-plane:before{content:\\\"\\\\f072\\\"}.fa-calendar:before{content:\\\"\\\\f073\\\"}.fa-random:before{content:\\\"\\\\f074\\\"}.fa-comment:before{content:\\\"\\\\f075\\\"}.fa-magnet:before{content:\\\"\\\\f076\\\"}.fa-chevron-up:before{content:\\\"\\\\f077\\\"}.fa-chevron-down:before{content:\\\"\\\\f078\\\"}.fa-retweet:before{content:\\\"\\\\f079\\\"}.fa-shopping-cart:before{content:\\\"\\\\f07a\\\"}.fa-folder:before{content:\\\"\\\\f07b\\\"}.fa-folder-open:before{content:\\\"\\\\f07c\\\"}.fa-arrows-v:before{content:\\\"\\\\f07d\\\"}.fa-arrows-h:before{content:\\\"\\\\f07e\\\"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:\\\"\\\\f080\\\"}.fa-twitter-square:before{content:\\\"\\\\f081\\\"}.fa-facebook-square:before{content:\\\"\\\\f082\\\"}.fa-camera-retro:before{content:\\\"\\\\f083\\\"}.fa-key:before{content:\\\"\\\\f084\\\"}.fa-gears:before,.fa-cogs:before{content:\\\"\\\\f085\\\"}.fa-comments:before{content:\\\"\\\\f086\\\"}.fa-thumbs-o-up:before{content:\\\"\\\\f087\\\"}.fa-thumbs-o-down:before{content:\\\"\\\\f088\\\"}.fa-star-half:before{content:\\\"\\\\f089\\\"}.fa-heart-o:before{content:\\\"\\\\f08a\\\"}.fa-sign-out:before{content:\\\"\\\\f08b\\\"}.fa-linkedin-square:before{content:\\\"\\\\f08c\\\"}.fa-thumb-tack:before{content:\\\"\\\\f08d\\\"}.fa-external-link:before{content:\\\"\\\\f08e\\\"}.fa-sign-in:before{content:\\\"\\\\f090\\\"}.fa-trophy:before{content:\\\"\\\\f091\\\"}.fa-github-square:before{content:\\\"\\\\f092\\\"}.fa-upload:before{content:\\\"\\\\f093\\\"}.fa-lemon-o:before{content:\\\"\\\\f094\\\"}.fa-phone:before{content:\\\"\\\\f095\\\"}.fa-square-o:before{content:\\\"\\\\f096\\\"}.fa-bookmark-o:before{content:\\\"\\\\f097\\\"}.fa-phone-square:before{content:\\\"\\\\f098\\\"}.fa-twitter:before{content:\\\"\\\\f099\\\"}.fa-facebook-f:before,.fa-facebook:before{content:\\\"\\\\f09a\\\"}.fa-github:before{content:\\\"\\\\f09b\\\"}.fa-unlock:before{content:\\\"\\\\f09c\\\"}.fa-credit-card:before{content:\\\"\\\\f09d\\\"}.fa-feed:before,.fa-rss:before{content:\\\"\\\\f09e\\\"}.fa-hdd-o:before{content:\\\"\\\\f0a0\\\"}.fa-bullhorn:before{content:\\\"\\\\f0a1\\\"}.fa-bell:before{content:\\\"\\\\f0f3\\\"}.fa-certificate:before{content:\\\"\\\\f0a3\\\"}.fa-hand-o-right:before{content:\\\"\\\\f0a4\\\"}.fa-hand-o-left:before{content:\\\"\\\\f0a5\\\"}.fa-hand-o-up:before{content:\\\"\\\\f0a6\\\"}.fa-hand-o-down:before{content:\\\"\\\\f0a7\\\"}.fa-arrow-circle-left:before{content:\\\"\\\\f0a8\\\"}.fa-arrow-circle-right:before{content:\\\"\\\\f0a9\\\"}.fa-arrow-circle-up:before{content:\\\"\\\\f0aa\\\"}.fa-arrow-circle-down:before{content:\\\"\\\\f0ab\\\"}.fa-globe:before{content:\\\"\\\\f0ac\\\"}.fa-wrench:before{content:\\\"\\\\f0ad\\\"}.fa-tasks:before{content:\\\"\\\\f0ae\\\"}.fa-filter:before{content:\\\"\\\\f0b0\\\"}.fa-briefcase:before{content:\\\"\\\\f0b1\\\"}.fa-arrows-alt:before{content:\\\"\\\\f0b2\\\"}.fa-group:before,.fa-users:before{content:\\\"\\\\f0c0\\\"}.fa-chain:before,.fa-link:before{content:\\\"\\\\f0c1\\\"}.fa-cloud:before{content:\\\"\\\\f0c2\\\"}.fa-flask:before{content:\\\"\\\\f0c3\\\"}.fa-cut:before,.fa-scissors:before{content:\\\"\\\\f0c4\\\"}.fa-copy:before,.fa-files-o:before{content:\\\"\\\\f0c5\\\"}.fa-paperclip:before{content:\\\"\\\\f0c6\\\"}.fa-save:before,.fa-floppy-o:before{content:\\\"\\\\f0c7\\\"}.fa-square:before{content:\\\"\\\\f0c8\\\"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:\\\"\\\\f0c9\\\"}.fa-list-ul:before{content:\\\"\\\\f0ca\\\"}.fa-list-ol:before{content:\\\"\\\\f0cb\\\"}.fa-strikethrough:before{content:\\\"\\\\f0cc\\\"}.fa-underline:before{content:\\\"\\\\f0cd\\\"}.fa-table:before{content:\\\"\\\\f0ce\\\"}.fa-magic:before{content:\\\"\\\\f0d0\\\"}.fa-truck:before{content:\\\"\\\\f0d1\\\"}.fa-pinterest:before{content:\\\"\\\\f0d2\\\"}.fa-pinterest-square:before{content:\\\"\\\\f0d3\\\"}.fa-google-plus-square:before{content:\\\"\\\\f0d4\\\"}.fa-google-plus:before{content:\\\"\\\\f0d5\\\"}.fa-money:before{content:\\\"\\\\f0d6\\\"}.fa-caret-down:before{content:\\\"\\\\f0d7\\\"}.fa-caret-up:before{content:\\\"\\\\f0d8\\\"}.fa-caret-left:before{content:\\\"\\\\f0d9\\\"}.fa-caret-right:before{content:\\\"\\\\f0da\\\"}.fa-columns:before{content:\\\"\\\\f0db\\\"}.fa-unsorted:before,.fa-sort:before{content:\\\"\\\\f0dc\\\"}.fa-sort-down:before,.fa-sort-desc:before{content:\\\"\\\\f0dd\\\"}.fa-sort-up:before,.fa-sort-asc:before{content:\\\"\\\\f0de\\\"}.fa-envelope:before{content:\\\"\\\\f0e0\\\"}.fa-linkedin:before{content:\\\"\\\\f0e1\\\"}.fa-rotate-left:before,.fa-undo:before{content:\\\"\\\\f0e2\\\"}.fa-legal:before,.fa-gavel:before{content:\\\"\\\\f0e3\\\"}.fa-dashboard:before,.fa-tachometer:before{content:\\\"\\\\f0e4\\\"}.fa-comment-o:before{content:\\\"\\\\f0e5\\\"}.fa-comments-o:before{content:\\\"\\\\f0e6\\\"}.fa-flash:before,.fa-bolt:before{content:\\\"\\\\f0e7\\\"}.fa-sitemap:before{content:\\\"\\\\f0e8\\\"}.fa-umbrella:before{content:\\\"\\\\f0e9\\\"}.fa-paste:before,.fa-clipboard:before{content:\\\"\\\\f0ea\\\"}.fa-lightbulb-o:before{content:\\\"\\\\f0eb\\\"}.fa-exchange:before{content:\\\"\\\\f0ec\\\"}.fa-cloud-download:before{content:\\\"\\\\f0ed\\\"}.fa-cloud-upload:before{content:\\\"\\\\f0ee\\\"}.fa-user-md:before{content:\\\"\\\\f0f0\\\"}.fa-stethoscope:before{content:\\\"\\\\f0f1\\\"}.fa-suitcase:before{content:\\\"\\\\f0f2\\\"}.fa-bell-o:before{content:\\\"\\\\f0a2\\\"}.fa-coffee:before{content:\\\"\\\\f0f4\\\"}.fa-cutlery:before{content:\\\"\\\\f0f5\\\"}.fa-file-text-o:before{content:\\\"\\\\f0f6\\\"}.fa-building-o:before{content:\\\"\\\\f0f7\\\"}.fa-hospital-o:before{content:\\\"\\\\f0f8\\\"}.fa-ambulance:before{content:\\\"\\\\f0f9\\\"}.fa-medkit:before{content:\\\"\\\\f0fa\\\"}.fa-fighter-jet:before{content:\\\"\\\\f0fb\\\"}.fa-beer:before{content:\\\"\\\\f0fc\\\"}.fa-h-square:before{content:\\\"\\\\f0fd\\\"}.fa-plus-square:before{content:\\\"\\\\f0fe\\\"}.fa-angle-double-left:before{content:\\\"\\\\f100\\\"}.fa-angle-double-right:before{content:\\\"\\\\f101\\\"}.fa-angle-double-up:before{content:\\\"\\\\f102\\\"}.fa-angle-double-down:before{content:\\\"\\\\f103\\\"}.fa-angle-left:before{content:\\\"\\\\f104\\\"}.fa-angle-right:before{content:\\\"\\\\f105\\\"}.fa-angle-up:before{content:\\\"\\\\f106\\\"}.fa-angle-down:before{content:\\\"\\\\f107\\\"}.fa-desktop:before{content:\\\"\\\\f108\\\"}.fa-laptop:before{content:\\\"\\\\f109\\\"}.fa-tablet:before{content:\\\"\\\\f10a\\\"}.fa-mobile-phone:before,.fa-mobile:before{content:\\\"\\\\f10b\\\"}.fa-circle-o:before{content:\\\"\\\\f10c\\\"}.fa-quote-left:before{content:\\\"\\\\f10d\\\"}.fa-quote-right:before{content:\\\"\\\\f10e\\\"}.fa-spinner:before{content:\\\"\\\\f110\\\"}.fa-circle:before{content:\\\"\\\\f111\\\"}.fa-mail-reply:before,.fa-reply:before{content:\\\"\\\\f112\\\"}.fa-github-alt:before{content:\\\"\\\\f113\\\"}.fa-folder-o:before{content:\\\"\\\\f114\\\"}.fa-folder-open-o:before{content:\\\"\\\\f115\\\"}.fa-smile-o:before{content:\\\"\\\\f118\\\"}.fa-frown-o:before{content:\\\"\\\\f119\\\"}.fa-meh-o:before{content:\\\"\\\\f11a\\\"}.fa-gamepad:before{content:\\\"\\\\f11b\\\"}.fa-keyboard-o:before{content:\\\"\\\\f11c\\\"}.fa-flag-o:before{content:\\\"\\\\f11d\\\"}.fa-flag-checkered:before{content:\\\"\\\\f11e\\\"}.fa-terminal:before{content:\\\"\\\\f120\\\"}.fa-code:before{content:\\\"\\\\f121\\\"}.fa-mail-reply-all:before,.fa-reply-all:before{content:\\\"\\\\f122\\\"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:\\\"\\\\f123\\\"}.fa-location-arrow:before{content:\\\"\\\\f124\\\"}.fa-crop:before{content:\\\"\\\\f125\\\"}.fa-code-fork:before{content:\\\"\\\\f126\\\"}.fa-unlink:before,.fa-chain-broken:before{content:\\\"\\\\f127\\\"}.fa-question:before{content:\\\"\\\\f128\\\"}.fa-info:before{content:\\\"\\\\f129\\\"}.fa-exclamation:before{content:\\\"\\\\f12a\\\"}.fa-superscript:before{content:\\\"\\\\f12b\\\"}.fa-subscript:before{content:\\\"\\\\f12c\\\"}.fa-eraser:before{content:\\\"\\\\f12d\\\"}.fa-puzzle-piece:before{content:\\\"\\\\f12e\\\"}.fa-microphone:before{content:\\\"\\\\f130\\\"}.fa-microphone-slash:before{content:\\\"\\\\f131\\\"}.fa-shield:before{content:\\\"\\\\f132\\\"}.fa-calendar-o:before{content:\\\"\\\\f133\\\"}.fa-fire-extinguisher:before{content:\\\"\\\\f134\\\"}.fa-rocket:before{content:\\\"\\\\f135\\\"}.fa-maxcdn:before{content:\\\"\\\\f136\\\"}.fa-chevron-circle-left:before{content:\\\"\\\\f137\\\"}.fa-chevron-circle-right:before{content:\\\"\\\\f138\\\"}.fa-chevron-circle-up:before{content:\\\"\\\\f139\\\"}.fa-chevron-circle-down:before{content:\\\"\\\\f13a\\\"}.fa-html5:before{content:\\\"\\\\f13b\\\"}.fa-css3:before{content:\\\"\\\\f13c\\\"}.fa-anchor:before{content:\\\"\\\\f13d\\\"}.fa-unlock-alt:before{content:\\\"\\\\f13e\\\"}.fa-bullseye:before{content:\\\"\\\\f140\\\"}.fa-ellipsis-h:before{content:\\\"\\\\f141\\\"}.fa-ellipsis-v:before{content:\\\"\\\\f142\\\"}.fa-rss-square:before{content:\\\"\\\\f143\\\"}.fa-play-circle:before{content:\\\"\\\\f144\\\"}.fa-ticket:before{content:\\\"\\\\f145\\\"}.fa-minus-square:before{content:\\\"\\\\f146\\\"}.fa-minus-square-o:before{content:\\\"\\\\f147\\\"}.fa-level-up:before{content:\\\"\\\\f148\\\"}.fa-level-down:before{content:\\\"\\\\f149\\\"}.fa-check-square:before{content:\\\"\\\\f14a\\\"}.fa-pencil-square:before{content:\\\"\\\\f14b\\\"}.fa-external-link-square:before{content:\\\"\\\\f14c\\\"}.fa-share-square:before{content:\\\"\\\\f14d\\\"}.fa-compass:before{content:\\\"\\\\f14e\\\"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:\\\"\\\\f150\\\"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:\\\"\\\\f151\\\"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:\\\"\\\\f152\\\"}.fa-euro:before,.fa-eur:before{content:\\\"\\\\f153\\\"}.fa-gbp:before{content:\\\"\\\\f154\\\"}.fa-dollar:before,.fa-usd:before{content:\\\"\\\\f155\\\"}.fa-rupee:before,.fa-inr:before{content:\\\"\\\\f156\\\"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:\\\"\\\\f157\\\"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:\\\"\\\\f158\\\"}.fa-won:before,.fa-krw:before{content:\\\"\\\\f159\\\"}.fa-bitcoin:before,.fa-btc:before{content:\\\"\\\\f15a\\\"}.fa-file:before{content:\\\"\\\\f15b\\\"}.fa-file-text:before{content:\\\"\\\\f15c\\\"}.fa-sort-alpha-asc:before{content:\\\"\\\\f15d\\\"}.fa-sort-alpha-desc:before{content:\\\"\\\\f15e\\\"}.fa-sort-amount-asc:before{content:\\\"\\\\f160\\\"}.fa-sort-amount-desc:before{content:\\\"\\\\f161\\\"}.fa-sort-numeric-asc:before{content:\\\"\\\\f162\\\"}.fa-sort-numeric-desc:before{content:\\\"\\\\f163\\\"}.fa-thumbs-up:before{content:\\\"\\\\f164\\\"}.fa-thumbs-down:before{content:\\\"\\\\f165\\\"}.fa-youtube-square:before{content:\\\"\\\\f166\\\"}.fa-youtube:before{content:\\\"\\\\f167\\\"}.fa-xing:before{content:\\\"\\\\f168\\\"}.fa-xing-square:before{content:\\\"\\\\f169\\\"}.fa-youtube-play:before{content:\\\"\\\\f16a\\\"}.fa-dropbox:before{content:\\\"\\\\f16b\\\"}.fa-stack-overflow:before{content:\\\"\\\\f16c\\\"}.fa-instagram:before{content:\\\"\\\\f16d\\\"}.fa-flickr:before{content:\\\"\\\\f16e\\\"}.fa-adn:before{content:\\\"\\\\f170\\\"}.fa-bitbucket:before{content:\\\"\\\\f171\\\"}.fa-bitbucket-square:before{content:\\\"\\\\f172\\\"}.fa-tumblr:before{content:\\\"\\\\f173\\\"}.fa-tumblr-square:before{content:\\\"\\\\f174\\\"}.fa-long-arrow-down:before{content:\\\"\\\\f175\\\"}.fa-long-arrow-up:before{content:\\\"\\\\f176\\\"}.fa-long-arrow-left:before{content:\\\"\\\\f177\\\"}.fa-long-arrow-right:before{content:\\\"\\\\f178\\\"}.fa-apple:before{content:\\\"\\\\f179\\\"}.fa-windows:before{content:\\\"\\\\f17a\\\"}.fa-android:before{content:\\\"\\\\f17b\\\"}.fa-linux:before{content:\\\"\\\\f17c\\\"}.fa-dribbble:before{content:\\\"\\\\f17d\\\"}.fa-skype:before{content:\\\"\\\\f17e\\\"}.fa-foursquare:before{content:\\\"\\\\f180\\\"}.fa-trello:before{content:\\\"\\\\f181\\\"}.fa-female:before{content:\\\"\\\\f182\\\"}.fa-male:before{content:\\\"\\\\f183\\\"}.fa-gittip:before,.fa-gratipay:before{content:\\\"\\\\f184\\\"}.fa-sun-o:before{content:\\\"\\\\f185\\\"}.fa-moon-o:before{content:\\\"\\\\f186\\\"}.fa-archive:before{content:\\\"\\\\f187\\\"}.fa-bug:before{content:\\\"\\\\f188\\\"}.fa-vk:before{content:\\\"\\\\f189\\\"}.fa-weibo:before{content:\\\"\\\\f18a\\\"}.fa-renren:before{content:\\\"\\\\f18b\\\"}.fa-pagelines:before{content:\\\"\\\\f18c\\\"}.fa-stack-exchange:before{content:\\\"\\\\f18d\\\"}.fa-arrow-circle-o-right:before{content:\\\"\\\\f18e\\\"}.fa-arrow-circle-o-left:before{content:\\\"\\\\f190\\\"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:\\\"\\\\f191\\\"}.fa-dot-circle-o:before{content:\\\"\\\\f192\\\"}.fa-wheelchair:before{content:\\\"\\\\f193\\\"}.fa-vimeo-square:before{content:\\\"\\\\f194\\\"}.fa-turkish-lira:before,.fa-try:before{content:\\\"\\\\f195\\\"}.fa-plus-square-o:before{content:\\\"\\\\f196\\\"}.fa-space-shuttle:before{content:\\\"\\\\f197\\\"}.fa-slack:before{content:\\\"\\\\f198\\\"}.fa-envelope-square:before{content:\\\"\\\\f199\\\"}.fa-wordpress:before{content:\\\"\\\\f19a\\\"}.fa-openid:before{content:\\\"\\\\f19b\\\"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:\\\"\\\\f19c\\\"}.fa-mortar-board:before,.fa-graduation-cap:before{content:\\\"\\\\f19d\\\"}.fa-yahoo:before{content:\\\"\\\\f19e\\\"}.fa-google:before{content:\\\"\\\\f1a0\\\"}.fa-reddit:before{content:\\\"\\\\f1a1\\\"}.fa-reddit-square:before{content:\\\"\\\\f1a2\\\"}.fa-stumbleupon-circle:before{content:\\\"\\\\f1a3\\\"}.fa-stumbleupon:before{content:\\\"\\\\f1a4\\\"}.fa-delicious:before{content:\\\"\\\\f1a5\\\"}.fa-digg:before{content:\\\"\\\\f1a6\\\"}.fa-pied-piper-pp:before{content:\\\"\\\\f1a7\\\"}.fa-pied-piper-alt:before{content:\\\"\\\\f1a8\\\"}.fa-drupal:before{content:\\\"\\\\f1a9\\\"}.fa-joomla:before{content:\\\"\\\\f1aa\\\"}.fa-language:before{content:\\\"\\\\f1ab\\\"}.fa-fax:before{content:\\\"\\\\f1ac\\\"}.fa-building:before{content:\\\"\\\\f1ad\\\"}.fa-child:before{content:\\\"\\\\f1ae\\\"}.fa-paw:before{content:\\\"\\\\f1b0\\\"}.fa-spoon:before{content:\\\"\\\\f1b1\\\"}.fa-cube:before{content:\\\"\\\\f1b2\\\"}.fa-cubes:before{content:\\\"\\\\f1b3\\\"}.fa-behance:before{content:\\\"\\\\f1b4\\\"}.fa-behance-square:before{content:\\\"\\\\f1b5\\\"}.fa-steam:before{content:\\\"\\\\f1b6\\\"}.fa-steam-square:before{content:\\\"\\\\f1b7\\\"}.fa-recycle:before{content:\\\"\\\\f1b8\\\"}.fa-automobile:before,.fa-car:before{content:\\\"\\\\f1b9\\\"}.fa-cab:before,.fa-taxi:before{content:\\\"\\\\f1ba\\\"}.fa-tree:before{content:\\\"\\\\f1bb\\\"}.fa-spotify:before{content:\\\"\\\\f1bc\\\"}.fa-deviantart:before{content:\\\"\\\\f1bd\\\"}.fa-soundcloud:before{content:\\\"\\\\f1be\\\"}.fa-database:before{content:\\\"\\\\f1c0\\\"}.fa-file-pdf-o:before{content:\\\"\\\\f1c1\\\"}.fa-file-word-o:before{content:\\\"\\\\f1c2\\\"}.fa-file-excel-o:before{content:\\\"\\\\f1c3\\\"}.fa-file-powerpoint-o:before{content:\\\"\\\\f1c4\\\"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:\\\"\\\\f1c5\\\"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:\\\"\\\\f1c6\\\"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:\\\"\\\\f1c7\\\"}.fa-file-movie-o:before,.fa-file-video-o:before{content:\\\"\\\\f1c8\\\"}.fa-file-code-o:before{content:\\\"\\\\f1c9\\\"}.fa-vine:before{content:\\\"\\\\f1ca\\\"}.fa-codepen:before{content:\\\"\\\\f1cb\\\"}.fa-jsfiddle:before{content:\\\"\\\\f1cc\\\"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:\\\"\\\\f1cd\\\"}.fa-circle-o-notch:before{content:\\\"\\\\f1ce\\\"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:\\\"\\\\f1d0\\\"}.fa-ge:before,.fa-empire:before{content:\\\"\\\\f1d1\\\"}.fa-git-square:before{content:\\\"\\\\f1d2\\\"}.fa-git:before{content:\\\"\\\\f1d3\\\"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:\\\"\\\\f1d4\\\"}.fa-tencent-weibo:before{content:\\\"\\\\f1d5\\\"}.fa-qq:before{content:\\\"\\\\f1d6\\\"}.fa-wechat:before,.fa-weixin:before{content:\\\"\\\\f1d7\\\"}.fa-send:before,.fa-paper-plane:before{content:\\\"\\\\f1d8\\\"}.fa-send-o:before,.fa-paper-plane-o:before{content:\\\"\\\\f1d9\\\"}.fa-history:before{content:\\\"\\\\f1da\\\"}.fa-circle-thin:before{content:\\\"\\\\f1db\\\"}.fa-header:before{content:\\\"\\\\f1dc\\\"}.fa-paragraph:before{content:\\\"\\\\f1dd\\\"}.fa-sliders:before{content:\\\"\\\\f1de\\\"}.fa-share-alt:before{content:\\\"\\\\f1e0\\\"}.fa-share-alt-square:before{content:\\\"\\\\f1e1\\\"}.fa-bomb:before{content:\\\"\\\\f1e2\\\"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:\\\"\\\\f1e3\\\"}.fa-tty:before{content:\\\"\\\\f1e4\\\"}.fa-binoculars:before{content:\\\"\\\\f1e5\\\"}.fa-plug:before{content:\\\"\\\\f1e6\\\"}.fa-slideshare:before{content:\\\"\\\\f1e7\\\"}.fa-twitch:before{content:\\\"\\\\f1e8\\\"}.fa-yelp:before{content:\\\"\\\\f1e9\\\"}.fa-newspaper-o:before{content:\\\"\\\\f1ea\\\"}.fa-wifi:before{content:\\\"\\\\f1eb\\\"}.fa-calculator:before{content:\\\"\\\\f1ec\\\"}.fa-paypal:before{content:\\\"\\\\f1ed\\\"}.fa-google-wallet:before{content:\\\"\\\\f1ee\\\"}.fa-cc-visa:before{content:\\\"\\\\f1f0\\\"}.fa-cc-mastercard:before{content:\\\"\\\\f1f1\\\"}.fa-cc-discover:before{content:\\\"\\\\f1f2\\\"}.fa-cc-amex:before{content:\\\"\\\\f1f3\\\"}.fa-cc-paypal:before{content:\\\"\\\\f1f4\\\"}.fa-cc-stripe:before{content:\\\"\\\\f1f5\\\"}.fa-bell-slash:before{content:\\\"\\\\f1f6\\\"}.fa-bell-slash-o:before{content:\\\"\\\\f1f7\\\"}.fa-trash:before{content:\\\"\\\\f1f8\\\"}.fa-copyright:before{content:\\\"\\\\f1f9\\\"}.fa-at:before{content:\\\"\\\\f1fa\\\"}.fa-eyedropper:before{content:\\\"\\\\f1fb\\\"}.fa-paint-brush:before{content:\\\"\\\\f1fc\\\"}.fa-birthday-cake:before{content:\\\"\\\\f1fd\\\"}.fa-area-chart:before{content:\\\"\\\\f1fe\\\"}.fa-pie-chart:before{content:\\\"\\\\f200\\\"}.fa-line-chart:before{content:\\\"\\\\f201\\\"}.fa-lastfm:before{content:\\\"\\\\f202\\\"}.fa-lastfm-square:before{content:\\\"\\\\f203\\\"}.fa-toggle-off:before{content:\\\"\\\\f204\\\"}.fa-toggle-on:before{content:\\\"\\\\f205\\\"}.fa-bicycle:before{content:\\\"\\\\f206\\\"}.fa-bus:before{content:\\\"\\\\f207\\\"}.fa-ioxhost:before{content:\\\"\\\\f208\\\"}.fa-angellist:before{content:\\\"\\\\f209\\\"}.fa-cc:before{content:\\\"\\\\f20a\\\"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:\\\"\\\\f20b\\\"}.fa-meanpath:before{content:\\\"\\\\f20c\\\"}.fa-buysellads:before{content:\\\"\\\\f20d\\\"}.fa-connectdevelop:before{content:\\\"\\\\f20e\\\"}.fa-dashcube:before{content:\\\"\\\\f210\\\"}.fa-forumbee:before{content:\\\"\\\\f211\\\"}.fa-leanpub:before{content:\\\"\\\\f212\\\"}.fa-sellsy:before{content:\\\"\\\\f213\\\"}.fa-shirtsinbulk:before{content:\\\"\\\\f214\\\"}.fa-simplybuilt:before{content:\\\"\\\\f215\\\"}.fa-skyatlas:before{content:\\\"\\\\f216\\\"}.fa-cart-plus:before{content:\\\"\\\\f217\\\"}.fa-cart-arrow-down:before{content:\\\"\\\\f218\\\"}.fa-diamond:before{content:\\\"\\\\f219\\\"}.fa-ship:before{content:\\\"\\\\f21a\\\"}.fa-user-secret:before{content:\\\"\\\\f21b\\\"}.fa-motorcycle:before{content:\\\"\\\\f21c\\\"}.fa-street-view:before{content:\\\"\\\\f21d\\\"}.fa-heartbeat:before{content:\\\"\\\\f21e\\\"}.fa-venus:before{content:\\\"\\\\f221\\\"}.fa-mars:before{content:\\\"\\\\f222\\\"}.fa-mercury:before{content:\\\"\\\\f223\\\"}.fa-intersex:before,.fa-transgender:before{content:\\\"\\\\f224\\\"}.fa-transgender-alt:before{content:\\\"\\\\f225\\\"}.fa-venus-double:before{content:\\\"\\\\f226\\\"}.fa-mars-double:before{content:\\\"\\\\f227\\\"}.fa-venus-mars:before{content:\\\"\\\\f228\\\"}.fa-mars-stroke:before{content:\\\"\\\\f229\\\"}.fa-mars-stroke-v:before{content:\\\"\\\\f22a\\\"}.fa-mars-stroke-h:before{content:\\\"\\\\f22b\\\"}.fa-neuter:before{content:\\\"\\\\f22c\\\"}.fa-genderless:before{content:\\\"\\\\f22d\\\"}.fa-facebook-official:before{content:\\\"\\\\f230\\\"}.fa-pinterest-p:before{content:\\\"\\\\f231\\\"}.fa-whatsapp:before{content:\\\"\\\\f232\\\"}.fa-server:before{content:\\\"\\\\f233\\\"}.fa-user-plus:before{content:\\\"\\\\f234\\\"}.fa-user-times:before{content:\\\"\\\\f235\\\"}.fa-hotel:before,.fa-bed:before{content:\\\"\\\\f236\\\"}.fa-viacoin:before{content:\\\"\\\\f237\\\"}.fa-train:before{content:\\\"\\\\f238\\\"}.fa-subway:before{content:\\\"\\\\f239\\\"}.fa-medium:before{content:\\\"\\\\f23a\\\"}.fa-yc:before,.fa-y-combinator:before{content:\\\"\\\\f23b\\\"}.fa-optin-monster:before{content:\\\"\\\\f23c\\\"}.fa-opencart:before{content:\\\"\\\\f23d\\\"}.fa-expeditedssl:before{content:\\\"\\\\f23e\\\"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:\\\"\\\\f240\\\"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:\\\"\\\\f241\\\"}.fa-battery-2:before,.fa-battery-half:before{content:\\\"\\\\f242\\\"}.fa-battery-1:before,.fa-battery-quarter:before{content:\\\"\\\\f243\\\"}.fa-battery-0:before,.fa-battery-empty:before{content:\\\"\\\\f244\\\"}.fa-mouse-pointer:before{content:\\\"\\\\f245\\\"}.fa-i-cursor:before{content:\\\"\\\\f246\\\"}.fa-object-group:before{content:\\\"\\\\f247\\\"}.fa-object-ungroup:before{content:\\\"\\\\f248\\\"}.fa-sticky-note:before{content:\\\"\\\\f249\\\"}.fa-sticky-note-o:before{content:\\\"\\\\f24a\\\"}.fa-cc-jcb:before{content:\\\"\\\\f24b\\\"}.fa-cc-diners-club:before{content:\\\"\\\\f24c\\\"}.fa-clone:before{content:\\\"\\\\f24d\\\"}.fa-balance-scale:before{content:\\\"\\\\f24e\\\"}.fa-hourglass-o:before{content:\\\"\\\\f250\\\"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:\\\"\\\\f251\\\"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:\\\"\\\\f252\\\"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:\\\"\\\\f253\\\"}.fa-hourglass:before{content:\\\"\\\\f254\\\"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:\\\"\\\\f255\\\"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:\\\"\\\\f256\\\"}.fa-hand-scissors-o:before{content:\\\"\\\\f257\\\"}.fa-hand-lizard-o:before{content:\\\"\\\\f258\\\"}.fa-hand-spock-o:before{content:\\\"\\\\f259\\\"}.fa-hand-pointer-o:before{content:\\\"\\\\f25a\\\"}.fa-hand-peace-o:before{content:\\\"\\\\f25b\\\"}.fa-trademark:before{content:\\\"\\\\f25c\\\"}.fa-registered:before{content:\\\"\\\\f25d\\\"}.fa-creative-commons:before{content:\\\"\\\\f25e\\\"}.fa-gg:before{content:\\\"\\\\f260\\\"}.fa-gg-circle:before{content:\\\"\\\\f261\\\"}.fa-tripadvisor:before{content:\\\"\\\\f262\\\"}.fa-odnoklassniki:before{content:\\\"\\\\f263\\\"}.fa-odnoklassniki-square:before{content:\\\"\\\\f264\\\"}.fa-get-pocket:before{content:\\\"\\\\f265\\\"}.fa-wikipedia-w:before{content:\\\"\\\\f266\\\"}.fa-safari:before{content:\\\"\\\\f267\\\"}.fa-chrome:before{content:\\\"\\\\f268\\\"}.fa-firefox:before{content:\\\"\\\\f269\\\"}.fa-opera:before{content:\\\"\\\\f26a\\\"}.fa-internet-explorer:before{content:\\\"\\\\f26b\\\"}.fa-tv:before,.fa-television:before{content:\\\"\\\\f26c\\\"}.fa-contao:before{content:\\\"\\\\f26d\\\"}.fa-500px:before{content:\\\"\\\\f26e\\\"}.fa-amazon:before{content:\\\"\\\\f270\\\"}.fa-calendar-plus-o:before{content:\\\"\\\\f271\\\"}.fa-calendar-minus-o:before{content:\\\"\\\\f272\\\"}.fa-calendar-times-o:before{content:\\\"\\\\f273\\\"}.fa-calendar-check-o:before{content:\\\"\\\\f274\\\"}.fa-industry:before{content:\\\"\\\\f275\\\"}.fa-map-pin:before{content:\\\"\\\\f276\\\"}.fa-map-signs:before{content:\\\"\\\\f277\\\"}.fa-map-o:before{content:\\\"\\\\f278\\\"}.fa-map:before{content:\\\"\\\\f279\\\"}.fa-commenting:before{content:\\\"\\\\f27a\\\"}.fa-commenting-o:before{content:\\\"\\\\f27b\\\"}.fa-houzz:before{content:\\\"\\\\f27c\\\"}.fa-vimeo:before{content:\\\"\\\\f27d\\\"}.fa-black-tie:before{content:\\\"\\\\f27e\\\"}.fa-fonticons:before{content:\\\"\\\\f280\\\"}.fa-reddit-alien:before{content:\\\"\\\\f281\\\"}.fa-edge:before{content:\\\"\\\\f282\\\"}.fa-credit-card-alt:before{content:\\\"\\\\f283\\\"}.fa-codiepie:before{content:\\\"\\\\f284\\\"}.fa-modx:before{content:\\\"\\\\f285\\\"}.fa-fort-awesome:before{content:\\\"\\\\f286\\\"}.fa-usb:before{content:\\\"\\\\f287\\\"}.fa-product-hunt:before{content:\\\"\\\\f288\\\"}.fa-mixcloud:before{content:\\\"\\\\f289\\\"}.fa-scribd:before{content:\\\"\\\\f28a\\\"}.fa-pause-circle:before{content:\\\"\\\\f28b\\\"}.fa-pause-circle-o:before{content:\\\"\\\\f28c\\\"}.fa-stop-circle:before{content:\\\"\\\\f28d\\\"}.fa-stop-circle-o:before{content:\\\"\\\\f28e\\\"}.fa-shopping-bag:before{content:\\\"\\\\f290\\\"}.fa-shopping-basket:before{content:\\\"\\\\f291\\\"}.fa-hashtag:before{content:\\\"\\\\f292\\\"}.fa-bluetooth:before{content:\\\"\\\\f293\\\"}.fa-bluetooth-b:before{content:\\\"\\\\f294\\\"}.fa-percent:before{content:\\\"\\\\f295\\\"}.fa-gitlab:before{content:\\\"\\\\f296\\\"}.fa-wpbeginner:before{content:\\\"\\\\f297\\\"}.fa-wpforms:before{content:\\\"\\\\f298\\\"}.fa-envira:before{content:\\\"\\\\f299\\\"}.fa-universal-access:before{content:\\\"\\\\f29a\\\"}.fa-wheelchair-alt:before{content:\\\"\\\\f29b\\\"}.fa-question-circle-o:before{content:\\\"\\\\f29c\\\"}.fa-blind:before{content:\\\"\\\\f29d\\\"}.fa-audio-description:before{content:\\\"\\\\f29e\\\"}.fa-volume-control-phone:before{content:\\\"\\\\f2a0\\\"}.fa-braille:before{content:\\\"\\\\f2a1\\\"}.fa-assistive-listening-systems:before{content:\\\"\\\\f2a2\\\"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:\\\"\\\\f2a3\\\"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:\\\"\\\\f2a4\\\"}.fa-glide:before{content:\\\"\\\\f2a5\\\"}.fa-glide-g:before{content:\\\"\\\\f2a6\\\"}.fa-signing:before,.fa-sign-language:before{content:\\\"\\\\f2a7\\\"}.fa-low-vision:before{content:\\\"\\\\f2a8\\\"}.fa-viadeo:before{content:\\\"\\\\f2a9\\\"}.fa-viadeo-square:before{content:\\\"\\\\f2aa\\\"}.fa-snapchat:before{content:\\\"\\\\f2ab\\\"}.fa-snapchat-ghost:before{content:\\\"\\\\f2ac\\\"}.fa-snapchat-square:before{content:\\\"\\\\f2ad\\\"}.fa-pied-piper:before{content:\\\"\\\\f2ae\\\"}.fa-first-order:before{content:\\\"\\\\f2b0\\\"}.fa-yoast:before{content:\\\"\\\\f2b1\\\"}.fa-themeisle:before{content:\\\"\\\\f2b2\\\"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:\\\"\\\\f2b3\\\"}.fa-fa:before,.fa-font-awesome:before{content:\\\"\\\\f2b4\\\"}.fa-handshake-o:before{content:\\\"\\\\f2b5\\\"}.fa-envelope-open:before{content:\\\"\\\\f2b6\\\"}.fa-envelope-open-o:before{content:\\\"\\\\f2b7\\\"}.fa-linode:before{content:\\\"\\\\f2b8\\\"}.fa-address-book:before{content:\\\"\\\\f2b9\\\"}.fa-address-book-o:before{content:\\\"\\\\f2ba\\\"}.fa-vcard:before,.fa-address-card:before{content:\\\"\\\\f2bb\\\"}.fa-vcard-o:before,.fa-address-card-o:before{content:\\\"\\\\f2bc\\\"}.fa-user-circle:before{content:\\\"\\\\f2bd\\\"}.fa-user-circle-o:before{content:\\\"\\\\f2be\\\"}.fa-user-o:before{content:\\\"\\\\f2c0\\\"}.fa-id-badge:before{content:\\\"\\\\f2c1\\\"}.fa-drivers-license:before,.fa-id-card:before{content:\\\"\\\\f2c2\\\"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:\\\"\\\\f2c3\\\"}.fa-quora:before{content:\\\"\\\\f2c4\\\"}.fa-free-code-camp:before{content:\\\"\\\\f2c5\\\"}.fa-telegram:before{content:\\\"\\\\f2c6\\\"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:\\\"\\\\f2c7\\\"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:\\\"\\\\f2c8\\\"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:\\\"\\\\f2c9\\\"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:\\\"\\\\f2ca\\\"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:\\\"\\\\f2cb\\\"}.fa-shower:before{content:\\\"\\\\f2cc\\\"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:\\\"\\\\f2cd\\\"}.fa-podcast:before{content:\\\"\\\\f2ce\\\"}.fa-window-maximize:before{content:\\\"\\\\f2d0\\\"}.fa-window-minimize:before{content:\\\"\\\\f2d1\\\"}.fa-window-restore:before{content:\\\"\\\\f2d2\\\"}.fa-times-rectangle:before,.fa-window-close:before{content:\\\"\\\\f2d3\\\"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:\\\"\\\\f2d4\\\"}.fa-bandcamp:before{content:\\\"\\\\f2d5\\\"}.fa-grav:before{content:\\\"\\\\f2d6\\\"}.fa-etsy:before{content:\\\"\\\\f2d7\\\"}.fa-imdb:before{content:\\\"\\\\f2d8\\\"}.fa-ravelry:before{content:\\\"\\\\f2d9\\\"}.fa-eercast:before{content:\\\"\\\\f2da\\\"}.fa-microchip:before{content:\\\"\\\\f2db\\\"}.fa-snowflake-o:before{content:\\\"\\\\f2dc\\\"}.fa-superpowers:before{content:\\\"\\\\f2dd\\\"}.fa-wpexplorer:before{content:\\\"\\\\f2de\\\"}.fa-meetup:before{content:\\\"\\\\f2e0\\\"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}a{cursor:pointer}.angular-editor-textarea{min-height:150px;overflow:auto;margin-top:5px;resize:vertical}.angular-editor-textarea:after{content:\\\"\\\";position:absolute;bottom:0;right:0;display:block;width:8px;height:8px;cursor:nwse-resize;background-color:#ffffff80}.angular-editor-toolbar{font:100 14px/15px Roboto,Arial,sans-serif;background-color:#f5f5f5;font-size:.8rem;padding:.2rem;border:1px solid #ddd}.angular-editor-toolbar .angular-editor-toolbar-set{display:none;margin-right:5px;vertical-align:baseline}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button{background-color:#fff;vertical-align:middle;border:1px solid #ddd;padding:.4rem;min-width:2rem;float:left}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:focus,.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.focus{outline:0}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label{pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.foreground :after{background:#555555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.background{background:#555555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active{background:#fff5b9}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active:hover{background-color:#fffa98}.angular-editor-toolbar .angular-editor-toolbar-set select{font-size:11px;width:90px;vertical-align:middle;background-color:transparent;border:.5px solid rgba(255,255,255,0);border-radius:5px;outline:none;padding:.4rem;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-heading optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .default{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h1{font-size:24px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h2{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h3{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h4{font-size:15px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h5{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h6{font-size:13px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .div,.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .pre{font-size:12px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size{display:inline-block;width:50px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size1{font-size:10px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size2{font-size:12px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size3{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size4{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size5{font-size:18px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size6{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size7{font-size:22px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .color-label{position:relative;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .background{font-size:smaller;background:#1b1b1b;color:#fff;padding:3px}.angular-editor-toolbar .angular-editor-toolbar-set .foreground :after{position:absolute;content:\\\"\\\";left:-1px;top:auto;bottom:-3px;right:auto;width:15px;height:2px;z-index:0;background:#1b1b1b}.angular-editor-toolbar .angular-editor-toolbar-set:not([style*=\\\"display:none\\\"]):not([style*=\\\"display: none\\\"]){display:inline-block}.angular-editor{position:relative}.angular-editor ::ng-deep [contenteditable=true]:empty:before{content:attr(placeholder);color:#868e96;opacity:1}.angular-editor .angular-editor-wrapper{position:relative}.angular-editor .angular-editor-wrapper .angular-editor-textarea{min-height:5rem;padding:.5rem .8rem 1rem;border:1px solid #ddd;background-color:transparent;overflow-x:hidden;overflow-y:auto;position:relative}.angular-editor .angular-editor-wrapper .angular-editor-textarea ::ng-deep blockquote{margin-left:1rem;border-left:.2em solid #dfe2e5;padding-left:.5rem}.angular-editor .angular-editor-wrapper ::ng-deep p{margin-bottom:0}.angular-editor .angular-editor-wrapper .angular-editor-placeholder{display:none;position:absolute;top:0;padding:.5rem .8rem 1rem .9rem;color:#6c757d;opacity:.75}.angular-editor .angular-editor-wrapper.show-placeholder .angular-editor-placeholder{display:block}.angular-editor .angular-editor-wrapper.disabled{cursor:not-allowed;opacity:.5;pointer-events:none}\\n\"], components: [{ type: AngularEditorToolbarComponent, selector: \"angular-editor-toolbar\", inputs: [\"id\", \"uploadUrl\", \"upload\", \"showToolbar\", \"fonts\", \"customClasses\", \"defaultFontName\", \"defaultFontSize\", \"hiddenButtons\"], outputs: [\"execute\"] }], directives: [{ type: i1$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: AngularEditorComponent, decorators: [{\n type: Component,\n args: [{ selector: 'angular-editor', providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AngularEditorComponent),\n multi: true\n },\n AngularEditorService\n ], template: \"<div\\n class=\\\"angular-editor\\\"\\n #angularEditor\\n [style.width]=\\\"config.width\\\"\\n [style.minWidth]=\\\"config.minWidth\\\"\\n>\\n <angular-editor-toolbar\\n *ngIf=\\\"config.toolbarPosition === 'top'\\\"\\n #editorToolbar\\n [id]=\\\"id\\\"\\n [uploadUrl]=\\\"config.uploadUrl\\\"\\n [upload]=\\\"config.upload\\\"\\n [showToolbar]=\\\"config.showToolbar !== undefined ? config.showToolbar : true\\\"\\n [fonts]=\\\"getFonts()\\\"\\n [customClasses]=\\\"config.customClasses\\\"\\n [defaultFontName]=\\\"config.defaultFontName\\\"\\n [defaultFontSize]=\\\"config.defaultFontSize\\\"\\n [hiddenButtons]=\\\"config.toolbarHiddenButtons\\\"\\n (execute)=\\\"executeCommand($event)\\\"\\n ></angular-editor-toolbar>\\n\\n <div\\n class=\\\"angular-editor-wrapper\\\"\\n #editorWrapper\\n >\\n <div\\n #editor\\n class=\\\"angular-editor-textarea\\\"\\n [attr.contenteditable]=\\\"config.editable\\\"\\n [attr.tabindex]=\\\"disabled ? -1 : tabIndex\\\"\\n [attr.translate]=\\\"config.translate\\\"\\n [attr.spellcheck]=\\\"config.spellcheck\\\"\\n [style.height]=\\\"config.height\\\"\\n [style.minHeight]=\\\"config.minHeight\\\"\\n [style.maxHeight]=\\\"config.maxHeight\\\"\\n [style.outline]=\\\"config.outline === false ? 'none': undefined\\\"\\n (input)=\\\"onContentChange($event.target)\\\"\\n (focus)=\\\"onTextAreaFocus($event)\\\"\\n (blur)=\\\"onTextAreaBlur($event)\\\"\\n (click)=\\\"exec()\\\"\\n (keyup)=\\\"exec()\\\"\\n (mouseout)=\\\"onTextAreaMouseOut($event)\\\"\\n (paste)=\\\"onPaste($event)\\\"\\n >\\n </div>\\n <span class=\\\"angular-editor-placeholder\\\">{{ placeholder || config['placeholder'] }}</span>\\n </div>\\n <angular-editor-toolbar\\n *ngIf=\\\"config.toolbarPosition === 'bottom'\\\"\\n #editorToolbar\\n [id]=\\\"id\\\"\\n [uploadUrl]=\\\"config.uploadUrl\\\"\\n [upload]=\\\"config.upload\\\"\\n [showToolbar]=\\\"config.showToolbar !== undefined ? config.showToolbar : true\\\"\\n [fonts]=\\\"getFonts()\\\"\\n [customClasses]=\\\"config.customClasses\\\"\\n [defaultFontName]=\\\"config.defaultFontName\\\"\\n [defaultFontSize]=\\\"config.defaultFontSize\\\"\\n [hiddenButtons]=\\\"config.toolbarHiddenButtons\\\"\\n (execute)=\\\"executeCommand($event)\\\"\\n ></angular-editor-toolbar>\\n</div>\\n\", styles: [\"/*!\\n * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\\n */@font-face{font-family:FontAwesome;src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0);src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format(\\\"embedded-opentype\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0) format(\\\"woff2\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0) format(\\\"woff\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0) format(\\\"truetype\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format(\\\"svg\\\");font-weight:400;font-style:normal}.fa{display:inline-block;font: 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";transform:scaleX(-1)}.fa-flip-vertical{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";transform:scaleY(-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:\\\"\\\\f000\\\"}.fa-music:before{content:\\\"\\\\f001\\\"}.fa-search:before{content:\\\"\\\\f002\\\"}.fa-envelope-o:before{content:\\\"\\\\f003\\\"}.fa-heart:before{content:\\\"\\\\f004\\\"}.fa-star:before{content:\\\"\\\\f005\\\"}.fa-star-o:before{content:\\\"\\\\f006\\\"}.fa-user:before{content:\\\"\\\\f007\\\"}.fa-film:before{content:\\\"\\\\f008\\\"}.fa-th-large:before{content:\\\"\\\\f009\\\"}.fa-th:before{content:\\\"\\\\f00a\\\"}.fa-th-list:before{content:\\\"\\\\f00b\\\"}.fa-check:before{content:\\\"\\\\f00c\\\"}.fa-remove:before,.fa-close:before,.fa-times:before{content:\\\"\\\\f00d\\\"}.fa-search-plus:before{content:\\\"\\\\f00e\\\"}.fa-search-minus:before{content:\\\"\\\\f010\\\"}.fa-power-off:before{content:\\\"\\\\f011\\\"}.fa-signal:before{content:\\\"\\\\f012\\\"}.fa-gear:before,.fa-cog:before{content:\\\"\\\\f013\\\"}.fa-trash-o:before{content:\\\"\\\\f014\\\"}.fa-home:before{content:\\\"\\\\f015\\\"}.fa-file-o:before{content:\\\"\\\\f016\\\"}.fa-clock-o:before{content:\\\"\\\\f017\\\"}.fa-road:before{content:\\\"\\\\f018\\\"}.fa-download:before{content:\\\"\\\\f019\\\"}.fa-arrow-circle-o-down:before{content:\\\"\\\\f01a\\\"}.fa-arrow-circle-o-up:before{content:\\\"\\\\f01b\\\"}.fa-inbox:before{content:\\\"\\\\f01c\\\"}.fa-play-circle-o:before{content:\\\"\\\\f01d\\\"}.fa-rotate-right:before,.fa-repeat:before{content:\\\"\\\\f01e\\\"}.fa-refresh:before{content:\\\"\\\\f021\\\"}.fa-list-alt:before{content:\\\"\\\\f022\\\"}.fa-lock:before{content:\\\"\\\\f023\\\"}.fa-flag:before{content:\\\"\\\\f024\\\"}.fa-headphones:before{content:\\\"\\\\f025\\\"}.fa-volume-off:before{content:\\\"\\\\f026\\\"}.fa-volume-down:before{content:\\\"\\\\f027\\\"}.fa-volume-up:before{content:\\\"\\\\f028\\\"}.fa-qrcode:before{content:\\\"\\\\f029\\\"}.fa-barcode:before{content:\\\"\\\\f02a\\\"}.fa-tag:before{content:\\\"\\\\f02b\\\"}.fa-tags:before{content:\\\"\\\\f02c\\\"}.fa-book:before{content:\\\"\\\\f02d\\\"}.fa-bookmark:before{content:\\\"\\\\f02e\\\"}.fa-print:before{content:\\\"\\\\f02f\\\"}.fa-camera:before{content:\\\"\\\\f030\\\"}.fa-font:before{content:\\\"\\\\f031\\\"}.fa-bold:before{content:\\\"\\\\f032\\\"}.fa-italic:before{content:\\\"\\\\f033\\\"}.fa-text-height:before{content:\\\"\\\\f034\\\"}.fa-text-width:before{content:\\\"\\\\f035\\\"}.fa-align-left:before{content:\\\"\\\\f036\\\"}.fa-align-center:before{content:\\\"\\\\f037\\\"}.fa-align-right:before{content:\\\"\\\\f038\\\"}.fa-align-justify:before{content:\\\"\\\\f039\\\"}.fa-list:before{content:\\\"\\\\f03a\\\"}.fa-dedent:before,.fa-outdent:before{content:\\\"\\\\f03b\\\"}.fa-indent:before{content:\\\"\\\\f03c\\\"}.fa-video-camera:before{content:\\\"\\\\f03d\\\"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:\\\"\\\\f03e\\\"}.fa-pencil:before{content:\\\"\\\\f040\\\"}.fa-map-marker:before{content:\\\"\\\\f041\\\"}.fa-adjust:before{content:\\\"\\\\f042\\\"}.fa-tint:before{content:\\\"\\\\f043\\\"}.fa-edit:before,.fa-pencil-square-o:before{content:\\\"\\\\f044\\\"}.fa-share-square-o:before{content:\\\"\\\\f045\\\"}.fa-check-square-o:before{content:\\\"\\\\f046\\\"}.fa-arrows:before{content:\\\"\\\\f047\\\"}.fa-step-backward:before{content:\\\"\\\\f048\\\"}.fa-fast-backward:before{content:\\\"\\\\f049\\\"}.fa-backward:before{content:\\\"\\\\f04a\\\"}.fa-play:before{content:\\\"\\\\f04b\\\"}.fa-pause:before{content:\\\"\\\\f04c\\\"}.fa-stop:before{content:\\\"\\\\f04d\\\"}.fa-forward:before{content:\\\"\\\\f04e\\\"}.fa-fast-forward:before{content:\\\"\\\\f050\\\"}.fa-step-forward:before{content:\\\"\\\\f051\\\"}.fa-eject:before{content:\\\"\\\\f052\\\"}.fa-chevron-left:before{content:\\\"\\\\f053\\\"}.fa-chevron-right:before{content:\\\"\\\\f054\\\"}.fa-plus-circle:before{content:\\\"\\\\f055\\\"}.fa-minus-circle:before{content:\\\"\\\\f056\\\"}.fa-times-circle:before{content:\\\"\\\\f057\\\"}.fa-check-circle:before{content:\\\"\\\\f058\\\"}.fa-question-circle:before{content:\\\"\\\\f059\\\"}.fa-info-circle:before{content:\\\"\\\\f05a\\\"}.fa-crosshairs:before{content:\\\"\\\\f05b\\\"}.fa-times-circle-o:before{content:\\\"\\\\f05c\\\"}.fa-check-circle-o:before{content:\\\"\\\\f05d\\\"}.fa-ban:before{content:\\\"\\\\f05e\\\"}.fa-arrow-left:before{content:\\\"\\\\f060\\\"}.fa-arrow-right:before{content:\\\"\\\\f061\\\"}.fa-arrow-up:before{content:\\\"\\\\f062\\\"}.fa-arrow-down:before{content:\\\"\\\\f063\\\"}.fa-mail-forward:before,.fa-share:before{content:\\\"\\\\f064\\\"}.fa-expand:before{content:\\\"\\\\f065\\\"}.fa-compress:before{content:\\\"\\\\f066\\\"}.fa-plus:before{content:\\\"\\\\f067\\\"}.fa-minus:before{content:\\\"\\\\f068\\\"}.fa-asterisk:before{content:\\\"\\\\f069\\\"}.fa-exclamation-circle:before{content:\\\"\\\\f06a\\\"}.fa-gift:before{content:\\\"\\\\f06b\\\"}.fa-leaf:before{content:\\\"\\\\f06c\\\"}.fa-fire:before{content:\\\"\\\\f06d\\\"}.fa-eye:before{content:\\\"\\\\f06e\\\"}.fa-eye-slash:before{content:\\\"\\\\f070\\\"}.fa-warning:before,.fa-exclamation-triangle:before{content:\\\"\\\\f071\\\"}.fa-plane:before{content:\\\"\\\\f072\\\"}.fa-calendar:before{content:\\\"\\\\f073\\\"}.fa-random:before{content:\\\"\\\\f074\\\"}.fa-comment:before{content:\\\"\\\\f075\\\"}.fa-magnet:before{content:\\\"\\\\f076\\\"}.fa-chevron-up:before{content:\\\"\\\\f077\\\"}.fa-chevron-down:before{content:\\\"\\\\f078\\\"}.fa-retweet:before{content:\\\"\\\\f079\\\"}.fa-shopping-cart:before{content:\\\"\\\\f07a\\\"}.fa-folder:before{content:\\\"\\\\f07b\\\"}.fa-folder-open:before{content:\\\"\\\\f07c\\\"}.fa-arrows-v:before{content:\\\"\\\\f07d\\\"}.fa-arrows-h:before{content:\\\"\\\\f07e\\\"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:\\\"\\\\f080\\\"}.fa-twitter-square:before{content:\\\"\\\\f081\\\"}.fa-facebook-square:before{content:\\\"\\\\f082\\\"}.fa-camera-retro:before{content:\\\"\\\\f083\\\"}.fa-key:before{content:\\\"\\\\f084\\\"}.fa-gears:before,.fa-cogs:before{content:\\\"\\\\f085\\\"}.fa-comments:before{content:\\\"\\\\f086\\\"}.fa-thumbs-o-up:before{content:\\\"\\\\f087\\\"}.fa-thumbs-o-down:before{content:\\\"\\\\f088\\\"}.fa-star-half:before{content:\\\"\\\\f089\\\"}.fa-heart-o:before{content:\\\"\\\\f08a\\\"}.fa-sign-out:before{content:\\\"\\\\f08b\\\"}.fa-linkedin-square:before{content:\\\"\\\\f08c\\\"}.fa-thumb-tack:before{content:\\\"\\\\f08d\\\"}.fa-external-link:before{content:\\\"\\\\f08e\\\"}.fa-sign-in:before{content:\\\"\\\\f090\\\"}.fa-trophy:before{content:\\\"\\\\f091\\\"}.fa-github-square:before{content:\\\"\\\\f092\\\"}.fa-upload:before{content:\\\"\\\\f093\\\"}.fa-lemon-o:before{content:\\\"\\\\f094\\\"}.fa-phone:before{content:\\\"\\\\f095\\\"}.fa-square-o:before{content:\\\"\\\\f096\\\"}.fa-bookmark-o:before{content:\\\"\\\\f097\\\"}.fa-phone-square:before{content:\\\"\\\\f098\\\"}.fa-twitter:before{content:\\\"\\\\f099\\\"}.fa-facebook-f:before,.fa-facebook:before{content:\\\"\\\\f09a\\\"}.fa-github:before{content:\\\"\\\\f09b\\\"}.fa-unlock:before{content:\\\"\\\\f09c\\\"}.fa-credit-card:before{content:\\\"\\\\f09d\\\"}.fa-feed:before,.fa-rss:before{content:\\\"\\\\f09e\\\"}.fa-hdd-o:before{content:\\\"\\\\f0a0\\\"}.fa-bullhorn:before{content:\\\"\\\\f0a1\\\"}.fa-bell:before{content:\\\"\\\\f0f3\\\"}.fa-certificate:before{content:\\\"\\\\f0a3\\\"}.fa-hand-o-right:before{content:\\\"\\\\f0a4\\\"}.fa-hand-o-left:before{content:\\\"\\\\f0a5\\\"}.fa-hand-o-up:before{content:\\\"\\\\f0a6\\\"}.fa-hand-o-down:before{content:\\\"\\\\f0a7\\\"}.fa-arrow-circle-left:before{content:\\\"\\\\f0a8\\\"}.fa-arrow-circle-right:before{content:\\\"\\\\f0a9\\\"}.fa-arrow-circle-up:before{content:\\\"\\\\f0aa\\\"}.fa-arrow-circle-down:before{content:\\\"\\\\f0ab\\\"}.fa-globe:before{content:\\\"\\\\f0ac\\\"}.fa-wrench:before{content:\\\"\\\\f0ad\\\"}.fa-tasks:before{content:\\\"\\\\f0ae\\\"}.fa-filter:before{content:\\\"\\\\f0b0\\\"}.fa-briefcase:before{content:\\\"\\\\f0b1\\\"}.fa-arrows-alt:before{content:\\\"\\\\f0b2\\\"}.fa-group:before,.fa-users:before{content:\\\"\\\\f0c0\\\"}.fa-chain:before,.fa-link:before{content:\\\"\\\\f0c1\\\"}.fa-cloud:before{content:\\\"\\\\f0c2\\\"}.fa-flask:before{content:\\\"\\\\f0c3\\\"}.fa-cut:before,.fa-scissors:before{content:\\\"\\\\f0c4\\\"}.fa-copy:before,.fa-files-o:before{content:\\\"\\\\f0c5\\\"}.fa-paperclip:before{content:\\\"\\\\f0c6\\\"}.fa-save:before,.fa-floppy-o:before{content:\\\"\\\\f0c7\\\"}.fa-square:before{content:\\\"\\\\f0c8\\\"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:\\\"\\\\f0c9\\\"}.fa-list-ul:before{content:\\\"\\\\f0ca\\\"}.fa-list-ol:before{content:\\\"\\\\f0cb\\\"}.fa-strikethrough:before{content:\\\"\\\\f0cc\\\"}.fa-underline:before{content:\\\"\\\\f0cd\\\"}.fa-table:before{content:\\\"\\\\f0ce\\\"}.fa-magic:before{content:\\\"\\\\f0d0\\\"}.fa-truck:before{content:\\\"\\\\f0d1\\\"}.fa-pinterest:before{content:\\\"\\\\f0d2\\\"}.fa-pinterest-square:before{content:\\\"\\\\f0d3\\\"}.fa-google-plus-square:before{content:\\\"\\\\f0d4\\\"}.fa-google-plus:before{content:\\\"\\\\f0d5\\\"}.fa-money:before{content:\\\"\\\\f0d6\\\"}.fa-caret-down:before{content:\\\"\\\\f0d7\\\"}.fa-caret-up:before{content:\\\"\\\\f0d8\\\"}.fa-caret-left:before{content:\\\"\\\\f0d9\\\"}.fa-caret-right:before{content:\\\"\\\\f0da\\\"}.fa-columns:before{content:\\\"\\\\f0db\\\"}.fa-unsorted:before,.fa-sort:before{content:\\\"\\\\f0dc\\\"}.fa-sort-down:before,.fa-sort-desc:before{content:\\\"\\\\f0dd\\\"}.fa-sort-up:before,.fa-sort-asc:before{content:\\\"\\\\f0de\\\"}.fa-envelope:before{content:\\\"\\\\f0e0\\\"}.fa-linkedin:before{content:\\\"\\\\f0e1\\\"}.fa-rotate-left:before,.fa-undo:before{content:\\\"\\\\f0e2\\\"}.fa-legal:before,.fa-gavel:before{content:\\\"\\\\f0e3\\\"}.fa-dashboard:before,.fa-tachometer:before{content:\\\"\\\\f0e4\\\"}.fa-comment-o:before{content:\\\"\\\\f0e5\\\"}.fa-comments-o:before{content:\\\"\\\\f0e6\\\"}.fa-flash:before,.fa-bolt:before{content:\\\"\\\\f0e7\\\"}.fa-sitemap:before{content:\\\"\\\\f0e8\\\"}.fa-umbrella:before{content:\\\"\\\\f0e9\\\"}.fa-paste:before,.fa-clipboard:before{content:\\\"\\\\f0ea\\\"}.fa-lightbulb-o:before{content:\\\"\\\\f0eb\\\"}.fa-exchange:before{content:\\\"\\\\f0ec\\\"}.fa-cloud-download:before{content:\\\"\\\\f0ed\\\"}.fa-cloud-upload:before{content:\\\"\\\\f0ee\\\"}.fa-user-md:before{content:\\\"\\\\f0f0\\\"}.fa-stethoscope:before{content:\\\"\\\\f0f1\\\"}.fa-suitcase:before{content:\\\"\\\\f0f2\\\"}.fa-bell-o:before{content:\\\"\\\\f0a2\\\"}.fa-coffee:before{content:\\\"\\\\f0f4\\\"}.fa-cutlery:before{content:\\\"\\\\f0f5\\\"}.fa-file-text-o:before{content:\\\"\\\\f0f6\\\"}.fa-building-o:before{content:\\\"\\\\f0f7\\\"}.fa-hospital-o:before{content:\\\"\\\\f0f8\\\"}.fa-ambulance:before{content:\\\"\\\\f0f9\\\"}.fa-medkit:before{content:\\\"\\\\f0fa\\\"}.fa-fighter-jet:before{content:\\\"\\\\f0fb\\\"}.fa-beer:before{content:\\\"\\\\f0fc\\\"}.fa-h-square:before{content:\\\"\\\\f0fd\\\"}.fa-plus-square:before{content:\\\"\\\\f0fe\\\"}.fa-angle-double-left:before{content:\\\"\\\\f100\\\"}.fa-angle-double-right:before{content:\\\"\\\\f101\\\"}.fa-angle-double-up:before{content:\\\"\\\\f102\\\"}.fa-angle-double-down:before{content:\\\"\\\\f103\\\"}.fa-angle-left:before{content:\\\"\\\\f104\\\"}.fa-angle-right:before{content:\\\"\\\\f105\\\"}.fa-angle-up:before{content:\\\"\\\\f106\\\"}.fa-angle-down:before{content:\\\"\\\\f107\\\"}.fa-desktop:before{content:\\\"\\\\f108\\\"}.fa-laptop:before{content:\\\"\\\\f109\\\"}.fa-tablet:before{content:\\\"\\\\f10a\\\"}.fa-mobile-phone:before,.fa-mobile:before{content:\\\"\\\\f10b\\\"}.fa-circle-o:before{content:\\\"\\\\f10c\\\"}.fa-quote-left:before{content:\\\"\\\\f10d\\\"}.fa-quote-right:before{content:\\\"\\\\f10e\\\"}.fa-spinner:before{content:\\\"\\\\f110\\\"}.fa-circle:before{content:\\\"\\\\f111\\\"}.fa-mail-reply:before,.fa-reply:before{content:\\\"\\\\f112\\\"}.fa-github-alt:before{content:\\\"\\\\f113\\\"}.fa-folder-o:before{content:\\\"\\\\f114\\\"}.fa-folder-open-o:before{content:\\\"\\\\f115\\\"}.fa-smile-o:before{content:\\\"\\\\f118\\\"}.fa-frown-o:before{content:\\\"\\\\f119\\\"}.fa-meh-o:before{content:\\\"\\\\f11a\\\"}.fa-gamepad:before{content:\\\"\\\\f11b\\\"}.fa-keyboard-o:before{content:\\\"\\\\f11c\\\"}.fa-flag-o:before{content:\\\"\\\\f11d\\\"}.fa-flag-checkered:before{content:\\\"\\\\f11e\\\"}.fa-terminal:before{content:\\\"\\\\f120\\\"}.fa-code:before{content:\\\"\\\\f121\\\"}.fa-mail-reply-all:before,.fa-reply-all:before{content:\\\"\\\\f122\\\"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:\\\"\\\\f123\\\"}.fa-location-arrow:before{content:\\\"\\\\f124\\\"}.fa-crop:before{content:\\\"\\\\f125\\\"}.fa-code-fork:before{content:\\\"\\\\f126\\\"}.fa-unlink:before,.fa-chain-broken:before{content:\\\"\\\\f127\\\"}.fa-question:before{content:\\\"\\\\f128\\\"}.fa-info:before{content:\\\"\\\\f129\\\"}.fa-exclamation:before{content:\\\"\\\\f12a\\\"}.fa-superscript:before{content:\\\"\\\\f12b\\\"}.fa-subscript:before{content:\\\"\\\\f12c\\\"}.fa-eraser:before{content:\\\"\\\\f12d\\\"}.fa-puzzle-piece:before{content:\\\"\\\\f12e\\\"}.fa-microphone:before{content:\\\"\\\\f130\\\"}.fa-microphone-slash:before{content:\\\"\\\\f131\\\"}.fa-shield:before{content:\\\"\\\\f132\\\"}.fa-calendar-o:before{content:\\\"\\\\f133\\\"}.fa-fire-extinguisher:before{content:\\\"\\\\f134\\\"}.fa-rocket:before{content:\\\"\\\\f135\\\"}.fa-maxcdn:before{content:\\\"\\\\f136\\\"}.fa-chevron-circle-left:before{content:\\\"\\\\f137\\\"}.fa-chevron-circle-right:before{content:\\\"\\\\f138\\\"}.fa-chevron-circle-up:before{content:\\\"\\\\f139\\\"}.fa-chevron-circle-down:before{content:\\\"\\\\f13a\\\"}.fa-html5:before{content:\\\"\\\\f13b\\\"}.fa-css3:before{content:\\\"\\\\f13c\\\"}.fa-anchor:before{content:\\\"\\\\f13d\\\"}.fa-unlock-alt:before{content:\\\"\\\\f13e\\\"}.fa-bullseye:before{content:\\\"\\\\f140\\\"}.fa-ellipsis-h:before{content:\\\"\\\\f141\\\"}.fa-ellipsis-v:before{content:\\\"\\\\f142\\\"}.fa-rss-square:before{content:\\\"\\\\f143\\\"}.fa-play-circle:before{content:\\\"\\\\f144\\\"}.fa-ticket:before{content:\\\"\\\\f145\\\"}.fa-minus-square:before{content:\\\"\\\\f146\\\"}.fa-minus-square-o:before{content:\\\"\\\\f147\\\"}.fa-level-up:before{content:\\\"\\\\f148\\\"}.fa-level-down:before{content:\\\"\\\\f149\\\"}.fa-check-square:before{content:\\\"\\\\f14a\\\"}.fa-pencil-square:before{content:\\\"\\\\f14b\\\"}.fa-external-link-square:before{content:\\\"\\\\f14c\\\"}.fa-share-square:before{content:\\\"\\\\f14d\\\"}.fa-compass:before{content:\\\"\\\\f14e\\\"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:\\\"\\\\f150\\\"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:\\\"\\\\f151\\\"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:\\\"\\\\f152\\\"}.fa-euro:before,.fa-eur:before{content:\\\"\\\\f153\\\"}.fa-gbp:before{content:\\\"\\\\f154\\\"}.fa-dollar:before,.fa-usd:before{content:\\\"\\\\f155\\\"}.fa-rupee:before,.fa-inr:before{content:\\\"\\\\f156\\\"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:\\\"\\\\f157\\\"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:\\\"\\\\f158\\\"}.fa-won:before,.fa-krw:before{content:\\\"\\\\f159\\\"}.fa-bitcoin:before,.fa-btc:before{content:\\\"\\\\f15a\\\"}.fa-file:before{content:\\\"\\\\f15b\\\"}.fa-file-text:before{content:\\\"\\\\f15c\\\"}.fa-sort-alpha-asc:before{content:\\\"\\\\f15d\\\"}.fa-sort-alpha-desc:before{content:\\\"\\\\f15e\\\"}.fa-sort-amount-asc:before{content:\\\"\\\\f160\\\"}.fa-sort-amount-desc:before{content:\\\"\\\\f161\\\"}.fa-sort-numeric-asc:before{content:\\\"\\\\f162\\\"}.fa-sort-numeric-desc:before{content:\\\"\\\\f163\\\"}.fa-thumbs-up:before{content:\\\"\\\\f164\\\"}.fa-thumbs-down:before{content:\\\"\\\\f165\\\"}.fa-youtube-square:before{content:\\\"\\\\f166\\\"}.fa-youtube:before{content:\\\"\\\\f167\\\"}.fa-xing:before{content:\\\"\\\\f168\\\"}.fa-xing-square:before{content:\\\"\\\\f169\\\"}.fa-youtube-play:before{content:\\\"\\\\f16a\\\"}.fa-dropbox:before{content:\\\"\\\\f16b\\\"}.fa-stack-overflow:before{content:\\\"\\\\f16c\\\"}.fa-instagram:before{content:\\\"\\\\f16d\\\"}.fa-flickr:before{content:\\\"\\\\f16e\\\"}.fa-adn:before{content:\\\"\\\\f170\\\"}.fa-bitbucket:before{content:\\\"\\\\f171\\\"}.fa-bitbucket-square:before{content:\\\"\\\\f172\\\"}.fa-tumblr:before{content:\\\"\\\\f173\\\"}.fa-tumblr-square:before{content:\\\"\\\\f174\\\"}.fa-long-arrow-down:before{content:\\\"\\\\f175\\\"}.fa-long-arrow-up:before{content:\\\"\\\\f176\\\"}.fa-long-arrow-left:before{content:\\\"\\\\f177\\\"}.fa-long-arrow-right:before{content:\\\"\\\\f178\\\"}.fa-apple:before{content:\\\"\\\\f179\\\"}.fa-windows:before{content:\\\"\\\\f17a\\\"}.fa-android:before{content:\\\"\\\\f17b\\\"}.fa-linux:before{content:\\\"\\\\f17c\\\"}.fa-dribbble:before{content:\\\"\\\\f17d\\\"}.fa-skype:before{content:\\\"\\\\f17e\\\"}.fa-foursquare:before{content:\\\"\\\\f180\\\"}.fa-trello:before{content:\\\"\\\\f181\\\"}.fa-female:before{content:\\\"\\\\f182\\\"}.fa-male:before{content:\\\"\\\\f183\\\"}.fa-gittip:before,.fa-gratipay:before{content:\\\"\\\\f184\\\"}.fa-sun-o:before{content:\\\"\\\\f185\\\"}.fa-moon-o:before{content:\\\"\\\\f186\\\"}.fa-archive:before{content:\\\"\\\\f187\\\"}.fa-bug:before{content:\\\"\\\\f188\\\"}.fa-vk:before{content:\\\"\\\\f189\\\"}.fa-weibo:before{content:\\\"\\\\f18a\\\"}.fa-renren:before{content:\\\"\\\\f18b\\\"}.fa-pagelines:before{content:\\\"\\\\f18c\\\"}.fa-stack-exchange:before{content:\\\"\\\\f18d\\\"}.fa-arrow-circle-o-right:before{content:\\\"\\\\f18e\\\"}.fa-arrow-circle-o-left:before{content:\\\"\\\\f190\\\"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:\\\"\\\\f191\\\"}.fa-dot-circle-o:before{content:\\\"\\\\f192\\\"}.fa-wheelchair:before{content:\\\"\\\\f193\\\"}.fa-vimeo-square:before{content:\\\"\\\\f194\\\"}.fa-turkish-lira:before,.fa-try:before{content:\\\"\\\\f195\\\"}.fa-plus-square-o:before{content:\\\"\\\\f196\\\"}.fa-space-shuttle:before{content:\\\"\\\\f197\\\"}.fa-slack:before{content:\\\"\\\\f198\\\"}.fa-envelope-square:before{content:\\\"\\\\f199\\\"}.fa-wordpress:before{content:\\\"\\\\f19a\\\"}.fa-openid:before{content:\\\"\\\\f19b\\\"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:\\\"\\\\f19c\\\"}.fa-mortar-board:before,.fa-graduation-cap:before{content:\\\"\\\\f19d\\\"}.fa-yahoo:before{content:\\\"\\\\f19e\\\"}.fa-google:before{content:\\\"\\\\f1a0\\\"}.fa-reddit:before{content:\\\"\\\\f1a1\\\"}.fa-reddit-square:before{content:\\\"\\\\f1a2\\\"}.fa-stumbleupon-circle:before{content:\\\"\\\\f1a3\\\"}.fa-stumbleupon:before{content:\\\"\\\\f1a4\\\"}.fa-delicious:before{content:\\\"\\\\f1a5\\\"}.fa-digg:before{content:\\\"\\\\f1a6\\\"}.fa-pied-piper-pp:before{content:\\\"\\\\f1a7\\\"}.fa-pied-piper-alt:before{content:\\\"\\\\f1a8\\\"}.fa-drupal:before{content:\\\"\\\\f1a9\\\"}.fa-joomla:before{content:\\\"\\\\f1aa\\\"}.fa-language:before{content:\\\"\\\\f1ab\\\"}.fa-fax:before{content:\\\"\\\\f1ac\\\"}.fa-building:before{content:\\\"\\\\f1ad\\\"}.fa-child:before{content:\\\"\\\\f1ae\\\"}.fa-paw:before{content:\\\"\\\\f1b0\\\"}.fa-spoon:before{content:\\\"\\\\f1b1\\\"}.fa-cube:before{content:\\\"\\\\f1b2\\\"}.fa-cubes:before{content:\\\"\\\\f1b3\\\"}.fa-behance:before{content:\\\"\\\\f1b4\\\"}.fa-behance-square:before{content:\\\"\\\\f1b5\\\"}.fa-steam:before{content:\\\"\\\\f1b6\\\"}.fa-steam-square:before{content:\\\"\\\\f1b7\\\"}.fa-recycle:before{content:\\\"\\\\f1b8\\\"}.fa-automobile:before,.fa-car:before{content:\\\"\\\\f1b9\\\"}.fa-cab:before,.fa-taxi:before{content:\\\"\\\\f1ba\\\"}.fa-tree:before{content:\\\"\\\\f1bb\\\"}.fa-spotify:before{content:\\\"\\\\f1bc\\\"}.fa-deviantart:before{content:\\\"\\\\f1bd\\\"}.fa-soundcloud:before{content:\\\"\\\\f1be\\\"}.fa-database:before{content:\\\"\\\\f1c0\\\"}.fa-file-pdf-o:before{content:\\\"\\\\f1c1\\\"}.fa-file-word-o:before{content:\\\"\\\\f1c2\\\"}.fa-file-excel-o:before{content:\\\"\\\\f1c3\\\"}.fa-file-powerpoint-o:before{content:\\\"\\\\f1c4\\\"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:\\\"\\\\f1c5\\\"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:\\\"\\\\f1c6\\\"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:\\\"\\\\f1c7\\\"}.fa-file-movie-o:before,.fa-file-video-o:before{content:\\\"\\\\f1c8\\\"}.fa-file-code-o:before{content:\\\"\\\\f1c9\\\"}.fa-vine:before{content:\\\"\\\\f1ca\\\"}.fa-codepen:before{content:\\\"\\\\f1cb\\\"}.fa-jsfiddle:before{content:\\\"\\\\f1cc\\\"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:\\\"\\\\f1cd\\\"}.fa-circle-o-notch:before{content:\\\"\\\\f1ce\\\"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:\\\"\\\\f1d0\\\"}.fa-ge:before,.fa-empire:before{content:\\\"\\\\f1d1\\\"}.fa-git-square:before{content:\\\"\\\\f1d2\\\"}.fa-git:before{content:\\\"\\\\f1d3\\\"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:\\\"\\\\f1d4\\\"}.fa-tencent-weibo:before{content:\\\"\\\\f1d5\\\"}.fa-qq:before{content:\\\"\\\\f1d6\\\"}.fa-wechat:before,.fa-weixin:before{content:\\\"\\\\f1d7\\\"}.fa-send:before,.fa-paper-plane:before{content:\\\"\\\\f1d8\\\"}.fa-send-o:before,.fa-paper-plane-o:before{content:\\\"\\\\f1d9\\\"}.fa-history:before{content:\\\"\\\\f1da\\\"}.fa-circle-thin:before{content:\\\"\\\\f1db\\\"}.fa-header:before{content:\\\"\\\\f1dc\\\"}.fa-paragraph:before{content:\\\"\\\\f1dd\\\"}.fa-sliders:before{content:\\\"\\\\f1de\\\"}.fa-share-alt:before{content:\\\"\\\\f1e0\\\"}.fa-share-alt-square:before{content:\\\"\\\\f1e1\\\"}.fa-bomb:before{content:\\\"\\\\f1e2\\\"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:\\\"\\\\f1e3\\\"}.fa-tty:before{content:\\\"\\\\f1e4\\\"}.fa-binoculars:before{content:\\\"\\\\f1e5\\\"}.fa-plug:before{content:\\\"\\\\f1e6\\\"}.fa-slideshare:before{content:\\\"\\\\f1e7\\\"}.fa-twitch:before{content:\\\"\\\\f1e8\\\"}.fa-yelp:before{content:\\\"\\\\f1e9\\\"}.fa-newspaper-o:before{content:\\\"\\\\f1ea\\\"}.fa-wifi:before{content:\\\"\\\\f1eb\\\"}.fa-calculator:before{content:\\\"\\\\f1ec\\\"}.fa-paypal:before{content:\\\"\\\\f1ed\\\"}.fa-google-wallet:before{content:\\\"\\\\f1ee\\\"}.fa-cc-visa:before{content:\\\"\\\\f1f0\\\"}.fa-cc-mastercard:before{content:\\\"\\\\f1f1\\\"}.fa-cc-discover:before{content:\\\"\\\\f1f2\\\"}.fa-cc-amex:before{content:\\\"\\\\f1f3\\\"}.fa-cc-paypal:before{content:\\\"\\\\f1f4\\\"}.fa-cc-stripe:before{content:\\\"\\\\f1f5\\\"}.fa-bell-slash:before{content:\\\"\\\\f1f6\\\"}.fa-bell-slash-o:before{content:\\\"\\\\f1f7\\\"}.fa-trash:before{content:\\\"\\\\f1f8\\\"}.fa-copyright:before{content:\\\"\\\\f1f9\\\"}.fa-at:before{content:\\\"\\\\f1fa\\\"}.fa-eyedropper:before{content:\\\"\\\\f1fb\\\"}.fa-paint-brush:before{content:\\\"\\\\f1fc\\\"}.fa-birthday-cake:before{content:\\\"\\\\f1fd\\\"}.fa-area-chart:before{content:\\\"\\\\f1fe\\\"}.fa-pie-chart:before{content:\\\"\\\\f200\\\"}.fa-line-chart:before{content:\\\"\\\\f201\\\"}.fa-lastfm:before{content:\\\"\\\\f202\\\"}.fa-lastfm-square:before{content:\\\"\\\\f203\\\"}.fa-toggle-off:before{content:\\\"\\\\f204\\\"}.fa-toggle-on:before{content:\\\"\\\\f205\\\"}.fa-bicycle:before{content:\\\"\\\\f206\\\"}.fa-bus:before{content:\\\"\\\\f207\\\"}.fa-ioxhost:before{content:\\\"\\\\f208\\\"}.fa-angellist:before{content:\\\"\\\\f209\\\"}.fa-cc:before{content:\\\"\\\\f20a\\\"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:\\\"\\\\f20b\\\"}.fa-meanpath:before{content:\\\"\\\\f20c\\\"}.fa-buysellads:before{content:\\\"\\\\f20d\\\"}.fa-connectdevelop:before{content:\\\"\\\\f20e\\\"}.fa-dashcube:before{content:\\\"\\\\f210\\\"}.fa-forumbee:before{content:\\\"\\\\f211\\\"}.fa-leanpub:before{content:\\\"\\\\f212\\\"}.fa-sellsy:before{content:\\\"\\\\f213\\\"}.fa-shirtsinbulk:before{content:\\\"\\\\f214\\\"}.fa-simplybuilt:before{content:\\\"\\\\f215\\\"}.fa-skyatlas:before{content:\\\"\\\\f216\\\"}.fa-cart-plus:before{content:\\\"\\\\f217\\\"}.fa-cart-arrow-down:before{content:\\\"\\\\f218\\\"}.fa-diamond:before{content:\\\"\\\\f219\\\"}.fa-ship:before{content:\\\"\\\\f21a\\\"}.fa-user-secret:before{content:\\\"\\\\f21b\\\"}.fa-motorcycle:before{content:\\\"\\\\f21c\\\"}.fa-street-view:before{content:\\\"\\\\f21d\\\"}.fa-heartbeat:before{content:\\\"\\\\f21e\\\"}.fa-venus:before{content:\\\"\\\\f221\\\"}.fa-mars:before{content:\\\"\\\\f222\\\"}.fa-mercury:before{content:\\\"\\\\f223\\\"}.fa-intersex:before,.fa-transgender:before{content:\\\"\\\\f224\\\"}.fa-transgender-alt:before{content:\\\"\\\\f225\\\"}.fa-venus-double:before{content:\\\"\\\\f226\\\"}.fa-mars-double:before{content:\\\"\\\\f227\\\"}.fa-venus-mars:before{content:\\\"\\\\f228\\\"}.fa-mars-stroke:before{content:\\\"\\\\f229\\\"}.fa-mars-stroke-v:before{content:\\\"\\\\f22a\\\"}.fa-mars-stroke-h:before{content:\\\"\\\\f22b\\\"}.fa-neuter:before{content:\\\"\\\\f22c\\\"}.fa-genderless:before{content:\\\"\\\\f22d\\\"}.fa-facebook-official:before{content:\\\"\\\\f230\\\"}.fa-pinterest-p:before{content:\\\"\\\\f231\\\"}.fa-whatsapp:before{content:\\\"\\\\f232\\\"}.fa-server:before{content:\\\"\\\\f233\\\"}.fa-user-plus:before{content:\\\"\\\\f234\\\"}.fa-user-times:before{content:\\\"\\\\f235\\\"}.fa-hotel:before,.fa-bed:before{content:\\\"\\\\f236\\\"}.fa-viacoin:before{content:\\\"\\\\f237\\\"}.fa-train:before{content:\\\"\\\\f238\\\"}.fa-subway:before{content:\\\"\\\\f239\\\"}.fa-medium:before{content:\\\"\\\\f23a\\\"}.fa-yc:before,.fa-y-combinator:before{content:\\\"\\\\f23b\\\"}.fa-optin-monster:before{content:\\\"\\\\f23c\\\"}.fa-opencart:before{content:\\\"\\\\f23d\\\"}.fa-expeditedssl:before{content:\\\"\\\\f23e\\\"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:\\\"\\\\f240\\\"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:\\\"\\\\f241\\\"}.fa-battery-2:before,.fa-battery-half:before{content:\\\"\\\\f242\\\"}.fa-battery-1:before,.fa-battery-quarter:before{content:\\\"\\\\f243\\\"}.fa-battery-0:before,.fa-battery-empty:before{content:\\\"\\\\f244\\\"}.fa-mouse-pointer:before{content:\\\"\\\\f245\\\"}.fa-i-cursor:before{content:\\\"\\\\f246\\\"}.fa-object-group:before{content:\\\"\\\\f247\\\"}.fa-object-ungroup:before{content:\\\"\\\\f248\\\"}.fa-sticky-note:before{content:\\\"\\\\f249\\\"}.fa-sticky-note-o:before{content:\\\"\\\\f24a\\\"}.fa-cc-jcb:before{content:\\\"\\\\f24b\\\"}.fa-cc-diners-club:before{content:\\\"\\\\f24c\\\"}.fa-clone:before{content:\\\"\\\\f24d\\\"}.fa-balance-scale:before{content:\\\"\\\\f24e\\\"}.fa-hourglass-o:before{content:\\\"\\\\f250\\\"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:\\\"\\\\f251\\\"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:\\\"\\\\f252\\\"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:\\\"\\\\f253\\\"}.fa-hourglass:before{content:\\\"\\\\f254\\\"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:\\\"\\\\f255\\\"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:\\\"\\\\f256\\\"}.fa-hand-scissors-o:before{content:\\\"\\\\f257\\\"}.fa-hand-lizard-o:before{content:\\\"\\\\f258\\\"}.fa-hand-spock-o:before{content:\\\"\\\\f259\\\"}.fa-hand-pointer-o:before{content:\\\"\\\\f25a\\\"}.fa-hand-peace-o:before{content:\\\"\\\\f25b\\\"}.fa-trademark:before{content:\\\"\\\\f25c\\\"}.fa-registered:before{content:\\\"\\\\f25d\\\"}.fa-creative-commons:before{content:\\\"\\\\f25e\\\"}.fa-gg:before{content:\\\"\\\\f260\\\"}.fa-gg-circle:before{content:\\\"\\\\f261\\\"}.fa-tripadvisor:before{content:\\\"\\\\f262\\\"}.fa-odnoklassniki:before{content:\\\"\\\\f263\\\"}.fa-odnoklassniki-square:before{content:\\\"\\\\f264\\\"}.fa-get-pocket:before{content:\\\"\\\\f265\\\"}.fa-wikipedia-w:before{content:\\\"\\\\f266\\\"}.fa-safari:before{content:\\\"\\\\f267\\\"}.fa-chrome:before{content:\\\"\\\\f268\\\"}.fa-firefox:before{content:\\\"\\\\f269\\\"}.fa-opera:before{content:\\\"\\\\f26a\\\"}.fa-internet-explorer:before{content:\\\"\\\\f26b\\\"}.fa-tv:before,.fa-television:before{content:\\\"\\\\f26c\\\"}.fa-contao:before{content:\\\"\\\\f26d\\\"}.fa-500px:before{content:\\\"\\\\f26e\\\"}.fa-amazon:before{content:\\\"\\\\f270\\\"}.fa-calendar-plus-o:before{content:\\\"\\\\f271\\\"}.fa-calendar-minus-o:before{content:\\\"\\\\f272\\\"}.fa-calendar-times-o:before{content:\\\"\\\\f273\\\"}.fa-calendar-check-o:before{content:\\\"\\\\f274\\\"}.fa-industry:before{content:\\\"\\\\f275\\\"}.fa-map-pin:before{content:\\\"\\\\f276\\\"}.fa-map-signs:before{content:\\\"\\\\f277\\\"}.fa-map-o:before{content:\\\"\\\\f278\\\"}.fa-map:before{content:\\\"\\\\f279\\\"}.fa-commenting:before{content:\\\"\\\\f27a\\\"}.fa-commenting-o:before{content:\\\"\\\\f27b\\\"}.fa-houzz:before{content:\\\"\\\\f27c\\\"}.fa-vimeo:before{content:\\\"\\\\f27d\\\"}.fa-black-tie:before{content:\\\"\\\\f27e\\\"}.fa-fonticons:before{content:\\\"\\\\f280\\\"}.fa-reddit-alien:before{content:\\\"\\\\f281\\\"}.fa-edge:before{content:\\\"\\\\f282\\\"}.fa-credit-card-alt:before{content:\\\"\\\\f283\\\"}.fa-codiepie:before{content:\\\"\\\\f284\\\"}.fa-modx:before{content:\\\"\\\\f285\\\"}.fa-fort-awesome:before{content:\\\"\\\\f286\\\"}.fa-usb:before{content:\\\"\\\\f287\\\"}.fa-product-hunt:before{content:\\\"\\\\f288\\\"}.fa-mixcloud:before{content:\\\"\\\\f289\\\"}.fa-scribd:before{content:\\\"\\\\f28a\\\"}.fa-pause-circle:before{content:\\\"\\\\f28b\\\"}.fa-pause-circle-o:before{content:\\\"\\\\f28c\\\"}.fa-stop-circle:before{content:\\\"\\\\f28d\\\"}.fa-stop-circle-o:before{content:\\\"\\\\f28e\\\"}.fa-shopping-bag:before{content:\\\"\\\\f290\\\"}.fa-shopping-basket:before{content:\\\"\\\\f291\\\"}.fa-hashtag:before{content:\\\"\\\\f292\\\"}.fa-bluetooth:before{content:\\\"\\\\f293\\\"}.fa-bluetooth-b:before{content:\\\"\\\\f294\\\"}.fa-percent:before{content:\\\"\\\\f295\\\"}.fa-gitlab:before{content:\\\"\\\\f296\\\"}.fa-wpbeginner:before{content:\\\"\\\\f297\\\"}.fa-wpforms:before{content:\\\"\\\\f298\\\"}.fa-envira:before{content:\\\"\\\\f299\\\"}.fa-universal-access:before{content:\\\"\\\\f29a\\\"}.fa-wheelchair-alt:before{content:\\\"\\\\f29b\\\"}.fa-question-circle-o:before{content:\\\"\\\\f29c\\\"}.fa-blind:before{content:\\\"\\\\f29d\\\"}.fa-audio-description:before{content:\\\"\\\\f29e\\\"}.fa-volume-control-phone:before{content:\\\"\\\\f2a0\\\"}.fa-braille:before{content:\\\"\\\\f2a1\\\"}.fa-assistive-listening-systems:before{content:\\\"\\\\f2a2\\\"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:\\\"\\\\f2a3\\\"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:\\\"\\\\f2a4\\\"}.fa-glide:before{content:\\\"\\\\f2a5\\\"}.fa-glide-g:before{content:\\\"\\\\f2a6\\\"}.fa-signing:before,.fa-sign-language:before{content:\\\"\\\\f2a7\\\"}.fa-low-vision:before{content:\\\"\\\\f2a8\\\"}.fa-viadeo:before{content:\\\"\\\\f2a9\\\"}.fa-viadeo-square:before{content:\\\"\\\\f2aa\\\"}.fa-snapchat:before{content:\\\"\\\\f2ab\\\"}.fa-snapchat-ghost:before{content:\\\"\\\\f2ac\\\"}.fa-snapchat-square:before{content:\\\"\\\\f2ad\\\"}.fa-pied-piper:before{content:\\\"\\\\f2ae\\\"}.fa-first-order:before{content:\\\"\\\\f2b0\\\"}.fa-yoast:before{content:\\\"\\\\f2b1\\\"}.fa-themeisle:before{content:\\\"\\\\f2b2\\\"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:\\\"\\\\f2b3\\\"}.fa-fa:before,.fa-font-awesome:before{content:\\\"\\\\f2b4\\\"}.fa-handshake-o:before{content:\\\"\\\\f2b5\\\"}.fa-envelope-open:before{content:\\\"\\\\f2b6\\\"}.fa-envelope-open-o:before{content:\\\"\\\\f2b7\\\"}.fa-linode:before{content:\\\"\\\\f2b8\\\"}.fa-address-book:before{content:\\\"\\\\f2b9\\\"}.fa-address-book-o:before{content:\\\"\\\\f2ba\\\"}.fa-vcard:before,.fa-address-card:before{content:\\\"\\\\f2bb\\\"}.fa-vcard-o:before,.fa-address-card-o:before{content:\\\"\\\\f2bc\\\"}.fa-user-circle:before{content:\\\"\\\\f2bd\\\"}.fa-user-circle-o:before{content:\\\"\\\\f2be\\\"}.fa-user-o:before{content:\\\"\\\\f2c0\\\"}.fa-id-badge:before{content:\\\"\\\\f2c1\\\"}.fa-drivers-license:before,.fa-id-card:before{content:\\\"\\\\f2c2\\\"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:\\\"\\\\f2c3\\\"}.fa-quora:before{content:\\\"\\\\f2c4\\\"}.fa-free-code-camp:before{content:\\\"\\\\f2c5\\\"}.fa-telegram:before{content:\\\"\\\\f2c6\\\"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:\\\"\\\\f2c7\\\"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:\\\"\\\\f2c8\\\"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:\\\"\\\\f2c9\\\"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:\\\"\\\\f2ca\\\"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:\\\"\\\\f2cb\\\"}.fa-shower:before{content:\\\"\\\\f2cc\\\"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:\\\"\\\\f2cd\\\"}.fa-podcast:before{content:\\\"\\\\f2ce\\\"}.fa-window-maximize:before{content:\\\"\\\\f2d0\\\"}.fa-window-minimize:before{content:\\\"\\\\f2d1\\\"}.fa-window-restore:before{content:\\\"\\\\f2d2\\\"}.fa-times-rectangle:before,.fa-window-close:before{content:\\\"\\\\f2d3\\\"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:\\\"\\\\f2d4\\\"}.fa-bandcamp:before{content:\\\"\\\\f2d5\\\"}.fa-grav:before{content:\\\"\\\\f2d6\\\"}.fa-etsy:before{content:\\\"\\\\f2d7\\\"}.fa-imdb:before{content:\\\"\\\\f2d8\\\"}.fa-ravelry:before{content:\\\"\\\\f2d9\\\"}.fa-eercast:before{content:\\\"\\\\f2da\\\"}.fa-microchip:before{content:\\\"\\\\f2db\\\"}.fa-snowflake-o:before{content:\\\"\\\\f2dc\\\"}.fa-superpowers:before{content:\\\"\\\\f2dd\\\"}.fa-wpexplorer:before{content:\\\"\\\\f2de\\\"}.fa-meetup:before{content:\\\"\\\\f2e0\\\"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}a{cursor:pointer}.angular-editor-textarea{min-height:150px;overflow:auto;margin-top:5px;resize:vertical}.angular-editor-textarea:after{content:\\\"\\\";position:absolute;bottom:0;right:0;display:block;width:8px;height:8px;cursor:nwse-resize;background-color:#ffffff80}.angular-editor-toolbar{font:100 14px/15px Roboto,Arial,sans-serif;background-color:#f5f5f5;font-size:.8rem;padding:.2rem;border:1px solid #ddd}.angular-editor-toolbar .angular-editor-toolbar-set{display:none;margin-right:5px;vertical-align:baseline}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button{background-color:#fff;vertical-align:middle;border:1px solid #ddd;padding:.4rem;min-width:2rem;float:left}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:focus,.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.focus{outline:0}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label{pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.foreground :after{background:#555555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.background{background:#555555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active{background:#fff5b9}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active:hover{background-color:#fffa98}.angular-editor-toolbar .angular-editor-toolbar-set select{font-size:11px;width:90px;vertical-align:middle;background-color:transparent;border:.5px solid rgba(255,255,255,0);border-radius:5px;outline:none;padding:.4rem;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-heading optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .default{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h1{font-size:24px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h2{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h3{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h4{font-size:15px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h5{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h6{font-size:13px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .div,.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .pre{font-size:12px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size{display:inline-block;width:50px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size1{font-size:10px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size2{font-size:12px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size3{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size4{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size5{font-size:18px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size6{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size7{font-size:22px}}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style{display:inline-block;width:90px}@supports not (-moz-appearance: none){.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:hover{cursor:pointer;background-color:#f1f1f1;transition:.2s ease}.angular-editor-toolbar .angular-editor-toolbar-set .color-label{position:relative;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .background{font-size:smaller;background:#1b1b1b;color:#fff;padding:3px}.angular-editor-toolbar .angular-editor-toolbar-set .foreground :after{position:absolute;content:\\\"\\\";left:-1px;top:auto;bottom:-3px;right:auto;width:15px;height:2px;z-index:0;background:#1b1b1b}.angular-editor-toolbar .angular-editor-toolbar-set:not([style*=\\\"display:none\\\"]):not([style*=\\\"display: none\\\"]){display:inline-block}.angular-editor{position:relative}.angular-editor ::ng-deep [contenteditable=true]:empty:before{content:attr(placeholder);color:#868e96;opacity:1}.angular-editor .angular-editor-wrapper{position:relative}.angular-editor .angular-editor-wrapper .angular-editor-textarea{min-height:5rem;padding:.5rem .8rem 1rem;border:1px solid #ddd;background-color:transparent;overflow-x:hidden;overflow-y:auto;position:relative}.angular-editor .angular-editor-wrapper .angular-editor-textarea ::ng-deep blockquote{margin-left:1rem;border-left:.2em solid #dfe2e5;padding-left:.5rem}.angular-editor .angular-editor-wrapper ::ng-deep p{margin-bottom:0}.angular-editor .angular-editor-wrapper .angular-editor-placeholder{display:none;position:absolute;top:0;padding:.5rem .8rem 1rem .9rem;color:#6c757d;opacity:.75}.angular-editor .angular-editor-wrapper.show-placeholder .angular-editor-placeholder{display:block}.angular-editor .angular-editor-wrapper.disabled{cursor:not-allowed;opacity:.5;pointer-events:none}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.Renderer2 }, { type: AngularEditorService }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i2.DomSanitizer }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['autofocus']\n }] }];\n }, propDecorators: { id: [{\n type: Input\n }], config: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], html: [{\n type: Output\n }], textArea: [{\n type: ViewChild,\n args: ['editor', { static: true }]\n }], editorWrapper: [{\n type: ViewChild,\n args: ['editorWrapper', { static: true }]\n }], editorToolbar: [{\n type: ViewChild,\n args: ['editorToolbar']\n }], viewMode: [{\n type: Output\n }], blurEvent: [{\n type: Output,\n args: ['blur']\n }], focusEvent: [{\n type: Output,\n args: ['focus']\n }], tabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], onFocus: [{\n type: HostListener,\n args: ['focus']\n }] } });\n\nclass AngularEditorModule {\n}\nAngularEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: AngularEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAngularEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: AngularEditorModule, declarations: [AngularEditorComponent, AngularEditorToolbarComponent, AeSelectComponent], imports: [CommonModule, FormsModule, ReactiveFormsModule], exports: [AngularEditorComponent, AngularEditorToolbarComponent] });\nAngularEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: AngularEditorModule, imports: [[\n CommonModule, FormsModule, ReactiveFormsModule\n ]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: AngularEditorModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule, FormsModule, ReactiveFormsModule\n ],\n declarations: [AngularEditorComponent, AngularEditorToolbarComponent, AeSelectComponent],\n exports: [AngularEditorComponent, AngularEditorToolbarComponent]\n }]\n }] });\n\n/*\n * Public API Surface of angular-editor\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AngularEditorComponent, AngularEditorModule, AngularEditorService, AngularEditorToolbarComponent };\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Directive, Input, Output, HostListener, Injectable, PLATFORM_ID, Component, ViewEncapsulation, Inject, ViewChild, Injector, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\n\nvar ColorFormats;\n(function (ColorFormats) {\n ColorFormats[ColorFormats[\"HEX\"] = 0] = \"HEX\";\n ColorFormats[ColorFormats[\"RGBA\"] = 1] = \"RGBA\";\n ColorFormats[ColorFormats[\"HSLA\"] = 2] = \"HSLA\";\n ColorFormats[ColorFormats[\"CMYK\"] = 3] = \"CMYK\";\n})(ColorFormats || (ColorFormats = {}));\nclass Rgba {\n constructor(r, g, b, a) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n}\nclass Hsva {\n constructor(h, s, v, a) {\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n}\nclass Hsla {\n constructor(h, s, l, a) {\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n }\n}\nclass Cmyk {\n constructor(c, m, y, k, a = 1) {\n this.c = c;\n this.m = m;\n this.y = y;\n this.k = k;\n this.a = a;\n }\n}\n\nfunction calculateAutoPositioning(elBounds, triggerElBounds) {\n // Defaults\n let usePositionX = 'right';\n let usePositionY = 'bottom';\n // Calculate collisions\n const { height, width } = elBounds;\n const { top, left } = triggerElBounds;\n const bottom = top + triggerElBounds.height;\n const right = left + triggerElBounds.width;\n const collisionTop = top - height < 0;\n const collisionBottom = bottom + height > (window.innerHeight || document.documentElement.clientHeight);\n const collisionLeft = left - width < 0;\n const collisionRight = right + width > (window.innerWidth || document.documentElement.clientWidth);\n const collisionAll = collisionTop && collisionBottom && collisionLeft && collisionRight;\n // Generate X & Y position values\n if (collisionBottom) {\n usePositionY = 'top';\n }\n if (collisionTop) {\n usePositionY = 'bottom';\n }\n if (collisionLeft) {\n usePositionX = 'right';\n }\n if (collisionRight) {\n usePositionX = 'left';\n }\n // Choose the largest gap available\n if (collisionAll) {\n const postions = ['left', 'right', 'top', 'bottom'];\n return postions.reduce((prev, next) => elBounds[prev] > elBounds[next] ? prev : next);\n }\n if ((collisionLeft && collisionRight)) {\n if (collisionTop) {\n return 'bottom';\n }\n if (collisionBottom) {\n return 'top';\n }\n return top > bottom ? 'top' : 'bottom';\n }\n if ((collisionTop && collisionBottom)) {\n if (collisionLeft) {\n return 'right';\n }\n if (collisionRight) {\n return 'left';\n }\n return left > right ? 'left' : 'right';\n }\n return `${usePositionY}-${usePositionX}`;\n}\nfunction detectIE() {\n let ua = '';\n if (typeof navigator !== 'undefined') {\n ua = navigator.userAgent.toLowerCase();\n }\n const msie = ua.indexOf('msie ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n // Other browser\n return false;\n}\nclass TextDirective {\n constructor() {\n this.newValue = new EventEmitter();\n }\n inputChange(event) {\n const value = event.target.value;\n if (this.rg === undefined) {\n this.newValue.emit(value);\n }\n else {\n const numeric = parseFloat(value);\n this.newValue.emit({ v: numeric, rg: this.rg });\n }\n }\n}\nTextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: TextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nTextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.1\", type: TextDirective, selector: \"[text]\", inputs: { rg: \"rg\", text: \"text\" }, outputs: { newValue: \"newValue\" }, host: { listeners: { \"input\": \"inputChange($event)\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: TextDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[text]'\n }]\n }], propDecorators: { rg: [{\n type: Input\n }], text: [{\n type: Input\n }], newValue: [{\n type: Output\n }], inputChange: [{\n type: HostListener,\n args: ['input', ['$event']]\n }] } });\nclass SliderDirective {\n constructor(elRef) {\n this.elRef = elRef;\n this.dragEnd = new EventEmitter();\n this.dragStart = new EventEmitter();\n this.newValue = new EventEmitter();\n this.listenerMove = (event) => this.move(event);\n this.listenerStop = () => this.stop();\n }\n mouseDown(event) {\n this.start(event);\n }\n touchStart(event) {\n this.start(event);\n }\n move(event) {\n event.preventDefault();\n this.setCursor(event);\n }\n start(event) {\n this.setCursor(event);\n event.stopPropagation();\n document.addEventListener('mouseup', this.listenerStop);\n document.addEventListener('touchend', this.listenerStop);\n document.addEventListener('mousemove', this.listenerMove);\n document.addEventListener('touchmove', this.listenerMove);\n this.dragStart.emit();\n }\n stop() {\n document.removeEventListener('mouseup', this.listenerStop);\n document.removeEventListener('touchend', this.listenerStop);\n document.removeEventListener('mousemove', this.listenerMove);\n document.removeEventListener('touchmove', this.listenerMove);\n this.dragEnd.emit();\n }\n getX(event) {\n const position = this.elRef.nativeElement.getBoundingClientRect();\n const pageX = (event.pageX !== undefined) ? event.pageX : event.touches[0].pageX;\n return pageX - position.left - window.pageXOffset;\n }\n getY(event) {\n const position = this.elRef.nativeElement.getBoundingClientRect();\n const pageY = (event.pageY !== undefined) ? event.pageY : event.touches[0].pageY;\n return pageY - position.top - window.pageYOffset;\n }\n setCursor(event) {\n const width = this.elRef.nativeElement.offsetWidth;\n const height = this.elRef.nativeElement.offsetHeight;\n const x = Math.max(0, Math.min(this.getX(event), width));\n const y = Math.max(0, Math.min(this.getY(event), height));\n if (this.rgX !== undefined && this.rgY !== undefined) {\n this.newValue.emit({ s: x / width, v: (1 - y / height), rgX: this.rgX, rgY: this.rgY });\n }\n else if (this.rgX === undefined && this.rgY !== undefined) {\n this.newValue.emit({ v: y / height, rgY: this.rgY });\n }\n else if (this.rgX !== undefined && this.rgY === undefined) {\n this.newValue.emit({ v: x / width, rgX: this.rgX });\n }\n }\n}\nSliderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: SliderDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nSliderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.1\", type: SliderDirective, selector: \"[slider]\", inputs: { rgX: \"rgX\", rgY: \"rgY\", slider: \"slider\" }, outputs: { dragEnd: \"dragEnd\", dragStart: \"dragStart\", newValue: \"newValue\" }, host: { listeners: { \"mousedown\": \"mouseDown($event)\", \"touchstart\": \"touchStart($event)\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: SliderDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[slider]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { rgX: [{\n type: Input\n }], rgY: [{\n type: Input\n }], slider: [{\n type: Input\n }], dragEnd: [{\n type: Output\n }], dragStart: [{\n type: Output\n }], newValue: [{\n type: Output\n }], mouseDown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }], touchStart: [{\n type: HostListener,\n args: ['touchstart', ['$event']]\n }] } });\nclass SliderPosition {\n constructor(h, s, v, a) {\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n}\nclass SliderDimension {\n constructor(h, s, v, a) {\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n}\n\nclass ColorPickerService {\n constructor() {\n this.active = null;\n }\n setActive(active) {\n if (this.active && this.active !== active && this.active.cpDialogDisplay !== 'inline') {\n this.active.closeDialog();\n }\n this.active = active;\n }\n hsva2hsla(hsva) {\n const h = hsva.h, s = hsva.s, v = hsva.v, a = hsva.a;\n if (v === 0) {\n return new Hsla(h, 0, 0, a);\n }\n else if (s === 0 && v === 1) {\n return new Hsla(h, 1, 1, a);\n }\n else {\n const l = v * (2 - s) / 2;\n return new Hsla(h, v * s / (1 - Math.abs(2 * l - 1)), l, a);\n }\n }\n hsla2hsva(hsla) {\n const h = Math.min(hsla.h, 1), s = Math.min(hsla.s, 1);\n const l = Math.min(hsla.l, 1), a = Math.min(hsla.a, 1);\n if (l === 0) {\n return new Hsva(h, 0, 0, a);\n }\n else {\n const v = l + s * (1 - Math.abs(2 * l - 1)) / 2;\n return new Hsva(h, 2 * (v - l) / v, v, a);\n }\n }\n hsvaToRgba(hsva) {\n let r, g, b;\n const h = hsva.h, s = hsva.s, v = hsva.v, a = hsva.a;\n const i = Math.floor(h * 6);\n const f = h * 6 - i;\n const p = v * (1 - s);\n const q = v * (1 - f * s);\n const t = v * (1 - (1 - f) * s);\n switch (i % 6) {\n case 0:\n r = v, g = t, b = p;\n break;\n case 1:\n r = q, g = v, b = p;\n break;\n case 2:\n r = p, g = v, b = t;\n break;\n case 3:\n r = p, g = q, b = v;\n break;\n case 4:\n r = t, g = p, b = v;\n break;\n case 5:\n r = v, g = p, b = q;\n break;\n default:\n r = 0, g = 0, b = 0;\n }\n return new Rgba(r, g, b, a);\n }\n cmykToRgb(cmyk) {\n const r = (1 - cmyk.c) * (1 - cmyk.k);\n const g = (1 - cmyk.m) * (1 - cmyk.k);\n const b = (1 - cmyk.y) * (1 - cmyk.k);\n return new Rgba(r, g, b, cmyk.a);\n }\n rgbaToCmyk(rgba) {\n const k = 1 - Math.max(rgba.r, rgba.g, rgba.b);\n if (k === 1) {\n return new Cmyk(0, 0, 0, 1, rgba.a);\n }\n else {\n const c = (1 - rgba.r - k) / (1 - k);\n const m = (1 - rgba.g - k) / (1 - k);\n const y = (1 - rgba.b - k) / (1 - k);\n return new Cmyk(c, m, y, k, rgba.a);\n }\n }\n rgbaToHsva(rgba) {\n let h, s;\n const r = Math.min(rgba.r, 1), g = Math.min(rgba.g, 1);\n const b = Math.min(rgba.b, 1), a = Math.min(rgba.a, 1);\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n const v = max, d = max - min;\n s = (max === 0) ? 0 : d / max;\n if (max === min) {\n h = 0;\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n h = 0;\n }\n h /= 6;\n }\n return new Hsva(h, s, v, a);\n }\n rgbaToHex(rgba, allowHex8) {\n /* eslint-disable no-bitwise */\n let hex = '#' + ((1 << 24) | (rgba.r << 16) | (rgba.g << 8) | rgba.b).toString(16).substr(1);\n if (allowHex8) {\n hex += ((1 << 8) | Math.round(rgba.a * 255)).toString(16).substr(1);\n }\n /* eslint-enable no-bitwise */\n return hex;\n }\n normalizeCMYK(cmyk) {\n return new Cmyk(cmyk.c / 100, cmyk.m / 100, cmyk.y / 100, cmyk.k / 100, cmyk.a);\n }\n denormalizeCMYK(cmyk) {\n return new Cmyk(Math.floor(cmyk.c * 100), Math.floor(cmyk.m * 100), Math.floor(cmyk.y * 100), Math.floor(cmyk.k * 100), cmyk.a);\n }\n denormalizeRGBA(rgba) {\n return new Rgba(Math.round(rgba.r * 255), Math.round(rgba.g * 255), Math.round(rgba.b * 255), rgba.a);\n }\n stringToHsva(colorString = '', allowHex8 = false) {\n let hsva = null;\n colorString = (colorString || '').toLowerCase();\n const stringParsers = [\n {\n re: /(rgb)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*%?,\\s*(\\d{1,3})\\s*%?(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n parse: function (execResult) {\n return new Rgba(parseInt(execResult[2], 10) / 255, parseInt(execResult[3], 10) / 255, parseInt(execResult[4], 10) / 255, isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]));\n }\n }, {\n re: /(hsl)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})%\\s*,\\s*(\\d{1,3})%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n parse: function (execResult) {\n return new Hsla(parseInt(execResult[2], 10) / 360, parseInt(execResult[3], 10) / 100, parseInt(execResult[4], 10) / 100, isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]));\n }\n }\n ];\n if (allowHex8) {\n stringParsers.push({\n re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})?$/,\n parse: function (execResult) {\n return new Rgba(parseInt(execResult[1], 16) / 255, parseInt(execResult[2], 16) / 255, parseInt(execResult[3], 16) / 255, parseInt(execResult[4] || 'FF', 16) / 255);\n }\n });\n }\n else {\n stringParsers.push({\n re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/,\n parse: function (execResult) {\n return new Rgba(parseInt(execResult[1], 16) / 255, parseInt(execResult[2], 16) / 255, parseInt(execResult[3], 16) / 255, 1);\n }\n });\n }\n stringParsers.push({\n re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/,\n parse: function (execResult) {\n return new Rgba(parseInt(execResult[1] + execResult[1], 16) / 255, parseInt(execResult[2] + execResult[2], 16) / 255, parseInt(execResult[3] + execResult[3], 16) / 255, 1);\n }\n });\n for (const key in stringParsers) {\n if (stringParsers.hasOwnProperty(key)) {\n const parser = stringParsers[key];\n const match = parser.re.exec(colorString), color = match && parser.parse(match);\n if (color) {\n if (color instanceof Rgba) {\n hsva = this.rgbaToHsva(color);\n }\n else if (color instanceof Hsla) {\n hsva = this.hsla2hsva(color);\n }\n return hsva;\n }\n }\n }\n return hsva;\n }\n outputFormat(hsva, outputFormat, alphaChannel) {\n if (outputFormat === 'auto') {\n outputFormat = hsva.a < 1 ? 'rgba' : 'hex';\n }\n switch (outputFormat) {\n case 'hsla':\n const hsla = this.hsva2hsla(hsva);\n const hslaText = new Hsla(Math.round((hsla.h) * 360), Math.round(hsla.s * 100), Math.round(hsla.l * 100), Math.round(hsla.a * 100) / 100);\n if (hsva.a < 1 || alphaChannel === 'always') {\n return 'hsla(' + hslaText.h + ',' + hslaText.s + '%,' + hslaText.l + '%,' +\n hslaText.a + ')';\n }\n else {\n return 'hsl(' + hslaText.h + ',' + hslaText.s + '%,' + hslaText.l + '%)';\n }\n case 'rgba':\n const rgba = this.denormalizeRGBA(this.hsvaToRgba(hsva));\n if (hsva.a < 1 || alphaChannel === 'always') {\n return 'rgba(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ',' +\n Math.round(rgba.a * 100) / 100 + ')';\n }\n else {\n return 'rgb(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ')';\n }\n default:\n const allowHex8 = (alphaChannel === 'always' || alphaChannel === 'forced');\n return this.rgbaToHex(this.denormalizeRGBA(this.hsvaToRgba(hsva)), allowHex8);\n }\n }\n}\nColorPickerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: ColorPickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nColorPickerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: ColorPickerService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: ColorPickerService, decorators: [{\n type: Injectable\n }] });\n\n// Do not store that on the class instance since the condition will be run\n// every time the class is created.\nconst SUPPORTS_TOUCH = typeof window !== 'undefined' && 'ontouchstart' in window;\nclass ColorPickerComponent {\n constructor(ngZone, elRef, cdRef, document, platformId, service) {\n this.ngZone = ngZone;\n this.elRef = elRef;\n this.cdRef = cdRef;\n this.document = document;\n this.platformId = platformId;\n this.service = service;\n this.isIE10 = false;\n this.dialogArrowSize = 10;\n this.dialogArrowOffset = 15;\n this.dialogInputFields = [\n ColorFormats.HEX,\n ColorFormats.RGBA,\n ColorFormats.HSLA,\n ColorFormats.CMYK\n ];\n this.useRootViewContainer = false;\n this.eyeDropperSupported = isPlatformBrowser(this.platformId) && 'EyeDropper' in this.document.defaultView;\n }\n handleEsc(event) {\n if (this.show && this.cpDialogDisplay === 'popup') {\n this.onCancelColor(event);\n }\n }\n handleEnter(event) {\n if (this.show && this.cpDialogDisplay === 'popup') {\n this.onAcceptColor(event);\n }\n }\n ngOnInit() {\n this.slider = new SliderPosition(0, 0, 0, 0);\n const hueWidth = this.hueSlider.nativeElement.offsetWidth || 140;\n const alphaWidth = this.alphaSlider.nativeElement.offsetWidth || 140;\n this.sliderDimMax = new SliderDimension(hueWidth, this.cpWidth, 130, alphaWidth);\n if (this.cpCmykEnabled) {\n this.format = ColorFormats.CMYK;\n }\n else if (this.cpOutputFormat === 'rgba') {\n this.format = ColorFormats.RGBA;\n }\n else if (this.cpOutputFormat === 'hsla') {\n this.format = ColorFormats.HSLA;\n }\n else {\n this.format = ColorFormats.HEX;\n }\n this.listenerMouseDown = (event) => { this.onMouseDown(event); };\n this.listenerResize = () => { this.onResize(); };\n this.openDialog(this.initialColor, false);\n }\n ngOnDestroy() {\n this.closeDialog();\n }\n ngAfterViewInit() {\n if (this.cpWidth !== 230 || this.cpDialogDisplay === 'inline') {\n const hueWidth = this.hueSlider.nativeElement.offsetWidth || 140;\n const alphaWidth = this.alphaSlider.nativeElement.offsetWidth || 140;\n this.sliderDimMax = new SliderDimension(hueWidth, this.cpWidth, 130, alphaWidth);\n this.updateColorPicker(false);\n this.cdRef.detectChanges();\n }\n }\n openDialog(color, emit = true) {\n this.service.setActive(this);\n if (!this.width) {\n this.cpWidth = this.directiveElementRef.nativeElement.offsetWidth;\n }\n if (!this.height) {\n this.height = 320;\n }\n this.setInitialColor(color);\n this.setColorFromString(color, emit);\n this.openColorPicker();\n }\n closeDialog() {\n this.closeColorPicker();\n }\n setupDialog(instance, elementRef, color, cpWidth, cpHeight, cpDialogDisplay, cpFallbackColor, cpColorMode, cpCmykEnabled, cpAlphaChannel, cpOutputFormat, cpDisableInput, cpIgnoredElements, cpSaveClickOutside, cpCloseClickOutside, cpUseRootViewContainer, cpPosition, cpPositionOffset, cpPositionRelativeToArrow, cpPresetLabel, cpPresetColors, cpPresetColorsClass, cpMaxPresetColorsLength, cpPresetEmptyMessage, cpPresetEmptyMessageClass, cpOKButton, cpOKButtonClass, cpOKButtonText, cpCancelButton, cpCancelButtonClass, cpCancelButtonText, cpAddColorButton, cpAddColorButtonClass, cpAddColorButtonText, cpRemoveColorButtonClass, cpEyeDropper, cpTriggerElement, cpExtraTemplate) {\n this.setInitialColor(color);\n this.setColorMode(cpColorMode);\n this.isIE10 = (detectIE() === 10);\n this.directiveInstance = instance;\n this.directiveElementRef = elementRef;\n this.cpDisableInput = cpDisableInput;\n this.cpCmykEnabled = cpCmykEnabled;\n this.cpAlphaChannel = cpAlphaChannel;\n this.cpOutputFormat = cpOutputFormat;\n this.cpDialogDisplay = cpDialogDisplay;\n this.cpIgnoredElements = cpIgnoredElements;\n this.cpSaveClickOutside = cpSaveClickOutside;\n this.cpCloseClickOutside = cpCloseClickOutside;\n this.useRootViewContainer = cpUseRootViewContainer;\n this.width = this.cpWidth = parseInt(cpWidth, 10);\n this.height = this.cpHeight = parseInt(cpHeight, 10);\n this.cpPosition = cpPosition;\n this.cpPositionOffset = parseInt(cpPositionOffset, 10);\n this.cpOKButton = cpOKButton;\n this.cpOKButtonText = cpOKButtonText;\n this.cpOKButtonClass = cpOKButtonClass;\n this.cpCancelButton = cpCancelButton;\n this.cpCancelButtonText = cpCancelButtonText;\n this.cpCancelButtonClass = cpCancelButtonClass;\n this.cpEyeDropper = cpEyeDropper;\n this.fallbackColor = cpFallbackColor || '#fff';\n this.setPresetConfig(cpPresetLabel, cpPresetColors);\n this.cpPresetColorsClass = cpPresetColorsClass;\n this.cpMaxPresetColorsLength = cpMaxPresetColorsLength;\n this.cpPresetEmptyMessage = cpPresetEmptyMessage;\n this.cpPresetEmptyMessageClass = cpPresetEmptyMessageClass;\n this.cpAddColorButton = cpAddColorButton;\n this.cpAddColorButtonText = cpAddColorButtonText;\n this.cpAddColorButtonClass = cpAddColorButtonClass;\n this.cpRemoveColorButtonClass = cpRemoveColorButtonClass;\n this.cpTriggerElement = cpTriggerElement;\n this.cpExtraTemplate = cpExtraTemplate;\n if (!cpPositionRelativeToArrow) {\n this.dialogArrowOffset = 0;\n }\n if (cpDialogDisplay === 'inline') {\n this.dialogArrowSize = 0;\n this.dialogArrowOffset = 0;\n }\n if (cpOutputFormat === 'hex' &&\n cpAlphaChannel !== 'always' && cpAlphaChannel !== 'forced') {\n this.cpAlphaChannel = 'disabled';\n }\n }\n setColorMode(mode) {\n switch (mode.toString().toUpperCase()) {\n case '1':\n case 'C':\n case 'COLOR':\n this.cpColorMode = 1;\n break;\n case '2':\n case 'G':\n case 'GRAYSCALE':\n this.cpColorMode = 2;\n break;\n case '3':\n case 'P':\n case 'PRESETS':\n this.cpColorMode = 3;\n break;\n default:\n this.cpColorMode = 1;\n }\n }\n setInitialColor(color) {\n this.initialColor = color;\n }\n setPresetConfig(cpPresetLabel, cpPresetColors) {\n this.cpPresetLabel = cpPresetLabel;\n this.cpPresetColors = cpPresetColors;\n }\n setColorFromString(value, emit = true, update = true) {\n let hsva;\n if (this.cpAlphaChannel === 'always' || this.cpAlphaChannel === 'forced') {\n hsva = this.service.stringToHsva(value, true);\n if (!hsva && !this.hsva) {\n hsva = this.service.stringToHsva(value, false);\n }\n }\n else {\n hsva = this.service.stringToHsva(value, false);\n }\n if (!hsva && !this.hsva) {\n hsva = this.service.stringToHsva(this.fallbackColor, false);\n }\n if (hsva) {\n this.hsva = hsva;\n this.sliderH = this.hsva.h;\n if (this.cpOutputFormat === 'hex' && this.cpAlphaChannel === 'disabled') {\n this.hsva.a = 1;\n }\n this.updateColorPicker(emit, update);\n }\n }\n onResize() {\n if (this.position === 'fixed') {\n this.setDialogPosition();\n }\n else if (this.cpDialogDisplay !== 'inline') {\n this.closeColorPicker();\n }\n }\n onDragEnd(slider) {\n this.directiveInstance.sliderDragEnd({ slider: slider, color: this.outputColor });\n }\n onDragStart(slider) {\n this.directiveInstance.sliderDragStart({ slider: slider, color: this.outputColor });\n }\n onMouseDown(event) {\n if (this.show &&\n !this.isIE10 &&\n this.cpDialogDisplay === 'popup' &&\n event.target !== this.directiveElementRef.nativeElement &&\n !this.isDescendant(this.elRef.nativeElement, event.target) &&\n !this.isDescendant(this.directiveElementRef.nativeElement, event.target) &&\n this.cpIgnoredElements.filter((item) => item === event.target).length === 0) {\n this.ngZone.run(() => {\n if (this.cpSaveClickOutside) {\n this.directiveInstance.colorSelected(this.outputColor);\n }\n else {\n this.hsva = null;\n this.setColorFromString(this.initialColor, false);\n if (this.cpCmykEnabled) {\n this.directiveInstance.cmykChanged(this.cmykColor);\n }\n this.directiveInstance.colorChanged(this.initialColor);\n this.directiveInstance.colorCanceled();\n }\n if (this.cpCloseClickOutside) {\n this.closeColorPicker();\n }\n });\n }\n }\n onAcceptColor(event) {\n event.stopPropagation();\n if (this.outputColor) {\n this.directiveInstance.colorSelected(this.outputColor);\n }\n if (this.cpDialogDisplay === 'popup') {\n this.closeColorPicker();\n }\n }\n onCancelColor(event) {\n this.hsva = null;\n event.stopPropagation();\n this.directiveInstance.colorCanceled();\n this.setColorFromString(this.initialColor, true);\n if (this.cpDialogDisplay === 'popup') {\n if (this.cpCmykEnabled) {\n this.directiveInstance.cmykChanged(this.cmykColor);\n }\n this.directiveInstance.colorChanged(this.initialColor, true);\n this.closeColorPicker();\n }\n }\n onEyeDropper() {\n if (!this.eyeDropperSupported)\n return;\n const eyeDropper = new window.EyeDropper();\n eyeDropper.open().then((eyeDropperResult) => {\n this.setColorFromString(eyeDropperResult.sRGBHex, true);\n });\n }\n onFormatToggle(change) {\n const availableFormats = this.dialogInputFields.length -\n (this.cpCmykEnabled ? 0 : 1);\n const nextFormat = (((this.dialogInputFields.indexOf(this.format) + change) %\n availableFormats) + availableFormats) % availableFormats;\n this.format = this.dialogInputFields[nextFormat];\n }\n onColorChange(value) {\n this.hsva.s = value.s / value.rgX;\n this.hsva.v = value.v / value.rgY;\n this.updateColorPicker();\n this.directiveInstance.sliderChanged({\n slider: 'lightness',\n value: this.hsva.v,\n color: this.outputColor\n });\n this.directiveInstance.sliderChanged({\n slider: 'saturation',\n value: this.hsva.s,\n color: this.outputColor\n });\n }\n onHueChange(value) {\n this.hsva.h = value.v / value.rgX;\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n this.directiveInstance.sliderChanged({\n slider: 'hue',\n value: this.hsva.h,\n color: this.outputColor\n });\n }\n onValueChange(value) {\n this.hsva.v = value.v / value.rgX;\n this.updateColorPicker();\n this.directiveInstance.sliderChanged({\n slider: 'value',\n value: this.hsva.v,\n color: this.outputColor\n });\n }\n onAlphaChange(value) {\n this.hsva.a = value.v / value.rgX;\n this.updateColorPicker();\n this.directiveInstance.sliderChanged({\n slider: 'alpha',\n value: this.hsva.a,\n color: this.outputColor\n });\n }\n onHexInput(value) {\n if (value === null) {\n this.updateColorPicker();\n }\n else {\n if (value && value[0] !== '#') {\n value = '#' + value;\n }\n let validHex = /^#([a-f0-9]{3}|[a-f0-9]{6})$/gi;\n if (this.cpAlphaChannel === 'always') {\n validHex = /^#([a-f0-9]{3}|[a-f0-9]{6}|[a-f0-9]{8})$/gi;\n }\n const valid = validHex.test(value);\n if (valid) {\n if (value.length < 5) {\n value = '#' + value.substring(1)\n .split('')\n .map(c => c + c)\n .join('');\n }\n if (this.cpAlphaChannel === 'forced') {\n value += Math.round(this.hsva.a * 255).toString(16);\n }\n this.setColorFromString(value, true, false);\n }\n this.directiveInstance.inputChanged({\n input: 'hex',\n valid: valid,\n value: value,\n color: this.outputColor\n });\n }\n }\n onRedInput(value) {\n const rgba = this.service.hsvaToRgba(this.hsva);\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n rgba.r = value.v / value.rg;\n this.hsva = this.service.rgbaToHsva(rgba);\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'red',\n valid: valid,\n value: rgba.r,\n color: this.outputColor\n });\n }\n onBlueInput(value) {\n const rgba = this.service.hsvaToRgba(this.hsva);\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n rgba.b = value.v / value.rg;\n this.hsva = this.service.rgbaToHsva(rgba);\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'blue',\n valid: valid,\n value: rgba.b,\n color: this.outputColor\n });\n }\n onGreenInput(value) {\n const rgba = this.service.hsvaToRgba(this.hsva);\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n rgba.g = value.v / value.rg;\n this.hsva = this.service.rgbaToHsva(rgba);\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'green',\n valid: valid,\n value: rgba.g,\n color: this.outputColor\n });\n }\n onHueInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.hsva.h = value.v / value.rg;\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'hue',\n valid: valid,\n value: this.hsva.h,\n color: this.outputColor\n });\n }\n onValueInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.hsva.v = value.v / value.rg;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'value',\n valid: valid,\n value: this.hsva.v,\n color: this.outputColor\n });\n }\n onAlphaInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.hsva.a = value.v / value.rg;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'alpha',\n valid: valid,\n value: this.hsva.a,\n color: this.outputColor\n });\n }\n onLightnessInput(value) {\n const hsla = this.service.hsva2hsla(this.hsva);\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n hsla.l = value.v / value.rg;\n this.hsva = this.service.hsla2hsva(hsla);\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'lightness',\n valid: valid,\n value: hsla.l,\n color: this.outputColor\n });\n }\n onSaturationInput(value) {\n const hsla = this.service.hsva2hsla(this.hsva);\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n hsla.s = value.v / value.rg;\n this.hsva = this.service.hsla2hsva(hsla);\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'saturation',\n valid: valid,\n value: hsla.s,\n color: this.outputColor\n });\n }\n onCyanInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.cmyk.c = value.v;\n this.updateColorPicker(false, true, true);\n }\n this.directiveInstance.inputChanged({\n input: 'cyan',\n valid: true,\n value: this.cmyk.c,\n color: this.outputColor\n });\n }\n onMagentaInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.cmyk.m = value.v;\n this.updateColorPicker(false, true, true);\n }\n this.directiveInstance.inputChanged({\n input: 'magenta',\n valid: true,\n value: this.cmyk.m,\n color: this.outputColor\n });\n }\n onYellowInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.cmyk.y = value.v;\n this.updateColorPicker(false, true, true);\n }\n this.directiveInstance.inputChanged({\n input: 'yellow',\n valid: true,\n value: this.cmyk.y,\n color: this.outputColor\n });\n }\n onBlackInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.cmyk.k = value.v;\n this.updateColorPicker(false, true, true);\n }\n this.directiveInstance.inputChanged({\n input: 'black',\n valid: true,\n value: this.cmyk.k,\n color: this.outputColor\n });\n }\n onAddPresetColor(event, value) {\n event.stopPropagation();\n if (!this.cpPresetColors.filter((color) => (color === value)).length) {\n this.cpPresetColors = this.cpPresetColors.concat(value);\n this.directiveInstance.presetColorsChanged(this.cpPresetColors);\n }\n }\n onRemovePresetColor(event, value) {\n event.stopPropagation();\n this.cpPresetColors = this.cpPresetColors.filter((color) => (color !== value));\n this.directiveInstance.presetColorsChanged(this.cpPresetColors);\n }\n // Private helper functions for the color picker dialog status\n openColorPicker() {\n if (!this.show) {\n this.show = true;\n this.hidden = true;\n setTimeout(() => {\n this.hidden = false;\n this.setDialogPosition();\n this.cdRef.detectChanges();\n }, 0);\n this.directiveInstance.stateChanged(true);\n if (!this.isIE10) {\n // The change detection should be run on `mousedown` event only when the condition\n // is met within the `onMouseDown` method.\n this.ngZone.runOutsideAngular(() => {\n // There's no sense to add both event listeners on touch devices since the `touchstart`\n // event is handled earlier than `mousedown`, so we'll get 2 change detections and the\n // second one will be unnecessary.\n if (SUPPORTS_TOUCH) {\n document.addEventListener('touchstart', this.listenerMouseDown);\n }\n else {\n document.addEventListener('mousedown', this.listenerMouseDown);\n }\n });\n }\n window.addEventListener('resize', this.listenerResize);\n }\n }\n closeColorPicker() {\n if (this.show) {\n this.show = false;\n this.directiveInstance.stateChanged(false);\n if (!this.isIE10) {\n if (SUPPORTS_TOUCH) {\n document.removeEventListener('touchstart', this.listenerMouseDown);\n }\n else {\n document.removeEventListener('mousedown', this.listenerMouseDown);\n }\n }\n window.removeEventListener('resize', this.listenerResize);\n if (!this.cdRef['destroyed']) {\n this.cdRef.detectChanges();\n }\n }\n }\n updateColorPicker(emit = true, update = true, cmykInput = false) {\n if (this.sliderDimMax) {\n if (this.cpColorMode === 2) {\n this.hsva.s = 0;\n }\n let hue, hsla, rgba;\n const lastOutput = this.outputColor;\n hsla = this.service.hsva2hsla(this.hsva);\n if (!this.cpCmykEnabled) {\n rgba = this.service.denormalizeRGBA(this.service.hsvaToRgba(this.hsva));\n }\n else {\n if (!cmykInput) {\n rgba = this.service.hsvaToRgba(this.hsva);\n this.cmyk = this.service.denormalizeCMYK(this.service.rgbaToCmyk(rgba));\n }\n else {\n rgba = this.service.cmykToRgb(this.service.normalizeCMYK(this.cmyk));\n this.hsva = this.service.rgbaToHsva(rgba);\n }\n rgba = this.service.denormalizeRGBA(rgba);\n this.sliderH = this.hsva.h;\n }\n hue = this.service.denormalizeRGBA(this.service.hsvaToRgba(new Hsva(this.sliderH || this.hsva.h, 1, 1, 1)));\n if (update) {\n this.hslaText = new Hsla(Math.round((hsla.h) * 360), Math.round(hsla.s * 100), Math.round(hsla.l * 100), Math.round(hsla.a * 100) / 100);\n this.rgbaText = new Rgba(rgba.r, rgba.g, rgba.b, Math.round(rgba.a * 100) / 100);\n if (this.cpCmykEnabled) {\n this.cmykText = new Cmyk(this.cmyk.c, this.cmyk.m, this.cmyk.y, this.cmyk.k, Math.round(this.cmyk.a * 100) / 100);\n }\n const allowHex8 = this.cpAlphaChannel === 'always';\n this.hexText = this.service.rgbaToHex(rgba, allowHex8);\n this.hexAlpha = this.rgbaText.a;\n }\n if (this.cpOutputFormat === 'auto') {\n if (this.format !== ColorFormats.RGBA && this.format !== ColorFormats.CMYK && this.format !== ColorFormats.HSLA) {\n if (this.hsva.a < 1) {\n this.format = this.hsva.a < 1 ? ColorFormats.RGBA : ColorFormats.HEX;\n }\n }\n }\n this.hueSliderColor = 'rgb(' + hue.r + ',' + hue.g + ',' + hue.b + ')';\n this.alphaSliderColor = 'rgb(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ')';\n this.outputColor = this.service.outputFormat(this.hsva, this.cpOutputFormat, this.cpAlphaChannel);\n this.selectedColor = this.service.outputFormat(this.hsva, 'rgba', null);\n if (this.format !== ColorFormats.CMYK) {\n this.cmykColor = '';\n }\n else {\n if (this.cpAlphaChannel === 'always' || this.cpAlphaChannel === 'enabled' ||\n this.cpAlphaChannel === 'forced') {\n const alpha = Math.round(this.cmyk.a * 100) / 100;\n this.cmykColor = `cmyka(${this.cmyk.c},${this.cmyk.m},${this.cmyk.y},${this.cmyk.k},${alpha})`;\n }\n else {\n this.cmykColor = `cmyk(${this.cmyk.c},${this.cmyk.m},${this.cmyk.y},${this.cmyk.k})`;\n }\n }\n this.slider = new SliderPosition((this.sliderH || this.hsva.h) * this.sliderDimMax.h - 8, this.hsva.s * this.sliderDimMax.s - 8, (1 - this.hsva.v) * this.sliderDimMax.v - 8, this.hsva.a * this.sliderDimMax.a - 8);\n if (emit && lastOutput !== this.outputColor) {\n if (this.cpCmykEnabled) {\n this.directiveInstance.cmykChanged(this.cmykColor);\n }\n this.directiveInstance.colorChanged(this.outputColor);\n }\n }\n }\n // Private helper functions for the color picker dialog positioning\n setDialogPosition() {\n if (this.cpDialogDisplay === 'inline') {\n this.position = 'relative';\n }\n else {\n let position = 'static', transform = '', style;\n let parentNode = null, transformNode = null;\n let node = this.directiveElementRef.nativeElement.parentNode;\n const dialogHeight = this.dialogElement.nativeElement.offsetHeight;\n while (node !== null && node.tagName !== 'HTML') {\n style = window.getComputedStyle(node);\n position = style.getPropertyValue('position');\n transform = style.getPropertyValue('transform');\n if (position !== 'static' && parentNode === null) {\n parentNode = node;\n }\n if (transform && transform !== 'none' && transformNode === null) {\n transformNode = node;\n }\n if (position === 'fixed') {\n parentNode = transformNode;\n break;\n }\n node = node.parentNode;\n }\n const boxDirective = this.createDialogBox(this.directiveElementRef.nativeElement, (position !== 'fixed'));\n if (this.useRootViewContainer || (position === 'fixed' &&\n (!parentNode || parentNode instanceof HTMLUnknownElement))) {\n this.top = boxDirective.top;\n this.left = boxDirective.left;\n }\n else {\n if (parentNode === null) {\n parentNode = node;\n }\n const boxParent = this.createDialogBox(parentNode, (position !== 'fixed'));\n this.top = boxDirective.top - boxParent.top;\n this.left = boxDirective.left - boxParent.left;\n }\n if (position === 'fixed') {\n this.position = 'fixed';\n }\n let usePosition = this.cpPosition;\n if (this.cpPosition === 'auto') {\n const dialogBounds = this.dialogElement.nativeElement.getBoundingClientRect();\n const triggerBounds = this.cpTriggerElement.nativeElement.getBoundingClientRect();\n usePosition = calculateAutoPositioning(dialogBounds, triggerBounds);\n }\n if (usePosition === 'top') {\n this.arrowTop = dialogHeight - 1;\n this.top -= dialogHeight + this.dialogArrowSize;\n this.left += this.cpPositionOffset / 100 * boxDirective.width - this.dialogArrowOffset;\n }\n else if (usePosition === 'bottom') {\n this.top += boxDirective.height + this.dialogArrowSize;\n this.left += this.cpPositionOffset / 100 * boxDirective.width - this.dialogArrowOffset;\n }\n else if (usePosition === 'top-left' || usePosition === 'left-top') {\n this.top -= dialogHeight - boxDirective.height + boxDirective.height * this.cpPositionOffset / 100;\n this.left -= this.cpWidth + this.dialogArrowSize - 2 - this.dialogArrowOffset;\n }\n else if (usePosition === 'top-right' || usePosition === 'right-top') {\n this.top -= dialogHeight - boxDirective.height + boxDirective.height * this.cpPositionOffset / 100;\n this.left += boxDirective.width + this.dialogArrowSize - 2 - this.dialogArrowOffset;\n }\n else if (usePosition === 'left' || usePosition === 'bottom-left' || usePosition === 'left-bottom') {\n this.top += boxDirective.height * this.cpPositionOffset / 100 - this.dialogArrowOffset;\n this.left -= this.cpWidth + this.dialogArrowSize - 2;\n }\n else { // usePosition === 'right' || usePosition === 'bottom-right' || usePosition === 'right-bottom'\n this.top += boxDirective.height * this.cpPositionOffset / 100 - this.dialogArrowOffset;\n this.left += boxDirective.width + this.dialogArrowSize - 2;\n }\n this.cpUsePosition = usePosition;\n }\n }\n // Private helper functions for the color picker dialog positioning and opening\n isDescendant(parent, child) {\n let node = child.parentNode;\n while (node !== null) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n }\n createDialogBox(element, offset) {\n const { top, left } = element.getBoundingClientRect();\n return {\n top: top + (offset ? window.pageYOffset : 0),\n left: left + (offset ? window.pageXOffset : 0),\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n }\n}\nColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: ColorPickerComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }, { token: PLATFORM_ID }, { token: ColorPickerService }], target: i0.ɵɵFactoryTarget.Component });\nColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.2.1\", type: ColorPickerComponent, selector: \"color-picker\", host: { listeners: { \"document:keyup.esc\": \"handleEsc($event)\", \"document:keyup.enter\": \"handleEnter($event)\" } }, viewQueries: [{ propertyName: \"dialogElement\", first: true, predicate: [\"dialogPopup\"], descendants: true, static: true }, { propertyName: \"hueSlider\", first: true, predicate: [\"hueSlider\"], descendants: true, static: true }, { propertyName: \"alphaSlider\", first: true, predicate: [\"alphaSlider\"], descendants: true, static: true }], ngImport: i0, template: \"<div #dialogPopup class=\\\"color-picker\\\" [class.open]=\\\"show\\\" [style.display]=\\\"!show ? 'none' : 'block'\\\" [style.visibility]=\\\"hidden ? 'hidden' : 'visible'\\\" [style.top.px]=\\\"top\\\" [style.left.px]=\\\"left\\\" [style.position]=\\\"position\\\" [style.height.px]=\\\"cpHeight\\\" [style.width.px]=\\\"cpWidth\\\" (click)=\\\"$event.stopPropagation()\\\">\\n <div *ngIf=\\\"cpDialogDisplay === 'popup'\\\" class=\\\"arrow arrow-{{cpUsePosition}}\\\" [style.top.px]=\\\"arrowTop\\\"></div>\\n\\n <div *ngIf=\\\"(cpColorMode ||\\u00A01) === 1\\\" class=\\\"saturation-lightness\\\" [slider] [rgX]=\\\"1\\\" [rgY]=\\\"1\\\" [style.background-color]=\\\"hueSliderColor\\\" (newValue)=\\\"onColorChange($event)\\\" (dragStart)=\\\"onDragStart('saturation-lightness')\\\" (dragEnd)=\\\"onDragEnd('saturation-lightness')\\\">\\n <div class=\\\"cursor\\\" [style.top.px]=\\\"slider?.v\\\" [style.left.px]=\\\"slider?.s\\\"></div>\\n </div>\\n\\n <div class=\\\"hue-alpha box\\\">\\n <div class=\\\"left\\\">\\n <div class=\\\"selected-color-background\\\"></div>\\n\\n <div class=\\\"selected-color\\\" [style.background-color]=\\\"selectedColor\\\" [style.cursor]=\\\"eyeDropperSupported && cpEyeDropper ? 'pointer' : null\\\" (click)=\\\"eyeDropperSupported && cpEyeDropper && onEyeDropper()\\\">\\n <svg *ngIf=\\\"eyeDropperSupported && cpEyeDropper\\\" class=\\\"eyedropper-icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" height=\\\"24px\\\" viewBox=\\\"0 0 24 24\\\" width=\\\"24px\\\" fill=\\\"#000000\\\"><path d=\\\"M0 0h24v24H0V0z\\\" fill=\\\"none\\\"/><path d=\\\"M17.66 5.41l.92.92-2.69 2.69-.92-.92 2.69-2.69M17.67 3c-.26 0-.51.1-.71.29l-3.12 3.12-1.93-1.91-1.41 1.41 1.42 1.42L3 16.25V21h4.75l8.92-8.92 1.42 1.42 1.41-1.41-1.92-1.92 3.12-3.12c.4-.4.4-1.03.01-1.42l-2.34-2.34c-.2-.19-.45-.29-.7-.29zM6.92 19L5 17.08l8.06-8.06 1.92 1.92L6.92 19z\\\"/></svg>\\n </div>\\n\\n <button *ngIf=\\\"cpAddColorButton\\\" type=\\\"button\\\" class=\\\"{{cpAddColorButtonClass}}\\\" [disabled]=\\\"cpPresetColors && cpPresetColors.length >= cpMaxPresetColorsLength\\\" (click)=\\\"onAddPresetColor($event, selectedColor)\\\">\\n {{cpAddColorButtonText}}\\n </button>\\n </div>\\n\\n <div class=\\\"right\\\">\\n <div *ngIf=\\\"cpAlphaChannel==='disabled'\\\" style=\\\"height: 16px;\\\"></div>\\n\\n <div #hueSlider class=\\\"hue\\\" [slider] [rgX]=\\\"1\\\" [style.display]=\\\"(cpColorMode ||\\u00A01) === 1 ? 'block' : 'none'\\\" (newValue)=\\\"onHueChange($event)\\\" (dragStart)=\\\"onDragStart('hue')\\\" (dragEnd)=\\\"onDragEnd('hue')\\\">\\n <div class=\\\"cursor\\\" [style.left.px]=\\\"slider?.h\\\"></div>\\n </div>\\n\\n <div #valueSlider class=\\\"value\\\" [slider] [rgX]=\\\"1\\\" [style.display]=\\\"(cpColorMode ||\\u00A01) === 2 ? 'block': 'none'\\\" (newValue)=\\\"onValueChange($event)\\\" (dragStart)=\\\"onDragStart('value')\\\" (dragEnd)=\\\"onDragEnd('value')\\\">\\n <div class=\\\"cursor\\\" [style.right.px]=\\\"slider?.v\\\"></div>\\n </div>\\n\\n <div #alphaSlider class=\\\"alpha\\\" [slider] [rgX]=\\\"1\\\" [style.display]=\\\"cpAlphaChannel === 'disabled' ? 'none' : 'block'\\\" [style.background-color]=\\\"alphaSliderColor\\\" (newValue)=\\\"onAlphaChange($event)\\\" (dragStart)=\\\"onDragStart('alpha')\\\" (dragEnd)=\\\"onDragEnd('alpha')\\\">\\n <div class=\\\"cursor\\\" [style.left.px]=\\\"slider?.a\\\"></div>\\n </div>\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"!cpDisableInput && (cpColorMode ||\\u00A01) === 1\\\" class=\\\"cmyk-text\\\" [style.display]=\\\"format !== 3 ? 'none' : 'block'\\\">\\n <div class=\\\"box\\\">\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"100\\\" [text] [rg]=\\\"100\\\" [value]=\\\"cmykText?.c\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onCyanInput($event)\\\" />\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"100\\\" [text] [rg]=\\\"100\\\" [value]=\\\"cmykText?.m\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onMagentaInput($event)\\\" />\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"100\\\" [text] [rg]=\\\"100\\\" [value]=\\\"cmykText?.y\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onYellowInput($event)\\\" />\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"100\\\" [text] [rg]=\\\"100\\\" [value]=\\\"cmykText?.k\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onBlackInput($event)\\\" />\\n <input *ngIf=\\\"cpAlphaChannel!=='disabled'\\\" type=\\\"number\\\" pattern=\\\"[0-9]+([\\\\.,][0-9]{1,2})?\\\" min=\\\"0\\\" max=\\\"1\\\" step=\\\"0.1\\\" [text] [rg]=\\\"1\\\" [value]=\\\"cmykText?.a\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onAlphaInput($event)\\\" />\\n </div>\\n\\n <div class=\\\"box\\\">\\n <div>C</div><div>M</div><div>Y</div><div>K</div><div *ngIf=\\\"cpAlphaChannel!=='disabled'\\\" >A</div>\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"!cpDisableInput && (cpColorMode ||\\u00A01) === 1 \\\" class=\\\"hsla-text\\\" [style.display]=\\\"format !== 2 ? 'none' : 'block'\\\">\\n <div class=\\\"box\\\">\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"360\\\" [text] [rg]=\\\"360\\\" [value]=\\\"hslaText?.h\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onHueInput($event)\\\" />\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"100\\\" [text] [rg]=\\\"100\\\" [value]=\\\"hslaText?.s\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onSaturationInput($event)\\\" />\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"100\\\" [text] [rg]=\\\"100\\\" [value]=\\\"hslaText?.l\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onLightnessInput($event)\\\" />\\n <input *ngIf=\\\"cpAlphaChannel!=='disabled'\\\" type=\\\"number\\\" pattern=\\\"[0-9]+([\\\\.,][0-9]{1,2})?\\\" min=\\\"0\\\" max=\\\"1\\\" step=\\\"0.1\\\" [text] [rg]=\\\"1\\\" [value]=\\\"hslaText?.a\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onAlphaInput($event)\\\" />\\n </div>\\n\\n <div class=\\\"box\\\">\\n <div>H</div><div>S</div><div>L</div><div *ngIf=\\\"cpAlphaChannel!=='disabled'\\\">A</div>\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"!cpDisableInput && (cpColorMode ||\\u00A01) === 1 \\\" [style.display]=\\\"format !== 1 ? 'none' : 'block'\\\" class=\\\"rgba-text\\\">\\n <div class=\\\"box\\\">\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"255\\\" [text] [rg]=\\\"255\\\" [value]=\\\"rgbaText?.r\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onRedInput($event)\\\" />\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"255\\\" [text] [rg]=\\\"255\\\" [value]=\\\"rgbaText?.g\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onGreenInput($event)\\\" />\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"255\\\" [text] [rg]=\\\"255\\\" [value]=\\\"rgbaText?.b\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onBlueInput($event)\\\" />\\n <input *ngIf=\\\"cpAlphaChannel!=='disabled'\\\" type=\\\"number\\\" pattern=\\\"[0-9]+([\\\\.,][0-9]{1,2})?\\\" min=\\\"0\\\" max=\\\"1\\\" step=\\\"0.1\\\" [text] [rg]=\\\"1\\\" [value]=\\\"rgbaText?.a\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onAlphaInput($event)\\\" />\\n </div>\\n\\n <div class=\\\"box\\\">\\n <div>R</div><div>G</div><div>B</div><div *ngIf=\\\"cpAlphaChannel!=='disabled'\\\" >A</div>\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"!cpDisableInput && (cpColorMode ||\\u00A01) === 1\\\" class=\\\"hex-text\\\" [class.hex-alpha]=\\\"cpAlphaChannel==='forced'\\\"\\n [style.display]=\\\"format !== 0 ? 'none' : 'block'\\\">\\n <div class=\\\"box\\\">\\n <input [text] [value]=\\\"hexText\\\" (blur)=\\\"onHexInput(null)\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onHexInput($event)\\\"/>\\n <input *ngIf=\\\"cpAlphaChannel==='forced'\\\" type=\\\"number\\\" pattern=\\\"[0-9]+([\\\\.,][0-9]{1,2})?\\\" min=\\\"0\\\" max=\\\"1\\\" step=\\\"0.1\\\" [text] [rg]=\\\"1\\\" [value]=\\\"hexAlpha\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onAlphaInput($event)\\\"/>\\n </div>\\n\\n <div class=\\\"box\\\">\\n <div>Hex</div>\\n <div *ngIf=\\\"cpAlphaChannel==='forced'\\\">A</div>\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"!cpDisableInput && (cpColorMode ||\\u00A01) === 2\\\" class=\\\"value-text\\\">\\n <div class=\\\"box\\\">\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"100\\\" [text] [rg]=\\\"100\\\" [value]=\\\"hslaText?.l\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onValueInput($event)\\\" />\\n <input *ngIf=\\\"cpAlphaChannel!=='disabled'\\\" type=\\\"number\\\" pattern=\\\"[0-9]+([\\\\.,][0-9]{1,2})?\\\" min=\\\"0\\\" max=\\\"1\\\" step=\\\"0.1\\\" [text] [rg]=\\\"1\\\" [value]=\\\"hslaText?.a\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onAlphaInput($event)\\\" />\\n </div>\\n\\n <div class=\\\"box\\\">\\n <div>V</div><div>A</div>\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"!cpDisableInput && (cpColorMode ||\\u00A01) === 1\\\" class=\\\"type-policy\\\">\\n <span class=\\\"type-policy-arrow\\\" (click)=\\\"onFormatToggle(-1)\\\"></span>\\n <span class=\\\"type-policy-arrow\\\" (click)=\\\"onFormatToggle(1)\\\"></span>\\n </div>\\n\\n <div *ngIf=\\\"cpPresetColors?.length || cpAddColorButton\\\" class=\\\"preset-area\\\">\\n <hr>\\n\\n <div class=\\\"preset-label\\\">{{cpPresetLabel}}</div>\\n\\n <div *ngIf=\\\"cpPresetColors?.length\\\" class=\\\"{{cpPresetColorsClass}}\\\">\\n <div *ngFor=\\\"let color of cpPresetColors\\\" class=\\\"preset-color\\\" [style.backgroundColor]=\\\"color\\\" (click)=\\\"setColorFromString(color)\\\">\\n <span *ngIf=\\\"cpAddColorButton\\\" class=\\\"{{cpRemoveColorButtonClass}}\\\" (click)=\\\"onRemovePresetColor($event, color)\\\"></span>\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"!cpPresetColors?.length && cpAddColorButton\\\" class=\\\"{{cpPresetEmptyMessageClass}}\\\">{{cpPresetEmptyMessage}}</div>\\n </div>\\n\\n <div *ngIf=\\\"cpOKButton || cpCancelButton\\\" class=\\\"button-area\\\">\\n <button *ngIf=\\\"cpCancelButton\\\" type=\\\"button\\\" class=\\\"{{cpCancelButtonClass}}\\\" (click)=\\\"onCancelColor($event)\\\">{{cpCancelButtonText}}</button>\\n\\n <button *ngIf=\\\"cpOKButton\\\" type=\\\"button\\\" class=\\\"{{cpOKButtonClass}}\\\" (click)=\\\"onAcceptColor($event)\\\">{{cpOKButtonText}}</button>\\n </div>\\n\\n <div class=\\\"extra-template\\\" *ngIf=\\\"cpExtraTemplate\\\">\\n <ng-container *ngTemplateOutlet=\\\"cpExtraTemplate\\\"></ng-container>\\n </div>\\n</div>\\n\", styles: [\".color-picker{position:absolute;z-index:1000;width:230px;height:auto;border:#777 solid 1px;cursor:default;-webkit-user-select:none;user-select:none;background-color:#fff}.color-picker *{box-sizing:border-box;margin:0;font-size:11px}.color-picker input{width:0;height:26px;min-width:0;font-size:13px;text-align:center;color:#000}.color-picker input:invalid,.color-picker input:-moz-ui-invalid,.color-picker input:-moz-submit-invalid{box-shadow:none}.color-picker input::-webkit-inner-spin-button,.color-picker input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.color-picker .arrow{position:absolute;z-index:999999;width:0;height:0;border-style:solid}.color-picker .arrow.arrow-top{left:8px;border-width:10px 5px;border-color:#777 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.color-picker .arrow.arrow-bottom{top:-20px;left:8px;border-width:10px 5px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #777 rgba(0,0,0,0)}.color-picker .arrow.arrow-top-left,.color-picker .arrow.arrow-left-top{right:-21px;bottom:8px;border-width:5px 10px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) #777}.color-picker .arrow.arrow-top-right,.color-picker .arrow.arrow-right-top{bottom:8px;left:-20px;border-width:5px 10px;border-color:rgba(0,0,0,0) #777 rgba(0,0,0,0) rgba(0,0,0,0)}.color-picker .arrow.arrow-left,.color-picker .arrow.arrow-left-bottom,.color-picker .arrow.arrow-bottom-left{top:8px;right:-21px;border-width:5px 10px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) #777}.color-picker .arrow.arrow-right,.color-picker .arrow.arrow-right-bottom,.color-picker .arrow.arrow-bottom-right{top:8px;left:-20px;border-width:5px 10px;border-color:rgba(0,0,0,0) #777 rgba(0,0,0,0) rgba(0,0,0,0)}.color-picker .cursor{position:relative;width:16px;height:16px;border:#222 solid 2px;border-radius:50%;cursor:default}.color-picker .box{display:flex;padding:4px 8px}.color-picker .left{position:relative;padding:16px 8px}.color-picker .right{flex:1 1 auto;padding:12px 8px}.color-picker .button-area{padding:0 16px 16px;text-align:right}.color-picker .button-area button{margin-left:8px}.color-picker .preset-area{padding:4px 15px}.color-picker .preset-area .preset-label{overflow:hidden;width:100%;padding:4px;font-size:11px;white-space:nowrap;text-align:left;text-overflow:ellipsis;color:#555}.color-picker .preset-area .preset-color{position:relative;display:inline-block;width:18px;height:18px;margin:4px 6px 8px;border:#a9a9a9 solid 1px;border-radius:25%;cursor:pointer}.color-picker .preset-area .preset-empty-message{min-height:18px;margin-top:4px;margin-bottom:8px;font-style:italic;text-align:center}.color-picker .hex-text{width:100%;padding:4px 8px;font-size:11px}.color-picker .hex-text .box{padding:0 24px 8px 8px}.color-picker .hex-text .box div{float:left;flex:1 1 auto;text-align:center;color:#555;clear:left}.color-picker .hex-text .box input{flex:1 1 auto;padding:1px;border:#a9a9a9 solid 1px}.color-picker .hex-alpha .box div:first-child,.color-picker .hex-alpha .box input:first-child{flex-grow:3;margin-right:8px}.color-picker .cmyk-text,.color-picker .hsla-text,.color-picker .rgba-text,.color-picker .value-text{width:100%;padding:4px 8px;font-size:11px}.color-picker .cmyk-text .box,.color-picker .hsla-text .box,.color-picker .rgba-text .box{padding:0 24px 8px 8px}.color-picker .value-text .box{padding:0 8px 8px}.color-picker .cmyk-text .box div,.color-picker .hsla-text .box div,.color-picker .rgba-text .box div,.color-picker .value-text .box div{flex:1 1 auto;margin-right:8px;text-align:center;color:#555}.color-picker .cmyk-text .box div:last-child,.color-picker .hsla-text .box div:last-child,.color-picker .rgba-text .box div:last-child,.color-picker .value-text .box div:last-child{margin-right:0}.color-picker .cmyk-text .box input,.color-picker .hsla-text .box input,.color-picker .rgba-text .box input,.color-picker .value-text .box input{float:left;flex:1;padding:1px;margin:0 8px 0 0;border:#a9a9a9 solid 1px}.color-picker .cmyk-text .box input:last-child,.color-picker .hsla-text .box input:last-child,.color-picker .rgba-text .box input:last-child,.color-picker .value-text .box input:last-child{margin-right:0}.color-picker .hue-alpha{align-items:center;margin-bottom:3px}.color-picker .hue{direction:ltr;width:100%;height:16px;margin-bottom:16px;border:none;cursor:pointer;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwkUFWbCCAAAAFxJREFUaN7t0kEKg0AQAME2x83/n2qu5qCgD1iDhCoYdpnbQC9bbY1qVO/jvc6k3ad91s7/7F1/csgPrujuQ17BDYSFsBAWwgJhISyEBcJCWAgLhIWwEBYIi2f7Ar/1TCgFH2X9AAAAAElFTkSuQmCC)}.color-picker .value{direction:rtl;width:100%;height:16px;margin-bottom:16px;border:none;cursor:pointer;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAACTklEQVR42u3SYUcrABhA4U2SkmRJMmWSJklKJiWZZpKUJJskKUmaTFImKZOUzMySpGRmliRNJilJSpKSJEtmSpIpmWmSdO736/6D+x7OP3gUCoWCv1cqlSQlJZGcnExKSgqpqamkpaWRnp5ORkYGmZmZqFQqsrKyyM7OJicnh9zcXNRqNXl5eeTn56PRaCgoKKCwsJCioiK0Wi3FxcWUlJRQWlpKWVkZ5eXlVFRUUFlZiU6no6qqiurqampqaqitraWurg69Xk99fT0GgwGj0UhDQwONjY00NTXR3NxMS0sLra2ttLW10d7ejslkwmw209HRQWdnJ11dXXR3d9PT00Nvby99fX309/czMDDA4OAgFouFoaEhrFYrw8PDjIyMMDo6ytjYGDabjfHxcSYmJpicnGRqagq73c709DQzMzPMzs4yNzfH/Pw8DocDp9OJy+XC7XazsLDA4uIiS0tLLC8vs7KywurqKmtra3g8HrxeLz6fD7/fz/r6OhsbG2xubrK1tcX29jaBQICdnR2CwSC7u7vs7e2xv7/PwcEBh4eHHB0dcXx8zMnJCaenp5ydnXF+fs7FxQWXl5dcXV1xfX3Nzc0Nt7e33N3dEQqFuL+/5+HhgXA4TCQS4fHxkaenJ56fn3l5eeH19ZVoNMrb2xvv7+98fHwQi8WIx+N8fn6SSCT4+vri+/ubn58ffn9/+VcKgSWwBJbAElgCS2AJLIElsASWwBJYAktgCSyBJbAElsASWAJLYAksgSWwBJbAElgCS2AJLIElsP4/WH8AmJ5Z6jHS4h8AAAAASUVORK5CYII=)}.color-picker .alpha{direction:ltr;width:100%;height:16px;border:none;cursor:pointer;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwYQlZMa3gAAAWVJREFUaN7tmEGO6jAQRCsOArHgBpyAJYGjcGocxAm4A2IHpmoWE0eBH+ezmFlNvU06shJ3W6VEelWMUQAIIF9f6qZpimsA1LYtS2uF51/u27YVAFZVRUkEoGHdPV/sIcbIEIIkUdI/9Xa7neyv61+SWFUVAVCSct00TWn2fv6u3+Ecfd3tXzy/0+nEUu+SPjo/kqzrmiQpScN6v98XewfA8/lMkiLJ2WxGSUopcT6fM6U0NX9/frfbjev1WtfrlZfLhYfDQQHG/AIOlnGwjINlHCxjHCzjYJm/TJWdCwquJXseFFzGwDNNeiKMOJTO8xQdDQaeB29+K9efeLaBo9J7vdvtJj1RjFFjfiv7qv95tjx/7leSQgh93e1ffMeIp6O+YQjho/N791t1XVOSSI7N//K+4/GoxWLBx+PB5/Op5XLJ+/3OlJJWqxU3m83ovv5iGf8KjYNlHCxjHCzjYBkHy5gf5gusvQU7U37jTAAAAABJRU5ErkJggg==)}.color-picker .type-policy{position:absolute;top:218px;right:12px;width:16px;height:24px;background-size:8px 16px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAgCAYAAAAffCjxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAACewAAAnsB01CO3AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIASURBVEiJ7ZY9axRRFIafsxMStrLQJpAgpBFhi+C9w1YSo00I6RZ/g9vZpBf/QOr4GyRgkSKNSrAadsZqQGwCkuAWyRZJsySwvhZ7N/vhzrgbLH3Ld8597jlzz50zJokyxXH8DqDVar0qi6v8BbItqSGpEcfxdlmsFWXkvX8AfAVWg3UKPEnT9GKujMzsAFgZsVaCN1VTQd77XUnrgE1kv+6935268WRpzrnHZvYRWC7YvC3pRZZl3wozqtVqiyH9IgjAspkd1Gq1xUJQtVrdB9ZKIAOthdg/Qc65LUk7wNIMoCVJO865rYFhkqjX6/d7vV4GPJwBMqofURS5JEk6FYBer/eeYb/Mo9WwFnPOvQbeAvfuAAK4BN4sAJtAG/gJIElmNuiJyba3EGNmZiPeZuEVmVell/Y/6N+CzDn3AXhEOOo7Hv/3BeAz8IzQkMPnJbuPx1wC+yYJ7/0nYIP5S/0FHKdp+rwCEEXRS/rf5Hl1Gtb2M0iSpCOpCZzPATmX1EySpHMLAsiy7MjMDoHrGSDXZnaYZdnRwBh7J91utwmczAA6CbG3GgPleX4jqUH/a1CktqRGnuc3hSCAMB32gKspkCtgb3KCQMmkjeP4WNJThrNNZval1WptTIsv7JtQ4tmIdRa8qSoEpWl6YWZNoAN0zKxZNPehpLSBZv2t+Q0CJ9lLnARQLAAAAABJRU5ErkJggg==);background-repeat:no-repeat;background-position:center}.color-picker .type-policy .type-policy-arrow{display:block;width:100%;height:50%}.color-picker .selected-color{position:absolute;top:16px;left:8px;width:40px;height:40px;border:1px solid #a9a9a9;border-radius:50%}.color-picker .selected-color-background{width:40px;height:40px;border-radius:50%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAh0lEQVRYR+2W0QlAMQgD60zdfwOdqa8TmI/wQMr5K0I5bZLIzLOa2nt37VVVbd+dDx5obgCC3KBLwJ2ff4PnVidkf+ucIhw80HQaCLo3DMH3CRK3iFsmAWVl6hPNDwt8EvNE5q+YuEXcMgkonVM6SdyCoEvAnZ8v1Hjx817MilmxSUB5rdLJDycZgUAZUch/AAAAAElFTkSuQmCC)}.color-picker .saturation-lightness{direction:ltr;width:100%;height:130px;border:none;cursor:pointer;touch-action:manipulation;background-size:100% 100%;background-image:url(data:image/png;base64,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)}.color-picker .cp-add-color-button-class{position:absolute;display:inline;padding:0;margin:3px -3px;border:0;cursor:pointer;background:transparent}.color-picker .cp-add-color-button-class:hover{text-decoration:underline}.color-picker .cp-add-color-button-class:disabled{cursor:not-allowed;color:#999}.color-picker .cp-add-color-button-class:disabled:hover{text-decoration:none}.color-picker .cp-remove-color-button-class{position:absolute;top:-5px;right:-5px;display:block;width:10px;height:10px;border-radius:50%;cursor:pointer;text-align:center;background:#fff;box-shadow:1px 1px 5px #333}.color-picker .cp-remove-color-button-class:before{content:\\\"x\\\";position:relative;bottom:3.5px;display:inline-block;font-size:10px}.color-picker .eyedropper-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);fill:#fff;mix-blend-mode:exclusion}\\n\"], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: SliderDirective, selector: \"[slider]\", inputs: [\"rgX\", \"rgY\", \"slider\"], outputs: [\"dragEnd\", \"dragStart\", \"newValue\"] }, { type: TextDirective, selector: \"[text]\", inputs: [\"rg\", \"text\"], outputs: [\"newValue\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: ColorPickerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'color-picker', encapsulation: ViewEncapsulation.None, template: \"<div #dialogPopup class=\\\"color-picker\\\" [class.open]=\\\"show\\\" [style.display]=\\\"!show ? 'none' : 'block'\\\" [style.visibility]=\\\"hidden ? 'hidden' : 'visible'\\\" [style.top.px]=\\\"top\\\" [style.left.px]=\\\"left\\\" [style.position]=\\\"position\\\" [style.height.px]=\\\"cpHeight\\\" [style.width.px]=\\\"cpWidth\\\" (click)=\\\"$event.stopPropagation()\\\">\\n <div *ngIf=\\\"cpDialogDisplay === 'popup'\\\" class=\\\"arrow arrow-{{cpUsePosition}}\\\" [style.top.px]=\\\"arrowTop\\\"></div>\\n\\n <div *ngIf=\\\"(cpColorMode ||\\u00A01) === 1\\\" class=\\\"saturation-lightness\\\" [slider] [rgX]=\\\"1\\\" [rgY]=\\\"1\\\" [style.background-color]=\\\"hueSliderColor\\\" (newValue)=\\\"onColorChange($event)\\\" (dragStart)=\\\"onDragStart('saturation-lightness')\\\" (dragEnd)=\\\"onDragEnd('saturation-lightness')\\\">\\n <div class=\\\"cursor\\\" [style.top.px]=\\\"slider?.v\\\" [style.left.px]=\\\"slider?.s\\\"></div>\\n </div>\\n\\n <div class=\\\"hue-alpha box\\\">\\n <div class=\\\"left\\\">\\n <div class=\\\"selected-color-background\\\"></div>\\n\\n <div class=\\\"selected-color\\\" [style.background-color]=\\\"selectedColor\\\" [style.cursor]=\\\"eyeDropperSupported && cpEyeDropper ? 'pointer' : null\\\" (click)=\\\"eyeDropperSupported && cpEyeDropper && onEyeDropper()\\\">\\n <svg *ngIf=\\\"eyeDropperSupported && cpEyeDropper\\\" class=\\\"eyedropper-icon\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" height=\\\"24px\\\" viewBox=\\\"0 0 24 24\\\" width=\\\"24px\\\" fill=\\\"#000000\\\"><path d=\\\"M0 0h24v24H0V0z\\\" fill=\\\"none\\\"/><path d=\\\"M17.66 5.41l.92.92-2.69 2.69-.92-.92 2.69-2.69M17.67 3c-.26 0-.51.1-.71.29l-3.12 3.12-1.93-1.91-1.41 1.41 1.42 1.42L3 16.25V21h4.75l8.92-8.92 1.42 1.42 1.41-1.41-1.92-1.92 3.12-3.12c.4-.4.4-1.03.01-1.42l-2.34-2.34c-.2-.19-.45-.29-.7-.29zM6.92 19L5 17.08l8.06-8.06 1.92 1.92L6.92 19z\\\"/></svg>\\n </div>\\n\\n <button *ngIf=\\\"cpAddColorButton\\\" type=\\\"button\\\" class=\\\"{{cpAddColorButtonClass}}\\\" [disabled]=\\\"cpPresetColors && cpPresetColors.length >= cpMaxPresetColorsLength\\\" (click)=\\\"onAddPresetColor($event, selectedColor)\\\">\\n {{cpAddColorButtonText}}\\n </button>\\n </div>\\n\\n <div class=\\\"right\\\">\\n <div *ngIf=\\\"cpAlphaChannel==='disabled'\\\" style=\\\"height: 16px;\\\"></div>\\n\\n <div #hueSlider class=\\\"hue\\\" [slider] [rgX]=\\\"1\\\" [style.display]=\\\"(cpColorMode ||\\u00A01) === 1 ? 'block' : 'none'\\\" (newValue)=\\\"onHueChange($event)\\\" (dragStart)=\\\"onDragStart('hue')\\\" (dragEnd)=\\\"onDragEnd('hue')\\\">\\n <div class=\\\"cursor\\\" [style.left.px]=\\\"slider?.h\\\"></div>\\n </div>\\n\\n <div #valueSlider class=\\\"value\\\" [slider] [rgX]=\\\"1\\\" [style.display]=\\\"(cpColorMode ||\\u00A01) === 2 ? 'block': 'none'\\\" (newValue)=\\\"onValueChange($event)\\\" (dragStart)=\\\"onDragStart('value')\\\" (dragEnd)=\\\"onDragEnd('value')\\\">\\n <div class=\\\"cursor\\\" [style.right.px]=\\\"slider?.v\\\"></div>\\n </div>\\n\\n <div #alphaSlider class=\\\"alpha\\\" [slider] [rgX]=\\\"1\\\" [style.display]=\\\"cpAlphaChannel === 'disabled' ? 'none' : 'block'\\\" [style.background-color]=\\\"alphaSliderColor\\\" (newValue)=\\\"onAlphaChange($event)\\\" (dragStart)=\\\"onDragStart('alpha')\\\" (dragEnd)=\\\"onDragEnd('alpha')\\\">\\n <div class=\\\"cursor\\\" [style.left.px]=\\\"slider?.a\\\"></div>\\n </div>\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"!cpDisableInput && (cpColorMode ||\\u00A01) === 1\\\" class=\\\"cmyk-text\\\" [style.display]=\\\"format !== 3 ? 'none' : 'block'\\\">\\n <div class=\\\"box\\\">\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"100\\\" [text] [rg]=\\\"100\\\" [value]=\\\"cmykText?.c\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onCyanInput($event)\\\" />\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"100\\\" [text] [rg]=\\\"100\\\" [value]=\\\"cmykText?.m\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onMagentaInput($event)\\\" />\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"100\\\" [text] [rg]=\\\"100\\\" [value]=\\\"cmykText?.y\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onYellowInput($event)\\\" />\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"100\\\" [text] [rg]=\\\"100\\\" [value]=\\\"cmykText?.k\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onBlackInput($event)\\\" />\\n <input *ngIf=\\\"cpAlphaChannel!=='disabled'\\\" type=\\\"number\\\" pattern=\\\"[0-9]+([\\\\.,][0-9]{1,2})?\\\" min=\\\"0\\\" max=\\\"1\\\" step=\\\"0.1\\\" [text] [rg]=\\\"1\\\" [value]=\\\"cmykText?.a\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onAlphaInput($event)\\\" />\\n </div>\\n\\n <div class=\\\"box\\\">\\n <div>C</div><div>M</div><div>Y</div><div>K</div><div *ngIf=\\\"cpAlphaChannel!=='disabled'\\\" >A</div>\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"!cpDisableInput && (cpColorMode ||\\u00A01) === 1 \\\" class=\\\"hsla-text\\\" [style.display]=\\\"format !== 2 ? 'none' : 'block'\\\">\\n <div class=\\\"box\\\">\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"360\\\" [text] [rg]=\\\"360\\\" [value]=\\\"hslaText?.h\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onHueInput($event)\\\" />\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"100\\\" [text] [rg]=\\\"100\\\" [value]=\\\"hslaText?.s\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onSaturationInput($event)\\\" />\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"100\\\" [text] [rg]=\\\"100\\\" [value]=\\\"hslaText?.l\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onLightnessInput($event)\\\" />\\n <input *ngIf=\\\"cpAlphaChannel!=='disabled'\\\" type=\\\"number\\\" pattern=\\\"[0-9]+([\\\\.,][0-9]{1,2})?\\\" min=\\\"0\\\" max=\\\"1\\\" step=\\\"0.1\\\" [text] [rg]=\\\"1\\\" [value]=\\\"hslaText?.a\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onAlphaInput($event)\\\" />\\n </div>\\n\\n <div class=\\\"box\\\">\\n <div>H</div><div>S</div><div>L</div><div *ngIf=\\\"cpAlphaChannel!=='disabled'\\\">A</div>\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"!cpDisableInput && (cpColorMode ||\\u00A01) === 1 \\\" [style.display]=\\\"format !== 1 ? 'none' : 'block'\\\" class=\\\"rgba-text\\\">\\n <div class=\\\"box\\\">\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"255\\\" [text] [rg]=\\\"255\\\" [value]=\\\"rgbaText?.r\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onRedInput($event)\\\" />\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"255\\\" [text] [rg]=\\\"255\\\" [value]=\\\"rgbaText?.g\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onGreenInput($event)\\\" />\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"255\\\" [text] [rg]=\\\"255\\\" [value]=\\\"rgbaText?.b\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onBlueInput($event)\\\" />\\n <input *ngIf=\\\"cpAlphaChannel!=='disabled'\\\" type=\\\"number\\\" pattern=\\\"[0-9]+([\\\\.,][0-9]{1,2})?\\\" min=\\\"0\\\" max=\\\"1\\\" step=\\\"0.1\\\" [text] [rg]=\\\"1\\\" [value]=\\\"rgbaText?.a\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onAlphaInput($event)\\\" />\\n </div>\\n\\n <div class=\\\"box\\\">\\n <div>R</div><div>G</div><div>B</div><div *ngIf=\\\"cpAlphaChannel!=='disabled'\\\" >A</div>\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"!cpDisableInput && (cpColorMode ||\\u00A01) === 1\\\" class=\\\"hex-text\\\" [class.hex-alpha]=\\\"cpAlphaChannel==='forced'\\\"\\n [style.display]=\\\"format !== 0 ? 'none' : 'block'\\\">\\n <div class=\\\"box\\\">\\n <input [text] [value]=\\\"hexText\\\" (blur)=\\\"onHexInput(null)\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onHexInput($event)\\\"/>\\n <input *ngIf=\\\"cpAlphaChannel==='forced'\\\" type=\\\"number\\\" pattern=\\\"[0-9]+([\\\\.,][0-9]{1,2})?\\\" min=\\\"0\\\" max=\\\"1\\\" step=\\\"0.1\\\" [text] [rg]=\\\"1\\\" [value]=\\\"hexAlpha\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onAlphaInput($event)\\\"/>\\n </div>\\n\\n <div class=\\\"box\\\">\\n <div>Hex</div>\\n <div *ngIf=\\\"cpAlphaChannel==='forced'\\\">A</div>\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"!cpDisableInput && (cpColorMode ||\\u00A01) === 2\\\" class=\\\"value-text\\\">\\n <div class=\\\"box\\\">\\n <input type=\\\"number\\\" pattern=\\\"[0-9]*\\\" min=\\\"0\\\" max=\\\"100\\\" [text] [rg]=\\\"100\\\" [value]=\\\"hslaText?.l\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onValueInput($event)\\\" />\\n <input *ngIf=\\\"cpAlphaChannel!=='disabled'\\\" type=\\\"number\\\" pattern=\\\"[0-9]+([\\\\.,][0-9]{1,2})?\\\" min=\\\"0\\\" max=\\\"1\\\" step=\\\"0.1\\\" [text] [rg]=\\\"1\\\" [value]=\\\"hslaText?.a\\\" (keyup.enter)=\\\"onAcceptColor($event)\\\" (newValue)=\\\"onAlphaInput($event)\\\" />\\n </div>\\n\\n <div class=\\\"box\\\">\\n <div>V</div><div>A</div>\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"!cpDisableInput && (cpColorMode ||\\u00A01) === 1\\\" class=\\\"type-policy\\\">\\n <span class=\\\"type-policy-arrow\\\" (click)=\\\"onFormatToggle(-1)\\\"></span>\\n <span class=\\\"type-policy-arrow\\\" (click)=\\\"onFormatToggle(1)\\\"></span>\\n </div>\\n\\n <div *ngIf=\\\"cpPresetColors?.length || cpAddColorButton\\\" class=\\\"preset-area\\\">\\n <hr>\\n\\n <div class=\\\"preset-label\\\">{{cpPresetLabel}}</div>\\n\\n <div *ngIf=\\\"cpPresetColors?.length\\\" class=\\\"{{cpPresetColorsClass}}\\\">\\n <div *ngFor=\\\"let color of cpPresetColors\\\" class=\\\"preset-color\\\" [style.backgroundColor]=\\\"color\\\" (click)=\\\"setColorFromString(color)\\\">\\n <span *ngIf=\\\"cpAddColorButton\\\" class=\\\"{{cpRemoveColorButtonClass}}\\\" (click)=\\\"onRemovePresetColor($event, color)\\\"></span>\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"!cpPresetColors?.length && cpAddColorButton\\\" class=\\\"{{cpPresetEmptyMessageClass}}\\\">{{cpPresetEmptyMessage}}</div>\\n </div>\\n\\n <div *ngIf=\\\"cpOKButton || cpCancelButton\\\" class=\\\"button-area\\\">\\n <button *ngIf=\\\"cpCancelButton\\\" type=\\\"button\\\" class=\\\"{{cpCancelButtonClass}}\\\" (click)=\\\"onCancelColor($event)\\\">{{cpCancelButtonText}}</button>\\n\\n <button *ngIf=\\\"cpOKButton\\\" type=\\\"button\\\" class=\\\"{{cpOKButtonClass}}\\\" (click)=\\\"onAcceptColor($event)\\\">{{cpOKButtonText}}</button>\\n </div>\\n\\n <div class=\\\"extra-template\\\" *ngIf=\\\"cpExtraTemplate\\\">\\n <ng-container *ngTemplateOutlet=\\\"cpExtraTemplate\\\"></ng-container>\\n </div>\\n</div>\\n\", styles: [\".color-picker{position:absolute;z-index:1000;width:230px;height:auto;border:#777 solid 1px;cursor:default;-webkit-user-select:none;user-select:none;background-color:#fff}.color-picker *{box-sizing:border-box;margin:0;font-size:11px}.color-picker input{width:0;height:26px;min-width:0;font-size:13px;text-align:center;color:#000}.color-picker input:invalid,.color-picker input:-moz-ui-invalid,.color-picker input:-moz-submit-invalid{box-shadow:none}.color-picker input::-webkit-inner-spin-button,.color-picker input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.color-picker .arrow{position:absolute;z-index:999999;width:0;height:0;border-style:solid}.color-picker .arrow.arrow-top{left:8px;border-width:10px 5px;border-color:#777 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.color-picker .arrow.arrow-bottom{top:-20px;left:8px;border-width:10px 5px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #777 rgba(0,0,0,0)}.color-picker .arrow.arrow-top-left,.color-picker .arrow.arrow-left-top{right:-21px;bottom:8px;border-width:5px 10px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) #777}.color-picker .arrow.arrow-top-right,.color-picker .arrow.arrow-right-top{bottom:8px;left:-20px;border-width:5px 10px;border-color:rgba(0,0,0,0) #777 rgba(0,0,0,0) rgba(0,0,0,0)}.color-picker .arrow.arrow-left,.color-picker .arrow.arrow-left-bottom,.color-picker .arrow.arrow-bottom-left{top:8px;right:-21px;border-width:5px 10px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) #777}.color-picker .arrow.arrow-right,.color-picker .arrow.arrow-right-bottom,.color-picker .arrow.arrow-bottom-right{top:8px;left:-20px;border-width:5px 10px;border-color:rgba(0,0,0,0) #777 rgba(0,0,0,0) rgba(0,0,0,0)}.color-picker .cursor{position:relative;width:16px;height:16px;border:#222 solid 2px;border-radius:50%;cursor:default}.color-picker .box{display:flex;padding:4px 8px}.color-picker .left{position:relative;padding:16px 8px}.color-picker .right{flex:1 1 auto;padding:12px 8px}.color-picker .button-area{padding:0 16px 16px;text-align:right}.color-picker .button-area button{margin-left:8px}.color-picker .preset-area{padding:4px 15px}.color-picker .preset-area .preset-label{overflow:hidden;width:100%;padding:4px;font-size:11px;white-space:nowrap;text-align:left;text-overflow:ellipsis;color:#555}.color-picker .preset-area .preset-color{position:relative;display:inline-block;width:18px;height:18px;margin:4px 6px 8px;border:#a9a9a9 solid 1px;border-radius:25%;cursor:pointer}.color-picker .preset-area .preset-empty-message{min-height:18px;margin-top:4px;margin-bottom:8px;font-style:italic;text-align:center}.color-picker .hex-text{width:100%;padding:4px 8px;font-size:11px}.color-picker .hex-text .box{padding:0 24px 8px 8px}.color-picker .hex-text .box div{float:left;flex:1 1 auto;text-align:center;color:#555;clear:left}.color-picker .hex-text .box input{flex:1 1 auto;padding:1px;border:#a9a9a9 solid 1px}.color-picker .hex-alpha .box div:first-child,.color-picker .hex-alpha .box input:first-child{flex-grow:3;margin-right:8px}.color-picker .cmyk-text,.color-picker .hsla-text,.color-picker .rgba-text,.color-picker .value-text{width:100%;padding:4px 8px;font-size:11px}.color-picker .cmyk-text .box,.color-picker .hsla-text .box,.color-picker .rgba-text .box{padding:0 24px 8px 8px}.color-picker .value-text .box{padding:0 8px 8px}.color-picker .cmyk-text .box div,.color-picker .hsla-text .box div,.color-picker .rgba-text .box div,.color-picker .value-text .box div{flex:1 1 auto;margin-right:8px;text-align:center;color:#555}.color-picker .cmyk-text .box div:last-child,.color-picker .hsla-text .box div:last-child,.color-picker .rgba-text .box div:last-child,.color-picker .value-text .box div:last-child{margin-right:0}.color-picker .cmyk-text .box input,.color-picker .hsla-text .box input,.color-picker .rgba-text .box input,.color-picker .value-text .box input{float:left;flex:1;padding:1px;margin:0 8px 0 0;border:#a9a9a9 solid 1px}.color-picker .cmyk-text .box input:last-child,.color-picker .hsla-text .box input:last-child,.color-picker .rgba-text .box input:last-child,.color-picker .value-text .box input:last-child{margin-right:0}.color-picker .hue-alpha{align-items:center;margin-bottom:3px}.color-picker .hue{direction:ltr;width:100%;height:16px;margin-bottom:16px;border:none;cursor:pointer;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwkUFWbCCAAAAFxJREFUaN7t0kEKg0AQAME2x83/n2qu5qCgD1iDhCoYdpnbQC9bbY1qVO/jvc6k3ad91s7/7F1/csgPrujuQ17BDYSFsBAWwgJhISyEBcJCWAgLhIWwEBYIi2f7Ar/1TCgFH2X9AAAAAElFTkSuQmCC)}.color-picker .value{direction:rtl;width:100%;height:16px;margin-bottom:16px;border:none;cursor:pointer;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAACTklEQVR42u3SYUcrABhA4U2SkmRJMmWSJklKJiWZZpKUJJskKUmaTFImKZOUzMySpGRmliRNJilJSpKSJEtmSpIpmWmSdO736/6D+x7OP3gUCoWCv1cqlSQlJZGcnExKSgqpqamkpaWRnp5ORkYGmZmZqFQqsrKyyM7OJicnh9zcXNRqNXl5eeTn56PRaCgoKKCwsJCioiK0Wi3FxcWUlJRQWlpKWVkZ5eXlVFRUUFlZiU6no6qqiurqampqaqitraWurg69Xk99fT0GgwGj0UhDQwONjY00NTXR3NxMS0sLra2ttLW10d7ejslkwmw209HRQWdnJ11dXXR3d9PT00Nvby99fX309/czMDDA4OAgFouFoaEhrFYrw8PDjIyMMDo6ytjYGDabjfHxcSYmJpicnGRqagq73c709DQzMzPMzs4yNzfH/Pw8DocDp9OJy+XC7XazsLDA4uIiS0tLLC8vs7KywurqKmtra3g8HrxeLz6fD7/fz/r6OhsbG2xubrK1tcX29jaBQICdnR2CwSC7u7vs7e2xv7/PwcEBh4eHHB0dcXx8zMnJCaenp5ydnXF+fs7FxQWXl5dcXV1xfX3Nzc0Nt7e33N3dEQqFuL+/5+HhgXA4TCQS4fHxkaenJ56fn3l5eeH19ZVoNMrb2xvv7+98fHwQi8WIx+N8fn6SSCT4+vri+/ubn58ffn9/+VcKgSWwBJbAElgCS2AJLIElsASWwBJYAktgCSyBJbAElsASWAJLYAksgSWwBJbAElgCS2AJLIElsP4/WH8AmJ5Z6jHS4h8AAAAASUVORK5CYII=)}.color-picker .alpha{direction:ltr;width:100%;height:16px;border:none;cursor:pointer;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwYQlZMa3gAAAWVJREFUaN7tmEGO6jAQRCsOArHgBpyAJYGjcGocxAm4A2IHpmoWE0eBH+ezmFlNvU06shJ3W6VEelWMUQAIIF9f6qZpimsA1LYtS2uF51/u27YVAFZVRUkEoGHdPV/sIcbIEIIkUdI/9Xa7neyv61+SWFUVAVCSct00TWn2fv6u3+Ecfd3tXzy/0+nEUu+SPjo/kqzrmiQpScN6v98XewfA8/lMkiLJ2WxGSUopcT6fM6U0NX9/frfbjev1WtfrlZfLhYfDQQHG/AIOlnGwjINlHCxjHCzjYJm/TJWdCwquJXseFFzGwDNNeiKMOJTO8xQdDQaeB29+K9efeLaBo9J7vdvtJj1RjFFjfiv7qv95tjx/7leSQgh93e1ffMeIp6O+YQjho/N791t1XVOSSI7N//K+4/GoxWLBx+PB5/Op5XLJ+/3OlJJWqxU3m83ovv5iGf8KjYNlHCxjHCzjYBkHy5gf5gusvQU7U37jTAAAAABJRU5ErkJggg==)}.color-picker .type-policy{position:absolute;top:218px;right:12px;width:16px;height:24px;background-size:8px 16px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAgCAYAAAAffCjxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAACewAAAnsB01CO3AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIASURBVEiJ7ZY9axRRFIafsxMStrLQJpAgpBFhi+C9w1YSo00I6RZ/g9vZpBf/QOr4GyRgkSKNSrAadsZqQGwCkuAWyRZJsySwvhZ7N/vhzrgbLH3Ld8597jlzz50zJokyxXH8DqDVar0qi6v8BbItqSGpEcfxdlmsFWXkvX8AfAVWg3UKPEnT9GKujMzsAFgZsVaCN1VTQd77XUnrgE1kv+6935268WRpzrnHZvYRWC7YvC3pRZZl3wozqtVqiyH9IgjAspkd1Gq1xUJQtVrdB9ZKIAOthdg/Qc65LUk7wNIMoCVJO865rYFhkqjX6/d7vV4GPJwBMqofURS5JEk6FYBer/eeYb/Mo9WwFnPOvQbeAvfuAAK4BN4sAJtAG/gJIElmNuiJyba3EGNmZiPeZuEVmVell/Y/6N+CzDn3AXhEOOo7Hv/3BeAz8IzQkMPnJbuPx1wC+yYJ7/0nYIP5S/0FHKdp+rwCEEXRS/rf5Hl1Gtb2M0iSpCOpCZzPATmX1EySpHMLAsiy7MjMDoHrGSDXZnaYZdnRwBh7J91utwmczAA6CbG3GgPleX4jqUH/a1CktqRGnuc3hSCAMB32gKspkCtgb3KCQMmkjeP4WNJThrNNZval1WptTIsv7JtQ4tmIdRa8qSoEpWl6YWZNoAN0zKxZNPehpLSBZv2t+Q0CJ9lLnARQLAAAAABJRU5ErkJggg==);background-repeat:no-repeat;background-position:center}.color-picker .type-policy .type-policy-arrow{display:block;width:100%;height:50%}.color-picker .selected-color{position:absolute;top:16px;left:8px;width:40px;height:40px;border:1px solid #a9a9a9;border-radius:50%}.color-picker .selected-color-background{width:40px;height:40px;border-radius:50%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAh0lEQVRYR+2W0QlAMQgD60zdfwOdqa8TmI/wQMr5K0I5bZLIzLOa2nt37VVVbd+dDx5obgCC3KBLwJ2ff4PnVidkf+ucIhw80HQaCLo3DMH3CRK3iFsmAWVl6hPNDwt8EvNE5q+YuEXcMgkonVM6SdyCoEvAnZ8v1Hjx817MilmxSUB5rdLJDycZgUAZUch/AAAAAElFTkSuQmCC)}.color-picker .saturation-lightness{direction:ltr;width:100%;height:130px;border:none;cursor:pointer;touch-action:manipulation;background-size:100% 100%;background-image:url(data:image/png;base64,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)}.color-picker .cp-add-color-button-class{position:absolute;display:inline;padding:0;margin:3px -3px;border:0;cursor:pointer;background:transparent}.color-picker .cp-add-color-button-class:hover{text-decoration:underline}.color-picker .cp-add-color-button-class:disabled{cursor:not-allowed;color:#999}.color-picker .cp-add-color-button-class:disabled:hover{text-decoration:none}.color-picker .cp-remove-color-button-class{position:absolute;top:-5px;right:-5px;display:block;width:10px;height:10px;border-radius:50%;cursor:pointer;text-align:center;background:#fff;box-shadow:1px 1px 5px #333}.color-picker .cp-remove-color-button-class:before{content:\\\"x\\\";position:relative;bottom:3.5px;display:inline-block;font-size:10px}.color-picker .eyedropper-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);fill:#fff;mix-blend-mode:exclusion}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: ColorPickerService }];\n }, propDecorators: { dialogElement: [{\n type: ViewChild,\n args: ['dialogPopup', { static: true }]\n }], hueSlider: [{\n type: ViewChild,\n args: ['hueSlider', { static: true }]\n }], alphaSlider: [{\n type: ViewChild,\n args: ['alphaSlider', { static: true }]\n }], handleEsc: [{\n type: HostListener,\n args: ['document:keyup.esc', ['$event']]\n }], handleEnter: [{\n type: HostListener,\n args: ['document:keyup.enter', ['$event']]\n }] } });\n\n// Caretaker note: we have still left the `typeof` condition in order to avoid\n// creating a breaking change for projects that still use the View Engine.\n// The `ngDevMode` is always available when Ivy is enabled.\n// This will be evaluated during compilation into `const NG_DEV_MODE = false`,\n// thus Terser will be able to tree-shake `console.warn` calls.\nconst NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;\nclass ColorPickerDirective {\n constructor(injector, cfr, appRef, vcRef, elRef, _service) {\n this.injector = injector;\n this.cfr = cfr;\n this.appRef = appRef;\n this.vcRef = vcRef;\n this.elRef = elRef;\n this._service = _service;\n this.dialogCreated = false;\n this.ignoreChanges = false;\n this.viewAttachedToAppRef = false;\n this.cpWidth = '230px';\n this.cpHeight = 'auto';\n this.cpToggle = false;\n this.cpDisabled = false;\n this.cpIgnoredElements = [];\n this.cpFallbackColor = '';\n this.cpColorMode = 'color';\n this.cpCmykEnabled = false;\n this.cpOutputFormat = 'auto';\n this.cpAlphaChannel = 'enabled';\n this.cpDisableInput = false;\n this.cpDialogDisplay = 'popup';\n this.cpSaveClickOutside = true;\n this.cpCloseClickOutside = true;\n this.cpUseRootViewContainer = false;\n this.cpPosition = 'auto';\n this.cpPositionOffset = '0%';\n this.cpPositionRelativeToArrow = false;\n this.cpOKButton = false;\n this.cpOKButtonText = 'OK';\n this.cpOKButtonClass = 'cp-ok-button-class';\n this.cpCancelButton = false;\n this.cpCancelButtonText = 'Cancel';\n this.cpCancelButtonClass = 'cp-cancel-button-class';\n this.cpEyeDropper = false;\n this.cpPresetLabel = 'Preset colors';\n this.cpPresetColorsClass = 'cp-preset-colors-class';\n this.cpMaxPresetColorsLength = 6;\n this.cpPresetEmptyMessage = 'No colors added';\n this.cpPresetEmptyMessageClass = 'preset-empty-message';\n this.cpAddColorButton = false;\n this.cpAddColorButtonText = 'Add color';\n this.cpAddColorButtonClass = 'cp-add-color-button-class';\n this.cpRemoveColorButtonClass = 'cp-remove-color-button-class';\n this.cpInputChange = new EventEmitter(true);\n this.cpToggleChange = new EventEmitter(true);\n this.cpSliderChange = new EventEmitter(true);\n this.cpSliderDragEnd = new EventEmitter(true);\n this.cpSliderDragStart = new EventEmitter(true);\n this.colorPickerOpen = new EventEmitter(true);\n this.colorPickerClose = new EventEmitter(true);\n this.colorPickerCancel = new EventEmitter(true);\n this.colorPickerSelect = new EventEmitter(true);\n this.colorPickerChange = new EventEmitter(false);\n this.cpCmykColorChange = new EventEmitter(true);\n this.cpPresetColorsChange = new EventEmitter(true);\n }\n handleClick() {\n this.inputFocus();\n }\n handleFocus() {\n this.inputFocus();\n }\n handleInput(event) {\n this.inputChange(event);\n }\n ngOnDestroy() {\n if (this.cmpRef != null) {\n if (this.viewAttachedToAppRef) {\n this.appRef.detachView(this.cmpRef.hostView);\n }\n this.cmpRef.destroy();\n this.cmpRef = null;\n this.dialog = null;\n }\n }\n ngOnChanges(changes) {\n if (changes.cpToggle && !this.cpDisabled) {\n if (changes.cpToggle.currentValue) {\n this.openDialog();\n }\n else if (!changes.cpToggle.currentValue) {\n this.closeDialog();\n }\n }\n if (changes.colorPicker) {\n if (this.dialog && !this.ignoreChanges) {\n if (this.cpDialogDisplay === 'inline') {\n this.dialog.setInitialColor(changes.colorPicker.currentValue);\n }\n this.dialog.setColorFromString(changes.colorPicker.currentValue, false);\n if (this.cpUseRootViewContainer && this.cpDialogDisplay !== 'inline') {\n this.cmpRef.changeDetectorRef.detectChanges();\n }\n }\n this.ignoreChanges = false;\n }\n if (changes.cpPresetLabel || changes.cpPresetColors) {\n if (this.dialog) {\n this.dialog.setPresetConfig(this.cpPresetLabel, this.cpPresetColors);\n }\n }\n }\n openDialog() {\n if (!this.dialogCreated) {\n let vcRef = this.vcRef;\n this.dialogCreated = true;\n this.viewAttachedToAppRef = false;\n if (this.cpUseRootViewContainer && this.cpDialogDisplay !== 'inline') {\n const classOfRootComponent = this.appRef.componentTypes[0];\n const appInstance = this.injector.get(classOfRootComponent, Injector.NULL);\n if (appInstance !== Injector.NULL) {\n vcRef = appInstance.vcRef || appInstance.viewContainerRef || this.vcRef;\n if (NG_DEV_MODE && vcRef === this.vcRef) {\n console.warn('You are using cpUseRootViewContainer, ' +\n 'but the root component is not exposing viewContainerRef!' +\n 'Please expose it by adding \\'public vcRef: ViewContainerRef\\' to the constructor.');\n }\n }\n else {\n this.viewAttachedToAppRef = true;\n }\n }\n const compFactory = this.cfr.resolveComponentFactory(ColorPickerComponent);\n if (this.viewAttachedToAppRef) {\n this.cmpRef = compFactory.create(this.injector);\n this.appRef.attachView(this.cmpRef.hostView);\n document.body.appendChild(this.cmpRef.hostView.rootNodes[0]);\n }\n else {\n const injector = Injector.create({\n providers: [],\n // We shouldn't use `vcRef.parentInjector` since it's been deprecated long time ago and might be removed\n // in newer Angular versions: https://github.com/angular/angular/pull/25174.\n parent: vcRef.injector,\n });\n this.cmpRef = vcRef.createComponent(compFactory, 0, injector, []);\n }\n this.cmpRef.instance.setupDialog(this, this.elRef, this.colorPicker, this.cpWidth, this.cpHeight, this.cpDialogDisplay, this.cpFallbackColor, this.cpColorMode, this.cpCmykEnabled, this.cpAlphaChannel, this.cpOutputFormat, this.cpDisableInput, this.cpIgnoredElements, this.cpSaveClickOutside, this.cpCloseClickOutside, this.cpUseRootViewContainer, this.cpPosition, this.cpPositionOffset, this.cpPositionRelativeToArrow, this.cpPresetLabel, this.cpPresetColors, this.cpPresetColorsClass, this.cpMaxPresetColorsLength, this.cpPresetEmptyMessage, this.cpPresetEmptyMessageClass, this.cpOKButton, this.cpOKButtonClass, this.cpOKButtonText, this.cpCancelButton, this.cpCancelButtonClass, this.cpCancelButtonText, this.cpAddColorButton, this.cpAddColorButtonClass, this.cpAddColorButtonText, this.cpRemoveColorButtonClass, this.cpEyeDropper, this.elRef, this.cpExtraTemplate);\n this.dialog = this.cmpRef.instance;\n if (this.vcRef !== vcRef) {\n this.cmpRef.changeDetectorRef.detectChanges();\n }\n }\n else if (this.dialog) {\n this.dialog.openDialog(this.colorPicker);\n }\n }\n closeDialog() {\n if (this.dialog && this.cpDialogDisplay === 'popup') {\n this.dialog.closeDialog();\n }\n }\n cmykChanged(value) {\n this.cpCmykColorChange.emit(value);\n }\n stateChanged(state) {\n this.cpToggleChange.emit(state);\n if (state) {\n this.colorPickerOpen.emit(this.colorPicker);\n }\n else {\n this.colorPickerClose.emit(this.colorPicker);\n }\n }\n colorChanged(value, ignore = true) {\n this.ignoreChanges = ignore;\n this.colorPickerChange.emit(value);\n }\n colorSelected(value) {\n this.colorPickerSelect.emit(value);\n }\n colorCanceled() {\n this.colorPickerCancel.emit();\n }\n inputFocus() {\n const element = this.elRef.nativeElement;\n const ignored = this.cpIgnoredElements.filter((item) => item === element);\n if (!this.cpDisabled && !ignored.length) {\n if (typeof document !== 'undefined' && element === document.activeElement) {\n this.openDialog();\n }\n else if (!this.dialog || !this.dialog.show) {\n this.openDialog();\n }\n else {\n this.closeDialog();\n }\n }\n }\n inputChange(event) {\n if (this.dialog) {\n this.dialog.setColorFromString(event.target.value, true);\n }\n else {\n this.colorPicker = event.target.value;\n this.colorPickerChange.emit(this.colorPicker);\n }\n }\n inputChanged(event) {\n this.cpInputChange.emit(event);\n }\n sliderChanged(event) {\n this.cpSliderChange.emit(event);\n }\n sliderDragEnd(event) {\n this.cpSliderDragEnd.emit(event);\n }\n sliderDragStart(event) {\n this.cpSliderDragStart.emit(event);\n }\n presetColorsChanged(value) {\n this.cpPresetColorsChange.emit(value);\n }\n}\nColorPickerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: ColorPickerDirective, deps: [{ token: i0.Injector }, { token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: ColorPickerService }], target: i0.ɵɵFactoryTarget.Directive });\nColorPickerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.2.1\", type: ColorPickerDirective, selector: \"[colorPicker]\", inputs: { colorPicker: \"colorPicker\", cpWidth: \"cpWidth\", cpHeight: \"cpHeight\", cpToggle: \"cpToggle\", cpDisabled: \"cpDisabled\", cpIgnoredElements: \"cpIgnoredElements\", cpFallbackColor: \"cpFallbackColor\", cpColorMode: \"cpColorMode\", cpCmykEnabled: \"cpCmykEnabled\", cpOutputFormat: \"cpOutputFormat\", cpAlphaChannel: \"cpAlphaChannel\", cpDisableInput: \"cpDisableInput\", cpDialogDisplay: \"cpDialogDisplay\", cpSaveClickOutside: \"cpSaveClickOutside\", cpCloseClickOutside: \"cpCloseClickOutside\", cpUseRootViewContainer: \"cpUseRootViewContainer\", cpPosition: \"cpPosition\", cpPositionOffset: \"cpPositionOffset\", cpPositionRelativeToArrow: \"cpPositionRelativeToArrow\", cpOKButton: \"cpOKButton\", cpOKButtonText: \"cpOKButtonText\", cpOKButtonClass: \"cpOKButtonClass\", cpCancelButton: \"cpCancelButton\", cpCancelButtonText: \"cpCancelButtonText\", cpCancelButtonClass: \"cpCancelButtonClass\", cpEyeDropper: \"cpEyeDropper\", cpPresetLabel: \"cpPresetLabel\", cpPresetColors: \"cpPresetColors\", cpPresetColorsClass: \"cpPresetColorsClass\", cpMaxPresetColorsLength: \"cpMaxPresetColorsLength\", cpPresetEmptyMessage: \"cpPresetEmptyMessage\", cpPresetEmptyMessageClass: \"cpPresetEmptyMessageClass\", cpAddColorButton: \"cpAddColorButton\", cpAddColorButtonText: \"cpAddColorButtonText\", cpAddColorButtonClass: \"cpAddColorButtonClass\", cpRemoveColorButtonClass: \"cpRemoveColorButtonClass\", cpExtraTemplate: \"cpExtraTemplate\" }, outputs: { cpInputChange: \"cpInputChange\", cpToggleChange: \"cpToggleChange\", cpSliderChange: \"cpSliderChange\", cpSliderDragEnd: \"cpSliderDragEnd\", cpSliderDragStart: \"cpSliderDragStart\", colorPickerOpen: \"colorPickerOpen\", colorPickerClose: \"colorPickerClose\", colorPickerCancel: \"colorPickerCancel\", colorPickerSelect: \"colorPickerSelect\", colorPickerChange: \"colorPickerChange\", cpCmykColorChange: \"cpCmykColorChange\", cpPresetColorsChange: \"cpPresetColorsChange\" }, host: { listeners: { \"click\": \"handleClick()\", \"focus\": \"handleFocus()\", \"input\": \"handleInput($event)\" } }, exportAs: [\"ngxColorPicker\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: ColorPickerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[colorPicker]',\n exportAs: 'ngxColorPicker'\n }]\n }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: ColorPickerService }]; }, propDecorators: { colorPicker: [{\n type: Input\n }], cpWidth: [{\n type: Input\n }], cpHeight: [{\n type: Input\n }], cpToggle: [{\n type: Input\n }], cpDisabled: [{\n type: Input\n }], cpIgnoredElements: [{\n type: Input\n }], cpFallbackColor: [{\n type: Input\n }], cpColorMode: [{\n type: Input\n }], cpCmykEnabled: [{\n type: Input\n }], cpOutputFormat: [{\n type: Input\n }], cpAlphaChannel: [{\n type: Input\n }], cpDisableInput: [{\n type: Input\n }], cpDialogDisplay: [{\n type: Input\n }], cpSaveClickOutside: [{\n type: Input\n }], cpCloseClickOutside: [{\n type: Input\n }], cpUseRootViewContainer: [{\n type: Input\n }], cpPosition: [{\n type: Input\n }], cpPositionOffset: [{\n type: Input\n }], cpPositionRelativeToArrow: [{\n type: Input\n }], cpOKButton: [{\n type: Input\n }], cpOKButtonText: [{\n type: Input\n }], cpOKButtonClass: [{\n type: Input\n }], cpCancelButton: [{\n type: Input\n }], cpCancelButtonText: [{\n type: Input\n }], cpCancelButtonClass: [{\n type: Input\n }], cpEyeDropper: [{\n type: Input\n }], cpPresetLabel: [{\n type: Input\n }], cpPresetColors: [{\n type: Input\n }], cpPresetColorsClass: [{\n type: Input\n }], cpMaxPresetColorsLength: [{\n type: Input\n }], cpPresetEmptyMessage: [{\n type: Input\n }], cpPresetEmptyMessageClass: [{\n type: Input\n }], cpAddColorButton: [{\n type: Input\n }], cpAddColorButtonText: [{\n type: Input\n }], cpAddColorButtonClass: [{\n type: Input\n }], cpRemoveColorButtonClass: [{\n type: Input\n }], cpExtraTemplate: [{\n type: Input\n }], cpInputChange: [{\n type: Output\n }], cpToggleChange: [{\n type: Output\n }], cpSliderChange: [{\n type: Output\n }], cpSliderDragEnd: [{\n type: Output\n }], cpSliderDragStart: [{\n type: Output\n }], colorPickerOpen: [{\n type: Output\n }], colorPickerClose: [{\n type: Output\n }], colorPickerCancel: [{\n type: Output\n }], colorPickerSelect: [{\n type: Output\n }], colorPickerChange: [{\n type: Output\n }], cpCmykColorChange: [{\n type: Output\n }], cpPresetColorsChange: [{\n type: Output\n }], handleClick: [{\n type: HostListener,\n args: ['click']\n }], handleFocus: [{\n type: HostListener,\n args: ['focus']\n }], handleInput: [{\n type: HostListener,\n args: ['input', ['$event']]\n }] } });\n\nclass ColorPickerModule {\n}\nColorPickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: ColorPickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nColorPickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: ColorPickerModule, declarations: [ColorPickerComponent, ColorPickerDirective, TextDirective, SliderDirective], imports: [CommonModule], exports: [ColorPickerDirective] });\nColorPickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: ColorPickerModule, providers: [ColorPickerService], imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.2.1\", ngImport: i0, type: ColorPickerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n exports: [ColorPickerDirective],\n providers: [ColorPickerService],\n declarations: [ColorPickerComponent, ColorPickerDirective, TextDirective, SliderDirective],\n entryComponents: [ColorPickerComponent]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Cmyk, ColorPickerComponent, ColorPickerDirective, ColorPickerModule, ColorPickerService, Hsla, Hsva, Rgba, SliderDirective, TextDirective };\n"]}