Skip to content

Commit 5da4c21

Browse files
committed
style: added tooltips to statement buttons on edit mode
1 parent 726b968 commit 5da4c21

File tree

1 file changed

+58
-38
lines changed

1 file changed

+58
-38
lines changed

src/components/statements/StatementItem.tsx

Lines changed: 58 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
XCircle,
1515
MailPlus,
1616
MailX,
17+
PenOff,
1718
} from 'lucide-react';
1819
import type { Entry } from '../../../types/entries';
1920
import {
@@ -181,45 +182,64 @@ const StatementItem: React.FC<StatementItemProps> = ({
181182
</div>
182183
</div>
183184
<div className='flex items-center space-x-2 ml-auto'>
184-
{/* Final Save button. This commits the local draft to the database via onLocalSave */}
185-
<Button
186-
variant='ghost'
187-
size='sm'
188-
onClick={async () => {
189-
setIsSaving(true);
190-
await onLocalSave(draft);
191-
setIsSaving(false);
192-
}}
193-
disabled={!hasChanged || isSaving}
194-
className='text-green-500 hover:text-green-700'
195-
>
196-
<Save size={16} />
197-
</Button>
185+
{/* This button needs a span wrapper to always show the tooltip */}
186+
<Tooltip>
187+
<TooltipTrigger asChild>
188+
<span className='inline-block'>
189+
<Button
190+
variant='ghost'
191+
size='sm'
192+
onClick={async () => {
193+
setIsSaving(true);
194+
await onLocalSave(draft);
195+
setIsSaving(false);
196+
}}
197+
disabled={!hasChanged || isSaving}
198+
className='text-green-500 hover:text-green-700 px-2'
199+
>
200+
<Save size={16} />
201+
</Button>
202+
</span>
203+
</TooltipTrigger>
204+
<TooltipContent className='p-2 bg-black text-white rounded'>
205+
Save changes
206+
</TooltipContent>
207+
</Tooltip>
198208

199-
{/* Cancel button: resets draft and exits edit mode */}
200-
<Button
201-
variant='ghost'
202-
size='sm'
203-
onClick={() => {
204-
// Reset local draft to original statement passed from parent.
205-
setDraft(statement);
206-
// Call the onCancel prop if provided.
207-
if (onCancel) {
208-
onCancel(statement.id);
209-
}
210-
}}
211-
className='text-gray-500 hover:text-gray-700'
212-
>
213-
Cancel
214-
</Button>
215-
<Button
216-
variant='ghost'
217-
size='sm'
218-
onClick={() => onDelete(draft.id)}
219-
className='text-red-500 hover:text-red-700'
220-
>
221-
<Trash2 size={16} />
222-
</Button>
209+
<Tooltip>
210+
<TooltipTrigger asChild>
211+
<Button
212+
variant='ghost'
213+
size='sm'
214+
onClick={() => {
215+
setDraft(statement);
216+
if (onCancel) onCancel(statement.id);
217+
}}
218+
className='text-red-500 hover:text-red-700 px-2'
219+
>
220+
<PenOff size={16} />
221+
</Button>
222+
</TooltipTrigger>
223+
<TooltipContent className='p-2 bg-black text-white rounded'>
224+
Cancel editing
225+
</TooltipContent>
226+
</Tooltip>
227+
228+
<Tooltip>
229+
<TooltipTrigger asChild>
230+
<Button
231+
variant='ghost'
232+
size='sm'
233+
onClick={() => onDelete(draft.id)}
234+
className='text-red-500 hover:text-red-700 px-2'
235+
>
236+
<Trash2 size={16} />
237+
</Button>
238+
</TooltipTrigger>
239+
<TooltipContent className='p-2 bg-black text-white rounded'>
240+
Delete statement
241+
</TooltipContent>
242+
</Tooltip>
223243
</div>
224244
</div>
225245
);

0 commit comments

Comments
 (0)