Skip to content

Commit e6bd47b

Browse files
committed
add chartheader
1 parent 1480a52 commit e6bd47b

File tree

1 file changed

+103
-0
lines changed
  • app/[locale]/dashboard/[entityType]/[entitySlug]/dataset/[id]/edit/charts/components

1 file changed

+103
-0
lines changed
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
import React from 'react';
2+
import { Button, Icon, Sheet, Text } from 'opub-ui';
3+
import { Icons } from '@/components/icons';
4+
import { ResourceData } from '../types';
5+
6+
interface ChartHeaderProps {
7+
setType: (type: string) => void;
8+
setChartId: (id: string) => void;
9+
isSheetOpen: boolean;
10+
setIsSheetOpen: (open: boolean) => void;
11+
resourceChart: {
12+
mutate: (data: { resource: string }) => void;
13+
isLoading: boolean;
14+
};
15+
resourceData: ResourceData;
16+
chartsList: {
17+
chartsDetails: Array<{
18+
id: string;
19+
name: string;
20+
}>;
21+
} | null;
22+
chartId: string;
23+
}
24+
25+
const ChartHeader: React.FC<ChartHeaderProps> = ({
26+
setType,
27+
setChartId,
28+
isSheetOpen,
29+
setIsSheetOpen,
30+
resourceChart,
31+
resourceData,
32+
chartsList,
33+
chartId,
34+
}) => {
35+
return (
36+
<div className="mb-6 flex flex-wrap items-center justify-between gap-6">
37+
<Button
38+
onClick={() => {
39+
setType('list');
40+
setChartId('');
41+
}}
42+
kind="tertiary"
43+
className="flex text-start"
44+
>
45+
<span className="flex items-center gap-2">
46+
<Icon source={Icons.back} color="interactive" size={24} />
47+
<Text color="interactive">Charts Listing</Text>
48+
</span>
49+
</Button>
50+
<Sheet open={isSheetOpen}>
51+
<Sheet.Trigger>
52+
<Button onClick={() => setIsSheetOpen(true)}>
53+
Select Charts
54+
</Button>
55+
</Sheet.Trigger>
56+
<Sheet.Content side="bottom">
57+
<div className="flex flex-col gap-6 p-10">
58+
<div className="flex items-center justify-between">
59+
<Text variant="bodyLg">Select Charts</Text>
60+
<div className="flex items-center gap-3">
61+
<Button
62+
onClick={() =>
63+
resourceChart.mutate({
64+
resource: resourceData?.datasetResources[0].id,
65+
})
66+
}
67+
>
68+
Visualize Data
69+
</Button>
70+
<Button
71+
kind="tertiary"
72+
onClick={() => setIsSheetOpen(false)}
73+
>
74+
<Icon source={Icons.cross} size={24} />
75+
</Button>
76+
</div>
77+
</div>
78+
{chartsList?.chartsDetails.map((item, index) => (
79+
<div
80+
key={index}
81+
className={`rounded-1 border-1 border-solid border-baseGraySlateSolid6 px-6 py-3 ${chartId === item.id ? ' bg-baseGraySlateSolid5' : ''}`}
82+
>
83+
<Button
84+
kind={'tertiary'}
85+
className="flex w-full justify-start"
86+
disabled={chartId === item.id}
87+
onClick={() => {
88+
setChartId(item.id);
89+
setIsSheetOpen(false);
90+
}}
91+
>
92+
{item.name}
93+
</Button>
94+
</div>
95+
))}
96+
</div>
97+
</Sheet.Content>
98+
</Sheet>
99+
</div>
100+
);
101+
};
102+
103+
export default ChartHeader;

0 commit comments

Comments
 (0)