) => {
+ return
+

+
+}
+
+const withLoading = (
+ Component: React.ComponentType
+): React.FC
=> ({
+ isLoading,
+ loaderMargin,
+ loaderHeight,
+ ...props
+}: WithLoadingProps) => isLoading ?
+ :
+ ;
+
+export const LoadingWrapper: React.FC = ({ loaderMargin, loaderHeight, isLoading, children }) => {
+ return isLoading ?
+ :
+ {children}
+}
+
+export default withLoading
diff --git a/ui-common/src/components/modals/ReplayRequestModal/ReplayRequestModal.tsx b/ui-common/src/components/modals/ReplayRequestModal/ReplayRequestModal.tsx
index 5c945a721..8d4c6328d 100644
--- a/ui-common/src/components/modals/ReplayRequestModal/ReplayRequestModal.tsx
+++ b/ui-common/src/components/modals/ReplayRequestModal/ReplayRequestModal.tsx
@@ -12,7 +12,6 @@ import { toast } from "react-toastify";
import { TOAST_CONTAINER_ID } from "../../../configs/Consts";
import styles from './ReplayRequestModal.module.sass'
import closeIcon from "assets/close.svg"
-import spinnerImg from "assets/spinner.svg"
import refreshImg from "assets/refresh.svg"
import { formatRequestWithOutError } from "../../EntryDetailed/EntrySections/EntrySections";
import entryDataAtom from "../../../recoil/entryData";
@@ -20,6 +19,7 @@ import { AutoRepresentation, TabsEnum } from "../../EntryDetailed/EntryViewer/Au
import useDebounce from "../../../hooks/useDebounce"
import replayRequestModalOpenAtom from "../../../recoil/replayRequestModalOpen";
import { Utils } from "../../../helpers/Utils";
+import { LoadingWrapper } from "../../UI/withLoading/withLoading";
const modalStyle = {
position: 'absolute',
@@ -233,15 +233,16 @@ const ReplayRequestModal: React.FC = ({ isOpen, onClose
- {isLoading &&
}
- {response && !isLoading && ( setResponseExpanded(!responseExpanded)}>
- } aria-controls="response-content">
- RESPONSE
-
-
-
-
- )}
+
+ {response && ( setResponseExpanded(!responseExpanded)}>
+ } aria-controls="response-content">
+ RESPONSE
+
+
+
+
+ )}
+
diff --git a/ui-common/src/components/modals/ServiceMapModal/ServiceMapModal.module.sass b/ui-common/src/components/modals/ServiceMapModal/ServiceMapModal.module.sass
index ae47f3ddf..3f882c410 100644
--- a/ui-common/src/components/modals/ServiceMapModal/ServiceMapModal.module.sass
+++ b/ui-common/src/components/modals/ServiceMapModal/ServiceMapModal.module.sass
@@ -96,8 +96,3 @@ $modalMargin-from-edge : 35px
.servicesFilterList
height: calc(100% - 30px - 52px)
-
-.spinnerContainer
- display: flex
- justify-content: center
- margin-bottom: 10px
diff --git a/ui-common/src/components/modals/ServiceMapModal/ServiceMapModal.tsx b/ui-common/src/components/modals/ServiceMapModal/ServiceMapModal.tsx
index 2f819de27..a87456273 100644
--- a/ui-common/src/components/modals/ServiceMapModal/ServiceMapModal.tsx
+++ b/ui-common/src/components/modals/ServiceMapModal/ServiceMapModal.tsx
@@ -1,7 +1,6 @@
import React, { useState, useEffect, useCallback, useMemo } from "react";
import { Box, Fade, Modal, Backdrop, Button } from "@mui/material";
import { toast } from "react-toastify";
-import spinnerImg from 'assets/spinner.svg';
import Graph from "react-graph-vis";
import debounce from 'lodash/debounce';
import ServiceMapOptions from './ServiceMapOptions'
@@ -16,6 +15,7 @@ import { GraphData, ServiceMapGraph } from "./ServiceMapModalTypes"
import { Utils } from "../../../helpers/Utils";
import { TOAST_CONTAINER_ID } from "../../../configs/Consts";
import Resizeable from "../../UI/Resizeable/Resizeable"
+import { LoadingWrapper } from "../../UI/withLoading/withLoading";
const modalStyle = {
position: 'absolute',
@@ -197,14 +197,14 @@ export const ServiceMapModal: React.FC = ({ isOpen, onClos
-

onClose()} style={{ cursor: "pointer", userSelect: "none" }}/>
+

onClose()} style={{ cursor: "pointer", userSelect: "none" }} />
Services
}
+ startIcon={

}
className={commonClasses.outlinedButton + " " + commonClasses.imagedButton + ` ${isFilterClicked ? commonClasses.clickedButton : ""}`}
onClick={() => setIsFilterClicked(prevState => !prevState)}
style={{ textTransform: 'unset' }}>
@@ -243,16 +243,14 @@ export const ServiceMapModal: React.FC
= ({ isOpen, onClos
- {isLoading &&
-

-
}
- {!isLoading &&
-
-
- }
+
+
+
+
+
diff --git a/ui-common/src/components/modals/TrafficStatsModal/TrafficStatsModal.tsx b/ui-common/src/components/modals/TrafficStatsModal/TrafficStatsModal.tsx
index f9e86568e..56aacec02 100644
--- a/ui-common/src/components/modals/TrafficStatsModal/TrafficStatsModal.tsx
+++ b/ui-common/src/components/modals/TrafficStatsModal/TrafficStatsModal.tsx
@@ -4,9 +4,9 @@ import styles from "./TrafficStatsModal.module.sass";
import closeIcon from "assets/close.svg";
import { TrafficPieChart } from "./TrafficPieChart/TrafficPieChart";
import { TimelineBarChart } from "./TimelineBarChart/TimelineBarChart";
-import spinnerImg from "assets/spinner.svg";
import refreshIcon from "assets/refresh.svg";
import { useCommonStyles } from "../../../helpers/commonStyle";
+import { LoadingWrapper } from "../../UI/withLoading/withLoading";
const modalStyle = {
position: 'absolute',
@@ -114,13 +114,12 @@ export const TrafficStatsModal: React.FC
= ({ isOpen, on
- {isLoading ?
-

-
:
+
-
-
-
}
+
+
+
+