|
1 | 1 | import React, { memo, useCallback, useContext } from "react"; |
2 | 2 |
|
3 | | -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; |
4 | 3 | import cn from "classnames"; |
5 | 4 | import i18next from "i18next"; |
6 | | -import { useSelector } from "react-redux"; |
7 | 5 |
|
8 | 6 | import CustomEventStylesContext from "../../components/CustomEventStylesContext"; |
9 | | -import { tournamentPlayersSelector } from "../../selectors"; |
10 | 7 |
|
11 | 8 | // %{"type" => "top_users_by_clan_ranking"} -> |
12 | 9 | // %{"type" => "tasks_ranking"} -> |
@@ -45,54 +42,27 @@ export const mapPanelModeToTitle = { |
45 | 42 | function ControlPanel({ |
46 | 43 | allowedPanelModes, |
47 | 44 | isPlayer, |
| 45 | + leftContent = null, |
48 | 46 | panelMode, |
49 | | - panelHistory, |
50 | | - setPanelHistory, |
51 | | - setSearchOption, |
52 | 47 | setPanelMode, |
53 | 48 | }) { |
54 | | - const allPlayers = useSelector(tournamentPlayersSelector); |
55 | 49 | const hasCustomEventStyles = useContext(CustomEventStylesContext); |
56 | | - |
57 | | - const onPanelBack = useCallback(() => { |
58 | | - if (panelHistory.length === 0) return; |
59 | | - |
60 | | - const [prev, ...rest] = panelHistory.reverse(); |
61 | | - |
62 | | - setPanelMode(prev); |
63 | | - setPanelHistory(rest.reverse()); |
64 | | - |
65 | | - if (prev.userId) { |
66 | | - setSearchOption(allPlayers[prev.userId]); |
67 | | - } |
68 | | - }, [panelHistory, setPanelHistory, setPanelMode, setSearchOption, allPlayers]); |
69 | 50 | const onChangePanelMode = useCallback( |
70 | 51 | (e) => { |
71 | 52 | setPanelMode({ panel: e.target.value }); |
72 | | - setPanelHistory((items) => [...items, panelMode]); |
73 | 53 | }, |
74 | | - [setPanelMode, setPanelHistory, panelMode], |
| 54 | + [setPanelMode], |
75 | 55 | ); |
76 | | - const backBtnClassName = cn("btn text-nowrap cb-rounded mr-1 mb-2", { |
77 | | - "btn-outline-secondary cb-btn-outline-secondary": !hasCustomEventStyles, |
78 | | - "cb-custom-event-btn-outline-secondary": hasCustomEventStyles, |
79 | | - }); |
80 | 56 |
|
81 | 57 | return ( |
82 | | - <div className="d-flex flex-column flex-md-row flex-lg-row flex-xl-row justify-content-between"> |
83 | | - <div className="d-flex align-items-center w-50"> |
84 | | - <button |
85 | | - type="button" |
86 | | - className={backBtnClassName} |
87 | | - onClick={onPanelBack} |
88 | | - disabled={panelHistory.length === 0} |
89 | | - > |
90 | | - <FontAwesomeIcon icon="backward" className="mr-1" /> |
91 | | - {i18next.t("Back")} |
92 | | - </button> |
93 | | - <div /> |
94 | | - </div> |
95 | | - <div className={cn("d-flex mb-2 text-nowrap justify-content-end")}> |
| 58 | + <div className="d-flex flex-column flex-md-row flex-lg-row flex-xl-row justify-content-between align-items-start gap-2"> |
| 59 | + <div className="d-flex align-items-start flex-grow-1 min-w-0 mb-2 mb-md-0">{leftContent}</div> |
| 60 | + <div |
| 61 | + className={cn( |
| 62 | + "d-flex text-nowrap justify-content-end ml-md-3", |
| 63 | + hasCustomEventStyles && "cb-custom-event-text", |
| 64 | + )} |
| 65 | + > |
96 | 66 | <select |
97 | 67 | key="select_panel_mode" |
98 | 68 | className="form-control custom-select cb-bg-panel cb-border-color text-white cb-rounded" |
|
0 commit comments