Skip to content

Commit 3e2c81b

Browse files
anaisbergSimonClo
authored andcommitted
✨ add column button
1 parent 761e028 commit 3e2c81b

File tree

1 file changed

+65
-3
lines changed
  • src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks

1 file changed

+65
-3
lines changed

src/frontend/apps/impress/src/features/docs/doc-editor/components/custom-blocks/DatabaseBlock.tsx

Lines changed: 65 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
/* eslint-disable react-hooks/rules-of-hooks */
22
import { insertOrUpdateBlock } from '@blocknote/core';
33
import { createReactBlockSpec } from '@blocknote/react';
4-
import { Button } from '@openfun/cunningham-react';
4+
import { Button, Input } from '@openfun/cunningham-react';
55
import { ColDef } from 'ag-grid-community';
66
import { AgGridReact } from 'ag-grid-react';
77
import { TFunction } from 'i18next';
8-
import React, { useRef } from 'react';
8+
import React, { useRef, useState } from 'react';
99

10-
import { Box, Icon, Text } from '@/components';
10+
import { Box, DropButton, Icon, Text } from '@/components';
1111

1212
import { DocsBlockNoteEditor } from '../../types';
1313
import { DatabaseSourceSelector } from '../DatabaseSourceSelector';
@@ -30,6 +30,8 @@ export const DatabaseBlock = createReactBlockSpec(
3030
},
3131
{
3232
render: ({ block, editor }) => {
33+
const [addColumnToggleOpen, setAddColumnToggleOpen] = useState(false);
34+
3335
const gridRef = useRef(null);
3436

3537
const rowData = [
@@ -38,6 +40,52 @@ export const DatabaseBlock = createReactBlockSpec(
3840
{ make: 'Toyota', model: 'Corolla', price: 29600, electric: false },
3941
];
4042

43+
const AddButtonComponent = ({
44+
isOpen,
45+
setIsOpen,
46+
}: {
47+
isOpen: boolean;
48+
setIsOpen: (open: boolean) => void;
49+
}) => {
50+
const onOpenChange = (isOpen: boolean) => {
51+
setIsOpen(isOpen);
52+
};
53+
54+
return (
55+
<DropButton
56+
isOpen={isOpen}
57+
onOpenChange={onOpenChange}
58+
label="add column"
59+
button={
60+
<Box style={{ padding: '0.25rem', gap: '16px' }} color="tertiary">
61+
<span className="material-icons">add</span>
62+
</Box>
63+
}
64+
>
65+
<Box style={{ padding: '10px', gap: '10px' }}>
66+
<Text
67+
$variation="600"
68+
$size="s"
69+
$weight="bold"
70+
$theme="greyscale"
71+
>
72+
Ajouter une colonne
73+
</Text>
74+
<Input label="Column label"></Input>
75+
<Button
76+
size="small"
77+
onClick={() => {
78+
setIsOpen(false);
79+
}}
80+
style={{ alignSelf: 'end', width: 'fit-content' }}
81+
>
82+
Valider
83+
</Button>
84+
</Box>
85+
</DropButton>
86+
);
87+
};
88+
4189
// Column Definitions: Defines the columns to be displayed.
4290
const colDefs: ColDef[] = [
4391
{ field: 'make', sort: 'desc' },
@@ -47,6 +95,19 @@ export const DatabaseBlock = createReactBlockSpec(
4795
},
4896
{ field: 'price', filter: true },
4997
{ field: 'electric' },
98+
{
99+
headerComponentParams: {
100+
innerHeaderComponent: () =>
101+
AddButtonComponent({
102+
isOpen: addColumnToggleOpen,
103+
setIsOpen: setAddColumnToggleOpen,
104+
}),
105+
},
106+
unSortIcon: false,
107+
editable: false,
108+
sortable: false,
109+
spanRows: true,
110+
},
50111
];
51112

52113
const defaultColDef = {
@@ -78,6 +139,7 @@ export const DatabaseBlock = createReactBlockSpec(
78139
columnDefs={colDefs}
79140
defaultColDef={defaultColDef}
80141
domLayout="autoHeight"
142+
enableCellSpan={true}
81143
/>
82144
</Box>
83145
</Box>

0 commit comments

Comments
 (0)