@@ -37,6 +37,13 @@ import { Badge } from "@/components/ui/badge";
3737import { ScrollArea , ScrollBar } from "@/components/ui/scroll-area" ;
3838import { Card , CardContent } from "@/components/ui/card" ;
3939import { Separator } from "@/components/ui/separator" ;
40+ import {
41+ Select ,
42+ SelectContent ,
43+ SelectItem ,
44+ SelectTrigger ,
45+ SelectValue ,
46+ } from "@/components/ui/select" ;
4047import { cn } from '@/lib/utils' ;
4148import { toast } from "sonner" ;
4249import {
@@ -170,7 +177,7 @@ export function DataEditor({ database, table, onClose }: Props) {
170177 }
171178 } ;
172179
173- const handleAddRow = async ( ) => {
180+ const handleAddRow = async ( keepOpen = false ) => {
174181 if ( ! data ) return ;
175182
176183 const rowData : Record < string , any > = { } ;
@@ -183,7 +190,9 @@ export function DataEditor({ database, table, onClose }: Props) {
183190 try {
184191 await InsertRow ( database , table , rowData ) ;
185192 setNewRowData ( { } ) ;
186- setShowAddRow ( false ) ;
193+ if ( ! keepOpen ) {
194+ setShowAddRow ( false ) ;
195+ }
187196 toast . success ( "New row inserted successfully" ) ;
188197 await loadData ( ) ;
189198 } catch ( err : any ) {
@@ -437,18 +446,43 @@ export function DataEditor({ database, table, onClose }: Props) {
437446 < span className = "text-[8px] opacity-40 uppercase" > { col . type } </ span >
438447 </ div >
439448 </ div >
440- < Input
441- className = "h-7 text-xs bg-background"
442- value = { newRowData [ col . name ] || '' }
443- onChange = { ( e ) => setNewRowData ( { ...newRowData , [ col . name ] : e . target . value } ) }
444- placeholder = { col . nullable ? 'NULL' : col . name }
445- />
449+ { col . type . includes ( 'bool' ) || col . type . includes ( 'tinyint(1)' ) ? (
450+ < Select
451+ value = { newRowData [ col . name ] }
452+ onValueChange = { ( val ) => setNewRowData ( { ...newRowData , [ col . name ] : val } ) }
453+ >
454+ < SelectTrigger className = "h-7 text-xs bg-background" >
455+ < SelectValue placeholder = { col . nullable ? "NULL" : "Select..." } />
456+ </ SelectTrigger >
457+ < SelectContent >
458+ { col . nullable && < SelectItem value = "" > NULL</ SelectItem > }
459+ < SelectItem value = "1" > TRUE</ SelectItem >
460+ < SelectItem value = "0" > FALSE</ SelectItem >
461+ </ SelectContent >
462+ </ Select >
463+ ) : (
464+ < Input
465+ className = "h-7 text-xs bg-background"
466+ value = { newRowData [ col . name ] || '' }
467+ onChange = { ( e ) => setNewRowData ( { ...newRowData , [ col . name ] : e . target . value } ) }
468+ placeholder = { col . nullable ? 'NULL' : col . name }
469+ type = { col . type . includes ( 'int' ) || col . type . includes ( 'decimal' ) || col . type . includes ( 'float' ) ? 'number' : 'text' }
470+ />
471+ ) }
446472 </ div >
447473 ) ) }
448474 </ div >
449475 < div className = "flex justify-end gap-2 mt-6" >
450476 < Button variant = "ghost" size = "sm" className = "h-8 text-[11px] font-bold" onClick = { ( ) => setShowAddRow ( false ) } > CANCEL</ Button >
451- < Button size = "sm" className = "h-8 px-6 text-[11px] font-bold uppercase" onClick = { handleAddRow } > Commit Row</ Button >
477+ < Button
478+ variant = "outline"
479+ size = "sm"
480+ className = "h-8 px-4 text-[11px] font-bold uppercase border-primary/20 text-primary hover:bg-primary/5"
481+ onClick = { ( ) => handleAddRow ( true ) }
482+ >
483+ Commit & Add Another
484+ </ Button >
485+ < Button size = "sm" className = "h-8 px-6 text-[11px] font-bold uppercase" onClick = { ( ) => handleAddRow ( false ) } > Commit Row</ Button >
452486 </ div >
453487 </ CardContent >
454488 </ Card >
0 commit comments