-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMapFooter.tsx
More file actions
85 lines (74 loc) · 2.12 KB
/
Copy pathMapFooter.tsx
File metadata and controls
85 lines (74 loc) · 2.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import some from 'lodash/some';
import { FC } from 'react';
import { ReusableComponentsVehicleModeEnum } from '../../generated/graphql';
import { useAppSelector } from '../../hooks';
import {
MapEntityEditorViewState,
Mode,
selectMapRouteEditor,
} from '../../redux';
import { FloatingAddModeFooter } from './FloatingAddModeFooter';
import { FloatingStopResultsFooter } from './FloatingStopResultsFooter';
import { MapFooterFullBar } from './MapFooterFullBar';
import { useIsInSearchResultMode } from './utils/useIsInSearchResultMode';
import { useMapViewState } from './utils/useMapViewState';
function useActiveModes() {
const isInSearchResultMode = useIsInSearchResultMode();
const { drawingMode, creatingNewRoute } =
useAppSelector(selectMapRouteEditor);
const [mapViewState] = useMapViewState();
const isInPlaceMode = some(
mapViewState,
(state) =>
state === MapEntityEditorViewState.PLACE ||
state === MapEntityEditorViewState.PLACECOPY,
);
const isInDrawingMode = drawingMode === Mode.Draw && creatingNewRoute;
return {
isInSearchResultMode,
isInPlaceMode,
isInDrawingMode,
};
}
type MapFooterProps = {
readonly onDrawRoute: (
vehicleMode: ReusableComponentsVehicleModeEnum,
) => void;
readonly onEditRoute: () => void;
readonly onStopEditRoute: () => void;
readonly onDeleteRoute: () => void;
readonly onCancel: () => void;
readonly onSave: () => void;
};
export const MapFooter: FC<MapFooterProps> = ({
onDrawRoute,
onEditRoute,
onStopEditRoute,
onDeleteRoute,
onCancel,
onSave,
}) => {
const { isInSearchResultMode, isInPlaceMode, isInDrawingMode } =
useActiveModes();
if (isInPlaceMode || isInDrawingMode) {
return (
<FloatingAddModeFooter
isInDrawingMode={isInDrawingMode}
onCancel={onCancel}
/>
);
}
if (isInSearchResultMode) {
return <FloatingStopResultsFooter />;
}
return (
<MapFooterFullBar
onDrawRoute={onDrawRoute}
onEditRoute={onEditRoute}
onStopEditRoute={onStopEditRoute}
onDeleteRoute={onDeleteRoute}
onCancel={onCancel}
onSave={onSave}
/>
);
};