diff --git a/src/field/richtext/RichTextToolbar.tsx b/src/field/richtext/RichTextToolbar.tsx index 2d195ff4..c698c1c1 100644 --- a/src/field/richtext/RichTextToolbar.tsx +++ b/src/field/richtext/RichTextToolbar.tsx @@ -23,6 +23,15 @@ import {FieldToolbar} from 'alinea/dashboard/view/entry/FieldToolbar' import {IconButton} from 'alinea/dashboard/view/IconButton' import {IcRoundSubscript} from 'alinea/ui/icons/IcRoundSubscript' import {IcRoundSuperscript} from 'alinea/ui/icons/IcRoundSuperscript' +import {TableDelete} from 'alinea/ui/icons/TableDelete' +import {TableDeleteColumn} from 'alinea/ui/icons/TableDeleteColumn' +import {TableDeleteRow} from 'alinea/ui/icons/TableDeleteRow' +import {TableHeaderRow} from 'alinea/ui/icons/TableHeaderRow' +import {TableInsert} from 'alinea/ui/icons/TableInsert' +import {TableInsertColumnAfter} from 'alinea/ui/icons/TableInsertColumnAfter' +import {TableInsertColumnBefore} from 'alinea/ui/icons/TableInsertColumnBefore' +import {TableInsertRowAfter} from 'alinea/ui/icons/TableInsertRowAfter' +import {TableInsertRowBefore} from 'alinea/ui/icons/TableInsertRowBefore' import {forwardRef, Ref} from 'react' import {PickTextLinkFunc} from './PickTextLink.js' import {attributesToReference, referenceToAttributes} from './ReferenceLink.js' @@ -39,6 +48,16 @@ enum Styles { h5 = 'Heading 5' } +const HrDivider = () => ( +
+) + export type RichTextToolbarProps = { editor: Editor focusToggle: (target: EventTarget | null) => void @@ -182,42 +201,68 @@ export const RichTextToolbar = forwardRef(function RichTextToolbar( {selectedTable ? ( <> exec().addColumnBefore().run()} + onClick={() => exec().addRowBefore().run()} > - Insert column before + + + Insert row before + exec().addColumnAfter().run()} + onClick={() => exec().addRowAfter().run()} > - Insert column after + + + Insert row after + + + exec().deleteRow().run()}> + + + Delete row + exec().deleteColumn().run()} + onClick={() => exec().toggleHeaderRow().run()} > - Delete column + + + Toggle header row + + exec().addRowBefore().run()} + onClick={() => exec().addColumnBefore().run()} > - Insert row before + + + Insert column before + exec().addRowAfter().run()} + onClick={() => exec().addColumnAfter().run()} > - Insert row after - - exec().deleteRow().run()}> - Delete row + + + Insert column after + exec().deleteTable().run()} + onClick={() => exec().deleteColumn().run()} > - Delete table + + + Delete column + + exec().toggleHeaderRow().run()} + onClick={() => exec().deleteTable().run()} > - Toggle header row + + + Delete table + ) : ( @@ -228,7 +273,10 @@ export const RichTextToolbar = forwardRef(function RichTextToolbar( .run() } > - Insert table + + + Insert table + )} diff --git a/src/ui/icons/TableDelete.tsx b/src/ui/icons/TableDelete.tsx new file mode 100644 index 00000000..d5fa0c32 --- /dev/null +++ b/src/ui/icons/TableDelete.tsx @@ -0,0 +1,16 @@ +import {SVGProps} from 'react' + +export function TableDelete(props: SVGProps) { + return ( + + + + + ) +} diff --git a/src/ui/icons/TableDeleteColumn.tsx b/src/ui/icons/TableDeleteColumn.tsx new file mode 100644 index 00000000..de766d92 --- /dev/null +++ b/src/ui/icons/TableDeleteColumn.tsx @@ -0,0 +1,12 @@ +import {SVGProps} from 'react' + +export function TableDeleteColumn(props: SVGProps) { + return ( + + + + ) +} diff --git a/src/ui/icons/TableDeleteRow.tsx b/src/ui/icons/TableDeleteRow.tsx new file mode 100644 index 00000000..00dd93e2 --- /dev/null +++ b/src/ui/icons/TableDeleteRow.tsx @@ -0,0 +1,12 @@ +import {SVGProps} from 'react' + +export function TableDeleteRow(props: SVGProps) { + return ( + + + + ) +} diff --git a/src/ui/icons/TableHeaderRow.tsx b/src/ui/icons/TableHeaderRow.tsx new file mode 100644 index 00000000..8c5b111f --- /dev/null +++ b/src/ui/icons/TableHeaderRow.tsx @@ -0,0 +1,12 @@ +import {SVGProps} from 'react' + +export function TableHeaderRow(props: SVGProps) { + return ( + + + + ) +} diff --git a/src/ui/icons/TableInsert.tsx b/src/ui/icons/TableInsert.tsx new file mode 100644 index 00000000..3371fc2d --- /dev/null +++ b/src/ui/icons/TableInsert.tsx @@ -0,0 +1,12 @@ +import {SVGProps} from 'react' + +export function TableInsert(props: SVGProps) { + return ( + + + + ) +} diff --git a/src/ui/icons/TableInsertColumnAfter.tsx b/src/ui/icons/TableInsertColumnAfter.tsx new file mode 100644 index 00000000..6d4b0f5b --- /dev/null +++ b/src/ui/icons/TableInsertColumnAfter.tsx @@ -0,0 +1,12 @@ +import {SVGProps} from 'react' + +export function TableInsertColumnAfter(props: SVGProps) { + return ( + + + + ) +} diff --git a/src/ui/icons/TableInsertColumnBefore.tsx b/src/ui/icons/TableInsertColumnBefore.tsx new file mode 100644 index 00000000..59977f34 --- /dev/null +++ b/src/ui/icons/TableInsertColumnBefore.tsx @@ -0,0 +1,12 @@ +import {SVGProps} from 'react' + +export function TableInsertColumnBefore(props: SVGProps) { + return ( + + + + ) +} diff --git a/src/ui/icons/TableInsertRowAfter.tsx b/src/ui/icons/TableInsertRowAfter.tsx new file mode 100644 index 00000000..fb71897e --- /dev/null +++ b/src/ui/icons/TableInsertRowAfter.tsx @@ -0,0 +1,12 @@ +import {SVGProps} from 'react' + +export function TableInsertRowAfter(props: SVGProps) { + return ( + + + + ) +} diff --git a/src/ui/icons/TableInsertRowBefore.tsx b/src/ui/icons/TableInsertRowBefore.tsx new file mode 100644 index 00000000..1423da1a --- /dev/null +++ b/src/ui/icons/TableInsertRowBefore.tsx @@ -0,0 +1,12 @@ +import {SVGProps} from 'react' + +export function TableInsertRowBefore(props: SVGProps) { + return ( + + + + ) +}