refresh table menus

This commit is contained in:
Philipinho
2026-02-24 09:58:32 +00:00
parent 22182418ed
commit 052b2042ff
4 changed files with 50 additions and 21 deletions
@@ -95,7 +95,8 @@ export const TableBackgroundColor: FC<TableBackgroundColorProps> = ({
<Popover.Target> <Popover.Target>
<Tooltip label={t("Background color")} withArrow> <Tooltip label={t("Background color")} withArrow>
<ActionIcon <ActionIcon
variant="default" variant="subtle"
c="dark"
size="lg" size="lg"
aria-label={t("Background color")} aria-label={t("Background color")}
onClick={() => setOpened(!opened)} onClick={() => setOpened(!opened)}
@@ -16,6 +16,7 @@ import { useTranslation } from "react-i18next";
import { TableBackgroundColor } from "./table-background-color"; import { TableBackgroundColor } from "./table-background-color";
import { TableTextAlignment } from "./table-text-alignment"; import { TableTextAlignment } from "./table-text-alignment";
import { BubbleMenu } from "@tiptap/react/menus"; import { BubbleMenu } from "@tiptap/react/menus";
import classes from "../common/toolbar-menu.module.css";
export const TableCellMenu = React.memo( export const TableCellMenu = React.memo(
({ editor, appendTo }: EditorMenuProps): JSX.Element => { ({ editor, appendTo }: EditorMenuProps): JSX.Element => {
@@ -69,14 +70,17 @@ export const TableCellMenu = React.memo(
}} }}
shouldShow={shouldShow} shouldShow={shouldShow}
> >
<ActionIcon.Group> <div className={classes.toolbar}>
<TableBackgroundColor editor={editor} /> <TableBackgroundColor editor={editor} />
<TableTextAlignment editor={editor} /> <TableTextAlignment editor={editor} />
<div className={classes.divider} />
<Tooltip position="top" label={t("Merge cells")}> <Tooltip position="top" label={t("Merge cells")}>
<ActionIcon <ActionIcon
onClick={mergeCells} onClick={mergeCells}
variant="default" variant="subtle"
c="dark"
size="lg" size="lg"
aria-label={t("Merge cells")} aria-label={t("Merge cells")}
> >
@@ -87,7 +91,8 @@ export const TableCellMenu = React.memo(
<Tooltip position="top" label={t("Split cell")}> <Tooltip position="top" label={t("Split cell")}>
<ActionIcon <ActionIcon
onClick={splitCell} onClick={splitCell}
variant="default" variant="subtle"
c="dark"
size="lg" size="lg"
aria-label={t("Split cell")} aria-label={t("Split cell")}
> >
@@ -95,10 +100,13 @@ export const TableCellMenu = React.memo(
</ActionIcon> </ActionIcon>
</Tooltip> </Tooltip>
<div className={classes.divider} />
<Tooltip position="top" label={t("Delete column")}> <Tooltip position="top" label={t("Delete column")}>
<ActionIcon <ActionIcon
onClick={deleteColumn} onClick={deleteColumn}
variant="default" variant="subtle"
c="dark"
size="lg" size="lg"
aria-label={t("Delete column")} aria-label={t("Delete column")}
> >
@@ -109,7 +117,8 @@ export const TableCellMenu = React.memo(
<Tooltip position="top" label={t("Delete row")}> <Tooltip position="top" label={t("Delete row")}>
<ActionIcon <ActionIcon
onClick={deleteRow} onClick={deleteRow}
variant="default" variant="subtle"
c="dark"
size="lg" size="lg"
aria-label={t("Delete row")} aria-label={t("Delete row")}
> >
@@ -117,17 +126,20 @@ export const TableCellMenu = React.memo(
</ActionIcon> </ActionIcon>
</Tooltip> </Tooltip>
<div className={classes.divider} />
<Tooltip position="top" label={t("Toggle header cell")}> <Tooltip position="top" label={t("Toggle header cell")}>
<ActionIcon <ActionIcon
onClick={toggleHeaderCell} onClick={toggleHeaderCell}
variant="default" variant="subtle"
c="dark"
size="lg" size="lg"
aria-label={t("Toggle header cell")} aria-label={t("Toggle header cell")}
> >
<IconTableRow size={18} /> <IconTableRow size={18} />
</ActionIcon> </ActionIcon>
</Tooltip> </Tooltip>
</ActionIcon.Group> </div>
</BubbleMenu> </BubbleMenu>
); );
} }
@@ -20,6 +20,7 @@ import {
import { BubbleMenu } from "@tiptap/react/menus"; import { BubbleMenu } from "@tiptap/react/menus";
import { isCellSelection } from "@docmost/editor-ext"; import { isCellSelection } from "@docmost/editor-ext";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import classes from "../common/toolbar-menu.module.css";
export const TableMenu = React.memo( export const TableMenu = React.memo(
({ editor }: EditorMenuProps): JSX.Element => { ({ editor }: EditorMenuProps): JSX.Element => {
@@ -118,11 +119,12 @@ export const TableMenu = React.memo(
}} }}
shouldShow={shouldShow} shouldShow={shouldShow}
> >
<ActionIcon.Group> <div className={classes.toolbar}>
<Tooltip position="top" label={t("Add left column")}> <Tooltip position="top" label={t("Add left column")}>
<ActionIcon <ActionIcon
onClick={addColumnLeft} onClick={addColumnLeft}
variant="default" variant="subtle"
c="dark"
size="lg" size="lg"
aria-label={t("Add left column")} aria-label={t("Add left column")}
> >
@@ -133,7 +135,8 @@ export const TableMenu = React.memo(
<Tooltip position="top" label={t("Add right column")}> <Tooltip position="top" label={t("Add right column")}>
<ActionIcon <ActionIcon
onClick={addColumnRight} onClick={addColumnRight}
variant="default" variant="subtle"
c="dark"
size="lg" size="lg"
aria-label={t("Add right column")} aria-label={t("Add right column")}
> >
@@ -144,7 +147,8 @@ export const TableMenu = React.memo(
<Tooltip position="top" label={t("Delete column")}> <Tooltip position="top" label={t("Delete column")}>
<ActionIcon <ActionIcon
onClick={deleteColumn} onClick={deleteColumn}
variant="default" variant="subtle"
c="dark"
size="lg" size="lg"
aria-label={t("Delete column")} aria-label={t("Delete column")}
> >
@@ -152,10 +156,13 @@ export const TableMenu = React.memo(
</ActionIcon> </ActionIcon>
</Tooltip> </Tooltip>
<div className={classes.divider} />
<Tooltip position="top" label={t("Add row above")}> <Tooltip position="top" label={t("Add row above")}>
<ActionIcon <ActionIcon
onClick={addRowAbove} onClick={addRowAbove}
variant="default" variant="subtle"
c="dark"
size="lg" size="lg"
aria-label={t("Add row above")} aria-label={t("Add row above")}
> >
@@ -166,7 +173,8 @@ export const TableMenu = React.memo(
<Tooltip position="top" label={t("Add row below")}> <Tooltip position="top" label={t("Add row below")}>
<ActionIcon <ActionIcon
onClick={addRowBelow} onClick={addRowBelow}
variant="default" variant="subtle"
c="dark"
size="lg" size="lg"
aria-label={t("Add row below")} aria-label={t("Add row below")}
> >
@@ -177,7 +185,8 @@ export const TableMenu = React.memo(
<Tooltip position="top" label={t("Delete row")}> <Tooltip position="top" label={t("Delete row")}>
<ActionIcon <ActionIcon
onClick={deleteRow} onClick={deleteRow}
variant="default" variant="subtle"
c="dark"
size="lg" size="lg"
aria-label={t("Delete row")} aria-label={t("Delete row")}
> >
@@ -185,10 +194,13 @@ export const TableMenu = React.memo(
</ActionIcon> </ActionIcon>
</Tooltip> </Tooltip>
<div className={classes.divider} />
<Tooltip position="top" label={t("Toggle header row")}> <Tooltip position="top" label={t("Toggle header row")}>
<ActionIcon <ActionIcon
onClick={toggleHeaderRow} onClick={toggleHeaderRow}
variant="default" variant="subtle"
c="dark"
size="lg" size="lg"
aria-label={t("Toggle header row")} aria-label={t("Toggle header row")}
> >
@@ -199,7 +211,8 @@ export const TableMenu = React.memo(
<Tooltip position="top" label={t("Toggle header column")}> <Tooltip position="top" label={t("Toggle header column")}>
<ActionIcon <ActionIcon
onClick={toggleHeaderColumn} onClick={toggleHeaderColumn}
variant="default" variant="subtle"
c="dark"
size="lg" size="lg"
aria-label={t("Toggle header column")} aria-label={t("Toggle header column")}
> >
@@ -207,18 +220,20 @@ export const TableMenu = React.memo(
</ActionIcon> </ActionIcon>
</Tooltip> </Tooltip>
<div className={classes.divider} />
<Tooltip position="top" label={t("Delete table")}> <Tooltip position="top" label={t("Delete table")}>
<ActionIcon <ActionIcon
onClick={deleteTable} onClick={deleteTable}
variant="default" variant="subtle"
c="dark"
size="lg" size="lg"
color="red"
aria-label={t("Delete table")} aria-label={t("Delete table")}
> >
<IconTrashX size={18} /> <IconTrashX size={18} />
</ActionIcon> </ActionIcon>
</Tooltip> </Tooltip>
</ActionIcon.Group> </div>
</BubbleMenu> </BubbleMenu>
); );
} }
@@ -88,7 +88,8 @@ export const TableTextAlignment: FC<TableTextAlignmentProps> = ({ editor }) => {
<Popover.Target> <Popover.Target>
<Tooltip label={t("Text alignment")} withArrow> <Tooltip label={t("Text alignment")} withArrow>
<ActionIcon <ActionIcon
variant="default" variant="subtle"
c="dark"
size="lg" size="lg"
aria-label={t("Text alignment")} aria-label={t("Text alignment")}
onClick={() => setOpened(!opened)} onClick={() => setOpened(!opened)}