refactor: update FixedToolbarButtons to conditionally render save button based on read-only state, and adjust dropdown menu styles for better usability

This commit is contained in:
Anish Sarkar 2026-02-17 02:01:50 +05:30
parent df3f724caf
commit 6af251a108
3 changed files with 21 additions and 19 deletions

View file

@ -101,28 +101,30 @@ export function FixedToolbarButtons() {
<LinkToolbarButton /> <LinkToolbarButton />
</ToolbarGroup> </ToolbarGroup>
{/* Save button — appears when in editing mode with unsaved changes */}
{onSave && hasUnsavedChanges && (
<ToolbarGroup>
<ToolbarButton
tooltip={isSaving ? 'Saving...' : 'Save (⌘+S)'}
onClick={onSave}
disabled={isSaving}
className="text-white"
>
{isSaving ? (
<Spinner size="xs" />
) : (
<SaveIcon />
)}
</ToolbarButton>
</ToolbarGroup>
)}
</> </>
)} )}
<div className="grow" /> <div className="grow" />
{/* Save button — only in edit mode with unsaved changes */}
{!readOnly && onSave && hasUnsavedChanges && (
<ToolbarGroup>
<ToolbarButton
tooltip={isSaving ? 'Saving...' : 'Save (⌘+S)'}
onClick={onSave}
disabled={isSaving}
className="bg-primary text-primary-foreground hover:bg-primary/90"
>
{isSaving ? (
<Spinner size="xs" />
) : (
<SaveIcon />
)}
</ToolbarButton>
</ToolbarGroup>
)}
{/* Mode toggle */}
{canToggleMode && ( {canToggleMode && (
<ToolbarGroup> <ToolbarGroup>
<ModeToolbarButton /> <ModeToolbarButton />

View file

@ -195,7 +195,7 @@ export function InsertToolbarButton(props: DropdownMenuProps) {
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent <DropdownMenuContent
className="flex max-h-[500px] min-w-0 flex-col overflow-y-auto" className="flex max-h-[300px] min-w-0 flex-col overflow-y-scroll"
align="start" align="start"
> >
{groups.map(({ group, items }) => ( {groups.map(({ group, items }) => (

View file

@ -155,7 +155,7 @@ export function TurnIntoToolbarButton(props: DropdownMenuProps) {
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent <DropdownMenuContent
className="ignore-click-outside/toolbar min-w-0" className="ignore-click-outside/toolbar min-w-0 max-h-[350px] overflow-y-scroll"
onCloseAutoFocus={(e) => { onCloseAutoFocus={(e) => {
e.preventDefault(); e.preventDefault();
editor.tf.focus(); editor.tf.focus();