@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
1 lines • 4.68 kB
Source Map (JSON)
{"version":3,"file":"TableBody.mjs","names":[],"sources":["../../../src/base-ui/Table/TableBody.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport type { CSSProperties, Key, ReactNode } from 'react';\n\nimport Spin from '@/base-ui/Spin';\nimport Empty from '@/Empty';\n\nimport { styles } from './style';\nimport { getCellValue } from './toColumnDefs';\nimport type { TableColumn, TableProps } from './type';\n\ninterface TableBodyProps<T> {\n classNames?: TableProps<T>['classNames'];\n columnIds: string[];\n columns: TableColumn<T>[];\n emptyText?: ReactNode;\n fixedOffsets: (CSSProperties | undefined)[];\n loading: boolean;\n onRow?: TableProps<T>['onRow'];\n rowClassName?: TableProps<T>['rowClassName'];\n rows: { id: Key; original: T }[];\n styles?: TableProps<T>['styles'];\n}\n\nconst TableBody = <T,>({\n classNames,\n columnIds,\n columns,\n emptyText,\n fixedOffsets,\n loading,\n onRow,\n rowClassName,\n rows,\n styles: customStyles,\n}: TableBodyProps<T>) => {\n if (rows.length === 0) {\n return (\n <tbody className={classNames?.body} style={customStyles?.body}>\n <tr>\n <td className={styles.empty} colSpan={columns.length}>\n {loading ? <Spin /> : (emptyText ?? <Empty description=\"No data\" />)}\n </td>\n </tr>\n </tbody>\n );\n }\n\n return (\n <tbody className={classNames?.body} style={customStyles?.body}>\n {rows.map((row, rowIndex) => {\n const record = row.original;\n const rowProps = onRow?.(record, rowIndex) ?? {};\n const extraClassName =\n typeof rowClassName === 'function' ? rowClassName(record, rowIndex) : rowClassName;\n\n return (\n <tr\n {...rowProps}\n key={row.id}\n style={{ ...customStyles?.row, ...rowProps.style }}\n className={cx(\n styles.row,\n rowProps.onClick && styles.clickable,\n extraClassName,\n classNames?.row,\n rowProps.className,\n )}\n >\n {columns.map((column, columnIndex) => {\n const value = getCellValue(record, column);\n const cellProps = column.onCell?.(record, rowIndex) ?? {};\n const content = column.render\n ? column.render(value, record, rowIndex)\n : (value as ReactNode);\n\n return (\n <td\n {...cellProps}\n key={columnIds[columnIndex]}\n title={column.ellipsis && typeof content === 'string' ? content : cellProps.title}\n className={cx(\n styles.cell,\n column.ellipsis && styles.ellipsis,\n column.fixed && styles.fixed,\n column.className,\n classNames?.cell,\n cellProps.className,\n )}\n style={{\n textAlign: column.align,\n width: column.width,\n ...fixedOffsets[columnIndex],\n ...customStyles?.cell,\n ...cellProps.style,\n }}\n >\n {content}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n );\n};\n\nexport default TableBody;\n"],"mappings":";;;;;;;;;AAyBA,MAAM,aAAiB,EACrB,YACA,WACA,SACA,WACA,cACA,SACA,OACA,cACA,MACA,QAAQ,mBACe;CACvB,IAAI,KAAK,WAAW,GAClB,OACE,oBAAC,SAAD;EAAO,WAAW,YAAY;EAAM,OAAO,cAAc;EACvD,UAAA,oBAAC,MAAD,EAAA,UACE,oBAAC,MAAD;GAAI,WAAW,OAAO;GAAO,SAAS,QAAQ;GAC3C,UAAA,UAAU,oBAAC,MAAD,CAAO,CAAA,IAAK,aAAa,oBAAC,OAAD,EAAO,aAAY,UAAW,CAAA;EAChE,CAAA,EACF,CAAA;CACC,CAAA;CAIX,OACE,oBAAC,SAAD;EAAO,WAAW,YAAY;EAAM,OAAO,cAAc;EACtD,UAAA,KAAK,KAAK,KAAK,aAAa;GAC3B,MAAM,SAAS,IAAI;GACnB,MAAM,WAAW,QAAQ,QAAQ,QAAQ,KAAK,CAAC;GAC/C,MAAM,iBACJ,OAAO,iBAAiB,aAAa,aAAa,QAAQ,QAAQ,IAAI;GAExE,OACE,8BAAC,MAAD;IACE,GAAI;IACJ,KAAK,IAAI;IACT,OAAO;KAAE,GAAG,cAAc;KAAK,GAAG,SAAS;IAAM;IACjD,WAAW,GACT,OAAO,KACP,SAAS,WAAW,OAAO,WAC3B,gBACA,YAAY,KACZ,SAAS,SACX;GAkCE,GAhCD,QAAQ,KAAK,QAAQ,gBAAgB;IACpC,MAAM,QAAQ,aAAa,QAAQ,MAAM;IACzC,MAAM,YAAY,OAAO,SAAS,QAAQ,QAAQ,KAAK,CAAC;IACxD,MAAM,UAAU,OAAO,SACnB,OAAO,OAAO,OAAO,QAAQ,QAAQ,IACpC;IAEL,OACE,8BAAC,MAAD;KACE,GAAI;KACJ,KAAK,UAAU;KACf,OAAO,OAAO,YAAY,OAAO,YAAY,WAAW,UAAU,UAAU;KAC5E,WAAW,GACT,OAAO,MACP,OAAO,YAAY,OAAO,UAC1B,OAAO,SAAS,OAAO,OACvB,OAAO,WACP,YAAY,MACZ,UAAU,SACZ;KACA,OAAO;MACL,WAAW,OAAO;MAClB,OAAO,OAAO;MACd,GAAG,aAAa;MAChB,GAAG,cAAc;MACjB,GAAG,UAAU;KACf;IAGE,GADD,OACC;GAER,CAAC,CACC;EAER,CAAC;CACI,CAAA;AAEX"}