UNPKG

ivt

Version:

Ivt Components Library

1 lines 21.1 kB
{"version":3,"file":"index.mjs","sources":["../../src/components/default/editable-table/EditableTable.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport { NumericFormat } from \"react-number-format\";\nimport { Button } from \"@/components/ui/button\";\nimport { Checkbox } from \"@/components/ui/checkbox\";\nimport { Input } from \"@/components/ui/input\";\nimport {\n\tSelect,\n\tSelectContent,\n\tSelectItem,\n\tSelectTrigger,\n\tSelectValue,\n} from \"@/components/ui/select\";\nimport {\n\tTable,\n\tTableBody,\n\tTableCell,\n\tTableHead,\n\tTableHeader,\n\tTableRow,\n} from \"@/components/ui/table\";\nimport { cn } from \"@/lib/utils\";\n\nexport const styleInput =\n\t\"border-input file:text-foreground placeholder:text-muted-foreground focus-visible:ring-ring flex h-10 w-full rounded-md border bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:ring-1 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\";\n\nfunction formatNumberWithComma({\n\tvalue,\n\tminimumFractionDigits = 0,\n\tmaximumFractionDigits = 12,\n\tcurrency,\n}: {\n\tvalue: number;\n\tminimumFractionDigits?: number;\n\tmaximumFractionDigits?: number;\n\tcurrency?: string | null;\n}) {\n\tconst options: Intl.NumberFormatOptions = {\n\t\tminimumFractionDigits,\n\t\tmaximumFractionDigits,\n\t};\n\n\tif (currency) {\n\t\toptions.style = \"currency\";\n\t\toptions.currency = currency;\n\t}\n\n\t// Conversão segura para evitar NaN\n\tconst numberValue = Number(value);\n\tif (Number.isNaN(numberValue)) return String(value);\n\n\tconst formatter = new Intl.NumberFormat(\"pt-BR\", options);\n\treturn formatter.format(numberValue);\n}\n\ninterface EditableOption {\n\tvalue: string | number | boolean;\n\tlabel: string;\n}\n\nexport interface EditableColumn<T> {\n\tkey: keyof T;\n\tlabel: string;\n\ttype?: \"text\" | \"number\" | \"select\" | \"boolean\";\n\trequired?: boolean;\n\toptions?: EditableOption[];\n\t// biome-ignore lint/suspicious/noExplicitAny: <any>\n\trender?: (value: any, row: T, rowIndex: number) => React.ReactNode;\n\teditable?: boolean;\n}\n\ninterface EditableTableProps<T> {\n\tdata: T[];\n\tcolumns: EditableColumn<T>[];\n\trowKey: keyof T;\n\tisIntegrationTable?: boolean;\n\t// biome-ignore lint/suspicious/noExplicitAny: <any>\n\tonSave: (field: keyof T, value: any, row: T) => Promise<void> | void;\n\t// biome-ignore lint/suspicious/noExplicitAny: <any>\n\tonChange?: (rowId: number, field: keyof T, value: any) => void;\n\tonCancel?: (rowId: number, field: keyof T) => void;\n\tclassName?: string;\n}\n\n// biome-ignore lint/suspicious/noExplicitAny: <any>\nexport function EditableTable<T extends Record<string, any>>({\n\tdata,\n\tcolumns,\n\trowKey,\n\tonSave,\n\tonChange,\n\tonCancel,\n\tclassName,\n\tisIntegrationTable = true,\n}: EditableTableProps<T>) {\n\tconst [editing, setEditing] = React.useState<{\n\t\tid: number;\n\t\tfield: keyof T;\n\t} | null>(null);\n\tconst [tempValues, setTempValues] = React.useState<Record<number, Partial<T>>>({});\n\n\t// biome-ignore lint/suspicious/noExplicitAny: <any>\n\tconst handleTempChange = (id: number, field: keyof T, value: any) => {\n\t\tsetTempValues((prev) => ({\n\t\t\t...prev,\n\t\t\t[id]: { ...prev[id], [field]: value },\n\t\t}));\n\t\tonChange?.(id, field, value);\n\t};\n\n\tconst confirmEditing = async (id: number, field: keyof T) => {\n\t\tconst value = tempValues[id]?.[field];\n\t\tconst row = data.find((r) => r[rowKey] === id);\n\t\tif (!row) return;\n\n\t\tif (value !== undefined) await onSave(field, value, row);\n\n\t\tsetEditing(null);\n\t\tsetTempValues((prev) => {\n\t\t\tconst next = { ...prev };\n\t\t\tdelete next[id]?.[field];\n\t\t\treturn next;\n\t\t});\n\t\twindow.getSelection()?.removeAllRanges();\n\t};\n\n\tconst cancelEditing = (id: number, field: keyof T) => {\n\t\tonCancel?.(id, field);\n\t\tsetEditing(null);\n\t\twindow.getSelection()?.removeAllRanges();\n\t};\n\n\treturn (\n\t\t<div className={cn(\"overflow-x-auto rounded-lg\", className)}>\n\t\t\t<Table className=\"min-w-full\">\n\t\t\t\t{/* Cabeçalho */}\n\t\t\t\t<TableHeader className=\"bg-card sticky top-0 z-5\">\n\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t{columns.map((col) => (\n\t\t\t\t\t\t\t<TableHead className=\"h-10 font-medium\" key={String(col.key)}>\n\t\t\t\t\t\t\t\t{col.label} {col.required && <span className=\"text-destructive\">*</span>}\n\t\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</TableRow>\n\t\t\t\t</TableHeader>\n\n\t\t\t\t{/* Linhas */}\n\t\t\t\t<TableBody className=\"text-muted-foreground\">\n\t\t\t\t\t{data.map((row, rowIndex) => (\n\t\t\t\t\t\t<TableRow key={String(row[rowKey])} className=\"even:bg-soft\">\n\t\t\t\t\t\t\t{columns.map((col) => {\n\t\t\t\t\t\t\t\tconst value = row[col.key];\n\t\t\t\t\t\t\t\tconst rowId = row[rowKey] as unknown as number;\n\t\t\t\t\t\t\t\tconst isEditing = editing?.id === rowId && editing.field === col.key;\n\n\t\t\t\t\t\t\t\tconst cellContent = () => {\n\t\t\t\t\t\t\t\t\tif (col.render && !isEditing) {\n\t\t\t\t\t\t\t\t\t\treturn <div key={String(col.key)}>{col.render(value, row, rowIndex)}</div>;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (col.type === \"select\") {\n\t\t\t\t\t\t\t\t\t\tconst currentValue = tempValues[rowId]?.[col.key] ?? value ?? \"\";\n\n\t\t\t\t\t\t\t\t\t\tconst isEditableSelect = rowIndex === 0 || !isIntegrationTable;\n\n\t\t\t\t\t\t\t\t\t\tif (!isEditableSelect) {\n\t\t\t\t\t\t\t\t\t\t\tconst selectedLabel =\n\t\t\t\t\t\t\t\t\t\t\t\tcol.options?.find((opt) => String(opt.value) === String(currentValue))\n\t\t\t\t\t\t\t\t\t\t\t\t\t?.label ?? \"-\";\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={`${rowId}-${String(col.key)}-readonly`}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"text-foreground px-2 text-sm\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{selectedLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\t\t\tkey={`${rowId}-${String(col.key)}-select`}\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={String(currentValue)}\n\t\t\t\t\t\t\t\t\t\t\t\tonValueChange={async (val) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\thandleTempChange(rowId, col.key, val);\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst rowData = data.find((r) => r[rowKey] === rowId);\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (rowData) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tawait onSave(col.key, val, rowData);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<SelectTrigger className=\"text-foreground bg-background *:svg-text-foreground h-9 w-fit min-w-20 text-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SelectValue />\n\t\t\t\t\t\t\t\t\t\t\t\t</SelectTrigger>\n\t\t\t\t\t\t\t\t\t\t\t\t<SelectContent className=\"max-h-[300px] overflow-y-auto overflow-x-hidden\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{col.options?.map((opt) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<SelectItem key={String(opt.value)} value={String(opt.value)}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{opt.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</SelectItem>\n\t\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t\t</SelectContent>\n\t\t\t\t\t\t\t\t\t\t\t</Select>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (col.type === \"boolean\") {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\t\t\t\t\t\tkey={`${rowId}-${String(col.key)}`}\n\t\t\t\t\t\t\t\t\t\t\t\tchecked={!!value}\n\t\t\t\t\t\t\t\t\t\t\t\tonCheckedChange={(checked: boolean) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\thandleTempChange(rowId, col.key, checked);\n\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst rowData = data.find((r) => r[rowKey] === rowId);\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (rowData) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSave(col.key, checked, rowData);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tonBlur={() => confirmEditing(rowId, col.key)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (isEditing && col.type === \"number\") {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<NumericFormat\n\t\t\t\t\t\t\t\t\t\t\t\tkey={`${rowId}-${String(col.key)}-edit`}\n\t\t\t\t\t\t\t\t\t\t\t\tautoFocus\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={tempValues[rowId]?.[col.key] ?? value ?? \"\"}\n\t\t\t\t\t\t\t\t\t\t\t\tvalueIsNumericString\n\t\t\t\t\t\t\t\t\t\t\t\tdecimalSeparator=\",\"\n\t\t\t\t\t\t\t\t\t\t\t\tthousandSeparator=\".\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(styleInput, \"bg-background box-border h-9 w-full\")}\n\t\t\t\t\t\t\t\t\t\t\t\tonValueChange={(v) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\thandleTempChange(rowId, col.key, String(v.floatValue))\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.key === \"Enter\") confirmEditing(rowId, col.key);\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.key === \"Escape\") cancelEditing(rowId, col.key);\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tonBlur={() => cancelEditing(rowId, col.key)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif (isEditing && col.type === \"text\") {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\t\t\tkey={`${rowId}-${String(col.key)}-edit`}\n\t\t\t\t\t\t\t\t\t\t\t\tautoFocus\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={tempValues[rowId]?.[col.key] ?? value ?? \"\"}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(styleInput, \"bg-background box-border h-9 w-full\")}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(e) => handleTempChange(rowId, col.key, e.target.value)}\n\t\t\t\t\t\t\t\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.key === \"Enter\") confirmEditing(rowId, col.key);\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (e.key === \"Escape\") cancelEditing(rowId, col.key);\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tonBlur={() => cancelEditing(rowId, col.key)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"table\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\tstyleInput,\n\t\t\t\t\t\t\t\t\t\t\t\t\"bg-background box-border h-9 w-full cursor-default justify-start\",\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => col.editable && setEditing({ id: rowId, field: col.key })}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{value === null || value === undefined || value === \"\" ? (\n\t\t\t\t\t\t\t\t\t\t\t\tcol.editable ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"Clique para editar...\"\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"-\"\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t) : col.type === \"number\" ? (\n\t\t\t\t\t\t\t\t\t\t\t\tformatNumberWithComma({\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\t\t\t\tminimumFractionDigits: 2,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmaximumFractionDigits: 10,\n\t\t\t\t\t\t\t\t\t\t\t\t}) || \"0,00\"\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"truncate block w-full text-left\">{String(value)}</span>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<TableCell key={String(col.key)} className=\"p-2\">\n\t\t\t\t\t\t\t\t\t\t<div className=\"md:w-[150px]\">{cellContent()}</div>\n\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t))}\n\t\t\t\t</TableBody>\n\t\t\t</Table>\n\t\t</div>\n\t);\n}\n"],"names":["styleInput","formatNumberWithComma","value","minimumFractionDigits","maximumFractionDigits","currency","options","style","numberValue","Number","isNaN","String","formatter","Intl","NumberFormat","format","EditableTable","data","columns","rowKey","onSave","onChange","onCancel","className","isIntegrationTable","editing","setEditing","React","useState","tempValues","setTempValues","handleTempChange","id","field","prev","confirmEditing","row","find","r","undefined","next","window","getSelection","removeAllRanges","cancelEditing","div","cn","Table","TableHeader","TableRow","map","col","TableHead","key","label","required","span","TableBody","rowIndex","rowId","isEditing","cellContent","render","type","currentValue","isEditableSelect","selectedLabel","opt","Select","onValueChange","val","rowData","SelectTrigger","SelectValue","SelectContent","SelectItem","Checkbox","checked","onCheckedChange","onBlur","NumericFormat","autoFocus","valueIsNumericString","decimalSeparator","thousandSeparator","v","floatValue","onKeyDown","e","Input","target","Button","variant","onClick","editable","TableCell"],"mappings":"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"}