{"version":3,"sources":["components/images/NoImageAvailable.png","components/images/ClientStatic/garbage_fees.png","components/images/ClientStatic/pay_my_bill.png","components/images/ClientStatic/payment_options.png","components/images/ClientStatic/report_a_problem.png","components/images/TracSoftLogo.png","components/images/ComponentThumbnails/ActionButton.png","components/images/ComponentThumbnails/Announcement.png","components/images/ComponentThumbnails/Banner.png","components/images/ComponentThumbnails/BigText5050.png","components/images/ComponentThumbnails/Contact5050.png","components/images/ComponentThumbnails/Features1.png","components/images/ComponentThumbnails/Grid5050.png","components/images/ComponentThumbnails/HRSeparator.png","components/images/ComponentThumbnails/HtmlEditor.png","components/images/ComponentThumbnails/SingleFeatures1.png","components/images/ClientStatic/garbage_fees_hover.png","components/images/ClientStatic/pay_my_bill_hover.png","components/images/ClientStatic/payment_options_hover.png","components/images/ClientStatic/report_a_problem_hover.png","components/images/ClientStatic/NewsletterIcon.png","components/images/file_blue.png","components/images/covid-icon.svg","components/images/wave.svg","components/images/case_circle.svg","components/images/file.svg","components/images/links.svg","components/images/user_circle.svg","components/Authentication.js","components/Admin/AdminSettingsService.js","components/Admin/AdminDashboard/AdminDashboard.js","components/api-authorization/AuthorizeAdminRoute.js","components/api-authorization/AuthorizeUserRoute.js","components/Layout.js","components/Admin/RoleManagement/RoleManagement.js","components/Admin/PageComponentManagement/PageComponentManagement.js","components/Admin/PageForm/DnDPageOrder.js","components/Admin/PageForm/FakeDnDPageOrder.js","components/Admin/TagsAndChips/TagsByInput.js","components/Admin/PageForm/PageForm.js","components/Admin/PageForm/CreatePage/CreatePage.js","components/Admin/PageForm/UpdatePage/UpdatePage.js","components/Admin/PageForm/CreateExternalPage.js","components/Admin/PageForm/UpdateExternalPage.js","components/Admin/PageComponentForm/DnDCurrentComponents.js","components/Admin/PageComponentForm/FakeDnDCurrentComponents.js","components/ComponentMap.js","components/Admin/PageVersionLogManagement/PageVersionLogManagement.js","components/Admin/ComponentForm/ComponentFormService.js","components/Admin/ComponentForm/AnnouncementForm/AnnouncementForm.js","components/ImageGalleryField.js","components/Admin/ComponentForm/BannerForm/BannerForm.js","components/Admin/ComponentForm/ComponentFormPopup.js","components/Admin/ComponentForm/BannerForm/DnDBanner.js","components/Admin/ComponentForm/BannerForm/FakeDnDBanner.js","components/Admin/ComponentForm/BannerForm/BannerContainerForm.js","components/Admin/ComponentForm/IconLinkContainerForm/IconLinkForm.js","components/Admin/ComponentForm/IconLinkContainerForm/DnDIconLink.js","components/Admin/ComponentForm/IconLinkContainerForm/FakeDnDIconLink.js","components/Admin/ComponentForm/IconLinkContainerForm/IconLinkContainerForm.js","components/HtmlEditorField.js","components/Admin/ComponentForm/ColumnsTabContainerForm/DnDColumnsTab.js","components/Admin/ComponentForm/ColumnsTabContainerForm/ColumnsTabForm.js","components/Admin/ComponentForm/ColumnsTabContainerForm/FakeDnDColumnsTab.js","components/Admin/ComponentForm/AccordionForm/AccordionTabForm.js","components/Admin/ComponentForm/AccordionForm/DnDAccordionTab.js","components/Admin/ComponentForm/HtmlEditorForm/HtmlEditorForm.js","components/Admin/ComponentForm/BigText5050Form/BigText5050Form.js","components/Admin/ComponentForm/Contact5050Form/Contact5050Form.js","components/Admin/TagsAndChips/TagsBySelection.js","components/Admin/ComponentForm/Features1Form/Features1Form.js","components/Admin/ComponentForm/Grid5050Form/Grid5050Form.js","components/Admin/ComponentForm/ActionButtonForm/ActionButtonForm.js","components/Admin/ComponentForm/SingleFeatures1Form/SingleFeatures1Form.js","components/Admin/ComponentForm/HRSeparatorForm/HRSeparatorForm.js","components/Admin/ComponentForm/CardForm/CardForm.js","components/Admin/ComponentForm/CalendarForm/CalendarForm.js","components/Services.js","components/BlogTable/BlogTable.js","components/Admin/ComponentForm/NewsTableForm/NewsTableForm.js","components/Admin/ComponentForm/BlogTableForm/BlogTableForm.js","components/Admin/ComponentForm/BirthdayTableForm/BirthdayTableForm.js","components/Admin/ComponentForm/DocumentTableForm/DocumentTableForm.js","components/Admin/ComponentForm/CardContainerForm/CardContainerForm.js","components/Admin/ComponentForm/BlogPreviewForm/BlogPreviewForm.js","components/Admin/ComponentForm/SideContainerForm/SideContainerForm.js","components/Admin/PageComponentForm/PageComponentForm.js","components/api-authorization/AuthorizeService.js","components/api-authorization/ApiAuthorizationConstants.js","components/api-authorization/Login.js","components/api-authorization/Logout.js","components/NavBar/ContactInfo/ContactInfo.js","components/MenuItems/MenuItems.js","components/sideMenu/sideMenu.js","components/Backdrop/Backdrop.js","components/SocialIcons/SocialIcons.js","components/Breadcrumb/Breadcrumb.js","components/NavBar/SubNavBar.js","components/NavBar/NavbarTabs.js","components/NavBar/NavBar.js","components/BannerContainer/Slideshow.js","components/BannerContainer/BannerContainer.js","components/IconLinkContainer/IconLinkContainer.js","components/ColumnsTabContainer/ColumnsTabContainer.js","components/Accordion/Accordion.js","components/Mailchimp.js","components/Footer/SuperFooter.js","components/Footer/Footer.js","components/HtmlEditor/HtmlEditor.js","components/BigText5050/BigText5050.js","components/Grid5050/Grid5050.js","components/Form/Form.js","components/ActionButton/ActionButton.js","components/Features1/SingleFeatures1.js","components/HRSeparator/HRSeparator.js","components/EventTable/EventCalendar.js","components/EventTable/EventTable.js","components/NewsTable/NewsTable.js","components/BirthdayTable/BirthdayTable.js","components/DocumentTable/DocumentTable.js","components/Card/Card.js","components/CardContainer/CardContainer.js","components/Pages.js","components/Admin/Settings/Modules/DocumentSettings.js","components/Admin/Settings/Modules/EventSettings.js","components/Admin/Settings/Settings.js","components/Admin/LayoutManagement/NavbarTabs/DnDNavbarTabs.js","components/Admin/LayoutManagement/LayoutManagement.js","components/Admin/FormForm/FormForm.js","components/Admin/FormFieldForm/FormFieldForm.js","components/Admin/FormBuilder/DnDFieldOrder.js","components/Admin/FormBuilder/FormBuilder.js","components/Admin/FormBuilderSubmissions/FormSubmissionsMassRange.js","components/Admin/FormBuilderSubmissions/FormBuilderSubmissions.js","components/Admin/PagePreview/PagePreview.js","components/Admin/UserForm/UserForm.js","components/Admin/DocumentUpload/DocumentUpload.js","components/Admin/DocumentUpload/UpdateDocument.js","components/Admin/EventManagement/EventManagement.js","components/Admin/EventForm/EventForm.js","components/Admin/EventForm/CreateEvent.js","components/Admin/EventForm/UpdateEvent.js","components/Event/Event.js","components/Breadcrumb/StaticBreadcrumb.js","components/Admin/BlogManagement/BlogManagement.js","components/Admin/BlogForm/BlogForm.js","components/Blog/PreviewBlog.js","components/Admin/BlogForm/UpdateBlog.js","components/Blog/Blog.js","components/Admin/NewsManagement/NewsManagement.js","components/Admin/NewsForm/NewsForm.js","components/Admin/NewsForm/UpdateNews.js","components/Admin/BirthdayManagement/BirthdayManagement.js","components/Admin/ImageManagement/ImageManagement.js","components/Admin/SideNavManagement/SideNavManagement.js","components/Admin/SideNavForm/SideNavForm.js","components/Admin/SideNavForm/CreateSideNav.js","components/Admin/SideNavForm/UpdateSideNav.js","App.js","index.js"],"names":["module","exports","__webpack_require__","p","apiRef","fetch","httpHost","getCompanyName","_getCompanyName","apply","this","arguments","_callee","response","data","regenerator_default","a","wrap","_context","prev","next","method","headers","Content-Type","Accept","sent","json","abrupt","stop","callAPI","_x","_x2","_x3","_x4","_callAPI","_callee2","methodType","methodUrl","formData","isObj","methodData","i","result","statusCode","responseObj","_response","_result","_statusCode","_response2","_result2","_statusCode2","_context2","undefined","elements","length","name","value","body","JSON","stringify","text","status","_callee3","form","error","_context3","isPasswordExpired","updateDisplayForm","checkPasswordExpiration","bypassTwoFactor","sendTwoFactorCode","parse","document","getElementById","innerHTML","message","_x6","_isPasswordExpired","_callee4","userId","_context4","_x7","_checkPasswordExpiration","_callee5","_context5","_callee6","_context6","_x9","_sendTwoFactorCode","_callee7","_context7","_callee8","_context8","createCookie","window","location","replace","_x11","_bypassTwoFactor","_callee9","ipAddress","_context9","publicIp","v4","_callee10","email","_context10","_callee11","_context11","sessionToken","sessionId","charAt","slice","d","Date","setTime","getTime","expires","toUTCString","Cookies","set","hideForm","showForm","getElementsByClassName","children","reset","setAttribute","isUserLoggedIn","_isUserLoggedIn","_callee12","cookies","companyName","_context12","get","getLoggedInUser","_getLoggedInUser","_callee13","_context13","getUsersByCompany","_x14","_getUsersByCompany","_callee15","company","_context15","getUser","_x15","_x16","components_Authentication_getUser","_callee16","_context16","getEmptyUser","_getEmptyUser","_callee17","_context17","deleteUser","_x17","_x18","_deleteUser","_callee18","_context18","createUser","_x19","_createUser","_callee19","user","role","responseResult","modelState","errors","_i","_Object$entries","_ref3","_ref2","key","_context19","assignRoleToUser","id","Object","entries","slicedToArray","_callee20","roleData","_context20","UserId","RoleName","updateUserWithoutPwValidation","_x22","_updateUserWithoutPwValidation","_callee21","_i2","_Object$entries2","_ref6","_ref5","_context21","adminSettingsService","AdminSettingsService","classCallCheck","createClass","_isFormInitialized","asyncToGenerator","mark","_getVersionLimit","_isDocumentInitialized","_isEventInitialized","_isBlogInitialized","_isNewsInitialized","_isBirthdayInitialized","AdminDashboard","_Component","props","_this","possibleConstructorReturn","getPrototypeOf","call","handleLogOut","e","preventDefault","remove","toggleSideNav","sideNav","sideNavStatus","getAttribute","links","getElementsByTagName","main","style","width","marginLeft","visibility","state","isFormInitialized","isDocumentInitialized","isEventInitialized","isBlogInitialized","isNewsInitialized","isBirthdayInitialized","loggedInUser","inherits","getComponentData","formPages","documentPages","eventPages","blogPages","newsPages","birthdayPages","navbarParentUrl","react_default","createElement","href","className","index_es","icon","faFileAlt","faFileUpload","faCalendarAlt","faBlog","faNewspaper","faBirthdayCake","settings","siteInfo","users","roles","imageModule","faImage","tracSoftSettings","title","faTools","faCog","faMapMarkedAlt","faUsers","faAddressCard","sideNavPages","faColumns","faBars","onClick","data-status","src","logo","faFile","component","_getComponentData","setState","Component","displayName","AuthorizeAdminRoute","ready","authenticated","isSiteInitialized","isLayoutCompleted","populateAuthentication","_this2","_this$props","rest","objectWithoutProperties","es_Route","assign","render","path","match","requireForm","requireDocument","requireNews","requireBirthday","requireEvent","requireBlog","Redirect","to","includes","Admin_AdminDashboard_AdminDashboard","_Component2","initializationResponse","initializationData","isLayoutCompletedResponse","AuthorizeUserRoute","Layout","RoleManagement","handleChange","newRole","target","handleSubmit","addRole","tableRows","rolesArray","row","push","table","columns","label","field","sort","rows","placeholder","type","onChange","required","mdbreact_esm","_addRole","alert","roleName","reload","_getRoles","console","log","getRoles","_getRoles2","getRolesByUserId","_getRolesByUserId","PageComponentManagement","filterDeletedPages","includeDeletedPages","checked","allPageComponentDatas","filteredPageComponentDatas","loggedInUserCMSRole","filteredPageComponents","pageComponent","versionStatus","editComponent","isExternal","pageId","faEdit","pageName","pageMenu","pageMenuUrl","childMenu","pageChildMenu","subMenu","pageSubMenu","pageUrl","allowNavigation","pageAllowNavigation","faCheck","faTimes","showOnMenu","pageShowOnMenu","pageCreationBtns","Fragment","bind","DnDPageOrder","currentPageId","columnsFromBackend","defineProperty","uuid","parentName","parentPageName","items","pages","_useState","useState","_useState2","setColumns","display","justifyContext","height","react_beautiful_dnd_esm","onDragEnd","destination","source","droppableId","_objectSpread2","sourceColumn","destColumn","sourceItems","toConsumableArray","destItems","_sourceItems$splice","splice","index","removed","objectSpread","column","copiedItems","_copiedItems$splice","pageOrderUpdate","map","_ref","flexDirection","alignItems","background","fontWeight","marginBottom","wordBreak","provided","snapshot","droppableProps","ref","innerRef","isDraggingOver","padding","minHeight","item","draggableId","draggableProps","dragHandleProps","textAlign","userSelect","margin","backgroundColor","isDragging","color","faEllipsisV","marginRight","content","FakeDnDPageOrder","TagsByInput","inputValue","allowDuplicates","newTags","tags","getNextTagId","tag","updateParentComponent","isTagExisting","removeTag","tagId","currentTags","onTagRemoval","isRequired","inputType","allowDelete","tagArray","split","tagPairArray","tagOnlyArray","tagString","join","fakeEvent","tagUpdate","largestId","isExisting","tagValues","tagIcons","faTimesCircle","pointerEvents","tagInput","PageForm","parseInt","newPage","page","hasLandingPageInMenu","getChildMenuOptions","getSubMenuOptions","getMenuSiblingPages","pageArray","menuSiblingPages","validateUrlInput","which","autoGenerateUrl","friendlyUrl","recommendedUrl","char","toLowerCase","formType","mainMenuOptions","hasSubPages","childMenuOptions","subMenuOptions","hasMenuChildPages","sideNavs","resetOrderDnD","parentPage","currentRoles","assertThisInitialized","_handleSubmit","url","menu","then","orderedPageIds","isNaN","t0","t1","pageOrderResponse","pageOrderData","onPageSaved","_getChildMenuOptions","_getSubMenuOptions","parentMenuId","childMenuId","subMenuId","hasLandingPage","_getMenuSiblingPages","isCurrentPageInPages","toString","parentMenuName","childMenuName","subMenuName","seoTitle","seoMetaDescription","seoMetaKeywords","openType","sideNavId","roleId","menuOptions","isPageDataSet","order","scoTitle","scoMetaDescription","scoMetaKeywords","pageNameField","defaultValue","onBlur","disabled","friendlyUrlField","onKeyDown","menuKey","childMenuKey","subMenuKey","childMenuField","parentMenuDDL","childMenuDDL","subMenuField","subMenuDDL","dndPageOrder","showOnMenuInput","allowNavigationCheckbox","fullUrl","hostname","PageForm_FakeDnDPageOrder","PageForm_DnDPageOrder","statusBtn","formBtnBuffer","allowDeleteTag","seoMetaKeywordsInput","TagsAndChips_TagsByInput","seoTitleCharCount","seoTitleCharCounter","seoDescriptionCharCount","seoDescriptionCharCounter","seoKeywordCount","seoKeywordCounter","restorePage","deletePage","roleOptions","allowNavigationField","seoFields","faInfoCircle","filter","roleFields","openTypeField","fullUrlField","sideNavOpts","sideNavKey","componentName","sideNavField","formTypeClass","onSubmit","marginTop","mainMenuResponse","mainMenuData","hasSubPagesResponse","hasSubPagesData","hasMenuChildPagesResponse","hasMenuChildPagesData","sideNavsResponse","sideNavsData","_deletePage","pId","confirm","_x5","_restorePage","CreatePage","Admin_PageForm_PageForm","UpdatePage","params","CreateExternalPage","UpdateExternalPage","DnDCurrentComponents","newColumns","componentOrderUpdate","FakeDnDCurrentComponent","componentMap","ComponentMap","componentType","thumbnail","AnnouncementThumbnail","BannerContainerThumbnail","NoImageAvailable","HtmlEditorThumbnail","BigText5050Thumbnail","Contact5050Thumbnail","SingleFeatures1Thumbnail","Features1Thumbnail","Grid5050Thumbnail","ActionButtonThumbnail","HRSeparatorThumbnail","PageVersionLogManagement","allVersionLogs","filteredVersionLogs","versionLog","timestamp","formatTimestamp","getMonth","getDate","getFullYear","action","comments","componentFormService","ComponentFormService","componentId","pageComponentId","versionId","PageId","Type","ComponentId","Id","Status","VersionId","AnnouncementForm","newAnnouncement","announcement","managePageComponent","onComponentSaved","deleteButton","deleteComponent","announcementText","wrapperClasses","componentTypeDisplay","maxLength","_deleteComponent","onComponentDeleted","ImageGalleryField","modal","images","search","toggle","handleSearchChange","loadImages","chooseImage","_componentDidMount","_handleSearchChange","u","imageDescription","_loadImages","handleImageChange","imageGallery","_this3","currentImageUrl","reactstrap_es","image","imgSrc","imageUrl","maxWidth","maxHeight","currentField","isDisabled","currentImageGalleryFieldContainer","currentImageGalleryFieldContainerToggle","isOpen","position","cursor","BannerForm","newBanner","banner","encodeURI","milliseconds","bannerContainerId","sliderDuration","isEditOnly","isInPopup","backgroundImage","actionText","buttonText","buttonLink","buttonPosition","subActionText","button2Link","button2Text","isButtonRequired","isImageGalleryFieldDisabled","hidden","components_ImageGalleryField","min","max","step","ComponentFormPopup","popupForm","cancelClicked","DnDBanner","itemOrderUpdate","FakeDnDBanner","BannerContainerForm","newBannerContainer","bannerContainer","displayPopup","bannerId","ComponentForm_BannerForm_BannerForm","onPopupComponentSaved","popup","ComponentForm_ComponentFormPopup","banners","deleteBanner","_bannerOrderUpdate","componentArray","componentIdsOrdered","bannerIds","_deleteBanner","sideMenu","mainFormClasses","addNewBannerButton","bannerButtons","bannerKey","currentComponentManagementBtns","faTrashAlt","faEye","bannerBtnClasses","bannerBtn","bannerDnD","BannerForm_DnDBanner","bannerOrderUpdate","BannerForm_FakeDnDBanner","IconLinkForm","newIconLink","iconLink","iconLinkContainerId","link","htmlFor","payment_options","pay_my_bill","report_a_problem","garbage_fees","DnDIconLink","FakeDnDIconLink","IconLinkContainerForm","newIconLinkContainer","iconLinkContainer","iconLinkId","IconLinkContainerForm_IconLinkForm","iconLinks","deleteIconLink","_iconLinkOrderUpdate","iconLinkIds","_deleteIconLink","addNewIconLinkButton","iconLinkButtons","iconLinkKey","iconLinkBtnClasses","iconLinkBtn","iconLinkDnD","IconLinkContainerForm_DnDIconLink","iconLinkOrderUpdate","IconLinkContainerForm_FakeDnDIconLink","paddingRight","HtmlEditorField","editor","responseContent","returnAsEvent","handleEditorChange","buttonModal","button","toggleButtonForm","createButton","handleButtonChange","newButton","tinymce","activeEditor","execCommand","baseURL","protocol","port","altText","Placeholder","data-description","ts","apiKey","init","menubar","fontsize_formats","plugins","toolbar","ui","registry","addButton","onAction","onEditorChange","react","HtmlEditorField_HtmlEditorField","components_HtmlEditorField","borderRight","FakeDnDColumnsTab","columnsTab","columnsTabContainerId","ColumnsTabForm","format","column1","column2","column3","column4","footer","singleEditorWrapperClasses","doubleEditorWrapperClasses","accordionId","htmlEditorColumnsFields","accordionTab","quadEditorWrapperClasses","editorComponentWrapperClasses","htmlEditorFooterField","components_ComponentMap","components_ColumnsIcon","ColumnsTabForm_ColumnsTabForm","ColumnsTabContainerForm_ColumnsTabForm","ColumnsTabContainerForm_DnDColumnsTab","DnDAccordionTab","_removed","_onDragEnd","free_solid_svg_icons_index_es","htmlEditor","newHtmlEditor","AccordionTabForm","HtmlEditorForm","BigText5050Form","bigText5050","imageLink","Contact5050Form","FakeDnDAccordionTab","newContact5050","contact5050","FakeDnDAccordionTab_FakeDnDAccordionTab","AccordionForm_FakeDnDAccordionTab","AccordionForm_AccordionForm","AccordionForm","newAccordion","accordion","isDataSaved","ComponentForm_ComponentFormService","accordionTabId","AccordionForm_AccordionTabForm","accordionTabs","deleteAccordionTab","_accordionTabOrderUpdate","accordionTabIds","_deleteAccordionTab","headerContent","addNewAccordionTabButton","accordionTabButtons","accordionTabKey","accordionTabBtnClasses","accordionTabBtn","accordionTabDnD","AccordionForm_DnDAccordionTab","accordionTabOrderUpdate","editorWrapper","HtmlEditorForm_HtmlEditorForm","TagsBySelection","ComponentForm_HtmlEditorForm_HtmlEditorForm","BigText5050Form_BigText5050Form","newBigText5050","tagSelections","tagsByGrid","allForms","description","formId","formFieldOptions","formOptKey","imageLinkField","contentField","formResponse","Contact5050Form_Contact5050Form","TagsBySelection_TagsBySelection","tagKey","tagIconWrapperClass","_newTags","gridRowStart","gridRowEnd","showInput","Features1Form","singleFeatures1s","singleFeatures1","sfName","tagKeyOnlyArray","singleFeatures1IdList","Grid5050Form","newGrid5050","grid5050","tagOpts","Features1Form_Features1Form","newFeatures1","features1","actionButton","ActionButtonForm","SingleFeatures1Form","htmlEditors","singleFeatures1IdArray","j","_singleFeatures","sfId","_sfName","singleFeatures1ObjArray","htmlEditorOptions","selectedId","singleFeatures1IdListField","isFeatures1Set","TagsAndChips_TagsBySelection","htmlEditorId","htmlEditorKey","ddlDisplay","substring","HRSeparatorForm","hrSeparator","ActionButtonForm_ActionButtonForm","card","newActionButton","newCard","calendars","bannerContainers","eventTables","blogTables","birthdayTables","documentTables","saveButton","contentOptions","titleStyle","contentStyle","viewMoreLink","contentId","contentType","cardStyle","CalendarForm","calendar","newCalendar","Services","dateTime","includeTime","isTextFormat","includeDay","year","date","hours","getHours","minutes","getMinutes","abvMonths","isFullWords","timestampFormat","day","midday","abvWeekDays","month","services","BlogTable","CardForm","searchBlogs","searchText","showArchivesBtn","hideArchivesBtn","currentFilters","newFilter","newsTables","searchFilters","searchFilter","currentFilterIndex","terms","term","contentOpt","contentOptKey","_contentOpt","_contentOptKey","_ddlDisplay","_contentOpt2","_contentOptKey2","_ddlDisplay2","_contentOpt3","_contentOptKey3","_ddlDisplay3","_contentOpt4","_contentOptKey4","_ddlDisplay4","_contentOpt5","_contentOptKey5","_ddlDisplay5","_contentOpt6","_contentOptKey6","_ddlDisplay6","_contentOpt7","_contentOptKey7","_ddlDisplay7","contentIdField","viewMoreLinkField","CardForm_CardForm","ComponentForm_CardForm_CardForm","CalendarForm_CalendarForm","ComponentForm_CalendarForm_CalendarForm","currentFilterSet","currentFilterDetails","filterKey","EventTableForm","filterBlogs","currentFilter","newEventTable","eventTable","handleLimitEntriesChange","limitEntries","eventConfiguration","typesField","maxEntries","isCompact","types","typeSelections","typesKeyVal","typeSelectionsKeyVal","EventTableForm_EventTableForm","ComponentForm_EventTableForm_EventTableForm","components_Services","getDay","currentFilterInfo","currentFilterTitle","currentFiltersBox","newIndex","paginationBlogIndex","allRawTags","filterOpts","monthYearTags","popularPosts","blogs","blogTable","filteredBlogs","blogConfiguration","cardsPerPagination","blog","uploaderFirstName","uploaderLastName","blogLink","blogCategories","categories","blogTypes","forEach","getDistinctBlogTags","indexOf","functionalTag","monthYearTag","getMonthYearTagFormat","thumbnailImageSrc","thumbnailImage","blogCard","newFilteredBlogs","blogRowKey","singleBlogUrl","teaser","author","formatAuthor","formatDateTime","monthYearTimestamp","lowerTags","editorPickBlogId","popularPost","tagSet","tagA","tagB","countA","countB","comparison","featuredBlog","popularPostBox","filterOptsBox","customTable","minPaginatedIndex","maxPaginatedIndex","blogCards","paginatedBlogs","buttons","prevText","handlePagination","pageCount","pageCountBuffer","_functionalTag","currentPageIndex","defaultImage","pageText","pageKey","currentPageClass","nextText","paginatedButtons","containerClasses","BlogTableForm","alt","newBlogTable","alreadyExists","tagsAndCounts","tagAndCount","_tag","orderedTagsAndCounts","sortTagsCounts","resetEditorPickField","tagBoxOpts","_filterKey","_currentFilter","_functionalTag2","filterOptsBoxTitle","displayArchiveBtns","archiveKey","_monthYearTag","allowDeleteTypes","handleArchiveDisplay","archivesFilterBox","archiveTags","blogCurrents","paddingBottom","blogSelections","blogCurrentsKeyVal","blogRef","k","tableTypes","blogSelectionsKeyValue","allowDeleteEditorPicks","resetEditorPick","editorPickField","maxEntriesField","NewsTableForm","newNewsTable","newsTable","_newIndex2","searchBar","newsConfiguration","BlogTable_BlogTable","BirthdayTableForm","newBirthdayTable","DocumentTableForm","CardContainerForm","newCardContainer","cardContainer","shouldReset","popupFormType","cards","containerType","isCardContainerSet","cardIds","cardsArray","blogOptKey","featuredBlogOpts","featuredBlogField","featuredBlogId","BlogTableForm_BlogTableForm","ComponentForm_BlogTableForm_BlogTableForm","cardsIdArray","cardId","editCardDetailBtn","cardBox","cardName","editCardContentBtn","containerTypeField","tagGrid","NewsTableForm_NewsTableForm","ComponentForm_NewsTableForm_NewsTableForm","BirthdayTableForm_BirthdayTableForm","resetInnerComponents","birthdayTable","cardIdsField","birthdayConfiguration","confirmDelete","BlogPreviewForm","newBlogPreview","blogPreview","newDocumentTable","documentTable","documentConfiguration","seeAllText","seeAllLink","SideContainerForm","newSideContainer","sideContainer","content1","content2","BannerForm_BannerContainerForm","ComponentForm_BirthdayTableForm_BirthdayTableForm","ComponentForm_DocumentTableForm_DocumentTableForm","PageComponentForm","tempCurrentCenter","resetCurrentComponents","resetPageDetails","componentSelection","centerComponent","_card","_cardName","currentCenter","columnTab","pcId","CardContainerForm_CardContainerForm","BlogPreviewForm_BlogPreviewForm","hasDraft","pageComponents","SideContainerForm_SideContainerForm","sortedPageComponents","mostRecentVersionArray","versionLimit","allComponentTypes","allAnnouncements","allBannerContainers","allIconLinkContainers","allColumnsTabContainers","allAccordions","allHtmlEditors","allBigText5050s","allContact5050s","allSingleFeatures1s","allFeatures1s","allGrid5050s","allActionButtons","allHRSeparators","allCards","allCardContainers","allCalendars","allDocumentTables","allEventTables","allBlogTables","allBlogPreviews","allNewsTables","allBirthdayTables","allSideContainers","tempMostRecentPC","lastVersionId","AnnouncementForm_AnnouncementForm","BannerContainerForm_BannerContainerForm","IconLinkContainerForm_IconLinkContainerForm","ColumnsTabContainerForm_ColumnsTabContainerForm","SingleFeatures1Form_SingleFeatures1Form","Grid5050Form_Grid5050Form","HRSeparatorForm_HRSeparatorForm","DocumentTableForm_DocumentTableForm","reverse","_onComponentSaved","_onComponentDeleted","_onPageSaved","getComponentForm","centerComponentContainer","componentTypes","onBtnClick","getExistingComponents","getThumbnail","_deleteCurrentPageComponent","versionOptions","versionOptKey","versionButtons","hasPending","createDraft","_componentOrderUpdate","deleteDraft","versionSelectDDL","PageComponentIds","updateCurrentVersion","componentData","tabName","_createDraft","_submitDraft","versionComments","pageLink","prompt","_rejectDraft","_publishDraft","_deleteDraft","pageData","pageNameTitle","managementData","componentsOnPage","componentObj","getComponentFromPageComponent","currentComponentClasses","currentComponentDnDIcon","deleteCurrentPageComponent","componentContent","componentColumns","currentComponentDataDnD","PageComponentForm_DnDCurrentComponents","FakeDnDCurrentComponents","pagePreviewLink","ApplicationName","QueryParameterNames","LogoutActions","Logout","today","tempVersionOpts","unshift","submitDraft","publishDraft","rejectDraft","addComponentBtns","getComponentTypes","versionSelectValue","resetCurrentCenter","tabData","Admin_PageVersionLogManagement_PageVersionLogManagement","versionLogTab","switchTab","previewButton","float","shouldSetVersion","versionLimitString","Admin_AdminSettingsService","getVersionLimit","allComponents","announcements","iconLinkContainers","columnsTabContainers","accordions","bigText5050s","contact5050s","features1s","grid5050s","actionButtons","hrSeparators","cardContainers","blogPreviews","sideContainers","_x8","PageComponentForm_PageComponentForm","Admin_PageComponentForm_PageComponentForm","UpdatePageComponent_UpdatePageComponent","UpdatePageComponent","ensureUserManagerInitialized","userManager","signinSilent","createArguments","silentUser","LoginActions","prefix","ApplicationPaths","DefaultLoginRedirectPath","ApiAuthorizationClientConfigurationUrl","concat","ApiAuthorizationPrefix","Login","LoginFailed","LoginCallback","Register","Profile","LogOut","LoggedOut","LogOutCallback","IdentityRegisterPath","IdentityManagePath","authService","AuthorizeService","_callbacks","_nextSubscriptionId","_user","_isAuthenticated","_popUpDisabled","_getUser","profile","_getAccessToken","access_token","_signIn","popUpUser","updateState","success","Error","signinPopup","signinRedirect","redirect","t2","_completeSignIn","signinCallback","redirectUrl","_signOut","returnUrl","signoutPopup","signoutRedirect","_completeSignOut","signoutCallback","notifySubscribers","callback","subscription","subscriptionId","subscriptionIndex","element","found","useReplaceToNavigate","AuthenticationResultStatus","Fail","Success","_ensureUserManagerInitialized","ok","automaticSilentRenew","includeIdTokenInSilentRenew","userStore","oidc_client_min","events","addUserSignedOut","removeUser","api_authorization_AuthorizeService","Login_Login","LogoutCallback","populateAuthenticationState","processLogoutCallback","isReady","login","getReturnUrl","processLoginCallback","redirectToProfile","isauthenticated","signOut","navigateToReturnUrl","_login","_processLoginCallback","completeSignOut","completeSignIn","isAuthenticated","URLSearchParams","origin","fromQuery","redirectToApiAuthorizationPath","SideMenu","ContactInfo","menuItems","phoneNumber","attributes","getNamedItem","ContactInfo_ContactInfo","MenuItems_MenuItems","childPages","subPages","childIndex","isChildToggleOpen","isToggleOpen","childName","childPage","mainPage","MenuItems","childLink","childUrl","childToggleDisplay","menuItemArray","childMenuItem","subMenuPages","menuItem","subPage","toggleIcon","toggleAccordion","subIndex","subName","toUpperCase","subUrl","menuResponse","menuData","subMenuItem","subLink","backdrop","parentIndex","parentPages","isParentToggleOpen","parentUrl","parentLink","parentToggleDisplay","parentMenuItem","data-main-toggle-id","data-toggle-id","data-menu-type","SocialIcons","facebookLink","instagramLink","twitterLink","youtubeLink","linkedinLink","pinterestLink","tumblrLink","isInNavbar","data-parent-toggle-id","data-child-toggle-id","ulStyle","respond","Backdrop","Breadcrumb","backdropClickHandler","NavbarTabs","tabId","changeCurrentTab","breadcrumbData","crumb","lastPage","currentTab","getTabDisplay","tab","__html","Breadcrumb_Breadcrumb","components_Breadcrumb_Breadcrumb","SubNavBar_SubNavBar","navbarTab","tabClasses","SubNavBar","subMenuItems","navbarTabs","NavBar_SubNavBar","free_regular_svg_icons_index_es","NavBar","showHide","prevState","dangerouslySetInnerHTML","footerContent","currentTabDisplay","tabs","googleSearchScript","async","urlPathName","pathname","payBillLink","Slideshow","currentSlideIndex","imageArray","insideArray","NavbarTabs_NavbarTabs","NavBar_NavbarTabs","NavBar_NavBar","setTimeout","showMobileNav","showContactInfo","socialIconId","showLoginLink","showSiteName","siteName","slideDuration","handleImageLoad","currentInside","Slideshow_Slideshow","slideTimeArray","currentDuration","updateCurrentSlide","onLoad","BannerContainer_Slideshow","IconLinkContainer","getColumnsTabDisplay","payment_options_hover_default","n","payment_options_hover","tabBar","classList","Mailchimp","ColumnsTabContainer","columnsTabs","SuperFooter","_columnsTab","tabRowClasses","currentTabClasses","columnsTabContainer","isAccordion","showBorder","NewsletterIcon","Accordion_Accordion","Accordion","toggleTab","Footer","parentElement","NewsletterIcon_default","BigText5050","novalidate","aria-hidden","tabindex","Grid5050","components_Mailchimp","SuperFooter_SuperFooter","Footer_Footer","socialId","copyrightName","contentColumn1","contentColumn2","contentColumn3","contentColumn4","privacyPolicyLink","socialIcons","SocialIcons_SocialIcons","customCol1","customCol2","customCol3","socialColumn","privacyPolicy","getYear","Announcement_Announcement","Announcement","hideAnnouncement","isHidden","HtmlEditor_HtmlEditor","HtmlEditor","BigText5050_BigText5050","ddlOptions","States","minLength","fieldTag","fieldOpts","options","ddlKey","components_ReCaptchaData","ReCaptchaData","esm","formValues","ActionButton","Form","fieldType","newFormValues","fieldName","fieldValue","handleConfirmationEmailChange","confirmationEmail","HRSeparator","data-fieldId","formFields","fieldId","Form_Form","components_Form_Form","Contact5050_Contact5050","Contact5050","formContainerClasses","ActionButton_ActionButton","HRSeparator_HRSeparator","SingleFeatures1_SingleFeatures1","SingleFeatures1","localizer","momentLocalizer","EventCalendar","Calendar","sendToEventPage","prevDateString","rawEvents","dateCounter","eventUrl","event","eventTime","startTime","populateCalendarFilter","dateString","calEvent","viewMore","start","end","moment","toDate","EventTable","NewsTable","BirthdayTable","DocumentTable","searchDocuments","newsList","filteredDocuments","documents","filteredNewsList","news","filteredDocs","getTimestampFormat","textDecoration","viewNews","tableData","NewsTable_NewsTable","BirthdayTable_BirthdayTable","birthdays","filteredBirthdays","months","currentDate","currentMonth","currentDay","birthday","birthdayFormat","addTypeFilter","typeFilter","department","datetime","tableName","typeFilterOpts","file_blue","documentTypesArray","Card_Card","Card","cardClasses","cardTitle","cardContent","Calendar_Calendar","BannerContainer_BannerContainer","isInCard","EventTable_EventTable","DocumentTable_DocumentTable","class","cardIcon","cardOverlay","components_Card_Card","CardContainer_CardContainer","CardContainer","cardContainerData","cssClass","rowStart","rowEnd","columnStart","columnEnd","gridColumnStart","gridColumnEnd","BlogPreview_BlogPreview","BlogPreview","blogSnippets","backImg","_title","blogUrl","snippet","SideContainer_SideContainer","SideContainer","components","Navbar","BannerContainer","IconLinkContainer_IconLinkContainer","ColumnsTabContainer_ColumnsTabContainer","Grid5050_Grid5050","Features1","Features1_Features1","Pages_Page","Page","pageContent","parentMenu","getPageData","DocumentSettings","AdminHome","documentConfigurations","newDocumentConfigurations","AdminHome_AdminHome","EventSettings","_authenticateLogin","_verifyPasswordUpdate","_x10","_verifyTwoFactorCode","_x12","_forgotPasswordRequest","_x13","_forgotPasswordChange","confirmPw","setCustomValidity","FormSettings_FormSettings","FormSettings","newFormCredentials","formCredentials","toEmail","isFormCredentialsSet","toEmailInput","Modules_FormSettings","selectedModules","initializationModules","initializationComponentArray","newInitializationComponentArray","removedTags","onTypeTagRemoval","_onTypeTagRemoval","isDocumentConfigurationsSet","typesInput","DocumentSettings_DocumentSettings","Modules_DocumentSettings","DnDNavbarTab","shift","modules","allowModuleDisplay","submitInitialization","_this4","currentDisplay","isInitialized","baseSettingDisplay","componentKey","settingsModules","initializationSettingDisplay","Settings","Settings_Settings","NavbarTabForm_NavbarTabForm","NavbarTabForm","newNavbarTab","AdminVersionUpdateEmails","adminVersionUpdateEmails","social","NavbarTabs_NavbarTabForm","DnDNavbarTabs","NavbarTabsManagement_NavbarTabsManagement","NavbarTabsManagement","navbarTabId","tabForm","onTabSaved","deleteNavbarTab","_navbarTabOrderUpdate","navbarTabIds","_deleteNavbarTab","tabButtons","navTab","navTabKey","navTabBtn","navTabDnD","navbarTabOrderUpdate","NavbarTabs_NavbarTabsManagement","LayoutManagement_LayoutManagement","LayoutManagement","handleSocialChange","newSocial","handleNavbarChange","newNavbar","navbar","handleFooterChange","newFooter","handleConfigurationChange","handleFooterEditorColumn1Change","handleFooterEditorColumn2Change","handleFooterEditorColumn3Change","handleFooterEditorColumn4Change","Social","FormForm","newFormField","newForm","isActive","onFormSaved","successMessage","includeConfirmationEmail","nameField","emailField","formField","FormForm_FormForm","Admin_FormForm_FormForm","CreateForm_CreateForm","CreateForm","formFieldResponse","formFieldData","DnDFieldeOrder","FormFieldForm","resetRequired","associatedFormFieldResponse","associatedFormFieldData","FormBuilder","DnDFieldOrder","FormSubmissionsMassRange","formSubmissionMassRangeData","overflow","FormBuilder_FormBuilder","componentSelectionId","rangeOpt","_onFormSaved","date1Format","date2Format","date1Raw","date1","date1Year","date1Date","date1Month","date2Raw","date2Month","date2Date","date2Year","date2MinRaw","setDate","date2MinYear","date2MinMonth","fieldForm","date2MinFormat","formFieldId","date2MinDate","onFormFieldSaved","date2Field","_deleteFormFieldComponent","activationButtonClicked","_fieldOrderUpdate","FormFieldIds","FormBuilderSubmissions","formSubmissionViewModels","formNameTitle","formTitle","maxDynamicColumns","submissionVM","entitySet","formSubmission","toLocaleDateString","formSubmissionPairs","submissionPair","tableColumns","formSubmissionsMassRange","_fieldName","_fieldId","FormSubmissionsMassRange_FormSubmissionsMassRange","_deleteSubmission","submissionId","FormBuilderSubmissions_FormBuilderSubmissions","UserForm","components_SideNav_SideNav","columnElement","newC","lastElementType","metaData","pageContentData","lib_default","generateComponents","_getPageData","routeData","PagePreview","PagePreview_PagePreview","UpdateUser_UpdateUser","FormData","UpdateUser","config","post","append","Admin_UserForm_UserForm","UpdateDocument","DocumentManagement","documentId","DocumentUpload_DocumentUpload","DocumentUpload","newDocument","documentData","file","documentConfig","files","docLocation","axios","EventForm","newEvent","UpdateDocument_UpdateDocument","deleteEventButton","EventManagement","deleteEvent","editEvent","startTimeMin","startTimeFormat","CreateEvent","UpdateEvent","StaticBreadcrumb","Event","eventType","mainImage","eventId","Admin_EventForm_EventForm","UpdateEvent_UpdateEvent","CustomLayout","CustomLayout_CustomLayout","BlogManagement","editBlog","getDateFormat","rawDate","BlogManagement_BlogManagement","submitButtonText","UpdateBlog","uploaderEmail","firstName","lastName","creationTimestamp","Blog","PreviewBlog","BlogForm","categoriesField","blogType","tagsFormat","_allowDelete","saveWithoutStatusButton","blogContainerClasses","deleteBlog","handleSubmitWithoutStatus","blogStatusTitle","top","NewsManagement","Blog_Blog","otherBlogs","staticBreadcrumbContent","otherblogSnippets","otherBlog","_timestamp","StaticBreadcrumb_StaticBreadcrumb","blogFriendlyUrl","UpdateNews","NewsForm_NewsForm","NewsForm","newNews","content-type","documentField","compressedFile","BirthdayManagement","hasFile","postCompression","imageFile","size","postComp","toFixed","imageBlob","imagePreview","createObjectURL","preCompression","preComp","compressionSavings","accept","setFile","onPreviewLoad","saveBtnText","imageStats","imageTypes","slideshowColor","viewDocButton","BirthdayManagement_BirthdayManagement","SideNavManagement","SideNavForm","CreateSideNav","_handleImageUpload","UpdateSideNav","baseUrl","ReactDOM","rootElement","newSideNav","SideNavForm_SideNavForm","Admin_SideNavForm_SideNavForm","CreateSideNav_CreateSideNav","UpdateSideNav_UpdateSideNav","App_App","App"],"mappings":"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","file":"static/js/main.daf10daa.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/garbage_fees.48d14469.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/Banner.3c5a41ff.png\";","module.exports = __webpack_public_path__ + \"static/media/BigText5050.190585d4.png\";","module.exports = __webpack_public_path__ + \"static/media/Contact5050.e896719b.png\";","module.exports = __webpack_public_path__ + \"static/media/Features1.c9f3420f.png\";","module.exports = __webpack_public_path__ + \"static/media/Grid5050.8de32328.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZoAAAA0CAYAAACzZ/5JAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADgSURBVHhe7dhBDQAwDAOxghvYAdy/Q3E/WwqGkzILACGhASAlNACkhAaAlNAAkBIaAFJCA0BKaABICQ0AKaEBICU0AKSEBoCU0ACQEhoAUkIDQEpoAEgJDQApoQEgJTQApIQGgJTQAJASGgBSQgNASmgASAkNAKl596yZmVk1oTEzs3SuMwBSQgNASmgASAkNACmhASAlNACkhAaAlNAAkBIaAFJCA0BKaABICQ0AKaEBICU0AKSEBoCU0ACQEhoAUkIDQEpoAEgJDQApoQEgJTQApIQGgJTQAJASGgBCux9FfVU18jPKOgAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/HtmlEditor.8e1bda32.png\";","module.exports = \"data:image/png;base64,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mJxvsPiQXO6TnPHYAKyjjXzcbYQ6sg2lxzpFFQTMzejlnEzdU5XIS/PzVmD789g+VvrV2SU9Z656/eQ+Oof7pFH7SS5cHJKpKn0IAbyXDX/ctXsd2XbU9hockAv/W9uY3VXaAAETAAAAThEwAQAA4BQBEwAAAE4RMAEAAOAUARMAAABOETABAADgFAETAAAAThEwAQAA4BQBEwAAAE4RMAEAAOAUARMAAABOETABAADgFAETAAAAThEwAQAA4BQBEwAAAE4RMAEAAOAUARMAAABOETABAADgFAETAAAAThEwAQAA4BQBEwAAAE4RMAEAAOAUARMAAABOETABAADgFAETAAAAThEwAQAA4BQBEwAAAE4RMAEAAOAUARMAAABOETABAADgFAETAAAAThEwAQAA4BQBEwAAAE4RMAEAAOAUARMAAABOETABAADgFAETAAAAThEwAQAA4BQBEwAAAE4RMAEAAOAUARMAAABOETABAADgFAETAAAAThEwAQAA4BQBEwAAAE4RMAEAAOAUARMAAABOETABAADgFAETAAAAThEwAQAA4BQBEwAAAE4RMAEAAOAUARMAAABOETABAADgFAETAAAAThEwAQAA4BQBEwAAAE4RMAEAAOAUARMAAABOETABAADgFAETAAAAThEwAQAA4BQBEwAAAE4RMAEAAOAUARMAAABOETABAADgFAETAAAAThEwAQAA4BQBEwAAAE4RMAEAAOAUARMAAABOETABAADgFAETAAAAThEwAQAA4BQBEwAAAE4RMAEAAOAUARMAAABOETABAADgFAETAAAAThEwAQAA4BQBEwAAAE4RMAEAAOAUARMAAABOETABAADgFAETAAAAThEwAQAA4BQBEwAAAE4RMAEAAOAUARMAAABOETABAADgFAETAAAAThEwAQAA4JDI/wM45kk2vNzkMQAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKsAAABaCAIAAABIRDHyAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABl/SURBVHhe7Z0HfFRVusDv9JZeKSGE3ktQo9LVp+suauhNQZo0pRdxZd23u09WgaVG0NB7FERUFBZY0YcCoog0qSG9h5SZzCTT7t3vlJnMTO4kM5OZmMkv/9zMnHLvPeX7znfKLSPgOI5pWGh6lnQF8Ac++EAhsAkAEtXIQQXgWJxhcEOeWQEjJFF+hIBloQy/F1x2YfmQlB1UC/1E8BZQrs+OmxrXIpwG+CcNZwNIQtDiOYaFFg+N5XZGUe8DH5iY31EF60ucKuTB/KXUA/iXDmMa3GqBCoD4OUF6bkmvA0l+LX47oCPwQ/EDvtUAXvMC3c6tzIKOuzea+eP9DRA8bFAU/yxNQ9gAUjm48aNmcjcHGX+2SYi/utnj4vkjvtIAi9TtgJAHucW99iU1kdbfJPBxL4CAORKe6wmYu9mFXZqM8W8q+EoDQOQWA4CmG6AHtzPyeu7b3FTFj8vol0Xz4WzQcmb4FGQWlHTYucGh71cIxGFyhdCxr4Dda4Q0MCTnyHAxJpYt1uuMTuYs7VQhqQvQbJAU1l/WsmzxuQZAldxMz48/tNVh4rep67OTnksIUskbea1xLFdYVtExeZ2WNdIgG9oHhN6bt9gfBW/FaxoANSUQ0org6NwYLTim55d03b3JQfwQmz59cZuosJrtv/EAPRfOKZrBXL6dkXB0G42wIUqq7N+mLXGjonhaHKvRwakJDo4YK5WIUDj4iHzIPMoHeE8D0D8pB7QIcMCJBfeyi7rt21QzASgM0oDoMOpvlFTXjEDgTAN8RKwyOH3hMuqhdYs1wAda4IORIK05EH9hj32ba4ofgMCvLt6qqNR7S/+8DeSKA00m5r2kXPvUsd0komHI1qkLSzXY6fP68aoNQF/oG3qBBznF3ffWsegbKJK2UgUKG18nSqsEG16D2ZyjVVdxZhzUcETJVFkLlkvE0ER9Wz/e0wByHgFIn7mTVdRzf1LTWPX7vQCx/zp+bs92LYkdsuik9/FaLwD5FID4GcGDvIfN4q8/UH1Dj+zU6Q3U7zO8owHQ/mFjWeZednG33Zubxe8VSk1V93KKiBtav486A2/eIZKWV9Jl94bmRV8vEiySlSxb6dORgCfjAHIA5Ao58OHQV93JKuyORv7N4rdDyAhOPvcyOFDN4Loh/bodHFOi0Y2/eJR67Xk6pt2ZSdNQL+sbPB0JkoNwruAMd7IKeu3/oGbrD5cozo6aKpNIwN34hvxOgWIg/ebQhFBvMF64mT7z+tc0zn1+HD7jse5xpJ7xUImn5wVLHL7m3XKznvptmKXotWZWokoh41Edb+CRBqAjaIHAkZb7kPeKX4BQkjv/TZVSSlYIfVQAXwBDmup7PjmmymjslLQup4pM0N1GJhA9XPRnhUxK/U6qIreoLGbbWuqx5+ywKYN7t8dHeb8OhaABbkPED0Drz3B6wffjoWNUchldIEYtym+APFMXx4JHJhGfSJyES+EJes587loqa9PS6LntiQoNDBMr6B72PPfV3oIyDd3P2whBs2oFtfPqjXxbSM0p7HXA6e0e03743GhGCyn4KKHtgY0fUgSUbezOL1WTEM944cyhghJ0hloqQSQW/TRpNs+VUoYxMmz/vdvMLF2mtObOK7gyG7RRXtT6Ye6A9Dk1p7jb3tru9inUa3+5m2U0mc1m1t82+ODMLAubwWi8kZrzx1MHaKk8Amrp6UO7UE3xyNcKFxMZvPuRl6jPnixtubqSZ5RQf+ocB5BYmnGyM3hg5N9zv0s3e0lQ6/czoFSQZ/IJ+m5moC+oL9C4NYtXKqBbdApKJKewrO32dbwLKm2UQRn0cpE1g15YzvFkPeC3jPw+B7c0L/u4y5Yef3ztxSfrvA7Se8umm+V0IciBnNnLW4QGUo+XqMsGoFiOEaABIzgg85kFZe13rG8WvweA5DOmL4mJDqX+akhl0lsBoN8MWPM33ruSoqTKrIVvikWo6UMXTgLrSZ1mBJIh6aEkb6YXdNzheLNXMy4CtRa/d0uVgedeIwBi0bRJwEgkoq6hkTTUniKDDgww9XgJBw1A2aj+Qp/Q9qH9IxOQmvsw/qDjzV7NuEWJsfJWej42qARS02CJ4Rv+Ud3C13eTZsgE6B4hByDqmaO79CYzapFewq4XAGHDJ7R2EgSJWGMf5D7svGdD9a41kDJC6OFq2cGPILVLygI1AAbZi+UKEknzFqxQyMkCEWlOjpYYEr18Nyvh02Tqt+fSqJmPdG7jrV7AQQPIF5p3Wt3wcTMtLz5lq7ORP4xyv0+c1rdja4lYTIOaDpzJzN7KKEg4nOxF43dpxMxHu8UiF6pRGGY5yhKC1dqq1pvf1/HdnioViCqWvyMSibyiAnbaB2d0OCmoQnZRWb+UD2uZ+O1PGP5Yt7ZyqQRsgFAoFMEm8vdNIBIx2CGSSSV9O8acfP4VWlpvcOD0JepC8FdskEp+cexr1GOPgTNnFpRST72pYX/gH/dK6BuMlJm9/iCvdvVvFREEUkcui/rY2hX/BEpArCMUHDkjQpQ0xhtsrPj151vppJbAAtSsLNIUu7druab9UBpkz+qUMzovLRA5agAVIseZTOY7mQUdk9aNPvsJCXPG8FMpFZAbMBcIdAr85cdw1dWCHAaD+fnP9hO/txjw2c5idQWpK2eVBTZ1/NOPUI89yVU3Tl++a3utwWPsxgEE8Gu0Vccv3pz04zEyNqyTaJnq3LjpUrEIjyDwIf6sBKgApNwCxmg0nr+RPuWXL7Hfm3wxZNyw/j1raS2QBY5lY9avztdX0CAbJIww+/XlkcEB1O8pPGuCBpN576lLs656fkW8GVcAEWbMWhIdFkT9vHBMWl5xpz0beRvi4UFjEvv3FKFld8/bG7r25cCVe9nN4m8AYJLZb/cWs9l6xY+fNi3CDj4+gh5jz9hzh/NK1DD+ht2wEpAj3MNxHAAcv3CDuprxMQV6rUZXSew9DbIHemGxUPh0vy7iGiM2AI4ZsH8bfroN9brIDvCfpjZ4zptd5LWZRjO1A/Lqs+MDGDjVEBwEVPfO4SGqtgHB1GNPTqW6oJSOEtDqLXG5g6MGwMDwAHuXeprxPdmV6vvZRfiuJBpiAZo0R+YK8Hlt5nwYN9AYG+Cgbts3mtCdOFhj3B8POM4FwCv95zuuXPgnCBlBmEQRJJOhm1tQnmm4XwONyVoYA2suqNTqffnUWJBIlr9whUwqAWlgCVrrEakF6uKxkbjxIKfPx1txuB0Q/+uEuT3jWiK385mFM3hmg5JVf3FdA26/Mr9jTKTQ/+4CqR0oPmy4zbFcqbay3Za1arOvHt+Buvt59Oy+nWMgUVyP8EHqHy0WkZoFh65KH7l+Fe8TjCqhJHvem0FKGVJcN0XBY1hc582wRzvFRjU58WP50zVBJIHQQOV/hk/FMT4Bkhl4dLtGW0XED+nilJHPWrPgUMik37w0hfrt0bJGmDTi43Ce3aFeGmAys+iymduJNnas7QhVKbarZnzLq++oZE2/pefCvAD0wNlWoa3qEhMdKKq+69yW/oe3VxpM1SrjMvXtBX4eOTO+cxvr20OaErQlCpiiMm3c1rWVnImE+wgYSPHeE+CAgQNl5JfO7cm4R3ZTC+qrAZBaiFgu57su7HaP1GiwNWssx5XqKw3euzTsO4a0ivtmygx3K51nVXjiP3Z9LH5APc34D0+1bndm8jTqcRmeVeEj4jQa2Yy/QUXoDvUaCTbTqPCs223WAG8CEoiSKjsFhncOqt464c/2AaHujtEaBq+NA/x11FcXrg6JMa3lgRkLl8Pwunpxj84p0AXAa/dz4w9/iIJ8g2fjgPrOBZRCybkR06JCA6CENKhpoTeazl9Pm3z5c1dqRCEUX3l5bgC9DxiOqK4TqOaE/R/mVfHc6+Etnm7d/syrDasBYNYezn8rOMCb99A1JsA6gggFRpO5U9K6TF05Da4VdICN4G3x9ZM2nmlAvcYBf4/p33TFj2033sQi4fGXJtDguoD9QdK8G92jkWGvAbjEY80dqLcu/pp9vtL3rzv7PSDiR00Z/lmWG/v1ERLR2HFfzex7Aeyc+H+7UkSp2F83LeUBl1+dI5dJ+Q2fv4IVAElfaGbNdzMLB36xs9E2YivQC5yePNXdAVl9R4IAjAaalvjtgIpo/LInkLmAuxrgMA6AonLjmU7U5xpQQaAxTXXzF/ETPJiROWgAHC/w+jsKmmkYPLPEPHOBf3NZ1NWMX5GjUXtgr3jeJvf9lJlyQdN7Crgp8050f5VQMjOyL1qAdBOea4NBClna7CVKIXoRaDONn/OJ0/867U+fPTOO3ODqLrwrQlxUSEDOG8tOPf9KuEQh8rB/aaYhWBgU/3j3duDw4I1ghBoaQHoSAXp+/Zn4znmLVxx/dmKzCjRaOsZEgcyQgNCHJ9eHa3+bHKiDoMpgUuuq0OtVwYOeDMYLCAJ0J9Wmo9++X/QT3rMZtwFhvcJ1DgtUmljuQ901mHZ6MI5L6v7cnMRB4Dh16faNtLzF454i4a7jsCJE3PSdBlizyJcjaAeOW3XwP3/J+JaENOMiEkYYowr6avgrMZGhKoUUGhUEQjssr6i6n1OY+HVKkV5rpoKom6Tuf5ibOBD2Pn3p1rW0vKXjn6ERLsOzJgiQIGcWBQ6BfJtM5hXbv1xX8jMNbTQEiqQVZoOrVYjudJWVm/Su7+8xMKJK6T9ySHyn8CAVETwATd/mzhGOZbm8YnW/vVuKDTpXsiRmhKFSOeypMepXd3l63sghEIgFhL7xLuByJkkE70iwroMwGp2+qEQzR9qT+t0HkoCRZp+w6EEtYwe0aNM+IFTuwu3StQO1fOPVefOC4qm/LmD/tDlLpPVOt05ggp0+c0nioD4RwQGk2RuNpkmfHR62f89Lh/YVlVaYzehitFAobB0ZkjF/+cURr7lyT5GJYYsMOlAXPWfe//A3kD0A4fCP30/D84oaB/g1oA7wm8aMLBsaoNi8eFzOrGVSqEl3WNniycEt2956ZV6oXPGCpF2v8qB4bZjaoD81bHLqqws/GzimPjdUicXuvWRLjH7RzbeAoufPX9EqPFgsFJRqdCcu3Jyy6oBszf8euHX135n3j6fdid76nvT9d/6c/MX56w+0eoNMInq0a2z+3DfdahKBUsvDJEjF8AbDQ3K3knPqV3gOrJa5ZXjw5fGzaIgLHEgYPmpw36tF+d32b76vKXm34OIW3Y0kzVVQ5MHHd3Xes9HIctACPLYHFvvaWAgQSh7MXRKokpvQa7lyY5JWDzubspe5Q6MtQKN6r/jSwC93ttm0OqeoDMQXHqJMfW2xO40B+nTc6OGLqkDdeKIB9qdGzi6x0a4kBpx45uUAhbTfJ1uddb0wCBp7/sjgYzsujJ7h7Amp2gEr6JYS+PTJFpDf3dcWgfghjRsPcvt+vLXOZ4/KTFUdtq/PL1ZD1qLDAr8bxv+sYE3iCuVvb/9y46fflqh1aIABQKp1Fc4jG+D4qCAnEkGd112Pnw4YrdXrE7/7hFf2tlRx5scOb7s0fhbvQ/N1gcZT1FkXI/VxnkzCXKZ3WHSL8CBIIjWn8NEjH7mYlJFh45L/lVtYDgPG+C5tUh4fPk/ea56i93yl3TZP2Qtv4Og9T9FLKRHdz8o/evZKmQY0gIiDBbOAHU7hnwvUARwhYArLKt7dc2LdGyNh8AJhkn++U/uF1FUxg/8noWvCUbs3pSqF4o7B4Yf+ONpsYv/w+b5C+4mQSij5YdSMvod5Hpp3xlSm87uzhm86cvbwqZ9S+d/EVk2HK8JB/TolLRzzj90n3y/1/qRGzAiKF7wdpJSrdVWLNx/Zyd6mERgYG8YFBh97cYLeaEr8KiVHq3Z4n3iERJExf5lCJsEtjv/RTCwKIkJk+L67cm/toW/WLxjVsXU4VgKQCVopxvvy47kGFJfrVnx4bNTgPnB+OMcLZw/VfqKbE15P+DjZ+iv+YB6/fWFqQrdYiUQMZ4Q8wkmKy7THvr866/oJsg/waESrtPLSh8ZK6rcA+++KfyEkQAnzHiE2/FBNQHRoYN+OMXcyC9Pyi0VCnpEESsjiMLNcdFhAQte211NzMwpLUUXhouFY1HhGnvukPvcHdAgIvf3GIqFAcPLHW8O+OUhDcQo/JM7o06ElfrswzZFaW3X4219fu/oV2YdwffzcHu1bEZvLa2Wx9MiQH2IFoAH/OnRm/YIxFg2wFsgpnmuA3mB6M/nYiW+v3etX94o0GPPL42f3TtlCvJCnH0fOBFGhV+XjDEI2yBRZV2WI2bQa+kIUyjArIh5/cUDPAZ/vIF4rsGufsBaRKhU4SAHIZ/Kzia0iggtLNSUa7bIfTjmqv31hoWaTnx0eGxWS/1Az5eRRsivZA2kAw57NSnN9ccYBONv1ia93a9sSbHKrD963fQvJ2ecnD+nX2ZIQgrgr9YZ9//5pzo3qBtBKHpC9eEV1puxBoTiGvAYaCvfdr/exBozu2Bq/nx7pDq1YZ3jyGyNWVh049ZfMc9RTK52Dwl9vEb/g7hniDZMoipb+mbhr8lCta/HBe6TxQd5/HjXzsU+3udgWYX6fOXPpmpQzG9RXaFCtwP7li1aGb1jl9ffEiBlh1qylUWGBV+/n9LN5UCRMLM9esFwmFUPLBa+DcPIfqtskr7UWdrqoW/LyicTNB9mNnsNkNh84/fOx769tXjAmJjKEBNYJz9VhV0BtSyBw/bUK+58ddeV+NvUwzIWxM+iJLKeCDf5xJBeokAaJ6SwAilhUViF25/lGOJNLyuJjoDBGs1mt02fD1M6GA0NHySQSXHK0D3LYOGHYGCKR010ZZof5Vrm2UqOr0uj0TjYSVVWi0Z395e6+ry4M7ds5IkRFKpWAU3COJ70AgA9KPn5+34kL52Nqe/vcoLyIlhHBf5/2p+77qn+ZSrNgpUoFMqZyxb9fBllBfTl4Yd4cu3F1gV5LYturQha0fnShxX4QnGUa2nTWrGXvpZzeVO66DXg7fMM/ndkASzW6B8neBFMHoUh4UHDPNrfnE2c80b0tPi/9WRlrGkQW3ZLW39WUkBAAhpMTuI6wE4pzyA2VHYRyeqM5v7js8R7t5o9+qnUEGACyMOxwAA/10gAY4moqq3A5+NsoOTV09mGBCuXqv1k1QL1gZYBKRswghogesoOybTSaYjetqdaAgNDL0+dqKy1L/RxnMJl770myDiptQb3ArGXvHzq9yeVeoGzR2xFONGCsscO610eg1kTTrgnormPZWY5L2Lt1gqIL+s0Nhllf8ovtYOKHl6Y/0SMOGTyII+UGJ+6wUdkYAWjAPRsNWBTyCEy2iZhw9diDI6DxyGSSgT07wJmDlDJ0RrQz2aMOPNUAFyHnxlmZtfbQNsNN7GcGtYz9bspMXCbsRy68KzZKlQZj9Pr3Klj6LMq5YVMH9LF7iMVgMsVuWF1ogFmvI9QGuKcBKyOcjAPmB8evnzuSuHlq3zX+/1rq0OO7qIdhPh8ybtiTPYTQr6E5FK4DrGHggm/oy8PXvquxvLcMkjS99Q/4xLXjeR5qwY3+1RMgw5Y8fyFIpy6GuVKQj3+OFMptXb+EwuEOnGOKSiu0FvFDVPuYCOK2IhGJTgyfbDmxHaMNcfDp+krqaEM7NBSiPjv63FW+8EQPcEB8fao+MhhNWKxMOHdUpzc6ZhCXH8jML6mweW2dzHLDJkRio+F9fKwBNpwe8Sp1MQy071/uZlIPQNsAwsiyPXZvph6GeTv6yaiad68LmO5x0V885XjzUvurolK17qff0gpK1O2u1F20TtckperKc1dTX6qKpUEWBudFLJr4TP+e7ZGFtmbOI1pHhlgFCehY4/fX0CNZFuuLuxjshJnwEweTbdOKVChRu0Da4RPxAz7uBWyo1OtjNq4ptUz0gS+GjBvYu4NKLhOJUAcIYxlo/T33bLbt4J+L7XDy5akOxScSYc2cTm+oqMQtBu9QqTfezy7SVumVUkmXti3kUqj3WioOFf16aq6mUi+TiLrHtVTI6c2xIHWFTKyUScSQM3IGTxsgrl3u4q3MAce2kRDCZwPHDOrbSSWXSiSo8AajuVxb1Sl5vbXvAyDN1GmL2kaHobTxiepjipzRcBoACd3LKuq+f7PtzF7KCENlig8Thi355VRhpQ6Mv21uIiSK/CVvkS6zJiTnWDS4LwEfriH0TfaoDZIO6nYsO8P57A5FZyZddT0qniRjMJqi1q2y9u4EMSMMlsh2PPni4sunSvSVapPBYc3j4ydHJQ7sJcXvaSNK71caQM5qk2FIh2XZi7+lDf4S/wZzXSgE4vQ5SyOClbjgPCWnGoCFjlzwTzw4FnClttBB1Ik8tvaeJAqpWBJ35XyO4MNRJReUaNp8tMb1FUaVUJI+d2l4oIr6PUncJeq1JugBZpb7LS1/xUdHT4bW9tuZIWLZvdmLQwOVPiv478CtzII+Bz5wRQlA/JmvLwsJUFC/L2m4XoBAEisp1x47d232ta9rVodMIOob2eLCjDnU7+dA8axKzHFsUVlFzx1JD53fAwgd3p6ExNFD+sIghAb5mAYdB6AvbFLx8Bf0QHcjLW/iN58azCYwlR89Pqxrm6h2rSNIz2c1wla3PwK5t9UA4rv2IHfokZ0w64OOn9Q+hIoYYaRceX7izJioELJWj2N8zu+hAbQioINEEzYIhxhUXOyD0ZdlR+JA//6rAQhcHI4xQwlRocDDokXc4nKNWqc3oh8RZqDFg82PCFahX27EhW2gAjPMfwGFr+9UwQRYSwAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/NewsletterIcon.d1de9ca4.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAVqSURBVHhe7d3PaxxlGMDxd7sbk4sK6kXEk15Spd4EdVMK/QMUTBOMN2nBgiCIULEkYkuLRRCKxR70Wkubinj30NK1ojehtfjrKJ70oJeuyRrzTN7dzu7OTmd29tm8P74faPNOkkOy+837zs7s7NbMmOYOnbluh037EWFpyX931o8tJFsllQ6LoKIzVmClwrJREVScSgVWKCwJanar80C7Vt9nP4V4tYrEdc+wmKWQ4Z5x5YZFVMiRG9fIsIgKBYyMKzMsokIJmXENhUVUGMNQXH1hERUq6Itrj/1IVKhEDkfZYaIXFlCFHOO0k1MiWQqZrTBByZLIjAUVNWYrKGgxY0GFhMVshUlrMmNBBWFBBWFBBWFBBWFBBWFBBWFBBWFBBWFBhZwr3LJjZ/16/qgd+efi9dtm9fOrdiseTod1X71hfjx3xDz28P32M376/c9/zJNHz9utODgdlsxUg1HJneS6rD+E2OJyNqxTrx4wb734rN0y5qOvvjftjU1z4nJypbfTbp49bJ549CG7dVdMcTm7877cnLejnaiOX7jqRVTi6Tc/y5xZZSbzeX+xDC8eFf672bEj/8USF4cbpiQ9g8UQF2FNwW9//JXsW8UUF2FNwfqNn5KPMcVFWFMWS1yEtQtiiIuwpmCjM/yoNvS4CEuZxHP6yg271S/kuAhrl4UaF2E5IMS4CMsRocVFWA4JKS7CckwocRGWg0KIi7Ac5XtchKVMglhbGu8FfXyOi7CmYHamYUfl+RoXYU2BPMVanmo9zsz19epSElOaD3E5+5x3ueG6N+gHX3xr3r/Ue0FeL7y7+LxZzQgpPfsUMRhV2odffmfWLl6zW25hxlIi5wfljh8koZT5l2dl/147co/3M9ZcY8bc/Piw3Zo82cepQmau1w4+Y7eqS8cms1/Vn0+L92Glv0+Da8vwz5+8bh5/ZOdNIFwOy/ul8FLrth1Nntxxru3bXbh2y47cFsTO+/HFF0yjPvm/EdeiEu8tL5h3Xn4uGbMUjsH3R4VafAmLR4VQQVhQQVhQQVhQQVhQQVhQQVhQEcRxLHlKSig6/23lPmOBA6QVFQ1r8CUlQ5D3+3KAFFHzfsaSt+H/Zft7QyEn1eX1VkdhKayIc4XZWAoRNcKCCsKCCsKCCsKCCsKCCsKCCsKCCu8PkM7WG+bWuSN2KwxPvfGpaXc27VY/jrxXFPNJ6O7b6GXhyDuiFsS5QrlgtSZnowOwtX1vnLryjd0axlJYESehs7EUImqEBRWEBRWEBRWEBRWEBRWEBRVBHMfiglX3cK7QQXm/LwdIETXvZywuWGUpLIVzhdlYChE1woIKwoIKwoIKwoIKwoIKwoIKwoIKwoIKwoIKwoIKwoIKwoIKwoIKwoIKwoIKwoIKwoIKL8Jq1Ot2hPoeP+YCL37KVxbm7Qgr+/fakducvZji5MoB8/ZLd68XlAsH5AqWmC0353sXmIi81yrdbc6GJdJX6qCfy1foCKeXQrnh5AZEP9ejEk7PWF1rS00zO9NIloKYya5Ae2PTnLjcsp9xlxdhwT8cx4IKwoIKwoIKwoIKwoIKwoIKwoIKwoIKwoIKwoIKwoIKwoIKwoIKwoIKwoIKwoKGloTl/tMR4R1mLKiQ9zgyc4fOyBvVNGUMVNS6s35sgRkLKpIZSzBrYQKS2UoGvbDEg4unf2jX6vvsJlDKdlS9nvqWwu2o/rZDoKy+owt9M5ZgScQYektg11BYgrhQwlBUIjMsQVwoIr1flTYyLEFcyDMqKpF7HMtOcZzywSBZ/nInpdwvdjFzISVzn2pQobCEjUsQWJwKBdVVOKwuAotOsitUJipROqwuAgtab7+6bFA7jPkfhOeiTbE4d/QAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/covid-icon.f0568cae.svg\";","module.exports = __webpack_public_path__ + \"static/media/wave.2565ac1d.svg\";","module.exports = __webpack_public_path__ + \"static/media/case_circle.8bb189d1.svg\";","module.exports = __webpack_public_path__ + \"static/media/file.6e807fa3.svg\";","module.exports = __webpack_public_path__ + \"static/media/links.cdf562bc.svg\";","module.exports = __webpack_public_path__ + \"static/media/user_circle.20552a33.svg\";","/* This file is used to assist in authenticating a user's login. */\r\nimport Cookies from 'universal-cookie';\r\nimport publicIp from 'public-ip';\r\nlet settings = fetch(\"/\");\r\n\r\nlet apiRef = \"https://api.tracsoft.com\";//Live\r\n//let apiRef = \"https://6352-46153.el-alt.com/\"; // Staging\r\n//let apiRef = \"https://localhost:44348\";//Local\r\nlet httpHost = \"\";\r\n\r\n/* Get the company name */\r\nexport async function getCompanyName() {\r\n const response = await fetch('Authentication/GetCompanyName', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n //console.log(\"CompanyName: \", data);\r\n return data;\r\n}\r\n\r\n/* Call API directly from JS. */\r\nexport async function callAPI(methodType, methodUrl, formData, isObj) {\r\n if (isObj == undefined) isObj = false;\r\n //Make an object from the form input\r\n var methodData = {};\r\n if (formData != null && !isObj) { //FormData is form\r\n for (var i = 0; i < formData.elements.length; i++) {\r\n if (formData.elements[i].name != \"submit\") {\r\n methodData[formData.elements[i].name] = formData.elements[i].value;\r\n }\r\n }\r\n\r\n //Request API call and get response\r\n const response = await fetch(methodUrl, {\r\n method: methodType,\r\n body: JSON.stringify(methodData),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n //console.info(response);\r\n const result = await response.text();\r\n const statusCode = await response.status;\r\n\r\n var responseObj = {\r\n result: result,\r\n statusCode: statusCode\r\n };\r\n\r\n return responseObj;\r\n }\r\n else if (formData != null && isObj) {//FormData is object\r\n //Request API call and get response\r\n const response = await fetch(methodUrl, {\r\n method: methodType,\r\n body: JSON.stringify(formData),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n //console.info(response);\r\n const result = await response.text();\r\n const statusCode = await response.status;\r\n\r\n var responseObj = {\r\n result: result,\r\n statusCode: statusCode\r\n };\r\n\r\n return responseObj;\r\n }\r\n else {\r\n //Request API call and get response\r\n const response = await fetch(methodUrl, {\r\n method: methodType,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const result = await response.text();\r\n const statusCode = await response.status;\r\n\r\n var responseObj = {\r\n result: result,\r\n statusCode: statusCode\r\n };\r\n\r\n return responseObj;\r\n }\r\n}\r\n\r\n/* Authenticate the login info and session of the user. */\r\nexport async function authenticateLogin(form) {\r\n var response = await callAPI(\"POST\", apiRef + \"/api/authentication/authenticate/\", form);\r\n if (response.statusCode == 200) {\r\n var isPasswordExp = await isPasswordExpired(response.result);\r\n if (isPasswordExp == true) {\r\n updateDisplayForm(\"login\", \"changePassword\");\r\n checkPasswordExpiration(response.result);\r\n }\r\n else {\r\n var shouldBypass = await bypassTwoFactor(response.result);\r\n if (!shouldBypass) {\r\n updateDisplayForm(\"login\", \"twoFactor\");\r\n sendTwoFactorCode(response.result);\r\n }\r\n }\r\n }\r\n else {\r\n var error = JSON.parse(response.result);\r\n document.getElementById(\"loginError\").innerHTML = error.message;\r\n //console.log(error.message);\r\n }\r\n}\r\n\r\n/* Check if the user's password is expired. */\r\nexport async function isPasswordExpired(userId) {\r\n var response = await callAPI(\"GET\", apiRef + \"/api/authentication/changePassword?userId=\" + userId, null);\r\n var statusCode = JSON.parse(response.statusCode);\r\n return ((statusCode == 200) ? false : true);\r\n}\r\n\r\n/* Check if password requires an update. */\r\nexport async function checkPasswordExpiration(userId) {\r\n var response = await callAPI(\"GET\", apiRef + \"/api/authentication/changePassword?userId=\" + userId, null);\r\n //console.log(\"checkPasswordExpiration\", response);\r\n\r\n document.getElementById(\"changePasswordUserId\").value = userId;\r\n\r\n if (response.statusCode == 200) {\r\n var shouldBypass = await bypassTwoFactor(response.result);\r\n if (!shouldBypass) {\r\n updateDisplayForm(\"changePassword\", \"twoFactor\");\r\n sendTwoFactorCode(userId);\r\n }\r\n }\r\n else {\r\n var error = JSON.parse(response.result);\r\n document.getElementById(\"changePasswordError\").innerHTML = error.message;\r\n }\r\n}\r\n\r\n/* Verify if password has been successfuly updated. */\r\nexport async function verifyPasswordUpdate(form) {\r\n var response = await callAPI(\"POST\", apiRef + \"/api/authentication/changePassword\", form);\r\n //console.log(\"verifyPasswordUpdate\", response);\r\n\r\n if (response.statusCode == 200) {\r\n var shouldBypass = await bypassTwoFactor(response.result);\r\n if (!shouldBypass) {\r\n updateDisplayForm(\"changePassword\", \"twoFactor\");\r\n sendTwoFactorCode(response.result);\r\n }\r\n }\r\n else {\r\n var error = JSON.parse(response.result);\r\n document.getElementById(\"changePasswordError\").innerHTML = error.message;\r\n }\r\n}\r\n\r\n/* Generate and send the two factor code to the user's phone. */\r\nexport async function sendTwoFactorCode(userId) {\r\n var response = await callAPI(\"GET\", apiRef + \"/api/authentication/twoFactor?userId=\" + userId, null);\r\n //console.log(\"sendTwoFactorCode\", response);\r\n\r\n document.getElementById(\"twoFactorUserId\").value = userId;\r\n\r\n if (response.statusCode == 200) {\r\n\r\n }\r\n else {\r\n var error = JSON.parse(response.result);\r\n document.getElementById(\"twoFactorError\").innerHTML = error.message;\r\n }\r\n}\r\n\r\n/* Resend the two factor code via user input. */\r\nexport function resendTwoFactorCode() {\r\n var userId = document.getElementById(\"twoFactorUserId\").value;\r\n sendTwoFactorCode(userId);\r\n}\r\n\r\n/* Verify the two factor code is correct. */\r\nexport async function verifyTwoFactorCode(form) {\r\n var response = await callAPI(\"POST\", apiRef + \"/api/authentication/twoFactor\", form);\r\n //console.log(\"verifyTwoFactorCode\", response);\r\n\r\n if (response.statusCode == 200) {\r\n //console.log(response);\r\n //console.info(response);\r\n createCookie(response.result);\r\n window.location.replace(httpHost + \"/adminhome\");\r\n }\r\n else {\r\n var error = JSON.parse(response.result);\r\n document.getElementById(\"twoFactorError\").innerHTML = error.message;\r\n }\r\n}\r\n\r\n/* Set cookie and redirect if the user can bypass the two factor authentication step. */\r\nexport async function bypassTwoFactor(userId) {\r\n const ipAddress = await publicIp.v4();\r\n var response = await callAPI(\"GET\", apiRef + \"/api/authentication/IsIpAllowedBypass?userId=\" + userId + \"&ipAddress=\" + ipAddress, null);\r\n\r\n var statusCode = JSON.parse(response.statusCode);\r\n if (statusCode == 200) {\r\n var sessionId = JSON.parse(response.result);\r\n createCookie(sessionId);\r\n window.location.replace(httpHost + \"/adminhome\");\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n return false;\r\n}\r\n\r\n/* Confirm email and send code to reset password. */\r\nexport async function forgotPasswordRequest(form) {\r\n var response = await callAPI(\"POST\", apiRef + \"/api/authentication/ForgotPasswordRequest\", form);\r\n\r\n if (response.statusCode == 200) {\r\n updateDisplayForm(\"forgotPasswordRequest\", \"forgotPasswordChange\");\r\n var email = JSON.parse(response.result);\r\n document.getElementById(\"forgotPasswordChangeEmail\").value = email;\r\n }\r\n else {\r\n var error = JSON.parse(response.result);\r\n document.getElementById(\"forgotPwRequestError\").innerHTML = error.message;\r\n }\r\n}\r\n\r\n/* Verify code and change password. */\r\nexport async function forgotPasswordChange(form) {\r\n //console.log(form);\r\n var response = await callAPI(\"POST\", apiRef + \"/api/authentication/ForgotPasswordChange\", form);\r\n\r\n if (response.statusCode == 200) {\r\n window.location.replace(\"/login\");\r\n }\r\n else {\r\n var error = JSON.parse(response.result);\r\n document.getElementById(\"forgotPwChangeError\").innerHTML = error.message;\r\n }\r\n}\r\n\r\n/* Confirm the new password matches the confirm password field. */\r\nexport function matchPassword(confirmPw) {\r\n if (confirmPw.value != document.getElementById('newPassword').value) {\r\n confirmPw.setCustomValidity('Passwords do not match');// Display error message\r\n } else {\r\n confirmPw.setCustomValidity(\"\");// Remove error message\r\n }\r\n}\r\n\r\nexport function matchNewPassword(confirmPw) {\r\n if (confirmPw.value != document.getElementById('forgotNewPassword').value) {\r\n confirmPw.setCustomValidity('Passwords do not match');// Display error message\r\n } else {\r\n confirmPw.setCustomValidity(\"\");// Remove error message\r\n }\r\n}\r\n\r\n/* Set the cookie with the session token as the value. */\r\nexport function createCookie(sessionToken) {\r\n var sessionId = (sessionToken.charAt(0) == \"\\\"\" && sessionToken.charAt(sessionToken.length - 1) == \"\\\"\") ? sessionToken.slice(1, -1) : sessionToken;\r\n\r\n var d = new Date();\r\n d.setTime(d.getTime() + (7 * (24 * 60 * 60 * 1000)))//90 Days -> (days * milliseconds per day)\r\n var expires = \"expires=\" + d.toUTCString();\r\n //document.cookie = \"AuthCookie=\" + sessionId + \";\" + expires + \";path=/\";\r\n const cookies = new Cookies();\r\n cookies.set(\"AuthCookie\", sessionId, expires);\r\n}\r\n\r\n/* Remove a login cookie */\r\nexport function removeLoginCookie() {\r\n const cookies = new Cookies();\r\n cookies.remove(\"AuthCookie\");\r\n}\r\n\r\n/* Hide/Show next form */\r\nexport function updateDisplayForm(hideForm, showForm) {\r\n for (let i = 0; i < document.getElementsByClassName(\"error-message\").length; i++) {\r\n document.getElementsByClassName(\"error-message\")[i].innerHTML = \"\";\r\n }\r\n document.getElementsByClassName(\"error-message\")\r\n document.getElementById(hideForm).children[0].reset();\r\n document.getElementById(hideForm).setAttribute(\"style\", \"display: none\");\r\n document.getElementById(showForm).children[0].reset();\r\n document.getElementById(showForm).setAttribute(\"style\", \"display: block\");\r\n}\r\n\r\n/* Check if a user is logged in */\r\nexport async function isUserLoggedIn() {\r\n const cookies = new Cookies();\r\n var sessionToken = cookies.get(\"AuthCookie\");\r\n var companyName = await getCompanyName();\r\n \r\n var response = await callAPI(\"GET\", apiRef + \"/api/authentication/getUserBySessionToken?sessionToken=\" + sessionToken + \"&company=\" + companyName, null);\r\n \r\n if (response.statusCode != 200 || response.result == null) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n}\r\n\r\n/* Return the logged in user */\r\nexport async function getLoggedInUser() {\r\n const cookies = new Cookies();\r\n var sessionToken = cookies.get(\"AuthCookie\");\r\n var companyName = await getCompanyName();\r\n\r\n var response = await callAPI(\"GET\", apiRef + \"/api/authentication/getUserBySessionToken?sessionToken=\" + sessionToken + \"&company=\" + companyName, null);\r\n\r\n if (response.statusCode != 200 || response.result == null) {\r\n return null;\r\n }\r\n else {\r\n return response.result;\r\n }\r\n}\r\n\r\n/* Return all companies */\r\nexport async function getAllCompanies() {\r\n var response = await callAPI(\"GET\", apiRef + \"/api/users/GetAllCompanies\", null);\r\n\r\n if (response.statusCode != 200 || response.result == null) {\r\n return [];\r\n }\r\n else {\r\n return response.result;\r\n }\r\n}\r\n\r\n/* Return all users associated with the company */\r\nexport async function getUsersByCompany(company) {\r\n var response = await callAPI(\"GET\", apiRef + \"/api/users/GetUsersByCompany?company=\" + company, null);\r\n\r\n if (response.statusCode != 200 || response.result == null) {\r\n return [];\r\n }\r\n else {\r\n return response.result;\r\n }\r\n}\r\n\r\n/* Return the user associated with the id and company */\r\nexport async function getUser(userId, companyName) {\r\n var response = await callAPI(\"GET\", apiRef + \"/api/users/GetUsers?id=\" + userId + \"&company=\" + companyName, null);\r\n\r\n if (response.statusCode != 200 || response.result == null) {\r\n return null;\r\n }\r\n else {\r\n return response.result;\r\n }\r\n}\r\n\r\n/* Get empty user */\r\nexport async function getEmptyUser() {\r\n var response = await callAPI(\"GET\", apiRef + \"/api/users/GetEmptyUser\", null);\r\n if (response.statusCode != 200 || response.result == null) {\r\n return null;\r\n }\r\n else {\r\n return response.result;\r\n }\r\n}\r\n\r\n/* Delete the user associated with the id and company */\r\nexport async function deleteUser(userId, companyName) {\r\n var response = await callAPI(\"DELETE\", apiRef + \"/api/users/DeleteUsers?id=\" + userId + \"&company=\" + companyName, null);\r\n\r\n return response.result;\r\n}\r\n\r\n/* Create new user */\r\nexport async function createUser(user) {\r\n var role = user.role;\r\n if (role != \"Admin\") {\r\n user.role = \"Level4\";\r\n }\r\n var response = await callAPI(\"POST\", apiRef + \"/api/users\", user, true);\r\n var responseResult = JSON.parse(response.result);\r\n //console.log(responseResult);\r\n var userId = responseResult.id;\r\n assignRoleToUser(userId, role);\r\n if (response.statusCode != 201) {\r\n let modelState = JSON.parse(response.result);\r\n var errors = \"\";\r\n for (const [key, value] of Object.entries(modelState)) {\r\n errors += key + \": \" + value[0] + \"\\n\";\r\n }\r\n return errors;\r\n }\r\n else {\r\n return \"Created\";\r\n }\r\n}\r\n\r\nasync function assignRoleToUser(user, role) {\r\n var roleData = {\r\n UserId: user,\r\n RoleName: role\r\n };\r\n const response = await fetch('RoleManagement/AssignRole', {\r\n method: 'POST',\r\n body: JSON.stringify(roleData),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n}\r\n\r\n/* Edit user without password validation */\r\nexport async function updateUserWithoutPwValidation(user) {\r\n var role = user.role;\r\n if (role != \"Admin\") {\r\n user.role = \"Level4\";\r\n }\r\n //console.log(user);\r\n //console.log(role);\r\n var response = await callAPI(\"PUT\", apiRef + \"/api/users/AdminEditUser\", user, true);\r\n if (response.statusCode != 204) {\r\n let modelState = JSON.parse(response.result);\r\n var errors = \"\";\r\n for (const [key, value] of Object.entries(modelState)) {\r\n errors += key + \": \" + value[0] + \"\\n\";\r\n }\r\n return errors;\r\n }\r\n else {\r\n assignRoleToUser(user.id, role);\r\n return \"Updated\";\r\n }\r\n}","export class AdminSettingsService {\r\n /* Check if form settings are initialized */\r\n async isFormInitialized() {\r\n const response = await fetch('AdminSettings/HasFormSettingsData', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n return data;\r\n }\r\n\r\n /* Return the version limit value */\r\n async getVersionLimit() {\r\n const response = await fetch('AdminSettings/GetVersionLimit', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n return data;\r\n }\r\n\r\n /* Check if document settings are initialized */\r\n async isDocumentInitialized() {\r\n const response = await fetch('AdminSettings/HasDocumentSettings', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n return data;\r\n }\r\n\r\n /* Check if event settings are initialized */\r\n async isEventInitialized() {\r\n const response = await fetch('AdminSettings/HasEventSettings', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n return data;\r\n }\r\n\r\n /* Check if blog settings are initialized */\r\n async isBlogInitialized() {\r\n const response = await fetch('AdminSettings/HasBlogSettings', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n return data;\r\n }\r\n\r\n /* Check if news settings are initialized */\r\n async isNewsInitialized() {\r\n const response = await fetch('AdminSettings/HasNewsSettings', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n return data;\r\n }\r\n\r\n /* Check if birthday settings are initialized */\r\n async isBirthdayInitialized() {\r\n const response = await fetch('AdminSettings/HasBirthdaySettings', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n return data;\r\n }\r\n}\r\n\r\nconst adminSettingsService = new AdminSettingsService();\r\nexport default adminSettingsService;","import React, { Component } from 'react';\r\nimport { removeLoginCookie, getLoggedInUser } from \"../../Authentication\";\r\nimport './admindashboard.css';\r\nimport '../../../../node_modules/bootstrap/dist/css/bootstrap.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faBars, faFile, faPaperclip, faObjectGroup, faPalette, faWarehouse, faTruckLoading, faBoxes, faLayerGroup, faAddressCard, faCog, faTools, faMapMarkedAlt, faFileAlt, faUsers, faFileUpload, faCalendarAlt, faBlog, faNewspaper, faBirthdayCake, faImage, faColumns } from '@fortawesome/free-solid-svg-icons';\r\nimport logo from '../../images/TracSoftLogo.png';\r\nimport adminSettingsService from '../AdminSettingsService';\r\nimport { User } from 'oidc-client';\r\n\r\nexport class AdminDashboard extends Component {\r\n static displayName = AdminDashboard.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isFormInitialized: false,\r\n isDocumentInitialized: false,\r\n isEventInitialized: false,\r\n isBlogInitialized: false,\r\n isNewsInitialized: false,\r\n isBirthdayInitialized: false,\r\n loggedInUser: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleLogOut = (e) => {\r\n e.preventDefault();\r\n removeLoginCookie();\r\n window.location = '/Login';\r\n }\r\n\r\n toggleSideNav = () => {\r\n var sideNav = document.getElementById(\"sideNav\");\r\n var sideNavStatus = sideNav.getAttribute(\"data-status\");\r\n var links = sideNav.getElementsByTagName(\"a\");\r\n var main = document.getElementById(\"main\");\r\n\r\n if (sideNavStatus == \"open\") {\r\n sideNav.style.width = \"75px\";\r\n main.style.marginLeft = \"75px\";\r\n for (var i = 0; i < links.length; i++) {\r\n links[i].style.visibility = \"hidden\";\r\n }\r\n sideNav.setAttribute(\"data-status\", \"close\");\r\n }\r\n else {\r\n sideNav.style.width = \"250px\";\r\n main.style.marginLeft = \"250px\";\r\n for (var i = 0; i < links.length; i++) {\r\n links[i].style.visibility = \"visible\";\r\n }\r\n sideNav.setAttribute(\"data-status\", \"open\");\r\n }\r\n }\r\n\r\n render() {\r\n let navbarParentUrl = this.props.navbarParentUrl;\r\n let loggedInUser = this.state.loggedInUser;\r\n\r\n let formPages;\r\n if (this.state.isFormInitialized) {\r\n formPages = Forms;\r\n }\r\n\r\n let documentPages;\r\n if (this.state.isDocumentInitialized) {\r\n documentPages = Documents;\r\n }\r\n\r\n let eventPages;\r\n if (this.state.isEventInitialized) {\r\n eventPages = Events;\r\n }\r\n\r\n let blogPages;\r\n if (this.state.isBlogInitialized) {\r\n blogPages = Blogs;\r\n }\r\n\r\n let newsPages;\r\n if (this.state.isNewsInitialized && loggedInUser.role == \"Admin\") {\r\n newsPages = Newsletter;\r\n }\r\n\r\n let birthdayPages;\r\n if (this.state.isBirthdayInitialized && loggedInUser.role == \"Admin\") {\r\n birthdayPages = Birthday;\r\n }\r\n\r\n let imageModule = Images;\r\n\r\n\r\n let tracSoftSettings = (loggedInUser != null && loggedInUser.role == \"Admin\" && loggedInUser.company == \"TracSoft\") ? : \"\";\r\n\r\n let settings;\r\n let siteInfo;\r\n let users;\r\n let roles;\r\n if (loggedInUser != null && (loggedInUser.role == \"Admin\")) {\r\n settings = ;\r\n siteInfo = Site Information;\r\n users = Users;\r\n roles = Roles;\r\n }\r\n\r\n let sideNavPages = Side Navs;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

TracSoft CMS

\r\n

\r\n\r\n

Log Out

\r\n\r\n {settings}\r\n {tracSoftSettings}\r\n
\r\n
\r\n \r\n Pages\r\n {sideNavPages}\r\n {imageModule}\r\n {formPages}\r\n {documentPages}\r\n {eventPages}\r\n {blogPages}\r\n {newsPages}\r\n {birthdayPages}\r\n {siteInfo}\r\n {users}\r\n {roles}\r\n
\r\n
\r\n
\r\n {this.props.component}\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let isFormInitialized = await adminSettingsService.isFormInitialized();\r\n let isDocumentInitialized = await adminSettingsService.isDocumentInitialized();\r\n let isEventInitialized = await adminSettingsService.isEventInitialized();\r\n let isBlogInitialized = await adminSettingsService.isBlogInitialized();\r\n let isNewsInitialized = await adminSettingsService.isNewsInitialized();\r\n let isBirthdayInitialized = await adminSettingsService.isBirthdayInitialized();\r\n\r\n let loggedInUser = await getLoggedInUser();\r\n if (loggedInUser != null) loggedInUser = JSON.parse(loggedInUser);\r\n\r\n this.setState({\r\n isFormInitialized: isFormInitialized,\r\n isDocumentInitialized: isDocumentInitialized,\r\n isEventInitialized: isEventInitialized,\r\n isBlogInitialized: isBlogInitialized,\r\n isNewsInitialized: isNewsInitialized,\r\n isBirthdayInitialized: isBirthdayInitialized,\r\n loggedInUser: loggedInUser\r\n });\r\n }\r\n}\r\n\r\nexport default AdminDashboard;\r\n","import React, { Component } from 'react';\r\nimport { Route, Redirect } from 'react-router-dom';\r\nimport { isUserLoggedIn, getLoggedInUser } from \"../Authentication\";\r\nimport AdminDashboard from '../Admin/AdminDashboard/AdminDashboard';\r\nimport adminSettingsService from '../Admin/AdminSettingsService';\r\n\r\nexport default class AuthorizeAdminRoute extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n ready: false,\r\n authenticated: false,\r\n isSiteInitialized: false,\r\n isFormInitialized: false,\r\n isDocumentInitialized: false,\r\n isNewsInitialized: false,\r\n isBirthdayInitialized: false,\r\n isEventInitialized: false,\r\n isBlogInitialized: false,\r\n isLayoutCompleted: false,\r\n loggedInUser: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.populateAuthentication();\r\n }\r\n\r\n render() {\r\n if (!this.state.ready) {\r\n return
;\r\n }\r\n else {\r\n const redirectUrl = '/login';\r\n const { component: Component, ...rest } = this.props;\r\n const navbarParentUrl = this.props.navbarParentUrl;\r\n\r\n return {\r\n if (this.state.authenticated && this.state.loggedInUser != null) {\r\n let path = props.match.path;\r\n // Initialization redirects\r\n if ((!this.state.isSiteInitialized && path != \"/Settings\") ||\r\n (this.props.requireForm == true && !this.state.isFormInitialized) ||\r\n (this.props.requireDocument == true && !this.state.isDocumentInitialized) ||\r\n (this.props.requireNews == true && !this.state.isNewsInitialized) ||\r\n (this.props.requireBirthday == true && !this.state.isBirthdayInitialized) ||\r\n (this.props.requireEvent == true && !this.state.isEventInitialized) ||\r\n (this.props.requireBlog == true && !this.state.isBlogInitialized)\r\n ) {\r\n return \r\n }\r\n else if (!this.state.isLayoutCompleted && path != \"/LayoutManagement\" && path != \"/Settings\") {\r\n return \r\n }\r\n else {\r\n // User role redirects\r\n let role = this.state.loggedInUser.role;\r\n let tsAdminUpPaths = [ // Paths only navigable by users with TracSoft Admin role and higher\r\n \"/TracSoftSettings\"\r\n ];\r\n let adminUpPaths = [ // Paths only navigable by users with Admin role and higher\r\n \"/Settings\",\r\n \"/CreateUser\",\r\n \"/UpdateUser/:userId\",\r\n \"/UserManagement\",\r\n \"/LayoutManagement\"\r\n ];\r\n\r\n //console.log(path);\r\n\r\n if ((role != \"Admin\" || this.state.loggedInUser.company != \"TracSoft\") && tsAdminUpPaths.includes(path)) {\r\n return \r\n }\r\n else if ((role != \"Admin\") && adminUpPaths.includes(path)) {\r\n return \r\n }\r\n \r\n return } navbarParentUrl={navbarParentUrl} /> // Continue path\r\n }\r\n } else {\r\n return \r\n }\r\n }}\r\n />\r\n }\r\n }\r\n\r\n async populateAuthentication() {\r\n const authenticated = await isUserLoggedIn();\r\n\r\n const initializationResponse = await fetch('AdminSettings/IsSiteInitialized', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const initializationData = await initializationResponse.json();\r\n\r\n const isFormInitialized = await adminSettingsService.isFormInitialized();\r\n const isDocumentInitialized = await adminSettingsService.isDocumentInitialized();\r\n const isNewsInitialized = await adminSettingsService.isNewsInitialized();\r\n const isBirthdayInitialized = await adminSettingsService.isBirthdayInitialized();\r\n const isEventInitialized = await adminSettingsService.isEventInitialized();\r\n const isBlogInitialized = await adminSettingsService.isBlogInitialized();\r\n\r\n const isLayoutCompletedResponse = await fetch('Admin/IsLayoutCompleted', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const isLayoutCompleted = await isLayoutCompletedResponse.json();\r\n\r\n let loggedInUser = await getLoggedInUser();\r\n if (loggedInUser != null) loggedInUser = JSON.parse(loggedInUser);\r\n\r\n this.setState({\r\n authenticated: authenticated,\r\n isSiteInitialized: initializationData,\r\n isFormInitialized: isFormInitialized,\r\n isDocumentInitialized: isDocumentInitialized,\r\n isNewsInitialized: isNewsInitialized,\r\n isBirthdayInitialized: isBirthdayInitialized,\r\n isEventInitialized: isEventInitialized,\r\n isBlogInitialized: isBlogInitialized,\r\n isLayoutCompleted: isLayoutCompleted,\r\n ready: true,\r\n loggedInUser: loggedInUser\r\n });\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { Route, Redirect } from 'react-router-dom';\r\nimport adminSettingsService from '../Admin/AdminSettingsService';\r\n\r\nexport default class AuthorizeUserRoute extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n ready: false,\r\n isEventInitialized: false,\r\n isBlogInitialized: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n if (!this.state.ready) {\r\n return
;\r\n }\r\n else {\r\n const { component: Component, ...rest } = this.props;\r\n\r\n return {\r\n \r\n if (this.props.requireEvent == true && !this.state.isEventInitialized) {\r\n return \r\n }\r\n else if (this.props.requireBlog == true && !this.state.isBlogInitialized) {\r\n return \r\n }\r\n else {\r\n return \r\n }\r\n }}\r\n />\r\n }\r\n }\r\n\r\n async getComponentData() {\r\n const isEventInitialized = await adminSettingsService.isEventInitialized();\r\n const isBlogInitialized = await adminSettingsService.isBlogInitialized();\r\n\r\n this.setState({\r\n isEventInitialized: isEventInitialized,\r\n isBlogInitialized: isBlogInitialized,\r\n ready: true\r\n });\r\n }\r\n}","import React, { Component } from 'react';\r\n\r\nexport class Layout extends Component {\r\n static displayName = Layout.name;\r\n\r\n render () {\r\n return (\r\n
\r\n {this.props.children}\r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { getCompanyName, getUsersByCompany, deleteUser } from '../../Authentication';\r\nimport { MDBDataTable } from 'mdbreact';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEdit, faTrashAlt, faCheck, faTimes, faEye } from '@fortawesome/free-solid-svg-icons';\r\nimport './rolemanagement.css';\r\n\r\nexport class RoleManagement extends Component {\r\n static displayName = RoleManagement.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n companyName: null,\r\n roles: [],\r\n newRole: null\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n this.setState({\r\n newRole: e.target.value\r\n });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n this.addRole();\r\n }\r\n\r\n render() {\r\n let companyName = this.state.companyName;\r\n let roles = this.state.roles;\r\n\r\n let tableRows = [];\r\n if (roles.length > 0) {\r\n let rolesArray = roles;\r\n for (var i = 0; i < rolesArray.length; i++) {\r\n let role = rolesArray[i];\r\n let row = {\r\n role: role.name\r\n };\r\n tableRows.push(row);\r\n }\r\n }\r\n\r\n let table = {\r\n columns: [\r\n { label: 'Role', field: 'role', sort: 'asc' }\r\n ],\r\n rows: tableRows\r\n };\r\n\r\n return (\r\n
\r\n
\r\n

{companyName} Role Management

\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n async addRole() {\r\n if (this.state.newRole == null || this.state.newRole == \"\" || this.state.newRole == undefined) {\r\n alert(\"Role can not be null.\");\r\n return;\r\n }\r\n\r\n var roles = this.state.roles;\r\n for (var i = 0; i < roles.length; i++) {\r\n if (roles[i].name == this.state.newRole) {\r\n alert(\"Role already exists.\");\r\n return;\r\n }\r\n }\r\n var roleData = {\r\n roleName: this.state.newRole\r\n };\r\n const response = await fetch('RoleManagement/AddRole', {\r\n method: 'POST',\r\n body: JSON.stringify(roleData),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n window.location.reload(false);\r\n }\r\n\r\n async getRoles() {\r\n const response = await fetch('RoleManagement/GetRoles', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n console.log(data);\r\n\r\n return data;\r\n }\r\n\r\n async getComponentData() {\r\n const companyName = await getCompanyName();\r\n const roles = await this.getRoles();\r\n\r\n this.setState({\r\n companyName: companyName,\r\n roles: roles\r\n });\r\n }\r\n}\r\n\r\nexport async function getRoles() {\r\n const response = await fetch('RoleManagement/GetRoles', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n console.log(data);\r\n\r\n return data;\r\n}\r\n\r\nexport async function getRolesByUserId(userId) {\r\n const response = await fetch('RoleManagement/GetRolesByUserId', {\r\n method: 'POST',\r\n body: userId,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n //console.log(data);\r\n\r\n return data;\r\n}\r\n\r\nexport default RoleManagement;","import React, { Component } from 'react';\r\nimport './pagecomponentmanagement.css';\r\nimport { MDBDataTable } from 'mdbreact';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEdit, faTrashAlt, faCheck, faTimes } from '@fortawesome/free-solid-svg-icons';\r\nimport { removeLoginCookie, getLoggedInUser } from \"../../Authentication\";\r\nimport { getRolesByUserId } from \"../RoleManagement/RoleManagement\";\r\n\r\nexport class PageComponentManagement extends Component {\r\n static displayName = PageComponentManagement.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n allPageComponentDatas: null,\r\n filteredPageComponentDatas: null,\r\n includeDeletedPages: false,\r\n loggedInUser: null,\r\n loggedInUserCMSRole: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n filterDeletedPages = (e) => {\r\n let includeDeletedPages = e.target.checked ? true : false;\r\n \r\n this.setState({\r\n includeDeletedPages: includeDeletedPages\r\n });\r\n }\r\n\r\n render() {\r\n let filteredPageComponents = this.state.filteredPageComponentDatas;\r\n\r\n let tableRows = [];\r\n if (filteredPageComponents != null) {\r\n for (var i = 0; i < filteredPageComponents.length; i++) {\r\n let pageComponent = filteredPageComponents[i];\r\n\r\n if (!this.state.includeDeletedPages && pageComponent.versionStatus == \"Deleted\") {\r\n continue;\r\n }\r\n\r\n let editComponent = pageComponent.isExternal ? \r\n :\r\n \r\n\r\n let row = {\r\n editComponent: editComponent,\r\n pageName: pageComponent.pageName,\r\n //pageOrder: pageComponent.pageOrder,\r\n pageMenu: pageComponent.pageMenuUrl == null ? \"\" : pageComponent.pageMenuUrl,\r\n childMenu: pageComponent.pageChildMenu == null ? \"\" : pageComponent.pageChildMenu,\r\n subMenu: pageComponent.pageSubMenu == null ? \"\" : pageComponent.pageSubMenu,\r\n pageUrl: pageComponent.pageUrl,\r\n versionStatus: pageComponent.versionStatus,\r\n allowNavigation: pageComponent.pageAllowNavigation == true ? : ,\r\n showOnMenu: pageComponent.pageShowOnMenu == true ? : ,\r\n //componentCount: pageComponent.componentCount\r\n isExternal: pageComponent.isExternal ? : \r\n };\r\n tableRows.push(row);\r\n }\r\n }\r\n\r\n let table = {\r\n columns: [\r\n { label: '', field: 'editComponent' },\r\n { label: Page Name, field: 'pageName', sort: 'asc' },\r\n //{ label: Order, field: 'pageOrder', sort: 'asc' },\r\n { label: Parent Menu, field: 'pageMenu', sort: 'asc' },\r\n { label: Child Menu, field: 'childMenu', sort: 'asc' },\r\n { label: Sub Menu, field: 'subMenu', sort: 'asc' },\r\n { label: Friendly URL, field: 'pageUrl', sort: 'asc' },\r\n { label: Version Status, field: 'versionStatus', sort: 'asc' },\r\n { label: Navigable, field: 'allowNavigation', sort: 'asc' },\r\n { label: On Menu, field: 'showOnMenu', sort: 'asc' },\r\n //{ label: Components, field: 'componentCount', sort: 'asc' }\r\n { label: Is External, field: 'isExternal', sort: 'asc' }\r\n ],\r\n rows: tableRows\r\n };\r\n\r\n let pageCreationBtns;\r\n if (this.state.loggedInUserCMSRole.includes(\"Admin\")) {\r\n pageCreationBtns = <>\r\n \r\n \r\n ;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

Page Component Management

\r\n \r\n
\r\n {pageCreationBtns}\r\n \r\n\r\n \r\n
\r\n Include Deleted: \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let loggedInUser = await getLoggedInUser();\r\n if (loggedInUser != null) loggedInUser = JSON.parse(loggedInUser);\r\n const response = await fetch('Admin/GetPagesAndComponentData?userId=' + loggedInUser.id, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n const loggedInUserCMSRole = await getRolesByUserId(loggedInUser.id);\r\n\r\n this.setState({\r\n allPageComponentDatas: data,\r\n filteredPageComponentDatas: data,\r\n loggedInUser: loggedInUser,\r\n loggedInUserCMSRole: loggedInUserCMSRole\r\n });\r\n }\r\n}","import React, { useState } from 'react';\r\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEllipsisV } from '@fortawesome/free-solid-svg-icons';\r\n\r\nfunction DnDPageOrder(props) {\r\n let currentPageId = props.currentPageId;\r\n\r\n const columnsFromBackend = {\r\n [uuid()]: {\r\n parentName: props.parentPageName,\r\n name: 'Menu Order:',\r\n items: props.pages \r\n }\r\n };\r\n\r\n const onDragEnd = (result, columns, setColumns) => {\r\n if (!result.destination) return;\r\n const { source, destination } = result;\r\n if (source.droppableId !== destination.droppableId) {//Between columns\r\n const sourceColumn = columns[source.droppableId];\r\n const destColumn = columns[destination.droppableId];\r\n const sourceItems = [...sourceColumn.items];\r\n const destItems = [...destColumn.items];\r\n const [removed] = sourceItems.splice(source.index, 1);\r\n destItems.splice(destination.index, 0, removed);\r\n setColumns({\r\n ...columns,\r\n [source.droppableId]: {\r\n ...sourceColumn,\r\n items: sourceItems\r\n },\r\n [destination.droppableId]: {\r\n ...destColumn,\r\n items: destItems\r\n }\r\n })\r\n }\r\n else {//Within column \r\n const column = columns[source.droppableId];\r\n const copiedItems = [...column.items];\r\n const [removed] = copiedItems.splice(source.index, 1);\r\n copiedItems.splice(destination.index, 0, removed);\r\n setColumns({\r\n ...columns,\r\n [source.droppableId]: {\r\n ...column,\r\n items: copiedItems\r\n }\r\n });\r\n\r\n props.pageOrderUpdate(copiedItems);\r\n }\r\n }\r\n\r\n const [columns, setColumns] = useState(columnsFromBackend);\r\n\r\n return (\r\n
\r\n onDragEnd(result, columns, setColumns)}>\r\n {Object.entries(columns).map(([id, column]) => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n {(provided, snapshot) => {\r\n return (\r\n \r\n {column.items.map((item, index) => {\r\n return (\r\n \r\n {(provided, snapshot) => {\r\n return (\r\n \r\n \r\n {item.content}\r\n
\r\n )\r\n }}\r\n \r\n )\r\n })}\r\n {provided.placeholder}\r\n
\r\n )\r\n }}\r\n \r\n
\r\n \r\n )\r\n })}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default DnDPageOrder;\r\n","import React, { Component } from 'react';\r\n\r\nexport class FakeDnDPageOrder extends Component {\r\n static displayName = FakeDnDPageOrder.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n pages: [],\r\n parentPageName: null,\r\n currentPageId: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n pages: this.props.pages,\r\n parentPageName: this.props.parentPageName,\r\n currentPageId: this.props.currentPageId\r\n });\r\n }\r\n\r\n render() {\r\n let columns = this.state.pages;\r\n let parentPageName = this.state.parentPageName;\r\n let currentPageId = this.state.currentPageId;\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {columns.map((item, index) => {\r\n return (\r\n
\r\n {item.content}\r\n
\r\n )\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default FakeDnDPageOrder;\r\n","import React, { Component } from 'react';\r\nimport './tagsandchips.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faTimesCircle } from '@fortawesome/free-solid-svg-icons';\r\n\r\n/* This version of tags allows user input in a textbox form. */\r\nexport class TagsByInput extends Component {\r\n static displayName = TagsByInput.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n tags: [], // [{id,tag}] *id is relevant only to this component\r\n isRequired: this.props.isRequired != undefined ? this.props.isRequired : false,\r\n allowDuplicates: this.props.allowDuplicates != undefined ? this.props.allowDuplicates : false,\r\n inputType: this.props.inputType != undefined ? this.props.inputType : 'text', // If chosen type restricts commas, tags will break\r\n allowDelete: this.props.allowDelete != undefined ? this.props.allowDelete : true\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n let tags = this.props.tags;// This should be a comma separated string\r\n if (tags != undefined && tags != \"\" && tags != null) {\r\n let tagArray = tags.split(',');\r\n let tagPairArray = [];\r\n for (var i = 0; i < tagArray.length; i++) {\r\n tagPairArray.push({ id: i, tag: tagArray[i] });\r\n }\r\n this.setState({\r\n tags: tagPairArray\r\n });\r\n }\r\n }\r\n\r\n /* Send data back to parent component */\r\n updateParentComponent() {\r\n let tagOnlyArray = [];\r\n for (var i = 0; i < this.state.tags.length; i++) {\r\n tagOnlyArray.push(this.state.tags[i].tag);\r\n }\r\n\r\n let tagString = tagOnlyArray.join();\r\n let nameValuePair = { name: this.props.name, value: tagString };\r\n let fakeEvent = { target: nameValuePair };\r\n this.props.tagUpdate(fakeEvent);\r\n }\r\n\r\n /* Get the largest current tag id and return one larger */\r\n getNextTagId() {\r\n let currentTags = this.state.tags;\r\n let largestId = 0;\r\n for (var i = 0; i < currentTags.length; i++) {\r\n if (currentTags[i].id > largestId) largestId = currentTags[i].id;\r\n }\r\n return largestId + 1;\r\n }\r\n\r\n /* Convert input text to tags */\r\n handleChange = (e) => {\r\n let inputValue = e.target.value;\r\n let lastChar = inputValue.charAt(inputValue.length - 1);\r\n if (lastChar == ',') {\r\n let value = inputValue.slice(0, -1);\r\n document.getElementById('tagInput').value = \"\";// Reset the tag input field\r\n if (this.state.allowDuplicates) {\r\n let newTags = this.state.tags;\r\n newTags.push({ id: this.getNextTagId(), tag: value });\r\n\r\n this.setState({\r\n tags: newTags\r\n });\r\n\r\n this.updateParentComponent();// Send data back to parent component\r\n }\r\n else {\r\n if (!this.isTagExisting(value)) { // Check if the tag already exists\r\n let newTags = this.state.tags;\r\n newTags.push({ id: this.getNextTagId(), tag: value });\r\n\r\n this.setState({\r\n tags: newTags\r\n });\r\n\r\n this.updateParentComponent();// Send data back to parent component\r\n }\r\n else {\r\n alert('Tag already exists');\r\n }\r\n }\r\n }\r\n }\r\n\r\n /* Return true if a tag is already in the array, otherwise return false. Check by tag value (not id) */\r\n isTagExisting(tag) {\r\n let currentTags = this.state.tags;\r\n let isExisting = false;\r\n for (var i = 0; i < currentTags.length; i++) {\r\n if (currentTags[i].tag == tag) {\r\n isExisting = true;\r\n break;\r\n }\r\n }\r\n return isExisting;\r\n }\r\n\r\n /* Remove tag from array */\r\n removeTag = (tagId) => {\r\n let tag;\r\n let currentTags = this.state.tags;\r\n for (var i = 0; i < currentTags.length; i++) {\r\n if (currentTags[i].id == tagId) {\r\n tag = currentTags[i].tag;\r\n currentTags.splice(i, 1);\r\n }\r\n }\r\n this.setState({ tags: currentTags });\r\n\r\n this.updateParentComponent();// Send data back to parent component\r\n\r\n // Optional removal event\r\n if (this.props.onTagRemoval != undefined) { \r\n this.props.onTagRemoval(tag);\r\n }\r\n }\r\n\r\n render() {\r\n let tagValues = this.state.tags;\r\n let tagIcons = [];\r\n for (var i = 0; i < tagValues.length; i++) {\r\n if (this.state.allowDelete) {\r\n tagIcons.push(
{tagValues[i].tag}
);\r\n }\r\n else {\r\n tagIcons.push(
{tagValues[i].tag}
);\r\n }\r\n }\r\n\r\n let isRequired = (this.state.isRequired && this.state.tags.length < 1) ? true : false;\r\n let inputType = this.state.inputType;\r\n let tagInput = ;\r\n\r\n return (\r\n
\r\n {tagInput}\r\n
\r\n {tagIcons}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default TagsByInput;","import React, { Component } from 'react';\r\nimport './pageform.css';\r\nimport DnDPageOrder from './DnDPageOrder';\r\nimport FakeDnDPageOrder from './FakeDnDPageOrder';\r\nimport TagsByInput from '../TagsAndChips/TagsByInput';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons';\r\n\r\nimport { getLoggedInUser } from \"../../Authentication\";\r\n\r\n// Roles\r\nimport { getRoles, getRolesByUserId } from \"../RoleManagement/RoleManagement\";\r\n\r\n/* The form component to add/edit pages */\r\nexport class PageForm extends Component {\r\n static displayName = PageForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n page: null,\r\n formType: null,\r\n mainMenuOptions: null,\r\n hasSubPages: false,\r\n childMenuOptions: null,\r\n subMenuOptions: null,\r\n hasMenuChildPages: false,\r\n menuSiblingPages: null,\r\n sideNavs: [],\r\n resetOrderDnD: false,\r\n parentPage: null,\r\n loggedInUser: null,\r\n isExternal: false,\r\n roles: null,\r\n currentRoles: null\r\n };\r\n\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n /* Manage page field value changes. */\r\n handleChange = (e) => {\r\n console.log(e.target);\r\n if (e.target.name == \"roleId\") {\r\n e.target.value = parseInt(e.target.value);\r\n }\r\n let newPage = this.state.page;\r\n if (e.target.name === \"display\" || e.target.name === \"showOnMenu\" || e.target.name == \"allowNavigation\") {\r\n newPage[e.target.name] = e.target.checked ? true : false;\r\n }\r\n else if (e.target.name == \"sideNavId\") {\r\n newPage[e.target.name] = parseInt(e.target.value);\r\n }\r\n else {\r\n newPage[e.target.name] = e.target.value;\r\n }\r\n\r\n //Update cascading menu fields\r\n if (e.target.name == \"menu\") {\r\n newPage['childMenu'] = null;\r\n newPage['subMenu'] = null;\r\n if (document.getElementById('childMenu') != null) document.getElementById('childMenu').value = \"\";\r\n if (document.getElementById('subMenu') != null) document.getElementById('subMenu').value = \"\";\r\n\r\n let hasLandingPage = this.hasLandingPageInMenu(e.target.value, null, null);\r\n if (hasLandingPage) newPage['showOnMenu'] = false;\r\n }\r\n else if (e.target.name == \"childMenu\") {\r\n newPage['subMenu'] = null;\r\n if (document.getElementById('subMenu') != null) document.getElementById('subMenu').value = \"\";\r\n\r\n let hasLandingPage = this.hasLandingPageInMenu(null, e.target.value, null);\r\n if (hasLandingPage) newPage['showOnMenu'] = false;\r\n }\r\n else if (e.target.name == \"subMenu\") {\r\n let hasLandingPage = this.hasLandingPageInMenu(null, null, e.target.value);\r\n if (hasLandingPage) newPage['showOnMenu'] = false;\r\n }\r\n\r\n if (newPage['showOnMenu'] == false && newPage['friendlyUrl'] != \"/\") newPage['order'] = null;\r\n\r\n this.setState({ page: newPage });\r\n\r\n if (e.target.name == \"menu\") {\r\n let pageId = (e.target.value != null && e.target.value != \"\") ? e.target.value : 0;\r\n this.getChildMenuOptions(pageId);\r\n }\r\n else if (e.target.name == \"childMenu\") {\r\n let pageId = (e.target.value != null && e.target.value != \"\") ? e.target.value : 0;\r\n this.getSubMenuOptions(pageId);\r\n }\r\n\r\n if (e.target.name == \"menu\" || e.target.name == \"childMenu\" || e.target.name == \"subMenu\" || e.target.name === \"showOnMenu\") {\r\n this.getMenuSiblingPages();\r\n }\r\n }\r\n\r\n /* Update the order of the components on the page */\r\n pageOrderUpdate = (pageArray) => {\r\n this.setState({ menuSiblingPages: pageArray });\r\n }\r\n\r\n async handleSubmit(e) {\r\n e.preventDefault();\r\n \r\n let page = this.state.page;\r\n\r\n //Update values for db\r\n if (page.menu == \"\") page.menu = null;\r\n if (page.childMenu == \"\") page.childMenu = null;\r\n if (page.subMenu == \"\") page.subMenu = null;\r\n if (this.state.isExternal) page.isExternal = true;\r\n if (page.sideNav == \"\" || page.sideNav == null) page.sideNav = 0;\r\n\r\n let url = this.state.formType == \"Update\" ? \"UpdatePage\" : \"CreatePage\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(page),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n async data => {\r\n if (!isNaN(data)) {\r\n if (this.state.formType == \"Create\") {\r\n //Add version log \r\n let loggedInUser = JSON.parse(await getLoggedInUser());\r\n let versionAction = \"Created draft V1\";\r\n const versionResponse = await fetch('Version/AddVersionLog?email=' + loggedInUser.email + \"&action=\" + versionAction + \"&pageId=\" + parseInt(data), {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n }\r\n\r\n if (page.showOnMenu && this.state.menuSiblingPages.length > 0) {\r\n let orderedPageIds = [];\r\n for (var i = 0; i < this.state.menuSiblingPages.length; i++) {\r\n if (this.state.menuSiblingPages[i].id == \"new\") {\r\n orderedPageIds.push(parseInt(data));\r\n } else {\r\n orderedPageIds.push(parseInt(this.state.menuSiblingPages[i].id));\r\n }\r\n }\r\n\r\n fetch('Admin/UpdatePageOrder', {\r\n method: 'POST',\r\n body: JSON.stringify({ 'orderedPageIds': orderedPageIds }),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n pageOrderResponse => pageOrderResponse.json()\r\n ).then(\r\n pageOrderData => {\r\n if (this.state.formType == \"Update\") {\r\n alert(\"Page Updated\");\r\n this.props.onPageSaved();\r\n }\r\n else {\r\n window.location = '/PageComponentManagement';\r\n }\r\n }\r\n );\r\n }\r\n else {\r\n if (this.state.formType == \"Update\") {\r\n alert(\"Page Updated\");\r\n this.props.onPageSaved();\r\n }\r\n else {\r\n window.location = '/PageComponentManagement';\r\n }\r\n }\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n /* Limit the url key input. */\r\n validateUrlInput = (e) => {\r\n if ((e.which !== 32) //Space\r\n && ((e.which >= 37 && e.which <= 40) //Arrow keys\r\n || (e.key === \"Backspace\")\r\n || (e.key === \"-\")\r\n || (e.key >= 0 && e.key <= 9)\r\n || (e.key >= \"a\" && e.key <= \"z\"))) {\r\n //allow input\r\n }\r\n else {\r\n e.preventDefault();\r\n return false;\r\n }\r\n }\r\n\r\n /* Convert the page name into a url */\r\n autoGenerateUrl = (e) => {\r\n if (this.state.page != null && this.state.page.name != null && (this.state.page.friendlyUrl == null || this.state.page.friendlyUrl == \"\")) {\r\n let pageName = this.state.page['name'];\r\n let recommendedUrl = \"\";\r\n\r\n for (var i = 0; i < pageName.length; i++) {\r\n let char = pageName.charAt(i);\r\n if (char.match(/[a-z]/i)) {\r\n recommendedUrl += char.toLowerCase();\r\n }\r\n else if (char.match(/[0-9]/i)) {\r\n recommendedUrl += char;\r\n }\r\n }\r\n\r\n let newPage = this.state.page;\r\n newPage['friendlyUrl'] = recommendedUrl;\r\n document.getElementById('friendlyUrl').value = recommendedUrl;// Helps to update the display even if the state has changed\r\n this.setState({ page: newPage });\r\n }\r\n }\r\n\r\n async getChildMenuOptions(pageId) {\r\n const response = await fetch('Admin/GetAllChildMenuOptions?pageId=' + pageId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n\r\n this.setState({\r\n childMenuOptions: data\r\n });\r\n }\r\n\r\n async getSubMenuOptions(pageId) {\r\n const response = await fetch('Admin/GetAllSubMenuOptions?pageId=' + pageId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n\r\n this.setState({\r\n subMenuOptions: data\r\n });\r\n }\r\n\r\n /* Return true if one of the selected menus are considered landing pages. */\r\n hasLandingPageInMenu(parentMenuId, childMenuId, subMenuId) {\r\n let hasLandingPage = false;\r\n\r\n // Check parent menu\r\n if (parentMenuId != null && this.state.mainMenuOptions != null) {\r\n for (var i = 0; i < this.state.mainMenuOptions.length; i++) {\r\n if (parentMenuId == this.state.mainMenuOptions[i].id && this.state.mainMenuOptions[i].showOnMenu == false) {\r\n hasLandingPage = true;\r\n }\r\n }\r\n }\r\n \r\n // Check child menu\r\n if (childMenuId != null && this.state.childMenuOptions != null) {\r\n for (var i = 0; i < this.state.childMenuOptions.length; i++) {\r\n if (childMenuId == this.state.childMenuOptions[i].id && this.state.childMenuOptions[i].showOnMenu == false) {\r\n hasLandingPage = true;\r\n }\r\n }\r\n }\r\n\r\n // Check sub menu\r\n if (subMenuId != null && this.state.subMenuOptions != null) {\r\n for (var i = 0; i < this.state.subMenuOptions.length; i++) {\r\n if (subMenuId == this.state.subMenuOptions[i].id && this.state.subMenuOptions[i].showOnMenu == false) {\r\n hasLandingPage = true;\r\n }\r\n }\r\n }\r\n \r\n return hasLandingPage;\r\n }\r\n\r\n /* Get the sibling pages from the menu */\r\n async getMenuSiblingPages() {\r\n let parentMenuId = this.state.page.menu == \"\" ? null : this.state.page.menu;\r\n let childMenuId = this.state.page.childMenu == \"\" ? null : this.state.page.childMenu;\r\n let subMenuId = this.state.page.subMenu == \"\" ? null : this.state.page.subMenu;\r\n\r\n //Get sibling pages\r\n const response = await fetch('Admin/GetMenuSiblingPages', {\r\n method: 'POST',\r\n body: JSON.stringify({ 'parentMenuId': parentMenuId, 'childMenuId': childMenuId, 'subMenuId': subMenuId }),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n\r\n let menuSiblingPages = [];\r\n for (var i = 0; i < data.length; i++) {\r\n if (data[i].status != \"Deleted\") {\r\n menuSiblingPages.push({ id: data[i].id.toString(), content: data[i].name });\r\n }\r\n }\r\n\r\n if (this.state.formType == 'Create') {\r\n menuSiblingPages.push({ id: 'new', content: 'NEW PAGE' });\r\n }\r\n else {\r\n let isCurrentPageInPages = false;\r\n for (var i = 0; i < menuSiblingPages.length; i++) {\r\n if (menuSiblingPages[i].id == this.state.page.id) {\r\n isCurrentPageInPages = true;\r\n break;\r\n }\r\n }\r\n if (!isCurrentPageInPages) {\r\n menuSiblingPages.push({ id: this.state.page.id.toString(), content: this.state.page.name });\r\n }\r\n }\r\n\r\n //Get the closest parent page\r\n let parentPage = null;\r\n if (parentMenuId != null && childMenuId == null && subMenuId == null && this.state.mainMenuOptions != null) {\r\n for (var i = 0; i < this.state.mainMenuOptions.length; i++) {\r\n if (this.state.mainMenuOptions[i].id == parentMenuId) parentPage = this.state.mainMenuOptions[i];\r\n }\r\n }\r\n else if (parentMenuId != null && childMenuId != null && subMenuId == null && this.state.childMenuOptions != null) {\r\n for (var i = 0; i < this.state.childMenuOptions.length; i++) {\r\n if (this.state.childMenuOptions[i].id == childMenuId) parentPage = this.state.childMenuOptions[i];\r\n }\r\n }\r\n else if (parentMenuId != null && childMenuId != null && subMenuId != null && this.state.subMenuOptions != null) {\r\n for (var i = 0; i < this.state.subMenuOptions.length; i++) {\r\n if (this.state.subMenuOptions[i].id == subMenuId) parentPage = this.state.subMenuOptions[i];\r\n }\r\n }\r\n\r\n //Update the state\r\n this.setState({\r\n resetOrderDnD: true\r\n });\r\n\r\n this.setState({\r\n menuSiblingPages: menuSiblingPages,\r\n parentPage: parentPage,\r\n resetOrderDnD: false\r\n });\r\n }\r\n\r\n render() {\r\n let name = null;\r\n let menu = null;\r\n let display = false;\r\n let showOnMenu = true;\r\n let allowNavigation = true;\r\n let order = null;\r\n let friendlyUrl = null;\r\n let menuOptions = [];\r\n let childMenu = null;\r\n let childMenuOptions = [];\r\n let subMenu = null;\r\n let subMenuOptions = [];\r\n let parentMenuName;\r\n let childMenuName;\r\n let subMenuName;\r\n let seoTitle;\r\n let seoMetaDescription;\r\n let seoMetaKeywords;\r\n let allowDelete = false;\r\n let openType;\r\n let sideNavId;\r\n let roleId;\r\n\r\n let isPageDataSet = false;\r\n if (this.state.page != null) {\r\n let page = this.state.page;\r\n name = page.name;\r\n menu = page.menu;\r\n display = page.display;\r\n showOnMenu = page.showOnMenu;\r\n allowNavigation = page.allowNavigation;\r\n order = page.order;\r\n friendlyUrl = page.friendlyUrl;\r\n childMenu = page.childMenu;\r\n subMenu = page.subMenu;\r\n seoTitle = page.scoTitle;\r\n seoMetaDescription = page.scoMetaDescription;\r\n seoMetaKeywords = page.scoMetaKeywords;\r\n allowDelete = page.allowDelete;\r\n openType = page.openType;\r\n sideNavId = page.sideNavId;\r\n roleId = page.roleId;\r\n\r\n isPageDataSet = true;\r\n }\r\n\r\n let pageNameField = allowDelete ?\r\n :\r\n ;\r\n\r\n let friendlyUrlField = allowDelete ?\r\n :\r\n ;\r\n\r\n //Set all parent menu options\r\n if (this.state.currentRoles != null) {\r\n if (this.state.currentRoles.includes(\"Admin\")) {\r\n menuOptions.push();\r\n if (this.state.mainMenuOptions != null) {\r\n for (var i = 0; i < this.state.mainMenuOptions.length; i++) {\r\n if (this.state.mainMenuOptions[i].id == this.props.pageId) continue;\r\n if (this.state.mainMenuOptions[i].isExternal) continue;\r\n\r\n let menuKey = \"menu\" + (i + 1);\r\n menuOptions.push();\r\n\r\n if (this.state.mainMenuOptions[i].id == menu) parentMenuName = this.state.mainMenuOptions[i].friendlyUrl;\r\n }\r\n }\r\n }\r\n else {\r\n if (this.state.mainMenuOptions != null) {\r\n menuOptions.push();\r\n for (var i = 0; i < this.state.mainMenuOptions.length; i++) {\r\n console.log(this.state.mainMenuOptions[i]);\r\n let menuKey = \"menu\" + (i + 1);\r\n menuOptions.push();\r\n if (this.state.mainMenuOptions[i].id == menu) parentMenuName = this.state.mainMenuOptions[i].friendlyUrl;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.state.currentRoles != null) {\r\n //Set all child menu options\r\n if (this.state.currentRoles.includes(\"Admin\")) {\r\n childMenuOptions.push();\r\n if (this.state.childMenuOptions != null) {\r\n for (var i = 0; i < this.state.childMenuOptions.length; i++) {\r\n if (this.state.childMenuOptions[i].id == this.props.pageId) continue;\r\n if (this.state.childMenuOptions[i].isExternal) continue;\r\n\r\n let childMenuKey = \"childOpt\" + (i + 1);\r\n childMenuOptions.push();\r\n\r\n if (this.state.childMenuOptions[i].id == childMenu) childMenuName = this.state.childMenuOptions[i].friendlyUrl;\r\n }\r\n }\r\n }\r\n else {\r\n childMenuOptions.push();\r\n if (this.state.childMenuOptions != null) {\r\n for (var i = 0; i < this.state.childMenuOptions.length; i++) {\r\n //if (!this.state.currentRoles.includes(this.state.childMenuOptions[i].name)) continue;\r\n\r\n let childMenuKey = \"childOpt\" + (i + 1);\r\n childMenuOptions.push();\r\n\r\n if (this.state.childMenuOptions[i].id == childMenu) childMenuName = this.state.childMenuOptions[i].friendlyUrl;\r\n }\r\n }\r\n }\r\n }\r\n \r\n //Set all sub menu options\r\n subMenuOptions.push();\r\n if (this.state.subMenuOptions != null) {\r\n for (var i = 0; i < this.state.subMenuOptions.length; i++) {\r\n if (this.state.subMenuOptions[i].id == this.props.pageId) continue;\r\n if (this.state.subMenuOptions[i].isExternal) continue;\r\n\r\n let subMenuKey = \"subOpt\" + (i + 1);\r\n subMenuOptions.push();\r\n\r\n if (this.state.subMenuOptions[i].id == subMenu) subMenuName = this.state.subMenuOptions[i].friendlyUrl;\r\n }\r\n }\r\n\r\n let parentMenuDDL = (this.state.hasSubPages || !allowDelete) ?\r\n :\r\n \r\n\r\n let childMenuDDL = (this.state.hasSubPages || !allowDelete) ?\r\n :\r\n ;\r\n let childMenuField;\r\n if ((menu != null && menu != \"\" && menu != undefined) && this.state.childMenuOptions != null) {\r\n childMenuField = <>\r\n \r\n {childMenuDDL}\r\n
\r\n ;\r\n }\r\n\r\n let subMenuDDL = (this.state.hasSubPages || !allowDelete) ?\r\n :\r\n ;\r\n let subMenuField;\r\n if ((menu != null && menu != \"\" && menu != undefined) && (childMenu != null && childMenu != \"\" && childMenu != undefined) && (this.state.childMenuOptions != null && this.state.subMenuOptions != null)) {\r\n subMenuField = <>\r\n \r\n {subMenuDDL}\r\n
\r\n ;\r\n }\r\n\r\n let showOnMenuInput = (this.hasLandingPageInMenu(menu, childMenu, subMenu) || this.state.hasMenuChildPages || !allowDelete) ?\r\n :\r\n ;\r\n\r\n let allowNavigationCheckbox = (!this.state.hasSubPages || !allowDelete) ?\r\n :\r\n ;\r\n\r\n let fullUrl = (friendlyUrl == \"/\") ? window.location.hostname : window.location.hostname + \"/\";\r\n if (menu != null && menu != \"\" && menu != undefined && parentMenuName != undefined) fullUrl += parentMenuName + \"/\";\r\n if (childMenu != null && childMenu != \"\" && childMenu != undefined && childMenuName != undefined) fullUrl += childMenuName + \"/\";\r\n if (subMenu != null && subMenu != \"\" && subMenu != undefined && subMenuName != undefined) fullUrl += subMenuName + \"/\";\r\n if (friendlyUrl != null && friendlyUrl != \"\" && friendlyUrl != undefined) fullUrl += friendlyUrl;\r\n\r\n let dndPageOrder;\r\n if (this.state.menuSiblingPages != null) {\r\n let parentPageName = this.state.parentPage != null ? this.state.parentPage.name : \"Main\";\r\n let currentPageId = this.state.page != null ? this.state.page.id : 0;\r\n\r\n if ((this.state.formType == 'Update' && this.state.loggedInUser != null && this.state.loggedInUser.role != 'Admin') || (this.state.formType == \"Create\" && !this.state.currentRoles.includes(\"Admin\"))) {\r\n dndPageOrder = showOnMenu ?\r\n :\r\n ;\r\n } else {\r\n dndPageOrder = showOnMenu ?\r\n :\r\n ;//Only applicable to menu pages\r\n }\r\n if (this.state.resetOrderDnD) dndPageOrder = \"\";\r\n }\r\n\r\n let allowDeleteTag = (this.state.formType == 'Update' && this.state.loggedInUser != null && this.state.loggedInUser.role != 'Admin') ? false : true;\r\n let seoMetaKeywordsInput = isPageDataSet ?\r\n : \"\";\r\n\r\n let seoTitleCharCount = seoTitle != undefined ? seoTitle.length : 0;\r\n let seoTitleCharCounter = 60) ? 'char-counter bad-count' : 'char-counter good-count' }>{seoTitleCharCount};\r\n\r\n let seoDescriptionCharCount = seoMetaDescription != undefined ? seoMetaDescription.length : 0;\r\n let seoDescriptionCharCounter = 160) ? 'char-counter bad-count' : 'char-counter good-count'}>{seoDescriptionCharCount};\r\n\r\n let tempSeoKeywordArray = (seoMetaKeywords != undefined && seoMetaKeywords != null && seoMetaKeywords != \"\") ? seoMetaKeywords.split(',') : [];\r\n //console.log(tempSeoKeywordArray);\r\n let seoKeywordCount = tempSeoKeywordArray.length;\r\n let seoKeywordCounter = 2) ? 'char-counter bad-count' : 'char-counter good-count'}>{seoKeywordCount};\r\n\r\n let statusBtn;\r\n let formBtnBuffer;\r\n if (this.state.formType == 'Update' && this.state.loggedInUser != null && this.state.loggedInUser.role == 'Admin' && this.state.page != null) {\r\n if (this.state.page.status == \"Deleted\") {\r\n statusBtn = ;\r\n }\r\n else {\r\n statusBtn = ;\r\n }\r\n formBtnBuffer =
\r\n }\r\n\r\n let allowNavigationField = !this.state.isExternal ?\r\n <>\r\n \r\n
\r\n {allowNavigationCheckbox}\r\n
\r\n
\r\n : \"\";\r\n\r\n let seoFields = !this.state.isExternal ?\r\n <>\r\n \r\n \r\n
\r\n {seoTitleCharCounter}\r\n \r\n
\r\n\r\n \r\n \r\n
\r\n {seoDescriptionCharCounter}\r\n \r\n
\r\n\r\n \r\n {seoMetaKeywordsInput}\r\n
\r\n {seoKeywordCounter}\r\n \r\n
\r\n : \"\";\r\n\r\n let roleOptions;\r\n if (this.state.roles != null) {\r\n let roles = this.state.roles;\r\n roles = roles.filter((role) => {\r\n return role.name != \"Admin\";\r\n });\r\n roleOptions = roles.map((role) =>\r\n \r\n );\r\n }\r\n\r\n let roleFields = !this.state.isExternal ?\r\n <>\r\n \r\n \r\n
\r\n : \"\";\r\n\r\n let openTypeField = this.state.isExternal ?\r\n <>\r\n \r\n \r\n
\r\n : \"\";\r\n\r\n let fullUrlField = !this.state.isExternal ?\r\n <>\r\n \r\n

{fullUrl}

\r\n
\r\n : \"\";\r\n\r\n let sideNavOpts = [];\r\n if (this.state.sideNavs.length > 0) {\r\n for (var i = 0; i < this.state.sideNavs.length; i++) {\r\n let sideNav = this.state.sideNavs[i];\r\n let sideNavKey = \"sideNav\" + sideNav.id;\r\n\r\n sideNavOpts.push();\r\n }\r\n }\r\n let sideNavField = !this.state.isExternal ? <>\r\n \r\n \r\n
\r\n : \"\";\r\n\r\n let formTypeClass = this.state.formType == 'Update' ? 'page-form page-form--update' : 'page-form';\r\n if (this.state.formType == 'Update' && this.state.loggedInUser != null && this.state.loggedInUser.role != 'Admin') formTypeClass += ' disable-wrapper';\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Page Details

\r\n
\r\n\r\n
\r\n
\r\n \r\n {pageNameField}\r\n
\r\n \r\n \r\n {friendlyUrlField}\r\n
\r\n \r\n \r\n {parentMenuDDL}\r\n
\r\n \r\n {childMenuField}\r\n\r\n {subMenuField}\r\n\r\n {/*\r\n \r\n
\r\n \r\n
\r\n
\r\n */}\r\n\r\n \r\n
\r\n {showOnMenuInput}\r\n
\r\n
\r\n \r\n {allowNavigationField}\r\n\r\n {sideNavField}\r\n\r\n {openTypeField}\r\n \r\n {seoFields}\r\n\r\n {roleFields}\r\n \r\n {fullUrlField}\r\n
\r\n
\r\n
\r\n {dndPageOrder}\r\n
\r\n\r\n
\r\n \r\n {formBtnBuffer}\r\n {statusBtn}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let pageId;\r\n if (this.props.pageId !== undefined) pageId = this.props.pageId;\r\n \r\n let formType = this.props.formType != undefined ? this.props.formType : 'Create';\r\n let isExternal = this.props.isExternal != undefined ? this.props.isExternal : false;\r\n\r\n const response = await fetch('Admin/GetPage?pageId=' + pageId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n\r\n const mainMenuResponse = await fetch('Admin/GetAllMainMenuOptions', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const mainMenuData = await mainMenuResponse.json();\r\n\r\n //Check if a page has sub pages associated with it\r\n const hasSubPagesResponse = await fetch('Admin/HasSubPages?pageId=' + pageId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const hasSubPagesData = await hasSubPagesResponse.json();\r\n\r\n // Check if page has at least one associated child page that is in a menu.\r\n const hasMenuChildPagesResponse = await fetch('Admin/HasMenuChildPages?pageId=' + pageId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const hasMenuChildPagesData = await hasMenuChildPagesResponse.json();\r\n\r\n // Get SideNav options\r\n const sideNavsResponse = await fetch('AdminSideNav/GetSideNavs', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const sideNavsData = await sideNavsResponse.json();\r\n\r\n let loggedInUser = await getLoggedInUser();\r\n if (loggedInUser != null) loggedInUser = JSON.parse(loggedInUser);\r\n\r\n const roles = await getRoles();\r\n\r\n const currentRoles = await getRolesByUserId(loggedInUser.id);\r\n\r\n this.setState({\r\n page: data,\r\n formType: formType,\r\n mainMenuOptions: mainMenuData,\r\n hasSubPages: hasSubPagesData,\r\n hasMenuChildPages: hasMenuChildPagesData,\r\n sideNavs: sideNavsData,\r\n loggedInUser: loggedInUser,\r\n isExternal: isExternal,\r\n roles: roles,\r\n currentRoles: currentRoles\r\n });\r\n\r\n if (this.state.page['menu'] != null && this.state.page['menu'] != \"\" && this.state.page['menu'] != undefined) {\r\n this.getChildMenuOptions(this.state.page['menu']);\r\n }\r\n\r\n if (this.state.page['childMenu'] != null && this.state.page['childMenu'] != \"\" && this.state.page['childMenu'] != undefined) {\r\n this.getSubMenuOptions(this.state.page['childMenu']);\r\n }\r\n\r\n this.getMenuSiblingPages();\r\n }\r\n\r\n async deletePage(e) {\r\n e.preventDefault();\r\n\r\n let pageId = this.state.page.id;\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this page?\");\r\n\r\n if (confirmDelete) {\r\n let pId = parseInt(pageId);\r\n const response = await fetch('Admin/DeletePage?pageId=' + pId, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n window.location = '/UpdatePageComponent/' + pageId;\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n\r\n async restorePage(e) {\r\n e.preventDefault();\r\n\r\n let pageId = this.state.page.id;\r\n let confirmRestore = window.confirm(\"Are you sure you want to restore this page?\");\r\n\r\n if (confirmRestore) {\r\n let pId = parseInt(pageId);\r\n const response = await fetch('Admin/RestorePage?pageId=' + pId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Restored\") {\r\n window.location = '/UpdatePageComponent/' + pageId;\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default PageForm;\r\n","import React, { Component } from 'react';\r\nimport PageForm from '../PageForm';\r\nimport '../pageform.css';\r\n\r\nexport class CreatePage extends Component {\r\n static displayName = CreatePage.name;\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport PageForm from '../PageForm';\r\nimport '../pageform.css';\r\n\r\nexport class UpdatePage extends Component {\r\n static displayName = UpdatePage.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n pageId: this.props.match.params.pageId\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport PageForm from './PageForm';\r\nimport './pageform.css';\r\n\r\nexport class CreateExternalPage extends Component {\r\n static displayName = CreateExternalPage.name;\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport PageForm from './PageForm';\r\nimport './pageform.css';\r\n\r\nexport class UpdateExternalPage extends Component {\r\n static displayName = UpdateExternalPage.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n pageId: this.props.match.params.pageId\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';\r\n\r\nexport class DnDCurrentComponents extends Component {\r\n static displayName = DnDCurrentComponents.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n columns: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n columns: this.props.columns\r\n });\r\n }\r\n\r\n onDragEnd = (result, columns) => {\r\n if (!result.destination) return;\r\n const { source, destination } = result;\r\n if (source.droppableId !== destination.droppableId) {//Move to different column\r\n //const sourceColumn = columns[source.droppableId];\r\n //const destColumn = columns[destination.droppableId];\r\n //const sourceItems = [...sourceColumn.items];\r\n //const destItems = [...destColumn.items];\r\n //const [removed] = sourceItems.splice(source.index, 1);\r\n //destItems.splice(destination.index, 0, removed);\r\n }\r\n else {//Move within column\r\n const column = columns[source.droppableId];\r\n const copiedItems = [...column.items];\r\n const [removed] = copiedItems.splice(source.index, 1);\r\n copiedItems.splice(destination.index, 0, removed);\r\n\r\n let newColumns = this.state.columns;\r\n newColumns[0] = copiedItems;\r\n newColumns[source.droppableId].items = copiedItems;\r\n\r\n this.props.componentOrderUpdate(copiedItems);\r\n }\r\n }\r\n\r\n render() {\r\n let columns = this.state.columns;\r\n\r\n return (\r\n
\r\n this.onDragEnd(result, columns)}>\r\n {Object.entries(columns).map(([id, column]) => {\r\n return (\r\n
\r\n
\r\n \r\n {(provided, snapshot) => {\r\n return (\r\n \r\n {column.items.map((item, index) => {\r\n return (\r\n \r\n {(provided, snapshot) => {\r\n return (\r\n \r\n {item.content}\r\n
\r\n )\r\n }}\r\n \r\n )\r\n })}\r\n {provided.placeholder}\r\n
\r\n )\r\n }}\r\n \r\n
\r\n \r\n )\r\n })}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default DnDCurrentComponents;\r\n","import React, { Component } from 'react';\r\n\r\nexport class FakeDnDCurrentComponent extends Component {\r\n static displayName = FakeDnDCurrentComponent.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n columns: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n columns: this.props.columns\r\n });\r\n }\r\n\r\n render() {\r\n let columns = this.state.columns;\r\n\r\n return (\r\n
\r\n {Object.entries(columns).map(([id, column]) => {\r\n return (\r\n
\r\n {column.items.map((item, index) => {\r\n return (\r\n
\r\n {item.content}\r\n
\r\n )\r\n })}\r\n
\r\n )\r\n })}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default FakeDnDCurrentComponent;\r\n","// Component Thumbnails\r\nimport NoImageAvailable from './images/NoImageAvailable.png';\r\nimport ActionButtonThumbnail from './images/ComponentThumbnails/ActionButton.png';\r\nimport AnnouncementThumbnail from './images/ComponentThumbnails/Announcement.png';\r\nimport BannerContainerThumbnail from './images/ComponentThumbnails/Banner.png';\r\nimport BigText5050Thumbnail from './images/ComponentThumbnails/BigText5050.png';\r\nimport Contact5050Thumbnail from './images/ComponentThumbnails/Contact5050.png';\r\nimport Features1Thumbnail from './images/ComponentThumbnails/Features1.png';\r\nimport Grid5050Thumbnail from './images/ComponentThumbnails/Grid5050.png';\r\nimport HRSeparatorThumbnail from './images/ComponentThumbnails/HRSeparator.png';\r\nimport HtmlEditorThumbnail from './images/ComponentThumbnails/HtmlEditor.png';\r\nimport SingleFeatures1Thumbnail from './images/ComponentThumbnails/SingleFeatures1.png';\r\n\r\nexport class ComponentMap {\r\n /* Return a component type name for display */\r\n componentTypeDisplay(componentType) {\r\n let displayName;\r\n switch (componentType) {\r\n case \"Announcement\":\r\n displayName = \"Announcement\";\r\n break;\r\n case \"BannerContainer\":\r\n displayName = \"Banner\";\r\n break;\r\n case \"IconLinkContainer\":\r\n displayName = \"Icon Link Container\";\r\n break;\r\n case \"ColumnsTabContainer\":\r\n displayName = \"Columns Tab Container\";\r\n break;\r\n case \"Accordion\":\r\n displayName = \"Accordion\";\r\n break;\r\n case \"Navbar\":\r\n displayName = \"Navbar\";\r\n break;\r\n case \"Footer\":\r\n displayName = \"Footer\";\r\n break;\r\n case \"HtmlEditor\":\r\n displayName = \"Text Editor\";\r\n break;\r\n case \"SocialIcons\":\r\n displayName = \"Social Links\";\r\n break;\r\n case \"BigText5050\":\r\n displayName = \"Image Descriptor Right\";\r\n break;\r\n case \"Contact5050\":\r\n displayName = \"Form Container\";\r\n break;\r\n case \"SingleFeatures1\":\r\n displayName = \"Featured Item\";\r\n break;\r\n case \"Features1\":\r\n displayName = \"Featured Item Set\";\r\n break;\r\n case \"Grid5050\":\r\n displayName = \"Image Descriptor Left\";\r\n break;\r\n case \"ActionButton\":\r\n displayName = \"Call Button\";\r\n break;\r\n case \"HRSeparator\":\r\n displayName = \"Page Separator\";\r\n break;\r\n case \"Card\":\r\n displayName = \"Card\";\r\n break;\r\n case \"CardContainer\":\r\n displayName = \"Card Container\";\r\n break;\r\n case \"Calendar\":\r\n displayName = \"Calendar\";\r\n break;\r\n case \"DocumentTable\":\r\n displayName = \"Document Table\";\r\n break;\r\n case \"EventTable\":\r\n displayName = \"Event Table\";\r\n break;\r\n case \"BlogTable\":\r\n displayName = \"Blog Table\";\r\n break;\r\n case \"BlogPreview\":\r\n displayName = \"Blog Preview\";\r\n break;\r\n case \"NewsTable\":\r\n displayName = \"News Table\";\r\n break;\r\n case \"BirthdayTable\":\r\n displayName = \"Birthday Table\";\r\n break;\r\n case \"SideContainer\":\r\n displayName = \"Side Container\";\r\n break;\r\n default:\r\n displayName = componentType;\r\n break;\r\n }\r\n return displayName;\r\n }\r\n\r\n /* Return the thumbnail that matches with the component */\r\n getThumbnail(componentType) {\r\n let thumbnail;\r\n switch (componentType) {\r\n case \"Announcement\":\r\n thumbnail = AnnouncementThumbnail;\r\n break;\r\n case \"BannerContainer\":\r\n thumbnail = BannerContainerThumbnail;\r\n break;\r\n case \"IconLinkContainer\":\r\n thumbnail = NoImageAvailable;\r\n break;\r\n case \"ColumnsTabContainer\":\r\n thumbnail = NoImageAvailable;\r\n break;\r\n case \"Accordion\":\r\n thumbnail = NoImageAvailable;\r\n break;\r\n case \"Navbar\":\r\n thumbnail = NoImageAvailable;\r\n break;\r\n case \"Footer\":\r\n thumbnail = NoImageAvailable;\r\n break;\r\n case \"HtmlEditor\":\r\n thumbnail = HtmlEditorThumbnail;\r\n break;\r\n case \"SocialIcons\":\r\n thumbnail = NoImageAvailable;\r\n break;\r\n case \"BigText5050\":\r\n thumbnail = BigText5050Thumbnail;\r\n break;\r\n case \"Contact5050\":\r\n thumbnail = Contact5050Thumbnail;\r\n break;\r\n case \"SingleFeatures1\":\r\n thumbnail = SingleFeatures1Thumbnail;\r\n break;\r\n case \"Features1\":\r\n thumbnail = Features1Thumbnail;\r\n break;\r\n case \"Grid5050\":\r\n thumbnail = Grid5050Thumbnail;\r\n break;\r\n case \"ActionButton\":\r\n thumbnail = ActionButtonThumbnail;\r\n break;\r\n case \"HRSeparator\":\r\n thumbnail = HRSeparatorThumbnail;\r\n break;\r\n case \"Card\":\r\n thumbnail = NoImageAvailable;\r\n break;\r\n case \"CardContainer\":\r\n thumbnail = NoImageAvailable;\r\n break;\r\n case \"Calendar\":\r\n thumbnail = NoImageAvailable;\r\n break;\r\n case \"DocumentTable\":\r\n thumbnail = NoImageAvailable;\r\n break;\r\n case \"EventTable\":\r\n thumbnail = NoImageAvailable;\r\n break;\r\n case \"BlogTable\":\r\n thumbnail = NoImageAvailable;\r\n break;\r\n case \"BlogPreview\":\r\n thumbnail = NoImageAvailable;\r\n break;\r\n case \"NewsTable\":\r\n thumbnail = NoImageAvailable;\r\n break;\r\n case \"BirthdayTable\":\r\n thumbnail = NoImageAvailable;\r\n break;\r\n case \"SideContainer\":\r\n thumbnail = NoImageAvailable;\r\n break;\r\n default:\r\n thumbnail = NoImageAvailable;\r\n break;\r\n }\r\n return thumbnail;\r\n }\r\n}\r\n\r\nconst componentMap = new ComponentMap();\r\nexport default componentMap;","import React, { Component, version } from 'react';\r\nimport './pageversionlogmanagement.css';\r\nimport { MDBDataTable } from 'mdbreact';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons';\r\n\r\nexport class PageVersionLogManagement extends Component {\r\n static displayName = PageVersionLogManagement.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n allVersionLogs: null,\r\n filteredVersionLogs: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let filteredVersionLogs = this.state.filteredVersionLogs;\r\n\r\n let tableRows = [];\r\n if (filteredVersionLogs != null) {\r\n for (var i = 0; i < filteredVersionLogs.length; i++) {\r\n let versionLog = filteredVersionLogs[i];\r\n\r\n let timestamp = new Date(versionLog.timestamp);\r\n let formatTimestamp = timestamp.getMonth() + 1 + \"/\" + timestamp.getDate() + \"/\" + timestamp.getFullYear()\r\n\r\n let row = {\r\n email: versionLog.email,\r\n action: versionLog.action,\r\n comments: versionLog.comments != null ? : \"\",\r\n timestamp: formatTimestamp\r\n };\r\n tableRows.push(row);\r\n }\r\n }\r\n\r\n let table = {\r\n columns: [\r\n { label: 'Email', field: 'email', sort: 'asc' },\r\n { label: 'Action', field: 'action', sort: 'asc' },\r\n { label: 'Comments', field: 'comments', sort: 'asc' },\r\n { label: 'Timestamp', field: 'timestamp', sort: 'asc' }\r\n ],\r\n rows: tableRows\r\n };\r\n\r\n return (\r\n
\r\n

Version Logs

\r\n\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let pageId = this.props.pageId;\r\n if (pageId != undefined) {\r\n const response = await fetch('Version/GetVersionLogsPerPage?pageId=' + pageId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n allVersionLogs: data,\r\n filteredVersionLogs: data\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default PageVersionLogManagement;","export class ComponentFormService {\r\n managePageComponent(pageId, type, componentId, pageComponentId, versionId, versionStatus) {\r\n //console.log(pageId, type, componentId, pageComponentId, versionId, versionStatus);\r\n fetch('Admin/ManagePageComponent', {\r\n method: 'POST',\r\n body: JSON.stringify({ \"PageId\": pageId, \"Type\": type, \"ComponentId\": componentId, \"Id\": pageComponentId, \"Status\": versionStatus, \"VersionId\": parseInt(versionId) }),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n return data;\r\n }\r\n );\r\n }\r\n\r\n pageOrderNotification(formType) {\r\n return formType == \"Update\" ? \"\" : \"*Leave blank to create component without adding to page.\";\r\n }\r\n}\r\n\r\nconst componentFormService = new ComponentFormService();\r\nexport default componentFormService;\r\n","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\n\r\nexport class AnnouncementForm extends Component {\r\n static displayName = AnnouncementForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n announcement: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newAnnouncement = this.state.announcement;\r\n newAnnouncement[e.target.name] = e.target.value;\r\n this.setState({ announcement: newAnnouncement });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let announcement = this.state.announcement;\r\n announcement.versionId = this.state.versionId;\r\n announcement.pageId = this.state.pageId;\r\n let url = this.state.formType == \"Update\" ? \"UpdateAnnouncement\" : \"CreateAnnouncement\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(announcement),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"Announcement\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n \r\n //window.location = '/UpdatePageComponent/' + this.state.pageId;\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n let announcementText = null;\r\n let componentName = null;\r\n\r\n if (this.state.announcement != null) {\r\n let announcement = this.state.announcement;\r\n announcementText = announcement.announcementText;\r\n componentName = announcement.componentName;\r\n }\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('Announcement')}

\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetAnnouncement?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n announcement: data,\r\n formType: formType\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteAnnouncement?componentId=' + this.state.announcement.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n //window.location = '/UpdatePageComponent/' + this.state.pageId;\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default AnnouncementForm;\r\n","import React, { Component } from 'react';\r\nimport { Input, Label, Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\r\nimport NoImageAvailable from './images/NoImageAvailable.png';\r\n\r\nexport class ImageGalleryField extends Component {\r\n static displayName = ImageGalleryField.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n modal: false,\r\n images: null,\r\n search: null\r\n };\r\n\r\n this.toggle = this.toggle.bind(this);\r\n this.handleSearchChange = this.handleSearchChange.bind(this);\r\n this.loadImages = this.loadImages.bind(this);\r\n this.chooseImage = this.chooseImage.bind(this);\r\n }\r\n\r\n async componentDidMount() {\r\n this.loadImages();\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n modal: !this.state.modal\r\n });\r\n }\r\n\r\n async handleSearchChange(e) {\r\n await this.setState({\r\n search: e.target.value\r\n });\r\n\r\n if (this.state.search != null) {\r\n if (this.state.search.length > 2) {\r\n this.setState({\r\n images: this.state.images.filter(u => u.imageDescription.toLowerCase().includes(this.state.search.toLowerCase()))\r\n });\r\n }\r\n else if (this.state.search == 0) {\r\n this.loadImages();\r\n }\r\n }\r\n }\r\n\r\n async loadImages() {\r\n var response = await fetch('ImageUpload/RetrieveAll', {\r\n method: 'POST'\r\n });\r\n\r\n var images = await response.json();\r\n\r\n this.setState({\r\n images: images\r\n });\r\n }\r\n\r\n chooseImage(e) {\r\n var image = e.target;\r\n var url = image.getAttribute('src');\r\n\r\n let nameValuePair = { name: this.props.name, value: url };\r\n let fakeEvent = { target: nameValuePair };\r\n\r\n this.props.handleImageChange(fakeEvent);\r\n this.toggle();\r\n }\r\n\r\n render() {\r\n let currentImageUrl = this.props.currentImageUrl;\r\n if (currentImageUrl == null || currentImageUrl == \"\" || currentImageUrl == undefined) {\r\n currentImageUrl = NoImageAvailable;\r\n }\r\n\r\n let imageGallery;\r\n let search;\r\n if (this.state.images != null) {\r\n search = ;\r\n imageGallery = this.state.images.map(image => {\r\n var imgSrc = \"images/\" + image.imageUrl;\r\n return
{image.imageDescription}
;\r\n });\r\n }\r\n\r\n let currentField = this.props.isDisabled ?\r\n
\r\n \r\n
:\r\n
\r\n \r\n
;\r\n\r\n return (\r\n
\r\n
\r\n {currentField}\r\n
\r\n\r\n \r\n Image Gallery\r\n \r\n {search}\r\n {imageGallery}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst currentImageGalleryFieldContainer = {\r\n textAlign: 'left',\r\n position: 'relative',\r\n width: '200px',\r\n height: '150px',\r\n cursor: 'default'\r\n}\r\n\r\nconst currentImageGalleryFieldContainerToggle = {\r\n textAlign: 'left',\r\n position: 'relative',\r\n width: '200px',\r\n height: '150px',\r\n cursor: 'pointer'\r\n}\r\n\r\nexport default ImageGalleryField;\r\n","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons';\r\nimport ImageGalleryField from '../../../ImageGalleryField';\r\n\r\nexport class BannerForm extends Component {\r\n static displayName = BannerForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n banner: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus,\r\n bannerContainerId: this.props.bannerContainerId,\r\n isEditOnly: this.props.isEditOnly != undefined ? this.props.isEditOnly : false,\r\n isInPopup: this.props.isInPopup != undefined ? this.props.isInPopup : false\r\n };\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newBanner = this.state.banner;\r\n if (e.target.name === \"buttonLink\") {\r\n newBanner[e.target.name] = encodeURI(e.target.value);\r\n }\r\n else if (e.target.name === \"sliderDuration\") {\r\n if (!isNaN(e.target.value)) {\r\n let milliseconds = parseInt(e.target.value) * 1000;\r\n newBanner[e.target.name] = milliseconds;\r\n }\r\n else {\r\n newBanner[e.target.name] = 0;\r\n }\r\n }\r\n else if (e.target.name === \"order\") {\r\n newBanner[e.target.name] = (e.target.value != null && e.target.value != \"\" && e.target.value != undefined) ? parseInt(e.target.value) : 0;\r\n }\r\n else {\r\n newBanner[e.target.name] = e.target.value;\r\n }\r\n this.setState({ banner: newBanner });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let banner = this.state.banner;\r\n banner.versionId = this.state.versionId;\r\n banner.pageId = this.state.pageId;\r\n banner.bannerContainerId = this.state.bannerContainerId;\r\n\r\n if (banner.sliderDuration == null || banner.sliderDuration == undefined || banner.sliderDuration == 0) banner.sliderDuration = 5000;\r\n\r\n //console.log(banner);\r\n\r\n let url = this.state.formType == \"Update\" ? \"UpdateBanner\" : \"CreateBanner\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(banner),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (!this.state.isEditOnly) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n //var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"Banner\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n }\r\n\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n if (this.state.isInPopup) {\r\n deleteButton = null;\r\n }\r\n let backgroundImage = null;\r\n let actionText = null;\r\n let buttonText = null;\r\n let buttonLink = null;\r\n let componentName = null;\r\n let sliderDuration = null;\r\n let buttonPosition = null;\r\n let height = null;\r\n let subActionText = null;\r\n let button2Text = null;\r\n let button2Link = null;\r\n let order = null;\r\n\r\n if (this.state.banner != null) {\r\n let banner = this.state.banner;\r\n backgroundImage = banner.backgroundImage;\r\n actionText = banner.actionText;\r\n buttonText = banner.buttonText;\r\n buttonLink = banner.buttonLink;\r\n componentName = banner.componentName;\r\n sliderDuration = banner.sliderDuration == 0 ? 5 : (banner.sliderDuration / 1000);\r\n buttonPosition = banner.buttonPosition;\r\n height = banner.height;\r\n subActionText = banner.subActionText;\r\n button2Link = banner.button2Link;\r\n button2Text = banner.button2Text;\r\n order = banner.order;\r\n }\r\n\r\n let isButtonRequired = (\r\n (buttonText != null && buttonText != \"\") ||\r\n (buttonLink != null && buttonLink != \"\")) ? true : false;\r\n\r\n let isButton2Required = (\r\n (button2Text != null && button2Text != \"\") ||\r\n (button2Link != null && button2Link != \"\")) ? true : false;\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n let isImageGalleryFieldDisabled = this.state.versionStatus == 'draft' ? false : true;\r\n return (\r\n \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetBanner?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n banner: data,\r\n formType: formType\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteBanner?componentId=' + this.state.banner.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n //window.location = '/UpdatePageComponent/' + this.state.pageId;\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default BannerForm;\r\n","import React, { Component } from 'react';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faTimesCircle } from '@fortawesome/free-solid-svg-icons';\r\n\r\nexport class ComponentFormPopup extends Component {\r\n static displayName = ComponentFormPopup.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n popupForm: this.props.popupForm\r\n };\r\n }\r\n\r\n cancelClicked() {\r\n //console.log(\"cancelClicked(popup)\");\r\n this.props.cancelClicked();\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n {this.state.popupForm}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default ComponentFormPopup;\r\n","import React, { useState } from 'react';\r\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEllipsisV } from '@fortawesome/free-solid-svg-icons';\r\n\r\nfunction DnDBanner(props) {\r\n\r\n const columnsFromBackend = {\r\n [uuid()]: {\r\n items: props.items\r\n }\r\n };\r\n\r\n const onDragEnd = (result, columns, setColumns) => {\r\n if (!result.destination) return;\r\n const { source, destination } = result;\r\n if (source.droppableId !== destination.droppableId) {//Between columns\r\n const sourceColumn = columns[source.droppableId];\r\n const destColumn = columns[destination.droppableId];\r\n const sourceItems = [...sourceColumn.items];\r\n const destItems = [...destColumn.items];\r\n const [removed] = sourceItems.splice(source.index, 1);\r\n destItems.splice(destination.index, 0, removed);\r\n setColumns({\r\n ...columns,\r\n [source.droppableId]: {\r\n ...sourceColumn,\r\n items: sourceItems\r\n },\r\n [destination.droppableId]: {\r\n ...destColumn,\r\n items: destItems\r\n }\r\n })\r\n }\r\n else {//Within column \r\n const column = columns[source.droppableId];\r\n const copiedItems = [...column.items];\r\n const [removed] = copiedItems.splice(source.index, 1);\r\n copiedItems.splice(destination.index, 0, removed);\r\n setColumns({\r\n ...columns,\r\n [source.droppableId]: {\r\n ...column,\r\n items: copiedItems\r\n }\r\n });\r\n\r\n props.itemOrderUpdate(copiedItems);\r\n }\r\n }\r\n\r\n const [columns, setColumns] = useState(columnsFromBackend);\r\n\r\n return (\r\n
\r\n onDragEnd(result, columns, setColumns)}>\r\n {Object.entries(columns).map(([id, column]) => {\r\n return (\r\n
\r\n
\r\n \r\n {(provided, snapshot) => {\r\n return (\r\n \r\n {column.items.map((item, index) => {\r\n return (\r\n \r\n {(provided, snapshot) => {\r\n return (\r\n \r\n \r\n {item.content}\r\n
\r\n )\r\n }}\r\n \r\n )\r\n })}\r\n {provided.placeholder}\r\n
\r\n )\r\n }}\r\n \r\n
\r\n \r\n )\r\n })}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default DnDBanner;\r\n","import React, { Component } from 'react';\r\n\r\nexport class FakeDnDBanner extends Component {\r\n static displayName = FakeDnDBanner.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n items: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n items: this.props.items,\r\n });\r\n }\r\n\r\n render() {\r\n let columns = this.state.items;\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n {columns.map((item, index) => {\r\n return (\r\n
\r\n {item.content}\r\n
\r\n )\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default FakeDnDBanner;\r\n","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faInfoCircle, faEdit, faTrashAlt, faEllipsisV, faEye } from '@fortawesome/free-solid-svg-icons';\r\nimport BannerForm from './BannerForm';\r\nimport ComponentFormPopup from '../ComponentFormPopup';\r\nimport DnDBanner from './DnDBanner';\r\nimport FakeDnDBanner from './FakeDnDBanner';\r\n\r\nexport class BannerContainerForm extends Component {\r\n static displayName = BannerContainerForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n bannerContainer: null,\r\n banners: [],\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus,\r\n isEditOnly: this.props.isEditOnly != undefined ? this.props.isEditOnly : false,\r\n isInPopup: this.props.isInPopup != undefined ? this.props.isInPopup : false,\r\n popup: null,\r\n reset: false\r\n };\r\n this.displayPopup = this.displayPopup.bind(this);\r\n this.cancelClicked = this.cancelClicked.bind(this);\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n //this.bannerOrderUpdate = this.bannerOrderUpdate.bind(this);\r\n this.deleteBanner = this.deleteBanner.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newBannerContainer = this.state.bannerContainer;\r\n\r\n if (e.target.name === \"sliderDuration\") {\r\n if (!isNaN(e.target.value)) {\r\n let milliseconds = parseInt(e.target.value) * 1000;\r\n newBannerContainer[e.target.name] = milliseconds;\r\n }\r\n else {\r\n newBannerContainer[e.target.name] = 0;\r\n }\r\n }\r\n else {\r\n newBannerContainer[e.target.name] = e.target.value;\r\n }\r\n this.setState({ bannerContainer: newBannerContainer });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let bannerContainer = this.state.bannerContainer;\r\n bannerContainer.versionId = this.state.versionId;\r\n bannerContainer.pageId = this.state.pageId;\r\n\r\n if (bannerContainer.sliderDuration == null || bannerContainer.sliderDuration == undefined || bannerContainer.sliderDuration == 0) bannerContainer.sliderDuration = 5000;\r\n\r\n let url = this.state.formType == \"Update\" ? \"UpdateBannerContainer\" : \"CreateBannerContainer\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(bannerContainer),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (!this.state.isEditOnly) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"BannerContainer\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n }\r\n\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n displayPopup = (bannerId, formType) => {\r\n let popupForm = ;\r\n\r\n let popup = ;\r\n\r\n this.setState({\r\n popup: popup\r\n });\r\n }\r\n\r\n onPopupComponentSaved() {\r\n alert(\"Saved\");\r\n\r\n this.setState({\r\n reset: true,\r\n popup: null\r\n });\r\n this.getComponentData();\r\n }\r\n\r\n cancelClicked() {\r\n this.setState({\r\n popup: null\r\n });\r\n }\r\n\r\n async bannerOrderUpdate(componentArray) {\r\n let componentIdsOrdered = [];\r\n for (var i = 0; i < componentArray.length; i++) {\r\n componentIdsOrdered.push(parseInt(componentArray[i].id));\r\n }\r\n\r\n const response = await fetch('Admin/UpdateBannerComponentOrder', {\r\n method: 'POST',\r\n body: JSON.stringify({ \"bannerIds\": componentIdsOrdered }),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data != \"Saved\") {\r\n alert(data);\r\n }\r\n }\r\n\r\n async deleteBanner(bannerId) {\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteBanner?componentId=' + bannerId, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n this.setState({\r\n reset: true\r\n });\r\n this.getComponentData();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n if (this.state.isInPopup) {\r\n deleteButton = null;\r\n }\r\n\r\n let componentName = null;\r\n let sliderDuration = null;\r\n let height = null;\r\n\r\n if (this.state.bannerContainer != null) {\r\n let bannerContainer = this.state.bannerContainer;\r\n\r\n componentName = bannerContainer.componentName;\r\n sliderDuration = bannerContainer.sliderDuration == 0 ? 5 : (bannerContainer.sliderDuration / 1000);\r\n height = bannerContainer.height;\r\n }\r\n\r\n let mainFormClasses = \"tri-grid\";\r\n let sideMenu;\r\n let addNewBannerButton = null;\r\n let bannerButtons = [];\r\n if (this.state.formType == \"Update\") {\r\n addNewBannerButton = this.state.versionStatus == 'draft' ?\r\n
Add Slide
: \"\";\r\n\r\n for (var i = 0; i < this.state.banners.length; i++) {\r\n let banner = this.state.banners[i];\r\n console.log(banner);\r\n\r\n let bannerKey = \"banner\" + i;\r\n\r\n let currentComponentManagementBtns = this.state.versionStatus == 'draft' ?\r\n <>\r\n \r\n \r\n :\r\n <>\r\n \r\n ;\r\n\r\n let bannerBtnClasses = this.state.versionStatus == 'draft' ? 'sub-component-button' : 'sub-component-button disable-dnd';\r\n\r\n let bannerBtn =\r\n
\r\n\r\n {banner.componentName}\r\n\r\n
\r\n {currentComponentManagementBtns}\r\n
\r\n
;\r\n\r\n bannerButtons.push({ id: banner.id.toString(), content: bannerBtn });\r\n }\r\n\r\n let bannerDnD = (this.state.versionStatus == 'draft') ?\r\n :\r\n ;\r\n\r\n if (this.state.reset) {\r\n bannerDnD = \"\";\r\n }\r\n\r\n sideMenu =
\r\n {addNewBannerButton}\r\n {bannerDnD}\r\n
;\r\n }\r\n else {\r\n mainFormClasses += \" dual-grid__1-2\";\r\n }\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n {this.state.popup}\r\n\r\n
\r\n
\r\n {sideMenu}\r\n\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('BannerContainer')}

\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n {/*\r\n \r\n \r\n \r\n */}\r\n\r\n {/*\r\n \r\n \r\n
\r\n */}\r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetBannerContainer?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n bannerContainer: data.bannerContainer,\r\n banners: data.banners,\r\n formType: formType,\r\n reset: false,\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteBannerContainer?componentId=' + this.state.bannerContainer.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default BannerContainerForm;\r\n","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons';\r\nimport { icon } from '@fortawesome/fontawesome-svg-core';\r\n\r\nimport garbage_fees from '../../../images/ClientStatic/garbage_fees.png';\r\nimport pay_my_bill from '../../../images/ClientStatic/pay_my_bill.png';\r\nimport payment_options from '../../../images/ClientStatic/payment_options.png';\r\nimport report_a_problem from '../../../images/ClientStatic/report_a_problem.png';\r\n\r\nexport class IconLinkForm extends Component {\r\n static displayName = IconLinkForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n iconLink: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus,\r\n iconLinkContainerId: this.props.iconLinkContainerId,\r\n isEditOnly: this.props.isEditOnly != undefined ? this.props.isEditOnly : false,\r\n isInPopup: this.props.isInPopup != undefined ? this.props.isInPopup : false\r\n };\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newIconLink = this.state.iconLink;\r\n newIconLink[e.target.name] = e.target.value;\r\n this.setState({ iconLink: newIconLink });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let iconLink = this.state.iconLink;\r\n iconLink.versionId = this.state.versionId;\r\n iconLink.pageId = this.state.pageId;\r\n iconLink.iconLinkContainerId = this.state.iconLinkContainerId;\r\n\r\n let url = this.state.formType == \"Update\" ? \"UpdateIconLink\" : \"CreateIconLink\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(iconLink),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (!this.state.isEditOnly) {\r\n //var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n //var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"IconLink\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n }\r\n\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n if (this.state.isInPopup) {\r\n deleteButton = null;\r\n }\r\n\r\n let icon;\r\n let link;\r\n let componentName;\r\n if (this.state.iconLink != null) {\r\n let iconLink = this.state.iconLink;\r\n\r\n icon = iconLink.icon;\r\n link = iconLink.link;\r\n componentName = iconLink.componentName;\r\n }\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('IconLink')}

\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetIconLink?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n iconLink: data,\r\n formType: formType\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteIconLink?componentId=' + this.state.iconLink.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default IconLinkForm;","import React, { useState } from 'react';\r\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEllipsisV } from '@fortawesome/free-solid-svg-icons';\r\n\r\nfunction DnDIconLink(props) {\r\n const columnsFromBackend = {\r\n [uuid()]: {\r\n items: props.items\r\n }\r\n };\r\n\r\n const onDragEnd = (result, columns, setColumns) => {\r\n if (!result.destination) return;\r\n const { source, destination } = result;\r\n if (source.droppableId !== destination.droppableId) {//Between columns\r\n const sourceColumn = columns[source.droppableId];\r\n const destColumn = columns[destination.droppableId];\r\n const sourceItems = [...sourceColumn.items];\r\n const destItems = [...destColumn.items];\r\n const [removed] = sourceItems.splice(source.index, 1);\r\n destItems.splice(destination.index, 0, removed);\r\n setColumns({\r\n ...columns,\r\n [source.droppableId]: {\r\n ...sourceColumn,\r\n items: sourceItems\r\n },\r\n [destination.droppableId]: {\r\n ...destColumn,\r\n items: destItems\r\n }\r\n })\r\n }\r\n else {//Within column \r\n const column = columns[source.droppableId];\r\n const copiedItems = [...column.items];\r\n const [removed] = copiedItems.splice(source.index, 1);\r\n copiedItems.splice(destination.index, 0, removed);\r\n setColumns({\r\n ...columns,\r\n [source.droppableId]: {\r\n ...column,\r\n items: copiedItems\r\n }\r\n });\r\n\r\n props.itemOrderUpdate(copiedItems);\r\n }\r\n }\r\n\r\n const [columns, setColumns] = useState(columnsFromBackend);\r\n\r\n return (\r\n
\r\n onDragEnd(result, columns, setColumns)}>\r\n {Object.entries(columns).map(([id, column]) => {\r\n return (\r\n
\r\n
\r\n \r\n {(provided, snapshot) => {\r\n return (\r\n \r\n {column.items.map((item, index) => {\r\n return (\r\n \r\n {(provided, snapshot) => {\r\n return (\r\n \r\n \r\n {item.content}\r\n
\r\n )\r\n }}\r\n \r\n )\r\n })}\r\n {provided.placeholder}\r\n
\r\n )\r\n }}\r\n \r\n
\r\n \r\n )\r\n })}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default DnDIconLink;","import React, { Component } from 'react';\r\n\r\nexport class FakeDnDIconLink extends Component{\r\n static displayName = FakeDnDIconLink.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n items: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n items: this.props.items,\r\n });\r\n }\r\n\r\n render() {\r\n let columns = this.state.items;\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n {columns.map((item, index) => {\r\n return (\r\n
\r\n {item.content}\r\n
\r\n )\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default FakeDnDIconLink;\r\n","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faInfoCircle, faEdit, faTrashAlt, faEllipsisV, faEye } from '@fortawesome/free-solid-svg-icons';\r\nimport IconLinkForm from './IconLinkForm';\r\nimport ComponentFormPopup from '../ComponentFormPopup';\r\nimport DnDIconLink from './DnDIconLink';\r\nimport FakeDnDIconLink from './FakeDnDIconLink';\r\n\r\nexport class IconLinkContainerForm extends Component {\r\n static displayName = IconLinkContainerForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n iconLinkContainer: null,\r\n iconLinks: [],\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus,\r\n isEditOnly: this.props.isEditOnly != undefined ? this.props.isEditOnly : false,\r\n isInPopup: this.props.isInPopup != undefined ? this.props.isInPopup : false,\r\n popup: null,\r\n reset: false\r\n };\r\n this.displayPopup = this.displayPopup.bind(this);\r\n this.cancelClicked = this.cancelClicked.bind(this);\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n this.deleteIconLink = this.deleteIconLink.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newIconLinkContainer = this.state.iconLinkContainer;\r\n\r\n newIconLinkContainer[e.target.name] = e.target.value;\r\n\r\n this.setState({ iconLinkContainer: newIconLinkContainer });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let iconLinkContainer = this.state.iconLinkContainer;\r\n iconLinkContainer.versionId = this.state.versionId;\r\n iconLinkContainer.pageId = this.state.pageId;\r\n\r\n let url = this.state.formType == \"Update\" ? \"UpdateIconLinkContainer\" : \"CreateIconLinkContainer\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(iconLinkContainer),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (!this.state.isEditOnly) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"IconLinkContainer\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n }\r\n\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n displayPopup = (iconLinkId, formType) => {\r\n let popupForm = ;\r\n\r\n let popup = ;\r\n\r\n this.setState({\r\n popup: popup\r\n });\r\n }\r\n\r\n onPopupComponentSaved() {\r\n alert(\"Saved\");\r\n\r\n this.setState({\r\n reset: true,\r\n popup: null\r\n });\r\n this.getComponentData();\r\n }\r\n\r\n cancelClicked() {\r\n this.setState({\r\n popup: null\r\n });\r\n }\r\n\r\n async iconLinkOrderUpdate(componentArray) {\r\n let componentIdsOrdered = [];\r\n for (var i = 0; i < componentArray.length; i++) {\r\n componentIdsOrdered.push(parseInt(componentArray[i].id));\r\n }\r\n\r\n const response = await fetch('Admin/UpdateIconLinkComponentOrder', {\r\n method: 'POST',\r\n body: JSON.stringify({ \"iconLinkIds\": componentIdsOrdered }),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data != \"Saved\") {\r\n alert(data);\r\n }\r\n }\r\n\r\n async deleteIconLink(iconLinkId) {\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteIconLink?componentId=' + iconLinkId, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n this.setState({\r\n reset: true\r\n });\r\n this.getComponentData();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n if (this.state.isInPopup) {\r\n deleteButton = null;\r\n }\r\n\r\n let componentName = null;\r\n\r\n if (this.state.iconLinkContainer != null) {\r\n let iconLinkContainer = this.state.iconLinkContainer;\r\n\r\n componentName = iconLinkContainer.componentName;\r\n }\r\n\r\n let mainFormClasses = \"tri-grid\";\r\n let sideMenu;\r\n let addNewIconLinkButton = null;\r\n let iconLinkButtons = [];\r\n if (this.state.formType == \"Update\") {\r\n addNewIconLinkButton = this.state.versionStatus == 'draft' ?\r\n
Add Icon
: \"\";\r\n\r\n for (var i = 0; i < this.state.iconLinks.length; i++) {\r\n let iconLink = this.state.iconLinks[i];\r\n //console.log(iconLink);\r\n\r\n let iconLinkKey = \"iconLink\" + i;\r\n\r\n let currentComponentManagementBtns = this.state.versionStatus == 'draft' ?\r\n <>\r\n \r\n \r\n :\r\n <>\r\n \r\n ;\r\n\r\n let iconLinkBtnClasses = this.state.versionStatus == 'draft' ? 'sub-component-button' : 'sub-component-button disable-dnd';\r\n\r\n let iconLinkBtn =\r\n
\r\n\r\n {iconLink.componentName}\r\n\r\n
\r\n {currentComponentManagementBtns}\r\n
\r\n
;\r\n\r\n iconLinkButtons.push({ id: iconLink.id.toString(), content: iconLinkBtn });\r\n }\r\n\r\n let iconLinkDnD = (this.state.versionStatus == 'draft') ?\r\n :\r\n ;\r\n\r\n if (this.state.reset) {\r\n iconLinkDnD = \"\";\r\n }\r\n\r\n sideMenu =
\r\n {addNewIconLinkButton}\r\n {iconLinkDnD}\r\n
;\r\n }\r\n else {\r\n mainFormClasses += \" dual-grid__1-2\";\r\n }\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n {this.state.popup}\r\n\r\n
\r\n
\r\n {sideMenu}\r\n\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('IconLinkContainer')}

\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetIconLinkContainer?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n iconLinkContainer: data.iconLinkContainer,\r\n iconLinks: data.iconLinks,\r\n formType: formType,\r\n reset: false,\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteIconLinkContainer?componentId=' + this.state.iconLinkContainer.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default IconLinkContainerForm;\r\n","import React, { Component } from 'react';\r\nimport { Editor } from '@tinymce/tinymce-react';\r\nimport { Input, Label, Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\r\n\r\nexport class HtmlEditorField extends Component {\r\n static displayName = HtmlEditorField.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n modal: false,\r\n images: null,\r\n buttonModal: false,\r\n button: {\r\n buttonText: null,\r\n buttonLink: null\r\n }\r\n };\r\n this.toggle = this.toggle.bind(this);\r\n this.handleSearchChange = this.handleSearchChange.bind(this);\r\n this.loadImages = this.loadImages.bind(this);\r\n this.chooseImage = this.chooseImage.bind(this);\r\n\r\n this.toggleButtonForm = this.toggleButtonForm.bind(this);\r\n this.createButton = this.createButton.bind(this);\r\n this.handleButtonChange = this.handleButtonChange.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.loadImages();\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n modal: !this.state.modal\r\n });\r\n }\r\n\r\n toggleButtonForm() {\r\n let newButton = this.state.button;\r\n newButton[\"buttonText\"] = null;\r\n newButton[\"buttonLink\"] = null;\r\n\r\n this.setState({\r\n button: newButton,\r\n buttonModal: !this.state.buttonModal\r\n });\r\n }\r\n\r\n handleButtonChange(e) {\r\n let name = e.target.name;\r\n let value = e.target.value;\r\n\r\n let newButton = this.state.button;\r\n newButton[name] = value;\r\n this.setState({ button: newButton });\r\n }\r\n\r\n createButton(e) {\r\n let button = this.state.button;\r\n\r\n if (button.buttonText != null && button.buttonText != \"\" && button.buttonLink != null && button.buttonLink != \"\") {\r\n window.tinymce.activeEditor.execCommand('mceInsertContent', false, \"\");\r\n }\r\n else {\r\n alert(\"All fields must be filled out to create a button\");\r\n }\r\n\r\n this.toggleButtonForm();\r\n }\r\n\r\n async handleSearchChange(e) {\r\n await this.setState({\r\n search: e.target.value\r\n });\r\n\r\n if (this.state.search != null) {\r\n if (this.state.search.length > 2) {\r\n this.setState({\r\n images: this.state.images.filter(u => u.imageDescription.toLowerCase().includes(this.state.search.toLowerCase()))\r\n });\r\n }\r\n else if (this.state.search == 0) {\r\n this.loadImages();\r\n }\r\n }\r\n }\r\n\r\n async loadImages() {\r\n var response = await fetch('ImageUpload/RetrieveAll', {\r\n method: 'POST'\r\n });\r\n\r\n var images = await response.json();\r\n\r\n this.setState({\r\n images: images\r\n });\r\n }\r\n\r\n chooseImage(e) {\r\n var protocol = window.location.protocol;\r\n var hostname = window.location.hostname;\r\n var port = window.location.port !== '' ? \":\" + window.location.port : ''\r\n var baseURL = protocol + \"//\" + hostname + port + \"/\";\r\n var image = e.target;\r\n var altText = e.target.getAttribute('data-description');\r\n var url = image.getAttribute('src');\r\n window.tinymce.activeEditor.execCommand('mceInsertContent', false, \"\" + altText + \"\");\r\n this.toggle();\r\n }\r\n\r\n handleChange = (content, editor) => {\r\n let responseContent = content;\r\n\r\n if (this.props.name != undefined && this.props.returnAsEvent) { //Create fake event\r\n let nameValPair = { name: this.props.name, value: content };\r\n responseContent = { target: nameValPair };\r\n }\r\n\r\n this.props.handleEditorChange(responseContent);\r\n }\r\n\r\n render() {\r\n let content = this.props.content;\r\n\r\n let imageGallery;\r\n let search;\r\n if (this.state.images != null) {\r\n search = ;\r\n imageGallery = this.state.images.map(image => {\r\n var imgSrc = \"images/\" + image.imageUrl;\r\n return
{image.imageDescription}
;\r\n });\r\n }\r\n\r\n const modalState = this.state.modal;\r\n const toggle = () => { this.toggle() }\r\n function toggleGallery() {\r\n { toggle() }\r\n }\r\n\r\n let buttonText = this.state.button.buttonText;\r\n let buttonLink = this.state.button.buttonLink;\r\n\r\n const buttonModal = this.state.buttonModal;\r\n const toggleButtonForm = () => { this.toggleButtonForm() }\r\n function toggleButton() {\r\n { toggleButtonForm() }\r\n }\r\n\r\n return (\r\n
\r\n { toggleGallery() }\r\n });\r\n\r\n editor.ui.registry.addButton('customButton', {\r\n icon: 'template',\r\n onAction: () => { toggleButton() }\r\n });\r\n },\r\n }}\r\n onEditorChange={this.handleChange}\r\n />\r\n\r\n \r\n Image Gallery\r\n \r\n {search}\r\n {imageGallery}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n Button\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default HtmlEditorField;\r\n","import React, { useState } from 'react';\r\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEllipsisV } from '@fortawesome/free-solid-svg-icons';\r\n\r\nfunction DnDColumnsTab(props) {\r\n const columnsFromBackend = {\r\n [uuid()]: {\r\n items: props.items\r\n }\r\n };\r\n\r\n const onDragEnd = (result, columns, setColumns) => {\r\n if (!result.destination) return;\r\n const { source, destination } = result;\r\n if (source.droppableId !== destination.droppableId) {//Between columns\r\n const sourceColumn = columns[source.droppableId];\r\n const destColumn = columns[destination.droppableId];\r\n const sourceItems = [...sourceColumn.items];\r\n const destItems = [...destColumn.items];\r\n const [removed] = sourceItems.splice(source.index, 1);\r\n destItems.splice(destination.index, 0, removed);\r\n setColumns({\r\n ...columns,\r\n [source.droppableId]: {\r\n ...sourceColumn,\r\n items: sourceItems\r\n },\r\n [destination.droppableId]: {\r\n ...destColumn,\r\n items: destItems\r\n }\r\n })\r\n }\r\n else {//Within column \r\n const column = columns[source.droppableId];\r\n const copiedItems = [...column.items];\r\n const [removed] = copiedItems.splice(source.index, 1);\r\n copiedItems.splice(destination.index, 0, removed);\r\n setColumns({\r\n ...columns,\r\n [source.droppableId]: {\r\n ...column,\r\n items: copiedItems\r\n }\r\n });\r\n\r\n props.itemOrderUpdate(copiedItems);\r\n }\r\n }\r\n\r\n const [columns, setColumns] = useState(columnsFromBackend);\r\n\r\n return (\r\n
\r\n onDragEnd(result, columns, setColumns)}>\r\n {Object.entries(columns).map(([id, column]) => {\r\n return (\r\n
\r\n
\r\n \r\n {(provided, snapshot) => {\r\n return (\r\n \r\n {column.items.map((item, index) => {\r\n return (\r\n \r\n {(provided, snapshot) => {\r\n return (\r\n \r\n \r\n {item.content}\r\n
\r\n )\r\n }}\r\n \r\n )\r\n })}\r\n {provided.placeholder}\r\n
\r\n )\r\n }}\r\n \r\n
\r\n \r\n )\r\n })}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default DnDColumnsTab;","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons';\r\nimport { icon } from '@fortawesome/fontawesome-svg-core';\r\nimport HtmlEditorField from '../../../HtmlEditorField';\r\nimport ColumnsIcon from '../../../ColumnsIcon';\r\n\r\nexport class ColumnsTabForm extends Component {\r\n static displayName = ColumnsTabForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n columnsTab: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus,\r\n columnsTabContainerId: this.props.columnsTabContainerId,\r\n isEditOnly: this.props.isEditOnly != undefined ? this.props.isEditOnly : false,\r\n isInPopup: this.props.isInPopup != undefined ? this.props.isInPopup : false\r\n };\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newColumnsTab = this.state.columnsTab;\r\n newColumnsTab[e.target.name] = e.target.value;\r\n this.setState({ columnsTab: newColumnsTab });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let columnsTab = this.state.columnsTab;\r\n columnsTab.versionId = this.state.versionId;\r\n columnsTab.pageId = this.state.pageId;\r\n columnsTab.columnsTabContainerId = this.state.columnsTabContainerId;\r\n\r\n let url = this.state.formType == \"Update\" ? \"UpdateColumnsTab\" : \"CreateColumnsTab\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(columnsTab),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (!this.state.isEditOnly) {\r\n //var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n //var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"ColumnsTab\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n }\r\n\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n if (this.state.isInPopup) {\r\n deleteButton = null;\r\n }\r\n\r\n let title;\r\n let format;\r\n let column1;\r\n let column2;\r\n let column3;\r\n let column4;\r\n let footer;\r\n let componentName;\r\n if (this.state.columnsTab != null) {\r\n let columnsTab = this.state.columnsTab;\r\n\r\n title = columnsTab.title;\r\n format = columnsTab.format;\r\n column1 = columnsTab.column1;\r\n column2 = columnsTab.column2;\r\n column3 = columnsTab.column3;\r\n column4 = columnsTab.column4;\r\n footer = columnsTab.footer;\r\n componentName = columnsTab.componentName;\r\n }\r\n\r\n // Display according to the format\r\n let singleEditorWrapperClasses = this.state.versionStatus == 'draft' ? 'editor-wrapper' : 'editor-wrapper disable-wrapper';\r\n let doubleEditorWrapperClasses = this.state.versionStatus == 'draft' ? 'editor-wrapper grid-span-2' : 'editor-wrapper disable-wrapper grid-span-2';\r\n let quadEditorWrapperClasses = this.state.versionStatus == 'draft' ? 'editor-wrapper grid-span-4' : 'editor-wrapper disable-wrapper grid-span-4';\r\n let htmlEditorColumnsFields;\r\n switch (format) {\r\n case \"1-1-1-1\":\r\n htmlEditorColumnsFields = <>\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n ;\r\n break;\r\n case \"2-1-1\":\r\n htmlEditorColumnsFields = <>\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n ;\r\n break;\r\n case \"1-1-2\":\r\n htmlEditorColumnsFields = <>\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n ;\r\n break;\r\n case \"2-2\":\r\n htmlEditorColumnsFields = <>\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n ;\r\n break;\r\n case \"4\":\r\n htmlEditorColumnsFields = <>\r\n
\r\n \r\n
\r\n ;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n let editorComponentWrapperClasses = this.state.versionStatus == 'draft' ? 'dual-grid__1-2 editor-wrapper' : 'dual-grid__1-2 editor-wrapper disable-wrapper';\r\n\r\n let htmlEditorFooterField = (format != null && format != \"\") ?\r\n
\r\n \r\n
: null;\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('ColumnsTab')}

\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n {htmlEditorColumnsFields}\r\n
\r\n
\r\n\r\n
\r\n {htmlEditorFooterField}\r\n
\r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetColumnsTab?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n columnsTab: data,\r\n formType: formType\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteColumnsTab?componentId=' + this.state.columnsTab.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default ColumnsTabForm;","import React, { Component } from 'react';\r\n\r\nexport class FakeDnDColumnsTab extends Component {\r\n static displayName = FakeDnDColumnsTab.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n items: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({\r\n items: this.props.items,\r\n });\r\n }\r\n\r\n render() {\r\n let columns = this.state.items;\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n {columns.map((item, index) => {\r\n return (\r\n
\r\n {item.content}\r\n
\r\n )\r\n })}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default FakeDnDColumnsTab;","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons';\r\nimport { icon } from '@fortawesome/fontawesome-svg-core';\r\nimport HtmlEditorField from '../../../HtmlEditorField';\r\nimport ColumnsIcon from '../../../ColumnsIcon';\r\n\r\nexport class AccordionTabForm extends Component {\r\n static displayName = AccordionTabForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n accordionTab: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus,\r\n accordionId: this.props.accordionId,\r\n isEditOnly: this.props.isEditOnly != undefined ? this.props.isEditOnly : false,\r\n isInPopup: this.props.isInPopup != undefined ? this.props.isInPopup : false\r\n };\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newAccordionTab = this.state.accordionTab;\r\n newAccordionTab[e.target.name] = e.target.value;\r\n this.setState({ accordionTab: newAccordionTab });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let accordionTab = this.state.accordionTab;\r\n accordionTab.versionId = this.state.versionId;\r\n accordionTab.pageId = this.state.pageId;\r\n accordionTab.accordionId = this.state.accordionId;\r\n\r\n let url = this.state.formType == \"Update\" ? \"UpdateAccordionTab\" : \"CreateAccordionTab\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(accordionTab),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (!this.state.isEditOnly) {\r\n //var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n //var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"AccordionTab\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n }\r\n\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n if (this.state.isInPopup) {\r\n deleteButton = null;\r\n }\r\n\r\n let title;\r\n let content;\r\n let componentName;\r\n if (this.state.accordionTab != null) {\r\n let accordionTab = this.state.accordionTab;\r\n\r\n title = accordionTab.title;\r\n content = accordionTab.content;\r\n componentName = accordionTab.componentName;\r\n }\r\n\r\n // Display according to the format\r\n let quadEditorWrapperClasses = this.state.versionStatus == 'draft' ? 'editor-wrapper grid-span-4' : 'editor-wrapper disable-wrapper grid-span-4';\r\n let htmlEditorColumnsFields = <>\r\n
\r\n \r\n
\r\n ;\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('AccordionTab')}

\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 {htmlEditorColumnsFields}\r\n
\r\n
\r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetAccordionTab?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n accordionTab: data,\r\n formType: formType\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteAccordionTab?componentId=' + this.state.accordionTab.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default AccordionTabForm;","import React, { useState } from 'react';\r\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEllipsisV } from '@fortawesome/free-solid-svg-icons';\r\n\r\nfunction DnDAccordionTab(props) {\r\n const columnsFromBackend = {\r\n [uuid()]: {\r\n items: props.items\r\n }\r\n };\r\n\r\n const onDragEnd = (result, columns, setColumns) => {\r\n if (!result.destination) return;\r\n const { source, destination } = result;\r\n if (source.droppableId !== destination.droppableId) {//Between columns\r\n const sourceColumn = columns[source.droppableId];\r\n const destColumn = columns[destination.droppableId];\r\n const sourceItems = [...sourceColumn.items];\r\n const destItems = [...destColumn.items];\r\n const [removed] = sourceItems.splice(source.index, 1);\r\n destItems.splice(destination.index, 0, removed);\r\n setColumns({\r\n ...columns,\r\n [source.droppableId]: {\r\n ...sourceColumn,\r\n items: sourceItems\r\n },\r\n [destination.droppableId]: {\r\n ...destColumn,\r\n items: destItems\r\n }\r\n })\r\n }\r\n else {//Within column \r\n const column = columns[source.droppableId];\r\n const copiedItems = [...column.items];\r\n const [removed] = copiedItems.splice(source.index, 1);\r\n copiedItems.splice(destination.index, 0, removed);\r\n setColumns({\r\n ...columns,\r\n [source.droppableId]: {\r\n ...column,\r\n items: copiedItems\r\n }\r\n });\r\n\r\n props.itemOrderUpdate(copiedItems);\r\n }\r\n }\r\n\r\n const [columns, setColumns] = useState(columnsFromBackend);\r\n\r\n return (\r\n
\r\n onDragEnd(result, columns, setColumns)}>\r\n {Object.entries(columns).map(([id, column]) => {\r\n return (\r\n
\r\n
\r\n \r\n {(provided, snapshot) => {\r\n return (\r\n \r\n {column.items.map((item, index) => {\r\n return (\r\n \r\n {(provided, snapshot) => {\r\n return (\r\n \r\n \r\n {item.content}\r\n
\r\n )\r\n }}\r\n \r\n )\r\n })}\r\n {provided.placeholder}\r\n
\r\n )\r\n }}\r\n \r\n
\r\n \r\n )\r\n })}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default DnDAccordionTab;","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport HtmlEditorField from '../../../HtmlEditorField';\r\n\r\nexport class HtmlEditorForm extends Component {\r\n static displayName = HtmlEditorForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n htmlEditor: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus,\r\n isEditOnly: this.props.isEditOnly != undefined ? this.props.isEditOnly : false,\r\n isInPopup: this.props.isInPopup != undefined ? this.props.isInPopup : false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let htmlEditor = this.state.htmlEditor;\r\n htmlEditor.versionId = this.state.versionId;\r\n htmlEditor.pageId = this.state.pageId;\r\n let url = this.state.formType == \"Update\" ? \"UpdateHtmlEditor\" : \"CreateHtmlEditor\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(htmlEditor),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (!this.state.isEditOnly) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"HtmlEditor\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n }\r\n\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n handleChange = (e) => {\r\n let newHtmlEditor = this.state.htmlEditor;\r\n newHtmlEditor[e.target.name] = e.target.value;\r\n this.setState({ htmlEditor: newHtmlEditor });\r\n }\r\n\r\n handleEditorChange = (content) => {\r\n //console.log(content);\r\n let newHtmlEditor = this.state.htmlEditor;\r\n newHtmlEditor['content'] = content;\r\n this.setState({ htmlEditor: newHtmlEditor });\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n if (this.state.isInPopup) {\r\n deleteButton = null;\r\n }\r\n\r\n let content = null;\r\n let componentName = null;\r\n\r\n if (this.state.htmlEditor != null) {\r\n let htmlEditor = this.state.htmlEditor;\r\n content = htmlEditor.content;\r\n componentName = htmlEditor.componentName;\r\n }\r\n\r\n let editorComponentWrapperClasses = this.state.versionStatus == 'draft' ? 'dual-grid__1-2 editor-wrapper' : 'dual-grid__1-2 editor-wrapper disable-wrapper';\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('HtmlEditor')}

\r\n
\r\n\r\n \r\n \r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetHtmlEditor?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n htmlEditor: data,\r\n formType: formType\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteHtmlEditor?componentId=' + this.state.htmlEditor.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n //window.location = '/UpdatePageComponent/' + this.state.pageId;\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default HtmlEditorForm;\r\n\r\n","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport ImageGalleryField from '../../../ImageGalleryField';\r\n\r\nexport class BigText5050Form extends Component {\r\n static displayName = BigText5050Form.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n bigText5050: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newBigText5050 = this.state.bigText5050;\r\n newBigText5050[e.target.name] = e.target.value;\r\n this.setState({ bigText5050: newBigText5050 });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let bigText5050 = this.state.bigText5050;\r\n bigText5050.versionId = this.state.versionId;\r\n bigText5050.pageId = this.state.pageId;\r\n let url = this.state.formType == \"Update\" ? \"UpdateBigText5050\" : \"CreateBigText5050\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(bigText5050),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"BigText5050\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n \r\n //window.location = '/UpdatePageComponent/' + this.state.pageId;\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n let title = null;\r\n let body = null;\r\n let imageLink = null;\r\n let componentName = null;\r\n\r\n if (this.state.bigText5050 != null) {\r\n let bigText5050 = this.state.bigText5050;\r\n title = bigText5050.title;\r\n body = bigText5050.body;\r\n imageLink = bigText5050.imageLink;\r\n componentName = bigText5050.componentName;\r\n }\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n let isImageGalleryFieldDisabled = this.state.versionStatus == 'draft' ? false : true;\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('BigText5050')}

\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetBigText5050?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n bigText5050: data,\r\n formType: formType\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteBigText5050?componentId=' + this.state.bigText5050.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n //window.location = '/UpdatePageComponent/' + this.state.pageId;\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default BigText5050Form;","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport ImageGalleryField from '../../../ImageGalleryField';\r\nimport HtmlEditorField from '../../../HtmlEditorField';\r\n\r\nexport class Contact5050Form extends Component {\r\n static displayName = Contact5050Form.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n contact5050: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n allForms: null,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newContact5050 = this.state.contact5050;\r\n\r\n // Handle direct changes\r\n newContact5050[e.target.name] = e.target.value;\r\n\r\n // Handle indirect changes\r\n if (e.target.name == \"format\") {\r\n newContact5050[\"imageLink\"] = null;\r\n newContact5050[\"content\"] = null;\r\n }\r\n\r\n this.setState({ contact5050: newContact5050 });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let contact5050 = this.state.contact5050;\r\n contact5050.versionId = this.state.versionId;\r\n contact5050.pageId = this.state.pageId;\r\n let url = this.state.formType == \"Update\" ? \"UpdateContact5050\" : \"CreateContact5050\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(contact5050),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"Contact5050\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n \r\n //window.location = '/UpdatePageComponent/' + this.state.pageId;\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n let title = null;\r\n let description = null;\r\n let formId = null;\r\n let imageLink = null;\r\n let componentName = null;\r\n let content = null;\r\n let format = null;\r\n\r\n if (this.state.contact5050 != null) {\r\n let contact5050 = this.state.contact5050;\r\n title = contact5050.title;\r\n description = contact5050.description;\r\n formId = contact5050.formId;\r\n imageLink = contact5050.imageLink;\r\n componentName = contact5050.componentName;\r\n content = contact5050.content;\r\n format = contact5050.format;\r\n }\r\n\r\n let formFieldOptions = [];\r\n formFieldOptions.push();\r\n if (this.state.allForms != null) {\r\n let allForms = this.state.allForms;\r\n for (var i = 0; i < allForms.length; i++) {\r\n let formOptKey = 'formOpt' + (i+1);\r\n formFieldOptions.push();\r\n }\r\n }\r\n\r\n let isImageGalleryFieldDisabled = this.state.versionStatus == 'draft' ? false : true;\r\n let editorWrapper = this.state.versionStatus == 'draft' ? 'editor-wrapper' : 'editor-wrapper disable-wrapper';\r\n let imageLinkField = <>\r\n \r\n \r\n \r\n ;\r\n let contentField = <>\r\n \r\n
\r\n \r\n
\r\n ;\r\n if (format == \"imageLeft\") {\r\n contentField = \"\";\r\n }\r\n else if (format == \"contentLeft\") {\r\n imageLinkField = \"\";\r\n }\r\n else {\r\n contentField = \"\";\r\n imageLinkField = \"\";\r\n }\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('Contact5050')}

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n {imageLinkField}\r\n\r\n {contentField}\r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetContact5050?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n\r\n //Get all form data\r\n const formResponse = await fetch('AdminForms/GetAllForms', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const formData = await formResponse.json();\r\n\r\n this.setState({\r\n contact5050: data,\r\n formType: formType,\r\n allForms: formData\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteContact5050?componentId=' + this.state.contact5050.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n //window.location = '/UpdatePageComponent/' + this.state.pageId;\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default Contact5050Form;","import React, { Component } from 'react';\r\nimport './tagsandchips.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faTimesCircle } from '@fortawesome/free-solid-svg-icons';\r\n\r\n/* This version of tags provides the user with a selection of tags to choose from. */\r\nexport class TagsBySelection extends Component {\r\n static displayName = TagsBySelection.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n tags: [], // [{id,tag:{key,value} }] *id is relevant only to this component\r\n tagSelections: [], // [{key,value}]\r\n isRequired: this.props.isRequired != undefined ? this.props.isRequired : false,\r\n allowDuplicates: this.props.allowDuplicates != undefined ? this.props.allowDuplicates : false,\r\n allowDelete: this.props.allowDelete != undefined ? this.props.allowDelete : true,\r\n showInput: this.props.showInput != undefined ? this.props.showInput : true,\r\n //minTags: this.props.minTags != undefined ? this.props.minTags : -1,\r\n //maxTags: this.props.maxTags != undefined ? this.props.maxTags : -1\r\n tagsByGrid: this.props.tagsByGrid != undefined ? this.props.tagsByGrid : [], // An array of a set of points [[rowStart, rowEnd, columnStart, columnEnd]]\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n let tags = this.props.tags;// This should be an array of key/value pairs where the key will be saved and the value will be displayed\r\n let tagSelections = this.props.tagSelections;// This should be an array of key/value pairs\r\n\r\n //console.log(tags);\r\n //console.log(tagSelections);\r\n\r\n let tagPairArray = [];\r\n if (tags != undefined && tags != \"\" && tags != null) {\r\n for (var i = 0; i < tags.length; i++) {\r\n tagPairArray.push({ id: i, tag: { key: tags[i].key, value: tags[i].value } });\r\n }\r\n }\r\n\r\n this.setState({\r\n tags: tagPairArray,\r\n tagSelections: tagSelections\r\n });\r\n }\r\n\r\n /* Send data back to parent component */\r\n updateParentComponent() {\r\n let tagKeyOnlyArray = [];\r\n for (var i = 0; i < this.state.tags.length; i++) {\r\n tagKeyOnlyArray.push(this.state.tags[i].tag.key);\r\n }\r\n\r\n let tagString = tagKeyOnlyArray.join();\r\n let nameValuePair = { name: this.props.name, value: tagString };\r\n let fakeEvent = { target: nameValuePair };\r\n this.props.tagUpdate(fakeEvent);\r\n }\r\n\r\n /* Get the largest current tag id and return one larger */\r\n getNextTagId() {\r\n let currentTags = this.state.tags;\r\n let largestId = 0;\r\n for (var i = 0; i < currentTags.length; i++) {\r\n if (currentTags[i].id > largestId) largestId = currentTags[i].id;\r\n }\r\n return largestId + 1;\r\n }\r\n\r\n /* Convert selection to tags */\r\n handleChange = (e) => {\r\n let tagKey = e.target.value;\r\n let tag;\r\n for (var i = 0; i < this.state.tagSelections.length; i++) {\r\n if (this.state.tagSelections[i].key == tagKey) {\r\n tag = this.state.tagSelections[i];\r\n break;\r\n }\r\n }\r\n\r\n document.getElementById('tagDDL').value = \"\";// Reset the tag selection field\r\n if (this.state.allowDuplicates) {\r\n let newTags = this.state.tags;\r\n newTags.push({ id: this.getNextTagId(), tag: { key: tag.key, value: tag.value } });\r\n this.setState({\r\n tags: newTags\r\n });\r\n this.updateParentComponent();// Send data back to parent component\r\n }\r\n else {\r\n if (!this.isTagExisting(tagKey)) { // Check if the tag already exists\r\n let newTags = this.state.tags;\r\n newTags.push({ id: this.getNextTagId(), tag: { key: tag.key, value: tag.value } });\r\n this.setState({\r\n tags: newTags\r\n });\r\n this.updateParentComponent();// Send data back to parent component\r\n }\r\n else {\r\n alert('Tag already exists');\r\n }\r\n }\r\n }\r\n\r\n /* Return true if a tag is already in the array, otherwise return false. Check by tag key (not id) */\r\n isTagExisting(tagKey) {\r\n let currentTags = this.state.tags;\r\n let isExisting = false;\r\n for (var i = 0; i < currentTags.length; i++) {\r\n if (currentTags[i].tag.key == tagKey) {\r\n isExisting = true;\r\n break;\r\n }\r\n }\r\n return isExisting;\r\n }\r\n\r\n /* Remove tag from array */\r\n removeTag = (tagId) => {\r\n let currentTags = this.state.tags;\r\n for (var i = 0; i < currentTags.length; i++) {\r\n if (currentTags[i].id == tagId) {\r\n currentTags.splice(i, 1);\r\n }\r\n }\r\n this.setState({ tags: currentTags });\r\n\r\n this.updateParentComponent();// Send data back to parent component\r\n }\r\n\r\n render() {\r\n let tags = this.state.tags;\r\n let tagSelections = this.state.tagSelections;\r\n\r\n //Current tags\r\n let tagIconWrapperClass = \"\";\r\n let tagIcons = [];\r\n if (this.state.tagsByGrid.length > 0) { // Create a grid of tags\r\n let tagsByGrid = this.state.tagsByGrid;\r\n for (var i = 0; i < tags.length; i++) {\r\n if (typeof tagsByGrid[i] !== 'undefined') {\r\n tagIcons.push(\r\n
\r\n {tags[i].tag.value}\r\n
\r\n );\r\n }\r\n else { // Show extra tags if the gird and tag counts do not align, if this happens, there is an issue with the amount of grid arrays \r\n tagIcons.push(
{tags[i].tag.value}
);\r\n }\r\n }\r\n tagIconWrapperClass = \"tag-grid-wrapper\";\r\n }\r\n else { // Create normal tags\r\n for (var i = 0; i < tags.length; i++) {\r\n if (this.state.allowDelete) {\r\n tagIcons.push(
{tags[i].tag.value}
);\r\n }\r\n else {\r\n tagIcons.push(
{tags[i].tag.value}
);\r\n }\r\n }\r\n tagIconWrapperClass = \"tag-wrapper\";\r\n }\r\n \r\n //Tag Options\r\n let isRequired = (this.state.isRequired && this.state.tags.length < 1) ? true : false;\r\n //let minTagCount = (this.state.minTags > -1)\r\n let tagOpts = [];\r\n tagOpts.push();\r\n for (var i = 0; i < tagSelections.length; i++) {\r\n //Only add if duplicate is allowed or it is not already selected\r\n if ((!this.state.allowDuplicates && !this.isTagExisting(tagSelections[i].key)) || (this.state.allowDuplicates)) {\r\n let optKey = 'tagOpt' + (i + 1);\r\n tagOpts.push();\r\n }\r\n }\r\n let tagDDL = this.state.showInput ? : \"\";\r\n\r\n return (\r\n
\r\n {tagDDL}\r\n
\r\n {tagIcons}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default TagsBySelection;","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport TagsBySelection from '../../TagsAndChips/TagsBySelection';\r\n\r\nexport class Features1Form extends Component {\r\n static displayName = Features1Form.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n features1: null,\r\n singleFeatures1s: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newFeatures1 = this.state.features1;\r\n newFeatures1[e.target.name] = e.target.value;\r\n this.setState({ features1: newFeatures1 });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let features1 = this.state.features1;\r\n features1.versionId = this.state.versionId;\r\n features1.pageId = this.state.pageId;\r\n let url = this.state.formType == \"Update\" ? \"UpdateFeatures1\" : \"CreateFeatures1\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(features1),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"Features1\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n \r\n //window.location = '/UpdatePageComponent/' + this.state.pageId;\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n let singleFeatures1IdList = null;\r\n let componentName = null;\r\n //let allSingleFeatures = [];\r\n\r\n let isFeatures1Set = false;\r\n if (this.state.features1 != null) {\r\n let features1 = this.state.features1;\r\n singleFeatures1IdList = features1.singleFeatures1IdList;\r\n componentName = features1.componentName;\r\n\r\n isFeatures1Set = true;\r\n }\r\n\r\n let singleFeatures1ObjArray = [];\r\n let tagSelections = [];\r\n if (isFeatures1Set && this.state.singleFeatures1s != null) {\r\n //Get all options\r\n for (var i = 0; i < this.state.singleFeatures1s.length; i++) {\r\n let singleFeatures1 = this.state.singleFeatures1s[i];\r\n if (singleFeatures1.pageId == this.state.pageId) {\r\n let sfName = (singleFeatures1.componentName != null && singleFeatures1.componentName != \"\") ? singleFeatures1.componentName + \"-V\" + singleFeatures1.versionId : singleFeatures1.id.toString() + \"-V\" + singleFeatures1.versionId;\r\n tagSelections.push({ key: singleFeatures1.id.toString(), value: sfName });\r\n }\r\n }\r\n\r\n //Get current tags\r\n if (singleFeatures1IdList != null && singleFeatures1IdList != \"\" && singleFeatures1IdList != undefined) {\r\n let singleFeatures1IdArray = singleFeatures1IdList.split(',');\r\n for (var i = 0; i < singleFeatures1IdArray.length; i++) {\r\n let sfId = singleFeatures1IdArray[i];\r\n for (var j = 0; j < this.state.singleFeatures1s.length; j++) {\r\n let singleFeatures1 = this.state.singleFeatures1s[j];\r\n if (singleFeatures1.id.toString() == sfId) {\r\n let sfName = (singleFeatures1.componentName != null && singleFeatures1.componentName != \"\") ? singleFeatures1.componentName : singleFeatures1.id.toString();\r\n singleFeatures1ObjArray.push({ key: singleFeatures1.id.toString(), value: sfName });\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n let allowDelete = this.state.versionStatus == 'draft' ? true : false;\r\n let singleFeatures1IdListField = isFeatures1Set ?\r\n : \"\";\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('Features1')}

\r\n
\r\n\r\n \r\n \r\n\r\n \r\n {/**/}\r\n {singleFeatures1IdListField}\r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetFeatures1?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n features1: data.features1,\r\n singleFeatures1s: data.singleFeatures1s,\r\n formType: formType\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteFeatures1?componentId=' + this.state.features1.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n //window.location = '/UpdatePageComponent/' + this.state.pageId;\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default Features1Form;","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport ImageGalleryField from '../../../ImageGalleryField';\r\n\r\nexport class Grid5050Form extends Component {\r\n static displayName = Grid5050Form.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n grid5050: null,\r\n htmlEditors: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newGrid5050 = this.state.grid5050;\r\n if (e.target.name == \"htmlEditorId\") {\r\n newGrid5050[e.target.name] = parseInt(e.target.value, 10);\r\n }\r\n else {\r\n newGrid5050[e.target.name] = e.target.value;\r\n }\r\n this.setState({ grid5050: newGrid5050 });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let grid5050 = this.state.grid5050;\r\n grid5050.versionId = this.state.versionId;\r\n grid5050.pageId = this.state.pageId;\r\n console.log(grid5050);\r\n let url = this.state.formType == \"Update\" ? \"UpdateGrid5050\" : \"CreateGrid5050\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(grid5050),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"Grid5050\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n \r\n //window.location = '/UpdatePageComponent/' + this.state.pageId;\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n let htmlEditorOptions = [];\r\n let selectedId = null;\r\n let imageLink = null;\r\n let componentName = null;\r\n\r\n htmlEditorOptions.push();\r\n if (this.state.grid5050 != null && this.state.htmlEditors != null) {\r\n let grid5050 = this.state.grid5050;\r\n selectedId = grid5050.htmlEditorId;\r\n imageLink = grid5050.imageLink;\r\n componentName = grid5050.componentName;\r\n for (var i = 0; i < this.state.htmlEditors.length; i++) {\r\n let htmlEditor = this.state.htmlEditors[i];\r\n if (htmlEditor.pageId == this.state.pageId) {\r\n let htmlEditorKey = \"htmlEditor\" + (i + 1);\r\n\r\n let ddlDisplay = htmlEditor.componentName != null ? htmlEditor.componentName + \"-V\" + htmlEditor.versionId : htmlEditor.content.substring(0, 100) + \"-V\" + htmlEditor.versionId;\r\n htmlEditorOptions.push();\r\n }\r\n }\r\n }\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n let isImageGalleryFieldDisabled = this.state.versionStatus == 'draft' ? false : true;\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('Grid5050')}

\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetGrid5050?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n grid5050: data.grid5050,\r\n htmlEditors: data.htmlEditors,\r\n formType: formType\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteGrid5050?componentId=' + this.state.grid5050.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n //window.location = '/UpdatePageComponent/' + this.state.pageId;\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default Grid5050Form;","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\n\r\nexport class ActionButtonForm extends Component {\r\n static displayName = ActionButtonForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n actionButton: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newActionButton = this.state.actionButton;\r\n newActionButton[e.target.name] = e.target.value;\r\n this.setState({ actionButton: newActionButton });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let actionButton = this.state.actionButton;\r\n actionButton.versionId = this.state.versionId;\r\n actionButton.pageId = this.state.pageId;\r\n let url = this.state.formType == \"Update\" ? \"UpdateActionButton\" : \"CreateActionButton\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(actionButton),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"ActionButton\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n \r\n //window.location = '/UpdatePageComponent/' + this.state.pageId;\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n let link = null;\r\n let text = null;\r\n let componentName = null;\r\n\r\n if (this.state.actionButton != null) {\r\n let actionButton = this.state.actionButton;\r\n link = actionButton.link;\r\n text = actionButton.text;\r\n componentName = actionButton.componentName;\r\n }\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('ActionButton')}

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetActionButton?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n actionButton: data,\r\n formType: formType\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteActionButton?componentId=' + this.state.actionButton.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n //window.location = '/UpdatePageComponent/' + this.state.pageId;\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default ActionButtonForm;","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\n\r\nexport class SingleFeatures1Form extends Component {\r\n static displayName = SingleFeatures1Form.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n singleFeatures1: null,\r\n htmlEditors: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newSingleFeatures1 = this.state.singleFeatures1;\r\n if (e.target.name == \"htmlEditorId\") {\r\n newSingleFeatures1[e.target.name] = parseInt(e.target.value, 10);\r\n }\r\n else {\r\n newSingleFeatures1[e.target.name] = e.target.value;\r\n }\r\n this.setState({ singleFeatures1: newSingleFeatures1 });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let singleFeatures1 = this.state.singleFeatures1;\r\n singleFeatures1.versionId = this.state.versionId;\r\n singleFeatures1.pageId = this.state.pageId;\r\n let url = this.state.formType == \"Update\" ? \"UpdateSingleFeatures1\" : \"CreateSingleFeatures1\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(singleFeatures1),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"SingleFeatures1\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n \r\n //window.location = '/UpdatePageComponent/' + this.state.pageId;\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n let htmlEditorOptions = [];\r\n let selectedId = null;\r\n let componentName = null;\r\n\r\n htmlEditorOptions.push();\r\n if (this.state.singleFeatures1 != null && this.state.htmlEditors != null) {\r\n let singleFeatures1 = this.state.singleFeatures1;\r\n selectedId = singleFeatures1.htmlEditorId;\r\n componentName = singleFeatures1.componentName;\r\n for (var i = 0; i < this.state.htmlEditors.length; i++) {\r\n let htmlEditor = this.state.htmlEditors[i];\r\n if (htmlEditor.pageId == this.state.pageId) {\r\n let htmlEditorKey = \"htmlEditor\" + (i + 1);\r\n\r\n let ddlDisplay = htmlEditor.componentName != null ? htmlEditor.componentName + \"-V\" + htmlEditor.versionId : htmlEditor.content.substring(0, 100) + \"-V\" + htmlEditor.versionId;\r\n htmlEditorOptions.push();\r\n }\r\n }\r\n }\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('SingleFeatures1')}

\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetSingleFeatures1?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n singleFeatures1: data.singleFeatures1,\r\n htmlEditors: data.htmlEditors,\r\n formType: formType\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteSingleFeatures1?componentId=' + this.state.singleFeatures1.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n //window.location = '/UpdatePageComponent/' + this.state.pageId;\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default SingleFeatures1Form;\r\n","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\n\r\nexport class HRSeparatorForm extends Component {\r\n static displayName = HRSeparatorForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n hrSeparator: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n if (this.state.hrSeparator != null && !isNaN(this.state.hrSeparator.id)) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"HRSeparator\", this.state.hrSeparator.id, parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n \r\n //window.location = '/UpdatePageComponent/' + this.state.pageId;\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(\"Error\");\r\n }\r\n }\r\n\r\n render() {\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n
\r\n
\r\n

{componentMap.componentTypeDisplay('HRSeparator')}

\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetHRSeparator', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n hrSeparator: data,\r\n formType: formType\r\n });\r\n }\r\n}\r\n\r\nexport default HRSeparatorForm;","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\n\r\nexport class CardForm extends Component {\r\n static displayName = CardForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n card: null,\r\n htmlEditors: null,\r\n calendars: null,\r\n bannerContainers: null,\r\n eventTables: null,\r\n blogTables: null,\r\n newsTables: null,\r\n birthdayTables: null,\r\n documentTables: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus,\r\n isEditOnly: this.props.isEditOnly != undefined ? this.props.isEditOnly : false,\r\n isInPopup: this.props.isInPopup != undefined ? this.props.isInPopup : false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newCard = this.state.card;\r\n\r\n //Update target\r\n if (e.target.name == \"contentId\") {\r\n newCard[e.target.name] = parseInt(e.target.value, 10);\r\n }\r\n else {\r\n newCard[e.target.name] = e.target.value;\r\n }\r\n\r\n //Update consequences\r\n if (e.target.name == \"contentType\") {\r\n newCard['contentId'] = null;\r\n }\r\n else if (e.target.name == \"titleStyle\") {\r\n if (e.target.value != \"View\" && e.target.value != \"ViewAll\") {\r\n newCard['viewMoreLink'] = null;\r\n }\r\n }\r\n\r\n this.setState({ card: newCard });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let card = this.state.card;\r\n card.versionId = this.state.versionId;\r\n card.pageId = this.state.pageId;\r\n let url = this.state.formType == \"Update\" ? \"UpdateCard\" : \"CreateCard\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(card),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (!this.state.isEditOnly) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"Card\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n }\r\n\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n let saveButton = ;\r\n if (this.state.isInPopup) {\r\n deleteButton = null;\r\n }\r\n\r\n let contentOptions = [];\r\n \r\n let title = null;\r\n let titleStyle = null;\r\n let contentId = null;\r\n let contentType = null;\r\n let contentStyle = null;\r\n let componentName = null;\r\n let cardStyle = null;\r\n let viewMoreLink = null;\r\n\r\n //Set card values\r\n if (this.state.card != null) {\r\n let card = this.state.card;\r\n title = card.title;\r\n titleStyle = card.titleStyle;\r\n contentId = card.contentId;\r\n contentType = card.contentType;\r\n contentStyle = card.contentStyle;\r\n componentName = card.componentName;\r\n cardStyle = card.cardStyle;\r\n viewMoreLink = card.viewMoreLink;\r\n }\r\n\r\n //Set content options\r\n contentOptions.push();\r\n if (this.state.card != null) {\r\n if (contentType == \"HtmlEditor\" && this.state.htmlEditors != null) {\r\n for (var i = 0; i < this.state.htmlEditors.length; i++) {\r\n let contentOpt = this.state.htmlEditors[i];\r\n if (contentOpt.pageId == this.state.pageId) {\r\n let contentOptKey = \"contentOpt\" + (i + 1);\r\n\r\n let ddlDisplay = contentOpt.componentName != null && contentOpt.componentName != \"\" ? contentOpt.componentName + \"-V\" + contentOpt.versionId : contentOpt.content.substring(0, 100) + \"-V\" + contentOpt.versionId;\r\n contentOptions.push();\r\n }\r\n }\r\n }\r\n else if (contentType == \"Calendar\" && this.state.calendars != null) {\r\n for (var i = 0; i < this.state.calendars.length; i++) {\r\n let contentOpt = this.state.calendars[i];\r\n if (contentOpt.pageId == this.state.pageId) {\r\n let contentOptKey = \"contentOpt\" + (i + 1);\r\n\r\n let ddlDisplay = contentOpt.componentName != null && contentOpt.componentName != \"\" ? contentOpt.componentName + \"-V\" + contentOpt.versionId : contentOpt.id + \"-V\" + contentOpt.versionId;\r\n contentOptions.push();\r\n }\r\n }\r\n }\r\n else if (contentType == \"BannerContainer\" && this.state.bannerContainers != null) {\r\n for (var i = 0; i < this.state.bannerContainers.length; i++) {\r\n let contentOpt = this.state.bannerContainers[i];\r\n if (contentOpt.pageId == this.state.pageId) {\r\n let contentOptKey = \"contentOpt\" + (i + 1);\r\n\r\n let ddlDisplay = contentOpt.componentName != null && contentOpt.componentName != \"\" ? contentOpt.componentName + \"-V\" + contentOpt.versionId : contentOpt.id + \"-V\" + contentOpt.versionId;\r\n contentOptions.push();\r\n }\r\n }\r\n }\r\n else if (contentType == \"EventTable\" && this.state.eventTables != null) {\r\n for (var i = 0; i < this.state.eventTables.length; i++) {\r\n let contentOpt = this.state.eventTables[i];\r\n if (contentOpt.pageId == this.state.pageId) {\r\n let contentOptKey = \"contentOpt\" + (i + 1);\r\n\r\n let ddlDisplay = contentOpt.componentName != null && contentOpt.componentName != \"\" ? contentOpt.componentName + \"-V\" + contentOpt.versionId : contentOpt.id + \"-V\" + contentOpt.versionId;\r\n contentOptions.push();\r\n }\r\n }\r\n }\r\n else if (contentType == \"BlogTable\" && this.state.blogTables != null) {\r\n for (var i = 0; i < this.state.blogTables.length; i++) {\r\n let contentOpt = this.state.blogTables[i];\r\n if (contentOpt.pageId == this.state.pageId) {\r\n let contentOptKey = \"contentOpt\" + (i + 1);\r\n\r\n let ddlDisplay = contentOpt.componentName != null && contentOpt.componentName != \"\" ? contentOpt.componentName + \"-V\" + contentOpt.versionId : contentOpt.id + \"-V\" + contentOpt.versionId;\r\n contentOptions.push();\r\n }\r\n }\r\n }\r\n else if (contentType == \"NewsTable\" && this.state.newsTables != null) {\r\n for (var i = 0; i < this.state.newsTables.length; i++) {\r\n let contentOpt = this.state.newsTables[i];\r\n if (contentOpt.pageId == this.state.pageId) {\r\n let contentOptKey = \"contentOpt\" + (i + 1);\r\n\r\n let ddlDisplay = contentOpt.componentName != null && contentOpt.componentName != \"\" ? contentOpt.componentName + \"-V\" + contentOpt.versionId : contentOpt.id + \"-V\" + contentOpt.versionId;\r\n contentOptions.push();\r\n }\r\n }\r\n }\r\n else if (contentType == \"BirthdayTable\" && this.state.birthdayTables != null) {\r\n for (var i = 0; i < this.state.birthdayTables.length; i++) {\r\n let contentOpt = this.state.birthdayTables[i];\r\n if (contentOpt.pageId == this.state.pageId) {\r\n let contentOptKey = \"contentOpt\" + (i + 1);\r\n\r\n let ddlDisplay = contentOpt.componentName != null && contentOpt.componentName != \"\" ? contentOpt.componentName + \"-V\" + contentOpt.versionId : contentOpt.id + \"-V\" + contentOpt.versionId;\r\n contentOptions.push();\r\n }\r\n }\r\n }\r\n else if (contentType == \"DocumentTable\" && this.state.documentTables != null) {\r\n for (var i = 0; i < this.state.documentTables.length; i++) {\r\n let contentOpt = this.state.documentTables[i];\r\n if (contentOpt.pageId == this.state.pageId) {\r\n let contentOptKey = \"contentOpt\" + (i + 1);\r\n\r\n let ddlDisplay = contentOpt.componentName != null && contentOpt.componentName != \"\" ? contentOpt.componentName + \"-V\" + contentOpt.versionId : contentOpt.id + \"-V\" + contentOpt.versionId;\r\n contentOptions.push();\r\n }\r\n }\r\n }\r\n }\r\n\r\n let contentIdField = contentType != null && contentType != \"\" ?\r\n \r\n : ;\r\n\r\n let viewMoreLinkField = (titleStyle == \"View\" || titleStyle == \"ViewAll\") ?\r\n <>\r\n \r\n \r\n : \"\";\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('Card')}

\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n {viewMoreLinkField}\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n {contentIdField}\r\n\r\n
\r\n {saveButton}\r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetCard?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n card: data.card,\r\n htmlEditors: data.htmlEditors,\r\n calendars: data.calendars,\r\n bannerContainers: data.bannerContainers,\r\n eventTables: data.eventTables,\r\n blogTables: data.blogTables,\r\n newsTables: data.newsTables,\r\n birthdayTables: data.birthdayTables,\r\n documentTables: data.documentTables,\r\n formType: formType\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteCard?componentId=' + this.state.card.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default CardForm;","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\n\r\nexport class CalendarForm extends Component {\r\n static displayName = CalendarForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n calendar: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus,\r\n isEditOnly: this.props.isEditOnly != undefined ? this.props.isEditOnly : false,\r\n isInPopup: this.props.isInPopup != undefined ? this.props.isInPopup : false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let calendar = this.state.calendar;\r\n calendar.versionId = this.state.versionId;\r\n calendar.pageId = this.state.pageId;\r\n let url = this.state.formType == \"Update\" ? \"UpdateCalendar\" : \"CreateCalendar\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(calendar),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (!this.state.isEditOnly) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"Calendar\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n }\r\n\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n handleChange = (e) => {\r\n let newCalendar = this.state.calendar;\r\n newCalendar[e.target.name] = e.target.value;\r\n this.setState({ calendar: newCalendar });\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n if (this.state.isInPopup) {\r\n deleteButton = null;\r\n }\r\n\r\n let componentName;\r\n let format;\r\n\r\n if (this.state.calendar != null) {\r\n let calendar = this.state.calendar;\r\n componentName = calendar.componentName;\r\n format = calendar.format;\r\n }\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('Calendar')}

\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetCalendar?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n calendar: data,\r\n formType: formType\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteCalendar?componentId=' + this.state.calendar.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default CalendarForm;\r\n","export class Services {\r\n /* Return a formated date and time */\r\n formatDateTime(dateTime, includeTime, isTextFormat, includeDay, isFullWords) {\r\n let timestamp = new Date(dateTime.toString());\r\n\r\n let year = timestamp.getFullYear();\r\n let month = timestamp.getMonth().toString().length === 1 ? '0' + (timestamp.getMonth() + 1).toString() : timestamp.getMonth() + 1;\r\n let date = timestamp.getDate().toString().length === 1 ? '0' + (timestamp.getDate()).toString() : timestamp.getDate();\r\n let day = timestamp.getDay();\r\n let hours = timestamp.getHours().toString().length === 1 ? '0' + timestamp.getHours().toString() : timestamp.getHours();\r\n let midday = hours >= 12 ? \"PM\" : \"AM\";\r\n if (hours == 0) {\r\n hours = 12;\r\n }\r\n if (hours >= 13) {\r\n hours = hours - 12;\r\n if (hours.toString().length === 1) hours = '0' + hours;\r\n }\r\n let minutes = timestamp.getMinutes().toString().length === 1 ? '0' + timestamp.getMinutes().toString() : timestamp.getMinutes();\r\n\r\n var abvMonths = isFullWords ?\r\n [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"] :\r\n [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\r\n var abvWeekDays = isFullWords ?\r\n [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"] :\r\n [\"Sun\", \"Mon\", \"Tues\", \"Wed\", \"Thur\", \"Fri\", \"Sat\"];\r\n\r\n let timestampFormat;\r\n if (isTextFormat) {\r\n if (includeDay) {\r\n timestampFormat = includeTime ?\r\n (abvWeekDays[day] + \", \" + abvMonths[month - 1] + \" \" + date + \", \" + year + \" \" + hours + \":\" + minutes + \" \" + midday) :\r\n (abvWeekDays[day] + \", \" + abvMonths[month - 1] + \" \" + date + \", \" + year);\r\n }\r\n else {\r\n timestampFormat = includeTime ?\r\n (abvMonths[month - 1] + \" \" + date + \", \" + year + \" \" + hours + \":\" + minutes + \" \" + midday) :\r\n (abvMonths[month - 1] + \" \" + date + \", \" + year);\r\n }\r\n }\r\n else {\r\n timestampFormat = includeTime ?\r\n (month + \"/\" + date + \"/\" + year + \" \" + hours + \":\" + minutes + \" \" + midday) :\r\n (month + \"/\" + date + \"/\" + year);\r\n }\r\n\r\n return timestampFormat;\r\n }\r\n}\r\n\r\nconst services = new Services();\r\nexport default services;","import React, { Component } from 'react';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons';\r\nimport Services from '../Services';\r\n\r\nexport class BlogTable extends Component {\r\n static displayName = BlogTable.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n blogTable: null,\r\n blogs: [],\r\n filteredBlogs: [],\r\n blogConfiguration: null,\r\n currentFilters: [],\r\n searchFilters: [],\r\n paginationBlogIndex: 0,\r\n cardsPerPagination: 6\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n formatAuthor(blog) {\r\n let author = blog.uploaderFirstName + \" \" + blog.uploaderLastName;\r\n return author;\r\n }\r\n\r\n sendToBlogPage(blogLink) {\r\n return window.location = blogLink;\r\n }\r\n\r\n filterBlogs(newFilter, action) {\r\n let currentFilters = this.state.currentFilters;\r\n let searchFilters = this.state.searchFilters;\r\n\r\n //Handle the addition and removal of filters\r\n if (action == \"Add\") {\r\n if (newFilter != null && !currentFilters.includes(newFilter)) {\r\n currentFilters.push(newFilter);\r\n }\r\n }\r\n else if (action == \"Remove\") {\r\n var index = currentFilters.indexOf(newFilter);\r\n if (index !== -1) {\r\n currentFilters.splice(index, 1);\r\n }\r\n }\r\n else if (action == \"Search\") {\r\n //Remove all filters from previous search\r\n if (searchFilters.length > 0) {\r\n for (var i = 0; i < searchFilters.length; i++) {\r\n let searchFilter = searchFilters[i];\r\n\r\n var currentFilterIndex = currentFilters.indexOf(searchFilter);\r\n if (currentFilterIndex !== -1) {\r\n currentFilters.splice(currentFilterIndex, 1);\r\n }\r\n }\r\n }\r\n\r\n //Add new filters from search\r\n if (newFilter != null || newFilter != \"\" || newFilter != undefined) {\r\n let terms = newFilter.split(' ');\r\n for (var i = 0; i < terms.length; i++) {\r\n let term = terms[i];\r\n if (!currentFilters.includes(term) && term != null && term != \"\" && term != undefined) {\r\n currentFilters.push(term);\r\n }\r\n }\r\n searchFilters = terms;\r\n }\r\n }\r\n\r\n //Handle object filtering \r\n if (currentFilters.length > 0) {\r\n let filteredBlogs = this.state.blogs;\r\n let newFilteredBlogs = [];\r\n for (var i = 0; i < filteredBlogs.length; i++) {\r\n let blog = filteredBlogs[i];\r\n\r\n let title = blog.title.toLowerCase();\r\n let teaser = blog.teaser.toLowerCase();\r\n let author = this.formatAuthor(blog).toLowerCase();\r\n let timestamp = Services.formatDateTime(blog.timestamp, false, true, false, true).toLowerCase();\r\n let monthYearTimestamp = this.getMonthYearTagFormat(blog.timestamp).toLowerCase();\r\n let tags = this.getDistinctBlogTags(blog);\r\n let lowerTags = [];\r\n for (var j = 0; j < tags.length; j++) {\r\n let tag = tags[j];\r\n lowerTags.push(tag.toLowerCase());\r\n }\r\n\r\n for (var j = 0; j < currentFilters.length; j++) {\r\n let filter = currentFilters[j].toLowerCase();\r\n\r\n //console.log(filter);\r\n\r\n // Blog must contain all tags\r\n if (title.includes(filter) ||\r\n teaser.includes(filter) ||\r\n author.includes(filter) ||\r\n timestamp.includes(filter) ||\r\n monthYearTimestamp.includes(filter) ||\r\n lowerTags.includes(filter)) {\r\n\r\n if ((j + 1) == currentFilters.length) {\r\n newFilteredBlogs.push(blog);\r\n break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.setState({\r\n currentFilters: currentFilters,\r\n searchFilters: searchFilters,\r\n filteredBlogs: newFilteredBlogs,\r\n paginationBlogIndex: 0\r\n });\r\n }\r\n else {\r\n this.setState({\r\n filteredBlogs: this.state.blogs,\r\n paginationBlogIndex: 0\r\n });\r\n }\r\n }\r\n\r\n searchBlogs = (e) => {\r\n let searchText = e.target.value;\r\n\r\n this.filterBlogs(searchText, \"Search\");\r\n }\r\n\r\n getDistinctBlogTags(blog) {\r\n let blogCategories = blog.categories != null && blog.categories != \"\" && blog.categories != undefined ? blog.categories.split(',') : [];\r\n let blogTypes = blog.types != null && blog.types != \"\" && blog.types != undefined ? blog.types.split(',') : [];\r\n let tags = blogCategories;\r\n blogTypes.forEach(tag => { if (!tags.includes(tag)) { tags.push(tag) } });\r\n\r\n return tags;\r\n }\r\n\r\n sortTagsCounts(tagA, tagB) {\r\n const countA = tagA.value;\r\n const countB = tagB.value;\r\n\r\n let comparison = 0;\r\n if (countA > countB) {\r\n comparison = -1;\r\n }\r\n else if (countA < countB) {\r\n comparison = 1;\r\n }\r\n return comparison;\r\n }\r\n\r\n getMonthYearTagFormat(dateTime) {\r\n let timestamp = new Date(dateTime.toString());\r\n\r\n let year = timestamp.getFullYear();\r\n let month = timestamp.getMonth().toString().length === 1 ? '0' + (timestamp.getMonth() + 1).toString() : timestamp.getMonth() + 1;\r\n\r\n var abvMonths = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\r\n\r\n let tagFormat = abvMonths[month - 1] + \" \" + year;\r\n return tagFormat;\r\n }\r\n\r\n handlePagination = (newIndex) => {\r\n this.setState({ paginationBlogIndex: newIndex });\r\n }\r\n\r\n handleArchiveDisplay = (action) => {\r\n let archiveTags = document.getElementsByClassName(\"hidden-archive-tag\");\r\n if (archiveTags != undefined) {\r\n for (var i = 0; i < archiveTags.length; i++) {\r\n let archiveTag = archiveTags[i];\r\n archiveTag.style.display = action == \"show\" ? \"block\" : \"none\";\r\n }\r\n\r\n let showArchivesBtn = document.getElementById(\"showArchivesBtn\");\r\n let hideArchivesBtn = document.getElementById(\"hideArchivesBtn\");\r\n if (action == \"show\") {\r\n showArchivesBtn.style.display = \"none\";\r\n hideArchivesBtn.style.display = \"block\";\r\n }\r\n else {//hide\r\n showArchivesBtn.style.display = \"block\";\r\n hideArchivesBtn.style.display = \"none\";\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n let blogTable = this.state.blogTable;\r\n let blogs = this.state.filteredBlogs;\r\n\r\n let featuredBlog;\r\n\r\n //Set up current filters\r\n let currentFilterSet = [];\r\n let currentFilterDetails;\r\n for (var i = 0; i < this.state.currentFilters.length; i++) {\r\n let currentFilter = this.state.currentFilters[i];\r\n let filterKey = \"currentFilter\" + i;\r\n let functionalTag = {currentFilter};\r\n currentFilterSet.push(functionalTag);\r\n //if (i + 1 < this.state.currentFilters.length) {\r\n // currentFilterSet.push(\", \");\r\n //}\r\n }\r\n //Add current filter details\r\n let currentFilterInfo = ;\r\n let currentFilterTitle = Current Filters: ;\r\n currentFilterDetails = <>\r\n {/*{currentFilterInfo}*/}\r\n {currentFilterTitle}\r\n ; \r\n\r\n let currentFiltersBox =
\r\n {currentFilterDetails}\r\n {currentFilterSet}\r\n
\r\n\r\n let allRawTags = [];\r\n let filterOpts = [];\r\n let blogCards = [];\r\n let monthYearTags = [];\r\n let popularPosts = [];\r\n if (blogs != null && blogs.length > 0 && blogTable != null) {\r\n for (var i = 0; i < blogs.length; i++) {\r\n let blog = blogs[i];\r\n\r\n // Only display live blogs\r\n if (blog.status == \"Live\") {\r\n //Handle raw tag data\r\n let blogCategories = blog.categories != null && blog.categories != \"\" && blog.categories != undefined ? blog.categories.split(',') : [];\r\n let blogTypes = blog.types != null && blog.types != \"\" && blog.types != undefined ? blog.types.split(',') : [];\r\n blogCategories.forEach(tag => { allRawTags.push(tag) });\r\n blogTypes.forEach(tag => { allRawTags.push(tag) });\r\n\r\n // Handle tags\r\n let tags = this.getDistinctBlogTags(blog);\r\n tags.forEach(tag => { if (!filterOpts.includes(tag)) { filterOpts.push(tag) } });\r\n let tagSet = [];\r\n for (var j = 0; j < tags.length; j++) {\r\n let tag = tags[j];\r\n let tagKey = \"tag\" + j;\r\n let functionalTag = {tag};\r\n tagSet.push(functionalTag);\r\n if (j + 1 < tags.length) {\r\n tagSet.push(\", \");\r\n }\r\n }\r\n\r\n // Handle MonthYear tags\r\n let monthYearTag = this.getMonthYearTagFormat(blog.timestamp);\r\n if (!monthYearTags.includes(monthYearTag)) {\r\n monthYearTags.push(monthYearTag);\r\n }\r\n \r\n let thumbnailImageSrc = ((blog.thumbnailImage == null || blog.thumbnailImage == \"\") && this.state.blogConfiguration != null) ? this.state.blogConfiguration.defaultImage : blog.thumbnailImage;\r\n let singleBlogUrl = '/blog/' + blog.friendlyUrl;\r\n let blogAuthor = this.formatAuthor(blog);\r\n let timestampFormat = Services.formatDateTime(blog.timestamp, false, true, false, true);\r\n\r\n let blogRowKey = \"blogRow\" + blog.id;\r\n \r\n // Create all small blogs\r\n let blogCard =
\r\n
\r\n \"blog\r\n
\r\n\r\n
\r\n
\r\n

{blog.title}

\r\n
\r\n
\r\n {timestampFormat} | { tagSet }\r\n
\r\n\r\n \r\n

{blog.teaser}

\r\n
\r\n
\r\n
;\r\n blogCards.push(blogCard);\r\n\r\n // Create featured blog\r\n if ((blog.id == blogTable.featuredBlogId) || (featuredBlog == undefined && blogTable.featuredBlogId == 0)) {\r\n featuredBlog =
\r\n
\r\n

{blog.title}

\r\n
\r\n\r\n
\r\n {timestampFormat} | {tagSet}\r\n
\r\n\r\n
\r\n \"featured\r\n
\r\n\r\n \r\n

{blog.teaser}

\r\n [Continue Reading...]\r\n
\r\n
;\r\n }\r\n\r\n // Create Popular Posts (Editor's Picks)\r\n if (blogTable.editorPickBlogId.includes(blog.id)) {\r\n let popularPost =
\r\n
\r\n \"popular\r\n
\r\n\r\n
\r\n
\r\n

{blog.title}

\r\n
\r\n\r\n
\r\n {timestampFormat} | {tagSet}\r\n
\r\n
\r\n
;\r\n popularPosts.push(popularPost);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Create popular post box\r\n let popularPostBox =
\r\n
Editor's Picks
\r\n {popularPosts}\r\n
;\r\n\r\n let filterOptsBox;\r\n if (allRawTags.length > 0) {\r\n //get tag counts\r\n let tagsAndCounts = [];\r\n for (var i = 0; i < allRawTags.length; i++) {\r\n let tag = allRawTags[i];\r\n let alreadyExists = false;\r\n for (var j = 0; j < tagsAndCounts.length; j++) {\r\n let tagAndCount = tagsAndCounts[j];\r\n if (tagAndCount.key == tag) {\r\n tagAndCount.value++;\r\n alreadyExists = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!alreadyExists) {\r\n tagsAndCounts.push({ key: tag, value: 1 });\r\n }\r\n }\r\n\r\n //order tags by count highest to lowest\r\n let orderedTagsAndCounts = tagsAndCounts.sort(this.sortTagsCounts);\r\n\r\n let filterOptsBoxTitle = Tags: ;\r\n\r\n let tagBoxOpts = [];\r\n for (var i = 0; i < orderedTagsAndCounts.length; i++) {\r\n let currentFilter = orderedTagsAndCounts[i];\r\n let filterKey = \"sideFilterOpt\" + i;\r\n let functionalTag = {currentFilter.key} ({currentFilter.value});\r\n tagBoxOpts.push(functionalTag);\r\n }\r\n\r\n filterOptsBox =
\r\n {filterOptsBoxTitle}\r\n {tagBoxOpts}\r\n
;\r\n }\r\n\r\n // Handle archives tag box\r\n let archiveTags = [];\r\n let maxArchiveShown = 6;\r\n for (var i = 0; i < monthYearTags.length; i++) {\r\n let archiveKey = \"archive\" + i;\r\n let monthYearTag = monthYearTags[i];\r\n\r\n if (i <= (maxArchiveShown - 1)) {\r\n archiveTags.push({monthYearTag});\r\n }\r\n else {\r\n archiveTags.push({monthYearTag});\r\n }\r\n }\r\n let displayArchiveBtns;\r\n if (archiveTags.length > maxArchiveShown) {\r\n displayArchiveBtns = <>\r\n
More...
\r\n
Less...
\r\n ;\r\n }\r\n let archivesFilterBox =
\r\n
Archives
\r\n {archiveTags}\r\n {displayArchiveBtns}\r\n
;\r\n\r\n // Handle search bar\r\n let searchBar =
\r\n \r\n
\r\n\r\n let customTable;\r\n let paginatedButtons;\r\n if (blogTable != null) {\r\n let minPaginatedIndex = this.state.paginationBlogIndex;\r\n let maxPaginatedIndex = minPaginatedIndex + (this.state.cardsPerPagination - 1);\r\n\r\n //console.log(minPaginatedIndex, maxPaginatedIndex);\r\n\r\n // Get current blogs in pagination\r\n let paginatedBlogs = [];\r\n for (var i = 0; i < blogCards.length; i++) {\r\n let blogCard = blogCards[i];\r\n if (i >= minPaginatedIndex && i <= maxPaginatedIndex) {\r\n paginatedBlogs.push(blogCard);\r\n }\r\n }\r\n customTable =
{paginatedBlogs}
;\r\n\r\n // Get pagination buttons\r\n let buttons = [];\r\n if (minPaginatedIndex != 0) {\r\n let prevText = \"< Prev\";\r\n let newIndex = minPaginatedIndex - this.state.cardsPerPagination;\r\n buttons.push({prevText});\r\n }\r\n\r\n if (blogCards.length > 0) {\r\n let pageCount = blogCards.length / this.state.cardsPerPagination;\r\n let pageCountBuffer = 5;\r\n\r\n // Get current page index\r\n let currentPageIndex = 0;\r\n for (var i = 0; i < pageCount; i++) {\r\n if (minPaginatedIndex == (((i + 1) * this.state.cardsPerPagination) - this.state.cardsPerPagination)) {\r\n currentPageIndex = i;\r\n }\r\n }\r\n\r\n // Get page data\r\n for (var i = 0; i < pageCount; i++) {\r\n if (i >= (currentPageIndex - pageCountBuffer) && i <= (currentPageIndex + pageCountBuffer)) {\r\n let pageText = i + 1;\r\n let pageKey = \"Page\" + pageText;\r\n let newIndex = i * this.state.cardsPerPagination;\r\n\r\n let currentPageClass = \"\";\r\n if (i == currentPageIndex) {\r\n currentPageClass = \"current-page\";\r\n }\r\n\r\n buttons.push({pageText});\r\n }\r\n }\r\n }\r\n\r\n if ((maxPaginatedIndex < blogCards.length)) {\r\n let nextText = \"Next >\";\r\n let newIndex = maxPaginatedIndex + 1;\r\n buttons.push({nextText});\r\n }\r\n\r\n paginatedButtons =
{buttons}
;\r\n }\r\n\r\n let containerClasses = \"blog-table-container blog-table-container__full\";\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n {featuredBlog}\r\n\r\n {customTable}\r\n\r\n {paginatedButtons}\r\n
\r\n\r\n
\r\n {searchBar}\r\n\r\n {popularPostBox}\r\n\r\n {filterOptsBox}\r\n\r\n {currentFiltersBox}\r\n\r\n {archivesFilterBox}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('components/GetBlogTable?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n blogTable: data.blogTable,\r\n blogs: data.blogs,\r\n filteredBlogs: data.blogs,\r\n blogConfiguration: data.blogConfiguration\r\n });\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport TagsBySelection from '../../TagsAndChips/TagsBySelection';\r\n\r\nexport class NewsTableForm extends Component {\r\n static displayName = NewsTableForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n newsTable: null,\r\n newsConfiguration: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus,\r\n limitEntries: false,\r\n isEditOnly: this.props.isEditOnly != undefined ? this.props.isEditOnly : false,\r\n isInPopup: this.props.isInPopup != undefined ? this.props.isInPopup : false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newNewsTable = this.state.newsTable;\r\n\r\n if (e.target.name == \"isCompact\") {\r\n newNewsTable[e.target.name] = e.target.checked ? true : false;\r\n }\r\n else if (e.target.name == \"maxEntries\") {\r\n newNewsTable[e.target.name] = parseInt(e.target.value);\r\n }\r\n else {\r\n newNewsTable[e.target.name] = e.target.value;\r\n }\r\n\r\n this.setState({ newsTable: newNewsTable });\r\n }\r\n\r\n handleLimitEntriesChange = (e) => {\r\n let limitEntries = e.target.checked ? true : false;\r\n if (limitEntries) {\r\n this.setState({\r\n limitEntries: limitEntries\r\n });\r\n }\r\n else {\r\n let newNewsTable = this.state.newsTable;\r\n newNewsTable['maxEntries'] = 0;\r\n\r\n this.setState({\r\n limitEntries: limitEntries,\r\n newsTable: newNewsTable\r\n });\r\n }\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let newsTable = this.state.newsTable;\r\n newsTable.versionId = this.state.versionId;\r\n newsTable.pageId = this.state.pageId;\r\n let url = this.state.formType == \"Update\" ? \"UpdateNewsTable\" : \"CreateNewsTable\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(newsTable),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (!this.state.isEditOnly) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"NewsTable\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n }\r\n \r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n if (this.state.isInPopup) {\r\n deleteButton = null;\r\n }\r\n\r\n let componentName = null;\r\n let typesField = null;\r\n let isCompact = false;\r\n let maxEntries = 0;\r\n\r\n let limitEntries = this.state.limitEntries;\r\n\r\n if (this.state.newsTable != null && this.state.newsConfiguration != null) {\r\n let newsTable = this.state.newsTable;\r\n let newsConfiguration = this.state.newsConfiguration;\r\n\r\n componentName = newsTable.componentName;\r\n isCompact = newsTable.isCompact;\r\n maxEntries = newsTable.maxEntries;\r\n\r\n let types = newsTable.types != \"\" && newsTable.types != null ? newsTable.types.split(',') : [];\r\n let typeSelections = newsConfiguration.types != \"\" && newsConfiguration.types != null ? newsConfiguration.types.split(',') : [];\r\n\r\n let typesKeyVal = [];\r\n for (var i = 0; i < types.length; i++) {\r\n typesKeyVal.push({ key: types[i], value: types[i] });\r\n }\r\n let typeSelectionsKeyVal = [];\r\n for (var i = 0; i < typeSelections.length; i++) {\r\n typeSelectionsKeyVal.push({ key: typeSelections[i], value: typeSelections[i] });\r\n }\r\n\r\n let allowDelete = this.state.versionStatus == 'draft' ? true : false;\r\n typesField = ;\r\n }\r\n\r\n let maxEntriesField;\r\n if (this.state.limitEntries) {\r\n maxEntriesField = <>\r\n \r\n \r\n ;\r\n }\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('NewsTable')}

\r\n
\r\n\r\n \r\n \r\n\r\n \r\n {typesField}\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n {maxEntriesField}\r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetNewsTable?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n let limitEntries = data.newsTable.maxEntries > 0 ? true : false;\r\n\r\n this.setState({\r\n newsTable: data.newsTable,\r\n newsConfiguration: data.newsConfiguration,\r\n formType: formType,\r\n limitEntries: limitEntries\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteNewsTable?componentId=' + this.state.newsTable.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default NewsTableForm;\r\n","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport TagsBySelection from '../../TagsAndChips/TagsBySelection';\r\nimport { BlogTable } from '../../../BlogTable/BlogTable';\r\n\r\nexport class BlogTableForm extends Component {\r\n static displayName = BlogTableForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n blogTable: null,\r\n blogConfiguration: null,\r\n blogs: [],\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus,\r\n isEditOnly: this.props.isEditOnly != undefined ? this.props.isEditOnly : false,\r\n isInPopup: this.props.isInPopup != undefined ? this.props.isInPopup : false,\r\n limitEntries: false,\r\n resetEditorPick: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newBlogTable = this.state.blogTable;\r\n\r\n // Handle direct change\r\n if (e.target.name == \"isCompact\") {\r\n newBlogTable[e.target.name] = e.target.checked ? true : false;\r\n }\r\n else if (e.target.name == \"maxEntries\") {\r\n newBlogTable[e.target.name] = parseInt(e.target.value);\r\n }\r\n else if (e.target.name == \"featuredBlogId\") {\r\n //newBlogTable[e.target.name] = e.target.value.isNaN ? parseInt(e.target.value);\r\n newBlogTable[e.target.name] = parseInt(e.target.value);\r\n }\r\n else {\r\n newBlogTable[e.target.name] = e.target.value;\r\n }\r\n\r\n // Handle indirect change\r\n if (e.target.name == \"types\") {\r\n newBlogTable[\"featuredBlogId\"] = '';\r\n newBlogTable[\"editorPickBlogId\"] = null;\r\n this.resetEditorPickField();\r\n }\r\n\r\n this.setState({ blogTable: newBlogTable });\r\n }\r\n\r\n handleLimitEntriesChange = (e) => {\r\n let limitEntries = e.target.checked ? true : false;\r\n if (limitEntries) {\r\n this.setState({\r\n limitEntries: limitEntries\r\n });\r\n }\r\n else {\r\n let newBlogTable = this.state.blogTable;\r\n newBlogTable['maxEntries'] = 0;\r\n\r\n this.setState({\r\n limitEntries: limitEntries,\r\n blogTable: newBlogTable\r\n });\r\n }\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let blogTable = this.state.blogTable;\r\n blogTable.versionId = this.state.versionId;\r\n blogTable.pageId = this.state.pageId;\r\n let url = this.state.formType == \"Update\" ? \"UpdateBlogTable\" : \"CreateBlogTable\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(blogTable),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (!this.state.isEditOnly) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"BlogTable\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n }\r\n\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n resetEditorPickField = () => {\r\n this.setState({\r\n resetEditorPick: !this.state.resetEditorPick\r\n });\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n if (this.state.isInPopup) {\r\n deleteButton = null;\r\n }\r\n\r\n let componentName = null;\r\n let typesField = null;\r\n let isCompact = false;\r\n let maxEntries = 0;\r\n let featuredBlogId;\r\n let editorPickField = null;\r\n\r\n let limitEntries = this.state.limitEntries;\r\n\r\n let tableTypes = this.state.blogTable != null && this.state.blogTable.types != \"\" && this.state.blogTable.types != null ? this.state.blogTable.types.split(',') : [];\r\n\r\n if (this.state.blogTable != null && this.state.blogConfiguration != null) {\r\n let blogTable = this.state.blogTable;\r\n let blogConfiguration = this.state.blogConfiguration;\r\n\r\n componentName = blogTable.componentName;\r\n isCompact = blogTable.isCompact;\r\n maxEntries = blogTable.maxEntries;\r\n featuredBlogId = blogTable.featuredBlogId;\r\n\r\n // Get blog types field\r\n let types = blogTable.types != \"\" && blogTable.types != null ? blogTable.types.split(',') : [];\r\n let typeSelections = blogConfiguration.types != \"\" && blogConfiguration.types != null ? blogConfiguration.types.split(',') : [];\r\n\r\n let typesKeyVal = [];\r\n for (var i = 0; i < types.length; i++) {\r\n typesKeyVal.push({ key: types[i], value: types[i] });\r\n }\r\n let typeSelectionsKeyVal = [];\r\n for (var i = 0; i < typeSelections.length; i++) {\r\n typeSelectionsKeyVal.push({ key: typeSelections[i], value: typeSelections[i] });\r\n }\r\n\r\n let allowDeleteTypes = this.state.versionStatus == 'draft' ? true : false;\r\n typesField = ;\r\n\r\n // Get blog editor's picks field\r\n let blogCurrents = blogTable.editorPickBlogId != \"\" && blogTable.editorPickBlogId != null ? blogTable.editorPickBlogId.split(',') : [];\r\n let blogSelections = this.state.blogs;\r\n \r\n let blogCurrentsKeyVal = [];\r\n for (var i = 0; i < blogCurrents.length; i++) {\r\n for (var j = 0; j < this.state.blogs.length; j++) {\r\n let blogRef = this.state.blogs[j];\r\n if (blogCurrents[i] == blogRef.id) {\r\n\r\n for (var k = 0; k < tableTypes.length; k++) { //Filter out the blogs that are not part of the tables types\r\n if (blogRef.types != null && blogRef.types.includes(tableTypes[k])) {\r\n blogCurrentsKeyVal.push({ key: blogRef.id, value: blogRef.title });\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n let blogSelectionsKeyValue = [];\r\n for (var i = 0; i < blogSelections.length; i++) {\r\n for (var j = 0; j < tableTypes.length; j++) { //Filter out the blogs that are not part of the tables types\r\n if (blogSelections[i].types != null && blogSelections[i].types.includes(tableTypes[j])) {\r\n blogSelectionsKeyValue.push({ key: blogSelections[i].id, value: blogSelections[i].title });\r\n break;\r\n }\r\n }\r\n }\r\n\r\n let allowDeleteEditorPicks = this.state.versionStatus == 'draft' ? true : false;\r\n editorPickField = ;\r\n\r\n // Reset to editor picks field is required\r\n if (this.state.resetEditorPick) {\r\n editorPickField = \"\";\r\n this.resetEditorPickField();\r\n }\r\n }\r\n\r\n let maxEntriesField;\r\n if (this.state.limitEntries) {\r\n maxEntriesField = <>\r\n \r\n \r\n ;\r\n }\r\n\r\n let featuredBlogOpts = [];\r\n for (var i = 0; i < this.state.blogs.length; i++) {\r\n let blog = this.state.blogs[i];\r\n for (var j = 0; j < tableTypes.length; j++) {\r\n let tableType = tableTypes[j];\r\n if (blog.types != null && blog.types.includes(tableType)) {\r\n let blogOptKey = \"blogOptKey\" + i;\r\n featuredBlogOpts.push();\r\n break;\r\n }\r\n }\r\n }\r\n let featuredBlogField = ;\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('BlogTable')}

\r\n
\r\n\r\n \r\n \r\n\r\n \r\n {typesField}\r\n\r\n \r\n {featuredBlogField}\r\n\r\n \r\n {editorPickField}\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 {maxEntriesField}\r\n */}\r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetBlogTable?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n let limitEntries = data.blogTable.maxEntries > 0 ? true : false;\r\n\r\n let blogTable = data.blogTable;\r\n if (formType == \"Create\") {\r\n blogTable.featuredBlogId = \"\";\r\n }\r\n\r\n this.setState({\r\n blogTable: blogTable,\r\n blogConfiguration: data.blogConfiguration,\r\n blogs: data.blogs,\r\n formType: formType,\r\n limitEntries: limitEntries\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteBlogTable?componentId=' + this.state.blogTable.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default BlogTableForm;\r\n","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport TagsBySelection from '../../TagsAndChips/TagsBySelection';\r\n\r\nexport class BirthdayTableForm extends Component {\r\n static displayName = BirthdayTableForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n birthdayTable: null,\r\n birthdayConfiguration: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus,\r\n limitEntries: false,\r\n isEditOnly: this.props.isEditOnly != undefined ? this.props.isEditOnly : false,\r\n isInPopup: this.props.isInPopup != undefined ? this.props.isInPopup : false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newBirthdayTable = this.state.birthdayTable;\r\n\r\n if (e.target.name == \"isCompact\") {\r\n newBirthdayTable[e.target.name] = e.target.checked ? true : false;\r\n }\r\n else if (e.target.name == \"maxEntries\") {\r\n newBirthdayTable[e.target.name] = parseInt(e.target.value);\r\n }\r\n else {\r\n newBirthdayTable[e.target.name] = e.target.value;\r\n }\r\n\r\n this.setState({ birthdayTable: newBirthdayTable });\r\n }\r\n\r\n handleLimitEntriesChange = (e) => {\r\n let limitEntries = e.target.checked ? true : false;\r\n if (limitEntries) {\r\n this.setState({\r\n limitEntries: limitEntries\r\n });\r\n }\r\n else {\r\n let newBirthdayTable = this.state.birthdayTable;\r\n newBirthdayTable['maxEntries'] = 0;\r\n\r\n this.setState({\r\n limitEntries: limitEntries,\r\n birthdayTable: newBirthdayTable\r\n });\r\n }\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let birthdayTable = this.state.birthdayTable;\r\n birthdayTable.versionId = this.state.versionId;\r\n birthdayTable.pageId = this.state.pageId;\r\n let url = this.state.formType == \"Update\" ? \"UpdateBirthdayTable\" : \"CreateBirthdayTable\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(birthdayTable),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (!this.state.isEditOnly) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"BirthdayTable\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n }\r\n\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n if (this.state.isInPopup) {\r\n deleteButton = null;\r\n }\r\n\r\n let componentName = null;\r\n let typesField = null;\r\n let isCompact = false;\r\n let maxEntries = 0;\r\n\r\n let limitEntries = this.state.limitEntries;\r\n\r\n if (this.state.birthdayTable != null && this.state.birthdayConfiguration != null) {\r\n let birthdayTable = this.state.birthdayTable;\r\n let birthdayConfiguration = this.state.birthdayConfiguration;\r\n\r\n componentName = birthdayTable.componentName;\r\n isCompact = birthdayTable.isCompact;\r\n maxEntries = birthdayTable.maxEntries;\r\n\r\n let types = birthdayTable.types != \"\" && birthdayTable.types != null ? birthdayTable.types.split(',') : [];\r\n let typeSelections = birthdayConfiguration.types != \"\" && birthdayConfiguration.types != null ? birthdayConfiguration.types.split(',') : [];\r\n\r\n let typesKeyVal = [];\r\n for (var i = 0; i < types.length; i++) {\r\n typesKeyVal.push({ key: types[i], value: types[i] });\r\n }\r\n let typeSelectionsKeyVal = [];\r\n for (var i = 0; i < typeSelections.length; i++) {\r\n typeSelectionsKeyVal.push({ key: typeSelections[i], value: typeSelections[i] });\r\n }\r\n\r\n let allowDelete = this.state.versionStatus == 'draft' ? true : false;\r\n typesField = ;\r\n }\r\n\r\n let maxEntriesField;\r\n if (this.state.limitEntries) {\r\n maxEntriesField = <>\r\n \r\n \r\n ;\r\n }\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('BirthdayTable')}

\r\n
\r\n\r\n \r\n \r\n\r\n \r\n {typesField}\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n {maxEntriesField}\r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetBirthdayTable?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n let limitEntries = data.birthdayTable.maxEntries > 0 ? true : false;\r\n\r\n this.setState({\r\n birthdayTable: data.birthdayTable,\r\n birthdayConfiguration: data.birthdayConfiguration,\r\n formType: formType,\r\n limitEntries: limitEntries\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteBirthdayTable?componentId=' + this.state.birthdayTable.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default BirthdayTableForm;\r\n","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport TagsBySelection from '../../TagsAndChips/TagsBySelection';\r\n\r\nexport class DocumentTableForm extends Component {\r\n static displayName = DocumentTableForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n documentTable: null,\r\n documentConfiguration: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus,\r\n limitEntries: false,\r\n isEditOnly: this.props.isEditOnly != undefined ? this.props.isEditOnly : false,\r\n isInPopup: this.props.isInPopup != undefined ? this.props.isInPopup : false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newDocumentTable = this.state.documentTable;\r\n\r\n if (e.target.name == \"isCompact\") {\r\n newDocumentTable[e.target.name] = e.target.checked ? true : false;\r\n }\r\n else if (e.target.name == \"maxEntries\") {\r\n newDocumentTable[e.target.name] = parseInt(e.target.value);\r\n }\r\n else {\r\n newDocumentTable[e.target.name] = e.target.value;\r\n }\r\n\r\n this.setState({ documentTable: newDocumentTable });\r\n }\r\n\r\n handleLimitEntriesChange = (e) => {\r\n let limitEntries = e.target.checked ? true : false;\r\n if (limitEntries) {\r\n this.setState({\r\n limitEntries: limitEntries\r\n });\r\n }\r\n else {\r\n let newDocumentTable = this.state.documentTable;\r\n newDocumentTable['maxEntries'] = 0;\r\n\r\n this.setState({\r\n limitEntries: limitEntries,\r\n documentTable: newDocumentTable\r\n });\r\n }\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let documentTable = this.state.documentTable;\r\n documentTable.versionId = this.state.versionId;\r\n documentTable.pageId = this.state.pageId;\r\n let url = this.state.formType == \"Update\" ? \"UpdateDocumentTable\" : \"CreateDocumentTable\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(documentTable),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (!this.state.isEditOnly) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"DocumentTable\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n }\r\n \r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n if (this.state.isInPopup) {\r\n deleteButton = null;\r\n }\r\n\r\n let componentName = null;\r\n let typesField = null;\r\n let isCompact = false;\r\n let maxEntries = 0;\r\n\r\n let limitEntries = this.state.limitEntries;\r\n\r\n if (this.state.documentTable != null && this.state.documentConfiguration != null) {\r\n let documentTable = this.state.documentTable;\r\n let documentConfiguration = this.state.documentConfiguration;\r\n\r\n componentName = documentTable.componentName;\r\n isCompact = documentTable.isCompact;\r\n maxEntries = documentTable.maxEntries;\r\n\r\n let types = documentTable.types != \"\" && documentTable.types != null ? documentTable.types.split(',') : [];\r\n let typeSelections = documentConfiguration.types != \"\" && documentConfiguration.types != null ? documentConfiguration.types.split(',') : [];\r\n\r\n let typesKeyVal = [];\r\n for (var i = 0; i < types.length; i++) {\r\n typesKeyVal.push({ key: types[i], value: types[i] });\r\n }\r\n let typeSelectionsKeyVal = [];\r\n for (var i = 0; i < typeSelections.length; i++) {\r\n typeSelectionsKeyVal.push({ key: typeSelections[i], value: typeSelections[i] });\r\n }\r\n\r\n let allowDelete = this.state.versionStatus == 'draft' ? true : false;\r\n typesField = ;\r\n }\r\n\r\n let maxEntriesField;\r\n if (this.state.limitEntries) {\r\n maxEntriesField = <>\r\n \r\n \r\n ;\r\n }\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('DocumentTable')}

\r\n
\r\n\r\n \r\n \r\n\r\n \r\n {typesField}\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n\r\n {maxEntriesField}\r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetDocumentTable?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n let limitEntries = data.documentTable.maxEntries > 0 ? true : false;\r\n\r\n this.setState({\r\n documentTable: data.documentTable,\r\n documentConfiguration: data.documentConfiguration,\r\n formType: formType,\r\n limitEntries: limitEntries\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteDocumentTable?componentId=' + this.state.documentTable.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default DocumentTableForm;\r\n","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport TagsBySelection from '../../TagsAndChips/TagsBySelection';\r\nimport ComponentFormPopup from '../ComponentFormPopup';\r\nimport CardForm from '../CardForm/CardForm';\r\nimport HtmlEditorForm from '../HtmlEditorForm/HtmlEditorForm';\r\nimport CalendarForm from '../CalendarForm/CalendarForm';\r\nimport BannerContainerForm from '../BannerForm/BannerContainerForm';\r\nimport EventTableForm from '../EventTableForm/EventTableForm';\r\nimport BlogTableForm from '../BlogTableForm/BlogTableForm';\r\nimport NewsTableForm from '../NewsTableForm/NewsTableForm';\r\nimport BirthdayTableForm from '../BirthdayTableForm/BirthdayTableForm';\r\nimport DocumentTableForm from '../DocumentTableForm/DocumentTableForm';\r\nimport { getLoggedInUser } from \"../../../Authentication\";\r\n\r\nexport class CardContainerForm extends Component {\r\n static displayName = CardContainerForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n cardContainer: null,\r\n cards: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus,\r\n popup: null,\r\n reset: false,\r\n loggedInUser: null\r\n };\r\n this.displayPopup = this.displayPopup.bind(this);\r\n this.cancelClicked = this.cancelClicked.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newCardContainer = this.state.cardContainer;\r\n newCardContainer[e.target.name] = e.target.value;\r\n\r\n let shouldReset = false;\r\n if (e.target.name == 'containerType' || e.target.name == 'cardIds') {\r\n shouldReset = true;\r\n }\r\n\r\n this.setState({\r\n cardContainer: newCardContainer,\r\n reset: shouldReset\r\n });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let cardContainer = this.state.cardContainer;\r\n cardContainer.versionId = this.state.versionId;\r\n cardContainer.pageId = this.state.pageId;\r\n let url = this.state.formType == \"Update\" ? \"UpdateCardContainer\" : \"CreateCardContainer\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(cardContainer),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"CardContainer\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n resetInnerComponents() {\r\n this.setState({ reset: false });\r\n }\r\n\r\n displayPopup(card, popupFormType) {\r\n //console.log(\"displayPopup\");\r\n let popupForm;\r\n\r\n if (popupFormType == 'detail') {\r\n popupForm = ;\r\n }\r\n else { //content\r\n if (card.contentType == \"HtmlEditor\") {\r\n popupForm = ;\r\n }\r\n else if (card.contentType == \"Calendar\") {\r\n popupForm = ;\r\n }\r\n else if (card.contentType == \"BannerContainer\") {\r\n popupForm = ;\r\n }\r\n else if (card.contentType == \"EventTable\") {\r\n popupForm = ;\r\n }\r\n else if (card.contentType == \"BlogTable\") {\r\n popupForm = ;\r\n }\r\n else if (card.contentType == \"NewsTable\") {\r\n popupForm = ;\r\n }\r\n else if (card.contentType == \"BirthdayTable\") {\r\n popupForm = ;\r\n }\r\n else if (card.contentType == \"DocumentTable\") {\r\n popupForm = ;\r\n }\r\n }\r\n \r\n let popup = ;\r\n\r\n this.setState({\r\n popup: popup\r\n });\r\n }\r\n\r\n onPopupComponentSaved() { \r\n //console.log(\"onPopupComponentSaved\");\r\n alert(\"Saved\");\r\n\r\n this.setState({\r\n reset: true\r\n });\r\n this.getComponentData();\r\n }\r\n\r\n cancelClicked() {\r\n //console.log(\"cancelClicked\");\r\n this.setState({\r\n popup: null\r\n });\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n let cards = null;\r\n let componentName = null;\r\n let containerType = null;\r\n let loggedInUser = this.state.loggedInUser;\r\n\r\n let isCardContainerSet = false;\r\n if (this.state.cardContainer != null) {\r\n let cardContainer = this.state.cardContainer;\r\n cards = cardContainer.cardIds;\r\n componentName = cardContainer.componentName;\r\n containerType = cardContainer.containerType;\r\n\r\n isCardContainerSet = true;\r\n }\r\n\r\n let cardsArray = [];\r\n let tagSelections = [];\r\n if (isCardContainerSet && this.state.cards != null) {\r\n //Get all options\r\n for (var i = 0; i < this.state.cards.length; i++) {\r\n let card = this.state.cards[i];\r\n if (card.pageId == this.state.pageId) {\r\n let cardName = (card.componentName != null && card.componentName != \"\") ? card.componentName + \"-V\" + card.versionId : card.id.toString() + \"-V\" + card.versionId;\r\n tagSelections.push({ key: card.id.toString(), value: cardName });\r\n }\r\n }\r\n\r\n //Get current tags\r\n if (cards != null && cards != \"\" && cards != undefined) {\r\n let cardsIdArray = cards.split(',');\r\n for (var i = 0; i < cardsIdArray.length; i++) {\r\n let cardId = cardsIdArray[i];\r\n for (var j = 0; j < this.state.cards.length; j++) {\r\n let card = this.state.cards[j];\r\n if (card.id.toString() == cardId) {\r\n let cardName = (card.componentName != null && card.componentName != \"\") ? card.componentName : card.id.toString();\r\n let editCardDetailBtn =
Details
;\r\n let editCardContentBtn =
Content
;\r\n \r\n let cardBox =
\r\n
\r\n {cardName}\r\n
\r\n
\r\n {editCardDetailBtn}\r\n {editCardContentBtn}\r\n
\r\n
;\r\n\r\n cardsArray.push({ key: card.id.toString(), value: cardBox });\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n let containerTypeField = (loggedInUser != null && loggedInUser.role == \"Admin\" && loggedInUser.company == \"TracSoft\") ?\r\n :\r\n ;\r\n\r\n let tagGrid = containerType == \"Type1\" ?\r\n [\r\n ['1', '2', '3', '6'],\r\n ['2', '5', '1', '6'],\r\n ['5', '7', '1', '4'],\r\n ['5', '7', '4', '6'],\r\n ['1', '4', '6', '8'],\r\n ['4', '6', '6', '8'],\r\n ['6', '7', '6', '8'],\r\n ['1', '2', '8', '10'],\r\n ['2', '7', '8', '10']\r\n ] : \r\n [ //Type2\r\n ['1', '2', '1', '6'],\r\n ['2', '5', '1', '6'],\r\n ['5', '7', '1', '6'],\r\n ['1', '3', '6', '8'],\r\n ['3', '5', '6', '8'],\r\n ['5', '7', '6', '8'],\r\n ['1', '3', '8', '10'],\r\n ['3', '5', '8', '10'],\r\n ['5', '7', '8', '10'],\r\n ];\r\n let allowDelete = this.state.versionStatus == 'draft' ? true : false;\r\n let showInput = (loggedInUser != null && loggedInUser.role == \"Admin\" && loggedInUser.company == \"TracSoft\") ? true : false;\r\n let cardIdsField = isCardContainerSet ?\r\n : \"\";\r\n\r\n if (this.state.reset || containerType == null || containerType == \"\") {\r\n cardIdsField = \"\";\r\n }\r\n\r\n if (this.state.reset) {\r\n this.resetInnerComponents();\r\n }\r\n\r\n let wrapperClasses = (this.state.versionStatus == 'draft') ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n {this.state.popup}\r\n\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('CardContainer')}

\r\n
\r\n\r\n \r\n \r\n\r\n \r\n {containerTypeField}\r\n\r\n \r\n {cardIdsField}\r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetCardContainer?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n let loggedInUser = await getLoggedInUser();\r\n if (loggedInUser != null) loggedInUser = JSON.parse(loggedInUser);\r\n\r\n this.setState({\r\n cardContainer: data.cardContainer,\r\n cards: data.cards,\r\n formType: formType,\r\n popup: null,\r\n reset: false,\r\n loggedInUser: loggedInUser\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteCardContainer?componentId=' + this.state.cardContainer.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default CardContainerForm;","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport TagsBySelection from '../../TagsAndChips/TagsBySelection';\r\n\r\nexport class BlogPreviewForm extends Component {\r\n static displayName = BlogPreviewForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n blogPreview: null,\r\n blogConfiguration: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus,\r\n isEditOnly: this.props.isEditOnly != undefined ? this.props.isEditOnly : false,\r\n isInPopup: this.props.isInPopup != undefined ? this.props.isInPopup : false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newBlogPreview = this.state.blogPreview;\r\n newBlogPreview[e.target.name] = e.target.value;\r\n this.setState({ blogPreview: newBlogPreview });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let blogPreview = this.state.blogPreview;\r\n blogPreview.versionId = this.state.versionId;\r\n blogPreview.pageId = this.state.pageId;\r\n let url = this.state.formType == \"Update\" ? \"UpdateBlogPreview\" : \"CreateBlogPreview\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(blogPreview),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (!this.state.isEditOnly) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"BlogPreview\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n }\r\n\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n if (this.state.isInPopup) {\r\n deleteButton = null;\r\n }\r\n\r\n let componentName;\r\n let title;\r\n let seeAllLink;\r\n let seeAllText;\r\n\r\n let typesField = null;\r\n\r\n if (this.state.blogPreview != null && this.state.blogConfiguration != null) {\r\n let blogPreview = this.state.blogPreview;\r\n let blogConfiguration = this.state.blogConfiguration;\r\n\r\n componentName = blogPreview.componentName;\r\n title = blogPreview.title;\r\n seeAllLink = blogPreview.seeAllLink;\r\n seeAllText = blogPreview.seeAllText;\r\n\r\n let types = blogPreview.types != \"\" && blogPreview.types != null ? blogPreview.types.split(',') : [];\r\n let typeSelections = blogConfiguration.types != \"\" && blogConfiguration.types != null ? blogConfiguration.types.split(',') : [];\r\n\r\n let typesKeyVal = [];\r\n for (var i = 0; i < types.length; i++) {\r\n typesKeyVal.push({ key: types[i], value: types[i] });\r\n }\r\n let typeSelectionsKeyVal = [];\r\n for (var i = 0; i < typeSelections.length; i++) {\r\n typeSelectionsKeyVal.push({ key: typeSelections[i], value: typeSelections[i] });\r\n }\r\n\r\n let allowDelete = this.state.versionStatus == 'draft' ? true : false;\r\n typesField = ;\r\n }\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('BlogPreview')}

\r\n
\r\n\r\n \r\n \r\n\r\n \r\n {typesField}\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 {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetBlogPreview?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n blogPreview: data.blogPreview,\r\n blogConfiguration: data.blogConfiguration,\r\n formType: formType\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteBlogPreview?componentId=' + this.state.blogPreview.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default BlogPreviewForm;","import React, { Component } from 'react';\r\nimport '../componentform.css';\r\nimport componentFormService from '../ComponentFormService.js';\r\nimport componentMap from '../../../ComponentMap';\r\nimport HtmlEditorField from '../../../HtmlEditorField';\r\n\r\nexport class SideContainerForm extends Component {\r\n static displayName = SideContainerForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n sideContainer: null,\r\n formType: null,\r\n pageId: this.props.pageId,\r\n versionId: this.props.versionId,\r\n versionStatus: this.props.versionStatus\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newSideContainer = this.state.sideContainer;\r\n newSideContainer[e.target.name] = e.target.value;\r\n this.setState({ sideContainer: newSideContainer });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let sideContainer = this.state.sideContainer;\r\n sideContainer.versionId = this.state.versionId;\r\n sideContainer.pageId = this.state.pageId;\r\n let url = this.state.formType == \"Update\" ? \"UpdateSideContainer\" : \"CreateSideContainer\";\r\n fetch('Admin/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(sideContainer),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n var pageComponentId = this.props.pageComponentId != undefined ? this.props.pageComponentId : 0;\r\n var isDataSaved = componentFormService.managePageComponent(this.state.pageId, \"SideContainer\", parseInt(data), parseInt(pageComponentId), this.state.versionId, this.state.versionStatus);\r\n\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let deleteButton = this.state.formType == \"Update\" ? : null;\r\n let componentName;\r\n let content1;\r\n let content2;\r\n\r\n if (this.state.sideContainer != null) {\r\n let sideContainer = this.state.sideContainer;\r\n componentName = sideContainer.componentName;\r\n content1 = sideContainer.content1;\r\n content2 = sideContainer.content2;\r\n }\r\n\r\n let wrapperClasses = this.state.versionStatus == 'draft' ? 'grid-wrapper component-form' : 'grid-wrapper component-form disable-form';\r\n let editorComponentWrapperClasses = this.state.versionStatus == 'draft' ? 'dual-grid__1-2 editor-wrapper' : 'dual-grid__1-2 editor-wrapper disable-wrapper';\r\n return (\r\n
\r\n
\r\n
\r\n

{componentName} {componentMap.componentTypeDisplay('SideContainer')}

\r\n
\r\n\r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n {deleteButton}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('Admin/GetSideContainer?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n sideContainer: data,\r\n formType: formType\r\n });\r\n }\r\n\r\n async deleteComponent(e) {\r\n e.preventDefault();\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this component and remove all associations to it?\");\r\n\r\n if (confirmDelete) {\r\n const response = await fetch('Admin/DeleteSideContainer?componentId=' + this.state.sideContainer.id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n this.props.onComponentDeleted();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default SideContainerForm;","import React, { Component, useState, version } from 'react';\r\nimport './pagecomponentform.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEdit, faTrashAlt, faEllipsisV, faEye } from '@fortawesome/free-solid-svg-icons';\r\nimport PageForm from '../PageForm/PageForm';\r\nimport adminSettingsService from '../AdminSettingsService';\r\nimport DnDCurrentComponents from './DnDCurrentComponents';\r\nimport FakeDnDCurrentComponents from './FakeDnDCurrentComponents';\r\nimport { v4 as uuid } from 'uuid';\r\nimport componentMap from '../../ComponentMap';\r\nimport PageVersionLogManagement from '../PageVersionLogManagement/PageVersionLogManagement';\r\n\r\n// Authentication\r\nimport { getLoggedInUser } from \"../../Authentication\";\r\n\r\n// Component Forms\r\nimport { AnnouncementForm } from '../ComponentForm/AnnouncementForm/AnnouncementForm';\r\nimport { BannerContainerForm } from '../ComponentForm/BannerForm/BannerContainerForm';\r\nimport { IconLinkContainerForm } from '../ComponentForm/IconLinkContainerForm/IconLinkContainerForm';\r\nimport { ColumnsTabContainerForm } from '../ComponentForm/ColumnsTabContainerForm/ColumnsTabContainerForm';\r\nimport { AccordionForm } from '../ComponentForm/AccordionForm/AccordionForm';\r\nimport { HtmlEditorForm } from '../ComponentForm/HtmlEditorForm/HtmlEditorForm';\r\nimport { BigText5050Form } from '../ComponentForm/BigText5050Form/BigText5050Form';\r\nimport { Contact5050Form } from '../ComponentForm/Contact5050Form/Contact5050Form';\r\nimport { Features1Form } from '../ComponentForm/Features1Form/Features1Form';\r\nimport { Grid5050Form } from '../ComponentForm/Grid5050Form/Grid5050Form';\r\nimport { ActionButtonForm } from '../ComponentForm/ActionButtonForm/ActionButtonForm';\r\nimport { SingleFeatures1Form } from '../ComponentForm/SingleFeatures1Form/SingleFeatures1Form';\r\nimport { HRSeparatorForm } from '../ComponentForm/HRSeparatorForm/HRSeparatorForm';\r\nimport { CardForm } from '../ComponentForm/CardForm/CardForm';\r\nimport { CardContainerForm } from '../ComponentForm/CardContainerForm/CardContainerForm';\r\nimport { CalendarForm } from '../ComponentForm/CalendarForm/CalendarForm';\r\nimport { DocumentTableForm } from '../ComponentForm/DocumentTableForm/DocumentTableForm';\r\nimport { EventTableForm } from '../ComponentForm/EventTableForm/EventTableForm';\r\nimport { BlogTableForm } from '../ComponentForm/BlogTableForm/BlogTableForm';\r\nimport { BlogPreviewForm } from '../ComponentForm/BlogPreviewForm/BlogPreviewForm';\r\nimport { NewsTableForm } from '../ComponentForm/NewsTableForm/NewsTableForm';\r\nimport { BirthdayTableForm } from '../ComponentForm/BirthdayTableForm/BirthdayTableForm';\r\nimport { SideContainerForm } from '../ComponentForm/SideContainerForm/SideContainerForm';\r\n\r\nexport class PageComponentForm extends Component {\r\n static displayName = PageComponentForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n currentCenter: null,\r\n tempCurrentCenter: null,\r\n resetCurrentComponents: false,\r\n resetPageDetails: false,\r\n componentSelection: { type: null, id: null },\r\n isFormInitialized: false,\r\n isDocumentInitialized: false,\r\n isEventInitialized: false,\r\n isBlogInitialized: false,\r\n isNewsInitialized: false,\r\n isBirthdayInitialized: false,\r\n columnTab: 'pageDetails',\r\n versionId: 1,\r\n versionStatus: 'draft',\r\n versionLimit: 10,\r\n\r\n page: null,\r\n pageComponents: null,\r\n allComponentTypes: null,\r\n loggedInUser: null,\r\n roles: [],\r\n\r\n allAnnouncements: null,\r\n allBannerContainers: null,\r\n allIconLinkContainers: null,\r\n allColumnsTabContainers: null,\r\n allAccordions: null,\r\n allHtmlEditors: null,\r\n allBigText5050s: null,\r\n allContact5050s: null,\r\n allSingleFeatures1s: null,\r\n allFeatures1s: null,\r\n allGrid5050s: null,\r\n allActionButtons: null,\r\n allHRSeparators: null,\r\n allCards: null,\r\n allCardContainers: null,\r\n allCalendars: null,\r\n allDocumentTables: null,\r\n allEventTables: null,\r\n allBlogTables: null,\r\n allBlogPreviews: null,\r\n allNewsTables: null,\r\n allBirthdayTables: null,\r\n allSideContainers: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData(true);\r\n }\r\n\r\n getComponentForm(name, id, formType, pageComponentId) {\r\n //console.log(name, id, formType, pageComponentId);\r\n if (isNaN(pageComponentId)) pageComponentId = undefined;\r\n //console.log(name, id, formType, pageComponentId);\r\n let centerComponent = null;\r\n \r\n switch (name) {\r\n case \"Announcement\":\r\n centerComponent = ;\r\n break;\r\n case \"BannerContainer\":\r\n centerComponent = ;\r\n break;\r\n case \"IconLinkContainer\":\r\n centerComponent = ;\r\n break;\r\n case \"ColumnsTabContainer\":\r\n centerComponent = ;\r\n break;\r\n case \"Accordion\":\r\n centerComponent = ;\r\n break;\r\n case \"HtmlEditor\":\r\n centerComponent = ;\r\n break;\r\n case \"BigText5050\":\r\n centerComponent = ;\r\n break;\r\n case \"Contact5050\":\r\n centerComponent = ;\r\n break;\r\n case \"SingleFeatures1\":\r\n centerComponent = ;\r\n break;\r\n case \"Features1\":\r\n centerComponent = ;\r\n break;\r\n case \"Grid5050\":\r\n centerComponent = ;\r\n break;\r\n case \"ActionButton\":\r\n centerComponent = ;\r\n break;\r\n case \"HRSeparator\":\r\n centerComponent = ;\r\n break;\r\n case \"Card\":\r\n centerComponent = ;\r\n break;\r\n case \"CardContainer\":\r\n centerComponent = ;\r\n break;\r\n case \"Calendar\":\r\n centerComponent = ;\r\n break;\r\n case \"DocumentTable\":\r\n centerComponent = ;\r\n break;\r\n case \"EventTable\":\r\n centerComponent = ;\r\n break;\r\n case \"BlogTable\":\r\n centerComponent = ;\r\n break;\r\n case \"BlogPreview\":\r\n centerComponent = ;\r\n break;\r\n case \"NewsTable\":\r\n centerComponent = ;\r\n break;\r\n case \"BirthdayTable\":\r\n centerComponent = ;\r\n break;\r\n case \"SideContainer\":\r\n centerComponent = ;\r\n break;\r\n default:\r\n centerComponent =
ERROR
;\r\n break;\r\n }\r\n\r\n //console.log(centerComponent);\r\n this.setState({\r\n currentCenter: null,\r\n tempCurrentCenter: centerComponent,\r\n resetCurrentComponents: true,\r\n componentSelection: { type: name, id: id },\r\n columnTab: 'componentDetails'\r\n });\r\n\r\n this.getComponentData();\r\n }\r\n\r\n /* When the page component is saved, update the display via state change */\r\n async onComponentSaved() {\r\n //console.log(\"onComponentSaved\");\r\n await this.setState({\r\n currentCenter: null,\r\n tempCurrentCenter: null,\r\n resetCurrentComponents: true,\r\n componentSelection: { type: null, id: null }\r\n });\r\n\r\n await this.getComponentData();\r\n }\r\n\r\n /* When the page component is deleted, update the display via state change */\r\n async onComponentDeleted() {\r\n await this.setState({\r\n currentCenter: null,\r\n tempCurrentCenter: null,\r\n resetCurrentComponents: true,\r\n componentSelection: { type: null, id: null }\r\n });\r\n\r\n await this.getComponentData();\r\n }\r\n\r\n /* Update display when the page component is saved */\r\n async onPageSaved() {\r\n await this.setState({\r\n resetCurrentComponents: true,\r\n resetPageDetails: true\r\n });\r\n\r\n await this.getComponentData();\r\n }\r\n\r\n resetCurrentCenter() {\r\n this.setState({\r\n currentCenter: this.state.tempCurrentCenter,\r\n tempCurrentCenter: null\r\n });\r\n }\r\n\r\n getExistingComponents(name) {\r\n let centerComponent = [];\r\n switch (name) {\r\n case \"Announcement\":\r\n for (var i = 0; i < this.state.allAnnouncements.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"BannerContainer\":\r\n for (var i = 0; i < this.state.allBannerContainers.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"IconLinkContainer\":\r\n for (var i = 0; i < this.state.allIconLinkContainers.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"ColumnsTabContainer\":\r\n for (var i = 0; i < this.state.allColumnsTabContainers.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"Accordion\":\r\n for (var i = 0; i < this.state.allAccordions.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"HtmlEditor\":\r\n for (var i = 0; i < this.state.allHtmlEditors.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"BigText5050\":\r\n for (var i = 0; i < this.state.allBigText5050s.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"Contact5050\":\r\n for (var i = 0; i < this.state.allContact5050s.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"SingleFeatures1\":\r\n for (var i = 0; i < this.state.allSingleFeatures1s.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"Features1\":\r\n for (var i = 0; i < this.state.allFeatures1s.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"Grid5050\":\r\n for (var i = 0; i < this.state.allGrid5050s.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"ActionButton\":\r\n for (var i = 0; i < this.state.allActionButtons.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"HRSeparator\":\r\n for (var i = 0; i < this.state.allHRSeparators.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"Card\":\r\n for (var i = 0; i < this.state.allCards.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"CardContainer\":\r\n for (var i = 0; i < this.state.allCardContainers.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"Calendar\":\r\n for (var i = 0; i < this.state.allCalendars.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"DocumentTable\":\r\n for (var i = 0; i < this.state.allDocumentTables.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"EventTable\":\r\n for (var i = 0; i < this.state.allEventTables.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"BlogTable\":\r\n for (var i = 0; i < this.state.allBlogTables.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"BlogPreview\":\r\n for (var i = 0; i < this.state.allBlogPreviews.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"NewsTable\":\r\n for (var i = 0; i < this.state.allNewsTables.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"BirthdayTable\":\r\n for (var i = 0; i < this.state.allBirthdayTables.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n case \"SideContainer\":\r\n for (var i = 0; i < this.state.allSideContainers.length; i++) {\r\n centerComponent.push(\r\n
\r\n \r\n
\r\n );\r\n }\r\n break;\r\n default:\r\n centerComponent =
ERROR
;\r\n break;\r\n }\r\n\r\n let centerComponentContainer =
\r\n

{componentMap.componentTypeDisplay(name)} Components

\r\n {centerComponent}\r\n
;\r\n\r\n this.setState({\r\n currentCenter: centerComponentContainer,\r\n resetCurrentComponents: true\r\n });\r\n\r\n this.getComponentData();\r\n }\r\n\r\n getComponentTypes(status) {\r\n let centerComponent;\r\n\r\n if (this.state.allComponentTypes != null) {\r\n let componentTypes = [];\r\n\r\n for (var i = 0; i < this.state.allComponentTypes.length; i++) {\r\n let componentType = this.state.allComponentTypes[i];\r\n \r\n if (!this.state.isFormInitialized && componentType == \"Contact5050\") {\r\n continue;\r\n }\r\n if (!this.state.isDocumentInitialized && componentType == \"DocumentTable\") {\r\n continue;\r\n }\r\n if (!this.state.isEventInitialized && componentType == \"EventTable\") {\r\n continue;\r\n }\r\n if (!this.state.isBlogInitialized && (componentType == \"BlogTable\" || componentType == \"BlogPreview\")) {\r\n continue;\r\n }\r\n if (!this.state.isNewsInitialized && componentType == \"NewsTable\") {\r\n continue;\r\n }\r\n if (!this.state.isBirthdayInitialized && componentType == \"BirthdayTable\") {\r\n continue;\r\n }\r\n if (componentType == \"Navbar\" || componentType == \"Footer\" || componentType == \"SocialIcons\") {\r\n continue;\r\n }\r\n\r\n let key = status + 'ComponentType' + i;\r\n let onBtnClick = status == \"existing\" ? this.getExistingComponents.bind(this, componentType) : this.getComponentForm.bind(this, componentType, 0, 'Create');\r\n componentTypes.push(\r\n \r\n );\r\n }\r\n\r\n centerComponent =
\r\n

Component Types

\r\n
\r\n {componentTypes}\r\n
\r\n
;\r\n }\r\n else {\r\n centerComponent =
ERROR
;\r\n }\r\n\r\n this.setState({\r\n currentCenter: centerComponent,\r\n resetCurrentComponents: true,\r\n componentSelection: { type: null, id: null },\r\n columnTab: 'componentDetails'\r\n });\r\n\r\n this.getComponentData();\r\n }\r\n\r\n async deleteCurrentPageComponent(pageComponentId) {\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete page component \" + pageComponentId + \"?\");\r\n\r\n if (confirmDelete) {\r\n //let pageId = this.state.page.id;\r\n let pcId = parseInt(pageComponentId);\r\n const response = await fetch('Admin/DeletePageComponent?pageComponentId=' + pcId, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n //window.location = '/UpdatePageComponent/' + pageId;\r\n this.setState({\r\n resetCurrentComponents: true,\r\n componentSelection: { type: null, id: null }\r\n });\r\n this.getComponentData();\r\n this.resetCurrentCenter();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n\r\n /* Update the order of the components on the page */\r\n async componentOrderUpdate(componentArray) {\r\n let componentIdsOrdered = [];\r\n for (var i = 0; i < componentArray.length; i++) {\r\n componentIdsOrdered.push(parseInt(componentArray[i].id));\r\n }\r\n //console.log(componentIdsOrdered);\r\n //Save the order of components on backend where the array index is the order for the component associated with the id\r\n const response = await fetch('Admin/UpdatePageComponentOrder', {\r\n method: 'POST',\r\n body: JSON.stringify({ \"PageComponentIds\": componentIdsOrdered }),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data != \"Saved\") {\r\n alert(data);\r\n }\r\n }\r\n\r\n /* Return the component object that is associated with the page component */\r\n getComponentFromPageComponent(pageComponent) {\r\n let component = null;\r\n if (pageComponent != null) {\r\n switch (pageComponent.type) {\r\n case \"Announcement\":\r\n for (var i = 0; i < this.state.allAnnouncements.length; i++) {\r\n if (this.state.allAnnouncements[i].id == pageComponent.componentId) {\r\n component = this.state.allAnnouncements[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"BannerContainer\":\r\n for (var i = 0; i < this.state.allBannerContainers.length; i++) {\r\n if (this.state.allBannerContainers[i].id == pageComponent.componentId) {\r\n component = this.state.allBannerContainers[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"IconLinkContainer\":\r\n for (var i = 0; i < this.state.allIconLinkContainers.length; i++) {\r\n if (this.state.allIconLinkContainers[i].id == pageComponent.componentId) {\r\n component = this.state.allIconLinkContainers[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"ColumnsTabContainer\":\r\n for (var i = 0; i < this.state.allColumnsTabContainers.length; i++) {\r\n if (this.state.allColumnsTabContainers[i].id == pageComponent.componentId) {\r\n component = this.state.allColumnsTabContainers[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"Accordion\":\r\n for (var i = 0; i < this.state.allAccordions.length; i++) {\r\n if (this.state.allAccordions[i].id == pageComponent.componentId) {\r\n component = this.state.allAccordions[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"HtmlEditor\":\r\n for (var i = 0; i < this.state.allHtmlEditors.length; i++) {\r\n if (this.state.allHtmlEditors[i].id == pageComponent.componentId) {\r\n component = this.state.allHtmlEditors[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"BigText5050\":\r\n for (var i = 0; i < this.state.allBigText5050s.length; i++) {\r\n if (this.state.allBigText5050s[i].id == pageComponent.componentId) {\r\n component = this.state.allBigText5050s[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"Contact5050\":\r\n for (var i = 0; i < this.state.allContact5050s.length; i++) {\r\n if (this.state.allContact5050s[i].id == pageComponent.componentId) {\r\n component = this.state.allContact5050s[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"SingleFeatures1\":\r\n for (var i = 0; i < this.state.allSingleFeatures1s.length; i++) {\r\n if (this.state.allSingleFeatures1s[i].id == pageComponent.componentId) {\r\n component = this.state.allSingleFeatures1s[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"Features1\":\r\n for (var i = 0; i < this.state.allFeatures1s.length; i++) {\r\n if (this.state.allFeatures1s[i].id == pageComponent.componentId) {\r\n component = this.state.allFeatures1s[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"Grid5050\":\r\n for (var i = 0; i < this.state.allGrid5050s.length; i++) {\r\n if (this.state.allGrid5050s[i].id == pageComponent.componentId) {\r\n component = this.state.allGrid5050s[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"ActionButton\":\r\n for (var i = 0; i < this.state.allActionButtons.length; i++) {\r\n if (this.state.allActionButtons[i].id == pageComponent.componentId) {\r\n component = this.state.allActionButtons[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"HRSeparator\":\r\n for (var i = 0; i < this.state.allHRSeparators.length; i++) {\r\n if (this.state.allHRSeparators[i].id == pageComponent.componentId) {\r\n component = this.state.allHRSeparators[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"Card\":\r\n for (var i = 0; i < this.state.allCards.length; i++) {\r\n if (this.state.allCards[i].id == pageComponent.componentId) {\r\n component = this.state.allCards[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"CardContainer\":\r\n for (var i = 0; i < this.state.allCardContainers.length; i++) {\r\n if (this.state.allCardContainers[i].id == pageComponent.componentId) {\r\n component = this.state.allCardContainers[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"Calendar\":\r\n for (var i = 0; i < this.state.allCalendars.length; i++) {\r\n if (this.state.allCalendars[i].id == pageComponent.componentId) {\r\n component = this.state.allCalendars[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"DocumentTable\":\r\n for (var i = 0; i < this.state.allDocumentTables.length; i++) {\r\n if (this.state.allDocumentTables[i].id == pageComponent.componentId) {\r\n component = this.state.allDocumentTables[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"EventTable\":\r\n for (var i = 0; i < this.state.allEventTables.length; i++) {\r\n if (this.state.allEventTables[i].id == pageComponent.componentId) {\r\n component = this.state.allEventTables[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"BlogTable\":\r\n for (var i = 0; i < this.state.allBlogTables.length; i++) {\r\n if (this.state.allBlogTables[i].id == pageComponent.componentId) {\r\n component = this.state.allBlogTables[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"BlogPreview\":\r\n for (var i = 0; i < this.state.allBlogPreviews.length; i++) {\r\n if (this.state.allBlogPreviews[i].id == pageComponent.componentId) {\r\n component = this.state.allBlogPreviews[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"NewsTable\":\r\n for (var i = 0; i < this.state.allNewsTables.length; i++) {\r\n if (this.state.allNewsTables[i].id == pageComponent.componentId) {\r\n component = this.state.allNewsTables[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"BirthdayTable\":\r\n for (var i = 0; i < this.state.allBirthdayTables.length; i++) {\r\n if (this.state.allBirthdayTables[i].id == pageComponent.componentId) {\r\n component = this.state.allBirthdayTables[i];\r\n break;\r\n }\r\n }\r\n break;\r\n case \"SideContainer\":\r\n for (var i = 0; i < this.state.allSideContainers.length; i++) {\r\n if (this.state.allSideContainers[i].id == pageComponent.componentId) {\r\n component = this.state.allSideContainers[i];\r\n break;\r\n }\r\n }\r\n break;\r\n default:\r\n component = null;\r\n break;\r\n }\r\n }\r\n return component;\r\n }\r\n\r\n /* Update the current tab */\r\n switchTab(tabName) {\r\n this.setState({\r\n columnTab: tabName,\r\n resetCurrentComponents: true\r\n });\r\n\r\n this.getComponentData();\r\n }\r\n\r\n /* Update the version from the selection in the ddl */\r\n updateCurrentVersion(e) {\r\n let value = e.target.value.split(\"|\");\r\n let versionId = parseInt(value[0]);\r\n this.setState({\r\n versionId: versionId,\r\n versionStatus: value[1],\r\n resetCurrentComponents: true,\r\n currentCenter: null,\r\n tempCurrentCenter: null,\r\n componentSelection: { type: null, id: null }\r\n });\r\n this.getComponentData();\r\n }\r\n\r\n /* Update the versions for a new draft */\r\n async createDraft(e) {\r\n e.preventDefault();\r\n document.body.style.cursor = 'wait';\r\n\r\n let confirmAction = window.confirm(\"Are you sure you want to create a new draft?\");\r\n if (confirmAction) {\r\n const response = await fetch('Version/CreateDraft?pageId=' + this.state.page.id + \"©VersionId=\" + this.state.versionId + \"&loggedInEmail=\" + this.state.loggedInUser.email, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n versionId: data,\r\n versionStatus: 'draft',\r\n resetCurrentComponents: true,\r\n currentCenter: null,\r\n tempCurrentCenter: null,\r\n componentSelection: { type: null, id: null }\r\n });\r\n this.getComponentData();\r\n }\r\n document.body.style.cursor = 'default';\r\n }\r\n\r\n /* Send current draft to pending for approval */\r\n async submitDraft(e) {\r\n e.preventDefault();\r\n document.body.style.cursor = 'wait';\r\n\r\n let confirmAction = window.confirm(\"Are you sure you want to submit this draft?\");\r\n if (confirmAction) {\r\n let versionComments = window.prompt(\"Version Comments:\");\r\n let pageLink = window.location;\r\n const response = await fetch('Version/SubmitDraft?pageId=' + this.state.page.id + \"&loggedInEmail=\" + this.state.loggedInUser.email + \"&pageLink=\" + pageLink + \"&comments=\" + versionComments, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n this.setState({\r\n versionStatus: 'pending',\r\n resetCurrentComponents: true,\r\n currentCenter: null,\r\n tempCurrentCenter: null,\r\n componentSelection: { type: null, id: null }\r\n });\r\n this.getComponentData();\r\n }\r\n document.body.style.cursor = 'default';\r\n }\r\n\r\n /* Send current pending version back to draft */\r\n async rejectDraft(e) {\r\n e.preventDefault();\r\n document.body.style.cursor = 'wait';\r\n\r\n let confirmAction = window.confirm(\"Are you sure you want to reject this draft?\");\r\n if (confirmAction) {\r\n let versionComments = window.prompt(\"Version Comments:\");\r\n let pageLink = window.location;\r\n const response = await fetch('Version/RejectDraft?pageId=' + this.state.page.id + \"&loggedInEmail=\" + this.state.loggedInUser.email + \"&pageLink=\" + pageLink + \"&comments=\" + versionComments, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n this.setState({\r\n versionStatus: 'draft',\r\n resetCurrentComponents: true,\r\n currentCenter: null,\r\n tempCurrentCenter: null,\r\n componentSelection: { type: null, id: null }\r\n });\r\n this.getComponentData();\r\n }\r\n document.body.style.cursor = 'default';\r\n }\r\n\r\n /* Make the current working draft live */\r\n async publishDraft(e) {\r\n e.preventDefault();\r\n document.body.style.cursor = 'wait';\r\n\r\n let confirmAction = window.confirm(\"Are you sure you want to publish this draft?\");\r\n if (confirmAction) {\r\n let versionComments = window.prompt(\"Version Comments:\");\r\n let pageLink = window.location;\r\n const response = await fetch('Version/PublishDraft?pageId=' + this.state.page.id + \"&versionId=\" + this.state.versionId + \"&loggedInEmail=\" + this.state.loggedInUser.email + \"&pageLink=\" + pageLink + \"&comments=\" + versionComments, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n versionId: data,\r\n versionStatus: 'live',\r\n resetCurrentComponents: true,\r\n currentCenter: null,\r\n tempCurrentCenter: null,\r\n componentSelection: { type: null, id: null }\r\n });\r\n this.getComponentData();\r\n }\r\n document.body.style.cursor = 'default';\r\n }\r\n\r\n /* Delete the current working draft */\r\n async deleteDraft(e) {\r\n e.preventDefault();\r\n document.body.style.cursor = 'wait';\r\n\r\n let confirmAction = window.confirm(\"Are you sure you want to delete this draft?\");\r\n if (confirmAction) {\r\n const response = await fetch('Version/DeleteDraft?pageId=' + this.state.page.id + \"&loggedInEmail=\" + this.state.loggedInUser.email, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n resetCurrentComponents: true,\r\n currentCenter: null,\r\n tempCurrentCenter: null,\r\n componentSelection: { type: null, id: null }\r\n });\r\n this.getComponentData(true);\r\n }\r\n document.body.style.cursor = 'default';\r\n }\r\n\r\n render() {\r\n let page = this.state.page;\r\n let pageComponents = this.state.pageComponents;\r\n\r\n let managementData = this.state.currentCenter != null ? this.state.currentCenter :\r\n
\r\n

 

\r\n
\r\n This area is used to add/update components and connect components to the selected page.\r\n
\r\n
;\r\n\r\n let pageData;\r\n let pageNameTitle;\r\n if (page != null && !this.state.resetPageDetails) {\r\n pageData = ;\r\n\r\n pageNameTitle =

{page.name} Page & Component Management

;\r\n }\r\n else {\r\n pageData = \"\";\r\n pageNameTitle =

Page & Component Management

;\r\n }\r\n\r\n let componentData;\r\n if (pageComponents != null) {\r\n var componentsOnPage = [];\r\n\r\n pageComponents.forEach((component, i) => {\r\n if (component.versionId == this.state.versionId) {\r\n let key = 'currentComponents' + i;\r\n\r\n let pageComponentId = component.id.toString();\r\n let componentObj = this.getComponentFromPageComponent(component);\r\n let isComponentSelected = (this.state.componentSelection.type == component.type && this.state.componentSelection.id == component.componentId) ? true : false;\r\n let currentComponentClasses = isComponentSelected ? \"current-component selected-component\" : \"current-component\";\r\n currentComponentClasses += this.state.versionStatus == 'draft' ? \"\" : \" disable-dnd\";\r\n\r\n let currentComponentDnDIcon = this.state.versionStatus == 'draft' ?\r\n :\r\n \"\";\r\n\r\n let currentComponentManagementBtns = this.state.versionStatus == 'draft' ?\r\n <>\r\n \r\n \r\n :\r\n <>\r\n \r\n ;\r\n\r\n let componentContent =
\r\n {currentComponentDnDIcon}\r\n
\r\n {(componentObj != null && componentObj.componentName != null) ? componentObj.componentName : component.componentId}\r\n
\r\n ({componentMap.componentTypeDisplay(component.type)})\r\n
\r\n
\r\n {currentComponentManagementBtns}\r\n
\r\n
;\r\n\r\n componentsOnPage.push(\r\n { id: pageComponentId, content: componentContent }\r\n );\r\n }\r\n });\r\n\r\n let componentColumns = {\r\n [uuid()]: {\r\n name: 'Current Components',\r\n items: componentsOnPage\r\n }\r\n };\r\n\r\n let currentComponentDataDnD = (this.state.versionStatus == 'draft') ?\r\n :\r\n ;\r\n if (this.state.resetCurrentComponents) currentComponentDataDnD = \"\";\r\n\r\n //Check if a draft is already available\r\n let hasDraft = false;\r\n if (pageComponents != null) {\r\n for (var i = 0; i < pageComponents.length; i++) {\r\n if (pageComponents[i].status == \"draft\") {\r\n hasDraft = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n //Check if a pending is already available\r\n let hasPending = false;\r\n if (pageComponents != null) {\r\n for (var i = 0; i < pageComponents.length; i++) {\r\n if (pageComponents[i].status == \"pending\") {\r\n hasPending = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n let versionOptions = [];\r\n if (pageComponents != null) {\r\n let sortedPageComponents = pageComponents;\r\n sortedPageComponents.sort((a, b) => (a.versionId > b.versionId) ? 1 : ((b.versionId > a.versionId) ? -1 : 0)); //Sort by versionId\r\n //console.log(sortedPageComponents);\r\n\r\n let lastVersionId = sortedPageComponents[0] != undefined ? sortedPageComponents[0].versionId : 1;\r\n let tempMostRecentPC = sortedPageComponents[0];\r\n let mostRecentVersionArray = [];\r\n for (var i = 0; i < sortedPageComponents.length; i++) {//Get array of most recent versions by versionId\r\n if (sortedPageComponents[i].versionId == lastVersionId) {\r\n if (sortedPageComponents[i].timestamp > tempMostRecentPC.timestamp) {\r\n tempMostRecentPC = sortedPageComponents[i];\r\n }\r\n }\r\n else {\r\n mostRecentVersionArray.push(tempMostRecentPC);//Add most recent of previous version\r\n lastVersionId = sortedPageComponents[i].versionId;\r\n tempMostRecentPC = sortedPageComponents[i];\r\n }\r\n }\r\n mostRecentVersionArray.push(tempMostRecentPC);//Add the last most recent pc\r\n //console.log(mostRecentVersionArray);\r\n\r\n mostRecentVersionArray.reverse();\r\n if (mostRecentVersionArray.length > 0) {\r\n for (var i = 0; i < mostRecentVersionArray.length; i++) {\r\n //Skip if version limit met\r\n if ((i + 1) > this.state.versionLimit) {\r\n break;\r\n }\r\n\r\n if (mostRecentVersionArray[i] != undefined) {\r\n let versionOptKey = \"version\" + mostRecentVersionArray[i].versionId;\r\n let timestamp = new Date(mostRecentVersionArray[i].timestamp);\r\n\r\n versionOptions.push();\r\n }\r\n }\r\n }\r\n\r\n let today = new Date();\r\n let tempVersionOpts = ;\r\n if (versionOptions.length == 0 || (!hasDraft && this.state.versionStatus == 'draft')) versionOptions.unshift(tempVersionOpts);\r\n }\r\n\r\n //Determine the version buttons to display\r\n let versionButtons = [];\r\n if (this.state.versionStatus == \"live\" || this.state.versionStatus == \"backup\") {\r\n if (!hasDraft && !hasPending) {\r\n versionButtons.push();\r\n }\r\n }\r\n else if (this.state.versionStatus == \"draft\") {\r\n if (hasDraft) {\r\n versionButtons.push();\r\n versionButtons.push();\r\n }\r\n else {\r\n versionButtons.push();\r\n }\r\n }\r\n else if (this.state.versionStatus == \"pending\") {\r\n //console.log(this.state.loggedInUser);\r\n if (this.state.loggedInUser != null && (this.state.loggedInUser.role == \"Admin\")) {\r\n versionButtons.push();\r\n versionButtons.push();\r\n }\r\n }\r\n\r\n let addComponentBtns = \"\";\r\n if (this.state.versionStatus == \"draft\") {\r\n if (this.state.loggedInUser != null && this.state.loggedInUser.company == \"TracSoft\" && this.state.loggedInUser.role == \"Admin\") {\r\n addComponentBtns = <>\r\n
\r\n
\r\n ;\r\n }\r\n else {\r\n addComponentBtns = <>\r\n
\r\n ;\r\n }\r\n }\r\n\r\n let versionSelectValue = this.state.versionId + \"|\" + this.state.versionStatus;\r\n //console.log(versionSelectValue);\r\n \r\n let versionSelectDDL =\r\n ;\r\n if (this.state.resetCurrentComponents) versionSelectDDL = \"\";\r\n componentData =
\r\n

Page Components

\r\n\r\n
\r\n {versionSelectDDL}\r\n
\r\n {versionButtons}\r\n
\r\n
\r\n\r\n {currentComponentDataDnD}\r\n\r\n {addComponentBtns}\r\n
;\r\n //console.log(document.getElementById(\"versionSelect\"));\r\n }\r\n\r\n let pagePreviewLink = this.state.page != null ? 'PagePreview/' + this.state.page.id + \"/\" + this.state.versionId : \"\";\r\n\r\n if (this.state.tempCurrentCenter != null) {\r\n this.resetCurrentCenter();\r\n }\r\n\r\n let versionLog = this.state.page != null ? : \"\";\r\n\r\n let tabData;\r\n if (this.state.columnTab == 'componentDetails') {\r\n let componentDetails =
\r\n {managementData}\r\n
;\r\n tabData = componentDetails;\r\n }\r\n else if (this.state.columnTab == 'pageVersionLog') {\r\n let versionLogDetails =
\r\n {versionLog}\r\n
;\r\n tabData = versionLogDetails;\r\n }\r\n else {\r\n let pageDetails =
\r\n {pageData}\r\n
;\r\n tabData = pageDetails;\r\n }\r\n\r\n let versionLogTab = this.state.loggedInUser != null && (this.state.loggedInUser.role == \"Admin\") ?\r\n : \"\";\r\n\r\n let previewButton = PREVIEW;\r\n if (this.state.page != null && this.state.page.isExternal) {\r\n componentData = \"\";\r\n previewButton = \"\";\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {pageNameTitle}\r\n
\r\n\r\n
\r\n {componentData}\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n {versionLogTab}\r\n\r\n {previewButton}\r\n
\r\n\r\n {tabData}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n async getComponentData(shouldSetVersion) {\r\n shouldSetVersion = shouldSetVersion == undefined || shouldSetVersion == null ? false : shouldSetVersion;\r\n let pageId = (this.props.pageId !== undefined) ? this.props.pageId : 0;\r\n\r\n const response = await fetch('Admin/GetPageComponentData?pageId=' + pageId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n //console.log(data);\r\n\r\n const isFormInitialized = await adminSettingsService.isFormInitialized();\r\n\r\n const isDocumentInitialized = await adminSettingsService.isDocumentInitialized();\r\n\r\n const isEventInitialized = await adminSettingsService.isEventInitialized();\r\n\r\n const isBlogInitialized = await adminSettingsService.isBlogInitialized();\r\n\r\n const isNewsInitialized = await adminSettingsService.isNewsInitialized();\r\n\r\n const isBirthdayInitialized = await adminSettingsService.isBirthdayInitialized();\r\n\r\n const versionLimitString = await adminSettingsService.getVersionLimit();\r\n var versionLimit = !isNaN(versionLimitString) ? parseInt(versionLimitString) : this.state.versionLimit;\r\n\r\n let versionId = this.state.versionId;\r\n let versionStatus = this.state.versionStatus;\r\n if (shouldSetVersion) {\r\n for (var i = 0; i < data.pageComponents.length; i++) { //Determine version\r\n //console.log(data.pageComponents[i]);\r\n if (data.pageComponents[i].status == 'draft' || data.pageComponents[i].status == 'pending') {\r\n versionId = data.pageComponents[i].versionId;\r\n versionStatus = data.pageComponents[i].status;\r\n break;\r\n }\r\n else if (data.pageComponents[i].status == 'live') {\r\n versionId = data.pageComponents[i].versionId;\r\n versionStatus = data.pageComponents[i].status;\r\n }\r\n }\r\n }\r\n\r\n let loggedInUser = await getLoggedInUser();\r\n if (loggedInUser != null) loggedInUser = JSON.parse(loggedInUser);\r\n\r\n this.setState({\r\n resetCurrentComponents: false,\r\n resetPageDetails: false,\r\n isFormInitialized: isFormInitialized,\r\n isDocumentInitialized: isDocumentInitialized,\r\n isEventInitialized: isEventInitialized,\r\n isBlogInitialized: isBlogInitialized,\r\n isNewsInitialized: isNewsInitialized,\r\n isBirthdayInitialized: isBirthdayInitialized,\r\n versionId: versionId,\r\n versionStatus: versionStatus,\r\n versionLimit: versionLimit,\r\n\r\n page: data.page,\r\n pageComponents: data.pageComponents,\r\n allComponentTypes: data.allComponentTypes,\r\n loggedInUser: loggedInUser,\r\n\r\n allAnnouncements: data.allComponents.announcements,\r\n allBannerContainers: data.allComponents.bannerContainers,\r\n allIconLinkContainers: data.allComponents.iconLinkContainers,\r\n allColumnsTabContainers: data.allComponents.columnsTabContainers,\r\n allAccordions: data.allComponents.accordions,\r\n allHtmlEditors: data.allComponents.htmlEditors,\r\n allBigText5050s: data.allComponents.bigText5050s,\r\n allContact5050s: data.allComponents.contact5050s,\r\n allSingleFeatures1s: data.allComponents.singleFeatures1s,\r\n allFeatures1s: data.allComponents.features1s,\r\n allGrid5050s: data.allComponents.grid5050s,\r\n allActionButtons: data.allComponents.actionButtons,\r\n allHRSeparators: data.allComponents.hrSeparators,\r\n allCards: data.allComponents.cards,\r\n allCardContainers: data.allComponents.cardContainers,\r\n allCalendars: data.allComponents.calendars,\r\n allDocumentTables: data.allComponents.documentTables,\r\n allEventTables: data.allComponents.eventTables,\r\n allBlogTables: data.allComponents.blogTables,\r\n allBlogPreviews: data.allComponents.blogPreviews,\r\n allNewsTables: data.allComponents.newsTables,\r\n allBirthdayTables: data.allComponents.birthdayTables,\r\n allSideContainers: data.allComponents.sideContainers\r\n });\r\n }\r\n}\r\n\r\nexport default PageComponentForm;","import { UserManager, WebStorageStateStore } from 'oidc-client';\r\nimport { ApplicationPaths, ApplicationName } from './ApiAuthorizationConstants';\r\n\r\nexport class AuthorizeService {\r\n _callbacks = [];\r\n _nextSubscriptionId = 0;\r\n _user = null;\r\n _isAuthenticated = false;\r\n\r\n // By default pop ups are disabled because they don't work properly on Edge.\r\n // If you want to enable pop up authentication simply set this flag to false.\r\n _popUpDisabled = true;\r\n\r\n async isAuthenticated() {\r\n const user = await this.getUser();\r\n return !!user;\r\n }\r\n\r\n async getUser() {\r\n if (this._user && this._user.profile) {\r\n return this._user.profile;\r\n }\r\n\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.getUser();\r\n return user && user.profile;\r\n }\r\n\r\n async getAccessToken() {\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.getUser();\r\n return user && user.access_token;\r\n }\r\n\r\n // We try to authenticate the user in three different ways:\r\n // 1) We try to see if we can authenticate the user silently. This happens\r\n // when the user is already logged in on the IdP and is done using a hidden iframe\r\n // on the client.\r\n // 2) We try to authenticate the user using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 3) If the two methods above fail, we redirect the browser to the IdP to perform a traditional\r\n // redirect flow.\r\n async signIn(state) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n const silentUser = await this.userManager.signinSilent(this.createArguments());\r\n this.updateState(silentUser);\r\n return this.success(state);\r\n } catch (silentError) {\r\n // User might not be authenticated, fallback to popup authentication\r\n console.log(\"Silent authentication error: \", silentError);\r\n\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\r\n }\r\n\r\n const popUpUser = await this.userManager.signinPopup(this.createArguments());\r\n this.updateState(popUpUser);\r\n return this.success(state);\r\n } catch (popUpError) {\r\n if (popUpError.message === \"Popup window closed\") {\r\n // The user explicitly cancelled the login action by closing an opened popup.\r\n return this.error(\"The user closed the window.\");\r\n } else if (!this._popUpDisabled) {\r\n console.log(\"Popup authentication error: \", popUpError);\r\n }\r\n\r\n // PopUps might be blocked by the user, fallback to redirect\r\n try {\r\n await this.userManager.signinRedirect(this.createArguments(state));\r\n return this.redirect();\r\n } catch (redirectError) {\r\n console.log(\"Redirect authentication error: \", redirectError);\r\n return this.error(redirectError);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async completeSignIn(url) {\r\n try {\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.signinCallback(url);\r\n this.updateState(user);\r\n return this.success(user && user.state);\r\n } catch (error) {\r\n console.log('There was an error signing in: ', error);\r\n return this.error('There was an error signing in.');\r\n }\r\n }\r\n\r\n // We try to sign out the user in two different ways:\r\n // 1) We try to do a sign-out using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 2) If the method above fails, we redirect the browser to the IdP to perform a traditional\r\n // post logout redirect flow.\r\n async signOut(state) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\r\n }\r\n\r\n await this.userManager.signoutPopup(this.createArguments());\r\n this.updateState(undefined);\r\n return this.success(state);\r\n } catch (popupSignOutError) {\r\n console.log(\"Popup signout error: \", popupSignOutError);\r\n try {\r\n await this.userManager.signoutRedirect(this.createArguments(state));\r\n return this.redirect();\r\n } catch (redirectSignOutError) {\r\n console.log(\"Redirect signout error: \", redirectSignOutError);\r\n return this.error(redirectSignOutError);\r\n }\r\n }\r\n }\r\n\r\n async completeSignOut(url) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n const response = await this.userManager.signoutCallback(url);\r\n this.updateState(null);\r\n return this.success(response && response.data);\r\n } catch (error) {\r\n console.log(`There was an error trying to log out '${error}'.`);\r\n return this.error(error);\r\n }\r\n }\r\n\r\n updateState(user) {\r\n this._user = user;\r\n this._isAuthenticated = !!this._user;\r\n this.notifySubscribers();\r\n }\r\n\r\n subscribe(callback) {\r\n this._callbacks.push({ callback, subscription: this._nextSubscriptionId++ });\r\n return this._nextSubscriptionId - 1;\r\n }\r\n\r\n unsubscribe(subscriptionId) {\r\n const subscriptionIndex = this._callbacks\r\n .map((element, index) => element.subscription === subscriptionId ? { found: true, index } : { found: false })\r\n .filter(element => element.found === true);\r\n if (subscriptionIndex.length !== 1) {\r\n throw new Error(`Found an invalid number of subscriptions ${subscriptionIndex.length}`);\r\n }\r\n\r\n this._callbacks.splice(subscriptionIndex[0].index, 1);\r\n }\r\n\r\n notifySubscribers() {\r\n for (let i = 0; i < this._callbacks.length; i++) {\r\n const callback = this._callbacks[i].callback;\r\n callback();\r\n }\r\n }\r\n\r\n createArguments(state) {\r\n return { useReplaceToNavigate: true, data: state };\r\n }\r\n\r\n error(message) {\r\n return { status: AuthenticationResultStatus.Fail, message };\r\n }\r\n\r\n success(state) {\r\n return { status: AuthenticationResultStatus.Success, state };\r\n }\r\n\r\n redirect() {\r\n return { status: AuthenticationResultStatus.Redirect };\r\n }\r\n\r\n async ensureUserManagerInitialized() {\r\n if (this.userManager !== undefined) {\r\n return;\r\n }\r\n\r\n let response = await fetch(ApplicationPaths.ApiAuthorizationClientConfigurationUrl);\r\n if (!response.ok) {\r\n throw new Error(`Could not load settings for '${ApplicationName}'`);\r\n }\r\n\r\n let settings = await response.json();\r\n settings.automaticSilentRenew = true;\r\n settings.includeIdTokenInSilentRenew = true;\r\n settings.userStore = new WebStorageStateStore({\r\n prefix: ApplicationName\r\n });\r\n\r\n this.userManager = new UserManager(settings);\r\n\r\n this.userManager.events.addUserSignedOut(async () => {\r\n await this.userManager.removeUser();\r\n this.updateState(undefined);\r\n });\r\n }\r\n\r\n static get instance() { return authService }\r\n}\r\n\r\nconst authService = new AuthorizeService();\r\n\r\nexport default authService;\r\n\r\nexport const AuthenticationResultStatus = {\r\n Redirect: 'redirect',\r\n Success: 'success',\r\n Fail: 'fail'\r\n};","export const ApplicationName = 'TracsoftCMS';\r\n\r\nexport const QueryParameterNames = {\r\n ReturnUrl: 'returnUrl',\r\n Message: 'message'\r\n};\r\n\r\nexport const LogoutActions = {\r\n LogoutCallback: 'logout-callback',\r\n Logout: 'logout',\r\n LoggedOut: 'logged-out'\r\n};\r\n\r\nexport const LoginActions = {\r\n Login: 'login',\r\n LoginCallback: 'login-callback',\r\n LoginFailed: 'login-failed',\r\n Profile: 'profile',\r\n Register: 'register'\r\n};\r\n\r\nconst prefix = '/authentication';\r\n\r\nexport const ApplicationPaths = {\r\n DefaultLoginRedirectPath: '/',\r\n ApiAuthorizationClientConfigurationUrl: `/_configuration/${ApplicationName}`,\r\n ApiAuthorizationPrefix: prefix,\r\n Login: `${prefix}/${LoginActions.Login}`,\r\n LoginFailed: `${prefix}/${LoginActions.LoginFailed}`,\r\n LoginCallback: `${prefix}/${LoginActions.LoginCallback}`,\r\n Register: `${prefix}/${LoginActions.Register}`,\r\n Profile: `${prefix}/${LoginActions.Profile}`,\r\n LogOut: `${prefix}/${LogoutActions.Logout}`,\r\n LoggedOut: `${prefix}/${LogoutActions.LoggedOut}`,\r\n LogOutCallback: `${prefix}/${LogoutActions.LogoutCallback}`,\r\n IdentityRegisterPath: '/Identity/Account/Register',\r\n IdentityManagePath: '/Identity/Account/Manage'\r\n};","import React from 'react'\r\nimport { Component } from 'react';\r\nimport authService from './AuthorizeService';\r\nimport { AuthenticationResultStatus } from './AuthorizeService';\r\nimport { LoginActions, QueryParameterNames, ApplicationPaths } from './ApiAuthorizationConstants';\r\n\r\n// The main responsibility of this component is to handle the user's login process.\r\n// This is the starting point for the login process. Any component that needs to authenticate\r\n// a user can simply perform a redirect to this component with a returnUrl query parameter and\r\n// let the component perform the login and return back to the return url.\r\nexport class Login extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n message: undefined\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LoginActions.Login:\r\n this.login(this.getReturnUrl());\r\n break;\r\n case LoginActions.LoginCallback:\r\n this.processLoginCallback();\r\n break;\r\n case LoginActions.LoginFailed:\r\n const params = new URLSearchParams(window.location.search);\r\n const error = params.get(QueryParameterNames.Message);\r\n this.setState({ message: error });\r\n break;\r\n case LoginActions.Profile:\r\n this.redirectToProfile();\r\n break;\r\n case LoginActions.Register:\r\n this.redirectToRegister();\r\n break;\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n\r\n render() {\r\n const action = this.props.action;\r\n const { message } = this.state;\r\n\r\n if (!!message) {\r\n return
{message}
\r\n } else {\r\n switch (action) {\r\n case LoginActions.Login:\r\n return (
Processing login
);\r\n case LoginActions.LoginCallback:\r\n return (
Processing login callback
);\r\n case LoginActions.Profile:\r\n case LoginActions.Register:\r\n return (
);\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n }\r\n\r\n async login(returnUrl) {\r\n const state = { returnUrl };\r\n const result = await authService.signIn(state);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break;\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(returnUrl);\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(`Invalid status result ${result.status}.`);\r\n }\r\n }\r\n\r\n async processLoginCallback() {\r\n const url = window.location.href;\r\n const result = await authService.completeSignIn(url);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeSignIn finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.');\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(`Invalid authentication result status '${result.status}'.`);\r\n }\r\n }\r\n\r\n getReturnUrl(state) {\r\n const params = new URLSearchParams(window.location.search);\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\r\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\r\n // This is an extra check to prevent open redirects.\r\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\r\n }\r\n return (state && state.returnUrl) || fromQuery || `${window.location.origin}/`;\r\n }\r\n\r\n redirectToRegister() {\r\n this.redirectToApiAuthorizationPath(`${ApplicationPaths.IdentityRegisterPath}?${QueryParameterNames.ReturnUrl}=${encodeURI(ApplicationPaths.Login)}`);\r\n }\r\n\r\n redirectToProfile() {\r\n this.redirectToApiAuthorizationPath(ApplicationPaths.IdentityManagePath);\r\n }\r\n\r\n redirectToApiAuthorizationPath(apiAuthorizationPath) {\r\n const redirectUrl = `${window.location.origin}${apiAuthorizationPath}`;\r\n // It's important that we do a replace here so that when the user hits the back arrow on the\r\n // browser he gets sent back to where it was on the app instead of to an endpoint on this\r\n // component.\r\n window.location.replace(redirectUrl);\r\n }\r\n\r\n navigateToReturnUrl(returnUrl) {\r\n // It's important that we do a replace here so that we remove the callback uri with the\r\n // fragment containing the tokens from the browser history.\r\n window.location.replace(returnUrl);\r\n }\r\n}","import React from 'react'\r\nimport { Component } from 'react';\r\nimport authService from './AuthorizeService';\r\nimport { AuthenticationResultStatus } from './AuthorizeService';\r\nimport { QueryParameterNames, LogoutActions, ApplicationPaths } from './ApiAuthorizationConstants';\r\n\r\n// The main responsibility of this component is to handle the user's logout process.\r\n// This is the starting point for the logout process, which is usually initiated when a\r\n// user clicks on the logout button on the LoginMenu component.\r\nexport class Logout extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n message: undefined,\r\n isReady: false,\r\n authenticated: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n if (!!window.history.state.state.local) {\r\n this.logout(this.getReturnUrl());\r\n } else {\r\n // This prevents regular links to /authentication/logout from triggering a logout\r\n this.setState({ isReady: true, message: \"The logout was not initiated from within the page.\" });\r\n }\r\n break;\r\n case LogoutActions.LogoutCallback:\r\n this.processLogoutCallback();\r\n break;\r\n case LogoutActions.LoggedOut:\r\n this.setState({ isReady: true, message: \"You successfully logged out!\" });\r\n break;\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n\r\n this.populateAuthenticationState();\r\n }\r\n\r\n render() {\r\n const { isReady, message } = this.state;\r\n if (!isReady) {\r\n return
\r\n }\r\n if (!!message) {\r\n return (
{message}
);\r\n } else {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n return (
Processing logout
);\r\n case LogoutActions.LogoutCallback:\r\n return (
Processing logout callback
);\r\n case LogoutActions.LoggedOut:\r\n return (
{message}
);\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n }\r\n\r\n async logout(returnUrl) {\r\n const state = { returnUrl };\r\n const isauthenticated = await authService.isAuthenticated();\r\n if (isauthenticated) {\r\n const result = await authService.signOut(state);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break;\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(returnUrl);\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(\"Invalid authentication result status.\");\r\n }\r\n } else {\r\n this.setState({ message: \"You successfully logged out!\" });\r\n }\r\n }\r\n\r\n async processLogoutCallback() {\r\n const url = window.location.href;\r\n const result = await authService.completeSignOut(url);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeAuthentication finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.');\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(\"Invalid authentication result status.\");\r\n }\r\n }\r\n\r\n async populateAuthenticationState() {\r\n const authenticated = await authService.isAuthenticated();\r\n this.setState({ isReady: true, authenticated });\r\n }\r\n\r\n getReturnUrl(state) {\r\n const params = new URLSearchParams(window.location.search);\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\r\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\r\n // This is an extra check to prevent open redirects.\r\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\r\n }\r\n return (state && state.returnUrl) ||\r\n fromQuery ||\r\n `${window.location.origin}${ApplicationPaths.LoggedOut}`;\r\n }\r\n\r\n navigateToReturnUrl(returnUrl) {\r\n return window.location.replace(returnUrl);\r\n }\r\n}","import React, { Component } from 'react';\r\n//import './ContactInfo.css';\r\nexport class ContactInfo extends Component {\r\n static displayName = ContactInfo.name;\r\n\r\nrender() {\r\n return (\r\n \r\n );\r\n}\r\n}","import React, { Component } from 'react';\r\nimport adminSettingsService from '../Admin/AdminSettingsService';\r\nimport './menuitems.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faCaretRight } from '@fortawesome/free-solid-svg-icons';\r\n\r\nexport class MenuItems extends Component {\r\n static displayName = MenuItems.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n menuItems: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let menuItems;\r\n\r\n if (this.state.menuItems != null) {\r\n var menuItemArray = [];\r\n this.state.menuItems.forEach((e, i) => {\r\n let page = e.page;\r\n let subMenuPages = e.subMenuPages;\r\n\r\n if (page.status == \"Deleted\") {\r\n return;\r\n }\r\n\r\n let subPages = [];\r\n subMenuPages.forEach((subPage, j) => {\r\n if (subPage.status == \"Deleted\") {\r\n return;\r\n }\r\n if (subPage.isExternal) {\r\n let openType = subPage.openType == \"NewTab\" ? \"_blank\" : \"_self\";\r\n subPages.push({subPage.name});\r\n }\r\n else {\r\n subPages.push({subPage.name});\r\n }\r\n })\r\n\r\n let menuItem;\r\n if (subPages.length > 0) {\r\n if (page.allowNavigation) {\r\n menuItem =
\r\n \r\n
\r\n {subPages}\r\n
\r\n
;\r\n }\r\n else {\r\n menuItem =
\r\n \r\n
\r\n {subPages}\r\n
\r\n
;\r\n }\r\n }\r\n else {\r\n if (page.isExternal) {\r\n let openType = page.openType == \"NewTab\" ? \"_blank\" : \"_self\";\r\n menuItem =
  • {page.name}
  • ;\r\n }\r\n else {\r\n menuItem =
  • {page.name}
  • ;\r\n }\r\n }\r\n menuItemArray.push(menuItem);\r\n\r\n //Add bar\r\n if (this.state.menuItems.length > (i + 1)) {\r\n menuItemArray.push(|);\r\n }\r\n })\r\n\r\n menuItems = menuItemArray;\r\n }\r\n\r\n return (\r\n
      \r\n {menuItems}\r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const menuResponse = await fetch('components/GetMenuItems', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const menuData = await menuResponse.json();\r\n //console.log(menuData);\r\n\r\n this.setState({\r\n menuItems: menuData\r\n });\r\n }\r\n}","import React, { Component } from 'react';\r\nimport adminSettingsService from '../Admin/AdminSettingsService';\r\nimport './sidemenu.css';\r\n\r\nexport class SideMenu extends Component {\r\n static displayName = SideMenu.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n menuItems: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n toggleAccordion(e) {\r\n let toggleId = e.target.attributes.getNamedItem('data-toggle-id').value;\r\n let menuItems = this.state.menuItems;\r\n\r\n //Find the page and update the toggle\r\n loop1: \r\n for (var mainIndex = 0; mainIndex < menuItems.mainPages.length; mainIndex++) {\r\n let mainPage = menuItems.mainPages[mainIndex].page;\r\n let parentPages = menuItems.mainPages[mainIndex].parentPages;\r\n let isMainToggleOpen = menuItems.mainPages[mainIndex].isToggleOpen;\r\n\r\n if (mainPage.id == toggleId) {\r\n menuItems.mainPages[mainIndex].isToggleOpen = !isMainToggleOpen;\r\n break loop1;\r\n }\r\n\r\n for (var parentIndex = 0; parentIndex < parentPages.length; parentIndex++) {\r\n let parentPage = parentPages[parentIndex].page;\r\n let childPages = parentPages[parentIndex].childPages;\r\n let isParentToggleOpen = parentPages[parentIndex].isToggleOpen;\r\n\r\n if (parentPage.id == toggleId) {\r\n parentPages[parentIndex].isToggleOpen = !isParentToggleOpen;\r\n break loop1;\r\n }\r\n\r\n for (var childIndex = 0; childIndex < childPages.length; childIndex++) {\r\n let childPage = childPages[childIndex].page;\r\n let subPages = childPages[childIndex].subPages;\r\n let isChildToggleOpen = childPages[childIndex].isToggleOpen;\r\n\r\n if (childPage.id == toggleId) {\r\n childPages[childIndex].isToggleOpen = !isChildToggleOpen;\r\n break loop1;\r\n }\r\n\r\n for (var subIndex = 0; subIndex < subPages.length; subIndex++) {\r\n let subPage = subPages[subIndex].page;\r\n let isSubToggleOpen = subPages[subIndex].isToggleOpen;\r\n\r\n if (subPage.id == toggleId) {\r\n subPages[subIndex].isToggleOpen = !isSubToggleOpen;\r\n break loop1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n //Change the state of the page's toggle\r\n this.setState({ menuItems: menuItems });\r\n }\r\n\r\n render() {\r\n let menuItems = this.state.menuItems;\r\n //console.log(menuItems);\r\n\r\n let menuItemArray = [];\r\n if (menuItems != null) {\r\n for (var mainIndex = 0; mainIndex < menuItems.mainPages.length; mainIndex++) {\r\n let mainPage = menuItems.mainPages[mainIndex].page;\r\n let parentPages = menuItems.mainPages[mainIndex].parentPages;\r\n let isMainToggleOpen = menuItems.mainPages[mainIndex].isToggleOpen;\r\n\r\n let mainName = mainPage.name.toUpperCase();\r\n let mainUrl = mainPage.friendlyUrl;\r\n let mainLink = mainPage.allowNavigation ? {mainName} : {mainName};\r\n let mainToggleDisplay = (parentPages.length > 0 && !isMainToggleOpen) ? \" +\" : (parentPages.length > 0 && isMainToggleOpen) ? \" -\" : \"\";\r\n menuItemArray.push(
  • {mainLink}{mainToggleDisplay}
  • );\r\n\r\n if (!isMainToggleOpen) continue;//Skip if closed\r\n for (var parentIndex = 0; parentIndex < parentPages.length; parentIndex++) {\r\n let parentPage = parentPages[parentIndex].page;\r\n let childPages = parentPages[parentIndex].childPages;\r\n let isParentToggleOpen = parentPages[parentIndex].isToggleOpen;\r\n\r\n let parentName = parentPage.name.toUpperCase();\r\n let parentUrl = mainPage.friendlyUrl + '/' + parentPage.friendlyUrl;\r\n let parentLink = parentPage.allowNavigation ? {parentName} : {parentName};\r\n let parentToggleDisplay = (childPages.length > 0 && !isParentToggleOpen) ? \" +\" : (childPages.length > 0 && isParentToggleOpen) ? \" -\" : \"\";\r\n menuItemArray.push(
  • {parentLink}{parentToggleDisplay}
  • );\r\n\r\n if (!isParentToggleOpen) continue;//Skip if closed\r\n for (var childIndex = 0; childIndex < childPages.length; childIndex++) {\r\n let childPage = childPages[childIndex].page;\r\n let subPages = childPages[childIndex].subPages;\r\n let isChildToggleOpen = childPages[childIndex].isToggleOpen;\r\n\r\n let childName = childPage.name.toUpperCase();\r\n let childUrl = mainPage.friendlyUrl + '/' + parentPage.friendlyUrl + '/' + childPage.friendlyUrl;\r\n let childLink = childPage.allowNavigation ? {childName} : {childName};\r\n let childToggleDisplay = (subPages.length > 0 && !isChildToggleOpen) ? \" +\" : (subPages.length > 0 && isChildToggleOpen) ? \" -\" : \"\";\r\n menuItemArray.push(
  • {childLink}{childToggleDisplay}
  • );\r\n\r\n if (!isChildToggleOpen) continue;//Skip if closed\r\n for (var subIndex = 0; subIndex < subPages.length; subIndex++) {\r\n let subPage = subPages[subIndex].page;\r\n \r\n\r\n let subName = subPage.name.toUpperCase();\r\n let subUrl = mainPage.friendlyUrl + '/' + parentPage.friendlyUrl + '/' + childPage.friendlyUrl + '/' + subPage.friendlyUrl;\r\n let subLink = subPage.allowNavigation ? {subName} : {subName};\r\n menuItemArray.push(
  • {subLink}
  • );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
      \r\n {menuItemArray}\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const menuResponse = await fetch('Components/GetSideMenuItems', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const menuData = await menuResponse.json();\r\n\r\n this.setState({\r\n menuItems: menuData\r\n });\r\n }\r\n}\r\n\r\nconst ulStyle = {\r\n overflow: 'scroll'\r\n}\r\n\r\nconst mainMenuItem = {\r\n transition: 'none',\r\n backgroundColor: 'transparent',\r\n padding: '0px 20px',\r\n minHeight: '50px'\r\n}\r\n\r\nconst parentMenuItem = {\r\n marginLeft: '5%',\r\n transition: 'none',\r\n backgroundColor: 'transparent',\r\n padding: '0px 20px',\r\n minHeight: '50px'\r\n}\r\n\r\nconst childMenuItem = {\r\n marginLeft: '10%',\r\n transition: 'none',\r\n backgroundColor: 'transparent',\r\n padding: '0px 20px',\r\n minHeight: '50px'\r\n}\r\n\r\nconst subMenuItem = {\r\n marginLeft: '15%',\r\n transition: 'none',\r\n backgroundColor: 'transparent',\r\n padding: '0px 20px',\r\n minHeight: '50px'\r\n}\r\n\r\nconst toggleIcon = {\r\n fontSize: '36px',\r\n fontWeight: 'bold',\r\n marginLeft: '5px',\r\n verticalAlign: 'sub'\r\n}\r\n","import React, { Component } from 'react';\r\n//import './backdrop.css';\r\n\r\nconst backdrop = props => (\r\n
    \r\n
    \r\n);\r\n \r\nexport default backdrop;","import React, { Component } from 'react';\r\n//import './socialIcons.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faFacebookSquare, faInstagramSquare, faTwitterSquare, faYoutubeSquare, faLinkedin, faPinterestSquare, faTumblrSquare } from '@fortawesome/free-brands-svg-icons';\r\nimport { faBlog } from '@fortawesome/free-solid-svg-icons';\r\n\r\nexport class SocialIcons extends Component {\r\n static displayName = SocialIcons.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n facebookLink: null,\r\n instagramLink: null,\r\n twitterLink: null,\r\n youtubeLink: null,\r\n linkedinLink: null,\r\n pinterestLink: null,\r\n tumblrLink: null,\r\n blogLink: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let facebookLink = (this.state.facebookLink != null && this.state.facebookLink != \"\" && this.state.facebookLink != undefined) ? Facebook : null;\r\n let instagramLink = (this.state.instagramLink != null && this.state.instagramLink != \"\" && this.state.instagramLink != undefined) ? Instagram : null;\r\n let twitterLink = (this.state.twitterLink != null && this.state.twitterLink != \"\" && this.state.twitterLink != undefined) ? Twitter : null;\r\n let youtubeLink = (this.state.youtubeLink != null && this.state.youtubeLink != \"\" && this.state.youtubeLink != undefined) ? YouTube : null;\r\n let linkedinLink = (this.state.linkedinLink != null && this.state.linkedinLink != \"\" && this.state.linkedinLink != undefined) ? LinkedIn : null;\r\n let pinterestLink = (this.state.pinterestLink != null && this.state.pinterestLink != \"\" && this.state.pinterestLink != undefined) ? Pinterest : null;\r\n let tumblrLink = (this.state.tumblrLink != null && this.state.tumblrLink != \"\" && this.state.tumblrLink != undefined) ? Tumblr : null;\r\n //let blogLink = (this.state.blogLink != null && this.state.blogLink != \"\" && this.state.blogLink != undefined) ? : null;\r\n\r\n let containerClasses = this.props.isInNavbar ? \"social-icons social-icons--navbar\" : \"social-icons\";\r\n return (\r\n
    \r\n {facebookLink}\r\n {instagramLink}\r\n {twitterLink}\r\n {youtubeLink}\r\n {linkedinLink}\r\n {pinterestLink}\r\n {tumblrLink}\r\n {/*{blogLink}*/}\r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n if (this.state.componentId != null && this.state.componentId != 0) {\r\n const respond = await fetch('Components/GetSocialInfo?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await respond.json();\r\n\r\n if (data != null) {\r\n this.setState({\r\n facebookLink: data.facebookLink,\r\n instagramLink: data.instagramLink,\r\n twitterLink: data.twitterLink,\r\n youtubeLink: data.youtubeLink,\r\n linkedinLink: data.linkedinLink,\r\n pinterestLink: data.pinterestLink,\r\n tumblrLink: data.tumblrLink,\r\n blogLink: data.blogLink\r\n });\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default SocialIcons;","import React, { Component } from 'react';\r\n//import './breadcrumb.css';\r\n\r\nexport class Breadcrumb extends Component {\r\n static displayName = Breadcrumb.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n breadcrumbData: []\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n var breadcrumbData = this.state.breadcrumbData;\r\n\r\n return (\r\n
    \r\n
    \r\n {breadcrumbData.map((crumb, index) => {\r\n return crumb.allowNavigation ?\r\n {crumb.name} :\r\n {crumb.name}\r\n })}\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n var url = window.location.href.split('/').slice(3);\r\n var breadcrumbData = [];\r\n \r\n if (url[0] != \"PagePreview\" && url[0].toLowerCase() != \"event\" && url[0].toLowerCase() != \"blog\" && url[0] != \"PreviewBlog\") {\r\n for (var i = 0; i < url.length; i++) {\r\n var link = url.slice(0, i + 1).join('/');\r\n if (link != \"\") {\r\n const response = await fetch('Components/GetPageFromUrl?pageUrl=' + link, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n if (response.status == 200) {\r\n const page = await response.json();\r\n\r\n if (page != null) {\r\n breadcrumbData.push({ name: page.name.toUpperCase(), link: link, allowNavigation: page.allowNavigation });\r\n }\r\n }\r\n else { //Add parameters to url\r\n let lastPage = breadcrumbData.pop();\r\n breadcrumbData.push({ name: lastPage.name.toUpperCase(), link: link, allowNavigation: lastPage.allowNavigation });\r\n }\r\n }\r\n }\r\n }\r\n \r\n this.setState({\r\n breadcrumbData: breadcrumbData\r\n });\r\n }\r\n}\r\n\r\nexport default Breadcrumb;\r\n","import React, { Component } from 'react';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faCaretRight } from '@fortawesome/free-solid-svg-icons';\r\n\r\nexport class SubNavBar extends Component {\r\n static displayName = SubNavBar.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n subMenuItems: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let menuItems;\r\n \r\n if (this.state.subMenuItems != null) {\r\n var menuItemArray = [];\r\n this.state.subMenuItems.forEach((e, i) => {\r\n let page = e.page;\r\n let subMenuPages = e.subMenuPages;\r\n\r\n //console.log(page);\r\n if (page.page.status == \"Deleted\") {\r\n return;\r\n }\r\n\r\n let subPages = [];\r\n subMenuPages.forEach((subPage, j) => {\r\n if (subPage.page.status == \"Deleted\") {\r\n return;\r\n }\r\n\r\n if (subPage.page.isExternal) {\r\n let openType = subPage.page.openType == \"NewTab\" ? \"_blank\" : \"_self\";\r\n subPages.push({subPage.page.name});\r\n }\r\n else {\r\n subPages.push({subPage.page.name});\r\n }\r\n })\r\n\r\n let menuItem;\r\n if (subPages.length > 0) {\r\n if (page.page.allowNavigation) {\r\n menuItem =
    \r\n \r\n
    \r\n {subPages}\r\n
    \r\n
    ;\r\n }\r\n else {\r\n menuItem =
    \r\n \r\n
    \r\n {subPages}\r\n
    \r\n
    ;\r\n }\r\n }\r\n else {\r\n if (page.page.isExternal) {\r\n let openType = page.page.openType == \"NewTab\" ? \"_blank\" : \"_self\";\r\n menuItem =
  • {page.page.name}
  • ;\r\n }\r\n else {\r\n menuItem =
  • {page.page.name}
  • ;\r\n }\r\n }\r\n menuItemArray.push(menuItem);\r\n\r\n //Add bar\r\n if (this.state.subMenuItems.length > (i + 1)) {\r\n menuItemArray.push(|);\r\n }\r\n })\r\n\r\n menuItems = menuItemArray;\r\n }\r\n\r\n return (\r\n
      \r\n {menuItems}\r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let pageId = this.props.pageId;\r\n\r\n if (pageId != undefined) {\r\n const response = await fetch('components/GetSubNavbar?pageId=' + pageId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n subMenuItems: data\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default SubNavBar;\r\n","import React, { Component } from 'react'\r\n\r\nexport class NavbarTabs extends Component {\r\n static displayName = NavbarTabs.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n navbarTabs: [],\r\n currentTab: 0\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n changeCurrentTab = (tabId) => {\r\n // Close tab if already open\r\n if (this.state.currentTab == tabId) {\r\n tabId = 0;\r\n }\r\n\r\n this.setState({\r\n currentTab: tabId\r\n });\r\n }\r\n\r\n getTabDisplay = (tab) => {\r\n let columns;\r\n switch (tab.format) {\r\n case \"1-1-1-1\":\r\n columns =
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n break;\r\n case \"2-1-1\":\r\n columns =
    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n break;\r\n case \"1-1-2\":\r\n columns =
    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n break;\r\n case \"2-2\":\r\n columns =
    \r\n
    \r\n
    \r\n
    ;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n let footerContent = tab.footer != null && tab.footer != \"\" ?\r\n
    \r\n
    \r\n
    : null;\r\n\r\n let tabContents =
    \r\n
    \r\n {columns}\r\n
    \r\n {footerContent}\r\n
    ;\r\n\r\n return tabContents;\r\n }\r\n\r\n render() {\r\n let currentTab = this.state.currentTab;\r\n let currentTabDisplay;\r\n let tabs = [];\r\n\r\n if (this.state.navbarTabs.length > 0) {\r\n let navbarTabs = this.state.navbarTabs;\r\n\r\n // Get current tab content\r\n if (currentTab == 0) {\r\n currentTabDisplay = null;\r\n }\r\n else {\r\n for (var i = 0; i < navbarTabs.length; i++) {\r\n let tab = navbarTabs[i];\r\n if (currentTab == tab.id) {\r\n currentTabDisplay = this.getTabDisplay(tab);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Get tabs\r\n for (var i = 0; i < navbarTabs.length; i++) {\r\n let navbarTab = navbarTabs[i];\r\n\r\n let tabClasses = \"tab\";\r\n if (currentTab == navbarTab.id) {\r\n tabClasses += \" current-tab\";\r\n }\r\n\r\n //tabs.push(\r\n //
    \r\n // {navbarTab.title}\r\n //
    );\r\n\r\n tabs.push(\r\n
    \r\n {navbarTab.title}\r\n
    );\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n {tabs}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {currentTabDisplay}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('components/GetNavbarTabs', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n navbarTabs: data.navbarTabs\r\n });\r\n }\r\n}\r\n\r\nexport default NavbarTabs;\r\n","import React, { Component } from 'react';\r\n//import './navbar.css';\r\nimport { ContactInfo } from './ContactInfo/ContactInfo'\r\nimport { MenuItems } from '../MenuItems/MenuItems';\r\nimport { SideMenu } from '../sideMenu/sideMenu';\r\nimport Backdrop from '../Backdrop/Backdrop';\r\nimport MobileToggleButton from '../NavBar/mobileToggleButton';\r\nimport { SocialIcons } from '../SocialIcons/SocialIcons';\r\nimport Breadcrumb from '../Breadcrumb/Breadcrumb';\r\nimport SubNavBar from './SubNavBar';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faUserCircle } from '@fortawesome/free-regular-svg-icons';\r\nimport GoogleTranslate from '../GoogleTranslate';\r\nimport NavbarTabs from './NavbarTabs';\r\n\r\nexport class NavBar extends Component {\r\n static displayName = NavBar.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n logo: null,\r\n companyName: null,\r\n phoneNumber: null,\r\n showContactInfo: null,\r\n menuItems: null,\r\n showMobileNav: false,\r\n facebookLink: null,\r\n instagramLink: null,\r\n twitterLink: null,\r\n socialIconId: null,\r\n showLoginLink: false,\r\n showSiteName: false,\r\n siteName: null,\r\n urlPathName: null,\r\n payBillLink: \"/\"\r\n //showSocialIcons: false\r\n };\r\n }\r\n\r\n showHide = () => {\r\n this.setState((prevState) => {\r\n return { showMobileNav: !prevState.showMobileNav };\r\n });\r\n };\r\n\r\n componentDidMount() {\r\n //Google search script\r\n const googleSearchScript = document.createElement(\"script\");\r\n googleSearchScript.src = \"https://cse.google.com/cse.js?cx=009047190498737394420:zleveeuqgm8\";\r\n googleSearchScript.async = true;\r\n document.body.appendChild(googleSearchScript);\r\n\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let contactInfo;\r\n if (this.state.showContactInfo != null) {\r\n contactInfo = \r\n }\r\n let sideMenu;\r\n let backdrop;\r\n\r\n if (this.state.showMobileNav) {\r\n sideMenu = ;\r\n backdrop = \r\n }\r\n\r\n let mobileClasses = 'mobile-nav';\r\n if (this.state.showMobileNav) {\r\n mobileClasses = 'open mobile-nav';\r\n }\r\n\r\n let socialIcons = /*this.state.showSocialIcons &&*/ this.state.socialIconId != null && this.state.socialIconId != 0 ?\r\n : null;\r\n\r\n let siteName = this.state.showSiteName && this.state.siteName != null ? this.state.siteName : null;\r\n\r\n let loginLink = this.state.showLoginLink ?\r\n : null;\r\n\r\n let logoClasses = this.state.urlPathName == \"/\" ? \"main-logo main-logo__home\" : \"main-logo\";\r\n\r\n let navbarTabs = this.state.urlPathName != \"/\" ? : null;\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n \"company\r\n
    \r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n MY ACCOUNT\r\n
    \r\n\r\n
    \r\n {/*{contactInfo}*/}\r\n\r\n \r\n\r\n {socialIcons}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n {backdrop}\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n MY ACCOUNT\r\n
    \r\n
    \r\n\r\n {navbarTabs}\r\n\r\n
    \r\n \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n async getComponentData() {\r\n const response = await fetch('components/Navbar?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n //console.log(data);\r\n\r\n let urlPathName = window.location.pathname;\r\n\r\n let payBillLink = data.payBillLink != null && data.payBillLink != \"\" && data.payBillLink != undefined ? data.payBillLink : \"/\";\r\n\r\n this.setState({\r\n logo: data.logoUrl,\r\n companyName: data.companyName,\r\n phoneNumber: data.telephone,\r\n showContactInfo: data.showContactInfo,\r\n socialIconId: data.socialId,\r\n showLoginLink: data.showLoginLink,\r\n showSiteName: data.showSiteName,\r\n siteName: data.siteName,\r\n urlPathName: urlPathName,\r\n payBillLink: payBillLink\r\n //showSocialIcons: data.showSocialIcons\r\n });\r\n }\r\n}\r\n\r\nexport default NavBar;","import React, { Component } from 'react';\r\nimport './slideshow.css';\r\n\r\nexport class Slideshow extends Component {\r\n static displayName = Slideshow.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n currentSlideIndex: 0,\r\n imageArray: (this.props.imageArray != undefined && this.props.imageArray != null) ? this.props.imageArray : [],\r\n insideArray: (this.props.insideArray != undefined && this.props.insideArray != null) ? this.props.insideArray : [],\r\n //sliderDuration: (this.props.sliderDuration != undefined && this.props.sliderDuration != null && !isNaN(this.props.sliderDuration)) ? this.props.sliderDuration : 5000,\r\n currentInside: null,\r\n slideTimeArray: (this.props.slideTimeArray != undefined && this.props.slideTimeArray != null) ? this.props.slideTimeArray : []\r\n };\r\n }\r\n\r\n handleImageLoad() {\r\n let insideArray = this.state.insideArray;\r\n let currentDuration = this.state.slideTimeArray[this.state.currentSlideIndex];\r\n if (insideArray.length >= this.state.currentSlideIndex) {\r\n this.updateCurrentSlide(currentDuration);\r\n this.setState({\r\n currentInside: insideArray[this.state.currentSlideIndex]\r\n });\r\n }\r\n }\r\n\r\n updateCurrentSlide(slideDuration) {\r\n let currentSlideIndex = (this.state.imageArray.length == (this.state.currentSlideIndex + 1)) ? 0 : (this.state.currentSlideIndex + 1);\r\n //let slideDuration = this.state.sliderDuration;\r\n //let slideDuration = this.state.slideTimeArray[this.state.currentSlideIndex];\r\n //console.log(slideDuration);\r\n setTimeout(\r\n function () {\r\n this.setState({\r\n currentSlideIndex: currentSlideIndex\r\n });\r\n }.bind(this),\r\n slideDuration\r\n );\r\n }\r\n\r\n render() {\r\n let image = this.state.imageArray[this.state.currentSlideIndex];\r\n \r\n let currentInside = this.state.currentInside;\r\n //this.updateCurrentSlide(currentDuration);\r\n return (\r\n <>\r\n
    \r\n \r\n
    \r\n\r\n {currentInside}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Slideshow;\r\n","import React, { Component } from 'react';\r\n//import './homeCTA.css';\r\n//import { Slide } from 'react-slideshow-image';\r\n//import 'react-slideshow-image/dist/styles.css';\r\nimport Slideshow from './Slideshow';\r\n\r\nexport class BannerContainer extends Component {\r\n static displayName = BannerContainer.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n bannerContainer: null,\r\n banners: [],\r\n isInCard: this.props.isInCard != undefined ? this.props.isInCard : false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let sliderDuration = this.state.bannerContainer != null && this.state.bannerContainer.sliderDuration != null && this.state.bannerContainer.sliderDuration != undefined ? this.state.bannerContainer.sliderDuration : 5000;\r\n\r\n let banners = [];\r\n let bannerImages = [];\r\n let bannerInsides = [];\r\n let slideTimes = [];\r\n for (var i = 0; i < this.state.banners.length; i++) {\r\n let banner = this.state.banners[i];\r\n\r\n let actionText = banner.actionText != null && banner.actionText != \"\" ?
    {banner.actionText}
    : null;\r\n let subActionText = banner.subActionText != null && banner.subActionText != \"\" ?
    {banner.subActionText}
    : null;\r\n\r\n let buttonWrapper = null;\r\n if (banner.buttonText != null && banner.buttonText != \"\" && banner.buttonLink != null && banner.buttonLink != \"\") {\r\n let button = \r\n \r\n ;\r\n\r\n let buttonClasses = \"button-area \";\r\n if (this.state.isInCard) buttonClasses += \"in-card \";\r\n switch (banner.buttonPosition) {\r\n case \"UpperLeft\":\r\n buttonClasses += \"button-upper-left\";\r\n break;\r\n case \"UpperRight\":\r\n buttonClasses += \"button-upper-right\";\r\n break;\r\n case \"BottomLeft\":\r\n buttonClasses += \"button-bottom-left\";\r\n break;\r\n case \"BottomRight\":\r\n buttonClasses += \"button-bottom-right\";\r\n break;\r\n case \"BottomMiddle\":\r\n buttonClasses += \"button-bottom-middle\";\r\n break;\r\n case \"Middle\":\r\n buttonClasses += \"button-middle\";\r\n break;\r\n default:\r\n buttonClasses += \"button-bottom-middle\";\r\n break;\r\n }\r\n\r\n buttonWrapper =
    \r\n {button}\r\n
    ;\r\n }\r\n\r\n let bannerInside = (actionText != null || subActionText != null || buttonWrapper != null) ?\r\n
    \r\n {actionText}\r\n {subActionText}\r\n\r\n {buttonWrapper}\r\n
    : null;\r\n\r\n let bannerWrapper = <>\r\n
    \r\n \r\n
    \r\n\r\n {bannerInside}\r\n ;\r\n\r\n banners.push(bannerWrapper);\r\n bannerImages.push(banner.backgroundImage);\r\n bannerInsides.push(bannerInside);\r\n slideTimes.push(banner.sliderDuration);\r\n }\r\n\r\n //react-slideshow-image/////////////////////////////////////////////////////////////////////////\r\n //let bannerSet = banners.length > 1 ?\r\n // \r\n // {banners.map((banner, index) => (\r\n //
    \r\n // {banner}\r\n //
    \r\n // ))}\r\n //
    :\r\n // banners[0];\r\n\r\n //Custom slideshow fix//////////////////////////////////////////////////////////////////////////////\r\n let bannerSet = banners.length > 1 ?\r\n :\r\n banners[0];\r\n\r\n let containerClasses = \"homeCTA banner-container\";\r\n let bannercContainerHeight = this.state.bannerContainer != null ? this.state.bannerContainer.height : \"\";\r\n switch (bannercContainerHeight) {\r\n case \"Small\":\r\n containerClasses += \" banner-small\";\r\n break;\r\n case \"Medium\":\r\n containerClasses += \" banner-medium\";\r\n break;\r\n case \"Large\":\r\n containerClasses += \" banner-large\";\r\n break;\r\n default:\r\n containerClasses += \" banner-medium\";\r\n break;\r\n }\r\n\r\n return (\r\n
    \r\n {bannerSet}\r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('components/GetBannerContainer?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n bannerContainer: data.bannerContainer,\r\n banners: data.banners\r\n });\r\n }\r\n}","import React, { Component } from 'react';\r\n\r\nimport GarbageFees from '../images/ClientStatic/garbage_fees.png';\r\nimport GarbageFeesHover from '../images/ClientStatic/garbage_fees_hover.png';\r\nimport PayMyBill from '../images/ClientStatic/pay_my_bill.png';\r\nimport PayMyBillHover from '../images/ClientStatic/pay_my_bill_hover.png';\r\nimport PaymentOptions from '../images/ClientStatic/payment_options.png';\r\nimport PaymentOptionsHover from '../images/ClientStatic/payment_options_hover.png';\r\nimport ReportAProblem from '../images/ClientStatic/report_a_problem.png';\r\nimport ReportAProblemHover from '../images/ClientStatic/report_a_problem_hover.png';\r\n\r\nexport class IconLinkContainer extends Component {\r\n static displayName = IconLinkContainer.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n iconLinkContainer: null,\r\n iconLinks: []\r\n };\r\n this.onHover = this.onHover.bind(this);\r\n this.offHover = this.offHover.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n onHover = (icon) => {\r\n let element = icon.target.parentElement;\r\n let id = element.id;\r\n let oppId = id + \"_hover\";\r\n let oppElement = window.document.getElementById(oppId);\r\n\r\n if (oppElement != null) {\r\n element.style.display = \"none\";\r\n oppElement.style.display = \"block\";\r\n }\r\n }\r\n\r\n offHover = (icon) => {\r\n let element = icon.target.parentElement;\r\n let id = element.id;\r\n let oppId = id.split(\"_hover\")[0];\r\n let oppElement = window.document.getElementById(oppId);;\r\n \r\n if (oppElement != null) {\r\n element.style.display = \"none\";\r\n oppElement.style.display = \"block\";\r\n }\r\n }\r\n\r\n render() {\r\n let icons = [];\r\n for (var i = 0; i < this.state.iconLinks.length; i++) {\r\n let iconLink = this.state.iconLinks[i];\r\n\r\n let iconSrc = null;\r\n let iconHoverSrc = null;\r\n let iconName = null;\r\n let iconClass = \"\";\r\n let iconTarget = \"\";\r\n switch (iconLink.icon) {\r\n case \"garbage_fees\":\r\n iconSrc = GarbageFees;\r\n iconHoverSrc = GarbageFeesHover;\r\n iconName = \"Garbage Fees\";\r\n iconClass = \"garbage-fees\";\r\n iconTarget = \"\";\r\n break;\r\n case \"pay_my_bill\":\r\n iconSrc = PayMyBill;\r\n iconHoverSrc = PayMyBillHover;\r\n iconName = \"Pay My Bill\";\r\n iconClass = \"pay-my-bill\";\r\n iconTarget = \"_blank\";\r\n break;\r\n case \"payment_options\":\r\n iconSrc = PaymentOptions;\r\n iconHoverSrc = PaymentOptionsHover;\r\n iconName = \"Payment Options\";\r\n iconClass = \"payment-options\";\r\n iconTarget = \"\";\r\n break;\r\n case \"report_a_problem\":\r\n iconSrc = ReportAProblem;\r\n iconHoverSrc = ReportAProblemHover;\r\n iconName = \"Report a Problem\";\r\n iconClass = \"report-a-problem\";\r\n iconTarget = \"\";\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (iconSrc != null && iconHoverSrc != null && iconName != null) {\r\n let iconId = iconLink.icon;\r\n let iconHoverId = iconLink.icon + \"_hover\";\r\n\r\n let icon = \"icon;\r\n let iconHover = \"icon;\r\n let iconText =
    {iconName}
    ;\r\n\r\n let iconContent =
    {icon}{iconText}
    ;\r\n let iconHoverContent =
    {iconHover}{iconText}
    ;\r\n\r\n let iconLinkClasses = \"icon-link-opt \" + iconClass;\r\n icons.push({iconContent}{iconHoverContent});\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {icons}\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('components/GetIconLinkContainer?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n iconLinkContainer: data.iconLinkContainer,\r\n iconLinks: data.iconLinks\r\n });\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\n\r\nexport class ColumnsTabContainer extends Component {\r\n static displayName = ColumnsTabContainer.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n columnsTabContainer: null,\r\n columnsTabs: [],\r\n currentTab: 0, //This is the id of the current columnsTab component, 0 defaults to the first columnsTab component\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n changeCurrentTab = (columnsTabId) => {\r\n this.setState({\r\n currentTab: columnsTabId\r\n });\r\n }\r\n\r\n getColumnsTabDisplay = (columnsTab) => {\r\n let columns;\r\n switch (columnsTab.format) {\r\n case \"1-1-1-1\":\r\n columns =
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n break;\r\n case \"2-1-1\":\r\n columns =
    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n break;\r\n case \"1-1-2\":\r\n columns =
    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n break;\r\n case \"2-2\":\r\n columns =
    \r\n
    \r\n
    \r\n
    ;\r\n break;\r\n case \"4\":\r\n columns =
    \r\n
    \r\n
    ;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n let footerContent = columnsTab.footer != null && columnsTab.footer != \"\" ?\r\n
    \r\n
    \r\n
    : null;\r\n\r\n let tabContents =
    \r\n
    \r\n {columns}\r\n
    \r\n {footerContent}\r\n
    ;\r\n\r\n return tabContents;\r\n }\r\n\r\n render() {\r\n let currentTab = this.state.currentTab;\r\n let currentTabDisplay;\r\n let tabs = [];\r\n\r\n if (this.state.columnsTabs.length > 0) {\r\n let columnsTabs = this.state.columnsTabs;\r\n\r\n // Get current tab content\r\n if (currentTab == 0) {\r\n currentTabDisplay = this.getColumnsTabDisplay(columnsTabs[0]);\r\n }\r\n else {\r\n for (var i = 0; i < columnsTabs.length; i++) {\r\n let columnsTab = columnsTabs[i];\r\n if (currentTab == columnsTab.id) {\r\n currentTabDisplay = this.getColumnsTabDisplay(columnsTab);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Get tabs\r\n for (var i = 0; i < columnsTabs.length; i++) {\r\n let columnsTab = columnsTabs[i];\r\n\r\n let tabClasses = \"tab\";\r\n if (currentTab == 0 && i == 0) {\r\n tabClasses += \" current-tab\";\r\n }\r\n else if (currentTab == columnsTab.id) {\r\n tabClasses += \" current-tab\";\r\n }\r\n\r\n tabs.push(
    {columnsTab.title}
    );\r\n }\r\n }\r\n\r\n let tabRowClasses = \"tab-row\";\r\n let currentTabClasses = \"current-tab-contents\";\r\n if (this.state.columnsTabContainer != null && this.state.columnsTabContainer.isAccordion) {\r\n tabRowClasses += \" accordion\";\r\n currentTabClasses += \" accordion\";\r\n }\r\n\r\n if (this.state.columnsTabContainer != null && this.state.columnsTabContainer.showBorder) {\r\n currentTabClasses += \" show-border\";\r\n }\r\n \r\n return (\r\n
    \r\n
    \r\n {tabs}\r\n
    \r\n\r\n
    \r\n {currentTabDisplay}\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('components/GetColumnsTabContainer?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n columnsTabContainer: data.columnsTabContainer,\r\n columnsTabs: data.columnsTabs\r\n });\r\n }\r\n}","import React, { Component } from 'react';\r\n\r\nexport class Accordion extends Component {\r\n static displayName = Accordion.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n accordion: null,\r\n accordionTabs: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n toggleTab = (e) => {\r\n // Get the tab bar even if the clicked element is a child of the bar element\r\n let tabBar = e.target;\r\n if (!tabBar.className.includes(\"accordion-header--close\") && !tabBar.className.includes(\"accordion-header--open\")) {\r\n tabBar = tabBar.parentElement;\r\n }\r\n\r\n // Change the display\r\n if (tabBar.className.includes(\"accordion-header--close\")) {\r\n tabBar.classList.remove(\"accordion-header--close\");\r\n tabBar.classList.add(\"accordion-header--open\");\r\n\r\n tabBar.childNodes[1].innerHTML = \"-\";\r\n\r\n tabBar.nextSibling.classList.remove(\"accordion-content--close\");\r\n tabBar.nextSibling.classList.add(\"accordion-content--open\");\r\n }\r\n else if (tabBar.className.includes(\"accordion-header--open\")) {\r\n tabBar.classList.remove(\"accordion-header--open\");\r\n tabBar.classList.add(\"accordion-header--close\");\r\n\r\n tabBar.childNodes[1].innerHTML = \"+\";\r\n\r\n tabBar.nextSibling.classList.remove(\"accordion-content--open\");\r\n tabBar.nextSibling.classList.add(\"accordion-content--close\");\r\n }\r\n }\r\n\r\n render() {\r\n let tabs = [];\r\n for (var i = 0; i < this.state.accordionTabs.length; i++) {\r\n let accordionTab = this.state.accordionTabs[i];\r\n let tabKey = \"accordionTab\" + i;\r\n\r\n let tab =
    \r\n
    \r\n {accordionTab.title}\r\n +\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ;\r\n tabs.push(tab);\r\n }\r\n\r\n let headerContent = null;\r\n if (this.state.accordion != null) {\r\n let accordion = this.state.accordion;\r\n\r\n headerContent = accordion.headerContent;\r\n }\r\n\r\n let headerDiv = headerContent != null && headerContent != \"\" && headerContent != undefined ?\r\n
    : \"\";\r\n\r\n return (\r\n
    \r\n {headerDiv}\r\n {tabs}\r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('components/GetAccordion?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n accordion: data.accordion,\r\n accordionTabs: data.accordionTabs\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\n\r\nfunction Mailchimp() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n ); \r\n};\r\n\r\nexport default Mailchimp;\r\n","import React, { Component } from 'react';\r\nimport NewsletterIcon from '../images/ClientStatic/NewsletterIcon.png';\r\nimport Mailchimp from '../Mailchimp';\r\n\r\nexport class SuperFooter extends Component {\r\n static displayName = SuperFooter.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \"newsletter\r\n \r\n Let's Stay\r\n in touch.\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n Sign up to receive our newsletter\r\n The Spout to stay in the know.\r\n
    \r\n\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default SuperFooter;\r\n","import React, { Component } from 'react';\r\n//import './footer.css';\r\nimport { MenuItems } from '../MenuItems/MenuItems';\r\nimport { SocialIcons } from '../SocialIcons/SocialIcons';\r\nimport { SuperFooter } from './SuperFooter';\r\n\r\nexport class Footer extends Component {\r\n static displayName = Footer.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n socialId: null,\r\n copyrightName: null,\r\n contentColumn1: null,\r\n contentColumn2: null,\r\n contentColumn3: null,\r\n contentColumn4: null,\r\n privacyPolicyLink: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n getYear() {\r\n return new Date().getFullYear();\r\n }\r\n\r\n render() {\r\n let socialIcons = this.state.socialId != null && this.state.socialId != 0 ? : null;\r\n\r\n let customCol1 = this.state.contentColumn1 != null ?
    :
    ;\r\n let customCol2 = this.state.contentColumn2 != null ?
    :
    ;\r\n let customCol3 = this.state.contentColumn3 != null ?
    :
    ;;\r\n\r\n let socialColumn =
    \r\n Connect With Us\r\n {socialIcons}\r\n
    ;\r\n\r\n let privacyPolicy = this.state.privacyPolicyLink != null && this.state.privacyPolicyLink != \"\" ?\r\n Privacy Policy. : \"\";\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n\r\n
    \r\n
    \r\n {customCol1}\r\n {customCol2}\r\n {socialColumn}\r\n {customCol3}\r\n
    \r\n\r\n {/*\r\n
    \r\n \r\n
    \r\n */}\r\n\r\n\r\n
    \r\n
    \r\n © {this.getYear()}\r\n {this.state.copyrightName}, All Rights Reserved.\r\n { privacyPolicy }\r\n Powered by TracSoft.\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('Components/GetFooterData?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data != null) {\r\n this.setState({\r\n socialId: data.socialId,\r\n copyrightName: data.copyrightName,\r\n contentColumn1: data.contentColumn1,\r\n contentColumn2: data.contentColumn2,\r\n contentColumn3: data.contentColumn3,\r\n contentColumn4: data.contentColumn4,\r\n privacyPolicyLink: data.privacyPolicyLink\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default Footer;\r\n\r\n","import React, { Component } from 'react';\r\n//import './htmleditor.css';\r\n\r\nexport class HtmlEditor extends Component {\r\n static displayName = HtmlEditor.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n content: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let content;\r\n if (this.state.content != null) {\r\n content = this.state.content;\r\n }\r\n\r\n return (\r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('Components/GetHtmlEditor?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data != null) {\r\n this.setState({\r\n content: data.content\r\n });\r\n }\r\n }\r\n}","import React, { Component } from 'react';\r\n\r\nexport class BigText5050 extends Component {\r\n static displayName = BigText5050.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n bigText5050: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let title;\r\n let body;\r\n let imageLink;\r\n if (this.state.bigText5050 != null) {\r\n title = this.state.bigText5050.title;\r\n body = this.state.bigText5050.body;\r\n imageLink = this.state.bigText5050.imageLink;\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    {title}

    \r\n

    {body}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('Components/GetBigText5050?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data != null) {\r\n this.setState({\r\n bigText5050: data\r\n });\r\n }\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { HtmlEditor } from '../HtmlEditor/HtmlEditor';\r\n\r\nexport class Grid5050 extends Component {\r\n static displayName = Grid5050.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n grid5050: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let htmlEditor;\r\n let imageLink;\r\n if (this.state.grid5050 != null) {\r\n htmlEditor = ;\r\n imageLink = this.state.grid5050.imageLink;\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {htmlEditor}\r\n
    \r\n
    \r\n
    \r\n\r\n //
    \r\n //
    \r\n //
    \r\n //
    \r\n //

    {title}

    \r\n //
    \r\n // {itemList}\r\n //
    \r\n //
    \r\n //
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('Components/GetGrid5050?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data != null) {\r\n this.setState({\r\n grid5050: data\r\n });\r\n }\r\n }\r\n}","import React, { Component } from 'react';\r\nimport Cleave from 'cleave.js/react';\r\nimport CleavePhone from 'cleave.js/dist/addons/cleave-phone.us';\r\nimport States from '../GlobalSets/States';\r\nimport states from '../GlobalSets/States';\r\nimport reCaptchaData from '../ReCaptchaData';\r\nimport ReCAPTCHA from \"react-google-recaptcha\";\r\nimport { post } from 'axios';\r\n\r\nexport class Form extends Component {\r\n static displayName = Form.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n form: null,\r\n formFields: null,\r\n formValues: [],\r\n captchaToken: null,\r\n file: '',\r\n confirmationEmail: \"\"\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n var name = e.target.name;\r\n var value = e.target.value;\r\n var fieldId = e.target.attributes.getNamedItem('data-fieldId').value;\r\n var fieldType = e.target.type;\r\n\r\n let newFormValues = this.state.formValues;\r\n for (var i = 0; i < this.state.formValues.length; i++) {\r\n if (this.state.formValues[i].fieldName == name) {\r\n if (fieldType == 'checkbox') {\r\n newFormValues[i].fieldValue = e.target.checked ? \"true\" : \"false\";\r\n }\r\n else {\r\n newFormValues[i].fieldValue = value;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.setState({ formValues: newFormValues });\r\n }\r\n\r\n handleConfirmationEmailChange = (e) => {\r\n this.setState({ confirmationEmail: e.target.value });\r\n }\r\n\r\n setFile(e) {\r\n this.setState({ file: e.target.files[0] });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n window.document.body.style.cursor = \"wait\";\r\n\r\n //Verify captcha before submit\r\n if (this.state.captchaToken != null) {\r\n fetch('Captcha/IsReCaptchValid?captchaToken=' + this.state.captchaToken, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (data == true) {\r\n let form = this.state.form;\r\n let formValues = this.state.formValues;\r\n let file = this.state.file;\r\n let confirmationEmail = this.state.confirmationEmail;\r\n\r\n const url = `FormComponent/SubmitForm`;\r\n const formData = new FormData();\r\n formData.append('Form', JSON.stringify({ form }));\r\n formData.append('NameValuePairs', JSON.stringify({ formValues }));\r\n formData.append('File', file);\r\n formData.append('ConfirmationEmail', confirmationEmail);\r\n\r\n fetch(url,\r\n {\r\n method: 'POST',\r\n body: formData,\r\n headers: {\r\n 'Accept': 'application/json'\r\n }\r\n }\r\n ).then(\r\n submissionResponse => submissionResponse.json()\r\n ).then(\r\n submissionData => {\r\n if (submissionData == \"Sent\") {\r\n let successMessage = (form.successMessage != null && form.successMessage != \"\") ? form.successMessage : \"Successful Submission\";\r\n alert(successMessage);\r\n window.document.body.style.cursor = \"default\";\r\n window.location.reload();\r\n }\r\n else {\r\n alert(submissionData);\r\n window.document.body.style.cursor = \"default\";\r\n }\r\n }\r\n );\r\n }\r\n else {\r\n alert(\"reCaptcha verification failed\");\r\n window.document.body.style.cursor = \"default\";\r\n }\r\n }\r\n );\r\n }\r\n else {\r\n alert(\"reCaptcha verification failed\");\r\n window.document.body.style.cursor = \"default\";\r\n }\r\n }\r\n\r\n onCaptchaChange = (value) => {\r\n if (value) {\r\n this.setState({ captchaToken: value });\r\n }\r\n else {\r\n this.setState({ captchaToken: null });\r\n }\r\n }\r\n\r\n render() {\r\n let fields = [];\r\n if (this.state.formFields != null) {\r\n let formFields = this.state.formFields;\r\n \r\n for (var i = 0; i < formFields.length; i++) {\r\n let field = formFields[i];\r\n let fieldTag;\r\n\r\n switch (field.fieldType) {\r\n case 'input':\r\n if (field.inputType == 'text') {\r\n fieldTag = 0 ? field.minLength : \"\"}\r\n maxLength={field.maxLength > 0 ? field.maxLength : 1000}\r\n onChange={this.handleChange}\r\n data-fieldId={field.id}\r\n />;\r\n }\r\n else { //number\r\n fieldTag = 0 ? field.minLength : \"\"}\r\n max={field.maxLength > 0 ? field.maxLength : 99999999}\r\n onChange={this.handleChange}\r\n data-fieldId={field.id}\r\n />;\r\n }\r\n break;\r\n case 'textarea':\r\n fieldTag = ;\r\n break;\r\n case 'selectList':\r\n let ddlOptions = [];\r\n ddlOptions.push();\r\n let fieldOpts = field.options.split(',');\r\n for (var j = 0; j < fieldOpts.length; j++) {\r\n let ddlKey = \"ddl\" + (j + 1);\r\n ddlOptions.push();\r\n }\r\n\r\n fieldTag = \r\n {ddlOptions}\r\n ;\r\n break;\r\n case 'checkbox':\r\n fieldTag =
    \r\n \r\n
    ;\r\n break;\r\n case 'email':\r\n fieldTag = ;\r\n break;\r\n case 'phone':\r\n fieldTag = ;\r\n break;\r\n case 'state':\r\n let statesArray = states.getStates();\r\n let stateOptions = [];\r\n stateOptions.push();\r\n for (var j = 0; j < statesArray.length; j++) {\r\n let stateOptKey = 'stateOpt' + (j + 1);\r\n stateOptions.push();\r\n }\r\n\r\n fieldTag = \r\n {stateOptions}\r\n ;\r\n break;\r\n case 'fileUpload':\r\n fieldTag = this.setFile(e)}\r\n data-fieldId={field.id}\r\n type=\"file\"\r\n className=\"file-input\"\r\n />;\r\n break;\r\n case 'futureDatePicker':\r\n //Get the minimum allowed date\r\n let baseDate = new Date();\r\n baseDate.setDate(baseDate.getDate() + 1);\r\n let year = baseDate.getFullYear();\r\n let month = baseDate.getMonth().toString().length === 1 ? '0' + (baseDate.getMonth() + 1).toString() : baseDate.getMonth() + 1;\r\n let date = baseDate.getDate().toString().length === 1 ? '0' + (baseDate.getDate()).toString() : baseDate.getDate();\r\n\r\n let requestDateMin = year + '-' + month + '-' + date;\r\n\r\n fieldTag = ;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (fieldTag != undefined) {\r\n let requiredIcon = field.isRequired ? * : \"\";\r\n\r\n fields.push(\r\n <>\r\n \r\n {fieldTag}\r\n \r\n );\r\n }\r\n }\r\n }\r\n\r\n let confirmationEmailField;\r\n if (this.state.form != null) {\r\n let form = this.state.form;\r\n\r\n if (form.includeConfirmationEmail) {\r\n confirmationEmailField = <>\r\n \r\n \r\n ;\r\n }\r\n }\r\n\r\n let formName = this.state.form != null ? this.state.form.name : \"\";\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n {/*

    {formName}

    */}\r\n
    \r\n\r\n
    \r\n {fields}\r\n\r\n {confirmationEmailField}\r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let formId = this.props.formId;\r\n if (formId != undefined) {\r\n const response = await fetch('Components/GetFormData?formId=' + formId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n \r\n if (data != null) {\r\n //console.log(data);\r\n\r\n //set field values\r\n let formValues = [];\r\n for (var i = 0; i < data.formFields.length; i++) {\r\n if (data.formFields[i].fieldType == 'checkbox') {\r\n formValues.push({ fieldId: data.formFields[i].id, fieldName: data.formFields[i].name, fieldValue: 'false' });\r\n }\r\n else if (data.formFields[i].fieldType == 'fileUpload') {\r\n //Remove fileUpload as normal field\r\n }\r\n else {\r\n formValues.push({ fieldId: data.formFields[i].id, fieldName: data.formFields[i].name, fieldValue: null });\r\n }\r\n }\r\n //console.log(formValues);\r\n //console.log(data.formFields);\r\n this.setState({\r\n form: data.form,\r\n formFields: data.formFields,\r\n formValues: formValues\r\n });\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default Form;","import React, { Component } from 'react';\r\n\r\nexport class ActionButton extends Component {\r\n static displayName = ActionButton.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n actionButton: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let text;\r\n let link;\r\n if (this.state.actionButton != null) {\r\n text = this.state.actionButton.text;\r\n link = this.state.actionButton.link;\r\n }\r\n\r\n return (\r\n
    \r\n {text}\r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('Components/GetActionButton?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data != null) {\r\n this.setState({\r\n actionButton: data\r\n });\r\n }\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { HtmlEditor } from '../HtmlEditor/HtmlEditor';\r\n\r\nexport class SingleFeatures1 extends Component {\r\n static displayName = SingleFeatures1.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n singleFeatures1: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let htmlEditor;\r\n if (this.state.singleFeatures1 != null) {\r\n htmlEditor = ;\r\n }\r\n\r\n return (\r\n
    \r\n {htmlEditor}\r\n
    \r\n );\r\n\r\n //let title;\r\n //let itemList = [];\r\n //if (this.state.singleFeatures1 != null) {\r\n // title = this.state.singleFeatures1.title;\r\n // let rawItemList = this.state.singleFeatures1.itemList.split('/,');\r\n // for (var i = 0; i < rawItemList.length; i++) {\r\n // itemList.push(
  • {rawItemList[i]}
  • );\r\n // }\r\n //}\r\n\r\n //return (\r\n //
    \r\n //

    {title}

    \r\n //
    \r\n //
      \r\n // {itemList}\r\n //
    \r\n //
    \r\n //);\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('Components/GetSingleFeatures1?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data != null) {\r\n this.setState({\r\n singleFeatures1: data\r\n });\r\n }\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\nexport class HRSeparator extends Component {\r\n static displayName = HRSeparator.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n hrSeparator: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('Components/GetHRSeparator?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data != null) {\r\n this.setState({\r\n hrSeparator: data\r\n });\r\n }\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Calendar, momentLocalizer } from 'react-big-calendar';\r\nimport moment from 'moment';\r\nimport 'react-big-calendar/lib/css/react-big-calendar.css';\r\n\r\nconst localizer = momentLocalizer(moment);\r\n\r\nclass EventCalendar extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n\r\n };\r\n this.sendToEventPage = this.sendToEventPage.bind(this);\r\n }\r\n\r\n sendToEventPage(event) {\r\n if (event.eventUrl != null) {\r\n return window.location = event.eventUrl;\r\n }\r\n else {\r\n this.props.populateCalendarFilter(event.start);\r\n }\r\n }\r\n\r\n render() {\r\n let rawEvents = this.props.events;\r\n let events = [];\r\n let dateCounter = 1;\r\n let prevDateString = \"\";\r\n for (var i = 0; i < rawEvents.length; i++) {\r\n let event = rawEvents[i];\r\n\r\n let eventUrl = '/event/' + event.friendlyUrl;\r\n let eventTime = new Date(event.startTime.toString());\r\n\r\n let dateString = eventTime.getMonth().toString() + \"/\" + eventTime.getDate().toString() + \"/\" + eventTime.getFullYear().toString();\r\n if (dateString == prevDateString) {\r\n dateCounter += 1;\r\n }\r\n else {\r\n prevDateString = dateString;\r\n dateCounter = 1;\r\n }\r\n\r\n if (dateCounter <= 2) {\r\n let calEvent = {\r\n id: i,\r\n title: event.title,\r\n start: eventTime,\r\n end: eventTime,\r\n eventUrl: eventUrl\r\n };\r\n events.push(calEvent);\r\n }\r\n else if (dateCounter == 3) {\r\n let viewMore = {\r\n id: i,\r\n title: \"View All...\",\r\n start: eventTime,\r\n end: eventTime,\r\n eventUrl: null\r\n };\r\n events.push(viewMore);\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default EventCalendar;\r\n","import React, { Component } from 'react';\r\nimport { MDBDataTable } from 'mdbreact';\r\nimport EventCalendar from './EventCalendar';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faTimesCircle } from '@fortawesome/free-solid-svg-icons';\r\n\r\nexport class EventTable extends Component {\r\n static displayName = EventTable.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n eventTable: null,\r\n events: [],\r\n filteredEvents: [],\r\n eventConfiguration: null,\r\n calendarFilter: null,\r\n showPastEvents: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n formatDateTime(dateTime, includeTime, isTextFormat) {\r\n let timestamp = new Date(dateTime.toString());\r\n\r\n let year = timestamp.getFullYear();\r\n let month = timestamp.getMonth().toString().length === 1 ? '0' + (timestamp.getMonth() + 1).toString() : timestamp.getMonth() + 1;\r\n let date = timestamp.getDate().toString().length === 1 ? '0' + (timestamp.getDate()).toString() : timestamp.getDate();\r\n let day = timestamp.getDay();\r\n let hours = timestamp.getHours().toString().length === 1 ? '0' + timestamp.getHours().toString() : timestamp.getHours();\r\n let midday = hours >= 12 ? \"PM\" : \"AM\";\r\n if (hours == 0) {\r\n hours = 12;\r\n }\r\n if (hours >= 13) {\r\n hours = hours - 12;\r\n if (hours.toString().length === 1) hours = '0' + hours;\r\n }\r\n let minutes = timestamp.getMinutes().toString().length === 1 ? '0' + timestamp.getMinutes().toString() : timestamp.getMinutes();\r\n\r\n var abvMonths = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\r\n var abvWeekDays = [\"Sun\", \"Mon\", \"Tues\", \"Wed\", \"Thur\", \"Fri\", \"Sat\"];\r\n\r\n let timestampFormat;\r\n if (isTextFormat) {\r\n timestampFormat = includeTime ?\r\n (abvWeekDays[day] + \" \" + abvMonths[month - 1] + \" \" + date + \", \" + year + \" \" + hours + \":\" + minutes + \" \" + midday):\r\n (abvWeekDays[day] + \" \" + abvMonths[month - 1] + \" \" + date + \", \" + year);\r\n }\r\n else {\r\n timestampFormat = includeTime ?\r\n (month + \"/\" + date + \"/\" + year + \" \" + hours + \":\" + minutes + \" \" + midday) :\r\n (month + \"/\" + date + \"/\" + year);\r\n }\r\n \r\n return timestampFormat;\r\n }\r\n\r\n sendToEventPage(eventLink) {\r\n return window.location = eventLink;\r\n }\r\n\r\n populateCalendarFilter = (date) => {\r\n let dateFormat = this.formatDateTime(date, false, false);\r\n\r\n this.setState({\r\n calendarFilter: dateFormat\r\n });\r\n\r\n document.getElementById(\"eventTable\").scrollIntoView(true);\r\n }\r\n\r\n removeCalendarFilter = () => {\r\n this.setState({\r\n calendarFilter: null\r\n });\r\n\r\n document.getElementById(\"eventCalendarComponentRef\").scrollIntoView(true);\r\n }\r\n\r\n togglePastEvents = (e) => {\r\n let showPastEvents = e.target.checked ? true : false;\r\n this.setState({ showPastEvents: showPastEvents })\r\n }\r\n\r\n render() {\r\n let eventTable = this.state.eventTable;\r\n let events = this.state.filteredEvents;\r\n\r\n let tableRows = [];\r\n let calendarEvents = [];\r\n if (events != null && events.length > 0 && eventTable != null) {\r\n for (var i = 0; i < events.length; i++) {\r\n let event = events[i];\r\n\r\n let thumbnailImageSrc = ((event.thumbnailImage == null || event.thumbnailImage == \"\") && this.state.eventConfiguration != null) ? this.state.eventConfiguration.defaultImage : event.thumbnailImage;\r\n let singleEventUrl = '/event/' + event.friendlyUrl;\r\n \r\n let startTimeFormat = this.formatDateTime(event.startTime, true, false);\r\n let dateFormat = this.formatDateTime(event.startTime, false, false);\r\n\r\n let row = {\r\n thumbnailImage: \"thumbnail,\r\n title: event.title,\r\n startTime: startTimeFormat,\r\n clickEvent: () => this.sendToEventPage(singleEventUrl)\r\n };\r\n\r\n // Only display future events\r\n if (!this.state.showPastEvents) {\r\n if (new Date(event.startTime.toString()) > new Date()) {\r\n if (this.state.calendarFilter == null) {\r\n tableRows.push(row);\r\n }\r\n else {\r\n if (this.state.calendarFilter == dateFormat) {\r\n tableRows.push(row);\r\n }\r\n }\r\n calendarEvents.push(event);\r\n }\r\n }\r\n else { // Display all events, including past events\r\n if (this.state.calendarFilter == null) {\r\n tableRows.push(row);\r\n }\r\n else {\r\n if (this.state.calendarFilter == dateFormat) {\r\n tableRows.push(row);\r\n }\r\n }\r\n calendarEvents.push(event);\r\n }\r\n }\r\n }\r\n\r\n let table = {\r\n columns: [\r\n { label: '', field: 'thumbnailImage' },\r\n { label: 'Title', field: 'title', sort: 'asc' },\r\n { label: 'Start Time', field: 'startTime', sort: 'asc' },\r\n ],\r\n rows: tableRows\r\n };\r\n let mdbTable = ;\r\n\r\n let calendarFilter;\r\n let eventTableClasses = \"event-table\";\r\n if (this.state.calendarFilter != null) {\r\n calendarFilter = \r\n {this.state.calendarFilter}\r\n \r\n ;\r\n\r\n eventTableClasses += \" calendar-filter\";\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n Show Past Events: \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n {calendarFilter}\r\n {mdbTable}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('components/GetEventTable?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n eventTable: data.eventTable,\r\n events: data.events,\r\n filteredEvents: data.events,\r\n eventConfiguration: data.eventConfiguration\r\n });\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { MDBDataTable } from 'mdbreact';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEye } from '@fortawesome/free-solid-svg-icons';\r\nimport service from '../Services';\r\n\r\nexport class NewsTable extends Component {\r\n static displayName = NewsTable.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n newsTable: null,\r\n newsList: [],\r\n filteredNewsList: [],\r\n newsConfiguration: null,\r\n isInCard: this.props.isInCard != undefined ? this.props.isInCard : false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let newsTable = this.state.newsTable;\r\n let newsList = this.state.filteredNewsList;\r\n\r\n let tableName;\r\n\r\n if (newsTable != null && !newsTable.isCompact) {\r\n tableName = newsTable.componentName;\r\n }\r\n\r\n let tableRows = [];\r\n if (newsList != null && newsList.length > 0 && newsTable != null) {\r\n let maxEntries = newsTable.maxEntries > 0 ? newsTable.maxEntries : newsList.length;\r\n for (var i = 0; i < newsList.length; i++) {\r\n let news = newsList[i];\r\n\r\n // Only display the max allowed rows\r\n if (tableRows.length < maxEntries) {\r\n let thumbnailImageSrc = ((news.thumbnailImage == null || news.thumbnailImage == \"\") && this.state.newsConfiguration != null) ? this.state.newsConfiguration.defaultImage : news.thumbnailImage;\r\n let timestampFormat = service.formatDateTime(news.timestamp);\r\n\r\n let row;\r\n if (newsTable.isCompact) {\r\n row = ;\r\n }\r\n else {\r\n row = {\r\n viewNews: ,\r\n thumbnailImage: ,\r\n title: news.title,\r\n type: news.types,\r\n description: news.description\r\n };\r\n }\r\n \r\n tableRows.push(row);\r\n }\r\n }\r\n }\r\n\r\n let table;\r\n if (newsTable != null) {\r\n if (newsTable.isCompact) {\r\n table =
    \r\n {tableRows}\r\n
    ;\r\n }\r\n else {\r\n let tableData = {\r\n columns: [\r\n { label: '', field: 'viewNews' },\r\n { label: '', field: 'thumbnailImage' },\r\n { label: 'Title', field: 'title', sort: 'asc' },\r\n { label: 'Types', field: 'type', sort: 'asc' },\r\n { label: 'Description', field: 'description', sort: 'asc' }\r\n ],\r\n rows: tableRows\r\n };\r\n table =
    \r\n \r\n
    ;\r\n }\r\n }\r\n \r\n return (\r\n
    \r\n
    \r\n
    \r\n {/*{tableName}*/}\r\n
    \r\n\r\n {table}\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('components/GetNewsTable?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n newsTable: data.newsTable,\r\n newsList: data.newsList,\r\n filteredNewsList: data.newsList,\r\n newsConfiguration: data.newsConfiguration\r\n });\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { MDBDataTable } from 'mdbreact';\r\n\r\nexport class BirthdayTable extends Component {\r\n static displayName = BirthdayTable.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n birthdayTable: null,\r\n birthdays: [],\r\n filteredBirthdays: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let birthdayTable = this.state.birthdayTable;\r\n let birthdays = this.state.filteredBirthdays;\r\n\r\n let tableName;\r\n\r\n if (birthdayTable != null) {\r\n tableName = birthdayTable.componentName;\r\n }\r\n\r\n let tableRows = [];\r\n if (birthdays != null && birthdays.length > 0 && birthdayTable != null) {\r\n let maxEntries = birthdayTable.maxEntries > 0 ? birthdayTable.maxEntries : birthdays.length;\r\n let months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\n let currentDate = new Date();\r\n let currentMonth = currentDate.getMonth() + 1;\r\n let currentDay = currentDate.getDate();\r\n\r\n for (var i = 0; i < birthdays.length; i++) {\r\n let birthday = birthdays[i];\r\n\r\n //Only display the max allowed rows\r\n if (tableRows.length < maxEntries) {\r\n //Only display current and future birthdays\r\n if (birthday.month >= currentMonth && birthday.day >= currentDay) {\r\n let name = birthday.firstName + \" \" + birthday.lastName;\r\n let birthdayFormat = months[birthday.month - 1] + \" \" + birthday.day;\r\n\r\n let row;\r\n if (birthdayTable.isCompact) {\r\n row =
    \r\n {name}\r\n {birthdayFormat}\r\n {birthday.department}\r\n
    ;\r\n }\r\n else {\r\n row = {\r\n name: name,\r\n birthday: birthdayFormat,\r\n department: birthday.department\r\n };\r\n }\r\n\r\n tableRows.push(row);\r\n }\r\n }\r\n }\r\n }\r\n\r\n let table;\r\n if (birthdayTable != null) {\r\n if (birthdayTable.isCompact) {\r\n table =
    \r\n {tableRows}\r\n
    ;\r\n tableName = null;\r\n }\r\n else {\r\n let tableData = {\r\n columns: [\r\n { label: 'Name', field: 'name', sort: 'asc' },\r\n { label: 'Birthday', field: 'birthday', sort: 'asc' },\r\n { label: 'Department', field: 'department', sort: 'asc' }\r\n ],\r\n rows: tableRows\r\n };\r\n table = ;\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {/*{tableName}*/}\r\n
    \r\n\r\n {table}\r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('components/GetBirthdayTable?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n birthdayTable: data.birthdayTable,\r\n birthdays: data.birthdays,\r\n filteredBirthdays: data.birthdays\r\n });\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { MDBDataTable } from 'mdbreact';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEye } from '@fortawesome/free-solid-svg-icons';\r\n//import fileIcon from '../images/file.svg';\r\nimport fileIcon from '../images/file_blue.png';\r\n\r\nexport class DocumentTable extends Component {\r\n static displayName = DocumentTable.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n documentTable: null,\r\n documents: [],\r\n filteredDocuments: [],\r\n typeFilter: \"\"\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n searchDocuments = (e) => {\r\n let searchText = e.target.value;\r\n\r\n if (searchText == null || searchText == \"\" || searchText == undefined) {\r\n this.setState({ filteredDocuments: this.state.documents });\r\n }\r\n else {\r\n let isOrSearch = false;// Determine if the rows should contain all terms or atleast one term\r\n let terms = searchText.split(' ');\r\n let filteredDocs = [];\r\n for (var i = 0; i < this.state.documents.length; i++) {\r\n let document = this.state.documents[i];\r\n\r\n let name = document.name != null ? document.name : \"\";\r\n let type = document.type != null ? document.type : \"\";\r\n let description = document.description != null ? document.description : \"\";\r\n let timestamp = this.getTimestampFormat(document.timestamp);\r\n\r\n\r\n for (var j = 0; j < terms.length; j++) {\r\n let term = terms[j].toLowerCase();\r\n\r\n // Search each column\r\n if (isOrSearch) { // Row contains atleast one term\r\n // Skip if term is empty\r\n if (term == \"\") {\r\n continue;\r\n }\r\n\r\n if (name.toLowerCase().includes(term) ||\r\n type.toLowerCase().includes(term) ||\r\n description.toLowerCase().includes(term) ||\r\n timestamp.includes(term)) {\r\n\r\n filteredDocs.push(document);\r\n break;\r\n }\r\n }\r\n else { // Row must contain all terms\r\n if (name.toLowerCase().includes(term) ||\r\n type.toLowerCase().includes(term) ||\r\n description.toLowerCase().includes(term) ||\r\n timestamp.includes(term)) {\r\n\r\n if ((j + 1) == terms.length) {\r\n filteredDocs.push(document);\r\n break;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n this.setState({ filteredDocuments: filteredDocs });\r\n }\r\n }\r\n\r\n getTimestampFormat(datetime) {\r\n let timestamp = new Date(datetime.toString());\r\n let timestampFormat = (timestamp.getMonth() + 1) + \"/\" + timestamp.getDate() + \"/\" + timestamp.getFullYear();\r\n return timestampFormat;\r\n }\r\n\r\n addTypeFilter = (e) => {\r\n this.setState({\r\n typeFilter: e.target.value\r\n });\r\n }\r\n\r\n render() {\r\n let documentTable = this.state.documentTable;\r\n let documents = this.state.filteredDocuments;\r\n\r\n let tableName;\r\n\r\n if (documentTable != null) {\r\n tableName = documentTable.componentName;\r\n }\r\n\r\n let typeFilterOpts = [];\r\n let tableRows = [];\r\n if (documents != null && documents.length > 0 && documentTable != null) {\r\n let maxEntries = documentTable.maxEntries > 0 ? documentTable.maxEntries : documents.length;\r\n for (var i = 0; i < documents.length; i++) {\r\n let document = documents[i];\r\n\r\n //Only display the max allowed rows\r\n if (tableRows.length < maxEntries) {\r\n let timestampFormat = this.getTimestampFormat(document.timestamp);\r\n let documentTypesArray = (document.type != null && document.type != \"\" && document.type != undefined) ? document.type.split(\",\") : [];\r\n\r\n // Skip if not part of current type filter\r\n if (this.state.typeFilter != \"\") {\r\n if (!documentTypesArray.includes(this.state.typeFilter)) {\r\n continue;\r\n }\r\n }\r\n\r\n let row;\r\n if (documentTable.isCompact) {\r\n row = ;\r\n }\r\n else {\r\n row = {\r\n viewDocument: ,\r\n name: document.name,\r\n type: document.type,\r\n description: document.description,\r\n //timestamp: timestampFormat\r\n };\r\n }\r\n \r\n tableRows.push(row);\r\n }\r\n }\r\n\r\n // Get the unique types in the table for filters\r\n typeFilterOpts = (documentTable.types != null && documentTable.types != \"\" && documentTable.types != undefined) ? documentTable.types.split(\",\") : [];\r\n }\r\n\r\n let table;\r\n let customSearch;\r\n let typeFilterSelect;\r\n if (documentTable != null) {\r\n if (documentTable.isCompact) {\r\n tableName = null;\r\n\r\n table =
    \r\n {tableRows}\r\n
    ;\r\n }\r\n else {\r\n let tableData = {\r\n columns: [\r\n { label: '', field: 'viewDocument' },\r\n { label: 'Name', field: 'name', sort: 'asc' },\r\n { label: 'Type', field: 'type', sort: 'asc' },\r\n { label: 'Description', field: 'description', sort: 'asc' },\r\n //{ label: 'Timestamp', field: 'timestamp', sort: 'asc' }\r\n ],\r\n rows: tableRows\r\n };\r\n table = ;\r\n\r\n customSearch =
    \r\n \r\n
    ;\r\n\r\n let typeOpts = [];\r\n for (var i = 0; i < typeFilterOpts.length; i++) {\r\n let typeKey = \"typeFilter\" + i;\r\n typeOpts.push();\r\n }\r\n\r\n typeFilterSelect = ;\r\n }\r\n }\r\n \r\n return (\r\n
    \r\n
    \r\n
    \r\n {/*{tableName}*/}\r\n
    \r\n\r\n {typeFilterSelect}\r\n {customSearch}\r\n {table}\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('components/GetDocumentTable?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n documentTable: data.documentTable,\r\n documents: data.documents,\r\n filteredDocuments: data.documents\r\n });\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { HtmlEditor } from '../HtmlEditor/HtmlEditor';\r\nimport { Calendar } from '../Calendar/Calendar';\r\nimport { BannerContainer } from '../BannerContainer/BannerContainer';\r\nimport { EventTable } from '../EventTable/EventTable';\r\nimport { BlogTable } from '../BlogTable/BlogTable';\r\nimport { NewsTable } from '../NewsTable/NewsTable';\r\nimport { BirthdayTable } from '../BirthdayTable/BirthdayTable';\r\nimport { DocumentTable } from '../DocumentTable/DocumentTable';\r\nimport covidIcon from '../images/covid-icon.svg';\r\nimport waveOverlay from '../images/wave.svg';\r\nimport caseCircle from '../images/case_circle.svg';\r\nimport fileIcon from '../images/file.svg';\r\nimport linksIcon from '../images/links.svg';\r\nimport userCircle from '../images/user_circle.svg';\r\n\r\nexport class Card extends Component {\r\n static displayName = Card.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n componentId: props.componentId,\r\n card: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let cardClasses;\r\n let cardTitle;\r\n let cardContent;\r\n let cardIcon;\r\n let cardOverlay;\r\n\r\n if (this.state.card != null) {\r\n let card = this.state.card;\r\n\r\n // Get card icon\r\n //if (card.title == \"Covid-19 Information\") {\r\n // cardIcon = ;\r\n //}\r\n //else if (card.title == \"Job Postings\") {\r\n // cardIcon = ;\r\n //}\r\n //else if (card.title == \"Directory\") {\r\n // cardIcon = ;\r\n //}\r\n\r\n // Get card overlay\r\n //if (card.componentName == \"Home Announce\") {\r\n // cardOverlay =
    \r\n // \r\n //
    \r\n //

    2020 EMPLOYEE TRAINING

    \r\n //

    BEGINS OCTOBER 15

    \r\n //
    \r\n // \r\n //
    ;\r\n //}\r\n\r\n // Get card style\r\n if (card.cardStyle == 'Default') {\r\n cardClasses = \"card\";\r\n }\r\n else if (card.cardStyle == 'Flat') {\r\n cardClasses = \"card flat-card\";\r\n }\r\n\r\n // Get title style\r\n if (card.titleStyle == 'Standard') {\r\n cardTitle =
    {card.title}
    \r\n }\r\n else if (card.titleStyle == 'ViewAll') {\r\n cardTitle =
    {card.title}
    View All >
    \r\n }\r\n else if (card.titleStyle == 'View') {\r\n cardTitle =
    {card.title}
    View >
    \r\n }\r\n else if (card.titleStyle == 'Hide') {\r\n cardTitle = \"\";\r\n }\r\n\r\n \r\n //if (card.contentStyle == 'ImageTitleDescription') {\r\n // cardContent = card.cardContent.map((u) =>
    {u.title}
    {u.teaser}
    );\r\n //}\r\n //else if (card.contentStyle == 'ImageTitleDescriptionVertical') {\r\n // cardContent = card.cardContent.map((u) =>
    {u.title}
    {u.teaser}
    );\r\n //}\r\n //else if (card.contentStyle == 'ImageTitleSubtitleText') {\r\n // cardContent = card.cardContent.map((u) =>
    {u.title}
    {u.subtitle}
    {u.rightText}
    );\r\n //}\r\n //else if (card.contentStyle == 'TitleDescription') {\r\n // cardContent = card.cardContent.map((u) =>
    {u.title}
    {u.text}
    );\r\n //}\r\n\r\n // Get content style\r\n let content = (card.contentType == \"HtmlEditor\") ? :\r\n (card.contentType == \"Calendar\") ? :\r\n (card.contentType == \"BannerContainer\") ? :\r\n (card.contentType == \"EventTable\") ? :\r\n (card.contentType == \"BlogTable\") ? :\r\n (card.contentType == \"NewsTable\") ? :\r\n (card.contentType == \"BirthdayTable\") ? :\r\n (card.contentType == \"DocumentTable\") ? : null;\r\n\r\n //if (card.contentStyle == 'ImageTitleDescription') {\r\n // cardContent =
    \r\n // {content}\r\n //
    \r\n //}\r\n //else if (card.contentStyle == 'ImageTitleDescriptionVertical') {\r\n // cardContent =
    \r\n // {content}\r\n //
    ;\r\n //}\r\n //else if (card.contentStyle == 'ImageTitleSubtitleText') {\r\n // cardContent =
    \r\n // {content}\r\n //
    ;\r\n //}\r\n //else if (card.contentStyle == 'TitleDescription') {\r\n // cardContent =
    \r\n // {content}\r\n //
    ;\r\n //}\r\n if (card.contentStyle == \"Warning\") {\r\n cardContent =
    \r\n {content}\r\n
    ;\r\n }\r\n else if (card.contentStyle == \"Update\") {\r\n cardContent =
    \r\n {content}\r\n
    ;\r\n }\r\n else {\r\n cardContent =
    \r\n {content}\r\n
    ;\r\n }\r\n }\r\n \r\n return (\r\n
    \r\n {cardIcon}\r\n {cardTitle}\r\n {cardContent}\r\n {cardOverlay}\r\n
    \r\n )\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('Components/GetCard?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data != null) {\r\n this.setState({\r\n card: data\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default Card;\r\n","import React, { Component } from 'react';\r\nimport Card from '../Card/Card';\r\n\r\nexport class CardContainer extends Component {\r\n static displayName = CardContainer.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n cardContainerData: {\r\n cssClass: 'cardContainerFourWide'\r\n },\r\n componentId: props.componentId,\r\n cardContainer: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n //render() {\r\n\r\n // var inTheNewsData = [\r\n // {\r\n // imageUrl: 'https://source.unsplash.com/random/50x50', title: 'Title', teaser: 'Perum eos etur sus. Os et pa inulparum quia idel illorerae consequat.'\r\n // },\r\n // {\r\n // imageUrl: 'https://source.unsplash.com/random/50x50', title: 'Title', teaser: 'Perum eos etur sus. Os et pa inulparum quia idel illorerae consequat.'\r\n // }\r\n // ];\r\n\r\n // var employeeNewsletterData = [\r\n // {\r\n // imageUrl: 'https://source.unsplash.com/random/50x50', title: 'Employee Name', teaser: 'Perum eos etur sus. Os et pa inulparum quia idel illorerae consequat.'\r\n // }\r\n // ];\r\n\r\n // var birthdayData = [\r\n // {\r\n // imageUrl: 'https://source.unsplash.com/random/50x50', title: 'Employee Name', subtitle: 'Finance', rightText: 'November 10'\r\n // }\r\n // ];\r\n\r\n // var events = [\r\n // {\r\n // title: 'THURS NOV 12, 2020 8 - 9 AM', text: 'Employee Services: 2020 Discrimination and Harassment Training'\r\n // },\r\n // {\r\n // title: 'THURS NOV 12, 2020 11 AM-4 PM', text: 'Employee Services: OSHA REF-GEN IND 10 hr Course'\r\n // }\r\n // ];\r\n\r\n // return (\r\n //
    \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n // \r\n //
    \r\n // );\r\n //}\r\n\r\n render() {\r\n let cards = [];\r\n if (this.state.cardContainer != null) {\r\n let cardIds = this.state.cardContainer.cardIds.split(',');\r\n let containerType = this.state.cardContainer.containerType;\r\n\r\n for (var i = 0; i < cardIds.length; i++) {\r\n let rowStart = '';\r\n let rowEnd = '';\r\n let columnStart = '';\r\n let columnEnd = '';\r\n\r\n if (containerType == \"Type1\") {\r\n switch (i) {\r\n case 0:\r\n rowStart = '1'; rowEnd = '2'; columnStart = '3'; columnEnd = '6';\r\n break;\r\n case 1:\r\n rowStart = '2'; rowEnd = '5'; columnStart = '1'; columnEnd = '6';\r\n break;\r\n case 2:\r\n rowStart = '5'; rowEnd = '7'; columnStart = '1'; columnEnd = '4';\r\n break;\r\n case 3:\r\n rowStart = '5'; rowEnd = '7'; columnStart = '4'; columnEnd = '6';\r\n break;\r\n case 4:\r\n rowStart = '1'; rowEnd = '4'; columnStart = '6'; columnEnd = '8';\r\n break;\r\n case 5:\r\n rowStart = '4'; rowEnd = '6'; columnStart = '6'; columnEnd = '8';\r\n break;\r\n case 6:\r\n rowStart = '6'; rowEnd = '7'; columnStart = '6'; columnEnd = '8';\r\n break;\r\n case 7:\r\n rowStart = '1'; rowEnd = '2'; columnStart = '8'; columnEnd = '10';\r\n break;\r\n case 8:\r\n rowStart = '2'; rowEnd = '7'; columnStart = '8'; columnEnd = '10';\r\n break;\r\n }\r\n }\r\n else { //Type2\r\n switch (i) {\r\n case 0:\r\n rowStart = '1'; rowEnd = '2'; columnStart = '1'; columnEnd = '6';\r\n break;\r\n case 1:\r\n rowStart = '2'; rowEnd = '5'; columnStart = '1'; columnEnd = '6';\r\n break;\r\n case 2:\r\n rowStart = '5'; rowEnd = '7'; columnStart = '1'; columnEnd = '6';\r\n break;\r\n case 3:\r\n rowStart = '1'; rowEnd = '3'; columnStart = '6'; columnEnd = '8';\r\n break;\r\n case 4:\r\n rowStart = '3'; rowEnd = '5'; columnStart = '6'; columnEnd = '8';\r\n break;\r\n case 5:\r\n rowStart = '5'; rowEnd = '7'; columnStart = '6'; columnEnd = '8';\r\n break;\r\n case 6:\r\n rowStart = '1'; rowEnd = '3'; columnStart = '8'; columnEnd = '10';\r\n break;\r\n case 7:\r\n rowStart = '3'; rowEnd = '5'; columnStart = '8'; columnEnd = '10';\r\n break;\r\n case 8:\r\n rowStart = '5'; rowEnd = '7'; columnStart = '8'; columnEnd = '10';\r\n break;\r\n }\r\n }\r\n\r\n cards.push();\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n {cards}\r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('Components/GetCardContainer?componentId=' + this.state.componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data != null) {\r\n this.setState({\r\n cardContainer: data\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default CardContainer;\r\n","import React, { Component } from 'react';\r\nimport MetaTags from 'react-meta-tags';\r\nimport '././Themes/theme.css';\r\nimport SideNav from './SideNav/SideNav';\r\n\r\n// Components\r\nimport { NavBar } from './NavBar/NavBar';\r\nimport { BannerContainer } from './BannerContainer/BannerContainer';\r\nimport { IconLinkContainer } from './IconLinkContainer/IconLinkContainer';\r\nimport { ColumnsTabContainer } from './ColumnsTabContainer/ColumnsTabContainer';\r\nimport { Accordion } from './Accordion/Accordion';\r\nimport { Footer } from './Footer/Footer';\r\nimport { Announcement } from './Announcement/Announcement';\r\nimport { HtmlEditor } from './HtmlEditor/HtmlEditor';\r\nimport { SocialIcons } from './SocialIcons/SocialIcons';\r\nimport { BigText5050 } from './BigText5050/BigText5050';\r\nimport { Grid5050 } from './Grid5050/Grid5050';\r\nimport { Contact5050 } from './Contact5050/Contact5050';\r\nimport { ActionButton } from './ActionButton/ActionButton';\r\nimport { HRSeparator } from './HRSeparator/HRSeparator';\r\nimport { SingleFeatures1 } from './Features1/SingleFeatures1';\r\nimport { Features1 } from './Features1/Features1';\r\nimport { Card } from './Card/Card';\r\nimport { CardContainer } from './CardContainer/CardContainer';\r\nimport { Calendar } from './Calendar/Calendar';\r\nimport { DocumentTable } from './DocumentTable/DocumentTable';\r\nimport { EventTable } from './EventTable/EventTable';\r\nimport { BlogTable } from './BlogTable/BlogTable';\r\nimport { BlogPreview } from './BlogPreview/BlogPreview';\r\nimport { NewsTable } from './NewsTable/NewsTable';\r\nimport { BirthdayTable } from './BirthdayTable/BirthdayTable';\r\nimport { SideContainer } from './SideContainer/SideContainer';\r\n\r\nconst components = {\r\n Navbar: NavBar,\r\n BannerContainer: BannerContainer,\r\n IconLinkContainer: IconLinkContainer,\r\n ColumnsTabContainer: ColumnsTabContainer,\r\n Accordion: Accordion,\r\n Footer: Footer,\r\n Announcement: Announcement,\r\n HtmlEditor: HtmlEditor,\r\n BigText5050: BigText5050,\r\n Grid5050: Grid5050,\r\n Contact5050: Contact5050,\r\n ActionButton: ActionButton,\r\n HRSeparator: HRSeparator,\r\n SingleFeatures1: SingleFeatures1,\r\n Features1: Features1,\r\n SocialIcons: SocialIcons,\r\n Card: Card,\r\n CardContainer: CardContainer,\r\n Calendar: Calendar,\r\n DocumentTable: DocumentTable,\r\n EventTable: EventTable,\r\n BlogTable: BlogTable,\r\n BlogPreview: BlogPreview,\r\n NewsTable: NewsTable,\r\n BirthdayTable: BirthdayTable,\r\n SideContainer: SideContainer\r\n};\r\n\r\nexport class Page extends Component {\r\n static displayName = Page.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n pageContent: null,\r\n page: null\r\n };\r\n\r\n this.parentMenu = props.match.params.parentMenu;\r\n this.childMenu = props.match.params.childMenu;\r\n this.subMenu = props.match.params.subMenu;\r\n this.friendlyUrl = props.match.params.friendlyUrl;\r\n }\r\n\r\n async componentDidMount() {\r\n this.getPageData();\r\n }\r\n\r\n generateComponents(data) {\r\n //if (data != null) {\r\n // var elements = [];\r\n // var lastElementType = \"\";\r\n // let hasSideNav = false;\r\n // data.forEach((element, i) => {\r\n // const newComponent = components[element.type];\r\n // const newC = React.createElement(newComponent, { componentId: element.componentId, pageId: this.state.page.id, key: i });\r\n\r\n // // Add component and side nav if applicable\r\n // if (lastElementType == \"Navbar\" && this.state.page != null && this.state.page.sideNavId > 0) {\r\n // let sideNav = ;\r\n // let columnElement =
    \r\n // {newC}\r\n\r\n // {sideNav}\r\n //
    ;\r\n // elements.push(columnElement);\r\n // hasSideNav = true;\r\n // }\r\n // else {\r\n // if (hasSideNav && element.type != \"Footer\") {\r\n // elements.push(
    {newC}
    );\r\n // }\r\n // else {\r\n // elements.push(newC);\r\n // }\r\n // }\r\n\r\n // // Add page header to each page that is not the home page\r\n // if (element.type == \"Navbar\" && this.state.page.friendlyUrl != \"/\") {\r\n // elements.push(

    {this.state.page.name}

    );\r\n // }\r\n\r\n // lastElementType = element.type;\r\n // });\r\n // //console.log(elements);\r\n // return elements;\r\n //}\r\n\r\n\r\n // This method of component rendering separates components and renders the side nav(if applicable) as a full column\r\n if (data != null) {\r\n var elements = [];\r\n var lastElementType = \"\";\r\n let hasSideNav = (this.state.page != null && this.state.page.sideNavId > 0) ? true : false;\r\n let announcement = null;\r\n let navbar;\r\n let dynamicComponents = [];\r\n let footer;\r\n data.forEach((element, i) => {\r\n const newComponent = components[element.type];\r\n const newC = React.createElement(newComponent, { componentId: element.componentId, pageId: this.state.page.id, key: i });\r\n\r\n if (element.type == \"Announcement\" && i == 0) {\r\n announcement = newC;\r\n }\r\n else if (element.type == \"Navbar\") {\r\n navbar = newC;\r\n }\r\n else if (element.type == \"Footer\") {\r\n footer = newC;\r\n }\r\n else {\r\n if (hasSideNav) {\r\n dynamicComponents.push(
    {newC}
    );\r\n }\r\n else {\r\n dynamicComponents.push(
    {newC}
    );\r\n }\r\n }\r\n\r\n // Add page header to each page that is not the home page\r\n if (element.type == \"Navbar\" && this.state.page.friendlyUrl != \"/\") {\r\n dynamicComponents.push(

    {this.state.page.name}

    );\r\n }\r\n\r\n lastElementType = element.type;\r\n });\r\n\r\n if (hasSideNav) {\r\n let sideNav = ;\r\n let columnElement =
    \r\n
    {dynamicComponents}
    \r\n\r\n {sideNav}\r\n
    ;\r\n\r\n elements = <>\r\n {announcement}\r\n {navbar}\r\n {columnElement}\r\n {footer}\r\n ;\r\n }\r\n else {\r\n elements = <>\r\n {announcement}\r\n {navbar}\r\n {dynamicComponents}\r\n {footer}\r\n ;\r\n }\r\n\r\n return elements;\r\n }\r\n }\r\n\r\n render() {\r\n let pageContentData = this.state.pageContent;\r\n let page = this.state.page;\r\n\r\n let metaData;\r\n if (page != null) {\r\n metaData = \r\n {page.scoTitle}\r\n \r\n \r\n ;\r\n }\r\n\r\n return (\r\n
    \r\n {metaData}\r\n \r\n {this.generateComponents(pageContentData)}\r\n
    \r\n );\r\n }\r\n\r\n async getPageData() {\r\n let routeData = {\r\n parentMenu: this.parentMenu,\r\n childMenu: this.childMenu,\r\n subMenu : this.subMenu,\r\n friendlyUrl: this.friendlyUrl\r\n };\r\n\r\n const response = await fetch('pages/GetPageByMenuAndPageName', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n },\r\n body: JSON.stringify(routeData)\r\n });\r\n const data = await response.json();\r\n\r\n console.log(\"response status:\", response.status);\r\n console.log(\"data status:\", data.status);\r\n \r\n if (data.status == 404 || data.status == 400) {\r\n window.location = \"/404\";\r\n }\r\n else {\r\n await this.setState({\r\n pageContent: data.pageComponents,\r\n page: data.page\r\n });\r\n }\r\n }\r\n}","import React, { Component } from 'react';\r\nimport '../settings.css';\r\nimport TagsByInput from '../../TagsAndChips/TagsByInput';\r\n\r\nexport class DocumentSettings extends Component {\r\n static displayName = DocumentSettings.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n documentConfigurations: null,\r\n removedTags: []\r\n };\r\n this.onTypeTagRemoval = this.onTypeTagRemoval.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newDocumentConfigurations = this.state.documentConfigurations;\r\n newDocumentConfigurations[e.target.name] = e.target.value;\r\n this.setState({ documentConfigurations: newDocumentConfigurations });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let documentConfigurations = this.state.documentConfigurations;\r\n\r\n fetch('AdminSettings/UpdateDocumentSettingsData', {\r\n method: 'POST',\r\n body: JSON.stringify(documentConfigurations),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (data === \"Saved\") {\r\n if (this.state.removedTags.length > 0) {\r\n let removedTags = this.state.removedTags;\r\n for (var i = 0; i < removedTags.length; i++) {\r\n let tag = removedTags[i];\r\n fetch('AdminDocument/RemoveDocumentTypeReference?typeToRemove=' + tag, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n }\r\n }\r\n\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n )\r\n }\r\n\r\n async onTypeTagRemoval(tag) {\r\n let removedTags = this.state.removedTags;\r\n removedTags.push(tag);\r\n this.setState({ removedTags: removedTags });\r\n }\r\n\r\n render() {\r\n let types;\r\n\r\n let isDocumentConfigurationsSet = false;\r\n if (this.state.documentConfigurations != null) {\r\n let documentConfigurations = this.state.documentConfigurations;\r\n types = documentConfigurations.types;\r\n\r\n isDocumentConfigurationsSet = true;\r\n }\r\n\r\n let typesInput = isDocumentConfigurationsSet ?\r\n : \"\";\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Document

    \r\n
    \r\n\r\n \r\n {typesInput}\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('AdminSettings/GetDocumentSettingsData', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n documentConfigurations: data\r\n });\r\n }\r\n}\r\n\r\nexport default DocumentSettings;\r\n","import React, { Component } from 'react';\r\nimport '../settings.css';\r\nimport TagsByInput from '../../TagsAndChips/TagsByInput';\r\nimport ImageGalleryField from '../../../ImageGalleryField';\r\n\r\nexport class EventSettings extends Component {\r\n static displayName = EventSettings.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n eventConfiguration: null,\r\n removedTags: []\r\n };\r\n this.onTypeTagRemoval = this.onTypeTagRemoval.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newEventConfiguration = this.state.eventConfiguration;\r\n newEventConfiguration[e.target.name] = e.target.value;\r\n this.setState({ eventConfiguration: newEventConfiguration });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let eventConfiguration = this.state.eventConfiguration;\r\n\r\n fetch('AdminSettings/UpdateEventSettingsData', {\r\n method: 'POST',\r\n body: JSON.stringify(eventConfiguration),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (data === \"Saved\") {\r\n if (this.state.removedTags.length > 0) {\r\n let removedTags = this.state.removedTags;\r\n for (var i = 0; i < removedTags.length; i++) {\r\n let tag = removedTags[i];\r\n fetch('AdminEvent/RemoveEventTypeReference?typeToRemove=' + tag, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n }\r\n }\r\n\r\n this.props.onComponentSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n )\r\n }\r\n\r\n async onTypeTagRemoval(tag) {\r\n let removedTags = this.state.removedTags;\r\n removedTags.push(tag);\r\n this.setState({ removedTags: removedTags });\r\n }\r\n\r\n render() {\r\n let types;\r\n let defaultImage;\r\n\r\n let isEventConfigurationSet = false;\r\n if (this.state.eventConfiguration != null) {\r\n let eventConfiguration = this.state.eventConfiguration;\r\n types = eventConfiguration.types;\r\n defaultImage = eventConfiguration.defaultImage;\r\n\r\n isEventConfigurationSet = true;\r\n }\r\n\r\n let typesInput = isEventConfigurationSet ?\r\n : \"\";\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Event

    \r\n
    \r\n\r\n \r\n \r\n \r\n\r\n \r\n {typesInput}\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('AdminSettings/GetEventSettingsData', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n eventConfiguration: data\r\n });\r\n }\r\n}\r\n\r\nexport default EventSettings;\r\n","import React, { Component } from 'react';\r\nimport './settings.css';\r\nimport adminSettingsService from '../AdminSettingsService';\r\nimport { getLoggedInUser } from \"../../Authentication\";\r\n\r\n// Modules\r\nimport FormSettings from './Modules/FormSettings';\r\nimport DocumentSettings from './Modules/DocumentSettings';\r\nimport EventSettings from './Modules/EventSettings';\r\nimport BlogSettings from './Modules/BlogSettings';\r\nimport NewsSettings from './Modules/NewsSettings';\r\nimport BirthdaySettings from './Modules/BirthdaySettings';\r\n\r\nexport class Settings extends Component {\r\n static displayName = Settings.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isReady: false,\r\n currentDisplay: null,\r\n isInitialized: false,\r\n initializationComponentArray: [],\r\n loggedInUser: null,\r\n isFormInitialized: false,\r\n isDocumentInitialized: false,\r\n isEventInitialized: false,\r\n isBlogInitialized: false,\r\n isNewsInitialized: false,\r\n isBirthdayInitialized: false\r\n };\r\n }\r\n\r\n settingsModules = [\r\n { key: 'FormSettings', name: 'Form', module: },\r\n { key: 'DocumentSettings', name: 'Document', module: },\r\n { key: 'EventSettings', name: 'Event', module: },\r\n { key: 'BlogSettings', name: 'Blog', module: },\r\n { key: 'NewsSettings', name: 'Newsletter', module: },\r\n { key: 'BirthdaySettings', name: 'Birthday', module: }\r\n ];\r\n\r\n allowModuleDisplay(modKey) {\r\n let allowDisplay = false;\r\n switch (modKey) {\r\n case 'FormSettings':\r\n allowDisplay = ((!this.state.isFormInitialized && this.state.loggedInUser.company != \"TracSoft\") ? false : true);\r\n break;\r\n case 'DocumentSettings':\r\n allowDisplay = ((!this.state.isDocumentInitialized && this.state.loggedInUser.company != \"TracSoft\") ? false : true);\r\n break;\r\n case 'EventSettings':\r\n allowDisplay = ((!this.state.isEventInitialized && this.state.loggedInUser.company != \"TracSoft\") ? false : true);\r\n break;\r\n case 'BlogSettings':\r\n allowDisplay = ((!this.state.isBlogInitialized && this.state.loggedInUser.company != \"TracSoft\") ? false : true);\r\n break;\r\n case 'NewsSettings':\r\n allowDisplay = ((!this.state.isNewsInitialized && this.state.loggedInUser.company != \"TracSoft\") ? false : true);\r\n break;\r\n case 'BirthdaySettings':\r\n allowDisplay = ((!this.state.isBirthdayInitialized && this.state.loggedInUser.company != \"TracSoft\") ? false : true);\r\n break;\r\n default:\r\n allowDisplay = false;\r\n break;\r\n }\r\n return allowDisplay;\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n setCurrentDisplay(componentToDisplay) {\r\n this.setState({\r\n currentDisplay: componentToDisplay\r\n });\r\n }\r\n\r\n submitInitialization() {\r\n const response = fetch('AdminSettings/InitializeSite', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n //const data = response.json();\r\n\r\n let selectedModules = [];\r\n let initializationModules = document.getElementsByClassName('initialization-module');\r\n for (var i = 0; i < initializationModules.length; i++) {\r\n if (initializationModules[i].checked) selectedModules.push(initializationModules[i].value);\r\n }\r\n\r\n this.setState({\r\n isInitialized: true,\r\n initializationComponentArray: selectedModules\r\n });\r\n }\r\n\r\n onComponentSaved() {\r\n let newInitializationComponentArray = this.state.initializationComponentArray;\r\n newInitializationComponentArray.shift();\r\n \r\n if (newInitializationComponentArray.length > 0) {\r\n this.setState({ initializationComponentArray: newInitializationComponentArray });\r\n }\r\n else {\r\n //this.setCurrentDisplay(this.baseSettingDisplay());\r\n window.location = '/Settings';\r\n }\r\n }\r\n\r\n /* Normal setting screen */\r\n baseSettingDisplay() {\r\n let modules = [];\r\n this.settingsModules.forEach((element, i) => {\r\n if (this.allowModuleDisplay(element.key)) {\r\n let key = 'module' + i;\r\n modules.push(\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n });\r\n\r\n let display =
    \r\n

    Select a module

    \r\n {modules}\r\n
    ;\r\n return display;\r\n }\r\n\r\n /* Initialization setting screen */\r\n initializationSettingDisplay() {\r\n let modules = [];\r\n this.settingsModules.forEach((element, i) => {\r\n if (this.allowModuleDisplay(element.key)) {\r\n let key = 'module' + i;\r\n modules.push(\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n });\r\n\r\n let display =
    \r\n

    Select all modules you want to initialize

    \r\n {modules}\r\n \r\n
    ;\r\n return display;\r\n }\r\n\r\n render() {\r\n let currentDisplay = this.state.currentDisplay;\r\n\r\n if (currentDisplay == null && this.state.isReady) {\r\n if (this.state.isInitialized) {\r\n if (this.state.initializationComponentArray.length == 0) {\r\n currentDisplay = this.baseSettingDisplay();\r\n }\r\n else {\r\n let componentKey = this.state.initializationComponentArray[0];\r\n this.settingsModules.forEach((element, i) => {\r\n if (this.allowModuleDisplay(element.key)) {\r\n if (element.key == componentKey) {\r\n currentDisplay = element.module;\r\n return false;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n else {\r\n currentDisplay = this.initializationSettingDisplay();\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n

    Settings

    \r\n {currentDisplay}\r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('AdminSettings/IsSiteInitialized', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n let isFormInitialized = await adminSettingsService.isFormInitialized();\r\n let isDocumentInitialized = await adminSettingsService.isDocumentInitialized();\r\n let isEventInitialized = await adminSettingsService.isEventInitialized();\r\n let isBlogInitialized = await adminSettingsService.isBlogInitialized();\r\n let isNewsInitialized = await adminSettingsService.isNewsInitialized();\r\n let isBirthdayInitialized = await adminSettingsService.isBirthdayInitialized();\r\n\r\n let loggedInUser = await getLoggedInUser();\r\n if (loggedInUser != null) loggedInUser = JSON.parse(loggedInUser);\r\n\r\n this.setState({\r\n isReady: true,\r\n isInitialized: data,\r\n loggedInUser: loggedInUser,\r\n isFormInitialized: isFormInitialized,\r\n isDocumentInitialized: isDocumentInitialized,\r\n isEventInitialized: isEventInitialized,\r\n isBlogInitialized: isBlogInitialized,\r\n isNewsInitialized: isNewsInitialized,\r\n isBirthdayInitialized: isBirthdayInitialized\r\n });\r\n }\r\n}\r\n","import React, { useState } from 'react';\r\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEllipsisV } from '@fortawesome/free-solid-svg-icons';\r\n\r\nfunction DnDNavbarTab(props) {\r\n const columnsFromBackend = {\r\n [uuid()]: {\r\n items: props.items\r\n }\r\n };\r\n\r\n const onDragEnd = (result, columns, setColumns) => {\r\n if (!result.destination) return;\r\n const { source, destination } = result;\r\n if (source.droppableId !== destination.droppableId) {//Between columns\r\n const sourceColumn = columns[source.droppableId];\r\n const destColumn = columns[destination.droppableId];\r\n const sourceItems = [...sourceColumn.items];\r\n const destItems = [...destColumn.items];\r\n const [removed] = sourceItems.splice(source.index, 1);\r\n destItems.splice(destination.index, 0, removed);\r\n setColumns({\r\n ...columns,\r\n [source.droppableId]: {\r\n ...sourceColumn,\r\n items: sourceItems\r\n },\r\n [destination.droppableId]: {\r\n ...destColumn,\r\n items: destItems\r\n }\r\n })\r\n }\r\n else {//Within column \r\n const column = columns[source.droppableId];\r\n const copiedItems = [...column.items];\r\n const [removed] = copiedItems.splice(source.index, 1);\r\n copiedItems.splice(destination.index, 0, removed);\r\n setColumns({\r\n ...columns,\r\n [source.droppableId]: {\r\n ...column,\r\n items: copiedItems\r\n }\r\n });\r\n\r\n props.itemOrderUpdate(copiedItems);\r\n }\r\n }\r\n\r\n const [columns, setColumns] = useState(columnsFromBackend);\r\n\r\n return (\r\n
    \r\n onDragEnd(result, columns, setColumns)}>\r\n {Object.entries(columns).map(([id, column]) => {\r\n return (\r\n
    \r\n
    \r\n \r\n {(provided, snapshot) => {\r\n return (\r\n \r\n {column.items.map((item, index) => {\r\n return (\r\n \r\n {(provided, snapshot) => {\r\n return (\r\n \r\n \r\n {item.content}\r\n
    \r\n )\r\n }}\r\n \r\n )\r\n })}\r\n {provided.placeholder}\r\n
    \r\n )\r\n }}\r\n \r\n
    \r\n \r\n )\r\n })}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default DnDNavbarTab;","import React, { Component } from 'react';\r\nimport './layoutmanagement.css';\r\nimport Cleave from 'cleave.js/react';\r\nimport CleavePhone from 'cleave.js/dist/addons/cleave-phone.us';\r\nimport TagsByInput from '../TagsAndChips/TagsByInput';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEdit } from '@fortawesome/free-solid-svg-icons';\r\nimport ImageGalleryField from '../../ImageGalleryField';\r\nimport HtmlEditorField from '../../HtmlEditorField';\r\nimport NavbarTabsManagement from './NavbarTabs/NavbarTabsManagement';\r\n\r\nexport class LayoutManagement extends Component {\r\n static displayName = LayoutManagement.name;\r\n adminVersionUpdateEmails = \"\";\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isReady: false,\r\n social: null,\r\n navbar: null,\r\n footer: null,\r\n //companyInformation: null\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleSocialChange = (e) => {\r\n let newSocial = this.state.social;\r\n newSocial[e.target.name] = e.target.value;\r\n this.setState({ social: newSocial });\r\n }\r\n\r\n //handleCompanyInfoChange = (e) => {\r\n // let newCompanyInfo = this.state.companyInformation;\r\n // newCompanyInfo[e.target.name] = e.target.value;\r\n // this.setState({ companyInformation: newCompanyInfo });\r\n //}\r\n\r\n handleNavbarChange = (e) => {\r\n let newNavbar = this.state.navbar;\r\n if (e.target.name === \"showContactInfo\" || e.target.name === \"showLoginLink\" || e.target.name === \"showSiteName\" || e.target.name == \"showSocialIcons\") {\r\n newNavbar[e.target.name] = e.target.checked ? true : false;\r\n }\r\n else if (e.target.name == \"socialId\") {\r\n newNavbar[e.target.name] = parseInt(e.target.value);\r\n }\r\n else {\r\n newNavbar[e.target.name] = e.target.value;\r\n }\r\n this.setState({ navbar: newNavbar });\r\n }\r\n\r\n handleFooterChange = (e) => {\r\n let newFooter = this.state.footer;\r\n if (e.target.name == \"socialId\") {\r\n newFooter[e.target.name] = parseInt(e.target.value);\r\n }\r\n else if (e.target.name === \"showPhone\" || e.target.name === \"showAddress\" || e.target.name == \"showLogo\") {\r\n newFooter[e.target.name] = e.target.checked ? true : false;\r\n }\r\n else {\r\n newFooter[e.target.name] = e.target.value;\r\n }\r\n this.setState({ footer: newFooter });\r\n }\r\n\r\n handleConfigurationChange = (e) => {\r\n let name = e.target.name;\r\n let value = e.target.value;\r\n\r\n this.adminVersionUpdateEmails = value;// Temp fix, state update not working\r\n }\r\n\r\n handleFooterEditorColumn1Change = (content) => {\r\n let newFooter = this.state.footer;\r\n newFooter['contentColumn1'] = content;\r\n this.setState({ footer: newFooter });\r\n }\r\n\r\n handleFooterEditorColumn2Change = (content) => {\r\n let newFooter = this.state.footer;\r\n newFooter['contentColumn2'] = content;\r\n this.setState({ footer: newFooter });\r\n }\r\n\r\n handleFooterEditorColumn3Change = (content) => {\r\n let newFooter = this.state.footer;\r\n newFooter['contentColumn3'] = content;\r\n this.setState({ footer: newFooter });\r\n }\r\n\r\n handleFooterEditorColumn4Change = (content) => {\r\n let newFooter = this.state.footer;\r\n newFooter['contentColumn4'] = content;\r\n this.setState({ footer: newFooter });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let social = this.state.social;\r\n let navbar = this.state.navbar;\r\n let footer = this.state.footer;\r\n let adminVersionUpdateEmails = this.adminVersionUpdateEmails;\r\n //let companyInformation = this.state.companyInformation;\r\n\r\n //console.log(adminVersionUpdateEmails);\r\n fetch('Admin/UpdateLayoutComponents', {\r\n method: 'POST',\r\n body: JSON.stringify({ Social: social, Navbar: navbar, Footer: footer, AdminVersionUpdateEmails: adminVersionUpdateEmails/*, CompanyInformation: companyInformation*/ }),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (data == \"Saved\") {\r\n window.location = '/PageComponentManagement';\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n //Social\r\n let facebookLink = null;\r\n let instagramLink = null;\r\n let twitterLink = null;\r\n let youtubeLink = null;\r\n let linkedinLink = null;\r\n let pinterestLink = null;\r\n let tumblrLink = null;\r\n let blogLink = null;\r\n if (this.state.social != null) {\r\n let social = this.state.social;\r\n facebookLink = social.facebookLink;\r\n instagramLink = social.instagramLink;\r\n twitterLink = social.twitterLink;\r\n youtubeLink = social.youtubeLink;\r\n linkedinLink = social.linkedinLink;\r\n pinterestLink = social.pinterestLink;\r\n tumblrLink = social.tumblrLink;\r\n blogLink = social.blogLink;\r\n }\r\n\r\n //CompanyInformation\r\n //let logoUrl = null;\r\n //let companyName = null;\r\n //let telephone = null;\r\n //let address = null;\r\n //if (this.state.companyInformation != null) {\r\n // let companyInfo = this.state.companyInformation;\r\n // logoUrl = companyInfo.logoUrl;\r\n // companyName = companyInfo.companyName;\r\n // telephone = companyInfo.telephone;\r\n // address = companyInfo.address;\r\n //}\r\n\r\n //Navbar\r\n let showContactInfo = false;\r\n let showLoginLink = false;\r\n let showSiteName = false;\r\n let siteName = null;\r\n let showSocialIcons = false;\r\n let logoUrl = null;\r\n let companyName = null;\r\n let telephone = null;\r\n let payBillLink = null;\r\n if (this.state.navbar != null) {\r\n let navbar = this.state.navbar;\r\n showContactInfo = navbar.showContactInfo;\r\n showLoginLink = navbar.showLoginLink;\r\n showSiteName = navbar.showSiteName;\r\n siteName = navbar.siteName;\r\n showSocialIcons = navbar.showSocialIcons;\r\n logoUrl = navbar.logoUrl;\r\n companyName = navbar.companyName;\r\n telephone = navbar.telephone;\r\n payBillLink = navbar.payBillLink;\r\n }\r\n\r\n //Footer\r\n let copyrightName = null;\r\n let showPhone = false;\r\n let showAddress = false;\r\n let showLogo = false;\r\n let contentColumn1 = null;\r\n let contentColumn2 = null;\r\n let contentColumn3 = null;\r\n let contentColumn4 = null;\r\n let privacyPolicyLink = null;\r\n if (this.state.footer != null) {\r\n let footer = this.state.footer;\r\n copyrightName = footer.copyrightName;\r\n showPhone = footer.showPhone;\r\n showAddress = footer.showAddress;\r\n showLogo = footer.showLogo;\r\n contentColumn1 = footer.contentColumn1;\r\n contentColumn2 = footer.contentColumn2;\r\n contentColumn3 = footer.contentColumn3;\r\n contentColumn4 = footer.contentColumn4;\r\n privacyPolicyLink = footer.privacyPolicyLink;\r\n }\r\n\r\n //Configurations\r\n let adminVersionUpdateEmails = this.adminVersionUpdateEmails;\r\n let adminVersionEmailsInput = this.state.isReady ?\r\n : \"\";\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Site Information

    \r\n
    \r\n\r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n {/*\r\n \r\n \r\n */}\r\n\r\n {/*\r\n \r\n
    \r\n \r\n
    \r\n */}\r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n {/*\r\n \r\n \r\n\r\n \r\n
    \r\n \r\n
    \r\n */}\r\n\r\n {/*\r\n \r\n
    \r\n \r\n
    \r\n */}\r\n\r\n {/*\r\n \r\n \r\n \r\n\r\n \r\n
    \r\n \r\n
    \r\n */}\r\n\r\n \r\n \r\n\r\n {/*\r\n \r\n
    \r\n \r\n
    \r\n */}\r\n\r\n {/*\r\n \r\n
    \r\n \r\n
    \r\n */}\r\n\r\n \r\n \r\n \r\n\r\n {/*\r\n \r\n
    \r\n \r\n
    \r\n */}\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
    \r\n \r\n \r\n \r\n {/**/}\r\n
    \r\n\r\n \r\n {adminVersionEmailsInput}\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('Admin/GetLayoutComponents', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.adminVersionUpdateEmails = data.adminVersionUpdateEmails;\r\n\r\n this.setState({\r\n isReady: true,\r\n social: data.social,\r\n navbar: data.navbar,\r\n footer: data.footer,\r\n //companyInformation: data.companyInformation\r\n });\r\n }\r\n}","import React, { Component } from 'react';\r\nimport './formform.css';\r\n\r\nexport class FormForm extends Component {\r\n static displayName = FormForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n form: null,\r\n formType: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n /* Manage form object changes */\r\n handleChange = (e) => {\r\n let newForm = this.state.form;\r\n if (e.target.name == 'columns') {\r\n newForm[e.target.name] = parseInt(e.target.value);\r\n }\r\n else if (e.target.name == 'includeConfirmationEmail') {\r\n newForm[e.target.name] = e.target.checked ? true : false;\r\n }\r\n else {\r\n newForm[e.target.name] = e.target.value;\r\n }\r\n this.setState({ form: newForm });\r\n }\r\n\r\n /* Manage the submit of the form object */\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let form = this.state.form;\r\n\r\n if (this.state.formType == \"Create\") {\r\n form.isActive = true;\r\n }\r\n\r\n let url = this.state.formType == \"Update\" ? \"UpdateForm\" : \"CreateForm\";\r\n fetch('AdminForms/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(form),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (this.state.formType == \"Update\") {\r\n alert(\"Form Updated\");\r\n this.props.onFormSaved();\r\n }\r\n else {\r\n window.location = '/FormBuilderManagement';\r\n }\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n )\r\n }\r\n\r\n render() {\r\n let name;\r\n let email;\r\n let columns;\r\n let successMessage;\r\n let includeConfirmationEmail = false;\r\n\r\n if (this.state.form != null) {\r\n let form = this.state.form;\r\n\r\n name = form.name;\r\n email = form.email;\r\n columns = form.columns;\r\n successMessage = form.successMessage;\r\n includeConfirmationEmail = form.includeConfirmationEmail;\r\n }\r\n\r\n let nameField = ;\r\n let emailField = ;\r\n\r\n //let columnsField = ;\r\n\r\n let formTypeClass = this.state.formType == 'Update' ? 'form-form-container form-form--update' : 'form-form-container';\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Form Details

    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n {nameField}\r\n\r\n \r\n {emailField}\r\n\r\n \r\n \r\n\r\n \r\n
    \r\n \r\n
    \r\n\r\n {/*\r\n \r\n { columnsField }\r\n */}\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let formId = (this.props.formId !== undefined) ? this.props.formId : 0;\r\n let formType = (this.props.formType != undefined) ? this.props.formType : 'Create';\r\n\r\n const formResponse = await fetch('AdminForms/GetForm?formId=' + formId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const formData = await formResponse.json();\r\n\r\n this.setState({\r\n form: formData,\r\n formType: formType\r\n });\r\n }\r\n}\r\n\r\nexport default FormForm;","import React, { Component } from 'react';\r\nimport './formfieldform.css';\r\nimport TagsByInput from '../TagsAndChips/TagsByInput';\r\n\r\nexport class FormFieldForm extends Component {\r\n static displayName = FormFieldForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n formField: null,\r\n form: null,\r\n formType: null\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newFormField = this.state.formField;\r\n let name = e.target.name;\r\n let value = e.target.value;\r\n\r\n //Update current field\r\n if (name == 'isRequired') {\r\n newFormField[name] = e.target.checked ? true : false;\r\n }\r\n else if (name == 'minLength' || name == 'maxLength') {\r\n newFormField[name] = (value != null && value != undefined && value != \"\") ? parseInt(value) : 0;\r\n }\r\n else {\r\n newFormField[name] = value;\r\n }\r\n\r\n //Update dependant fields\r\n if (name == 'fieldType') {\r\n if (value != 'input') {\r\n newFormField.inputType = null;\r\n }\r\n\r\n if (value != 'selectList') {\r\n newFormField.options = null;\r\n }\r\n\r\n if (value != 'input' && value != 'selectList' && value != 'email' && value != 'state') {\r\n newFormField.placeholder = null;\r\n }\r\n\r\n if (value != 'input' && value != 'selectList' && value != 'email' && value != 'phone' && value != 'state' && value != 'textarea' && value != 'fileUpload' && value != 'futureDatePicker') {\r\n newFormField.isRequired = false;\r\n }\r\n\r\n if (value != 'input') {\r\n newFormField.minLength = 0;\r\n newFormField.maxLength = 0;\r\n }\r\n }\r\n \r\n this.setState({ formField: newFormField });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let formField = this.state.formField;\r\n if (this.state.form != null) {\r\n //Update values for db\r\n formField.formId = this.state.form.id;\r\n\r\n let url = this.state.formType == \"Update\" ? \"UpdateFormField\" : \"CreateFormField\";\r\n fetch('AdminForms/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(formField),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n this.props.onFormFieldSaved();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n else {\r\n alert(\"Can not save without form.\");\r\n window.location = '/FormBuilderManagement';\r\n }\r\n }\r\n\r\n render() {\r\n let fieldType;\r\n let inputType;\r\n let order;\r\n let name;\r\n let placeholder;\r\n let isRequired;\r\n let minLength;\r\n let maxLength;\r\n let options;\r\n\r\n let isFormFieldSet = false;\r\n if (this.state.formField != null) {\r\n let formField = this.state.formField;\r\n\r\n fieldType = formField.fieldType;\r\n inputType = formField.inputType;\r\n order = formField.order;\r\n name = formField.name;\r\n placeholder = formField.placeholder;\r\n isRequired = formField.isRequired;\r\n minLength = formField.minLength;\r\n maxLength = formField.maxLength;\r\n options = formField.options;\r\n\r\n isFormFieldSet = true;\r\n }\r\n\r\n let fieldTypeField = <>\r\n \r\n \r\n ;\r\n\r\n let inputTypeField = (fieldType == 'input') ?\r\n <>\r\n \r\n \r\n : \"\";\r\n\r\n let nameField = <>\r\n \r\n \r\n ;\r\n\r\n let placeholderField = (fieldType == 'input' || fieldType == 'selectList' || fieldType == 'email' || fieldType == 'state') ?\r\n <>\r\n \r\n \r\n : \"\";\r\n\r\n let isRequiredField = (fieldType == 'input' || fieldType == 'selectList' || fieldType == 'phone' || fieldType == 'email' || fieldType == 'state' || fieldType == 'textarea' || fieldType == 'fileUpload' || fieldType == 'futureDatePicker') ?\r\n <>\r\n \r\n
    \r\n \r\n
    \r\n : false;\r\n\r\n let minLengthField = (fieldType == 'input') ?\r\n <>\r\n \r\n \r\n : \"\";\r\n\r\n let maxLengthField = (fieldType == 'input') ?\r\n <>\r\n \r\n \r\n : \"\";\r\n\r\n let optionsField = (isFormFieldSet && fieldType == 'selectList') ?\r\n <>\r\n \r\n {/**/}\r\n \r\n : \"\";\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {name} Field

    \r\n
    \r\n\r\n {nameField}\r\n\r\n {fieldTypeField}\r\n\r\n {inputTypeField}\r\n\r\n {placeholderField}\r\n\r\n {isRequiredField}\r\n\r\n {minLengthField}\r\n\r\n {maxLengthField}\r\n\r\n {optionsField}\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let formId = this.props.formId != undefined ? this.props.formId : 0;\r\n let formFieldId = this.props.formFieldId != undefined ? this.props.formFieldId : 0;\r\n let formType = this.props.formType != undefined ? this.props.formType : 'Create';\r\n\r\n //Get form field data\r\n const formFieldResponse = await fetch('AdminForms/GetFormField?formFieldId=' + formFieldId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const formFieldData = await formFieldResponse.json();\r\n\r\n //Get form data\r\n const formResponse = await fetch('AdminForms/GetForm?formId=' + formId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const formData = await formResponse.json();\r\n\r\n this.setState({\r\n formField: formFieldData,\r\n form: formData,\r\n formType: formType\r\n });\r\n }\r\n}\r\n\r\nexport default FormFieldForm;\r\n","import React, { useState } from 'react';\r\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEllipsisV } from '@fortawesome/free-solid-svg-icons';\r\n\r\nfunction DnDFieldeOrder(props) {\r\n const columnsFromBackend = {\r\n [uuid()]: {\r\n items: props.fields\r\n }\r\n };\r\n\r\n const onDragEnd = (result, columns, setColumns) => {\r\n if (!result.destination) return;\r\n const { source, destination } = result;\r\n if (source.droppableId !== destination.droppableId) {//Between columns\r\n const sourceColumn = columns[source.droppableId];\r\n const destColumn = columns[destination.droppableId];\r\n const sourceItems = [...sourceColumn.items];\r\n const destItems = [...destColumn.items];\r\n const [removed] = sourceItems.splice(source.index, 1);\r\n destItems.splice(destination.index, 0, removed);\r\n setColumns({\r\n ...columns,\r\n [source.droppableId]: {\r\n ...sourceColumn,\r\n items: sourceItems\r\n },\r\n [destination.droppableId]: {\r\n ...destColumn,\r\n items: destItems\r\n }\r\n })\r\n }\r\n else {//Within column \r\n const column = columns[source.droppableId];\r\n const copiedItems = [...column.items];\r\n const [removed] = copiedItems.splice(source.index, 1);\r\n copiedItems.splice(destination.index, 0, removed);\r\n setColumns({\r\n ...columns,\r\n [source.droppableId]: {\r\n ...column,\r\n items: copiedItems\r\n }\r\n });\r\n\r\n props.fieldOrderUpdate(copiedItems);\r\n }\r\n }\r\n\r\n const [columns, setColumns] = useState(columnsFromBackend);\r\n\r\n return (\r\n
    \r\n onDragEnd(result, columns, setColumns)}>\r\n {Object.entries(columns).map(([id, column]) => {\r\n return (\r\n
    \r\n \r\n \r\n {(provided, snapshot) => {\r\n return (\r\n \r\n {column.items.map((item, index) => {\r\n return (\r\n \r\n {(provided, snapshot) => {\r\n return (\r\n \r\n \r\n {item.content}\r\n
    \r\n )\r\n }}\r\n \r\n )\r\n })}\r\n {provided.placeholder}\r\n
    \r\n )\r\n }}\r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default DnDFieldeOrder;\r\n","import React, { Component } from 'react';\r\nimport './formbuilder.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEdit, faTrashAlt, faCheck, faTimes, faEllipsisV } from '@fortawesome/free-solid-svg-icons';\r\n\r\n// Sections of page\r\nimport FormForm from '../FormForm/FormForm';\r\nimport FormFieldForm from '../FormFieldForm/FormFieldForm';\r\nimport DnDFieldeOrder from './DnDFieldOrder';\r\n\r\nexport class FormBuilder extends Component {\r\n static displayName = FormBuilder.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n form: null,\r\n formFields: null,\r\n currentCenter: null,\r\n tempCurrentCenter: null,\r\n componentSelectionId: 0,\r\n resetRequired: false,\r\n columnTab: 'formDetails'\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n /* Handle changes when form is saved */\r\n async onFormSaved() {\r\n await this.setState({\r\n resetRequired: true,\r\n tempCurrentCenter: null\r\n });\r\n\r\n await this.getComponentData();\r\n }\r\n\r\n /* Handle changes when a form field is saved */\r\n async onFormFieldSaved() {\r\n await this.setState({\r\n resetRequired: true,\r\n tempCurrentCenter: null,\r\n currentCenter: null,\r\n componentSelectionId: null\r\n });\r\n\r\n await this.getComponentData();\r\n }\r\n\r\n /* Set the center to the FormField component form */\r\n getFieldComponentForm(fieldId, formId, formType) {\r\n let fieldForm = ;\r\n\r\n let componentSelectionId = fieldId > 0 ? fieldId : null;\r\n\r\n this.setState({\r\n resetRequired: true,\r\n componentSelectionId: componentSelectionId,\r\n currentCenter: null,\r\n tempCurrentCenter: fieldForm,\r\n columnTab: 'fieldDetails'\r\n });\r\n\r\n this.getComponentData();\r\n }\r\n\r\n /* Delete form field */\r\n async deleteFormFieldComponent(fieldId, fieldName) {\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete field '\" + fieldName + \"'?\");\r\n\r\n if (confirmDelete) {\r\n let id = parseInt(fieldId);\r\n const response = await fetch('AdminForms/DeleteFormFieldComponent?formFieldId=' + id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n await this.setState({\r\n resetRequired: true,\r\n tempCurrentCenter: null,\r\n currentCenter: null,\r\n });\r\n\r\n await this.getComponentData();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n\r\n /* Update the center so the same component with different data will display */\r\n resetCurrentCenter() {\r\n this.setState({\r\n currentCenter: this.state.tempCurrentCenter,\r\n tempCurrentCenter: null\r\n });\r\n }\r\n\r\n /* Update the order of fileds in the form */\r\n async fieldOrderUpdate(componentArray) {\r\n let componentIdsOrdered = [];\r\n for (var i = 0; i < componentArray.length; i++) {\r\n componentIdsOrdered.push(parseInt(componentArray[i].id));\r\n }\r\n \r\n const response = await fetch('AdminForms/UpdateFormFieldOrder', {\r\n method: 'POST',\r\n body: JSON.stringify({ \"FormFieldIds\": componentIdsOrdered }),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data != \"Saved\") {\r\n alert(data);\r\n }\r\n }\r\n\r\n /* Update the current tab */\r\n switchTab(tabName) {\r\n this.setState({\r\n columnTab: tabName,\r\n resetRequired: true\r\n });\r\n\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let form = this.state.form;\r\n let formFields = this.state.formFields;\r\n\r\n let formNameTitle;\r\n let formData;\r\n if (form != null) {\r\n formNameTitle =

    {form.name} Form Builder

    ;\r\n formData = ;\r\n }\r\n else {\r\n formNameTitle =

    Form Builder

    ;\r\n formData = \"\";\r\n }\r\n\r\n let formFieldData;\r\n let fields = [];\r\n if (formFields != null && form != null) {\r\n formFields.forEach((field, i) => {\r\n let key = 'associatedFields' + i;\r\n\r\n let isComponentSelected = (this.state.componentSelectionId == field.id) ? true : false;\r\n let currentComponentClasses = isComponentSelected ? \"current-component selected-component\" : \"current-component\";\r\n //console.log(field.name, currentComponentClasses);\r\n\r\n let currentField =
    \r\n \r\n
    \r\n {field.name}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    ;\r\n\r\n fields.push({ id: field.id.toString(), content: currentField });\r\n });\r\n }\r\n\r\n let fieldsDnD = !this.state.resetRequired ?\r\n : \"\";\r\n\r\n if (form != null) {\r\n formFieldData =
    \r\n

    Fields

    \r\n {fieldsDnD}\r\n
    \r\n
    ;\r\n }\r\n \r\n let managementData = this.state.currentCenter != null ?\r\n this.state.currentCenter :
    \r\n

     

    \r\n
    \r\n Use this area to update form fields.\r\n
    \r\n
    ;\r\n\r\n //Reset all columns\r\n if (this.state.resetRequired) {\r\n formFieldData = \"\";\r\n managementData = \"\";\r\n formData = \"\";\r\n }\r\n if (this.state.tempCurrentCenter != null) {\r\n this.resetCurrentCenter();\r\n }\r\n\r\n let tabData;\r\n if (this.state.columnTab == 'fieldDetails') {\r\n let fieldDetails =
    \r\n {managementData}\r\n
    ;\r\n tabData = fieldDetails;\r\n }\r\n else {\r\n let formDetails =
    \r\n {formData}\r\n
    ;\r\n tabData = formDetails;\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    {formNameTitle}
    \r\n\r\n
    \r\n {formFieldData}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n {tabData}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let formId = this.props.match.params.formId;\r\n\r\n //Get form data\r\n const formResponse = await fetch('AdminForms/GetForm?formId=' + formId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const formData = await formResponse.json();\r\n\r\n //Get form field data\r\n const associatedFormFieldResponse = await fetch('AdminForms/GetAssociatedFormFields?formId=' + formId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const associatedFormFieldData = await associatedFormFieldResponse.json();\r\n\r\n this.setState({\r\n form: formData,\r\n formFields: associatedFormFieldData,\r\n //currentCenter: null,\r\n resetRequired: false\r\n });\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\n\r\nexport class FormSubmissionsMassRange extends Component {\r\n static displayName = FormSubmissionsMassRange.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n formSubmissionMassRangeData: null,\r\n activationButtonClicked: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let formSubmissionMassRangeData = this.state.formSubmissionMassRangeData;\r\n\r\n formSubmissionMassRangeData[e.target.name] = e.target.value;\r\n\r\n //Handle result changes\r\n if (e.target.name == \"rangeOpt\") {\r\n formSubmissionMassRangeData.date2 = \"0001-01-01T00:00:00\";\r\n }\r\n\r\n this.setState({ formSubmissionMassRangeData: formSubmissionMassRangeData });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n if (this.state.activationButtonClicked == \"export\") {\r\n this.handleExport();\r\n }\r\n else if (this.state.activationButtonClicked == \"delete\") {\r\n this.handleDelete();\r\n }\r\n }\r\n\r\n handleExport() {\r\n let formSubmissionMassRangeData = this.state.formSubmissionMassRangeData;\r\n\r\n fetch('AdminForms/GetFormSubmissionExport', {\r\n method: 'POST',\r\n body: JSON.stringify(formSubmissionMassRangeData),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n let form = data.form;\r\n let submissionArrays = data.submissionArrays;\r\n\r\n //Export data\r\n let exportRangeName = formSubmissionMassRangeData.rangeOpt == \"between\" ? formSubmissionMassRangeData.rangeOpt + \"_\" + formSubmissionMassRangeData.date1 + \"_\" + formSubmissionMassRangeData.date2 :\r\n formSubmissionMassRangeData.rangeOpt + \"_\" + formSubmissionMassRangeData.date1\r\n let csvFileName = form.name + \"_\" + exportRangeName + \".csv\";\r\n let csvRows = [];\r\n for (var i = 0; i < submissionArrays.length; i++) {\r\n var submissionArray = submissionArrays[i];\r\n csvRows.push(submissionArray);\r\n }\r\n\r\n let csvContent = \"data:text/csv;charset=utf-8,\"\r\n + csvRows.map(e => e.join(\",\")).join(\"\\n\");\r\n\r\n var encodedUri = encodeURI(csvContent);\r\n var link = document.createElement(\"a\");\r\n link.setAttribute(\"href\", encodedUri);\r\n link.setAttribute(\"download\", csvFileName);\r\n document.body.appendChild(link);\r\n\r\n link.click();\r\n\r\n //this.getComponentData();\r\n }\r\n );\r\n }\r\n\r\n handleDelete() {\r\n let confirmWarning = window.confirm(\"Are you sure you want to delete the chosen range of for submissions?\");\r\n\r\n if (confirmWarning) {\r\n let formSubmissionMassRangeData = this.state.formSubmissionMassRangeData;\r\n\r\n fetch('AdminForms/DeleteFormSubmissionsByDateRange', {\r\n method: 'POST',\r\n body: JSON.stringify(formSubmissionMassRangeData),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (data == \"Deleted\") {\r\n alert(\"Form Submissions Deleted\");\r\n window.location = \"/FormBuilderSubmissions/\" + this.props.formId;\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n render() {\r\n let rangeOpt;\r\n let date1Format;\r\n let date2Format;\r\n\r\n let date2Field =
    ;\r\n\r\n if (this.state.formSubmissionMassRangeData != null) {\r\n let formSubmissionMassRangeData = this.state.formSubmissionMassRangeData;\r\n rangeOpt = formSubmissionMassRangeData.rangeOpt;\r\n\r\n let date1Raw = new Date(formSubmissionMassRangeData.date1);\r\n let date1Year = date1Raw.getFullYear();\r\n let date1Month = (date1Raw.getMonth() + 1).toString().length === 1 ? '0' + (date1Raw.getMonth() + 1).toString() : date1Raw.getMonth() + 1;\r\n let date1Date = date1Raw.getDate().toString().length === 1 ? '0' + (date1Raw.getDate()).toString() : date1Raw.getDate();\r\n\r\n date1Format = date1Year + '-' + date1Month + '-' + date1Date;\r\n\r\n let date2Raw = new Date(formSubmissionMassRangeData.date2);\r\n let date2Year = date2Raw.getFullYear();\r\n let date2Month = (date2Raw.getMonth() + 1).toString().length === 1 ? '0' + (date2Raw.getMonth() + 1).toString() : date2Raw.getMonth() + 1;\r\n let date2Date = date2Raw.getDate().toString().length === 1 ? '0' + (date2Raw.getDate()).toString() : date2Raw.getDate();\r\n\r\n date2Format = date2Year + '-' + date2Month + '-' + date2Date;\r\n\r\n let date2MinRaw = new Date(formSubmissionMassRangeData.date1);\r\n date2MinRaw.setDate(date2MinRaw.getDate() + 2);\r\n let date2MinYear = date2MinRaw.getFullYear();\r\n let date2MinMonth = (date2MinRaw.getMonth() + 1).toString().length === 1 ? '0' + (date2MinRaw.getMonth() + 1).toString() : date2MinRaw.getMonth() + 1;\r\n let date2MinDate = date2MinRaw.getDate().toString().length === 1 ? '0' + (date2MinRaw.getDate()).toString() : date2MinRaw.getDate();\r\n\r\n let date2MinFormat = date2MinYear + '-' + date2MinMonth + '-' + date2MinDate;\r\n\r\n if (rangeOpt == \"between\") {\r\n date2Field =
    \r\n \r\n \r\n
    ;\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n {date2Field}\r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let formId = this.props.formId;\r\n const formResponse = await fetch('AdminForms/GetFormSubmissionMassRangeData?formId=' + formId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const formData = await formResponse.json();\r\n\r\n this.setState({\r\n formSubmissionMassRangeData: formData,\r\n activationButtonClicked: null\r\n });\r\n }\r\n}\r\n\r\nexport default FormSubmissionsMassRange;\r\n","import React, { Component } from 'react';\r\nimport './formbuildersubmissions.css';\r\nimport { MDBDataTable } from 'mdbreact';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faTrashAlt, faEye } from '@fortawesome/free-solid-svg-icons';\r\nimport { FormSubmissionsMassRange } from './FormSubmissionsMassRange';\r\n\r\nexport class FormBuilderSubmissions extends Component {\r\n static displayName = FormBuilderSubmissions.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n form: null,\r\n formFields: null,\r\n formSubmissionViewModels: null\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let formTitle;\r\n let maxDynamicColumns = 3;\r\n\r\n if (this.state.form != null) {\r\n let form = this.state.form;\r\n formTitle = form.name;\r\n }\r\n\r\n let tableRows = [];\r\n if (this.state.formSubmissionViewModels != null) {\r\n for (var i = 0; i < this.state.formSubmissionViewModels.length; i++) {\r\n let submissionVM = this.state.formSubmissionViewModels[i];\r\n let entitySet = {};\r\n\r\n entitySet['viewSubmission'] = ;\r\n\r\n var timestamp = new Date(submissionVM.formSubmission.timestamp);\r\n entitySet['timestamp'] = timestamp.toLocaleDateString() + \" \" + timestamp.toLocaleTimeString();\r\n\r\n for (var j = 0; j < submissionVM.formSubmissionPairs.length; j++) {\r\n let submissionPair = submissionVM.formSubmissionPairs[j];\r\n\r\n let fieldId = submissionPair.fieldId;\r\n let fieldName = submissionPair.fieldName;\r\n let fieldValue = (submissionPair.fieldValue != null && submissionPair.fieldValue != undefined && submissionPair.fieldValue.length > 30) ? submissionPair.fieldValue.substring(0, 30) : submissionPair.fieldValue;\r\n\r\n entitySet[fieldId] = fieldValue;\r\n }\r\n\r\n entitySet['deleteSubmission'] = ;\r\n\r\n tableRows.push(entitySet);\r\n }\r\n }\r\n\r\n let tableColumns = [];\r\n if (this.state.formFields != null) {\r\n let formFields = this.state.formFields;\r\n\r\n tableColumns.push({ label: '', field: 'viewSubmission' });\r\n tableColumns.push({ label: 'Timestamp', field: 'timestamp', sort: 'asc' });\r\n for (var i = 0; i < formFields.length; i++) {\r\n if (i > maxDynamicColumns - 1) break;//Limit columns\r\n\r\n let field = formFields[i];\r\n\r\n let fieldName = field.name;\r\n let fieldId = field.id;\r\n\r\n tableColumns.push({ label: fieldName, field: fieldId, sort: 'asc' });\r\n }\r\n tableColumns.push({ label: '', field: 'deleteSubmission' });\r\n }\r\n\r\n let table = {\r\n columns: tableColumns,\r\n rows: tableRows\r\n };\r\n\r\n let formSubmissionsMassRange = this.state.form != null ?\r\n : \"\";\r\n\r\n return (\r\n
    \r\n
    \r\n

    {formTitle} Submissions

    \r\n
    \r\n\r\n
    \r\n {formSubmissionsMassRange}\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let formId = this.props.match.params.formId;\r\n const formResponse = await fetch('AdminForms/GetFormSubmissionData?formId=' + formId, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const formData = await formResponse.json();\r\n\r\n this.setState({\r\n form: formData.form,\r\n formFields: formData.formFields,\r\n formSubmissionViewModels: formData.formSubmissionViewModels\r\n });\r\n }\r\n\r\n async deleteSubmission(submissionId) {\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete submission \" + submissionId + \"?\");\r\n\r\n if (confirmDelete) {\r\n let id = parseInt(submissionId);\r\n const response = await fetch('AdminForms/DeleteFormSubmission?submissionId=' + id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n this.getComponentData();\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport MetaTags from 'react-meta-tags';\r\nimport '../../Themes/theme.css';\r\nimport SideNav from '../../SideNav/SideNav';\r\n\r\n// Components\r\nimport { NavBar } from '../../NavBar/NavBar';\r\nimport { BannerContainer } from '../../BannerContainer/BannerContainer';\r\nimport { IconLinkContainer } from '../../IconLinkContainer/IconLinkContainer';\r\nimport { ColumnsTabContainer } from '../../ColumnsTabContainer/ColumnsTabContainer';\r\nimport { Accordion } from '../../Accordion/Accordion';\r\nimport { Footer } from '../../Footer/Footer';\r\nimport { Announcement } from '../../Announcement/Announcement';\r\nimport { HtmlEditor } from '../../HtmlEditor/HtmlEditor';\r\nimport { SocialIcons } from '../../SocialIcons/SocialIcons';\r\nimport { BigText5050 } from '../../BigText5050/BigText5050';\r\nimport { Grid5050 } from '../../Grid5050/Grid5050';\r\nimport { Contact5050 } from '../../Contact5050/Contact5050';\r\nimport { ActionButton } from '../../ActionButton/ActionButton';\r\nimport { HRSeparator } from '../../HRSeparator/HRSeparator';\r\nimport { SingleFeatures1 } from '../../Features1/SingleFeatures1';\r\nimport { Features1 } from '../../Features1/Features1';\r\nimport { Card } from '../../Card/Card';\r\nimport { CardContainer } from '../../CardContainer/CardContainer';\r\nimport { Calendar } from '../../Calendar/Calendar';\r\nimport { DocumentTable } from '../../DocumentTable/DocumentTable';\r\nimport { EventTable } from '../../EventTable/EventTable';\r\nimport { BlogTable } from '../../BlogTable/BlogTable';\r\nimport { BlogPreview } from '../../BlogPreview/BlogPreview';\r\nimport { NewsTable } from '../../NewsTable/NewsTable';\r\nimport { BirthdayTable } from '../../BirthdayTable/BirthdayTable';\r\nimport { SideContainer } from '../../SideContainer/SideContainer';\r\n\r\nconst components = {\r\n Navbar: NavBar,\r\n BannerContainer: BannerContainer,\r\n IconLinkContainer: IconLinkContainer,\r\n ColumnsTabContainer: ColumnsTabContainer,\r\n Accordion: Accordion,\r\n Footer: Footer,\r\n Announcement: Announcement,\r\n HtmlEditor: HtmlEditor,\r\n BigText5050: BigText5050,\r\n Grid5050: Grid5050,\r\n Contact5050: Contact5050,\r\n ActionButton: ActionButton,\r\n HRSeparator: HRSeparator,\r\n SingleFeatures1: SingleFeatures1,\r\n Features1: Features1,\r\n SocialIcons: SocialIcons,\r\n Card: Card,\r\n CardContainer: CardContainer,\r\n Calendar: Calendar,\r\n DocumentTable: DocumentTable,\r\n EventTable: EventTable,\r\n BlogTable: BlogTable,\r\n BlogPreview: BlogPreview,\r\n NewsTable: NewsTable,\r\n BirthdayTable: BirthdayTable,\r\n SideContainer: SideContainer\r\n};\r\n\r\nexport class PagePreview extends Component {\r\n static displayName = PagePreview.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n pageContent: null,\r\n page: null\r\n };\r\n\r\n this.pageId = props.match.params.pageId;\r\n this.versionId = props.match.params.versionId;\r\n }\r\n\r\n async componentDidMount() {\r\n this.getPageData();\r\n }\r\n\r\n generateComponents(data) {\r\n if (data != null) {\r\n var elements = [];\r\n var lastElementType = \"\";\r\n data.forEach((element, i) => {\r\n const newComponent = components[element.type];\r\n const newC = React.createElement(newComponent, { componentId: element.componentId, pageId: this.state.page.id, key: i });\r\n\r\n // Add component and side nav if applicable\r\n if (lastElementType == \"Navbar\" && this.state.page != null && this.state.page.sideNavId > 0) {\r\n let sideNav = ;\r\n let columnElement =
    \r\n {newC}\r\n\r\n {sideNav}\r\n
    ;\r\n elements.push(columnElement);\r\n }\r\n else {\r\n elements.push(newC);\r\n }\r\n\r\n // Add page header to each page that is not the home page\r\n if (element.type == \"Navbar\" && this.state.page.friendlyUrl != \"/\") {\r\n elements.push(

    {this.state.page.name}

    );\r\n }\r\n\r\n lastElementType = element.type;\r\n });\r\n //console.log(elements);\r\n return elements;\r\n }\r\n }\r\n\r\n render() {\r\n let pageContentData = this.state.pageContent;\r\n let page = this.state.page;\r\n\r\n let metaData;\r\n if (page != null) {\r\n metaData = \r\n {page.scoTitle}\r\n \r\n \r\n ;\r\n }\r\n\r\n return (\r\n
    \r\n {metaData}\r\n\r\n {this.generateComponents(pageContentData)}\r\n
    \r\n );\r\n }\r\n\r\n async getPageData() {\r\n let routeData = {\r\n PageId: parseInt(this.pageId),\r\n VersionId: parseInt(this.versionId)\r\n };\r\n console.log(routeData);\r\n const response = await fetch('Admin/GetPagePreview', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n },\r\n body: JSON.stringify(routeData)\r\n });\r\n\r\n const data = await response.json();\r\n //console.log(data);\r\n await this.setState({\r\n pageContent: data.pageComponents,\r\n page: data.page\r\n });\r\n }\r\n}\r\n\r\n","import React, { Component } from 'react';\r\nimport { getCompanyName, getUser, getEmptyUser, createUser, updateUserWithoutPwValidation } from '../../Authentication';\r\nimport Cleave from 'cleave.js/react';\r\nimport CleavePhone from 'cleave.js/dist/addons/cleave-phone.us';\r\nimport './userform.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons';\r\nimport { TagsBySelection } from '../TagsAndChips/TagsBySelection';\r\n\r\nexport class UserForm extends Component {\r\n static displayName = UserForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n companyName: null,\r\n userId: props.userId,\r\n user: null,\r\n formType: props.formType,\r\n isNewUserCompany: props.isNewUserCompany != undefined ? props.isNewUserCompany : false,\r\n roles: null,\r\n currentRoles: null\r\n }\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let name = e.target.name;\r\n let value = e.target.value;\r\n\r\n let newUser = this.state.user;\r\n if (name == \"phoneNumber\") {\r\n newUser[name] = (value != undefined && value != null && value != \"\") ? parseInt(value.replace(' ', '').replace(' ', '')) : 0;\r\n }\r\n else if (name == \"isLockedOut\") {\r\n newUser[name] = e.target.checked ? true : false;\r\n }\r\n else {\r\n newUser[name] = value;\r\n }\r\n\r\n this.setState({ user: newUser });\r\n }\r\n\r\n async handleSubmit(e) {\r\n e.preventDefault();\r\n\r\n let user = this.state.user;\r\n if (user.company == null || user.company == \"\" || user.company == undefined) user.company = this.state.companyName;\r\n\r\n if (this.state.formType == 'Create') {\r\n let result = await createUser(user);\r\n\r\n if (result == \"Created\") {\r\n window.location = '/UserManagement';\r\n }\r\n else {\r\n alert(result);\r\n }\r\n }\r\n else {\r\n let result = await updateUserWithoutPwValidation(user);\r\n\r\n if (result == \"Updated\") {\r\n window.location = '/UserManagement';\r\n }\r\n else {\r\n alert(result);\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n let firstName;\r\n let lastName;\r\n let email;\r\n let password;\r\n let access;\r\n let clientNumber;\r\n let company = this.state.companyName;\r\n let phoneNumber;\r\n let role;\r\n let lastChanged;\r\n let isLockedOut;\r\n let invalidAttempts;\r\n let relatedClients;\r\n\r\n if (this.state.user != null) {\r\n let user = this.state.user;\r\n firstName = user.firstName;\r\n lastName = user.lastName;\r\n email = user.email;\r\n password = user.password;\r\n access = user.access;\r\n clientNumber = user.clientNumber;\r\n company = user.company;\r\n phoneNumber = user.phoneNumber == 0 ? null : user.phoneNumber;\r\n role = user.role;\r\n lastChanged = user.lastChanged;\r\n isLockedOut = user.isLockedOut;\r\n invalidAttempts = user.invalidAttempts;\r\n relatedClients = user.relatedClients;\r\n }\r\n\r\n let passwordField = this.state.formType == 'Create' ?\r\n <>\r\n \r\n \r\n
    \r\n : \"\";\r\n\r\n let isLockedOutField = this.state.formType == 'Update' ?\r\n <>\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n : \"\";\r\n\r\n let invalidAttemptsField = this.state.formType == 'Update' ?\r\n <>\r\n \r\n \r\n
    \r\n : \"\";\r\n\r\n let accessField = this.state.isNewUserCompany || this.state.companyName == \"FileNFind\" ?\r\n <>\r\n \r\n \r\n
    \r\n : \"\";\r\n\r\n let companyField = this.state.isNewUserCompany ?\r\n <>\r\n \r\n \r\n
    \r\n : \"\";\r\n\r\n let clientNumberField = this.state.companyName == \"FileNFind\" ?\r\n <>\r\n \r\n \r\n
    \r\n : \"\";\r\n\r\n let roleInfoText = \"●Admin: Access to the entier site \\n\" +\r\n \"●Level4: Division in the company under admin with access to nearly the entier site \\n\"; \r\n //\"●Level3: Division in the company under Level4 and above Level2 \\n\" +\r\n //\"●Level2: Division in the company under Level3 and above Level1 \\n\" +\r\n //\"●Level1: Lowest level division within the company \\n\" +\r\n //\"●Client: Contractors with restricted access \\n\" +\r\n //\"●User: Extremely limited access\";\r\n \r\n let roleOptions;\r\n let roleField;\r\n let roleSelections;\r\n\r\n if (this.state.roles != null) {\r\n roleOptions = this.state.roles;\r\n roleSelections = this.state.currentRoles;\r\n\r\n console.log(roleOptions);\r\n\r\n let rolesKeyVal = [];\r\n if (roleSelections != null) {\r\n for (var i = 0; i < roleSelections.length; i++) {\r\n rolesKeyVal.push({ key: roleSelections[i], value: roleSelections[i] });\r\n }\r\n }\r\n\r\n let roleSelectionsKeyVal = [];\r\n for (var i = 0; i < roleOptions.length; i++) {\r\n roleSelectionsKeyVal.push({ key: roleOptions[i].name, value: roleOptions[i].name });\r\n }\r\n roleField = <>\r\n \r\n
    \r\n ;\r\n }\r\n\r\n let relatedClientsField = this.state.companyName == \"FileNFind\" ?\r\n <>\r\n \r\n \r\n
    \r\n : \"\";\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    User Management

    \r\n
    \r\n\r\n \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n\r\n {passwordField}\r\n\r\n {accessField}\r\n\r\n {clientNumberField}\r\n\r\n {companyField}\r\n\r\n {roleField}\r\n\r\n {isLockedOutField}\r\n\r\n {invalidAttemptsField}\r\n\r\n {relatedClientsField}\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getRoles() {\r\n const response = await fetch('RoleManagement/GetRoles', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n console.log(data);\r\n\r\n return data;\r\n }\r\n\r\n async getCurrentRole() {\r\n const response = await fetch('RoleManagement/GetRolesByUserId', {\r\n method: 'POST',\r\n body: this.state.userId,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n console.log(data);\r\n\r\n return data;\r\n }\r\n\r\n async getComponentData() {\r\n const companyName = await getCompanyName();\r\n const userString = this.state.userId > 0 ? await getUser(this.state.userId, companyName) : await getEmptyUser();\r\n const user = JSON.parse(userString);\r\n const roles = await this.getRoles();\r\n let currentRoles;\r\n if (this.state.formType != \"Create\") {\r\n currentRoles = await this.getCurrentRole();\r\n }\r\n else {\r\n currentRoles = null;\r\n }\r\n if (user == null) { // An error ocurred or the id and company do not match\r\n window.location = 'UserManagement';\r\n }\r\n else {\r\n this.setState({\r\n companyName: companyName,\r\n user: user,\r\n roles: roles,\r\n currentRoles: currentRoles\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default UserForm;","import React, { Component } from 'react';\r\nimport './documentupload.css';\r\nimport { getLoggedInUser } from \"../../Authentication\";\r\nimport TagsBySelection from '../TagsAndChips/TagsBySelection';\r\nimport TagsByInput from '../TagsAndChips/TagsByInput';\r\nimport { post } from 'axios';\r\n\r\nexport class DocumentUpload extends Component {\r\n static displayName = DocumentUpload.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n documentData: null,\r\n file: '',\r\n documentConfig: null,\r\n loggedInUser: null,\r\n formType: this.props.formType != undefined ? this.props.formType : 'Create'\r\n };\r\n\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n setFile(e) {\r\n this.setState({ file: e.target.files[0] });\r\n } \r\n\r\n handleChange = (e) => {\r\n let newDocument = this.state.documentData;\r\n newDocument[e.target.name] = e.target.value;\r\n this.setState({ documentData: newDocument });\r\n }\r\n\r\n async handleSubmit(e) {\r\n e.preventDefault();\r\n\r\n let document = this.state.documentData;\r\n\r\n if (this.state.formType == 'Create') {\r\n //Save file to public folder\r\n const url = `UploadFiles/UploadFile`;\r\n const formData = new FormData();\r\n formData.append('file', this.state.file);\r\n formData.append('folderName', \"Documents\");\r\n const config = {\r\n headers: {\r\n 'content-type': 'multipart/form-data',\r\n },\r\n };\r\n let response = await post(url, formData, config);\r\n\r\n let docLocation = response.data;//Get save location of doc\r\n document.location = docLocation;\r\n\r\n document.uploader = this.state.loggedInUser.email;\r\n document.timestamp = new Date();\r\n }\r\n\r\n let url = this.state.formType == \"Update\" ? \"UpdateDocument\" : \"CreateDocument\";\r\n fetch('AdminDocument/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(document),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (this.state.formType == \"Update\") {\r\n alert(\"Document Updated\");\r\n }\r\n else {\r\n window.location = '/DocumentManagement';\r\n }\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n )\r\n }\r\n\r\n render() {\r\n let typeField;\r\n if (this.state.documentConfig != null) {\r\n let documentDataType = this.state.documentData != null ? this.state.documentData.type : \"\";\r\n let documentConfig = this.state.documentConfig;\r\n\r\n let types = documentDataType != \"\" && documentDataType != null ? documentDataType.split(',') : [];\r\n let typeSelections = documentConfig.types.split(',');\r\n\r\n let typesKeyVal = [];\r\n for (var i = 0; i < types.length; i++) {\r\n typesKeyVal.push({ key: types[i], value: types[i] });\r\n }\r\n\r\n let typeSelectionsKeyVal = [];\r\n for (var i = 0; i < typeSelections.length; i++) {\r\n typeSelectionsKeyVal.push({ key: typeSelections[i], value: typeSelections[i] });\r\n }\r\n\r\n typeField = ;\r\n }\r\n\r\n let name;\r\n let descriptionField;\r\n if (this.state.documentData != null) {\r\n let doc = this.state.documentData;\r\n name = doc.name;\r\n\r\n descriptionField = ;\r\n }\r\n\r\n let documentField;\r\n if (this.state.formType == 'Create') {\r\n documentField = <>\r\n \r\n this.setFile(e)} className='input-file-field' required />\r\n
    \r\n ;\r\n }\r\n\r\n let viewDocButton;\r\n if (this.state.formType == 'Update') {\r\n if (this.state.documentData != null) {\r\n viewDocButton = View Document\r\n }\r\n }\r\n\r\n let deleteDocButton;\r\n let formBtnBuffer;\r\n if (this.state.formType == 'Update' && this.state.loggedInUser != null && this.state.loggedInUser.role == 'Admin' && this.state.documentData != null) {\r\n deleteDocButton =
    Delete
    ;\r\n formBtnBuffer =
    \r\n }\r\n\r\n let disabled = true;\r\n if (this.state.loggedInUser != null) {\r\n disabled = this.state.loggedInUser.role != \"Admin\";\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Document Upload

    \r\n
    \r\n\r\n
    \r\n
    \r\n {documentField}\r\n {viewDocButton}\r\n\r\n \r\n \r\n
    \r\n\r\n \r\n {typeField}\r\n
    \r\n\r\n \r\n {descriptionField}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n {formBtnBuffer}\r\n {deleteDocButton}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let documentId = this.props.documentId !== undefined ? this.props.documentId : 0;\r\n let loggedInUser = await getLoggedInUser();\r\n if (loggedInUser != null) loggedInUser = JSON.parse(loggedInUser);\r\n\r\n const response = await fetch('AdminDocument/GetDocumentData?documentId=' + documentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n documentData: data.document,\r\n documentConfig: data.documentConfig,\r\n loggedInUser: loggedInUser\r\n });\r\n }\r\n\r\n async deleteDocument(e) {\r\n e.preventDefault();\r\n\r\n let documentId = this.state.documentData.id;\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this document?\");\r\n\r\n if (confirmDelete) {\r\n let id = parseInt(documentId);\r\n const response = await fetch('AdminDocument/DeleteDocument?documentId=' + id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n window.location = '/DocumentManagement';\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default DocumentUpload;","import React, { Component } from 'react';\r\nimport DocumentUpload from './DocumentUpload';\r\n\r\nexport class UpdateDocument extends Component {\r\n static displayName = UpdateDocument.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n documentId: this.props.match.params.documentId\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport './eventmanagement.css';\r\nimport { MDBDataTable } from 'mdbreact';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEdit, faTrashAlt, faCheck, faTimes, faEye } from '@fortawesome/free-solid-svg-icons';\r\n\r\nexport class EventManagement extends Component {\r\n static displayName = EventManagement.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n events: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n formatDateTime(dateTime, includeTime) {\r\n let timestamp = new Date(dateTime.toString());\r\n\r\n let year = timestamp.getFullYear();\r\n let month = timestamp.getMonth().toString().length === 1 ? '0' + (timestamp.getMonth() + 1).toString() : timestamp.getMonth() + 1;\r\n let date = timestamp.getDate().toString().length === 1 ? '0' + (timestamp.getDate()).toString() : timestamp.getDate();\r\n let hours = timestamp.getHours().toString().length === 1 ? '0' + timestamp.getHours().toString() : timestamp.getHours();\r\n let midday = hours >= 12 ? \"PM\" : \"AM\";\r\n if (hours == 0) {\r\n hours = 12;\r\n }\r\n if (hours >= 13) {\r\n hours = hours - 12;\r\n if (hours.toString().length === 1) hours = '0' + hours;\r\n }\r\n let minutes = timestamp.getMinutes().toString().length === 1 ? '0' + timestamp.getMinutes().toString() : timestamp.getMinutes();\r\n\r\n\r\n let timestampFormat = includeTime ? \r\n (month + \"/\" + date + \"/\" + year + \" \" + hours + \":\" + minutes + \" \" + midday) :\r\n (month + \"/\" + date + \"/\" + year);\r\n\r\n return timestampFormat;\r\n }\r\n\r\n render() {\r\n let events = this.state.events;\r\n\r\n let tableRows = [];\r\n if (events.length > 0) {\r\n for (var i = 0; i < events.length; i++) {\r\n let event = events[i];\r\n\r\n let startTimeFormat = this.formatDateTime(event.startTime, true);\r\n let timestampFormat = this.formatDateTime(event.timestamp, false);\r\n\r\n let eventUrl = '/event/' + event.friendlyUrl;\r\n\r\n let row = {\r\n editEvent: ,\r\n title: event.title,\r\n url: eventUrl,\r\n types: event.types,\r\n startTime: startTimeFormat,\r\n //uploader: event.uploader,\r\n //timestamp: timestampFormat\r\n };\r\n tableRows.push(row);\r\n }\r\n }\r\n\r\n let table = {\r\n columns: [\r\n { label: '', field: 'editEvent' },\r\n { label: 'Title', field: 'title', sort: 'asc' },\r\n { label: 'Url', field: 'url', sort: 'asc' },\r\n { label: 'Types', field: 'types', sort: 'asc' },\r\n { label: 'Start Time', field: 'startTime', sort: 'asc' },\r\n //{ label: 'Uploader', field: 'uploader', sort: 'asc' },\r\n //{ label: 'Timestamp', field: 'timestamp', sort: 'asc' }\r\n ],\r\n rows: tableRows\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    Event Management

    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('AdminEvent/GetEvents', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n events: data\r\n });\r\n }\r\n}","import React, { Component } from 'react';\r\nimport './eventform.css';\r\nimport { getLoggedInUser } from \"../../Authentication\";\r\nimport TagsBySelection from '../TagsAndChips/TagsBySelection';\r\nimport ImageGalleryField from '../../ImageGalleryField';\r\nimport HtmlEditorField from '../../HtmlEditorField';\r\n\r\nexport class EventForm extends Component {\r\n static displayName = EventForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n event: null,\r\n eventConfiguration: null,\r\n loggedInUser: null,\r\n formType: this.props.formType != undefined ? this.props.formType : 'Create'\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newEvent = this.state.event;\r\n newEvent[e.target.name] = e.target.value;\r\n this.setState({ event: newEvent });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let event = this.state.event;\r\n\r\n if (this.state.formType == \"Create\") {\r\n event.uploader = this.state.loggedInUser.email;\r\n event.timestamp = new Date();\r\n }\r\n\r\n let url = this.state.formType == \"Update\" ? \"UpdateEvent\" : \"CreateEvent\";\r\n fetch('AdminEvent/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(event),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (this.state.formType == \"Update\") {\r\n alert(\"Event Updated\");\r\n }\r\n else {\r\n window.location = '/EventManagement';\r\n }\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n )\r\n }\r\n\r\n /* Limit the url key input. */\r\n validateUrlInput = (e) => {\r\n if ((e.which !== 32) //Space\r\n && ((e.which >= 37 && e.which <= 40) //Arrow keys\r\n || (e.key === \"Backspace\")\r\n || (e.key === \"-\")\r\n || (e.key >= 0 && e.key <= 9)\r\n || (e.key >= \"a\" && e.key <= \"z\"))) {\r\n //allow input\r\n }\r\n else {\r\n e.preventDefault();\r\n return false;\r\n }\r\n }\r\n\r\n render() {\r\n let typesField;\r\n if (this.state.eventConfiguration != null) {\r\n let eventType = this.state.event != null ? this.state.event.types : \"\";\r\n let eventConfiguration = this.state.eventConfiguration;\r\n\r\n let types = eventType != \"\" && eventType != null ? eventType.split(',') : [];\r\n let typeSelections = eventConfiguration.types.split(',');\r\n\r\n let typesKeyVal = [];\r\n for (var i = 0; i < types.length; i++) {\r\n typesKeyVal.push({ key: types[i], value: types[i] });\r\n }\r\n\r\n let typeSelectionsKeyVal = [];\r\n for (var i = 0; i < typeSelections.length; i++) {\r\n typeSelectionsKeyVal.push({ key: typeSelections[i], value: typeSelections[i] });\r\n }\r\n\r\n typesField = ;\r\n }\r\n\r\n let thumbnailImage;\r\n let mainImage;\r\n let title;\r\n let description;\r\n let startTime;\r\n let friendlyUrl;\r\n if (this.state.event != null) {\r\n let event = this.state.event;\r\n\r\n thumbnailImage = event.thumbnailImage;\r\n mainImage = event.mainImage;\r\n title = event.title;\r\n description = event.description;\r\n startTime = event.startTime;\r\n friendlyUrl = event.friendlyUrl;\r\n }\r\n\r\n //Get time info\r\n let now = new Date();\r\n let year = now.getFullYear();\r\n let month = now.getMonth().toString().length === 1 ? '0' + (now.getMonth() + 1).toString() : now.getMonth() + 1;\r\n let date = now.getDate().toString().length === 1 ? '0' + (now.getDate()).toString() : now.getDate();\r\n let hours = now.getHours().toString().length === 1 ? '0' + now.getHours().toString() : now.getHours();\r\n let minutes = now.getMinutes().toString().length === 1 ? '0' + now.getMinutes().toString() : now.getMinutes();\r\n let seconds = now.getSeconds().toString().length === 1 ? '0' + now.getSeconds().toString() : now.getSeconds();\r\n\r\n let startTimeMin = year + '-' + month + '-' + date + 'T' + hours + ':' + (minutes + 5);\r\n\r\n // If no date is set, set a default\r\n if (startTime != undefined && startTime.toString() == \"0001-01-01T00:00:00\") {\r\n startTime = year + '-' + month + '-' + date + 'T' + hours + ':' + minutes;\r\n }\r\n\r\n let deleteEventButton;\r\n let formBtnBuffer;\r\n if (this.state.formType == 'Update' && this.state.loggedInUser != null && this.state.loggedInUser.role == 'Admin' && this.state.event != null) {\r\n deleteEventButton =
    Delete
    ;\r\n formBtnBuffer =
    \r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    {this.state.formType} Event

    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n\r\n \r\n {/**/}\r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n\r\n \r\n {typesField}\r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n {formBtnBuffer}\r\n {deleteEventButton}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let eventId = this.props.eventId !== undefined ? this.props.eventId : 0;\r\n let loggedInUser = await getLoggedInUser();\r\n if (loggedInUser != null) loggedInUser = JSON.parse(loggedInUser);\r\n\r\n const response = await fetch('AdminEvent/GetEventData?eventId=' + eventId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n event: data.event,\r\n eventConfiguration: data.eventConfiguration,\r\n loggedInUser: loggedInUser\r\n });\r\n }\r\n\r\n async deleteEvent(e) {\r\n e.preventDefault();\r\n\r\n let eventId = this.state.event.id;\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this event?\");\r\n\r\n if (confirmDelete) {\r\n let id = parseInt(eventId);\r\n const response = await fetch('AdminEvent/DeleteEvent?eventId=' + id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n window.location = '/EventManagement';\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default EventForm;\r\n","import React, { Component } from 'react';\r\nimport EventForm from './EventForm';\r\n\r\nexport class CreateEvent extends Component {\r\n static displayName = CreateEvent.name;\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport EventForm from './EventForm';\r\n\r\nexport class UpdateEvent extends Component {\r\n static displayName = UpdateEvent.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n eventId: this.props.match.params.eventId\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { CustomLayout } from '../CustomLayout/CustomLayout';\r\nimport { StaticBreadcrumb } from '../Breadcrumb/StaticBreadcrumb';\r\n\r\nexport class Event extends Component {\r\n static displayName = Event.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n event: null,\r\n eventConfiguration: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n formatDateTime(dateTime, includeTime, isTextFormat) {\r\n let timestamp = new Date(dateTime.toString());\r\n\r\n let year = timestamp.getFullYear();\r\n let month = timestamp.getMonth().toString().length === 1 ? '0' + (timestamp.getMonth() + 1).toString() : timestamp.getMonth() + 1;\r\n let date = timestamp.getDate().toString().length === 1 ? '0' + (timestamp.getDate()).toString() : timestamp.getDate();\r\n let day = timestamp.getDay();\r\n let hours = timestamp.getHours().toString().length === 1 ? '0' + timestamp.getHours().toString() : timestamp.getHours();\r\n let midday = hours >= 12 ? \"PM\" : \"AM\";\r\n if (hours == 0) {\r\n hours = 12;\r\n }\r\n if (hours >= 13) {\r\n hours = hours - 12;\r\n if (hours.toString().length === 1) hours = '0' + hours;\r\n }\r\n let minutes = timestamp.getMinutes().toString().length === 1 ? '0' + timestamp.getMinutes().toString() : timestamp.getMinutes();\r\n\r\n var abvMonths = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\r\n var abvWeekDays = [\"Sun\", \"Mon\", \"Tues\", \"Wed\", \"Thur\", \"Fri\", \"Sat\"];\r\n\r\n let timestampFormat;\r\n if (isTextFormat) {\r\n timestampFormat = includeTime ?\r\n (abvWeekDays[day] + \" \" + abvMonths[month - 1] + \" \" + date + \", \" + year + \" \" + hours + \":\" + minutes + \" \" + midday) :\r\n (abvWeekDays[day] + \" \" + abvMonths[month - 1] + \" \" + date + \", \" + year);\r\n }\r\n else {\r\n timestampFormat = includeTime ?\r\n (month + \"/\" + date + \"/\" + year + \" \" + hours + \":\" + minutes + \" \" + midday) :\r\n (month + \"/\" + date + \"/\" + year);\r\n }\r\n\r\n return timestampFormat;\r\n }\r\n\r\n render() {\r\n let mainImage;\r\n let title;\r\n let description;\r\n let startTime;\r\n\r\n if (this.state.event != null && this.state.eventConfiguration != null) {\r\n let event = this.state.event;\r\n let eventConfiguration = this.state.eventConfiguration;\r\n mainImage = (event.mainImage != null && event.mainImage != \"\" && event.mainImage != undefined) ? \"event : \"\";\r\n title = event.title;\r\n description = event.description;\r\n startTime = this.formatDateTime(event.startTime, true, true);\r\n }\r\n\r\n let staticBreadcrumbContent = EVENTS /;\r\n\r\n return (\r\n \r\n \r\n\r\n
    \r\n
    {title}
    \r\n
    {startTime}
    \r\n\r\n {mainImage}\r\n
    \r\n {/*
    {description}
    */}\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let friendlyUrl = this.props.match.params.eventFriendlyUrl;\r\n\r\n const response = await fetch('components/GetEvent?friendlyUrl=' + friendlyUrl, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n event: data.event,\r\n eventConfiguration: data.eventConfiguration\r\n });\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\n\r\nexport class StaticBreadcrumb extends Component {\r\n static displayName = StaticBreadcrumb.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n\r\n };\r\n }\r\n\r\n render() {\r\n let content = this.props.content;\r\n\r\n return (\r\n
    \r\n
    \r\n {content}\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default StaticBreadcrumb;\r\n","import React, { Component } from 'react';\r\nimport { MDBDataTable } from 'mdbreact';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEdit, faTrashAlt, faCheck, faTimes, faEye } from '@fortawesome/free-solid-svg-icons';\r\nimport './blogmanagement.css';\r\n\r\nexport class BlogManagement extends Component {\r\n static displayName = BlogManagement.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n blogs: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n formatDateTime(dateTime, includeTime, isTextFormat) {\r\n let timestamp = new Date(dateTime.toString());\r\n\r\n let year = timestamp.getFullYear();\r\n let month = timestamp.getMonth().toString().length === 1 ? '0' + (timestamp.getMonth() + 1).toString() : timestamp.getMonth() + 1;\r\n let date = timestamp.getDate().toString().length === 1 ? '0' + (timestamp.getDate()).toString() : timestamp.getDate();\r\n let day = timestamp.getDay();\r\n let hours = timestamp.getHours().toString().length === 1 ? '0' + timestamp.getHours().toString() : timestamp.getHours();\r\n let midday = hours >= 12 ? \"PM\" : \"AM\";\r\n if (hours == 0) {\r\n hours = 12;\r\n }\r\n if (hours >= 13) {\r\n hours = hours - 12;\r\n if (hours.toString().length === 1) hours = '0' + hours;\r\n }\r\n let minutes = timestamp.getMinutes().toString().length === 1 ? '0' + timestamp.getMinutes().toString() : timestamp.getMinutes();\r\n\r\n var abvMonths = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\r\n var abvWeekDays = [\"Sun\", \"Mon\", \"Tues\", \"Wed\", \"Thur\", \"Fri\", \"Sat\"];\r\n\r\n let timestampFormat;\r\n if (isTextFormat) {\r\n timestampFormat = includeTime ?\r\n (abvWeekDays[day] + \", \" + abvMonths[month - 1] + \" \" + date + \", \" + year + \" \" + hours + \":\" + minutes + \" \" + midday) :\r\n (abvWeekDays[day] + \", \" + abvMonths[month - 1] + \" \" + date + \", \" + year);\r\n }\r\n else {\r\n timestampFormat = includeTime ?\r\n (month + \"/\" + date + \"/\" + year + \" \" + hours + \":\" + minutes + \" \" + midday) :\r\n (month + \"/\" + date + \"/\" + year);\r\n }\r\n\r\n return timestampFormat;\r\n }\r\n\r\n render() {\r\n let blogs = this.state.blogs;\r\n\r\n let tableRows = [];\r\n if (blogs.length > 0) {\r\n for (var i = 0; i < blogs.length; i++) {\r\n let blog = blogs[i];\r\n\r\n let timestampFormat = this.formatDateTime(blog.timestamp, false, true);\r\n\r\n let blogUrl = '/blog/' + blog.friendlyUrl;\r\n\r\n let editIcon = blog.status == \"Live\" ?\r\n :\r\n ;\r\n\r\n let row = {\r\n editBlog: editIcon,\r\n title: blog.title,\r\n //teaser: blog.teaser,\r\n url: blogUrl,\r\n types: blog.types,\r\n //uploader: blog.uploaderEmail,\r\n status: blog.status,\r\n timestamp: timestampFormat\r\n };\r\n tableRows.push(row);\r\n }\r\n }\r\n\r\n let table = {\r\n columns: [\r\n { label: '', field: 'editBlog' },\r\n { label: 'Title', field: 'title', sort: 'asc' },\r\n //{ label: 'Teaser', field: 'teaser', sort: 'asc' },\r\n { label: 'Url', field: 'url', sort: 'asc' },\r\n { label: 'Types', field: 'types', sort: 'asc' },\r\n //{ label: 'Uploader', field: 'uploader', sort: 'asc' },\r\n { label: 'Status', field: 'status', sort: 'asc' },\r\n { label: 'Timestamp', field: 'timestamp', sort: 'asc' }\r\n ],\r\n rows: tableRows\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    Blog Management

    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('AdminBlog/GetBlogs', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n blogs: data\r\n });\r\n }\r\n}","import React, { Component } from 'react';\r\nimport './blogform.css';\r\nimport { getLoggedInUser } from '../../Authentication';\r\nimport TagsBySelection from '../TagsAndChips/TagsBySelection';\r\nimport TagsByInput from '../TagsAndChips/TagsByInput';\r\nimport HtmlEditorField from '../../HtmlEditorField';\r\nimport ImageGalleryField from '../../ImageGalleryField';\r\n\r\nexport class BlogForm extends Component {\r\n static displayName = BlogForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n blog: null,\r\n blogConfiguration: null,\r\n loggedInUser: null,\r\n formType: this.props.formType != undefined ? this.props.formType : 'Create'\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newBlog = this.state.blog;\r\n\r\n newBlog[e.target.name] = e.target.value;\r\n\r\n this.setState({blog: newBlog});\r\n }\r\n\r\n handleEditorChange = (content) => {\r\n let newBlog = this.state.blog;\r\n newBlog['content'] = content;\r\n this.setState({ blog: newBlog });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let blog = this.state.blog;\r\n\r\n // If no timestamp, set to today\r\n if (blog.timestamp != undefined && blog.timestamp.toString() == \"0001-01-01T00:00:00\") {\r\n blog.timestamp = this.getDateFormat(new Date());\r\n }\r\n\r\n if (this.state.formType == \"Create\") {\r\n blog.status = \"Pending\";\r\n blog.uploaderEmail = this.state.loggedInUser.email;\r\n blog.uploaderFirstName = this.state.loggedInUser.firstName;\r\n blog.uploaderLastName = this.state.loggedInUser.lastName;\r\n blog.creationTimestamp = new Date();\r\n }\r\n else { //Update\r\n if (this.state.loggedInUser.role == \"Admin\") {\r\n if (blog.status == \"Live\") {\r\n blog.status = \"Pending\";\r\n }\r\n else {\r\n blog.status = \"Live\";\r\n }\r\n }\r\n }\r\n\r\n let url = this.state.formType == \"Update\" ? \"UpdateBlog\" : \"CreateBlog\";\r\n fetch('AdminBlog/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(blog),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (this.state.formType == \"Update\") {\r\n alert(\"Blog Updated\");\r\n window.location = '/UpdateBlog/' + blog.id;\r\n }\r\n else {\r\n window.location = '/BlogManagement';\r\n }\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n )\r\n }\r\n\r\n /* This should only be called by admin users and update formType */\r\n handleSubmitWithoutStatus = () => {\r\n let blog = this.state.blog;\r\n\r\n if (this.state.formType == \"Update\" && this.state.loggedInUser.role == \"Admin\") {\r\n let url = \"UpdateBlog\";\r\n fetch('AdminBlog/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(blog),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n alert(\"Blog Updated\");\r\n window.location = '/UpdateBlog/' + blog.id;\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n )\r\n }\r\n }\r\n\r\n /* Limit the url key input. */\r\n validateUrlInput = (e) => {\r\n if ((e.which !== 32) //Space\r\n && ((e.which >= 37 && e.which <= 40) //Arrow keys\r\n || (e.key === \"Backspace\")\r\n || (e.key === \"-\")\r\n || (e.key >= 0 && e.key <= 9)\r\n || (e.key >= \"a\" && e.key <= \"z\"))) {\r\n //allow input\r\n }\r\n else {\r\n e.preventDefault();\r\n return false;\r\n }\r\n }\r\n\r\n getDateFormat = (rawDate) => {\r\n let month = rawDate.getMonth().toString().length === 1 ? '0' + (rawDate.getMonth() + 1).toString() : rawDate.getMonth() + 1;\r\n let day = (rawDate.getDate()).toString().length === 1 ? '0' + (rawDate.getDate()).toString() : rawDate.getDate();\r\n let year = rawDate.getFullYear();\r\n\r\n let dateFormat = year + \"-\" + month + \"-\" + day;\r\n return dateFormat;\r\n }\r\n\r\n render() {\r\n let typesField;\r\n if (this.state.blogConfiguration != null) {\r\n let blogType = this.state.blog != null ? this.state.blog.types : \"\";\r\n let blogConfiguration = this.state.blogConfiguration;\r\n\r\n let types = blogType != \"\" && blogType != null ? blogType.split(',') : [];\r\n let typeSelections = blogConfiguration.types.split(',');\r\n\r\n let typesKeyVal = [];\r\n for (var i = 0; i < types.length; i++) {\r\n typesKeyVal.push({ key: types[i], value: types[i] });\r\n }\r\n\r\n let typeSelectionsKeyVal = [];\r\n for (var i = 0; i < typeSelections.length; i++) {\r\n typeSelectionsKeyVal.push({ key: typeSelections[i], value: typeSelections[i] });\r\n }\r\n\r\n let allowDelete = (this.state.formType == \"Update\" && this.state.blog != null && this.state.blog.status == \"Live\") ? false : true;\r\n if (this.state.loggedInUser != null && this.state.loggedInUser.role == \"Admin\") allowDelete = true;\r\n typesField = ;\r\n }\r\n\r\n let title;\r\n let content;\r\n let thumbnailImage;\r\n let teaser;\r\n let friendlyUrl;\r\n let categoriesField;\r\n let timestamp;\r\n if (this.state.blog != null) {\r\n let blog = this.state.blog;\r\n\r\n title = blog.title;\r\n content = blog.content;\r\n thumbnailImage = blog.thumbnailImage;\r\n teaser = blog.teaser;\r\n friendlyUrl = blog.friendlyUrl;\r\n timestamp = blog.timestamp;\r\n\r\n let allowDelete = (this.state.formType == \"Update\" && blog.status == \"Live\") ? false : true;\r\n if (this.state.loggedInUser != null && this.state.loggedInUser.role == \"Admin\") allowDelete = true;\r\n categoriesField = ;\r\n\r\n // If no timestamp, set as today, else get the format\r\n if (timestamp != undefined && timestamp.toString() == \"0001-01-01T00:00:00\") {\r\n timestamp = this.getDateFormat(new Date());\r\n }\r\n else {\r\n timestamp = this.getDateFormat(new Date(timestamp.toString()));\r\n }\r\n }\r\n\r\n let isImageGalleryFieldDisabled = false;\r\n let submitButtonText;\r\n let blogContainerClasses = \"blog-form-container\";\r\n let editorWrapper;\r\n if (this.state.loggedInUser != null && this.state.blog != null) {\r\n if (this.state.formType == 'Update') {\r\n if (this.state.loggedInUser.role == \"Admin\") {\r\n if (this.state.blog.status == \"Live\") {\r\n submitButtonText = \"Suspend\";\r\n //blogContainerClasses += \" disable-form disable-form--admin\";\r\n //editorWrapper = \"disable-editor\";\r\n isImageGalleryFieldDisabled = false;\r\n }\r\n else {\r\n submitButtonText = \"Publish\";\r\n }\r\n }\r\n else {\r\n submitButtonText = \"Save\";\r\n if (this.state.blog.status == \"Live\") {\r\n blogContainerClasses += \" disable-form\";\r\n editorWrapper = \"disable-editor\";\r\n isImageGalleryFieldDisabled = true;\r\n }\r\n }\r\n }\r\n else { //Create\r\n submitButtonText = \"Save\";\r\n }\r\n }\r\n\r\n let deleteButton;\r\n let saveWithoutStatusButton;\r\n let formBtnBuffer;\r\n if (this.state.formType == 'Update' && this.state.loggedInUser != null && this.state.loggedInUser.role == 'Admin' && this.state.blog != null) {\r\n deleteButton =
    Delete
    ;\r\n saveWithoutStatusButton =
    Save
    ;\r\n formBtnBuffer =
    ;\r\n }\r\n\r\n let blogStatusTitle = (this.state.formType == 'Update' && this.state.blog != null) ? \"(\" + this.state.blog.status + \")\" : \"\";\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    {this.state.formType} Blog {blogStatusTitle}

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n\r\n \r\n {typesField}\r\n
    \r\n\r\n \r\n {categoriesField}\r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n {formBtnBuffer}\r\n {saveWithoutStatusButton}\r\n {formBtnBuffer}\r\n {deleteButton}\r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let blogId = this.props.blogId !== undefined ? this.props.blogId : 0;\r\n let loggedInUser = await getLoggedInUser();\r\n if (loggedInUser != null) loggedInUser = JSON.parse(loggedInUser);\r\n\r\n const response = await fetch('AdminBlog/GetBlogData?blogId=' + blogId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n const data = await response.json();\r\n\r\n let blog = data.blog;\r\n\r\n this.setState({\r\n blog: blog,\r\n blogConfiguration: data.blogConfiguration,\r\n loggedInUser: loggedInUser\r\n });\r\n }\r\n\r\n async deleteBlog(e) {\r\n e.preventDefault();\r\n\r\n let blogId = this.state.blog.id;\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this blog?\");\r\n\r\n if (confirmDelete) {\r\n let id = parseInt(blogId);\r\n const response = await fetch('AdminBlog/DeleteBlog?blogId=' + id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n window.location = '/BlogManagement';\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default BlogForm;\r\n\r\n","import React, { Component } from 'react';\r\nimport { CustomLayout } from '../CustomLayout/CustomLayout';\r\nimport services from '../Services';\r\n\r\nexport class PreviewBlog extends Component {\r\n static displayName = PreviewBlog.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n blog: null,\r\n blogConfiguration: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n formatAuthor(blog) {\r\n let author = blog.uploaderFirstName + \" \" + blog.uploaderLastName;\r\n return author;\r\n }\r\n\r\n getDistinctBlogTags(blog) {\r\n let blogCategories = blog.categories != null && blog.categories != \"\" && blog.categories != undefined ? blog.categories.split(',') : [];\r\n let blogTypes = blog.types != null && blog.types != \"\" && blog.types != undefined ? blog.types.split(',') : [];\r\n let tags = blogCategories;\r\n blogTypes.forEach(tag => { if (!tags.includes(tag)) { tags.push(tag) } });\r\n\r\n return tags;\r\n }\r\n\r\n render() {\r\n let title;\r\n let timestamp;\r\n let author;\r\n let content;\r\n let tagsFormat = [];\r\n\r\n if (this.state.blog != null && this.state.blogConfiguration != null) {\r\n let blog = this.state.blog;\r\n let blogConfiguration = this.state.blogConfiguration;\r\n\r\n title = blog.title;\r\n timestamp = services.formatDateTime(blog.timestamp, false, true, true, true);\r\n author = this.formatAuthor(blog);\r\n content = blog.content;\r\n\r\n let tags = this.getDistinctBlogTags(blog);\r\n for (var i = 0; i < tags.length; i++) {\r\n tagsFormat.push(tags[i]);\r\n if (i + 1 < tags.length) {\r\n tagsFormat.push(\", \");\r\n }\r\n }\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    {title}
    \r\n
    {timestamp}
    \r\n\r\n
    \r\n\r\n
    {tagsFormat}
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let friendlyUrl = this.props.match.params.blogFriendlyUrl;\r\n\r\n const response = await fetch('components/GetBlog?friendlyUrl=' + friendlyUrl, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n blog: data.blog,\r\n blogConfiguration: data.blogConfiguration\r\n });\r\n }\r\n}","import React, { Component } from 'react';\r\nimport BlogForm from './BlogForm';\r\n\r\nexport class UpdateBlog extends Component {\r\n static displayName = UpdateBlog.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n blogId: this.props.match.params.blogId\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { CustomLayout } from '../CustomLayout/CustomLayout';\r\nimport { StaticBreadcrumb } from '../Breadcrumb/StaticBreadcrumb';\r\nimport services from '../Services';\r\nimport MetaTags from 'react-meta-tags';\r\n\r\nexport class Blog extends Component {\r\n static displayName = Blog.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n blog: null,\r\n blogConfiguration: null,\r\n otherBlogs: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n formatAuthor(blog) {\r\n let author = blog.uploaderFirstName + \" \" + blog.uploaderLastName;\r\n return author;\r\n }\r\n\r\n getDistinctBlogTags(blog) {\r\n let blogCategories = blog.categories != null && blog.categories != \"\" && blog.categories != undefined ? blog.categories.split(',') : [];\r\n let blogTypes = blog.types != null && blog.types != \"\" && blog.types != undefined ? blog.types.split(',') : [];\r\n let tags = blogCategories;\r\n blogTypes.forEach(tag => { if (!tags.includes(tag)) { tags.push(tag) } });\r\n\r\n return tags;\r\n }\r\n\r\n render() {\r\n let title;\r\n let timestamp;\r\n let author;\r\n let content;\r\n let tagsFormat = [];\r\n let metaData;\r\n \r\n if (this.state.blog != null && this.state.blog.status == \"Live\" && this.state.blogConfiguration != null) {\r\n let blog = this.state.blog;\r\n let blogConfiguration = this.state.blogConfiguration;\r\n\r\n title = blog.title;\r\n timestamp = services.formatDateTime(blog.timestamp, false, true, true, true);\r\n author = this.formatAuthor(blog);\r\n content = blog.content;\r\n\r\n let tags = this.getDistinctBlogTags(blog);\r\n for (var i = 0; i < tags.length; i++) {\r\n tagsFormat.push(tags[i]);\r\n if (i + 1 < tags.length) {\r\n tagsFormat.push(\", \");\r\n }\r\n }\r\n\r\n metaData = \r\n {title}\r\n \r\n \r\n ;\r\n }\r\n\r\n let staticBreadcrumbContent = BLOGS /;\r\n\r\n let otherblogSnippets = [];\r\n for (var i = 0; i < this.state.otherBlogs.length; i++) {\r\n let otherBlog = this.state.otherBlogs[i];\r\n\r\n let backImg = (otherBlog.thumbnailImage != null && otherBlog.thumbnailImage != \"\") ? otherBlog.thumbnailImage :\r\n (this.state.blogConfiguration != null && this.state.blogConfiguration.defaultImage != null && this.state.blogConfiguration.defaultImage != \"\") ? this.state.blogConfiguration.defaultImage : \"\";\r\n let timestamp = services.formatDateTime(otherBlog.timestamp, false, true, false, true);\r\n let title = otherBlog.title;\r\n let blogUrl = '/blog/' + otherBlog.friendlyUrl;\r\n\r\n let snippet = \r\n
    \r\n
    {timestamp}
    \r\n
    {title}
    \r\n
    \r\n
    ;\r\n otherblogSnippets.push(snippet);\r\n }\r\n\r\n return (\r\n \r\n {metaData}\r\n\r\n \r\n\r\n
    \r\n
    {title}
    \r\n
    {timestamp}
    \r\n\r\n
    \r\n\r\n
    {tagsFormat}
    \r\n\r\n
    \r\n
    More Recent Blogs
    \r\n\r\n
    \r\n {otherblogSnippets}\r\n
    \r\n\r\n
    \r\n See All\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let friendlyUrl = this.props.match.params.blogFriendlyUrl;\r\n\r\n const response = await fetch('components/GetBlog?friendlyUrl=' + friendlyUrl, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n blog: data.blog,\r\n blogConfiguration: data.blogConfiguration,\r\n otherBlogs: data.otherBlogs\r\n });\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { MDBDataTable } from 'mdbreact';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEdit, faTrashAlt, faCheck, faTimes, faEye } from '@fortawesome/free-solid-svg-icons';\r\nimport services from '../../Services';\r\n\r\nexport class NewsManagement extends Component {\r\n static displayName = NewsManagement.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n newsList: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let newsList = this.state.newsList;\r\n\r\n let tableRows = [];\r\n if (newsList.length > 0) {\r\n for (var i = 0; i < newsList.length; i++) {\r\n let news = newsList[i];\r\n\r\n let timestamp = new Date(news.timestamp.toString());\r\n let timestampFormat = services.formatDateTime(timestamp, true, false);\r\n\r\n let row = {\r\n editNews: ,\r\n title: news.title,\r\n type: news.types,\r\n description: news.description,\r\n //uploader: news.uploader,\r\n timestamp: timestampFormat\r\n };\r\n tableRows.push(row);\r\n }\r\n }\r\n\r\n let table = {\r\n columns: [\r\n { label: '', field: 'editNews' },\r\n { label: 'Title', field: 'title', sort: 'asc' },\r\n { label: 'Types', field: 'type', sort: 'asc' },\r\n { label: 'Description', field: 'description', sort: 'asc' },\r\n //{ label: 'Uploader', field: 'uploader', sort: 'asc' },\r\n { label: 'Timestamp', field: 'timestamp', sort: 'asc' }\r\n ],\r\n rows: tableRows\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    News Management

    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('AdminNews/GetNews', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n newsList: data\r\n });\r\n }\r\n}","import React, { Component } from 'react';\r\nimport './newsform.css';\r\nimport { getLoggedInUser } from \"../../Authentication\";\r\nimport TagsBySelection from '../TagsAndChips/TagsBySelection';\r\nimport TagsByInput from '../TagsAndChips/TagsByInput';\r\nimport { post } from 'axios';\r\nimport ImageGalleryField from '../../ImageGalleryField';\r\n\r\nexport class NewsForm extends Component {\r\n static displayName = NewsForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n news: null,\r\n newsConfiguration: null,\r\n file: '',\r\n loggedInUser: null,\r\n formType: this.props.formType != undefined ? this.props.formType : 'Create'\r\n };\r\n\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n setFile(e) {\r\n this.setState({ file: e.target.files[0] });\r\n }\r\n\r\n handleChange = (e) => {\r\n let newNews = this.state.news;\r\n newNews[e.target.name] = e.target.value;\r\n this.setState({ news: newNews });\r\n }\r\n\r\n async handleSubmit(e) {\r\n e.preventDefault();\r\n\r\n let news = this.state.news;\r\n\r\n if (this.state.formType == 'Create') {\r\n //Save file to public folder\r\n const url = `UploadFiles/UploadFile`;\r\n const formData = new FormData();\r\n formData.append('file', this.state.file);\r\n formData.append('folderName', \"News\");\r\n const config = {\r\n headers: {\r\n 'content-type': 'multipart/form-data',\r\n },\r\n };\r\n let response = await post(url, formData, config);\r\n\r\n let docLocation = response.data;//Get save location of doc\r\n news.location = docLocation;\r\n\r\n news.uploader = this.state.loggedInUser.email;\r\n news.timestamp = new Date();\r\n }\r\n\r\n let url = this.state.formType == \"Update\" ? \"UpdateNews\" : \"CreateNews\";\r\n fetch('AdminNews/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(news),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n if (this.state.formType == \"Update\") {\r\n alert(\"News Updated\");\r\n }\r\n else {\r\n window.location = '/NewsManagement';\r\n }\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n )\r\n }\r\n\r\n render() {\r\n let typeField;\r\n if (this.state.newsConfiguration != null) {\r\n let newsTypes = this.state.news != null ? this.state.news.types : \"\";\r\n let newsConfiguration = this.state.newsConfiguration;\r\n\r\n let types = newsTypes != \"\" && newsTypes != null ? newsTypes.split(',') : [];\r\n let typeSelections = newsConfiguration.types.split(',');\r\n\r\n let typesKeyVal = [];\r\n for (var i = 0; i < types.length; i++) {\r\n typesKeyVal.push({ key: types[i], value: types[i] });\r\n }\r\n\r\n let typeSelectionsKeyVal = [];\r\n for (var i = 0; i < typeSelections.length; i++) {\r\n typeSelectionsKeyVal.push({ key: typeSelections[i], value: typeSelections[i] });\r\n }\r\n\r\n typeField = ;\r\n }\r\n\r\n let title;\r\n let descriptionField;\r\n let thumbnailImage;\r\n let teaser;\r\n if (this.state.news != null) {\r\n let news = this.state.news;\r\n title = news.title;\r\n thumbnailImage = news.thumbnailImage;\r\n teaser = news.teaser;\r\n\r\n descriptionField = ;\r\n }\r\n\r\n let documentField;\r\n if (this.state.formType == 'Create') {\r\n documentField = <>\r\n \r\n this.setFile(e)} className='input-file-field' required />\r\n
    \r\n ;\r\n }\r\n\r\n let viewDocButton;\r\n if (this.state.formType == 'Update') {\r\n if (this.state.news != null) {\r\n viewDocButton = View Document\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    {this.state.formType} News

    \r\n
    \r\n\r\n
    \r\n
    \r\n {documentField}\r\n {viewDocButton}\r\n\r\n \r\n \r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n\r\n \r\n {typeField}\r\n
    \r\n\r\n \r\n {descriptionField}\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 async getComponentData() {\r\n let newsId = this.props.newsId !== undefined ? this.props.newsId : 0;\r\n let loggedInUser = await getLoggedInUser();\r\n if (loggedInUser != null) loggedInUser = JSON.parse(loggedInUser);\r\n\r\n const response = await fetch('AdminNews/GetNewsData?newsId=' + newsId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n news: data.news,\r\n newsConfiguration: data.newsConfiguration,\r\n loggedInUser: loggedInUser\r\n });\r\n }\r\n}\r\n\r\nexport default NewsForm;","import React, { Component } from 'react';\r\nimport NewsForm from './NewsForm';\r\n\r\nexport class UpdateNews extends Component {\r\n static displayName = UpdateNews.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n newsId: this.props.match.params.newsId\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport './birthdaymanagement.css';\r\nimport { post } from 'axios';\r\n\r\nexport class BirthdayManagement extends Component {\r\n static displayName = BirthdayManagement.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n file: '',\r\n hasFile: false\r\n };\r\n\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n setFile(e) {\r\n this.setState({ file: e.target.files[0] });\r\n }\r\n\r\n async handleSubmit(e) {\r\n e.preventDefault();\r\n\r\n //Save file to public folder\r\n const url = `UploadFiles/UploadOverwriteFile`;\r\n const formData = new FormData();\r\n formData.append('file', this.state.file);\r\n formData.append('folderName', \"Birthdays\");\r\n formData.append('fileName', \"Birthdays\");\r\n const config = {\r\n headers: {\r\n 'content-type': 'multipart/form-data',\r\n },\r\n };\r\n let response = await post(url, formData, config);\r\n\r\n let docLocation = response.data;//Get save location of doc\r\n \r\n window.location = '/BirthdayManagement';\r\n }\r\n\r\n render() {\r\n let documentField;\r\n \r\n documentField = <>\r\n \r\n this.setFile(e)} className='input-file-field' required />\r\n
    \r\n ;\r\n \r\n\r\n let viewDocButton;\r\n let saveBtnText = \"Upload\";\r\n if (this.state.hasFile) {\r\n viewDocButton = View Document;\r\n saveBtnText = \"Overwrite\";\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Birthday Management

    \r\n
    \r\n\r\n
    \r\n
    \r\n {viewDocButton}\r\n {documentField}\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let localFilePath = 'Birthdays/Birthdays.csv';\r\n const response = await fetch('UploadFiles/HasFile?localFilePath=' + localFilePath, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const hasFile = await response.json();\r\n\r\n this.setState({\r\n hasFile: hasFile\r\n });\r\n }\r\n}\r\n\r\nexport default BirthdayManagement;","import React, { Component, useState } from 'react';\r\nimport './imagemanagement.css';\r\nimport { MDBDataTable } from 'mdbreact';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEdit, faTrashAlt, faCheck, faTimes, faEye } from '@fortawesome/free-solid-svg-icons';\r\nimport { Input, Label, Button, Modal, ModalHeader, ModalBody, ModalFooter, Alert } from 'reactstrap';\r\nimport imageCompression from 'browser-image-compression';\r\nimport { getLoggedInUser } from '../../Authentication';\r\n\r\nexport class ImageManagement extends Component {\r\n static displayName = ImageManagement.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n modal: false,\r\n editModal: false,\r\n imagePreview: null,\r\n imageDescription: null,\r\n editImageDescription: null,\r\n imageBlob: null,\r\n images: null,\r\n search: null,\r\n height: null,\r\n width: null,\r\n preCompression: null,\r\n postCompression: null,\r\n compressionSavings: null,\r\n editImageUrl: null,\r\n editImageId: null,\r\n loggedInUser: null\r\n };\r\n\r\n this.toggle = this.toggle.bind(this);\r\n this.editToggle = this.editToggle.bind(this);\r\n this.handleImageUpload = this.handleImageUpload.bind(this);\r\n this.uploadImage = this.uploadImage.bind(this);\r\n this.handleImageDescriptionChange = this.handleImageDescriptionChange.bind(this);\r\n this.handleEditImageDescriptionChange = this.handleEditImageDescriptionChange.bind(this);\r\n this.loadImages = this.loadImages.bind(this);\r\n this.handleSearchChange = this.handleSearchChange.bind(this);\r\n this.onPreviewLoad = this.onPreviewLoad.bind(this);\r\n this.editImage = this.editImage.bind(this);\r\n this.deleteImage = this.deleteImage.bind(this);\r\n }\r\n\r\n onPreviewLoad(e) {\r\n var img = e.target;\r\n var height = img.naturalHeight;\r\n var width = img.naturalWidth;\r\n console.log(\"Height: \" + height + \" Width: \" + width);\r\n this.setState({\r\n height: height,\r\n width: width\r\n });\r\n }\r\n\r\n editToggle(e) {\r\n var idUndefined = e.id === undefined;\r\n if (!idUndefined) {\r\n this.setState({\r\n editModal: !this.state.editModal,\r\n editImageDescription: e.imageDescription,\r\n editImageUrl: \"images/\" + e.imageUrl,\r\n editImageId: e.id\r\n })\r\n }\r\n else {\r\n this.setState({\r\n editModal: !this.state.editModal,\r\n editImageDescription: null,\r\n editImageUrl: null,\r\n editImageId: null\r\n })\r\n }\r\n \r\n }\r\n\r\n async editImage(e) {\r\n await fetch(\"ImageUpload/EditImage\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n Id: this.state.editImageId,\r\n ImageDescription: this.state.editImageDescription\r\n })\r\n });\r\n this.editToggle(this);\r\n this.loadImages();\r\n }\r\n\r\n async deleteImage(e) {\r\n if (window.confirm(\"Are you sure you want to delete this image?\")) {\r\n await fetch(\"ImageUpload/DeleteImage\", {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n Id: this.state.editImageId,\r\n ImageDescription: this.state.editImageDescription\r\n })\r\n });\r\n this.editToggle(this);\r\n this.loadImages();\r\n }\r\n }\r\n\r\n toggle() {\r\n this.setState({\r\n modal: !this.state.modal,\r\n imagePreview: null,\r\n imageDescription: null,\r\n imageBlob: null,\r\n height: null,\r\n width: null,\r\n preCompression: null,\r\n postCompression: null,\r\n compressionSavings: null\r\n });\r\n }\r\n\r\n async uploadImage() {\r\n if (this.state.imagePreview == null) {\r\n alert(\"You must upload an image.\");\r\n return false;\r\n }\r\n else if (this.state.imageDescription == null) {\r\n alert(\"You must provide an image description.\");\r\n return false;\r\n }\r\n\r\n let imageName = this.state.imageBlob.name;\r\n if (imageName.includes(\";\") || imageName.includes(\"/\") || imageName.includes(\"?\") ||\r\n imageName.includes(\":\") || imageName.includes(\"@\") || imageName.includes(\"&\") ||\r\n imageName.includes(\"=\") || imageName.includes(\"+\") || imageName.includes(\"$\") || imageName.includes(\",\")) {\r\n\r\n alert('File name can not include the characters \";\" | \"/\" | \"?\" | \":\" | \"@\" | \"&\" | \"=\" | \"+\" | \"$\" | \",\"');\r\n return false;\r\n }\r\n\r\n const formData = new FormData();\r\n formData.append('ImageDescription', this.state.imageDescription);\r\n formData.append('Image', this.state.imageBlob);\r\n formData.append('ImageName', imageName);\r\n\r\n var response = await fetch('ImageUpload/ImageUpload',\r\n {\r\n method: 'POST',\r\n body: formData\r\n }\r\n );\r\n\r\n console.log(response);\r\n this.toggle();\r\n this.loadImages();\r\n }\r\n\r\n async loadImages() {\r\n var response = await fetch('ImageUpload/RetrieveAll', {\r\n method: 'POST'\r\n });\r\n var images = await response.json();\r\n this.setState({\r\n images: images\r\n });\r\n console.log(images);\r\n }\r\n\r\n handleImageDescriptionChange(e) {\r\n this.setState({\r\n imageDescription: e.target.value\r\n });\r\n }\r\n\r\n handleEditImageDescriptionChange(e) {\r\n this.setState({\r\n editImageDescription: e.target.value\r\n });\r\n }\r\n\r\n async handleSearchChange(e) {\r\n await this.setState({\r\n search: e.target.value\r\n });\r\n\r\n if (this.state.search != null) {\r\n if (this.state.search.length > 2) {\r\n this.setState({\r\n images: this.state.images.filter(u => u.imageDescription.toLowerCase().includes(this.state.search.toLowerCase()))\r\n });\r\n }\r\n else if (this.state.search == 0) {\r\n this.loadImages();\r\n }\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.images == null) {\r\n this.loadImages();\r\n }\r\n this.getComponentData();\r\n }\r\n\r\n async handleImageUpload(event) {\r\n const imageFile = event.target.files[0];\r\n console.log('originalFile instanceof Blob', imageFile instanceof Blob); // true\r\n console.log(`originalFile size ${imageFile.size / 1024 / 1024} MB`);\r\n console.log(imageFile);\r\n const options = {\r\n maxSizeMB: 1,\r\n maxWidthOrHeight: 1920,\r\n useWebWorker: true\r\n }\r\n try {\r\n const compressedFile = await imageCompression(imageFile, options);\r\n console.log('compressedFile instanceof Blob', compressedFile instanceof Blob); // true\r\n console.log(`compressedFile size ${compressedFile.size / 1024 / 1024} MB`); // smaller than maxSizeMB\r\n console.log(compressedFile);\r\n var preComp = (imageFile.size / 1024).toFixed(2);\r\n var postComp = (compressedFile.size / 1024).toFixed(2);\r\n this.setState({\r\n imageBlob: compressedFile,\r\n imagePreview: window.URL.createObjectURL(compressedFile),\r\n preCompression: `${preComp} KB`,\r\n postCompression: `${postComp} KB`,\r\n compressionSavings: `Saved ${(preComp - postComp).toFixed(2)} KB (${((preComp - postComp) / preComp * 100).toFixed(2)}%)`\r\n });\r\n\r\n //await uploadToServer(compressedFile); // write your own logic\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n }\r\n\r\n render() {\r\n let imagePreview = this.state.imagePreview != null ?

    : null;\r\n let imageStats;\r\n let imageTypes = null;\r\n let search;\r\n let images;\r\n let logoColor = this.state.height == 200 && this.state.width == 289 ? 'primary' : 'disabled';\r\n let slideshowColor = this.state.height == 388 && this.state.width == 701 ? 'primary' : 'disabled';\r\n\r\n if (imagePreview != null) {\r\n imageStats =

    Image Information
    Height: {this.state.height} Width : {this.state.width}
    Raw Image Size: {this.state.preCompression}
    Compressed Image Size: {this.state.postCompression}
    {this.state.compressionSavings}
    \r\n imageTypes =


    \r\n\r\n }\r\n\r\n if (this.state.images != null) {\r\n search = ;\r\n images = this.state.images.map(image => {\r\n var imgSrc = \"images/\" + image.imageUrl;\r\n return
    { this.editToggle(image) }}>
    {image.imageDescription}
    ;\r\n });\r\n }\r\n\r\n let imageField = this.state.imageBlob == null ?\r\n :\r\n ;\r\n\r\n let disabled = true;\r\n if (this.state.loggedInUser != null) {\r\n disabled = this.state.loggedInUser.role != \"Admin\";\r\n }\r\n\r\n return (\r\n
    \r\n

    Image Management
    \r\n \r\n

    \r\n \r\n Image Upload\r\n \r\n {imageField}\r\n
    \r\n {imageStats}\r\n {imagePreview}\r\n {imageTypes}\r\n
    \r\n \r\n \r\n
    \r\n \r\n {' '}\r\n \r\n \r\n
    \r\n \r\n Image Update\r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n {' '}\r\n {' '}\r\n \r\n \r\n
    \r\n {search}\r\n {images}\r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let loggedInUser = await getLoggedInUser();\r\n if (loggedInUser != null) loggedInUser = JSON.parse(loggedInUser);\r\n\r\n this.setState({\r\n loggedInUser: loggedInUser\r\n });\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { MDBDataTable } from 'mdbreact';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEdit, faTrashAlt, faCheck, faTimes, faEye } from '@fortawesome/free-solid-svg-icons';\r\nimport './sidenavmanagement.css';\r\n\r\nexport class SideNavManagement extends Component {\r\n static displayName = SideNavManagement.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n sideNavs: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n render() {\r\n let sideNavs = this.state.sideNavs;\r\n\r\n let tableRows = [];\r\n if (sideNavs.length > 0) {\r\n for (var i = 0; i < sideNavs.length; i++) {\r\n let sideNav = sideNavs[i];\r\n\r\n let row = {\r\n editSideNav: ,\r\n componentName: sideNav.componentName,\r\n deleteSideNav:

    \r\n };\r\n tableRows.push(row);\r\n }\r\n }\r\n\r\n let table = {\r\n columns: [\r\n { label: '', field: 'editSideNav' },\r\n { label: 'Name', field: 'componentName', sort: 'asc' },\r\n { label: '', field: 'deleteSideNav' }\r\n ],\r\n rows: tableRows\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    Side Nav Management

    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n const response = await fetch('AdminSideNav/GetSideNavs', {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n sideNavs: data\r\n });\r\n }\r\n\r\n async deleteSideNav(sideNavId) {\r\n let confirmDelete = window.confirm(\"Are you sure you want to delete this side nav?\");\r\n\r\n if (confirmDelete) {\r\n let id = parseInt(sideNavId);\r\n const response = await fetch('AdminSideNav/DeleteSideNav?id=' + id, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n if (data === \"Deleted\") {\r\n window.location = '/SideNavManagement';\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n }\r\n}","import React, { Component } from 'react';\r\nimport './sidenav.css';\r\nimport HtmlEditorField from '../../HtmlEditorField';\r\n\r\nexport class SideNavForm extends Component {\r\n static displayName = SideNavForm.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n sideNav: null,\r\n formType: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getComponentData();\r\n }\r\n\r\n handleChange = (e) => {\r\n let newSideNav = this.state.sideNav;\r\n newSideNav[e.target.name] = e.target.value;\r\n this.setState({ sideNav: newSideNav });\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n let sideNav = this.state.sideNav;\r\n\r\n let url = this.state.formType == \"Update\" ? \"UpdateSideNav\" : \"CreateSideNav\";\r\n fetch('AdminSideNav/' + url, {\r\n method: 'POST',\r\n body: JSON.stringify(sideNav),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n }).then(\r\n response => response.json()\r\n ).then(\r\n data => {\r\n if (!isNaN(data)) {\r\n alert(\"Saved\");\r\n window.location = '/SideNavManagement';\r\n }\r\n else {\r\n alert(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n let componentName;\r\n let content;\r\n\r\n if (this.state.sideNav != null) {\r\n let sideNav = this.state.sideNav;\r\n componentName = sideNav.componentName;\r\n content = sideNav.content;\r\n }\r\n\r\n console.log(componentName);\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    {this.state.formType} Side Nav

    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n async getComponentData() {\r\n let componentId = (this.props.componentId !== undefined) ? this.props.componentId : 0;\r\n let formType = this.props.formType !== undefined ? this.props.formType : 'Create';\r\n\r\n const response = await fetch('AdminSideNav/GetSideNav?componentId=' + componentId, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Accept': 'application/json'\r\n }\r\n });\r\n\r\n const data = await response.json();\r\n\r\n this.setState({\r\n sideNav: data,\r\n formType: formType\r\n });\r\n }\r\n}\r\n\r\nexport default SideNavForm;\r\n","import React, { Component } from 'react';\r\nimport SideNavForm from './SideNavForm';\r\n\r\nexport class CreateSideNav extends Component {\r\n static displayName = CreateSideNav.name;\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport SideNavForm from './SideNavForm';\r\n\r\nexport class UpdateSideNav extends Component {\r\n static displayName = UpdateSideNav.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n sideNavId: this.props.match.params.sideNavId\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Route, Switch } from 'react-router';\r\nimport AuthorizeAdminRoute from './components/api-authorization/AuthorizeAdminRoute';\r\nimport AuthorizeUserRoute from './components/api-authorization/AuthorizeUserRoute';\r\nimport { Layout } from './components/Layout';\r\nimport { PageComponentManagement } from './components/Admin/PageComponentManagement/PageComponentManagement';\r\nimport { CreatePage } from './components/Admin/PageForm/CreatePage/CreatePage';\r\nimport { UpdatePage } from './components/Admin/PageForm/UpdatePage/UpdatePage';\r\nimport { CreateExternalPage } from './components/Admin/PageForm/CreateExternalPage';\r\nimport { UpdateExternalPage } from './components/Admin/PageForm/UpdateExternalPage';\r\nimport { UpdatePageComponent } from './components/Admin/PageComponentForm/UpdatePageComponent/UpdatePageComponent';\r\nimport AuthorizeRoute from './components/api-authorization/AuthorizeRoute';\r\nimport ApiAuthorizationRoutes from './components/api-authorization/ApiAuthorizationRoutes';\r\nimport { ApplicationPaths } from './components/api-authorization/ApiAuthorizationConstants';\r\nimport './components/normalize.css';\r\nimport './components/Icons/css/all.css';\r\nimport './core.css';\r\nimport { Page } from './components/Pages';\r\nimport { AdminHome } from './components/Admin/AdminHome/AdminHome';\r\nimport { Login } from './components/Login/Login';\r\nimport { Settings } from './components/Admin/Settings/Settings';\r\nimport { LayoutManagement } from './components/Admin/LayoutManagement/LayoutManagement';\r\nimport { FormBuilderManagement } from './components/Admin/FormBuilderManagement/FormBuilderManagement';\r\nimport { CreateForm } from './components/Admin/FormForm/CreateForm';\r\nimport { FormBuilder } from './components/Admin/FormBuilder/FormBuilder';\r\nimport { FormBuilderSubmissions } from './components/Admin/FormBuilderSubmissions/FormBuilderSubmissions';\r\nimport { FormBuilderSingleSubmission } from './components/Admin/FormBuilderSingleSubmission/FormBuilderSingleSubmission';\r\nimport { TracSoftSettings } from './components/Admin/TracSoftSettings/TracSoftSettings';\r\nimport { PagePreview } from './components/Admin/PagePreview/PagePreview';\r\nimport { UserManagement } from './components/Admin/UserManagement/UserManagement';\r\nimport { RoleManagement } from './components/Admin/RoleManagement/RoleManagement';\r\nimport { CreateUser } from './components/Admin/UserForm/CreateUser';\r\nimport { UpdateUser } from './components/Admin/UserForm/UpdateUser';\r\nimport { DocumentManagement } from './components/Admin/DocumentManagement/DocumentManagement';\r\nimport { CreateDocument } from './components/Admin/DocumentUpload/CreateDocument';\r\nimport { UpdateDocument } from './components/Admin/DocumentUpload/UpdateDocument';\r\nimport { EventManagement } from './components/Admin/EventManagement/EventManagement';\r\nimport { CreateEvent } from './components/Admin/EventForm/CreateEvent';\r\nimport { UpdateEvent } from './components/Admin/EventForm/UpdateEvent';\r\nimport { Event } from './components/Event/Event';\r\nimport { BlogManagement } from './components/Admin/BlogManagement/BlogManagement';\r\nimport { CreateBlog } from './components/Admin/BlogForm/CreateBlog';\r\nimport { UpdateBlog } from './components/Admin/BlogForm/UpdateBlog';\r\nimport { Blog } from './components/Blog/Blog';\r\nimport { PreviewBlog } from './components/Blog/PreviewBlog';\r\nimport { NewsManagement } from './components/Admin/NewsManagement/NewsManagement';\r\nimport { CreateNews } from './components/Admin/NewsForm/CreateNews';\r\nimport { UpdateNews } from './components/Admin/NewsForm/UpdateNews';\r\nimport { BirthdayManagement } from './components/Admin/BirthdayManagement/BirthdayManagement';\r\nimport { ImageManagement } from './components/Admin/ImageManagement/ImageManagement';\r\nimport { SideNavManagement } from './components/Admin/SideNavManagement/SideNavManagement';\r\nimport { CreateSideNav } from './components/Admin/SideNavForm/CreateSideNav';\r\nimport { UpdateSideNav } from './components/Admin/SideNavForm/UpdateSideNav';\r\n\r\nexport default class App extends Component {\r\n static displayName = App.name;\r\n\r\n /*\r\n * ATTENTION\r\n * Hard coded url paths should be added to Models.GlobalComponents.HardCodedUrl.AllHardCodedUrls to avoid duplicate url creation with dynamic page creation \r\n */\r\n render () {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\n//import registerServiceWorker from './registerServiceWorker';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement);\r\n\r\n// Uncomment the line above that imports the registerServiceWorker function\r\n// and the line below to register the generated service worker.\r\n// By default create-react-app includes a service worker to improve the\r\n// performance of the application by caching static assets. This service\r\n// worker can interfere with the Identity UI, so it is\r\n// disabled by default when Identity is being used.\r\n//\r\n//registerServiceWorker();\r\n\r\n"],"sourceRoot":""}