sliftutils 0.17.0 → 0.19.0

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/index.d.ts CHANGED
@@ -317,7 +317,7 @@ declare module "sliftutils/render-utils/Table" {
317
317
  lineLimit?: number;
318
318
  characterLimit?: number;
319
319
  excludeEmptyColumns?: boolean;
320
- rowClassName?: (row: RowT) => string;
320
+ getRowFields?: (row: RowT) => preact.JSX.HTMLAttributes<HTMLTableRowElement>;
321
321
  }> {
322
322
  state: {
323
323
  limit: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sliftutils",
3
- "version": "0.17.0",
3
+ "version": "0.19.0",
4
4
  "main": "index.js",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -24,7 +24,7 @@ export declare class Table<RowT extends RowType> extends preact.Component<TableT
24
24
  lineLimit?: number;
25
25
  characterLimit?: number;
26
26
  excludeEmptyColumns?: boolean;
27
- rowClassName?: (row: RowT) => string;
27
+ getRowFields?: (row: RowT) => preact.JSX.HTMLAttributes<HTMLTableRowElement>;
28
28
  }> {
29
29
  state: {
30
30
  limit: number;
@@ -4,6 +4,7 @@ import { formatValue, JSXFormatter, toSpaceCase } from "./GenericFormat";
4
4
  import { observer } from "./observer";
5
5
  import { canHaveChildren } from "socket-function/src/types";
6
6
  import { showFullscreenModal } from "./FullscreenModal";
7
+ import { observable } from "mobx";
7
8
 
8
9
  // Null means the column is removed
9
10
  export type ColumnType<T = unknown, Row extends RowType = RowType> = undefined | null | {
@@ -33,11 +34,11 @@ export class Table<RowT extends RowType> extends preact.Component<TableType<RowT
33
34
 
34
35
  excludeEmptyColumns?: boolean;
35
36
 
36
- rowClassName?: (row: RowT) => string
37
+ getRowFields?: (row: RowT) => preact.JSX.HTMLAttributes<HTMLTableRowElement>;
37
38
  }> {
38
- state = {
39
+ state = observable({
39
40
  limit: this.props.initialLimit || 100,
40
- };
41
+ });
41
42
  render() {
42
43
  let { columns, rows, excludeEmptyColumns } = this.props;
43
44
 
@@ -65,9 +66,11 @@ export class Table<RowT extends RowType> extends preact.Component<TableType<RowT
65
66
  <th className={css.pad2(8, 4) + cellClass}>{column?.title || toSpaceCase(columnName)}</th>
66
67
  )}
67
68
  </tr>
68
- {rows.map((row, index) => (
69
- <tr
70
- className={(this.props.rowClassName?.(row) || "") + (index % 2 === 1 && css.hsla(0, 0, 100, 0.25) || "")}
69
+ {rows.map((row, index) => {
70
+ let rowFields = this.props.getRowFields?.(row) || {};
71
+ return <tr
72
+ {...rowFields}
73
+ className={rowFields.className + " " + (index % 2 === 1 && css.hsla(0, 0, 100, 0.25) || "")}
71
74
  >
72
75
  <td className={css.center}>{index + 1}</td>
73
76
  {Object.entries(columns).filter(x => x[1] !== null).map(([columnName, column]: [string, ColumnType]) => {
@@ -116,8 +119,8 @@ export class Table<RowT extends RowType> extends preact.Component<TableType<RowT
116
119
  {innerContent}
117
120
  </td>;
118
121
  })}
119
- </tr>
120
- ))}
122
+ </tr>;
123
+ })}
121
124
  {allRows.length > rows.length && <tr>
122
125
  <td
123
126
  colSpan={1 + Object.keys(columns).length}