diff --git a/packages/richtext-lexical/src/features/toolbars/fixed/client/Toolbar/index.tsx b/packages/richtext-lexical/src/features/toolbars/fixed/client/Toolbar/index.tsx
index e4ccdbbab..9f1a46cb7 100644
--- a/packages/richtext-lexical/src/features/toolbars/fixed/client/Toolbar/index.tsx
+++ b/packages/richtext-lexical/src/features/toolbars/fixed/client/Toolbar/index.tsx
@@ -40,7 +40,7 @@ function ButtonGroupItem({
return (
- {}
+
)
}
diff --git a/packages/richtext-lexical/src/features/toolbars/shared/ToolbarDropdown/DropDown.tsx b/packages/richtext-lexical/src/features/toolbars/shared/ToolbarDropdown/DropDown.tsx
index 4d9d585d3..1daae08ad 100644
--- a/packages/richtext-lexical/src/features/toolbars/shared/ToolbarDropdown/DropDown.tsx
+++ b/packages/richtext-lexical/src/features/toolbars/shared/ToolbarDropdown/DropDown.tsx
@@ -1,6 +1,7 @@
'use client'
import type { LexicalEditor } from 'lexical'
+import { Button } from '@payloadcms/ui'
import React, { type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react'
import { createPortal } from 'react-dom'
@@ -19,15 +20,17 @@ export function DropDownItem({
children,
editor,
enabled,
+ Icon,
item,
- title,
+ tooltip,
}: {
active?: boolean
children: React.ReactNode
editor: LexicalEditor
enabled?: boolean
+ Icon: React.ReactNode
item: ToolbarGroupItem
- title?: string
+ tooltip?: string
}): React.ReactNode {
const [className, setClassName] = useState(baseClass)
@@ -61,8 +64,14 @@ export function DropDownItem({
}, [ref, registerItem])
return (
-
+
)
}
diff --git a/packages/richtext-lexical/src/features/toolbars/shared/ToolbarDropdown/index.scss b/packages/richtext-lexical/src/features/toolbars/shared/ToolbarDropdown/index.scss
index d6efb7871..79959749d 100644
--- a/packages/richtext-lexical/src/features/toolbars/shared/ToolbarDropdown/index.scss
+++ b/packages/richtext-lexical/src/features/toolbars/shared/ToolbarDropdown/index.scss
@@ -75,6 +75,7 @@
cursor: pointer;
color: var(--theme-elevation-900);
transition: background-color 0.15s cubic-bezier(0, 0.2, 0.2, 1);
+ position: relative;
.text {
overflow: hidden;
@@ -91,6 +92,13 @@
opacity: 0.2;
}
+ .btn__icon {
+ // Override default button icon styles that
+ // set a background color when focused
+ background: none !important;
+ background-color: none !important;
+ }
+
padding-left: 6.25px;
padding-right: 6.25px;
width: 100%;
diff --git a/packages/richtext-lexical/src/features/toolbars/shared/ToolbarDropdown/index.tsx b/packages/richtext-lexical/src/features/toolbars/shared/ToolbarDropdown/index.tsx
index 3ffb16ca3..a78e26579 100644
--- a/packages/richtext-lexical/src/features/toolbars/shared/ToolbarDropdown/index.tsx
+++ b/packages/richtext-lexical/src/features/toolbars/shared/ToolbarDropdown/index.tsx
@@ -49,6 +49,7 @@ const ToolbarItem = ({
}
let title = item.key
+ let croppedTitle = item.key
if (item.label) {
title =
typeof item.label === 'function'
@@ -57,13 +58,22 @@ const ToolbarItem = ({
}
// Crop title to max. 25 characters
if (title.length > 25) {
- title = title.substring(0, 25) + '...'
+ croppedTitle = title.substring(0, 25) + '...'
+ } else {
+ croppedTitle = title
}
return (
-
- {item?.ChildComponent && }
- {title}
+ : undefined}
+ item={item}
+ key={item.key}
+ tooltip={title}
+ >
+ {croppedTitle}
)
}
diff --git a/packages/ui/src/elements/Button/index.tsx b/packages/ui/src/elements/Button/index.tsx
index d38330483..8cfe3cfe3 100644
--- a/packages/ui/src/elements/Button/index.tsx
+++ b/packages/ui/src/elements/Button/index.tsx
@@ -63,6 +63,7 @@ export const Button = forwardRef((
Link,
newTab,
onClick,
+ onMouseDown,
round,
size = 'medium',
SubMenuPopupContent,
@@ -114,6 +115,7 @@ export const Button = forwardRef((
className: !SubMenuPopupContent ? [classes, styleClasses].join(' ') : classes,
disabled,
onClick: !disabled ? handleClick : undefined,
+ onMouseDown: !disabled ? onMouseDown : undefined,
onPointerEnter: tooltip ? () => setShowTooltip(true) : undefined,
onPointerLeave: tooltip ? () => setShowTooltip(false) : undefined,
rel: newTab ? 'noopener noreferrer' : undefined,
diff --git a/packages/ui/src/elements/Button/types.ts b/packages/ui/src/elements/Button/types.ts
index b634d2aa5..7bc3c0710 100644
--- a/packages/ui/src/elements/Button/types.ts
+++ b/packages/ui/src/elements/Button/types.ts
@@ -20,6 +20,7 @@ export type Props = {
Link?: React.ElementType
newTab?: boolean
onClick?: (event: MouseEvent) => void
+ onMouseDown?: (event: MouseEvent) => void
round?: boolean
secondaryActions?: secondaryAction | secondaryAction[]
size?: 'large' | 'medium' | 'small'