{"version":3,"sources":["redux/Actions/Security/ActionTypes.tsx","components/Api/ApiAxios.tsx","components/Api/index.tsx","components/SecuredRoute/SecuredRoute.tsx","pages/Payables/Payables.tsx","redux/Actions/BreadCrumbs/ActionTypes.tsx","components/BreadCrumbs/BreadCrumbs.tsx","redux/Actions/BreadCrumbs/ActionCreators.tsx","components/404/404.tsx","pages/Search/DrawerGroupsAdmin/DrawerGroupsAdmin.tsx","pages/Search/Home/Home.tsx","utils/MenuItems.types.tsx","pages/Search/MenuAdmin/MenuAdmin.tsx","pages/Search/SearchTemplate/SearchTemplate.tsx","pages/Search/SearchSimple/SearchSimple.tsx","pages/Search/DocumentPreview/DocumentPreview.tsx","pages/Search/SearchResults/SearchResults.tsx","pages/Search/Tabs/Tabs.tsx","pages/Search/TemplateAdmin/TemplateAdmin.tsx","pages/Search/layout/Content/Content.tsx","pages/Search/layout/Header/Header.tsx","pages/Search/Search.tsx","Apps.tsx","components/Auth/Auth.tsx","components/Auth/ForgotNewPw/ForgotNewPw.tsx","components/Auth/ForgotPW/ForgotPW.tsx","components/Auth/Login/Login.tsx","redux/Actions/Security/ActionCreators.tsx","i18n.tsx","redux/Reducers/BreadCrumbs/Reducer.tsx","redux/Reducers/Security/Reducer.tsx","redux/Reducers/RootReducer.tsx","redux/Store/Store.tsx","registerServiceWorker.ts","index.tsx"],"names":["SecurityActionTypes","LoginMode","defaultOptions","process","Axios","defaults","baseURL","headers","common","Api","connect","state","ownProps","security","securityState","props","Component","component","others","render","token","Authorization","to","pathname","search","encodeURIComponent","location","Payables","isNull","bind","getUrl","className","this","handleResponse","selectionMode","SelectionMode","none","enableSearch","enableSort","height","value","undefined","items","page","sortBy","sortDesc","qValue","sortByValue","sortDescValue","url","console","log","React","withRouter","username","loginMode","BreadCrumbsActiontypes","BreadCrumbs","onBreadcrumbItemClicked","ev","item","key","history","push","forEach","onClick","Breadcrumb","styles","root","margin","breadCrumbsState","updateBreadCrumbs","param","type","UPDATE","payload","NotFound","click","text","isCurrentItem","Fabric","Spinner","size","SpinnerSize","large","label","ariaLive","dispatch","divStyle","fallbacks","DrawerGroupsAdmin","selection","getItems","name","t","iconProps","iconName","onNew","getFarItems","onDelete","params","match","drawerGroupId","showList","onCancel","onSubmitSuccess","onSubmitError","onCustomBuildColumns","onSelectionChanged","Selection","getKey","index","id","getSelection","prevProps","lastIdArray","exec","replace","lastId","getIdArray","setState","dir","style","padding","borderRight","CommandBar","farItems","ariaLabel","single","selectKeyOnInit","underlined","marginTop","exact","path","title","labelCmdBarBtnSave","labelCmdBarBtnEdit","labelCmdBarBtnCancel","labelValidationMessage","labelDrawerGroupsValidationMessage","labelFormName","labelFormSite","labelFormSitePlaceholder","labelFormDescription","labelFormMovableAvailable","labelFormMovableSelected","labelFormMovableProperty","baseUrl","renderToastContainer","fieldName","minWidth","maxWidth","isRowHeader","isResizable","isSorted","isSortedDescending","sortAscendingAriaLabel","sortDescendingAriaLabel","data","isPadded","length","setAllSelected","response","msg","message","successToast","error","errorObj","errorToast","delete","then","catch","status","withTranslation","Home","withViewport","textAlign","width","paddingTop","AnimationClassNames","fadeIn500","color","getTheme","palette","themePrimary","AllMenuCommandsEnum","XLSX","icon","PDF","EDIT","AllMenuCommands","MenuAdmin","menuId","labelFormId","labelFormCommand","labelFormFieldset","labelToggleOn","labelToggleOff","labelFormMenuItemId","labelFormMenuItemName","labelFormMenuItemIcon","commands","receivedError","SearchTemplate","closeDialog","hideDialog","templateId","onSubmit","isModal","modal","renderType","RenderType","DIALOG","COMMANDBAR","user","hideExternalSurface","labelCmdBarCancel","labelCmdBarSearch","goBack","formAsJsonEncoded","SearchSimple","Date","getMilliseconds","DocumentPreview","properties","errorValue","Image","src","alt","map","element","rowKey","Label","fontWeight","getCommandBarFarItems","excelExportCommand","contentType","MimeTypes","fileType","urlCommand","pdfExportCommand","SearchResults","selectedElems","loadMenuItems","newMenuItems","get","iconOnlyValue","textMode","excelCmdItem","getMenuCommandIfExists","exportToExcel","pdfCmdItem","exportToPdf","menuItems","renderError","command","funcToExecute","some","cmd","iconOnly","showPanel","closePanel","ttl","retError","errorMsg","getSelectionIds","ids","executeExportCommand","documentId","display","flexDirection","flex","multiple","overrideDevice","Panel","isBlocking","isOpen","PanelType","medium","isHiddenOnDismiss","onDismiss","closeButtonAriaLabel","splice","TabsSemanticHome","idx","tabs","activeIndex","openNewTab","onTabChange","onCloseTab","getTabIndex","getTabName","Tab","menu","secondary","pointing","panes","renderActiveOnly","locKey","activeTab","find","x","newTab","menuItem","Menu","Item","IconButton","iconHovered","pane","content","newTabs","update","$push","findIndex","query","queryString","parsedProps","JSON","parse","q","event","stopPropagation","preventDefault","$splice","TemplateAdmin","getDynamicTranslationInternal","keySuffix","toLowerCase","getId","getDynamicTranslation","titleOnPanels","allowMenus","allowDisplayProperties","labelTitleNew","labelTitleEdit","labelFormTemplateName","labelCmdBarFarBtnAdd","labelCmdBarFarBtnReset","labelCmdBarFarBtnResults","labelDialogTitleDelete","labelDialogSubtextPrefixDelete","labelDialogSubtextSuffixDelete","labelDialogBtnDelete","labelDialogBtnCancel","labelDialogTitleReset","labelDialogSubtextReset","labelDialogBtnReset","labelPanelSettingsPropertyTitle","labelPanelSettingsOperatorsTitle","labelPanelSettingsBtnUseAll","labelPanelSettingsBtnUseSelected","labelPanelSettingsEquals","labelPanelSettingsStartsWith","labelPanelSettingsContains","labelPanelSettingsIsEmpty","labelPanelSettingsGreaterThan","labelPanelSettingsLessThan","labelPanelSettingsWithin","labelPanelSettingsIncludes","labelPanelDisplayPropertiesTitle","labelPanelAddPropertiesTitle","labelPanelAddPropertiesProperty","labelPanelAddBtnAdd","labelPanelAddBtnCancel","labelMovListAvailable","labelMovListSelected","labelIconOperatorDelete","labelIconOperatorSetting","labelIconOperatorUp","labelIconOperatorDown","labelPanelMenusTitle","Content","previousLocation","nextProps","action","Tabs","DrawerGroupAdmin","headerTheme","createTheme","neutralPrimary","embeddedStyle","backgroundRepeat","backgroundColor","normalStyle","backgroundImage","fontSize","lineHeight","Header","isCalloutVisible","isSearchCalloutVisible","recentSearches","quickButtons","getLogo","getPersona","getQuickButtons","goToHome","goToSettings","goToTemplates","goToMenus","goToShortcut","goToQuickButton","goToDrawerGroups","logout","isEmbeddedLogin","EMBEDDED","ActionButton","allowDisabledFocus","verticalAlign","fallback","loading","afterInjection","svg","beforeInjection","classList","add","renumerateIRIElements","wrapper","extraMenuItems","itemType","ContextualMenuItemType","Divider","target","disabled","checked","menuProps","shouldFocusOnMount","Persona","PersonaSize","size24","initialsColor","PersonaInitialsColor","purple","theme","btn","template","getFAIcon","encoded","toTemplateResult","LOGOUT_USER","Search","Apps","Auth","mergeStyleSets","background","backgroundSize","stackMargin","selectors","marginRight","login","boxShadow","loginMsg","inputs","marginBottom","Stack","horizontal","horizontalAlign","verticalFill","setAttribute","onKeyPress","children","visibility","buttonShow","DefaultButton","primary","buttonOnClick","buttonDisabled","border","isProcessing","labelPosition","buttonText","messageText","MessageBar","messageBarType","messageType","isMultiline","defaultProps","ForgotNewPw","componentRef","guid","validInput","validGuid","success","getForm","submit","validateGuid","getErrorMessage","onNotifyValidationResult","validatePw","validateConfPw","getSuccessMsg","getInvalidGuid","MessageBarType","blocked","Link","href","TextField","placeholder","defaultValue","password","deferredValidationTime","validateOnLoad","onGetErrorMessage","errorMessage","validMsg","onChange","input","prefix","onRenderPrefix","confPassword","Icon","temp","resp","statusText","toJSON","request","post","ForgotPW","document","referrer","email","RegExp","test","Login","isAutoLogin","pwd","goTo","hasMsg","isPasswordEncrypted","NORMAL","saveToken","LOGIN_USER","loginToken","resources","en","translation","pt","i18n","use","LanguageDetector","initReactI18next","init","debug","interpolation","escapeValue","fallbackLng","initialState","rootReducer","combineReducers","Object","assign","UNAUTH_USER","persistConfig","storage","persistedReducer","persistReducer","isLocalhost","Boolean","window","hostname","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","initializeIcons","library","fab","fas","far","store","createStore","persistor","persistStore","CreateStore","purge","interceptors","Promise","reject","mainTheme","themeLighterAlt","themeLighter","themeLight","themeTertiary","themeSecondary","themeDarkAlt","themeDark","themeDarker","neutralLighterAlt","neutralLighter","neutralLight","neutralQuaternaryAlt","neutralQuaternary","neutralTertiaryAlt","neutralTertiary","neutralSecondary","neutralPrimaryAlt","neutralDark","black","white","loadTheme","ReactDOM","basename","getElementById","URL","toString","origin","addEventListener","fetch","indexOf","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.32c8a3f6.chunk.js","sourcesContent":["export enum SecurityActionTypes {\n LOGIN_USER = 'LOGIN_USER',\n LOGOUT_USER = 'LOGOUT_USER',\n UNAUTH_USER = 'UNAUTH_USER'\n}\n\nexport enum LoginMode {\n NORMAL = 'NORMAL',\n EMBEDDED = 'EMBEDDED'\n}\n\nexport interface ISecurityPayload {\n username?: string;\n password?: string;\n token?: string;\n message?: string;\n loginMode: LoginMode;\n}\n\nexport interface ISecurityLoginAction {\n type: SecurityActionTypes.LOGIN_USER;\n payload: { security: ISecurityPayload };\n}\n\nexport interface ISecurityLogoutAction {\n type: SecurityActionTypes.LOGOUT_USER;\n}\n\nexport interface ISecurityUnauthAction {\n type: SecurityActionTypes.UNAUTH_USER;\n payload: { message: string };\n}\n\nexport type SecurityActions = ISecurityLoginAction | ISecurityLogoutAction | ISecurityUnauthAction;\n","import Axios from 'axios';\nimport { SecurityActionTypes } from '../../redux/Actions/Security/ActionTypes';\n\nconst defaultOptions = {\n baseURL: https://picnictime.kwiktag.net/apiv3/api,\n headers: {\n 'Content-Type': 'application/json'\n }\n};\n\nAxios.defaults.baseURL = defaultOptions.baseURL;\nAxios.defaults.headers.common['Content-Type'] = defaultOptions.headers;\n\nconst Api = Axios;\nexport default Api;\n\nexport function setupInterceptors(store: any): void {\n Api.interceptors.response.use(undefined, error => {\n if (error.response && error.response.status === 401) {\n console.log('401 error', error);\n store.dispatch({\n type: SecurityActionTypes.UNAUTH_USER,\n payload: { message: 'Your Session expired!' }\n });\n }\n return Promise.reject(error);\n });\n}\n","import Api from './ApiAxios';\n\nexport { setupInterceptors } from './ApiAxios';\nexport default Api;\n","import * as React from 'react';\n\nimport { Redirect, Route } from 'react-router-dom';\n\nimport { connect } from 'react-redux';\nimport { IRootState } from '../../redux/Reducers/RootReducer';\n\nimport Api from '../Api';\n\nfunction mapStateToProps(state: IRootState, ownProps: any) {\n return { security: state.securityState.security };\n}\n\nfunction SecuredRoute(props: any) {\n const { component: Component, ...others } = props;\n return (\n {\n if (props.security && props.security.token) {\n Api.defaults.headers.common.Authorization = props.security.token;\n\n return ;\n } else {\n return (\n {\n constructor(props: any) {\n super(props);\n\n this.isNull = this.isNull.bind(this);\n this.getUrl = this.getUrl.bind(this);\n }\n\n public render() {\n return (\n
\n \n
\n );\n }\n\n private isNull(value: any) {\n return value === null || value === 'null' || value === undefined;\n }\n\n private handleResponse(items: any[]) {\n return items;\n }\n\n private getUrl(search: string, page: number, sortBy?: string | undefined, sortDesc?: boolean | undefined): string {\n const qValue = this.isNull(search) ? '' : `&q=${search}`;\n const sortByValue = this.isNull(sortBy) ? '' : `&_sort=${sortBy}`;\n let sortDescValue = '';\n\n if (!this.isNull(sortDesc)) {\n sortDescValue = sortDesc ? '&_order=desc' : '&_order=asc';\n }\n\n const url = `https://localhost:44300/api/documents?_start=${page}&_limit=20${qValue}${sortByValue}${sortDescValue}`;\n console.log(url);\n return url;\n }\n}\n\nexport default withRouter(connect(\n mapStateToProps,\n null\n)(Payables) as any);\n","import { IBreadcrumbItem } from \"office-ui-fabric-react/lib/Breadcrumb\";\n\nexport enum BreadCrumbsActiontypes {\n UPDATE = 'UPDATE'\n}\nexport interface IBreadCrumbsAction {\n type: BreadCrumbsActiontypes.UPDATE;\n payload: { items: IBreadcrumbItem[] };\n}\n","import { Breadcrumb, IBreadcrumbItem } from 'office-ui-fabric-react/lib/Breadcrumb';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { /* RouteComponentProps, */ withRouter } from 'react-router-dom';\nimport { IRootState } from '../../redux/Reducers/RootReducer';\nimport './BreadCrumbs.css';\n\n/* export interface IBreadCrumbsProps extends RouteComponentProps {\n items?: IBreadcrumbItem[]\n}; */\n\nfunction mapStateToProps(state: IRootState, ownProps: any) {\n return { items: state.breadCrumbsState.items };\n}\n\nclass BreadCrumbs extends React.PureComponent {\n public render(): JSX.Element {\n if (this.props.items) {\n this.props.items.forEach((item: any) => {\n item.onClick = this.onBreadcrumbItemClicked;\n });\n return ;\n } else {\n return

loading...

;\n }\n }\n\n private onBreadcrumbItemClicked = (ev: React.MouseEvent, item: IBreadcrumbItem): void => {\n console.log(`Breadcrumb item with key \"${item.key}\" has been clicked.`);\n this.props.history.push(`${item.key}`);\n };\n}\n\nexport default withRouter(connect(mapStateToProps)(BreadCrumbs) as any);\n","import { IBreadcrumbItem } from \"office-ui-fabric-react/lib/Breadcrumb\";\nimport { BreadCrumbsActiontypes, IBreadCrumbsAction } from './ActionTypes'\n\nexport function updateBreadCrumbs(param: IBreadcrumbItem[]): IBreadCrumbsAction {\n return {\n type: BreadCrumbsActiontypes.UPDATE,\n payload: {\n items: param\n }\n };\n}","import { IBreadcrumbItem } from 'office-ui-fabric-react/lib/Breadcrumb';\nimport { Fabric } from 'office-ui-fabric-react/lib/Fabric';\nimport { Spinner, SpinnerSize } from 'office-ui-fabric-react/lib/Spinner';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { Dispatch } from 'redux';\nimport { updateBreadCrumbs } from '../../redux/Actions/BreadCrumbs/ActionCreators';\n\nconst mapDispatchToProps = (dispatch: Dispatch) => {\n return {\n updateBreadCrumbs: (items: IBreadcrumbItem[]) => dispatch(updateBreadCrumbs(items))\n };\n};\n\nclass NotFound extends React.PureComponent {\n constructor(props: any) {\n super(props);\n\n this.click = this.click.bind(this);\n }\n\n public componentDidMount() {\n const items: IBreadcrumbItem[] = [{ text: 'Home', key: '/home' }, { text: 'Not Found', key: '/', isCurrentItem: true }];\n\n this.props.updateBreadCrumbs(items);\n }\n\n public render(): JSX.Element {\n return (\n \n
\n \n
\n
\n );\n }\n\n private click(): void {\n const items: IBreadcrumbItem[] = [{ text: 'Home', key: '/home' }, { text: 'Not Found', key: '/', isCurrentItem: true }];\n\n this.props.updateBreadCrumbs(items);\n }\n}\n\nexport default connect(\n null,\n mapDispatchToProps\n)(NotFound);\n","import {\n DrawerGroups,\n errorToast,\n IErrorMessage,\n ISuccessMessage,\n List,\n renderToastContainer,\n successToast\n} from 'enchoice-fabric-react-lib';\nimport { CommandBar, IColumn, IObjectWithKey, Selection, SelectionMode } from 'office-ui-fabric-react';\nimport { IBreadcrumbItem } from 'office-ui-fabric-react/lib/Breadcrumb';\nimport * as React from 'react';\nimport { withTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { Route, Switch, withRouter } from 'react-router';\nimport { Dispatch } from 'redux';\nimport Api from '../../../components/Api';\nimport { updateBreadCrumbs } from '../../../redux/Actions/BreadCrumbs/ActionCreators';\nimport './DrawerGroupsAdmin.css';\n\nconst mapDispatchToProps = (dispatch: Dispatch) => {\n return {\n updateBreadCrumbs: (items: IBreadcrumbItem[]) => dispatch(updateBreadCrumbs(items))\n };\n};\n\nconst URL_BASE = '';\n\nconst divStyle = {\n height: 'calc(100% - 85px)',\n fallbacks: [{ height: '-moz-calc(100% - 85px)' }, { height: '-webkit-calc(100% - 85px)' }, { height: '-o-calc(100% - 85px)' }]\n};\n\nclass DrawerGroupsAdmin extends React.PureComponent {\n private selection: Selection;\n\n constructor(props: any) {\n super(props);\n\n const {\n match: { params }\n } = this.props;\n\n this.state = {\n drawerGroupId: params.drawerGroupId,\n showList: true\n };\n\n this.onCancel = this.onCancel.bind(this);\n this.onSubmitSuccess = this.onSubmitSuccess.bind(this);\n this.onSubmitError = this.onSubmitError.bind(this);\n this.isNull = this.isNull.bind(this);\n this.getUrl = this.getUrl.bind(this);\n this.onCustomBuildColumns = this.onCustomBuildColumns.bind(this);\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\n this.onNew = this.onNew.bind(this);\n this.onDelete = this.onDelete.bind(this);\n\n this.selection = new Selection({\n getKey: (item: IObjectWithKey, index?: number | undefined): string | number => {\n return item && (item as any).id ? (item as any).id : `${index}`;\n },\n onSelectionChanged: () => {\n this.onSelectionChanged(this.selection.getSelection());\n }\n });\n }\n\n public componentDidUpdate(prevProps: any) {\n const lastIdArray = /\\w+/.exec(prevProps.location.pathname.replace(prevProps.match.url, ''));\n\n if (lastIdArray) {\n const lastId = lastIdArray[0];\n const id = this.getIdArray();\n if (lastId && id == null) {\n this.setState({ showList: false }, () => this.setState({ showList: true }));\n }\n }\n }\n\n public componentDidMount() {\n const { t } = this.props;\n\n const items: IBreadcrumbItem[] = [\n { text: t('drawerGroupAdmin.breadcrumb.home'), key: '/home' },\n { text: t('drawerGroupAdmin.breadcrumb.1level'), key: `/search/drawergroups`, isCurrentItem: true }\n ];\n this.props.updateBreadCrumbs(items);\n }\n\n public render(): JSX.Element {\n const { t, match } = this.props;\n\n const id = this.getIdArray();\n\n return (\n
\n
\n
\n \n {this.state.showList && (\n
\n \n
\n )}\n
\n
\n \n (\n
\n \n
\n )}\n />\n (\n
\n \n
\n )}\n />\n
\n
\n
\n
\n
\n {renderToastContainer()}\n
\n
\n
\n );\n }\n\n private onCustomBuildColumns(): IColumn[] {\n console.log('Set custom columns');\n return [\n {\n key: 'name',\n name: 'Name',\n fieldName: 'name',\n minWidth: 100,\n maxWidth: 150,\n isRowHeader: true,\n isResizable: false,\n isSorted: true,\n isSortedDescending: false,\n sortAscendingAriaLabel: 'Sorted A to Z',\n sortDescendingAriaLabel: 'Sorted Z to A',\n data: 'string',\n isPadded: true\n },\n {\n key: 'site',\n name: 'Site',\n fieldName: 'site',\n minWidth: 100,\n maxWidth: 150,\n isRowHeader: true,\n isResizable: false,\n isSorted: true,\n isSortedDescending: false,\n sortAscendingAriaLabel: 'Sorted A to Z',\n sortDescendingAriaLabel: 'Sorted Z to A',\n data: 'string',\n isPadded: true\n },\n {\n key: 'drawers',\n name: 'Drawers',\n fieldName: 'groups',\n minWidth: 100,\n maxWidth: 150,\n isRowHeader: true,\n isResizable: false,\n isSorted: false,\n data: 'number',\n isPadded: true\n }\n ];\n }\n\n private onSelectionChanged(selection: IObjectWithKey[]) {\n if (selection.length === 1) {\n this.props.history.push(`/search/drawergroups/${(selection[0] as any).id}/edit`);\n } else {\n this.props.history.push(`/search/drawergroups/`);\n }\n }\n\n private isNull(value: any) {\n return value == null || value === 'null' || value === undefined;\n }\n\n private handleResponse(items: any[]) {\n return items;\n }\n\n private getUrl(search: string, page: number, sortBy?: string, sortDesc?: boolean) {\n const qValue = this.isNull(search) ? '' : `&q=${search}`;\n const sortByValue = this.isNull(sortBy) ? '' : `&_sort=${sortBy}`;\n let sortDescValue = '';\n\n if (!this.isNull(sortDesc)) {\n sortDescValue = sortDesc ? '&_order=desc' : '&_order=asc';\n }\n const url = `${URL_BASE}/drawergroups?_start=${page}&_limit=20${qValue}${sortByValue}${sortDescValue}`;\n console.log(url);\n return url;\n }\n\n private onCancel(): void {\n console.log('onCancel ...');\n this.selection.setAllSelected(false);\n\n this.props.history.push(`/search/drawergroups/`);\n }\n\n private onSubmitSuccess(response: any): void {\n console.log('onSubmitSuccess ...', response);\n const id = this.getIdArray();\n const message = id ? 'Drawer Group edited.' : 'Drawer Group created';\n const msg: ISuccessMessage = {\n title: 'Success',\n message\n };\n successToast(msg);\n this.selection.setAllSelected(false);\n this.props.history.push(`/search/drawergroups/`);\n }\n\n private onSubmitError(error: any): void {\n const errorObj = error.response.data;\n const id = this.getIdArray();\n const title = id ? 'Error editing Drawer Group' : 'Error creating new Drawer Group';\n const msg: IErrorMessage = {\n title,\n message: errorObj.message,\n error: errorObj\n };\n errorToast(msg);\n }\n\n private getItems = () => {\n const { t } = this.props;\n return [\n {\n key: 'newItem',\n name: t('drawerGroupAdmin.list.cmdBar.new'),\n iconProps: {\n iconName: 'Add'\n },\n onClick: this.onNew\n }\n ];\n };\n\n private getFarItems = () => {\n const { t } = this.props;\n return [\n {\n key: 'delete',\n name: t('drawerGroupAdmin.list.cmdBar.delete'),\n iconProps: {\n iconName: 'Delete'\n },\n onClick: this.onDelete\n }\n ];\n };\n\n private getIdArray(): any {\n return /\\w+/.exec(this.props.location.pathname.replace(this.props.match.url, ''));\n }\n\n private onNew() {\n this.selection.setAllSelected(false);\n this.props.history.push(`/search/drawergroups/new`);\n }\n\n private onDelete(): any {\n const drawerGroupId = this.getIdArray();\n const id = drawerGroupId ? drawerGroupId[0] : undefined;\n\n if (!id) {\n return;\n }\n\n Api.delete(`drawergroups/${id}`)\n .then(response => {\n const msg: ISuccessMessage = {\n title: 'Success',\n message: 'Drawer Group Deleted with success!'\n };\n successToast(msg);\n this.selection.setAllSelected(false);\n this.props.history.push(`/search/drawergroups/`);\n })\n .catch(error => {\n const data = error.response.data;\n const msg: IErrorMessage = {\n title: 'Error',\n message: `Error Deleting Drawer Group: ${data.status}:${data.message}`,\n error: data\n };\n errorToast(msg);\n });\n }\n}\n\nexport default withRouter(connect(\n null,\n mapDispatchToProps\n)(withTranslation()(DrawerGroupsAdmin)) as any);\n","import { AnimationClassNames } from '@uifabric/styling';\nimport { IBreadcrumbItem } from 'office-ui-fabric-react/lib/Breadcrumb';\nimport { Fabric } from 'office-ui-fabric-react/lib/Fabric';\nimport { getTheme } from 'office-ui-fabric-react/lib/Styling';\nimport { withViewport } from 'office-ui-fabric-react/lib/utilities/decorators/withViewport';\nimport * as React from 'react';\nimport { withTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { Dispatch } from 'redux';\nimport { updateBreadCrumbs } from '../../../redux/Actions/BreadCrumbs/ActionCreators';\nimport { IRootState } from '../../../redux/Reducers/RootReducer';\n\nconst mapDispatchToProps = (dispatch: Dispatch) => {\n return {\n updateBreadCrumbs: (items: IBreadcrumbItem[]) => dispatch(updateBreadCrumbs(items))\n };\n};\n\nconst mapStateToProps = (state: IRootState, ownProps: any) => {\n return { security: state.securityState.security };\n};\n\n@withViewport\nclass Home extends React.PureComponent {\n public componentDidMount() {\n const { t } = this.props;\n const items: IBreadcrumbItem[] = [{ text: t('home.breadcrumb.home'), key: 'home', isCurrentItem: true }];\n this.props.updateBreadCrumbs(items);\n }\n\n public render(): JSX.Element {\n return (\n \n
\n
\n
\n \n {this.props.t('Welcome to KTX React')}\n \n
\n
\n
\n );\n }\n}\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(withTranslation()(Home));\n","import { IMenuCommand } from 'enchoice-fabric-react-lib';\n\nexport const exportToExcelCmd: IMenuCommand = {\n id: 'ExportToExcel',\n name: 'Export to Excel',\n icon: 'ExcelDocument'\n};\n\nexport const exportToPdfCmd: IMenuCommand = {\n id: 'ExportToPdf',\n name: 'Export to Pdf',\n icon: 'Pdf'\n};\n\nexport const editDocumentCmd: IMenuCommand = {\n id: 'EditDocument',\n name: 'Edit Document',\n icon: 'Edit'\n};\n\nexport const AllMenuCommandsEnum = {\n XLSX: exportToExcelCmd,\n PDF: exportToPdfCmd,\n EDIT: editDocumentCmd\n};\n\nexport const AllMenuCommands: IMenuCommand[] = [AllMenuCommandsEnum.XLSX, AllMenuCommandsEnum.PDF, AllMenuCommandsEnum.EDIT];\n","import * as React from 'react';\nimport { connect } from 'react-redux';\nimport { updateBreadCrumbs } from '../../../redux/Actions/BreadCrumbs/ActionCreators';\n\nimport { errorToast, IErrorMessage, ISuccessMessage, MenusAdminForm, renderToastContainer, successToast } from 'enchoice-fabric-react-lib';\nimport { List } from 'enchoice-fabric-react-lib';\nimport { IBreadcrumbItem } from 'office-ui-fabric-react/lib/Breadcrumb';\nimport { Route, Switch, withRouter } from 'react-router';\nimport { Dispatch } from 'redux';\n\nimport { CommandBar, IColumn, IObjectWithKey, Selection, SelectionMode } from 'office-ui-fabric-react';\nimport { withTranslation } from 'react-i18next';\n\nimport Api from '../../../components/Api';\n\nimport { AllMenuCommands } from '../../../utils/MenuItems.types';\n\nimport './MenuAdmin.css';\n\nconst mapDispatchToProps = (dispatch: Dispatch) => {\n return {\n updateBreadCrumbs: (items: IBreadcrumbItem[]) => dispatch(updateBreadCrumbs(items))\n };\n};\n\nconst URL_BASE = '';\n\nconst divStyle = {\n height: 'calc(100% - 85px)',\n fallbacks: [{ height: '-moz-calc(100% - 85px)' }, { height: '-webkit-calc(100% - 85px)' }, { height: '-o-calc(100% - 85px)' }]\n};\n\nclass MenuAdmin extends React.PureComponent {\n private selection: Selection;\n\n constructor(props: any) {\n super(props);\n\n const {\n match: { params }\n } = this.props;\n\n this.state = {\n menuId: params.menuId\n };\n\n this.onCancel = this.onCancel.bind(this);\n this.onSubmitSuccess = this.onSubmitSuccess.bind(this);\n this.onSubmitError = this.onSubmitError.bind(this);\n this.isNull = this.isNull.bind(this);\n this.getUrl = this.getUrl.bind(this);\n this.onCustomBuildColumns = this.onCustomBuildColumns.bind(this);\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\n this.onNew = this.onNew.bind(this);\n this.onDelete = this.onDelete.bind(this);\n\n this.selection = new Selection({\n getKey: (item: IObjectWithKey, index?: number | undefined): string | number => {\n console.log('item getKey', item, index, (item as any).id);\n return item && (item as any).id ? (item as any).id : `${index}`;\n },\n onSelectionChanged: () => {\n this.onSelectionChanged(this.selection.getSelection());\n }\n });\n }\n\n public componentDidMount() {\n const { t } = this.props;\n\n const items: IBreadcrumbItem[] = [\n { text: t('menuAdmin.breadcrumb.home'), key: '/home' },\n { text: t('menuAdmin.breadcrumb.1level'), key: `/search/menu`, isCurrentItem: true }\n ];\n this.props.updateBreadCrumbs(items);\n }\n\n public render(): JSX.Element {\n const { t, match } = this.props;\n\n const id = this.getIdArray();\n\n console.log('substring: ', this.props.location.pathname, match.url, this.props.location.pathname.replace(match.url, ''), id);\n return (\n
\n
\n
\n \n
\n \n
\n
\n
\n \n (\n \n )}\n />\n (\n
\n \n
\n )}\n />\n
\n
\n
\n
\n
\n {renderToastContainer()}\n
\n
\n
\n );\n }\n\n private onCustomBuildColumns(): IColumn[] {\n console.log('Set custom columns');\n return [\n {\n key: 'name',\n name: 'Name',\n fieldName: 'name',\n minWidth: 210,\n maxWidth: 350,\n isRowHeader: true,\n isResizable: false,\n isSorted: true,\n isSortedDescending: false,\n sortAscendingAriaLabel: 'Sorted A to Z',\n sortDescendingAriaLabel: 'Sorted Z to A',\n data: 'string',\n isPadded: true\n }\n ];\n }\n\n private onSelectionChanged(selection: IObjectWithKey[]) {\n if (selection.length === 1) {\n this.props.history.push(`/search/menu/${(selection[0] as any).id}/edit`);\n } else {\n this.props.history.push(`/search/menu/`);\n }\n }\n\n private isNull(value: any) {\n return value == null || value === 'null' || value === undefined;\n }\n\n private handleResponse(items: any[]) {\n return items;\n }\n\n private getUrl(search: string, page: number, sortBy?: string, sortDesc?: boolean) {\n const qValue = this.isNull(search) ? '' : `&q=${search}`;\n const sortByValue = this.isNull(sortBy) ? '' : `&_sort=${sortBy}`;\n let sortDescValue = '';\n\n if (!this.isNull(sortDesc)) {\n sortDescValue = sortDesc ? '&_order=desc' : '&_order=asc';\n }\n const url = `${URL_BASE}/menus?_start=${page}&_limit=20${qValue}${sortByValue}${sortDescValue}`;\n console.log(url);\n return url;\n }\n\n private onCancel(): void {\n console.log('onCancel ...');\n this.selection.setAllSelected(false);\n\n this.props.history.push(`/search/menu/`);\n }\n\n private onSubmitSuccess(response: any): void {\n console.log('onSubmitSuccess ...', response);\n const msg: ISuccessMessage = {\n title: 'Success',\n message: 'Menu Created.'\n };\n successToast(msg);\n this.selection.setAllSelected(false);\n\n this.props.history.push(`/search/menu/`);\n }\n\n private onSubmitError(receivedError: any): void {\n const msg: IErrorMessage = {\n title: 'Error',\n message: 'Error Creating Menu.',\n error: receivedError\n };\n errorToast(msg);\n }\n\n private getItems = () => {\n const { t } = this.props;\n return [\n {\n key: 'newItem',\n name: t('menuAdmin.list.cmdBar.new'),\n iconProps: {\n iconName: 'Add'\n },\n onClick: this.onNew\n }\n ];\n };\n\n private getFarItems = () => {\n const { t } = this.props;\n return [\n {\n key: 'delete',\n name: t('menuAdmin.list.cmdBar.delete'),\n iconProps: {\n iconName: 'Delete'\n },\n onClick: this.onDelete\n }\n ];\n };\n\n private getIdArray(): any {\n return /\\w+/.exec(this.props.location.pathname.replace(this.props.match.url, ''));\n }\n\n private onNew() {\n this.selection.setAllSelected(false);\n this.props.history.push(`/search/menu/new`);\n }\n\n private onDelete(): any {\n const menuId = this.getIdArray();\n const id = menuId ? menuId[0] : undefined;\n\n if (!id) {\n return;\n }\n\n Api.delete(`menus/${id}`)\n .then(response => {\n const msg: ISuccessMessage = {\n title: 'Success',\n message: 'Menu Deleted with success!'\n };\n successToast(msg);\n })\n .catch(error => {\n const msg: IErrorMessage = {\n title: 'Error',\n message: 'Error deleting Menu.',\n error: error\n };\n errorToast(msg);\n });\n this.selection.setAllSelected(false);\n }\n}\n\nexport default withRouter(connect(\n null,\n mapDispatchToProps\n)(withTranslation()(MenuAdmin)) as any);\n","import * as React from 'react';\nimport { connect } from 'react-redux';\nimport { updateBreadCrumbs } from '../../../redux/Actions/BreadCrumbs/ActionCreators';\n\nimport { RenderType, TemplateForm } from 'enchoice-fabric-react-lib';\nimport { IBreadcrumbItem } from 'office-ui-fabric-react/lib/Breadcrumb';\nimport { withRouter } from 'react-router';\nimport { Dispatch } from 'redux';\n\nimport { withTranslation } from 'react-i18next';\n\nimport './SearchTemplate.css';\n\nconst mapDispatchToProps = (dispatch: Dispatch) => {\n return {\n updateBreadCrumbs: (items: IBreadcrumbItem[]) => dispatch(updateBreadCrumbs(items))\n };\n};\n\nconst URL_BASE = '/templates/';\n\nclass SearchTemplate extends React.PureComponent {\n constructor(props: any) {\n super(props);\n\n const {\n match: { params }\n } = this.props;\n\n this.state = {\n templateId: params.templateId,\n hideDialog: false\n };\n\n this.onSubmit = this.onSubmit.bind(this);\n this.onCancel = this.onCancel.bind(this);\n }\n\n public componentDidMount() {\n const items: IBreadcrumbItem[] = [\n { text: 'Home', key: '/home' },\n { text: 'Search By Template', key: `/search/template/${this.state.templateId}`, isCurrentItem: true }\n ];\n this.props.updateBreadCrumbs(items);\n }\n\n public render(): JSX.Element {\n const { t, location } = this.props;\n\n console.log(location);\n const isModal = !!(location.state && location.state.modal);\n const renderType: RenderType = isModal ? RenderType.DIALOG : RenderType.COMMANDBAR;\n\n return (\n \n );\n }\n\n private closeDialog = (): void => {\n this.setState({ hideDialog: true });\n };\n\n private onCancel(): void {\n console.log('onCancel ...');\n this.props.history.goBack();\n this.closeDialog();\n }\n\n private onSubmit(formAsJsonEncoded: string): void {\n console.log('onSubmit ...', formAsJsonEncoded);\n this.props.history.push(`/search/template/${this.state.templateId}/results?properties=${formAsJsonEncoded}`);\n this.closeDialog();\n }\n}\n\nexport default withRouter(connect(\n null,\n mapDispatchToProps\n)(withTranslation()(SearchTemplate)) as any);\n","import * as React from 'react';\nimport { connect } from 'react-redux';\nimport { updateBreadCrumbs } from '../../../redux/Actions/BreadCrumbs/ActionCreators';\n\nimport { IBreadcrumbItem } from 'office-ui-fabric-react/lib/Breadcrumb';\nimport { withRouter } from 'react-router';\nimport { Dispatch } from 'redux';\n\nimport './SearchSimple.css';\n\nconst mapDispatchToProps = (dispatch: Dispatch) => {\n return {\n updateBreadCrumbs: (items: IBreadcrumbItem[]) => dispatch(updateBreadCrumbs(items))\n };\n};\n\nclass SearchSimple extends React.Component {\n constructor(props: any) {\n super(props);\n\n const {\n match: { params }\n } = this.props;\n\n this.state = {\n templateId: params.templateId\n };\n }\n\n public componentDidMount() {\n const items: IBreadcrumbItem[] = [{ text: 'Home', key: '/home' }, { text: 'Search', key: '/search', isCurrentItem: true }];\n this.props.updateBreadCrumbs(items);\n }\n\n public render(): JSX.Element {\n return (\n
\n You just searched for {this.props.location.search}\n {new Date().getMilliseconds()}\n
\n );\n }\n}\n\nexport default withRouter(connect(\n null,\n mapDispatchToProps\n)(SearchSimple) as any);\n","import * as React from 'react';\n\nimport { CommandBar, ICommandBarItemProps } from 'office-ui-fabric-react/lib/CommandBar';\nimport { Image } from 'office-ui-fabric-react/lib/Image';\nimport { Label } from 'office-ui-fabric-react/lib/Label';\n\nimport { Title } from 'enchoice-fabric-react-lib';\n\nimport Api from '../../../components/Api';\n\nexport interface IDocumentPreviewProps {\n id: number;\n}\n\nclass DocumentPreview extends React.PureComponent {\n constructor(props: IDocumentPreviewProps) {\n super(props);\n this.state = {\n properties: [],\n error: undefined\n };\n }\n\n public componentDidMount() {\n console.log('fetching: ', this.props.id);\n Api(`documents/${this.props.id}/default`)\n .then(response => {\n this.setState({\n properties: response.data.data\n });\n })\n .catch(errorValue => this.setState({ error: errorValue }));\n }\n /* \n public componentDidUpdate() {\n console.log('fetching: ', this.props.id);\n fetch(`${URL_BASE}/${this.props.id}/default`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json'\n }\n })\n .then(response => response.json())\n .then(response => {\n this.setState({\n properties: response.data\n });\n })\n .catch(errorValue => this.setState({ error: errorValue }));\n } */\n\n public render(): JSX.Element {\n const { properties } = this.state;\n return (\n
\n
\n
\n \"Document\n
\n
\n
\n
\n \n </div>\n </div>\n <div className=\"ms-Grid-row\">\n <div className=\"ms-Grid-col ms-sm12 ms-md12 ms-lg12\">\n {properties.map((element: any) => {\n const rowKey = 'row' + element.name;\n return (\n <div className=\"ms-Grid-row\" key={rowKey}>\n <div className=\"ms-Grid-col ms-sm4 ms-md4 ms-lg4\">\n <Label className=\"ms-font-m-plus\" style={{ fontWeight: 'bold' }}>\n {element.name}\n </Label>\n </div>\n <div className=\"ms-Grid-col ms-sm8 ms-md8 ms-lg8\">\n <Label className=\"ms-font-m-plus\">{element.value}</Label>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n <div className=\"ms-Grid-row\">\n <div className=\"ms-Grid-col ms-sm12 ms-md12 ms-lg12\">\n <CommandBar items={[]} farItems={this.getCommandBarFarItems()} />\n </div>\n </div>\n </div>\n );\n }\n\n private getCommandBarFarItems(): ICommandBarItemProps[] {\n const items: ICommandBarItemProps[] = [\n {\n key: 'Download',\n name: 'Download',\n iconProps: {\n iconName: 'DownloadDocument'\n },\n onClick: () => {\n console.log('Download');\n }\n }\n ];\n\n return items;\n }\n}\n\nexport default DocumentPreview;\n","import * as React from 'react';\nimport { connect } from 'react-redux';\nimport { updateBreadCrumbs } from '../../../redux/Actions/BreadCrumbs/ActionCreators';\n\nimport {\n errorToast,\n executeExportCommand,\n IErrorMessage,\n IExportCommand,\n IMenuCommand,\n List,\n MimeTypes,\n renderToastContainer\n} from 'enchoice-fabric-react-lib';\nimport { SelectionMode } from 'office-ui-fabric-react';\nimport { IBreadcrumbItem } from 'office-ui-fabric-react/lib/Breadcrumb';\nimport { ICommandBarItemProps } from 'office-ui-fabric-react/lib/CommandBar';\nimport { Panel, PanelType } from 'office-ui-fabric-react/lib/Panel';\nimport { IObjectWithKey, Selection } from 'office-ui-fabric-react/lib/Selection';\nimport { Dispatch } from 'redux';\nimport { IBreadCrumbsAction } from '../../../redux/Actions/BreadCrumbs/ActionTypes';\nimport DocumentPreview from '../DocumentPreview/DocumentPreview';\n\nimport { CommandBar } from 'office-ui-fabric-react/lib/CommandBar';\n\n// import { ContextualMenuItemType, IContextualMenuProps } from 'office-ui-fabric-react/lib/ContextualMenu';\n\nimport { withTranslation } from 'react-i18next';\n\nimport Api from '../../../components/Api';\n\nimport { AllMenuCommandsEnum } from '../../../utils/MenuItems.types';\n\nconst mapDispatchToProps = (dispatch: Dispatch) => {\n return {\n updateBreadCrumbs: (items: IBreadcrumbItem[]) => dispatch(updateBreadCrumbs(items))\n };\n};\n\nconst hOffsite = '40px';\nconst divStyle = {\n height: `calc(100% - ${hOffsite})`,\n fallbacks: [\n { height: `-moz-calc(100% - ${hOffsite})` },\n { height: `-webkit-calc(100% - ${hOffsite})` },\n { height: `-o-calc(100% - ${hOffsite})` }\n ]\n};\n\nconst excelExportCommand: IExportCommand = {\n contentType: MimeTypes.XLSX,\n fileType: 'xlsx',\n urlCommand: 'export'\n};\n\nconst pdfExportCommand: IExportCommand = {\n contentType: MimeTypes.PDF,\n fileType: 'pdf',\n urlCommand: 'export'\n};\n\nexport interface ISearchResultsProps {\n templateId: number;\n requestData: string;\n match: any;\n location: any;\n updateBreadCrumbs(param: IBreadcrumbItem[]): IBreadCrumbsAction;\n}\n\nclass SearchResults extends React.PureComponent<any, any> {\n private selectedElems: IObjectWithKey[] = [];\n private selection: Selection;\n\n constructor(props: any) {\n super(props);\n\n const {\n match: { params }\n } = this.props;\n\n this.state = {\n templateId: params.templateId,\n properties: params.properties,\n menuItems: [],\n showPanel: false,\n documentId: -1\n };\n\n this.isNull = this.isNull.bind(this);\n this.getUrl = this.getUrl.bind(this);\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\n\n this.selection = new Selection({\n onSelectionChanged: () => {\n this.onSelectionChanged(this.selection.getSelection());\n }\n });\n }\n\n public componentDidMount() {\n const { t } = this.props;\n\n this.loadMenuItems();\n\n const items: IBreadcrumbItem[] = [\n { text: t('searchResults.breadcrumb.home'), key: '/home' },\n { text: t('searchResults.breadcrumb.search'), key: '/search/template/' + this.state.templateId },\n {\n text: t('searchResults.breadcrumb.results'),\n key: '/search/template/' + this.state.templateId + '/results',\n isCurrentItem: true\n }\n ];\n this.props.updateBreadCrumbs(items);\n }\n\n public render(): JSX.Element {\n const { menuItems } = this.state;\n return (\n <div style={{ height: '100%', width: '100%', display: 'flex', flexDirection: 'column', flex: 1 }}>\n <CommandBar items={menuItems} styles={{ root: { padding: 0 } }} />\n {/* <div style={{ width: '100%', marginTop: '20px' }}>\n <Title title=\"Search By Template\" icon={true} />\n </div> */}\n <div style={divStyle}>\n <List\n getUrl={this.getUrl}\n handleResponse={this.handleResponse}\n selectionMode={SelectionMode.multiple}\n enableSearch={false}\n enableSort={true}\n selection={this.selection}\n height={'100%'}\n // onItemContextMenu={this.onItemContextMenu}\n overrideDevice={true}\n styles={{ root: { height: '100%', padding: 0 } }}\n />\n </div>\n <div>\n {this.state.documentId != null && (\n <Panel\n isBlocking={false}\n isOpen={this.state.showPanel}\n type={PanelType.medium}\n isHiddenOnDismiss={false}\n onDismiss={this.closePanel}\n closeButtonAriaLabel=\"Close\"\n >\n <DocumentPreview id={this.state.documentId} />\n </Panel>\n )}\n </div>\n <div>{renderToastContainer()}</div>\n </div>\n );\n }\n\n private loadMenuItems = (): void => {\n const { templateId } = this.state;\n const url = `templates/${templateId}/menu`;\n const newMenuItems: ICommandBarItemProps[] = [];\n\n Api.get(url)\n .then((response: any) => {\n const data = response.data;\n const commands: IMenuCommand[] = data.items;\n const iconOnlyValue = !data.textMode;\n\n const excelCmdItem = this.getMenuCommandIfExists(commands, AllMenuCommandsEnum.XLSX, iconOnlyValue, this.exportToExcel);\n if (excelCmdItem) {\n newMenuItems.push(excelCmdItem);\n }\n\n const pdfCmdItem = this.getMenuCommandIfExists(commands, AllMenuCommandsEnum.PDF, iconOnlyValue, this.exportToPdf);\n if (pdfCmdItem) {\n newMenuItems.push(pdfCmdItem);\n }\n\n this.setState({\n menuItems: newMenuItems\n });\n })\n .catch(error => this.renderError('Error!', 'Error Loading Menus', error));\n };\n\n private getMenuCommandIfExists = (\n commands: IMenuCommand[],\n command: IMenuCommand,\n iconOnlyValue: boolean,\n funcToExecute: any\n ): ICommandBarItemProps | undefined => {\n const cmdExist = commands.some(cmd => cmd.id === command.id);\n let item: ICommandBarItemProps | undefined = undefined;\n\n if (cmdExist) {\n item = {\n key: command.id,\n name: command.name,\n iconProps: {\n iconName: command.icon\n },\n iconOnly: iconOnlyValue,\n onClick: () => {\n funcToExecute();\n }\n };\n }\n return item;\n };\n\n private showPanel = (): void => {\n this.setState({ showPanel: true });\n };\n\n private closePanel = (): void => {\n this.setState({ showPanel: false });\n };\n\n private onSelectionChanged(selection: IObjectWithKey[]): any {\n this.selectedElems.splice(0, this.selectedElems.length, ...selection);\n\n if (selection.length !== 1) {\n return false;\n }\n\n const item = selection[0] as any;\n console.log('Selected', item.id);\n this.setState({ documentId: null }, () => this.setState({ documentId: item.id }, () => this.showPanel()));\n }\n\n private isNull(value: any) {\n return value == null || value === 'null' || value === undefined;\n }\n\n private handleResponse(items: any[]) {\n return items;\n }\n\n private getUrl(search: string, page: number, sortBy?: string, sortDesc?: boolean) {\n const qValue = this.isNull(search) ? '' : `&q=${search}`;\n const sortByValue = this.isNull(sortBy) ? '' : `&_sort=${sortBy}`;\n let sortDescValue = '';\n\n if (!this.isNull(sortDesc)) {\n sortDescValue = sortDesc ? '&_order=desc' : '&_order=asc';\n }\n\n const url = `documents${this.props.location.search}&_start=${page}&_limit=20${qValue}${sortByValue}${sortDescValue}`;\n console.log(url);\n return url;\n }\n\n private renderError = (ttl: string, msg: string, retError: any): any => {\n const errorMsg: IErrorMessage = {\n title: ttl,\n message: msg,\n error: retError\n };\n errorToast(errorMsg);\n };\n\n private getSelectionIds = (): string[] => {\n const selection = this.selection.getSelection();\n\n if (!selection || selection.length === 0) {\n return [];\n }\n\n const ids: string[] = [];\n\n selection.forEach((item: any) => {\n const id = item.id;\n ids.push(id);\n });\n\n return ids;\n };\n\n private exportToExcel = (): void => {\n const ids: string[] = this.getSelectionIds();\n executeExportCommand('', this.state.templateId, excelExportCommand, ids);\n };\n\n private exportToPdf = (): void => {\n const ids: string[] = this.getSelectionIds();\n executeExportCommand('', this.state.templateId, pdfExportCommand, ids);\n };\n\n /*\n private onItemContextMenu(item: any, index: number, ev: MouseEvent) {\n const empty = {} as IContextualMenuProps;\n\n if (index <= -1) {\n return empty;\n }\n\n const contextualMenuProps: IContextualMenuProps = {\n target: ev.target as HTMLElement,\n items: [\n {\n key: 'section' + item.key,\n itemType: ContextualMenuItemType.Section,\n sectionProps: {\n key: 'sectionProps' + item.key + '1',\n topDivider: true,\n bottomDivider: true,\n title: 'Export Actions',\n items: [\n {\n key: 'Mail' + item.key,\n text: 'Excel',\n iconProps: {\n iconName: 'ExcelDocument'\n },\n onClick: () => console.log(item)\n },\n {\n key: 'deleteItem' + item.key,\n text: 'Pdf',\n iconProps: {\n iconName: 'Pdf'\n },\n onClick: () => console.log(item)\n }\n ]\n }\n },\n {\n key: 'section2' + item.key,\n itemType: ContextualMenuItemType.Section,\n sectionProps: {\n key: 'sectionProps' + item.key + '2',\n title: 'Document Actions',\n items: [\n {\n key: 'share' + item.key,\n text: 'Download',\n iconProps: {\n iconName: 'Download'\n },\n onClick: () => console.log(item)\n }\n ]\n }\n }\n ]\n };\n\n return contextualMenuProps;\n }\n */\n}\n\nexport default connect(\n null,\n mapDispatchToProps\n)(withTranslation()(SearchResults));\n","import * as React from 'react';\nimport { Route, Switch, withRouter } from 'react-router';\n\n/* import { connect } from 'react-redux';\nimport { Dispatch } from 'redux';\nimport { updateBreadCrumbs } from 'src/redux/Actions/BreadCrumbs/ActionCreators';\n\nimport { IBreadcrumbItem, IconButton } from 'office-ui-fabric-react'; */\nimport { getTheme } from 'office-ui-fabric-react/lib/Styling';\n\nimport { Menu, Tab } from 'semantic-ui-react';\nimport SearchSimple from '../SearchSimple/SearchSimple';\n\nimport SearchResults from '../SearchResults/SearchResults';\nimport './Tabs.css';\n\nimport update from 'immutability-helper';\nimport { IconButton } from 'office-ui-fabric-react';\nimport * as queryString from 'query-string';\n\nexport interface ITabsState {\n tabs: any[];\n idx: number;\n activeIndex: number;\n}\n\n/* const mapDispatchToProps = (dispatch: Dispatch) => {\n return {\n updateBreadCrumbs: (items: IBreadcrumbItem[]) => dispatch(updateBreadCrumbs(items))\n };\n}; */\n\nclass TabsSemanticHome extends React.PureComponent<any, ITabsState> {\n constructor(props: any) {\n super(props);\n\n this.state = {\n idx: 1,\n tabs: [],\n activeIndex: 0\n };\n\n this.openNewTab = this.openNewTab.bind(this);\n this.onTabChange = this.onTabChange.bind(this);\n this.onCloseTab = this.onCloseTab.bind(this);\n this.getTabIndex = this.getTabIndex.bind(this);\n this.getTabName = this.getTabName.bind(this);\n }\n\n public render(): JSX.Element {\n return (\n <Tab\n menu={{ color: 'orange', secondary: true, pointing: true }}\n panes={this.state.tabs}\n renderActiveOnly={false}\n onTabChange={this.onTabChange}\n activeIndex={this.state.activeIndex}\n style={{ height: '100%' }}\n className={'TabResults'}\n />\n );\n }\n\n public componentDidMount() {\n // const items: IBreadcrumbItem[] = [{ text: 'Home', key: '/home' }, { text: 'Search', key: '/search', isCurrentItem: true }];\n // this.props.updateBreadCrumbs(items);\n\n this.openNewTab();\n }\n\n public componentDidUpdate() {\n this.openNewTab();\n }\n\n private openNewTab(): void {\n const { pathname, search } = this.props.location;\n const locKey: string = pathname + search;\n\n const activeTab = this.state.tabs.find(x => x.key === locKey);\n\n if (!activeTab) {\n const newTab = {\n key: locKey,\n menuItem: (\n <Menu.Item key={locKey}>\n {this.getTabName(this.props.location)}\n <IconButton\n iconProps={{ iconName: 'StatusCircleErrorX' }}\n styles={{\n root: { height: 'unset', padding: 0, width: '16px' },\n icon: { margin: 0, fontWeight: 'bold' },\n iconHovered: { color: getTheme().palette.themePrimary }\n }}\n // tslint:disable-next-line:jsx-no-lambda\n onClick={ev => this.onCloseTab(ev, locKey)}\n />\n </Menu.Item>\n ),\n pane: {\n className: 'noBorder',\n key: locKey,\n content: (\n <div style={{ height: '100%' }}>\n <Switch location={this.props.location}>\n <Route exact={true} path=\"/search/results\" component={SearchSimple} />\n\n <Route exact={true} path=\"/search/template/:templateId(\\d+)/results\" component={SearchResults} />\n </Switch>\n </div>\n )\n }\n };\n\n const newTabs = update(this.state.tabs, { $push: [newTab] });\n\n this.setState({ idx: this.state.idx + 1, tabs: newTabs, activeIndex: newTabs.length - 1 });\n } else {\n this.setState({ activeIndex: this.getTabIndex(activeTab.key) });\n }\n }\n\n private getTabIndex(key: string): number {\n return this.state.tabs.findIndex(x => x.key === key);\n }\n\n private getTabName(location: any): string {\n const query = queryString.parse(this.props.location.search);\n if (location.pathname === '/search/results') {\n if (query.q) {\n return `${query.q}`;\n }\n } else {\n if (query.properties) {\n const props = query.properties as string;\n const parsedProps = JSON.parse(props);\n return `${parsedProps.name}`;\n }\n return 'Template Search';\n }\n return '';\n }\n\n private onCloseTab(event: React.MouseEvent<any>, key: string): void {\n event.stopPropagation();\n event.preventDefault();\n\n const index = this.getTabIndex(key);\n\n const newTabs = update(this.state.tabs, { $splice: [[index, 1]] });\n\n this.setState({ tabs: newTabs });\n\n if (newTabs.length === 0) {\n this.props.history.push('/search');\n } else if (this.state.activeIndex === index) {\n this.setState({ activeIndex: 0 });\n this.props.history.push(this.state.tabs[0].key);\n }\n }\n\n private onTabChange(ev: React.SyntheticEvent, data: any) {\n ev.stopPropagation();\n ev.preventDefault();\n\n this.props.history.push(this.state.tabs[data.activeIndex].key);\n this.setState({ activeIndex: data.activeIndex });\n }\n}\n\n/* export default withRouter(connect(\n null,\n mapDispatchToProps\n)(TabsSemanticHome) as any); */\n\nexport default withRouter(TabsSemanticHome);\n","import {\n errorToast,\n IErrorMessage,\n ISuccessMessage,\n List,\n renderToastContainer,\n successToast,\n TemplateAdminForm\n} from 'enchoice-fabric-react-lib';\nimport { CommandBar, IColumn, IObjectWithKey, Selection, SelectionMode } from 'office-ui-fabric-react';\nimport { IBreadcrumbItem } from 'office-ui-fabric-react/lib/Breadcrumb';\nimport * as React from 'react';\nimport { withTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { Route, Switch, withRouter } from 'react-router';\nimport 'react-toastify/dist/ReactToastify.css';\nimport { Dispatch } from 'redux';\nimport Api from '../../../components/Api';\nimport { updateBreadCrumbs } from '../../../redux/Actions/BreadCrumbs/ActionCreators';\nimport './TemplateAdmin.css';\n\nconst mapDispatchToProps = (dispatch: Dispatch) => {\n return {\n updateBreadCrumbs: (items: IBreadcrumbItem[]) => dispatch(updateBreadCrumbs(items))\n };\n};\n\nconst URL_BASE = '';\n\nconst divStyle = {\n height: 'calc(100% - 85px)',\n fallbacks: [{ height: '-moz-calc(100% - 85px)' }, { height: '-webkit-calc(100% - 85px)' }, { height: '-o-calc(100% - 85px)' }]\n};\n\nclass TemplateAdmin extends React.PureComponent<any, any> {\n private selection: Selection;\n\n constructor(props: any) {\n super(props);\n\n const {\n match: { params }\n } = this.props;\n\n this.state = {\n templateId: params.templateId,\n showList: true\n };\n\n this.onCancel = this.onCancel.bind(this);\n this.onSubmitSuccess = this.onSubmitSuccess.bind(this);\n this.onSubmitError = this.onSubmitError.bind(this);\n this.isNull = this.isNull.bind(this);\n this.getUrl = this.getUrl.bind(this);\n this.onCustomBuildColumns = this.onCustomBuildColumns.bind(this);\n this.onSelectionChanged = this.onSelectionChanged.bind(this);\n this.onNew = this.onNew.bind(this);\n this.onDelete = this.onDelete.bind(this);\n this.getDynamicTranslationInternal = this.getDynamicTranslationInternal.bind(this);\n\n this.selection = new Selection({\n getKey: (item: IObjectWithKey, index?: number | undefined): string | number => {\n return item && (item as any).id ? (item as any).id : `${index}`;\n },\n onSelectionChanged: () => {\n this.onSelectionChanged(this.selection.getSelection());\n }\n });\n }\n\n public componentDidUpdate(prevProps: any) {\n console.log('componentDidUpdate');\n\n const lastIdArray = /\\d+/.exec(prevProps.location.pathname);\n const id = this.getId();\n\n if (lastIdArray === null && id == null) {\n this.setState({ showList: false }, () => this.setState({ showList: true }));\n }\n\n if (lastIdArray) {\n const lastId = lastIdArray[0];\n\n if (lastId && id == null) {\n this.setState({ showList: false }, () => this.setState({ showList: true }));\n }\n }\n }\n\n public componentDidMount() {\n const { t } = this.props;\n\n const items: IBreadcrumbItem[] = [\n { text: t('templateAdmin.breadcrumb.home'), key: '/home' },\n { text: t('templateAdmin.breadcrumb.1level'), key: `/search/template`, isCurrentItem: true }\n ];\n this.props.updateBreadCrumbs(items);\n }\n\n public render(): JSX.Element {\n const { t, match } = this.props;\n\n const id = this.getId();\n\n return (\n <div className=\"ms-Grid\" dir=\"ltr\" style={{ padding: 0, height: '100%' }}>\n <div className=\"ms-Grid-row\" style={{ height: '100%' }}>\n <div className=\"ms-Grid-col ms-sm4\" style={{ padding: 0, height: '100%', borderRight: '1px solid #eaeaea' }}>\n <CommandBar\n items={this.getItems()}\n farItems={this.getFarItems()}\n ariaLabel={'Use left and right arrow keys to navigate between commands'}\n />\n {this.state.showList && (\n <div style={divStyle}>\n <List\n getUrl={this.getUrl}\n handleResponse={this.handleResponse}\n onCustomBuildColumns={this.onCustomBuildColumns}\n selection={this.selection}\n selectionMode={SelectionMode.single}\n selectKeyOnInit={`${id}`}\n enableSearch={true}\n enableSort={true}\n height={'100%'}\n underlined={true}\n styles={{ root: { marginTop: '5px', height: '100%' } }}\n />\n </div>\n )}\n </div>\n <div className=\"ms-Grid-col ms-sm8\" style={{ padding: 0 }}>\n <Switch>\n <Route\n exact={true}\n path={`${match.url}/new`}\n // tslint:disable-next-line:jsx-no-lambda\n render={props => (\n <TemplateAdminForm\n baseUrl={URL_BASE}\n onCancel={this.onCancel}\n onSubmitSuccess={this.onSubmitSuccess}\n onSubmitError={this.onSubmitError}\n getDynamicTranslation={this.getDynamicTranslationInternal}\n titleOnPanels={true}\n allowMenus={false}\n allowDisplayProperties={false}\n labelTitleNew={t('templateAdmin.title.new')}\n labelTitleEdit={t('templateAdmin.title.edit')}\n labelFormTemplateName={t('templateAdmin.form.templateName')}\n labelCmdBarBtnSave={t('templateAdmin.cmdBar.main.save')}\n labelCmdBarBtnEdit={t('templateAdmin.cmdBar.main.edit')}\n labelCmdBarBtnCancel={t('templateAdmin.cmdBar.main.cancel')}\n labelCmdBarFarBtnAdd={t('templateAdmin.cmdBar.far.addProperty')}\n labelCmdBarFarBtnReset={t('templateAdmin.cmdBar.far.reset')}\n labelCmdBarFarBtnResults={t('templateAdmin.cmdBar.far.results')}\n labelDialogTitleDelete={t('templateAdmin.dialog.delete.title')}\n labelDialogSubtextPrefixDelete={t('templateAdmin.dialog.delete.subtext.prefix')}\n labelDialogSubtextSuffixDelete={t('templateAdmin.dialog.delete.subtext.suffix')}\n labelDialogBtnDelete={t('templateAdmin.dialog.delete.buttons.delete')}\n labelDialogBtnCancel={t('templateAdmin.dialog.delete.buttons.cancel')}\n labelDialogTitleReset={t('templateAdmin.dialog.reset.title')}\n labelDialogSubtextReset={t('templateAdmin.dialog.reset.subtext')}\n labelDialogBtnReset={t('templateAdmin.dialog.reset.buttons.reset')}\n labelPanelSettingsPropertyTitle={t('templateAdmin.panel.settings.title')}\n labelPanelSettingsOperatorsTitle={t('templateAdmin.panel.settings.operators.title')}\n labelPanelSettingsBtnUseAll={t('templateAdmin.panel.settings.buttons.all')}\n labelPanelSettingsBtnUseSelected={t('templateAdmin.panel.settings.buttons.selected')}\n labelPanelSettingsEquals={t('templateAdmin.panel.settings.operators.equals')}\n labelPanelSettingsStartsWith={t('templateAdmin.panel.settings.operators.startsWith')}\n labelPanelSettingsContains={t('templateAdmin.panel.settings.operators.contains')}\n labelPanelSettingsIsEmpty={t('templateAdmin.panel.settings.operators.empty')}\n labelPanelSettingsGreaterThan={t('templateAdmin.panel.settings.operators.gt')}\n labelPanelSettingsLessThan={t('templateAdmin.panel.settings.operators.lt')}\n labelPanelSettingsWithin={t('templateAdmin.panel.settings.operators.within')}\n labelPanelSettingsIncludes={t('templateAdmin.panel.settings.operators.includes')}\n labelPanelDisplayPropertiesTitle={t('templateAdmin.panel.display.title')}\n labelPanelAddPropertiesTitle={t('templateAdmin.panel.addProperties.title')}\n labelPanelAddPropertiesProperty={t('templateAdmin.panel.addProperties.property')}\n labelPanelAddBtnAdd={t('templateAdmin.panel.addProperties.buttons.add')}\n labelPanelAddBtnCancel={t('templateAdmin.panel.addProperties.buttons.cancel')}\n labelMovListAvailable={t('templateAdmin.move.available')}\n labelMovListSelected={t('templateAdmin.move.selected')}\n labelIconOperatorDelete={t('templateAdmin.form.icons.delete')}\n labelIconOperatorSetting={t('templateAdmin.form.icons.settings')}\n labelIconOperatorUp={t('templateAdmin.form.icons.up')}\n labelIconOperatorDown={t('templateAdmin.form.icons.down')}\n labelPanelMenusTitle={t('templateAdmin.panel.menus.title')}\n />\n )}\n />\n <Route\n exact={true}\n path={`${match.url}/:templateId(\\\\d+)/edit`}\n // tslint:disable-next-line:jsx-no-lambda\n render={props => (\n <div>\n <TemplateAdminForm\n baseUrl={URL_BASE}\n id={props.match.params.templateId}\n onCancel={this.onCancel}\n onSubmitSuccess={this.onSubmitSuccess}\n onSubmitError={this.onSubmitError}\n getDynamicTranslation={this.getDynamicTranslationInternal}\n titleOnPanels={true}\n allowMenus={false}\n allowDisplayProperties={false}\n labelTitleNew={t('templateAdmin.title.new')}\n labelTitleEdit={t('templateAdmin.title.edit')}\n labelFormTemplateName={t('templateAdmin.form.templateName')}\n labelCmdBarBtnSave={t('templateAdmin.cmdBar.main.save')}\n labelCmdBarBtnEdit={t('templateAdmin.cmdBar.main.edit')}\n labelCmdBarBtnCancel={t('templateAdmin.cmdBar.main.cancel')}\n labelCmdBarFarBtnAdd={t('templateAdmin.cmdBar.far.addProperty')}\n labelCmdBarFarBtnReset={t('templateAdmin.cmdBar.far.reset')}\n labelCmdBarFarBtnResults={t('templateAdmin.cmdBar.far.results')}\n labelDialogTitleDelete={t('templateAdmin.dialog.delete.title')}\n labelDialogSubtextPrefixDelete={t('templateAdmin.dialog.delete.subtext.prefix')}\n labelDialogSubtextSuffixDelete={t('templateAdmin.dialog.delete.subtext.suffix')}\n labelDialogBtnDelete={t('templateAdmin.dialog.delete.buttons.delete')}\n labelDialogBtnCancel={t('templateAdmin.dialog.delete.buttons.cancel')}\n labelDialogTitleReset={t('templateAdmin.dialog.reset.title')}\n labelDialogSubtextReset={t('templateAdmin.dialog.reset.subtext')}\n labelDialogBtnReset={t('templateAdmin.dialog.reset.buttons.reset')}\n labelPanelSettingsPropertyTitle={t('templateAdmin.panel.settings.title')}\n labelPanelSettingsOperatorsTitle={t('templateAdmin.panel.settings.operators.title')}\n labelPanelSettingsBtnUseAll={t('templateAdmin.panel.settings.buttons.all')}\n labelPanelSettingsBtnUseSelected={t('templateAdmin.panel.settings.buttons.selected')}\n labelPanelSettingsEquals={t('templateAdmin.panel.settings.operators.equals')}\n labelPanelSettingsStartsWith={t('templateAdmin.panel.settings.operators.startsWith')}\n labelPanelSettingsContains={t('templateAdmin.panel.settings.operators.contains')}\n labelPanelSettingsIsEmpty={t('templateAdmin.panel.settings.operators.empty')}\n labelPanelSettingsGreaterThan={t('templateAdmin.panel.settings.operators.gt')}\n labelPanelSettingsLessThan={t('templateAdmin.panel.settings.operators.lt')}\n labelPanelSettingsWithin={t('templateAdmin.panel.settings.operators.within')}\n labelPanelSettingsIncludes={t('templateAdmin.panel.settings.operators.includes')}\n labelPanelDisplayPropertiesTitle={t('templateAdmin.panel.display.title')}\n labelPanelAddPropertiesTitle={t('templateAdmin.panel.addProperties.title')}\n labelPanelAddBtnAdd={t('templateAdmin.panel.addProperties.buttons.add')}\n labelPanelAddBtnCancel={t('templateAdmin.panel.addProperties.buttons.cancel')}\n labelMovListAvailable={t('templateAdmin.move.available')}\n labelMovListSelected={t('templateAdmin.move.selected')}\n labelIconOperatorDelete={t('templateAdmin.form.icons.delete')}\n labelIconOperatorSetting={t('templateAdmin.form.icons.settings')}\n labelIconOperatorUp={t('templateAdmin.form.icons.up')}\n labelIconOperatorDown={t('templateAdmin.form.icons.down')}\n labelPanelMenusTitle={t('templateAdmin.panel.menus.title')}\n />\n </div>\n )}\n />\n </Switch>\n </div>\n </div>\n <div className=\"ms-Grid-row\">\n <div className=\"ms-Grid-col ms-sm12\" style={{ height: '1px' }}>\n {renderToastContainer()}\n </div>\n </div>\n </div>\n );\n }\n\n private onCustomBuildColumns(): IColumn[] {\n console.log('Set custom columns');\n return [\n {\n key: 'name',\n name: 'Name',\n fieldName: 'name',\n minWidth: 210,\n maxWidth: 350,\n isRowHeader: true,\n isResizable: false,\n isSorted: true,\n isSortedDescending: false,\n sortAscendingAriaLabel: 'Sorted A to Z',\n sortDescendingAriaLabel: 'Sorted Z to A',\n data: 'string',\n isPadded: true\n }\n ];\n }\n\n private onSelectionChanged(selection: IObjectWithKey[]) {\n if (selection.length === 1) {\n this.props.history.push(`/search/template/${(selection[0] as any).id}/edit`);\n } else {\n this.props.history.push(`/search/template/`);\n }\n }\n\n private isNull(value: any) {\n return value == null || value === 'null' || value === undefined;\n }\n\n private handleResponse(items: any[]) {\n return items;\n }\n\n private getUrl(search: string, page: number, sortBy?: string, sortDesc?: boolean) {\n const qValue = this.isNull(search) ? '' : `&q=${search}`;\n const sortByValue = this.isNull(sortBy) ? '' : `&_sort=${sortBy}`;\n let sortDescValue = '';\n\n if (!this.isNull(sortDesc)) {\n sortDescValue = sortDesc ? '&_order=desc' : '&_order=asc';\n }\n const url = `${URL_BASE}templates/?_start=${page}&_limit=20${qValue}${sortByValue}${sortDescValue}`;\n return url;\n }\n\n private onCancel(): void {\n console.log('onCancel ...');\n this.selection.setAllSelected(false);\n\n this.props.history.push(`/search/template/`);\n }\n\n private onSubmitSuccess(response: any): void {\n console.log('onSubmitSuccess ...', response);\n const id = this.getId();\n const message = id ? 'Template edited.' : 'Template created';\n const msg: ISuccessMessage = {\n title: 'Success',\n message\n };\n successToast(msg);\n this.selection.setAllSelected(false);\n this.props.history.push(`/search/template/`);\n }\n\n private onSubmitError(error: any): void {\n const errorObj = error.response.data;\n const id = this.getId();\n const title = id ? 'Error editing Template' : 'Error creating new Template';\n\n const msg: IErrorMessage = {\n title,\n message: errorObj.message,\n error: errorObj\n };\n errorToast(msg);\n }\n\n private getItems = () => {\n const { t } = this.props;\n return [\n {\n key: 'newItem',\n name: t('templateAdmin.list.cmdBar.new'),\n iconProps: {\n iconName: 'Add'\n },\n onClick: this.onNew\n }\n ];\n };\n\n private getFarItems = () => {\n const { t } = this.props;\n return [\n {\n key: 'delete',\n name: t('templateAdmin.list.cmdBar.delete'),\n iconProps: {\n iconName: 'Delete'\n },\n onClick: this.onDelete\n }\n ];\n };\n\n private getId(): any {\n return /\\d+/.exec(this.props.location.pathname);\n }\n\n private onNew() {\n this.selection.setAllSelected(false);\n this.props.history.push(`/search/template/new`);\n }\n\n private onDelete(): any {\n const id = this.getId();\n if (!id) {\n return;\n }\n Api.delete(`templates/${id}`)\n .then(response => {\n const msg: ISuccessMessage = {\n title: 'Success',\n message: 'Template Deleted with success!'\n };\n successToast(msg);\n this.selection.setAllSelected(false);\n this.props.history.push(`/search/template/`);\n })\n .catch(error => {\n const data = error.response.data;\n const msg: IErrorMessage = {\n title: 'Error',\n message: `Error Deleting Template: ${data.status}:${data.message}`,\n error: data\n };\n errorToast(msg);\n });\n }\n\n private getDynamicTranslationInternal = (keySuffix: string): string => {\n if (!keySuffix) {\n return keySuffix;\n }\n const { t } = this.props;\n const key = `templateAdmin.form.dynamic.${keySuffix.toLowerCase()}`;\n const value = t(key);\n\n return value !== key ? value : keySuffix;\n };\n}\n\nexport default withRouter(connect(\n null,\n mapDispatchToProps\n)(withTranslation()(TemplateAdmin)) as any);\n","import { Fabric } from 'office-ui-fabric-react/lib/Fabric';\nimport * as React from 'react';\nimport { Route, Switch, withRouter } from 'react-router-dom';\nimport NotFound from '../../../../components/404/404';\nimport SecuredRoute from '../../../../components/SecuredRoute/SecuredRoute';\nimport DrawerGroupAdmin from '../../DrawerGroupsAdmin/DrawerGroupsAdmin';\nimport Home from '../../Home/Home';\nimport MenuAdmin from '../../MenuAdmin/MenuAdmin';\nimport SearchTemplate from '../../SearchTemplate/SearchTemplate';\nimport Tabs from '../../Tabs/Tabs';\nimport TemplateAdmin from '../../TemplateAdmin/TemplateAdmin';\nimport './Content.css';\n\nclass Content extends React.PureComponent<any, any> {\n constructor(props: any) {\n super(props);\n\n this.state = {\n previousLocation: this.props.location\n };\n }\n\n public componentDidUpdate(nextProps: any) {\n const { location } = this.props;\n // set previousLocation if props.location is not modal\n if (nextProps.history.action !== 'POP' && (!location.state || !location.state.modal)) {\n this.setState({ previousLocation: this.props.location });\n }\n }\n\n public render(): JSX.Element {\n const { location } = this.props;\n const isModal = !!(location.state && location.state.modal && this.state.previousLocation !== location);\n\n return (\n <Fabric className=\"content\" style={{ height: '100%' }}>\n <Switch location={isModal ? this.state.previousLocation : location}>\n <SecuredRoute exact={true} path=\"/search\" component={Home} />\n <SecuredRoute exact={true} path=\"/search/home\" component={Home} />\n\n <SecuredRoute exact={true} path=\"/search/results\" component={Tabs} />\n <SecuredRoute exact={true} path=\"/search/template/:templateId(\\d+)/results\" component={Tabs} />\n\n <SecuredRoute path=\"/search/template\" component={TemplateAdmin} />\n\n <SecuredRoute path=\"/search/menu\" component={MenuAdmin} />\n <SecuredRoute exact={true} path=\"/search/template/:templateId(\\d+)\" component={SearchTemplate} />\n\n <SecuredRoute path=\"/search/drawergroups\" component={DrawerGroupAdmin} />\n\n <SecuredRoute component={NotFound} />\n </Switch>\n\n {isModal ? <Route exact={true} path=\"/search/template/:templateId(\\d+)\" component={SearchTemplate} /> : null}\n </Fabric>\n );\n }\n}\n\nexport default withRouter(Content);\n","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { getFAIcon, toTemplateResult } from 'enchoice-fabric-react-lib';\nimport { ActionButton, IconButton } from 'office-ui-fabric-react/lib/Button';\nimport { ContextualMenuItemType } from 'office-ui-fabric-react/lib/ContextualMenu';\nimport { Fabric } from 'office-ui-fabric-react/lib/Fabric';\nimport { Persona, PersonaInitialsColor, PersonaSize } from 'office-ui-fabric-react/lib/Persona';\nimport { createTheme, getTheme } from 'office-ui-fabric-react/lib/Styling';\nimport * as React from 'react';\nimport { withTranslation } from 'react-i18next';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport ReactSVG from 'react-svg';\nimport { Dispatch } from 'redux';\nimport Api from '../../../../components/Api';\nimport { LoginMode, SecurityActionTypes } from '../../../../redux/Actions/Security/ActionTypes';\nimport { IRootState } from '../../../../redux/Reducers/RootReducer';\n// import HeaderSearchBox from './HeaderSearchBox/HeaderSearchBox';\nimport './Header.css';\n\nconst numberOfQuickButtons = 2;\n\nconst headerTheme = createTheme({\n palette: {\n neutralPrimary: '#fff'\n }\n});\n\nconst embeddedStyle: React.CSSProperties = {\n height: '70px',\n backgroundRepeat: 'repeat-x',\n backgroundColor: 'unset !important',\n padding: 0\n};\n\nconst normalStyle: React.CSSProperties = {\n height: '70px',\n backgroundRepeat: 'repeat-x',\n backgroundImage: 'linear-gradient(#666565, #454343 50%, #242121)',\n padding: '8px 0 0 0',\n color: '#fff',\n fontSize: '22px',\n fontWeight: 400,\n lineHeight: '50px'\n};\n\nfunction mapDispatchToProps(dispatch: Dispatch) {\n return {\n logout: () => dispatch({ type: SecurityActionTypes.LOGOUT_USER })\n };\n}\n\nfunction mapStateToProps(state: IRootState, ownProps: any) {\n return { username: state.securityState.security.username, loginMode: state.securityState.security.loginMode };\n}\n\nexport interface IQuickButtonInfo {\n id: number;\n name: string;\n template: number;\n icon: string;\n}\n\nexport interface IHeaderState {\n isCalloutVisible: boolean;\n isSearchCalloutVisible: boolean;\n recentSearches: any[];\n quickButtons: IQuickButtonInfo[];\n}\n\nclass Header extends React.PureComponent<any, IHeaderState> {\n /* private menuButtonElement = createRef<HTMLElement>(); */\n\n constructor(props: any) {\n super(props);\n this.state = {\n isCalloutVisible: false,\n isSearchCalloutVisible: false,\n recentSearches: [],\n quickButtons: []\n };\n\n this.getLogo = this.getLogo.bind(this);\n this.getPersona = this.getPersona.bind(this);\n this.getQuickButtons = this.getQuickButtons.bind(this);\n\n this.goToHome = this.goToHome.bind(this);\n this.goToSettings = this.goToSettings.bind(this);\n this.goToTemplates = this.goToTemplates.bind(this);\n this.goToMenus = this.goToMenus.bind(this);\n this.goToShortcut = this.goToShortcut.bind(this);\n this.goToQuickButton = this.goToQuickButton.bind(this);\n this.goToDrawerGroups = this.goToDrawerGroups.bind(this);\n\n this.logout = this.logout.bind(this);\n }\n\n public componentDidMount() {\n Api.get(`quickbuttons?_limit=${numberOfQuickButtons}`)\n .then(response => {\n this.setState({ quickButtons: response.data.data });\n })\n .catch(error => {\n console.log('Error:', error);\n });\n }\n\n public render(): JSX.Element {\n const isEmbeddedLogin = !!(this.props.loginMode && this.props.loginMode === LoginMode.EMBEDDED);\n\n return (\n <Fabric className=\"ms-Grid headerBar\" dir=\"ltr\" style={isEmbeddedLogin ? embeddedStyle : normalStyle}>\n <div className=\"ms-Grid-row \" style={{ padding: '0', margin: 0 }}>\n <div className=\"ms-Grid-col ms-sm3 ms-md3 ms-lg3\" style={{ padding: '0' }}>\n <div className=\"headerIcon\" /* ref={this.menuButtonElement} */>\n {this.getLogo(isEmbeddedLogin)}\n {/* <DefaultButton\n primary={true}\n disabled={false}\n checked={false}\n iconProps={{\n iconName: 'Waffle',\n style: {\n color: 'white',\n fontSize: '40px'\n }\n }}\n onClick={this.onShowMenuClicked}\n style={{ height: '50px', width: '50px', minWidth: '50px' }}\n /> */}\n </div>\n\n {/* <Callout\n ariaLabelledBy={'callout-label-1'}\n ariaDescribedBy={'callout-description-1'}\n role={'alertdialog'}\n gapSpace={1}\n isBeakVisible={true}\n beakWidth={10}\n onDismiss={this.onCalloutDismiss}\n setInitialFocus={true}\n hidden={!this.state.isCalloutVisible}\n target={this.menuButtonElement.value}\n >\n <div className=\"ms-Grid\">\n <div className=\"ms-Grid-row\">\n <div className=\"ms-Grid-col ms-sm ms-md ms-lg calloutDiv calloutDivBlue\" onClick={this.onCalloutDismiss}>\n <i className=\"ms-Icon ms-Icon--FolderList calloutIcon\" aria-hidden=\"true\" />\n <br />\n <span className=\"calloutText\">KTX</span>\n </div>\n <div className=\"ms-Grid-col ms-sm ms-md ms-lg calloutDiv calloutDivPurle\" onClick={this.onCalloutDismiss}>\n <i className=\"ms-Icon ms-Icon--Money calloutIcon\" aria-hidden=\"true\" />\n <br />\n <span className=\"calloutText\">Kwiwk Expense</span>\n </div>\n <div className=\"ms-Grid-col ms-sm ms-md ms-lg calloutDiv calloutDivOrange\" onClick={this.onCalloutDismiss}>\n <i className=\"ms-Icon ms-Icon--Suitcase calloutIcon\" aria-hidden=\"true\" />\n <br />\n <span className=\"calloutText\">Case Manager</span>\n </div>\n </div>\n <div className=\"ms-Grid-row\">\n <div className=\"ms-Grid-col ms-sm ms-md ms-lg calloutDiv calloutDivDeepBlue\" onClick={this.onCalloutDismiss}>\n <i className=\"ms-Icon ms-Icon--Chart calloutIcon\" aria-hidden=\"true\" />\n <br />\n <span className=\"calloutText\">Reports</span>\n </div>\n <div className=\"ms-Grid-col ms-sm ms-md ms-lg calloutDiv calloutDivGreen\" onClick={this.onCalloutDismiss}>\n <i className=\"ms-Icon ms-Icon--GroupObject calloutIcon\" aria-hidden=\"true\" />\n <br />\n <span className=\"calloutText\">Module Manager</span>\n </div>\n <div className=\"ms-Grid-col ms-sm ms-md ms-lg calloutDiv calloutDivFadedRed\" onClick={this.onCalloutDismiss}>\n <i className=\"ms-Icon ms-Icon--People calloutIcon\" aria-hidden=\"true\" />\n <br />\n <span className=\"calloutText\">User Manager</span>\n </div>\n </div>\n <div className=\"ms-Grid-row\">\n <div className=\"ms-Grid-col ms-sm ms-md ms-lg calloutDiv calloutDivLightBlue\" onClick={this.onCalloutDismiss}>\n <i className=\"ms-Icon ms-Icon--Settings calloutIcon\" aria-hidden=\"true\" />\n <br />\n <span className=\"calloutText\">Settings</span>\n </div>\n <div className=\"ms-Grid-col ms-sm ms-md ms-lg calloutDiv calloutDivRed\" onClick={this.onCalloutDismiss}>\n <i className=\"ms-Icon ms-Icon--Admin calloutIcon\" aria-hidden=\"true\" />\n <br />\n <span className=\"calloutText\">KwikTag Admin</span>\n </div>\n <div className=\"ms-Grid-col ms-sm ms-md ms-lg calloutDiv calloutDivLightGreen\" onClick={this.onCalloutDismiss}>\n <i className=\"ms-Icon ms-Icon--Boards calloutIcon\" aria-hidden=\"true\" />\n <br />\n <span className=\"calloutText\">Logs</span>\n </div>\n </div>\n </div>\n </Callout> */}\n </div>\n <div className=\"ms-Grid-col ms-sm6\" style={{ paddingTop: '10px' }}>\n {/*<HeaderSearchBox />*/}\n </div>\n <div className=\"ms-Grid-col ms-sm3\" style={{ paddingTop: '10px' }}>\n {this.getPersona(isEmbeddedLogin)}\n {this.getQuickButtons()}\n </div>\n </div>\n </Fabric>\n );\n }\n\n private getLogo(isEmbeddedLogin: boolean): JSX.Element {\n if (isEmbeddedLogin) {\n return <></>;\n }\n return (\n <ActionButton\n className=\"headerText\"\n allowDisabledFocus={true}\n onClick={this.goToHome}\n styles={{ root: { color: getTheme().palette.themePrimary, verticalAlign: 'middle' } }}\n >\n <ReactSVG\n src={process.env.PUBLIC_URL + '/KTX_Logo_4.svg'}\n //evalScripts=\"always\"\n // tslint:disable-next-line:jsx-no-lambda\n fallback={() => <span>KTX</span>}\n // tslint:disable-next-line:jsx-no-lambda\n loading={() => <span>KTX</span>}\n // tslint:disable-next-line:jsx-no-lambda\n afterInjection={(error, svg) => {\n if (error) {\n console.error(error);\n return;\n }\n }}\n beforeInjection={svg => {\n svg.classList.add('ktxHeaderLogo');\n }}\n renumerateIRIElements={false}\n wrapper=\"span\"\n className=\"wrapper-class-name\"\n />\n </ActionButton>\n );\n }\n\n private getPersona(isEmbeddedLogin: boolean): JSX.Element {\n const { t } = this.props;\n\n const menuItems = [\n /*\n {\n iconProps: {\n iconName: 'PlayerSettings'\n },\n key: 'settings',\n onClick: this.goToSettings,\n text: t('header.menu.settings')\n },*/\n {\n iconProps: {\n iconName: 'SearchAndApps'\n },\n key: 'templates',\n onClick: this.goToTemplates,\n text: t('header.menu.templates')\n },\n {\n iconProps: {\n iconName: 'FabricFolder'\n },\n key: 'drawergroups',\n onClick: this.goToDrawerGroups,\n text: t('header.menu.drawergroups')\n }\n /*,\n {\n iconProps: {\n iconName: 'CollapseMenu'\n },\n key: 'menus',\n onClick: this.goToMenus,\n text: t('header.menu.menus')\n },\n {\n iconProps: {\n iconName: 'PowerButton'\n },\n key: 'quickbutton',\n onClick: this.goToQuickButton,\n text: t('header.menu.quickbuttons')\n }*/\n ];\n\n const extraMenuItems = [\n {\n key: 'divider_1',\n itemType: ContextualMenuItemType.Divider\n },\n {\n key: 'logout',\n text: t('header.menu.logout'),\n iconProps: {\n iconName: 'SignOut'\n },\n onClick: this.logout,\n target: '_blank'\n }\n ];\n\n return (\n <ActionButton\n className=\"pullRight persona\"\n allowDisabledFocus={true}\n disabled={false}\n checked={true}\n menuProps={{\n items: isEmbeddedLogin ? menuItems : [...menuItems, ...extraMenuItems],\n shouldFocusOnMount: true\n }}\n styles={{ root: { marginTop: '-5px' } }}\n >\n {!isEmbeddedLogin ? (\n <Persona\n size={PersonaSize.size24}\n initialsColor={PersonaInitialsColor.purple}\n text={this.props.username}\n className=\"pullRight persona\"\n theme={headerTheme}\n />\n ) : (\n <></>\n )}\n </ActionButton>\n );\n }\n\n private getQuickButtons(): JSX.Element[] {\n const { quickButtons } = this.state;\n\n return quickButtons.map(btn => {\n return (\n <IconButton\n key={btn.id}\n className=\"quickbutton\"\n allowDisabledFocus={true}\n disabled={false}\n checked={false}\n title={btn.name}\n ariaLabel={btn.name}\n // tslint:disable-next-line:jsx-no-lambda\n onClick={() => this.goToShortcut(btn.template)}\n styles={{ root: { color: getTheme().palette.themePrimary, fontSize: '20px' } }}\n >\n <FontAwesomeIcon icon={getFAIcon(btn.icon)} />\n </IconButton>\n );\n });\n }\n\n private goToHome(): void {\n this.props.history.push('/search');\n }\n\n private goToSettings(): void {\n this.props.history.push('/search/settings');\n }\n private goToTemplates(): void {\n this.props.history.push('/search/template');\n }\n\n private goToDrawerGroups(): void {\n this.props.history.push('/search/drawergroups');\n }\n\n private goToMenus(): void {\n this.props.history.push('/search/menu');\n }\n\n private goToQuickButton(): void {\n this.props.history.push('/search/quickbutton');\n }\n\n private logout(): void {\n this.props.logout();\n }\n\n private goToShortcut(template: number | string): void {\n Api.get(`templates/${template}`)\n .then(response => {\n const encoded = toTemplateResult(response.data);\n this.props.history.push(`/search/template/${template}/results?properties=${encoded}`);\n })\n .catch(error => {\n console.log('Error:', error);\n console.log('Error Response:', 'Request failed with status code ' + error.response.status, error.response);\n });\n }\n\n /* private onShowMenuClicked = (): void => {\n this.setState({\n isCalloutVisible: !this.state.isCalloutVisible\n });\n };\n\n private onCalloutDismiss = (): void => {\n this.setState({\n isCalloutVisible: false\n });\n }; */\n}\n\nexport default withRouter(connect(\n mapStateToProps,\n mapDispatchToProps\n)(withTranslation()(Header)) as any);\n","import * as React from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport BreadCrumbs from '../../components/BreadCrumbs/BreadCrumbs';\nimport { LoginMode } from '../../redux/Actions/Security/ActionTypes';\nimport { IRootState } from '../../redux/Reducers/RootReducer';\nimport Content from './layout/Content/Content';\nimport Header from './layout/Header/Header';\nimport './Search.css';\n\n/* import SideNav from './layout/SideNav/SideNav'; */\n\nfunction mapStateToProps(state: IRootState, ownProps: any) {\n return { username: state.securityState.security.username, loginMode: state.securityState.security.loginMode };\n}\n\nclass Search extends React.Component<any, any> {\n public render() {\n const isEmbeddedLogin = !!(this.props.loginMode && this.props.loginMode === LoginMode.EMBEDDED);\n\n return (\n <div className=\"Search\">\n {!isEmbeddedLogin ? (\n <div className=\"header\">\n <Header />\n </div>\n ) : (\n <></>\n )}\n <div className=\"body\">\n <div className=\"center\">\n <Content />\n </div>\n {/* <div className=\"sidebar\">\n <SideNav />\n </div> */}\n </div>\n {!isEmbeddedLogin ? (\n <div className=\"footer\">\n <BreadCrumbs />\n </div>\n ) : (\n <></>\n )}\n </div>\n );\n }\n}\n\nexport default withRouter(connect(\n mapStateToProps,\n null\n)(Search) as any);\n","import * as React from 'react';\nimport { Redirect, Switch, withRouter } from 'react-router';\nimport './Apps.css';\nimport SecuredRoute from './components/SecuredRoute/SecuredRoute';\nimport Payables from './pages/Payables/Payables';\nimport Search from './pages/Search/Search';\n\nclass Apps extends React.Component<any, any> {\n public render() {\n return (\n <Switch>\n <SecuredRoute path=\"/search\" component={Search} />\n <SecuredRoute path=\"/payables\" component={Payables} />\n\n <Redirect\n to={{\n pathname: '/search'\n }}\n />\n </Switch>\n );\n }\n}\n\nexport default withRouter(Apps);\n","import {\n BaseButton,\n Button,\n DefaultButton,\n mergeStyleSets,\n MessageBar,\n MessageBarType,\n Spinner,\n SpinnerSize,\n Stack\n} from 'office-ui-fabric-react';\nimport * as React from 'react';\nimport ReactSVG from 'react-svg';\nimport './Auth.css';\n\nexport interface IAuthState {}\n\nexport interface IAuthProps {\n buttonShow?: boolean;\n buttonText: string;\n buttonDisabled: boolean;\n isProcessing: boolean;\n buttonOnClick: () => void;\n messageText?: string;\n messageType?: MessageBarType;\n onKeyPress: (ev: React.KeyboardEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement | BaseButton | Button>) => void;\n}\n\nclass Auth extends React.PureComponent<IAuthProps, IAuthState> {\n public static defaultProps = {\n buttonShow: true\n };\n\n constructor(props: IAuthProps) {\n super(props);\n\n this.state = {};\n }\n\n public componentDidMount() {}\n\n public render(): JSX.Element {\n const styles = mergeStyleSets({\n root: {\n background: 'url(\"' + process.env.PUBLIC_URL + '/background.jpg\") 50% fixed',\n backgroundSize: 'cover',\n height: '100vh'\n },\n stackMargin: {\n selectors: {\n '@media screen and (min-width: 640px)': {\n marginRight: '20%'\n },\n '@media screen and (max-width: 640px)': {\n margin: 'auto',\n width: '90%'\n }\n }\n },\n login: {\n background: '#ffffff',\n boxShadow: '0px 1px 5px rgba(0, 0, 0, 0.3)',\n selectors: {\n '@media screen and (min-width: 640px)': {\n width: '400px',\n marginTop: '35%'\n },\n '@media screen and (max-width: 640px)': {\n width: '100%',\n marginTop: '0'\n }\n }\n },\n loginMsg: {\n selectors: {\n '@media screen and (min-width: 640px)': {\n width: '400px'\n },\n '@media screen and (max-width: 640px)': {\n width: '100%'\n }\n }\n },\n inputs: {\n padding: '0 20px',\n selectors: {\n '& > div': {\n marginBottom: '5px'\n }\n }\n }\n });\n\n return (\n <div className={styles.root}>\n <Stack horizontal horizontalAlign=\"end\" verticalFill>\n <Stack verticalAlign={'start'} style={{ background: 'rgba(255, 255, 255, 0.62)' }} className={styles.stackMargin}>\n <Stack.Item>\n <div className={styles.login}>\n <ReactSVG\n src={process.env.PUBLIC_URL + '/KTX_Logo_4.svg'}\n fallback={() => <span>KTX</span>}\n loading={() => <span>KTX</span>}\n afterInjection={(error, svg) => {\n if (error) {\n console.error(error);\n return;\n }\n }}\n beforeInjection={svg => {\n svg.classList.add('ktxlogo');\n svg.setAttribute('style', 'max-width: 250px; display: block; margin: auto; padding: 30px 0 30px 0');\n }}\n // svgStyle={{ maxWidth: '250px', display: 'block', margin: 'auto', padding: '30px 0 30px 0' }}\n renumerateIRIElements={false}\n wrapper=\"span\"\n className=\"ktxlogowrapper\"\n />\n <div className={styles.inputs} onKeyPress={this.props.onKeyPress}>\n {this.props.children}\n </div>\n <div className=\"footer\" style={{ visibility: this.props.buttonShow ? 'visible' : 'hidden' }}>\n <DefaultButton\n primary={true}\n type={'submit'}\n onClick={this.props.buttonOnClick}\n disabled={this.props.buttonDisabled}\n style={{\n width: '100%',\n height: '60px',\n marginTop: '20px',\n border: '0px solid rgba(0,0,0,0.1)'\n }}\n >\n {this.props.isProcessing ? (\n <Spinner size={SpinnerSize.large} label=\"Submitting...\" ariaLive=\"assertive\" labelPosition=\"right\" />\n ) : (\n <div style={{ fontSize: '17px' }}>\n {/* <Icon iconName=\"FollowUser\" style={{ marginRight: 10 }} /> */}\n {this.props.buttonText}\n </div>\n )}\n </DefaultButton>\n </div>\n </div>\n {this.props.messageText ? (\n <div style={{ backgroundColor: '#fff' }} className={styles.loginMsg}>\n <MessageBar messageBarType={this.props.messageType} isMultiline={true}>\n {this.props.messageText}\n </MessageBar>\n </div>\n ) : null}\n </Stack.Item>\n </Stack>\n </Stack>\n </div>\n );\n }\n}\n\nexport default Auth;\n","import { BaseButton, Button, Icon, ITextField, ITextFieldProps, Link, MessageBar, MessageBarType, TextField } from 'office-ui-fabric-react';\nimport * as React from 'react';\nimport { withRouter } from 'react-router';\nimport Api from '../../Api';\nimport Auth from '../Auth';\nimport '../Auth.css';\nimport './ForgotNewPw.css';\n\nexport interface IForgotNewPwState {\n guid: string;\n password?: string;\n confPassword?: string;\n success?: boolean;\n validInput: boolean;\n validMsg?: string;\n validGuid: boolean;\n message?: string;\n messageType?: MessageBarType;\n isProcessing: boolean;\n}\n\nclass ForgotNewPw extends React.PureComponent<any, IForgotNewPwState> {\n constructor(props: any) {\n super(props);\n\n const {\n match: { params }\n } = this.props;\n\n this.state = {\n guid: params.guid,\n isProcessing: false,\n validInput: false,\n validGuid: true,\n success: false\n };\n this.getForm = this.getForm.bind(this);\n this.submit = this.submit.bind(this);\n this.validateGuid = this.validateGuid.bind(this);\n this.onKeyPress = this.onKeyPress.bind(this);\n this.getErrorMessage = this.getErrorMessage.bind(this);\n this.onNotifyValidationResult = this.onNotifyValidationResult.bind(this);\n\n this.validatePw = this.validatePw.bind(this);\n this.validateConfPw = this.validateConfPw.bind(this);\n }\n\n private componentRef = React.createRef<ITextField>();\n\n public componentDidMount() {\n this.validateGuid();\n }\n\n public render(): JSX.Element {\n return (\n <Auth\n buttonShow={this.state.validGuid && !this.state.success}\n buttonText={'Submit'}\n buttonDisabled={this.state.isProcessing || !this.state.validInput}\n buttonOnClick={this.submit}\n isProcessing={this.state.isProcessing}\n messageText={this.state.message}\n messageType={this.state.messageType}\n onKeyPress={this.onKeyPress}\n >\n {this.state.validGuid ? (this.state.success ? this.getSuccessMsg() : this.getForm()) : this.getInvalidGuid()}\n </Auth>\n );\n }\n\n private getInvalidGuid(): JSX.Element {\n return (\n <MessageBar messageBarType={MessageBarType.blocked} isMultiline={true}>\n Password reset link is not valid! <Link href=\"../forgot\">Try again?</Link>\n </MessageBar>\n );\n }\n\n private getSuccessMsg(): JSX.Element {\n return (\n <MessageBar messageBarType={MessageBarType.success} isMultiline={true}>\n Your password has been changed successfully!\n </MessageBar>\n );\n }\n\n private getForm(): JSX.Element {\n return (\n <>\n <div>Forgotten your password?</div>\n <div>Enter a new password for your account!</div>\n <TextField\n componentRef={this.componentRef}\n className=\"inputField\"\n type={'password'}\n placeholder=\"Password\"\n ariaLabel=\"Please enter password here\"\n defaultValue={this.state.password ? this.state.password : undefined}\n disabled={this.state.isProcessing}\n deferredValidationTime={100}\n validateOnLoad={false}\n onGetErrorMessage={this.getErrorMessage}\n errorMessage={this.state.validMsg}\n onNotifyValidationResult={this.onNotifyValidationResult}\n onChange={(ev, input) => {\n this.setState({ password: input ? input : '' });\n // this.validateConfPw();\n }}\n prefix=\"AzureKeyVault\"\n onRenderPrefix={this.onRenderPrefix}\n />\n <TextField\n className=\"inputField\"\n type={'password'}\n placeholder=\"Re-enter Password\"\n ariaLabel=\"Please confirm password\"\n defaultValue={this.state.confPassword ? this.state.confPassword : undefined}\n disabled={this.state.isProcessing}\n deferredValidationTime={50}\n validateOnLoad={false}\n onGetErrorMessage={this.getErrorMessage}\n errorMessage={this.state.validMsg}\n onNotifyValidationResult={this.onNotifyValidationResult}\n onChange={(ev, input) => {\n this.setState({ confPassword: input ? input : '' });\n // this.validatePw();\n }}\n prefix=\"AzureKeyVault\"\n onRenderPrefix={this.onRenderPrefix}\n />\n </>\n );\n }\n\n private onRenderPrefix(props: ITextFieldProps | undefined): JSX.Element {\n return props ? <Icon iconName={props.prefix} /> : <></>;\n }\n\n private getErrorMessage(value: string): string | undefined {\n if (!value) return 'Required';\n if (this.state.password !== this.state.confPassword) {\n this.setState({ validMsg: 'Passwords must match!' });\n } else {\n this.setState({ validMsg: undefined });\n }\n }\n\n private onNotifyValidationResult(errorMessage: string | JSX.Element, value: string | undefined): void {\n this.setState({ validInput: !errorMessage });\n }\n\n private onKeyPress(ev: React.KeyboardEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement | BaseButton | Button>): void {\n if (ev.key === 'Enter' && this.state.validInput && !this.state.isProcessing) {\n this.submit();\n }\n }\n\n private validatePw(): void {\n var temp = this.state.password;\n this.setState({ password: temp + 'x' }, () => {\n this.setState({ password: temp });\n });\n }\n\n private validateConfPw(): void {\n var temp = this.state.confPassword;\n this.setState({ confPassword: temp + 'x' }, () => {\n this.setState({ confPassword: temp });\n });\n }\n\n private validateGuid(): void {\n Api.get('auth/forgot/' + this.state.guid)\n .then(response => {\n const resp: string = response.data;\n console.log('Response: ', resp);\n this.setState({ validGuid: resp ? true : false });\n })\n .catch(error => {\n console.log('error: ', error);\n console.log('error resp: ', error.response);\n const message = error.response\n ? `Request failed with status code ${error.response.status}: ${error.response.statusText}`\n : error.toJSON().message;\n\n this.setState({\n success: false,\n isProcessing: false,\n message: message,\n messageType: MessageBarType.error\n });\n });\n }\n\n private submit(): void {\n this.setState({ isProcessing: true });\n\n const request = {\n password: this.state.password\n };\n\n Api.post('auth/forgot/' + this.state.guid, request)\n .then(response => {\n const resp = response.data;\n console.log('Response: ', resp);\n\n this.setState({\n success: resp && resp.success,\n isProcessing: false,\n message: resp && resp.success ? '' : resp.errorMessage,\n messageType: resp && resp.success ? MessageBarType.success : MessageBarType.error\n });\n })\n .catch(error => {\n console.log('error: ', error);\n console.log('error resp: ', error.response);\n const message = error.response\n ? `Request failed with status code ${error.response.status}: ${error.response.statusText}`\n : error.toJSON().message;\n\n this.setState({\n success: false,\n isProcessing: false,\n message: message,\n messageType: MessageBarType.error\n });\n });\n }\n}\n\nexport default withRouter(ForgotNewPw);\n","import { BaseButton, Button, Icon, ITextFieldProps, MessageBarType, TextField } from 'office-ui-fabric-react';\nimport * as React from 'react';\nimport { withRouter } from 'react-router';\nimport Api from '../../Api';\nimport Auth from '../Auth';\nimport '../Auth.css';\nimport './ForgotPW.css';\n\nexport interface IForgotPWState {\n email?: string;\n success?: boolean;\n validInput: boolean;\n message?: string;\n messageType?: MessageBarType;\n isProcessing: boolean;\n}\n\nclass ForgotPW extends React.PureComponent<any, IForgotPWState> {\n constructor(props: any) {\n super(props);\n\n this.state = {\n isProcessing: false,\n validInput: false\n };\n\n this.submit = this.submit.bind(this);\n this.onKeyPress = this.onKeyPress.bind(this);\n this.onNotifyValidationResult = this.onNotifyValidationResult.bind(this);\n }\n\n public componentDidMount() {\n console.log('Origin:', document.referrer);\n }\n\n public render(): JSX.Element {\n return (\n <Auth\n buttonText={'Submit'}\n buttonDisabled={this.state.isProcessing || !this.state.validInput}\n buttonOnClick={this.submit}\n isProcessing={this.state.isProcessing}\n messageText={this.state.message}\n messageType={this.state.messageType}\n onKeyPress={this.onKeyPress}\n >\n <div>Forgot your password?</div>\n <div>Enter your email to reset your password.</div>\n <TextField\n className=\"inputField\"\n type={'email'}\n placeholder=\"E-mail Address\"\n ariaLabel=\"Please enter your e-mail address here\"\n defaultValue={undefined}\n disabled={this.state.isProcessing}\n deferredValidationTime={50}\n validateOnLoad={false}\n onGetErrorMessage={this.getErrorMessage}\n onNotifyValidationResult={this.onNotifyValidationResult}\n // tslint:disable-next-line:jsx-no-lambda\n onChange={(ev, input) => {\n this.setState({ email: input ? input : '' });\n }}\n prefix=\"MailSolid\"\n onRenderPrefix={this.onRenderPrefix}\n />\n </Auth>\n );\n }\n\n private onRenderPrefix(props: ITextFieldProps | undefined): JSX.Element {\n return props ? <Icon iconName={props.prefix} /> : <></>;\n }\n\n private getErrorMessage(value: string): string | undefined {\n if (!value) return 'Required';\n var regexp = new RegExp(\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n );\n var test = regexp.test(value);\n return !test ? 'Invalid email format' : '';\n }\n\n private onNotifyValidationResult(errorMessage: string | JSX.Element, value: string | undefined): void {\n this.setState({ validInput: !errorMessage });\n }\n\n private onKeyPress(ev: React.KeyboardEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement | BaseButton | Button>): void {\n if (ev.key === 'Enter' && this.state.validInput && !this.state.isProcessing) {\n this.submit();\n }\n }\n\n private submit(): void {\n this.setState({ isProcessing: true });\n\n const request = {\n email: this.state.email\n };\n\n Api.post('auth/forgot', request)\n .then(response => {\n const resp: string = response.data;\n console.log('Response: ', resp);\n this.setState({\n success: true,\n isProcessing: false,\n message: 'Request successfully received! If this email belongs to a valid user, an email will be sent with further instructions.',\n messageType: MessageBarType.success\n });\n })\n .catch(error => {\n console.log('error: ', error);\n console.log('error resp: ', error.response);\n const message = error.response\n ? `Request failed with status code ${error.response.status}: ${error.response.statusText}`\n : error.toJSON().message;\n\n this.setState({\n success: false,\n isProcessing: false,\n message: message,\n messageType: MessageBarType.error\n });\n });\n }\n}\n\nexport default withRouter(ForgotPW);\n","import { BaseButton, Button, Icon, ITextFieldProps, Link, MessageBarType, TextField } from 'office-ui-fabric-react';\nimport * as queryString from 'query-string';\nimport * as React from 'react';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router';\nimport { Dispatch } from 'redux';\nimport { loginToken } from '../../../redux/Actions/Security/ActionCreators';\nimport { ISecurityPayload, LoginMode } from '../../../redux/Actions/Security/ActionTypes';\nimport { IRootState } from '../../../redux/Reducers/RootReducer';\nimport Api from '../../Api';\nimport Auth from '../Auth';\nimport '../Auth.css';\nimport './Login.css';\n\nconst mapDispatchToProps = (dispatch: Dispatch) => {\n return {\n saveToken: (param: ISecurityPayload) => dispatch(loginToken(param))\n };\n};\n\nexport interface ILoginState {\n username?: string;\n password?: string;\n token?: string;\n isProcessing: boolean;\n isAutoLogin: boolean;\n goTo?: string;\n message?: string;\n}\n\nfunction mapStateToProps(state: IRootState, ownProps: any) {\n return { security: state.securityState.security };\n}\n\nclass Login extends React.PureComponent<any, ILoginState> {\n constructor(props: any) {\n super(props);\n\n this.state = {\n isProcessing: false,\n isAutoLogin: false\n };\n\n this.login = this.login.bind(this);\n this.onKeyPress = this.onKeyPress.bind(this);\n }\n\n public componentDidMount() {\n const query = queryString.parse(this.props.location.search);\n\n const user = query.user ? `${query.user}` : undefined;\n const pwd = query.pwd ? `${query.pwd}` : undefined;\n const goTo = query.goTo ? `${query.goTo}` : undefined;\n\n if (query.user && query.pwd) {\n this.setState({ username: user, password: pwd, goTo: goTo, isAutoLogin: true }, () => {\n this.login();\n });\n } else {\n const { security } = this.props;\n const hasMsg = !!(security && security.message);\n this.setState({ goTo: goTo, isAutoLogin: false, message: hasMsg ? security.message : undefined });\n }\n }\n\n public render(): JSX.Element {\n if (this.state.isAutoLogin) {\n return <></>;\n }\n\n return (\n <Auth\n buttonText={'Login'}\n buttonDisabled={this.state.isProcessing || !this.state.username || !this.state.password}\n buttonOnClick={this.login}\n isProcessing={this.state.isProcessing}\n messageText={this.state.message}\n messageType={MessageBarType.blocked}\n onKeyPress={this.onKeyPress}\n >\n <TextField\n className=\"inputField\"\n placeholder=\"Username\"\n ariaLabel=\"Please enter username here\"\n defaultValue={this.state.username ? this.state.username : undefined}\n disabled={this.state.isProcessing}\n deferredValidationTime={50}\n validateOnLoad={false}\n onGetErrorMessage={this.getErrorMessage}\n // tslint:disable-next-line:jsx-no-lambda\n onChange={(ev, input) => {\n this.setState({ username: input ? input : '' });\n }}\n prefix=\"Contact\"\n onRenderPrefix={this.onRenderPrefix}\n />\n <TextField\n className=\"inputField\"\n type={'password'}\n placeholder=\"Password\"\n ariaLabel=\"Please enter password here\"\n defaultValue={this.state.password ? this.state.password : undefined}\n disabled={this.state.isProcessing}\n deferredValidationTime={50}\n validateOnLoad={false}\n onGetErrorMessage={this.getErrorMessage}\n // tslint:disable-next-line:jsx-no-lambda\n onChange={(ev, input) => {\n this.setState({ password: input ? input : '' });\n }}\n prefix=\"AzureKeyVault\"\n onRenderPrefix={this.onRenderPrefix}\n />\n <div style={{ textAlign: 'end' }}>\n <Link href=\"forgot\" styles={{ root: { fontSize: '.85em' } }}>\n Forgot Password?\n </Link>\n </div>\n </Auth>\n );\n }\n\n private onRenderPrefix(props: ITextFieldProps | undefined): JSX.Element {\n return props ? <Icon iconName={props.prefix} /> : <></>;\n }\n\n private getErrorMessage(value: string): string | undefined {\n return !value ? 'Required' : undefined;\n }\n\n private onKeyPress(ev: React.KeyboardEvent<HTMLDivElement | HTMLAnchorElement | HTMLButtonElement | BaseButton | Button>): void {\n if (ev.key === 'Enter' && !this.state.isProcessing) {\n console.log('Enter!');\n this.login();\n }\n }\n\n private login(): void {\n this.setState({ isProcessing: true });\n\n const request = {\n username: this.state.username,\n password: this.state.password,\n isPasswordEncrypted: this.state.isAutoLogin\n };\n\n Api.post('auth', request)\n .then(response => {\n const token: string = `Bearer ${response.data.token}`;\n const payload: ISecurityPayload = {\n username: this.state.username,\n password: this.state.password,\n token,\n loginMode: this.state.isAutoLogin ? LoginMode.EMBEDDED : LoginMode.NORMAL\n };\n\n this.props.saveToken(payload);\n\n this.state.goTo ? this.props.history.push(this.state.goTo) : this.props.history.push('/search');\n })\n .catch(error => {\n const message = error.response\n ? `Request failed with status code ${error.response.data.status}: ${error.response.data.message}`\n : error.toJSON().message;\n\n this.setState({\n isProcessing: false,\n message: message\n });\n });\n }\n}\n\nexport default withRouter(connect(\n mapStateToProps,\n mapDispatchToProps\n)(Login) as any);\n","import { ISecurityLoginAction, ISecurityLogoutAction, ISecurityPayload, ISecurityUnauthAction, SecurityActionTypes } from './ActionTypes';\n\nexport function loginToken(param: ISecurityPayload): ISecurityLoginAction {\n return {\n type: SecurityActionTypes.LOGIN_USER,\n payload: {\n security: param\n }\n };\n}\n\nexport function logoutUser(): ISecurityLogoutAction {\n return {\n type: SecurityActionTypes.LOGOUT_USER\n };\n}\n\nexport function unauthUser(param: string): ISecurityUnauthAction {\n return {\n type: SecurityActionTypes.UNAUTH_USER,\n payload: {\n message: param\n }\n };\n}\n","import i18n from 'i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\nimport { initReactI18next } from 'react-i18next';\nimport translationEN from './i18n/locales/en/translation.json';\nimport translationPT from './i18n/locales/pt/translation.json';\n\nconst resources = {\n en: {\n translation: translationEN\n },\n pt: {\n translation: translationPT\n }\n};\n\ni18n\n .use(LanguageDetector)\n .use(initReactI18next) // passes i18n down to react-i18next\n .init({\n resources,\n\n debug: false,\n // keySeparator: false, // we do not use keys in form messages.welcome\n\n interpolation: {\n escapeValue: false // react already safes from xss\n },\n\n fallbackLng: 'en' // use en if detected lng is not available\n });\nexport default i18n;\n","import { IBreadcrumbItem } from 'office-ui-fabric-react/lib/Breadcrumb';\nimport { BreadCrumbsActiontypes, IBreadCrumbsAction } from '../../Actions/BreadCrumbs/ActionTypes';\n\nconst emptyBC: IBreadcrumbItem[] = [];\n\nexport const initialState: IBreadCrumbsState = {\n items: emptyBC\n};\n\nexport interface IBreadCrumbsState {\n items: IBreadcrumbItem[];\n}\n\nexport function reducer(state = initialState, action: IBreadCrumbsAction) {\n switch (action.type) {\n case BreadCrumbsActiontypes.UPDATE:\n return Object.assign({}, state, action.payload);\n default:\n return state;\n }\n}\n","import { ISecurityPayload, LoginMode, SecurityActions, SecurityActionTypes } from '../../Actions/Security/ActionTypes';\n\nconst emptySecurity: ISecurityPayload = {\n username: undefined,\n password: undefined,\n token: undefined,\n message: undefined,\n loginMode: LoginMode.NORMAL\n};\n\nexport const initialState: ISecurityState = {\n security: emptySecurity\n};\n\nexport interface ISecurityState {\n security: ISecurityPayload;\n}\n\nexport function reducer(state = initialState, action: SecurityActions) {\n switch (action.type) {\n case SecurityActionTypes.LOGIN_USER:\n return { ...state, ...action.payload };\n\n case SecurityActionTypes.LOGOUT_USER:\n return { ...initialState, security: { loginMode: state.security.loginMode } };\n\n case SecurityActionTypes.UNAUTH_USER:\n return { ...initialState, security: { message: action.payload.message, loginMode: state.security.loginMode } };\n\n default:\n return state;\n }\n}\n","import { combineReducers } from 'redux';\nimport * as fromBreadCrumbs from './BreadCrumbs/Reducer';\nimport * as fromSecurity from './Security/Reducer';\n\nexport interface IRootState {\n breadCrumbsState: fromBreadCrumbs.IBreadCrumbsState;\n securityState: fromSecurity.ISecurityState;\n}\n\nexport const rootInitialState: IRootState = {\n breadCrumbsState: fromBreadCrumbs.initialState,\n securityState: fromSecurity.initialState\n};\n\nexport const rootReducer = combineReducers<IRootState>({\n breadCrumbsState: fromBreadCrumbs.reducer,\n securityState: fromSecurity.reducer\n});\n","import { applyMiddleware, createStore } from 'redux';\nimport { composeWithDevTools } from 'redux-devtools-extension';\nimport logger from 'redux-logger';\nimport { PersistPartial, persistReducer, persistStore } from 'redux-persist';\nimport storage from 'redux-persist/lib/storage';\nimport { IRootState, rootReducer } from '../Reducers/RootReducer';\n\nconst middlewares: any[] = [];\n\nif (process.env.NODE_ENV === `development`) {\n middlewares.push(logger);\n}\n\nconst persistConfig = {\n key: 'root',\n storage\n};\n\nconst persistedReducer = persistReducer<IRootState, any>(persistConfig, rootReducer);\n\nexport default () => {\n const store =\n process.env.NODE_ENV === `development`\n ? createStore<IRootState & PersistPartial, any, any, any>(persistedReducer, composeWithDevTools(applyMiddleware(...middlewares)))\n : createStore<IRootState & PersistPartial, any, any, any>(persistedReducer);\n\n const persistor = persistStore(store);\n return { store, persistor };\n};\n","// tslint:disable:no-console\n// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the 'N+1' visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport default function register() {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL!,\n window.location.toString()\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://goo.gl/SC7cgQ'\n );\n });\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker) {\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a 'New content is\n // available; please refresh.' message in your web app.\n console.log('New content is available; please refresh.');\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // 'Content is cached for offline use.' message.\n console.log('Content is cached for offline use.');\n }\n }\n };\n }\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type')!.indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import { library } from '@fortawesome/fontawesome-svg-core';\nimport { fab } from '@fortawesome/free-brands-svg-icons';\nimport { far } from '@fortawesome/free-regular-svg-icons';\nimport { fas } from '@fortawesome/free-solid-svg-icons';\nimport { initializeIcons } from '@uifabric/icons';\nimport { createTheme, loadTheme } from 'office-ui-fabric-react/lib/Styling';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport { BrowserRouter, Route, Switch } from 'react-router-dom';\nimport { PersistGate } from 'redux-persist/integration/react';\nimport Apps from './Apps';\nimport { setupInterceptors } from './components/Api';\nimport ForgotNewPw from './components/Auth/ForgotNewPw/ForgotNewPw';\nimport ForgotPW from './components/Auth/ForgotPW/ForgotPW';\nimport Login from './components/Auth/Login/Login';\nimport SecuredRoute from './components/SecuredRoute/SecuredRoute';\nimport './i18n';\nimport './index.css';\nimport './ktx.css';\nimport CreateStore from './redux/Store/Store';\nimport registerServiceWorker from './registerServiceWorker';\n\ninitializeIcons();\nlibrary.add(fab, fas, far);\n\nconst { persistor, store } = CreateStore();\n\nif (window.location.search === '?debug') {\n persistor.purge();\n}\n\nsetupInterceptors(store);\n\nconst mainTheme = createTheme({\n palette: {\n themePrimary: '#f68932',\n themeLighterAlt: '#fffaf6',\n themeLighter: '#fdecdd',\n themeLight: '#fcdbbf',\n themeTertiary: '#f9b781',\n themeSecondary: '#f69749',\n themeDarkAlt: '#dc7b2c',\n themeDark: '#ba6825',\n themeDarker: '#894d1b',\n neutralLighterAlt: '#f8f8f8',\n neutralLighter: '#f4f4f4',\n neutralLight: '#eaeaea',\n neutralQuaternaryAlt: '#dadada',\n neutralQuaternary: '#d0d0d0',\n neutralTertiaryAlt: '#c8c8c8',\n neutralTertiary: '#c2c2c2',\n neutralSecondary: '#858585',\n neutralPrimaryAlt: '#4b4b4b',\n neutralPrimary: '#333333',\n neutralDark: '#272727',\n black: '#1d1d1d',\n white: '#ffffff'\n }\n});\n\nloadTheme(mainTheme);\n\n// TODO: Decide how to receive the user/pass from OLD KTX\nReactDOM.render(\n <Provider store={store}>\n <PersistGate loading={null} persistor={persistor}>\n <BrowserRouter basename={/kt}>\n <Switch>\n <Route exact={true} path=\"/login\" component={Login} />\n <Route exact={true} path=\"/forgot\" component={ForgotPW} />\n <Route exact={true} path=\"/forgot/:guid\" component={ForgotNewPw} />\n <SecuredRoute path=\"/\" component={Apps} />\n </Switch>\n </BrowserRouter>\n </PersistGate>\n </Provider>,\n document.getElementById('root') as HTMLElement\n);\nregisterServiceWorker();\n"],"sourceRoot":""}