@chumsinc/sortable-tables 2.0.14 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -1
- package/dist/DataTable.d.ts +1 -1
- package/dist/DataTableCell.d.ts +3 -3
- package/dist/DataTableHead.d.ts +1 -1
- package/dist/DataTableRow.d.ts +1 -1
- package/dist/DataTableTBody.d.ts +1 -1
- package/dist/DataTableTH.d.ts +1 -1
- package/dist/RowsPerPage.d.ts +1 -1
- package/dist/SortableTable.d.ts +1 -1
- package/dist/SortableTableHead.d.ts +1 -1
- package/dist/SortableTableTH.d.ts +1 -1
- package/dist/Table.d.ts +2 -2
- package/dist/TablePagination.d.ts +1 -1
- package/dist/index.cjs.js +28 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.es.js +388 -0
- package/dist/index.es.js.map +1 -0
- package/dist/types.d.ts +5 -5
- package/eslint.config.mjs +22 -13
- package/{public/index.html → index.html} +2 -5
- package/package.json +25 -19
- package/src/DataTable.tsx +1 -1
- package/src/DataTableCell.tsx +1 -1
- package/src/DataTableHead.tsx +1 -1
- package/src/DataTableRow.tsx +1 -1
- package/src/DataTableTBody.tsx +1 -1
- package/src/DataTableTH.tsx +1 -1
- package/src/RowsPerPage.tsx +1 -1
- package/src/SortableTable.tsx +1 -1
- package/src/SortableTableHead.tsx +1 -1
- package/src/SortableTableTH.tsx +1 -1
- package/src/Table.tsx +1 -1
- package/src/TablePagination.tsx +1 -1
- package/src/types.ts +17 -17
- package/tsconfig.json +8 -6
- package/vite.config.ts +33 -0
- package/babel.config.mjs +0 -13
- package/dist/DataTable.js +0 -14
- package/dist/DataTable.js.map +0 -1
- package/dist/DataTableCell.js +0 -17
- package/dist/DataTableCell.js.map +0 -1
- package/dist/DataTableHead.js +0 -11
- package/dist/DataTableHead.js.map +0 -1
- package/dist/DataTableRow.js +0 -16
- package/dist/DataTableRow.js.map +0 -1
- package/dist/DataTableTBody.js +0 -15
- package/dist/DataTableTBody.js.map +0 -1
- package/dist/DataTableTH.js +0 -9
- package/dist/DataTableTH.js.map +0 -1
- package/dist/RowsPerPage.js +0 -16
- package/dist/RowsPerPage.js.map +0 -1
- package/dist/SortableTable.js +0 -14
- package/dist/SortableTable.js.map +0 -1
- package/dist/SortableTableHead.js +0 -12
- package/dist/SortableTableHead.js.map +0 -1
- package/dist/SortableTableTH.js +0 -48
- package/dist/SortableTableTH.js.map +0 -1
- package/dist/Table.js +0 -28
- package/dist/Table.js.map +0 -1
- package/dist/TablePagination.js +0 -13
- package/dist/TablePagination.js.map +0 -1
- package/dist/index.js +0 -10
- package/dist/index.js.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/webpack.common.mjs +0 -72
- package/webpack.dev.mjs +0 -35
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/DataTableTH.tsx","../src/DataTableHead.tsx","../src/DataTableCell.tsx","../src/DataTableRow.tsx","../src/DataTableTBody.tsx","../src/Table.tsx","../src/DataTable.tsx","../src/SortableTableTH.tsx","../src/SortableTableHead.tsx","../src/SortableTable.tsx","../src/RowsPerPage.tsx","../src/TablePagination.tsx"],"sourcesContent":["import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport type {DataTableTHProps} from \"./types\";\r\n\r\n\r\nfunction DataTableTH<T = unknown>({\r\n field,\r\n className,\r\n children,\r\n ...rest\r\n }: DataTableTHProps<T>) {\r\n const thClassName = classNames({[`text-${field.align}`]: !!field.align}, className);\r\n return (\r\n <th className={thClassName} scope=\"col\" {...rest}>\r\n {children ?? field.title}\r\n </th>\r\n )\r\n}\r\nDataTableTH.displayName = 'DataTableTH';\r\nexport default DataTableTH;\r\n","import React from \"react\";\r\nimport DataTableTH from \"./DataTableTH\";\r\nimport classNames from \"classnames\";\r\nimport type {DataTableHeadProps} from \"./types\";\r\n\r\n\r\nfunction DataTableHead<T = unknown>({fields, ...rest}: DataTableHeadProps<T>) {\r\n return (\r\n <thead {...rest}>\r\n <tr>\r\n {fields.map((field, index) => (\r\n <DataTableTH key={field.id ?? index}\r\n {...field.thProps}\r\n field={field}\r\n className={classNames(\r\n typeof field.className === 'function'\r\n ? {[`text-${field.align}`]: !!field.align}\r\n : field.className\r\n )}/>\r\n ))}\r\n </tr>\r\n </thead>\r\n )\r\n}\r\n\r\nDataTableHead.displayName = 'DataTableHead';\r\nexport default DataTableHead;\r\n","import React, {ReactNode} from 'react';\nimport type {DataTableCellProps} from \"./types\";\nimport classNames from \"classnames\";\n\nexport default function DataTableCell<T = unknown>({field, row, className, as, ...rest}:DataTableCellProps<T>) {\n const cellClassName = classNames(\n {[`text-${field.align}`]: !!field.align},\n className,\n typeof field.className === 'function' ? field.className(row) : field.className\n );\n return React.createElement(\n (as ?? field.as) ?? 'td',\n {\n className: cellClassName,\n scope: (as ?? field.as) === 'th' ? 'row' : undefined,\n colSpan: field.colSpan,\n ...field.cellProps,\n ...rest\n },\n (row[field.field] === undefined && !field.render)\n ? null\n : (\n typeof field.render === 'function'\n ? field.render(row)\n : row[field.field] as ReactNode\n )\n )\n}\n","import React, {MouseEvent} from 'react';\r\nimport classNames from \"classnames\";\r\nimport type {DataTableRowProps} from \"./types\";\r\nimport DataTableCell from \"./DataTableCell\";\r\n\r\n\r\nfunction DataTableRow<T = unknown>({\r\n className,\r\n rowClassName,\r\n selected,\r\n fields,\r\n row,\r\n trRef,\r\n onClick,\r\n ...rest\r\n }: DataTableRowProps<T>) {\r\n const clickHandler = (ev: MouseEvent<HTMLTableRowElement>) => {\r\n onClick?.(row, ev)\r\n }\r\n\r\n const _className = typeof rowClassName === 'function' ? rowClassName(row) : rowClassName;\r\n if (!row) {\r\n return null;\r\n }\r\n\r\n return (\r\n <tr ref={trRef}\r\n className={classNames({'table-active': selected}, className, _className)}\r\n onClick={clickHandler}\r\n {...rest}>\r\n {fields.map((field, index) => (<DataTableCell key={index} field={field} row={row}/>))}\r\n </tr>\r\n )\r\n}\r\n\r\nDataTableRow.displayName = 'DataTableRow';\r\nexport default DataTableRow;\r\n","import React from 'react';\r\nimport DataTableRow from \"./DataTableRow\";\r\nimport type {DataTableTBodyProps} from \"./types\";\r\n\r\n\r\nfunction DataTableTBody<T = unknown>({\r\n fields,\r\n data,\r\n keyField,\r\n rowClassName,\r\n renderRow,\r\n onSelectRow,\r\n selected = '',\r\n children,\r\n ...rest\r\n }: DataTableTBodyProps<T>) {\r\n return (\r\n <tbody {...rest}>\r\n {data.map(row => {\r\n const keyValue = String(typeof keyField === \"function\" ? keyField(row) : row[keyField]);\r\n const isSelected = typeof selected === 'function' ? selected(row) : keyValue === selected;\r\n if (renderRow) {\r\n return renderRow(row);\r\n }\r\n return (\r\n <DataTableRow key={keyValue} onClick={onSelectRow}\r\n rowClassName={rowClassName}\r\n fields={fields}\r\n row={row} selected={isSelected}/>\r\n )\r\n })}\r\n {children}\r\n </tbody>\r\n )\r\n}\r\n\r\nDataTableTBody.displayName = 'DataTableTBody';\r\nexport default DataTableTBody\r\n","import React, {TableHTMLAttributes} from 'react';\nimport styled from \"@emotion/styled\";\nimport type {DataTableProps} from \"./types\";\nimport classNames from \"classnames\";\n\nexport type StyledTableProps = TableHTMLAttributes<HTMLTableElement> & Pick<DataTableProps, 'sticky' | 'responsive'>\n\nconst StyledTable = styled.table<StyledTableProps>`\n --table-sticky-top: ${props => props.sticky ? '0' : undefined};\n\n thead {\n tr:nth-of-type(1) td,\n tr:nth-of-type(1) th {\n top: var(--table-sticky-top, unset);\n position: ${props => props.sticky ? \"sticky\" : \"unset\"};\n z-index: ${props => props.sticky ? 10 : \"unset\"};\n background: ${props => props.sticky ? \"linear-gradient(var(--bs-table-bg) 75%, rgba(var(--bs-secondary-bg-rgb), 0.9))\" : \"unset\"};\n }\n }\n`\n\nexport default React.forwardRef<HTMLTableElement, StyledTableProps>(\n function Table({\n sticky,\n responsive,\n children,\n className,\n ...rest\n }, ref) {\n if (responsive) {\n const _className = classNames(className, {\n 'table-responsive': responsive === true,\n [`table-responsive-${responsive}`]: responsive !== true,\n })\n return (\n <div className={_className}>\n <StyledTable ref={ref} {...rest}>{children}</StyledTable>\n </div>\n )\n }\n return (\n <StyledTable className={className} sticky={sticky} ref={ref} {...rest}>{children}</StyledTable>\n )\n })\n","import React from 'react';\r\nimport classNames from \"classnames\";\r\nimport DataTableHead from \"./DataTableHead\";\r\nimport DataTableTBody from \"./DataTableTBody\";\r\nimport type {DataTableProps} from \"./types\";\r\nimport Table from \"./Table\";\r\n\r\n\r\nfunction DataTable<T = unknown>({\r\n fields,\r\n data,\r\n keyField,\r\n size = '',\r\n sticky,\r\n responsive,\r\n rowClassName,\r\n renderRow,\r\n onSelectRow,\r\n selected = '',\r\n className = '',\r\n tfoot,\r\n children,\r\n tableHeadProps,\r\n ...rest\r\n }: DataTableProps<T>) {\r\n\r\n const tableClassName = classNames('table', className, {\r\n [`table-${size}`]: !!size,\r\n })\r\n\r\n return (\r\n <Table sticky={sticky} responsive={responsive} className={tableClassName} {...rest}>\r\n <DataTableHead {...tableHeadProps} fields={fields}/>\r\n {!!data.length && (\r\n <DataTableTBody fields={fields} data={data} keyField={keyField} rowClassName={rowClassName}\r\n renderRow={renderRow}\r\n onSelectRow={onSelectRow} selected={selected}/>\r\n )}\r\n {children}\r\n {tfoot}\r\n </Table>\r\n )\r\n}\r\n\r\nDataTable.displayName = 'DataTable';\r\nexport default DataTable;\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport DataTableTH from \"./DataTableTH\";\r\nimport type {SortableTableTHProps, UIFlexAlign} from \"./types\";\r\nimport styled from '@emotion/styled';\r\n\r\nconst flexJustifyContent = (align?: UIFlexAlign) => {\r\n if (!align) {\r\n return 'flex-start';\r\n }\r\n switch (align) {\r\n case 'end':\r\n return 'flex-end';\r\n default:\r\n return 'center';\r\n }\r\n}\r\n\r\ntype FieldTitleProps = {\r\n sorted?: boolean;\r\n align?: UIFlexAlign;\r\n};\r\nconst FieldTitle = styled.div<FieldTitleProps>`\r\n display: flex;\r\n width: 100%;\r\n flex-direction: ${props => props.align === 'end' ? 'row-reverse' : 'row'};\r\n justify-content: ${props => flexJustifyContent(props.align)};\r\n .sort-icon {\r\n flex-grow: ${props => props.align === 'end' ? '1' : '0'};\r\n opacity: ${props => props.sorted ? 1 : 0};\r\n }\r\n &:hover .sort-icon {\r\n color: ${props => props.sorted ? 'unset' : 'var(--bs-primary)'} ;\r\n opacity: 0.75;\r\n transition: opacity 0.2s;\r\n }\r\n`\r\n\r\nfunction SortableTableTH<T = unknown>({\r\n field,\r\n sorted,\r\n ascending,\r\n className,\r\n onClick\r\n }: SortableTableTHProps<T>) {\r\n if (!field.sortable) {\r\n return (<DataTableTH field={field} className={className}/>)\r\n }\r\n\r\n const {className: _thClassName, ...thProps} = field.thProps ?? {};\r\n const thClassName = classNames(\r\n className,\r\n _thClassName,\r\n {[`text-${field.align}`]: !!field.align}\r\n );\r\n\r\n const clickHandler = () => {\r\n onClick({field: field.field, ascending: !sorted ? true : !ascending});\r\n }\r\n\r\n const iconClassName = {\r\n 'bi-arrow-down': ascending,\r\n 'bi-arrow-up': !ascending,\r\n }\r\n\r\n return (\r\n <th {...thProps} className={classNames(\"sortable\", thClassName)} scope=\"col\" onClick={clickHandler}>\r\n <FieldTitle sorted={sorted} align={field.align}>\r\n <div className=\"field-title\">{field.title}</div>\r\n <div className={classNames('me-1 sort-icon', iconClassName)}/>\r\n </FieldTitle>\r\n </th>\r\n )\r\n}\r\n\r\nSortableTableTH.displayName = 'SortableTableTH';\r\nexport default SortableTableTH;\r\n","import React from \"react\";\r\nimport SortableTableTH from \"./SortableTableTH\";\r\nimport classNames from \"classnames\";\r\nimport type {SortableTableHeadProps} from \"./types\";\r\n\r\n\r\nfunction SortableTableHead<T = unknown>({\r\n currentSort,\r\n fields,\r\n onChangeSort,\r\n }: SortableTableHeadProps<T>) {\r\n const {field, ascending} = currentSort;\r\n return (\r\n <thead>\r\n <tr>\r\n {fields.map((tableField, index) => (\r\n <SortableTableTH<T> key={index} field={tableField}\r\n sorted={field === tableField.field} ascending={ascending}\r\n className={classNames(\r\n typeof tableField.className === 'function'\r\n ? {[`text-${tableField.align}`]: !!tableField.align}\r\n : tableField.className\r\n )} onClick={onChangeSort}/>\r\n ))}\r\n </tr>\r\n </thead>\r\n )\r\n}\r\n\r\nSortableTableHead.displayName = 'SortableTableHead';\r\nexport default SortableTableHead;\r\n","import React from 'react';\r\nimport classNames from \"classnames\";\r\nimport SortableTableHead from \"./SortableTableHead\";\r\nimport DataTableTBody from \"./DataTableTBody\";\r\nimport type {SortableTableProps} from \"./types\";\r\nimport Table from \"./Table\";\r\n\r\n\r\nfunction SortableTable<T = unknown>({\r\n fields,\r\n data,\r\n currentSort,\r\n onChangeSort,\r\n keyField,\r\n size = '',\r\n sticky,\r\n rowClassName,\r\n renderRow,\r\n onSelectRow,\r\n selected = '',\r\n className = '',\r\n tfoot,\r\n children,\r\n ...rest\r\n }: SortableTableProps<T>) {\r\n const tableClassName = classNames('table', className, {\r\n [`table-${size}`]: !!size,\r\n })\r\n\r\n return (\r\n <Table className={tableClassName} sticky={sticky} {...rest}>\r\n <SortableTableHead currentSort={currentSort} fields={fields} onChangeSort={onChangeSort}/>\r\n {!!data.length && (\r\n <DataTableTBody fields={fields} data={data} keyField={keyField} rowClassName={rowClassName}\r\n renderRow={renderRow}\r\n onSelectRow={onSelectRow} selected={selected}/>\r\n )}\r\n {children}\r\n {tfoot}\r\n </Table>\r\n )\r\n}\r\n\r\nSortableTable.displayName = 'SortableTable';\r\nexport default SortableTable;\r\n","import React, {ChangeEvent, useId} from 'react';\r\nimport classNames from \"classnames\";\r\nimport type {RowsPerPageProps} from \"./types\";\r\n\r\nexport const defaultRowsPerPageValues: number[] = [10, 25, 50, 100, 250, 500, 1000];\r\n\r\n\r\nfunction RowsPerPage({\r\n value,\r\n pageValues = defaultRowsPerPageValues,\r\n size,\r\n label,\r\n className,\r\n onChange,\r\n ...rest\r\n }: RowsPerPageProps) {\r\n const id = useId();\r\n const changeHandler = (ev: ChangeEvent<HTMLSelectElement>) => onChange(Number(ev.target.value));\r\n const selectClassName = className ?? classNames('form-select', {[`form-select-${size}`]: !!size});\r\n const inputGroupClassName = classNames('input-group', {\r\n [`input-group-${size}`]: !!size,\r\n })\r\n\r\n return (\r\n <div className={inputGroupClassName} key={value}>\r\n <label className=\"input-group-text\" htmlFor={id}>{label ?? 'Rows'}</label>\r\n <select className={selectClassName} id={id}\r\n value={value} onChange={changeHandler} {...rest}>\r\n {pageValues.map(value => (\r\n <option key={value} value={value}>{value}</option>\r\n ))}\r\n </select>\r\n </div>\r\n )\r\n}\r\n\r\nRowsPerPage.displayName = 'RowsPerPage';\r\nexport default RowsPerPage;\r\n","import React from 'react';\r\nimport RowsPerPage from \"./RowsPerPage\";\r\nimport classNames from \"classnames\";\r\nimport type {TablePaginationProps} from \"./types\";\r\n\r\nfunction TablePagination({\r\n page,\r\n rowsPerPage,\r\n onChangePage,\r\n count,\r\n size,\r\n showFirst,\r\n showLast,\r\n className,\r\n rowsPerPageProps,\r\n ...rest\r\n }: TablePaginationProps) {\r\n\r\n const first = count === 0 ? 0 : (page * rowsPerPage) + 1;\r\n const last = Math.min(page * rowsPerPage + rowsPerPage, count);\r\n const lastPage = rowsPerPage === 0 ? 0 : Math.floor((count - 1) / rowsPerPage);\r\n\r\n const buttonClassName = classNames(\"btn btn-link\", {[`btn-${size}`]: !!size});\r\n\r\n return (\r\n <div className={classNames(\"row g-3 justify-content-end\", className)} {...rest}>\r\n {!!rowsPerPageProps && (\r\n <div className=\"col-auto\">\r\n <RowsPerPage {...rowsPerPageProps} value={rowsPerPage} size={size}/>\r\n </div>\r\n )}\r\n <div className=\"col-auto\">\r\n <div className=\"row g-3 flex-nowrap align-items-baseline\">\r\n <div className=\"col-auto\">\r\n {first}-{last} of {count}\r\n </div>\r\n {showFirst && (\r\n <div className=\"col-auto\">\r\n <button className={buttonClassName} disabled={page === 0}\r\n onClick={() => onChangePage(0)} aria-label=\"First page\">\r\n <span className=\"bi-chevron-bar-left\" aria-hidden=\"true\"/>\r\n </button>\r\n </div>\r\n )}\r\n <div className=\"col-auto\">\r\n <button className={buttonClassName} disabled={page === 0}\r\n onClick={() => onChangePage(page - 1)} aria-label=\"Previous page\">\r\n <span className=\"bi-chevron-left\" aria-hidden=\"true\"/>\r\n </button>\r\n </div>\r\n <div className=\"col-auto\">\r\n <button className={buttonClassName} disabled={page >= lastPage}\r\n onClick={() => onChangePage(page + 1)} aria-label=\"Next page\">\r\n <span className=\"bi-chevron-right\" aria-hidden=\"true\"/>\r\n </button>\r\n </div>\r\n {showLast && (\r\n <div className=\"col-auto\">\r\n <button className={buttonClassName} disabled={page >= lastPage}\r\n onClick={() => onChangePage(lastPage)} aria-label=\"Last page\">\r\n <span className=\"bi-chevron-bar-right\" aria-hidden=\"true\"/>\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nTablePagination.displayname = 'TablePagination';\r\nexport default TablePagination\r\n"],"names":["DataTableTH","field","className","children","rest","thClassName","classNames","jsx","DataTableHead","fields","index","DataTableCell","row","as","cellClassName","React","DataTableRow","rowClassName","selected","trRef","onClick","clickHandler","ev","_className","DataTableTBody","data","keyField","renderRow","onSelectRow","jsxs","keyValue","isSelected","StyledTable","styled","props","Table","sticky","responsive","ref","DataTable","size","tfoot","tableHeadProps","tableClassName","flexJustifyContent","align","FieldTitle","SortableTableTH","sorted","ascending","_thClassName","thProps","iconClassName","SortableTableHead","currentSort","onChangeSort","tableField","SortableTable","defaultRowsPerPageValues","RowsPerPage","value","pageValues","label","onChange","id","useId","changeHandler","selectClassName","inputGroupClassName","TablePagination","page","rowsPerPage","onChangePage","count","showFirst","showLast","rowsPerPageProps","first","last","lastPage","buttonClassName"],"mappings":";;;;AAKA,SAASA,EAAyB;AAAA,EACmB,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACP,GAAwB;AACrE,QAAMC,IAAcC,EAAW,EAAC,CAAC,QAAQL,EAAM,KAAK,EAAE,GAAG,CAAC,CAACA,EAAM,MAAA,GAAQC,CAAS;AAClF,SACI,gBAAAK,EAAC,MAAA,EAAG,WAAWF,GAAa,OAAM,OAAO,GAAGD,GACvC,UAAAD,KAAYF,EAAM,MAAA,CACvB;AAER;AACAD,EAAY,cAAc;ACZ1B,SAASQ,EAA2B,EAAC,QAAAC,GAAQ,GAAGL,KAA8B;AAC1E,SACI,gBAAAG,EAAC,SAAA,EAAO,GAAGH,GACX,UAAA,gBAAAG,EAAC,QACI,UAAAE,EAAO,IAAI,CAACR,GAAOS,MAChB,gBAAAH;AAAA,IAACP;AAAA,IAAA;AAAA,MACa,GAAGC,EAAM;AAAA,MACV,OAAAA;AAAA,MACA,WAAWK;AAAA,QACP,OAAOL,EAAM,aAAc,aACrB,EAAC,CAAC,QAAQA,EAAM,KAAK,EAAE,GAAG,CAAC,CAACA,EAAM,MAAA,IAClCA,EAAM;AAAA,MAAA;AAAA,IAChB;AAAA,IAPKA,EAAM,MAAMS;AAAA,EAAA,CAQjC,GACL,EAAA,CACA;AAER;AAEAF,EAAc,cAAc;ACrB5B,SAAwBG,EAA2B,EAAC,OAAAV,GAAO,KAAAW,GAAK,WAAAV,GAAW,IAAAW,GAAI,GAAGT,KAA6B;AAC3G,QAAMU,IAAgBR;AAAA,IAClB,EAAC,CAAC,QAAQL,EAAM,KAAK,EAAE,GAAG,CAAC,CAACA,EAAM,MAAA;AAAA,IAClCC;AAAA,IACA,OAAOD,EAAM,aAAc,aAAaA,EAAM,UAAUW,CAAG,IAAIX,EAAM;AAAA,EAAA;AAEzE,SAAOc,EAAM;AAAA,IACRF,KAAMZ,EAAM,MAAO;AAAA,IACpB;AAAA,MACI,WAAWa;AAAA,MACX,QAAQD,KAAMZ,EAAM,QAAQ,OAAO,QAAQ;AAAA,MAC3C,SAASA,EAAM;AAAA,MACf,GAAGA,EAAM;AAAA,MACT,GAAGG;AAAA,IAAA;AAAA,IAENQ,EAAIX,EAAM,KAAK,MAAM,UAAa,CAACA,EAAM,SACpC,OAEE,OAAOA,EAAM,UAAW,aAClBA,EAAM,OAAOW,CAAG,IAChBA,EAAIX,EAAM,KAAK;AAAA,EAAA;AAGrC;ACrBA,SAASe,EAA0B;AAAA,EACI,WAAAd;AAAA,EACA,cAAAe;AAAA,EACA,UAAAC;AAAA,EACA,QAAAT;AAAA,EACA,KAAAG;AAAA,EACA,OAAAO;AAAA,EACA,SAAAC;AAAA,EACA,GAAGhB;AACP,GAAyB;AACxD,QAAMiB,IAAe,CAACC,MAAwC;AAC1D,IAAAF,IAAUR,GAAKU,CAAE;AAAA,EACrB,GAEMC,IAAa,OAAON,KAAiB,aAAaA,EAAaL,CAAG,IAAIK;AAC5E,SAAKL,IAKD,gBAAAL;AAAA,IAAC;AAAA,IAAA;AAAA,MAAG,KAAKY;AAAA,MACL,WAAWb,EAAW,EAAC,gBAAgBY,EAAA,GAAWhB,GAAWqB,CAAU;AAAA,MACvE,SAASF;AAAA,MACR,GAAGjB;AAAA,MACH,UAAAK,EAAO,IAAI,CAACR,GAAOS,wBAAYC,GAAA,EAA0B,OAAAV,GAAc,KAAAW,EAAA,GAArBF,CAA8B,CAAG;AAAA,IAAA;AAAA,EAAA,IARjF;AAWf;AAEAM,EAAa,cAAc;AC9B3B,SAASQ,EAA4B;AAAA,EACI,QAAAf;AAAA,EACA,MAAAgB;AAAA,EACA,UAAAC;AAAA,EACA,cAAAT;AAAA,EACA,WAAAU;AAAA,EACA,aAAAC;AAAA,EACA,UAAAV,IAAW;AAAA,EACX,UAAAf;AAAA,EACA,GAAGC;AACP,GAA2B;AAC5D,SACI,gBAAAyB,EAAC,SAAA,EAAO,GAAGzB,GACV,UAAA;AAAA,IAAAqB,EAAK,IAAI,CAAAb,MAAO;AACb,YAAMkB,IAAW,OAAO,OAAOJ,KAAa,aAAaA,EAASd,CAAG,IAAIA,EAAIc,CAAQ,CAAC,GAChFK,IAAa,OAAOb,KAAa,aAAaA,EAASN,CAAG,IAAIkB,MAAaZ;AACjF,aAAIS,IACOA,EAAUf,CAAG,IAGpB,gBAAAL;AAAA,QAACS;AAAA,QAAA;AAAA,UAA4B,SAASY;AAAA,UACxB,cAAAX;AAAA,UACA,QAAAR;AAAA,UACA,KAAAG;AAAA,UAAU,UAAUmB;AAAA,QAAA;AAAA,QAHfD;AAAA,MAAA;AAAA,IAK3B,CAAC;AAAA,IACA3B;AAAA,EAAA,GACD;AAER;AAEAqB,EAAe,cAAc;AC7B7B,MAAMQ,IAAcC,EAAO;AAAA,0BACD,CAAAC,MAASA,EAAM,SAAS,MAAM,MAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAMzC,CAAAA,MAASA,EAAM,SAAS,WAAW,OAAO;AAAA,uBAC3C,CAAAA,MAASA,EAAM,SAAS,KAAK,OAAO;AAAA,0BACjC,CAAAA,MAASA,EAAM,SAAS,mFAAmF,OAAO;AAAA;AAAA;AAAA,GAK5IC,IAAepB,EAAM;AAAA,EACjB,SAAe;AAAA,IACI,QAAAqB;AAAA,IACA,YAAAC;AAAA,IACA,UAAAlC;AAAA,IACA,WAAAD;AAAA,IACA,GAAGE;AAAA,EAAA,GACJkC,GAAK;AACnB,QAAID,GAAY;AACZ,YAAMd,IAAajB,EAAWJ,GAAW;AAAA,QACrC,oBAAoBmC,MAAe;AAAA,QACnC,CAAC,oBAAoBA,CAAU,EAAE,GAAGA,MAAe;AAAA,MAAA,CACtD;AACD,aACI,gBAAA9B,EAAC,OAAA,EAAI,WAAWgB,GACZ,UAAA,gBAAAhB,EAACyB,KAAY,KAAAM,GAAW,GAAGlC,GAAO,UAAAD,EAAA,CAAS,EAAA,CAC/C;AAAA,IAER;AACA,6BACK6B,GAAA,EAAY,WAAA9B,GAAsB,QAAAkC,GAAgB,KAAAE,GAAW,GAAGlC,GAAO,UAAAD,GAAS;AAAA,EAEzF;AAAC;ACnCL,SAASoC,EAAuB;AAAA,EACI,QAAA9B;AAAA,EACA,MAAAgB;AAAA,EACA,UAAAC;AAAA,EACA,MAAAc,IAAO;AAAA,EACP,QAAAJ;AAAA,EACA,YAAAC;AAAA,EACA,cAAApB;AAAA,EACA,WAAAU;AAAA,EACA,aAAAC;AAAA,EACA,UAAAV,IAAW;AAAA,EACX,WAAAhB,IAAY;AAAA,EACZ,OAAAuC;AAAA,EACA,UAAAtC;AAAA,EACA,gBAAAuC;AAAA,EACA,GAAGtC;AACP,GAAsB;AAElD,QAAMuC,IAAiBrC,EAAW,SAASJ,GAAW;AAAA,IAClD,CAAC,SAASsC,CAAI,EAAE,GAAG,CAAC,CAACA;AAAA,EAAA,CACxB;AAED,2BACKL,GAAA,EAAM,QAAAC,GAAgB,YAAAC,GAAwB,WAAWM,GAAiB,GAAGvC,GAC1E,UAAA;AAAA,IAAA,gBAAAG,EAACC,GAAA,EAAe,GAAGkC,GAAgB,QAAAjC,EAAA,CAAe;AAAA,IACjD,CAAC,CAACgB,EAAK,UACJ,gBAAAlB;AAAA,MAACiB;AAAA,MAAA;AAAA,QAAe,QAAAf;AAAA,QAAgB,MAAAgB;AAAA,QAAY,UAAAC;AAAA,QAAoB,cAAAT;AAAA,QAChD,WAAAU;AAAA,QACA,aAAAC;AAAA,QAA0B,UAAAV;AAAA,MAAA;AAAA,IAAA;AAAA,IAE7Cf;AAAA,IACAsC;AAAA,EAAA,GACL;AAER;AAEAF,EAAU,cAAc;ACtCxB,MAAMK,IAAqB,CAACC,MAAwB;AAChD,MAAI,CAACA;AACD,WAAO;AAEX,UAAQA,GAAA;AAAA,IACJ,KAAK;AACD,aAAO;AAAA,IACX;AACI,aAAO;AAAA,EAAA;AAEnB,GAMMC,IAAab,EAAO;AAAA;AAAA;AAAA,sBAGJ,CAAAC,MAASA,EAAM,UAAU,QAAQ,gBAAgB,KAAK;AAAA,uBACrD,CAAAA,MAASU,EAAmBV,EAAM,KAAK,CAAC;AAAA;AAAA,qBAE1C,CAAAA,MAASA,EAAM,UAAU,QAAQ,MAAM,GAAG;AAAA,mBAC5C,CAAAA,MAASA,EAAM,SAAS,IAAI,CAAC;AAAA;AAAA;AAAA,iBAG/B,CAAAA,MAASA,EAAM,SAAS,UAAU,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAMtE,SAASa,EAA6B;AAAA,EACI,OAAA9C;AAAA,EACA,QAAA+C;AAAA,EACA,WAAAC;AAAA,EACA,WAAA/C;AAAA,EACA,SAAAkB;AACJ,GAA4B;AAC9D,MAAI,CAACnB,EAAM;AACP,WAAQ,gBAAAM,EAACP,GAAA,EAAY,OAAAC,GAAc,WAAAC,EAAA,CAAqB;AAG5D,QAAM,EAAC,WAAWgD,GAAc,GAAGC,MAAWlD,EAAM,WAAW,CAAA,GACzDI,IAAcC;AAAA,IAChBJ;AAAA,IACAgD;AAAA,IACA,EAAC,CAAC,QAAQjD,EAAM,KAAK,EAAE,GAAG,CAAC,CAACA,EAAM,MAAA;AAAA,EAAK,GAGrCoB,IAAe,MAAM;AACvB,IAAAD,EAAQ,EAAC,OAAOnB,EAAM,OAAO,WAAY+C,IAAgB,CAACC,IAAR,IAAkB;AAAA,EACxE,GAEMG,IAAgB;AAAA,IAClB,iBAAiBH;AAAA,IACjB,eAAe,CAACA;AAAA,EAAA;AAGpB,2BACK,MAAA,EAAI,GAAGE,GAAS,WAAW7C,EAAW,YAAYD,CAAW,GAAG,OAAM,OAAM,SAASgB,GAClF,UAAA,gBAAAQ,EAACiB,KAAW,QAAAE,GAAgB,OAAO/C,EAAM,OACrC,UAAA;AAAA,IAAA,gBAAAM,EAAC,OAAA,EAAI,WAAU,eAAe,UAAAN,EAAM,OAAM;AAAA,sBACzC,OAAA,EAAI,WAAWK,EAAW,kBAAkB8C,CAAa,EAAA,CAAE;AAAA,EAAA,EAAA,CAChE,EAAA,CACJ;AAER;AAEAL,EAAgB,cAAc;ACrE9B,SAASM,EAA+B;AAAA,EACmB,aAAAC;AAAA,EACA,QAAA7C;AAAA,EACA,cAAA8C;AACJ,GAA8B;AACjF,QAAM,EAAC,OAAAtD,GAAO,WAAAgD,EAAA,IAAaK;AAC3B,SACI,gBAAA/C,EAAC,WACD,UAAA,gBAAAA,EAAC,MAAA,EACI,YAAO,IAAI,CAACiD,GAAY9C,MACrB,gBAAAH;AAAA,IAACwC;AAAA,IAAA;AAAA,MAA+B,OAAOS;AAAA,MACtB,QAAQvD,MAAUuD,EAAW;AAAA,MAAO,WAAAP;AAAA,MACpC,WAAW3C;AAAA,QACZ,OAAOkD,EAAW,aAAc,aAC1B,EAAC,CAAC,QAAQA,EAAW,KAAK,EAAE,GAAG,CAAC,CAACA,EAAW,MAAA,IAC5CA,EAAW;AAAA,MAAA;AAAA,MAClB,SAASD;AAAA,IAAA;AAAA,IANC7C;AAAA,EAAA,CAO5B,GACL,EAAA,CACA;AAER;AAEA2C,EAAkB,cAAc;ACrBhC,SAASI,EAA2B;AAAA,EACI,QAAAhD;AAAA,EACA,MAAAgB;AAAA,EACA,aAAA6B;AAAA,EACA,cAAAC;AAAA,EACA,UAAA7B;AAAA,EACA,MAAAc,IAAO;AAAA,EACP,QAAAJ;AAAA,EACA,cAAAnB;AAAA,EACA,WAAAU;AAAA,EACA,aAAAC;AAAA,EACA,UAAAV,IAAW;AAAA,EACX,WAAAhB,IAAY;AAAA,EACZ,OAAAuC;AAAA,EACA,UAAAtC;AAAA,EACA,GAAGC;AACP,GAA0B;AAC1D,QAAMuC,IAAiBrC,EAAW,SAASJ,GAAW;AAAA,IAClD,CAAC,SAASsC,CAAI,EAAE,GAAG,CAAC,CAACA;AAAA,EAAA,CACxB;AAED,2BACKL,GAAA,EAAM,WAAWQ,GAAgB,QAAAP,GAAiB,GAAGhC,GAClD,UAAA;AAAA,IAAA,gBAAAG,EAAC8C,GAAA,EAAkB,aAAAC,GAA0B,QAAA7C,GAAgB,cAAA8C,EAAA,CAA2B;AAAA,IACvF,CAAC,CAAC9B,EAAK,UACJ,gBAAAlB;AAAA,MAACiB;AAAA,MAAA;AAAA,QAAe,QAAAf;AAAA,QAAgB,MAAAgB;AAAA,QAAY,UAAAC;AAAA,QAAoB,cAAAT;AAAA,QAChD,WAAAU;AAAA,QACA,aAAAC;AAAA,QAA0B,UAAAV;AAAA,MAAA;AAAA,IAAA;AAAA,IAE7Cf;AAAA,IACAsC;AAAA,EAAA,GACL;AAER;AAEAgB,EAAc,cAAc;ACvCrB,MAAMC,IAAqC,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,GAAI;AAGlF,SAASC,EAAY;AAAA,EACI,OAAAC;AAAA,EACA,YAAAC,IAAaH;AAAA,EACb,MAAAlB;AAAA,EACA,OAAAsB;AAAA,EACA,WAAA5D;AAAA,EACA,UAAA6D;AAAA,EACA,GAAG3D;AACP,GAAqB;AACtC,QAAM4D,IAAKC,EAAA,GACLC,IAAgB,CAAC5C,MAAuCyC,EAAS,OAAOzC,EAAG,OAAO,KAAK,CAAC,GACxF6C,IAAkBjE,KAAaI,EAAW,eAAe,EAAC,CAAC,eAAekC,CAAI,EAAE,GAAG,CAAC,CAACA,GAAK,GAC1F4B,IAAsB9D,EAAW,eAAe;AAAA,IAClD,CAAC,eAAekC,CAAI,EAAE,GAAG,CAAC,CAACA;AAAA,EAAA,CAC9B;AAED,SACI,gBAAAX,EAAC,OAAA,EAAI,WAAWuC,GACZ,UAAA;AAAA,IAAA,gBAAA7D,EAAC,WAAM,WAAU,oBAAmB,SAASyD,GAAK,eAAS,QAAO;AAAA,IAClE,gBAAAzD;AAAA,MAAC;AAAA,MAAA;AAAA,QAAO,WAAW4D;AAAA,QAAiB,IAAAH;AAAA,QAC5B,OAAAJ;AAAA,QAAc,UAAUM;AAAA,QAAgB,GAAG9D;AAAA,QAC9C,UAAAyD,EAAW,IAAI,CAAAD,MACZ,gBAAArD,EAAC,UAAA,EAAmB,OAAOqD,GAAQ,UAAAA,EAAAA,GAAtBA,CAA4B,CAC5C;AAAA,MAAA;AAAA,IAAA;AAAA,EACL,EAAA,GAPsCA,CAQ1C;AAER;AAEAD,EAAY,cAAc;AC/B1B,SAASU,EAAgB;AAAA,EACI,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAjC;AAAA,EACA,WAAAkC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAzE;AAAA,EACA,kBAAA0E;AAAA,EACA,GAAGxE;AACP,GAAyB;AAE9C,QAAMyE,IAAQJ,MAAU,IAAI,IAAKH,IAAOC,IAAe,GACjDO,IAAO,KAAK,IAAIR,IAAOC,IAAcA,GAAaE,CAAK,GACvDM,IAAWR,MAAgB,IAAI,IAAI,KAAK,OAAOE,IAAQ,KAAKF,CAAW,GAEvES,IAAkB1E,EAAW,gBAAgB,EAAC,CAAC,OAAOkC,CAAI,EAAE,GAAG,CAAC,CAACA,GAAK;AAE5E,SACI,gBAAAX,EAAC,SAAI,WAAWvB,EAAW,+BAA+BJ,CAAS,GAAI,GAAGE,GACrE,UAAA;AAAA,IAAA,CAAC,CAACwE,KACC,gBAAArE,EAAC,OAAA,EAAI,WAAU,YACX,UAAA,gBAAAA,EAACoD,GAAA,EAAa,GAAGiB,GAAkB,OAAOL,GAAa,MAAA/B,GAAW,GACtE;AAAA,sBAEH,OAAA,EAAI,WAAU,YACX,UAAA,gBAAAX,EAAC,OAAA,EAAI,WAAU,4CACX,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,YACV,UAAA;AAAA,QAAAgD;AAAA,QAAM;AAAA,QAAEC;AAAA,QAAK;AAAA,QAAKL;AAAA,MAAA,GACvB;AAAA,MACCC,KACG,gBAAAnE,EAAC,OAAA,EAAI,WAAU,YACX,UAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UAAO,WAAWyE;AAAA,UAAiB,UAAUV,MAAS;AAAA,UAC/C,SAAS,MAAME,EAAa,CAAC;AAAA,UAAG,cAAW;AAAA,UAC/C,UAAA,gBAAAjE,EAAC,QAAA,EAAK,WAAU,uBAAsB,eAAY,OAAA,CAAM;AAAA,QAAA;AAAA,MAAA,GAEhE;AAAA,MAEJ,gBAAAA,EAAC,OAAA,EAAI,WAAU,YACX,UAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UAAO,WAAWyE;AAAA,UAAiB,UAAUV,MAAS;AAAA,UAC/C,SAAS,MAAME,EAAaF,IAAO,CAAC;AAAA,UAAG,cAAW;AAAA,UACtD,UAAA,gBAAA/D,EAAC,QAAA,EAAK,WAAU,mBAAkB,eAAY,OAAA,CAAM;AAAA,QAAA;AAAA,MAAA,GAE5D;AAAA,MACA,gBAAAA,EAAC,OAAA,EAAI,WAAU,YACX,UAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UAAO,WAAWyE;AAAA,UAAiB,UAAUV,KAAQS;AAAA,UAC9C,SAAS,MAAMP,EAAaF,IAAO,CAAC;AAAA,UAAG,cAAW;AAAA,UACtD,UAAA,gBAAA/D,EAAC,QAAA,EAAK,WAAU,oBAAmB,eAAY,OAAA,CAAM;AAAA,QAAA;AAAA,MAAA,GAE7D;AAAA,MACCoE,KACG,gBAAApE,EAAC,OAAA,EAAI,WAAU,YACX,UAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UAAO,WAAWyE;AAAA,UAAiB,UAAUV,KAAQS;AAAA,UAC9C,SAAS,MAAMP,EAAaO,CAAQ;AAAA,UAAG,cAAW;AAAA,UACtD,UAAA,gBAAAxE,EAAC,QAAA,EAAK,WAAU,wBAAuB,eAAY,OAAA,CAAM;AAAA,QAAA;AAAA,MAAA,EAC7D,CACJ;AAAA,IAAA,EAAA,CAER,EAAA,CACJ;AAAA,EAAA,GACJ;AAER;AAEA8D,EAAgB,cAAc;"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import React,
|
|
2
|
-
import
|
|
1
|
+
import { default as React, HTMLAttributes, MouseEvent, ReactNode, TableHTMLAttributes } from 'react';
|
|
2
|
+
import { Argument } from 'classnames';
|
|
3
3
|
export interface SortProps<T = unknown> {
|
|
4
4
|
field: keyof T;
|
|
5
5
|
ascending: boolean;
|
|
6
6
|
}
|
|
7
7
|
export type UISize = 'sm' | 'lg' | '';
|
|
8
8
|
export type UITableSize = UISize | 'xs';
|
|
9
|
-
export type DataTableClassNames<T = unknown> = string |
|
|
9
|
+
export type DataTableClassNames<T = unknown> = string | Argument | ((row: T) => (string | Argument));
|
|
10
10
|
export type UIFlexAlign = 'start' | 'end' | 'center' | 'baseline' | 'stretch';
|
|
11
11
|
export interface DataTableField<T = unknown> {
|
|
12
12
|
id?: number | string;
|
|
@@ -42,7 +42,7 @@ export interface DataTableCellProps<T = unknown> extends Omit<TableHTMLAttribute
|
|
|
42
42
|
field: DataTableField<T>;
|
|
43
43
|
row: T;
|
|
44
44
|
as?: 'td' | 'th';
|
|
45
|
-
className?: string |
|
|
45
|
+
className?: string | Argument;
|
|
46
46
|
children?: React.ReactNode;
|
|
47
47
|
}
|
|
48
48
|
export interface DataTableTHProps<T = unknown> extends Omit<DataTableCellProps<T>, 'row'> {
|
|
@@ -62,7 +62,7 @@ export interface DataTableTBodyProps<T = unknown> extends TableHTMLAttributes<HT
|
|
|
62
62
|
children?: ReactNode;
|
|
63
63
|
}
|
|
64
64
|
export interface DataTableRowProps<T = unknown> extends Omit<TableHTMLAttributes<HTMLTableRowElement>, 'onClick'> {
|
|
65
|
-
rowClassName?: string |
|
|
65
|
+
rowClassName?: string | Argument | ((row: T) => string | Argument);
|
|
66
66
|
selected?: boolean;
|
|
67
67
|
fields: DataTableField<T>[];
|
|
68
68
|
row: T;
|
package/eslint.config.mjs
CHANGED
|
@@ -1,14 +1,23 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
1
|
+
import js from '@eslint/js'
|
|
2
|
+
import globals from 'globals'
|
|
3
|
+
import reactHooks from 'eslint-plugin-react-hooks'
|
|
4
|
+
import reactRefresh from 'eslint-plugin-react-refresh'
|
|
5
|
+
import tseslint from 'typescript-eslint'
|
|
6
|
+
import { globalIgnores } from 'eslint/config'
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
export default tseslint.config([
|
|
9
|
+
globalIgnores(['dist']),
|
|
10
|
+
{
|
|
11
|
+
files: ['**/*.{ts,tsx}'],
|
|
12
|
+
extends: [
|
|
13
|
+
js.configs.recommended,
|
|
14
|
+
tseslint.configs.recommended,
|
|
15
|
+
reactHooks.configs['recommended-latest'],
|
|
16
|
+
reactRefresh.configs.vite,
|
|
17
|
+
],
|
|
18
|
+
languageOptions: {
|
|
19
|
+
ecmaVersion: 2020,
|
|
20
|
+
globals: globals.browser,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
])
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!doctype html
|
|
1
|
+
<!doctype html>
|
|
2
2
|
<html lang="en-us">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charSet="utf-8"/>
|
|
@@ -20,9 +20,6 @@
|
|
|
20
20
|
<div id="app" class="container-fluid">
|
|
21
21
|
<strong>Loading</strong> the app.
|
|
22
22
|
</div>
|
|
23
|
-
<script src="
|
|
24
|
-
<!--<script src="/chums.js"></script>-->
|
|
25
|
-
<script src="vendors.js"></script>
|
|
26
|
-
<script src="vendors-react.js"></script>
|
|
23
|
+
<script type="module" src="/test/index.tsx"></script>
|
|
27
24
|
</body>
|
|
28
25
|
</html>
|
package/package.json
CHANGED
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chumsinc/sortable-tables",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"
|
|
3
|
+
"version": "2.1.1",
|
|
4
|
+
"type": "module",
|
|
5
5
|
"source": "./src/index.tsx",
|
|
6
|
+
"main": "./dist/index.umd.js",
|
|
7
|
+
"module": "./dist/index.es.js",
|
|
6
8
|
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"default": "./dist/index.es.js"
|
|
14
|
+
},
|
|
15
|
+
"require": {
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"default": "./dist/index.umd.js"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
7
21
|
"peerDependencies": {
|
|
8
22
|
"@emotion/styled": "^11.14.0",
|
|
9
23
|
"classnames": "*",
|
|
@@ -11,10 +25,10 @@
|
|
|
11
25
|
"react-dom": ">=18.1.0"
|
|
12
26
|
},
|
|
13
27
|
"scripts": {
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
28
|
+
"dev": "vite",
|
|
29
|
+
"build": "vite build",
|
|
30
|
+
"lint": "eslint .",
|
|
31
|
+
"preview": "vite preview",
|
|
18
32
|
"version": "auto-changelog -p && git add CHANGELOG.md"
|
|
19
33
|
},
|
|
20
34
|
"browserslist": {
|
|
@@ -36,29 +50,21 @@
|
|
|
36
50
|
"@types/numeral": "^2.0.3",
|
|
37
51
|
"@types/react": "^19.0.8",
|
|
38
52
|
"@types/react-dom": "^19.0.3",
|
|
53
|
+
"@vitejs/plugin-react": "^5.1.0",
|
|
39
54
|
"auto-changelog": "^2.4.0",
|
|
40
55
|
"bootstrap": "^5.3.2",
|
|
41
56
|
"bootstrap-icons": "^1.11.1",
|
|
42
57
|
"classnames": "^2.3.2",
|
|
43
|
-
"css-loader": "^7.1.2",
|
|
44
58
|
"eslint": "^9.8.0",
|
|
45
|
-
"eslint-plugin-react": "^7.
|
|
59
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
60
|
+
"eslint-plugin-react-refresh": "^0.4.20",
|
|
46
61
|
"globals": "^16.0.0",
|
|
47
62
|
"react": "^19.0.0",
|
|
48
63
|
"react-dom": "^19.0.0",
|
|
49
|
-
"rimraf": "^6.0.1",
|
|
50
|
-
"sass-loader": "^16.0.0",
|
|
51
|
-
"style-loader": "^4.0.0",
|
|
52
|
-
"terser-webpack-plugin": "^5.3.9",
|
|
53
|
-
"ts-loader": "^9.4.4",
|
|
54
64
|
"typescript": "^5.2.2",
|
|
55
65
|
"typescript-eslint": "^8.0.1",
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"webpack-cli": "^6.0.1",
|
|
59
|
-
"webpack-dev-server": "^5.0.4",
|
|
60
|
-
"webpack-manifest-plugin": "^5.0.0",
|
|
61
|
-
"webpack-merge": "^6.0.1"
|
|
66
|
+
"vite": "^7.0.4",
|
|
67
|
+
"vite-plugin-dts": "^4.5.4"
|
|
62
68
|
},
|
|
63
69
|
"auto-changelog": {
|
|
64
70
|
"template": "changelog-template.hbs",
|
package/src/DataTable.tsx
CHANGED
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import classNames from "classnames";
|
|
3
3
|
import DataTableHead from "./DataTableHead";
|
|
4
4
|
import DataTableTBody from "./DataTableTBody";
|
|
5
|
-
import {DataTableProps} from "./types";
|
|
5
|
+
import type {DataTableProps} from "./types";
|
|
6
6
|
import Table from "./Table";
|
|
7
7
|
|
|
8
8
|
|
package/src/DataTableCell.tsx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, {ReactNode} from 'react';
|
|
2
|
-
import {DataTableCellProps} from "./types";
|
|
2
|
+
import type {DataTableCellProps} from "./types";
|
|
3
3
|
import classNames from "classnames";
|
|
4
4
|
|
|
5
5
|
export default function DataTableCell<T = unknown>({field, row, className, as, ...rest}:DataTableCellProps<T>) {
|
package/src/DataTableHead.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import DataTableTH from "./DataTableTH";
|
|
3
3
|
import classNames from "classnames";
|
|
4
|
-
import {DataTableHeadProps} from "./types";
|
|
4
|
+
import type {DataTableHeadProps} from "./types";
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
function DataTableHead<T = unknown>({fields, ...rest}: DataTableHeadProps<T>) {
|
package/src/DataTableRow.tsx
CHANGED
package/src/DataTableTBody.tsx
CHANGED
package/src/DataTableTH.tsx
CHANGED
package/src/RowsPerPage.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, {ChangeEvent, useId} from 'react';
|
|
2
2
|
import classNames from "classnames";
|
|
3
|
-
import {RowsPerPageProps} from "./types";
|
|
3
|
+
import type {RowsPerPageProps} from "./types";
|
|
4
4
|
|
|
5
5
|
export const defaultRowsPerPageValues: number[] = [10, 25, 50, 100, 250, 500, 1000];
|
|
6
6
|
|
package/src/SortableTable.tsx
CHANGED
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import classNames from "classnames";
|
|
3
3
|
import SortableTableHead from "./SortableTableHead";
|
|
4
4
|
import DataTableTBody from "./DataTableTBody";
|
|
5
|
-
import {SortableTableProps} from "./types";
|
|
5
|
+
import type {SortableTableProps} from "./types";
|
|
6
6
|
import Table from "./Table";
|
|
7
7
|
|
|
8
8
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import SortableTableTH from "./SortableTableTH";
|
|
3
3
|
import classNames from "classnames";
|
|
4
|
-
import {SortableTableHeadProps} from "./types";
|
|
4
|
+
import type {SortableTableHeadProps} from "./types";
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
function SortableTableHead<T = unknown>({
|
package/src/SortableTableTH.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import classNames from "classnames";
|
|
3
3
|
import DataTableTH from "./DataTableTH";
|
|
4
|
-
import {SortableTableTHProps, UIFlexAlign} from "./types";
|
|
4
|
+
import type {SortableTableTHProps, UIFlexAlign} from "./types";
|
|
5
5
|
import styled from '@emotion/styled';
|
|
6
6
|
|
|
7
7
|
const flexJustifyContent = (align?: UIFlexAlign) => {
|
package/src/Table.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, {TableHTMLAttributes} from 'react';
|
|
2
2
|
import styled from "@emotion/styled";
|
|
3
|
-
import {DataTableProps} from "./types";
|
|
3
|
+
import type {DataTableProps} from "./types";
|
|
4
4
|
import classNames from "classnames";
|
|
5
5
|
|
|
6
6
|
export type StyledTableProps = TableHTMLAttributes<HTMLTableElement> & Pick<DataTableProps, 'sticky' | 'responsive'>
|
package/src/TablePagination.tsx
CHANGED
package/src/types.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import React, {HTMLAttributes, ReactNode, TableHTMLAttributes
|
|
2
|
-
import
|
|
1
|
+
import React, {type HTMLAttributes, type MouseEvent, type ReactNode, type TableHTMLAttributes} from 'react'
|
|
2
|
+
import {Argument} from "classnames";
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
export interface SortProps<T = unknown> {
|
|
@@ -7,13 +7,13 @@ export interface SortProps<T = unknown> {
|
|
|
7
7
|
ascending: boolean;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
export type UISize = 'sm'|'lg'|'';
|
|
11
|
-
export type UITableSize = UISize|'xs';
|
|
10
|
+
export type UISize = 'sm' | 'lg' | '';
|
|
11
|
+
export type UITableSize = UISize | 'xs';
|
|
12
12
|
|
|
13
13
|
export type DataTableClassNames<T = unknown> =
|
|
14
14
|
string
|
|
15
|
-
|
|
|
16
|
-
| ((row: T) => (string |
|
|
15
|
+
| Argument
|
|
16
|
+
| ((row: T) => (string | Argument));
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
export type UIFlexAlign = 'start' | 'end' | 'center' | 'baseline' | 'stretch';
|
|
@@ -22,7 +22,7 @@ export interface DataTableField<T = unknown> {
|
|
|
22
22
|
id?: number | string;
|
|
23
23
|
field: keyof T;
|
|
24
24
|
title: ReactNode;
|
|
25
|
-
as?: 'td'|'th';
|
|
25
|
+
as?: 'td' | 'th';
|
|
26
26
|
align?: 'start' | 'center' | 'end';
|
|
27
27
|
render?: (row: T) => ReactNode;
|
|
28
28
|
className?: DataTableClassNames<T>;
|
|
@@ -38,13 +38,13 @@ export interface SortableTableField<T = unknown> extends DataTableField<T> {
|
|
|
38
38
|
export interface DataTableProps<T = unknown> extends TableHTMLAttributes<HTMLTableElement> {
|
|
39
39
|
fields: DataTableField<T>[];
|
|
40
40
|
data: T[];
|
|
41
|
-
keyField: keyof T | ((row: T) => string|number);
|
|
41
|
+
keyField: keyof T | ((row: T) => string | number);
|
|
42
42
|
size?: UITableSize;
|
|
43
43
|
sticky?: boolean;
|
|
44
|
-
responsive?: boolean|"sm" | "md" | "lg" | "xl" | 'xxl';
|
|
44
|
+
responsive?: boolean | "sm" | "md" | "lg" | "xl" | 'xxl';
|
|
45
45
|
rowClassName?: DataTableClassNames<T>;
|
|
46
46
|
renderRow?: (row: T) => React.ReactNode;
|
|
47
|
-
onSelectRow?: (row: T, ev?:MouseEvent<HTMLTableRowElement>) => void;
|
|
47
|
+
onSelectRow?: (row: T, ev?: MouseEvent<HTMLTableRowElement>) => void;
|
|
48
48
|
selected?: string | number | ((row: T) => boolean);
|
|
49
49
|
tfoot?: React.ReactElement<HTMLTableSectionElement>;
|
|
50
50
|
tableHeadProps?: DataTableHeadProps<T>;
|
|
@@ -54,8 +54,8 @@ export interface DataTableProps<T = unknown> extends TableHTMLAttributes<HTMLTab
|
|
|
54
54
|
export interface DataTableCellProps<T = unknown> extends Omit<TableHTMLAttributes<HTMLTableCellElement>, 'className'> {
|
|
55
55
|
field: DataTableField<T>;
|
|
56
56
|
row: T;
|
|
57
|
-
as?: 'td'|'th',
|
|
58
|
-
className?: string |
|
|
57
|
+
as?: 'td' | 'th',
|
|
58
|
+
className?: string | Argument;
|
|
59
59
|
children?: React.ReactNode;
|
|
60
60
|
}
|
|
61
61
|
|
|
@@ -70,21 +70,21 @@ export interface DataTableHeadProps<T = unknown> extends TableHTMLAttributes<HTM
|
|
|
70
70
|
export interface DataTableTBodyProps<T = unknown> extends TableHTMLAttributes<HTMLTableSectionElement> {
|
|
71
71
|
fields: DataTableField<T>[];
|
|
72
72
|
data: T[];
|
|
73
|
-
keyField: keyof T | ((row: T) => string|number);
|
|
73
|
+
keyField: keyof T | ((row: T) => string | number);
|
|
74
74
|
rowClassName?: DataTableClassNames<T>;
|
|
75
75
|
renderRow?: (row: T) => React.ReactNode;
|
|
76
|
-
onSelectRow?: (row: T, ev?:MouseEvent<HTMLTableRowElement>) => void;
|
|
76
|
+
onSelectRow?: (row: T, ev?: MouseEvent<HTMLTableRowElement>) => void;
|
|
77
77
|
selected?: string | number | ((row: T) => boolean);
|
|
78
78
|
children?: ReactNode;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
export interface DataTableRowProps<T = unknown> extends Omit<TableHTMLAttributes<HTMLTableRowElement>, 'onClick'> {
|
|
82
|
-
rowClassName?: string |
|
|
82
|
+
rowClassName?: string | Argument | ((row: T) => string | Argument);
|
|
83
83
|
selected?: boolean;
|
|
84
84
|
fields: DataTableField<T>[];
|
|
85
85
|
row: T;
|
|
86
86
|
trRef?: React.Ref<HTMLTableRowElement>;
|
|
87
|
-
onClick?: (row:T, ev?:MouseEvent<HTMLTableRowElement>) => void;
|
|
87
|
+
onClick?: (row: T, ev?: MouseEvent<HTMLTableRowElement>) => void;
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
export interface SortableTableProps<T = unknown> extends DataTableProps<T> {
|
|
@@ -109,7 +109,7 @@ export interface SortableTableTHProps<T = unknown> extends Omit<DataTableTHProps
|
|
|
109
109
|
export interface RowsPerPageProps extends Omit<HTMLAttributes<HTMLSelectElement>, 'onChange'> {
|
|
110
110
|
value: number;
|
|
111
111
|
pageValues?: number[];
|
|
112
|
-
label?: string|React.ReactNode;
|
|
112
|
+
label?: string | React.ReactNode;
|
|
113
113
|
size?: UISize;
|
|
114
114
|
className?: string;
|
|
115
115
|
onChange: (value: number) => void;
|
package/tsconfig.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"compilerOptions": {
|
|
3
|
-
"allowJs":
|
|
3
|
+
"allowJs": false,
|
|
4
4
|
"allowSyntheticDefaultImports": true,
|
|
5
5
|
"declaration": true,
|
|
6
|
+
"declarationDir": "./dist/types",
|
|
6
7
|
"esModuleInterop": true,
|
|
7
8
|
"forceConsistentCasingInFileNames": true,
|
|
8
9
|
"isolatedModules": true,
|
|
@@ -12,9 +13,9 @@
|
|
|
12
13
|
"dom.iterable",
|
|
13
14
|
"esnext"
|
|
14
15
|
],
|
|
15
|
-
"module": "
|
|
16
|
-
"moduleResolution": "
|
|
17
|
-
"noEmit":
|
|
16
|
+
"module": "ESNext",
|
|
17
|
+
"moduleResolution": "bundler",
|
|
18
|
+
"noEmit": true,
|
|
18
19
|
"noFallthroughCasesInSwitch": true,
|
|
19
20
|
"noImplicitAny": true,
|
|
20
21
|
"outDir": "./dist/",
|
|
@@ -22,8 +23,9 @@
|
|
|
22
23
|
"skipLibCheck": true,
|
|
23
24
|
"sourceMap": true,
|
|
24
25
|
"strict": true,
|
|
25
|
-
"target": "
|
|
26
|
+
"target": "esNext",
|
|
27
|
+
"useDefineForClassFields": true,
|
|
26
28
|
},
|
|
27
29
|
"include": ["src/**/*"],
|
|
28
|
-
"exclude": ["node_modules"]
|
|
30
|
+
"exclude": ["node_modules","dist"]
|
|
29
31
|
}
|
package/vite.config.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { defineConfig } from 'vite'
|
|
2
|
+
import react from '@vitejs/plugin-react';
|
|
3
|
+
import dts from 'vite-plugin-dts';
|
|
4
|
+
import {resolve} from 'node:path'
|
|
5
|
+
import {cwd} from 'node:process'
|
|
6
|
+
|
|
7
|
+
// https://vite.dev/config/
|
|
8
|
+
export default defineConfig({
|
|
9
|
+
plugins: [react({}), dts({include: ['src']})],
|
|
10
|
+
resolve: {},
|
|
11
|
+
build: {
|
|
12
|
+
lib: {
|
|
13
|
+
entry: resolve(cwd(), './src/index.tsx'),
|
|
14
|
+
name: 'SortableTables',
|
|
15
|
+
fileName: (format) => `index.${format}.js`,
|
|
16
|
+
formats: ['es', 'cjs'],
|
|
17
|
+
},
|
|
18
|
+
rollupOptions: {
|
|
19
|
+
external: ['react', 'react/jsx-runtime', 'react-dom', 'classnames', '@emotion/styled'],
|
|
20
|
+
output: {
|
|
21
|
+
globals:{
|
|
22
|
+
react: 'React',
|
|
23
|
+
'react-dom': 'ReactDOM',
|
|
24
|
+
'react/jsx-runtime': 'jsxRuntime',
|
|
25
|
+
classnames: 'classNames',
|
|
26
|
+
'@emotion/styled': 'styled'
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
sourcemap: true,
|
|
31
|
+
minify: true,
|
|
32
|
+
}
|
|
33
|
+
})
|
package/babel.config.mjs
DELETED
package/dist/DataTable.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import classNames from "classnames";
|
|
3
|
-
import DataTableHead from "./DataTableHead";
|
|
4
|
-
import DataTableTBody from "./DataTableTBody";
|
|
5
|
-
import Table from "./Table";
|
|
6
|
-
function DataTable({ fields, data, keyField, size = '', sticky, responsive, rowClassName, renderRow, onSelectRow, selected = '', className = '', tfoot, children, tableHeadProps, ...rest }) {
|
|
7
|
-
const tableClassName = classNames('table', className, {
|
|
8
|
-
[`table-${size}`]: !!size,
|
|
9
|
-
});
|
|
10
|
-
return (_jsxs(Table, { sticky: sticky, responsive: responsive, className: tableClassName, ...rest, children: [_jsx(DataTableHead, { ...tableHeadProps, fields: fields }), !!data.length && (_jsx(DataTableTBody, { fields: fields, data: data, keyField: keyField, rowClassName: rowClassName, renderRow: renderRow, onSelectRow: onSelectRow, selected: selected })), children, tfoot] }));
|
|
11
|
-
}
|
|
12
|
-
DataTable.displayName = 'DataTable';
|
|
13
|
-
export default DataTable;
|
|
14
|
-
//# sourceMappingURL=DataTable.js.map
|
package/dist/DataTable.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataTable.js","sourceRoot":"","sources":["../src/DataTable.tsx"],"names":[],"mappings":";AACA,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,MAAM,SAAS,CAAC;AAG5B,SAAS,SAAS,CAAc,EACI,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,IAAI,GAAG,EAAE,EACT,MAAM,EACN,UAAU,EACV,YAAY,EACZ,SAAS,EACT,WAAW,EACX,QAAQ,GAAG,EAAE,EACb,SAAS,GAAG,EAAE,EACd,KAAK,EACL,QAAQ,EACR,cAAc,EACd,GAAG,IAAI,EACS;IAEhD,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE;QAClD,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI;KAC5B,CAAC,CAAA;IAEF,OAAO,CACH,MAAC,KAAK,IAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,KAAM,IAAI,aAC9E,KAAC,aAAa,OAAK,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,EACnD,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CACd,KAAC,cAAc,IAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAC1E,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,CAClE,EACA,QAAQ,EACR,KAAK,IACF,CACX,CAAA;AACL,CAAC;AAED,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;AACpC,eAAe,SAAS,CAAC"}
|
package/dist/DataTableCell.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import classNames from "classnames";
|
|
3
|
-
export default function DataTableCell({ field, row, className, as, ...rest }) {
|
|
4
|
-
const cellClassName = classNames({ [`text-${field.align}`]: !!field.align }, className, typeof field.className === 'function' ? field.className(row) : field.className);
|
|
5
|
-
return React.createElement((as ?? field.as) ?? 'td', {
|
|
6
|
-
className: cellClassName,
|
|
7
|
-
scope: (as ?? field.as) === 'th' ? 'row' : undefined,
|
|
8
|
-
colSpan: field.colSpan,
|
|
9
|
-
...field.cellProps,
|
|
10
|
-
...rest
|
|
11
|
-
}, (row[field.field] === undefined && !field.render)
|
|
12
|
-
? null
|
|
13
|
-
: (typeof field.render === 'function'
|
|
14
|
-
? field.render(row)
|
|
15
|
-
: row[field.field]));
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=DataTableCell.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableCell.js","sourceRoot":"","sources":["../src/DataTableCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,MAAM,CAAC,OAAO,UAAU,aAAa,CAAc,EAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,IAAI,EAAuB;IACzG,MAAM,aAAa,GAAG,UAAU,CAC5B,EAAC,CAAC,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAC,EACxC,SAAS,EACT,OAAO,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CACjF,CAAC;IACF,OAAO,KAAK,CAAC,aAAa,CACtB,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,IAAI,EACxB;QACI,SAAS,EAAE,aAAa;QACxB,KAAK,EAAE,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QACpD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,KAAK,CAAC,SAAS;QAClB,GAAG,IAAI;KACV,EACD,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAC7C,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,CACE,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU;YAC9B,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;YACnB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAc,CACtC,CACR,CAAA;AACL,CAAC"}
|
package/dist/DataTableHead.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import DataTableTH from "./DataTableTH";
|
|
3
|
-
import classNames from "classnames";
|
|
4
|
-
function DataTableHead({ fields, ...rest }) {
|
|
5
|
-
return (_jsx("thead", { ...rest, children: _jsx("tr", { children: fields.map((field, index) => (_jsx(DataTableTH, { ...field.thProps, field: field, className: classNames(typeof field.className === 'function'
|
|
6
|
-
? { [`text-${field.align}`]: !!field.align }
|
|
7
|
-
: field.className) }, field.id ?? index))) }) }));
|
|
8
|
-
}
|
|
9
|
-
DataTableHead.displayName = 'DataTableHead';
|
|
10
|
-
export default DataTableHead;
|
|
11
|
-
//# sourceMappingURL=DataTableHead.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableHead.js","sourceRoot":"","sources":["../src/DataTableHead.tsx"],"names":[],"mappings":";AACA,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,UAAU,MAAM,YAAY,CAAC;AAIpC,SAAS,aAAa,CAAc,EAAC,MAAM,EAAE,GAAG,IAAI,EAAwB;IACxE,OAAO,CACH,mBAAW,IAAI,YACf,uBACK,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1B,KAAC,WAAW,OACK,KAAK,CAAC,OAAO,EACjB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,UAAU,CACjB,OAAO,KAAK,CAAC,SAAS,KAAK,UAAU;oBACjC,CAAC,CAAC,EAAC,CAAC,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAC;oBAC1C,CAAC,CAAC,KAAK,CAAC,SAAS,CACxB,IAPI,KAAK,CAAC,EAAE,IAAI,KAAK,CAOlB,CACpB,CAAC,GACD,GACG,CACX,CAAA;AACL,CAAC;AAED,aAAa,CAAC,WAAW,GAAG,eAAe,CAAC;AAC5C,eAAe,aAAa,CAAC"}
|
package/dist/DataTableRow.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import classNames from "classnames";
|
|
3
|
-
import DataTableCell from "./DataTableCell";
|
|
4
|
-
function DataTableRow({ className, rowClassName, selected, fields, row, trRef, onClick, ...rest }) {
|
|
5
|
-
const clickHandler = (ev) => {
|
|
6
|
-
onClick?.(row, ev);
|
|
7
|
-
};
|
|
8
|
-
const _className = typeof rowClassName === 'function' ? rowClassName(row) : rowClassName;
|
|
9
|
-
if (!row) {
|
|
10
|
-
return null;
|
|
11
|
-
}
|
|
12
|
-
return (_jsx("tr", { ref: trRef, className: classNames({ 'table-active': selected }, className, _className), onClick: clickHandler, ...rest, children: fields.map((field, index) => (_jsx(DataTableCell, { field: field, row: row }, index))) }));
|
|
13
|
-
}
|
|
14
|
-
DataTableRow.displayName = 'DataTableRow';
|
|
15
|
-
export default DataTableRow;
|
|
16
|
-
//# sourceMappingURL=DataTableRow.js.map
|
package/dist/DataTableRow.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DataTableRow.js","sourceRoot":"","sources":["../src/DataTableRow.tsx"],"names":[],"mappings":";AACA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAG5C,SAAS,YAAY,CAAc,EACI,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,GAAG,EACH,KAAK,EACL,OAAO,EACP,GAAG,IAAI,EACY;IACtD,MAAM,YAAY,GAAG,CAAC,EAAmC,EAAE,EAAE;QACzD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,OAAO,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IACzF,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CACH,aAAI,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,UAAU,CAAC,EAAC,cAAc,EAAE,QAAQ,EAAC,EAAE,SAAS,EAAE,UAAU,CAAC,EACxE,OAAO,EAAE,YAAY,KACjB,IAAI,YACP,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAC,aAAa,IAAa,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAA7B,KAAK,CAA2B,CAAC,CAAC,GACpF,CACR,CAAA;AACL,CAAC;AAED,YAAY,CAAC,WAAW,GAAG,cAAc,CAAC;AAC1C,eAAe,YAAY,CAAC"}
|