@@ -14,6 +14,7 @@ import {
1414 XCircle ,
1515 MailPlus ,
1616 MailX ,
17+ PenOff ,
1718} from 'lucide-react' ;
1819import type { Entry } from '../../../types/entries' ;
1920import {
@@ -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