-
Notifications
You must be signed in to change notification settings - Fork 28
/
Copy pathAttributionPanels.tsx
72 lines (67 loc) · 2.5 KB
/
AttributionPanels.tsx
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
// SPDX-FileCopyrightText: Meta Platforms, Inc. and its affiliates
// SPDX-FileCopyrightText: TNG Technology Consulting GmbH <https://www.tngtech.com>
//
// SPDX-License-Identifier: Apache-2.0
import { useCallback } from 'react';
import { AllowedFrontendChannels } from '../../../shared/ipc-channels';
import { DEFAULT_PANEL_SIZES } from '../../../shared/shared-constants';
import { text } from '../../../shared/text';
import {
useFilteredAttributions,
useFilteredSignals,
} from '../../state/variables/use-filtered-data';
import { usePanelSizes } from '../../state/variables/use-panel-sizes';
import { ResizePanels } from '../ResizePanels/ResizePanels';
import { Container } from './AttributionPanels.style';
import { AttributionsPanel } from './AttributionsPanel/AttributionsPanel';
import { SignalsPanel } from './SignalsPanel/SignalsPanel';
export function AttributionPanels() {
const [{ search: attributionSearch }, setFilteredAttributions] =
useFilteredAttributions();
const [{ search: signalSearch }, setFilteredSignals] = useFilteredSignals();
const { panelSizes, setPanelSizes } = usePanelSizes();
const setWidth = useCallback(
(width: number) => setPanelSizes({ packageListsWidth: width }),
[setPanelSizes],
);
const setHeight = useCallback(
(height: number) => {
setPanelSizes({ signalsPanelHeight: height });
},
[setPanelSizes],
);
return (
<Container square elevation={5}>
<ResizePanels
minWidth={DEFAULT_PANEL_SIZES.packageListsWidth}
main={'lower'}
width={panelSizes.packageListsWidth}
height={panelSizes.signalsPanelHeight}
setWidth={setWidth}
setHeight={setHeight}
upperPanel={{
component: <AttributionsPanel />,
search: {
value: attributionSearch,
setValue: (search) =>
setFilteredAttributions((prev) => ({ ...prev, search })),
channel: AllowedFrontendChannels.SearchAttributions,
},
title: text.packageLists.attributionsPanelTitle,
headerTestId: 'attributions-panel-header',
}}
lowerPanel={{
component: <SignalsPanel />,
search: {
value: signalSearch,
setValue: (search) =>
setFilteredSignals((prev) => ({ ...prev, search })),
channel: AllowedFrontendChannels.SearchSignals,
},
title: text.packageLists.signalsPanelTitle,
headerTestId: 'signals-panel-header',
}}
/>
</Container>
);
}